<?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>16214</bug_id>
          
          <creation_ts>2007-11-30 17:25:22 -0800</creation_ts>
          <short_desc>rename KURL to URL</short_desc>
          <delta_ts>2013-09-27 15:14:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>37641</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62835</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-30 17:25:22 -0800</bug_when>
    <thetext>Going to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62836</commentid>
    <comment_count>1</comment_count>
      <attachid>17616</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-11-30 17:25:51 -0800</bug_when>
    <thetext>Created attachment 17616
patch for scrubbing URL out of the tree (step 1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63866</commentid>
    <comment_count>2</comment_count>
      <attachid>17828</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-10 14:44:02 -0800</bug_when>
    <thetext>Created attachment 17828
newer URL -&gt; url patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63892</commentid>
    <comment_count>3</comment_count>
      <attachid>17837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-10 21:47:39 -0800</bug_when>
    <thetext>Created attachment 17837
newer URL -&gt; url patch (now with Windows support and changelogs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63972</commentid>
    <comment_count>4</comment_count>
      <attachid>17837</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-11 16:00:06 -0800</bug_when>
    <thetext>Comment on attachment 17837
newer URL -&gt; url patch (now with Windows support and changelogs)

+        Scrub URL out of the tree in preparation of ranameing KURL to URL.

Renaming is spelled wrong here. Also &quot;in preparation of&quot; is not very good English.

+        * WebCore.base.exp:
+        * bindings/js/kjs_events.cpp:
+        (WebCore::JSLazyEventListener::parseCode):

I don&apos;t think it is all that helpful to list all the files and functions when the only change is renaming. It would be neat to list only files that have interesting changes; something other than just renaming. Or we could just omit the file list entirely. Or leave it as is, not sure.

1637          DeprecatedString dstUrl = activeFrame-&gt;loader()-&gt;completeURL(DeprecatedString(args[0]-&gt;toString(exec))).url();
 1637         String dstUrl = activeFrame-&gt;loader()-&gt;completeURL(args[0]-&gt;toString(exec)).deprecatedString();

This is strange. It&apos;s changed to call deprecatedString(), but the type of the variable was changed to String!

48      return m_url.url().isNull();
 48     return m_url.deprecatedString().isNull();

We should probably add a KURL.isNull() for this. Not sure why I didn&apos;t.

What about platforms other than Mac and Windows.

r=me if you fix the things I mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64001</commentid>
    <comment_count>5</comment_count>
      <attachid>17837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-11 23:34:07 -0800</bug_when>
    <thetext>Comment on attachment 17837
newer URL -&gt; url patch (now with Windows support and changelogs)

First patch landed in r28639.  Removing the review flag to continue using this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64002</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-12-11 23:36:01 -0800</bug_when>
    <thetext>I thought we wanted to rename KURL to DeprecatedURL or ParsedURL, not URL, right? 

URL gives the incorrect impression that this is the class that you should use when passing around URLs when, in reality, a String is just fine in many cases. Also, KURL is built on top of DeprecatedString.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64023</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-12 07:46:46 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I thought we wanted to rename KURL to DeprecatedURL or ParsedURL, not URL,
&gt; right? 

I discussed this at length with Maciej and a few others. I can&apos;t remember all the arguments back and forth but we did settle on URL.

&gt; URL gives the incorrect impression that this is the class that you should use
&gt; when passing around URLs when, in reality, a String is just fine in many cases.

That&apos;s true. But URL provides some benefits. I really wish I could remember the details of the discussion. I thought you were involved.

&gt; Also, KURL is built on top of DeprecatedString.

That&apos;s temporary. We will be changing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526072</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 23:53:49 -0800</bug_when>
    <thetext>&gt; &gt; URL gives the incorrect impression that this is the class that you should use
&gt; &gt; when passing around URLs when, in reality, a String is just fine in many cases.
&gt; 
&gt; That&apos;s true. But URL provides some benefits. I really wish I could remember the details of the discussion. I thought you were involved.

In the past, we&apos;ve talked about having a URLString class for passing around Strings that are URLs (i.e., that have already been validated as URLs).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933852</commentid>
    <comment_count>9</comment_count>
      <attachid>212788</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-26 22:42:48 -0700</bug_when>
    <thetext>Created attachment 212788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933879</commentid>
    <comment_count>10</comment_count>
      <attachid>212788</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-27 03:02:23 -0700</bug_when>
    <thetext>Comment on attachment 212788
Patch

Attachment 212788 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2655100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933928</commentid>
    <comment_count>11</comment_count>
      <attachid>212806</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-27 07:25:04 -0700</bug_when>
    <thetext>Created attachment 212806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933929</commentid>
    <comment_count>12</comment_count>
      <attachid>212807</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-27 07:30:12 -0700</bug_when>
    <thetext>Created attachment 212807
Patch

Oops, didn&apos;t get Tools/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933932</commentid>
    <comment_count>13</comment_count>
      <attachid>212808</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-27 07:40:48 -0700</bug_when>
    <thetext>Created attachment 212808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933934</commentid>
    <comment_count>14</comment_count>
      <attachid>212808</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-27 07:51:33 -0700</bug_when>
    <thetext>Comment on attachment 212808
Patch

Attachment 212808 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2660145</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933935</commentid>
    <comment_count>15</comment_count>
      <attachid>212808</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-27 07:52:15 -0700</bug_when>
    <thetext>Comment on attachment 212808
Patch

Attachment 212808 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2668049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933936</commentid>
    <comment_count>16</comment_count>
      <attachid>212809</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-27 07:55:18 -0700</bug_when>
    <thetext>Created attachment 212809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933942</commentid>
    <comment_count>17</comment_count>
      <attachid>212811</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-27 08:20:20 -0700</bug_when>
    <thetext>Created attachment 212811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933943</commentid>
    <comment_count>18</comment_count>
      <attachid>212811</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-27 08:23:25 -0700</bug_when>
    <thetext>Comment on attachment 212811
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933973</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-27 09:45:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933982</commentid>
    <comment_count>20</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-27 10:08:32 -0700</bug_when>
    <thetext>This broke the Windows builds.

http://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29
http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933989</commentid>
    <comment_count>21</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-27 10:24:49 -0700</bug_when>
    <thetext>Attempted a Windows fix in https://trac.webkit.org/r156552.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933993</commentid>
    <comment_count>22</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-27 10:27:29 -0700</bug_when>
    <thetext>Windows is building again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934109</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-27 15:14:11 -0700</bug_when>
    <thetext>Updated bindings test results in r156580.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17616</attachid>
            <date>2007-11-30 17:25:51 -0800</date>
            <delta_ts>2007-12-10 14:44:02 -0800</delta_ts>
            <desc>patch for scrubbing URL out of the tree (step 1)</desc>
            <filename>LowercaseURLPatch.txt</filename>
            <type>text/plain</type>
            <size>132434</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyODI1MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzk4OSw2ICsxMzk4OSw3IEBACiAJCTA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CisJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZvckVuY29k
aW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9ranNfZXZlbnRzLmNwcAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL2tqc19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNyArMzAzLDcgQEAg
dm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNvZGUoKSBjbwogICAgICAgICBKU09iamVj
dCogY29uc3RyID0gaW50ZXJwcmV0ZXItPmJ1aWx0aW5GdW5jdGlvbigpOwogICAgICAgICBMaXN0
IGFyZ3M7CiAKLSAgICAgICAgVVN0cmluZyBzb3VyY2VVUkwoZnJhbWUtPmxvYWRlcigpLT51cmwo
KS51cmwoKSk7CisgICAgICAgIFVTdHJpbmcgc291cmNlVVJMKGZyYW1lLT5sb2FkZXIoKS0+dXJs
KCkuc3RyaW5nKCkpOwogICAgICAgICBhcmdzLmFwcGVuZChldmVudFBhcmFtZXRlck5hbWUoKSk7
CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKG1fY29kZSkpOwogICAgICAgICBtX2xpc3Rl
bmVyID0gY29uc3RyLT5jb25zdHJ1Y3QoZXhlYywgYXJncywgbV9mdW5jdGlvbk5hbWUsIHNvdXJj
ZVVSTCwgbV9saW5lTnVtYmVyKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2sgPwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfbmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19uYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
Miw3ICsxOTIsNyBAQCBKU1ZhbHVlKiBOYXZpZ2F0b3I6OmdldFZhbHVlUHJvcGVydHkoRXhlCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKCJOZXRzY2FwZSIpOwogICBjYXNlIEFwcFZlcnNpb246IHsKICAg
ICAvLyBWZXJzaW9uIGlzIGV2ZXJ5dGhpbmcgaW4gdGhlIHVzZXIgYWdlbnQgc3RyaW5nIHBhc3Qg
dGhlICJNb3ppbGxhLyIgcHJlZml4LgotICAgIGNvbnN0IFN0cmluZyB1c2VyQWdlbnQgPSBtX2Zy
YW1lLT5sb2FkZXIoKS0+dXNlckFnZW50KG1fZnJhbWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5VUkwoKSA6IEtVUkwoKSk7CisgICAgY29uc3QgU3RyaW5nIHVzZXJBZ2VudCA9
IG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpKTsKICAgICByZXR1cm4ganNTdHJpbmcodXNl
ckFnZW50LnN1YnN0cmluZyh1c2VyQWdlbnQuZmluZCgnLycpICsgMSkpOwogICB9CiAgIGNhc2Ug
UHJvZHVjdDoKQEAgLTIwNiw3ICsyMDYsNyBAQCBKU1ZhbHVlKiBOYXZpZ2F0b3I6OmdldFZhbHVl
UHJvcGVydHkoRXhlCiAgIGNhc2UgTGFuZ3VhZ2U6CiAgICAgcmV0dXJuIGpzU3RyaW5nKGRlZmF1
bHRMYW5ndWFnZSgpKTsKICAgY2FzZSBVc2VyQWdlbnQ6Ci0gICAgcmV0dXJuIGpzU3RyaW5nKG1f
ZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUt
PmRvY3VtZW50KCktPlVSTCgpIDogS1VSTCgpKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKG1fZnJh
bWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpIDogS1VSTCgpKSk7CiAgIGNhc2UgUGxhdGZvcm06CiAgICAgcmV0dXJu
IGpzU3RyaW5nKFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNKTsKICAgY2FzZSBfUGx1Z2luczoK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyAr
MTU2LDcgQEAgdm9pZCBLSlNQcm94eTo6aW5pdFNjcmlwdElmTmVlZGVkKCkKICAgLy8gQ3JlYXRl
IGEgS0pTIGludGVycHJldGVyIGZvciB0aGlzIGZyYW1lCiAgIG1fc2NyaXB0ID0gbmV3IFNjcmlw
dEludGVycHJldGVyKGdsb2JhbE9iamVjdCwgbV9mcmFtZSk7CiAKLSAgU3RyaW5nIHVzZXJBZ2Vu
dCA9IG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1f
ZnJhbWUtPmRvY3VtZW50KCktPlVSTCgpIDogS1VSTCgpKTsKKyAgU3RyaW5nIHVzZXJBZ2VudCA9
IG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpKTsKICAgaWYgKHVzZXJBZ2VudC5maW5kKCJN
aWNyb3NvZnQiKSA+PSAwIHx8IHVzZXJBZ2VudC5maW5kKCJNU0lFIikgPj0gMCkKICAgICBtX3Nj
cmlwdC0+c2V0Q29tcGF0TW9kZShJbnRlcnByZXRlcjo6SUVDb21wYXQpOwogICBlbHNlCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMzLDcgKzcz
Myw3IEBAIHZvaWQgV2luZG93OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCAKICAgICAgIGlm
IChwKSB7CiAgICAgICAgIGlmICghcC0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihp
bXBsKCktPmZyYW1lKCkpKQogICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRGVwcmVjYXRlZFN0
cmluZyBkc3RVcmwgPSBwLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoRGVwcmVjYXRlZFN0cmluZyh2
YWx1ZS0+dG9TdHJpbmcoZXhlYykpKS51cmwoKTsKKyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBk
c3RVcmwgPSBwLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoRGVwcmVjYXRlZFN0cmluZyh2YWx1ZS0+
dG9TdHJpbmcoZXhlYykpKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKCFkc3RVcmwuc3RhcnRzV2l0
aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgaXNTYWZlU2NyaXB0KGV4ZWMpKSB7CiAgICAgICAg
ICAgYm9vbCB1c2VyR2VzdHVyZSA9IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyICo+KGV4
ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKS0+d2FzUnVuQnlVc2VyR2VzdHVyZSgpOwogICAgICAg
ICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoaXMgSlMgd2FzIGNhbGxlZCB2
aWEgYSB1c2VyIGdlc3R1cmUKQEAgLTkwMSw5ICs5MDEsOSBAQCBib29sIFdpbmRvdzo6aXNTYWZl
U2NyaXB0KGNvbnN0IFNjcmlwdEluCiAgICAgaWYgKCFvcmlnaW5GcmFtZS0+c2V0dGluZ3MoKS0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChJbnRlcnByZXRlcjo6c2hv
dWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYoIlVuc2FmZSBKYXZhU2Ny
aXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMICVzIGZyb20gZnJhbWUgd2l0aCBV
UkwgJXMuIERvbWFpbnMgbXVzdCBtYXRjaC5cbiIsIAotICAgICAgICAgICAgICAgICAgIHRhcmdl
dERvY3VtZW50LT5VUkwoKS5sYXRpbjEoKSwgb3JpZ2luRG9jdW1lbnQtPlVSTCgpLmxhdGluMSgp
KTsKKyAgICAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJsKCkubGF0aW4xKCksIG9y
aWdpbkRvY3VtZW50LT51cmwoKS5sYXRpbjEoKSk7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0g
U3RyaW5nOjpmb3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMICVzIGZyb20gZnJhbWUgd2l0aCBVUkwgJXMuIERvbWFpbnMgbXVzdCBtYXRjaC5c
biIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldERvY3Vt
ZW50LT5VUkwoKS5sYXRpbjEoKSwgb3JpZ2luRG9jdW1lbnQtPlVSTCgpLmxhdGluMSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJs
KCkubGF0aW4xKCksIG9yaWdpbkRvY3VtZW50LT51cmwoKS5sYXRpbjEoKSk7CiAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gdGFyZ2V0RnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsgLy8gRklYTUU6IHByb3ZpZGUgYSByZWFsIGxp
bmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMLgogICAgIH0KQEAgLTk0MSw3ICs5NDEsNyBAQCBib29s
IFdpbmRvdzo6aXNTYWZlU2NyaXB0KEV4ZWNTdGF0ZSAqZXhlCiAgICAgaWYgKCFmcmFtZS0+c2V0
dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiB0
aGlzIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGNvbnRhaW4gbW9yZSBzcGVjaWZpY3Mgb2Ygd2h5IHRo
ZSBzYW1lIG9yaWdpbiBjaGVjayBoYXMgZmFpbGVkLgogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9
IFN0cmluZzo6Zm9ybWF0KCJVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFt
ZSB3aXRoIFVSTCAlcyBmcm9tIGZyYW1lIHdpdGggVVJMICVzLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXNEb2N1bWVudC0+VVJMKCkudXRmOCgpLmRhdGEoKSwgYWN0RG9jdW1lbnQt
PlVSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXNEb2N1bWVudC0+dXJsKCkudXRmOCgpLmRhdGEoKSwgYWN0RG9jdW1lbnQtPnVy
bCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAKICAgICAgICAgaWYgKEludGVycHJldGVyOjpz
aG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBtZXNzYWdl
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTk2OCw3ICsxOTY4LDcgQEAgdm9pZCBMb2NhdGlvbjo6cHV0
KEV4ZWNTdGF0ZSAqZXhlYywgY29ucwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
aWYgKCFmcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihtX2ZyYW1lKSkKICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+Y29t
cGxldGVVUkwoc3RyKS51cmwoKTsKKyAgICAgICAgICB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPmNv
bXBsZXRlVVJMKHN0cikuc3RyaW5nKCk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9IAogICAg
ICAgY2FzZSBIYXNoOiB7CkBAIC0yMDEyLDkgKzIwMTIsOSBAQCB2b2lkIExvY2F0aW9uOjpwdXQo
RXhlY1N0YXRlICpleGVjLCBjb25zCiAgIH0KIAogICBGcmFtZSogYWN0aXZlRnJhbWUgPSBXaW5k
b3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5pbXBsKCktPmZyYW1lKCk7Ci0gIGlmICghdXJsLnVy
bCgpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8IHNhbWVEb21haW5BY2Nlc3Mp
IHsKKyAgaWYgKCF1cmwuc3RyaW5nKCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkg
fHwgc2FtZURvbWFpbkFjY2VzcykgewogICAgIGJvb2wgdXNlckdlc3R1cmUgPSBzdGF0aWNfY2Fz
dDxTY3JpcHRJbnRlcnByZXRlciAqPihleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKSktPndhc1J1
bkJ5VXNlckdlc3R1cmUoKTsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlv
bkNoYW5nZSh1cmwudXJsKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJl
cigpLCBmYWxzZSwgdXNlckdlc3R1cmUpOworICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKHVybC5zdHJpbmcoKSwgYWN0aXZlRnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7CiAgIH0KIH0KIApAQCAtMjAzNSw3
ICsyMDM1LDcgQEAgSlNWYWx1ZSogTG9jYXRpb25Qcm90b0Z1bmNSZXBsYWNlOjpjYWxsQQogICAg
ICAgY29uc3QgV2luZG93KiB3aW5kb3cgPSBXaW5kb3c6OnJldHJpZXZlV2luZG93KGZyYW1lKTsK
ICAgICAgIGlmICghc3RyLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8ICh3aW5k
b3cgJiYgd2luZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpKSB7CiAgICAgICAgIGJvb2wgdXNlckdl
c3R1cmUgPSBzdGF0aWNfY2FzdDxTY3JpcHRJbnRlcnByZXRlciAqPihleGVjLT5keW5hbWljSW50
ZXJwcmV0ZXIoKSktPndhc1J1bkJ5VXNlckdlc3R1cmUoKTsKLSAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHAtPmxvYWRlcigpLT5jb21wbGV0ZVVSTChzdHIp
LnVybCgpLCBwLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCB0cnVlLCB1c2VyR2VzdHVy
ZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShwLT5s
b2FkZXIoKS0+Y29tcGxldGVVUkwoc3RyKS5zdHJpbmcoKSwgcC0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSwgdHJ1ZSwgdXNlckdlc3R1cmUpOwogICAgICAgfQogICAgIH0KIApAQCAtMjA1
NSw3ICsyMDU1LDcgQEAgSlNWYWx1ZSogTG9jYXRpb25Qcm90b0Z1bmNSZWxvYWQ6OmNhbGxBcwog
ICAgIGlmICghd2luZG93LT5pc1NhZmVTY3JpcHQoZXhlYykpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogCi0gICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPnVybCgpLnVybCgpLnN0YXJ0
c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8ICh3aW5kb3cgJiYgd2luZG93LT5pc1NhZmVT
Y3JpcHQoZXhlYykpKSB7CisgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygp
LnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8ICh3aW5kb3cgJiYgd2luZG93LT5p
c1NhZmVTY3JpcHQoZXhlYykpKSB7CiAgICAgICBib29sIHVzZXJHZXN0dXJlID0gc3RhdGljX2Nh
c3Q8U2NyaXB0SW50ZXJwcmV0ZXIgKj4oZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCkpLT53YXNS
dW5CeVVzZXJHZXN0dXJlKCk7CiAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlUmVmcmVz
aCh1c2VyR2VzdHVyZSk7CiAgICAgfQpAQCAtMjA3Niw3ICsyMDc2LDcgQEAgSlNWYWx1ZSogTG9j
YXRpb25Qcm90b0Z1bmNBc3NpZ246OmNhbGxBcwogICAgICAgICBpZiAoIXAtPmxvYWRlcigpLT5z
aG91bGRBbGxvd05hdmlnYXRpb24oZnJhbWUpKQogICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgICAgICBjb25zdCBXaW5kb3cgKndpbmRvdyA9IFdpbmRvdzo6cmV0cmlldmVXaW5k
b3coZnJhbWUpOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAtPmxvYWRlcigp
LT5jb21wbGV0ZVVSTChEZXByZWNhdGVkU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSku
dXJsKCk7CisgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZHN0VXJsID0gcC0+bG9hZGVyKCktPmNv
bXBsZXRlVVJMKERlcHJlY2F0ZWRTdHJpbmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKS5zdHJp
bmcoKTsKICAgICAgICAgaWYgKCFkc3RVcmwuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxz
ZSkgfHwgKHdpbmRvdyAmJiB3aW5kb3ctPmlzU2FmZVNjcmlwdChleGVjKSkpIHsKICAgICAgICAg
ICAgIGJvb2wgdXNlckdlc3R1cmUgPSBzdGF0aWNfY2FzdDxTY3JpcHRJbnRlcnByZXRlciAqPihl
eGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKSktPndhc1J1bkJ5VXNlckdlc3R1cmUoKTsKICAgICAg
ICAgICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRoaXMgSlMgd2FzIGNhbGxl
ZCB2aWEgYSB1c2VyIGdlc3R1cmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDkgQEAKICMgCi0j
IEtET00gSURMIHBhcnNlcgorIyBXZWJLaXQgSURMIHBhcnNlcgogIwogIyBDb3B5cmlnaHQgKEMp
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CiAjIENvcHlyaWdodCAo
QykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KLSMgCi0jIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorIyBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyAKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYzLDQg
KzM2MiwyNiBAQCBzdWIgU2NhbkRpcmVjdG9yeQogICAgIH0KIH0KIAorIyBVcHBlcmNhc2UgdGhl
IGZpcnN0IGxldHRlciB3aGlsZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLiAK
KyMgRS5nLiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNvZGluZywgYnV0IHhtbGxsYW5nIGJl
Y29tZXMgWG1sbGFuZy4KK3N1YiBXS191Y2ZpcnN0Cit7CisgICAgbXkgKCRvYmplY3QsICRwYXJh
bSkgPSBAXzsKKyAgICBwcmludCBTVERFUlIgInBhcmFtIGlzICRwYXJhbVxuIjsKKyAgICBteSAk
cmV0ID0gdWNmaXJzdCgkcGFyYW0pOworICAgICRyZXQgPX4gcy9YbWwvWE1MLyBpZiAkcmV0ID1+
IC9eWG1sW15hLXpdLzsKKyAgICBwcmludCBTVERFUlIgInJldCBpcyAkcmV0XG4iOworICAgIHJl
dHVybiAkcmV0OworfQorCisjIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3Bl
Y3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuIAorIyBVUkwgYmVjb21lcyB1cmwsIGJ1dCBT
ZXRVUkwgYmVjb21lcyBzZXRVUkwuCitzdWIgV0tfbGNmaXJzdAoreworICAgIG15ICgkb2JqZWN0
LCAkcGFyYW0pID0gQF87CisgICAgbXkgJHJldCA9IGxjZmlyc3QoJHBhcmFtKTsKKyAgICAkcmV0
ID1+IHMvdVJML3VybC87CisgICAgcmV0dXJuICRyZXQ7Cit9CisKIDE7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNPTS5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNPTS5wbQkocmV2aXNpb24gMjgyNTEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckNPTS5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjE2LDcgKzYxNiw3IEBAIHN1YiBHZW5lcmF0ZUNQUEF0dHJpYnV0ZQogICAg
IHB1c2goQGdldHRlckltcGxlbWVudGF0aW9uLCAiICAgIGlmICghcmVzdWx0KVxuIik7CiAgICAg
cHVzaChAZ2V0dGVySW1wbGVtZW50YXRpb24sICIgICAgICAgIHJldHVybiBFX1BPSU5URVI7XG5c
biIpOwogCi0gICAgbXkgJGltcGxlbWVudGF0aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0
aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlfSgpLT4ke2F0dHJpYnV0ZU5hbWV9KCIgLiAoJGhhc0dl
dHRlckV4Y2VwdGlvbiA/ICJlYyIgOiAiIikuICIpIjsKKyAgICBteSAkaW1wbGVtZW50YXRpb25H
ZXR0ZXIgPSAiaW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCktPiIg
LiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAiKCIgLiAoJGhh
c0dldHRlckV4Y2VwdGlvbiA/ICJlYyIgOiAiIikuICIpIjsKIAogICAgIHB1c2goQGdldHRlcklt
cGxlbWVudGF0aW9uLCAiICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYg
JGhhc0dldHRlckV4Y2VwdGlvbjsKIApAQCAtNzYzLDcgKzc2Myw3IEBAIHN1YiBHZW5lcmF0ZUNQ
UEZ1bmN0aW9uCiAgICAgfQogCiAgICAgbXkgJGNhbGxTaWdCZWdpbiA9ICIgICAgIjsKLSAgICBt
eSAkY2FsbFNpZ01pZGRsZSA9ICIke2ltcGxlbWVudGF0aW9uR2V0dGVyfS0+JHtmdW5jdGlvbk5h
bWV9KCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJMaXN0KSAuICIpIjsKKyAgICBteSAkY2FsbFNp
Z01pZGRsZSA9ICIke2ltcGxlbWVudGF0aW9uR2V0dGVyfS0+IiAuICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTGlz
dCkgLiAiKSI7CiAgICAgbXkgJGNhbGxTaWdFbmQgPSAiO1xuIjsKIAogICAgIGlmIChkZWZpbmVk
ICRuZWVkc0N1c3RvbXsiTm9kZVRvUmV0dXJuIn0pIHsKQEAgLTEyMTgsNyArMTIxOCw3IEBAIHN1
YiBXcml0ZURhdGEKICAgICBwcmludCBPVVRQVVRJREwgQElETEhlYWRlcjsKIAogICAgICMgQWRk
IGZvcndhcmQgZGVjbGFyYXRpb25zIGFuZCBpbW9ydHMKLSAgICBkZWxldGUgJElETEZvcndhcmRE
ZWNsYXJhdGlvbnN7a2V5cyglSURMRG9udEZvcndhcmREZWNsYXJlKX07DQorICAgIGRlbGV0ZSAk
SURMRm9yd2FyZERlY2xhcmF0aW9uc3trZXlzKCVJRExEb250Rm9yd2FyZERlY2xhcmUpfTsKICAg
ICBkZWxldGUgJElETEltcG9ydHN7a2V5cyglSURMRG9udEltcG9ydCl9OwogCiAgICAgcHJpbnQg
T1VUUFVUSURMIG1hcCB7ICJjcHBfcXVvdGUoXCJpbnRlcmZhY2UgJF87XCIpXG4iIH0gc29ydCBr
ZXlzKCVJRExGb3J3YXJkRGVjbGFyYXRpb25zKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04MSwx
NiArODEsNiBAQCBzdWIgbGVmdFNoaWZ0KCQkKSB7CiAgICAgcmV0dXJuICgoJHZhbHVlIDw8ICRk
aXN0YW5jZSkgJiAweEZGRkZGRkZGKTsKIH0KIAotIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRl
ciwgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4gCi0jIEUuZy4sIHht
bEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxh
bmcuCi1zdWIgV0tfdWNmaXJzdAotewotICAgIG15ICRwYXJhbSA9IHNoaWZ0OwotICAgIG15ICRy
ZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7Ci0gICAgJHJldCA9fiBzL1htbC9YTUwvIGlmICRyZXQgPX4g
L15YbWxbXmEtel0vOwotICAgIHJldHVybiAkcmV0OwotfQotCiAjIFBhcmFtczogJ2RvbUNsYXNz
JyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZUludGVyZmFjZQogewpAQCAtNDA4LDkgKzM5OCw5IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJc
biAgICAgICAgIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG15ICR2YWx1ZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLwotICAgICAgICAgICAg
ICAgICAgICAgID8gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIkNvbnN0cnVjdG9yQXR0
ck51bSIKLSAgICAgICAgICAgICAgICAgICAgICA6IFdLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIjsKKyAgICAgICAgICAgIG15ICR2YWx1ZSA9ICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAg
ICAgICAgICAgICAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9y
JC8gPyAiQ29uc3RydWN0b3IiIDogIiIpCisgICAgICAgICAgICAgICAgLiAiQXR0ck51bSI7CiAg
ICAgICAgICAgICAkdmFsdWUgLj0gIiwgIiBpZiAoKCRpIDwgJG51bUF0dHJpYnV0ZXMgLSAxKSBv
ciAoKCRpIGVxICRudW1BdHRyaWJ1dGVzIC0gMSkgYW5kICgoJG51bUZ1bmN0aW9ucyBuZSAwKSBv
ciAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn0p
KSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkdmFsdWUpOwogICAgICAgICB9
CkBAIC00MjksMTUgKzQxOSwxNSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bSJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpT
VmFsdWUqICIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKEtKUzo6RXhlY1N0YXRl
KikgY29uc3Q7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IEtKUzo6SlNWYWx1ZSogIiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKICAgICAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LykgewotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAuIFdLX3Vj
Zmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUqLCBL
SlM6OkpTVmFsdWUqKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZvaWQgc2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7
XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSkgewotICAg
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIihLSlM6OkV4ZWNTdGF0ZSopIGNvbnN0O1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFs
dWUqICIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWUpIC4gIihLSlM6OkV4ZWNTdGF0ZSopIGNvbnN0O1xuIik7CiAgICAgICAgICAgICB9IGVs
c2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21T
ZXR0ZXIifSkgewogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVh
ZG9ubHkvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dm9pZCBzZXQiIC4gV0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihL
SlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUq
LCBLSlM6OkpTVmFsdWUqKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNDUxLDcgKzQ0MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xuIik7CiAg
ICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewog
ICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
IEtKUzo6SlNWYWx1ZSogIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIihLSlM6OkV4
ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFsdWUqICIgLiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKiwg
Y29uc3QgS0pTOjpMaXN0Jik7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
QEAgLTU0OSw3ICs1MzksNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJG51bUZ1bmN0
aW9ucyA+IDApIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwiLy8gRnVuY3Rpb25zXG5c
biIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9u
c30pIHsKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIHByb3RvdHlwZUZ1bmN0aW9u
Rm9yKCRjbGFzc05hbWUsIFdLX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpKSk7
CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBwcm90b3R5cGVGdW5jdGlvbkZvcigk
Y2xhc3NOYW1lLCAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZSkpKTsKICAgICAgICAgfSAgICAgICAgCiAgICAgfQogCkBAIC02MjAsOSArNjEwLDkg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRu
YW1lKTsKIAotICAgICAgICAgICAgbXkgJHZhbHVlID0gJGNsYXNzTmFtZSAuICI6OiIgLiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAu
ICJDb25zdHJ1Y3RvckF0dHJOdW0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IFdLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVt
Iik7CisgICAgICAgICAgICBteSAkdmFsdWUgPSAkY2xhc3NOYW1lIC4gIjo6IiAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAgICAg
ICAgICAgICAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8g
PyAiQ29uc3RydWN0b3IiIDogIiIpCisgICAgICAgICAgICAgICAgLiAiQXR0ck51bSI7CiAgICAg
ICAgICAgICBwdXNoKEBoYXNoVmFsdWVzLCAkdmFsdWUpOwogCiAgICAgICAgICAgICBteSBAc3Bl
Y2lhbHMgPSAoKTsKQEAgLTcxMiw3ICs3MDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAg
ICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICR2YWx1ZSA9ICImIiAuICRj
bGFzc05hbWUgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiOjpj
cmVhdGUiOworICAgICAgICBteSAkdmFsdWUgPSAiJiIgLiAkY2xhc3NOYW1lIC4gIlByb3RvdHlw
ZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKSAuICI6OmNyZWF0
ZSI7CiAgICAgICAgIHB1c2goQGhhc2hWYWx1ZXMsICR2YWx1ZSk7CiAKICAgICAgICAgbXkgQHNw
ZWNpYWxzID0gKCk7CkBAIC05MDUsMTggKzg5NSwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzd2l0Y2ggKHRva2VuKSB7XG4i
KTsKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1
dGVzfSkgewotICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWU7CisgICAgICAgICAgICBteSAkZ2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3It
PldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKIAogICAgICAgICAgICAg
bXkgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAiIjsKICAgICAgICAgICAgIGlm
ICghJHBvZFR5cGUgYW5kICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxD
bGFzc05hbWUpIG9yICRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8pKSB7CiAgICAgICAg
ICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gPSAkaW1wbENsYXNzTmFt
ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGNhc2UgIiAuICRuYW1lIC4gIkNvbnN0cnVjdG9yQXR0ck51bToge1xuIik7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGNhc2UgIiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKQor
ICAgICAgICAgICAgICAgIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIikKKyAgICAgICAgICAgICAgICAuICJBdHRyTnVt
OiB7XG4iKTsKIAogICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKCFpc1NhZmVTY3JpcHQoZXhl
YykpXG4iKTsKQEAgLTkyNCwzMyArOTEyLDMyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJG5hbWUoZXhlYyk7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICRnZXR0ZXJG
dW5jdGlvbk5hbWUoZXhlYyk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrTm9kZVNlY3VyaXR5In0pIHsK
ICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAg
PSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG5cbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hlY2tOb2RlU2VjdXJp
dHkoZXhlYywgaW1wLT4kbmFtZSgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZl
cnNpb24sICJpbXAtPiRuYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAg
PSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5
KGV4ZWMsIGltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVG
b3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpIC4gIiA6IGpz
VW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRnJhbWVTZWN1cml0eSJ9KSB7CiAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1lbnQuaCJ9ID0gMTsKICAgICAgICAgICAg
ICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2Fz
dDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG5cbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgaW1w
LT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVy
c2lvbiwgImltcC0+JG5hbWUoKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9
IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHko
ZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZh
bHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIikgLiAiIDoganNVbmRl
ZmluZWQoKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVj
dG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGUpOwogICAgICAgICAgICAgICAgICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1
Y3RvciQvLzsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0
dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihleGVjKTtcbiIp
OwogICAgICAgICAgICAgfSBlbHNpZiAoIUB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30p
IHsKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcblxuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlw
ZSBpbXAoKmltcGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlIGVx
ICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVU
b0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJp
bXAiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gIiAuIE5hdGl2
ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwg
ImltcC4kbmFtZSgpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdldHRlckZ1bmN0aW9u
TmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1w
bCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihp
bXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGNvZGVHZW5lcmF0
b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24s
ICJpbXAtPiRuYW1lKCkiKTsKLQorICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0
aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRp
bXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1l
KCkiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1h
dGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBSZWZQdHI8JHR5cGU+IG9iaiA9ICRqc1R5cGU7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdG9KUyhl
eGVjLCBvYmouZ2V0KCksIGltcCk7XG4iKTsKQEAgLTk2MiwxMSArOTQ5LDExIEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAo
JHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcblxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRp
dmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIs
ICJpbXAuJG5hbWUoZWMpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBs
Q2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIpIC4gIjtcbiIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxD
bGFzc05hbWUqPihpbXBsKCkpO1xuXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNW
YWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNz
TmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JG5hbWUoZWMpIikgLiAiO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFt
ZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAk
aW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRn
ZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7XG4iKTsKQEAgLTEwMTUsMTIgKzEwMDIsMTEgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5v
ZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUg
IX4gL15yZWFkb25seS8pIHsKICAgICAgICAgICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJGdW5j
dGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0
b3IkLykgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
Y2FzZSAiIC4gJG5hbWUgLiJDb25zdHJ1Y3RvckF0dHJOdW06IHtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiQXR0ck51bToge1xuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgY2FzZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgLiAiQXR0ck51bToge1xuIik7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWlu
U2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoIWlzU2FmZVNjcmlwdChleGVjKSlcbiIp
OwpAQCAtMTAyOCw3ICsxMDE0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8fCAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHNldCIgLiBXS191
Y2ZpcnN0KCRuYW1lKSAuICIoZXhlYywgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0JHNldHRlckZ1bmN0aW9uTmFtZShl
eGVjLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
OwogICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0cnVj
dG9yJC8vOwpAQCAtMTAzOSwxNyArMTAyNSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpT
T2JqZWN0OjpwdXQoZXhlYywgXCIkbmFtZVwiLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAk
cG9kVHlwZSBpbXAoKmltcGwoKSk7XG5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUgZXEgImZsb2F0IikgeyAj
IFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGltcCA9ICIgLiBKU1ZhbHVlVG9OYXRp
dmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICI7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1wLnNldCIgLiBXS191Y2ZpcnN0KCRuYW1l
KSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIp
IC4gIik7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGltcC5zZXQkc2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBKU1ZhbHVlVG9O
YXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShleGVjLCBpbXApO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1w
ID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFz
c05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9u
c307Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIGltcC0+c2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIigiIC4gSlNWYWx1ZVRvTmF0aXZl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAtPnNldCRzZXR0ZXJGdW5jdGlv
bk5hbWUoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiwgZWMi
KSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTEwNzks
MjQgKzEwNjUsMjQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAjIEZ1bmN0aW9u
cwogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRmdW5j
dGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIG15ICRmdW5jdGlv
bkNsYXNzTmFtZSA9ICRjbGFzc05hbWUgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gV0tfdWNmaXJz
dCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25D
bGFzc05hbWUgPSAkY2xhc3NOYW1lIC4gIlByb3RvdHlwZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSogJHtmdW5jdGlvbkNsYXNzTmFtZX06OmNhbGxB
c0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3Qm
IGFyZ3MpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCYk
e2NsYXNzTmFtZX06OmluZm8pKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7XG5cbiIpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IFR5cGVFcnJvcik7XG4iKTsKIAogICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgJGNsYXNzTmFtZSogY2FzdGVkVGhpc09iaiA9IHN0YXRpY19jYXN0PCRjbGFzc05hbWUq
Pih0aGlzT2JqKTtcbiIpOwogCiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSkgewotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2FzdGVkVGhpc09iai0+IiAuICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIC4gIihleGVjLCBhcmdzKTtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2FzdGVkVGhpc09iai0+IiAuICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSAuICIo
ZXhlYywgYXJncyk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
aWYgKCRwb2RUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXI8JHBvZFR5cGU+KiB3cmFwcGVyID0gY2FzdGVkVGhpc09i
ai0+aW1wbCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRwb2RUeXBlIGltcCgqd3JhcHBlcik7XG5cbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSBpbXAoKndyYXBwZXIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1l
Kj4oY2FzdGVkVGhpc09iai0+aW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwk
aW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAKIApAQCAtMTExMSw3ICsxMDk3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBteSAkcGFyYW1JbmRleCA9
IDA7Ci0gICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gImltcCIgLiAoJHBvZFR5
cGUgPyAiLiIgOiAiLT4iKSAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiOworICAg
ICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICJpbXAiIC4gKCRwb2RUeXBlID8gIi4i
IDogIi0+IikgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZSkgLiAiKCI7CiAKICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKICAgICAgICAgICAgICAgICBteSAkaGFzT3B0aW9uYWxB
cmd1bWVudHMgPSAwOwpAQCAtMTI1OCw3ICsxMjQ0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb25GdW5jdGlvbkNhbGwoKQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9OwogCiAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBlci0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7
XG5cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBl
ci0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gImlmIChjYXN0ZWRUaGlzT2JqLT5jb250ZXh0KCkpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBjYXN0ZWRUaGlzT2Jq
LT5jb250ZXh0KCktPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpO1xuIik7CiAgICAgICAgIH0KQEAg
LTEyNjksNyArMTI1NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxs
KCkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAic2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfTsKIAogICAg
ICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5k
ZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShleGVjLCBpbXApO1xuXG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShl
eGVjLCBpbXApO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJpZiAoY2FzdGVkVGhpc09iai0+Y29udGV4dCgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgJGluZGVudCAuICIgICAgY2FzdGVkVGhpc09iai0+Y29udGV4dCgpLT5ub3Rp
ZnlBdHRyaWJ1dGVDaGFuZ2UoKTtcbiIpOwogICAgICAgICB9CkBAIC0xNDU3LDcgKzE0NDMsNyBA
QCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXAtPi8vOwogICAg
ICAgICAkZ2V0dGVyID1+IHMvXChcKS8vOwogCi0gICAgICAgIG15ICRzZXR0ZXIgPSAic2V0IiAu
IFdLX3VjZmlyc3QoJGdldHRlcik7CisgICAgICAgIG15ICRzZXR0ZXIgPSAic2V0IiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRnZXR0ZXIpOwogCiAgICAgICAgIGlmICgkaW1wbENsYXNz
TmFtZUZvclZhbHVlQ29udmVyc2lvbiBlcSAiIikgewogICAgICAgICAgICAgaWYgKElzU1ZHVHlw
ZU5lZWRpbmdDb250ZXh0UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgewpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQkocmV2aXNpb24gMjgy
NTEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTIwMywxNiArMjAzLDYgQEAgc3ViIGZpbmlzaAogICAgIG15ICRvYmpl
Y3QgPSBzaGlmdDsKIH0KIAotIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciwgd2hpbGUgcmVz
cGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4gCi0jIEUuZy4sIHhtbEVuY29kaW5nIGJl
Y29tZXMgWE1MRW5jb2RpbmcsIGJ1dCB4bWxsYW5nIGJlY29tZXMgWG1sbGFuZy4KLXN1YiBXS191
Y2ZpcnN0Ci17Ci0gICAgbXkgJHBhcmFtID0gc2hpZnQ7Ci0gICAgbXkgJHJldCA9IHVjZmlyc3Qo
JHBhcmFtKTsKLSAgICAkcmV0ID1+IHMvWG1sL1hNTC8gaWYgJHJldCA9fiAvXlhtbFteYS16XS87
Ci0gICAgcmV0dXJuICRyZXQ7Ci19Ci0KIHN1YiBSZWFkUHVibGljSW50ZXJmYWNlcwogewogICAg
IG15ICRjbGFzcyA9IHNoaWZ0OwpAQCAtMTA2NSw3ICsxMDU1LDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICMgLSBHRVRURVIKICAgICAgICAgICAgIG15ICRnZXR0
ZXJTaWcgPSAiLSAoJGF0dHJpYnV0ZVR5cGUpJGF0dHJpYnV0ZUludGVyZmFjZU5hbWVcbiI7CiAg
ICAgICAgICAgICBteSAkaGFzR2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmlidXRlLT5nZXR0ZXJF
eGNlcHRpb25zfTsKLSAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50SGVhZCA9ICJJTVBMLT4k
YXR0cmlidXRlTmFtZSgiOworICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRIZWFkID0gIklN
UEwtPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlTmFtZSkgLiAiKCI7
CiAgICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudFRhaWwgPSAiKSI7CiAKICAgICAgICAgICAg
ICMgU3BlY2lhbCBjYXNlIGZvciBET01TVkdOdW1iZXIKQEAgLTExNjMsNyArMTE1Myw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgIyBFeGNlcHRpb24gaGFu
ZGxpbmcKICAgICAgICAgICAgICAgICBteSAkaGFzU2V0dGVyRXhjZXB0aW9uID0gQHskYXR0cmli
dXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKIAotICAgICAgICAgICAgICAgICRhdHRyaWJ1dGVOYW1l
ID0gInNldCIgLiBXS191Y2ZpcnN0KCRhdHRyaWJ1dGVOYW1lKTsKKyAgICAgICAgICAgICAgICAk
YXR0cmlidXRlTmFtZSA9ICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJp
YnV0ZU5hbWUpOwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJOYW1lID0gInNldCIgLiB1Y2Zp
cnN0KCRhdHRyaWJ1dGVJbnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAgICAgICBteSAkYXJnTmFt
ZSA9ICJuZXciIC4gdWNmaXJzdCgkYXR0cmlidXRlSW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAg
ICAgICAgbXkgJGFyZyA9IEdldE9iakNUeXBlR2V0dGVyKCRhcmdOYW1lLCAkaWRsVHlwZSk7CkBA
IC0xMjk1LDcgKzEyODUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgbXkgJHN2Z01hdHJpeEludmVyc2UgPSAoJHBvZFR5cGUgYW5kICRwb2RUeXBlIGVxICJBZmZp
bmVUcmFuc2Zvcm0iIGFuZCAkZnVuY3Rpb25OYW1lIGVxICJpbnZlcnNlIik7CiAKICAgICAgICAg
ICAgIHB1c2goQHBhcmFtZXRlck5hbWVzLCAiZWMiKSBpZiAkcmFpc2VzRXhjZXB0aW9ucyBhbmQg
ISgkc3ZnTWF0cml4Um90YXRlRnJvbVZlY3RvciB8fCAkc3ZnTWF0cml4SW52ZXJzZSk7Ci0gICAg
ICAgICAgICBteSAkY29udGVudCA9ICRjYWxsZXIgLiAiLT4iIC4gJGZ1bmN0aW9uTmFtZSAuICIo
IiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRlck5hbWVzKSAuICIpIjsgCisgICAgICAgICAgICBteSAk
Y29udGVudCA9ICRjYWxsZXIgLiAiLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1
bmN0aW9uTmFtZSkgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7IAog
CiAgICAgICAgICAgICBpZiAoJHN2Z01hdHJpeFJvdGF0ZUZyb21WZWN0b3IpIHsKICAgICAgICAg
ICAgICAgICAjIFNwZWNpYWwgY2FzZSB3aXRoIHJvdGF0ZUZyb21WZWN0b3IgJiBTVkdNYXRyaXgg
ICAgICAgIApJbmRleDogV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2Vi
Q29yZS9jc3MvQ1NTSW1wb3J0UnVsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcg
QEAgdm9pZCBDU1NJbXBvcnRSdWxlOjppbnNlcnRlZEludG9QYXJlbnQoKQogICAgIENTU1N0eWxl
U2hlZXQqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlmICghcGFyZW50
U2hlZXQtPmhyZWYoKS5pc051bGwoKSkKICAgICAgICAgLy8gdXNlIHBhcmVudCBzdHlsZWhlZXQn
cyBVUkwgYXMgdGhlIGJhc2UgVVJMCi0gICAgICAgIGFic0hyZWYgPSBLVVJMKHBhcmVudFNoZWV0
LT5ocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpLCBtX3N0ckhyZWYuZGVwcmVjYXRlZFN0cmluZygp
KS51cmwoKTsKKyAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmhyZWYoKS5kZXBy
ZWNhdGVkU3RyaW5nKCksIG1fc3RySHJlZi5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpOwog
CiAgICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVu
Y291bnRlciBhIHN0eWxlc2hlZXQKICAgICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhl
IHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMjgy
NTEpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjEs
NyArODIxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgaWYgKCF1cmkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgp
LmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5i
YXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJp
bmcoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RzcG90LCBzdHlsZUVs
ZW1lbnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04ODQsNyArODg0
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICAg
ICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5nKSk7CiAgICAg
ICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1
ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChz
dHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVk
U3RyaW5nKCkpLnVybCgpKSwKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVF
bGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmlu
ZygpKS5zdHJpbmcoKSksCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCk7CiAgICAg
ICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICB9CkBAIC0xODQ5LDcg
KzE4NDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsCiAgICAg
ICAgICAgICAvLyB1cmwKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVVJMKGRvbVN0
cmluZyh2YWwtPnN0cmluZykpOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTSW1h
Z2VWYWx1ZSgKLSAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VV
UkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkp
LCBzdHlsZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIFN0cmluZyhLVVJMKHN0eWxlRWxlbWVu
dC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUuZGVwcmVjYXRlZFN0cmluZygp
KS5zdHJpbmcoKSksIHN0eWxlRWxlbWVudCk7CiAgICAgICAgIH0gZWxzZSBpZiAodmFsLT51bml0
ID09IFZhbHVlOjpGdW5jdGlvbikgewogICAgICAgICAgICAgLy8gYXR0cihYKSB8IGNvdW50ZXIo
WCBbLFldKSB8IGNvdW50ZXJzKFgsIFksIFssWl0pCiAgICAgICAgICAgICBWYWx1ZUxpc3QgKmFy
Z3MgPSB2YWwtPmZ1bmN0aW9uLT5hcmdzOwpAQCAtMTkxNSw3ICsxOTE1LDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQmFja2dyb3VuZEltYWdlKENTUwogICAgIGlmICh2YWx1ZUxpc3QtPmN1cnJl
bnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICBTdHJp
bmcgdXJpID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZhbHVlTGlzdC0+Y3VycmVudCgpLT5zdHJpbmcp
KTsKICAgICAgICAgaWYgKCF1cmkuaXNFbXB0eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBuZXcg
Q1NTSW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNh
dGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgCisgICAgICAgICAg
ICB2YWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFz
ZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5n
KCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVFbGVt
ZW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjc2MSw3ICsyNzYxLDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMoKQogICAgICAgICBwYXJzZWRWYWx1ZSA9
IDA7CiAgICAgICAgIGlmICh2YWwtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkg
JiYgIWV4cGVjdENvbW1hKSB7CiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVVSTChk
b21TdHJpbmcodmFsLT5zdHJpbmcpKTsKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENT
U0ZvbnRGYWNlU3JjVmFsdWUoU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVw
cmVjYXRlZFN0cmluZygpLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwgZmFsc2Up
OworICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTRm9udEZhY2VTcmNWYWx1ZShTdHJp
bmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHZhbHVl
LmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5nKCkpLCBmYWxzZSk7CiAgICAgICAgICAgICB1cmlW
YWx1ZSA9IHBhcnNlZFZhbHVlOwogICAgICAgICAgICAgYWxsb3dGb3JtYXQgPSB0cnVlOwogICAg
ICAgICAgICAgZXhwZWN0Q29tbWEgPSB0cnVlOwpAQCAtMzIxNiw3ICszMjE2LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UoaW50IHBybwogICAgIGlmICh1cmkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgY29udGV4dC5jb21taXRJbWFnZShu
ZXcgQ1NTSW1hZ2VWYWx1ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXBy
ZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICBjb250
ZXh0LmNvbW1pdEltYWdlKG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxlRWxlbWVu
dC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSku
c3RyaW5nKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCkpOwogICAgIHdoaWxlICgodmFsID0gdmFsdWVM
aXN0LT5uZXh0KCkpKSB7CiAgICAgICAgIGlmIChjb250ZXh0LmFsbG93TnVtYmVyKCkgJiYgdmFs
aWRVbml0KHZhbCwgRkludGVnZXJ8Rk5vbk5lZ3xGUGVyY2VudCwgdHJ1ZSkpIHsKQEAgLTM3Nzgs
NyArMzc3OCw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlQ2hhcnNldFJ1bGUoY28KICAg
ICByZXR1cm4gcnVsZTsKIH0KIAotQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxl
KGNvbnN0IFBhcnNlU3RyaW5nJiBVUkwsIE1lZGlhTGlzdCogbWVkaWEpCitDU1NSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgUGFyc2VTdHJpbmcmIHVybCwgTWVkaWFMaXN0
KiBtZWRpYSkKIHsKICAgICBpZiAoIW1lZGlhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTM3ODYs
NyArMzc4Niw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb24KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFzdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgp
KQogICAgICAgICByZXR1cm4gMDsKLSAgICBDU1NJbXBvcnRSdWxlKiBydWxlID0gbmV3IENTU0lt
cG9ydFJ1bGUoc3R5bGVFbGVtZW50LCBkb21TdHJpbmcoVVJMKSwgbWVkaWEpOworICAgIENTU0lt
cG9ydFJ1bGUqIHJ1bGUgPSBuZXcgQ1NTSW1wb3J0UnVsZShzdHlsZUVsZW1lbnQsIGRvbVN0cmlu
Zyh1cmwpLCBtZWRpYSk7CiAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUpOwog
ICAgIHJldHVybiBydWxlOwogfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlz
aW9uIDI4MjUxKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEVuY29k
ZWRVUkwoY29uCiAKICAgICB1LnNldFF1ZXJ5KERlcHJlY2F0ZWRTdHJpbmc6Om51bGwpOwogICAg
IHUuc2V0UmVmKERlcHJlY2F0ZWRTdHJpbmc6Om51bGwpOwotICAgIGVuY29kZWR1cmwuZmlsZSA9
IHUudXJsKCk7CisgICAgZW5jb2RlZHVybC5maWxlID0gdS5zdHJpbmcoKTsKICAgICBpbnQgcG9z
ID0gZW5jb2RlZHVybC5maWxlLmZpbmRSZXYoJy8nKTsKICAgICBlbmNvZGVkdXJsLnBhdGggPSBl
bmNvZGVkdXJsLmZpbGU7CiAgICAgaWYgKHBvcyA+IDApIHsKQEAgLTMyMSw3ICszMjEsNyBAQCB2
b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAgICAgICAgIGVuY29kZWR1
cmwucGF0aCArPSAnLyc7CiAgICAgfQogICAgIHUuc2V0UGF0aChEZXByZWNhdGVkU3RyaW5nOjpu
dWxsKTsKLSAgICBlbmNvZGVkdXJsLmhvc3QgPSB1LnVybCgpOworICAgIGVuY29kZWR1cmwuaG9z
dCA9IHUuc3RyaW5nKCk7CiB9CiAKIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9y
KCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIERvY3VtZW50
Ojpwcm9jZXNzSHR0cEVxdWl2KGNvbnN0IFN0CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAg
IGlmIChmcmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwp
KSB7CiAgICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwg
PSBmcmFtZS0+bG9hZGVyKCktPnVybCgpLnVybCgpOworICAgICAgICAgICAgICAgIHVybCA9IGZy
YW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgdXJsID0gY29tcGxldGVVUkwodXJsKTsKICAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS0+c2NoZWR1bGVIVFRQUmVkaXJlY3Rpb24oZGVsYXksIHVybCk7CkBAIC0yNTkwLDEyICsy
NTkwLDEyIEBAIEVsZW1lbnQqIERvY3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdAogCiBTdHJp
bmcgRG9jdW1lbnQ6OmNvb2tpZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoVVJMKCkp
OworICAgIHJldHVybiBjb29raWVzKHVybCgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0Q29v
a2llKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0Q29va2llcyhVUkwoKSwgcG9saWN5
QmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUpOworICAgIHNldENvb2tpZXModXJs
KCksIHBvbGljeUJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHZhbHVlKTsKIH0KIAogU3Ry
aW5nIERvY3VtZW50OjpyZWZlcnJlcigpIGNvbnN0CkBAIC0yNjA4LDcgKzI2MDgsNyBAQCBTdHJp
bmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkgY29uc3QKIFN0cmluZyBEb2N1bWVudDo6ZG9tYWluKCkg
Y29uc3QKIHsKICAgICBpZiAobV9kb21haW4uaXNFbXB0eSgpKSAvLyBub3Qgc2V0IHlldCAod2Ug
c2V0IGl0IG9uIGRlbWFuZCB0byBzYXZlIHRpbWUgYW5kIHNwYWNlKQotICAgICAgICBtX2RvbWFp
biA9IEtVUkwoVVJMKCkpLmhvc3QoKTsgLy8gSW5pdGlhbGx5IHNldCB0byB0aGUgaG9zdAorICAg
ICAgICBtX2RvbWFpbiA9IEtVUkwodXJsKCkpLmhvc3QoKTsgLy8gSW5pdGlhbGx5IHNldCB0byB0
aGUgaG9zdAogICAgIHJldHVybiBtX2RvbWFpbjsKIH0KIApAQCAtMjYxNyw3ICsyNjE3LDcgQEAg
dm9pZCBEb2N1bWVudDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbgogICAgIC8vIE5vdCBzZXQg
eWV0ICh3ZSBzZXQgaXQgb24gZGVtYW5kIHRvIHNhdmUgdGltZSBhbmQgc3BhY2UpCiAgICAgLy8g
SW5pdGlhbGx5IHNldCB0byB0aGUgaG9zdAogICAgIGlmIChtX2RvbWFpbi5pc0VtcHR5KCkpCi0g
ICAgICAgIG1fZG9tYWluID0gS1VSTChVUkwoKSkuaG9zdCgpOworICAgICAgICBtX2RvbWFpbiA9
IEtVUkwodXJsKCkpLmhvc3QoKTsKIAogICAgIC8vIEJvdGggTlMgYW5kIElFIHNwZWNpZnkgdGhh
dCBjaGFuZ2luZyB0aGUgZG9tYWluIGlzIG9ubHkgYWxsb3dlZCB3aGVuCiAgICAgLy8gdGhlIG5l
dyBkb21haW4gaXMgYSBzdWZmaXggb2YgdGhlIG9sZCBkb21haW4uCkBAIC0yNzY0LDEyICsyNzY0
LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZUltYWdlTWFwKEhUTUxNYXBFbGUKICAgICAgICAg
bV9pbWFnZU1hcHNCeU5hbWUucmVtb3ZlKGl0KTsKIH0KIAotSFRNTE1hcEVsZW1lbnQgKkRvY3Vt
ZW50OjpnZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIFVSTCkgY29uc3QKK0hUTUxNYXBFbGVtZW50
ICpEb2N1bWVudDo6Z2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7Ci0gICAg
aWYgKFVSTC5pc051bGwoKSkKKyAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICBpbnQgaGFzaFBvcyA9IFVSTC5maW5kKCcjJyk7Ci0gICAgU3RyaW5nIG5hbWUgPSAo
aGFzaFBvcyA8IDAgPyBVUkwgOiBVUkwuc3Vic3RyaW5nKGhhc2hQb3MgKyAxKSkuaW1wbCgpOwor
ICAgIGludCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKKyAgICBTdHJpbmcgbmFtZSA9IChoYXNo
UG9zIDwgMCA/IHVybCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7CiAgICAg
QXRvbWljU3RyaW5nIG1hcE5hbWUgPSBoTW9kZSA9PSBYSHRtbCA/IG5hbWUgOiBuYW1lLmxvd2Vy
KCk7CiAgICAgcmV0dXJuIG1faW1hZ2VNYXBzQnlOYW1lLmdldChtYXBOYW1lLmltcGwoKSk7CiB9
CkBAIC0yNzg2LDI2ICsyNzg2LDI2IEBAIFVDaGFyIERvY3VtZW50OjpiYWNrc2xhc2hBc0N1cnJl
bmN5U3ltYm8KICAgICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLmJhY2tzbGFzaEFzQ3Vy
cmVuY3lTeW1ib2woKTsKIH0KIAotRGVwcmVjYXRlZFN0cmluZyBEb2N1bWVudDo6Y29tcGxldGVV
UkwoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgVVJMKQorRGVwcmVjYXRlZFN0cmluZyBEb2N1bWVu
dDo6Y29tcGxldGVVUkwoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgdXJsKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIHRyZWF0cyBudWxsIFVSTHMgdGhlIHNhbWUgYXMgZW1wdHkgVVJMcywgdW5saWtl
IHRoZSBTdHJpbmcgZnVuY3Rpb24gYmVsb3cuCiAKICAgICAvLyBJZiBib3RoIHRoZSBVUkwgYW5k
IGJhc2UgVVJMIGFyZSBlbXB0eSwgbGlrZSB0aGV5IGFyZSBmb3IgZG9jdW1lbnRzCiAgICAgLy8g
Y3JlYXRlZCB1c2luZyBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQsIGp1c3QgcmV0
dXJuIHRoZSBwYXNzZWQgaW4gVVJMLgotICAgIC8vIChXZSBkbyB0aGlzIGJlY2F1c2UgVVJMKCkg
cmV0dXJucyAiYWJvdXQ6YmxhbmsiIGZvciBlbXB0eSBVUkxzLgorICAgIC8vIChXZSBkbyB0aGlz
IGJlY2F1c2UgdXJsKCkgcmV0dXJucyAiYWJvdXQ6YmxhbmsiIGZvciBlbXB0eSBVUkxzLgogICAg
IGlmIChtX3VybC5pc0VtcHR5KCkgJiYgbV9iYXNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIFVSTDsKKyAgICAgICAgcmV0dXJuIHVybDsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAg
ICAgcmV0dXJuIEtVUkwoYmFzZVVSTCgpLCBVUkwpLnVybCgpOwotICAgIHJldHVybiBLVVJMKGJh
c2VVUkwoKSwgVVJMLCBtX2RlY29kZXItPmVuY29kaW5nKCkpLnVybCgpOworICAgICAgICByZXR1
cm4gS1VSTChiYXNlVVJMKCksIHVybCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIEtVUkwoYmFzZVVS
TCgpLCB1cmwsIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKSkuc3RyaW5nKCk7CiB9CiAKLVN0cmluZyBE
b2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nICZVUkwpCitTdHJpbmcgRG9jdW1lbnQ6
OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGFs
d2F5cyByZXR1cm5zIG51bGwgd2hlbiBwYXNzZWQgYSBudWxsIFVSTCwgdW5saWtlIHRoZSBTdHJp
bmcgZnVuY3Rpb24gYWJvdmUuCi0gICAgaWYgKFVSTC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IFVSTDsKLSAgICByZXR1cm4gY29tcGxldGVVUkwoVVJMLmRlcHJlY2F0ZWRTdHJpbmcoKSk7Cisg
ICAgaWYgKHVybC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gY29t
cGxldGVVUkwodXJsLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6Omlu
UGFnZUNhY2hlKCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsMTAgKzM2MSwxMCBAQCBwdWJsaWM6CiAK
ICAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0KIAot
ICAgIERlcHJlY2F0ZWRTdHJpbmcgVVJMKCkgY29uc3QgeyByZXR1cm4gbV91cmwuaXNFbXB0eSgp
ID8gImFib3V0OmJsYW5rIiA6IG1fdXJsOyB9CisgICAgRGVwcmVjYXRlZFN0cmluZyB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybC5pc0VtcHR5KCkgPyAiYWJvdXQ6YmxhbmsiIDogbV91cmw7IH0K
ICAgICB2b2lkIHNldFVSTChjb25zdCBEZXByZWNhdGVkU3RyaW5nJiB1cmwpOwogCi0gICAgRGVw
cmVjYXRlZFN0cmluZyBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMLmlzRW1wdHko
KSA/IFVSTCgpIDogbV9iYXNlVVJMOyB9CisgICAgRGVwcmVjYXRlZFN0cmluZyBiYXNlVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlVVJMLmlzRW1wdHkoKSA/IHVybCgpIDogbV9iYXNlVVJMOyB9
CiAgICAgdm9pZCBzZXRCYXNlVVJMKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIGJhc2VVUkwpOwog
CiAgICAgU3RyaW5nIGJhc2VUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VUYXJnZXQ7IH0K
QEAgLTU3Nyw3ICs1NzcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZEltYWdlTWFwKEhUTUxN
YXBFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVJbWFnZU1hcChIVE1MTWFwRWxlbWVudCopOwot
ICAgIEhUTUxNYXBFbGVtZW50KiBnZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIFVSTCkgY29uc3Q7
CisgICAgSFRNTE1hcEVsZW1lbnQqIGdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dDsKIAogICAgIEhUTUxFbGVtZW50KiBib2R5KCk7CiAgICAgdm9pZCBzZXRCb2R5KFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+LCBFeGNlcHRpb25Db2RlJik7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24g
MjgyNTEpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYz
LDEzICs1NjMsMTMgQEAgU3RyaW5nIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogICAgIEtVUkwg
eG1sYmFzZShnZXRBdHRyaWJ1dGUoYmFzZUF0dHIpLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAKICAg
ICBpZiAoIXhtbGJhc2UucHJvdG9jb2woKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB4bWxi
YXNlLnVybCgpOworICAgICAgICByZXR1cm4geG1sYmFzZS5zdHJpbmcoKTsKIAogICAgIE5vZGUq
IHBhcmVudCA9IHBhcmVudE5vZGUoKTsKICAgICBpZiAocGFyZW50KQotICAgICAgICByZXR1cm4g
S1VSTChwYXJlbnQtPmJhc2VVUkkoKS5kZXByZWNhdGVkU3RyaW5nKCksIHhtbGJhc2UudXJsKCkp
LnVybCgpOworICAgICAgICByZXR1cm4gS1VSTChwYXJlbnQtPmJhc2VVUkkoKS5kZXByZWNhdGVk
U3RyaW5nKCksIHhtbGJhc2Uuc3RyaW5nKCkpLnN0cmluZygpOwogCi0gICAgcmV0dXJuIHhtbGJh
c2UudXJsKCk7CisgICAgcmV0dXJuIHhtbGJhc2Uuc3RyaW5nKCk7CiB9CiAKIE5vZGUqIEVsZW1l
bnQ6Omluc2VydEFkamFjZW50RWxlbWVudChjb25zdCBTdHJpbmcmIHdoZXJlLCBOb2RlKiBuZXdD
aGlsZCwgaW50JiBleGNlcHRpb24pCkluZGV4OiBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxv
Y2FsSHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5bGVTaGVldCog
c2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9CiAgICAgYm9vbCBjaGVja1N0
eWxlU2hlZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIFVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKICNpZiBFTkFCTEUoWFNMVCkK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIFVSTCwgY29u
c3QgU3RyaW5nJiBzaGVldCk7CisgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogI2VuZGlmCiAgICAgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBib29sIGlzTG9hZGluZygpIGNv
bnN0OwpJbmRleDogV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MywxMCArMjkzLDEw
IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTU3RyaW5nUHJvcGVydHkKICAgICBhdHRyLT5k
ZWNsKCktPnNldFN0cmluZ1Byb3BlcnR5KGlkLCB2YWx1ZSwgdHlwZSwgZmFsc2UpOwogfQogCi12
b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBh
dHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmVVJMKQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRD
U1NJbWFnZVByb3BlcnR5KE1hcHBlZEF0dHJpYnV0ZSogYXR0ciwgaW50IGlkLCBjb25zdCBTdHJp
bmcmIHVybCkKIHsKICAgICBpZiAoIWF0dHItPmRlY2woKSkgY3JlYXRlTWFwcGVkRGVjbChhdHRy
KTsKLSAgICBhdHRyLT5kZWNsKCktPnNldEltYWdlUHJvcGVydHkoaWQsIFVSTCwgZmFsc2UpOwor
ICAgIGF0dHItPmRlY2woKS0+c2V0SW1hZ2VQcm9wZXJ0eShpZCwgdXJsLCBmYWxzZSk7CiB9CiAK
IHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3RoKE1hcHBlZEF0dHJpYnV0ZSogYXR0ciwg
aW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQpJbmRleDogV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkocmV2aXNp
b24gMjgyNTEpCisrKyBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoTWFwcGVk
QXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmdmFsdWUpOwogICAgIHZvaWQg
YWRkQ1NTUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGludCB2YWx1ZSk7
CiAgICAgdm9pZCBhZGRDU1NTdHJpbmdQcm9wZXJ0eShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIsIGlu
dCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICB2b2lkIGFkZENTU0ltYWdlUHJv
cGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmVVJMKTsK
KyAgICB2b2lkIGFkZENTU0ltYWdlUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiwgaW50IHByb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGFkZENTU0NvbG9yKE1hcHBlZEF0
dHJpYnV0ZSogYXR0ciwgaW50IGlkLCBjb25zdCBTdHJpbmcgJmMpOwogICAgIHZvaWQgY3JlYXRl
TWFwcGVkRGVjbChNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOwogICAgIApJbmRleDogV2ViQ29yZS9k
b20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6
ZXIuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5k
RWxlbWVudE5zKCkKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBj
aGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9OX05PREUpCiAgICAgICAgICAg
ICAgICAgICAgIHNjcmlwdENvZGUgKz0gc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSo+KGNoaWxk
KS0+ZGF0YSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5s
b2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChtX2RvYy0+VVJMKCksIG1fc2NyaXB0U3RhcnRMaW5lIC0g
MSwgc2NyaXB0Q29kZSk7CisgICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCktPmxvYWRlcigpLT5l
eGVjdXRlU2NyaXB0KG1fZG9jLT51cmwoKSwgbV9zY3JpcHRTdGFydExpbmUgLSAxLCBzY3JpcHRD
b2RlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9yZXF1ZXN0aW5nU2NyaXB0ID0g
ZmFsc2U7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5kKCkKIHsK
ICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKLSAgICAgICAg
bV9kb2MtPnNldFRyYW5zZm9ybVNvdXJjZSh4bWxEb2NQdHJGb3JTdHJpbmcobV9kb2MtPmRvY0xv
YWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLCBtX2RvYy0+VVJMKCkpKTsKKyAg
ICAgICAgbV9kb2MtPnNldFRyYW5zZm9ybVNvdXJjZSh4bWxEb2NQdHJGb3JTdHJpbmcobV9kb2Mt
PmRvY0xvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLCBtX2RvYy0+dXJsKCkp
KTsKICAgICAgICAgCiAgICAgICAgIG1fZG9jLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0
aGUgZG9jIHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSB4c2wgc2hlZXRzLgogICAg
ICAgICBtX2RvYy0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwpAQCAtMTkxNyw3ICsxOTE3LDcgQEAg
dm9pZCBYTUxUb2tlbml6ZXI6OnBhcnNlRW5kRWxlbWVudCgpCiAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkLT5pc1RleHROb2RlKCkgfHwgY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q0RBVEFf
U0VDVElPTl9OT0RFKQogICAgICAgICAgICAgICAgICAgICBzY3JpcHRDb2RlICs9IHN0YXRpY19j
YXN0PENoYXJhY3RlckRhdGEqPihjaGlsZCktPmRhdGEoKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQobV9kb2MtPlVS
TCgpLCBtX3NjcmlwdFN0YXJ0TGluZSAtIDEsIHNjcmlwdENvZGUpOworICAgICAgICAgICAgbV92
aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChtX2RvYy0+dXJsKCksIG1fc2Ny
aXB0U3RhcnRMaW5lIC0gMSwgc2NyaXB0Q29kZSk7CiAgICAgICAgIH0KICAgICAgICAgbV9yZXF1
ZXN0aW5nU2NyaXB0ID0gZmFsc2U7CiAgICAgfQpJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5p
emVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmgJKHJldmlzaW9u
IDI4MjUxKQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3MCw3ICsxNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogI2lmIEVOQUJM
RShYU0xUKQotdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKERvY0xvYWRlciosIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBVUkwpOwordm9pZCogeG1sRG9jUHRy
Rm9yU3RyaW5nKERvY0xvYWRlciosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZXByZWNh
dGVkU3RyaW5nJiB1cmwpOwogdm9pZCBzZXRMb2FkZXJGb3JMaWJYTUxDYWxsYmFja3MoRG9jTG9h
ZGVyKik7CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysg
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDQsNyArMTQ0
NCw3IEBAIHZvaWQgRWRpdG9yOjpjb3B5KCkKICAgICAKICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmIChOb2RlKiBub2RlID0gaW1hZ2VOb2RlRnJv
bUltYWdlRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpLT53cml0ZUltYWdlKG5vZGUsIGRvY3VtZW50LT5VUkwoKSwgZG9jdW1lbnQtPnRp
dGxlKCkpOworICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZUlt
YWdlKG5vZGUsIGRvY3VtZW50LT51cmwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOwogICAgIGVsc2UK
ICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVTZWxlY3Rpb24o
c2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjYW5TbWFydENvcHlPckRlbGV0ZSgpLCBtX2ZyYW1lKTsK
ICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsNyArNTUxLDcgQEAgc3RhdGlj
IHZvaWQgY29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbgogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgQXR0cmlidXRl
KiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgICAgICAgICAgaWYgKGUt
PmlzVVJMQXR0cmlidXRlKGF0dHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb21w
bGV0ZWRVUkwgPSBLVVJMKGJhc2VVUkxBc0tVUkwsIGF0dHItPnZhbHVlKCkuZGVwcmVjYXRlZFN0
cmluZygpKS51cmwoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbXBsZXRlZFVSTCA9
IEtVUkwoYmFzZVVSTEFzS1VSTCwgYXR0ci0+dmFsdWUoKS5kZXByZWNhdGVkU3RyaW5nKCkpLnN0
cmluZygpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFu
Z2UoZSwgYXR0ci0+bmFtZSgpLCBjb21wbGV0ZWRVUkwpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgJKHJldmlzaW9uIDI4MjUxKQorKysg
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
dmlldy5nZXQoKTsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQotICAgIGNvbnN0IEtVUkwmIFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fVVJMOyB9CisgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9V
Ukw7IH0KICAgICB2b2lkIHJlc3RvcmUoUGFnZSopOwogICAgIAogICAgIHZvaWQgY2xvc2UoKTsK
SW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw4IEBA
IEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHUKIH0KIAogSGlzdG9yeUl0
ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKLSAg
ICA6IG1fdXJsU3RyaW5nKHVybC51cmwoKSkKLSAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJs
LnVybCgpKQorICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygpKQorICAgICwgbV9vcmlnaW5h
bFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RpdGxlKHRpdGxlKQogICAgICwgbV9s
YXN0VmlzaXRlZFRpbWUoMCkKICAgICAsIG1faXNJblBhZ2VDYWNoZShmYWxzZSkKQEAgLTg2LDgg
Kzg2LDggQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybAogfQogCiBI
aXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpCi0gICAgOiBt
X3VybFN0cmluZyh1cmwudXJsKCkpCi0gICAgLCBtX29yaWdpbmFsVVJMU3RyaW5nKHVybC51cmwo
KSkKKyAgICA6IG1fdXJsU3RyaW5nKHVybC5zdHJpbmcoKSkKKyAgICAsIG1fb3JpZ2luYWxVUkxT
dHJpbmcodXJsLnN0cmluZygpKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQogICAgICwgbV9wYXJl
bnQocGFyZW50KQogICAgICwgbV90aXRsZSh0aXRsZSkKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lk
IEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyCiB2b2lkIEhpc3RvcnlJdGVtOjpz
ZXRVUkwoY29uc3QgS1VSTCYgdXJsKQogewogICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUodGhpcyk7
Ci0gICAgc2V0VVJMU3RyaW5nKHVybC51cmwoKSk7CisgICAgc2V0VVJMU3RyaW5nKHVybC5zdHJp
bmcoKSk7CiAgICAgY2xlYXJEb2N1bWVudFN0YXRlKCk7CiB9CiAKQEAgLTM4OCw3ICszODgsNyBA
QCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKIGJvb2wgSGlzdG9yeUl0ZW06Omlz
Q3VycmVudERvY3VtZW50KERvY3VtZW50KiBkb2MpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBmaW5kIGEgYmV0dGVyIHdheSB0byBjaGVjayBpZiB0aGlzIGlzIHRoZSBjdXJyZW50
IGRvY3VtZW50LgotICAgIHJldHVybiB1cmxTdHJpbmcoKSA9PSBkb2MtPlVSTCgpOworICAgIHJl
dHVybiB1cmxTdHJpbmcoKSA9PSBkb2MtPnVybCgpOwogfQogCiB2b2lkIEhpc3RvcnlJdGVtOjpt
ZXJnZUF1dG9Db21wbGV0ZUhpbnRzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTEJhc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEJhc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCB2b2lkIEhU
TUxCYXNlRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9o
cmVmLmlzRW1wdHkoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBkb2N1bWVudCgp
LT5zZXRCYXNlVVJMKEtVUkwoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLCBt
X2hyZWYuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNl
dEJhc2VVUkwoS1VSTChkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCksIG1faHJl
Zi5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpKTsKIAogICAgIGlmICghbV90YXJnZXQuaXNF
bXB0eSgpKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRCYXNlVGFyZ2V0KG1fdGFyZ2V0KTsKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTFBhcnNlci5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc4LDcgKzE0NzgsNyBAQCB2b2lkIEhUTUxQ
YXJzZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKEhUCiAgICAgbWVzc2FnZS5yZXBsYWNlKCIldGFn
MSIsIHRhZzEpOwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXRhZzIiLCB0YWcyKTsKIAotICAgIHBh
Z2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEhUTUxNZXNzYWdlU291cmNlLCBpc1dh
cm5pbmcoZXJyb3JDb2RlKSA/IFdhcm5pbmdNZXNzYWdlTGV2ZWw6IEVycm9yTWVzc2FnZUxldmVs
LCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBkb2N1bWVudC0+VVJMKCkpOworICAgIHBhZ2UtPmNocm9t
ZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEhUTUxNZXNzYWdlU291cmNlLCBpc1dhcm5pbmcoZXJy
b3JDb2RlKSA/IFdhcm5pbmdNZXNzYWdlTGV2ZWw6IEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCBsaW5lTnVtYmVyLCBkb2N1bWVudC0+dXJsKCkpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEhU
TUxTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiAgICAgLy8gYW5kIHRoZSBzY3JpcHQg
ZWxlbWVudCBoYXMgYmVlbiBpbnNlcnRlZCBpbiB0aGUgZG9jdW1lbnQKICAgICAvLyB3ZSBldmFs
dWF0ZSB0aGUgc2NyaXB0LgogICAgIGlmICghbV9jcmVhdGVkQnlQYXJzZXIgJiYgaW5Eb2N1bWVu
dCgpICYmIGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZXZhbHVhdGVTY3JpcHQoZG9jdW1lbnQoKS0+
VVJMKCksIHRleHQoKSk7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0KGRvY3VtZW50KCktPnVybCgp
LCB0ZXh0KCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdQogICAgIC8vIGl0IHNob3VsZCBiZSBldmFs
dWF0ZWQsIGFuZCBldmFsdWF0ZVNjcmlwdCBvbmx5IGV2YWx1YXRlcyBhIHNjcmlwdCBvbmNlLgog
ICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSB0ZXh0KCk7ICAgIAogICAgIGlmICghc2NyaXB0U3Ry
aW5nLmlzRW1wdHkoKSkKLSAgICAgICAgZXZhbHVhdGVTY3JpcHQoZG9jdW1lbnQoKS0+VVJMKCks
IHNjcmlwdFN0cmluZyk7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0KGRvY3VtZW50KCktPnVybCgp
LCBzY3JpcHRTdHJpbmcpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpyZW1vdmVkRnJv
bURvY3VtZW50KCkKQEAgLTIzOSw3ICsyMzksNyBAQCBib29sIEhUTUxTY3JpcHRFbGVtZW50Ojpz
aG91bGRFeGVjdXRlQXNKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdEVs
ZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCkKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBpZiAobV9ldmFsdWF0ZWQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpldmFsdWF0ZVNjcmlwdChjCiAgICAgICAgIEtKU1Byb3h5KiBwcm94eSA9IGZyYW1lLT5zY3Jp
cHRQcm94eSgpOwogICAgICAgICBpZiAocHJveHkpIHsKICAgICAgICAgICAgIG1fZXZhbHVhdGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHByb3h5LT5ldmFsdWF0ZShVUkwsIDAsIHNjcmlwdCk7Cisg
ICAgICAgICAgICBwcm94eS0+ZXZhbHVhdGUodXJsLCAwLCBzY3JpcHQpOwogICAgICAgICAgICAg
RG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50c1JlbmRlcmluZygpOwogICAgICAgICB9CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw3IEBA
CiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3Ig
S0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3Jn
KQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3Jn
KQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDQwICsx
OSw0MCBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKgogICovCisKICNpZm5k
ZWYgSFRNTFNjcmlwdEVsZW1lbnRfaAogI2RlZmluZSBIVE1MU2NyaXB0RWxlbWVudF9oCiAKLSNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50Lmgi
CisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDYWNoZWRTY3JpcHQ7CiAKLWNsYXNzIEhUTUxTY3JpcHRFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKLXsKK2NsYXNzIEhUTUxTY3JpcHRF
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQg
ewogcHVibGljOgotICAgIEhUTUxTY3JpcHRFbGVtZW50KERvY3VtZW50ICpkb2MpOworICAgIEhU
TUxTY3JpcHRFbGVtZW50KERvY3VtZW50Kik7CiAgICAgfkhUTUxTY3JpcHRFbGVtZW50KCk7CiAK
ICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkg
Y29uc3QgeyByZXR1cm4gMTsgfQogICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2Rl
KiBuZXdDaGlsZCkgeyByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlICpmaW5pc2hlZE9iaik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlICphdHRy
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29u
c3Q7CiAKICAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29sIGNyZWF0ZWRCeVBhcnNlcikg
eyBtX2NyZWF0ZWRCeVBhcnNlciA9IGNyZWF0ZWRCeVBhcnNlcjsgfQogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hlZFBhcnNpbmcoKTsKIAogICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUFzSmF2YVNjcmlw
dCgpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5nICZVUkwsIGNvbnN0IFN0
cmluZyAmc2NyaXB0KTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVG9r
ZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJ
KHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDUsNyArNTA1LDcgQEAgSFRNTFRva2VuaXplcjo6U3RhdGUgSFRNTFRv
a2VuaXplcjo6c2NyaQogICAgIGlmIChtX2ZyYWdtZW50IHx8ICFtX2RvYy0+ZnJhbWUoKSkKICAg
ICAgICAgcmV0dXJuIHN0YXRlOwogICAgIG1fZXhlY3V0aW5nU2NyaXB0Kys7Ci0gICAgRGVwcmVj
YXRlZFN0cmluZyB1cmwgPSBzY3JpcHRVUkwuaXNOdWxsKCkgPyBtX2RvYy0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+VVJMKCkgOiBzY3JpcHRVUkw7CisgICAgRGVwcmVjYXRlZFN0cmluZyB1cmwgPSBz
Y3JpcHRVUkwuaXNOdWxsKCkgPyBtX2RvYy0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkgOiBz
Y3JpcHRVUkw7CiAKICAgICBTZWdtZW50ZWRTdHJpbmcgKnNhdmVkUHJlcGVuZGluZ1NyYyA9IGN1
cnJlbnRQcmVwZW5kaW5nU3JjOwogICAgIFNlZ21lbnRlZFN0cmluZyBwcmVwZW5kaW5nU3JjOwpJ
bmRleDogV2ViQ29yZS9rc3ZnMi9taXNjL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2tzdmcyL21pc2MvU1ZHSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODI1MSkK
KysrIFdlYkNvcmUva3N2ZzIvbWlzYy9TVkdJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQo
KQogICAgIGlmICghaW1hZ2VFbGVtZW50LT5ocmVmKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgdXJpID0gaW1hZ2VFbGVtZW50LT5iYXNlVVJJKCkuZGVwcmVjYXRlZFN0
cmluZygpOzsKICAgICAgICAgaWYgKCF1cmkuaXNFbXB0eSgpKQotICAgICAgICAgICAgdXJpID0g
S1VSTCh1cmksIGltYWdlRWxlbWVudC0+aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCk7
CisgICAgICAgICAgICB1cmkgPSBLVVJMKHVyaSwgaW1hZ2VFbGVtZW50LT5ocmVmKCkuZGVwcmVj
YXRlZFN0cmluZygpKS5zdHJpbmcoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdXJpID0g
aW1hZ2VFbGVtZW50LT5ocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpOwogICAgICAgICBuZXdJbWFn
ZSA9IGRvYy0+ZG9jTG9hZGVyKCktPnJlcXVlc3RJbWFnZSh1cmkpOwpJbmRleDogV2ViQ29yZS9s
b2FkZXIvQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAko
cmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDIwICs2NiwyMCBAQCBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291
cmNlKENhCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1h
Z2VSZXNvdXJjZToKICAgICAgICAgLy8gVXNlciBhZ2VudCBpbWFnZXMgbmVlZCB0byBudWxsIGNo
ZWNrIHRoZSBkb2Nsb2FkZXIuICBObyBvdGhlciByZXNvdXJjZXMgbmVlZCB0by4KLSAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRJbWFnZShkb2NMb2FkZXIsIHVybC51cmwoKSwgdHJ1ZSAvKiBmb3Ig
Y2FjaGUgKi8pOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZEltYWdlKGRvY0xvYWRlciwgdXJs
LnN0cmluZygpLCB0cnVlIC8qIGZvciBjYWNoZSAqLyk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJj
ZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0
KGRvY0xvYWRlciwgdXJsLnVybCgpLCAqY2hhcnNldCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZFJl
c291cmNlTG9hZENhbGxiYWNrcyk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVT
aGVldChkb2NMb2FkZXIsIHVybC5zdHJpbmcoKSwgKmNoYXJzZXQsIHNraXBDYW5Mb2FkQ2hlY2ss
IHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNj
cmlwdDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTY3JpcHQoZG9jTG9hZGVyLCB1cmwudXJs
KCksICpjaGFyc2V0KTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRTY3JpcHQoZG9jTG9hZGVy
LCB1cmwuc3RyaW5nKCksICpjaGFyc2V0KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250
UmVzb3VyY2U6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udChkb2NMb2FkZXIsIHVybC51
cmwoKSk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkRm9udChkb2NMb2FkZXIsIHVybC5zdHJp
bmcoKSk7CiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5
bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KGRvY0xvYWRl
ciwgdXJsLnVybCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KGRv
Y0xvYWRlciwgdXJsLnN0cmluZygpKTsKICNlbmRpZgogI2lmIEVOQUJMRShYQkwpCiAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6WEJMU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNo
ZWRYQkxEb2N1bWVudChkb2NMb2FkZXIsIHVybC51cmwoKSk7CisgICAgICAgIHJldHVybiBuZXcg
Q2FjaGVkWEJMRG9jdW1lbnQoZG9jTG9hZGVyLCB1cmwuc3RyaW5nKCkpOwogI2VuZGlmCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05Niw3ICs5Niw3IEBAIENhY2hlZFJlc291cmNl
KiBDYWNoZTo6cmVxdWVzdFJlc291cmNlKEQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAg
Ly8gTG9vayB1cCB0aGUgcmVzb3VyY2UgaW4gb3VyIG1hcC4KLSAgICBDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UgPSBtX3Jlc291cmNlcy5nZXQodXJsLnVybCgpKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBtX3Jlc291cmNlcy5nZXQodXJsLnN0cmluZygpKTsKIAogICAgIGlmIChy
ZXNvdXJjZSkgewogICAgICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sgJiYgRnJhbWVMb2FkZXI6
OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpICYmICFGcmFtZUxvYWRlcjo6Y2FuTG9hZCgqcmVzb3Vy
Y2UsIGRvY0xvYWRlci0+ZG9jKCkpKSB7CkBAIC0xMTAsNyArMTEwLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2UqIENhY2hlOjpyZXF1ZXN0UmVzb3VyY2UoRAogICAgICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hl
Y2sgJiYgRnJhbWVMb2FkZXI6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpICYmICFGcmFtZUxvYWRl
cjo6Y2FuTG9hZCh1cmwsIGRvY0xvYWRlci0+ZG9jKCkpKSB7CiAgICAgICAgICAgICBEb2N1bWVu
dCogZG9jID0gZG9jTG9hZGVyLT5kb2MoKTsKICAgICAgICAgICAgIGlmKGRvYykKLSAgICAgICAg
ICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGRvYy0+cGFnZSgpLCB1
cmwudXJsKCkpOworICAgICAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRG
YWlsZWQoZG9jLT5wYWdlKCksIHVybC5zdHJpbmcoKSk7CiAKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICB9CkBAIC0xMjAsNyArMTIwLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpy
ZXF1ZXN0UmVzb3VyY2UoRAogICAgICAgICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICBBU1NF
UlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7CiAgICAgICAgIGlmICghZGlzYWJsZWQoKSkgewotICAg
ICAgICAgICAgbV9yZXNvdXJjZXMuc2V0KHVybC51cmwoKSwgcmVzb3VyY2UpOyAgLy8gVGhlIHNp
emUgd2lsbCBiZSBhZGRlZCBpbiBsYXRlciBvbmNlIHRoZSByZXNvdXJjZSBpcyBsb2FkZWQgYW5k
IGNhbGxzIGJhY2sgdG8gdXMgd2l0aCB0aGUgbmV3IHNpemUuCisgICAgICAgICAgICBtX3Jlc291
cmNlcy5zZXQodXJsLnN0cmluZygpLCByZXNvdXJjZSk7ICAvLyBUaGUgc2l6ZSB3aWxsIGJlIGFk
ZGVkIGluIGxhdGVyIG9uY2UgdGhlIHJlc291cmNlIGlzIGxvYWRlZCBhbmQgY2FsbHMgYmFjayB0
byB1cyB3aXRoIHRoZSBuZXcgc2l6ZS4KICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIG1vdmUgdGhlIHJlc291cmNlIHRvIHRoZSBmcm9udCBvZiBpdHMgTFJVIGxpc3QgYW5k
IGluY3JlYXNlIGl0cyBhY2Nlc3MgY291bnQuCiAgICAgICAgICAgICByZXNvdXJjZUFjY2Vzc2Vk
KHJlc291cmNlKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShy
ZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6Y2hlY2tOb3RpZnkoKQogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2Ns
aWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVudCAqYyA9IHcubmV4dCgpKQot
ICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1fcmVzcG9uc2UudXJsKCkudXJsKCksIG1fZGVj
b2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCksIG1fc2hlZXQpOworICAgICAgICBjLT5zZXRDU1NTdHls
ZVNoZWV0KG1fcmVzcG9uc2UudXJsKCkuc3RyaW5nKCksIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5u
YW1lKCksIG1fc2hlZXQpOwogCiAjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkgICAgICAg
IAogICAgIC8vIGlmIGNoZWNrTm90aWZ5KCkgaXMgY2FsbGVkIGZyb20gZXJyb3IoKSwgY2xpZW50
J3Mgc2V0Q1NTU3R5bGVTaGVldCguLi4pCkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNv
dXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3Bw
CShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgVVJMLCBUeXBl
IHR5cGUsIGJvb2wgZm9yQ2FjaGUsIGJvb2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKLSAg
ICA6IG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lKDApCitDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVz
b3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUgdHlwZSwgYm9vbCBmb3JDYWNoZSwgYm9vbCBz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9sYXN0
RGVjb2RlZEFjY2Vzc1RpbWUoMCkKICAgICAsIG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyhz
ZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKQogICAgICwgbV9pbkNhY2hlKGZvckNhY2hlKQogICAg
ICwgbV9kb2NMb2FkZXIoMCkKIHsKLSAgICBtX3VybCA9IFVSTDsKICAgICBtX3R5cGUgPSB0eXBl
OwogICAgIG1fc3RhdHVzID0gUGVuZGluZzsKICAgICBtX2VuY29kZWRTaXplID0gMDsKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MiwxMCArNjIsMTAgQEAgcHVi
bGljOgogICAgICAgICBVbmtub3duLCAgICAgIC8vIGxldCBjYWNoZSBkZWNpZGUgd2hhdCB0byBk
byB3aXRoIGl0CiAgICAgICAgIE5ldywgICAgICAgICAgLy8gaW5zZXJ0aW5nIG5ldyBpdGVtCiAg
ICAgICAgIFBlbmRpbmcsICAgICAgLy8gb25seSBwYXJ0aWFsbHkgbG9hZGVkCi0gICAgICAgIENh
Y2hlZCAgICAgICAvLyByZWd1bGFyIGNhc2UKKyAgICAgICAgQ2FjaGVkICAgICAgICAvLyByZWd1
bGFyIGNhc2UKICAgICB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBVUkws
IFR5cGUsIGJvb2wgZm9yQ2FjaGUgPSB0cnVlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFj
a3MgPSBmYWxzZSk7CisgICAgQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUs
IGJvb2wgZm9yQ2FjaGUgPSB0cnVlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBm
YWxzZSk7CiAgICAgdmlydHVhbCB+Q2FjaGVkUmVzb3VyY2UoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFNjcmlwdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5o
CShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNs
YXNzIENhY2hlZFNjcmlwdCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBDYWNoZWRTY3JpcHQoRG9jTG9hZGVyKiwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0
IFN0cmluZyYgY2hhcnNldCk7CisgICAgICAgIENhY2hlZFNjcmlwdChEb2NMb2FkZXIqLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KTsKICAgICAgICAgdmlydHVhbCB+
Q2FjaGVkU2NyaXB0KCk7CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdDsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2NMb2FkZXIuY3BwCShyZXZpc2lvbiAyODI1
MSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3
LDE5ICs2NywxOSBAQCB2b2lkIERvY0xvYWRlcjo6Y2hlY2tGb3JSZWxvYWQoY29uc3QgS1VSCiAg
ICAgaWYgKG1fYWxsb3dTdGFsZVJlc291cmNlcykKICAgICAgICAgcmV0dXJuOyAvL0Rvbid0IHJl
bG9hZCByZXNvdXJjZXMgd2hpbGUgcGFzdGluZwogICAgIGlmIChtX2NhY2hlUG9saWN5ID09IENh
Y2hlUG9saWN5VmVyaWZ5KSB7Ci0gICAgICAgaWYgKCFtX3JlbG9hZGVkVVJMcy5jb250YWlucyhm
dWxsVVJMLnVybCgpKSkgewotICAgICAgICAgIENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IGNh
Y2hlKCktPnJlc291cmNlRm9yVVJMKGZ1bGxVUkwudXJsKCkpOworICAgICAgIGlmICghbV9yZWxv
YWRlZFVSTHMuY29udGFpbnMoZnVsbFVSTC5zdHJpbmcoKSkpIHsKKyAgICAgICAgICBDYWNoZWRS
ZXNvdXJjZSogZXhpc3RpbmcgPSBjYWNoZSgpLT5yZXNvdXJjZUZvclVSTChmdWxsVVJMLnN0cmlu
ZygpKTsKICAgICAgICAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3RpbmctPmlzRXhwaXJlZCgpKSB7
CiAgICAgICAgICAgICAgY2FjaGUoKS0+cmVtb3ZlKGV4aXN0aW5nKTsKLSAgICAgICAgICAgICBt
X3JlbG9hZGVkVVJMcy5hZGQoZnVsbFVSTC51cmwoKSk7CisgICAgICAgICAgICAgbV9yZWxvYWRl
ZFVSTHMuYWRkKGZ1bGxVUkwuc3RyaW5nKCkpOwogICAgICAgICAgIH0KICAgICAgICB9CiAgICAg
fSBlbHNlIGlmICgobV9jYWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeVJlbG9hZCkgfHwgKG1fY2Fj
aGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lSZWZyZXNoKSkgewotICAgICAgIGlmICghbV9yZWxvYWRl
ZFVSTHMuY29udGFpbnMoZnVsbFVSTC51cmwoKSkpIHsKLSAgICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogZXhpc3RpbmcgPSBjYWNoZSgpLT5yZXNvdXJjZUZvclVSTChmdWxsVVJMLnVybCgpKTsKKyAg
ICAgICBpZiAoIW1fcmVsb2FkZWRVUkxzLmNvbnRhaW5zKGZ1bGxVUkwuc3RyaW5nKCkpKSB7Cisg
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JV
UkwoZnVsbFVSTC5zdHJpbmcoKSk7CiAgICAgICAgICAgaWYgKGV4aXN0aW5nKQogICAgICAgICAg
ICAgIGNhY2hlKCktPnJlbW92ZShleGlzdGluZyk7Ci0gICAgICAgICAgbV9yZWxvYWRlZFVSTHMu
YWRkKGZ1bGxVUkwudXJsKCkpOworICAgICAgICAgIG1fcmVsb2FkZWRVUkxzLmFkZChmdWxsVVJM
LnN0cmluZygpKTsKICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIENhY2hl
ZFJlc291cmNlKiBEb2NMb2FkZXI6OnJlcXVlc3RSZXNvdXIKICAgICBLVVJMIGZ1bGxVUkwgPSBt
X2RvYy0+Y29tcGxldGVVUkwodXJsLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgCiAgICAgaWYg
KGNhY2hlKCktPmRpc2FibGVkKCkpIHsKLSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJl
c291cmNlKj46Oml0ZXJhdG9yIGl0ID0gbV9kb2NSZXNvdXJjZXMuZmluZChmdWxsVVJMLnVybCgp
KTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGl0
ID0gbV9kb2NSZXNvdXJjZXMuZmluZChmdWxsVVJMLnN0cmluZygpKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChpdCAhPSBtX2RvY1Jlc291cmNlcy5lbmQoKSkgewogICAgICAgICAgICAgaXQtPnNl
Y29uZC0+c2V0RG9jTG9hZGVyKDApOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAko
cmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4OSwxNSArMTg5LDE1IEBAIFJlc291cmNlUmVxdWVzdCYgRG9jdW1l
bnRMb2FkZXI6OmFjdHVhbFIKICAgICByZXR1cm4gbV9yZXF1ZXN0OwogfQogCi1jb25zdCBLVVJM
JiBEb2N1bWVudExvYWRlcjo6VVJMKCkgY29uc3QKK2NvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVy
Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtV
UkwmIFVSTCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9y
U2Nyb2xsKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBtX29yaWdpbmFsUmVxdWVzdENvcHkuc2V0
VVJMKFVSTCk7Ci0gICAgbV9yZXF1ZXN0LnNldFVSTChVUkwpOworICAgIG1fb3JpZ2luYWxSZXF1
ZXN0Q29weS5zZXRVUkwodXJsKTsKKyAgICBtX3JlcXVlc3Quc2V0VVJMKHVybCk7CiB9CiAKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEp
CkBAIC0yMjEsNyArMjIxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdChjb25z
dCBSZQogCiAgICAgLy8gT25seSBzZW5kIHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IGlmIFVSTCBjaGFuZ2VkLgogICAgIC8vIEFsc28s
IGRvbid0IHNlbmQgaXQgd2hlbiByZXBsYWNpbmcgdW5yZWFjaGFibGUgVVJMcyB3aXRoIGFsdGVy
bmF0ZSBjb250ZW50LgotICAgIGlmICghaGFuZGxpbmdVbnJlYWNoYWJsZVVSTCAmJiBvbGRVUkwu
dXJsKCkgIT0gcmVxLnVybCgpLnVybCgpKQorICAgIGlmICghaGFuZGxpbmdVbnJlYWNoYWJsZVVS
TCAmJiBvbGRVUkwuc3RyaW5nKCkgIT0gcmVxLnVybCgpLnN0cmluZygpKQogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSgpOwogfQogCkBAIC02ODgsNyArNjg4LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6c3Rh
cnRMb2FkaW5nTWFpblJlcwogICAgIGlmICghbV9tYWluUmVzb3VyY2VMb2FkZXItPmxvYWQobV9y
ZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKSkgewogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBz
aG91bGQgcmVhbGx5IGJlIGNhdWdodCwgd2Ugc2hvdWxkIGp1c3QgQVNTRVJUIHRoaXMgZG9lc24n
dCBoYXBwZW47CiAgICAgICAgIC8vIHNob3VsZCBpdCBiZSBjYXVnaHQgYnkgb3RoZXIgcGFydHMg
b2YgV2ViS2l0IG9yIG90aGVyIHBhcnRzIG9mIHRoZSBhcHA/Ci0gICAgICAgIExPR19FUlJPUigi
Y291bGQgbm90IGNyZWF0ZSBXZWJSZXNvdXJjZUhhbmRsZSBmb3IgVVJMICVzIC0tIHNob3VsZCBi
ZSBjYXVnaHQgYnkgcG9saWN5IGhhbmRsZXIgbGV2ZWwiLCBtX3JlcXVlc3QudXJsKCkudXJsKCku
YXNjaWkoKSk7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90IGNyZWF0ZSBXZWJSZXNvdXJj
ZUhhbmRsZSBmb3IgVVJMICVzIC0tIHNob3VsZCBiZSBjYXVnaHQgYnkgcG9saWN5IGhhbmRsZXIg
bGV2ZWwiLCBtX3JlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKSk7CiAgICAgICAgIG1fbWFp
blJlc291cmNlTG9hZGVyID0gMDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0
ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKLSAgICAgICAgY29u
c3QgS1VSTCYgVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0Owog
ICAgICAgICBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCiAgICAgICAgIEtV
Ukwgb3JpZ2luYWxVUkwoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDI4MjUxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgY29uc3QgdW5zaWduZWQgaW50IGNNYXhQZW5kaW5nU291
cmNlTGVuZwogCiBzdHJ1Y3QgRm9ybVN1Ym1pc3Npb24gewogICAgIGNvbnN0IGNoYXIqIGFjdGlv
bjsKLSAgICBTdHJpbmcgVVJMOworICAgIFN0cmluZyB1cmw7CiAgICAgUmVmUHRyPEZvcm1EYXRh
PiBkYXRhOwogICAgIFN0cmluZyB0YXJnZXQ7CiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwpAQCAt
MTIzLDcgKzEyMyw3IEBAIHN0cnVjdCBGb3JtU3VibWlzc2lvbiB7CiAgICAgRm9ybVN1Ym1pc3Np
b24oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiB1LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBk
LCBjb25zdCBTdHJpbmcmIHQsCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGN0LCBjb25zdCBT
dHJpbmcmIGIsIFBhc3NSZWZQdHI8RXZlbnQ+IGUpCiAgICAgICAgIDogYWN0aW9uKGEpCi0gICAg
ICAgICwgVVJMKHUpCisgICAgICAgICwgdXJsKHUpCiAgICAgICAgICwgZGF0YShkKQogICAgICAg
ICAsIHRhcmdldCh0KQogICAgICAgICAsIGNvbnRlbnRUeXBlKGN0KQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlvbiB7CiAgICAgZW51bSBUeXBlIHsgcmVkaXJl
Y3Rpb24sIGxvY2F0aW9uQ2hhbmdlLCBoaXN0b3J5TmF2aWdhdGlvbiwgbG9jYXRpb25DaGFuZ2VE
dXJpbmdMb2FkIH07CiAgICAgVHlwZSB0eXBlOwogICAgIGRvdWJsZSBkZWxheTsKLSAgICBTdHJp
bmcgVVJMOworICAgIFN0cmluZyB1cmw7CiAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgIGludCBo
aXN0b3J5U3RlcHM7CiAgICAgYm9vbCBsb2NrSGlzdG9yeTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBz
dHJ1Y3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24gewogICAgIFNjaGVkdWxlZFJlZGlyZWN0aW9uKGRv
dWJsZSByZWRpcmVjdERlbGF5LCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0VVJMLCBib29sIHJlZGly
ZWN0TG9ja0hpc3RvcnksIGJvb2wgdXNlckdlc3R1cmUpCiAgICAgICAgIDogdHlwZShyZWRpcmVj
dGlvbikKICAgICAgICAgLCBkZWxheShyZWRpcmVjdERlbGF5KQotICAgICAgICAsIFVSTChyZWRp
cmVjdFVSTCkKKyAgICAgICAgLCB1cmwocmVkaXJlY3RVUkwpCiAgICAgICAgICwgaGlzdG9yeVN0
ZXBzKDApCiAgICAgICAgICwgbG9ja0hpc3RvcnkocmVkaXJlY3RMb2NrSGlzdG9yeSkKICAgICAg
ICAgLCB3YXNVc2VyR2VzdHVyZSh1c2VyR2VzdHVyZSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdHJ1
Y3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24gewogICAgICAgICAgICAgYm9vbCBsb2NhdGlvbkNoYW5n
ZUxvY2tIaXN0b3J5LCBib29sIGxvY2F0aW9uQ2hhbmdlV2FzVXNlckdlc3R1cmUpCiAgICAgICAg
IDogdHlwZShsb2NhdGlvbkNoYW5nZVR5cGUpCiAgICAgICAgICwgZGVsYXkoMCkKLSAgICAgICAg
LCBVUkwobG9jYXRpb25DaGFuZ2VVUkwpCisgICAgICAgICwgdXJsKGxvY2F0aW9uQ2hhbmdlVVJM
KQogICAgICAgICAsIHJlZmVycmVyKGxvY2F0aW9uQ2hhbmdlUmVmZXJyZXIpCiAgICAgICAgICwg
aGlzdG9yeVN0ZXBzKDApCiAgICAgICAgICwgbG9ja0hpc3RvcnkobG9jYXRpb25DaGFuZ2VMb2Nr
SGlzdG9yeSkKQEAgLTM2MywxNSArMzYzLDE1IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QKICAgICByZXR1cm4gbV9jbGllbnQtPmNhbkhhbmRsZVJlcXVlc3QocmVx
dWVzdCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgVVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIHVz
ZXJHZXN0dXJlKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgdXNl
ckdlc3R1cmUpCiB7Ci0gICAgY2hhbmdlTG9jYXRpb24oY29tcGxldGVVUkwoVVJMKSwgcmVmZXJy
ZXIsIGxvY2tIaXN0b3J5LCB1c2VyR2VzdHVyZSk7CisgICAgY2hhbmdlTG9jYXRpb24oY29tcGxl
dGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCB1c2VyR2VzdHVyZSk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSkKK3ZvaWQg
RnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSkKIHsKLSAgICBp
ZiAoVVJMLnVybCgpLmZpbmQoImphdmFzY3JpcHQ6IiwgMCwgZmFsc2UpID09IDApIHsKLSAgICAg
ICAgU3RyaW5nIHNjcmlwdCA9IEtVUkw6OmRlY29kZV9zdHJpbmcoVVJMLnVybCgpLm1pZChzdHJs
ZW4oImphdmFzY3JpcHQ6IikpKTsKKyAgICBpZiAodXJsLnN0cmluZygpLmZpbmQoImphdmFzY3Jp
cHQ6IiwgMCwgZmFsc2UpID09IDApIHsKKyAgICAgICAgU3RyaW5nIHNjcmlwdCA9IEtVUkw6OmRl
Y29kZV9zdHJpbmcodXJsLnN0cmluZygpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKTsKICAg
ICAgICAgSlNWYWx1ZSogcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHVzZXJHZXN0dXJl
KTsKICAgICAgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKICAgICAgICAgaWYgKGdldFN0cmluZyhy
ZXN1bHQsIHNjcmlwdFJlc3VsdCkpIHsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBLCiAKICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kgPSAobV9jYWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeVJlbG9hZCkgfHwgKG1f
Y2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lSZWZyZXNoKQogICAgICAgICA/IFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKLSAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChVUkwsIHJlZmVycmVyLCBwb2xpY3kpOworICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCwgcmVmZXJyZXIsIHBvbGljeSk7CiAgICAgCiAgICAgdXJsU2VsZWN0ZWQocmVx
dWVzdCwgIl9zZWxmIiwgMCwgbG9ja0hpc3RvcnksIHVzZXJHZXN0dXJlKTsKIH0KQEAgLTM5Niw4
ICszOTYsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvCiAgICAg
ICAgIHRhcmdldCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VUYXJnZXQoKTsKIAogICAgIGNv
bnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7Ci0gICAgaWYgKHVybC51cmwoKS5zdGFydHNX
aXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSkgewotICAgICAgICBleGVjdXRlU2NyaXB0KEtVUkw6
OmRlY29kZV9zdHJpbmcodXJsLnVybCgpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSwgdHJ1
ZSk7CisgICAgaWYgKHVybC5zdHJpbmcoKS5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNl
KSkgeworICAgICAgICBleGVjdXRlU2NyaXB0KEtVUkw6OmRlY29kZV9zdHJpbmcodXJsLnN0cmlu
ZygpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJh
bWUoSFRNTEZyYW1lCiAKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVsZW1lbnQtPmNvbnRlbnRG
cmFtZSgpOwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKHVybC51cmwoKSwgbV9vdXRnb2luZ1JlZmVycmVyLCB0cnVlLCB1c2Vy
R2VzdHVyZUhpbnQoKSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlv
bkNoYW5nZSh1cmwuc3RyaW5nKCksIG1fb3V0Z29pbmdSZWZlcnJlciwgdHJ1ZSwgdXNlckdlc3R1
cmVIaW50KCkpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUgPSBsb2FkU3ViZnJhbWUob3duZXJF
bGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVyKTsKICAgICAKQEAgLTQ1
Niw3ICs0NTYsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhCiAg
ICAgfQogCiAgICAgaWYgKCFjYW5Mb2FkKHVybCwgcmVmZXJyZXIpKSB7Ci0gICAgICAgIEZyYW1l
TG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwudXJsKCkp
OworICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUtPnBh
Z2UoKSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC00OTYs
NyArNDk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybUFnYWluKCkKICAgICAgICAg
cmV0dXJuOwogICAgIE93blB0cjxGb3JtU3VibWlzc2lvbj4gZm9ybShtX2RlZmVycmVkRm9ybVN1
Ym1pc3Npb24ucmVsZWFzZSgpKTsKICAgICBpZiAoZm9ybSkKLSAgICAgICAgc3VibWl0Rm9ybShm
b3JtLT5hY3Rpb24sIGZvcm0tPlVSTCwgZm9ybS0+ZGF0YSwgZm9ybS0+dGFyZ2V0LAorICAgICAg
ICBzdWJtaXRGb3JtKGZvcm0tPmFjdGlvbiwgZm9ybS0+dXJsLCBmb3JtLT5kYXRhLCBmb3JtLT50
YXJnZXQsCiAgICAgICAgICAgICBmb3JtLT5jb250ZW50VHlwZSwgZm9ybS0+Ym91bmRhcnksIGZv
cm0tPmV2ZW50LmdldCgpKTsKIH0KIApAQCAtNTExLDcgKzUxMSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhcioKICAgICBpZiAodS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsU3RyaW5nID0gdS51cmwoKTsKKyAg
ICBEZXByZWNhdGVkU3RyaW5nIHVybFN0cmluZyA9IHUuc3RyaW5nKCk7CiAgICAgaWYgKHVybFN0
cmluZy5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSkgewogICAgICAgICBtX2lzRXhl
Y3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwogICAgICAgICBleGVjdXRlU2NyaXB0
KEtVUkw6OmRlY29kZV9zdHJpbmcodXJsU3RyaW5nLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6Iikp
KSk7CkBAIC03MjcsMTMgKzcyNywxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRFeHBsaWNpdE9w
ZW4oKQogICAgIC8vIENhbmNlbGxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3b3JrcyBmb3IgYWxsIGNh
c2VzIGJlY2F1c2UgZG9jdW1lbnQub3BlbiAKICAgICAvLyBpbXBsaWNpdGx5IHByZWNlZGVzIGRv
Y3VtZW50LndyaXRlLgogICAgIGNhbmNlbFJlZGlyZWN0aW9uKCk7IAotICAgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpLT5VUkwoKSAhPSAiYWJvdXQ6YmxhbmsiKQotICAgICAgICBtX1VSTCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPlVSTCgpOworICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKSAhPSAiYWJvdXQ6YmxhbmsiKQorICAgICAgICBtX1VSTCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZXBsYWNlQ29udGVudHNXaXRoU2Ny
aXB0UmVzdWx0KGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBKU1ZhbHVlKiByZXN1bHQgPSBleGVj
dXRlU2NyaXB0KEtVUkw6OmRlY29kZV9zdHJpbmcodXJsLnVybCgpLm1pZChzdHJsZW4oImphdmFz
Y3JpcHQ6IikpKSk7CisgICAgSlNWYWx1ZSogcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChLVVJMOjpk
ZWNvZGVfc3RyaW5nKHVybC5zdHJpbmcoKS5taWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSkpOwog
ICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7CiAgICAgaWYgKCFnZXRTdHJpbmcocmVzdWx0LCBzY3Jp
cHRSZXN1bHQpKQogICAgICAgICByZXR1cm47CkBAIC03NDQsMTAgKzc0NCwxMCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpyZXBsYWNlQ29udGVudHNXaXRoU2NyCiAKIEpTVmFsdWUqIEZyYW1lTG9hZGVy
OjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1
cmUpCiB7Ci0gICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoZm9yY2VVc2VyR2VzdHVyZSA/IFN0cmlu
ZygpIDogU3RyaW5nKG1fVVJMLnVybCgpKSwgMCwgc2NyaXB0KTsKKyAgICByZXR1cm4gZXhlY3V0
ZVNjcmlwdChmb3JjZVVzZXJHZXN0dXJlID8gU3RyaW5nKCkgOiBTdHJpbmcobV9VUkwuc3RyaW5n
KCkpLCAwLCBzY3JpcHQpOwogfQogCi1KU1ZhbHVlKiBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIFVSTCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkK
K0pTVmFsdWUqIEZyYW1lTG9hZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewogICAgIEtKU1Byb3h5KiBwcm94
eSA9IG1fZnJhbWUtPnNjcmlwdFByb3h5KCk7CiAgICAgaWYgKCFwcm94eSkKQEAgLTc1Niw3ICs3
NTYsNyBAQCBKU1ZhbHVlKiBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlwdChjb25zCiAgICAgYm9v
bCB3YXNSdW5uaW5nU2NyaXB0ID0gbV9pc1J1bm5pbmdTY3JpcHQ7CiAgICAgbV9pc1J1bm5pbmdT
Y3JpcHQgPSB0cnVlOwogCi0gICAgSlNWYWx1ZSogcmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKFVS
TCwgYmFzZUxpbmUsIHNjcmlwdCk7CisgICAgSlNWYWx1ZSogcmVzdWx0ID0gcHJveHktPmV2YWx1
YXRlKHVybCwgYmFzZUxpbmUsIHNjcmlwdCk7CiAKICAgICBpZiAoIXdhc1J1bm5pbmdTY3JpcHQp
IHsKICAgICAgICAgbV9pc1J1bm5pbmdTY3JpcHQgPSBmYWxzZTsKQEAgLTg0NywxOCArODQ3LDE4
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBtX3dvcmtpbmdV
UkwgPSBLVVJMKCk7CiAKICAgICBkb3VibGUgZGVsYXk7Ci0gICAgU3RyaW5nIFVSTDsKKyAgICBT
dHJpbmcgdXJsOwogICAgIGlmICghbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwot
ICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaChtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0
dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBmYWxzZSwgZGVsYXksIFVSTCkpCisgICAgaWYgKCFw
YXJzZUhUVFBSZWZyZXNoKG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZp
ZWxkKCJSZWZyZXNoIiksIGZhbHNlLCBkZWxheSwgdXJsKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFVSTCA9IG1fVVJMLnVybCgpOworICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQorICAgICAgICB1cmwgPSBtX1VSTC5zdHJpbmcoKTsKICAgICBlbHNl
Ci0gICAgICAgIFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKFVSTCk7Cisg
ICAgICAgIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CiAKLSAg
ICBzY2hlZHVsZUhUVFBSZWRpcmVjdGlvbihkZWxheSwgVVJMKTsKKyAgICBzY2hlZHVsZUhUVFBS
ZWRpcmVjdGlvbihkZWxheSwgdXJsKTsKIH0KIAogY29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlcjo6
cmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0CkBAIC04OTMsNyArODkzLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsLAogICAgIHJlZi5zZXRVc2VyKERlcHJlY2F0ZWRT
dHJpbmcoKSk7CiAgICAgcmVmLnNldFBhc3MoRGVwcmVjYXRlZFN0cmluZygpKTsKICAgICByZWYu
c2V0UmVmKERlcHJlY2F0ZWRTdHJpbmcoKSk7Ci0gICAgbV9vdXRnb2luZ1JlZmVycmVyID0gcmVm
LnVybCgpOworICAgIG1fb3V0Z29pbmdSZWZlcnJlciA9IHJlZi5zdHJpbmcoKTsKICAgICBtX1VS
TCA9IHVybDsKICAgICBLVVJMIGJhc2V1cmw7CiAKQEAgLTkwMywxMCArOTAzLDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybCwKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246Omluc3RhbmNlKCktPmNyZWF0ZURvY3VtZW50
KG1fcmVzcG9uc2VNSU1FVHlwZSwgbV9mcmFtZSwgbV9mcmFtZS0+aW5WaWV3U291cmNlTW9kZSgp
KTsKICAgICBtX2ZyYW1lLT5zZXREb2N1bWVudChkb2N1bWVudCk7CiAKLSAgICBkb2N1bWVudC0+
c2V0VVJMKG1fVVJMLnVybCgpKTsKKyAgICBkb2N1bWVudC0+c2V0VVJMKG1fVVJMLnN0cmluZygp
KTsKICAgICAvLyBXZSBwcmVmZXIgbV9iYXNlVVJMIG92ZXIgbV9VUkwgYmVjYXVzZSBtX1VSTCBj
aGFuZ2VzIHdoZW4gd2UgYXJlCiAgICAgLy8gYWJvdXQgdG8gbG9hZCBhIG5ldyBwYWdlLgotICAg
IGRvY3VtZW50LT5zZXRCYXNlVVJMKGJhc2V1cmwudXJsKCkpOworICAgIGRvY3VtZW50LT5zZXRC
YXNlVVJMKGJhc2V1cmwuc3RyaW5nKCkpOwogICAgIGlmIChtX2RlY29kZXIpCiAgICAgICAgIGRv
Y3VtZW50LT5zZXREZWNvZGVyKG1fZGVjb2Rlci5nZXQoKSk7CiAKQEAgLTEwNjEsNyArMTA2MSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0SWNvbkxvYWRlcigpCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBLVVJMIHVybChpY29uVVJMKCkpOwotICAgIFN0cmluZyB1cmxTdHJpbmcodXJs
LnVybCgpKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKHVy
bFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA3OSw4ICsxMDc5LDgg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRJY29uTG9hZGVyKCkKICAgICAgICAgICAgIGlmICgh
aWNvbkRhdGFiYXNlKCktPmljb25EYXRhS25vd25Gb3JJY29uVVJMKHVybFN0cmluZykpIHsKICAg
ICAgICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiVG9sZCBub3QgdG8gbG9hZCBpY29uICVz
IGJ1dCBpY29uIGRhdGEgaXMgbm90IHlldCBhdmFpbGFibGUgLSByZWdpc3RlcmluZyBmb3Igbm90
aWZpY2F0aW9uIGFuZCByZXF1ZXN0aW5nIGxvYWQgZnJvbSBkaXNrIiwgdXJsU3RyaW5nLmFzY2lp
KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+cmVnaXN0ZXJGb3JJY29uTm90
aWZpY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWNvbkRhdGFiYXNlKCktPmljb25Gb3JQYWdl
VVJMKG1fVVJMLnVybCgpLCBJbnRTaXplKDAsIDApKTsKLSAgICAgICAgICAgICAgICBpY29uRGF0
YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwob3JpZ2luYWxSZXF1ZXN0VVJMKCkudXJsKCksIEludFNp
emUoMCwgMCkpOworICAgICAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVS
TChtX1VSTC5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CisgICAgICAgICAgICAgICAgaWNvbkRh
dGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygpLCBJ
bnRTaXplKDAsIDApKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1fY2xp
ZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgICAgICAgICAgCkBAIC0xMTMy
LDkgKzExMzIsOSBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIENhc2VJbnNlbnNpdGl2ZUhhCiB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoY29uc3QgS1VSTCYg
aWNvbikKIHsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKCkpOwotICAgIExPRyhJY29uRGF0YWJh
c2UsICJDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkxzICVzIGFu
ZCAlcyIsIGljb24udXJsKCkuYXNjaWkoKSwgbV9VUkwudXJsKCkuYXNjaWkoKSwgb3JpZ2luYWxS
ZXF1ZXN0VVJMKCkudXJsKCkuYXNjaWkoKSk7Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25V
UkxGb3JQYWdlVVJMKGljb24udXJsKCksIG1fVVJMLnVybCgpKTsKLSAgICBpY29uRGF0YWJhc2Uo
KS0+c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCku
dXJsKCkpOworICAgIExPRyhJY29uRGF0YWJhc2UsICJDb21taXR0aW5nIGljb25VUkwgJXMgdG8g
ZGF0YWJhc2UgZm9yIHBhZ2VVUkxzICVzIGFuZCAlcyIsIGljb24uc3RyaW5nKCkuYXNjaWkoKSwg
bV9VUkwuc3RyaW5nKCkuYXNjaWkoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCkuYXNj
aWkoKSk7CisgICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3Ry
aW5nKCksIG1fVVJMLnN0cmluZygpKTsKKyAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvblVSTEZv
clBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCkpOwog
fQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCkBAIC0xMzc0LDcg
KzEzNzQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzY2hlZHVsZVJlZnJlc2goYm9vbCB3CiAKICAg
ICBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6VHlwZSB0eXBlID0gZHVyaW5nTG9hZAogICAgICAgICA/
IFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNoYW5nZUR1cmluZ0xvYWQgOiBTY2hlZHVs
ZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFuZ2U7Ci0gICAgc2NoZWR1bGVSZWRpcmVjdGlvbihu
ZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24odHlwZSwgbV9VUkwudXJsKCksIG1fb3V0Z29pbmdSZWZl
cnJlciwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUpKTsKKyAgICBzY2hlZHVsZVJlZGlyZWN0aW9uKG5l
dyBTY2hlZHVsZWRSZWRpcmVjdGlvbih0eXBlLCBtX1VSTC5zdHJpbmcoKSwgbV9vdXRnb2luZ1Jl
ZmVycmVyLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSkpOwogICAgIG1fY2FjaGVQb2xpY3kgPSBDYWNo
ZVBvbGljeVJlZnJlc2g7CiB9CiAKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlZGlyZWN0aW9uVGltZXJGaXJlZCgKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVj
dGlvbjo6cmVkaXJlY3Rpb246CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246Omxv
Y2F0aW9uQ2hhbmdlOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlv
bkNoYW5nZUR1cmluZ0xvYWQ6Ci0gICAgICAgICAgICBjaGFuZ2VMb2NhdGlvbihyZWRpcmVjdGlv
bi0+VVJMLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIsCisgICAgICAgICAgICBjaGFuZ2VMb2NhdGlv
bihyZWRpcmVjdGlvbi0+dXJsLCByZWRpcmVjdGlvbi0+cmVmZXJyZXIsCiAgICAgICAgICAgICAg
ICAgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+d2FzVXNlckdlc3R1cmUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9u
OjpoaXN0b3J5TmF2aWdhdGlvbjoKQEAgLTE1OTksNyArMTU5OSw3IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OmxvYWRQbHVnaW4oUmVuZGVyUGFydCoKICAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSk7CiAKICAgICAgICAgaWYgKCFj
YW5Mb2FkKHVybCwgZnJhbWUoKS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwudXJsKCkpOwor
ICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5w
YWdlKCksIHVybC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KIApAQCAtMTcwNSw5ICsxNzA1LDkgQEAgYm9vbCBGcmFtZUxvYWRlcjo6dXNlckdlc3R1cmVI
aW50KCkKICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgSmF2YVNjcmlwdCBpcyBkaXNhYmxlZCwgYSB1
c2VyIGdlc3R1cmUgbXVzdCBoYXZlIGluaXRpYXRlZCB0aGUgbmF2aWdhdGlvbgogfQogCi12b2lk
IEZyYW1lTG9hZGVyOjpkaWROb3RPcGVuVVJMKGNvbnN0IEtVUkwmIFVSTCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OmRpZE5vdE9wZW5VUkwoY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChtX3N1Ym1p
dHRlZEZvcm1VUkwgPT0gVVJMKQorICAgIGlmIChtX3N1Ym1pdHRlZEZvcm1VUkwgPT0gdXJsKQog
ICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBLVVJMKCk7CiB9CiAKQEAgLTE3NzUsNyArMTc3
NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVBvbGljeUJhc2VVUkwoKQogICAgIGlmICht
X2ZyYW1lLT50cmVlKCktPnBhcmVudCgpICYmIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCktPmRv
Y3VtZW50KCkpCiAgICAgICAgIHNldFBvbGljeUJhc2VVUkwobV9mcmFtZS0+dHJlZSgpLT5wYXJl
bnQoKS0+ZG9jdW1lbnQoKS0+cG9saWN5QmFzZVVSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIHNl
dFBvbGljeUJhc2VVUkwobV9VUkwudXJsKCkpOworICAgICAgICBzZXRQb2xpY3lCYXNlVVJMKG1f
VVJMLnN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0UG9saWN5QmFzZVVSTChj
b25zdCBTdHJpbmcmIHMpCkBAIC0xNzg4LDkgKzE3ODgsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRQb2xpY3lCYXNlVVJMKGNvbnN0CiAKIC8vIFRoaXMgZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdv
cmsgdGhhdCBGcmFtZUxvYWRlcjo6b3BlblVSTCBkb2VzLCBleGNlcHQgaXQgcmVsaWVzIG9uIHRo
ZSBmYWN0CiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBV
UkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0aGluZyB0byBkby4KLXZv
aWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IEtVUkwmIFVSTCkKK3ZvaWQgRnJh
bWVMb2FkZXI6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBtX1VSTCA9
IFVSTDsKKyAgICBtX1VSTCA9IHVybDsKICAgICBzdGFydGVkKCk7CiAKICAgICBnb3RvQW5jaG9y
KCk7CkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdGFydFJlZGlyZWN0
aW9uVGltZXIoCiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9u
OgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNoYW5nZToKICAg
ICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFuZ2VEdXJpbmdMb2Fk
OgotICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RlZChtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5V
UkwuZGVwcmVjYXRlZFN0cmluZygpLAorICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RlZChtX3Nj
aGVkdWxlZFJlZGlyZWN0aW9uLT51cmwuZGVwcmVjYXRlZFN0cmluZygpLAogICAgICAgICAgICAg
ICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmRlbGF5LAogICAgICAgICAgICAgICAgIGN1cnJl
bnRUaW1lKCkgKyBtX3JlZGlyZWN0aW9uVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpLAogICAgICAg
ICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LApAQCAtMTkwOCw5
ICsxOTA4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZmluYWxTZXR1cEZvclJlcGxhY2UoRAogICAg
IG1fY2xpZW50LT5jbGVhclVuYXJjaGl2aW5nU3RhdGUobG9hZGVyKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiBVUkwsIEV2ZW50KiBldmVudCkKK3ZvaWQgRnJhbWVM
b2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBFdmVudCogZXZlbnQpCiB7Ci0gICAgbG9hZChS
ZXNvdXJjZVJlcXVlc3QoVVJMKSwgZmFsc2UsIHRydWUsIGV2ZW50LCAwLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPigpKTsKKyAgICBsb2FkKFJlc291cmNlUmVxdWVzdCh1cmwpLCBmYWxzZSwgdHJ1
ZSwgZXZlbnQsIDAsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCkpOwogfQogCiB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgdXNlckdlc3R1cmUsIEV2ZW50KiBldmVudCwKQEAgLTE5MjYsOSArMTkyNiw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmUKICAgICAgICAgcmVm
ZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAgCiAgICAgQVNTRVJUKGZyYW1lKCktPmRvY3Vt
ZW50KCkpOwotICAgIGlmICh1cmwudXJsKCkuc3RhcnRzV2l0aCgiZmlsZToiLCBmYWxzZSkpIHsK
KyAgICBpZiAodXJsLnN0cmluZygpLnN0YXJ0c1dpdGgoImZpbGU6IiwgZmFsc2UpKSB7CiAgICAg
ICAgIGlmICghY2FuTG9hZCh1cmwsIGZyYW1lKCktPmRvY3VtZW50KCkpICYmICFjYW5Mb2FkKHVy
bCwgcmVmZXJyZXIpKSB7Ci0gICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2Fk
RmFpbGVkKG1fZnJhbWUtPnBhZ2UoKSwgdXJsLnVybCgpKTsKKyAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwuc3RyaW5nKCkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTk2NCwxMiArMTk2
NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlCiAgICAgICAg
ICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIEZyYW1lTG9hZFR5cGUg
bmV3TG9hZFR5cGUsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIG5ld1VSTCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKICAgICBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlKQogewogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZvcm1TdGF0ZTsK
ICAgICAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChVUkwpOworICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICBhZGRFeHRyYUZpZWxk
c1RvUmVxdWVzdChyZXF1ZXN0LCB0cnVlLCBldmVudCB8fCBpc0Zvcm1TdWJtaXNzaW9uKTsKQEAg
LTE5NzgsMTEgKzE5NzgsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiBV
UkwsIAogCiAgICAgQVNTRVJUKG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVTYW1lKTsKIAot
ICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKFVSTCwgbmV3TG9hZFR5cGUsIGlzRm9ybVN1Ym1p
c3Npb24sIGV2ZW50KTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihuZXdVUkwsIG5ld0xv
YWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCk7CiAKICAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFtZSA9IG1fZnJhbWUtPnRy
ZWUoKS0+ZmluZChmcmFtZU5hbWUpKQotICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigp
LT5sb2FkKFVSTCwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBTdHJpbmcoKSwgZXZlbnQsIGZvcm1T
dGF0ZSk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCktPmxvYWQobmV3VVJMLCBy
ZWZlcnJlciwgbmV3TG9hZFR5cGUsIFN0cmluZygpLCBldmVudCwgZm9ybVN0YXRlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgY2hlY2tOZXdXaW5kb3dQb2xpY3koYWN0aW9uLCByZXF1ZXN0
LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE5OTAsNyArMTk5
MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgVVJMLCAKIAogICAgIFJl
ZlB0cjxEb2N1bWVudExvYWRlcj4gb2xkRG9jdW1lbnRMb2FkZXIgPSBtX2RvY3VtZW50TG9hZGVy
OwogCi0gICAgYm9vbCBzYW1lVVJMID0gc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoVVJM
KTsKKyAgICBib29sIHNhbWVVUkwgPSBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChuZXdV
UkwpOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0byBkbyBzY3JvbGwgdG8gYW5jaG9yIHByb2Nl
c3NpbmcgZXZlbiBpZiB0aGUgVVJMIGlzCiAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBzbyBwYWdl
cyB3aXRoICcjJyBsaW5rcyBhbmQgREhUTUwgc2lkZSBlZmZlY3RzCkBAIC0xOTk4LDcgKzE5OTgs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIFVSTCwgCiAgICAgaWYgKCFp
c0Zvcm1TdWJtaXNzaW9uCiAgICAgICAgICYmIG5ld0xvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVS
ZWxvYWQKICAgICAgICAgJiYgbmV3TG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZVNhbWUKLSAgICAg
ICAgJiYgIXNob3VsZFJlbG9hZChVUkwsIHVybCgpKQorICAgICAgICAmJiAhc2hvdWxkUmVsb2Fk
KG5ld1VSTCwgdXJsKCkpCiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8ganVzdCBzY3JvbGwg
aWYgYSBsaW5rIGZyb20gd2l0aGluIGEKICAgICAgICAgLy8gZnJhbWVzZXQgaXMgdHJ5aW5nIHRv
IHJlbG9hZCB0aGUgZnJhbWVzZXQgaW50byBfdG9wLgogICAgICAgICAmJiAhbV9mcmFtZS0+aXNG
cmFtZVNldCgpKSB7CkBAIC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KERvY3VtZW50TG9hZGVyKiBsCiAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3Vs
ZCBjb2xsYXBzZSB0aGVzZSBpbnRvIG9uZSBvciB0d28gZnVuY3Rpb25zLgogYm9vbCBGcmFtZUxv
YWRlcjo6Y2FuTG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7
Ci0gICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzTG9jYWwodXJsLnVybCgpKSkKKyAgICBpZiAoIXNo
b3VsZFRyZWF0VVJMQXNMb2NhbCh1cmwuc3RyaW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBzaG91bGRUcmVhdFVSTEFzTG9jYWwocmVmZXJyZXIpOwpAQCAtMjEzMSw3
ICsyMTMxLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuTG9hZChjb25zdCBLVVJMJiB1cgogCiBi
b29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgRG9jdW1lbnQq
IGRvYykKIHsKLSAgICBpZiAoIXNob3VsZFRyZWF0VVJMQXNMb2NhbCh1cmwudXJsKCkpKQorICAg
IGlmICghc2hvdWxkVHJlYXRVUkxBc0xvY2FsKHVybC5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGRvYyAmJiBkb2MtPmlzQWxsb3dlZFRvTG9hZExvY2FsUmVz
b3VyY2VzKCk7CkBAIC0yMTYzLDcgKzIxNjMsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRI
aWRlUmVmZXJyZXIoY29uCiAgICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnVybCgpLnN0YXJ0
c1dpdGgoImh0dHBzOiIsIGZhbHNlKTsKKyAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnN0
cmluZygpLnN0YXJ0c1dpdGgoImh0dHBzOiIsIGZhbHNlKTsKIAogICAgIHJldHVybiAhVVJMSXNT
ZWN1cmVVUkw7CiB9CkBAIC0yMzM5LDcgKzIzMzksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91
bGRBbGxvd05hdmlnYXRpb24oCiAgICAgICAgIERvY3VtZW50KiB0YXJnZXREb2N1bWVudCA9IHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAvLyBGSVhNRTogdGhpcyBlcnJvciBtZXNz
YWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdoeSB0aGUgbmF2aWdhdGlvbiBj
aGFuZ2UgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpm
b3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9u
IGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy5cbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0RG9jdW1lbnQt
PlVSTCgpLnV0ZjgoKS5kYXRhKCksIGFjdGl2ZURvY3VtZW50LT5VUkwoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVu
dC0+dXJsKCkudXRmOCgpLmRhdGEoKSwgYWN0aXZlRG9jdW1lbnQtPnVybCgpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgICAgIGlmIChLSlM6OkludGVycHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlv
bnMoKSkKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpA
QCAtMjUzMCw3ICsyNTMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxM
b2FkKAogICAgIH0gZWxzZSB7ICAgICAgICAKICAgICAgICAgS1VSTCB1cmwgPSBwZGwtPnN1YnN0
aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKICAgICAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICB1cmwgPSBwZGwtPlVSTCgpOworICAgICAgICAgICAgdXJsID0gcGRsLT51cmwo
KTsKICAgICAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgICAgICB1cmwgPSBwZGwtPnJl
c3BvbnNlVVJMKCk7CiAgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMjY2Myw5ICsyNjYz
LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RDYW5jZWxsZQogICAgIG1fc2Vu
dFJlZGlyZWN0Tm90aWZpY2F0aW9uID0gZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNs
aWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYgVVJMLCBkb3VibGUgc2Vjb25kcywgZG91YmxlIGZp
cmVEYXRlLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGlzSmF2YVNjcmlwdEZvcm1BY3Rpb24pCit2
b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmIHVybCwgZG91Ymxl
IHNlY29uZHMsIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBpc0phdmFT
Y3JpcHRGb3JtQWN0aW9uKQogewotICAgIG1fY2xpZW50LT5kaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoVVJMLCBzZWNvbmRzLCBmaXJlRGF0ZSk7CisgICAgbV9jbGllbnQtPmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1cmwsIHNlY29uZHMsIGZpcmVEYXRlKTsKICAg
ICAKICAgICAvLyBSZW1lbWJlciB0aGF0IHdlIHNlbnQgYSByZWRpcmVjdCBub3RpZmljYXRpb24g
dG8gdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgc28gdGhhdCB3aGVuIHdlIGNvbW1pdAogICAgIC8v
IHRoZSBuZXh0IHByb3Zpc2lvbmFsIGxvYWQsIHdlIGNhbiBzZW5kIGEgY29ycmVzcG9uZGluZyAt
d2ViVmlldzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOgpAQCAtMjcyMywxMyArMjcy
MywxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZFBhZ2UmIGNhY2hlCiAgICAgICAg
IG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQoU3RyaW5nKCkpOwogICAgIH0KIAot
ICAgIEtVUkwgVVJMID0gY2FjaGVkUGFnZS5VUkwoKTsKKyAgICBLVVJMIHVybCA9IGNhY2hlZFBh
Z2UudXJsKCk7CiAKLSAgICBpZiAoVVJMLnByb3RvY29sKCkuc3RhcnRzV2l0aCgiaHR0cCIpICYm
ICFVUkwuaG9zdCgpLmlzRW1wdHkoKSAmJiBVUkwucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
VVJMLnNldFBhdGgoIi8iKTsKKyAgICBpZiAodXJsLnByb3RvY29sKCkuc3RhcnRzV2l0aCgiaHR0
cCIpICYmICF1cmwuaG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgdXJsLnNldFBhdGgoIi8iKTsKICAgICAKLSAgICBtX1VSTCA9IFVSTDsKLSAgICBtX3dv
cmtpbmdVUkwgPSBVUkw7CisgICAgbV9VUkwgPSB1cmw7CisgICAgbV93b3JraW5nVVJMID0gdXJs
OwogCiAgICAgc3RhcnRlZCgpOwogCkBAIC0yNzQyLDcgKzI3NDIsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpvcGVuKENhY2hlZFBhZ2UmIGNhY2hlCiAgICAgbV9uZWVkc0NsZWFyID0gdHJ1ZTsKICAg
ICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gZmFs
c2U7Ci0gICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMLnVybCgpOworICAgIG1fb3V0Z29pbmdS
ZWZlcnJlciA9IHVybC5zdHJpbmcoKTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IGNhY2hlZFBh
Z2UudmlldygpOwogICAgIGlmICh2aWV3KQpAQCAtMjc3OCwxOCArMjc3OCw2IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgY2hlY2tMb2FkQ29tcGxldGUoKTsKIH0K
IAotLy8gRklYTUU6IFdoaWNoIG9uZSBvZiB0aGVzZSBVUkwgbWV0aG9kcyBpcyByaWdodD8KLQot
S1VSTCBGcmFtZUxvYWRlcjo6dXJsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9VUkw7Ci19Ci0K
LUtVUkwgRnJhbWVMb2FkZXI6OlVSTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPlVSTCgpOwotfQotCiBib29sIEZyYW1lTG9hZGVyOjppc0FyY2hpdmVMb2Fk
UGVuZGluZyhSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAogewogICAgIHJldHVybiBtX2Ns
aWVudC0+aXNBcmNoaXZlTG9hZFBlbmRpbmcobG9hZGVyKTsKQEAgLTMxNDIsMTQgKzMxMzAsMTQg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6dG9rZW5pemVyUHJvY2Vzc2VkRGF0YQogICAgIGNoZWNrQ29t
cGxldGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpZFRlbGxCcmlkZ2VBYm91dExvYWQo
Y29uc3QgU3RyaW5nJiBVUkwpCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRUZWxsQnJpZGdlQWJvdXRM
b2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIG1fdXJsc0JyaWRnZUtub3dzQWJvdXQuYWRk
KFVSTCk7CisgICAgbV91cmxzQnJpZGdlS25vd3NBYm91dC5hZGQodXJsKTsKIH0KIAotYm9vbCBG
cmFtZUxvYWRlcjo6aGF2ZVRvbGRCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5nJiBVUkwpCiti
b29sIEZyYW1lTG9hZGVyOjpoYXZlVG9sZEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKLSAgICByZXR1cm4gbV91cmxzQnJpZGdlS25vd3NBYm91dC5jb250YWlucyhVUkwpOwor
ICAgIHJldHVybiBtX3VybHNCcmlkZ2VLbm93c0Fib3V0LmNvbnRhaW5zKHVybCk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxvYWRFdmVudHMoKQpAQCAtMzI0Miw3ICszMjMwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0dGVkTG9hZChEb2N1bWVudAogICAgIG1fY2xpZW50
LT5jb21taXR0ZWRMb2FkKGxvYWRlciwgZGF0YSwgbGVuZ3RoKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6cG9zdChjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgCit2b2lk
IEZyYW1lTG9hZGVyOjpwb3N0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRh
LCAKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBFdmVudCogZXZlbnQsIEhUTUxGb3Jt
RWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGZvcm1WYWx1ZXMp
CiB7CiAgICAgLy8gV2hlbiBwb3N0aW5nLCB1c2UgdGhlIE5TVVJMUmVxdWVzdFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhIGxvYWQgZmxhZy4KQEAgLTMyNTEsNyArMzIzOSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnBvc3QoY29uc3QgS1VSTCYgVVJMLCAKIAogICAgIC8vIEZJWE1FOiBXaGVyZSdzIHRo
ZSBjb2RlIHRoYXQgaW1wbGVtZW50cyB3aGF0IHRoZSBjb21tZW50IGFib3ZlIHNheXM/CiAKLSAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChVUkwpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KHVybCk7CiAgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgdHJ1ZSwgdHJ1
ZSk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKQEAgLTMyNjAsNyArMzI0OCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnBvc3QoY29uc3QgS1VSTCYgVVJMLCAKICAgICByZXF1ZXN0LnNl
dEhUVFBCb2R5KGZvcm1EYXRhKTsKICAgICByZXF1ZXN0LnNldEhUVFBDb250ZW50VHlwZShjb250
ZW50VHlwZSk7CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihVUkwsIEZyYW1lTG9hZFR5
cGVTdGFuZGFyZCwgdHJ1ZSwgZXZlbnQpOworICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKHVy
bCwgRnJhbWVMb2FkVHlwZVN0YW5kYXJkLCB0cnVlLCBldmVudCk7CiAKICAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBmb3JtU3RhdGU7CiAgICAgaWYgKGZvcm0gJiYgIWZvcm1WYWx1ZXMuaXNFbXB0eSgp
KQpAQCAtMzMxNSw3ICszMzAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdQogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVCghbmV3
UmVxdWVzdC5pc051bGwoKSk7Ci0gICAgICAgIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQobmV3UmVx
dWVzdC51cmwoKS51cmwoKSk7CisgICAgICAgIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQobmV3UmVx
dWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAgICAg
fQogICAgIApAQCAtMzQxNywxMCArMzQwNSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51
ZUZyYWdtZW50U2Nyb2xsCiAgICAgaWYgKCFzaG91bGRDb250aW51ZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgS1VSTCBVUkwgPSByZXF1ZXN0LnVybCgpOworICAgIEtVUkwgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICAKLSAgICBtX2RvY3VtZW50TG9hZGVyLT5yZXBsYWNlUmVxdWVzdFVSTEZv
ckFuY2hvclNjcm9sbChVUkwpOwotICAgIGlmICghaXNSZWRpcmVjdCAmJiAhc2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQoVVJMKSkgeworICAgIG1fZG9jdW1lbnRMb2FkZXItPnJlcGxhY2VS
ZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKHVybCk7CisgICAgaWYgKCFpc1JlZGlyZWN0ICYmICFz
aG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudCh1cmwpKSB7CiAgICAgICAgIC8vIE5COiBtdXN0
IGhhcHBlbiBhZnRlciBfc2V0VVJMLCBzaW5jZSB3ZSBhZGQgYmFzZWQgb24gdGhlIGN1cnJlbnQg
cmVxdWVzdC4KICAgICAgICAgLy8gTXVzdCBhbHNvIGhhcHBlbiBiZWZvcmUgd2Ugb3BlblVSTCBh
bmQgZGlzcGxhY2UgdGhlIHNjcm9sbCBwb3NpdGlvbiwgc2luY2UKICAgICAgICAgLy8gYWRkaW5n
IHRoZSBCRiBpdGVtIHdpbGwgc2F2ZSBhd2F5IHNjcm9sbCBzdGF0ZS4KQEAgLTM0MzUsNyArMzQy
Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlRnJhZ21lbnRTY3JvbGwKICAgICAgICAg
YWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwogICAgIH0KICAgICAKLSAgICBzY3Jv
bGxUb0FuY2hvcihVUkwpOworICAgIHNjcm9sbFRvQW5jaG9yKHVybCk7CiAgICAgCiAgICAgaWYg
KCFpc1JlZGlyZWN0KQogICAgICAgICAvLyBUaGlzIHdpbGwgY2xlYXIgcHJldmlvdXNJdGVtIGZy
b20gdGhlIHJlc3Qgb2YgdGhlIGZyYW1lIHRyZWUgdGhhdCBkaWRuJ3QKQEAgLTM3ODcsMTEgKzM3
NzUsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FjaGVQYWdlRm9ySGlzdG9yeUl0ZQogICAgIH0K
IH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29u
c3QgS1VSTCYgVVJMKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1Nh
bWVBc0N1cnJlbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50
SGlzdG9yeUl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gVVJMID09IG1f
Y3VycmVudEhpc3RvcnlJdGVtLT51cmwoKSB8fCBVUkwgPT0gbV9jdXJyZW50SGlzdG9yeUl0ZW0t
Pm9yaWdpbmFsVVJMKCk7CisgICAgcmV0dXJuIHVybCA9PSBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+
dXJsKCkgfHwgdXJsID09IG1fY3VycmVudEhpc3RvcnlJdGVtLT5vcmlnaW5hbFVSTCgpOwogfQog
CiBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRlcjo6Y3JlYXRlSGlzdG9yeUl0ZW0o
Ym9vbCB1c2VPcmlnaW5hbCkKQEAgLTM4MTQsNyArMzgwMiw3IEBAIFBhc3NSZWZQdHI8SGlzdG9y
eUl0ZW0+IEZyYW1lTG9hZGVyOjpjcmUKICAgICAgICAgICAgIHVybCA9IGRvY0xvYWRlci0+cmVx
dWVzdFVSTCgpOyAgICAgICAgICAgICAgICAKICAgICB9CiAKLSAgICBMT0coSGlzdG9yeSwgIldl
YkNvcmVIaXN0b3J5OiBDcmVhdGluZyBpdGVtIGZvciAlcyIsIHVybC51cmwoKS5hc2NpaSgpKTsK
KyAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBDcmVhdGluZyBpdGVtIGZvciAlcyIs
IHVybC5zdHJpbmcoKS5hc2NpaSgpKTsKICAgICAKICAgICAvLyBGcmFtZXMgdGhhdCBoYXZlIG5l
dmVyIHN1Y2Nlc3NmdWxseSBsb2FkZWQgYW55IGNvbnRlbnQKICAgICAvLyBtYXkgaGF2ZSBubyBV
UkwgYXQgYWxsLiBDdXJyZW50bHkgb3VyIGhpc3RvcnkgY29kZSBjYW4ndApAQCAtMzgyNyw3ICsz
ODE1LDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gRnJhbWVMb2FkZXI6OmNyZQogICAgICAg
ICBvcmlnaW5hbFVSTCA9IEtVUkwoImFib3V0OmJsYW5rIik7CiAgICAgCiAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbmV3IEhpc3RvcnlJdGVtKHVybCwgbV9mcmFtZS0+dHJlZSgpLT5u
YW1lKCksIG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgPyBtX2ZyYW1lLT50cmVlKCktPnBhcmVu
dCgpLT50cmVlKCktPm5hbWUoKSA6ICIiLCBkb2NMb2FkZXIgPyBkb2NMb2FkZXItPnRpdGxlKCkg
OiAiIik7Ci0gICAgaXRlbS0+c2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwudXJsKCkp
OworICAgIGl0ZW0tPnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsK
ICAgICAKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhpcyBpcyBhIFBPU1QKICAgICBpZiAo
ZG9jTG9hZGVyKSB7CkBAIC0zODU4LDcgKzM4NDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjphZGRC
YWNrRm9yd2FyZEl0ZW1DbGlwCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFJlZlB0cjxI
aXN0b3J5SXRlbT4gaXRlbSA9IGZyYW1lTG9hZGVyLT5jcmVhdGVIaXN0b3J5SXRlbVRyZWUobV9m
cmFtZSwgZG9DbGlwKTsKLSAgICAgICAgICAgIExPRyhCYWNrRm9yd2FyZCwgIldlYkNvcmVCYWNr
Rm9yd2FyZCAtIEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGZvciBmcmFtZSAlcyIsIGl0ZW0u
Z2V0KCksIGRvY3VtZW50TG9hZGVyKCktPlVSTCgpLnVybCgpLmFzY2lpKCkpOworICAgICAgICAg
ICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tmb3J3
YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgaXRlbS5nZXQoKSwgZG9jdW1lbnRMb2FkZXIoKS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKSk7CiAgICAgICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZExp
c3QoKS0+YWRkSXRlbShpdGVtKTsKICAgICAgICAgfQogfQpAQCAtMzk4MSw3ICszOTY5LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIAogICAgIEtVUkwgaXRlbU9y
aWdpbmFsVVJMID0gaXRlbS0+b3JpZ2luYWxVUkwoKTsKICAgICBLVVJMIGN1cnJlbnRVUkw7CiAg
ICAgaWYgKGRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExv
YWRlcigpLT5VUkwoKTsKKyAgICAgICAgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCktPnVy
bCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpdGVtLT5mb3JtRGF0YSgpOwog
CiAgICAgLy8gQXJlIHdlIG5hdmlnYXRpbmcgdG8gYW4gYW5jaG9yIHdpdGhpbiB0aGUgcGFnZT8K
QEAgLTQwMzUsNyArNDAyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJ
dGVtKiAKICAgICAgICAgICAgICAgICBsb2FkKGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCks
IGxvYWRUeXBlLCAwKTsgICAKICAgICAgICAgICAgICAgICBpblBhZ2VDYWNoZSA9IHRydWU7CiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3Qg
cmVzdG9yaW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2Fj
aGUgZW50cnkgaGFzIGV4cGlyZWQiLCBtX3Byb3Zpc2lvbmFsSGlzdG9yeUl0ZW0tPnVybCgpLnVy
bCgpLmFzY2lpKCkpOworICAgICAgICAgICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9y
aW5nIHBhZ2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50
cnkgaGFzIGV4cGlyZWQiLCBtX3Byb3Zpc2lvbmFsSGlzdG9yeUl0ZW0tPnVybCgpLnN0cmluZygp
LmFzY2lpKCkpOwogICAgICAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUoaXRlbSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQxMDAsNyArNDA4OCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiAKIC8vIFdhbGsgdGhlIGZyYW1lIHRyZWUgYW5k
IGVuc3VyZSB0aGF0IHRoZSBVUkxzIG1hdGNoIHRoZSBVUkxzIGluIHRoZSBpdGVtLgogYm9vbCBG
cmFtZUxvYWRlcjo6dXJsc01hdGNoSXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKIHsKLSAg
ICBLVVJMIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT5VUkwoKTsKKyAgICBLVVJMIGN1
cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT51cmwoKTsKICAgICAKICAgICBpZiAoIWVxdWFs
SWdub3JpbmdSZWYoY3VycmVudFVSTCwgaXRlbS0+dXJsKCkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MTUyLDcgKzQxNDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWN1cnNpdmVHb1Rv
SXRlbShIaXN0CiAgICAgS1VSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7CiAgICAgS1VSTCBjdXJy
ZW50VVJMOwogICAgIGlmIChkb2N1bWVudExvYWRlcigpKQotICAgICAgICBjdXJyZW50VVJMID0g
ZG9jdW1lbnRMb2FkZXIoKS0+VVJMKCk7CisgICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExv
YWRlcigpLT51cmwoKTsKICAgICAKICAgICAvLyBBbHdheXMgcmVsb2FkIHRoZSB0YXJnZXQgZnJh
bWUgb2YgdGhlIGl0ZW0gd2UncmUgZ29pbmcgdG8uICBUaGlzIGVuc3VyZXMgdGhhdCB3ZSB3aWxs
CiAgICAgLy8gZG8gLXNvbWUtIGxvYWQgZm9yIHRoZSB0cmFuc2l0aW9uLCB3aGljaCBtZWFucyBh
IHByb3BlciBub3RpZmljYXRpb24gd2lsbCBiZSBwb3N0ZWQKQEAgLTQyMjYsNyArNDIxNCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmFkZEhpc3RvcnlGb3JDdXJyZW50TG8KIAogdm9pZCBGcmFtZUxv
YWRlcjo6dXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCgpCiB7Ci0gICAgTE9HKEhpc3Rvcnks
ICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgU3RhbmRhcmQgTG9hZCBpbiBm
cmFtZSAlcyIsIGRvY3VtZW50TG9hZGVyKCktPlVSTCgpLnVybCgpLmFzY2lpKCkpOworICAgIExP
RyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIFN0YW5kYXJk
IExvYWQgaW4gZnJhbWUgJXMiLCBkb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpKTsKICAgICAKICAgICBib29sIGZyYW1lTmF2aWdhdGlvbk9uTG9hZCA9IGZhbHNlOwogICAg
IApAQCAtNDI0Miw3ICs0MjMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZv
clN0YW5kYQogICAgICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBhZGRIaXN0b3J5Rm9yQ3VycmVudExvY2F0aW9uKCk7CiAg
ICAgfSBlbHNlIGlmIChkb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHko
KSAmJiBtX2N1cnJlbnRIaXN0b3J5SXRlbSkgewotICAgICAgICBtX2N1cnJlbnRIaXN0b3J5SXRl
bS0+c2V0VVJMKGRvY3VtZW50TG9hZGVyKCktPlVSTCgpKTsKKyAgICAgICAgbV9jdXJyZW50SGlz
dG9yeUl0ZW0tPnNldFVSTChkb2N1bWVudExvYWRlcigpLT51cmwoKSk7CiAgICAgICAgIG1fY3Vy
cmVudEhpc3RvcnlJdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCkt
PnJlcXVlc3QoKSk7CiAgICAgfQogICAgIApAQCAtNDMxMSw3ICs0Mjk5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvclJlZGlyZQogICAgICAgICBpZiAoIW1fY3VycmVudEhp
c3RvcnlJdGVtICYmICFtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAgICAgICAgICAgYWRk
SGlzdG9yeUZvckN1cnJlbnRMb2NhdGlvbigpOwogICAgICAgICBpZiAobV9jdXJyZW50SGlzdG9y
eUl0ZW0pIHsKLSAgICAgICAgICAgIG1fY3VycmVudEhpc3RvcnlJdGVtLT5zZXRVUkwoZG9jdW1l
bnRMb2FkZXIoKS0+VVJMKCkpOworICAgICAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnNl
dFVSTChkb2N1bWVudExvYWRlcigpLT51cmwoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRIaXN0
b3J5SXRlbS0+c2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0
KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzMsMTUgKzI3MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
dm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOwogCi0gICAgICAgIHZvaWQgY2hhbmdlTG9jYXRp
b24oY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hp
c3RvcnkgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwotICAgICAgICB2b2lkIGNo
YW5nZUxvY2F0aW9uKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSk7CisgICAgICAg
IHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2Up
OworICAgICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9IGZh
bHNlKTsKICAgICAgICAgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgRXZlbnQqLCBib29sIGxvY2tIaXN0b3J5LCBib29sIHVzZXJH
ZXN0dXJlKTsKICAgICAgICAgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiwgRXZlbnQqLCBib29sIGxvY2tIaXN0b3J5LCBib29sIHVzZXJHZXN0dXJlKTsKICAgICAgIAot
ICAgICAgICBib29sIHJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmIFVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUpOwotICAgICAgICBGcmFt
ZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmIFVSTCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICAgICAgYm9v
bCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lKTsKKyAgICAgICAgRnJhbWUqIGxvYWRTdWJm
cmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAotICAgICAgICB2b2lkIHN1Ym1pdEZvcm0o
Y29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0
YT4sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIGJvdW5kYXJ5LCBFdmVudCopOworICAgICAgICB2b2lkIHN1Ym1pdEZvcm0oY29u
c3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHVybCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4s
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dHJpbmcmIGJvdW5kYXJ5LCBFdmVudCopOwogICAgICAgICB2b2lkIHN1Ym1pdEZvcm1BZ2Fpbigp
OwogICAgICAgICB2b2lkIHN1Ym1pdEZvcm0oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIEV2ZW50
Kik7CiAKQEAgLTI5OSw4ICsyOTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEtV
UkwgZGF0YVVSTEJhc2VGcm9tUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IGNvbnN0OwogCiAgICAgICAgIGJvb2wgaXNTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZVBlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uICYmIGlzTG9jYXRpb25DaGFu
Z2UoKm1fc2NoZWR1bGVkUmVkaXJlY3Rpb24pOyB9Ci0gICAgICAgIHZvaWQgc2NoZWR1bGVIVFRQ
UmVkaXJlY3Rpb24oZG91YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIFVSTCk7Ci0gICAgICAgIHZv
aWQgc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBm
YWxzZSk7CisgICAgICAgIHZvaWQgc2NoZWR1bGVIVFRQUmVkaXJlY3Rpb24oZG91YmxlIGRlbGF5
LCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgICAgIHZvaWQgc2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlz
dG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgc2No
ZWR1bGVSZWZyZXNoKGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgc2No
ZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpOwogCkBAIC0zMjAsNyArMzIwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGJvb2wgdXNlckNob3Nlbik7CiAgICAgICAgIFN0cmluZyBlbmNvZGluZygp
IGNvbnN0OwogCi0gICAgICAgIEtKUzo6SlNWYWx1ZSogZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJp
bmcmIFVSTCwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7CisgICAgICAgIEtK
Uzo6SlNWYWx1ZSogZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgaW50IGJhc2VMaW5l
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAgICAgICAgIEtKUzo6SlNWYWx1ZSogZXhlY3V0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2Up
OwogCiAgICAgICAgIHZvaWQgZ290b0FuY2hvcigpOwpAQCAtMzU4LDkgKzM1OCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGZyYW1lRGV0YWNoZWQoKTsKIAotICAgICAg
ICAvLyBGSVhNRTogV2hpY2ggb25lIG9mIHRoZXNlIFVSTCBtZXRob2RzIGlzIHJpZ2h0PwotICAg
ICAgICBLVVJMIHVybCgpIGNvbnN0OwotICAgICAgICBLVVJMIFVSTCgpIGNvbnN0OworICAgICAg
ICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX1VSTDsgfQogCiAgICAgICAgIHZv
aWQgdXBkYXRlQmFzZVVSTEZvckVtcHR5RG9jdW1lbnQoKTsKIApAQCAtMzgwLDEzICszNzgsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNDb21wbGV0ZSgpIGNvbnN0
OwogCi0gICAgICAgIGJvb2wgcmVxdWVzdE9iamVjdChSZW5kZXJQYXJ0KiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiBVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLAorICAgICAgICBib29s
IHJlcXVlc3RPYmplY3QoUmVuZGVyUGFydCogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc2Vy
dmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogCi0gICAgICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiBVUkwpOworICAgICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKIAotICAgICAgICB2b2lkIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5nJiBV
UkwpOwotICAgICAgICBib29sIGhhdmVUb2xkQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmluZyYg
VVJMKTsKKyAgICAgICAgdm9pZCBkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmluZyYg
dXJsKTsKKyAgICAgICAgYm9vbCBoYXZlVG9sZEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcm
IHVybCk7CiAKICAgICAgICAgS1VSTCBvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdDsKIApJbmRl
eDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9s
b2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw3ICsxNTUsNyBA
QCB2b2lkIEltYWdlRG9jdW1lbnQ6OmNyZWF0ZURvY3VtZW50U3RydWN0CiAgICAgbV9pbWFnZUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVtZW50ICo+KGltYWdlRWxlbWVudC5nZXQo
KSk7CiAgICAgbV9pbWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0
LXVzZXItc2VsZWN0OiBub25lIik7ICAgICAgICAKICAgICBtX2ltYWdlRWxlbWVudC0+c2V0TG9h
ZE1hbnVhbGx5KHRydWUpOwotICAgIG1faW1hZ2VFbGVtZW50LT5zZXRTcmMoVVJMKCkpOworICAg
IG1faW1hZ2VFbGVtZW50LT5zZXRTcmModXJsKCkpOwogICAgIAogICAgIGJvZHktPmFwcGVuZENo
aWxkKGltYWdlRWxlbWVudCwgZWMpOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvTWFpblJl
c291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9NYWluUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lkIE1h
aW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSwgdGhpcyk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZExvYWRBc0VtcHR5RG9jdW1l
bnQoY29uc3QgS1VSTCYgVVJMKQorc3RhdGljIGJvb2wgc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVu
dChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFVSTC5pc0VtcHR5KCkgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UoU3RyaW5nKFVSTC5wcm90b2NvbCgpKSwgImFib3V0Iik7CisgICAgcmV0dXJu
IHVybC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nKHVybC5wcm90b2NvbCgp
KSwgImFib3V0Iik7CiB9CiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gY29udGVudFBvbGljeSwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcikKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoCiAKIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKCkKIHsKLSAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRl
cigpLT5VUkwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSk7CisgICAgQVNTRVJUKHNob3VsZExvYWRB
c0VtcHR5RG9jdW1lbnQoZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dXJs
KCkpIHx8ICFkZWZlcnNMb2FkaW5nKCkpOwogCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vz
c2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0
CiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDI5ICs1MiwyOSBAQCBOYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKCkKIHsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiBVUkwsIE5hdmlnYXRpb25UeXBlIHR5cGUpCi0g
ICAgOiBtX1VSTChVUkwpCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSkKKyAgICA6IG1fVVJMKHVybCkKICAgICAs
IG1fdHlwZSh0eXBlKQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IEtVUkwmIFVSTCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAorTmF2aWdhdGlv
bkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUg
ZnJhbWVMb2FkVHlwZSwKICAgICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uKQotICAgIDogbV9V
UkwoVVJMKQorICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZy
YW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIDApKQogewogfQogCi1OYXZpZ2F0aW9uQWN0
aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIFVSTCwgTmF2aWdhdGlvblR5cGUgdHlw
ZSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCi0gICAgOiBtX1VSTChVUkwpCitOYXZpZ2F0aW9u
QWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUg
dHlwZSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCisgICAgOiBtX1VSTCh1cmwpCiAgICAgLCBt
X3R5cGUodHlwZSkKICAgICAsIG1fZXZlbnQoZXZlbnQpCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rp
b246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgVVJMLCBGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUsCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwm
IHVybCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAogICAgICAgICBib29sIGlzRm9ybVN1
Ym1pc3Npb24sIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQotICAgIDogbV9VUkwoVVJMKQorICAg
IDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUs
IGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KSkKICAgICAsIG1fZXZlbnQoZXZlbnQpCiB7CkluZGV4
OiBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9VUkwuaXNFbXB0eSgpOyB9CiAKLSAgICAgICAgS1VSTCBVUkwoKSBjb25zdCB7IHJl
dHVybiBtX1VSTDsgfQorICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9
CiAgICAgICAgIE5hdmlnYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICAgICAgY29uc3QgRXZlbnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudC5nZXQo
KTsgfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODI1MSkK
KysrIFdlYkNvcmUvbG9hZGVyL1BsdWdpbkRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNyArODYsNyBAQCB2b2lkIFBsdWdpblRva2VuaXplcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1CiAg
ICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCAiMTAwJSIpOwogICAg
IAogICAgIG1fZW1iZWRFbGVtZW50LT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsICJwbHVnaW4iKTsK
LSAgICBtX2VtYmVkRWxlbWVudC0+c2V0U3JjKG1fZG9jLT5VUkwoKSk7CisgICAgbV9lbWJlZEVs
ZW1lbnQtPnNldFNyYyhtX2RvYy0+dXJsKCkpOwogICAgIG1fZW1iZWRFbGVtZW50LT5zZXRUeXBl
KG1fZG9jLT5mcmFtZSgpLT5sb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKTsKICAgICAKICAg
ICBib2R5LT5hcHBlbmRDaGlsZChlbWJlZEVsZW1lbnQsIGVjKTsgICAgCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkKIAogYm9vbCBTdWJyZXNv
dXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiB7Ci0gICAgbV9mcmFt
ZS0+bG9hZGVyKCktPmRpZFRlbGxCcmlkZ2VBYm91dExvYWQoci51cmwoKS51cmwoKSk7CisgICAg
bV9mcmFtZS0+bG9hZGVyKCktPmRpZFRlbGxCcmlkZ2VBYm91dExvYWQoci51cmwoKS5zdHJpbmco
KSk7CiAgICAgCiAgICAgcmV0dXJuIFJlc291cmNlTG9hZGVyOjpsb2FkKHIpOwogfQpAQCAtOTYs
NyArOTYsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjCiAgICAg
aWYgKCFza2lwQ2FuTG9hZENoZWNrCiAgICAgICAgICAgICAmJiBGcmFtZUxvYWRlcjo6cmVzdHJp
Y3RBY2Nlc3NUb0xvY2FsKCkKICAgICAgICAgICAgICYmICFGcmFtZUxvYWRlcjo6Y2FuTG9hZChy
ZXF1ZXN0LnVybCgpLCBmcmFtZS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZS0+cGFnZSgpLCByZXF1ZXN0LnVybCgpLnVybCgp
KTsKKyAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZS0+cGFn
ZSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9sb2FkZXIuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvbG9hZGVy
L2xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3MywxMCBAQCB2b2lkIExvYWRl
cjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoKQogICAgICAgICBpZiAoIXJlcS0+Y2FjaGVkUmVzb3Vy
Y2UoKS0+YWNjZXB0KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQWNj
ZXB0KHJlcS0+Y2FjaGVkUmVzb3VyY2UoKS0+YWNjZXB0KCkpOwogCi0gICAgICAgIEtVUkwgciA9
IGRsLT5kb2MoKS0+VVJMKCk7CisgICAgICAgIEtVUkwgciA9IGRsLT5kb2MoKS0+dXJsKCk7CiAg
ICAgICAgIGlmIChyLnByb3RvY29sKCkuc3RhcnRzV2l0aCgiaHR0cCIpICYmIHIucGF0aCgpLmlz
RW1wdHkoKSkKICAgICAgICAgICAgIHIuc2V0UGF0aCgiLyIpOwotICAgICAgICByZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihyLnVybCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
ci5zdHJpbmcoKSk7CiAgICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZG9tYWluID0gci5ob3N0KCk7
CiAgICAgICAgIGlmIChkbC0+ZG9jKCktPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICBk
b21haW4gPSBzdGF0aWNfY2FzdDxIVE1MRG9jdW1lbnQqPihkbC0+ZG9jKCkpLT5kb21haW4oKS5k
ZXByZWNhdGVkU3RyaW5nKCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHJl
dmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGlu
ZygpCiAKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNl
TG9hZGVyOjpjcmVhdGUobV9mcmFtZSwgdGhpcywgbV9mcmFtZS0+bG9hZGVyKCktPmljb25VUkwo
KSk7CiAgICAgaWYgKCFsb2FkZXIpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0
IGxvYWQgZm9yIGljb24gYXQgdXJsICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmljb25VUkwoKS51
cmwoKS5hc2NpaSgpKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBm
b3IgaWNvbiBhdCB1cmwgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvblVSTCgpLnN0cmluZygp
LmFzY2lpKCkpOwogCiAgICAgLy8gU3RvcmUgdGhlIGhhbmRsZSBzbyB3ZSBjYW4gY2FuY2VsIHRo
ZSBsb2FkIGlmIHN0b3BMb2FkaW5nIGlzIGNhbGxlZCBsYXRlci4KICAgICAvLyBCdXQgb25seSBk
byBpdCBpZiB0aGUgbG9hZCBoYXNuJ3QgYWxyZWFkeSBjb21wbGV0ZWQuCkBAIC0xMzgsNyArMTM4
LDYgQEAgdm9pZCBJY29uTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlcwogCiB2b2lkIElj
b25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoY29uc3QgS1VSTCYgaWNvblVSTCwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEpCiB7Ci0KICAgICAvLyBXaGVuIGFuIGljb24gbG9hZCByZXN1bHRz
IGluIGEgNDA0IHdlIGNvbW1pdCBpdCB0byB0aGUgZGF0YWJhc2UgaGVyZSBhbmQgY2xlYXIgdGhl
IGxvYWRpbmcgc3RhdGUuICAKICAgICAvLyBCdXQgdGhlIFN1YnJlc291cmNlTG9hZGVyIGNvbnRp
bnVlcyBwdWxsaW5nIGluIGRhdGEgaW4gdGhlIGJhY2tncm91bmQgZm9yIHRoZSA0MDQgcGFnZSBp
ZiB0aGUgc2VydmVyIHNlbmRzIG9uZS4gIAogICAgIC8vIE9uY2UgdGhhdCBkYXRhIGZpbmlzaGVz
IGxvYWRpbmcgb3IgaWYgdGhlIGxvYWQgaXMgY2FuY2VsbGVkIHdoaWxlIHRoYXQgZGF0YSBpcyBi
ZWluZyByZWFkLCBmaW5pc2hMb2FkaW5nIGVuZHMgdXAgYmVpbmcgY2FsbGVkIGEgc2Vjb25kIHRp
bWUuCkBAIC0xNDcsOCArMTQ2LDggQEAgdm9pZCBJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEtVUgogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NDYzMzkyPiB0cmFja3MgdGhhdCBlbmhh
bmNlbWVudAogICAgIAogICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYgbV9sb2FkSXNJblBy
b2dyZXNzKSB7Ci0gICAgICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uRGF0YUZvckljb25VUkwo
ZGF0YSwgaWNvblVSTC51cmwoKSk7Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9h
ZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2Ui
LCBpY29uVVJMLnVybCgpLmFzY2lpKCkpOworICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNv
bkRhdGFGb3JJY29uVVJMKGRhdGEsIGljb25VUkwuc3RyaW5nKCkpOworICAgICAgICBMT0coSWNv
bkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIiwgaWNvblVSTC5zdHJpbmcoKS5hc2NpaSgpKTsKICAgICAgICAg
bV9mcmFtZS0+bG9hZGVyKCktPmNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShpY29uVVJMKTsK
ICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFz
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm0J
KHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFz
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCw5IEBAIE5TRGF0YSAqdXJsT3JpZ2luYWxE
YXRhKE5TVVJMICp1cmwpCiAgICAgTlNEYXRhICpkYXRhID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVz
Tm9Db3B5OmJ1ZmZlciBsZW5ndGg6Ynl0ZXNGaWxsZWQgZnJlZVdoZW5Eb25lOllFU107CiAgICAg
CiAgICAgTlNVUkwgKmJhc2VVUkwgPSAoTlNVUkwgKilDRlVSTEdldEJhc2VVUkwoKENGVVJMUmVm
KXVybCk7Ci0gICAgaWYgKGJhc2VVUkwpIHsKLSAgICAgICAgTlNVUkwgKlVSTCA9IHVybFdpdGhE
YXRhUmVsYXRpdmVUb1VSTChkYXRhLCBiYXNlVVJMKTsKLSAgICAgICAgcmV0dXJuIHVybE9yaWdp
bmFsRGF0YShVUkwpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gZGF0YTsKKyAgICBpZiAo
YmFzZVVSTCkKKyAgICAgICAgcmV0dXJuIHVybE9yaWdpbmFsRGF0YSh1cmxXaXRoRGF0YVJlbGF0
aXZlVG9VUkwoZGF0YSwgYmFzZVVSTCkpOworICAgIHJldHVybiBkYXRhOwogfQogCiBOU1VSTCAq
dXJsV2l0aERhdGEoTlNEYXRhICpkYXRhKQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDI4MjUxKQor
KysgV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcs
NyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzCiAgICAgICAgIC8v
IEdldCB0b29sdGlwIHJlcHJlc2VudGluZyBsaW5rJ3MgVVJMCiAgICAgICAgIGlmICh0b29sVGlw
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBhc3MgdGhpcyBVUkwg
dGhyb3VnaCB1c2VyVmlzaWJsZVN0cmluZyBvbmNlIHRoYXQncyBpbiBXZWJDb3JlCi0gICAgICAg
ICAgICB0b29sVGlwID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnVybCgpOworICAgICAgICAg
ICAgdG9vbFRpcCA9IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKTsKICAgICB9CiAK
ICAgICAvLyBMYXN0bHkgd2UnbGwgY29uc2lkZXIgYSB0b29sdGlwIGZvciBlbGVtZW50IHdpdGgg
InRpdGxlIiBhdHRyaWJ1dGUKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z09wZW5GcmFtZUluTmV3V2luZG93OiB7CiAgICAgICAgICAgICBLVVJMIHVybCA9IGZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKICAgICAgICAgICAg
IGlmIChmcmFtZSAmJiB1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHVybCA9IGZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+VVJMKCk7CisgICAgICAgICAgICAgICAgdXJs
ID0gZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT51cmwoKTsKICAgICAgICAgICAg
IG9wZW5OZXdXaW5kb3codXJsLCBmcmFtZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIEZyYW1lOjpzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNvCiAgICAgZGVsZXRlIGQtPm1fdXNlclN0eWxlU2hlZXRMb2FkZXI7
CiAgICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9IDA7CiAgICAgaWYgKGQtPm1fZG9jICYm
IGQtPm1fZG9jLT5kb2NMb2FkZXIoKSkKLSAgICAgICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRl
ciA9IG5ldyBVc2VyU3R5bGVTaGVldExvYWRlcihkLT5tX2RvYywgdXJsLnVybCgpKTsKKyAgICAg
ICAgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlciA9IG5ldyBVc2VyU3R5bGVTaGVldExvYWRlcihk
LT5tX2RvYywgdXJsLnN0cmluZygpKTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0VXNlclN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0KQpJbmRleDogV2ViQ29yZS9wYWdlL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdHJ1Y3QgSW5z
cGVjdG9yUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291CiAgICAgICAgIGlmICghZG9jKQogICAgICAg
ICAgICAgcmV0dXJuIE90aGVyOwogCi0gICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZSA9IGRvYy0+ZG9jTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHJlcXVlc3RVUkwudXJsKCkp
OworICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb2MtPmRvY0xvYWRl
cigpLT5jYWNoZWRSZXNvdXJjZShyZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICAgICAgaWYgKCFj
YWNoZWRSZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBPdGhlcjsKIApAQCAtMjcxLDcgKzI3
MSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGFkZFNvdXJjZVRvRnJhbWUoSlNDb24KICAgICAgICAg
aWYgKCFkb2MpCiAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogCi0gICAgICAgIENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGRvYy0+ZG9jTG9hZGVyKCktPmNhY2hlZFJlc291
cmNlKHJlc291cmNlLT5yZXF1ZXN0VVJMLnVybCgpKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UocmVzb3Vy
Y2UtPnJlcXVlc3RVUkwuc3RyaW5nKCkpOwogICAgICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKIApAQCAtOTI1LDcgKzkyNSw3IEBAIEpTT2Jq
ZWN0UmVmIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFNjcmkKICAgICBKU09iamVjdFJlZiByZXNv
dXJjZUNvbnN0cnVjdG9yID0gSlNWYWx1ZVRvT2JqZWN0KG1fc2NyaXB0Q29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eShtX3NjcmlwdENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCByZXNvdXJjZVN0
cmluZywgMCksIDApOwogICAgIEpTU3RyaW5nUmVsZWFzZShyZXNvdXJjZVN0cmluZyk7CiAKLSAg
ICBTdHJpbmcgdXJsU3RyaW5nID0gcmVzb3VyY2UtPnJlcXVlc3RVUkwudXJsKCk7CisgICAgU3Ry
aW5nIHVybFN0cmluZyA9IHJlc291cmNlLT5yZXF1ZXN0VVJMLnN0cmluZygpOwogICAgIEpTU3Ry
aW5nUmVmIHVybCA9IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnModXJsU3RyaW5nLmNoYXJh
Y3RlcnMoKSwgdXJsU3RyaW5nLmxlbmd0aCgpKTsKICAgICBKU1ZhbHVlUmVmIHVybFZhbHVlID0g
SlNWYWx1ZU1ha2VTdHJpbmcobV9zY3JpcHRDb250ZXh0LCB1cmwpOwogICAgIEpTU3RyaW5nUmVs
ZWFzZSh1cmwpOwpAQCAtMTAyMiw3ICsxMDIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp1cGRhdGVTY3JpcHRSZQogICAgIGlmICghcmVzb3VyY2UtPnNjcmlwdE9iamVjdCB8fCAhbV9z
Y3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0g
cmVzb3VyY2UtPnJlcXVlc3RVUkwudXJsKCk7CisgICAgU3RyaW5nIHVybFN0cmluZyA9IHJlc291
cmNlLT5yZXF1ZXN0VVJMLnN0cmluZygpOwogICAgIEpTU3RyaW5nUmVmIHVybCA9IEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnModXJsU3RyaW5nLmNoYXJhY3RlcnMoKSwgdXJsU3RyaW5nLmxl
bmd0aCgpKTsKICAgICBKU1ZhbHVlUmVmIHVybFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9z
Y3JpcHRDb250ZXh0LCB1cmwpOwogICAgIEpTU3RyaW5nUmVsZWFzZSh1cmwpOwpAQCAtMTM3MCw3
ICsxMzcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKAogICAg
ICAgICBBU1NFUlQobV9tYWluUmVzb3VyY2UpOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGxv
b2sgaW50byBhc3NlcnRpbmcgdGhhdCBtX21haW5SZXNvdXJjZS0+bG9hZGVyID09IGxvYWRlciBo
ZXJlLgogCi0gICAgICAgIG1fY2xpZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGxvYWRlci0+VVJM
KCkudXJsKCkpOworICAgICAgICBtX2NsaWVudC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChsb2FkZXIt
PnVybCgpLnN0cmluZygpKTsKIAogICAgICAgICBkZWxldGVBbGxWYWx1ZXMobV9jb25zb2xlTWVz
c2FnZXMpOwogICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5jbGVhcigpOwpJbmRleDogV2ViQ29y
ZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29y
ZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMjEs
MTMgKzEyMjEsMTMgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAog
ICAgIH0KIH0KIAotLSAoQk9PTClnZXREYXRhOihOU0RhdGEgKiopZGF0YSBhbmRSZXNwb25zZToo
TlNVUkxSZXNwb25zZSAqKilyZXNwb25zZSBmb3JVUkw6KE5TU3RyaW5nICopVVJMCistIChCT09M
KWdldERhdGE6KE5TRGF0YSAqKilkYXRhIGFuZFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICoqKXJl
c3BvbnNlIGZvclVSTDooTlNTdHJpbmcgKil1cmwKIHsKICAgICBEb2N1bWVudCogZG9jID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvYykKICAgICAgICAgcmV0dXJuIE5POwogCi0g
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UoVVJMKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBkb2MtPmRvY0xvYWRl
cigpLT5jYWNoZWRSZXNvdXJjZSh1cmwpOwogICAgIGlmICghcmVzb3VyY2UpCiAgICAgICAgIHJl
dHVybiBOTzsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHVybFN0cmluZy5pc0VtcHR5KCk7IH0gCiAg
ICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7CiAKLSAgICBEZXByZWNhdGVkU3RyaW5nIHVybCgpIGNv
bnN0IHsgcmV0dXJuIHVybFN0cmluZzsgfQorICAgIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIHVybFN0cmluZzsgfQogCiAgICAgRGVwcmVjYXRlZFN0cmlu
ZyBwcm90b2NvbCgpIGNvbnN0OwogICAgIERlcHJlY2F0ZWRTdHJpbmcgaG9zdCgpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQkocmV2aXNpb24gMjgyNTEpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE2NiwyMCArMTY2LDIwIEBAIFN0cmluZyBDbGlwYm9hcmRNYWM6OmdldERhdGEoY29uc3QgU3Ry
aW4KICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmICh0eXBlICE9ICJ0ZXh0L3VyaS1saXN0IikKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
dW50ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgTlNNdXRhYmxlU3RyaW5nICpVUkxzID0gW05T
TXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgICAgICAgICAgICAgICAgICBOU011dGFibGVTdHJp
bmcgKnVybHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsg
aSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbVVJMcyBhcHBlbmRTdHJpbmc6QCJcbiJdOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFt1cmxzIGFwcGVuZFN0cmluZzpAIlxuIl07CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0g
W2ZpbGVMaXN0IG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5TVVJMICpVUkwg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0cmluZ107Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBbVVJMcyBhcHBlbmRTdHJpbmc6W1VSTCBhYnNvbHV0ZVN0cmluZ11dOworICAgICAgICAgICAg
ICAgICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RyaW5nXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxzIGFwcGVuZFN0cmluZzpbdXJsIGFic29sdXRl
U3RyaW5nXV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYg
KGkgPT0gY291bnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2NvYVZhbHVlID0gVVJMczsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvY29hVmFsdWUgPSB1cmxzOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ29va2llSmFyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0Nvb2tp
ZUphci5tbQkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9Db29raWVK
YXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgU3RyaW5nIGNvb2tpZXMoY29u
c3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IE5TVVJMICpVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKLSAgICBOU0FycmF5ICpjb29raWVzRm9yVVJM
ID0gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBjb29raWVz
Rm9yVVJMOlVSTF07CisgICAgTlNVUkwgKmNvb2tpZVVSTCA9IHVybC5nZXROU1VSTCgpOworICAg
IE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwgPSBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNGb3JVUkw6Y29va2llVVJMXTsKICAgICBOU0RpY3Rpb25h
cnkgKmhlYWRlciA9IFtOU0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVz
OmNvb2tpZXNGb3JVUkxdOwogICAgIHJldHVybiBbaGVhZGVyIG9iamVjdEZvcktleTpAIkNvb2tp
ZSJdOwogCkBAIC00OSwxNCArNDksMTQgQEAgdm9pZCBzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgSwogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5T
VVJMICpVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKKyAgICBOU1VSTCAqY29va2llVVJMID0gdXJsLmdl
dE5TVVJMKCk7CiAgICAgCiAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1MzE+LCA8cmRhcjovLzQ0MDkwMzQ+CiAgICAgLy8gY29va2llc1dpdGhSZXNwb25z
ZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNvb2tpZXMgd2l0aG91dCBhIHZhbHVlCiAgICAg
U3RyaW5nIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0ci5jb250YWlucygnPScpID8gY29va2llU3Ry
IDogY29va2llU3RyICsgIj0iOwogICAgIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBbTlNIVFRQ
Q29va2llIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVS
TDpVUkxdOwotICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFn
ZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDpVUkwgbWFpbkRvY3VtZW50VVJMOnBvbGljeUJh
c2VVUkwuZ2V0TlNVUkwoKV07ICAgIAorICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBbTlNIVFRQQ29v
a2llIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpj
b29raWVVUkxdOworICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3Rv
cmFnZV0gc2V0Q29va2llczpjb29raWVzIGZvclVSTDpjb29raWVVUkwgbWFpbkRvY3VtZW50VVJM
OnBvbGljeUJhc2VVUkwuZ2V0TlNVUkwoKV07ICAgIAogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2
aXNpb24gMjgyNTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
VVJMKE5TUGFzdGVib2FyZCogCiAgICAgCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAg
ICAKLSAgICBOU1VSTCAqVVJMID0gdXJsLmdldE5TVVJMKCk7Ci0gICAgTlNTdHJpbmcgKnVzZXJW
aXNpYmxlU3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJp
bmcoVVJMKTsKKyAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKKyAgICBOU1N0
cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT51c2Vy
VmlzaWJsZVN0cmluZyhjb2NvYVVSTCk7CiAgICAgCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5T
U3RyaW5nKil0aXRsZVN0cjsKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0gPT0gMCkgewotICAgICAg
ICB0aXRsZSA9IFtbVVJMIHBhdGhdIGxhc3RQYXRoQ29tcG9uZW50XTsKKyAgICAgICAgdGl0bGUg
PSBbW2NvY29hVVJMIHBhdGhdIGxhc3RQYXRoQ29tcG9uZW50XTsKICAgICAgICAgaWYgKFt0aXRs
ZSBsZW5ndGhdID09IDApCiAgICAgICAgICAgICB0aXRsZSA9IHVzZXJWaXNpYmxlU3RyaW5nOwog
ICAgIH0KQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKE5TUGFz
dGVib2FyZCogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvclR5cGU6V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRU
eXBlXTsKICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0Ok5TVVJMUGJvYXJkVHlwZV0pCi0g
ICAgICAgIFtVUkwgd3JpdGVUb1Bhc3RlYm9hcmQ6cGFzdGVib2FyZF07CisgICAgICAgIFtjb2Nv
YVVSTCB3cml0ZVRvUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKICAgICBpZiAoW3R5cGVzIGNvbnRh
aW5zT2JqZWN0OldlYlVSTFBib2FyZFR5cGVdKQogICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJp
bmc6dXNlclZpc2libGVTdHJpbmcgZm9yVHlwZTpXZWJVUkxQYm9hcmRUeXBlXTsKICAgICBpZiAo
W3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYlVSTE5hbWVQYm9hcmRUeXBlXSkKQEAgLTI0MCw3ICsy
NDAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgUGFz
dGVib2FyZDo6d3JpdGVVUkwobV9wYXN0ZWJvYXJkLmdldCgpLCBuaWwsIHVybCwgdGl0bGVTdHIs
IGZyYW1lKTsKIH0KIAotc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyRm9ySW1hZ2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBOU1VSTCAqVVJMKQorc3RhdGljIE5TRmlsZVdyYXBw
ZXIqIGZpbGVXcmFwcGVyRm9ySW1hZ2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBOU1VSTCAq
dXJsKQogewogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwog
ICAgIE5TRGF0YSAqZGF0YSA9IFtbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpjb3JlRGF0
YS0+cGxhdGZvcm1EYXRhKCkgCkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIE5TRmlsZVdyYXBw
ZXIqIGZpbGVXcmFwcGVyRm9ySW1hZwogICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IG5pbDsKICAg
ICBpZiAoIWNvcmVNSU1FVHlwZS5pc051bGwoKSkKICAgICAgICAgTUlNRVR5cGUgPSBjb3JlTUlN
RVR5cGU7Ci0gICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5h
bWVXaXRoTUlNRVR5cGUoVVJMLCBNSU1FVHlwZSldOworICAgIFt3cmFwcGVyIHNldFByZWZlcnJl
ZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgTUlNRVR5cGUpXTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjcwLDEyICsyNzAsMTIgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIAogICAgIEFTU0VSVChub2RlKTsKICAgICBG
cmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogCi0gICAgTlNVUkwgKlVS
TCA9IHVybC5nZXROU1VSTCgpOwotICAgIEFTU0VSVChVUkwpOworICAgIE5TVVJMICpjb2NvYVVS
TCA9IHVybC5nZXROU1VSTCgpOworICAgIEFTU0VSVChjb2NvYVVSTCk7CiAKICAgICBOU0FycmF5
KiB0eXBlcyA9IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpOwogICAgIFttX3Bhc3RlYm9hcmQuZ2V0
KCkgZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07Ci0gICAgd3JpdGVVUkwobV9wYXN0ZWJv
YXJkLmdldCgpLCB0eXBlcywgVVJMLCBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpLCBmcmFtZSk7
CisgICAgd3JpdGVVUkwobV9wYXN0ZWJvYXJkLmdldCgpLCB0eXBlcywgY29jb2FVUkwsIG5zU3Ry
aW5nTmlsSWZFbXB0eSh0aXRsZSksIGZyYW1lKTsKIAogICAgIEFTU0VSVChub2RlLT5yZW5kZXJl
cigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2UqIHJl
bmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihub2RlLT5yZW5kZXJlcigpKTsKQEAg
LTI4OSw3ICsyODksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwg
CiAgICAgU3RyaW5nIE1JTUVUeXBlID0gY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUo
KTsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNl
TUlNRVR5cGUoTUlNRVR5cGUpKTsKIAotICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2ht
ZW50KGZpbGVXcmFwcGVyRm9ySW1hZ2UoY2FjaGVkSW1hZ2UsIFVSTCkpOworICAgIHdyaXRlRmls
ZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyRm9ySW1hZ2UoY2FjaGVkSW1hZ2Us
IGNvY29hVVJMKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAg
LTMyNCwxMyArMzI0LDExIEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZy
YW0KICAgICB9CiAgICAgCiAgICAgCi0gICAgTlNVUkwgKlVSTDsKLSAgICAKLSAgICBpZiAoKFVS
TCA9IFtOU1VSTCBVUkxGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldKSkgeworICAg
IGlmIChOU1VSTCAqdXJsID0gW05TVVJMIFVSTEZyb21QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5n
ZXQoKV0pIHsKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQgdG8gY2Fs
bCBpbnRvIHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCi0gICAgICAgIC8vIGNhbGxpbmcgW1VSTCBf
d2ViX3VzZXJWaXNpYmxlU3RyaW5nXSBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEg
c2l6YWJsZSB3ZWIgb2YgCisgICAgICAgIC8vIGNhbGxpbmcgX3dlYl91c2VyVmlzaWJsZVN0cmlu
ZyBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEgc2l6YWJsZSB3ZWIgb2YgCiAgICAg
ICAgIC8vIGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhlciBiZSBkb25lIGluIGEgc2VwYXJh
dGUgcGF0Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3YXkuCi0gICAgICAgIHN0cmluZyA9
IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFVSTCk7CisgICAg
ICAgIHN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5n
KHVybCk7CiAgICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPiAwKQogICAgICAgICAgICAgcmV0
dXJuIHN0cmluZzsKICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDExICsxNzIsMTEg
QEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6cG9ydEFsbG93ZWQoY29uc3QgUgogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIC8vIEFsbG93IHBvcnRzIDIxIGFuZCAyMiBmb3IgRlRQIFVSTHMsIGFz
IE1vemlsbGEgZG9lcy4KLSAgICBpZiAoKHBvcnQgPT0gMjEgfHwgcG9ydCA9PSAyMikgJiYgcmVx
dWVzdC51cmwoKS51cmwoKS5zdGFydHNXaXRoKCJmdHA6IiwgZmFsc2UpKQorICAgIGlmICgocG9y
dCA9PSAyMSB8fCBwb3J0ID09IDIyKSAmJiByZXF1ZXN0LnVybCgpLnN0cmluZygpLnN0YXJ0c1dp
dGgoImZ0cDoiLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQWxsb3cg
YW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBp
Z25vcmVkLgotICAgIGlmIChyZXF1ZXN0LnVybCgpLnVybCgpLnN0YXJ0c1dpdGgoImZpbGU6Iiwg
ZmFsc2UpKQorICAgIGlmIChyZXF1ZXN0LnVybCgpLnN0cmluZygpLnN0YXJ0c1dpdGgoImZpbGU6
IiwgZmFsc2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHAJKHJldmlzaW9uIDI4MjUxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgUmVz
b3VyY2VSZXF1ZXN0QmFzZTo6aXNOdWxsKCkgY29uc3QKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsgCiAgICAgCi0gICAgcmV0dXJuIG1fdXJsLnVybCgpLmlzTnVsbCgpOworICAgIHJl
dHVybiBtX3VybC5zdHJpbmcoKS5pc051bGwoKTsKIH0KIAogY29uc3QgS1VSTCYgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZp
c2lvbiAyODI1MSkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVz
cG9uc2VYTUwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBt
X2RvYy0+aW1wbGVtZW50YXRpb24oKS0+Y3JlYXRlRG9jdW1lbnQoMCk7CiAgICAgICAgICAgICBt
X3Jlc3BvbnNlWE1MLT5vcGVuKCk7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5zZXRVUkwo
bV91cmwudXJsKCkpOworICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+c2V0VVJMKG1fdXJsLnN0
cmluZygpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgTGFzdC1Nb2RpZmllZCBhbmQgY29v
a2llcyAoY3VycmVudGx5LCB0aG9zZSBhcmUgb25seSBhdmFpbGFibGUgZm9yIEhUTUxEb2N1bWVu
dHMpLgogICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+d3JpdGUoU3RyaW5nKG1fcmVzcG9uc2VU
ZXh0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5maW5pc2hQYXJzaW5nKCk7CkBAIC0z
MTYsNyArMzE2LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6dXJsTWF0Y2hlc0RvY3VtZW50RAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIGJ1dCBhIHJlbW90ZSBkb2N1bWVudCBjYW4g
b25seSBsb2FkIGZyb20gdGhlIHNhbWUgcG9ydCBvbiB0aGUgc2VydmVyCi0gICAgS1VSTCBkb2N1
bWVudFVSTCA9IG1fZG9jLT5VUkwoKTsKKyAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9kb2MtPnVy
bCgpOwogICAgIGlmIChkb2N1bWVudFVSTC5wcm90b2NvbCgpLmxvd2VyKCkgPT0gdXJsLnByb3Rv
Y29sKCkubG93ZXIoKQogICAgICAgICAgICAgJiYgZG9jdW1lbnRVUkwuaG9zdCgpLmxvd2VyKCkg
PT0gdXJsLmhvc3QoKS5sb3dlcigpCiAgICAgICAgICAgICAmJiBkb2N1bWVudFVSTC5wb3J0KCkg
PT0gdXJsLnBvcnQoKSkKSW5kZXg6IFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAyODI1MSkK
KysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3
ICs4OCw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKICAgICBYU0xTdHlsZVNo
ZWV0KiBwYXJlbnRTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXBhcmVudFNo
ZWV0LT5ocmVmKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVoZWV0J3Mg
VVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRTaGVldC0+
aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSxtX3N0ckhyZWYuZGVwcmVjYXRlZFN0cmluZygpKS51
cmwoKTsKKyAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmhyZWYoKS5kZXByZWNh
dGVkU3RyaW5nKCksbV9zdHJIcmVmLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5nKCk7CiAgICAg
CiAgICAgLy8gQ2hlY2sgZm9yIGEgY3ljbGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVu
Y291bnRlciBhIHN0eWxlc2hlZXQKICAgICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhl
IHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFpbC4KSW5kZXg6IFdlYkNvcmUveG1sL1hTTFRQcm9jZXNz
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZp
c2lvbiAyODI1MSkKKysrIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTUsNyArMjU1LDcgQEAgUmVmUHRyPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEbwogICAgIAogICAgIHJlc3VsdC0+b3BlbigpOwogICAgIGlmIChzb3VyY2VJc0RvY3Vt
ZW50KSB7Ci0gICAgICAgIHJlc3VsdC0+c2V0VVJMKG93bmVyRG9jdW1lbnQtPlVSTCgpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRVUkwob3duZXJEb2N1bWVudC0+dXJsKCkpOwogICAgICAgICByZXN1
bHQtPnNldEJhc2VVUkwob3duZXJEb2N1bWVudC0+YmFzZVVSTCgpKTsKICAgICB9CiAgICAgcmVz
dWx0LT5kZXRlcm1pbmVQYXJzZU1vZGUoZG9jdW1lbnRTb3VyY2UpOyAvLyBNYWtlIHN1cmUgd2Ug
cGFyc2UgaW4gdGhlIGNvcnJlY3QgbW9kZS4KQEAgLTI5Myw3ICsyOTMsNyBAQCBzdGF0aWMgaW5s
aW5lIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjCiBzdGF0aWMgeHNsdFN0eWxlc2hlZXRQdHIg
eHNsdFN0eWxlc2hlZXRQb2ludGVyKFJlZlB0cjxYU0xTdHlsZVNoZWV0PiYgY2FjaGVkU3R5bGVz
aGVldCwgTm9kZSogc3R5bGVzaGVldFJvb3ROb2RlKQogewogICAgIGlmICghY2FjaGVkU3R5bGVz
aGVldCAmJiBzdHlsZXNoZWV0Um9vdE5vZGUpIHsKLSAgICAgICAgY2FjaGVkU3R5bGVzaGVldCA9
IG5ldyBYU0xTdHlsZVNoZWV0KHN0eWxlc2hlZXRSb290Tm9kZS0+cGFyZW50KCkgPyBzdHlsZXNo
ZWV0Um9vdE5vZGUtPnBhcmVudCgpIDogc3R5bGVzaGVldFJvb3ROb2RlLCBzdHlsZXNoZWV0Um9v
dE5vZGUtPmRvY3VtZW50KCktPlVSTCgpKTsKKyAgICAgICAgY2FjaGVkU3R5bGVzaGVldCA9IG5l
dyBYU0xTdHlsZVNoZWV0KHN0eWxlc2hlZXRSb290Tm9kZS0+cGFyZW50KCkgPyBzdHlsZXNoZWV0
Um9vdE5vZGUtPnBhcmVudCgpIDogc3R5bGVzaGVldFJvb3ROb2RlLCBzdHlsZXNoZWV0Um9vdE5v
ZGUtPmRvY3VtZW50KCktPnVybCgpKTsKICAgICAgICAgY2FjaGVkU3R5bGVzaGVldC0+cGFyc2VT
dHJpbmcoY3JlYXRlTWFya3VwKHN0eWxlc2hlZXRSb290Tm9kZSkpOwogICAgIH0KICAgICAKQEAg
LTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgaW5saW5lIHhtbERvY1B0ciB4bWxEb2NQdHJGcm9tTm9k
CiAgICAgaWYgKHNvdXJjZUlzRG9jdW1lbnQpCiAgICAgICAgIHNvdXJjZURvYyA9ICh4bWxEb2NQ
dHIpb3duZXJEb2N1bWVudC0+dHJhbnNmb3JtU291cmNlKCk7CiAgICAgaWYgKCFzb3VyY2VEb2Mp
IHsKLSAgICAgICAgc291cmNlRG9jID0gKHhtbERvY1B0cil4bWxEb2NQdHJGb3JTdHJpbmcob3du
ZXJEb2N1bWVudC0+ZG9jTG9hZGVyKCksIGNyZWF0ZU1hcmt1cChzb3VyY2VOb2RlKSwgc291cmNl
SXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPlVSTCgpIDogRGVwcmVjYXRlZFN0cmluZygpKTsK
KyAgICAgICAgc291cmNlRG9jID0gKHhtbERvY1B0cil4bWxEb2NQdHJGb3JTdHJpbmcob3duZXJE
b2N1bWVudC0+ZG9jTG9hZGVyKCksIGNyZWF0ZU1hcmt1cChzb3VyY2VOb2RlKSwgc291cmNlSXNE
b2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogRGVwcmVjYXRlZFN0cmluZygpKTsKICAg
ICAgICAgc2hvdWxkRGVsZXRlID0gKHNvdXJjZURvYyAhPSAwKTsKICAgICB9CiAgICAgcmV0dXJu
IHNvdXJjZURvYzsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjgyNTEpCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI3
LDcgKzExMjcsNyBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3RpCiAg
ICAgICAgICAgICBlbGVtZW50LCBXZWJBY3Rpb25FbGVtZW50S2V5LAogICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhJbnQ6bW91c2VFdmVudC0+YnV0dG9uKCldLCBXZWJBY3Rpb25CdXR0
b25LZXksCiAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RpZmllckZsYWdz
XSwgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleSwKLSAgICAgICAgICAgIGFjdGlvbi5VUkwoKS5n
ZXROU1VSTCgpLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKKyAgICAgICAgICAgIGFjdGlvbi51
cmwoKS5nZXROU1VSTCgpLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKICAgICAgICAgICAgIG5p
bF07CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTEzNSw3ICsxMTM1LDcgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6
YWN0aQogICAgIHJldHVybiBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50OmFjdGlvbi50eXBlKCldLCBXZWJB
Y3Rpb25OYXZpZ2F0aW9uVHlwZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
bW9kaWZpZXJGbGFnc10sIFdlYkFjdGlvbk1vZGlmaWVyRmxhZ3NLZXksCi0gICAgICAgIGFjdGlv
bi5VUkwoKS5nZXROU1VSTCgpLCBXZWJBY3Rpb25PcmlnaW5hbFVSTEtleSwKKyAgICAgICAgYWN0
aW9uLnVybCgpLmdldE5TVVJMKCksIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5LAogICAgICAgICBu
aWxdOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQkocmV2aXNpb24g
MjgyNTEpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21D
bGFzcyhOU00KIC8vIE1heSByZXR1cm4gbmlsIGlmIG5vdCBpbml0aWFsaXplZCB3aXRoIGEgVVJM
LgogLSAoTlNVUkwgKilfVVJMCiB7Ci0gICAgS1VSTCBVUkwgPSBfcHJpdmF0ZS0+bG9hZGVyLT5V
UkwoKTsKKyAgICBLVVJMIFVSTCA9IF9wcml2YXRlLT5sb2FkZXItPnVybCgpOwogICAgIHJldHVy
biBVUkwuaXNFbXB0eSgpID8gbmlsIDogVVJMLmdldE5TVVJMKCk7CiB9CiAKSW5kZXg6IFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyODI1MSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDI4LDcgKzQwMjgsNyBAQCBzdGF0aWMgV2ViRnJh
bWVWaWV3ICpjb250YWluaW5nRnJhbWVWaWV3CiAKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGUgaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25zKHNlbGYpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMuZGlk
UmVjZWl2ZUljb25Gb3JGcmFtZUZ1bmMpIHsKLSAgICAgICAgSW1hZ2UqIGltYWdlID0gaWNvbkRh
dGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKGNvcmUod2ViRnJhbWUpLT5sb2FkZXIoKS0+dXJsKCku
dXJsKCksIEludFNpemUoMTYsIDE2KSk7CisgICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25EYXRh
YmFzZSgpLT5pY29uRm9yUGFnZVVSTChjb3JlKHdlYkZyYW1lKS0+bG9hZGVyKCktPnVybCgpLnN0
cmluZygpLCBJbnRTaXplKDE2LCAxNikpOwogICAgICAgICBpZiAoTlNJbWFnZSAqaWNvbiA9IHdl
YkdldE5TSW1hZ2UoaW1hZ2UsIE5TTWFrZVNpemUoMTYsIDE2KSkpCiAgICAgICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLmRpZFJlY2VpdmVJY29uRm9yRnJhbWVG
dW5jLCBzZWxmLCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZTopLCBp
Y29uLCB3ZWJGcmFtZSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17828</attachid>
            <date>2007-12-10 14:44:02 -0800</date>
            <delta_ts>2007-12-10 21:47:39 -0800</delta_ts>
            <desc>newer URL -&gt; url patch</desc>
            <filename>LowercaseURLPatch.txt</filename>
            <type>text/plain</type>
            <size>132544</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsNyArNjE2LDcgQEAgX19aTks3V2ViQ29yZTE0RG9j
dW1lbnRMb2FkZXIxN21haW5Eb2N1bQogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOWlz
TG9hZGluZ0luQVBJU2Vuc2VFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOW9yaWdp
bmFsUmVxdWVzdENvcHlFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyMWlzTG9hZGlu
Z01haW5SZXNvdXJjZUV2Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjNVUkxFdgorX19a
Tks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIzdXJsRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50
TG9hZGVyNXRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOHJlc3BvbnNlRXYK
IF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOWlzTG9hZGluZ0V2CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfZXZlbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZv
aWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKCkgY28KICAgICAgICAgSlNPYmplY3Qq
IGNvbnN0ciA9IHByb3h5LT5nbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Db25zdHJ1Y3RvcigpOwog
ICAgICAgICBMaXN0IGFyZ3M7CiAKLSAgICAgICAgVVN0cmluZyBzb3VyY2VVUkwoZnJhbWUtPmxv
YWRlcigpLT51cmwoKS51cmwoKSk7CisgICAgICAgIFVTdHJpbmcgc291cmNlVVJMKGZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICBhcmdzLmFwcGVuZChldmVudFBhcmFt
ZXRlck5hbWUoKSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKG1fY29kZSkpOwogICAg
ICAgICBtX2xpc3RlbmVyID0gY29uc3RyLT5jb25zdHJ1Y3QoZXhlYywgYXJncywgbV9mdW5jdGlv
bk5hbWUsIHNvdXJjZVVSTCwgbV9saW5lTnVtYmVyKTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMg
b2sgPwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfbmF2aWdhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19uYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAy
ODU4NCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBKU1ZhbHVlKiBOYXZpZ2F0b3I6OmdldFZhbHVlUHJv
cGVydHkoRXhlCiAgICAgcmV0dXJuIGpzU3RyaW5nKCJOZXRzY2FwZSIpOwogICBjYXNlIEFwcFZl
cnNpb246IHsKICAgICAvLyBWZXJzaW9uIGlzIGV2ZXJ5dGhpbmcgaW4gdGhlIHVzZXIgYWdlbnQg
c3RyaW5nIHBhc3QgdGhlICJNb3ppbGxhLyIgcHJlZml4LgotICAgIGNvbnN0IFN0cmluZyB1c2Vy
QWdlbnQgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXNlckFnZW50KG1fZnJhbWUtPmRvY3VtZW50KCkg
PyBtX2ZyYW1lLT5kb2N1bWVudCgpLT5VUkwoKSA6IEtVUkwoKSk7CisgICAgY29uc3QgU3RyaW5n
IHVzZXJBZ2VudCA9IG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1l
bnQoKSA/IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpKTsKICAgICByZXR1cm4g
anNTdHJpbmcodXNlckFnZW50LnN1YnN0cmluZyh1c2VyQWdlbnQuZmluZCgnLycpICsgMSkpOwog
ICB9CiAgIGNhc2UgUHJvZHVjdDoKQEAgLTIwOSw3ICsyMDksNyBAQCBKU1ZhbHVlKiBOYXZpZ2F0
b3I6OmdldFZhbHVlUHJvcGVydHkoRXhlCiAgIGNhc2UgTGFuZ3VhZ2U6CiAgICAgcmV0dXJuIGpz
U3RyaW5nKGRlZmF1bHRMYW5ndWFnZSgpKTsKICAgY2FzZSBVc2VyQWdlbnQ6Ci0gICAgcmV0dXJu
IGpzU3RyaW5nKG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQo
KSA/IG1fZnJhbWUtPmRvY3VtZW50KCktPlVSTCgpIDogS1VSTCgpKSk7CisgICAgcmV0dXJuIGpz
U3RyaW5nKG1fZnJhbWUtPmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpIDogS1VSTCgpKSk7CiAgIGNhc2UgUGxhdGZvcm06
CiAgICAgcmV0dXJuIGpzU3RyaW5nKFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNKTsKICAgY2Fz
ZSBfUGx1Z2luczoKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAJKHJldmlzaW9uIDI4
NTg0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBLSlNQcm94eTo6aW5pdFNjcmlwdCgpCiAgICAgbV9n
bG9iYWxPYmplY3QgPSBuZXcgSlNET01XaW5kb3cobV9mcmFtZS0+ZG9tV2luZG93KCkpOwogCiAg
ICAgLy8gRklYTUU6IFdlIGNhbiBnZXQgcmlkIG9mIHRoaXMgKGFuZCBlbGltaW5hdGUgY29tcGF0
TW9kZSBlbnRpcmVseSkuCi0gICAgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZnJhbWUtPmxvYWRlcigp
LT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRvY3VtZW50KCktPlVS
TCgpIDogS1VSTCgpKTsKKyAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9mcmFtZS0+bG9hZGVyKCkt
PnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkgOiBLVVJMKCkpOwogICAgIGlmICh1c2VyQWdlbnQuZmluZCgiTWljcm9zb2Z0IikgPj0gMCB8
fCB1c2VyQWdlbnQuZmluZCgiTVNJRSIpID49IDApCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LT5z
ZXRDb21wYXRNb2RlKElFQ29tcGF0KTsKICAgICBlbHNlIHsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMva2pzX3dpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfd2luZG93LmNwcAkocmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c193aW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTEsNyArNzExLDcgQEAgdm9pZCBXaW5k
b3c6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IAogICAgICAgaWYgKHApIHsKICAgICAgICAg
aWYgKCFwLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKGltcGwoKS0+ZnJhbWUoKSkp
CiAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAt
PmxvYWRlcigpLT5jb21wbGV0ZVVSTChEZXByZWNhdGVkU3RyaW5nKHZhbHVlLT50b1N0cmluZyhl
eGVjKSkpLnVybCgpOworICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAtPmxvYWRl
cigpLT5jb21wbGV0ZVVSTChEZXByZWNhdGVkU3RyaW5nKHZhbHVlLT50b1N0cmluZyhleGVjKSkp
LmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICAgICAgaWYgKCFkc3RVcmwuc3RhcnRzV2l0aCgiamF2
YXNjcmlwdDoiLCBmYWxzZSkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkgewogICAgICAgICAg
IGJvb2wgdXNlckdlc3R1cmUgPSBwLT5zY3JpcHRQcm94eSgpLT5wcm9jZXNzaW5nVXNlckdlc3R1
cmUoKTsKICAgICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlzIEpT
IHdhcyBjYWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCkBAIC04NjAsNyArODYwLDcgQEAgYm9vbCBX
aW5kb3c6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbAogICAgIGlmICghdGFyZ2V0RnJhbWUt
PnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgewogICAgICAgICAvLyBGSVhN
RTogdGhpcyBlcnJvciBtZXNzYWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9mIHdo
eSB0aGUgc2FtZSBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KICAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3Mg
ZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+VVJMKCkudXRmOCgpLmRhdGEoKSwgb3JpZ2lu
RG9jdW1lbnQtPlVSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS51dGY4KCkuZGF0YSgpLCBvcmln
aW5Eb2N1bWVudC0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgaWYgKEludGVycHJl
dGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTY4Niw3ICsxNjg2LDcgQEAgdm9pZCBMb2NhdGlv
bjo6cHV0KEV4ZWNTdGF0ZSAqZXhlYywgY29ucwogICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihtX2ZyYW1l
KSkKICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2FkZXIo
KS0+Y29tcGxldGVVUkwoc3RyKS51cmwoKTsKKyAgICAgICAgICB1cmwgPSBmcmFtZS0+bG9hZGVy
KCktPmNvbXBsZXRlVVJMKHN0cik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9IAogICAgICAg
Y2FzZSBIYXNoOiB7CkBAIC0xNzMwLDkgKzE3MzAsOSBAQCB2b2lkIExvY2F0aW9uOjpwdXQoRXhl
Y1N0YXRlICpleGVjLCBjb25zCiAgIH0KIAogICBGcmFtZSogYWN0aXZlRnJhbWUgPSBXaW5kb3c6
OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5pbXBsKCktPmZyYW1lKCk7Ci0gIGlmICghdXJsLnVybCgp
LnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8IHNhbWVEb21haW5BY2Nlc3MpIHsK
KyAgaWYgKCF1cmwuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6Iiwg
ZmFsc2UpIHx8IHNhbWVEb21haW5BY2Nlc3MpIHsKICAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0
aXZlRnJhbWUtPnNjcmlwdFByb3h5KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgIG1f
ZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybC51cmwoKSwgYWN0aXZl
RnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCksIGZhbHNlLCB1c2VyR2VzdHVyZSk7
CisgICAgbV9mcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnN0cmlu
ZygpLCBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgZmFsc2UsIHVz
ZXJHZXN0dXJlKTsKICAgfQogfQogCkBAIC0xNzUzLDcgKzE3NTMsNyBAQCBKU1ZhbHVlKiBMb2Nh
dGlvblByb3RvRnVuY1JlcGxhY2U6OmNhbGxBCiAgICAgICBjb25zdCBXaW5kb3cqIHdpbmRvdyA9
IFdpbmRvdzo6cmV0cmlldmVXaW5kb3coZnJhbWUpOwogICAgICAgaWYgKCFzdHIuc3RhcnRzV2l0
aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgKHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vz
c0Zyb20oZXhlYykpKSB7CiAgICAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBwLT5zY3JpcHRQcm94
eSgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5z
Y2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHAtPmxvYWRlcigpLT5jb21wbGV0ZVVSTChzdHIpLnVybCgp
LCBwLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCB0cnVlLCB1c2VyR2VzdHVyZSk7Cisg
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShwLT5sb2FkZXIo
KS0+Y29tcGxldGVVUkwoc3RyKS5zdHJpbmcoKSwgcC0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSwgdHJ1ZSwgdXNlckdlc3R1cmUpOwogICAgICAgfQogICAgIH0KIApAQCAtMTc3Myw5ICsx
NzczLDkgQEAgSlNWYWx1ZSogTG9jYXRpb25Qcm90b0Z1bmNSZWxvYWQ6OmNhbGxBcwogICAgIGlm
ICghd2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT51cmwoKS51cmwoKS5zdGFydHNX
aXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSB8fCAod2luZG93ICYmIHdpbmRvdy0+YWxsb3dzQWNj
ZXNzRnJvbShleGVjKSkpIHsKLSAgICAgIGJvb2wgdXNlckdlc3R1cmUgPSBXaW5kb3c6OnJldHJp
ZXZlQWN0aXZlKGV4ZWMpLT5pbXBsKCktPmZyYW1lKCktPnNjcmlwdFByb3h5KCktPnByb2Nlc3Np
bmdVc2VyR2VzdHVyZSgpOwotICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZVJlZnJlc2go
dXNlckdlc3R1cmUpOworICAgIGlmICghZnJhbWUtPmxvYWRlcigpLT51cmwoKS5kZXByZWNhdGVk
U3RyaW5nKCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgKHdpbmRvdyAmJiB3
aW5kb3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSB7CisgICAgICAgIGJvb2wgdXNlckdlc3R1
cmUgPSBXaW5kb3c6OnJldHJpZXZlQWN0aXZlKGV4ZWMpLT5pbXBsKCktPmZyYW1lKCktPnNjcmlw
dFByb3h5KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOworICAgICAgICBmcmFtZS0+bG9hZGVy
KCktPnNjaGVkdWxlUmVmcmVzaCh1c2VyR2VzdHVyZSk7CiAgICAgfQogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgSlNWYWx1ZSogTG9jYXRpb25Qcm90
b0Z1bmNBc3NpZ246OmNhbGxBcwogICAgICAgICBpZiAoIXAtPmxvYWRlcigpLT5zaG91bGRBbGxv
d05hdmlnYXRpb24oZnJhbWUpKQogICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
ICAgICBjb25zdCBXaW5kb3cgKndpbmRvdyA9IFdpbmRvdzo6cmV0cmlldmVXaW5kb3coZnJhbWUp
OwotICAgICAgICBEZXByZWNhdGVkU3RyaW5nIGRzdFVybCA9IHAtPmxvYWRlcigpLT5jb21wbGV0
ZVVSTChEZXByZWNhdGVkU3RyaW5nKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKSkudXJsKCk7Cisg
ICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZHN0VXJsID0gcC0+bG9hZGVyKCktPmNvbXBsZXRlVVJM
KERlcHJlY2F0ZWRTdHJpbmcoYXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKS5kZXByZWNhdGVkU3Ry
aW5nKCk7CiAgICAgICAgIGlmICghZHN0VXJsLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFs
c2UpIHx8ICh3aW5kb3cgJiYgd2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKSkgewogICAg
ICAgICAgICAgYm9vbCB1c2VyR2VzdHVyZSA9IHAtPnNjcmlwdFByb3h5KCktPnByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0g
aWYgdGhpcyBKUyB3YXMgY2FsbGVkIHZpYSBhIHVzZXIgZ2VzdHVyZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDI4NTg0KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAg
LTEsMTAgKzEsOSBAQAogIyAKLSMgS0RPTSBJREwgcGFyc2VyCisjIFdlYktpdCBJREwgcGFyc2Vy
CiAjCiAjIENvcHlyaWdodCAoQykgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21h
aWwuY29tPgotIyAKLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CisjIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0zNTksNCArMzU4LDI2IEBAIHN1YiBTY2FuRGlyZWN0b3J5CiAgICAgfQog
fQogCisjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0
IHN0eWxlIGd1aWRlbGluZXMuIAorIyBFLmcuLCB4bWxFbmNvZGluZyBiZWNvbWVzIFhNTEVuY29k
aW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxsYW5nLgorc3ViIFdLX3VjZmlyc3QKK3sKKyAg
ICBteSAoJG9iamVjdCwgJHBhcmFtKSA9IEBfOworICAgIHByaW50IFNUREVSUiAicGFyYW0gaXMg
JHBhcmFtXG4iOworICAgIG15ICRyZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7CisgICAgJHJldCA9fiBz
L1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0vOworICAgIHByaW50IFNUREVSUiAicmV0
IGlzICRyZXRcbiI7CisgICAgcmV0dXJuICRyZXQ7Cit9CisKKyMgTG93ZXJjYXNlIHRoZSBmaXJz
dCBsZXR0ZXIgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQgc3R5bGUgZ3VpZGVsaW5lcy4gCisjIFVS
TCBiZWNvbWVzIHVybCwgYnV0IFNldFVSTCBiZWNvbWVzIHNldFVSTC4KK3N1YiBXS19sY2ZpcnN0
Cit7CisgICAgbXkgKCRvYmplY3QsICRwYXJhbSkgPSBAXzsKKyAgICBteSAkcmV0ID0gbGNmaXJz
dCgkcGFyYW0pOworICAgICRyZXQgPX4gcy91UkwvdXJsLzsKKyAgICByZXR1cm4gJHJldDsKK30K
KwogMTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09N
LnBtCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yQ09NLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02MTYsNyArNjE2LDcgQEAgc3ViIEdlbmVy
YXRlQ1BQQXR0cmlidXRlCiAgICAgcHVzaChAZ2V0dGVySW1wbGVtZW50YXRpb24sICIgICAgaWYg
KCFyZXN1bHQpXG4iKTsKICAgICBwdXNoKEBnZXR0ZXJJbXBsZW1lbnRhdGlvbiwgIiAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjtcblxuIik7CiAKLSAgICBteSAkaW1wbGVtZW50YXRpb25HZXR0ZXIg
PSAiaW1wbCR7aW1wbGVtZW50YXRpb25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCktPiR7YXR0cmli
dXRlTmFtZX0oIiAuICgkaGFzR2V0dGVyRXhjZXB0aW9uID8gImVjIiA6ICIiKS4gIikiOworICAg
IG15ICRpbXBsZW1lbnRhdGlvbkdldHRlciA9ICJpbXBsJHtpbXBsZW1lbnRhdGlvbkNsYXNzV2l0
aG91dE5hbWVzcGFjZX0oKS0+IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1
dGVOYW1lKSAuICIoIiAuICgkaGFzR2V0dGVyRXhjZXB0aW9uID8gImVjIiA6ICIiKS4gIikiOwog
CiAgICAgcHVzaChAZ2V0dGVySW1wbGVtZW50YXRpb24sICIgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7XG4iKSBpZiAkaGFzR2V0dGVyRXhjZXB0aW9uOwogCkBAIC03NjMsNyArNzYz
LDcgQEAgc3ViIEdlbmVyYXRlQ1BQRnVuY3Rpb24KICAgICB9CiAKICAgICBteSAkY2FsbFNpZ0Jl
Z2luID0gIiAgICAiOwotICAgIG15ICRjYWxsU2lnTWlkZGxlID0gIiR7aW1wbGVtZW50YXRpb25H
ZXR0ZXJ9LT4ke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRlckxpc3QpIC4g
IikiOworICAgIG15ICRjYWxsU2lnTWlkZGxlID0gIiR7aW1wbGVtZW50YXRpb25HZXR0ZXJ9LT4i
IC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uTmFtZSkgLiAiKCIgLiBqb2lu
KCIsICIsIEBwYXJhbWV0ZXJMaXN0KSAuICIpIjsKICAgICBteSAkY2FsbFNpZ0VuZCA9ICI7XG4i
OwogCiAgICAgaWYgKGRlZmluZWQgJG5lZWRzQ3VzdG9teyJOb2RlVG9SZXR1cm4ifSkgewpAQCAt
MTIxOCw3ICsxMjE4LDcgQEAgc3ViIFdyaXRlRGF0YQogICAgIHByaW50IE9VVFBVVElETCBASURM
SGVhZGVyOwogCiAgICAgIyBBZGQgZm9yd2FyZCBkZWNsYXJhdGlvbnMgYW5kIGltb3J0cwotICAg
IGRlbGV0ZSAkSURMRm9yd2FyZERlY2xhcmF0aW9uc3trZXlzKCVJRExEb250Rm9yd2FyZERlY2xh
cmUpfTsNCisgICAgZGVsZXRlICRJRExGb3J3YXJkRGVjbGFyYXRpb25ze2tleXMoJUlETERvbnRG
b3J3YXJkRGVjbGFyZSl9OwogICAgIGRlbGV0ZSAkSURMSW1wb3J0c3trZXlzKCVJRExEb250SW1w
b3J0KX07CiAKICAgICBwcmludCBPVVRQVVRJREwgbWFwIHsgImNwcF9xdW90ZShcImludGVyZmFj
ZSAkXztcIilcbiIgfSBzb3J0IGtleXMoJUlETEZvcndhcmREZWNsYXJhdGlvbnMpOwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
ODU4NCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTgxLDE2ICs4MSw2IEBAIHN1YiBsZWZ0U2hpZnQoJCQpIHsKICAgICBy
ZXR1cm4gKCgkdmFsdWUgPDwgJGRpc3RhbmNlKSAmIDB4RkZGRkZGRkYpOwogfQogCi0jIFVwcGVy
Y2FzZSB0aGUgZmlyc3QgbGV0dGVyLCB3aGlsZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBndWlk
ZWxpbmVzLiAKLSMgRS5nLiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNvZGluZywgYnV0IHht
bGxsYW5nIGJlY29tZXMgWG1sbGFuZy4KLXN1YiBXS191Y2ZpcnN0Ci17Ci0gICAgbXkgJHBhcmFt
ID0gc2hpZnQ7Ci0gICAgbXkgJHJldCA9IHVjZmlyc3QoJHBhcmFtKTsKLSAgICAkcmV0ID1+IHMv
WG1sL1hNTC8gaWYgJHJldCA9fiAvXlhtbFteYS16XS87Ci0gICAgcmV0dXJuICRyZXQ7Ci19Ci0K
ICMgUGFyYW1zOiAnZG9tQ2xhc3MnIHN0cnVjdAogc3ViIEdlbmVyYXRlSW50ZXJmYWNlCiB7CkBA
IC00MTAsOSArNDAwLDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuICAgICAgICAiKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgbXkgJHZhbHVlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1
Y3RvciQvCi0gICAgICAgICAgICAgICAgICAgICAgPyAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUgLiAiQ29uc3RydWN0b3JBdHRyTnVtIgotICAgICAgICAgICAgICAgICAgICAgIDogV0tfdWNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIkF0dHJOdW0iOworICAgICAgICAg
ICAgbXkgJHZhbHVlID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lKQorICAgICAgICAgICAgICAgIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIikKKyAgICAgICAgICAg
ICAgICAuICJBdHRyTnVtIjsKICAgICAgICAgICAgICR2YWx1ZSAuPSAiLCAiIGlmICgoJGkgPCAk
bnVtQXR0cmlidXRlcyAtIDEpIG9yICgoJGkgZXEgJG51bUF0dHJpYnV0ZXMgLSAxKSBhbmQgKCgk
bnVtRnVuY3Rpb25zIG5lIDApIG9yICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikdl
bmVyYXRlQ29uc3RydWN0b3IifSkpKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICR2YWx1ZSk7CiAgICAgICAgIH0KQEAgLTQzMSwxNSArNDIxLDE1IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJp
YnV0ZXN9KSB7CiAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZSAuICIoS0pTOjpFeGVjU3RhdGUqKSBjb25zdDtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4gJGNvZGVHZW5lcmF0b3ItPldL
X2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUq
KSBjb25zdDtcbiIpOwogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBlICF+IC9e
cmVhZG9ubHkvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgdm9pZCBzZXQiIC4gV0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4g
IihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3Rh
dGUqLCBLSlM6OkpTVmFsdWUqKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUdldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBLSlM6OkpTVmFsdWUqICIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiKEtKUzo6
RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKikgY29uc3Q7XG4i
KTsKICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIgLiBXS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7XG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUp
IC4gIihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1ZSopO1xuIik7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTMsNyArNDQzLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiAgICAvLyBDdXN0
b20gZnVuY3Rpb25zXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFO
b2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSkgewotICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUgLiAiKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0Jik7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAu
ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSAu
ICIoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3QmKTtcbiIpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQpAQCAtNTUxLDcgKzU0MSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRl
cgogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChA
eyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgcHJvdG90eXBlRnVuY3Rpb25Gb3IoJGNsYXNzTmFtZSwgV0tfdWNmaXJzdCgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+bmFtZSkpKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIHBy
b3RvdHlwZUZ1bmN0aW9uRm9yKCRjbGFzc05hbWUsICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKSkpOwogICAgICAgICB9ICAgICAgICAKICAgICB9
CiAKQEAgLTYyMiw5ICs2MTIsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAg
ICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgICAgICBteSAkdmFsdWUgPSAkY2xh
c3NOYW1lIC4gIjo6IiAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVj
dG9yJC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIkNvbnN0cnVjdG9yQXR0ck51bSIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogV0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWUpIC4gIkF0dHJOdW0iKTsKKyAgICAgICAgICAgIG15ICR2YWx1ZSA9ICRjbGFzc05h
bWUgLiAiOjoiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKQorICAgICAgICAgICAgICAgIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIikKKyAgICAgICAgICAgICAg
ICAuICJBdHRyTnVtIjsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZXMsICR2YWx1ZSk7CiAK
ICAgICAgICAgICAgIG15IEBzcGVjaWFscyA9ICgpOwpAQCAtNzE0LDcgKzcwNCw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CiAgICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAg
bXkgJHZhbHVlID0gIiYiIC4gJGNsYXNzTmFtZSAuICJQcm90b3R5cGVGdW5jdGlvbiIgLiBXS191
Y2ZpcnN0KCRuYW1lKSAuICI6OmNyZWF0ZSI7CisgICAgICAgIG15ICR2YWx1ZSA9ICImIiAuICRj
bGFzc05hbWUgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJG5hbWUpIC4gIjo6Y3JlYXRlIjsKICAgICAgICAgcHVzaChAaGFzaFZhbHVlcywgJHZhbHVl
KTsKIAogICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKQEAgLTkwNywxOCArODk3LDE2IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHN3aXRjaCAodG9rZW4pIHtcbiIpOwogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpOwogCiAgICAgICAgICAgICBteSAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiA9
ICIiOwogICAgICAgICAgICAgaWYgKCEkcG9kVHlwZSBhbmQgKCRjb2RlR2VuZXJhdG9yLT5Jc1NW
R0FuaW1hdGVkVHlwZSgkaW1wbENsYXNzTmFtZSkgb3IgJGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJl
YWRvbmx5LykpIHsKICAgICAgICAgICAgICAgICAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVy
c2lvbiA9ICRpbXBsQ2xhc3NOYW1lOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gJG5hbWUgLiAiQ29uc3Ry
dWN0b3JBdHRyTnVtOiB7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAi
QXR0ck51bToge1xuIik7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBjYXNlICIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWUpCisgICAgICAgICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKQorICAgICAg
ICAgICAgICAgIC4gIkF0dHJOdW06IHtcbiIpOwogCiAgICAgICAgICAgICBpZiAoJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9ICYmICEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9tYWluU2Vj
dXJpdHkifSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBp
ZiAoIWFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKQEAgLTkyNiwzMyArOTE0LDMyIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifSB8
fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0
ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gJG5hbWUoZXhlYyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuICRnZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYyk7XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNoZWNrTm9kZVNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJr
anNfZG9tLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGlt
cGwoKSk7XG5cbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgaW1wLT4kbmFtZSgpKSA/ICIgLiBOYXRp
dmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGlt
cGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRuYW1lKCkiKSAuICIgOiBqc1Vu
ZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGlt
cGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgp
KSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENs
YXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJG
dW5jdGlvbk5hbWUoKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgIH0g
ZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNr
RnJhbWVTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRG9jdW1l
bnQuaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJranNfZG9tLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xh
c3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG5cbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2hl
Y2tOb2RlU2VjdXJpdHkoZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkgPyAiIC4gTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1w
bENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JG5hbWUoKSIpIC4gIiA6IGpzVW5k
ZWZpbmVkKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1w
bCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkgPyAi
IC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgIDAsICRpbXBsQ2xhc3NO
YW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0
aW9uTmFtZSgpIikgLiAiIDoganNVbmRlZmluZWQoKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAg
ICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1v
ZHVsZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgICAgICAgICAgICRjb25z
dHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXRDb25zdHJ1Y3RvcihleGVjKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoIUB7JGF0dHJp
YnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30pIHsKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RU
eXBlIGltcCgqaW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRwb2RUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpT
U1ZHTnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAw
LCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kbmFtZSgpIikgLiAiO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwg
IiIsICJpbXAuJGdldHRlckZ1bmN0aW9uTmFtZSgpIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19j
YXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGlj
X2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IG15ICR0eXBlID0gJGNvZGVHZW5lcmF0b3ItPlN0cmlwTW9kdWxlKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFz
c05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRuYW1lKCkiKTsKLQorICAgICAgICAgICAg
ICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAi
aW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBSZWZQdHI8JHR5cGU+IG9iaiA9
ICRqc1R5cGU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBvYmouZ2V0KCksIGltcCk7XG4iKTsKQEAgLTk2
NCwxMSArOTUxLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7
CiAKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcblxuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6OkpT
VmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJG5hbWUoZWMpIikgLiAiO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAo
KmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiIiwgImltcC4kZ2V0dGVyRnVuY3Rp
b25OYW1lKGVjKSIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSog
aW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuXG4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEtKUzo6SlNWYWx1ZSog
cmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRp
bXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29udmVyc2lvbiwgImltcC0+JG5h
bWUoZWMpIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05h
bWUqPihpbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JW
YWx1ZUNvbnZlcnNpb24sICJpbXAtPiRnZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIikgLiAiO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKTsKQEAgLTEwMTcsMTIgKzEw
MDQsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGZvcmVhY2gg
bXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUgIX4gL15yZWFkb25seS8pIHsKICAgICAgICAgICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNm
aXJzdCgkbmFtZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gJG5hbWUgLiJDb25zdHJ1Y3RvckF0dHJO
dW06IHtcbiIpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gV0tfdWNmaXJzdCgkbmFt
ZSkgLiAiQXR0ck51bToge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKQorICAgICAgICAgICAgICAg
ICAgICAgICAgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQv
ID8gIkNvbnN0cnVjdG9yIiA6ICIiKQorICAgICAgICAgICAgICAgICAgICAgICAgLiAiQXR0ck51
bToge1xuIik7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja0RvbWFpblNlY3VyaXR5In0pIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAo
IWFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKQEAgLTEwMzAsNyArMTAxNiw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBzZXQiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKGV4ZWMsIHZhbHVl
KTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHNldCRzZXR0ZXJGdW5jdGlvbk5hbWUoZXhlYywgdmFsdWUpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3Ry
dWN0b3IkLykgewogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgICRj
b25zdHJ1Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKQEAgLTEwNDEsMTcgKzEwMjcsMTcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6cHV0KGV4ZWMsIFwiJG5hbWVcIiwg
dmFsdWUpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
JHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCRwb2RUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpbXAgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZh
bHVlIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGltcC5zZXQiIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAuc2V0JHNldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
InZhbHVlIikgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgbV9pbXBs
LT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1l
Kj4oaW1wbCgpKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1w
bENsYXNzTmFtZSo+KGltcGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBA
eyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpbXAtPnNldCIgLiBXS191Y2ZpcnN0KCRu
YW1lKSAuICIoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1
ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgaW1wLT5zZXQkc2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIsIGVjIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNl
cHRpb25zfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
Iik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+
c2V0dGVyRXhjZXB0aW9uc307CkBAIC0xMDgxLDIyICsxMDY3LDIyIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgIyBGdW5jdGlvbnMKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDAp
IHsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9
KSB7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25DbGFzc05hbWUgPSAkY2xhc3NOYW1lIC4gIlBy
b3RvdHlwZUZ1bmN0aW9uIiAuIFdLX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUp
OworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2xhc3NOYW1lID0gJGNsYXNzTmFtZSAuICJQcm90
b3R5cGVGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFsdWUq
ICR7ZnVuY3Rpb25DbGFzc05hbWV9OjpjYWxsQXNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JiBhcmdzKVxuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmJHtjbGFzc05hbWV9OjppbmZvKSlcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IpO1xuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpO1xuIik7CiAKICAgICAgICAg
ICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7CiAKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXNP
YmogPSBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iaik7XG4iKTsKIAogICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
In0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IGNhc3RlZFRoaXNPYmotPiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoZXhlYywg
YXJncyk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGNhc3RlZFRoaXNPYmotPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiKGV4ZWMsIGFyZ3MpO1xuIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSkgewogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1NWR1BPRFR5cGVXcmFwcGVyPCRwb2RU
eXBlPiogd3JhcHBlciA9IGNhc3RlZFRoaXNPYmotPmltcGwoKTtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkcG9kVHlwZSBpbXAoKndyYXBwZXIpO1xu
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHBvZFR5
cGUgaW1wKCp3cmFwcGVyKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAg
PSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXNPYmotPmltcGwoKSk7XG4i
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMTE5LDcgKzExMDUsNyBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG15ICRw
YXJhbUluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiaW1w
IiAuICgkcG9kVHlwZSA/ICIuIiA6ICItPiIpIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
LiAiKCI7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gImltcCIgLiAoJHBv
ZFR5cGUgPyAiLiIgOiAiLT4iKSAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lKSAuICIoIjsKIAogICAgICAgICAgICAgICAgIG15ICRoYXNPcHRp
b25hbEFyZ3VtZW50cyA9IDA7CiAKQEAgLTEyNjYsNyArMTI1Miw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAic2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0aW9uLT5y
YWlzZXNFeGNlcHRpb25zfTsKIAogICAgICAgICBpZiAoJHBvZFR5cGUpIHsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShleGVj
LCBpbXApO1xuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IndyYXBwZXItPmNvbW1pdENoYW5nZShleGVjLCBpbXApO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICJpZiAoY2FzdGVkVGhpc09iai0+Y29udGV4dCgpKVxu
Iik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgY2FzdGVk
VGhpc09iai0+Y29udGV4dCgpLT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTtcbiIpOwogICAgICAg
ICB9CkBAIC0xMjc3LDcgKzEyNjMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgpCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307
CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcblxuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRD
aGFuZ2UoZXhlYywgaW1wKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAiaWYgKGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSlcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIGNhc3RlZFRoaXNPYmotPmNvbnRleHQo
KS0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7XG4iKTsKICAgICAgICAgfQpAQCAtMTQ2MSw3ICsx
NDQ3LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICAkZ2V0dGVyID1+IHMvaW1wLT4v
LzsKICAgICAgICAgJGdldHRlciA9fiBzL1woXCkvLzsKIAotICAgICAgICBteSAkc2V0dGVyID0g
InNldCIgLiBXS191Y2ZpcnN0KCRnZXR0ZXIpOworICAgICAgICBteSAkc2V0dGVyID0gInNldCIg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2V0dGVyKTsKIAogICAgICAgICBpZiAoJGlt
cGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24gZXEgIiIpIHsKICAgICAgICAgICAgIGlmIChJ
c1NWR1R5cGVOZWVkaW5nQ29udGV4dFBhcmFtZXRlcigkaW1wbENsYXNzTmFtZSkpIHsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0JKHJldmlz
aW9uIDI4NTg0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTYgKzIwMyw2IEBAIHN1YiBmaW5pc2gKICAgICBt
eSAkb2JqZWN0ID0gc2hpZnQ7CiB9CiAKLSMgVXBwZXJjYXNlIHRoZSBmaXJzdCBsZXR0ZXIsIHdo
aWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuIAotIyBFLmcuLCB4bWxFbmNv
ZGluZyBiZWNvbWVzIFhNTEVuY29kaW5nLCBidXQgeG1sbGFuZyBiZWNvbWVzIFhtbGxhbmcuCi1z
dWIgV0tfdWNmaXJzdAotewotICAgIG15ICRwYXJhbSA9IHNoaWZ0OwotICAgIG15ICRyZXQgPSB1
Y2ZpcnN0KCRwYXJhbSk7Ci0gICAgJHJldCA9fiBzL1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxb
XmEtel0vOwotICAgIHJldHVybiAkcmV0OwotfQotCiBzdWIgUmVhZFB1YmxpY0ludGVyZmFjZXMK
IHsKICAgICBteSAkY2xhc3MgPSBzaGlmdDsKQEAgLTEwNjUsNyArMTA1NSw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAjIC0gR0VUVEVSCiAgICAgICAgICAgICBt
eSAkZ2V0dGVyU2lnID0gIi0gKCRhdHRyaWJ1dGVUeXBlKSRhdHRyaWJ1dGVJbnRlcmZhY2VOYW1l
XG4iOwogICAgICAgICAgICAgbXkgJGhhc0dldHRlckV4Y2VwdGlvbiA9IEB7JGF0dHJpYnV0ZS0+
Z2V0dGVyRXhjZXB0aW9uc307Ci0gICAgICAgICAgICBteSAkZ2V0dGVyQ29udGVudEhlYWQgPSAi
SU1QTC0+JGF0dHJpYnV0ZU5hbWUoIjsKKyAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50SGVh
ZCA9ICJJTVBMLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZU5hbWUp
IC4gIigiOwogICAgICAgICAgICAgbXkgJGdldHRlckNvbnRlbnRUYWlsID0gIikiOwogCiAgICAg
ICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgRE9NU1ZHTnVtYmVyCkBAIC0xMTYzLDcgKzExNTMs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICMgRXhjZXB0
aW9uIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAgbXkgJGhhc1NldHRlckV4Y2VwdGlvbiA9IEB7
JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAKLSAgICAgICAgICAgICAgICAkYXR0cmli
dXRlTmFtZSA9ICJzZXQiIC4gV0tfdWNmaXJzdCgkYXR0cmlidXRlTmFtZSk7CisgICAgICAgICAg
ICAgICAgJGF0dHJpYnV0ZU5hbWUgPSAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRhdHRyaWJ1dGVOYW1lKTsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyTmFtZSA9ICJzZXQi
IC4gdWNmaXJzdCgkYXR0cmlidXRlSW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgbXkg
JGFyZ05hbWUgPSAibmV3IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUpOwogICAg
ICAgICAgICAgICAgIG15ICRhcmcgPSBHZXRPYmpDVHlwZUdldHRlcigkYXJnTmFtZSwgJGlkbFR5
cGUpOwpAQCAtMTI5NSw3ICsxMjg1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgIG15ICRzdmdNYXRyaXhJbnZlcnNlID0gKCRwb2RUeXBlIGFuZCAkcG9kVHlwZSBl
cSAiQWZmaW5lVHJhbnNmb3JtIiBhbmQgJGZ1bmN0aW9uTmFtZSBlcSAiaW52ZXJzZSIpOwogCiAg
ICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJOYW1lcywgImVjIikgaWYgJHJhaXNlc0V4Y2VwdGlv
bnMgYW5kICEoJHN2Z01hdHJpeFJvdGF0ZUZyb21WZWN0b3IgfHwgJHN2Z01hdHJpeEludmVyc2Up
OwotICAgICAgICAgICAgbXkgJGNvbnRlbnQgPSAkY2FsbGVyIC4gIi0+IiAuICRmdW5jdGlvbk5h
bWUgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJOYW1lcykgLiAiKSI7IAorICAgICAgICAg
ICAgbXkgJGNvbnRlbnQgPSAkY2FsbGVyIC4gIi0+IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2Zp
cnN0KCRmdW5jdGlvbk5hbWUpIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4g
IikiOyAKIAogICAgICAgICAgICAgaWYgKCRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yKSB7CiAg
ICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2Ugd2l0aCByb3RhdGVGcm9tVmVjdG9yICYgU1ZH
TWF0cml4ICAgICAgICAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCShyZXZpc2lvbiAyODU4NCkK
KysrIFdlYkNvcmUvY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgQ1NTSW1wb3J0UnVsZTo6aW5zZXJ0ZWRJbnRvUGFyZW50KCkKICAgICBD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAo
IXBhcmVudFNoZWV0LT5ocmVmKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5
bGVoZWV0J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJl
bnRTaGVldC0+aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgbV9zdHJIcmVmLmRlcHJlY2F0ZWRT
dHJpbmcoKSkudXJsKCk7CisgICAgICAgIGFic0hyZWYgPSBLVVJMKHBhcmVudFNoZWV0LT5ocmVm
KCkuZGVwcmVjYXRlZFN0cmluZygpLCBtX3N0ckhyZWYuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJp
bmcoKTsKIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4uICBJ
ZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFpbiB3
aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlz
aW9uIDI4NTg0KQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODIxLDcgKzgyMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQs
IGIKICNlbmRpZgogICAgICAgICAgICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU0N1cnNvckltYWdlVmFsdWUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJh
c2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoc3R5bGVFbGVtZW50LT5i
YXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJp
bmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdHNwb3QsIHN0eWxlRWxl
bWVudCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTg4NCw3ICs4ODQs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgICAg
ICBTdHJpbmcgdXJpID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpKTsKICAgICAg
ICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gbmV3IENTU0ltYWdlVmFsdWUoCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyhLVVJMKHN0
eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRT
dHJpbmcoKSkudXJsKCkpLAorICAgICAgICAgICAgICAgICAgICBLVVJMKHN0eWxlRWxlbWVudC0+
YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3Ry
aW5nKCksCiAgICAgICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCk7CiAgICAgICAgICAgICAg
ICAgdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICB9CkBAIC0xODQ5LDcgKzE4NDksNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsCiAgICAgICAgICAgICAv
LyB1cmwKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVVJMKGRvbVN0cmluZyh2YWwt
PnN0cmluZykpOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTSW1hZ2VWYWx1ZSgK
LSAgICAgICAgICAgICAgICBTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXBy
ZWNhdGVkU3RyaW5nKCksIHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBzdHlsZUVs
ZW1lbnQpOworICAgICAgICAgICAgICAgIEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVw
cmVjYXRlZFN0cmluZygpLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpLCBzdHls
ZUVsZW1lbnQpOwogICAgICAgICB9IGVsc2UgaWYgKHZhbC0+dW5pdCA9PSBWYWx1ZTo6RnVuY3Rp
b24pIHsKICAgICAgICAgICAgIC8vIGF0dHIoWCkgfCBjb3VudGVyKFggWyxZXSkgfCBjb3VudGVy
cyhYLCBZLCBbLFpdKQogICAgICAgICAgICAgVmFsdWVMaXN0ICphcmdzID0gdmFsLT5mdW5jdGlv
bi0+YXJnczsKQEAgLTE5MTUsNyArMTkxNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJhY2tn
cm91bmRJbWFnZShDU1MKICAgICBpZiAodmFsdWVMaXN0LT5jdXJyZW50KCktPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJM
KGRvbVN0cmluZyh2YWx1ZUxpc3QtPmN1cnJlbnQoKS0+c3RyaW5nKSk7CiAgICAgICAgIGlmICgh
dXJpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlID0gbmV3IENTU0ltYWdlVmFsdWUoU3Ry
aW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmku
ZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSksIAorICAgICAgICAgICAgdmFsdWUgPSBuZXcgQ1NT
SW1hZ2VWYWx1ZShLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmco
KSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KQEAgLTI3NjEsNyArMjc2MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRG
YWNlU3JjKCkKICAgICAgICAgcGFyc2VkVmFsdWUgPSAwOwogICAgICAgICBpZiAodmFsLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJICYmICFleHBlY3RDb21tYSkgewogICAgICAg
ICAgICAgU3RyaW5nIHZhbHVlID0gcGFyc2VVUkwoZG9tU3RyaW5nKHZhbC0+c3RyaW5nKSk7Ci0g
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IG5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKFN0cmluZyhL
VVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUuZGVw
cmVjYXRlZFN0cmluZygpKS51cmwoKSksIGZhbHNlKTsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gbmV3IENTU0ZvbnRGYWNlU3JjVmFsdWUoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5k
ZXByZWNhdGVkU3RyaW5nKCksIHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5nKCksIGZh
bHNlKTsKICAgICAgICAgICAgIHVyaVZhbHVlID0gcGFyc2VkVmFsdWU7CiAgICAgICAgICAgICBh
bGxvd0Zvcm1hdCA9IHRydWU7CiAgICAgICAgICAgICBleHBlY3RDb21tYSA9IHRydWU7CkBAIC0z
MjE2LDcgKzMyMTYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQgcHJv
CiAgICAgaWYgKHVyaS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBjb250ZXh0LmNvbW1pdEltYWdlKG5ldyBDU1NJbWFnZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxl
RWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJp
bmcoKSkudXJsKCkpLAorICAgIGNvbnRleHQuY29tbWl0SW1hZ2UobmV3IENTU0ltYWdlVmFsdWUo
S1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXBy
ZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlRWxlbWVudCkpOwogICAgIHdoaWxl
ICgodmFsID0gdmFsdWVMaXN0LT5uZXh0KCkpKSB7CiAgICAgICAgIGlmIChjb250ZXh0LmFsbG93
TnVtYmVyKCkgJiYgdmFsaWRVbml0KHZhbCwgRkludGVnZXJ8Rk5vbk5lZ3xGUGVyY2VudCwgdHJ1
ZSkpIHsKQEAgLTM3NzgsNyArMzc3OCw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlQ2hh
cnNldFJ1bGUoY28KICAgICByZXR1cm4gcnVsZTsKIH0KIAotQ1NTUnVsZSogQ1NTUGFyc2VyOjpj
cmVhdGVJbXBvcnRSdWxlKGNvbnN0IFBhcnNlU3RyaW5nJiBVUkwsIE1lZGlhTGlzdCogbWVkaWEp
CitDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3QgUGFyc2VTdHJpbmcm
IHVybCwgTWVkaWFMaXN0KiBtZWRpYSkKIHsKICAgICBpZiAoIW1lZGlhKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTM3ODYsNyArMzc4Niw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlSW1w
b3J0UnVsZShjb24KICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCFzdHlsZUVsZW1lbnQtPmlz
Q1NTU3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBDU1NJbXBvcnRSdWxlKiBy
dWxlID0gbmV3IENTU0ltcG9ydFJ1bGUoc3R5bGVFbGVtZW50LCBkb21TdHJpbmcoVVJMKSwgbWVk
aWEpOworICAgIENTU0ltcG9ydFJ1bGUqIHJ1bGUgPSBuZXcgQ1NTSW1wb3J0UnVsZShzdHlsZUVs
ZW1lbnQsIGRvbVN0cmluZyh1cmwpLCBtZWRpYSk7CiAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMu
YXBwZW5kKHJ1bGUpOwogICAgIHJldHVybiBydWxlOwogfQpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKICAgICB1LnNldFF1ZXJ5KERlcHJlY2F0ZWRTdHJp
bmc6Om51bGwpOwogICAgIHUuc2V0UmVmKERlcHJlY2F0ZWRTdHJpbmc6Om51bGwpOwotICAgIGVu
Y29kZWR1cmwuZmlsZSA9IHUudXJsKCk7CisgICAgZW5jb2RlZHVybC5maWxlID0gdS5kZXByZWNh
dGVkU3RyaW5nKCk7CiAgICAgaW50IHBvcyA9IGVuY29kZWR1cmwuZmlsZS5maW5kUmV2KCcvJyk7
CiAgICAgZW5jb2RlZHVybC5wYXRoID0gZW5jb2RlZHVybC5maWxlOwogICAgIGlmIChwb3MgPiAw
KSB7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVk
VVJMKGNvbgogICAgICAgICBlbmNvZGVkdXJsLnBhdGggKz0gJy8nOwogICAgIH0KICAgICB1LnNl
dFBhdGgoRGVwcmVjYXRlZFN0cmluZzo6bnVsbCk7Ci0gICAgZW5jb2RlZHVybC5ob3N0ID0gdS51
cmwoKTsKKyAgICBlbmNvZGVkdXJsLmhvc3QgPSB1LmRlcHJlY2F0ZWRTdHJpbmcoKTsKIH0KIAog
Q1NTU3R5bGVTZWxlY3Rvcjo6fkNTU1N0eWxlU2VsZWN0b3IoKQpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29u
c3QgU3QKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKGZyYW1lICYmIHBhcnNlSFRU
UFJlZnJlc2goY29udGVudCwgdHJ1ZSwgZGVsYXksIHVybCkpIHsKICAgICAgICAgICAgIGlmICh1
cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJs
KCkudXJsKCk7CisgICAgICAgICAgICAgICAgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKS5z
dHJpbmcoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB1cmwgPSBjb21wbGV0
ZVVSTCh1cmwpOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZUhUVFBSZWRp
cmVjdGlvbihkZWxheSwgdXJsKTsKQEAgLTI1OTQsMTIgKzI1OTQsMTIgQEAgRWxlbWVudCogRG9j
dW1lbnQ6Om93bmVyRWxlbWVudCgpIGNvbnN0CiAKIFN0cmluZyBEb2N1bWVudDo6Y29va2llKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llcyhVUkwoKSk7CisgICAgcmV0dXJuIGNvb2tpZXMo
dXJsKCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBzZXRDb29raWVzKFVSTCgpLCBwb2xpY3lCYXNlVVJMKCkuZGVwcmVjYXRlZFN0
cmluZygpLCB2YWx1ZSk7CisgICAgc2V0Q29va2llcyh1cmwoKSwgcG9saWN5QmFzZVVSTCgpLmRl
cHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUpOwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6OnJlZmVycmVy
KCkgY29uc3QKQEAgLTI2MTIsNyArMjYxMiw3IEBAIFN0cmluZyBEb2N1bWVudDo6cmVmZXJyZXIo
KSBjb25zdAogU3RyaW5nIERvY3VtZW50Ojpkb21haW4oKSBjb25zdAogewogICAgIGlmIChtX2Rv
bWFpbi5pc0VtcHR5KCkpIC8vIG5vdCBzZXQgeWV0ICh3ZSBzZXQgaXQgb24gZGVtYW5kIHRvIHNh
dmUgdGltZSBhbmQgc3BhY2UpCi0gICAgICAgIG1fZG9tYWluID0gS1VSTChVUkwoKSkuaG9zdCgp
OyAvLyBJbml0aWFsbHkgc2V0IHRvIHRoZSBob3N0CisgICAgICAgIG1fZG9tYWluID0gS1VSTCh1
cmwoKSkuaG9zdCgpOyAvLyBJbml0aWFsbHkgc2V0IHRvIHRoZSBob3N0CiAgICAgcmV0dXJuIG1f
ZG9tYWluOwogfQogCkBAIC0yNjIxLDcgKzI2MjEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXREb21h
aW4oY29uc3QgU3RyaW5nJiBuCiAgICAgLy8gTm90IHNldCB5ZXQgKHdlIHNldCBpdCBvbiBkZW1h
bmQgdG8gc2F2ZSB0aW1lIGFuZCBzcGFjZSkKICAgICAvLyBJbml0aWFsbHkgc2V0IHRvIHRoZSBo
b3N0CiAgICAgaWYgKG1fZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgbV9kb21haW4gPSBLVVJM
KFVSTCgpKS5ob3N0KCk7CisgICAgICAgIG1fZG9tYWluID0gS1VSTCh1cmwoKSkuaG9zdCgpOwog
CiAgICAgLy8gQm90aCBOUyBhbmQgSUUgc3BlY2lmeSB0aGF0IGNoYW5naW5nIHRoZSBkb21haW4g
aXMgb25seSBhbGxvd2VkIHdoZW4KICAgICAvLyB0aGUgbmV3IGRvbWFpbiBpcyBhIHN1ZmZpeCBv
ZiB0aGUgb2xkIGRvbWFpbi4KQEAgLTI3NjgsMTIgKzI3NjgsMTIgQEAgdm9pZCBEb2N1bWVudDo6
cmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZQogICAgICAgICBtX2ltYWdlTWFwc0J5TmFtZS5yZW1v
dmUoaXQpOwogfQogCi1IVE1MTWFwRWxlbWVudCAqRG9jdW1lbnQ6OmdldEltYWdlTWFwKGNvbnN0
IFN0cmluZyYgVVJMKSBjb25zdAorSFRNTE1hcEVsZW1lbnQgKkRvY3VtZW50OjpnZXRJbWFnZU1h
cChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKLSAgICBpZiAoVVJMLmlzTnVsbCgpKQorICAg
IGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGludCBoYXNoUG9zID0g
VVJMLmZpbmQoJyMnKTsKLSAgICBTdHJpbmcgbmFtZSA9IChoYXNoUG9zIDwgMCA/IFVSTCA6IFVS
TC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7CisgICAgaW50IGhhc2hQb3MgPSB1cmwu
ZmluZCgnIycpOworICAgIFN0cmluZyBuYW1lID0gKGhhc2hQb3MgPCAwID8gdXJsIDogdXJsLnN1
YnN0cmluZyhoYXNoUG9zICsgMSkpLmltcGwoKTsKICAgICBBdG9taWNTdHJpbmcgbWFwTmFtZSA9
IGhNb2RlID09IFhIdG1sID8gbmFtZSA6IG5hbWUubG93ZXIoKTsKICAgICByZXR1cm4gbV9pbWFn
ZU1hcHNCeU5hbWUuZ2V0KG1hcE5hbWUuaW1wbCgpKTsKIH0KQEAgLTI3OTAsMjYgKzI3OTAsMjYg
QEAgVUNoYXIgRG9jdW1lbnQ6OmJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ibwogICAgIHJldHVybiBt
X2RlY29kZXItPmVuY29kaW5nKCkuYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCgpOwogfQogCi1E
ZXByZWNhdGVkU3RyaW5nIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBEZXByZWNhdGVkU3Ry
aW5nJiBVUkwpCitEZXByZWNhdGVkU3RyaW5nIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBE
ZXByZWNhdGVkU3RyaW5nJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgdHJlYXRzIG51bGwg
VVJMcyB0aGUgc2FtZSBhcyBlbXB0eSBVUkxzLCB1bmxpa2UgdGhlIFN0cmluZyBmdW5jdGlvbiBi
ZWxvdy4KIAogICAgIC8vIElmIGJvdGggdGhlIFVSTCBhbmQgYmFzZSBVUkwgYXJlIGVtcHR5LCBs
aWtlIHRoZXkgYXJlIGZvciBkb2N1bWVudHMKICAgICAvLyBjcmVhdGVkIHVzaW5nIERPTUltcGxl
bWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudCwganVzdCByZXR1cm4gdGhlIHBhc3NlZCBpbiBVUkwu
Ci0gICAgLy8gKFdlIGRvIHRoaXMgYmVjYXVzZSBVUkwoKSByZXR1cm5zICJhYm91dDpibGFuayIg
Zm9yIGVtcHR5IFVSTHMuCisgICAgLy8gKFdlIGRvIHRoaXMgYmVjYXVzZSB1cmwoKSByZXR1cm5z
ICJhYm91dDpibGFuayIgZm9yIGVtcHR5IFVSTHMuCiAgICAgaWYgKG1fdXJsLmlzRW1wdHkoKSAm
JiBtX2Jhc2VVUkwuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVVJMOworICAgICAgICByZXR1
cm4gdXJsOwogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gS1VSTChiYXNlVVJM
KCksIFVSTCkudXJsKCk7Ci0gICAgcmV0dXJuIEtVUkwoYmFzZVVSTCgpLCBVUkwsIG1fZGVjb2Rl
ci0+ZW5jb2RpbmcoKSkudXJsKCk7CisgICAgICAgIHJldHVybiBLVVJMKGJhc2VVUkwoKSwgdXJs
KS5kZXByZWNhdGVkU3RyaW5nKCk7CisgICAgcmV0dXJuIEtVUkwoYmFzZVVSTCgpLCB1cmwsIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKSkuZGVwcmVjYXRlZFN0cmluZygpOwogfQogCi1TdHJpbmcgRG9j
dW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyAmVVJMKQorU3RyaW5nIERvY3VtZW50Ojpj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBhbHdh
eXMgcmV0dXJucyBudWxsIHdoZW4gcGFzc2VkIGEgbnVsbCBVUkwsIHVubGlrZSB0aGUgU3RyaW5n
IGZ1bmN0aW9uIGFib3ZlLgotICAgIGlmIChVUkwuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBV
Ukw7Ci0gICAgcmV0dXJuIGNvbXBsZXRlVVJMKFVSTC5kZXByZWNhdGVkU3RyaW5nKCkpOworICAg
IGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB1cmw7CisgICAgcmV0dXJuIGNvbXBs
ZXRlVVJMKHVybC5kZXByZWNhdGVkU3RyaW5nKCkpOwogfQogCiBib29sIERvY3VtZW50OjppblBh
Z2VDYWNoZSgpCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDEwICszNjIsMTAgQEAgcHVibGljOgogCiAg
ICAgYm9vbCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWxsRm9ybWVkOyB9CiAKLSAg
ICBEZXByZWNhdGVkU3RyaW5nIFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/
ICJhYm91dDpibGFuayIgOiBtX3VybDsgfQorICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmwuaXNFbXB0eSgpID8gImFib3V0OmJsYW5rIiA6IG1fdXJsOyB9CiAg
ICAgdm9pZCBzZXRVUkwoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgdXJsKTsKIAotICAgIERlcHJl
Y2F0ZWRTdHJpbmcgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTC5pc0VtcHR5KCkg
PyBVUkwoKSA6IG1fYmFzZVVSTDsgfQorICAgIERlcHJlY2F0ZWRTdHJpbmcgYmFzZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZVVSTC5pc0VtcHR5KCkgPyB1cmwoKSA6IG1fYmFzZVVSTDsgfQog
ICAgIHZvaWQgc2V0QmFzZVVSTChjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBiYXNlVVJMKTsKIAog
ICAgIFN0cmluZyBiYXNlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVGFyZ2V0OyB9CkBA
IC01NzgsNyArNTc4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRJbWFnZU1hcChIVE1MTWFw
RWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqKTsKLSAg
ICBIVE1MTWFwRWxlbWVudCogZ2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiBVUkwpIGNvbnN0Owor
ICAgIEhUTUxNYXBFbGVtZW50KiBnZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7
CiAKICAgICBIVE1MRWxlbWVudCogYm9keSgpOwogICAgIHZvaWQgc2V0Qm9keShQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4
NTg0KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2Mywx
MyArNTYzLDEzIEBAIFN0cmluZyBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICBLVVJMIHht
bGJhc2UoZ2V0QXR0cmlidXRlKGJhc2VBdHRyKS5kZXByZWNhdGVkU3RyaW5nKCkpOwogCiAgICAg
aWYgKCF4bWxiYXNlLnByb3RvY29sKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4geG1sYmFz
ZS51cmwoKTsKKyAgICAgICAgcmV0dXJuIHhtbGJhc2Uuc3RyaW5nKCk7CiAKICAgICBOb2RlKiBw
YXJlbnQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKHBhcmVudCkKLSAgICAgICAgcmV0dXJuIEtV
UkwocGFyZW50LT5iYXNlVVJJKCkuZGVwcmVjYXRlZFN0cmluZygpLCB4bWxiYXNlLnVybCgpKS51
cmwoKTsKKyAgICAgICAgcmV0dXJuIEtVUkwocGFyZW50LT5iYXNlVVJJKCkuZGVwcmVjYXRlZFN0
cmluZygpLCB4bWxiYXNlLmRlcHJlY2F0ZWRTdHJpbmcoKSkuc3RyaW5nKCk7CiAKLSAgICByZXR1
cm4geG1sYmFzZS51cmwoKTsKKyAgICByZXR1cm4geG1sYmFzZS5zdHJpbmcoKTsKIH0KIAogTm9k
ZSogRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnRFbGVtZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIE5v
ZGUqIG5ld0NoaWxkLCBpbnQmIGV4Y2VwdGlvbikKSW5kZXg6IFdlYkNvcmUvZG9tL1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5oCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgbG9jYWxIcmVmKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEhyZWY7IH0KICAgICBTdHls
ZVNoZWV0KiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQuZ2V0KCk7IH0KICAgICBib29s
IGNoZWNrU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFN0cmluZyYgc2hl
ZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogI2lmIEVOQUJM
RShYU0xUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
VVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CiAjZW5kaWYKICAg
ICB2b2lkIHNldENTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwogICAgIGJvb2wgaXNMb2Fk
aW5nKCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMjg1ODQpCisr
KyBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkzLDEw
ICsyOTMsMTAgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjphZGRDU1NTdHJpbmdQcm9wZXJ0eQogICAg
IGF0dHItPmRlY2woKS0+c2V0U3RyaW5nUHJvcGVydHkoaWQsIHZhbHVlLCB0eXBlLCBmYWxzZSk7
CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTSW1hZ2VQcm9wZXJ0eShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIsIGludCBpZCwgY29uc3QgU3RyaW5nICZVUkwpCit2b2lkIFN0eWxlZEVsZW1l
bnQ6OmFkZENTU0ltYWdlUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNv
bnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghYXR0ci0+ZGVjbCgpKSBjcmVhdGVNYXBwZWRE
ZWNsKGF0dHIpOwotICAgIGF0dHItPmRlY2woKS0+c2V0SW1hZ2VQcm9wZXJ0eShpZCwgVVJMLCBm
YWxzZSk7CisgICAgYXR0ci0+ZGVjbCgpLT5zZXRJbWFnZVByb3BlcnR5KGlkLCB1cmwsIGZhbHNl
KTsKIH0KIAogdm9pZCBTdHlsZWRFbGVtZW50OjphZGRDU1NMZW5ndGgoTWFwcGVkQXR0cmlidXRl
KiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmdmFsdWUpCkluZGV4OiBXZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5o
CShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDU1NQcm9wZXJ0
eShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIsIGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSk7CiAg
ICAgdm9pZCBhZGRDU1NQcm9wZXJ0eShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIsIGludCBpZCwgaW50
IHZhbHVlKTsKICAgICB2b2lkIGFkZENTU1N0cmluZ1Byb3BlcnR5KE1hcHBlZEF0dHJpYnV0ZSog
YXR0ciwgaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwotICAgIHZvaWQgYWRkQ1NT
SW1hZ2VQcm9wZXJ0eShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIsIGludCBpZCwgY29uc3QgU3RyaW5n
ICZVUkwpOworICAgIHZvaWQgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShNYXBwZWRBdHRyaWJ1dGUqLCBp
bnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgYWRkQ1NTQ29sb3Io
TWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmYyk7CiAgICAgdm9p
ZCBjcmVhdGVNYXBwZWREZWNsKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAgICAgCkluZGV4OiBX
ZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1hN
TFRva2VuaXplci5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5p
emVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ1LDcgKzg0NSw3IEBAIHZvaWQgWE1MVG9rZW5p
emVyOjplbmRFbGVtZW50TnMoKQogICAgICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNUZXh0Tm9k
ZSgpIHx8IGNoaWxkLT5ub2RlVHlwZSgpID09IE5vZGU6OkNEQVRBX1NFQ1RJT05fTk9ERSkKICAg
ICAgICAgICAgICAgICAgICAgc2NyaXB0Q29kZSArPSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJEYXRh
Kj4oY2hpbGQpLT5kYXRhKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX3ZpZXctPmZy
YW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KG1fZG9jLT5VUkwoKSwgbV9zY3JpcHRTdGFy
dExpbmUgLSAxLCBzY3JpcHRDb2RlKTsKKyAgICAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQobV9kb2MtPnVybCgpLCBtX3NjcmlwdFN0YXJ0TGluZSAtIDEs
IHNjcmlwdENvZGUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX3JlcXVlc3RpbmdT
Y3JpcHQgPSBmYWxzZTsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpl
bmQoKQogewogI2lmIEVOQUJMRShYU0xUKQogICAgIGlmIChtX3Nhd1hTTFRyYW5zZm9ybSkgewot
ICAgICAgICBtX2RvYy0+c2V0VHJhbnNmb3JtU291cmNlKHhtbERvY1B0ckZvclN0cmluZyhtX2Rv
Yy0+ZG9jTG9hZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0sIG1fZG9jLT5VUkwo
KSkpOworICAgICAgICBtX2RvYy0+c2V0VHJhbnNmb3JtU291cmNlKHhtbERvY1B0ckZvclN0cmlu
ZyhtX2RvYy0+ZG9jTG9hZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0sIG1fZG9j
LT51cmwoKSkpOwogICAgICAgICAKICAgICAgICAgbV9kb2MtPnNldFBhcnNpbmcoZmFsc2UpOyAv
LyBNYWtlIHRoZSBkb2MgdGhpbmsgaXQncyBkb25lLCBzbyBpdCB3aWxsIGFwcGx5IHhzbCBzaGVl
dHMuCiAgICAgICAgIG1fZG9jLT51cGRhdGVTdHlsZVNlbGVjdG9yKCk7CkBAIC0xOTE3LDcgKzE5
MTcsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6cGFyc2VFbmRFbGVtZW50KCkKICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2Rl
OjpDREFUQV9TRUNUSU9OX05PREUpCiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdENvZGUgKz0g
c3RhdGljX2Nhc3Q8Q2hhcmFjdGVyRGF0YSo+KGNoaWxkKS0+ZGF0YSgpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdCht
X2RvYy0+VVJMKCksIG1fc2NyaXB0U3RhcnRMaW5lIC0gMSwgc2NyaXB0Q29kZSk7CisgICAgICAg
ICAgICBtX3ZpZXctPmZyYW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KG1fZG9jLT51cmwo
KSwgbV9zY3JpcHRTdGFydExpbmUgLSAxLCBzY3JpcHRDb2RlKTsKICAgICAgICAgfQogICAgICAg
ICBtX3JlcXVlc3RpbmdTY3JpcHQgPSBmYWxzZTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2RvbS9Y
TUxUb2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuaAko
cmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAj
aWYgRU5BQkxFKFhTTFQpCi12b2lkKiB4bWxEb2NQdHJGb3JTdHJpbmcoRG9jTG9hZGVyKiwgY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIFVSTCk7Cit2b2lkKiB4
bWxEb2NQdHJGb3JTdHJpbmcoRG9jTG9hZGVyKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IERlcHJlY2F0ZWRTdHJpbmcmIHVybCk7CiB2b2lkIHNldExvYWRlckZvckxpYlhNTENhbGxiYWNr
cyhEb2NMb2FkZXIqKTsKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjg1
ODQpCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBFZGl0b3I6OmNvcHkoKQogICAgIAogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBpbWFn
ZU5vZGVGcm9tSW1hZ2VEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIFBhc3RlYm9hcmQ6Omdl
bmVyYWxQYXN0ZWJvYXJkKCktPndyaXRlSW1hZ2Uobm9kZSwgZG9jdW1lbnQtPlVSTCgpLCBkb2N1
bWVudC0+dGl0bGUoKSk7CisgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkt
PndyaXRlSW1hZ2Uobm9kZSwgZG9jdW1lbnQtPnVybCgpLCBkb2N1bWVudC0+dGl0bGUoKSk7CiAg
ICAgZWxzZQogICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVNl
bGVjdGlvbihzZWxlY3RlZFJhbmdlKCkuZ2V0KCksIGNhblNtYXJ0Q29weU9yRGVsZXRlKCksIG1f
ZnJhbWUpOwogICAgIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw3ICs1NTEsNyBA
QCBzdGF0aWMgdm9pZCBjb21wbGV0ZVVSTHMoTm9kZSogbm9kZSwgY29uCiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICBB
dHRyaWJ1dGUqIGF0dHIgPSBhdHRycy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgICAgICAg
ICBpZiAoZS0+aXNVUkxBdHRyaWJ1dGUoYXR0cikpIHsKLSAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbXBsZXRlZFVSTCA9IEtVUkwoYmFzZVVSTEFzS1VSTCwgYXR0ci0+dmFsdWUoKS5kZXBy
ZWNhdGVkU3RyaW5nKCkpLnVybCgpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29tcGxl
dGVkVVJMID0gS1VSTChiYXNlVVJMQXNLVVJMLCBhdHRyLT52YWx1ZSgpLmRlcHJlY2F0ZWRTdHJp
bmcoKSkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJp
YnV0ZUNoYW5nZShlLCBhdHRyLT5uYW1lKCksIGNvbXBsZXRlZFVSTCkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAkocmV2aXNpb24gMjg1
ODQpCisrKyBXZWJDb3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RvY3VtZW50LmdldCgpOyB9CiAgICAgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3QgeyBy
ZXR1cm4gbV92aWV3LmdldCgpOyB9CiAgICAgTm9kZSogbW91c2VQcmVzc05vZGUoKSBjb25zdCB7
IHJldHVybiBtX21vdXNlUHJlc3NOb2RlLmdldCgpOyB9Ci0gICAgY29uc3QgS1VSTCYgVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9VUkw7IH0KKyAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX1VSTDsgfQogICAgIHZvaWQgcmVzdG9yZShQYWdlKik7CiAgICAgCiAgICAgdm9pZCBj
bG9zZSgpOwpJbmRleDogV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCShyZXZpc2lvbiAyODU4NCkKKysr
IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDgg
Kzc0LDggQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdQogfQogCiBI
aXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQotICAgIDogbV91cmxTdHJpbmcodXJsLnVybCgpKQotICAgICwgbV9vcmlnaW5hbFVSTFN0
cmluZyh1cmwudXJsKCkpCisgICAgOiBtX3VybFN0cmluZyh1cmwuc3RyaW5nKCkpCisgICAgLCBt
X29yaWdpbmFsVVJMU3RyaW5nKHVybC5zdHJpbmcoKSkKICAgICAsIG1fdGl0bGUodGl0bGUpCiAg
ICAgLCBtX2xhc3RWaXNpdGVkVGltZSgwKQogICAgICwgbV9pc0luUGFnZUNhY2hlKGZhbHNlKQpA
QCAtODYsOCArODYsOCBAQCBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJs
CiB9CiAKIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkK
LSAgICA6IG1fdXJsU3RyaW5nKHVybC51cmwoKSkKLSAgICAsIG1fb3JpZ2luYWxVUkxTdHJpbmco
dXJsLnVybCgpKQorICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygpKQorICAgICwgbV9vcmln
aW5hbFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQpCiAgICAg
LCBtX3BhcmVudChwYXJlbnQpCiAgICAgLCBtX3RpdGxlKHRpdGxlKQpAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgSGlzdG9yeUl0ZW06OnNldFVSTFN0cmluZyhjb25zdCBTdHIKIHZvaWQgSGlzdG9y
eUl0ZW06OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgcGFnZUNhY2hlKCktPnJlbW92
ZSh0aGlzKTsKLSAgICBzZXRVUkxTdHJpbmcodXJsLnVybCgpKTsKKyAgICBzZXRVUkxTdHJpbmco
dXJsLnN0cmluZygpKTsKICAgICBjbGVhckRvY3VtZW50U3RhdGUoKTsKIH0KIApAQCAtMzg4LDcg
KzM4OCw3IEBAIEZvcm1EYXRhKiBIaXN0b3J5SXRlbTo6Zm9ybURhdGEoKQogYm9vbCBIaXN0b3J5
SXRlbTo6aXNDdXJyZW50RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGlmIHRoaXMgaXMgdGhl
IGN1cnJlbnQgZG9jdW1lbnQuCi0gICAgcmV0dXJuIHVybFN0cmluZygpID09IGRvYy0+VVJMKCk7
CisgICAgcmV0dXJuIHVybFN0cmluZygpID09IGRvYy0+dXJsKCk7CiB9CiAKIHZvaWQgSGlzdG9y
eUl0ZW06Om1lcmdlQXV0b0NvbXBsZXRlSGludHMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBA
IHZvaWQgSFRNTEJhc2VFbGVtZW50Ojpwcm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKCFtX2hyZWYuaXNFbXB0eSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldEJhc2VVUkwoS1VSTChkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+
dXJsKCksIG1faHJlZi5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+c2V0QmFzZVVSTChLVVJMKGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT51cmwo
KSwgbV9ocmVmLmRlcHJlY2F0ZWRTdHJpbmcoKSkuZGVwcmVjYXRlZFN0cmluZygpKTsKIAogICAg
IGlmICghbV90YXJnZXQuaXNFbXB0eSgpKQogICAgICAgICBkb2N1bWVudCgpLT5zZXRCYXNlVGFy
Z2V0KG1fdGFyZ2V0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysg
V2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc4LDcgKzE0
NzgsNyBAQCB2b2lkIEhUTUxQYXJzZXI6OnJlcG9ydEVycm9yVG9Db25zb2xlKEhUCiAgICAgbWVz
c2FnZS5yZXBsYWNlKCIldGFnMSIsIHRhZzEpOwogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXRhZzIi
LCB0YWcyKTsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEhUTUxN
ZXNzYWdlU291cmNlLCBpc1dhcm5pbmcoZXJyb3JDb2RlKSA/IFdhcm5pbmdNZXNzYWdlTGV2ZWw6
IEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBkb2N1bWVudC0+VVJMKCkp
OworICAgIHBhZ2UtPmNocm9tZSgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKEhUTUxNZXNzYWdlU291
cmNlLCBpc1dhcm5pbmcoZXJyb3JDb2RlKSA/IFdhcm5pbmdNZXNzYWdlTGV2ZWw6IEVycm9yTWVz
c2FnZUxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBkb2N1bWVudC0+dXJsKCkpOwogfQogCiB9
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysg
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NyArNjMsNyBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoCiAgICAg
Ly8gYW5kIHRoZSBzY3JpcHQgZWxlbWVudCBoYXMgYmVlbiBpbnNlcnRlZCBpbiB0aGUgZG9jdW1l
bnQKICAgICAvLyB3ZSBldmFsdWF0ZSB0aGUgc2NyaXB0LgogICAgIGlmICghbV9jcmVhdGVkQnlQ
YXJzZXIgJiYgaW5Eb2N1bWVudCgpICYmIGZpcnN0Q2hpbGQoKSkKLSAgICAgICAgZXZhbHVhdGVT
Y3JpcHQoZG9jdW1lbnQoKS0+VVJMKCksIHRleHQoKSk7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0
KGRvY3VtZW50KCktPnVybCgpLCB0ZXh0KCkpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCkBAIC0xMzEsNyAr
MTMxLDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdQogICAgIC8v
IGl0IHNob3VsZCBiZSBldmFsdWF0ZWQsIGFuZCBldmFsdWF0ZVNjcmlwdCBvbmx5IGV2YWx1YXRl
cyBhIHNjcmlwdCBvbmNlLgogICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSB0ZXh0KCk7ICAgIAog
ICAgIGlmICghc2NyaXB0U3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgZXZhbHVhdGVTY3JpcHQo
ZG9jdW1lbnQoKS0+VVJMKCksIHNjcmlwdFN0cmluZyk7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0
KGRvY3VtZW50KCktPnVybCgpLCBzY3JpcHRTdHJpbmcpOwogfQogCiB2b2lkIEhUTUxTY3JpcHRF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTIzOSw3ICsyMzksNyBAQCBib29sIEhU
TUxTY3JpcHRFbGVtZW50OjpzaG91bGRFeGVjdXRlQXNKCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgVVJM
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKK3ZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBp
ZiAobV9ldmFsdWF0ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lk
IEhUTUxTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjCiAgICAgICAgIEtKU1Byb3h5KiBw
cm94eSA9IGZyYW1lLT5zY3JpcHRQcm94eSgpOwogICAgICAgICBpZiAocHJveHkpIHsKICAgICAg
ICAgICAgIG1fZXZhbHVhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHByb3h5LT5ldmFsdWF0ZShV
UkwsIDAsIHNjcmlwdCk7CisgICAgICAgICAgICBwcm94eS0+ZXZhbHVhdGUodXJsLCAwLCBzY3Jp
cHQpOwogICAgICAgICAgICAgRG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50c1JlbmRlcmluZygpOwog
ICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHJldmlzaW9u
IDI4NTg0KQorKysgV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOSArMSw3IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBp
bXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IEFwcGxlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIxLDQwICsxOSw0MCBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKgogICovCisKICNpZm5kZWYgSFRNTFNjcmlwdEVsZW1lbnRfaAogI2RlZmluZSBIVE1MU2Ny
aXB0RWxlbWVudF9oCiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlQ2xpZW50LmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRTY3JpcHQ7CiAKLWNsYXNzIEhUTUxTY3JpcHRFbGVt
ZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQKLXsK
K2NsYXNzIEhUTUxTY3JpcHRFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2Fj
aGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgotICAgIEhUTUxTY3JpcHRFbGVtZW50KERvY3Vt
ZW50ICpkb2MpOworICAgIEhUTUxTY3JpcHRFbGVtZW50KERvY3VtZW50Kik7CiAgICAgfkhUTUxT
Y3JpcHRFbGVtZW50KCk7CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWly
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQogICAgIHZpcnR1YWwg
aW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMTsgfQogICAgIHZpcnR1YWwgYm9vbCBj
aGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkgeyByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4dE5v
ZGUoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSAqYXR0cik7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlICpmaW5pc2hlZE9iaik7CisgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlICphdHRyKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKICAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29s
IGNyZWF0ZWRCeVBhcnNlcikgeyBtX2NyZWF0ZWRCeVBhcnNlciA9IGNyZWF0ZWRCeVBhcnNlcjsg
fQogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZFBhcnNpbmcoKTsKIAogICAgIGJvb2wgc2hvdWxk
RXhlY3V0ZUFzSmF2YVNjcmlwdCgpOwotICAgIHZvaWQgZXZhbHVhdGVTY3JpcHQoY29uc3QgU3Ry
aW5nICZVUkwsIGNvbnN0IFN0cmluZyAmc2NyaXB0KTsKKyAgICB2b2lkIGV2YWx1YXRlU2NyaXB0
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCk7CiAKICAgICBTdHJpbmcg
dGV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
SFRNTFRva2VuaXplci5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9odG1sL0hUTUxU
b2tlbml6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDUsNyArNTA1LDcgQEAgSFRNTFRva2Vu
aXplcjo6U3RhdGUgSFRNTFRva2VuaXplcjo6c2NyaQogICAgIGlmIChtX2ZyYWdtZW50IHx8ICFt
X2RvYy0+ZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIHN0YXRlOwogICAgIG1fZXhlY3V0aW5nU2Ny
aXB0Kys7Ci0gICAgRGVwcmVjYXRlZFN0cmluZyB1cmwgPSBzY3JpcHRVUkwuaXNOdWxsKCkgPyBt
X2RvYy0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+VVJMKCkgOiBzY3JpcHRVUkw7CisgICAgRGVwcmVj
YXRlZFN0cmluZyB1cmwgPSBzY3JpcHRVUkwuaXNOdWxsKCkgPyBtX2RvYy0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKS0+dXJsKCkgOiBzY3JpcHRVUkw7CiAKICAgICBTZWdtZW50ZWRTdHJpbmcgKnNhdmVk
UHJlcGVuZGluZ1NyYyA9IGN1cnJlbnRQcmVwZW5kaW5nU3JjOwogICAgIFNlZ21lbnRlZFN0cmlu
ZyBwcmVwZW5kaW5nU3JjOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNwcAkocmV2aXNpb24gMjg1ODQpCisrKyBXZWJD
b3JlL2xvYWRlci9DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDIwICs2NiwyMCBAQCBz
dGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNyZWF0ZVJlc291cmNlKENhCiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAgICAgICAgLy8g
VXNlciBhZ2VudCBpbWFnZXMgbmVlZCB0byBudWxsIGNoZWNrIHRoZSBkb2Nsb2FkZXIuICBObyBv
dGhlciByZXNvdXJjZXMgbmVlZCB0by4KLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRJbWFnZShk
b2NMb2FkZXIsIHVybC51cmwoKSwgdHJ1ZSAvKiBmb3IgY2FjaGUgKi8pOworICAgICAgICByZXR1
cm4gbmV3IENhY2hlZEltYWdlKGRvY0xvYWRlciwgdXJsLnN0cmluZygpLCB0cnVlIC8qIGZvciBj
YWNoZSAqLyk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldDoKLSAgICAg
ICAgcmV0dXJuIG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KGRvY0xvYWRlciwgdXJsLnVybCgpLCAq
Y2hhcnNldCwgc2tpcENhbkxvYWRDaGVjaywgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyk7Cisg
ICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChkb2NMb2FkZXIsIHVybC5zdHJp
bmcoKSwgKmNoYXJzZXQsIHNraXBDYW5Mb2FkQ2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFj
a3MpOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJuIG5l
dyBDYWNoZWRTY3JpcHQoZG9jTG9hZGVyLCB1cmwudXJsKCksICpjaGFyc2V0KTsKKyAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRTY3JpcHQoZG9jTG9hZGVyLCB1cmwuc3RyaW5nKCksICpjaGFyc2V0
KTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6Ci0gICAgICAgIHJldHVy
biBuZXcgQ2FjaGVkRm9udChkb2NMb2FkZXIsIHVybC51cmwoKSk7CisgICAgICAgIHJldHVybiBu
ZXcgQ2FjaGVkRm9udChkb2NMb2FkZXIsIHVybC5zdHJpbmcoKSk7CiAjaWYgRU5BQkxFKFhTTFQp
CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNMU3R5bGVTaGVldDoKLSAgICAgICAgcmV0dXJu
IG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KGRvY0xvYWRlciwgdXJsLnVybCgpKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBDYWNoZWRYU0xTdHlsZVNoZWV0KGRvY0xvYWRlciwgdXJsLnN0cmluZygpKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShYQkwpCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WEJMU3R5
bGVTaGVldDoKLSAgICAgICAgcmV0dXJuIG5ldyBDYWNoZWRYQkxEb2N1bWVudChkb2NMb2FkZXIs
IHVybC51cmwoKSk7CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQoZG9jTG9h
ZGVyLCB1cmwuc3RyaW5nKCkpOwogI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CkBAIC05Niw3ICs5Niw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVxdWVzdFJlc291cmNl
KEQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gTG9vayB1cCB0aGUgcmVzb3VyY2Ug
aW4gb3VyIG1hcC4KLSAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3Jlc291cmNlcy5n
ZXQodXJsLnVybCgpKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3Jlc291cmNl
cy5nZXQodXJsLnN0cmluZygpKTsKIAogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICBpZiAo
IXNraXBDYW5Mb2FkQ2hlY2sgJiYgRnJhbWVMb2FkZXI6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgp
ICYmICFGcmFtZUxvYWRlcjo6Y2FuTG9hZCgqcmVzb3VyY2UsIGRvY0xvYWRlci0+ZG9jKCkpKSB7
CkBAIC0xMTAsNyArMTEwLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXF1ZXN0UmVzb3Vy
Y2UoRAogICAgICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sgJiYgRnJhbWVMb2FkZXI6OnJlc3Ry
aWN0QWNjZXNzVG9Mb2NhbCgpICYmICFGcmFtZUxvYWRlcjo6Y2FuTG9hZCh1cmwsIGRvY0xvYWRl
ci0+ZG9jKCkpKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jID0gZG9jTG9hZGVyLT5kb2Mo
KTsKICAgICAgICAgICAgIGlmKGRvYykKLSAgICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKGRvYy0+cGFnZSgpLCB1cmwudXJsKCkpOworICAgICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jLT5wYWdlKCksIHVybC5z
dHJpbmcoKSk7CiAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xMjAsNyAr
MTIwLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIENhY2hlOjpyZXF1ZXN0UmVzb3VyY2UoRAogICAgICAg
ICBBU1NFUlQocmVzb3VyY2UpOwogICAgICAgICBBU1NFUlQocmVzb3VyY2UtPmluQ2FjaGUoKSk7
CiAgICAgICAgIGlmICghZGlzYWJsZWQoKSkgewotICAgICAgICAgICAgbV9yZXNvdXJjZXMuc2V0
KHVybC51cmwoKSwgcmVzb3VyY2UpOyAgLy8gVGhlIHNpemUgd2lsbCBiZSBhZGRlZCBpbiBsYXRl
ciBvbmNlIHRoZSByZXNvdXJjZSBpcyBsb2FkZWQgYW5kIGNhbGxzIGJhY2sgdG8gdXMgd2l0aCB0
aGUgbmV3IHNpemUuCisgICAgICAgICAgICBtX3Jlc291cmNlcy5zZXQodXJsLnN0cmluZygpLCBy
ZXNvdXJjZSk7ICAvLyBUaGUgc2l6ZSB3aWxsIGJlIGFkZGVkIGluIGxhdGVyIG9uY2UgdGhlIHJl
c291cmNlIGlzIGxvYWRlZCBhbmQgY2FsbHMgYmFjayB0byB1cyB3aXRoIHRoZSBuZXcgc2l6ZS4K
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG1vdmUgdGhlIHJlc291cmNl
IHRvIHRoZSBmcm9udCBvZiBpdHMgTFJVIGxpc3QgYW5kIGluY3JlYXNlIGl0cyBhY2Nlc3MgY291
bnQuCiAgICAgICAgICAgICByZXNvdXJjZUFjY2Vzc2VkKHJlc291cmNlKTsKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Y2hlY2tOb3RpZnkoKQogCiAgICAg
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNo
ZWRSZXNvdXJjZUNsaWVudCAqYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5zZXRDU1NTdHlsZVNo
ZWV0KG1fcmVzcG9uc2UudXJsKCkudXJsKCksIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCks
IG1fc2hlZXQpOworICAgICAgICBjLT5zZXRDU1NTdHlsZVNoZWV0KG1fcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIG1fZGVjb2Rlci0+ZW5jb2RpbmcoKS5uYW1lKCksIG1fc2hlZXQpOwogCiAjaWYg
VVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkgICAgICAgIAogICAgIC8vIGlmIGNoZWNrTm90aWZ5
KCkgaXMgY2FsbGVkIGZyb20gZXJyb3IoKSwgY2xpZW50J3Mgc2V0Q1NTU3R5bGVTaGVldCguLi4p
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMg
KzM1LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FjaGVkUmVzb3VyY2U6OkNhY2hl
ZFJlc291cmNlKGNvbnN0IFN0cmluZyYgVVJMLCBUeXBlIHR5cGUsIGJvb2wgZm9yQ2FjaGUsIGJv
b2wgc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcykKLSAgICA6IG1fbGFzdERlY29kZWRBY2Nlc3NU
aW1lKDApCitDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmws
IFR5cGUgdHlwZSwgYm9vbCBmb3JDYWNoZSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KQorICAgIDogbV91cmwodXJsKQorICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkKICAg
ICAsIG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyhzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tz
KQogICAgICwgbV9pbkNhY2hlKGZvckNhY2hlKQogICAgICwgbV9kb2NMb2FkZXIoMCkKIHsKLSAg
ICBtX3VybCA9IFVSTDsKICAgICBtX3R5cGUgPSB0eXBlOwogICAgIG1fc3RhdHVzID0gUGVuZGlu
ZzsKICAgICBtX2VuY29kZWRTaXplID0gMDsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuaAko
cmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgICAgICBVbmtub3duLCAg
ICAgIC8vIGxldCBjYWNoZSBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIGl0CiAgICAgICAgIE5ldywg
ICAgICAgICAgLy8gaW5zZXJ0aW5nIG5ldyBpdGVtCiAgICAgICAgIFBlbmRpbmcsICAgICAgLy8g
b25seSBwYXJ0aWFsbHkgbG9hZGVkCi0gICAgICAgIENhY2hlZCAgICAgICAvLyByZWd1bGFyIGNh
c2UKKyAgICAgICAgQ2FjaGVkICAgICAgICAvLyByZWd1bGFyIGNhc2UKICAgICB9OwogCi0gICAg
Q2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBVUkwsIFR5cGUsIGJvb2wgZm9yQ2FjaGUgPSB0
cnVlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZSk7CisgICAgQ2FjaGVk
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIFR5cGUsIGJvb2wgZm9yQ2FjaGUgPSB0cnVlLCBi
b29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+Q2Fj
aGVkUmVzb3VyY2UoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJp
bmcmKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5oCShyZXZpc2lvbiAyODU4NCkKKysrIFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFNjcmlwdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENhY2hlZFNjcmlwdCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWNoZWRTY3JpcHQoRG9j
TG9hZGVyKiwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CisgICAg
ICAgIENhY2hlZFNjcmlwdChEb2NMb2FkZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KTsKICAgICAgICAgdmlydHVhbCB+Q2FjaGVkU2NyaXB0KCk7CiAKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9Eb2NMb2FkZXIuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvbG9hZGVyL0Rv
Y0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDE5ICs2NywxOSBAQCB2b2lkIERvY0xv
YWRlcjo6Y2hlY2tGb3JSZWxvYWQoY29uc3QgS1VSCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJlc291
cmNlcykKICAgICAgICAgcmV0dXJuOyAvL0Rvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUgcGFz
dGluZwogICAgIGlmIChtX2NhY2hlUG9saWN5ID09IENhY2hlUG9saWN5VmVyaWZ5KSB7Ci0gICAg
ICAgaWYgKCFtX3JlbG9hZGVkVVJMcy5jb250YWlucyhmdWxsVVJMLnVybCgpKSkgewotICAgICAg
ICAgIENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IGNhY2hlKCktPnJlc291cmNlRm9yVVJMKGZ1
bGxVUkwudXJsKCkpOworICAgICAgIGlmICghbV9yZWxvYWRlZFVSTHMuY29udGFpbnMoZnVsbFVS
TC5zdHJpbmcoKSkpIHsKKyAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmcgPSBjYWNo
ZSgpLT5yZXNvdXJjZUZvclVSTChmdWxsVVJMLnN0cmluZygpKTsKICAgICAgICAgICBpZiAoZXhp
c3RpbmcgJiYgZXhpc3RpbmctPmlzRXhwaXJlZCgpKSB7CiAgICAgICAgICAgICAgY2FjaGUoKS0+
cmVtb3ZlKGV4aXN0aW5nKTsKLSAgICAgICAgICAgICBtX3JlbG9hZGVkVVJMcy5hZGQoZnVsbFVS
TC51cmwoKSk7CisgICAgICAgICAgICAgbV9yZWxvYWRlZFVSTHMuYWRkKGZ1bGxVUkwuc3RyaW5n
KCkpOwogICAgICAgICAgIH0KICAgICAgICB9CiAgICAgfSBlbHNlIGlmICgobV9jYWNoZVBvbGlj
eSA9PSBDYWNoZVBvbGljeVJlbG9hZCkgfHwgKG1fY2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lS
ZWZyZXNoKSkgewotICAgICAgIGlmICghbV9yZWxvYWRlZFVSTHMuY29udGFpbnMoZnVsbFVSTC51
cmwoKSkpIHsKLSAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmcgPSBjYWNoZSgpLT5y
ZXNvdXJjZUZvclVSTChmdWxsVVJMLnVybCgpKTsKKyAgICAgICBpZiAoIW1fcmVsb2FkZWRVUkxz
LmNvbnRhaW5zKGZ1bGxVUkwuc3RyaW5nKCkpKSB7CisgICAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IGV4aXN0aW5nID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoZnVsbFVSTC5zdHJpbmcoKSk7CiAg
ICAgICAgICAgaWYgKGV4aXN0aW5nKQogICAgICAgICAgICAgIGNhY2hlKCktPnJlbW92ZShleGlz
dGluZyk7Ci0gICAgICAgICAgbV9yZWxvYWRlZFVSTHMuYWRkKGZ1bGxVUkwudXJsKCkpOworICAg
ICAgICAgIG1fcmVsb2FkZWRVUkxzLmFkZChmdWxsVVJMLnN0cmluZygpKTsKICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIENhY2hlZFJlc291cmNlKiBEb2NMb2FkZXI6OnJl
cXVlc3RSZXNvdXIKICAgICBLVVJMIGZ1bGxVUkwgPSBtX2RvYy0+Y29tcGxldGVVUkwodXJsLmRl
cHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgCiAgICAgaWYgKGNhY2hlKCktPmRpc2FibGVkKCkpIHsK
LSAgICAgICAgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGl0ID0g
bV9kb2NSZXNvdXJjZXMuZmluZChmdWxsVVJMLnVybCgpKTsKKyAgICAgICAgSGFzaE1hcDxTdHJp
bmcsIENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGl0ID0gbV9kb2NSZXNvdXJjZXMuZmluZChm
dWxsVVJMLnN0cmluZygpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpdCAhPSBtX2RvY1Jlc291
cmNlcy5lbmQoKSkgewogICAgICAgICAgICAgaXQtPnNlY29uZC0+c2V0RG9jTG9hZGVyKDApOwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjg1ODQpCisrKyBXZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSwxNSAr
MTg5LDE1IEBAIFJlc291cmNlUmVxdWVzdCYgRG9jdW1lbnRMb2FkZXI6OmFjdHVhbFIKICAgICBy
ZXR1cm4gbV9yZXF1ZXN0OwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6VVJMKCkg
Y29uc3QKK2NvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAogewogICAgIHJl
dHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VS
ZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmIFVSTCkKK3ZvaWQgRG9jdW1lbnRM
b2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBtX29yaWdpbmFsUmVxdWVzdENvcHkuc2V0VVJMKFVSTCk7Ci0gICAgbV9yZXF1ZXN0
LnNldFVSTChVUkwpOworICAgIG1fb3JpZ2luYWxSZXF1ZXN0Q29weS5zZXRVUkwodXJsKTsKKyAg
ICBtX3JlcXVlc3Quc2V0VVJMKHVybCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCkBAIC0yMjEsNyArMjIxLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZQogCiAgICAgLy8gT25seSBzZW5k
IHdlYlZpZXc6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU6IGlmIFVSTCBjaGFuZ2VkLgogICAgIC8vIEFsc28sIGRvbid0IHNlbmQgaXQgd2hlbiByZXBs
YWNpbmcgdW5yZWFjaGFibGUgVVJMcyB3aXRoIGFsdGVybmF0ZSBjb250ZW50LgotICAgIGlmICgh
aGFuZGxpbmdVbnJlYWNoYWJsZVVSTCAmJiBvbGRVUkwudXJsKCkgIT0gcmVxLnVybCgpLnVybCgp
KQorICAgIGlmICghaGFuZGxpbmdVbnJlYWNoYWJsZVVSTCAmJiBvbGRVUkwgIT0gcmVxLnVybCgp
KQogICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSgpOwogfQogCkBAIC02ODgsNyArNjg4LDcgQEAgYm9vbCBEb2N1
bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlcwogICAgIGlmICghbV9tYWluUmVzb3VyY2VM
b2FkZXItPmxvYWQobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKSkgewogICAgICAgICAvLyBG
SVhNRTogSWYgdGhpcyBzaG91bGQgcmVhbGx5IGJlIGNhdWdodCwgd2Ugc2hvdWxkIGp1c3QgQVNT
RVJUIHRoaXMgZG9lc24ndCBoYXBwZW47CiAgICAgICAgIC8vIHNob3VsZCBpdCBiZSBjYXVnaHQg
Ynkgb3RoZXIgcGFydHMgb2YgV2ViS2l0IG9yIG90aGVyIHBhcnRzIG9mIHRoZSBhcHA/Ci0gICAg
ICAgIExPR19FUlJPUigiY291bGQgbm90IGNyZWF0ZSBXZWJSZXNvdXJjZUhhbmRsZSBmb3IgVVJM
ICVzIC0tIHNob3VsZCBiZSBjYXVnaHQgYnkgcG9saWN5IGhhbmRsZXIgbGV2ZWwiLCBtX3JlcXVl
c3QudXJsKCkudXJsKCkuYXNjaWkoKSk7CisgICAgICAgIExPR19FUlJPUigiY291bGQgbm90IGNy
ZWF0ZSBXZWJSZXNvdXJjZUhhbmRsZSBmb3IgVVJMICVzIC0tIHNob3VsZCBiZSBjYXVnaHQgYnkg
cG9saWN5IGhhbmRsZXIgbGV2ZWwiLCBtX3JlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICBtX21haW5SZXNvdXJjZUxvYWRlciA9IDA7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI4
NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzdGl0dXRl
RGF0YTsgfQogCi0gICAgICAgIGNvbnN0IEtVUkwmIFVSTCgpIGNvbnN0OworICAgICAgICBjb25z
dCBLVVJMJiB1cmwoKSBjb25zdDsKICAgICAgICAgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVVUkwo
KSBjb25zdDsKIAogICAgICAgICBLVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBAIGNvbnN0IHVuc2ln
bmVkIGludCBjTWF4UGVuZGluZ1NvdXJjZUxlbmcKIAogc3RydWN0IEZvcm1TdWJtaXNzaW9uIHsK
ICAgICBjb25zdCBjaGFyKiBhY3Rpb247Ci0gICAgU3RyaW5nIFVSTDsKKyAgICBTdHJpbmcgdXJs
OwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0YTsKICAgICBTdHJpbmcgdGFyZ2V0OwogICAgIFN0
cmluZyBjb250ZW50VHlwZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBzdHJ1Y3QgRm9ybVN1Ym1pc3Np
b24gewogICAgIEZvcm1TdWJtaXNzaW9uKGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYgdSwg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZCwgY29uc3QgU3RyaW5nJiB0LAogICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBjdCwgY29uc3QgU3RyaW5nJiBiLCBQYXNzUmVmUHRyPEV2ZW50PiBlKQogICAg
ICAgICA6IGFjdGlvbihhKQotICAgICAgICAsIFVSTCh1KQorICAgICAgICAsIHVybCh1KQogICAg
ICAgICAsIGRhdGEoZCkKICAgICAgICAgLCB0YXJnZXQodCkKICAgICAgICAgLCBjb250ZW50VHlw
ZShjdCkKQEAgLTEzOCw3ICsxMzgsNyBAQCBzdHJ1Y3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24gewog
ICAgIGVudW0gVHlwZSB7IHJlZGlyZWN0aW9uLCBsb2NhdGlvbkNoYW5nZSwgaGlzdG9yeU5hdmln
YXRpb24sIGxvY2F0aW9uQ2hhbmdlRHVyaW5nTG9hZCB9OwogICAgIFR5cGUgdHlwZTsKICAgICBk
b3VibGUgZGVsYXk7Ci0gICAgU3RyaW5nIFVSTDsKKyAgICBTdHJpbmcgdXJsOwogICAgIFN0cmlu
ZyByZWZlcnJlcjsKICAgICBpbnQgaGlzdG9yeVN0ZXBzOwogICAgIGJvb2wgbG9ja0hpc3Rvcnk7
CkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0aW9uIHsKICAgICBT
Y2hlZHVsZWRSZWRpcmVjdGlvbihkb3VibGUgcmVkaXJlY3REZWxheSwgY29uc3QgU3RyaW5nJiBy
ZWRpcmVjdFVSTCwgYm9vbCByZWRpcmVjdExvY2tIaXN0b3J5LCBib29sIHVzZXJHZXN0dXJlKQog
ICAgICAgICA6IHR5cGUocmVkaXJlY3Rpb24pCiAgICAgICAgICwgZGVsYXkocmVkaXJlY3REZWxh
eSkKLSAgICAgICAgLCBVUkwocmVkaXJlY3RVUkwpCisgICAgICAgICwgdXJsKHJlZGlyZWN0VVJM
KQogICAgICAgICAsIGhpc3RvcnlTdGVwcygwKQogICAgICAgICAsIGxvY2tIaXN0b3J5KHJlZGly
ZWN0TG9ja0hpc3RvcnkpCiAgICAgICAgICwgd2FzVXNlckdlc3R1cmUodXNlckdlc3R1cmUpCkBA
IC0xNTksNyArMTU5LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGlyZWN0aW9uIHsKICAgICAgICAg
ICAgIGJvb2wgbG9jYXRpb25DaGFuZ2VMb2NrSGlzdG9yeSwgYm9vbCBsb2NhdGlvbkNoYW5nZVdh
c1VzZXJHZXN0dXJlKQogICAgICAgICA6IHR5cGUobG9jYXRpb25DaGFuZ2VUeXBlKQogICAgICAg
ICAsIGRlbGF5KDApCi0gICAgICAgICwgVVJMKGxvY2F0aW9uQ2hhbmdlVVJMKQorICAgICAgICAs
IHVybChsb2NhdGlvbkNoYW5nZVVSTCkKICAgICAgICAgLCByZWZlcnJlcihsb2NhdGlvbkNoYW5n
ZVJlZmVycmVyKQogICAgICAgICAsIGhpc3RvcnlTdGVwcygwKQogICAgICAgICAsIGxvY2tIaXN0
b3J5KGxvY2F0aW9uQ2hhbmdlTG9ja0hpc3RvcnkpCkBAIC0zNjcsMTUgKzM2NywxNSBAQCBib29s
IEZyYW1lTG9hZGVyOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0CiAgICAgcmV0dXJuIG1fY2xpZW50
LT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGFu
Z2VMb2NhdGlvbihjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNoYW5n
ZUxvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGxvY2tIaXN0b3J5LCBib29sIHVzZXJHZXN0dXJlKQogewotICAgIGNoYW5nZUxvY2F0aW9uKGNv
bXBsZXRlVVJMKFVSTCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgdXNlckdlc3R1cmUpOworICAg
IGNoYW5nZUxvY2F0aW9uKGNvbXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwg
dXNlckdlc3R1cmUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25z
dCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJv
b2wgdXNlckdlc3R1cmUpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wg
dXNlckdlc3R1cmUpCiB7Ci0gICAgaWYgKFVSTC51cmwoKS5maW5kKCJqYXZhc2NyaXB0OiIsIDAs
IGZhbHNlKSA9PSAwKSB7Ci0gICAgICAgIFN0cmluZyBzY3JpcHQgPSBLVVJMOjpkZWNvZGVfc3Ry
aW5nKFVSTC51cmwoKS5taWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSk7CisgICAgaWYgKHVybC5k
ZXByZWNhdGVkU3RyaW5nKCkuZmluZCgiamF2YXNjcmlwdDoiLCAwLCBmYWxzZSkgPT0gMCkgewor
ICAgICAgICBTdHJpbmcgc2NyaXB0ID0gS1VSTDo6ZGVjb2RlX3N0cmluZyh1cmwuZGVwcmVjYXRl
ZFN0cmluZygpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKTsKICAgICAgICAgSlNWYWx1ZSog
cmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChzY3JpcHQsIHVzZXJHZXN0dXJlKTsKICAgICAgICAgU3Ry
aW5nIHNjcmlwdFJlc3VsdDsKICAgICAgICAgaWYgKGdldFN0cmluZyhyZXN1bHQsIHNjcmlwdFJl
c3VsdCkpIHsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2Nh
dGlvbihjb25zdCBLCiAKICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSAo
bV9jYWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeVJlbG9hZCkgfHwgKG1fY2FjaGVQb2xpY3kgPT0g
Q2FjaGVQb2xpY3lSZWZyZXNoKQogICAgICAgICA/IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIDog
VXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChVUkws
IHJlZmVycmVyLCBwb2xpY3kpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCwgcmVm
ZXJyZXIsIHBvbGljeSk7CiAgICAgCiAgICAgdXJsU2VsZWN0ZWQocmVxdWVzdCwgIl9zZWxmIiwg
MCwgbG9ja0hpc3RvcnksIHVzZXJHZXN0dXJlKTsKIH0KQEAgLTQwMCw4ICs0MDAsOCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvCiAgICAgICAgIHRhcmdldCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmJhc2VUYXJnZXQoKTsKIAogICAgIGNvbnN0IEtVUkwmIHVybCA9
IHJlcXVlc3QudXJsKCk7Ci0gICAgaWYgKHVybC51cmwoKS5zdGFydHNXaXRoKCJqYXZhc2NyaXB0
OiIsIGZhbHNlKSkgewotICAgICAgICBleGVjdXRlU2NyaXB0KEtVUkw6OmRlY29kZV9zdHJpbmco
dXJsLnVybCgpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSwgdHJ1ZSk7CisgICAgaWYgKHVy
bC5kZXByZWNhdGVkU3RyaW5nKCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkpIHsK
KyAgICAgICAgZXhlY3V0ZVNjcmlwdChLVVJMOjpkZWNvZGVfc3RyaW5nKHVybC5kZXByZWNhdGVk
U3RyaW5nKCkubWlkKHN0cmxlbigiamF2YXNjcmlwdDoiKSkpLCB0cnVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNDM0LDcgKzQzNCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVl
c3RGcmFtZShIVE1MRnJhbWUKIAogICAgIEZyYW1lKiBmcmFtZSA9IG93bmVyRWxlbWVudC0+Y29u
dGVudEZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKQotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNj
aGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnVybCgpLCBtX291dGdvaW5nUmVmZXJyZXIsIHRydWUs
IHVzZXJHZXN0dXJlSGludCgpKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZUxv
Y2F0aW9uQ2hhbmdlKHVybC5zdHJpbmcoKSwgbV9vdXRnb2luZ1JlZmVycmVyLCB0cnVlLCB1c2Vy
R2VzdHVyZUhpbnQoKSk7CiAgICAgZWxzZQogICAgICAgICBmcmFtZSA9IGxvYWRTdWJmcmFtZShv
d25lckVsZW1lbnQsIHVybCwgZnJhbWVOYW1lLCBtX291dGdvaW5nUmVmZXJyZXIpOwogICAgIApA
QCAtNDYwLDcgKzQ2MCw3IEBAIEZyYW1lKiBGcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxG
cmEKICAgICB9CiAKICAgICBpZiAoIWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAg
RnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVybC51
cmwoKSk7CisgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFt
ZS0+cGFnZSgpLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAg
LTUwMCw3ICs1MDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtQWdhaW4oKQogICAg
ICAgICByZXR1cm47CiAgICAgT3duUHRyPEZvcm1TdWJtaXNzaW9uPiBmb3JtKG1fZGVmZXJyZWRG
b3JtU3VibWlzc2lvbi5yZWxlYXNlKCkpOwogICAgIGlmIChmb3JtKQotICAgICAgICBzdWJtaXRG
b3JtKGZvcm0tPmFjdGlvbiwgZm9ybS0+VVJMLCBmb3JtLT5kYXRhLCBmb3JtLT50YXJnZXQsCisg
ICAgICAgIHN1Ym1pdEZvcm0oZm9ybS0+YWN0aW9uLCBmb3JtLT51cmwsIGZvcm0tPmRhdGEsIGZv
cm0tPnRhcmdldCwKICAgICAgICAgICAgIGZvcm0tPmNvbnRlbnRUeXBlLCBmb3JtLT5ib3VuZGFy
eSwgZm9ybS0+ZXZlbnQuZ2V0KCkpOwogfQogCkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6c3VibWl0Rm9ybShjb25zdCBjaGFyKgogICAgIGlmICh1LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRGVwcmVjYXRlZFN0cmluZyB1cmxTdHJpbmcgPSB1LnVybCgp
OworICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsU3RyaW5nID0gdS5kZXByZWNhdGVkU3RyaW5nKCk7
CiAgICAgaWYgKHVybFN0cmluZy5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSkgewog
ICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwogICAgICAg
ICBleGVjdXRlU2NyaXB0KEtVUkw6OmRlY29kZV9zdHJpbmcodXJsU3RyaW5nLm1pZChzdHJsZW4o
ImphdmFzY3JpcHQ6IikpKSk7CkBAIC03MzEsMTMgKzczMSwxMyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpkaWRFeHBsaWNpdE9wZW4oKQogICAgIC8vIENhbmNlbGxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3
b3JrcyBmb3IgYWxsIGNhc2VzIGJlY2F1c2UgZG9jdW1lbnQub3BlbiAKICAgICAvLyBpbXBsaWNp
dGx5IHByZWNlZGVzIGRvY3VtZW50LndyaXRlLgogICAgIGNhbmNlbFJlZGlyZWN0aW9uKCk7IAot
ICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5VUkwoKSAhPSAiYWJvdXQ6YmxhbmsiKQotICAg
ICAgICBtX1VSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPlVSTCgpOworICAgIGlmIChtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSAhPSAiYWJvdXQ6YmxhbmsiKQorICAgICAgICBtX1VSTCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpyZXBsYWNl
Q29udGVudHNXaXRoU2NyaXB0UmVzdWx0KGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBKU1ZhbHVl
KiByZXN1bHQgPSBleGVjdXRlU2NyaXB0KEtVUkw6OmRlY29kZV9zdHJpbmcodXJsLnVybCgpLm1p
ZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSk7CisgICAgSlNWYWx1ZSogcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChLVVJMOjpkZWNvZGVfc3RyaW5nKHVybC5kZXByZWNhdGVkU3RyaW5nKCkubWlkKHN0
cmxlbigiamF2YXNjcmlwdDoiKSkpKTsKICAgICBTdHJpbmcgc2NyaXB0UmVzdWx0OwogICAgIGlm
ICghZ2V0U3RyaW5nKHJlc3VsdCwgc2NyaXB0UmVzdWx0KSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NzQ4LDEwICs3NDgsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVwbGFjZUNvbnRlbnRzV2l0aFNj
cgogCiBKU1ZhbHVlKiBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewotICAgIHJldHVybiBleGVjdXRlU2NyaXB0
KGZvcmNlVXNlckdlc3R1cmUgPyBTdHJpbmcoKSA6IFN0cmluZyhtX1VSTC51cmwoKSksIDAsIHNj
cmlwdCk7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoZm9yY2VVc2VyR2VzdHVyZSA/IFN0cmlu
ZygpIDogbV9VUkwuc3RyaW5nKCksIDAsIHNjcmlwdCk7CiB9CiAKLUpTVmFsdWUqIEZyYW1lTG9h
ZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgVVJMLCBpbnQgYmFzZUxpbmUsIGNvbnN0
IFN0cmluZyYgc2NyaXB0KQorSlNWYWx1ZSogRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCiB7CiAg
ICAgS0pTUHJveHkqIHByb3h5ID0gbV9mcmFtZS0+c2NyaXB0UHJveHkoKTsKICAgICBpZiAoIXBy
b3h5KQpAQCAtNzYwLDcgKzc2MCw3IEBAIEpTVmFsdWUqIEZyYW1lTG9hZGVyOjpleGVjdXRlU2Ny
aXB0KGNvbnMKICAgICBib29sIHdhc1J1bm5pbmdTY3JpcHQgPSBtX2lzUnVubmluZ1NjcmlwdDsK
ICAgICBtX2lzUnVubmluZ1NjcmlwdCA9IHRydWU7CiAKLSAgICBKU1ZhbHVlKiByZXN1bHQgPSBw
cm94eS0+ZXZhbHVhdGUoVVJMLCBiYXNlTGluZSwgc2NyaXB0KTsKKyAgICBKU1ZhbHVlKiByZXN1
bHQgPSBwcm94eS0+ZXZhbHVhdGUodXJsLCBiYXNlTGluZSwgc2NyaXB0KTsKIAogICAgIGlmICgh
d2FzUnVubmluZ1NjcmlwdCkgewogICAgICAgICBtX2lzUnVubmluZ1NjcmlwdCA9IGZhbHNlOwpA
QCAtODUxLDE4ICs4NTEsMTggQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEo
KQogICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAogICAgIGRvdWJsZSBkZWxheTsKLSAgICBT
dHJpbmcgVVJMOworICAgIFN0cmluZyB1cmw7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQog
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFwYXJzZUhUVFBSZWZyZXNoKG1fZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJSZWZyZXNoIiksIGZhbHNlLCBkZWxheSwg
VVJMKSkKKyAgICBpZiAoIXBhcnNlSFRUUFJlZnJlc2gobV9kb2N1bWVudExvYWRlci0+cmVzcG9u
c2UoKS5odHRwSGVhZGVyRmllbGQoIlJlZnJlc2giKSwgZmFsc2UsIGRlbGF5LCB1cmwpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgVVJMID0gbV9V
UkwudXJsKCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisgICAgICAgIHVybCA9IG1fVVJMLnN0
cmluZygpOwogICAgIGVsc2UKLSAgICAgICAgVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoVVJMKTsKKyAgICAgICAgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsKTsKIAotICAgIHNjaGVkdWxlSFRUUFJlZGlyZWN0aW9uKGRlbGF5LCBVUkwpOwor
ICAgIHNjaGVkdWxlSFRUUFJlZGlyZWN0aW9uKGRlbGF5LCB1cmwpOwogfQogCiBjb25zdCBTdHJp
bmcmIEZyYW1lTG9hZGVyOjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKQEAgLTg5Nyw3ICs4OTcs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmwsCiAgICAgcmVmLnNl
dFVzZXIoRGVwcmVjYXRlZFN0cmluZygpKTsKICAgICByZWYuc2V0UGFzcyhEZXByZWNhdGVkU3Ry
aW5nKCkpOwogICAgIHJlZi5zZXRSZWYoRGVwcmVjYXRlZFN0cmluZygpKTsKLSAgICBtX291dGdv
aW5nUmVmZXJyZXIgPSByZWYudXJsKCk7CisgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gcmVmLnN0
cmluZygpOwogICAgIG1fVVJMID0gdXJsOwogICAgIEtVUkwgYmFzZXVybDsKIApAQCAtOTA3LDEw
ICs5MDcsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsLAogICAg
IFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBET01JbXBsZW1lbnRhdGlvbjo6aW5zdGFuY2Uo
KS0+Y3JlYXRlRG9jdW1lbnQobV9yZXNwb25zZU1JTUVUeXBlLCBtX2ZyYW1lLCBtX2ZyYW1lLT5p
blZpZXdTb3VyY2VNb2RlKCkpOwogICAgIG1fZnJhbWUtPnNldERvY3VtZW50KGRvY3VtZW50KTsK
IAotICAgIGRvY3VtZW50LT5zZXRVUkwobV9VUkwudXJsKCkpOworICAgIGRvY3VtZW50LT5zZXRV
UkwobV9VUkwuZGVwcmVjYXRlZFN0cmluZygpKTsKICAgICAvLyBXZSBwcmVmZXIgbV9iYXNlVVJM
IG92ZXIgbV9VUkwgYmVjYXVzZSBtX1VSTCBjaGFuZ2VzIHdoZW4gd2UgYXJlCiAgICAgLy8gYWJv
dXQgdG8gbG9hZCBhIG5ldyBwYWdlLgotICAgIGRvY3VtZW50LT5zZXRCYXNlVVJMKGJhc2V1cmwu
dXJsKCkpOworICAgIGRvY3VtZW50LT5zZXRCYXNlVVJMKGJhc2V1cmwuZGVwcmVjYXRlZFN0cmlu
ZygpKTsKICAgICBpZiAobV9kZWNvZGVyKQogICAgICAgICBkb2N1bWVudC0+c2V0RGVjb2Rlciht
X2RlY29kZXIuZ2V0KCkpOwogCkBAIC0xMDY1LDcgKzEwNjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
OjpzdGFydEljb25Mb2FkZXIoKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgS1VSTCB1cmwo
aWNvblVSTCgpKTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nKHVybC51cmwoKSk7CisgICAgU3RyaW5n
IHVybFN0cmluZyh1cmwuc3RyaW5nKCkpOwogICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTEwODMsOCArMTA4Myw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0YXJ0SWNvbkxvYWRlcigpCiAgICAgICAgICAgICBpZiAoIWljb25EYXRhYmFzZSgpLT5pY29u
RGF0YUtub3duRm9ySWNvblVSTCh1cmxTdHJpbmcpKSB7CiAgICAgICAgICAgICAgICAgTE9HKElj
b25EYXRhYmFzZSwgIlRvbGQgbm90IHRvIGxvYWQgaWNvbiAlcyBidXQgaWNvbiBkYXRhIGlzIG5v
dCB5ZXQgYXZhaWxhYmxlIC0gcmVnaXN0ZXJpbmcgZm9yIG5vdGlmaWNhdGlvbiBhbmQgcmVxdWVz
dGluZyBsb2FkIGZyb20gZGlzayIsIHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbigpOwotICAgICAg
ICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTChtX1VSTC51cmwoKSwgSW50
U2l6ZSgwLCAwKSk7Ci0gICAgICAgICAgICAgICAgaWNvbkRhdGFiYXNlKCktPmljb25Gb3JQYWdl
VVJMKG9yaWdpbmFsUmVxdWVzdFVSTCgpLnVybCgpLCBJbnRTaXplKDAsIDApKTsKKyAgICAgICAg
ICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwobV9VUkwuc3RyaW5nKCksIElu
dFNpemUoMCwgMCkpOworICAgICAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFn
ZVVSTChvcmlnaW5hbFJlcXVlc3RVUkwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvbigpOwogICAgICAgICAgICAgICAgIApAQCAtMTE0MSw5ICsxMTQxLDkgQEAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nLCBDYXNlSW5zZW5zaXRpdmVIYQogdm9pZCBGcmFtZUxvYWRlcjo6Y29t
bWl0SWNvblVSTFRvSWNvbkRhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pCiB7CiAgICAgQVNTRVJU
KGljb25EYXRhYmFzZSgpKTsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnVybCgpLmFz
Y2lpKCksIG1fVVJMLnVybCgpLmFzY2lpKCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnVybCgpLmFz
Y2lpKCkpOwotICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnVy
bCgpLCBtX1VSTC51cmwoKSk7Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25VUkxGb3JQYWdl
VVJMKGljb24udXJsKCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnVybCgpKTsKKyAgICBMT0coSWNv
bkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJM
cyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtX1VSTC5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOworICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0
cmluZygpLCBtX1VSTC5zdHJpbmcoKSk7CisgICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25VUkxG
b3JQYWdlVVJMKGljb24uc3RyaW5nKCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygpKTsK
IH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVzdG9yZURvY3VtZW50U3RhdGUoKQpAQCAtMTM4Myw3
ICsxMzgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2NoZWR1bGVSZWZyZXNoKGJvb2wgdwogCiAg
ICAgU2NoZWR1bGVkUmVkaXJlY3Rpb246OlR5cGUgdHlwZSA9IGR1cmluZ0xvYWQKICAgICAgICAg
PyBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFuZ2VEdXJpbmdMb2FkIDogU2NoZWR1
bGVkUmVkaXJlY3Rpb246OmxvY2F0aW9uQ2hhbmdlOwotICAgIHNjaGVkdWxlUmVkaXJlY3Rpb24o
bmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHR5cGUsIG1fVVJMLnVybCgpLCBtX291dGdvaW5nUmVm
ZXJyZXIsIHRydWUsIHdhc1VzZXJHZXN0dXJlKSk7CisgICAgc2NoZWR1bGVSZWRpcmVjdGlvbihu
ZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24odHlwZSwgbV9VUkwuc3RyaW5nKCksIG1fb3V0Z29pbmdS
ZWZlcnJlciwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUpKTsKICAgICBtX2NhY2hlUG9saWN5ID0gQ2Fj
aGVQb2xpY3lSZWZyZXNoOwogfQogCkBAIC0xNDYzLDcgKzE0NjMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWRpcmVjdGlvblRpbWVyRmlyZWQoCiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJl
Y3Rpb246OnJlZGlyZWN0aW9uOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjps
b2NhdGlvbkNoYW5nZToKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRp
b25DaGFuZ2VEdXJpbmdMb2FkOgotICAgICAgICAgICAgY2hhbmdlTG9jYXRpb24ocmVkaXJlY3Rp
b24tPlVSTCwgcmVkaXJlY3Rpb24tPnJlZmVycmVyLAorICAgICAgICAgICAgY2hhbmdlTG9jYXRp
b24ocmVkaXJlY3Rpb24tPnVybCwgcmVkaXJlY3Rpb24tPnJlZmVycmVyLAogICAgICAgICAgICAg
ICAgIHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwgcmVkaXJlY3Rpb24tPndhc1VzZXJHZXN0dXJl
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlv
bjo6aGlzdG9yeU5hdmlnYXRpb246CkBAIC0xNjIxLDcgKzE2MjEsNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpsb2FkUGx1Z2luKFJlbmRlclBhcnQqCiAgICAgICAgICAgICBwbHVnaW5FbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpOwogCiAgICAgICAgIGlmICgh
Y2FuTG9hZCh1cmwsIGZyYW1lKCktPmRvY3VtZW50KCkpKSB7Ci0gICAgICAgICAgICBGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUtPnBhZ2UoKSwgdXJsLnVybCgpKTsK
KyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+
cGFnZSgpLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAKQEAgLTE3MjcsOSArMTcyNyw5IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnVzZXJHZXN0dXJl
SGludCgpCiAgICAgcmV0dXJuIHRydWU7IC8vIElmIEphdmFTY3JpcHQgaXMgZGlzYWJsZWQsIGEg
dXNlciBnZXN0dXJlIG11c3QgaGF2ZSBpbml0aWF0ZWQgdGhlIG5hdmlnYXRpb24KIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkTm90T3BlblVSTChjb25zdCBLVVJMJiBVUkwpCit2b2lkIEZyYW1l
TG9hZGVyOjpkaWROb3RPcGVuVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAobV9zdWJt
aXR0ZWRGb3JtVVJMID09IFVSTCkKKyAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMID09IHVybCkK
ICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOwogfQogCkBAIC0xNzk3LDcgKzE3
OTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVQb2xpY3lCYXNlVVJMKCkKICAgICBpZiAo
bV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSAmJiBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpLT5k
b2N1bWVudCgpKQogICAgICAgICBzZXRQb2xpY3lCYXNlVVJMKG1fZnJhbWUtPnRyZWUoKS0+cGFy
ZW50KCktPmRvY3VtZW50KCktPnBvbGljeUJhc2VVUkwoKSk7CiAgICAgZWxzZQotICAgICAgICBz
ZXRQb2xpY3lCYXNlVVJMKG1fVVJMLnVybCgpKTsKKyAgICAgICAgc2V0UG9saWN5QmFzZVVSTCht
X1VSTC5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldFBvbGljeUJhc2VVUkwo
Y29uc3QgU3RyaW5nJiBzKQpAQCAtMTgxMCw5ICsxODEwLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c2V0UG9saWN5QmFzZVVSTChjb25zdAogCiAvLyBUaGlzIGRvZXMgdGhlIHNhbWUga2luZCBvZiB3
b3JrIHRoYXQgRnJhbWVMb2FkZXI6Om9wZW5VUkwgZG9lcywgZXhjZXB0IGl0IHJlbGllcyBvbiB0
aGUgZmFjdAogLy8gdGhhdCBhIGhpZ2hlciBsZXZlbCBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUg
VVJMcyBtYXRjaCBhbmQgdGhlIHNjcm9sbGluZyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uCi12
b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0FuY2hvcihjb25zdCBLVVJMJiBVUkwpCit2b2lkIEZy
YW1lTG9hZGVyOjpzY3JvbGxUb0FuY2hvcihjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgbV9VUkwg
PSBVUkw7CisgICAgbV9VUkwgPSB1cmw7CiAgICAgc3RhcnRlZCgpOwogCiAgICAgZ290b0FuY2hv
cigpOwpAQCAtMTg0OSw3ICsxODQ5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRSZWRpcmVj
dGlvblRpbWVyKAogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlv
bjoKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6bG9jYXRpb25DaGFuZ2U6CiAg
ICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OmxvY2F0aW9uQ2hhbmdlRHVyaW5nTG9h
ZDoKLSAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0ZWQobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+
VVJMLmRlcHJlY2F0ZWRTdHJpbmcoKSwKKyAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0ZWQobV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+dXJsLmRlcHJlY2F0ZWRTdHJpbmcoKSwKICAgICAgICAgICAg
ICAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5kZWxheSwKICAgICAgICAgICAgICAgICBjdXJy
ZW50VGltZSgpICsgbV9yZWRpcmVjdGlvblRpbWVyLm5leHRGaXJlSW50ZXJ2YWwoKSwKICAgICAg
ICAgICAgICAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwKQEAgLTE5MzAs
OSArMTkzMCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmFsU2V0dXBGb3JSZXBsYWNlKEQKICAg
ICBtX2NsaWVudC0+Y2xlYXJVbmFyY2hpdmluZ1N0YXRlKGxvYWRlcik7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgVVJMLCBFdmVudCogZXZlbnQpCit2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgRXZlbnQqIGV2ZW50KQogewotICAgIGxvYWQo
UmVzb3VyY2VSZXF1ZXN0KFVSTCksIGZhbHNlLCB0cnVlLCBldmVudCwgMCwgSGFzaE1hcDxTdHJp
bmcsIFN0cmluZz4oKSk7CisgICAgbG9hZChSZXNvdXJjZVJlcXVlc3QodXJsKSwgZmFsc2UsIHRy
dWUsIGV2ZW50LCAwLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tI
aXN0b3J5LCBib29sIHVzZXJHZXN0dXJlLCBFdmVudCogZXZlbnQsCkBAIC0xOTQ4LDkgKzE5NDgs
OSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlCiAgICAgICAgIHJl
ZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOwogIAogICAgIEFTU0VSVChmcmFtZSgpLT5kb2N1
bWVudCgpKTsKLSAgICBpZiAodXJsLnVybCgpLnN0YXJ0c1dpdGgoImZpbGU6IiwgZmFsc2UpKSB7
CisgICAgaWYgKHVybC5kZXByZWNhdGVkU3RyaW5nKCkuc3RhcnRzV2l0aCgiZmlsZToiLCBmYWxz
ZSkpIHsKICAgICAgICAgaWYgKCFjYW5Mb2FkKHVybCwgZnJhbWUoKS0+ZG9jdW1lbnQoKSkgJiYg
IWNhbkxvYWQodXJsLCByZWZlcnJlcikpIHsKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBv
cnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFnZSgpLCB1cmwudXJsKCkpOworICAgICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVy
bC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0x
OTg2LDEyICsxOTg2LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2Fk
UmUKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJh
bWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgS1VS
TCYgbmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRU
eXBlLAogICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBFdmVudCogZXZlbnQsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCiB7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0g
Zm9ybVN0YXRlOwogICAgIAotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFVSTCk7CisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QobmV3VVJMKTsKICAgICBpZiAoIXJlZmVycmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIGFk
ZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIHRydWUsIGV2ZW50IHx8IGlzRm9ybVN1Ym1p
c3Npb24pOwpAQCAtMjAwMCwxMSArMjAwMCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNv
bnN0IEtVUkwmIFVSTCwgCiAKICAgICBBU1NFUlQobmV3TG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlw
ZVNhbWUpOwogCi0gICAgTmF2aWdhdGlvbkFjdGlvbiBhY3Rpb24oVVJMLCBuZXdMb2FkVHlwZSwg
aXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpOworICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKG5l
d1VSTCwgbmV3TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKIAogICAgIGlmICgh
ZnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoRnJhbWUqIHRhcmdldEZyYW1lID0g
bV9mcmFtZS0+dHJlZSgpLT5maW5kKGZyYW1lTmFtZSkpCi0gICAgICAgICAgICB0YXJnZXRGcmFt
ZS0+bG9hZGVyKCktPmxvYWQoVVJMLCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIFN0cmluZygpLCBl
dmVudCwgZm9ybVN0YXRlKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS0+bG9h
ZChuZXdVUkwsIHJlZmVycmVyLCBuZXdMb2FkVHlwZSwgU3RyaW5nKCksIGV2ZW50LCBmb3JtU3Rh
dGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjaGVja05ld1dpbmRvd1BvbGljeShhY3Rp
b24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiBVUkws
IAogCiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBvbGREb2N1bWVudExvYWRlciA9IG1fZG9j
dW1lbnRMb2FkZXI7CiAKLSAgICBib29sIHNhbWVVUkwgPSBzaG91bGRUcmVhdFVSTEFzU2FtZUFz
Q3VycmVudChVUkwpOworICAgIGJvb2wgc2FtZVVSTCA9IHNob3VsZFRyZWF0VVJMQXNTYW1lQXND
dXJyZW50KG5ld1VSTCk7CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRvIGRvIHNjcm9sbCB0byBh
bmNob3IgcHJvY2Vzc2luZyBldmVuIGlmIHRoZSBVUkwgaXMKICAgICAvLyBleGFjdGx5IHRoZSBz
YW1lIHNvIHBhZ2VzIHdpdGggJyMnIGxpbmtzIGFuZCBESFRNTCBzaWRlIGVmZmVjdHMKQEAgLTIw
MjAsNyArMjAyMCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgVVJMLCAK
ICAgICBpZiAoIWlzRm9ybVN1Ym1pc3Npb24KICAgICAgICAgJiYgbmV3TG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZVJlbG9hZAogICAgICAgICAmJiBuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBl
U2FtZQotICAgICAgICAmJiAhc2hvdWxkUmVsb2FkKFVSTCwgdXJsKCkpCisgICAgICAgICYmICFz
aG91bGRSZWxvYWQobmV3VVJMLCB1cmwoKSkKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBq
dXN0IHNjcm9sbCBpZiBhIGxpbmsgZnJvbSB3aXRoaW4gYQogICAgICAgICAvLyBmcmFtZXNldCBp
cyB0cnlpbmcgdG8gcmVsb2FkIHRoZSBmcmFtZXNldCBpbnRvIF90b3AuCiAgICAgICAgICYmICFt
X2ZyYW1lLT5pc0ZyYW1lU2V0KCkpIHsKQEAgLTIxNDUsNyArMjE0NSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXIqIGwKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNl
IGlmIHdlIGNvdWxkIGNvbGxhcHNlIHRoZXNlIGludG8gb25lIG9yIHR3byBmdW5jdGlvbnMuCiBi
b29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKIHsKLSAgICBpZiAoIXNob3VsZFRyZWF0VVJMQXNMb2NhbCh1cmwudXJsKCkpKQor
ICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc0xvY2FsKHVybC5zdHJpbmcoKSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIHNob3VsZFRyZWF0VVJMQXNMb2NhbChyZWZlcnJlcik7
CkBAIC0yMTUzLDcgKzIxNTMsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IEtV
UkwmIHVyCiAKIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBEb2N1bWVudCogZG9jKQogewotICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc0xvY2FsKHVybC51
cmwoKSkpCisgICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzTG9jYWwodXJsLnN0cmluZygpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZG9jICYmIGRvYy0+aXNBbGxvd2VkVG9M
b2FkTG9jYWxSZXNvdXJjZXMoKTsKQEAgLTIxODUsNyArMjE4NSw3IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OnNob3VsZEhpZGVSZWZlcnJlcihjb24KICAgICBpZiAoIXJlZmVycmVySXNTZWN1cmVVUkwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgVVJMSXNTZWN1cmVVUkwgPSB1cmwu
dXJsKCkuc3RhcnRzV2l0aCgiaHR0cHM6IiwgZmFsc2UpOworICAgIGJvb2wgVVJMSXNTZWN1cmVV
UkwgPSB1cmwuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImh0dHBzOiIsIGZhbHNlKTsK
IAogICAgIHJldHVybiAhVVJMSXNTZWN1cmVVUkw7CiB9CkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBi
b29sIEZyYW1lTG9hZGVyOjpzaG91bGRBbGxvd05hdmlnYXRpb24oCiAgICAgICAgIERvY3VtZW50
KiB0YXJnZXREb2N1bWVudCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAvLyBG
SVhNRTogdGhpcyBlcnJvciBtZXNzYWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9m
IHdoeSB0aGUgbmF2aWdhdGlvbiBjaGFuZ2UgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8g
aW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBm
cmFtZSB3aXRoIFVSTCAlcy5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0RG9jdW1lbnQtPlVSTCgpLnV0ZjgoKS5kYXRhKCksIGFjdGl2ZURvY3VtZW50
LT5VUkwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YXJnZXREb2N1bWVudC0+dXJsKCkudXRmOCgpLmRhdGEoKSwgYWN0aXZlRG9jdW1l
bnQtPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIGlmIChLSlM6OkludGVycHJldGVy
OjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiJXMiLCBtZXNz
YWdlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMjU1Miw3ICsyNTUyLDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKAogICAgIH0gZWxzZSB7ICAgICAgICAKICAgICAgICAg
S1VSTCB1cmwgPSBwZGwtPnN1YnN0aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKICAgICAgICAg
aWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICB1cmwgPSBwZGwtPlVSTCgpOworICAgICAg
ICAgICAgdXJsID0gcGRsLT51cmwoKTsKICAgICAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICB1cmwgPSBwZGwtPnJlc3BvbnNlVVJMKCk7CiAgICAgICAgIGlmICh1cmwuaXNFbXB0
eSgpKQpAQCAtMjY4MCw5ICsyNjgwLDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJl
Y3RDYW5jZWxsZQogICAgIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uID0gZmFsc2U7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYgVVJMLCBkb3Vi
bGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGlzSmF2
YVNjcmlwdEZvcm1BY3Rpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNv
bnN0IEtVUkwmIHVybCwgZG91YmxlIHNlY29uZHMsIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBpc0phdmFTY3JpcHRGb3JtQWN0aW9uKQogewotICAgIG1fY2xpZW50LT5k
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoVVJMLCBzZWNvbmRzLCBmaXJlRGF0ZSk7
CisgICAgbV9jbGllbnQtPmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1cmwsIHNl
Y29uZHMsIGZpcmVEYXRlKTsKICAgICAKICAgICAvLyBSZW1lbWJlciB0aGF0IHdlIHNlbnQgYSBy
ZWRpcmVjdCBub3RpZmljYXRpb24gdG8gdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgc28gdGhhdCB3
aGVuIHdlIGNvbW1pdAogICAgIC8vIHRoZSBuZXh0IHByb3Zpc2lvbmFsIGxvYWQsIHdlIGNhbiBz
ZW5kIGEgY29ycmVzcG9uZGluZyAtd2ViVmlldzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lOgpAQCAtMjc0MCwxMyArMjc0MCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hl
ZFBhZ2UmIGNhY2hlCiAgICAgICAgIG1fZnJhbWUtPnNldEpTRGVmYXVsdFN0YXR1c0JhclRleHQo
U3RyaW5nKCkpOwogICAgIH0KIAotICAgIEtVUkwgVVJMID0gY2FjaGVkUGFnZS5VUkwoKTsKKyAg
ICBLVVJMIHVybCA9IGNhY2hlZFBhZ2UudXJsKCk7CiAKLSAgICBpZiAoVVJMLnByb3RvY29sKCku
c3RhcnRzV2l0aCgiaHR0cCIpICYmICFVUkwuaG9zdCgpLmlzRW1wdHkoKSAmJiBVUkwucGF0aCgp
LmlzRW1wdHkoKSkKLSAgICAgICAgVVJMLnNldFBhdGgoIi8iKTsKKyAgICBpZiAodXJsLnByb3Rv
Y29sKCkuc3RhcnRzV2l0aCgiaHR0cCIpICYmICF1cmwuaG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwu
cGF0aCgpLmlzRW1wdHkoKSkKKyAgICAgICAgdXJsLnNldFBhdGgoIi8iKTsKICAgICAKLSAgICBt
X1VSTCA9IFVSTDsKLSAgICBtX3dvcmtpbmdVUkwgPSBVUkw7CisgICAgbV9VUkwgPSB1cmw7Cisg
ICAgbV93b3JraW5nVVJMID0gdXJsOwogCiAgICAgc3RhcnRlZCgpOwogCkBAIC0yNzU5LDcgKzI3
NTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZFBhZ2UmIGNhY2hlCiAgICAgbV9u
ZWVkc0NsZWFyID0gdHJ1ZTsKICAgICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBtX2RpZENh
bGxJbXBsaWNpdENsb3NlID0gZmFsc2U7Ci0gICAgbV9vdXRnb2luZ1JlZmVycmVyID0gVVJMLnVy
bCgpOworICAgIG1fb3V0Z29pbmdSZWZlcnJlciA9IHVybC5zdHJpbmcoKTsKIAogICAgIEZyYW1l
VmlldyogdmlldyA9IGNhY2hlZFBhZ2UudmlldygpOwogICAgIGlmICh2aWV3KQpAQCAtMjc5NSwx
OCArMjc5NSw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgY2hl
Y2tMb2FkQ29tcGxldGUoKTsKIH0KIAotLy8gRklYTUU6IFdoaWNoIG9uZSBvZiB0aGVzZSBVUkwg
bWV0aG9kcyBpcyByaWdodD8KLQotS1VSTCBGcmFtZUxvYWRlcjo6dXJsKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9VUkw7Ci19Ci0KLUtVUkwgRnJhbWVMb2FkZXI6OlVSTCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPlVSTCgpOwotfQotCiBib29sIEZyYW1l
TG9hZGVyOjppc0FyY2hpdmVMb2FkUGVuZGluZyhSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25z
dAogewogICAgIHJldHVybiBtX2NsaWVudC0+aXNBcmNoaXZlTG9hZFBlbmRpbmcobG9hZGVyKTsK
QEAgLTMxNjIsMTQgKzMxNTAsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dG9rZW5pemVyUHJvY2Vz
c2VkRGF0YQogICAgIGNoZWNrQ29tcGxldGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRp
ZFRlbGxCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5nJiBVUkwpCit2b2lkIEZyYW1lTG9hZGVy
OjpkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIG1fdXJs
c0JyaWRnZUtub3dzQWJvdXQuYWRkKFVSTCk7CisgICAgbV91cmxzQnJpZGdlS25vd3NBYm91dC5h
ZGQodXJsKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6aGF2ZVRvbGRCcmlkZ2VBYm91dExvYWQo
Y29uc3QgU3RyaW5nJiBVUkwpCitib29sIEZyYW1lTG9hZGVyOjpoYXZlVG9sZEJyaWRnZUFib3V0
TG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICByZXR1cm4gbV91cmxzQnJpZGdlS25vd3NB
Ym91dC5jb250YWlucyhVUkwpOworICAgIHJldHVybiBtX3VybHNCcmlkZ2VLbm93c0Fib3V0LmNv
bnRhaW5zKHVybCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxvYWRFdmVudHMo
KQpAQCAtMzIzNyw3ICszMjI1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0dGVkTG9hZChE
b2N1bWVudAogICAgIG1fY2xpZW50LT5jb21taXR0ZWRMb2FkKGxvYWRlciwgZGF0YSwgbGVuZ3Ro
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cG9zdChjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgCit2b2lkIEZyYW1lTG9hZGVyOjpwb3N0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGZvcm1EYXRhLCAKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBF
dmVudCogZXZlbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGZvcm1WYWx1ZXMpCiB7CiAgICAgLy8gV2hlbiBwb3N0aW5nLCB1c2UgdGhlIE5T
VVJMUmVxdWVzdFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIGxvYWQgZmxhZy4KQEAgLTMyNDYsNyAr
MzIzNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnBvc3QoY29uc3QgS1VSTCYgVVJMLCAKIAogICAg
IC8vIEZJWE1FOiBXaGVyZSdzIHRoZSBjb2RlIHRoYXQgaW1wbGVtZW50cyB3aGF0IHRoZSBjb21t
ZW50IGFib3ZlIHNheXM/CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChVUkwpOworICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVl
c3QocmVxdWVzdCwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkK
QEAgLTMyNTUsNyArMzI0Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnBvc3QoY29uc3QgS1VSTCYg
VVJMLCAKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KGZvcm1EYXRhKTsKICAgICByZXF1ZXN0LnNl
dEhUVFBDb250ZW50VHlwZShjb250ZW50VHlwZSk7CiAKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIGFj
dGlvbihVUkwsIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCwgdHJ1ZSwgZXZlbnQpOworICAgIE5hdmln
YXRpb25BY3Rpb24gYWN0aW9uKHVybCwgRnJhbWVMb2FkVHlwZVN0YW5kYXJkLCB0cnVlLCBldmVu
dCk7CiAKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGU7CiAgICAgaWYgKGZvcm0gJiYg
IWZvcm1WYWx1ZXMuaXNFbXB0eSgpKQpAQCAtMzMxMCw3ICszMjk4LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdQogCiAgICAgaWYgKGVycm9yLmlzTnVsbCgpKSB7
CiAgICAgICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7Ci0gICAgICAgIGRpZFRlbGxC
cmlkZ2VBYm91dExvYWQobmV3UmVxdWVzdC51cmwoKS51cmwoKSk7CisgICAgICAgIGRpZFRlbGxC
cmlkZ2VBYm91dExvYWQobmV3UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIFJlc291
cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KG5ld1JlcXVlc3QsIGVycm9yLCBy
ZXNwb25zZSwgZGF0YSk7CiAgICAgfQogICAgIApAQCAtMzQxMiwxMCArMzQwMCwxMCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb250aW51ZUZyYWdtZW50U2Nyb2xsCiAgICAgaWYgKCFzaG91bGRDb250
aW51ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBVUkwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIEtVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAKLSAgICBtX2RvY3VtZW50TG9hZGVy
LT5yZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChVUkwpOwotICAgIGlmICghaXNSZWRp
cmVjdCAmJiAhc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoVVJMKSkgeworICAgIG1fZG9j
dW1lbnRMb2FkZXItPnJlcGxhY2VSZXF1ZXN0VVJMRm9yQW5jaG9yU2Nyb2xsKHVybCk7CisgICAg
aWYgKCFpc1JlZGlyZWN0ICYmICFzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudCh1cmwpKSB7
CiAgICAgICAgIC8vIE5COiBtdXN0IGhhcHBlbiBhZnRlciBfc2V0VVJMLCBzaW5jZSB3ZSBhZGQg
YmFzZWQgb24gdGhlIGN1cnJlbnQgcmVxdWVzdC4KICAgICAgICAgLy8gTXVzdCBhbHNvIGhhcHBl
biBiZWZvcmUgd2Ugb3BlblVSTCBhbmQgZGlzcGxhY2UgdGhlIHNjcm9sbCBwb3NpdGlvbiwgc2lu
Y2UKICAgICAgICAgLy8gYWRkaW5nIHRoZSBCRiBpdGVtIHdpbGwgc2F2ZSBhd2F5IHNjcm9sbCBz
dGF0ZS4KQEAgLTM0MzAsNyArMzQxOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlRnJh
Z21lbnRTY3JvbGwKICAgICAgICAgYWRkSGlzdG9yeUl0ZW1Gb3JGcmFnbWVudFNjcm9sbCgpOwog
ICAgIH0KICAgICAKLSAgICBzY3JvbGxUb0FuY2hvcihVUkwpOworICAgIHNjcm9sbFRvQW5jaG9y
KHVybCk7CiAgICAgCiAgICAgaWYgKCFpc1JlZGlyZWN0KQogICAgICAgICAvLyBUaGlzIHdpbGwg
Y2xlYXIgcHJldmlvdXNJdGVtIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGZyYW1lIHRyZWUgdGhhdCBk
aWRuJ3QKQEAgLTM3ODIsMTEgKzM3NzAsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FjaGVQYWdl
Rm9ySGlzdG9yeUl0ZQogICAgIH0KIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgS1VSTCYgVVJMKSBjb25zdAorYm9vbCBGcmFtZUxvYWRl
cjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAog
ewogICAgIGlmICghbV9jdXJyZW50SGlzdG9yeUl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gVVJMID09IG1fY3VycmVudEhpc3RvcnlJdGVtLT51cmwoKSB8fCBVUkwgPT0g
bV9jdXJyZW50SGlzdG9yeUl0ZW0tPm9yaWdpbmFsVVJMKCk7CisgICAgcmV0dXJuIHVybCA9PSBt
X2N1cnJlbnRIaXN0b3J5SXRlbS0+dXJsKCkgfHwgdXJsID09IG1fY3VycmVudEhpc3RvcnlJdGVt
LT5vcmlnaW5hbFVSTCgpOwogfQogCiBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRl
cjo6Y3JlYXRlSGlzdG9yeUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCkKQEAgLTM4MDksNyArMzc5Nyw3
IEBAIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEZyYW1lTG9hZGVyOjpjcmUKICAgICAgICAgICAg
IHVybCA9IGRvY0xvYWRlci0+cmVxdWVzdFVSTCgpOyAgICAgICAgICAgICAgICAKICAgICB9CiAK
LSAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBDcmVhdGluZyBpdGVtIGZvciAlcyIs
IHVybC51cmwoKS5hc2NpaSgpKTsKKyAgICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBD
cmVhdGluZyBpdGVtIGZvciAlcyIsIHVybC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
CiAgICAgLy8gRnJhbWVzIHRoYXQgaGF2ZSBuZXZlciBzdWNjZXNzZnVsbHkgbG9hZGVkIGFueSBj
b250ZW50CiAgICAgLy8gbWF5IGhhdmUgbm8gVVJMIGF0IGFsbC4gQ3VycmVudGx5IG91ciBoaXN0
b3J5IGNvZGUgY2FuJ3QKQEAgLTM4MjIsNyArMzgxMCw3IEBAIFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IEZyYW1lTG9hZGVyOjpjcmUKICAgICAgICAgb3JpZ2luYWxVUkwgPSBLVVJMKCJhYm91dDpi
bGFuayIpOwogICAgIAogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG5ldyBIaXN0b3J5
SXRlbSh1cmwsIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpLCBtX2ZyYW1lLT50cmVlKCktPnBhcmVu
dCgpID8gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKS0+dHJlZSgpLT5uYW1lKCkgOiAiIiwgZG9j
TG9hZGVyID8gZG9jTG9hZGVyLT50aXRsZSgpIDogIiIpOwotICAgIGl0ZW0tPnNldE9yaWdpbmFs
VVJMU3RyaW5nKG9yaWdpbmFsVVJMLnVybCgpKTsKKyAgICBpdGVtLT5zZXRPcmlnaW5hbFVSTFN0
cmluZyhvcmlnaW5hbFVSTC5zdHJpbmcoKSk7CiAgICAgCiAgICAgLy8gU2F2ZSBmb3JtIHN0YXRl
IGlmIHRoaXMgaXMgYSBQT1NUCiAgICAgaWYgKGRvY0xvYWRlcikgewpAQCAtMzg1Myw3ICszODQx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkQmFja0ZvcndhcmRJdGVtQ2xpcAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBmcmFtZUxvYWRl
ci0+Y3JlYXRlSGlzdG9yeUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7Ci0gICAgICAgICAgICBM
T0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2ZvcndhcmQg
aXRlbSAlcCBmb3IgZnJhbWUgJXMiLCBpdGVtLmdldCgpLCBkb2N1bWVudExvYWRlcigpLT5VUkwo
KS51cmwoKS5hc2NpaSgpKTsKKyAgICAgICAgICAgIExPRyhCYWNrRm9yd2FyZCwgIldlYkNvcmVC
YWNrRm9yd2FyZCAtIEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGZvciBmcmFtZSAlcyIsIGl0
ZW0uZ2V0KCksIGRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgIHBhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLT5hZGRJdGVtKGl0ZW0pOwog
ICAgICAgICB9CiB9CkBAIC0zOTc2LDcgKzM5NjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
SXRlbShIaXN0b3J5SXRlbSogCiAgICAgS1VSTCBpdGVtT3JpZ2luYWxVUkwgPSBpdGVtLT5vcmln
aW5hbFVSTCgpOwogICAgIEtVUkwgY3VycmVudFVSTDsKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIo
KSkKLSAgICAgICAgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCktPlVSTCgpOworICAgICAg
ICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAgICAgUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSA9IGl0ZW0tPmZvcm1EYXRhKCk7CiAKICAgICAvLyBBcmUgd2UgbmF2aWdh
dGluZyB0byBhbiBhbmNob3Igd2l0aGluIHRoZSBwYWdlPwpAQCAtNDAzMCw3ICs0MDE4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIAogICAgICAgICAgICAgICAg
IGxvYWQoY2FjaGVkUGFnZS0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZFR5cGUsIDApOyAgIAogICAg
ICAgICAgICAgICAgIGluUGFnZUNhY2hlID0gdHJ1ZTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIk5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMg
ZnJvbSBiYWNrL2ZvcndhcmQgY2FjaGUgYmVjYXVzZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIs
IG1fcHJvdmlzaW9uYWxIaXN0b3J5SXRlbS0+dXJsKCkudXJsKCkuYXNjaWkoKSk7CisgICAgICAg
ICAgICAgICAgTE9HKFBhZ2VDYWNoZSwgIk5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJvbSBi
YWNrL2ZvcndhcmQgY2FjaGUgYmVjYXVzZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIsIG1fcHJv
dmlzaW9uYWxIaXN0b3J5SXRlbS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUoaXRlbSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTQwOTUsNyArNDA4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVt
KEhpc3RvcnlJdGVtKiAKIC8vIFdhbGsgdGhlIGZyYW1lIHRyZWUgYW5kIGVuc3VyZSB0aGF0IHRo
ZSBVUkxzIG1hdGNoIHRoZSBVUkxzIGluIHRoZSBpdGVtLgogYm9vbCBGcmFtZUxvYWRlcjo6dXJs
c01hdGNoSXRlbShIaXN0b3J5SXRlbSogaXRlbSkgY29uc3QKIHsKLSAgICBLVVJMIGN1cnJlbnRV
UkwgPSBkb2N1bWVudExvYWRlcigpLT5VUkwoKTsKKyAgICBLVVJMIGN1cnJlbnRVUkwgPSBkb2N1
bWVudExvYWRlcigpLT51cmwoKTsKICAgICAKICAgICBpZiAoIWVxdWFsSWdub3JpbmdSZWYoY3Vy
cmVudFVSTCwgaXRlbS0+dXJsKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MTQ3LDcg
KzQxMzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWN1cnNpdmVHb1RvSXRlbShIaXN0CiAgICAg
S1VSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7CiAgICAgS1VSTCBjdXJyZW50VVJMOwogICAgIGlm
IChkb2N1bWVudExvYWRlcigpKQotICAgICAgICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIo
KS0+VVJMKCk7CisgICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT51cmwoKTsK
ICAgICAKICAgICAvLyBBbHdheXMgcmVsb2FkIHRoZSB0YXJnZXQgZnJhbWUgb2YgdGhlIGl0ZW0g
d2UncmUgZ29pbmcgdG8uICBUaGlzIGVuc3VyZXMgdGhhdCB3ZSB3aWxsCiAgICAgLy8gZG8gLXNv
bWUtIGxvYWQgZm9yIHRoZSB0cmFuc2l0aW9uLCB3aGljaCBtZWFucyBhIHByb3BlciBub3RpZmlj
YXRpb24gd2lsbCBiZSBwb3N0ZWQKQEAgLTQyMjEsNyArNDIwOSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmFkZEhpc3RvcnlGb3JDdXJyZW50TG8KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlSGlz
dG9yeUZvclN0YW5kYXJkTG9hZCgpCiB7Ci0gICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9y
eTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgU3RhbmRhcmQgTG9hZCBpbiBmcmFtZSAlcyIsIGRvY3Vt
ZW50TG9hZGVyKCktPlVSTCgpLnVybCgpLmFzY2lpKCkpOworICAgIExPRyhIaXN0b3J5LCAiV2Vi
Q29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIFN0YW5kYXJkIExvYWQgaW4gZnJhbWUg
JXMiLCBkb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAg
ICAgCiAgICAgYm9vbCBmcmFtZU5hdmlnYXRpb25PbkxvYWQgPSBmYWxzZTsKICAgICAKQEAgLTQy
MzcsNyArNDIyNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUhpc3RvcnlGb3JTdGFuZGEK
ICAgICAgICAgaWYgKCFkb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCkuaXNFbXB0eSgp
KQogICAgICAgICAgICAgYWRkSGlzdG9yeUZvckN1cnJlbnRMb2NhdGlvbigpOwogICAgIH0gZWxz
ZSBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgbV9j
dXJyZW50SGlzdG9yeUl0ZW0pIHsKLSAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnNldFVS
TChkb2N1bWVudExvYWRlcigpLT5VUkwoKSk7CisgICAgICAgIG1fY3VycmVudEhpc3RvcnlJdGVt
LT5zZXRVUkwoZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpOwogICAgICAgICBtX2N1cnJlbnRIaXN0
b3J5SXRlbS0+c2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlcigpLT5yZXF1ZXN0
KCkpOwogICAgIH0KICAgICAKQEAgLTQzMDYsNyArNDI5NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnVwZGF0ZUhpc3RvcnlGb3JSZWRpcmUKICAgICAgICAgaWYgKCFtX2N1cnJlbnRIaXN0b3J5SXRl
bSAmJiAhbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAgICAgICAgIGFkZEhpc3RvcnlG
b3JDdXJyZW50TG9jYXRpb24oKTsKICAgICAgICAgaWYgKG1fY3VycmVudEhpc3RvcnlJdGVtKSB7
Ci0gICAgICAgICAgICBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+c2V0VVJMKGRvY3VtZW50TG9hZGVy
KCktPlVSTCgpKTsKKyAgICAgICAgICAgIG1fY3VycmVudEhpc3RvcnlJdGVtLT5zZXRVUkwoZG9j
dW1lbnRMb2FkZXIoKS0+dXJsKCkpOwogICAgICAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0t
PnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDI4
NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDE1ICsyNzIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0
RGVmZXJzTG9hZGluZyhib29sKTsKIAotICAgICAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKGNvbnN0
IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0g
dHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKLSAgICAgICAgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hp
c3RvcnkgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOworICAgICAgICB2b2lkIGNo
YW5nZUxvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICAg
ICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSk7CiAg
ICAgICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIEV2ZW50KiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSk7
CiAgICAgICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIEV2ZW50
KiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSk7CiAgICAgICAKLSAgICAgICAg
Ym9vbCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBV
UkwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lKTsKLSAgICAgICAgRnJhbWUqIGxvYWRT
dWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgICAgIGJvb2wgcmVxdWVz
dEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBB
dG9taWNTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgICAgIEZyYW1lKiBsb2FkU3ViZnJhbWUoSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlcik7CiAKLSAgICAgICAgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IGNo
YXIqIGFjdGlvbiwgY29uc3QgU3RyaW5nJiBVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBib3VuZGFyeSwgRXZlbnQqKTsKKyAgICAgICAgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IGNoYXIq
IGFjdGlvbiwgY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBi
b3VuZGFyeSwgRXZlbnQqKTsKICAgICAgICAgdm9pZCBzdWJtaXRGb3JtQWdhaW4oKTsKICAgICAg
ICAgdm9pZCBzdWJtaXRGb3JtKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBFdmVudCopOwogCkBA
IC0yOTgsOCArMjk4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBLVVJMIGRhdGFV
UkxCYXNlRnJvbVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdDsK
IAogICAgICAgICBib29sIGlzU2NoZWR1bGVkTG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zY2hlZHVsZWRSZWRpcmVjdGlvbiAmJiBpc0xvY2F0aW9uQ2hhbmdlKCptX3Nj
aGVkdWxlZFJlZGlyZWN0aW9uKTsgfQotICAgICAgICB2b2lkIHNjaGVkdWxlSFRUUFJlZGlyZWN0
aW9uKGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiBVUkwpOwotICAgICAgICB2b2lkIHNjaGVk
dWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwor
ICAgICAgICB2b2lkIHNjaGVkdWxlSFRUUFJlZGlyZWN0aW9uKGRvdWJsZSBkZWxheSwgY29uc3Qg
U3RyaW5nJiB1cmwpOworICAgICAgICB2b2lkIHNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0
cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgICAgICB2b2lkIHNjaGVkdWxlUmVm
cmVzaChib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgICAgICB2b2lkIHNjaGVkdWxlSGlz
dG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsKIApAQCAtMzE5LDcgKzMxOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBib29sIHVzZXJDaG9zZW4pOwogICAgICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsK
IAotICAgICAgICBLSlM6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBVUkws
IGludCBiYXNlTGluZSwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOworICAgICAgICBLSlM6OkpTVmFs
dWUqIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwsIGludCBiYXNlTGluZSwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQpOwogICAgICAgICBLSlM6OkpTVmFsdWUqIGV4ZWN1dGVTY3JpcHQoY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAg
ICAgICB2b2lkIGdvdG9BbmNob3IoKTsKQEAgLTM1Nyw5ICszNTcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICAgICAgLy8gRklY
TUU6IFdoaWNoIG9uZSBvZiB0aGVzZSBVUkwgbWV0aG9kcyBpcyByaWdodD8KLSAgICAgICAgS1VS
TCB1cmwoKSBjb25zdDsKLSAgICAgICAgS1VSTCBVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3Qg
S1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9VUkw7IH0KIAogICAgICAgICB2b2lkIHVwZGF0
ZUJhc2VVUkxGb3JFbXB0eURvY3VtZW50KCk7CiAKQEAgLTM3OSwxMyArMzc3LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzQ29tcGxldGUoKSBjb25zdDsKIAotICAg
ICAgICBib29sIHJlcXVlc3RPYmplY3QoUmVuZGVyUGFydCogZnJhbWUsIGNvbnN0IFN0cmluZyYg
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwKKyAgICAgICAgYm9vbCByZXF1ZXN0
T2JqZWN0KFJlbmRlclBhcnQqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmcmFtZU5hbWUsCiAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBl
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKTsKIAotICAgICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
VVJMKTsKKyAgICAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCk7CiAKLSAg
ICAgICAgdm9pZCBkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmluZyYgVVJMKTsKLSAg
ICAgICAgYm9vbCBoYXZlVG9sZEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcmIFVSTCk7Cisg
ICAgICAgIHZvaWQgZGlkVGVsbEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcmIHVybCk7Cisg
ICAgICAgIGJvb2wgaGF2ZVRvbGRCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5nJiB1cmwpOwog
CiAgICAgICAgIEtVUkwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ltYWdlRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvbG9hZGVyL0lt
YWdlRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBJ
bWFnZURvY3VtZW50OjpjcmVhdGVEb2N1bWVudFN0cnVjdAogICAgIAogICAgIGltYWdlRWxlbWVu
dC0+c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgIi13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmUiKTsg
ICAgICAgIAogICAgIGltYWdlRWxlbWVudC0+c2V0TG9hZE1hbnVhbGx5KHRydWUpOwotICAgIGlt
YWdlRWxlbWVudC0+c2V0U3JjKFVSTCgpKTsKKyAgICBpbWFnZUVsZW1lbnQtPnNldFNyYyh1cmwo
KSk7CiAgICAgCiAgICAgYm9keS0+YXBwZW5kQ2hpbGQoaW1hZ2VFbGVtZW50LCBlYyk7CiAgICAg
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI4NTg0
KQorKysgV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTczLDkgKzE3Myw5IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QKICAgICBmcmFtZUxvYWRlcigpLT5jaGVja05hdmlnYXRpb25Qb2xpY3kobmV3UmVxdWVz
dCwgY2FsbENvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5LCB0aGlzKTsKIH0KIAotc3RhdGlj
IGJvb2wgc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChjb25zdCBLVVJMJiBVUkwpCitzdGF0aWMg
Ym9vbCBzaG91bGRMb2FkQXNFbXB0eURvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBy
ZXR1cm4gVVJMLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShTdHJpbmcoVVJMLnByb3Rv
Y29sKCkpLCAiYWJvdXQiKTsKKyAgICByZXR1cm4gdXJsLmlzRW1wdHkoKSB8fCBlcXVhbElnbm9y
aW5nQ2FzZShTdHJpbmcodXJsLnByb3RvY29sKCkpLCAiYWJvdXQiKTsKIH0KIAogdm9pZCBNYWlu
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBj
b250ZW50UG9saWN5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQpAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSgKIAogdm9pZCBNYWlu
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoKQogewotICAgIEFTU0VSVChzaG91bGRM
b2FkQXNFbXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPlVSTCgpKSB8fCAhZGVmZXJzTG9hZGlu
ZygpKTsKKyAgICBBU1NFUlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigp
LT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT51cmwoKSkgfHwgIWRlZmVyc0xvYWRpbmcoKSk7CiAK
ICAgICAvLyBUaGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbyBhbnl0aGluZyBpbmNsdWRp
bmcgcG9zc2libHkgcmVtb3ZpbmcgdGhlIGxhc3QKICAgICAvLyByZWZlcmVuY2UgdG8gdGhpcyBv
YmplY3QuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gMjg1
ODQpCisrKyBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsMjkgKzUyLDI5IEBAIE5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24o
KQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwm
IFVSTCwgTmF2aWdhdGlvblR5cGUgdHlwZSkKLSAgICA6IG1fVVJMKFVSTCkKK05hdmlnYXRpb25B
Y3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlwZSB0
eXBlKQorICAgIDogbV9VUkwodXJsKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKLU5hdmln
YXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgVVJMLCBGcmFtZUxvYWRU
eXBlIGZyYW1lTG9hZFR5cGUsCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNv
bnN0IEtVUkwmIHVybCwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAogICAgICAgICBib29s
IGlzRm9ybVN1Ym1pc3Npb24pCi0gICAgOiBtX1VSTChVUkwpCisgICAgOiBtX1VSTCh1cmwpCiAg
ICAgLCBtX3R5cGUobmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lv
biwgMCkpCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
S1VSTCYgVVJMLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
LSAgICA6IG1fVVJMKFVSTCkKK05hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24oY29u
c3QgS1VSTCYgdXJsLCBOYXZpZ2F0aW9uVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKKyAgICA6IG1fVVJMKHVybCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9ldmVudChl
dmVudCkKIHsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihjb25zdCBL
VVJMJiBVUkwsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwKK05hdmlnYXRpb25BY3Rpb246
Ok5hdmlnYXRpb25BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9h
ZFR5cGUsCiAgICAgICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgUGFzc1JlZlB0cjxFdmVudD4g
ZXZlbnQpCi0gICAgOiBtX1VSTChVUkwpCisgICAgOiBtX1VSTCh1cmwpCiAgICAgLCBtX3R5cGUo
bmF2aWdhdGlvblR5cGUoZnJhbWVMb2FkVHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQpKQog
ICAgICwgbV9ldmVudChldmVudCkKIHsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25B
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgJ
KHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX1VSTC5pc0VtcHR5KCk7IH0KIAot
ICAgICAgICBLVVJMIFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9CisgICAgICAgIEtVUkwg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV9VUkw7IH0KICAgICAgICAgTmF2aWdhdGlvblR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgICAgICBjb25zdCBFdmVudCogZXZlbnQo
KSBjb25zdCB7IHJldHVybiBtX2V2ZW50LmdldCgpOyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVy
L1BsdWdpbkRvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9QbHVnaW5E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvUGx1Z2luRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgUGx1Z2luVG9r
ZW5pemVyOjpjcmVhdGVEb2N1bWVudFN0cnUKICAgICBtX2VtYmVkRWxlbWVudC0+c2V0QXR0cmli
dXRlKGhlaWdodEF0dHIsICIxMDAlIik7CiAgICAgCiAgICAgbV9lbWJlZEVsZW1lbnQtPnNldEF0
dHJpYnV0ZShuYW1lQXR0ciwgInBsdWdpbiIpOwotICAgIG1fZW1iZWRFbGVtZW50LT5zZXRTcmMo
bV9kb2MtPlVSTCgpKTsKKyAgICBtX2VtYmVkRWxlbWVudC0+c2V0U3JjKG1fZG9jLT51cmwoKSk7
CiAgICAgbV9lbWJlZEVsZW1lbnQtPnNldFR5cGUobV9kb2MtPmZyYW1lKCktPmxvYWRlcigpLT5y
ZXNwb25zZU1JTUVUeXBlKCkpOwogICAgIAogICAgIGJvZHktPmFwcGVuZENoaWxkKGVtYmVkRWxl
bWVudCwgZWMpOyAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIFN1YnJlc291cmNlTG9hZGVyOjp+U3VicmVz
b3VyY2VMb2FkZXIoKQogCiBib29sIFN1YnJlc291cmNlTG9hZGVyOjpsb2FkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcikKIHsKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkVGVsbEJyaWRnZUFi
b3V0TG9hZChyLnVybCgpLnVybCgpKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+ZGlkVGVsbEJy
aWRnZUFib3V0TG9hZChyLnVybCgpLnN0cmluZygpKTsKICAgICAKICAgICByZXR1cm4gUmVzb3Vy
Y2VMb2FkZXI6OmxvYWQocik7CiB9CkBAIC05Niw3ICs5Niw3IEBAIFBhc3NSZWZQdHI8U3VicmVz
b3VyY2VMb2FkZXI+IFN1YnJlc291cmMKICAgICBpZiAoIXNraXBDYW5Mb2FkQ2hlY2sKICAgICAg
ICAgICAgICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKQogICAgICAgICAg
ICAgJiYgIUZyYW1lTG9hZGVyOjpjYW5Mb2FkKHJlcXVlc3QudXJsKCksIGZyYW1lLT5kb2N1bWVu
dCgpKSkgewotICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1l
LT5wYWdlKCksIHJlcXVlc3QudXJsKCkudXJsKCkpOworICAgICAgICBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLT5wYWdlKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHJldmlz
aW9uIDI4NTg0KQorKysgV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzMsMTAgKzczLDEwIEBAIHZvaWQgTG9hZGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpCiAg
ICAgICAgIGlmICghcmVxLT5jYWNoZWRSZXNvdXJjZSgpLT5hY2NlcHQoKS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBBY2NlcHQocmVxLT5jYWNoZWRSZXNvdXJjZSgpLT5h
Y2NlcHQoKSk7CiAKLSAgICAgICAgS1VSTCByID0gZGwtPmRvYygpLT5VUkwoKTsKKyAgICAgICAg
S1VSTCByID0gZGwtPmRvYygpLT51cmwoKTsKICAgICAgICAgaWYgKHIucHJvdG9jb2woKS5zdGFy
dHNXaXRoKCJodHRwIikgJiYgci5wYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgci5zZXRQ
YXRoKCIvIik7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHIudXJsKCkpOworICAg
ICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyLnN0cmluZygpKTsKICAgICAgICAgRGVwcmVj
YXRlZFN0cmluZyBkb21haW4gPSByLmhvc3QoKTsKICAgICAgICAgaWYgKGRsLT5kb2MoKS0+aXNI
VE1MRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvbWFpbiA9IHN0YXRpY19jYXN0PEhUTUxEb2N1
bWVudCo+KGRsLT5kb2MoKSktPmRvbWFpbigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkocmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgSWNvbkxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKIAogICAgIFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShtX2ZyYW1lLCB0aGlz
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvblVSTCgpKTsKICAgICBpZiAoIWxvYWRlcikKLSAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMiLCBt
X2ZyYW1lLT5sb2FkZXIoKS0+aWNvblVSTCgpLnVybCgpLmFzY2lpKCkpOworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBzdGFydCBsb2FkIGZvciBpY29uIGF0IHVybCAlcyIsIG1fZnJhbWUt
PmxvYWRlcigpLT5pY29uVVJMKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgLy8g
U3RvcmUgdGhlIGhhbmRsZSBzbyB3ZSBjYW4gY2FuY2VsIHRoZSBsb2FkIGlmIHN0b3BMb2FkaW5n
IGlzIGNhbGxlZCBsYXRlci4KICAgICAvLyBCdXQgb25seSBkbyBpdCBpZiB0aGUgbG9hZCBoYXNu
J3QgYWxyZWFkeSBjb21wbGV0ZWQuCkBAIC0xMzgsNyArMTM4LDYgQEAgdm9pZCBJY29uTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKFN1YnJlcwogCiB2b2lkIEljb25Mb2FkZXI6OmZpbmlzaExvYWRp
bmcoY29uc3QgS1VSTCYgaWNvblVSTCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpCiB7
Ci0KICAgICAvLyBXaGVuIGFuIGljb24gbG9hZCByZXN1bHRzIGluIGEgNDA0IHdlIGNvbW1pdCBp
dCB0byB0aGUgZGF0YWJhc2UgaGVyZSBhbmQgY2xlYXIgdGhlIGxvYWRpbmcgc3RhdGUuICAKICAg
ICAvLyBCdXQgdGhlIFN1YnJlc291cmNlTG9hZGVyIGNvbnRpbnVlcyBwdWxsaW5nIGluIGRhdGEg
aW4gdGhlIGJhY2tncm91bmQgZm9yIHRoZSA0MDQgcGFnZSBpZiB0aGUgc2VydmVyIHNlbmRzIG9u
ZS4gIAogICAgIC8vIE9uY2UgdGhhdCBkYXRhIGZpbmlzaGVzIGxvYWRpbmcgb3IgaWYgdGhlIGxv
YWQgaXMgY2FuY2VsbGVkIHdoaWxlIHRoYXQgZGF0YSBpcyBiZWluZyByZWFkLCBmaW5pc2hMb2Fk
aW5nIGVuZHMgdXAgYmVpbmcgY2FsbGVkIGEgc2Vjb25kIHRpbWUuCkBAIC0xNDcsOCArMTQ2LDgg
QEAgdm9pZCBJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEtVUgogICAgIC8vIDxyZGFy
Oi8vcHJvYmxlbS81NDYzMzkyPiB0cmFja3MgdGhhdCBlbmhhbmNlbWVudAogICAgIAogICAgIGlm
ICghaWNvblVSTC5pc0VtcHR5KCkgJiYgbV9sb2FkSXNJblByb2dyZXNzKSB7Ci0gICAgICAgIGlj
b25EYXRhYmFzZSgpLT5zZXRJY29uRGF0YUZvckljb25VUkwoZGF0YSwgaWNvblVSTC51cmwoKSk7
Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkg
LSBDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UiLCBpY29uVVJMLnVybCgpLmFzY2lp
KCkpOworICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEs
IGljb25VUkwuc3RyaW5nKCkpOworICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRl
cjo6ZmluaXNoTG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwg
aWNvblVSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIG1fZnJhbWUtPmxvYWRl
cigpLT5jb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoaWNvblVSTCk7CiAgICAgICAgIG1fZnJh
bWUtPmxvYWRlcigpLT5jbGllbnQoKS0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIH0K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tCShyZXZpc2lvbiAyODU4
NCkKKysrIFdlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tCSh3b3JraW5nIGNv
cHkpCkBAIC05OCwxMSArOTgsOSBAQCBOU0RhdGEgKnVybE9yaWdpbmFsRGF0YShOU1VSTCAqdXJs
KQogICAgIE5TRGF0YSAqZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weTpidWZmZXIg
bGVuZ3RoOmJ5dGVzRmlsbGVkIGZyZWVXaGVuRG9uZTpZRVNdOwogICAgIAogICAgIE5TVVJMICpi
YXNlVVJMID0gKE5TVVJMICopQ0ZVUkxHZXRCYXNlVVJMKChDRlVSTFJlZil1cmwpOwotICAgIGlm
IChiYXNlVVJMKSB7Ci0gICAgICAgIE5TVVJMICpVUkwgPSB1cmxXaXRoRGF0YVJlbGF0aXZlVG9V
UkwoZGF0YSwgYmFzZVVSTCk7Ci0gICAgICAgIHJldHVybiB1cmxPcmlnaW5hbERhdGEoVVJMKTsK
LSAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgaWYgKGJhc2VVUkwpCisgICAg
ICAgIHJldHVybiB1cmxPcmlnaW5hbERhdGEodXJsV2l0aERhdGFSZWxhdGl2ZVRvVVJMKGRhdGEs
IGJhc2VVUkwpKTsKKyAgICByZXR1cm4gZGF0YTsKIH0KIAogTlNVUkwgKnVybFdpdGhEYXRhKE5T
RGF0YSAqZGF0YSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBDaHJv
bWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAvLyBHZXQgdG9vbHRpcCBy
ZXByZXNlbnRpbmcgbGluaydzIFVSTAogICAgICAgICBpZiAodG9vbFRpcC5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBwYXNzIHRoaXMgVVJMIHRocm91Z2ggdXNlclZp
c2libGVTdHJpbmcgb25jZSB0aGF0J3MgaW4gV2ViQ29yZQotICAgICAgICAgICAgdG9vbFRpcCA9
IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS51cmwoKTsKKyAgICAgICAgICAgIHRvb2xUaXAgPSBy
ZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCk7CiAgICAgfQogCiAgICAgLy8gTGFzdGx5
IHdlJ2xsIGNvbnNpZGVyIGEgdG9vbHRpcCBmb3IgZWxlbWVudCB3aXRoICJ0aXRsZSIgYXR0cmli
dXRlCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
Mjg1ODQpCisrKyBXZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUkKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5l
d1dpbmRvdzogewogICAgICAgICAgICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCk7CiAgICAgICAgICAgICBpZiAoZnJhbWUgJiYg
dXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPlVSTCgpOworICAgICAgICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAgICAgICAgICAgICBvcGVuTmV3V2luZG93
KHVybCwgZnJhbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAko
cmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBGcmFtZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihjbwogICAgIGRlbGV0ZSBkLT5tX3VzZXJTdHlsZVNoZWV0TG9hZGVyOwogICAgIGQtPm1fdXNl
clN0eWxlU2hlZXRMb2FkZXIgPSAwOwogICAgIGlmIChkLT5tX2RvYyAmJiBkLT5tX2RvYy0+ZG9j
TG9hZGVyKCkpCi0gICAgICAgIGQtPm1fdXNlclN0eWxlU2hlZXRMb2FkZXIgPSBuZXcgVXNlclN0
eWxlU2hlZXRMb2FkZXIoZC0+bV9kb2MsIHVybC51cmwoKSk7CisgICAgICAgIGQtPm1fdXNlclN0
eWxlU2hlZXRMb2FkZXIgPSBuZXcgVXNlclN0eWxlU2hlZXRMb2FkZXIoZC0+bV9kb2MsIHVybC5z
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRnJhbWU6OnNldFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmlu
ZyYgc3R5bGVTaGVldCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RydWN0IEluc3BlY3RvclJlc291cmNl
IDogcHVibGljIFJlZkNvdQogICAgICAgICBpZiAoIWRvYykKICAgICAgICAgICAgIHJldHVybiBP
dGhlcjsKIAotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBkb2MtPmRv
Y0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZShyZXF1ZXN0VVJMLnVybCgpKTsKKyAgICAgICAgQ2Fj
aGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UocmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2Up
CiAgICAgICAgICAgICByZXR1cm4gT3RoZXI7CiAKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBhZGRTb3VyY2VUb0ZyYW1lKEpTQ29uCiAgICAgICAgIGlmICghZG9jKQogICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKIAotICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UgPSBkb2MtPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZShyZXNvdXJjZS0+
cmVxdWVzdFVSTC51cmwoKSk7CisgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSA9IGRvYy0+ZG9jTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHJlc291cmNlLT5yZXF1ZXN0VVJM
LnN0cmluZygpKTsKICAgICAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7CiAKQEAgLTkyNSw3ICs5MjUsNyBAQCBKU09iamVjdFJlZiBJbnNwZWN0
b3JDb250cm9sbGVyOjphZGRTY3JpCiAgICAgSlNPYmplY3RSZWYgcmVzb3VyY2VDb25zdHJ1Y3Rv
ciA9IEpTVmFsdWVUb09iamVjdChtX3NjcmlwdENvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHko
bV9zY3JpcHRDb250ZXh0LCBtX3NjcmlwdE9iamVjdCwgcmVzb3VyY2VTdHJpbmcsIDApLCAwKTsK
ICAgICBKU1N0cmluZ1JlbGVhc2UocmVzb3VyY2VTdHJpbmcpOwogCi0gICAgU3RyaW5nIHVybFN0
cmluZyA9IHJlc291cmNlLT5yZXF1ZXN0VVJMLnVybCgpOworICAgIFN0cmluZyB1cmxTdHJpbmcg
PSByZXNvdXJjZS0+cmVxdWVzdFVSTC5zdHJpbmcoKTsKICAgICBKU1N0cmluZ1JlZiB1cmwgPSBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKHVybFN0cmluZy5jaGFyYWN0ZXJzKCksIHVybFN0
cmluZy5sZW5ndGgoKSk7CiAgICAgSlNWYWx1ZVJlZiB1cmxWYWx1ZSA9IEpTVmFsdWVNYWtlU3Ry
aW5nKG1fc2NyaXB0Q29udGV4dCwgdXJsKTsKICAgICBKU1N0cmluZ1JlbGVhc2UodXJsKTsKQEAg
LTEwMjIsNyArMTAyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6dXBkYXRlU2NyaXB0
UmUKICAgICBpZiAoIXJlc291cmNlLT5zY3JpcHRPYmplY3QgfHwgIW1fc2NyaXB0Q29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIHVybFN0cmluZyA9IHJlc291cmNlLT5yZXF1
ZXN0VVJMLnVybCgpOworICAgIFN0cmluZyB1cmxTdHJpbmcgPSByZXNvdXJjZS0+cmVxdWVzdFVS
TC5zdHJpbmcoKTsKICAgICBKU1N0cmluZ1JlZiB1cmwgPSBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKHVybFN0cmluZy5jaGFyYWN0ZXJzKCksIHVybFN0cmluZy5sZW5ndGgoKSk7CiAgICAg
SlNWYWx1ZVJlZiB1cmxWYWx1ZSA9IEpTVmFsdWVNYWtlU3RyaW5nKG1fc2NyaXB0Q29udGV4dCwg
dXJsKTsKICAgICBKU1N0cmluZ1JlbGVhc2UodXJsKTsKQEAgLTEzNzAsNyArMTM3MCw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCgKICAgICAgICAgQVNTRVJUKG1f
bWFpblJlc291cmNlKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBsb29rIGludG8gYXNzZXJ0
aW5nIHRoYXQgbV9tYWluUmVzb3VyY2UtPmxvYWRlciA9PSBsb2FkZXIgaGVyZS4KIAotICAgICAg
ICBtX2NsaWVudC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChsb2FkZXItPlVSTCgpLnVybCgpKTsKKyAg
ICAgICAgbV9jbGllbnQtPmluc3BlY3RlZFVSTENoYW5nZWQobG9hZGVyLT51cmwoKS5zdHJpbmco
KSk7CiAKICAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1fY29uc29sZU1lc3NhZ2VzKTsKICAgICAg
ICAgbV9jb25zb2xlTWVzc2FnZXMuY2xlYXIoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29y
ZUZyYW1lQnJpZGdlLm1tCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE2LDEzICsxMjE2LDEzIEBA
IHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJvbUQKICAgICB9CiB9CiAKLS0g
KEJPT0wpZ2V0RGF0YTooTlNEYXRhICoqKWRhdGEgYW5kUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KiopcmVzcG9uc2UgZm9yVVJMOihOU1N0cmluZyAqKVVSTAorLSAoQk9PTClnZXREYXRhOihOU0Rh
dGEgKiopZGF0YSBhbmRSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKilyZXNwb25zZSBmb3JVUkw6
KE5TU3RyaW5nICopdXJsCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2MpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSA9IGRvYy0+ZG9jTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKFVSTCk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UodXJsKTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gTk87CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vS1VSTC5oCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEtVUkxfaAogCiAjaW5jbHVk
ZSAiRGVwcmVjYXRlZFN0cmluZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKICNpZiBQTEFURk9STShDRikKQEAgLTQ0LDcgKzQ1LDYg
QEAgY2xhc3MgTlNVUkw7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBLVVJMOwot
ICAgIGNsYXNzIFN0cmluZzsKICAgICBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsKQEAgLTY4LDcgKzY4LDggQEAgcHVi
bGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHVybFN0cmluZy5pc0VtcHR5
KCk7IH0gCiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3Q7CiAKLSAgICBEZXByZWNhdGVkU3RyaW5n
IHVybCgpIGNvbnN0IHsgcmV0dXJuIHVybFN0cmluZzsgfQorICAgIFN0cmluZyBzdHJpbmcoKSBj
b25zdCB7IHJldHVybiB1cmxTdHJpbmc7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBk
ZXByZWNhdGVkU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gdXJsU3RyaW5nOyB9CiAKICAgICBEZXBy
ZWNhdGVkU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7CiAgICAgRGVwcmVjYXRlZFN0cmluZyBob3N0
KCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCShyZXZpc2lv
biAyODU4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTY2LDIwICsxNjYsMjAgQEAgU3RyaW5nIENsaXBib2FyZE1hYzo6Z2V0RGF0
YShjb25zdCBTdHJpbgogICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHR5cGUgIT0gInRleHQvdXJpLWxpc3QiKQogICAgICAgICAgICAgICAg
ICAgICAgICAgY291bnQgPSAxOwotICAgICAgICAgICAgICAgICAgICBOU011dGFibGVTdHJpbmcg
KlVSTHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgICAgICAgICAgICAgICAgIE5T
TXV0YWJsZVN0cmluZyAqdXJscyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsg
aSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtVUkxzIGFwcGVuZFN0cmluZzpAIlxuIl07Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VybHMgYXBwZW5kU3RyaW5nOkAiXG4iXTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIE5TU3RyaW5n
ICpzdHJpbmcgPSBbZmlsZUxpc3Qgb2JqZWN0QXRJbmRleDppXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
TlNVUkwgKlVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RyaW5nXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFtVUkxzIGFwcGVuZFN0cmluZzpbVVJMIGFic29sdXRlU3RyaW5nXV07Cisg
ICAgICAgICAgICAgICAgICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpzdHJpbmddOworICAgICAgICAgICAgICAgICAgICAgICAgW3VybHMgYXBwZW5kU3RyaW5nOlt1
cmwgYWJzb2x1dGVTdHJpbmddXTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA9PSBjb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvY29hVmFs
dWUgPSBVUkxzOworICAgICAgICAgICAgICAgICAgICAgICAgY29jb2FWYWx1ZSA9IHVybHM7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvQ29va2llSmFyLm1tCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
bWFjL0Nvb2tpZUphci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBTdHJpbmcg
Y29va2llcyhjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgTlNVUkwgKlVSTCA9IHVybC5nZXROU1VSTCgpOwotICAgIE5TQXJyYXkgKmNv
b2tpZXNGb3JVUkwgPSBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3Jh
Z2VdIGNvb2tpZXNGb3JVUkw6VVJMXTsKKyAgICBOU1VSTCAqY29va2llVVJMID0gdXJsLmdldE5T
VVJMKCk7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTCA9IFtbTlNIVFRQQ29va2llU3RvcmFn
ZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gY29va2llc0ZvclVSTDpjb29raWVVUkxdOwogCiAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU2MzI4ODM+IE9uIDEwLjUsIE5TSFRUUENvb2tpZVN0b3Jh
Z2Ugd291bGQgaGFwcGlseSBzdG9yZSBhbiBlbXB0eSBjb29raWUsIHdoaWNoIHdvdWxkIGJlIHNl
bnQgYXMgIkNvb2tpZTogPSIuCiAgICAgLy8gV2UgaGF2ZSBhIHdvcmthcm91bmQgaW4gc2V0Q29v
a2llcygpIHRvIHByZXZlbnQgdGhhdCwgYnV0IHdlIGFsc28gbmVlZCB0byBhdm9pZCBzZW5kaW5n
IGNvb2tpZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgc3RvcmVkLgpAQCAtNzAsMTQgKzcwLDE0IEBA
IHZvaWQgc2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEsKICAgICBpZiAoY29va2ll
U3RyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNVUkwgKlVSTCA9IHVybC5n
ZXROU1VSTCgpOworICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKICAgICAK
ICAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUzMT4sIDxy
ZGFyOi8vNDQwOTAzND4KICAgICAvLyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRv
ZXNuJ3QgcGFyc2UgY29va2llcyB3aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3Ry
aW5nID0gY29va2llU3RyLmNvbnRhaW5zKCc9JykgPyBjb29raWVTdHIgOiBjb29raWVTdHIgKyAi
PSI7CiAgICAgCi0gICAgTlNBcnJheSAqY29va2llcyA9IFtOU0hUVFBDb29raWUgY29va2llc1dp
dGhSZXNwb25zZUhlYWRlckZpZWxkczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
OmNvb2tpZVN0cmluZyBmb3JLZXk6QCJTZXQtQ29va2llIl0gZm9yVVJMOlVSTF07Ci0gICAgW1tO
U0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVzOmNv
b2tpZXMgZm9yVVJMOlVSTCBtYWluRG9jdW1lbnRVUkw6cG9saWN5QmFzZVVSTC5nZXROU1VSTCgp
XTsgICAgCisgICAgTlNBcnJheSAqY29va2llcyA9IFtOU0hUVFBDb29raWUgY29va2llc1dpdGhS
ZXNwb25zZUhlYWRlckZpZWxkczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNv
b2tpZVN0cmluZyBmb3JLZXk6QCJTZXQtQ29va2llIl0gZm9yVVJMOmNvb2tpZVVSTF07CisgICAg
W1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVz
OmNvb2tpZXMgZm9yVVJMOmNvb2tpZVVSTCBtYWluRG9jdW1lbnRVUkw6cG9saWN5QmFzZVVSTC5n
ZXROU1VSTCgpXTsgICAgCiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCShyZXZpc2lvbiAyODU4NCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxMCwxMiArMjEwLDEyIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoTlNQYXN0ZWJvYXJk
KiAKICAgICAKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwogICAgIAotICAgIE5TVVJMICpV
UkwgPSB1cmwuZ2V0TlNVUkwoKTsKLSAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcgPSBm
cmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhVUkwpOworICAgIE5T
VVJMICpjb2NvYVVSTCA9IHVybC5nZXROU1VSTCgpOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJs
ZVN0cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKGNv
Y29hVVJMKTsKICAgICAKICAgICBOU1N0cmluZyAqdGl0bGUgPSAoTlNTdHJpbmcqKXRpdGxlU3Ry
OwogICAgIGlmIChbdGl0bGUgbGVuZ3RoXSA9PSAwKSB7Ci0gICAgICAgIHRpdGxlID0gW1tVUkwg
cGF0aF0gbGFzdFBhdGhDb21wb25lbnRdOworICAgICAgICB0aXRsZSA9IFtbY29jb2FVUkwgcGF0
aF0gbGFzdFBhdGhDb21wb25lbnRdOwogICAgICAgICBpZiAoW3RpdGxlIGxlbmd0aF0gPT0gMCkK
ICAgICAgICAgICAgIHRpdGxlID0gdXNlclZpc2libGVTdHJpbmc7CiAgICAgfQpAQCAtMjI2LDcg
KzIyNiw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkwoTlNQYXN0ZWJvYXJkKiAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yVHlwZTpXZWJVUkxzV2l0aFRpdGxlc1Bib2FyZFR5cGVdOwogICAgIGlmIChb
dHlwZXMgY29udGFpbnNPYmplY3Q6TlNVUkxQYm9hcmRUeXBlXSkKLSAgICAgICAgW1VSTCB3cml0
ZVRvUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKKyAgICAgICAgW2NvY29hVVJMIHdyaXRlVG9QYXN0
ZWJvYXJkOnBhc3RlYm9hcmRdOwogICAgIGlmIChbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViVVJM
UGJvYXJkVHlwZV0pCiAgICAgICAgIFtwYXN0ZWJvYXJkIHNldFN0cmluZzp1c2VyVmlzaWJsZVN0
cmluZyBmb3JUeXBlOldlYlVSTFBib2FyZFR5cGVdOwogICAgIGlmIChbdHlwZXMgY29udGFpbnNP
YmplY3Q6V2ViVVJMTmFtZVBib2FyZFR5cGVdKQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXIKICAgICBQYXN0ZWJvYXJkOjp3cml0ZVVS
TChtX3Bhc3RlYm9hcmQuZ2V0KCksIG5pbCwgdXJsLCB0aXRsZVN0ciwgZnJhbWUpOwogfQogCi1z
dGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXJGb3JJbWFnZShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UsIE5TVVJMICpVUkwpCitzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXJG
b3JJbWFnZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIE5TVVJMICp1cmwpCiB7CiAgICAgU2hh
cmVkQnVmZmVyKiBjb3JlRGF0YSA9IHJlc291cmNlLT5kYXRhKCk7CiAgICAgTlNEYXRhICpkYXRh
ID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNvcmVEYXRhLT5wbGF0Zm9ybURhdGEo
KSAKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgTlNGaWxlV3JhcHBlciogZmlsZVdyYXBwZXJG
b3JJbWFnCiAgICAgTlNTdHJpbmcgKk1JTUVUeXBlID0gbmlsOwogICAgIGlmICghY29yZU1JTUVU
eXBlLmlzTnVsbCgpKQogICAgICAgICBNSU1FVHlwZSA9IGNvcmVNSU1FVHlwZTsKLSAgICBbd3Jh
cHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZShV
UkwsIE1JTUVUeXBlKV07CisgICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2Vz
dGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUodXJsLCBNSU1FVHlwZSldOwogICAgIHJldHVybiB3cmFw
cGVyOwogfQogCkBAIC0yNzAsMTIgKzI3MCwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1h
Z2UoTm9kZSogbm9kZSwgCiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEZyYW1lKiBmcmFtZSA9IG5v
ZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKLSAgICBOU1VSTCAqVVJMID0gdXJsLmdldE5TVVJM
KCk7Ci0gICAgQVNTRVJUKFVSTCk7CisgICAgTlNVUkwgKmNvY29hVVJMID0gdXJsLmdldE5TVVJM
KCk7CisgICAgQVNTRVJUKGNvY29hVVJMKTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gd3JpdGFi
bGVUeXBlc0ZvckltYWdlKCk7CiAgICAgW21fcGFzdGVib2FyZC5nZXQoKSBkZWNsYXJlVHlwZXM6
dHlwZXMgb3duZXI6bmlsXTsKLSAgICB3cml0ZVVSTChtX3Bhc3RlYm9hcmQuZ2V0KCksIHR5cGVz
LCBVUkwsIG5zU3RyaW5nTmlsSWZFbXB0eSh0aXRsZSksIGZyYW1lKTsKKyAgICB3cml0ZVVSTCht
X3Bhc3RlYm9hcmQuZ2V0KCksIHR5cGVzLCBjb2NvYVVSTCwgbnNTdHJpbmdOaWxJZkVtcHR5KHRp
dGxlKSwgZnJhbWUpOwogCiAgICAgQVNTRVJUKG5vZGUtPnJlbmRlcmVyKCkgJiYgbm9kZS0+cmVu
ZGVyZXIoKS0+aXNJbWFnZSgpKTsKICAgICBSZW5kZXJJbWFnZSogcmVuZGVyZXIgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJJbWFnZSo+KG5vZGUtPnJlbmRlcmVyKCkpOwpAQCAtMjg5LDcgKzI4OSw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCAKICAgICBTdHJpbmcgTUlN
RVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogICAgIEFTU0VSVChN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZShNSU1FVHlw
ZSkpOwogCi0gICAgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0dGFjaG1lbnQoZmlsZVdyYXBwZXJG
b3JJbWFnZShjYWNoZWRJbWFnZSwgVVJMKSk7CisgICAgd3JpdGVGaWxlV3JhcHBlckFzUlRGREF0
dGFjaG1lbnQoZmlsZVdyYXBwZXJGb3JJbWFnZShjYWNoZWRJbWFnZSwgY29jb2FVUkwpKTsKIH0K
IAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQpAQCAtMzI0LDEzICszMjQsMTEg
QEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnBsYWluVGV4dChGcmFtZSogZnJhbQogICAgIH0KICAgICAK
ICAgICAKLSAgICBOU1VSTCAqVVJMOwotICAgIAotICAgIGlmICgoVVJMID0gW05TVVJMIFVSTEZy
b21QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5nZXQoKV0pKSB7CisgICAgaWYgKE5TVVJMICp1cmwg
PSBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXSkgewogICAgICAg
ICAvLyBGSVhNRTogdXNpbmcgdGhlIGVkaXRvckNsaWVudCB0byBjYWxsIGludG8gd2Via2l0LCBm
b3Igbm93LCBzaW5jZSAKLSAgICAgICAgLy8gY2FsbGluZyBbVVJMIF93ZWJfdXNlclZpc2libGVT
dHJpbmddIGZyb20gV2ViQ29yZSBpbnZvbHZlcyBtaWdyYXRpbmcgYSBzaXphYmxlIHdlYiBvZiAK
KyAgICAgICAgLy8gY2FsbGluZyBfd2ViX3VzZXJWaXNpYmxlU3RyaW5nIGZyb20gV2ViQ29yZSBp
bnZvbHZlcyBtaWdyYXRpbmcgYSBzaXphYmxlIHdlYiBvZiAKICAgICAgICAgLy8gaGVscGVyIGNv
ZGUgdGhhdCBzaG91bGQgZWl0aGVyIGJlIGRvbmUgaW4gYSBzZXBhcmF0ZSBwYXRjaCBvciBmaWd1
cmVkIG91dCBpbiBhbm90aGVyIHdheS4KLSAgICAgICAgc3RyaW5nID0gZnJhbWUtPmVkaXRvcigp
LT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoVVJMKTsKKyAgICAgICAgc3RyaW5nID0gZnJh
bWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcodXJsKTsKICAgICAgICAg
aWYgKFtzdHJpbmcgbGVuZ3RoXSA+IDApCiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nOwogICAg
IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMjg1ODQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTEgKzE3MiwxMSBAQCBib29sIFJlc291cmNl
SGFuZGxlOjpwb3J0QWxsb3dlZChjb25zdCBSCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgot
ICAgIGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAmJiByZXF1ZXN0LnVybCgpLnVybCgp
LnN0YXJ0c1dpdGgoImZ0cDoiLCBmYWxzZSkpCisgICAgaWYgKChwb3J0ID09IDIxIHx8IHBvcnQg
PT0gMjIpICYmIHJlcXVlc3QudXJsKCkuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImZ0
cDoiLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gQWxsb3cgYW55IHBv
cnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVk
LgotICAgIGlmIChyZXF1ZXN0LnVybCgpLnVybCgpLnN0YXJ0c1dpdGgoImZpbGU6IiwgZmFsc2Up
KQorICAgIGlmIChyZXF1ZXN0LnVybCgpLmRlcHJlY2F0ZWRTdHJpbmcoKS5zdGFydHNXaXRoKCJm
aWxlOiIsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBib29s
IFJlc291cmNlUmVxdWVzdEJhc2U6OmlzTnVsbCgpIGNvbnN0CiB7CiAgICAgdXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7IAogICAgIAotICAgIHJldHVybiBtX3VybC51cmwoKS5pc051bGwoKTsKKyAg
ICByZXR1cm4gbV91cmwuZGVwcmVjYXRlZFN0cmluZygpLmlzTnVsbCgpOwogfQogCiBjb25zdCBL
VVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25zdCAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxv
YWRlci5jcHAJKHJldmlzaW9uIDI4NTg0KQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw5IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6
OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAKICAgICBDYWNoZWRJbWFnZSAqbmV3SW1hZ2UgPSAw
OwogICAgIGlmICghaW1hZ2VFbGVtZW50LT5ocmVmKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIERl
cHJlY2F0ZWRTdHJpbmcgdXJpID0gaW1hZ2VFbGVtZW50LT5iYXNlVVJJKCkuZGVwcmVjYXRlZFN0
cmluZygpOzsKKyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyB1cmkgPSBpbWFnZUVsZW1lbnQtPmJh
c2VVUkkoKS5kZXByZWNhdGVkU3RyaW5nKCk7CiAgICAgICAgIGlmICghdXJpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHVyaSA9IEtVUkwodXJpLCBpbWFnZUVsZW1lbnQtPmhyZWYoKS5kZXByZWNh
dGVkU3RyaW5nKCkpLnVybCgpOworICAgICAgICAgICAgdXJpID0gS1VSTCh1cmksIGltYWdlRWxl
bWVudC0+aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSkuZGVwcmVjYXRlZFN0cmluZygpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB1cmkgPSBpbWFnZUVsZW1lbnQtPmhyZWYoKS5kZXByZWNh
dGVkU3RyaW5nKCk7CiAgICAgICAgIG5ld0ltYWdlID0gZG9jLT5kb2NMb2FkZXIoKS0+cmVxdWVz
dEltYWdlKHVyaSk7CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCShyZXZpc2lvbiAyODU4NCkK
KysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcx
LDcgKzE3MSw3IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6Z2V0UmVzcG9uc2VYTUwKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBtX2RvYy0+aW1wbGVt
ZW50YXRpb24oKS0+Y3JlYXRlRG9jdW1lbnQoMCk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1M
LT5vcGVuKCk7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5zZXRVUkwobV91cmwudXJsKCkp
OworICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+c2V0VVJMKG1fdXJsLmRlcHJlY2F0ZWRTdHJp
bmcoKSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogc2V0IExhc3QtTW9kaWZpZWQgYW5kIGNvb2tp
ZXMgKGN1cnJlbnRseSwgdGhvc2UgYXJlIG9ubHkgYXZhaWxhYmxlIGZvciBIVE1MRG9jdW1lbnRz
KS4KICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPndyaXRlKFN0cmluZyhtX3Jlc3BvbnNlVGV4
dCkpOwogICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+ZmluaXNoUGFyc2luZygpOwpAQCAtMzE5
LDcgKzMxOSw3IEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OnVybE1hdGNoZXNEb2N1bWVudEQKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBidXQgYSByZW1vdGUgZG9jdW1lbnQgY2FuIG9u
bHkgbG9hZCBmcm9tIHRoZSBzYW1lIHBvcnQgb24gdGhlIHNlcnZlcgotICAgIEtVUkwgZG9jdW1l
bnRVUkwgPSBtX2RvYy0+VVJMKCk7CisgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZG9jLT51cmwo
KTsKICAgICBpZiAoZG9jdW1lbnRVUkwucHJvdG9jb2woKS5sb3dlcigpID09IHVybC5wcm90b2Nv
bCgpLmxvd2VyKCkKICAgICAgICAgICAgICYmIGRvY3VtZW50VVJMLmhvc3QoKS5sb3dlcigpID09
IHVybC5ob3N0KCkubG93ZXIoKQogICAgICAgICAgICAgJiYgZG9jdW1lbnRVUkwucG9ydCgpID09
IHVybC5wb3J0KCkpCkluZGV4OiBXZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAkocmV2aXNpb24gMjg1ODQpCisr
KyBXZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgpCiAgICAgWFNMU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFwYXJlbnRTaGVl
dC0+aHJlZigpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdzIFVS
TCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmhy
ZWYoKS5kZXByZWNhdGVkU3RyaW5nKCksbV9zdHJIcmVmLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJs
KCk7CisgICAgICAgIGFic0hyZWYgPSBLVVJMKHBhcmVudFNoZWV0LT5ocmVmKCkuZGVwcmVjYXRl
ZFN0cmluZygpLCBtX3N0ckhyZWYuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJpbmcoKTsKICAgICAK
ICAgICAvLyBDaGVjayBmb3IgYSBjeWNsZSBpbiBvdXIgaW1wb3J0IGNoYWluLiAgSWYgd2UgZW5j
b3VudGVyIGEgc3R5bGVzaGVldAogICAgIC8vIGluIG91ciBwYXJlbnQgY2hhaW4gd2l0aCB0aGUg
c2FtZSBVUkwsIHRoZW4ganVzdCBiYWlsLgpJbmRleDogV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHJldmlz
aW9uIDI4NTg0KQorKysgV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1NSw3ICsyNTUsNyBAQCBSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNy
ZWF0ZURvCiAgICAgCiAgICAgcmVzdWx0LT5vcGVuKCk7CiAgICAgaWYgKHNvdXJjZUlzRG9jdW1l
bnQpIHsKLSAgICAgICAgcmVzdWx0LT5zZXRVUkwob3duZXJEb2N1bWVudC0+VVJMKCkpOworICAg
ICAgICByZXN1bHQtPnNldFVSTChvd25lckRvY3VtZW50LT51cmwoKSk7CiAgICAgICAgIHJlc3Vs
dC0+c2V0QmFzZVVSTChvd25lckRvY3VtZW50LT5iYXNlVVJMKCkpOwogICAgIH0KICAgICByZXN1
bHQtPmRldGVybWluZVBhcnNlTW9kZShkb2N1bWVudFNvdXJjZSk7IC8vIE1ha2Ugc3VyZSB3ZSBw
YXJzZSBpbiB0aGUgY29ycmVjdCBtb2RlLgpAQCAtMjkzLDcgKzI5Myw3IEBAIHN0YXRpYyBpbmxp
bmUgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGMKIHN0YXRpYyB4c2x0U3R5bGVzaGVldFB0ciB4
c2x0U3R5bGVzaGVldFBvaW50ZXIoUmVmUHRyPFhTTFN0eWxlU2hlZXQ+JiBjYWNoZWRTdHlsZXNo
ZWV0LCBOb2RlKiBzdHlsZXNoZWV0Um9vdE5vZGUpCiB7CiAgICAgaWYgKCFjYWNoZWRTdHlsZXNo
ZWV0ICYmIHN0eWxlc2hlZXRSb290Tm9kZSkgewotICAgICAgICBjYWNoZWRTdHlsZXNoZWV0ID0g
bmV3IFhTTFN0eWxlU2hlZXQoc3R5bGVzaGVldFJvb3ROb2RlLT5wYXJlbnQoKSA/IHN0eWxlc2hl
ZXRSb290Tm9kZS0+cGFyZW50KCkgOiBzdHlsZXNoZWV0Um9vdE5vZGUsIHN0eWxlc2hlZXRSb290
Tm9kZS0+ZG9jdW1lbnQoKS0+VVJMKCkpOworICAgICAgICBjYWNoZWRTdHlsZXNoZWV0ID0gbmV3
IFhTTFN0eWxlU2hlZXQoc3R5bGVzaGVldFJvb3ROb2RlLT5wYXJlbnQoKSA/IHN0eWxlc2hlZXRS
b290Tm9kZS0+cGFyZW50KCkgOiBzdHlsZXNoZWV0Um9vdE5vZGUsIHN0eWxlc2hlZXRSb290Tm9k
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwogICAgICAgICBjYWNoZWRTdHlsZXNoZWV0LT5wYXJzZVN0
cmluZyhjcmVhdGVNYXJrdXAoc3R5bGVzaGVldFJvb3ROb2RlKSk7CiAgICAgfQogICAgIApAQCAt
MzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgeG1sRG9jUHRyIHhtbERvY1B0ckZyb21Ob2QK
ICAgICBpZiAoc291cmNlSXNEb2N1bWVudCkKICAgICAgICAgc291cmNlRG9jID0gKHhtbERvY1B0
cilvd25lckRvY3VtZW50LT50cmFuc2Zvcm1Tb3VyY2UoKTsKICAgICBpZiAoIXNvdXJjZURvYykg
ewotICAgICAgICBzb3VyY2VEb2MgPSAoeG1sRG9jUHRyKXhtbERvY1B0ckZvclN0cmluZyhvd25l
ckRvY3VtZW50LT5kb2NMb2FkZXIoKSwgY3JlYXRlTWFya3VwKHNvdXJjZU5vZGUpLCBzb3VyY2VJ
c0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+VVJMKCkgOiBEZXByZWNhdGVkU3RyaW5nKCkpOwor
ICAgICAgICBzb3VyY2VEb2MgPSAoeG1sRG9jUHRyKXhtbERvY1B0ckZvclN0cmluZyhvd25lckRv
Y3VtZW50LT5kb2NMb2FkZXIoKSwgY3JlYXRlTWFya3VwKHNvdXJjZU5vZGUpLCBzb3VyY2VJc0Rv
Y3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJsKCkgOiBEZXByZWNhdGVkU3RyaW5nKCkpOwogICAg
ICAgICBzaG91bGREZWxldGUgPSAoc291cmNlRG9jICE9IDApOwogICAgIH0KICAgICByZXR1cm4g
c291cmNlRG9jOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyODU4NCkKKysrIFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMjEs
NyArMTEyMSw3IEBAIE5TRGljdGlvbmFyeSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGkKICAg
ICAgICAgICAgIGVsZW1lbnQsIFdlYkFjdGlvbkVsZW1lbnRLZXksCiAgICAgICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEludDptb3VzZUV2ZW50LT5idXR0b24oKV0sIFdlYkFjdGlvbkJ1dHRv
bktleSwKICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1vZGlmaWVyRmxhZ3Nd
LCBXZWJBY3Rpb25Nb2RpZmllckZsYWdzS2V5LAotICAgICAgICAgICAgYWN0aW9uLlVSTCgpLmdl
dE5TVVJMKCksIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5LAorICAgICAgICAgICAgYWN0aW9uLnVy
bCgpLmdldE5TVVJMKCksIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5LAogICAgICAgICAgICAgbmls
XTsKICAgICAgICAgW2VsZW1lbnQgcmVsZWFzZV07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xMTI5LDcgKzExMjksNyBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50Ojph
Y3RpCiAgICAgcmV0dXJuIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czoKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6YWN0aW9uLnR5cGUoKV0sIFdlYkFj
dGlvbk5hdmlnYXRpb25UeXBlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpt
b2RpZmllckZsYWdzXSwgV2ViQWN0aW9uTW9kaWZpZXJGbGFnc0tleSwKLSAgICAgICAgYWN0aW9u
LlVSTCgpLmdldE5TVVJMKCksIFdlYkFjdGlvbk9yaWdpbmFsVVJMS2V5LAorICAgICAgICBhY3Rp
b24udXJsKCkuZ2V0TlNVUkwoKSwgV2ViQWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgIG5p
bF07CiB9CiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCShyZXZpc2lvbiAy
ODU4NCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNs
YXNzKE5TTQogLy8gTWF5IHJldHVybiBuaWwgaWYgbm90IGluaXRpYWxpemVkIHdpdGggYSBVUkwu
CiAtIChOU1VSTCAqKV9VUkwKIHsKLSAgICBLVVJMIFVSTCA9IF9wcml2YXRlLT5sb2FkZXItPlVS
TCgpOworICAgIEtVUkwgVVJMID0gX3ByaXZhdGUtPmxvYWRlci0+dXJsKCk7CiAgICAgcmV0dXJu
IFVSTC5pc0VtcHR5KCkgPyBuaWwgOiBVUkwuZ2V0TlNVUkwoKTsKIH0KIApJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDI4NTg0KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwMzksNyArNDAzOSw3IEBAIHN0YXRpYyBXZWJGcmFt
ZVZpZXcgKmNvbnRhaW5pbmdGcmFtZVZpZXcKIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25zKHNlbGYpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZFJlY2VpdmVJY29uRm9yRnJhbWVGdW5jKSB7Ci0gICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25E
YXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTChjb3JlKHdlYkZyYW1lKS0+bG9hZGVyKCktPnVybCgp
LnVybCgpLCBJbnRTaXplKDE2LCAxNikpOworICAgICAgICBJbWFnZSogaW1hZ2UgPSBpY29uRGF0
YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwoY29yZSh3ZWJGcmFtZSktPmxvYWRlcigpLT51cmwoKS5z
dHJpbmcoKSwgSW50U2l6ZSgxNiwgMTYpKTsKICAgICAgICAgaWYgKE5TSW1hZ2UgKmljb24gPSB3
ZWJHZXROU0ltYWdlKGltYWdlLCBOU01ha2VTaXplKDE2LCAxNikpKQogICAgICAgICAgICAgQ2Fs
bEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZUljb25Gb3JGcmFt
ZUZ1bmMsIHNlbGYsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVJY29uOmZvckZyYW1lOiks
IGljb24sIHdlYkZyYW1lKTsKICAgICB9CkBAIC00MTY5LDYgKzQxNjksOCBAQCB0eXBlZGVmIGRv
dWJsZSAoKk9iakNNc2dTZW5kRlBSZXQpKGlkLCBTCiBzdGF0aWMgY29uc3QgT2JqQ01zZ1NlbmRG
UFJldCBvYmpjX21zZ1NlbmRfZnByZXQgPSByZWludGVycHJldF9jYXN0PE9iakNNc2dTZW5kRlBS
ZXQ+KG9iamNfbXNnU2VuZCk7CiAjZW5kaWYKIAordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcg
KCpPYmpDTXNnU2VuZFVuc2lnbmVkTG9uZ0xvbmdSZXQpKGlkLCBTRUwsIC4uLik7CisKIHN0YXRp
YyBpbmxpbmUgaWQgQ2FsbERlbGVnYXRlKFdlYlZpZXcgKnNlbGYsIGlkIGRlbGVnYXRlLCBTRUwg
c2VsZWN0b3IpCiB7CiAgICAgaWYgKCFkZWxlZ2F0ZSB8fCAhW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpzZWxlY3Rvcl0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17837</attachid>
            <date>2007-12-10 21:47:39 -0800</date>
            <delta_ts>2013-09-26 22:42:42 -0700</delta_ts>
            <desc>newer URL -&gt; url patch (now with Windows support and changelogs)</desc>
            <filename>LowercaseURLPatch3.txt</filename>
            <type>text/plain</type>
            <size>161565</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODYwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQ4IEBACisyMDA3LTEyLTEwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NydWIg
VVJMIG91dCBvZiB0aGUgdHJlZSBpbiBwcmVwYXJhdGlvbiBvZiByYW5hbWVpbmcgS1VSTCB0byBV
UkwuCisgICAgICAgICAgICAtIFJlbmFtZXMgRG9jdW1lbnQ6OlVSTCgpIC0+IERvY3VtZW50Ojp1
cmwoKQorICAgICAgICAgICAgLSBSZW5hbWVzIERvY3VtZW50TG9hZGVyOjpVUkwoKSAtPiBEb2N1
bWVudExvYWRlcjo6dXJsKCkKKyAgICAgICAgICAgIC0gUmVuYW1lcyBLVVJMOjp1cmwoKSB0byBL
VVJMOjpzdHJpbmcoKSBhbmQgS1VSTDo6ZGVwcmVjYXRlZFN0cmluZygpCisgICAgICAgICAgICAt
IFJlbW92ZSBGcmFtZUxvYWRlcjo6VVJMKCkKKyAgICAgICAgICAgIC0gVmFyaW91cyB2YXJpYWJs
ZSByZW5hbWVzLgorCisgICAgICAgIFRoZSBjaGFuZ2UgZnJvbSBEb2N1bWVudDo6VVJMKCkgdG8g
RG9jdW1lbnQ6OnVybCgpIHJlcXVpcmVkIGNoYW5nZXMKKyAgICAgICAgdG8gdGhlIGJpbmRpbmdz
IHNjcmlwdHMgYXMgd2VsbCwgYmVjYXVzZSBVUkwoKSBpcyB0aGUgbmFtZSBvZiBhIERPTQorICAg
ICAgICBtZXRob2QuICBUaGUgY29kZSBnZW5lcmF0aW9uIHNjcmlwdHMgbm93IGhhdmUgY29kZSB0
byBzcGVjaWFsIGNhc2UgVVJMKCkKKyAgICAgICAgdG8gdXJsKCkuCisKKyAgICAgICAgKiBXZWJD
b3JlLmJhc2UuZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9ranNfbmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKEtKUzo6TmF2aWdhdG9y
OjpnZXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfcHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6S0pTUHJveHk6OmluaXRTY3JpcHQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL2tqc193aW5kb3cuY3BwOgorICAgICAgICAoS0pTOjpXaW5kb3c6OnB1dCk6Cisg
ICAgICAgIChLSlM6OldpbmRvdzo6YWxsb3dzQWNjZXNzRnJvbSk6CisgICAgICAgIChLSlM6Okxv
Y2F0aW9uOjpwdXQpOgorICAgICAgICAoS0pTOjpMb2NhdGlvblByb3RvRnVuY1JlcGxhY2U6OmNh
bGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6TG9jYXRpb25Qcm90b0Z1bmNSZWxvYWQ6OmNh
bGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6TG9jYXRpb25Qcm90b0Z1bmNBc3NpZ246OmNh
bGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG06CisgICAgICAgICogY3NzL0NTU0lt
cG9ydFJ1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1wb3J0UnVsZTo6aW5zZXJ0ZWRJ
bnRvUGFyZW50KToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQmFja2dy
b3VuZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250RmFjZVNy
Yyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVj
dG9yOjpzZXRFbmNvZGVkVVJMKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29v
a2llKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpkb21haW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnNldERvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z2V0SW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbXBsZXRlVVJMKToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1
cmwpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJhc2VVUkwpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmJhc2VVUkkpOgorICAg
ICAgICAqIGRvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBkb20vU3R5bGVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRDU1NJbWFn
ZVByb3BlcnR5KToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIGRv
bS9YTUxUb2tlbml6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjplbmRF
bGVtZW50TnMpOgorICAgICAgICAoV2ViQ29yZTo6WE1MVG9rZW5pemVyOjplbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyLmg6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3B5KToKKyAg
ICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wbGV0ZVVS
THMpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUGFnZTo6dXJsKToKKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5SXRlbTo6c2V0VVJMKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVt
Ojppc0N1cnJlbnREb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJhc2VFbGVtZW50Ojpwcm9jZXNzKToKKyAgICAgICAg
KiBodG1sL0hUTUxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlcjo6cmVw
b3J0RXJyb3JUb0NvbnNvbGUpOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OmV2YWx1YXRlU2NyaXB0
KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnNjcmlw
dEV4ZWN1dGlvbik6CisgICAgICAgICogbG9hZGVyL0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlOjpyZXF1ZXN0UmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5KToKKyAgICAgICAg
KiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjopOgorICAgICAgICAqIGxvYWRl
ci9DYWNoZWRTY3JpcHQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6Y2hlY2tGb3JSZWxvYWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6dXJsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hv
clNjcm9sbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291
cmNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkZv
cm1TdWJtaXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFJlZGlyZWN0aW9uOjpT
Y2hlZHVsZWRSZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hh
bmdlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybFNlbGVjdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybUFnYWluKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRF
eHBsaWNpdE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlcGxhY2VDb250
ZW50c1dpdGhTY3JpcHRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmV4
ZWN1dGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlY2VpdmVkRmly
c3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpiZWdpbik6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RhcnRJY29uTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6cmVkaXJlY3Rpb25UaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpkaWROb3RPcGVuVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cGRhdGVQ
b2xpY3lCYXNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzY3JvbGxUb0Fu
Y2hvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RhcnRSZWRpcmVjdGlvblRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjYW5Mb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpzaG91bGRIaWRlUmVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNob3VsZEFsbG93TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
bGllbnRSZWRpcmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpoYXZlVG9sZEJyaWRnZUFib3V0TG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cG9zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBv
bGljeSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1Nh
bWVBc0N1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNyZWF0ZUhpc3Rv
cnlJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRCYWNrRm9yd2FyZEl0
ZW1DbGlwcGVkQXRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRJ
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxzTWF0Y2hJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWN1cnNpdmVHb1RvSXRlbSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvclN0YW5kYXJkTG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlSGlzdG9yeUZvclJlZGlyZWN0V2l0
aExvY2tlZEhpc3RvcnkpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybCk6CisgICAgICAgICogbG9hZGVyL0ltYWdlRG9j
dW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1l
bnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGxvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6c2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRp
b25BY3Rpb246Ok5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9u
QWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uOjp1cmwpOgorICAg
ICAgICAqIGxvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5Ub2tlbml6ZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKToKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSk6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkxvYWRl
cjo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMb2FkZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKiBsb2Fk
ZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm06CisgICAgICAgICh1cmxPcmlnaW5hbERhdGEpOgor
ICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0
VG9vbFRpcCk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgICogcGFnZS9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlOjp0eXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNvdXJjZVRvRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6dXBkYXRlU2NyaXB0UmVzb3VyY2VSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgor
ICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbToKKyAgICAgICAgKC1bV2Vi
Q29yZUZyYW1lQnJpZGdlIGdldERhdGE6YW5kUmVzcG9uc2U6Zm9yVVJMOl0pOgorICAgICAgICAq
IHBsYXRmb3JtL0tVUkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OktVUkw6OnN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpLVVJMOjpkZXByZWNhdGVkU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjpn
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVXcmFwcGVyRm9ySW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNO
dWxsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFu
ZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnVybFRvTWFya3VwKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OndyaXRlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkV2luOjp3cml0ZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRXaW46OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRl
U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVVJMKToKKyAg
ICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbHVnaW5EYXRhYmFzZVdpbjo6ZmluZFBsdWdpbik6CisgICAgICAgICogcGx1Z2lucy93
aW4vUGx1Z2luU3RyZWFtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblN0cmVhbVdp
bjo6c3RhcnRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtV2luOjpkZXN0
cm95U3RyZWFtKToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3V2luOjpwZXJmb3JtUmVxdWVzdCk6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9hZGVyOjp1cGRh
dGVGcm9tRWxlbWVudCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNwb25zZVhNTCk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXJsTWF0Y2hlc0RvY3VtZW50RG9tYWluKToKKyAgICAg
ICAgKiB4bWwvWFNMSW1wb3J0UnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xJbXBvcnRS
dWxlOjpsb2FkU2hlZXQpOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjp4c2x0U3R5bGVzaGVldFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6eG1sRG9jUHRyRnJvbU5vZGUpOgorCiAyMDA3LTEyLTEwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IG5vbi1tYWMgYnVpbGRzLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAko
cmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYxNiw3ICs2MTYsNyBAQCBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE3bWFp
bkRvY3VtCiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE5aXNMb2FkaW5nSW5BUElTZW5z
ZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE5b3JpZ2luYWxSZXF1ZXN0Q29weUV2
CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjIxaXNMb2FkaW5nTWFpblJlc291cmNlRXYK
LV9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyM1VSTEV2CitfX1pOSzdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI1dGl0bGVFdgog
X19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXI4cmVzcG9uc2VFdgogX19aTks3V2ViQ29yZTE0
RG9jdW1lbnRMb2FkZXI5aXNMb2FkaW5nRXYKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pz
X2V2ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRz
LmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9pZCBKU0xhenlFdmVudExp
c3RlbmVyOjpwYXJzZUNvZGUoKSBjbwogICAgICAgICBKU09iamVjdCogY29uc3RyID0gcHJveHkt
Pmdsb2JhbE9iamVjdCgpLT5mdW5jdGlvbkNvbnN0cnVjdG9yKCk7CiAgICAgICAgIExpc3QgYXJn
czsKIAotICAgICAgICBVU3RyaW5nIHNvdXJjZVVSTChmcmFtZS0+bG9hZGVyKCktPnVybCgpLnVy
bCgpKTsKKyAgICAgICAgVVN0cmluZyBzb3VyY2VVUkwoZnJhbWUtPmxvYWRlcigpLT51cmwoKS5z
dHJpbmcoKSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGV2ZW50UGFyYW1ldGVyTmFtZSgpKTsKICAg
ICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcobV9jb2RlKSk7CiAgICAgICAgIG1fbGlzdGVuZXIg
PSBjb25zdHItPmNvbnN0cnVjdChleGVjLCBhcmdzLCBtX2Z1bmN0aW9uTmFtZSwgc291cmNlVVJM
LCBtX2xpbmVOdW1iZXIpOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhlYyBvayA/CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19uYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMva2pzX25hdmlnYXRvci5jcHAJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfbmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcg
KzE5NSw3IEBAIEpTVmFsdWUqIE5hdmlnYXRvcjo6Z2V0VmFsdWVQcm9wZXJ0eShFeGUKICAgICBy
ZXR1cm4ganNTdHJpbmcoIk5ldHNjYXBlIik7CiAgIGNhc2UgQXBwVmVyc2lvbjogewogICAgIC8v
IFZlcnNpb24gaXMgZXZlcnl0aGluZyBpbiB0aGUgdXNlciBhZ2VudCBzdHJpbmcgcGFzdCB0aGUg
Ik1vemlsbGEvIiBwcmVmaXguCi0gICAgY29uc3QgU3RyaW5nIHVzZXJBZ2VudCA9IG1fZnJhbWUt
PmxvYWRlcigpLT51c2VyQWdlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPlVSTCgpIDogS1VSTCgpKTsKKyAgICBjb25zdCBTdHJpbmcgdXNlckFnZW50ID0gbV9m
cmFtZS0+bG9hZGVyKCktPnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkgOiBLVVJMKCkpOwogICAgIHJldHVybiBqc1N0cmluZyh1c2VyQWdl
bnQuc3Vic3RyaW5nKHVzZXJBZ2VudC5maW5kKCcvJykgKyAxKSk7CiAgIH0KICAgY2FzZSBQcm9k
dWN0OgpAQCAtMjA5LDcgKzIwOSw3IEBAIEpTVmFsdWUqIE5hdmlnYXRvcjo6Z2V0VmFsdWVQcm9w
ZXJ0eShFeGUKICAgY2FzZSBMYW5ndWFnZToKICAgICByZXR1cm4ganNTdHJpbmcoZGVmYXVsdExh
bmd1YWdlKCkpOwogICBjYXNlIFVzZXJBZ2VudDoKLSAgICByZXR1cm4ganNTdHJpbmcobV9mcmFt
ZS0+bG9hZGVyKCktPnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+VVJMKCkgOiBLVVJMKCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcobV9mcmFtZS0+
bG9hZGVyKCktPnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkgOiBLVVJMKCkpKTsKICAgY2FzZSBQbGF0Zm9ybToKICAgICByZXR1cm4ganNT
dHJpbmcoV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0pOwogICBjYXNlIF9QbHVnaW5zOgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIEtKU1Byb3h5Ojppbml0U2NyaXB0KCkKICAgICBtX2dsb2JhbE9iamVjdCA9IG5l
dyBKU0RPTVdpbmRvdyhtX2ZyYW1lLT5kb21XaW5kb3coKSk7CiAKICAgICAvLyBGSVhNRTogV2Ug
Y2FuIGdldCByaWQgb2YgdGhpcyAoYW5kIGVsaW1pbmF0ZSBjb21wYXRNb2RlIGVudGlyZWx5KS4K
LSAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9mcmFtZS0+bG9hZGVyKCktPnVzZXJBZ2VudChtX2Zy
YW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+VVJMKCkgOiBLVVJMKCkpOwor
ICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXNlckFnZW50KG1fZnJh
bWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSA6IEtVUkwoKSk7CiAg
ICAgaWYgKHVzZXJBZ2VudC5maW5kKCJNaWNyb3NvZnQiKSA+PSAwIHx8IHVzZXJBZ2VudC5maW5k
KCJNU0lFIikgPj0gMCkKICAgICAgICAgbV9nbG9iYWxPYmplY3QtPnNldENvbXBhdE1vZGUoSUVD
b21wYXQpOwogICAgIGVsc2UgewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCShy
ZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4NCw3ICs2ODQsNyBAQCB2b2lkIFdpbmRvdzo6cHV0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgCiAgICAgICBpZiAocCkgewogICAgICAgICBpZiAoIXAtPmxvYWRlcigp
LT5zaG91bGRBbGxvd05hdmlnYXRpb24oaW1wbCgpLT5mcmFtZSgpKSkKICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIERlcHJlY2F0ZWRTdHJpbmcgZHN0VXJsID0gcC0+bG9hZGVyKCktPmNvbXBs
ZXRlVVJMKERlcHJlY2F0ZWRTdHJpbmcodmFsdWUtPnRvU3RyaW5nKGV4ZWMpKSkudXJsKCk7Cisg
ICAgICAgIFN0cmluZyBkc3RVcmwgPSBwLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwodmFsdWUtPnRv
U3RyaW5nKGV4ZWMpKS5zdHJpbmcoKTsKICAgICAgICAgaWYgKCFkc3RVcmwuc3RhcnRzV2l0aCgi
amF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgYWxsb3dzQWNjZXNzRnJvbShleGVjKSkgewogICAgICAg
ICAgIGJvb2wgdXNlckdlc3R1cmUgPSBwLT5zY3JpcHRQcm94eSgpLT5wcm9jZXNzaW5nVXNlckdl
c3R1cmUoKTsKICAgICAgICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB0aGlz
IEpTIHdhcyBjYWxsZWQgdmlhIGEgdXNlciBnZXN0dXJlCkBAIC04MzMsNyArODMzLDcgQEAgYm9v
bCBXaW5kb3c6OmFsbG93c0FjY2Vzc0Zyb20oY29uc3QgSlNHbAogICAgIGlmICghdGFyZ2V0RnJh
bWUtPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgewogICAgICAgICAvLyBG
SVhNRTogdGhpcyBlcnJvciBtZXNzYWdlIHNob3VsZCBjb250YWluIG1vcmUgc3BlY2lmaWNzIG9m
IHdoeSB0aGUgc2FtZSBvcmlnaW4gY2hlY2sgaGFzIGZhaWxlZC4KICAgICAgICAgU3RyaW5nIG1l
c3NhZ2UgPSBTdHJpbmc6OmZvcm1hdCgiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgJXMgZnJvbSBmcmFtZSB3aXRoIFVSTCAlcy4gRG9tYWlucywgcHJv
dG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJnZXREb2N1bWVudC0+VVJMKCkudXRmOCgpLmRhdGEoKSwgb3Jp
Z2luRG9jdW1lbnQtPlVSTCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT51cmwoKS51dGY4KCkuZGF0YSgpLCBv
cmlnaW5Eb2N1bWVudC0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgaWYgKEludGVy
cHJldGVyOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgICAgIHByaW50ZigiJXMi
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTUyOCw3ICsxNTI4LDcgQEAgdm9pZCBMb2Nh
dGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29ucwogICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgaWYgKCFmcmFtZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihtX2Zy
YW1lKSkKICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2Fk
ZXIoKS0+Y29tcGxldGVVUkwoc3RyKS51cmwoKTsKKyAgICAgICAgICB1cmwgPSBmcmFtZS0+bG9h
ZGVyKCktPmNvbXBsZXRlVVJMKHN0cik7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAg
ICBjYXNlIEhhc2g6IHsKQEAgLTE1NzAsOSArMTU3MCw5IEBAIHZvaWQgTG9jYXRpb246OnB1dChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnMKICAgfQogCiAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IFdpbmRv
dzo6cmV0cmlldmVBY3RpdmUoZXhlYyktPmltcGwoKS0+ZnJhbWUoKTsKLSAgaWYgKCF1cmwudXJs
KCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgc2FtZURvbWFpbkFjY2Vzcykg
eworICBpZiAoIXVybC5kZXByZWNhdGVkU3RyaW5nKCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoi
LCBmYWxzZSkgfHwgc2FtZURvbWFpbkFjY2VzcykgewogICAgIGJvb2wgdXNlckdlc3R1cmUgPSBh
Y3RpdmVGcmFtZS0+c2NyaXB0UHJveHkoKS0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAg
bV9mcmFtZS0+bG9hZGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UodXJsLnVybCgpLCBhY3Rp
dmVGcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSwgZmFsc2UsIHVzZXJHZXN0dXJl
KTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwuc3Ry
aW5nKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpLCBmYWxzZSwg
dXNlckdlc3R1cmUpOwogICB9CiB9CiAKQEAgLTE1OTMsNyArMTU5Myw3IEBAIEpTVmFsdWUqIExv
Y2F0aW9uUHJvdG9GdW5jUmVwbGFjZTo6Y2FsbEEKICAgICAgICAgY29uc3QgV2luZG93KiB3aW5k
b3cgPSBXaW5kb3c6OnJldHJpZXZlV2luZG93KGZyYW1lKTsKICAgICAgICAgaWYgKCFzdHIuc3Rh
cnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgKHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93
c0FjY2Vzc0Zyb20oZXhlYykpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0
aXZlRnJhbWUtPnNjcmlwdFByb3h5KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwotICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGFjdGl2ZUZyYW1l
LT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoc3RyKS51cmwoKSwgYWN0aXZlRnJhbWUtPmxvYWRlcigp
LT5vdXRnb2luZ1JlZmVycmVyKCksIHRydWUsIHVzZXJHZXN0dXJlKTsKKyAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShhY3RpdmVGcmFtZS0+bG9hZGVy
KCktPmNvbXBsZXRlVVJMKHN0cikuc3RyaW5nKCksIGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+b3V0
Z29pbmdSZWZlcnJlcigpLCB0cnVlLCB1c2VyR2VzdHVyZSk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTE2MTMsOSArMTYxMyw5IEBAIEpTVmFsdWUqIExvY2F0aW9uUHJvdG9GdW5jUmVsb2FkOjpj
YWxsQXMKICAgICBpZiAoIXdpbmRvdy0+YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+dXJsKCku
dXJsKCkuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgKHdpbmRvdyAmJiB3aW5k
b3ctPmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpKSB7Ci0gICAgICBib29sIHVzZXJHZXN0dXJlID0g
V2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgpLT5mcmFtZSgpLT5zY3JpcHRQcm94
eSgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKLSAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2No
ZWR1bGVSZWZyZXNoKHVzZXJHZXN0dXJlKTsKKyAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+dXJs
KCkuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6IiwgZmFsc2UpIHx8
ICh3aW5kb3cgJiYgd2luZG93LT5hbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKSkgeworICAgICAgICBi
b29sIHVzZXJHZXN0dXJlID0gV2luZG93OjpyZXRyaWV2ZUFjdGl2ZShleGVjKS0+aW1wbCgpLT5m
cmFtZSgpLT5zY3JpcHRQcm94eSgpLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKKyAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZVJlZnJlc2godXNlckdlc3R1cmUpOwogICAgIH0KICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE2MzQsNyArMTYzNCw3IEBAIEpTVmFsdWUq
IExvY2F0aW9uUHJvdG9GdW5jQXNzaWduOjpjYWxsQXMKICAgICAgICAgaWYgKCFhY3RpdmVGcmFt
ZS0+bG9hZGVyKCktPnNob3VsZEFsbG93TmF2aWdhdGlvbihmcmFtZSkpCiAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgY29uc3QgV2luZG93KiB3aW5kb3cgPSBXaW5k
b3c6OnJldHJpZXZlV2luZG93KGZyYW1lKTsKLSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBkc3RV
cmwgPSBhY3RpdmVGcmFtZS0+bG9hZGVyKCktPmNvbXBsZXRlVVJMKERlcHJlY2F0ZWRTdHJpbmco
YXJnc1swXS0+dG9TdHJpbmcoZXhlYykpKS51cmwoKTsKKyAgICAgICAgU3RyaW5nIGRzdFVybCA9
IGFjdGl2ZUZyYW1lLT5sb2FkZXIoKS0+Y29tcGxldGVVUkwoYXJnc1swXS0+dG9TdHJpbmcoZXhl
YykpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICAgICAgaWYgKCFkc3RVcmwuc3RhcnRzV2l0aCgi
amF2YXNjcmlwdDoiLCBmYWxzZSkgfHwgKHdpbmRvdyAmJiB3aW5kb3ctPmFsbG93c0FjY2Vzc0Zy
b20oZXhlYykpKSB7CiAgICAgICAgICAgICBib29sIHVzZXJHZXN0dXJlID0gYWN0aXZlRnJhbWUt
PnNjcmlwdFByb3h5KCktPnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpOwogICAgICAgICAgICAgLy8g
V2Ugd2FudCBhIG5ldyBoaXN0b3J5IGl0ZW0gaWYgdGhpcyBKUyB3YXMgY2FsbGVkIHZpYSBhIHVz
ZXIgZ2VzdHVyZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3Iu
cG0JKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3IucG0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsOSBAQAogIyAKLSMgS0RPTSBJREwg
cGFyc2VyCisjIFdlYktpdCBJREwgcGFyc2VyCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgotIyAKLSMgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CisjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNTksNCArMzU4LDI0IEBA
IHN1YiBTY2FuRGlyZWN0b3J5CiAgICAgfQogfQogCisjIFVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0
dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGluZXMuIAorIyBFLmcuLCB4
bWxFbmNvZGluZyBiZWNvbWVzIFhNTEVuY29kaW5nLCBidXQgeG1sbGxhbmcgYmVjb21lcyBYbWxs
YW5nLgorc3ViIFdLX3VjZmlyc3QKK3sKKyAgICBteSAoJG9iamVjdCwgJHBhcmFtKSA9IEBfOwor
ICAgIG15ICRyZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7CisgICAgJHJldCA9fiBzL1htbC9YTUwvIGlm
ICRyZXQgPX4gL15YbWxbXmEtel0vOworICAgIHJldHVybiAkcmV0OworfQorCisjIExvd2VyY2Fz
ZSB0aGUgZmlyc3QgbGV0dGVyIHdoaWxlIHJlc3BlY3RpbmcgV2ViS2l0IHN0eWxlIGd1aWRlbGlu
ZXMuIAorIyBVUkwgYmVjb21lcyB1cmwsIGJ1dCBTZXRVUkwgYmVjb21lcyBzZXRVUkwuCitzdWIg
V0tfbGNmaXJzdAoreworICAgIG15ICgkb2JqZWN0LCAkcGFyYW0pID0gQF87CisgICAgbXkgJHJl
dCA9IGxjZmlyc3QoJHBhcmFtKTsKKyAgICAkcmV0ID1+IHMvdVJML3VybC87CisgICAgcmV0dXJu
ICRyZXQ7Cit9CisKIDE7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckNPTS5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckNPTS5wbQkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNPTS5wbQkod29ya2luZyBjb3B5KQpAQCAtNjE2LDcgKzYxNiw3IEBA
IHN1YiBHZW5lcmF0ZUNQUEF0dHJpYnV0ZQogICAgIHB1c2goQGdldHRlckltcGxlbWVudGF0aW9u
LCAiICAgIGlmICghcmVzdWx0KVxuIik7CiAgICAgcHVzaChAZ2V0dGVySW1wbGVtZW50YXRpb24s
ICIgICAgICAgIHJldHVybiBFX1BPSU5URVI7XG5cbiIpOwogCi0gICAgbXkgJGltcGxlbWVudGF0
aW9uR2V0dGVyID0gImltcGwke2ltcGxlbWVudGF0aW9uQ2xhc3NXaXRob3V0TmFtZXNwYWNlfSgp
LT4ke2F0dHJpYnV0ZU5hbWV9KCIgLiAoJGhhc0dldHRlckV4Y2VwdGlvbiA/ICJlYyIgOiAiIiku
ICIpIjsKKyAgICBteSAkaW1wbGVtZW50YXRpb25HZXR0ZXIgPSAiaW1wbCR7aW1wbGVtZW50YXRp
b25DbGFzc1dpdGhvdXROYW1lc3BhY2V9KCktPiIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJz
dCgkYXR0cmlidXRlTmFtZSkgLiAiKCIgLiAoJGhhc0dldHRlckV4Y2VwdGlvbiA/ICJlYyIgOiAi
IikuICIpIjsKIAogICAgIHB1c2goQGdldHRlckltcGxlbWVudGF0aW9uLCAiICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIikgaWYgJGhhc0dldHRlckV4Y2VwdGlvbjsKIApAQCAt
NzYzLDcgKzc2Myw3IEBAIHN1YiBHZW5lcmF0ZUNQUEZ1bmN0aW9uCiAgICAgfQogCiAgICAgbXkg
JGNhbGxTaWdCZWdpbiA9ICIgICAgIjsKLSAgICBteSAkY2FsbFNpZ01pZGRsZSA9ICIke2ltcGxl
bWVudGF0aW9uR2V0dGVyfS0+JHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBwYXJhbWV0
ZXJMaXN0KSAuICIpIjsKKyAgICBteSAkY2FsbFNpZ01pZGRsZSA9ICIke2ltcGxlbWVudGF0aW9u
R2V0dGVyfS0+IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4g
IigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTGlzdCkgLiAiKSI7CiAgICAgbXkgJGNhbGxTaWdF
bmQgPSAiO1xuIjsKIAogICAgIGlmIChkZWZpbmVkICRuZWVkc0N1c3RvbXsiTm9kZVRvUmV0dXJu
In0pIHsKQEAgLTEyMTgsNyArMTIxOCw3IEBAIHN1YiBXcml0ZURhdGEKICAgICBwcmludCBPVVRQ
VVRJREwgQElETEhlYWRlcjsKIAogICAgICMgQWRkIGZvcndhcmQgZGVjbGFyYXRpb25zIGFuZCBp
bW9ydHMKLSAgICBkZWxldGUgJElETEZvcndhcmREZWNsYXJhdGlvbnN7a2V5cyglSURMRG9udEZv
cndhcmREZWNsYXJlKX07DQorICAgIGRlbGV0ZSAkSURMRm9yd2FyZERlY2xhcmF0aW9uc3trZXlz
KCVJRExEb250Rm9yd2FyZERlY2xhcmUpfTsKICAgICBkZWxldGUgJElETEltcG9ydHN7a2V5cygl
SURMRG9udEltcG9ydCl9OwogCiAgICAgcHJpbnQgT1VUUFVUSURMIG1hcCB7ICJjcHBfcXVvdGUo
XCJpbnRlcmZhY2UgJF87XCIpXG4iIH0gc29ydCBrZXlzKCVJRExGb3J3YXJkRGVjbGFyYXRpb25z
KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
cmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxNiArODEsNiBAQCBzdWIgbGVmdFNoaWZ0KCQk
KSB7CiAgICAgcmV0dXJuICgoJHZhbHVlIDw8ICRkaXN0YW5jZSkgJiAweEZGRkZGRkZGKTsKIH0K
IAotIyBVcHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciwgd2hpbGUgcmVzcGVjdGluZyBXZWJLaXQg
c3R5bGUgZ3VpZGVsaW5lcy4gCi0jIEUuZy4sIHhtbEVuY29kaW5nIGJlY29tZXMgWE1MRW5jb2Rp
bmcsIGJ1dCB4bWxsbGFuZyBiZWNvbWVzIFhtbGxhbmcuCi1zdWIgV0tfdWNmaXJzdAotewotICAg
IG15ICRwYXJhbSA9IHNoaWZ0OwotICAgIG15ICRyZXQgPSB1Y2ZpcnN0KCRwYXJhbSk7Ci0gICAg
JHJldCA9fiBzL1htbC9YTUwvIGlmICRyZXQgPX4gL15YbWxbXmEtel0vOwotICAgIHJldHVybiAk
cmV0OwotfQotCiAjIFBhcmFtczogJ2RvbUNsYXNzJyBzdHJ1Y3QKIHN1YiBHZW5lcmF0ZUludGVy
ZmFjZQogewpAQCAtNDEwLDkgKzQwMCw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiAgICAgICAgIik7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIG15ICR2YWx1ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9
fiAvQ29uc3RydWN0b3IkLwotICAgICAgICAgICAgICAgICAgICAgID8gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lIC4gIkNvbnN0cnVjdG9yQXR0ck51bSIKLSAgICAgICAgICAgICAgICAgICAg
ICA6IFdLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIjsK
KyAgICAgICAgICAgIG15ICR2YWx1ZSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAgICAgICAgICAgICAuICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpCisg
ICAgICAgICAgICAgICAgLiAiQXR0ck51bSI7CiAgICAgICAgICAgICAkdmFsdWUgLj0gIiwgIiBp
ZiAoKCRpIDwgJG51bUF0dHJpYnV0ZXMgLSAxKSBvciAoKCRpIGVxICRudW1BdHRyaWJ1dGVzIC0g
MSkgYW5kICgoJG51bUZ1bmN0aW9ucyBuZSAwKSBvciAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJHZW5lcmF0ZUNvbnN0cnVjdG9yIn0pKSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAkdmFsdWUpOwogICAgICAgICB9CkBAIC00MzEsMTUgKzQyMSwxNSBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFO
b2RlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFsdWUqICIgLiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWUgLiAiKEtKUzo6RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRjb2RlR2Vu
ZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtKUzo6
RXhlY1N0YXRlKikgY29uc3Q7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
dHlwZSAhfiAvXnJlYWRvbmx5LykgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgc2V0IiAuIFdLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgc2V0IiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAiKEtK
Uzo6RXhlY1N0YXRlKiwgS0pTOjpKU1ZhbHVlKik7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21HZXR0ZXIifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgS0pTOjpKU1ZhbHVlKiAiIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
IC4gIihLSlM6OkV4ZWNTdGF0ZSopIGNvbnN0O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpTVmFsdWUqICIgLiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihLSlM6OkV4ZWNTdGF0ZSop
IGNvbnN0O1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSkgewogICAgICAgICAgICAgICAg
IGlmICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gV0tfdWNmaXJzdCgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6SlNWYWx1
ZSopO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKSAuICIoS0pTOjpFeGVjU3RhdGUqLCBLSlM6OkpTVmFsdWUqKTtcbiIpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDUzLDcgKzQ0Myw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4g
ICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tIn0pIHsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogIiAuICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIC4gIihLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6TGlzdCYp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBLSlM6OkpT
VmFsdWUqICIgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZSkgLiAiKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpMaXN0Jik7XG4iKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU1MSw3ICs1NDEsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsIHByb3RvdHlwZUZ1bmN0aW9uRm9yKCRjbGFzc05hbWUsIFdLX3VjZmlyc3Qo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpKSk7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCBwcm90b3R5cGVGdW5jdGlvbkZvcigkY2xhc3NOYW1lLCAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkpKTsKICAgICAgICAgfSAgICAg
ICAgCiAgICAgfQogCkBAIC02MjIsOSArNjEyLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwog
ICAgICAgICAgICAgcHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICAgICAgbXkgJHZh
bHVlID0gJGNsYXNzTmFtZSAuICI6OiIgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICJDb25zdHJ1Y3RvckF0dHJOdW0iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdLX3VjZmlyc3QoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICJBdHRyTnVtIik7CisgICAgICAgICAgICBteSAkdmFsdWUg
PSAkY2xhc3NOYW1lIC4gIjo6IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAgICAgICAgICAgICAuICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpCisgICAg
ICAgICAgICAgICAgLiAiQXR0ck51bSI7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWVzLCAk
dmFsdWUpOwogCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKQEAgLTcxNCw3ICs3MDQs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBteSAkbmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwog
Ci0gICAgICAgIG15ICR2YWx1ZSA9ICImIiAuICRjbGFzc05hbWUgLiAiUHJvdG90eXBlRnVuY3Rp
b24iIC4gV0tfdWNmaXJzdCgkbmFtZSkgLiAiOjpjcmVhdGUiOworICAgICAgICBteSAkdmFsdWUg
PSAiJiIgLiAkY2xhc3NOYW1lIC4gIlByb3RvdHlwZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRuYW1lKSAuICI6OmNyZWF0ZSI7CiAgICAgICAgIHB1c2goQGhhc2hWYWx1
ZXMsICR2YWx1ZSk7CiAKICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7CkBAIC05MDcsMTggKzg5
NywxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBzd2l0Y2ggKHRva2VuKSB7XG4iKTsKIAogICAgICAgICBmb3JlYWNoIG15ICRh
dHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbXkgJG5h
bWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkZ2V0dGVy
RnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lKTsKIAogICAgICAgICAgICAgbXkgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNv
bnZlcnNpb24gPSAiIjsKICAgICAgICAgICAgIGlmICghJHBvZFR5cGUgYW5kICgkY29kZUdlbmVy
YXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJGltcGxDbGFzc05hbWUpIG9yICRhdHRyaWJ1dGUtPnR5
cGUgIX4gL15yZWFkb25seS8pKSB7CiAgICAgICAgICAgICAgICAgJGltcGxDbGFzc05hbWVGb3JW
YWx1ZUNvbnZlcnNpb24gPSAkaW1wbENsYXNzTmFtZTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykg
ewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuICRuYW1l
IC4gIkNvbnN0cnVjdG9yQXR0ck51bToge1xuIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3VjZmlyc3Qo
JG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgY2FzZSAiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKQorICAgICAgICAgICAgICAgIC4gKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAi
IikKKyAgICAgICAgICAgICAgICAuICJBdHRyTnVtOiB7XG4iKTsKIAogICAgICAgICAgICAgaWYg
KCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAm
JiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVj
a0RvbWFpblNlY3VyaXR5In0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CkBAIC05MjYsMzMgKzkx
NCwzMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tIn0gfHwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tR2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuICRuYW1lKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiAkZ2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMpO1xuIik7
CiAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja05vZGVTZWN1cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3sia2pzX2RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFz
c05hbWUqPihpbXBsKCkpO1xuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+JG5hbWUoKSkg
PyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFz
c05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kbmFtZSgpIikg
LiAiIDoganNVbmRlZmluZWQoKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFz
c05hbWUqPihpbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShleGVjLCBpbXAtPiRnZXR0ZXJGdW5j
dGlvbk5hbWUoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1w
LT4kZ2V0dGVyRnVuY3Rpb25OYW1lKCkiKSAuICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja0ZyYW1lU2VjdXJpdHkifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkRvY3VtZW50LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sia2pz
X2RvbS5oIn0gPSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBs
KCkpO1xuXG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+Y29udGVudERvY3VtZW50KCkpID8g
IiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICAwLCAkaW1wbENsYXNz
TmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRuYW1lKCkiKSAu
ICIgOiBqc1VuZGVmaW5lZCgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNz
TmFtZSo+KGltcGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGltcC0+Y29udGVudERvY3Vt
ZW50KCkpID8gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICAwLCAk
aW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24sICJpbXAtPiRn
ZXR0ZXJGdW5jdGlvbk5hbWUoKSIpIC4gIiA6IGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAg
ICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LykgewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKICAgICAgICAgICAg
ICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JU
eXBlIC4gIjo6Z2V0Q29uc3RydWN0b3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYg
KCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAkcG9kVHlwZSBpbXAoKmltcGwoKSk7XG5cbiIpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBvZFR5cGUgaW1wKCppbXBsKCkpO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBj
YXNlIGZvciBKU1NWR051bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wIikgLiAiO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJG5hbWUoKSIpIC4gIjtcbiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxD
bGFzc05hbWUsICIiLCAiaW1wLiRnZXR0ZXJGdW5jdGlvbk5hbWUoKSIpIC4gIjtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAg
PSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSk7XG5cbiIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGlt
cCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICBteSAkdHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0g
TmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUs
ICRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kbmFtZSgpIik7Ci0KKyAg
ICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAkaW1wbENsYXNzTmFtZUZvclZhbHVlQ29u
dmVyc2lvbiwgImltcC0+JGdldHRlckZ1bmN0aW9uTmFtZSgpIik7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgUmVmUHRyPCR0
eXBlPiBvYmogPSAkanNUeXBlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgb2JqLmdldCgpLCBpbXApO1xu
Iik7CkBAIC05NjQsMTEgKzk1MSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDtcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkcG9kVHlwZSBpbXAoKmltcGwo
KSk7XG5cbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIiLCAiaW1wLiRuYW1lKGVjKSIpIC4gIjtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJHBv
ZFR5cGUgaW1wKCppbXBsKCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFs
dWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgIiIsICJpbXAuJGdl
dHRlckZ1bmN0aW9uTmFtZShlYykiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxD
bGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcblxu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBLSlM6
OkpTVmFsdWUqIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgJGltcGxDbGFzc05hbWVGb3JWYWx1ZUNvbnZlcnNpb24s
ICJpbXAtPiRuYW1lKGVjKSIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRp
bXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xh
c3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uLCAiaW1wLT4kZ2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIik7CkBAIC0x
MDE3LDEyICsxMDA0LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfSkgewogICAg
ICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT50eXBlICF+IC9ecmVhZG9ubHkvKSB7CiAgICAg
ICAgICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwor
ICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJG5hbWUpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuICRuYW1lIC4iQ29uc3Ry
dWN0b3JBdHRyTnVtOiB7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuIFdLX3Vj
Zmlyc3QoJG5hbWUpIC4gIkF0dHJOdW06IHtcbiIpOwotICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc2UgIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29u
c3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAg
IC4gIkF0dHJOdW06IHtcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkZGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gJiYgISRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tEb21haW5TZWN1
cml0eSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKVxuIik7CkBAIC0xMDMwLDcgKzEwMTYs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbSJ9IHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkN1c3RvbVNldHRlciJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIihl
eGVjLCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBzZXQkc2V0dGVyRnVuY3Rpb25OYW1lKGV4ZWMsIHZhbHVlKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUg
PX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1
Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkBAIC0xMDQxLDE3
ICsxMDI3LDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNPYmplY3Q6OnB1dChleGVjLCBc
IiRuYW1lXCIsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgp
KTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgICRwb2RUeXBlIGltcCgqaW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgkcG9kVHlwZSBlcSAiZmxvYXQiKSB7ICMgU3BlY2lhbCBjYXNlIGZvciBK
U1NWR051bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgaW1wID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsICJ2YWx1ZSIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpbXAuc2V0IiAuIFdLX3VjZmlyc3QoJG5hbWUpIC4gIigiIC4gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiKTtcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1w
LnNldCRzZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUsICJ2YWx1ZSIpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIG1faW1wbC0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1w
bENsYXNzTmFtZSo+KGltcGwoKSk7XG5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAkaW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGlj
X2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
O1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaW1wLT5zZXQiIC4gV0tf
dWNmaXJzdCgkbmFtZSkgLiAiKCIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLCAidmFsdWUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIGltcC0+c2V0JHNldHRlckZ1bmN0aW9uTmFtZSgiIC4gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+
c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRh
dHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwpAQCAtMTA4MSwyMiArMTA2NywyMiBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICMgRnVuY3Rpb25zCiAgICAgaWYgKCRudW1GdW5j
dGlvbnMgPiAwKSB7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+
ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2xhc3NOYW1lID0gJGNsYXNz
TmFtZSAuICJQcm90b3R5cGVGdW5jdGlvbiIgLiBXS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbkNsYXNzTmFtZSA9ICRjbGFzc05h
bWUgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJKU1ZhbHVlKiAke2Z1bmN0aW9uQ2xhc3NOYW1lfTo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYgYXJncylcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJiR7Y2xhc3NOYW1lfTo6aW5mbykp
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yKTtcblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTtcbiIpOwog
CiAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5
cGUpOwogCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBj
YXN0ZWRUaGlzT2JqID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRoaXNPYmopO1xuIik7CiAK
ICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbSJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBjYXN0ZWRUaGlzT2JqLT4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
LiAiKGV4ZWMsIGFyZ3MpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHJldHVybiBjYXN0ZWRUaGlzT2JqLT4iIC4gJGNvZGVHZW5lcmF0b3ItPldLX2xj
Zmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpIC4gIihleGVjLCBhcmdzKTtcbiIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoJHBvZFR5cGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNTVkdQT0RUeXBlV3Jh
cHBlcjwkcG9kVHlwZT4qIHdyYXBwZXIgPSBjYXN0ZWRUaGlzT2JqLT5pbXBsKCk7XG4iKTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHBvZFR5cGUgaW1wKCp3
cmFwcGVyKTtcblxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICRwb2RUeXBlIGltcCgqd3JhcHBlcik7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNz
TmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzT2JqLT5p
bXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTExOSw3ICsxMTA1LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBteSAkcGFyYW1JbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3Ry
aW5nID0gImltcCIgLiAoJHBvZFR5cGUgPyAiLiIgOiAiLT4iKSAuICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lIC4gIigiOworICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICJp
bXAiIC4gKCRwb2RUeXBlID8gIi4iIDogIi0+IikgLiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJz
dCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSkgLiAiKCI7CiAKICAgICAgICAgICAgICAgICBt
eSAkaGFzT3B0aW9uYWxBcmd1bWVudHMgPSAwOwogCkBAIC0xMjY2LDcgKzEyNTIsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRm
dW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRD
aGFuZ2UoZXhlYywgaW1wKTtcblxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKGNhc3RlZFRoaXNPYmotPmNv
bnRleHQoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
ICAgIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKS0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7XG4i
KTsKICAgICAgICAgfQpAQCAtMTI3Nyw3ICsxMjYzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb25GdW5jdGlvbkNhbGwoKQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikgaWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9OwogCiAgICAgICAgIGlmICgkcG9kVHlwZSkgewotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBlci0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7
XG5cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAid3JhcHBl
ci0+Y29tbWl0Q2hhbmdlKGV4ZWMsIGltcCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gImlmIChjYXN0ZWRUaGlzT2JqLT5jb250ZXh0KCkpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBjYXN0ZWRUaGlzT2Jq
LT5jb250ZXh0KCktPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpO1xuIik7CiAgICAgICAgIH0KQEAg
LTE0NjEsNyArMTQ0Nyw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgJGdldHRlciA9
fiBzL2ltcC0+Ly87CiAgICAgICAgICRnZXR0ZXIgPX4gcy9cKFwpLy87CiAKLSAgICAgICAgbXkg
JHNldHRlciA9ICJzZXQiIC4gV0tfdWNmaXJzdCgkZ2V0dGVyKTsKKyAgICAgICAgbXkgJHNldHRl
ciA9ICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGdldHRlcik7CiAKICAgICAg
ICAgaWYgKCRpbXBsQ2xhc3NOYW1lRm9yVmFsdWVDb252ZXJzaW9uIGVxICIiKSB7CiAgICAgICAg
ICAgICBpZiAoSXNTVkdUeXBlTmVlZGluZ0NvbnRleHRQYXJhbWV0ZXIoJGltcGxDbGFzc05hbWUp
KSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpD
LnBtCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yT2JqQy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjAzLDE2ICsyMDMsNiBAQCBzdWIgZmlu
aXNoCiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwogfQogCi0jIFVwcGVyY2FzZSB0aGUgZmlyc3Qg
bGV0dGVyLCB3aGlsZSByZXNwZWN0aW5nIFdlYktpdCBzdHlsZSBndWlkZWxpbmVzLiAKLSMgRS5n
LiwgeG1sRW5jb2RpbmcgYmVjb21lcyBYTUxFbmNvZGluZywgYnV0IHhtbGxhbmcgYmVjb21lcyBY
bWxsYW5nLgotc3ViIFdLX3VjZmlyc3QKLXsKLSAgICBteSAkcGFyYW0gPSBzaGlmdDsKLSAgICBt
eSAkcmV0ID0gdWNmaXJzdCgkcGFyYW0pOwotICAgICRyZXQgPX4gcy9YbWwvWE1MLyBpZiAkcmV0
ID1+IC9eWG1sW15hLXpdLzsKLSAgICByZXR1cm4gJHJldDsKLX0KLQogc3ViIFJlYWRQdWJsaWNJ
bnRlcmZhY2VzCiB7CiAgICAgbXkgJGNsYXNzID0gc2hpZnQ7CkBAIC0xMDY1LDcgKzEwNTUsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgIyAtIEdFVFRFUgogICAg
ICAgICAgICAgbXkgJGdldHRlclNpZyA9ICItICgkYXR0cmlidXRlVHlwZSkkYXR0cmlidXRlSW50
ZXJmYWNlTmFtZVxuIjsKICAgICAgICAgICAgIG15ICRoYXNHZXR0ZXJFeGNlcHRpb24gPSBAeyRh
dHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9OwotICAgICAgICAgICAgbXkgJGdldHRlckNvbnRl
bnRIZWFkID0gIklNUEwtPiRhdHRyaWJ1dGVOYW1lKCI7CisgICAgICAgICAgICBteSAkZ2V0dGVy
Q29udGVudEhlYWQgPSAiSU1QTC0+IiAuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRy
aWJ1dGVOYW1lKSAuICIoIjsKICAgICAgICAgICAgIG15ICRnZXR0ZXJDb250ZW50VGFpbCA9ICIp
IjsKIAogICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIERPTVNWR051bWJlcgpAQCAtMTE2
Myw3ICsxMTUzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAjIEV4Y2VwdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgICAgIG15ICRoYXNTZXR0ZXJFeGNl
cHRpb24gPSBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogCi0gICAgICAgICAgICAg
ICAgJGF0dHJpYnV0ZU5hbWUgPSAic2V0IiAuIFdLX3VjZmlyc3QoJGF0dHJpYnV0ZU5hbWUpOwor
ICAgICAgICAgICAgICAgICRhdHRyaWJ1dGVOYW1lID0gInNldCIgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlck5h
bWUgPSAic2V0IiAuIHVjZmlyc3QoJGF0dHJpYnV0ZUludGVyZmFjZU5hbWUpOwogICAgICAgICAg
ICAgICAgIG15ICRhcmdOYW1lID0gIm5ldyIgLiB1Y2ZpcnN0KCRhdHRyaWJ1dGVJbnRlcmZhY2VO
YW1lKTsKICAgICAgICAgICAgICAgICBteSAkYXJnID0gR2V0T2JqQ1R5cGVHZXR0ZXIoJGFyZ05h
bWUsICRpZGxUeXBlKTsKQEAgLTEyOTUsNyArMTI4NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBteSAkc3ZnTWF0cml4SW52ZXJzZSA9ICgkcG9kVHlwZSBhbmQg
JHBvZFR5cGUgZXEgIkFmZmluZVRyYW5zZm9ybSIgYW5kICRmdW5jdGlvbk5hbWUgZXEgImludmVy
c2UiKTsKIAogICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVyTmFtZXMsICJlYyIpIGlmICRyYWlz
ZXNFeGNlcHRpb25zIGFuZCAhKCRzdmdNYXRyaXhSb3RhdGVGcm9tVmVjdG9yIHx8ICRzdmdNYXRy
aXhJbnZlcnNlKTsKLSAgICAgICAgICAgIG15ICRjb250ZW50ID0gJGNhbGxlciAuICItPiIgLiAk
ZnVuY3Rpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVyTmFtZXMpIC4gIikiOyAK
KyAgICAgICAgICAgIG15ICRjb250ZW50ID0gJGNhbGxlciAuICItPiIgLiAkY29kZUdlbmVyYXRv
ci0+V0tfbGNmaXJzdCgkZnVuY3Rpb25OYW1lKSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRl
ck5hbWVzKSAuICIpIjsgCiAKICAgICAgICAgICAgIGlmICgkc3ZnTWF0cml4Um90YXRlRnJvbVZl
Y3RvcikgewogICAgICAgICAgICAgICAgICMgU3BlY2lhbCBjYXNlIHdpdGggcm90YXRlRnJvbVZl
Y3RvciAmIFNWR01hdHJpeCAgICAgICAgCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAkocmV2aXNp
b24gMjg2MDIpCisrKyBXZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENTU0ltcG9ydFJ1bGU6Omluc2VydGVkSW50b1BhcmVu
dCgpCiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7
CiAgICAgaWYgKCFwYXJlbnRTaGVldC0+aHJlZigpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2Ug
cGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9
IEtVUkwocGFyZW50U2hlZXQtPmhyZWYoKS5kZXByZWNhdGVkU3RyaW5nKCksIG1fc3RySHJlZi5k
ZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpOworICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRT
aGVldC0+aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgbV9zdHJIcmVmLmRlcHJlY2F0ZWRTdHJp
bmcoKSkuc3RyaW5nKCk7CiAKICAgICAvLyBDaGVjayBmb3IgYSBjeWNsZSBpbiBvdXIgaW1wb3J0
IGNoYWluLiAgSWYgd2UgZW5jb3VudGVyIGEgc3R5bGVzaGVldAogICAgIC8vIGluIG91ciBwYXJl
bnQgY2hhaW4gd2l0aCB0aGUgc2FtZSBVUkwsIHRoZW4ganVzdCBiYWlsLgpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgyMSw3ICs4MjEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBiCiAjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NDdXJzb3JJbWFnZVZh
bHVlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVF
bGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB1cmkuZGVwcmVjYXRlZFN0cmlu
ZygpKS51cmwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJMKHN0eWxl
RWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJp
bmcoKSkuc3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3RzcG90
LCBzdHlsZUVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC04
ODQsNyArODg0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgog
ICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJMKGRvbVN0cmluZyh2YWx1ZS0+c3RyaW5n
KSk7CiAgICAgICAgICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IG5ldyBDU1NJbWFnZVZhbHVlKAotICAgICAgICAgICAgICAgICAgICBTdHJp
bmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5k
ZXByZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICAgICAgICAgICAgICAgICAgS1VSTChzdHls
ZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3Ry
aW5nKCkpLnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQpOwogICAg
ICAgICAgICAgICAgIHZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgfQpAQCAtMTg0OSw3
ICsxODQ5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29udGVudChpbnQgcHJvcElkLAogICAg
ICAgICAgICAgLy8gdXJsCiAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVVSTChkb21T
dHJpbmcodmFsLT5zdHJpbmcpKTsKICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gbmV3IENTU0lt
YWdlVmFsdWUoCi0gICAgICAgICAgICAgICAgU3RyaW5nKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNl
VVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpLnVybCgp
KSwgc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBLVVJMKHN0eWxlRWxlbWVudC0+YmFz
ZVVSTCgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJp
bmcoKSwgc3R5bGVFbGVtZW50KTsKICAgICAgICAgfSBlbHNlIGlmICh2YWwtPnVuaXQgPT0gVmFs
dWU6OkZ1bmN0aW9uKSB7CiAgICAgICAgICAgICAvLyBhdHRyKFgpIHwgY291bnRlcihYIFssWV0p
IHwgY291bnRlcnMoWCwgWSwgWyxaXSkKICAgICAgICAgICAgIFZhbHVlTGlzdCAqYXJncyA9IHZh
bC0+ZnVuY3Rpb24tPmFyZ3M7CkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VCYWNrZ3JvdW5kSW1hZ2UoQ1NTCiAgICAgaWYgKHZhbHVlTGlzdC0+Y3VycmVudCgpLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7CiAgICAgICAgIFN0cmluZyB1cmkg
PSBwYXJzZVVSTChkb21TdHJpbmcodmFsdWVMaXN0LT5jdXJyZW50KCktPnN0cmluZykpOwogICAg
ICAgICBpZiAoIXVyaS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2YWx1ZSA9IG5ldyBDU1NJbWFn
ZVZhbHVlKFN0cmluZyhLVVJMKHN0eWxlRWxlbWVudC0+YmFzZVVSTCgpLmRlcHJlY2F0ZWRTdHJp
bmcoKSwgdXJpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCAKKyAgICAgICAgICAgIHZhbHVl
ID0gbmV3IENTU0ltYWdlVmFsdWUoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNh
dGVkU3RyaW5nKCksIHVyaS5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNzYxLDcgKzI3NjEsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VGb250RmFjZVNyYygpCiAgICAgICAgIHBhcnNlZFZhbHVlID0gMDsKICAgICAgICAgaWYg
KHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiAhZXhwZWN0Q29tbWEp
IHsKICAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVVJMKGRvbVN0cmluZyh2YWwtPnN0
cmluZykpOwotICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBuZXcgQ1NTRm9udEZhY2VTcmNWYWx1
ZShTdHJpbmcoS1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCks
IHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCkpLCBmYWxzZSk7CisgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IG5ldyBDU1NGb250RmFjZVNyY1ZhbHVlKEtVUkwoc3R5bGVFbGVtZW50LT5i
YXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygpLCB2YWx1ZS5kZXByZWNhdGVkU3RyaW5nKCkpLnN0
cmluZygpLCBmYWxzZSk7CiAgICAgICAgICAgICB1cmlWYWx1ZSA9IHBhcnNlZFZhbHVlOwogICAg
ICAgICAgICAgYWxsb3dGb3JtYXQgPSB0cnVlOwogICAgICAgICAgICAgZXhwZWN0Q29tbWEgPSB0
cnVlOwpAQCAtMzIxNiw3ICszMjE2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1h
Z2UoaW50IHBybwogICAgIGlmICh1cmkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgY29udGV4dC5jb21taXRJbWFnZShuZXcgQ1NTSW1hZ2VWYWx1ZShTdHJpbmco
S1VSTChzdHlsZUVsZW1lbnQtPmJhc2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHVyaS5kZXBy
ZWNhdGVkU3RyaW5nKCkpLnVybCgpKSwKKyAgICBjb250ZXh0LmNvbW1pdEltYWdlKG5ldyBDU1NJ
bWFnZVZhbHVlKEtVUkwoc3R5bGVFbGVtZW50LT5iYXNlVVJMKCkuZGVwcmVjYXRlZFN0cmluZygp
LCB1cmkuZGVwcmVjYXRlZFN0cmluZygpKS5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUVsZW1lbnQpKTsK
ICAgICB3aGlsZSAoKHZhbCA9IHZhbHVlTGlzdC0+bmV4dCgpKSkgewogICAgICAgICBpZiAoY29u
dGV4dC5hbGxvd051bWJlcigpICYmIHZhbGlkVW5pdCh2YWwsIEZJbnRlZ2VyfEZOb25OZWd8RlBl
cmNlbnQsIHRydWUpKSB7CkBAIC0zNzc4LDcgKzM3NzgsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZUNoYXJzZXRSdWxlKGNvCiAgICAgcmV0dXJuIHJ1bGU7CiB9CiAKLUNTU1J1bGUqIENT
U1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBQYXJzZVN0cmluZyYgVVJMLCBNZWRpYUxp
c3QqIG1lZGlhKQorQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKGNvbnN0IFBh
cnNlU3RyaW5nJiB1cmwsIE1lZGlhTGlzdCogbWVkaWEpCiB7CiAgICAgaWYgKCFtZWRpYSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0zNzg2LDcgKzM3ODYsNyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6
OmNyZWF0ZUltcG9ydFJ1bGUoY29uCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghc3R5bGVF
bGVtZW50LT5pc0NTU1N0eWxlU2hlZXQoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgQ1NTSW1w
b3J0UnVsZSogcnVsZSA9IG5ldyBDU1NJbXBvcnRSdWxlKHN0eWxlRWxlbWVudCwgZG9tU3RyaW5n
KFVSTCksIG1lZGlhKTsKKyAgICBDU1NJbXBvcnRSdWxlKiBydWxlID0gbmV3IENTU0ltcG9ydFJ1
bGUoc3R5bGVFbGVtZW50LCBkb21TdHJpbmcodXJsKSwgbWVkaWEpOwogICAgIG1fcGFyc2VkU3R5
bGVPYmplY3RzLmFwcGVuZChydWxlKTsKICAgICByZXR1cm4gcnVsZTsKIH0KSW5kZXg6IFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVkVVJMKGNvbgogCiAgICAgdS5zZXRRdWVyeShEZXBy
ZWNhdGVkU3RyaW5nOjpudWxsKTsKICAgICB1LnNldFJlZihEZXByZWNhdGVkU3RyaW5nOjpudWxs
KTsKLSAgICBlbmNvZGVkdXJsLmZpbGUgPSB1LnVybCgpOworICAgIGVuY29kZWR1cmwuZmlsZSA9
IHUuZGVwcmVjYXRlZFN0cmluZygpOwogICAgIGludCBwb3MgPSBlbmNvZGVkdXJsLmZpbGUuZmlu
ZFJldignLycpOwogICAgIGVuY29kZWR1cmwucGF0aCA9IGVuY29kZWR1cmwuZmlsZTsKICAgICBp
ZiAocG9zID4gMCkgewpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
c2V0RW5jb2RlZFVSTChjb24KICAgICAgICAgZW5jb2RlZHVybC5wYXRoICs9ICcvJzsKICAgICB9
CiAgICAgdS5zZXRQYXRoKERlcHJlY2F0ZWRTdHJpbmc6Om51bGwpOwotICAgIGVuY29kZWR1cmwu
aG9zdCA9IHUudXJsKCk7CisgICAgZW5jb2RlZHVybC5ob3N0ID0gdS5kZXByZWNhdGVkU3RyaW5n
KCk7CiB9CiAKIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9yKCkKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0
cEVxdWl2KGNvbnN0IFN0CiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGlmIChmcmFtZSAm
JiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwpKSB7CiAgICAgICAg
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwgPSBmcmFtZS0+bG9h
ZGVyKCktPnVybCgpLnVybCgpOworICAgICAgICAgICAgICAgIHVybCA9IGZyYW1lLT5sb2FkZXIo
KS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdXJs
ID0gY29tcGxldGVVUkwodXJsKTsKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1
bGVIVFRQUmVkaXJlY3Rpb24oZGVsYXksIHVybCk7CkBAIC0yNTk0LDEyICsyNTk0LDEyIEBAIEVs
ZW1lbnQqIERvY3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdAogCiBTdHJpbmcgRG9jdW1lbnQ6
OmNvb2tpZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoVVJMKCkpOworICAgIHJldHVy
biBjb29raWVzKHVybCgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0Q29va2llKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgc2V0Q29va2llcyhVUkwoKSwgcG9saWN5QmFzZVVSTCgpLmRl
cHJlY2F0ZWRTdHJpbmcoKSwgdmFsdWUpOworICAgIHNldENvb2tpZXModXJsKCksIHBvbGljeUJh
c2VVUkwoKS5kZXByZWNhdGVkU3RyaW5nKCksIHZhbHVlKTsKIH0KIAogU3RyaW5nIERvY3VtZW50
OjpyZWZlcnJlcigpIGNvbnN0CkBAIC0yNjEyLDcgKzI2MTIsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6
OnJlZmVycmVyKCkgY29uc3QKIFN0cmluZyBEb2N1bWVudDo6ZG9tYWluKCkgY29uc3QKIHsKICAg
ICBpZiAobV9kb21haW4uaXNFbXB0eSgpKSAvLyBub3Qgc2V0IHlldCAod2Ugc2V0IGl0IG9uIGRl
bWFuZCB0byBzYXZlIHRpbWUgYW5kIHNwYWNlKQotICAgICAgICBtX2RvbWFpbiA9IEtVUkwoVVJM
KCkpLmhvc3QoKTsgLy8gSW5pdGlhbGx5IHNldCB0byB0aGUgaG9zdAorICAgICAgICBtX2RvbWFp
biA9IEtVUkwodXJsKCkpLmhvc3QoKTsgLy8gSW5pdGlhbGx5IHNldCB0byB0aGUgaG9zdAogICAg
IHJldHVybiBtX2RvbWFpbjsKIH0KIApAQCAtMjYyMSw3ICsyNjIxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0RG9tYWluKGNvbnN0IFN0cmluZyYgbgogICAgIC8vIE5vdCBzZXQgeWV0ICh3ZSBzZXQg
aXQgb24gZGVtYW5kIHRvIHNhdmUgdGltZSBhbmQgc3BhY2UpCiAgICAgLy8gSW5pdGlhbGx5IHNl
dCB0byB0aGUgaG9zdAogICAgIGlmIChtX2RvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIG1fZG9t
YWluID0gS1VSTChVUkwoKSkuaG9zdCgpOworICAgICAgICBtX2RvbWFpbiA9IEtVUkwodXJsKCkp
Lmhvc3QoKTsKIAogICAgIC8vIEJvdGggTlMgYW5kIElFIHNwZWNpZnkgdGhhdCBjaGFuZ2luZyB0
aGUgZG9tYWluIGlzIG9ubHkgYWxsb3dlZCB3aGVuCiAgICAgLy8gdGhlIG5ldyBkb21haW4gaXMg
YSBzdWZmaXggb2YgdGhlIG9sZCBkb21haW4uCkBAIC0yNzY4LDEyICsyNzY4LDEyIEBAIHZvaWQg
RG9jdW1lbnQ6OnJlbW92ZUltYWdlTWFwKEhUTUxNYXBFbGUKICAgICAgICAgbV9pbWFnZU1hcHNC
eU5hbWUucmVtb3ZlKGl0KTsKIH0KIAotSFRNTE1hcEVsZW1lbnQgKkRvY3VtZW50OjpnZXRJbWFn
ZU1hcChjb25zdCBTdHJpbmcmIFVSTCkgY29uc3QKK0hUTUxNYXBFbGVtZW50ICpEb2N1bWVudDo6
Z2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7Ci0gICAgaWYgKFVSTC5pc051
bGwoKSkKKyAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpbnQg
aGFzaFBvcyA9IFVSTC5maW5kKCcjJyk7Ci0gICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA8IDAg
PyBVUkwgOiBVUkwuc3Vic3RyaW5nKGhhc2hQb3MgKyAxKSkuaW1wbCgpOworICAgIGludCBoYXNo
UG9zID0gdXJsLmZpbmQoJyMnKTsKKyAgICBTdHJpbmcgbmFtZSA9IChoYXNoUG9zIDwgMCA/IHVy
bCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7CiAgICAgQXRvbWljU3RyaW5n
IG1hcE5hbWUgPSBoTW9kZSA9PSBYSHRtbCA/IG5hbWUgOiBuYW1lLmxvd2VyKCk7CiAgICAgcmV0
dXJuIG1faW1hZ2VNYXBzQnlOYW1lLmdldChtYXBOYW1lLmltcGwoKSk7CiB9CkBAIC0yNzkwLDI2
ICsyNzkwLDI2IEBAIFVDaGFyIERvY3VtZW50OjpiYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm8KICAg
ICByZXR1cm4gbV9kZWNvZGVyLT5lbmNvZGluZygpLmJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2wo
KTsKIH0KIAotRGVwcmVjYXRlZFN0cmluZyBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgRGVw
cmVjYXRlZFN0cmluZyYgVVJMKQorRGVwcmVjYXRlZFN0cmluZyBEb2N1bWVudDo6Y29tcGxldGVV
UkwoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgdXJsKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHRy
ZWF0cyBudWxsIFVSTHMgdGhlIHNhbWUgYXMgZW1wdHkgVVJMcywgdW5saWtlIHRoZSBTdHJpbmcg
ZnVuY3Rpb24gYmVsb3cuCiAKICAgICAvLyBJZiBib3RoIHRoZSBVUkwgYW5kIGJhc2UgVVJMIGFy
ZSBlbXB0eSwgbGlrZSB0aGV5IGFyZSBmb3IgZG9jdW1lbnRzCiAgICAgLy8gY3JlYXRlZCB1c2lu
ZyBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQsIGp1c3QgcmV0dXJuIHRoZSBwYXNz
ZWQgaW4gVVJMLgotICAgIC8vIChXZSBkbyB0aGlzIGJlY2F1c2UgVVJMKCkgcmV0dXJucyAiYWJv
dXQ6YmxhbmsiIGZvciBlbXB0eSBVUkxzLgorICAgIC8vIChXZSBkbyB0aGlzIGJlY2F1c2UgdXJs
KCkgcmV0dXJucyAiYWJvdXQ6YmxhbmsiIGZvciBlbXB0eSBVUkxzLgogICAgIGlmIChtX3VybC5p
c0VtcHR5KCkgJiYgbV9iYXNlVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFVSTDsKKyAg
ICAgICAgcmV0dXJuIHVybDsKICAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIEtV
UkwoYmFzZVVSTCgpLCBVUkwpLnVybCgpOwotICAgIHJldHVybiBLVVJMKGJhc2VVUkwoKSwgVVJM
LCBtX2RlY29kZXItPmVuY29kaW5nKCkpLnVybCgpOworICAgICAgICByZXR1cm4gS1VSTChiYXNl
VVJMKCksIHVybCkuZGVwcmVjYXRlZFN0cmluZygpOworICAgIHJldHVybiBLVVJMKGJhc2VVUkwo
KSwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKIH0KIAot
U3RyaW5nIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcgJlVSTCkKK1N0cmluZyBE
b2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgYWx3YXlzIHJldHVybnMgbnVsbCB3aGVuIHBhc3NlZCBhIG51bGwgVVJMLCB1bmxpa2Ug
dGhlIFN0cmluZyBmdW5jdGlvbiBhYm92ZS4KLSAgICBpZiAoVVJMLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gVVJMOwotICAgIHJldHVybiBjb21wbGV0ZVVSTChVUkwuZGVwcmVjYXRlZFN0cmlu
ZygpKTsKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdXJsOworICAgIHJl
dHVybiBjb21wbGV0ZVVSTCh1cmwuZGVwcmVjYXRlZFN0cmluZygpKTsKIH0KIAogYm9vbCBEb2N1
bWVudDo6aW5QYWdlQ2FjaGUoKQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2MiwxMCArMzYyLDEwIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VsbEZvcm1l
ZDsgfQogCi0gICAgRGVwcmVjYXRlZFN0cmluZyBVUkwoKSBjb25zdCB7IHJldHVybiBtX3VybC5p
c0VtcHR5KCkgPyAiYWJvdXQ6YmxhbmsiIDogbV91cmw7IH0KKyAgICBEZXByZWNhdGVkU3RyaW5n
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/ICJhYm91dDpibGFuayIgOiBt
X3VybDsgfQogICAgIHZvaWQgc2V0VVJMKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHVybCk7CiAK
LSAgICBEZXByZWNhdGVkU3RyaW5nIGJhc2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkwu
aXNFbXB0eSgpID8gVVJMKCkgOiBtX2Jhc2VVUkw7IH0KKyAgICBEZXByZWNhdGVkU3RyaW5nIGJh
c2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkwuaXNFbXB0eSgpID8gdXJsKCkgOiBtX2Jh
c2VVUkw7IH0KICAgICB2b2lkIHNldEJhc2VVUkwoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgYmFz
ZVVSTCk7CiAKICAgICBTdHJpbmcgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVRh
cmdldDsgfQpAQCAtNTc4LDcgKzU3OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkSW1hZ2VN
YXAoSFRNTE1hcEVsZW1lbnQqKTsKICAgICB2b2lkIHJlbW92ZUltYWdlTWFwKEhUTUxNYXBFbGVt
ZW50Kik7Ci0gICAgSFRNTE1hcEVsZW1lbnQqIGdldEltYWdlTWFwKGNvbnN0IFN0cmluZyYgVVJM
KSBjb25zdDsKKyAgICBIVE1MTWFwRWxlbWVudCogZ2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0OwogCiAgICAgSFRNTEVsZW1lbnQqIGJvZHkoKTsKICAgICB2b2lkIHNldEJvZHko
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKSW5kZXg6IFdlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NjMsMTMgKzU2MywxMyBAQCBTdHJpbmcgRWxlbWVudDo6YmFzZVVSSSgpIGNvbnN0CiAg
ICAgS1VSTCB4bWxiYXNlKGdldEF0dHJpYnV0ZShiYXNlQXR0cikuZGVwcmVjYXRlZFN0cmluZygp
KTsKIAogICAgIGlmICgheG1sYmFzZS5wcm90b2NvbCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHhtbGJhc2UudXJsKCk7CisgICAgICAgIHJldHVybiB4bWxiYXNlLnN0cmluZygpOwogCiAg
ICAgTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOwogICAgIGlmIChwYXJlbnQpCi0gICAgICAg
IHJldHVybiBLVVJMKHBhcmVudC0+YmFzZVVSSSgpLmRlcHJlY2F0ZWRTdHJpbmcoKSwgeG1sYmFz
ZS51cmwoKSkudXJsKCk7CisgICAgICAgIHJldHVybiBLVVJMKHBhcmVudC0+YmFzZVVSSSgpLmRl
cHJlY2F0ZWRTdHJpbmcoKSwgeG1sYmFzZS5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpOwog
Ci0gICAgcmV0dXJuIHhtbGJhc2UudXJsKCk7CisgICAgcmV0dXJuIHhtbGJhc2Uuc3RyaW5nKCk7
CiB9CiAKIE5vZGUqIEVsZW1lbnQ6Omluc2VydEFkamFjZW50RWxlbWVudChjb25zdCBTdHJpbmcm
IHdoZXJlLCBOb2RlKiBuZXdDaGlsZCwgaW50JiBleGNlcHRpb24pCkluZGV4OiBXZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGxvY2FsSHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9
CiAgICAgU3R5bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9
CiAgICAgYm9vbCBjaGVja1N0eWxlU2hlZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBT
dHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBTdHJpbmcmIHNoZWV0KTsK
ICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwog
I2VuZGlmCiAgICAgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKICAgICBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI4NjAyKQorKysgV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5MywxMCArMjkzLDEwIEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTU3RyaW5nUHJv
cGVydHkKICAgICBhdHRyLT5kZWNsKCktPnNldFN0cmluZ1Byb3BlcnR5KGlkLCB2YWx1ZSwgdHlw
ZSwgZmFsc2UpOwogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZENTU0ltYWdlUHJvcGVydHko
TWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAmVVJMKQordm9pZCBT
dHlsZWRFbGVtZW50OjphZGRDU1NJbWFnZVByb3BlcnR5KE1hcHBlZEF0dHJpYnV0ZSogYXR0ciwg
aW50IGlkLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWF0dHItPmRlY2woKSkgY3Jl
YXRlTWFwcGVkRGVjbChhdHRyKTsKLSAgICBhdHRyLT5kZWNsKCktPnNldEltYWdlUHJvcGVydHko
aWQsIFVSTCwgZmFsc2UpOworICAgIGF0dHItPmRlY2woKS0+c2V0SW1hZ2VQcm9wZXJ0eShpZCwg
dXJsLCBmYWxzZSk7CiB9CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkQ1NTTGVuZ3RoKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0ciwgaW50IGlkLCBjb25zdCBTdHJpbmcgJnZhbHVlKQpJbmRleDogV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRk
Q1NTUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNvbnN0IFN0cmluZyAm
dmFsdWUpOwogICAgIHZvaWQgYWRkQ1NTUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBp
bnQgaWQsIGludCB2YWx1ZSk7CiAgICAgdm9pZCBhZGRDU1NTdHJpbmdQcm9wZXJ0eShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIsIGludCBpZCwgY29uc3QgU3RyaW5nICZ2YWx1ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKLSAgICB2
b2lkIGFkZENTU0ltYWdlUHJvcGVydHkoTWFwcGVkQXR0cmlidXRlKiBhdHRyLCBpbnQgaWQsIGNv
bnN0IFN0cmluZyAmVVJMKTsKKyAgICB2b2lkIGFkZENTU0ltYWdlUHJvcGVydHkoTWFwcGVkQXR0
cmlidXRlKiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGFk
ZENTU0NvbG9yKE1hcHBlZEF0dHJpYnV0ZSogYXR0ciwgaW50IGlkLCBjb25zdCBTdHJpbmcgJmMp
OwogICAgIHZvaWQgY3JlYXRlTWFwcGVkRGVjbChNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOwogICAg
IApJbmRleDogV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvZG9t
L1hNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lk
IFhNTFRva2VuaXplcjo6ZW5kRWxlbWVudE5zKCkKICAgICAgICAgICAgICAgICBpZiAoY2hpbGQt
PmlzVGV4dE5vZGUoKSB8fCBjaGlsZC0+bm9kZVR5cGUoKSA9PSBOb2RlOjpDREFUQV9TRUNUSU9O
X05PREUpCiAgICAgICAgICAgICAgICAgICAgIHNjcmlwdENvZGUgKz0gc3RhdGljX2Nhc3Q8Q2hh
cmFjdGVyRGF0YSo+KGNoaWxkKS0+ZGF0YSgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV92aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChtX2RvYy0+VVJMKCksIG1f
c2NyaXB0U3RhcnRMaW5lIC0gMSwgc2NyaXB0Q29kZSk7CisgICAgICAgICAgICBtX3ZpZXctPmZy
YW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KG1fZG9jLT51cmwoKSwgbV9zY3JpcHRTdGFy
dExpbmUgLSAxLCBzY3JpcHRDb2RlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9y
ZXF1ZXN0aW5nU2NyaXB0ID0gZmFsc2U7CkBAIC0xMjc0LDcgKzEyNzQsNyBAQCB2b2lkIFhNTFRv
a2VuaXplcjo6ZW5kKCkKIHsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9zYXdYU0xUcmFu
c2Zvcm0pIHsKLSAgICAgICAgbV9kb2MtPnNldFRyYW5zZm9ybVNvdXJjZSh4bWxEb2NQdHJGb3JT
dHJpbmcobV9kb2MtPmRvY0xvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLCBt
X2RvYy0+VVJMKCkpKTsKKyAgICAgICAgbV9kb2MtPnNldFRyYW5zZm9ybVNvdXJjZSh4bWxEb2NQ
dHJGb3JTdHJpbmcobV9kb2MtPmRvY0xvYWRlcigpLCBtX29yaWdpbmFsU291cmNlRm9yVHJhbnNm
b3JtLCBtX2RvYy0+dXJsKCkpKTsKICAgICAgICAgCiAgICAgICAgIG1fZG9jLT5zZXRQYXJzaW5n
KGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jIHRoaW5rIGl0J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBs
eSB4c2wgc2hlZXRzLgogICAgICAgICBtX2RvYy0+dXBkYXRlU3R5bGVTZWxlY3RvcigpOwpAQCAt
MTkxNyw3ICsxOTE3LDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnBhcnNlRW5kRWxlbWVudCgpCiAg
ICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5pc1RleHROb2RlKCkgfHwgY2hpbGQtPm5vZGVUeXBl
KCkgPT0gTm9kZTo6Q0RBVEFfU0VDVElPTl9OT0RFKQogICAgICAgICAgICAgICAgICAgICBzY3Jp
cHRDb2RlICs9IHN0YXRpY19jYXN0PENoYXJhY3RlckRhdGEqPihjaGlsZCktPmRhdGEoKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9hZGVyKCktPmV4ZWN1
dGVTY3JpcHQobV9kb2MtPlVSTCgpLCBtX3NjcmlwdFN0YXJ0TGluZSAtIDEsIHNjcmlwdENvZGUp
OworICAgICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdCht
X2RvYy0+dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lIC0gMSwgc2NyaXB0Q29kZSk7CiAgICAgICAg
IH0KICAgICAgICAgbV9yZXF1ZXN0aW5nU2NyaXB0ID0gZmFsc2U7CiAgICAgfQpJbmRleDogV2Vi
Q29yZS9kb20vWE1MVG9rZW5pemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vWE1MVG9r
ZW5pemVyLmgJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgfTsKIAogI2lmIEVOQUJMRShYU0xUKQotdm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKERvY0xv
YWRlciosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiBVUkwp
Owordm9pZCogeG1sRG9jUHRyRm9yU3RyaW5nKERvY0xvYWRlciosIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBEZXByZWNhdGVkU3RyaW5nJiB1cmwpOwogdm9pZCBzZXRMb2FkZXJGb3JMaWJY
TUxDYWxsYmFja3MoRG9jTG9hZGVyKik7CiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJl
dmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHZvaWQgRWRpdG9yOjpjb3B5KCkKICAgICAKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmIChOb2RlKiBu
b2RlID0gaW1hZ2VOb2RlRnJvbUltYWdlRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBQYXN0
ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZUltYWdlKG5vZGUsIGRvY3VtZW50LT5V
UkwoKSwgZG9jdW1lbnQtPnRpdGxlKCkpOworICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFz
dGVib2FyZCgpLT53cml0ZUltYWdlKG5vZGUsIGRvY3VtZW50LT51cmwoKSwgZG9jdW1lbnQtPnRp
dGxlKCkpOwogICAgIGVsc2UKICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQo
KS0+d3JpdGVTZWxlY3Rpb24oc2VsZWN0ZWRSYW5nZSgpLmdldCgpLCBjYW5TbWFydENvcHlPckRl
bGV0ZSgpLCBtX2ZyYW1lKTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAyODYw
MikKKysrIFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEs
NyArNTUxLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKE5vZGUqIG5vZGUsIGNvbgogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ICAgICAgICAgQXR0cmlidXRlKiBhdHRyID0gYXR0cnMtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGUtPmlzVVJMQXR0cmlidXRlKGF0dHIpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cmluZyBjb21wbGV0ZWRVUkwgPSBLVVJMKGJhc2VVUkxBc0tVUkwsIGF0dHItPnZh
bHVlKCkuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbXBsZXRlZFVSTCA9IEtVUkwoYmFzZVVSTEFzS1VSTCwgYXR0ci0+dmFsdWUoKS5kZXBy
ZWNhdGVkU3RyaW5nKCkpLnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFw
cGVuZChBdHRyaWJ1dGVDaGFuZ2UoZSwgYXR0ci0+bmFtZSgpLCBjb21wbGV0ZWRVUkwpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkluZGV4OiBXZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmgJKHJl
dmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQogICAgIE5vZGUqIG1vdXNlUHJlc3NOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzTm9kZS5nZXQoKTsgfQotICAgIGNvbnN0IEtV
UkwmIFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9CisgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV9VUkw7IH0KICAgICB2b2lkIHJlc3RvcmUoUGFnZSopOwogICAgIAog
ICAgIHZvaWQgY2xvc2UoKTsKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24g
Mjg2MDIpCisrKyBXZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw4ICs3NCw4IEBAIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcm
IHUKIH0KIAogSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKLSAgICA6IG1fdXJsU3RyaW5nKHVybC51cmwoKSkKLSAgICAsIG1fb3Jp
Z2luYWxVUkxTdHJpbmcodXJsLnVybCgpKQorICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygp
KQorICAgICwgbV9vcmlnaW5hbFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RpdGxl
KHRpdGxlKQogICAgICwgbV9sYXN0VmlzaXRlZFRpbWUoMCkKICAgICAsIG1faXNJblBhZ2VDYWNo
ZShmYWxzZSkKQEAgLTg2LDggKzg2LDggQEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0
IEtVUkwmIHVybAogfQogCiBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpCi0gICAgOiBtX3VybFN0cmluZyh1cmwudXJsKCkpCi0gICAgLCBtX29yaWdpbmFs
VVJMU3RyaW5nKHVybC51cmwoKSkKKyAgICA6IG1fdXJsU3RyaW5nKHVybC5zdHJpbmcoKSkKKyAg
ICAsIG1fb3JpZ2luYWxVUkxTdHJpbmcodXJsLnN0cmluZygpKQogICAgICwgbV90YXJnZXQodGFy
Z2V0KQogICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV90aXRsZSh0aXRsZSkKQEAgLTIw
OSw3ICsyMDksNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyCiB2
b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQogewogICAgIHBhZ2VDYWNo
ZSgpLT5yZW1vdmUodGhpcyk7Ci0gICAgc2V0VVJMU3RyaW5nKHVybC51cmwoKSk7CisgICAgc2V0
VVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgY2xlYXJEb2N1bWVudFN0YXRlKCk7CiB9CiAK
QEAgLTM4OCw3ICszODgsNyBAQCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKIGJv
b2wgSGlzdG9yeUl0ZW06OmlzQ3VycmVudERvY3VtZW50KERvY3VtZW50KiBkb2MpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBmaW5kIGEgYmV0dGVyIHdheSB0byBjaGVjayBpZiB0
aGlzIGlzIHRoZSBjdXJyZW50IGRvY3VtZW50LgotICAgIHJldHVybiB1cmxTdHJpbmcoKSA9PSBk
b2MtPlVSTCgpOworICAgIHJldHVybiB1cmxTdHJpbmcoKSA9PSBkb2MtPnVybCgpOwogfQogCiB2
b2lkIEhpc3RvcnlJdGVtOjptZXJnZUF1dG9Db21wbGV0ZUhpbnRzKEhpc3RvcnlJdGVtKiBvdGhl
ckl0ZW0pCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjg2MDIpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzks
NyArNzksNyBAQCB2b2lkIEhUTUxCYXNlRWxlbWVudDo6cHJvY2VzcygpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9ocmVmLmlzRW1wdHkoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRCYXNlVVJMKEtVUkwoZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
bG9hZGVyKCktPnVybCgpLCBtX2hyZWYuZGVwcmVjYXRlZFN0cmluZygpKS51cmwoKSk7CisgICAg
ICAgIGRvY3VtZW50KCktPnNldEJhc2VVUkwoS1VSTChkb2N1bWVudCgpLT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+dXJsKCksIG1faHJlZi5kZXByZWNhdGVkU3RyaW5nKCkpLmRlcHJlY2F0ZWRTdHJpbmco
KSk7CiAKICAgICBpZiAoIW1fdGFyZ2V0LmlzRW1wdHkoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+
c2V0QmFzZVRhcmdldChtX3RhcmdldCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxQYXJzZXIuY3BwCShyZXZpc2lvbiAy
ODYwMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ3OCw3ICsxNDc4LDcgQEAgdm9pZCBIVE1MUGFyc2VyOjpyZXBvcnRFcnJvclRvQ29uc29sZShI
VAogICAgIG1lc3NhZ2UucmVwbGFjZSgiJXRhZzEiLCB0YWcxKTsKICAgICBtZXNzYWdlLnJlcGxh
Y2UoIiV0YWcyIiwgdGFnMik7CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29u
c29sZShIVE1MTWVzc2FnZVNvdXJjZSwgaXNXYXJuaW5nKGVycm9yQ29kZSkgPyBXYXJuaW5nTWVz
c2FnZUxldmVsOiBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgZG9jdW1l
bnQtPlVSTCgpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShIVE1M
TWVzc2FnZVNvdXJjZSwgaXNXYXJuaW5nKGVycm9yQ29kZSkgPyBXYXJuaW5nTWVzc2FnZUxldmVs
OiBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgZG9jdW1lbnQtPnVybCgp
KTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
ODYwMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKAogICAgIC8vIGFuZCB0aGUgc2NyaXB0IGVsZW1lbnQgaGFzIGJlZW4gaW5zZXJ0ZWQgaW4g
dGhlIGRvY3VtZW50CiAgICAgLy8gd2UgZXZhbHVhdGUgdGhlIHNjcmlwdC4KICAgICBpZiAoIW1f
Y3JlYXRlZEJ5UGFyc2VyICYmIGluRG9jdW1lbnQoKSAmJiBmaXJzdENoaWxkKCkpCi0gICAgICAg
IGV2YWx1YXRlU2NyaXB0KGRvY3VtZW50KCktPlVSTCgpLCB0ZXh0KCkpOworICAgICAgICBldmFs
dWF0ZVNjcmlwdChkb2N1bWVudCgpLT51cmwoKSwgdGV4dCgpKTsKIH0KIAogdm9pZCBIVE1MU2Ny
aXB0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQpA
QCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3UKICAgICAvLyBpdCBzaG91bGQgYmUgZXZhbHVhdGVkLCBhbmQgZXZhbHVhdGVTY3JpcHQgb25s
eSBldmFsdWF0ZXMgYSBzY3JpcHQgb25jZS4KICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gdGV4
dCgpOyAgICAKICAgICBpZiAoIXNjcmlwdFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIGV2YWx1
YXRlU2NyaXB0KGRvY3VtZW50KCktPlVSTCgpLCBzY3JpcHRTdHJpbmcpOworICAgICAgICBldmFs
dWF0ZVNjcmlwdChkb2N1bWVudCgpLT51cmwoKSwgc2NyaXB0U3RyaW5nKTsKIH0KIAogdm9pZCBI
VE1MU2NyaXB0RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpCkBAIC0yMzksNyArMjM5LDcg
QEAgYm9vbCBIVE1MU2NyaXB0RWxlbWVudDo6c2hvdWxkRXhlY3V0ZUFzSgogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpldmFsdWF0ZVNjcmlwdChjb25zdCBT
dHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpCit2b2lkIEhUTUxTY3JpcHRFbGVtZW50
OjpldmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQp
CiB7CiAgICAgaWYgKG1fZXZhbHVhdGVkKQogICAgICAgICByZXR1cm47CkBAIC0yNTIsNyArMjUy
LDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6ZXZhbHVhdGVTY3JpcHQoYwogICAgICAgICBL
SlNQcm94eSogcHJveHkgPSBmcmFtZS0+c2NyaXB0UHJveHkoKTsKICAgICAgICAgaWYgKHByb3h5
KSB7CiAgICAgICAgICAgICBtX2V2YWx1YXRlZCA9IHRydWU7Ci0gICAgICAgICAgICBwcm94eS0+
ZXZhbHVhdGUoVVJMLCAwLCBzY3JpcHQpOworICAgICAgICAgICAgcHJveHktPmV2YWx1YXRlKHVy
bCwgMCwgc2NyaXB0KTsKICAgICAgICAgICAgIERvY3VtZW50Ojp1cGRhdGVEb2N1bWVudHNSZW5k
ZXJpbmcoKTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5o
CShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsNyBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yMSw0MCArMTksNDAgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgogICoKICAqLworCiAjaWZuZGVmIEhUTUxTY3JpcHRFbGVtZW50X2gKICNkZWZp
bmUgSFRNTFNjcmlwdEVsZW1lbnRfaAogCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0OwogCi1jbGFzcyBIVE1M
U2NyaXB0RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50Ci17CitjbGFzcyBIVE1MU2NyaXB0RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwg
cHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBIVE1MU2NyaXB0RWxl
bWVudChEb2N1bWVudCAqZG9jKTsKKyAgICBIVE1MU2NyaXB0RWxlbWVudChEb2N1bWVudCopOwog
ICAgIH5IVE1MU2NyaXB0RWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVu
ZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KICAg
ICB2aXJ0dWFsIGludCB0YWdQcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpIHsgcmV0dXJuIG5ld0NoaWxk
LT5pc1RleHROb2RlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSAqZmluaXNoZWRPYmop
OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSAqYXR0cikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogCiAgICAgdm9pZCBzZXRDcmVhdGVkQnlQ
YXJzZXIoYm9vbCBjcmVhdGVkQnlQYXJzZXIpIHsgbV9jcmVhdGVkQnlQYXJzZXIgPSBjcmVhdGVk
QnlQYXJzZXI7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7CiAKICAgICBi
b29sIHNob3VsZEV4ZWN1dGVBc0phdmFTY3JpcHQoKTsKLSAgICB2b2lkIGV2YWx1YXRlU2NyaXB0
KGNvbnN0IFN0cmluZyAmVVJMLCBjb25zdCBTdHJpbmcgJnNjcmlwdCk7CisgICAgdm9pZCBldmFs
dWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQpOwogCiAg
ICAgU3RyaW5nIHRleHQoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUv
aHRtbC9IVE1MVG9rZW5pemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1LDcgKzUwNSw3IEBA
IEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmkKICAgICBpZiAobV9mcmFn
bWVudCB8fCAhbV9kb2MtPmZyYW1lKCkpCiAgICAgICAgIHJldHVybiBzdGF0ZTsKICAgICBtX2V4
ZWN1dGluZ1NjcmlwdCsrOwotICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsID0gc2NyaXB0VVJMLmlz
TnVsbCgpID8gbV9kb2MtPmZyYW1lKCktPmRvY3VtZW50KCktPlVSTCgpIDogc2NyaXB0VVJMOwor
ICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsID0gc2NyaXB0VVJMLmlzTnVsbCgpID8gbV9kb2MtPmZy
YW1lKCktPmRvY3VtZW50KCktPnVybCgpIDogc2NyaXB0VVJMOwogCiAgICAgU2VnbWVudGVkU3Ry
aW5nICpzYXZlZFByZXBlbmRpbmdTcmMgPSBjdXJyZW50UHJlcGVuZGluZ1NyYzsKICAgICBTZWdt
ZW50ZWRTdHJpbmcgcHJlcGVuZGluZ1NyYzsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5jcHAJKHJldmlzaW9uIDI4NjAy
KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyMCAr
NjYsMjAgQEAgc3RhdGljIENhY2hlZFJlc291cmNlKiBjcmVhdGVSZXNvdXJjZShDYQogICAgIHN3
aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAg
ICAgICAgIC8vIFVzZXIgYWdlbnQgaW1hZ2VzIG5lZWQgdG8gbnVsbCBjaGVjayB0aGUgZG9jbG9h
ZGVyLiAgTm8gb3RoZXIgcmVzb3VyY2VzIG5lZWQgdG8uCi0gICAgICAgIHJldHVybiBuZXcgQ2Fj
aGVkSW1hZ2UoZG9jTG9hZGVyLCB1cmwudXJsKCksIHRydWUgLyogZm9yIGNhY2hlICovKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBDYWNoZWRJbWFnZShkb2NMb2FkZXIsIHVybC5zdHJpbmcoKSwgdHJ1
ZSAvKiBmb3IgY2FjaGUgKi8pOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hl
ZXQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChkb2NMb2FkZXIsIHVy
bC51cmwoKSwgKmNoYXJzZXQsIHNraXBDYW5Mb2FkQ2hlY2ssIHNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MpOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQoZG9jTG9hZGVy
LCB1cmwuc3RyaW5nKCksICpjaGFyc2V0LCBza2lwQ2FuTG9hZENoZWNrLCBzZW5kUmVzb3VyY2VM
b2FkQ2FsbGJhY2tzKTsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6Ci0gICAgICAg
IHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KGRvY0xvYWRlciwgdXJsLnVybCgpLCAqY2hhcnNldCk7
CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkU2NyaXB0KGRvY0xvYWRlciwgdXJsLnN0cmluZygp
LCAqY2hhcnNldCk7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgotICAg
ICAgICByZXR1cm4gbmV3IENhY2hlZEZvbnQoZG9jTG9hZGVyLCB1cmwudXJsKCkpOworICAgICAg
ICByZXR1cm4gbmV3IENhY2hlZEZvbnQoZG9jTG9hZGVyLCB1cmwuc3RyaW5nKCkpOwogI2lmIEVO
QUJMRShYU0xUKQogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6Ci0gICAg
ICAgIHJldHVybiBuZXcgQ2FjaGVkWFNMU3R5bGVTaGVldChkb2NMb2FkZXIsIHVybC51cmwoKSk7
CisgICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWFNMU3R5bGVTaGVldChkb2NMb2FkZXIsIHVybC5z
dHJpbmcoKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoWEJMKQogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OlhCTFN0eWxlU2hlZXQ6Ci0gICAgICAgIHJldHVybiBuZXcgQ2FjaGVkWEJMRG9jdW1lbnQo
ZG9jTG9hZGVyLCB1cmwudXJsKCkpOworICAgICAgICByZXR1cm4gbmV3IENhY2hlZFhCTERvY3Vt
ZW50KGRvY0xvYWRlciwgdXJsLnN0cmluZygpKTsKICNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwpAQCAtOTYsNyArOTYsNyBAQCBDYWNoZWRSZXNvdXJjZSogQ2FjaGU6OnJlcXVl
c3RSZXNvdXJjZShECiAgICAgICAgIHJldHVybiAwOwogICAgIAogICAgIC8vIExvb2sgdXAgdGhl
IHJlc291cmNlIGluIG91ciBtYXAuCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9y
ZXNvdXJjZXMuZ2V0KHVybC51cmwoKSk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0g
bV9yZXNvdXJjZXMuZ2V0KHVybC5zdHJpbmcoKSk7CiAKICAgICBpZiAocmVzb3VyY2UpIHsKICAg
ICAgICAgaWYgKCFza2lwQ2FuTG9hZENoZWNrICYmIEZyYW1lTG9hZGVyOjpyZXN0cmljdEFjY2Vz
c1RvTG9jYWwoKSAmJiAhRnJhbWVMb2FkZXI6OmNhbkxvYWQoKnJlc291cmNlLCBkb2NMb2FkZXIt
PmRvYygpKSkgewpAQCAtMTEwLDcgKzExMCw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVx
dWVzdFJlc291cmNlKEQKICAgICAgICAgaWYgKCFza2lwQ2FuTG9hZENoZWNrICYmIEZyYW1lTG9h
ZGVyOjpyZXN0cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiAhRnJhbWVMb2FkZXI6OmNhbkxvYWQodXJs
LCBkb2NMb2FkZXItPmRvYygpKSkgewogICAgICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY0xv
YWRlci0+ZG9jKCk7CiAgICAgICAgICAgICBpZihkb2MpCi0gICAgICAgICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChkb2MtPnBhZ2UoKSwgdXJsLnVybCgpKTsKKyAg
ICAgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGRvYy0+cGFn
ZSgpLCB1cmwuc3RyaW5nKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpA
QCAtMTIwLDcgKzEyMCw3IEBAIENhY2hlZFJlc291cmNlKiBDYWNoZTo6cmVxdWVzdFJlc291cmNl
KEQKICAgICAgICAgQVNTRVJUKHJlc291cmNlKTsKICAgICAgICAgQVNTRVJUKHJlc291cmNlLT5p
bkNhY2hlKCkpOwogICAgICAgICBpZiAoIWRpc2FibGVkKCkpIHsKLSAgICAgICAgICAgIG1fcmVz
b3VyY2VzLnNldCh1cmwudXJsKCksIHJlc291cmNlKTsgIC8vIFRoZSBzaXplIHdpbGwgYmUgYWRk
ZWQgaW4gbGF0ZXIgb25jZSB0aGUgcmVzb3VyY2UgaXMgbG9hZGVkIGFuZCBjYWxscyBiYWNrIHRv
IHVzIHdpdGggdGhlIG5ldyBzaXplLgorICAgICAgICAgICAgbV9yZXNvdXJjZXMuc2V0KHVybC5z
dHJpbmcoKSwgcmVzb3VyY2UpOyAgLy8gVGhlIHNpemUgd2lsbCBiZSBhZGRlZCBpbiBsYXRlciBv
bmNlIHRoZSByZXNvdXJjZSBpcyBsb2FkZWQgYW5kIGNhbGxzIGJhY2sgdG8gdXMgd2l0aCB0aGUg
bmV3IHNpemUuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBtb3ZlIHRo
ZSByZXNvdXJjZSB0byB0aGUgZnJvbnQgb2YgaXRzIExSVSBsaXN0IGFuZCBpbmNyZWFzZSBpdHMg
YWNjZXNzIGNvdW50LgogICAgICAgICAgICAgcmVzb3VyY2VBY2Nlc3NlZChyZXNvdXJjZSk7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjg2MDIp
CisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmNoZWNrTm90aWZ5
KCkKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKICAgICB3
aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQgKmMgPSB3Lm5leHQoKSkKLSAgICAgICAgYy0+c2V0
Q1NTU3R5bGVTaGVldChtX3Jlc3BvbnNlLnVybCgpLnVybCgpLCBtX2RlY29kZXItPmVuY29kaW5n
KCkubmFtZSgpLCBtX3NoZWV0KTsKKyAgICAgICAgYy0+c2V0Q1NTU3R5bGVTaGVldChtX3Jlc3Bv
bnNlLnVybCgpLnN0cmluZygpLCBtX2RlY29kZXItPmVuY29kaW5nKCkubmFtZSgpLCBtX3NoZWV0
KTsKIAogI2lmIFVTRShMT1dfQkFORFdJRFRIX0RJU1BMQVkpICAgICAgICAKICAgICAvLyBpZiBj
aGVja05vdGlmeSgpIGlzIGNhbGxlZCBmcm9tIGVycm9yKCksIGNsaWVudCdzIHNldENTU1N0eWxl
U2hlZXQoLi4uKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAkocmV2aXNpb24gMjg2
MDIpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDEzICszNSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNhY2hlZFJlc291
cmNlOjpDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIFVSTCwgVHlwZSB0eXBlLCBib29sIGZv
ckNhY2hlLCBib29sIHNlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3MpCi0gICAgOiBtX2xhc3REZWNv
ZGVkQWNjZXNzVGltZSgwKQorQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgdXJsLCBUeXBlIHR5cGUsIGJvb2wgZm9yQ2FjaGUsIGJvb2wgc2VuZFJlc291cmNlTG9h
ZENhbGxiYWNrcykKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fbGFzdERlY29kZWRBY2Nlc3NU
aW1lKDApCiAgICAgLCBtX3NlbmRSZXNvdXJjZUxvYWRDYWxsYmFja3Moc2VuZFJlc291cmNlTG9h
ZENhbGxiYWNrcykKICAgICAsIG1faW5DYWNoZShmb3JDYWNoZSkKICAgICAsIG1fZG9jTG9hZGVy
KDApCiB7Ci0gICAgbV91cmwgPSBVUkw7CiAgICAgbV90eXBlID0gdHlwZTsKICAgICBtX3N0YXR1
cyA9IFBlbmRpbmc7CiAgICAgbV9lbmNvZGVkU2l6ZSA9IDA7CkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9DYWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJl
c291cmNlLmgJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3Vy
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDEwIEBAIHB1YmxpYzoKICAgICAgICAg
VW5rbm93biwgICAgICAvLyBsZXQgY2FjaGUgZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBpdAogICAg
ICAgICBOZXcsICAgICAgICAgIC8vIGluc2VydGluZyBuZXcgaXRlbQogICAgICAgICBQZW5kaW5n
LCAgICAgIC8vIG9ubHkgcGFydGlhbGx5IGxvYWRlZAotICAgICAgICBDYWNoZWQgICAgICAgLy8g
cmVndWxhciBjYXNlCisgICAgICAgIENhY2hlZCAgICAgICAgLy8gcmVndWxhciBjYXNlCiAgICAg
fTsKIAotICAgIENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgVVJMLCBUeXBlLCBib29sIGZv
ckNhY2hlID0gdHJ1ZSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gZmFsc2UpOwor
ICAgIENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBUeXBlLCBib29sIGZvckNhY2hl
ID0gdHJ1ZSwgYm9vbCBzZW5kUmVzb3VyY2VMb2FkQ2FsbGJhY2tzID0gZmFsc2UpOwogICAgIHZp
cnR1YWwgfkNhY2hlZFJlc291cmNlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgeyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkocmV2aXNpb24gMjg2
MDIpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRTY3JpcHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBDYWNoZWRTY3Jp
cHQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2UgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FjaGVk
U2NyaXB0KERvY0xvYWRlciosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQpOworICAgICAgICBDYWNoZWRTY3JpcHQoRG9jTG9hZGVyKiwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgICAgIHZpcnR1YWwgfkNhY2hlZFNjcmlwdCgp
OwogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jp
cHQ7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY0xvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3Jl
L2xvYWRlci9Eb2NMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NywxOSArNjcsMTkgQEAg
dm9pZCBEb2NMb2FkZXI6OmNoZWNrRm9yUmVsb2FkKGNvbnN0IEtVUgogICAgIGlmIChtX2FsbG93
U3RhbGVSZXNvdXJjZXMpCiAgICAgICAgIHJldHVybjsgLy9Eb24ndCByZWxvYWQgcmVzb3VyY2Vz
IHdoaWxlIHBhc3RpbmcKICAgICBpZiAobV9jYWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeVZlcmlm
eSkgewotICAgICAgIGlmICghbV9yZWxvYWRlZFVSTHMuY29udGFpbnMoZnVsbFVSTC51cmwoKSkp
IHsKLSAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmcgPSBjYWNoZSgpLT5yZXNvdXJj
ZUZvclVSTChmdWxsVVJMLnVybCgpKTsKKyAgICAgICBpZiAoIW1fcmVsb2FkZWRVUkxzLmNvbnRh
aW5zKGZ1bGxVUkwuc3RyaW5nKCkpKSB7CisgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0
aW5nID0gY2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoZnVsbFVSTC5zdHJpbmcoKSk7CiAgICAgICAg
ICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLT5pc0V4cGlyZWQoKSkgewogICAgICAgICAgICAg
IGNhY2hlKCktPnJlbW92ZShleGlzdGluZyk7Ci0gICAgICAgICAgICAgbV9yZWxvYWRlZFVSTHMu
YWRkKGZ1bGxVUkwudXJsKCkpOworICAgICAgICAgICAgIG1fcmVsb2FkZWRVUkxzLmFkZChmdWxs
VVJMLnN0cmluZygpKTsKICAgICAgICAgICB9CiAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoKG1f
Y2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lSZWxvYWQpIHx8IChtX2NhY2hlUG9saWN5ID09IENh
Y2hlUG9saWN5UmVmcmVzaCkpIHsKLSAgICAgICBpZiAoIW1fcmVsb2FkZWRVUkxzLmNvbnRhaW5z
KGZ1bGxVUkwudXJsKCkpKSB7Ci0gICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nID0g
Y2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwoZnVsbFVSTC51cmwoKSk7CisgICAgICAgaWYgKCFtX3Jl
bG9hZGVkVVJMcy5jb250YWlucyhmdWxsVVJMLnN0cmluZygpKSkgeworICAgICAgICAgIENhY2hl
ZFJlc291cmNlKiBleGlzdGluZyA9IGNhY2hlKCktPnJlc291cmNlRm9yVVJMKGZ1bGxVUkwuc3Ry
aW5nKCkpOwogICAgICAgICAgIGlmIChleGlzdGluZykKICAgICAgICAgICAgICBjYWNoZSgpLT5y
ZW1vdmUoZXhpc3RpbmcpOwotICAgICAgICAgIG1fcmVsb2FkZWRVUkxzLmFkZChmdWxsVVJMLnVy
bCgpKTsKKyAgICAgICAgICBtX3JlbG9hZGVkVVJMcy5hZGQoZnVsbFVSTC5zdHJpbmcoKSk7CiAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTE0NCw3ICsxNDQsNyBAQCBDYWNoZWRSZXNvdXJjZSogRG9j
TG9hZGVyOjpyZXF1ZXN0UmVzb3VyCiAgICAgS1VSTCBmdWxsVVJMID0gbV9kb2MtPmNvbXBsZXRl
VVJMKHVybC5kZXByZWNhdGVkU3RyaW5nKCkpOwogICAgIAogICAgIGlmIChjYWNoZSgpLT5kaXNh
YmxlZCgpKSB7Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+OjppdGVy
YXRvciBpdCA9IG1fZG9jUmVzb3VyY2VzLmZpbmQoZnVsbFVSTC51cmwoKSk7CisgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+OjppdGVyYXRvciBpdCA9IG1fZG9jUmVzb3Vy
Y2VzLmZpbmQoZnVsbFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaXQgIT0g
bV9kb2NSZXNvdXJjZXMuZW5kKCkpIHsKICAgICAgICAgICAgIGl0LT5zZWNvbmQtPnNldERvY0xv
YWRlcigwKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAy
KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODksMTUgKzE4OSwxNSBAQCBSZXNvdXJjZVJlcXVlc3QmIERvY3VtZW50TG9hZGVyOjphY3R1
YWxSCiAgICAgcmV0dXJuIG1fcmVxdWVzdDsKIH0KIAotY29uc3QgS1VSTCYgRG9jdW1lbnRMb2Fk
ZXI6OlVSTCgpIGNvbnN0Citjb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6dXJsKCkgY29uc3QK
IHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVy
OjpyZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChjb25zdCBLVVJMJiBVUkwpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbChjb25zdCBL
VVJMJiB1cmwpCiB7Ci0gICAgbV9vcmlnaW5hbFJlcXVlc3RDb3B5LnNldFVSTChVUkwpOwotICAg
IG1fcmVxdWVzdC5zZXRVUkwoVVJMKTsKKyAgICBtX29yaWdpbmFsUmVxdWVzdENvcHkuc2V0VVJM
KHVybCk7CisgICAgbV9yZXF1ZXN0LnNldFVSTCh1cmwpOwogfQogCiB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxKQpAQCAtMjIxLDcgKzIy
MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmUKIAogICAgIC8v
IE9ubHkgc2VuZCB3ZWJWaWV3OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBpZiBVUkwgY2hhbmdlZC4KICAgICAvLyBBbHNvLCBkb24ndCBzZW5kIGl0
IHdoZW4gcmVwbGFjaW5nIHVucmVhY2hhYmxlIFVSTHMgd2l0aCBhbHRlcm5hdGUgY29udGVudC4K
LSAgICBpZiAoIWhhbmRsaW5nVW5yZWFjaGFibGVVUkwgJiYgb2xkVVJMLnVybCgpICE9IHJlcS51
cmwoKS51cmwoKSkKKyAgICBpZiAoIWhhbmRsaW5nVW5yZWFjaGFibGVVUkwgJiYgb2xkVVJMICE9
IHJlcS51cmwoKSkKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoKTsKIH0KIApAQCAtNjg4LDcgKzY4OCw3IEBA
IGJvb2wgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAgICBpZiAoIW1fbWFp
blJlc291cmNlTG9hZGVyLT5sb2FkKG1fcmVxdWVzdCwgbV9zdWJzdGl0dXRlRGF0YSkpIHsKICAg
ICAgICAgLy8gRklYTUU6IElmIHRoaXMgc2hvdWxkIHJlYWxseSBiZSBjYXVnaHQsIHdlIHNob3Vs
ZCBqdXN0IEFTU0VSVCB0aGlzIGRvZXNuJ3QgaGFwcGVuOwogICAgICAgICAvLyBzaG91bGQgaXQg
YmUgY2F1Z2h0IGJ5IG90aGVyIHBhcnRzIG9mIFdlYktpdCBvciBvdGhlciBwYXJ0cyBvZiB0aGUg
YXBwPwotICAgICAgICBMT0dfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgV2ViUmVzb3VyY2VIYW5k
bGUgZm9yIFVSTCAlcyAtLSBzaG91bGQgYmUgY2F1Z2h0IGJ5IHBvbGljeSBoYW5kbGVyIGxldmVs
IiwgbV9yZXF1ZXN0LnVybCgpLnVybCgpLmFzY2lpKCkpOworICAgICAgICBMT0dfRVJST1IoImNv
dWxkIG5vdCBjcmVhdGUgV2ViUmVzb3VyY2VIYW5kbGUgZm9yIFVSTCAlcyAtLSBzaG91bGQgYmUg
Y2F1Z2h0IGJ5IHBvbGljeSBoYW5kbGVyIGxldmVsIiwgbV9yZXF1ZXN0LnVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgbV9tYWluUmVzb3VyY2VMb2FkZXIgPSAwOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3Vic3RpdHV0ZURhdGE7IH0KIAotICAgICAgICBjb25zdCBLVVJMJiBVUkwoKSBjb25zdDsKKyAg
ICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEtVUkwmIHVucmVh
Y2hhYmxlVVJMKCkgY29uc3Q7CiAKICAgICAgICAgS1VSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBj
b25zdCB1bnNpZ25lZCBpbnQgY01heFBlbmRpbmdTb3VyY2VMZW5nCiAKIHN0cnVjdCBGb3JtU3Vi
bWlzc2lvbiB7CiAgICAgY29uc3QgY2hhciogYWN0aW9uOwotICAgIFN0cmluZyBVUkw7CisgICAg
U3RyaW5nIHVybDsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGRhdGE7CiAgICAgU3RyaW5nIHRhcmdl
dDsKICAgICBTdHJpbmcgY29udGVudFR5cGU7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RydWN0IEZv
cm1TdWJtaXNzaW9uIHsKICAgICBGb3JtU3VibWlzc2lvbihjb25zdCBjaGFyKiBhLCBjb25zdCBT
dHJpbmcmIHUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGQsIGNvbnN0IFN0cmluZyYgdCwKICAgICAg
ICAgICAgIGNvbnN0IFN0cmluZyYgY3QsIGNvbnN0IFN0cmluZyYgYiwgUGFzc1JlZlB0cjxFdmVu
dD4gZSkKICAgICAgICAgOiBhY3Rpb24oYSkKLSAgICAgICAgLCBVUkwodSkKKyAgICAgICAgLCB1
cmwodSkKICAgICAgICAgLCBkYXRhKGQpCiAgICAgICAgICwgdGFyZ2V0KHQpCiAgICAgICAgICwg
Y29udGVudFR5cGUoY3QpCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RydWN0IFNjaGVkdWxlZFJlZGly
ZWN0aW9uIHsKICAgICBlbnVtIFR5cGUgeyByZWRpcmVjdGlvbiwgbG9jYXRpb25DaGFuZ2UsIGhp
c3RvcnlOYXZpZ2F0aW9uLCBsb2NhdGlvbkNoYW5nZUR1cmluZ0xvYWQgfTsKICAgICBUeXBlIHR5
cGU7CiAgICAgZG91YmxlIGRlbGF5OwotICAgIFN0cmluZyBVUkw7CisgICAgU3RyaW5nIHVybDsK
ICAgICBTdHJpbmcgcmVmZXJyZXI7CiAgICAgaW50IGhpc3RvcnlTdGVwczsKICAgICBib29sIGxv
Y2tIaXN0b3J5OwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlv
biB7CiAgICAgU2NoZWR1bGVkUmVkaXJlY3Rpb24oZG91YmxlIHJlZGlyZWN0RGVsYXksIGNvbnN0
IFN0cmluZyYgcmVkaXJlY3RVUkwsIGJvb2wgcmVkaXJlY3RMb2NrSGlzdG9yeSwgYm9vbCB1c2Vy
R2VzdHVyZSkKICAgICAgICAgOiB0eXBlKHJlZGlyZWN0aW9uKQogICAgICAgICAsIGRlbGF5KHJl
ZGlyZWN0RGVsYXkpCi0gICAgICAgICwgVVJMKHJlZGlyZWN0VVJMKQorICAgICAgICAsIHVybChy
ZWRpcmVjdFVSTCkKICAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKICAgICAgICAgLCBsb2NrSGlz
dG9yeShyZWRpcmVjdExvY2tIaXN0b3J5KQogICAgICAgICAsIHdhc1VzZXJHZXN0dXJlKHVzZXJH
ZXN0dXJlKQpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlvbiB7
CiAgICAgICAgICAgICBib29sIGxvY2F0aW9uQ2hhbmdlTG9ja0hpc3RvcnksIGJvb2wgbG9jYXRp
b25DaGFuZ2VXYXNVc2VyR2VzdHVyZSkKICAgICAgICAgOiB0eXBlKGxvY2F0aW9uQ2hhbmdlVHlw
ZSkKICAgICAgICAgLCBkZWxheSgwKQotICAgICAgICAsIFVSTChsb2NhdGlvbkNoYW5nZVVSTCkK
KyAgICAgICAgLCB1cmwobG9jYXRpb25DaGFuZ2VVUkwpCiAgICAgICAgICwgcmVmZXJyZXIobG9j
YXRpb25DaGFuZ2VSZWZlcnJlcikKICAgICAgICAgLCBoaXN0b3J5U3RlcHMoMCkKICAgICAgICAg
LCBsb2NrSGlzdG9yeShsb2NhdGlvbkNoYW5nZUxvY2tIaXN0b3J5KQpAQCAtMzY3LDE1ICszNjcs
MTUgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdAogICAgIHJldHVy
biBtX2NsaWVudC0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlcjo6Y2hhbmdlTG9jYXRpb24oY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgdXNlckdlc3R1cmUpCit2b2lkIEZyYW1lTG9h
ZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSkKIHsKLSAgICBjaGFuZ2VM
b2NhdGlvbihjb21wbGV0ZVVSTChVUkwpLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIHVzZXJHZXN0
dXJlKTsKKyAgICBjaGFuZ2VMb2NhdGlvbihjb21wbGV0ZVVSTCh1cmwpLCByZWZlcnJlciwgbG9j
a0hpc3RvcnksIHVzZXJHZXN0dXJlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9j
YXRpb24oY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIHVzZXJHZXN0dXJlKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRp
b24oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0
b3J5LCBib29sIHVzZXJHZXN0dXJlKQogewotICAgIGlmIChVUkwudXJsKCkuZmluZCgiamF2YXNj
cmlwdDoiLCAwLCBmYWxzZSkgPT0gMCkgewotICAgICAgICBTdHJpbmcgc2NyaXB0ID0gS1VSTDo6
ZGVjb2RlX3N0cmluZyhVUkwudXJsKCkubWlkKHN0cmxlbigiamF2YXNjcmlwdDoiKSkpOworICAg
IGlmICh1cmwuZGVwcmVjYXRlZFN0cmluZygpLmZpbmQoImphdmFzY3JpcHQ6IiwgMCwgZmFsc2Up
ID09IDApIHsKKyAgICAgICAgU3RyaW5nIHNjcmlwdCA9IEtVUkw6OmRlY29kZV9zdHJpbmcodXJs
LmRlcHJlY2F0ZWRTdHJpbmcoKS5taWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSk7CiAgICAgICAg
IEpTVmFsdWUqIHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB1c2VyR2VzdHVyZSk7CiAg
ICAgICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7CiAgICAgICAgIGlmIChnZXRTdHJpbmcocmVzdWx0
LCBzY3JpcHRSZXN1bHQpKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hhbmdlTG9jYXRpb24oY29uc3QgSwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
cG9saWN5ID0gKG1fY2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lSZWxvYWQpIHx8IChtX2NhY2hl
UG9saWN5ID09IENhY2hlUG9saWN5UmVmcmVzaCkKICAgICAgICAgPyBSZWxvYWRJZ25vcmluZ0Nh
Y2hlRGF0YSA6IFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7Ci0gICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoVVJMLCByZWZlcnJlciwgcG9saWN5KTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCh1cmwsIHJlZmVycmVyLCBwb2xpY3kpOwogICAgIAogICAgIHVybFNlbGVjdGVkKHJlcXVlc3Qs
ICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5LCB1c2VyR2VzdHVyZSk7CiB9CkBAIC00MDAsOCArNDAw
LDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzbwogICAgICAgICB0
YXJnZXQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVGFyZ2V0KCk7CiAKICAgICBjb25zdCBL
VVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwotICAgIGlmICh1cmwudXJsKCkuc3RhcnRzV2l0aCgi
amF2YXNjcmlwdDoiLCBmYWxzZSkpIHsKLSAgICAgICAgZXhlY3V0ZVNjcmlwdChLVVJMOjpkZWNv
ZGVfc3RyaW5nKHVybC51cmwoKS5taWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSksIHRydWUpOwor
ICAgIGlmICh1cmwuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImphdmFzY3JpcHQ6Iiwg
ZmFsc2UpKSB7CisgICAgICAgIGV4ZWN1dGVTY3JpcHQoS1VSTDo6ZGVjb2RlX3N0cmluZyh1cmwu
ZGVwcmVjYXRlZFN0cmluZygpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQzNCw3ICs0MzQsNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpyZXF1ZXN0RnJhbWUoSFRNTEZyYW1lCiAKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVs
ZW1lbnQtPmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPmxv
YWRlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybC51cmwoKSwgbV9vdXRnb2luZ1JlZmVy
cmVyLCB0cnVlLCB1c2VyR2VzdHVyZUhpbnQoKSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+
c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSh1cmwuc3RyaW5nKCksIG1fb3V0Z29pbmdSZWZlcnJlciwg
dHJ1ZSwgdXNlckdlc3R1cmVIaW50KCkpOwogICAgIGVsc2UKICAgICAgICAgZnJhbWUgPSBsb2Fk
U3ViZnJhbWUob3duZXJFbGVtZW50LCB1cmwsIGZyYW1lTmFtZSwgbV9vdXRnb2luZ1JlZmVycmVy
KTsKICAgICAKQEAgLTQ2MCw3ICs0NjAsNyBAQCBGcmFtZSogRnJhbWVMb2FkZXI6OmxvYWRTdWJm
cmFtZShIVE1MRnJhCiAgICAgfQogCiAgICAgaWYgKCFjYW5Mb2FkKHVybCwgcmVmZXJyZXIpKSB7
Ci0gICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+cGFn
ZSgpLCB1cmwudXJsKCkpOworICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFp
bGVkKG1fZnJhbWUtPnBhZ2UoKSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybUFn
YWluKCkKICAgICAgICAgcmV0dXJuOwogICAgIE93blB0cjxGb3JtU3VibWlzc2lvbj4gZm9ybSht
X2RlZmVycmVkRm9ybVN1Ym1pc3Npb24ucmVsZWFzZSgpKTsKICAgICBpZiAoZm9ybSkKLSAgICAg
ICAgc3VibWl0Rm9ybShmb3JtLT5hY3Rpb24sIGZvcm0tPlVSTCwgZm9ybS0+ZGF0YSwgZm9ybS0+
dGFyZ2V0LAorICAgICAgICBzdWJtaXRGb3JtKGZvcm0tPmFjdGlvbiwgZm9ybS0+dXJsLCBmb3Jt
LT5kYXRhLCBmb3JtLT50YXJnZXQsCiAgICAgICAgICAgICBmb3JtLT5jb250ZW50VHlwZSwgZm9y
bS0+Ym91bmRhcnksIGZvcm0tPmV2ZW50LmdldCgpKTsKIH0KIApAQCAtNTE1LDcgKzUxNSw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhcioKICAgICBpZiAodS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIERlcHJlY2F0ZWRTdHJpbmcgdXJsU3RyaW5n
ID0gdS51cmwoKTsKKyAgICBEZXByZWNhdGVkU3RyaW5nIHVybFN0cmluZyA9IHUuZGVwcmVjYXRl
ZFN0cmluZygpOwogICAgIGlmICh1cmxTdHJpbmcuc3RhcnRzV2l0aCgiamF2YXNjcmlwdDoiLCBm
YWxzZSkpIHsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1
ZTsKICAgICAgICAgZXhlY3V0ZVNjcmlwdChLVVJMOjpkZWNvZGVfc3RyaW5nKHVybFN0cmluZy5t
aWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSkpOwpAQCAtNzMxLDEzICs3MzEsMTMgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6ZGlkRXhwbGljaXRPcGVuKCkKICAgICAvLyBDYW5jZWxsaW5nIHJlZGlyZWN0
aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCiAgICAg
Ly8gaW1wbGljaXRseSBwcmVjZWRlcyBkb2N1bWVudC53cml0ZS4KICAgICBjYW5jZWxSZWRpcmVj
dGlvbigpOyAKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+VVJMKCkgIT0gImFib3V0OmJs
YW5rIikKLSAgICAgICAgbV9VUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5VUkwoKTsKKyAgICBp
ZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkgIT0gImFib3V0OmJsYW5rIikKKyAgICAgICAg
bV9VUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRl
cjo6cmVwbGFjZUNvbnRlbnRzV2l0aFNjcmlwdFJlc3VsdChjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgSlNWYWx1ZSogcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChLVVJMOjpkZWNvZGVfc3RyaW5nKHVy
bC51cmwoKS5taWQoc3RybGVuKCJqYXZhc2NyaXB0OiIpKSkpOworICAgIEpTVmFsdWUqIHJlc3Vs
dCA9IGV4ZWN1dGVTY3JpcHQoS1VSTDo6ZGVjb2RlX3N0cmluZyh1cmwuZGVwcmVjYXRlZFN0cmlu
ZygpLm1pZChzdHJsZW4oImphdmFzY3JpcHQ6IikpKSk7CiAgICAgU3RyaW5nIHNjcmlwdFJlc3Vs
dDsKICAgICBpZiAoIWdldFN0cmluZyhyZXN1bHQsIHNjcmlwdFJlc3VsdCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc0OCwxMCArNzQ4LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlcGxhY2VDb250
ZW50c1dpdGhTY3IKIAogSlNWYWx1ZSogRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSkKIHsKLSAgICByZXR1cm4gZXhl
Y3V0ZVNjcmlwdChmb3JjZVVzZXJHZXN0dXJlID8gU3RyaW5nKCkgOiBTdHJpbmcobV9VUkwudXJs
KCkpLCAwLCBzY3JpcHQpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0KGZvcmNlVXNlckdlc3R1
cmUgPyBTdHJpbmcoKSA6IG1fVVJMLnN0cmluZygpLCAwLCBzY3JpcHQpOwogfQogCi1KU1ZhbHVl
KiBGcmFtZUxvYWRlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIFVSTCwgaW50IGJhc2VM
aW5lLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKK0pTVmFsdWUqIEZyYW1lTG9hZGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0KQogewogICAgIEtKU1Byb3h5KiBwcm94eSA9IG1fZnJhbWUtPnNjcmlwdFByb3h5KCk7CiAg
ICAgaWYgKCFwcm94eSkKQEAgLTc2MCw3ICs3NjAsNyBAQCBKU1ZhbHVlKiBGcmFtZUxvYWRlcjo6
ZXhlY3V0ZVNjcmlwdChjb25zCiAgICAgYm9vbCB3YXNSdW5uaW5nU2NyaXB0ID0gbV9pc1J1bm5p
bmdTY3JpcHQ7CiAgICAgbV9pc1J1bm5pbmdTY3JpcHQgPSB0cnVlOwogCi0gICAgSlNWYWx1ZSog
cmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKFVSTCwgYmFzZUxpbmUsIHNjcmlwdCk7CisgICAgSlNW
YWx1ZSogcmVzdWx0ID0gcHJveHktPmV2YWx1YXRlKHVybCwgYmFzZUxpbmUsIHNjcmlwdCk7CiAK
ICAgICBpZiAoIXdhc1J1bm5pbmdTY3JpcHQpIHsKICAgICAgICAgbV9pc1J1bm5pbmdTY3JpcHQg
PSBmYWxzZTsKQEAgLTg1MSwxOCArODUxLDE4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVk
Rmlyc3REYXRhKCkKICAgICBtX3dvcmtpbmdVUkwgPSBLVVJMKCk7CiAKICAgICBkb3VibGUgZGVs
YXk7Ci0gICAgU3RyaW5nIFVSTDsKKyAgICBTdHJpbmcgdXJsOwogICAgIGlmICghbV9kb2N1bWVu
dExvYWRlcikKICAgICAgICAgcmV0dXJuOwotICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaChtX2Rv
Y3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBmYWxz
ZSwgZGVsYXksIFVSTCkpCisgICAgaWYgKCFwYXJzZUhUVFBSZWZyZXNoKG1fZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJSZWZyZXNoIiksIGZhbHNlLCBkZWxheSwg
dXJsKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFVSTC5pc0VtcHR5KCkpCi0gICAgICAg
IFVSTCA9IG1fVVJMLnVybCgpOworICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICB1cmwg
PSBtX1VSTC5zdHJpbmcoKTsKICAgICBlbHNlCi0gICAgICAgIFVSTCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKFVSTCk7CisgICAgICAgIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHVybCk7CiAKLSAgICBzY2hlZHVsZUhUVFBSZWRpcmVjdGlvbihkZWxh
eSwgVVJMKTsKKyAgICBzY2hlZHVsZUhUVFBSZWRpcmVjdGlvbihkZWxheSwgdXJsKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlcjo6cmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0CkBAIC04
OTcsNyArODk3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YmVnaW4oY29uc3QgS1VSTCYgdXJsLAog
ICAgIHJlZi5zZXRVc2VyKERlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgcmVmLnNldFBhc3MoRGVw
cmVjYXRlZFN0cmluZygpKTsKICAgICByZWYuc2V0UmVmKERlcHJlY2F0ZWRTdHJpbmcoKSk7Ci0g
ICAgbV9vdXRnb2luZ1JlZmVycmVyID0gcmVmLnVybCgpOworICAgIG1fb3V0Z29pbmdSZWZlcnJl
ciA9IHJlZi5zdHJpbmcoKTsKICAgICBtX1VSTCA9IHVybDsKICAgICBLVVJMIGJhc2V1cmw7CiAK
QEAgLTkwNywxMCArOTA3LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmJlZ2luKGNvbnN0IEtVUkwm
IHVybCwKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gRE9NSW1wbGVtZW50YXRpb246
Omluc3RhbmNlKCktPmNyZWF0ZURvY3VtZW50KG1fcmVzcG9uc2VNSU1FVHlwZSwgbV9mcmFtZSwg
bV9mcmFtZS0+aW5WaWV3U291cmNlTW9kZSgpKTsKICAgICBtX2ZyYW1lLT5zZXREb2N1bWVudChk
b2N1bWVudCk7CiAKLSAgICBkb2N1bWVudC0+c2V0VVJMKG1fVVJMLnVybCgpKTsKKyAgICBkb2N1
bWVudC0+c2V0VVJMKG1fVVJMLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgLy8gV2UgcHJlZmVy
IG1fYmFzZVVSTCBvdmVyIG1fVVJMIGJlY2F1c2UgbV9VUkwgY2hhbmdlcyB3aGVuIHdlIGFyZQog
ICAgIC8vIGFib3V0IHRvIGxvYWQgYSBuZXcgcGFnZS4KLSAgICBkb2N1bWVudC0+c2V0QmFzZVVS
TChiYXNldXJsLnVybCgpKTsKKyAgICBkb2N1bWVudC0+c2V0QmFzZVVSTChiYXNldXJsLmRlcHJl
Y2F0ZWRTdHJpbmcoKSk7CiAgICAgaWYgKG1fZGVjb2RlcikKICAgICAgICAgZG9jdW1lbnQtPnNl
dERlY29kZXIobV9kZWNvZGVyLmdldCgpKTsKIApAQCAtMTA2NSw3ICsxMDY1LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6c3RhcnRJY29uTG9hZGVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IEtVUkwgdXJsKGljb25VUkwoKSk7Ci0gICAgU3RyaW5nIHVybFN0cmluZyh1cmwudXJsKCkpOwor
ICAgIFN0cmluZyB1cmxTdHJpbmcodXJsLnN0cmluZygpKTsKICAgICBpZiAodXJsU3RyaW5nLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDgzLDggKzEwODMsOCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzdGFydEljb25Mb2FkZXIoKQogICAgICAgICAgICAgaWYgKCFpY29uRGF0YWJh
c2UoKS0+aWNvbkRhdGFLbm93bkZvckljb25VUkwodXJsU3RyaW5nKSkgewogICAgICAgICAgICAg
ICAgIExPRyhJY29uRGF0YWJhc2UsICJUb2xkIG5vdCB0byBsb2FkIGljb24gJXMgYnV0IGljb24g
ZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAtIHJlZ2lzdGVyaW5nIGZvciBub3RpZmljYXRpb24g
YW5kIHJlcXVlc3RpbmcgbG9hZCBmcm9tIGRpc2siLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5yZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24o
KTsKLSAgICAgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwobV9VUkwu
dXJsKCksIEludFNpemUoMCwgMCkpOwotICAgICAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5p
Y29uRm9yUGFnZVVSTChvcmlnaW5hbFJlcXVlc3RVUkwoKS51cmwoKSwgSW50U2l6ZSgwLCAwKSk7
CisgICAgICAgICAgICAgICAgaWNvbkRhdGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKG1fVVJMLnN0
cmluZygpLCBJbnRTaXplKDAsIDApKTsKKyAgICAgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+
aWNvbkZvclBhZ2VVUkwob3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCksIEludFNpemUoMCwg
MCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgICAgICAgICAKQEAgLTExNDEsOSArMTE0MSw5
IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQ2FzZUluc2Vuc2l0aXZlSGEKIHZvaWQgRnJhbWVM
b2FkZXI6OmNvbW1pdEljb25VUkxUb0ljb25EYXRhYmFzZShjb25zdCBLVVJMJiBpY29uKQogewog
ICAgIEFTU0VSVChpY29uRGF0YWJhc2UoKSk7Ci0gICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1p
dHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNv
bi51cmwoKS5hc2NpaSgpLCBtX1VSTC51cmwoKS5hc2NpaSgpLCBvcmlnaW5hbFJlcXVlc3RVUkwo
KS51cmwoKS5hc2NpaSgpKTsKLSAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvblVSTEZvclBhZ2VV
UkwoaWNvbi51cmwoKSwgbV9VUkwudXJsKCkpOwotICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29u
VVJMRm9yUGFnZVVSTChpY29uLnVybCgpLCBvcmlnaW5hbFJlcXVlc3RVUkwoKS51cmwoKSk7Cisg
ICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBm
b3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9V
Ukwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdFVSTCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvblVSTEZvclBhZ2VV
UkwoaWNvbi5zdHJpbmcoKSwgbV9VUkwuc3RyaW5nKCkpOworICAgIGljb25EYXRhYmFzZSgpLT5z
ZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygpLCBvcmlnaW5hbFJlcXVlc3RVUkwoKS5z
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlc3RvcmVEb2N1bWVudFN0YXRlKCkK
QEAgLTEzODMsNyArMTM4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaChi
b29sIHcKIAogICAgIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpUeXBlIHR5cGUgPSBkdXJpbmdMb2Fk
CiAgICAgICAgID8gU2NoZWR1bGVkUmVkaXJlY3Rpb246OmxvY2F0aW9uQ2hhbmdlRHVyaW5nTG9h
ZCA6IFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNoYW5nZTsKLSAgICBzY2hlZHVsZVJl
ZGlyZWN0aW9uKG5ldyBTY2hlZHVsZWRSZWRpcmVjdGlvbih0eXBlLCBtX1VSTC51cmwoKSwgbV9v
dXRnb2luZ1JlZmVycmVyLCB0cnVlLCB3YXNVc2VyR2VzdHVyZSkpOworICAgIHNjaGVkdWxlUmVk
aXJlY3Rpb24obmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHR5cGUsIG1fVVJMLnN0cmluZygpLCBt
X291dGdvaW5nUmVmZXJyZXIsIHRydWUsIHdhc1VzZXJHZXN0dXJlKSk7CiAgICAgbV9jYWNoZVBv
bGljeSA9IENhY2hlUG9saWN5UmVmcmVzaDsKIH0KIApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6cmVkaXJlY3Rpb25UaW1lckZpcmVkKAogICAgICAgICBjYXNlIFNjaGVk
dWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlvbjoKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRp
cmVjdGlvbjo6bG9jYXRpb25DaGFuZ2U6CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rp
b246OmxvY2F0aW9uQ2hhbmdlRHVyaW5nTG9hZDoKLSAgICAgICAgICAgIGNoYW5nZUxvY2F0aW9u
KHJlZGlyZWN0aW9uLT5VUkwsIHJlZGlyZWN0aW9uLT5yZWZlcnJlciwKKyAgICAgICAgICAgIGNo
YW5nZUxvY2F0aW9uKHJlZGlyZWN0aW9uLT51cmwsIHJlZGlyZWN0aW9uLT5yZWZlcnJlciwKICAg
ICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT53YXNV
c2VyR2VzdHVyZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgU2NoZWR1bGVk
UmVkaXJlY3Rpb246Omhpc3RvcnlOYXZpZ2F0aW9uOgpAQCAtMTYyMSw3ICsxNjIxLDcgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihSZW5kZXJQYXJ0KgogICAgICAgICAgICAgcGx1Z2lu
RWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKIAogICAg
ICAgICBpZiAoIWNhbkxvYWQodXJsLCBmcmFtZSgpLT5kb2N1bWVudCgpKSkgewotICAgICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLT5wYWdlKCksIHVy
bC51cmwoKSk7CisgICAgICAgICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVk
KG1fZnJhbWUtPnBhZ2UoKSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCkBAIC0xNzI3LDkgKzE3MjcsOSBAQCBib29sIEZyYW1lTG9hZGVyOjp1
c2VyR2VzdHVyZUhpbnQoKQogICAgIHJldHVybiB0cnVlOyAvLyBJZiBKYXZhU2NyaXB0IGlzIGRp
c2FibGVkLCBhIHVzZXIgZ2VzdHVyZSBtdXN0IGhhdmUgaW5pdGlhdGVkIHRoZSBuYXZpZ2F0aW9u
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmRpZE5vdE9wZW5VUkwoY29uc3QgS1VSTCYgVVJMKQor
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkTm90T3BlblVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
aWYgKG1fc3VibWl0dGVkRm9ybVVSTCA9PSBVUkwpCisgICAgaWYgKG1fc3VibWl0dGVkRm9ybVVS
TCA9PSB1cmwpCiAgICAgICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKIH0KIApAQCAt
MTc5Nyw3ICsxNzk3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlUG9saWN5QmFzZVVSTCgp
CiAgICAgaWYgKG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkgJiYgbV9mcmFtZS0+dHJlZSgpLT5w
YXJlbnQoKS0+ZG9jdW1lbnQoKSkKICAgICAgICAgc2V0UG9saWN5QmFzZVVSTChtX2ZyYW1lLT50
cmVlKCktPnBhcmVudCgpLT5kb2N1bWVudCgpLT5wb2xpY3lCYXNlVVJMKCkpOwogICAgIGVsc2UK
LSAgICAgICAgc2V0UG9saWN5QmFzZVVSTChtX1VSTC51cmwoKSk7CisgICAgICAgIHNldFBvbGlj
eUJhc2VVUkwobV9VUkwuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXRQb2xp
Y3lCYXNlVVJMKGNvbnN0IFN0cmluZyYgcykKQEAgLTE4MTAsOSArMTgxMCw5IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnNldFBvbGljeUJhc2VVUkwoY29uc3QKIAogLy8gVGhpcyBkb2VzIHRoZSBzYW1l
IGtpbmQgb2Ygd29yayB0aGF0IEZyYW1lTG9hZGVyOjpvcGVuVVJMIGRvZXMsIGV4Y2VwdCBpdCBy
ZWxpZXMgb24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVja2Vk
IHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRoaW5n
IHRvIGRvLgotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9BbmNob3IoY29uc3QgS1VSTCYgVVJM
KQordm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9BbmNob3IoY29uc3QgS1VSTCYgdXJsKQogewot
ICAgIG1fVVJMID0gVVJMOworICAgIG1fVVJMID0gdXJsOwogICAgIHN0YXJ0ZWQoKTsKIAogICAg
IGdvdG9BbmNob3IoKTsKQEAgLTE4NDksNyArMTg0OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0
YXJ0UmVkaXJlY3Rpb25UaW1lcigKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6
cmVkaXJlY3Rpb246CiAgICAgICAgIGNhc2UgU2NoZWR1bGVkUmVkaXJlY3Rpb246OmxvY2F0aW9u
Q2hhbmdlOgogICAgICAgICBjYXNlIFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNoYW5n
ZUR1cmluZ0xvYWQ6Ci0gICAgICAgICAgICBjbGllbnRSZWRpcmVjdGVkKG1fc2NoZWR1bGVkUmVk
aXJlY3Rpb24tPlVSTC5kZXByZWNhdGVkU3RyaW5nKCksCisgICAgICAgICAgICBjbGllbnRSZWRp
cmVjdGVkKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnVybC5kZXByZWNhdGVkU3RyaW5nKCksCiAg
ICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXksCiAgICAgICAgICAg
ICAgICAgY3VycmVudFRpbWUoKSArIG1fcmVkaXJlY3Rpb25UaW1lci5uZXh0RmlyZUludGVydmFs
KCksCiAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+bG9ja0hpc3Rvcnks
CkBAIC0xOTMwLDkgKzE5MzAsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmaW5hbFNldHVwRm9yUmVw
bGFjZShECiAgICAgbV9jbGllbnQtPmNsZWFyVW5hcmNoaXZpbmdTdGF0ZShsb2FkZXIpOwogfQog
Ci12b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIFVSTCwgRXZlbnQqIGV2ZW50KQor
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIEV2ZW50KiBldmVudCkKIHsK
LSAgICBsb2FkKFJlc291cmNlUmVxdWVzdChVUkwpLCBmYWxzZSwgdHJ1ZSwgZXZlbnQsIDAsIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+KCkpOworICAgIGxvYWQoUmVzb3VyY2VSZXF1ZXN0KHVybCks
IGZhbHNlLCB0cnVlLCBldmVudCwgMCwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKSk7CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwg
Ym9vbCBsb2NrSGlzdG9yeSwgYm9vbCB1c2VyR2VzdHVyZSwgRXZlbnQqIGV2ZW50LApAQCAtMTk0
OCw5ICsxOTQ4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBGcmFtZUxvYWRSZQog
ICAgICAgICByZWZlcnJlciA9IG1fb3V0Z29pbmdSZWZlcnJlcjsKICAKICAgICBBU1NFUlQoZnJh
bWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgaWYgKHVybC51cmwoKS5zdGFydHNXaXRoKCJmaWxlOiIs
IGZhbHNlKSkgeworICAgIGlmICh1cmwuZGVwcmVjYXRlZFN0cmluZygpLnN0YXJ0c1dpdGgoImZp
bGU6IiwgZmFsc2UpKSB7CiAgICAgICAgIGlmICghY2FuTG9hZCh1cmwsIGZyYW1lKCktPmRvY3Vt
ZW50KCkpICYmICFjYW5Mb2FkKHVybCwgcmVmZXJyZXIpKSB7Ci0gICAgICAgICAgICBGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUtPnBhZ2UoKSwgdXJsLnVybCgpKTsK
KyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZS0+
cGFnZSgpLCB1cmwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMTk4NiwxMiArMTk4NiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0
IEZyYW1lTG9hZFJlCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXMoKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZChjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIEZyYW1lTG9hZFR5cGUgbmV3TG9hZFR5cGUsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
KGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgRnJhbWVMb2FkVHlw
ZSBuZXdMb2FkVHlwZSwKICAgICBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRXZlbnQqIGV2ZW50
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQogewogICAgIGJvb2wgaXNGb3JtU3Vi
bWlzc2lvbiA9IGZvcm1TdGF0ZTsKICAgICAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChV
UkwpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG5ld1VSTCk7CiAgICAgaWYgKCFyZWZl
cnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVy
KTsKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCB0cnVlLCBldmVudCB8fCBp
c0Zvcm1TdWJtaXNzaW9uKTsKQEAgLTIwMDAsMTEgKzIwMDAsMTEgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZChjb25zdCBLVVJMJiBVUkwsIAogCiAgICAgQVNTRVJUKG5ld0xvYWRUeXBlICE9IEZy
YW1lTG9hZFR5cGVTYW1lKTsKIAotICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uKFVSTCwgbmV3
TG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24sIGV2ZW50KTsKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
IGFjdGlvbihuZXdVUkwsIG5ld0xvYWRUeXBlLCBpc0Zvcm1TdWJtaXNzaW9uLCBldmVudCk7CiAK
ICAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKEZyYW1lKiB0YXJn
ZXRGcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS0+ZmluZChmcmFtZU5hbWUpKQotICAgICAgICAgICAg
dGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5sb2FkKFVSTCwgcmVmZXJyZXIsIG5ld0xvYWRUeXBlLCBT
dHJpbmcoKSwgZXZlbnQsIGZvcm1TdGF0ZSk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9h
ZGVyKCktPmxvYWQobmV3VVJMLCByZWZlcnJlciwgbmV3TG9hZFR5cGUsIFN0cmluZygpLCBldmVu
dCwgZm9ybVN0YXRlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2hlY2tOZXdXaW5kb3dQ
b2xpY3koYWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3Qg
S1VSTCYgVVJMLCAKIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gb2xkRG9jdW1lbnRMb2Fk
ZXIgPSBtX2RvY3VtZW50TG9hZGVyOwogCi0gICAgYm9vbCBzYW1lVVJMID0gc2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQoVVJMKTsKKyAgICBib29sIHNhbWVVUkwgPSBzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChuZXdVUkwpOwogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0byBkbyBz
Y3JvbGwgdG8gYW5jaG9yIHByb2Nlc3NpbmcgZXZlbiBpZiB0aGUgVVJMIGlzCiAgICAgLy8gZXhh
Y3RseSB0aGUgc2FtZSBzbyBwYWdlcyB3aXRoICcjJyBsaW5rcyBhbmQgREhUTUwgc2lkZSBlZmZl
Y3RzCkBAIC0yMDIwLDcgKzIwMjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKGNvbnN0IEtV
UkwmIFVSTCwgCiAgICAgaWYgKCFpc0Zvcm1TdWJtaXNzaW9uCiAgICAgICAgICYmIG5ld0xvYWRU
eXBlICE9IEZyYW1lTG9hZFR5cGVSZWxvYWQKICAgICAgICAgJiYgbmV3TG9hZFR5cGUgIT0gRnJh
bWVMb2FkVHlwZVNhbWUKLSAgICAgICAgJiYgIXNob3VsZFJlbG9hZChVUkwsIHVybCgpKQorICAg
ICAgICAmJiAhc2hvdWxkUmVsb2FkKG5ld1VSTCwgdXJsKCkpCiAgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8ganVzdCBzY3JvbGwgaWYgYSBsaW5rIGZyb20gd2l0aGluIGEKICAgICAgICAgLy8g
ZnJhbWVzZXQgaXMgdHJ5aW5nIHRvIHJlbG9hZCB0aGUgZnJhbWVzZXQgaW50byBfdG9wLgogICAg
ICAgICAmJiAhbV9mcmFtZS0+aXNGcmFtZVNldCgpKSB7CkBAIC0yMTQ1LDcgKzIxNDUsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyKiBsCiAvLyBGSVhNRTogSXQgd291
bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBjb2xsYXBzZSB0aGVzZSBpbnRvIG9uZSBvciB0d28gZnVu
Y3Rpb25zLgogYm9vbCBGcmFtZUxvYWRlcjo6Y2FuTG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzTG9jYWwodXJs
LnVybCgpKSkKKyAgICBpZiAoIXNob3VsZFRyZWF0VVJMQXNMb2NhbCh1cmwuc3RyaW5nKCkpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzaG91bGRUcmVhdFVSTEFzTG9jYWwo
cmVmZXJyZXIpOwpAQCAtMjE1Myw3ICsyMTUzLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuTG9h
ZChjb25zdCBLVVJMJiB1cgogCiBib29sIEZyYW1lTG9hZGVyOjpjYW5Mb2FkKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgRG9jdW1lbnQqIGRvYykKIHsKLSAgICBpZiAoIXNob3VsZFRyZWF0VVJMQXNM
b2NhbCh1cmwudXJsKCkpKQorICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc0xvY2FsKHVybC5zdHJp
bmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGRvYyAmJiBkb2MtPmlz
QWxsb3dlZFRvTG9hZExvY2FsUmVzb3VyY2VzKCk7CkBAIC0yMTg1LDcgKzIxODUsNyBAQCBib29s
IEZyYW1lTG9hZGVyOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uCiAgICAgaWYgKCFyZWZlcnJlcklz
U2VjdXJlVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIFVSTElzU2VjdXJl
VVJMID0gdXJsLnVybCgpLnN0YXJ0c1dpdGgoImh0dHBzOiIsIGZhbHNlKTsKKyAgICBib29sIFVS
TElzU2VjdXJlVVJMID0gdXJsLmRlcHJlY2F0ZWRTdHJpbmcoKS5zdGFydHNXaXRoKCJodHRwczoi
LCBmYWxzZSk7CiAKICAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwogfQpAQCAtMjM2MSw3ICsy
MzYxLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkQWxsb3dOYXZpZ2F0aW9uKAogICAgICAg
ICBEb2N1bWVudCogdGFyZ2V0RG9jdW1lbnQgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgZXJyb3IgbWVzc2FnZSBzaG91bGQgY29udGFpbiBtb3JlIHNw
ZWNpZmljcyBvZiB3aHkgdGhlIG5hdmlnYXRpb24gY2hhbmdlIGlzIG5vdCBhbGxvd2VkLgogICAg
ICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJVbnNhZmUgSmF2YVNjcmlwdCBh
dHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFuZ2UgZm9yIGZyYW1lIHdpdGggVVJM
ICVzIGZyb20gZnJhbWUgd2l0aCBVUkwgJXMuXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRhcmdldERvY3VtZW50LT5VUkwoKS51dGY4KCkuZGF0YSgpLCBhY3Rp
dmVEb2N1bWVudC0+VVJMKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0RG9jdW1lbnQtPnVybCgpLnV0ZjgoKS5kYXRhKCksIGFj
dGl2ZURvY3VtZW50LT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBpZiAoS0pTOjpJ
bnRlcnByZXRlcjo6c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAgICAgICAgICBwcmludGYo
IiVzIiwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKQEAgLTI1NTIsNyArMjU1Miw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgKICAgICB9IGVsc2UgeyAgICAgICAg
CiAgICAgICAgIEtVUkwgdXJsID0gcGRsLT5zdWJzdGl0dXRlRGF0YSgpLnJlc3BvbnNlVVJMKCk7
CiAgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICAgICAgdXJsID0gcGRsLT5VUkwo
KTsKKyAgICAgICAgICAgIHVybCA9IHBkbC0+dXJsKCk7CiAgICAgICAgIGlmICh1cmwuaXNFbXB0
eSgpKQogICAgICAgICAgICAgdXJsID0gcGRsLT5yZXNwb25zZVVSTCgpOwogICAgICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKQEAgLTI2ODAsOSArMjY4MCw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNs
aWVudFJlZGlyZWN0Q2FuY2VsbGUKICAgICBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbiA9IGZh
bHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwm
IFVSTCwgZG91YmxlIHNlY29uZHMsIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrSGlzdG9yeSwg
Ym9vbCBpc0phdmFTY3JpcHRGb3JtQWN0aW9uKQordm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVk
aXJlY3RlZChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUs
IGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgaXNKYXZhU2NyaXB0Rm9ybUFjdGlvbikKIHsKLSAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFVSTCwgc2Vjb25kcywg
ZmlyZURhdGUpOworICAgIG1fY2xpZW50LT5kaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QodXJsLCBzZWNvbmRzLCBmaXJlRGF0ZSk7CiAgICAgCiAgICAgLy8gUmVtZW1iZXIgdGhhdCB3
ZSBzZW50IGEgcmVkaXJlY3Qgbm90aWZpY2F0aW9uIHRvIHRoZSBmcmFtZSBsb2FkIGRlbGVnYXRl
IHNvIHRoYXQgd2hlbiB3ZSBjb21taXQKICAgICAvLyB0aGUgbmV4dCBwcm92aXNpb25hbCBsb2Fk
LCB3ZSBjYW4gc2VuZCBhIGNvcnJlc3BvbmRpbmcgLXdlYlZpZXc6ZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZToKQEAgLTI3NDAsMTMgKzI3NDAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
b3BlbihDYWNoZWRQYWdlJiBjYWNoZQogICAgICAgICBtX2ZyYW1lLT5zZXRKU0RlZmF1bHRTdGF0
dXNCYXJUZXh0KFN0cmluZygpKTsKICAgICB9CiAKLSAgICBLVVJMIFVSTCA9IGNhY2hlZFBhZ2Uu
VVJMKCk7CisgICAgS1VSTCB1cmwgPSBjYWNoZWRQYWdlLnVybCgpOwogCi0gICAgaWYgKFVSTC5w
cm90b2NvbCgpLnN0YXJ0c1dpdGgoImh0dHAiKSAmJiAhVVJMLmhvc3QoKS5pc0VtcHR5KCkgJiYg
VVJMLnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIFVSTC5zZXRQYXRoKCIvIik7CisgICAgaWYg
KHVybC5wcm90b2NvbCgpLnN0YXJ0c1dpdGgoImh0dHAiKSAmJiAhdXJsLmhvc3QoKS5pc0VtcHR5
KCkgJiYgdXJsLnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgIHVybC5zZXRQYXRoKCIvIik7CiAg
ICAgCi0gICAgbV9VUkwgPSBVUkw7Ci0gICAgbV93b3JraW5nVVJMID0gVVJMOworICAgIG1fVVJM
ID0gdXJsOworICAgIG1fd29ya2luZ1VSTCA9IHVybDsKIAogICAgIHN0YXJ0ZWQoKTsKIApAQCAt
Mjc1OSw3ICsyNzU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRQYWdlJiBjYWNo
ZQogICAgIG1fbmVlZHNDbGVhciA9IHRydWU7CiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAg
ICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IGZhbHNlOwotICAgIG1fb3V0Z29pbmdSZWZlcnJl
ciA9IFVSTC51cmwoKTsKKyAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7CiAK
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjYWNoZWRQYWdlLnZpZXcoKTsKICAgICBpZiAodmlldykK
QEAgLTI3OTUsMTggKzI3OTUsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpmaW5pc2hlZExvYWRpbmco
KQogICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7CiB9CiAKLS8vIEZJWE1FOiBXaGljaCBvbmUgb2Yg
dGhlc2UgVVJMIG1ldGhvZHMgaXMgcmlnaHQ/Ci0KLUtVUkwgRnJhbWVMb2FkZXI6OnVybCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fVVJMOwotfQotCi1LVVJMIEZyYW1lTG9hZGVyOjpVUkwoKSBj
b25zdAotewotICAgIHJldHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5VUkwoKTsKLX0KLQog
Ym9vbCBGcmFtZUxvYWRlcjo6aXNBcmNoaXZlTG9hZFBlbmRpbmcoUmVzb3VyY2VMb2FkZXIqIGxv
YWRlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQtPmlzQXJjaGl2ZUxvYWRQZW5kaW5n
KGxvYWRlcik7CkBAIC0zMTYyLDE0ICszMTUwLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnRva2Vu
aXplclByb2Nlc3NlZERhdGEKICAgICBjaGVja0NvbXBsZXRlZCgpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyOjpkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmluZyYgVVJMKQordm9pZCBG
cmFtZUxvYWRlcjo6ZGlkVGVsbEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcmIHVybCkKIHsK
LSAgICBtX3VybHNCcmlkZ2VLbm93c0Fib3V0LmFkZChVUkwpOworICAgIG1fdXJsc0JyaWRnZUtu
b3dzQWJvdXQuYWRkKHVybCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmhhdmVUb2xkQnJpZGdl
QWJvdXRMb2FkKGNvbnN0IFN0cmluZyYgVVJMKQorYm9vbCBGcmFtZUxvYWRlcjo6aGF2ZVRvbGRC
cmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgcmV0dXJuIG1fdXJsc0Jy
aWRnZUtub3dzQWJvdXQuY29udGFpbnMoVVJMKTsKKyAgICByZXR1cm4gbV91cmxzQnJpZGdlS25v
d3NBYm91dC5jb250YWlucyh1cmwpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25s
b2FkRXZlbnRzKCkKQEAgLTMyMzcsNyArMzIyNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1p
dHRlZExvYWQoRG9jdW1lbnQKICAgICBtX2NsaWVudC0+Y29tbWl0dGVkTG9hZChsb2FkZXIsIGRh
dGEsIGxlbmd0aCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnBvc3QoY29uc3QgS1VSTCYgVVJM
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIAordm9pZCBGcmFtZUxvYWRlcjo6cG9zdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgCiAgICAgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSwgRXZlbnQqIGV2ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiBmb3JtVmFsdWVzKQogewogICAgIC8vIFdoZW4gcG9zdGluZywg
dXNlIHRoZSBOU1VSTFJlcXVlc3RSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSBsb2FkIGZsYWcuCkBA
IC0zMjQ2LDcgKzMyMzQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwb3N0KGNvbnN0IEtVUkwmIFVS
TCwgCiAKICAgICAvLyBGSVhNRTogV2hlcmUncyB0aGUgY29kZSB0aGF0IGltcGxlbWVudHMgd2hh
dCB0aGUgY29tbWVudCBhYm92ZSBzYXlzPwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
VVJMKTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIGFkZEV4dHJhRmll
bGRzVG9SZXF1ZXN0KHJlcXVlc3QsIHRydWUsIHRydWUpOwogCiAgICAgaWYgKCFyZWZlcnJlci5p
c0VtcHR5KCkpCkBAIC0zMjU1LDcgKzMyNDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwb3N0KGNv
bnN0IEtVUkwmIFVSTCwgCiAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShmb3JtRGF0YSk7CiAgICAg
cmVxdWVzdC5zZXRIVFRQQ29udGVudFR5cGUoY29udGVudFR5cGUpOwogCi0gICAgTmF2aWdhdGlv
bkFjdGlvbiBhY3Rpb24oVVJMLCBGcmFtZUxvYWRUeXBlU3RhbmRhcmQsIHRydWUsIGV2ZW50KTsK
KyAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbih1cmwsIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCwg
dHJ1ZSwgZXZlbnQpOwogCiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlOwogICAgIGlm
IChmb3JtICYmICFmb3JtVmFsdWVzLmlzRW1wdHkoKSkKQEAgLTMzMTAsNyArMzI5OCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3UKIAogICAgIGlmIChlcnJvci5p
c051bGwoKSkgewogICAgICAgICBBU1NFUlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOwotICAgICAg
ICBkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKG5ld1JlcXVlc3QudXJsKCkudXJsKCkpOworICAgICAg
ICBkaWRUZWxsQnJpZGdlQWJvdXRMb2FkKG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwogICAg
ICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShuZXdSZXF1ZXN0
LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgIH0KICAgICAKQEAgLTM0MTIsMTAgKzM0MDAs
MTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbAogICAgIGlmICgh
c2hvdWxkQ29udGludWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgVVJMID0gcmVxdWVz
dC51cmwoKTsKKyAgICBLVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgCi0gICAgbV9kb2N1
bWVudExvYWRlci0+cmVwbGFjZVJlcXVlc3RVUkxGb3JBbmNob3JTY3JvbGwoVVJMKTsKLSAgICBp
ZiAoIWlzUmVkaXJlY3QgJiYgIXNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KFVSTCkpIHsK
KyAgICBtX2RvY3VtZW50TG9hZGVyLT5yZXBsYWNlUmVxdWVzdFVSTEZvckFuY2hvclNjcm9sbCh1
cmwpOworICAgIGlmICghaXNSZWRpcmVjdCAmJiAhc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQodXJsKSkgewogICAgICAgICAvLyBOQjogbXVzdCBoYXBwZW4gYWZ0ZXIgX3NldFVSTCwgc2lu
Y2Ugd2UgYWRkIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJlcXVlc3QuCiAgICAgICAgIC8vIE11c3Qg
YWxzbyBoYXBwZW4gYmVmb3JlIHdlIG9wZW5VUkwgYW5kIGRpc3BsYWNlIHRoZSBzY3JvbGwgcG9z
aXRpb24sIHNpbmNlCiAgICAgICAgIC8vIGFkZGluZyB0aGUgQkYgaXRlbSB3aWxsIHNhdmUgYXdh
eSBzY3JvbGwgc3RhdGUuCkBAIC0zNDMwLDcgKzM0MTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpj
b250aW51ZUZyYWdtZW50U2Nyb2xsCiAgICAgICAgIGFkZEhpc3RvcnlJdGVtRm9yRnJhZ21lbnRT
Y3JvbGwoKTsKICAgICB9CiAgICAgCi0gICAgc2Nyb2xsVG9BbmNob3IoVVJMKTsKKyAgICBzY3Jv
bGxUb0FuY2hvcih1cmwpOwogICAgIAogICAgIGlmICghaXNSZWRpcmVjdCkKICAgICAgICAgLy8g
VGhpcyB3aWxsIGNsZWFyIHByZXZpb3VzSXRlbSBmcm9tIHRoZSByZXN0IG9mIHRoZSBmcmFtZSB0
cmVlIHRoYXQgZGlkbid0CkBAIC0zNzgyLDExICszNzcwLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNhY2hlUGFnZUZvckhpc3RvcnlJdGUKICAgICB9CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OnNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmIFVSTCkgY29uc3QKK2Jvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEhpc3RvcnlJdGVtKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIFVSTCA9PSBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+dXJsKCkg
fHwgVVJMID09IG1fY3VycmVudEhpc3RvcnlJdGVtLT5vcmlnaW5hbFVSTCgpOworICAgIHJldHVy
biB1cmwgPT0gbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnVybCgpIHx8IHVybCA9PSBtX2N1cnJlbnRI
aXN0b3J5SXRlbS0+b3JpZ2luYWxVUkwoKTsKIH0KIAogUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
RnJhbWVMb2FkZXI6OmNyZWF0ZUhpc3RvcnlJdGVtKGJvb2wgdXNlT3JpZ2luYWwpCkBAIC0zODA5
LDcgKzM3OTcsNyBAQCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRlcjo6Y3JlCiAg
ICAgICAgICAgICB1cmwgPSBkb2NMb2FkZXItPnJlcXVlc3RVUkwoKTsgICAgICAgICAgICAgICAg
CiAgICAgfQogCi0gICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogQ3JlYXRpbmcgaXRl
bSBmb3IgJXMiLCB1cmwudXJsKCkuYXNjaWkoKSk7CisgICAgTE9HKEhpc3RvcnksICJXZWJDb3Jl
SGlzdG9yeTogQ3JlYXRpbmcgaXRlbSBmb3IgJXMiLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRh
KCkpOwogICAgIAogICAgIC8vIEZyYW1lcyB0aGF0IGhhdmUgbmV2ZXIgc3VjY2Vzc2Z1bGx5IGxv
YWRlZCBhbnkgY29udGVudAogICAgIC8vIG1heSBoYXZlIG5vIFVSTCBhdCBhbGwuIEN1cnJlbnRs
eSBvdXIgaGlzdG9yeSBjb2RlIGNhbid0CkBAIC0zODIyLDcgKzM4MTAsNyBAQCBQYXNzUmVmUHRy
PEhpc3RvcnlJdGVtPiBGcmFtZUxvYWRlcjo6Y3JlCiAgICAgICAgIG9yaWdpbmFsVVJMID0gS1VS
TCgiYWJvdXQ6YmxhbmsiKTsKICAgICAKICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBu
ZXcgSGlzdG9yeUl0ZW0odXJsLCBtX2ZyYW1lLT50cmVlKCktPm5hbWUoKSwgbV9mcmFtZS0+dHJl
ZSgpLT5wYXJlbnQoKSA/IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCktPnRyZWUoKS0+bmFtZSgp
IDogIiIsIGRvY0xvYWRlciA/IGRvY0xvYWRlci0+dGl0bGUoKSA6ICIiKTsKLSAgICBpdGVtLT5z
ZXRPcmlnaW5hbFVSTFN0cmluZyhvcmlnaW5hbFVSTC51cmwoKSk7CisgICAgaXRlbS0+c2V0T3Jp
Z2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOwogICAgIAogICAgIC8vIFNhdmUg
Zm9ybSBzdGF0ZSBpZiB0aGlzIGlzIGEgUE9TVAogICAgIGlmIChkb2NMb2FkZXIpIHsKQEAgLTM4
NTMsNyArMzg0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEJhY2tGb3J3YXJkSXRlbUNsaXAK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0g
ZnJhbWVMb2FkZXItPmNyZWF0ZUhpc3RvcnlJdGVtVHJlZShtX2ZyYW1lLCBkb0NsaXApOwotICAg
ICAgICAgICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJh
Y2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgaXRlbS5nZXQoKSwgZG9jdW1lbnRMb2Fk
ZXIoKS0+VVJMKCkudXJsKCkuYXNjaWkoKSk7CisgICAgICAgICAgICBMT0coQmFja0ZvcndhcmQs
ICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2ZvcndhcmQgaXRlbSAlcCBmb3IgZnJh
bWUgJXMiLCBpdGVtLmdldCgpLCBkb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgICAgICAgICBwYWdlLT5iYWNrRm9yd2FyZExpc3QoKS0+YWRkSXRl
bShpdGVtKTsKICAgICAgICAgfQogfQpAQCAtMzk3Niw3ICszOTY0LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0qIAogICAgIEtVUkwgaXRlbU9yaWdpbmFsVVJMID0g
aXRlbS0+b3JpZ2luYWxVUkwoKTsKICAgICBLVVJMIGN1cnJlbnRVUkw7CiAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCkpCi0gICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT5VUkwo
KTsKKyAgICAgICAgY3VycmVudFVSTCA9IGRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgIFJl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpdGVtLT5mb3JtRGF0YSgpOwogCiAgICAgLy8gQXJl
IHdlIG5hdmlnYXRpbmcgdG8gYW4gYW5jaG9yIHdpdGhpbiB0aGUgcGFnZT8KQEAgLTQwMzAsNyAr
NDAxOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJdGVtKEhpc3RvcnlJdGVtKiAKICAgICAg
ICAgICAgICAgICBsb2FkKGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCksIGxvYWRUeXBlLCAw
KTsgICAKICAgICAgICAgICAgICAgICBpblBhZ2VDYWNoZSA9IHRydWU7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBh
Z2UgZm9yICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFz
IGV4cGlyZWQiLCBtX3Byb3Zpc2lvbmFsSGlzdG9yeUl0ZW0tPnVybCgpLnVybCgpLmFzY2lpKCkp
OworICAgICAgICAgICAgICAgIExPRyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9y
ICVzIGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGly
ZWQiLCBtX3Byb3Zpc2lvbmFsSGlzdG9yeUl0ZW0tPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpKTsKICAgICAgICAgICAgICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKGl0ZW0pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC00MDk1LDcgKzQwODMsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkSXRlbShIaXN0b3J5SXRlbSogCiAvLyBXYWxrIHRoZSBmcmFtZSB0cmVlIGFuZCBlbnN1
cmUgdGhhdCB0aGUgVVJMcyBtYXRjaCB0aGUgVVJMcyBpbiB0aGUgaXRlbS4KIGJvb2wgRnJhbWVM
b2FkZXI6OnVybHNNYXRjaEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0CiB7Ci0gICAgS1VS
TCBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+VVJMKCk7CisgICAgS1VSTCBjdXJyZW50
VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAgICAgCiAgICAgaWYgKCFlcXVhbElnbm9y
aW5nUmVmKGN1cnJlbnRVUkwsIGl0ZW0tPnVybCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNDE0Nyw3ICs0MTM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjdXJzaXZlR29Ub0l0ZW0o
SGlzdAogICAgIEtVUkwgaXRlbVVSTCA9IGl0ZW0tPnVybCgpOwogICAgIEtVUkwgY3VycmVudFVS
TDsKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgY3VycmVudFVSTCA9IGRvY3Vt
ZW50TG9hZGVyKCktPlVSTCgpOworICAgICAgICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCk7CiAgICAgCiAgICAgLy8gQWx3YXlzIHJlbG9hZCB0aGUgdGFyZ2V0IGZyYW1lIG9m
IHRoZSBpdGVtIHdlJ3JlIGdvaW5nIHRvLiAgVGhpcyBlbnN1cmVzIHRoYXQgd2Ugd2lsbAogICAg
IC8vIGRvIC1zb21lLSBsb2FkIGZvciB0aGUgdHJhbnNpdGlvbiwgd2hpY2ggbWVhbnMgYSBwcm9w
ZXIgbm90aWZpY2F0aW9uIHdpbGwgYmUgcG9zdGVkCkBAIC00MjIxLDcgKzQyMDksNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjphZGRIaXN0b3J5Rm9yQ3VycmVudExvCiAKIHZvaWQgRnJhbWVMb2FkZXI6
OnVwZGF0ZUhpc3RvcnlGb3JTdGFuZGFyZExvYWQoKQogewotICAgIExPRyhIaXN0b3J5LCAiV2Vi
Q29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIFN0YW5kYXJkIExvYWQgaW4gZnJhbWUg
JXMiLCBkb2N1bWVudExvYWRlcigpLT5VUkwoKS51cmwoKS5hc2NpaSgpKTsKKyAgICBMT0coSGlz
dG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBTdGFuZGFyZCBMb2Fk
IGluIGZyYW1lICVzIiwgZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgIAogICAgIGJvb2wgZnJhbWVOYXZpZ2F0aW9uT25Mb2FkID0gZmFsc2U7CiAg
ICAgCkBAIC00MjM3LDcgKzQyMjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVIaXN0b3J5
Rm9yU3RhbmRhCiAgICAgICAgIGlmICghZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZEhpc3RvcnlGb3JDdXJyZW50TG9jYXRpb24oKTsK
ICAgICB9IGVsc2UgaWYgKGRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0
eSgpICYmIG1fY3VycmVudEhpc3RvcnlJdGVtKSB7Ci0gICAgICAgIG1fY3VycmVudEhpc3RvcnlJ
dGVtLT5zZXRVUkwoZG9jdW1lbnRMb2FkZXIoKS0+VVJMKCkpOworICAgICAgICBtX2N1cnJlbnRI
aXN0b3J5SXRlbS0+c2V0VVJMKGRvY3VtZW50TG9hZGVyKCktPnVybCgpKTsKICAgICAgICAgbV9j
dXJyZW50SGlzdG9yeUl0ZW0tPnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIo
KS0+cmVxdWVzdCgpKTsKICAgICB9CiAgICAgCkBAIC00MzA2LDcgKzQyOTQsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjp1cGRhdGVIaXN0b3J5Rm9yUmVkaXJlCiAgICAgICAgIGlmICghbV9jdXJyZW50
SGlzdG9yeUl0ZW0gJiYgIW1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgICAgICBh
ZGRIaXN0b3J5Rm9yQ3VycmVudExvY2F0aW9uKCk7CiAgICAgICAgIGlmIChtX2N1cnJlbnRIaXN0
b3J5SXRlbSkgewotICAgICAgICAgICAgbV9jdXJyZW50SGlzdG9yeUl0ZW0tPnNldFVSTChkb2N1
bWVudExvYWRlcigpLT5VUkwoKSk7CisgICAgICAgICAgICBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+
c2V0VVJMKGRvY3VtZW50TG9hZGVyKCktPnVybCgpKTsKICAgICAgICAgICAgIG1fY3VycmVudEhp
c3RvcnlJdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9hZGVyKCktPnJlcXVl
c3QoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShy
ZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MiwxNSArMjcyLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9vbCk7CiAKLSAgICAgICAgdm9pZCBjaGFuZ2VMb2Nh
dGlvbihjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2Nr
SGlzdG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0gICAgICAgIHZvaWQg
Y2hhbmdlTG9jYXRpb24oY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKKyAgICAg
ICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxz
ZSk7CisgICAgICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0g
ZmFsc2UpOwogICAgICAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBFdmVudCosIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgdXNl
ckdlc3R1cmUpOwogICAgICAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmLCBFdmVudCosIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgdXNlckdlc3R1cmUpOwogICAgICAg
Ci0gICAgICAgIGJvb2wgcmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0
IFN0cmluZyYgVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgICAgIEZy
YW1lKiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYgVVJM
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgICAgICBi
b29sIHJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUpOworICAgICAgICBGcmFtZSogbG9hZFN1
YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCi0gICAgICAgIHZvaWQgc3VibWl0Rm9y
bShjb25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgVVJMLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYgYm91bmRhcnksIEV2ZW50Kik7CisgICAgICAgIHZvaWQgc3VibWl0Rm9ybShj
b25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0
IFN0cmluZyYgYm91bmRhcnksIEV2ZW50Kik7CiAgICAgICAgIHZvaWQgc3VibWl0Rm9ybUFnYWlu
KCk7CiAgICAgICAgIHZvaWQgc3VibWl0Rm9ybShjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgRXZl
bnQqKTsKIApAQCAtMjk4LDggKzI5OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
S1VSTCBkYXRhVVJMQmFzZUZyb21SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBpc1NjaGVkdWxlZExvY2F0aW9uQ2hhbmdlUGVuZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gJiYgaXNMb2NhdGlvbkNo
YW5nZSgqbV9zY2hlZHVsZWRSZWRpcmVjdGlvbik7IH0KLSAgICAgICAgdm9pZCBzY2hlZHVsZUhU
VFBSZWRpcmVjdGlvbihkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgVVJMKTsKLSAgICAgICAg
dm9pZCBzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9
IGZhbHNlKTsKKyAgICAgICAgdm9pZCBzY2hlZHVsZUhUVFBSZWRpcmVjdGlvbihkb3VibGUgZGVs
YXksIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAgICAgdm9pZCBzY2hlZHVsZUxvY2F0aW9uQ2hh
bmdlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tI
aXN0b3J5ID0gdHJ1ZSwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBz
Y2hlZHVsZVJlZnJlc2goYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBz
Y2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcyk7CiAKQEAgLTMxOSw3ICszMTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3Ry
aW5nJiBlbmNvZGluZywgYm9vbCB1c2VyQ2hvc2VuKTsKICAgICAgICAgU3RyaW5nIGVuY29kaW5n
KCkgY29uc3Q7CiAKLSAgICAgICAgS0pTOjpKU1ZhbHVlKiBleGVjdXRlU2NyaXB0KGNvbnN0IFN0
cmluZyYgVVJMLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKKyAgICAgICAg
S0pTOjpKU1ZhbHVlKiBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgYmFzZUxp
bmUsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKICAgICAgICAgS0pTOjpKU1ZhbHVlKiBleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxz
ZSk7CiAKICAgICAgICAgdm9pZCBnb3RvQW5jaG9yKCk7CkBAIC0zNTcsOSArMzU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZnJhbWVEZXRhY2hlZCgpOwogCi0gICAg
ICAgIC8vIEZJWE1FOiBXaGljaCBvbmUgb2YgdGhlc2UgVVJMIG1ldGhvZHMgaXMgcmlnaHQ/Ci0g
ICAgICAgIEtVUkwgdXJsKCkgY29uc3Q7Ci0gICAgICAgIEtVUkwgVVJMKCkgY29uc3Q7CisgICAg
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9CiAKICAgICAgICAg
dm9pZCB1cGRhdGVCYXNlVVJMRm9yRW1wdHlEb2N1bWVudCgpOwogCkBAIC0zNzksMTMgKzM3Nywx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29u
c3Q7CiAKLSAgICAgICAgYm9vbCByZXF1ZXN0T2JqZWN0KFJlbmRlclBhcnQqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIFVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsCisgICAgICAgIGJv
b2wgcmVxdWVzdE9iamVjdChSZW5kZXJQYXJ0KiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBz
ZXJ2aWNlVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAKLSAgICAgICAgS1VSTCBjb21wbGV0ZVVSTChjb25z
dCBTdHJpbmcmIFVSTCk7CisgICAgICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpOwogCi0gICAgICAgIHZvaWQgZGlkVGVsbEJyaWRnZUFib3V0TG9hZChjb25zdCBTdHJpbmcm
IFVSTCk7Ci0gICAgICAgIGJvb2wgaGF2ZVRvbGRCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5n
JiBVUkwpOworICAgICAgICB2b2lkIGRpZFRlbGxCcmlkZ2VBYm91dExvYWQoY29uc3QgU3RyaW5n
JiB1cmwpOworICAgICAgICBib29sIGhhdmVUb2xkQnJpZGdlQWJvdXRMb2FkKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKIAogICAgICAgICBLVVJMIG9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0OwogCklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3Jl
L2xvYWRlci9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw3
IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3QKICAgICAKICAgICBp
bWFnZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsICItd2Via2l0LXVzZXItc2VsZWN0
OiBub25lIik7ICAgICAgICAKICAgICBpbWFnZUVsZW1lbnQtPnNldExvYWRNYW51YWxseSh0cnVl
KTsKLSAgICBpbWFnZUVsZW1lbnQtPnNldFNyYyhVUkwoKSk7CisgICAgaW1hZ2VFbGVtZW50LT5z
ZXRTcmModXJsKCkpOwogICAgIAogICAgIGJvZHktPmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCwg
ZWMpOwogICAgIApJbmRleDogV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Myw5ICsxNzMsOSBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KG5ld1JlcXVlc3QsIGNhbGxDb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeSwgdGhpcyk7CiB9
CiAKLXN0YXRpYyBib29sIHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoY29uc3QgS1VSTCYgVVJM
KQorc3RhdGljIGJvb2wgc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgcmV0dXJuIFVSTC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5n
KFVSTC5wcm90b2NvbCgpKSwgImFib3V0Iik7CisgICAgcmV0dXJuIHVybC5pc0VtcHR5KCkgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoU3RyaW5nKHVybC5wcm90b2NvbCgpKSwgImFib3V0Iik7CiB9CiAK
IHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xp
Y3lBY3Rpb24gY29udGVudFBvbGljeSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKQEAgLTI5
NSw3ICsyOTUsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoCiAK
IHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKCkKIHsKLSAgICBBU1NF
UlQoc2hvdWxkTG9hZEFzRW1wdHlEb2N1bWVudChmcmFtZUxvYWRlcigpLT5VUkwoKSkgfHwgIWRl
ZmVyc0xvYWRpbmcoKSk7CisgICAgQVNTRVJUKHNob3VsZExvYWRBc0VtcHR5RG9jdW1lbnQoZnJh
bWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkpIHx8ICFkZWZlcnNMb2Fk
aW5nKCkpOwogCiAgICAgLy8gVGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhp
bmcgaW5jbHVkaW5nIHBvc3NpYmx5IHJlbW92aW5nIHRoZSBsYXN0CiAgICAgLy8gcmVmZXJlbmNl
IHRvIHRoaXMgb2JqZWN0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHJl
dmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDI5ICs1MiwyOSBAQCBOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0
aW9uQWN0aW9uKCkKIHsKIH0KIAotTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlvbkFjdGlvbihj
b25zdCBLVVJMJiBVUkwsIE5hdmlnYXRpb25UeXBlIHR5cGUpCi0gICAgOiBtX1VSTChVUkwpCitO
YXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2aWdh
dGlvblR5cGUgdHlwZSkKKyAgICA6IG1fVVJMKHVybCkKICAgICAsIG1fdHlwZSh0eXBlKQogewog
fQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIFVSTCwg
RnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlLAorTmF2aWdhdGlvbkFjdGlvbjo6TmF2aWdhdGlv
bkFjdGlvbihjb25zdCBLVVJMJiB1cmwsIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSwKICAg
ICAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uKQotICAgIDogbV9VUkwoVVJMKQorICAgIDogbV9V
UkwodXJsKQogICAgICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9y
bVN1Ym1pc3Npb24sIDApKQogewogfQogCi1OYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IEtVUkwmIFVSTCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCi0gICAgOiBtX1VSTChVUkwpCitOYXZpZ2F0aW9uQWN0aW9uOjpOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgTmF2aWdhdGlvblR5cGUgdHlwZSwgUGFzc1JlZlB0cjxF
dmVudD4gZXZlbnQpCisgICAgOiBtX1VSTCh1cmwpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAs
IG1fZXZlbnQoZXZlbnQpCiB7CiB9CiAKLU5hdmlnYXRpb25BY3Rpb246Ok5hdmlnYXRpb25BY3Rp
b24oY29uc3QgS1VSTCYgVVJMLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUsCitOYXZpZ2F0
aW9uQWN0aW9uOjpOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IEtVUkwmIHVybCwgRnJhbWVMb2FkVHlw
ZSBmcmFtZUxvYWRUeXBlLAogICAgICAgICBib29sIGlzRm9ybVN1Ym1pc3Npb24sIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQotICAgIDogbV9VUkwoVVJMKQorICAgIDogbV9VUkwodXJsKQogICAg
ICwgbV90eXBlKG5hdmlnYXRpb25UeXBlKGZyYW1lTG9hZFR5cGUsIGlzRm9ybVN1Ym1pc3Npb24s
IGV2ZW50KSkKICAgICAsIG1fZXZlbnQoZXZlbnQpCiB7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5oCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25B
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9VUkwuaXNFbXB0
eSgpOyB9CiAKLSAgICAgICAgS1VSTCBVUkwoKSBjb25zdCB7IHJldHVybiBtX1VSTDsgfQorICAg
ICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fVVJMOyB9CiAgICAgICAgIE5hdmlnYXRp
b25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICAgICAgY29uc3QgRXZl
bnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudC5nZXQoKTsgfQogCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9QbHVnaW5Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2Fk
ZXIvUGx1Z2luRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVy
L1BsdWdpbkRvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lk
IFBsdWdpblRva2VuaXplcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1CiAgICAgbV9lbWJlZEVsZW1lbnQt
PnNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCAiMTAwJSIpOwogICAgIAogICAgIG1fZW1iZWRFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUobmFtZUF0dHIsICJwbHVnaW4iKTsKLSAgICBtX2VtYmVkRWxlbWVu
dC0+c2V0U3JjKG1fZG9jLT5VUkwoKSk7CisgICAgbV9lbWJlZEVsZW1lbnQtPnNldFNyYyhtX2Rv
Yy0+dXJsKCkpOwogICAgIG1fZW1iZWRFbGVtZW50LT5zZXRUeXBlKG1fZG9jLT5mcmFtZSgpLT5s
b2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKTsKICAgICAKICAgICBib2R5LT5hcHBlbmRDaGls
ZChlbWJlZEVsZW1lbnQsIGVjKTsgICAgCkluZGV4OiBXZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBTdWJyZXNvdXJjZUxvYWRl
cjo6flN1YnJlc291cmNlTG9hZGVyKCkKIAogYm9vbCBTdWJyZXNvdXJjZUxvYWRlcjo6bG9hZChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiB7Ci0gICAgbV9mcmFtZS0+bG9hZGVyKCktPmRpZFRl
bGxCcmlkZ2VBYm91dExvYWQoci51cmwoKS51cmwoKSk7CisgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmRpZFRlbGxCcmlkZ2VBYm91dExvYWQoci51cmwoKS5zdHJpbmcoKSk7CiAgICAgCiAgICAgcmV0
dXJuIFJlc291cmNlTG9hZGVyOjpsb2FkKHIpOwogfQpAQCAtOTYsNyArOTYsNyBAQCBQYXNzUmVm
UHRyPFN1YnJlc291cmNlTG9hZGVyPiBTdWJyZXNvdXJjCiAgICAgaWYgKCFza2lwQ2FuTG9hZENo
ZWNrCiAgICAgICAgICAgICAmJiBGcmFtZUxvYWRlcjo6cmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkK
ICAgICAgICAgICAgICYmICFGcmFtZUxvYWRlcjo6Y2FuTG9hZChyZXF1ZXN0LnVybCgpLCBmcmFt
ZS0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZh
aWxlZChmcmFtZS0+cGFnZSgpLCByZXF1ZXN0LnVybCgpLnVybCgpKTsKKyAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZS0+cGFnZSgpLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApJbmRleDogV2ViQ29y
ZS9sb2FkZXIvbG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9sb2FkZXIu
Y3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTczLDEwICs3MywxMCBAQCB2b2lkIExvYWRlcjo6c2VydmVQZW5kaW5nUmVx
dWVzdHMoKQogICAgICAgICBpZiAoIXJlcS0+Y2FjaGVkUmVzb3VyY2UoKS0+YWNjZXB0KCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQWNjZXB0KHJlcS0+Y2FjaGVkUmVz
b3VyY2UoKS0+YWNjZXB0KCkpOwogCi0gICAgICAgIEtVUkwgciA9IGRsLT5kb2MoKS0+VVJMKCk7
CisgICAgICAgIEtVUkwgciA9IGRsLT5kb2MoKS0+dXJsKCk7CiAgICAgICAgIGlmIChyLnByb3Rv
Y29sKCkuc3RhcnRzV2l0aCgiaHR0cCIpICYmIHIucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHIuc2V0UGF0aCgiLyIpOwotICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyLnVy
bCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoci5zdHJpbmcoKSk7CiAgICAg
ICAgIERlcHJlY2F0ZWRTdHJpbmcgZG9tYWluID0gci5ob3N0KCk7CiAgICAgICAgIGlmIChkbC0+
ZG9jKCktPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgICAgICBkb21haW4gPSBzdGF0aWNfY2Fz
dDxIVE1MRG9jdW1lbnQqPihkbC0+ZG9jKCkpLT5kb21haW4oKS5kZXByZWNhdGVkU3RyaW5nKCk7
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAJKHJldmlzaW9uIDI4NjAyKQorKysg
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCB2b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAKICAgICBSZWZQdHI8
U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUobV9m
cmFtZSwgdGhpcywgbV9mcmFtZS0+bG9hZGVyKCktPmljb25VUkwoKSk7CiAgICAgaWYgKCFsb2Fk
ZXIpCi0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHN0YXJ0IGxvYWQgZm9yIGljb24gYXQg
dXJsICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmljb25VUkwoKS51cmwoKS5hc2NpaSgpKTsKKyAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gc3RhcnQgbG9hZCBmb3IgaWNvbiBhdCB1cmwgJXMi
LCBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvblVSTCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
IAogICAgIC8vIFN0b3JlIHRoZSBoYW5kbGUgc28gd2UgY2FuIGNhbmNlbCB0aGUgbG9hZCBpZiBz
dG9wTG9hZGluZyBpcyBjYWxsZWQgbGF0ZXIuCiAgICAgLy8gQnV0IG9ubHkgZG8gaXQgaWYgdGhl
IGxvYWQgaGFzbid0IGFscmVhZHkgY29tcGxldGVkLgpAQCAtMTM4LDcgKzEzOCw2IEBAIHZvaWQg
SWNvbkxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhTdWJyZXMKIAogdm9pZCBJY29uTG9hZGVyOjpm
aW5pc2hMb2FkaW5nKGNvbnN0IEtVUkwmIGljb25VUkwsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhKQogewotCiAgICAgLy8gV2hlbiBhbiBpY29uIGxvYWQgcmVzdWx0cyBpbiBhIDQwNCB3
ZSBjb21taXQgaXQgdG8gdGhlIGRhdGFiYXNlIGhlcmUgYW5kIGNsZWFyIHRoZSBsb2FkaW5nIHN0
YXRlLiAgCiAgICAgLy8gQnV0IHRoZSBTdWJyZXNvdXJjZUxvYWRlciBjb250aW51ZXMgcHVsbGlu
ZyBpbiBkYXRhIGluIHRoZSBiYWNrZ3JvdW5kIGZvciB0aGUgNDA0IHBhZ2UgaWYgdGhlIHNlcnZl
ciBzZW5kcyBvbmUuICAKICAgICAvLyBPbmNlIHRoYXQgZGF0YSBmaW5pc2hlcyBsb2FkaW5nIG9y
IGlmIHRoZSBsb2FkIGlzIGNhbmNlbGxlZCB3aGlsZSB0aGF0IGRhdGEgaXMgYmVpbmcgcmVhZCwg
ZmluaXNoTG9hZGluZyBlbmRzIHVwIGJlaW5nIGNhbGxlZCBhIHNlY29uZCB0aW1lLgpAQCAtMTQ3
LDggKzE0Niw4IEBAIHZvaWQgSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZyhjb25zdCBLVVIKICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ2MzM5Mj4gdHJhY2tzIHRoYXQgZW5oYW5jZW1lbnQKICAg
ICAKICAgICBpZiAoIWljb25VUkwuaXNFbXB0eSgpICYmIG1fbG9hZElzSW5Qcm9ncmVzcykgewot
ICAgICAgICBpY29uRGF0YWJhc2UoKS0+c2V0SWNvbkRhdGFGb3JJY29uVVJMKGRhdGEsIGljb25V
UkwudXJsKCkpOwotICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNo
TG9hZGluZygpIC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgaWNvblVSTC51
cmwoKS5hc2NpaSgpKTsKKyAgICAgICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25EYXRhRm9ySWNv
blVSTChkYXRhLCBpY29uVVJMLnN0cmluZygpKTsKKyAgICAgICAgTE9HKEljb25EYXRhYmFzZSwg
Ikljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIENvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBk
YXRhYmFzZSIsIGljb25VUkwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBtX2Zy
YW1lLT5sb2FkZXIoKS0+Y29tbWl0SWNvblVSTFRvSWNvbkRhdGFiYXNlKGljb25VUkwpOwogICAg
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubQkocmV2
aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubQko
d29ya2luZyBjb3B5KQpAQCAtOTgsMTEgKzk4LDkgQEAgTlNEYXRhICp1cmxPcmlnaW5hbERhdGEo
TlNVUkwgKnVybCkKICAgICBOU0RhdGEgKmRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNOb0Nv
cHk6YnVmZmVyIGxlbmd0aDpieXRlc0ZpbGxlZCBmcmVlV2hlbkRvbmU6WUVTXTsKICAgICAKICAg
ICBOU1VSTCAqYmFzZVVSTCA9IChOU1VSTCAqKUNGVVJMR2V0QmFzZVVSTCgoQ0ZVUkxSZWYpdXJs
KTsKLSAgICBpZiAoYmFzZVVSTCkgewotICAgICAgICBOU1VSTCAqVVJMID0gdXJsV2l0aERhdGFS
ZWxhdGl2ZVRvVVJMKGRhdGEsIGJhc2VVUkwpOwotICAgICAgICByZXR1cm4gdXJsT3JpZ2luYWxE
YXRhKFVSTCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJldHVybiBkYXRhOworICAgIGlmIChiYXNl
VVJMKQorICAgICAgICByZXR1cm4gdXJsT3JpZ2luYWxEYXRhKHVybFdpdGhEYXRhUmVsYXRpdmVU
b1VSTChkYXRhLCBiYXNlVVJMKSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIE5TVVJMICp1cmxX
aXRoRGF0YShOU0RhdGEgKmRhdGEpCkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBX
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBA
IHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgLy8gR2V0
IHRvb2x0aXAgcmVwcmVzZW50aW5nIGxpbmsncyBVUkwKICAgICAgICAgaWYgKHRvb2xUaXAuaXNF
bXB0eSgpKQogICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gcGFzcyB0aGlzIFVSTCB0aHJv
dWdoIHVzZXJWaXNpYmxlU3RyaW5nIG9uY2UgdGhhdCdzIGluIFdlYkNvcmUKLSAgICAgICAgICAg
IHRvb2xUaXAgPSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkudXJsKCk7CisgICAgICAgICAgICB0
b29sVGlwID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpOwogICAgIH0KIAogICAg
IC8vIExhc3RseSB3ZSdsbCBjb25zaWRlciBhIHRvb2x0aXAgZm9yIGVsZW1lbnQgd2l0aCAidGl0
bGUiIGF0dHJpYnV0ZQpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Bl
bkZyYW1lSW5OZXdXaW5kb3c6IHsKICAgICAgICAgICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICAgICAgaWYg
KGZyYW1lICYmIHVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdXJsID0gZnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5VUkwoKTsKKyAgICAgICAgICAgICAgICB1cmwgPSBm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICAgICAgb3Bl
bk5ld1dpbmRvdyh1cmwsIGZyYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9G
cmFtZS5jcHAJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgRnJhbWU6OnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oY28KICAgICBkZWxldGUgZC0+bV91c2VyU3R5bGVTaGVldExvYWRlcjsKICAg
ICBkLT5tX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0gMDsKICAgICBpZiAoZC0+bV9kb2MgJiYgZC0+
bV9kb2MtPmRvY0xvYWRlcigpKQotICAgICAgICBkLT5tX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0g
bmV3IFVzZXJTdHlsZVNoZWV0TG9hZGVyKGQtPm1fZG9jLCB1cmwudXJsKCkpOworICAgICAgICBk
LT5tX3VzZXJTdHlsZVNoZWV0TG9hZGVyID0gbmV3IFVzZXJTdHlsZVNoZWV0TG9hZGVyKGQtPm1f
ZG9jLCB1cmwuc3RyaW5nKCkpOwogfQogCiB2b2lkIEZyYW1lOjpzZXRVc2VyU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIHN0eWxlU2hlZXQpCkluZGV4OiBXZWJDb3JlL3BhZ2UvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvcGFnZS9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBJbnNwZWN0
b3JSZXNvdXJjZSA6IHB1YmxpYyBSZWZDb3UKICAgICAgICAgaWYgKCFkb2MpCiAgICAgICAgICAg
ICByZXR1cm4gT3RoZXI7CiAKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
ID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UocmVxdWVzdFVSTC51cmwoKSk7Cisg
ICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGRvYy0+ZG9jTG9hZGVyKCkt
PmNhY2hlZFJlc291cmNlKHJlcXVlc3RVUkwuc3RyaW5nKCkpOwogICAgICAgICBpZiAoIWNhY2hl
ZFJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIE90aGVyOwogCkBAIC0yNzEsNyArMjcxLDcg
QEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkU291cmNlVG9GcmFtZShKU0NvbgogICAgICAgICBpZiAo
IWRvYykKICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CiAKLSAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlID0gZG9jLT5kb2NMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2Uo
cmVzb3VyY2UtPnJlcXVlc3RVUkwudXJsKCkpOworICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UgPSBkb2MtPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJjZShyZXNvdXJjZS0+
cmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCiAgICAg
ICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogCkBAIC05MjUsNyArOTI1LDcgQEAgSlNPYmplY3RS
ZWYgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaQogICAgIEpTT2JqZWN0UmVmIHJlc291cmNl
Q29uc3RydWN0b3IgPSBKU1ZhbHVlVG9PYmplY3QobV9zY3JpcHRDb250ZXh0LCBKU09iamVjdEdl
dFByb3BlcnR5KG1fc2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QsIHJlc291cmNlU3RyaW5n
LCAwKSwgMCk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKHJlc291cmNlU3RyaW5nKTsKIAotICAgIFN0
cmluZyB1cmxTdHJpbmcgPSByZXNvdXJjZS0+cmVxdWVzdFVSTC51cmwoKTsKKyAgICBTdHJpbmcg
dXJsU3RyaW5nID0gcmVzb3VyY2UtPnJlcXVlc3RVUkwuc3RyaW5nKCk7CiAgICAgSlNTdHJpbmdS
ZWYgdXJsID0gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyh1cmxTdHJpbmcuY2hhcmFjdGVy
cygpLCB1cmxTdHJpbmcubGVuZ3RoKCkpOwogICAgIEpTVmFsdWVSZWYgdXJsVmFsdWUgPSBKU1Zh
bHVlTWFrZVN0cmluZyhtX3NjcmlwdENvbnRleHQsIHVybCk7CiAgICAgSlNTdHJpbmdSZWxlYXNl
KHVybCk7CkBAIC0xMDIyLDcgKzEwMjIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnVw
ZGF0ZVNjcmlwdFJlCiAgICAgaWYgKCFyZXNvdXJjZS0+c2NyaXB0T2JqZWN0IHx8ICFtX3Njcmlw
dENvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyB1cmxTdHJpbmcgPSByZXNv
dXJjZS0+cmVxdWVzdFVSTC51cmwoKTsKKyAgICBTdHJpbmcgdXJsU3RyaW5nID0gcmVzb3VyY2Ut
PnJlcXVlc3RVUkwuc3RyaW5nKCk7CiAgICAgSlNTdHJpbmdSZWYgdXJsID0gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyh1cmxTdHJpbmcuY2hhcmFjdGVycygpLCB1cmxTdHJpbmcubGVuZ3Ro
KCkpOwogICAgIEpTVmFsdWVSZWYgdXJsVmFsdWUgPSBKU1ZhbHVlTWFrZVN0cmluZyhtX3Njcmlw
dENvbnRleHQsIHVybCk7CiAgICAgSlNTdHJpbmdSZWxlYXNlKHVybCk7CkBAIC0xMzcwLDcgKzEz
NzAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoCiAgICAgICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZSk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgbG9vayBp
bnRvIGFzc2VydGluZyB0aGF0IG1fbWFpblJlc291cmNlLT5sb2FkZXIgPT0gbG9hZGVyIGhlcmUu
CiAKLSAgICAgICAgbV9jbGllbnQtPmluc3BlY3RlZFVSTENoYW5nZWQobG9hZGVyLT5VUkwoKS51
cmwoKSk7CisgICAgICAgIG1fY2xpZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGxvYWRlci0+dXJs
KCkuc3RyaW5nKCkpOwogCiAgICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2NvbnNvbGVNZXNzYWdl
cyk7CiAgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmNsZWFyKCk7CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
bWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3Bh
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIxNiwxMyAr
MTIxNiwxMyBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ECiAgICAg
fQogfQogCi0tIChCT09MKWdldERhdGE6KE5TRGF0YSAqKilkYXRhIGFuZFJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICoqKXJlc3BvbnNlIGZvclVSTDooTlNTdHJpbmcgKilVUkwKKy0gKEJPT0wpZ2V0
RGF0YTooTlNEYXRhICoqKWRhdGEgYW5kUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKiopcmVzcG9u
c2UgZm9yVVJMOihOU1N0cmluZyAqKXVybAogewogICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBkb2MtPmRvY0xvYWRlcigpLT5jYWNoZWRSZXNvdXJj
ZShVUkwpOworICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGRvYy0+ZG9jTG9hZGVyKCkt
PmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJu
IE5POwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL0tVUkwuaAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L0tVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBLVVJMX2gK
IAogI2luY2x1ZGUgIkRlcHJlY2F0ZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiAjaWYgUExBVEZPUk0oQ0YpCkBAIC00
NCw3ICs0NSw2IEBAIGNsYXNzIE5TVVJMOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgS1VSTDsKLSAgICBjbGFzcyBTdHJpbmc7CiAgICAgY2xhc3MgVGV4dEVuY29kaW5nOwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7CkBAIC02OCw3ICs2
OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB1cmxTdHJp
bmcuaXNFbXB0eSgpOyB9IAogICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwogCi0gICAgRGVwcmVj
YXRlZFN0cmluZyB1cmwoKSBjb25zdCB7IHJldHVybiB1cmxTdHJpbmc7IH0KKyAgICBTdHJpbmcg
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gdXJsU3RyaW5nOyB9CisgICAgY29uc3QgRGVwcmVjYXRl
ZFN0cmluZyYgZGVwcmVjYXRlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHVybFN0cmluZzsgfQog
CiAgICAgRGVwcmVjYXRlZFN0cmluZyBwcm90b2NvbCgpIGNvbnN0OwogICAgIERlcHJlY2F0ZWRT
dHJpbmcgaG9zdCgpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJk
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5t
bQkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE2NiwyMCArMTY2LDIwIEBAIFN0cmluZyBDbGlwYm9hcmRN
YWM6OmdldERhdGEoY29uc3QgU3RyaW4KICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlICE9ICJ0ZXh0L3VyaS1saXN0IikKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgTlNNdXRh
YmxlU3RyaW5nICpVUkxzID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgICAgICAgICAg
ICAgICAgICBOU011dGFibGVTdHJpbmcgKnVybHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107
CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGk7CiAgICAgICAgICAgICAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVVJMcyBhcHBlbmRTdHJpbmc6
QCJcbiJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxzIGFwcGVuZFN0cmluZzpA
IlxuIl07CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICBOU1N0cmluZyAqc3RyaW5nID0gW2ZpbGVMaXN0IG9iamVjdEF0SW5kZXg6aV07CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIVtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIE5TVVJMICpVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0cmluZ107Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBbVVJMcyBhcHBlbmRTdHJpbmc6W1VSTCBhYnNvbHV0ZVN0
cmluZ11dOworICAgICAgICAgICAgICAgICAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6c3RyaW5nXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFt1cmxzIGFwcGVu
ZFN0cmluZzpbdXJsIGFic29sdXRlU3RyaW5nXV07CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gY291bnQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb2NvYVZhbHVlID0gVVJMczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvY29hVmFsdWUg
PSB1cmxzOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ29va2llSmFyLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vbWFjL0Nvb2tpZUphci5tbQkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL21hYy9Db29raWVKYXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDgg
QEAgU3RyaW5nIGNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAotICAgIE5TVVJMICpVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKLSAgICBO
U0FycmF5ICpjb29raWVzRm9yVVJMID0gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBD
b29raWVTdG9yYWdlXSBjb29raWVzRm9yVVJMOlVSTF07CisgICAgTlNVUkwgKmNvb2tpZVVSTCA9
IHVybC5nZXROU1VSTCgpOworICAgIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwgPSBbW05TSFRUUENv
b2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNGb3JVUkw6Y29va2ll
VVJMXTsKIAogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBPbiAxMC41LCBOU0hUVFBD
b29raWVTdG9yYWdlIHdvdWxkIGhhcHBpbHkgc3RvcmUgYW4gZW1wdHkgY29va2llLCB3aGljaCB3
b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIC8vIFdlIGhhdmUgYSB3b3JrYXJvdW5k
IGluIHNldENvb2tpZXMoKSB0byBwcmV2ZW50IHRoYXQsIGJ1dCB3ZSBhbHNvIG5lZWQgdG8gYXZv
aWQgc2VuZGluZyBjb29raWVzIHRoYXQgd2VyZSBwcmV2aW91c2x5IHN0b3JlZC4KQEAgLTcwLDE0
ICs3MCwxNCBAQCB2b2lkIHNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLCiAgICAg
aWYgKGNvb2tpZVN0ci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TVVJMICpV
UkwgPSB1cmwuZ2V0TlNVUkwoKTsKKyAgICBOU1VSTCAqY29va2llVVJMID0gdXJsLmdldE5TVVJM
KCk7CiAgICAgCiAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MzE+LCA8cmRhcjovLzQ0MDkwMzQ+CiAgICAgLy8gY29va2llc1dpdGhSZXNwb25zZUhlYWRl
ckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNvb2tpZXMgd2l0aG91dCBhIHZhbHVlCiAgICAgU3RyaW5n
IGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0ci5jb250YWlucygnPScpID8gY29va2llU3RyIDogY29v
a2llU3RyICsgIj0iOwogICAgIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBbTlNIVFRQQ29va2ll
IGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpVUkxd
OwotICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0
Q29va2llczpjb29raWVzIGZvclVSTDpVUkwgbWFpbkRvY3VtZW50VVJMOnBvbGljeUJhc2VVUkwu
Z2V0TlNVUkwoKV07ICAgIAorICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBbTlNIVFRQQ29va2llIGNv
b2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVV
UkxdOworICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0g
c2V0Q29va2llczpjb29raWVzIGZvclVSTDpjb29raWVVUkwgbWFpbkRvY3VtZW50VVJMOnBvbGlj
eUJhc2VVUkwuZ2V0TlNVUkwoKV07ICAgIAogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQkocmV2aXNpb24g
Mjg2MDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTAsMTIgKzIxMCwxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKE5T
UGFzdGVib2FyZCogCiAgICAgCiAgICAgQVNTRVJUKCF1cmwuaXNFbXB0eSgpKTsKICAgICAKLSAg
ICBOU1VSTCAqVVJMID0gdXJsLmdldE5TVVJMKCk7Ci0gICAgTlNTdHJpbmcgKnVzZXJWaXNpYmxl
U3RyaW5nID0gZnJhbWUtPmVkaXRvcigpLT5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoVVJM
KTsKKyAgICBOU1VSTCAqY29jb2FVUkwgPSB1cmwuZ2V0TlNVUkwoKTsKKyAgICBOU1N0cmluZyAq
dXNlclZpc2libGVTdHJpbmcgPSBmcmFtZS0+ZWRpdG9yKCktPmNsaWVudCgpLT51c2VyVmlzaWJs
ZVN0cmluZyhjb2NvYVVSTCk7CiAgICAgCiAgICAgTlNTdHJpbmcgKnRpdGxlID0gKE5TU3RyaW5n
Kil0aXRsZVN0cjsKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0gPT0gMCkgewotICAgICAgICB0aXRs
ZSA9IFtbVVJMIHBhdGhdIGxhc3RQYXRoQ29tcG9uZW50XTsKKyAgICAgICAgdGl0bGUgPSBbW2Nv
Y29hVVJMIHBhdGhdIGxhc3RQYXRoQ29tcG9uZW50XTsKICAgICAgICAgaWYgKFt0aXRsZSBsZW5n
dGhdID09IDApCiAgICAgICAgICAgICB0aXRsZSA9IHVzZXJWaXNpYmxlU3RyaW5nOwogICAgIH0K
QEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKE5TUGFzdGVib2Fy
ZCogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsXQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvclR5cGU6V2ViVVJMc1dpdGhUaXRsZXNQYm9hcmRUeXBlXTsK
ICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2JqZWN0Ok5TVVJMUGJvYXJkVHlwZV0pCi0gICAgICAg
IFtVUkwgd3JpdGVUb1Bhc3RlYm9hcmQ6cGFzdGVib2FyZF07CisgICAgICAgIFtjb2NvYVVSTCB3
cml0ZVRvUGFzdGVib2FyZDpwYXN0ZWJvYXJkXTsKICAgICBpZiAoW3R5cGVzIGNvbnRhaW5zT2Jq
ZWN0OldlYlVSTFBib2FyZFR5cGVdKQogICAgICAgICBbcGFzdGVib2FyZCBzZXRTdHJpbmc6dXNl
clZpc2libGVTdHJpbmcgZm9yVHlwZTpXZWJVUkxQYm9hcmRUeXBlXTsKICAgICBpZiAoW3R5cGVz
IGNvbnRhaW5zT2JqZWN0OldlYlVSTE5hbWVQYm9hcmRUeXBlXSkKQEAgLTI0MCw3ICsyNDAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgUGFzdGVib2Fy
ZDo6d3JpdGVVUkwobV9wYXN0ZWJvYXJkLmdldCgpLCBuaWwsIHVybCwgdGl0bGVTdHIsIGZyYW1l
KTsKIH0KIAotc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZpbGVXcmFwcGVyRm9ySW1hZ2UoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBOU1VSTCAqVVJMKQorc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyRm9ySW1hZ2UoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBOU1VSTCAqdXJsKQog
ewogICAgIFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSByZXNvdXJjZS0+ZGF0YSgpOwogICAgIE5T
RGF0YSAqZGF0YSA9IFtbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpjb3JlRGF0YS0+cGxh
dGZvcm1EYXRhKCkgCkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIE5TRmlsZVdyYXBwZXIqIGZp
bGVXcmFwcGVyRm9ySW1hZwogICAgIE5TU3RyaW5nICpNSU1FVHlwZSA9IG5pbDsKICAgICBpZiAo
IWNvcmVNSU1FVHlwZS5pc051bGwoKSkKICAgICAgICAgTUlNRVR5cGUgPSBjb3JlTUlNRVR5cGU7
Ci0gICAgW3dyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWVXaXRo
TUlNRVR5cGUoVVJMLCBNSU1FVHlwZSldOworICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVu
YW1lOnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKHVybCwgTUlNRVR5cGUpXTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjcwLDEyICsyNzAsMTIgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIAogICAgIEFTU0VSVChub2RlKTsKICAgICBGcmFtZSog
ZnJhbWUgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpOwogCi0gICAgTlNVUkwgKlVSTCA9IHVy
bC5nZXROU1VSTCgpOwotICAgIEFTU0VSVChVUkwpOworICAgIE5TVVJMICpjb2NvYVVSTCA9IHVy
bC5nZXROU1VSTCgpOworICAgIEFTU0VSVChjb2NvYVVSTCk7CiAKICAgICBOU0FycmF5KiB0eXBl
cyA9IHdyaXRhYmxlVHlwZXNGb3JJbWFnZSgpOwogICAgIFttX3Bhc3RlYm9hcmQuZ2V0KCkgZGVj
bGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07Ci0gICAgd3JpdGVVUkwobV9wYXN0ZWJvYXJkLmdl
dCgpLCB0eXBlcywgVVJMLCBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpLCBmcmFtZSk7CisgICAg
d3JpdGVVUkwobV9wYXN0ZWJvYXJkLmdldCgpLCB0eXBlcywgY29jb2FVUkwsIG5zU3RyaW5nTmls
SWZFbXB0eSh0aXRsZSksIGZyYW1lKTsKIAogICAgIEFTU0VSVChub2RlLT5yZW5kZXJlcigpICYm
IG5vZGUtPnJlbmRlcmVyKCktPmlzSW1hZ2UoKSk7CiAgICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVy
ID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihub2RlLT5yZW5kZXJlcigpKTsKQEAgLTI4OSw3
ICsyODksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgCiAgICAg
U3RyaW5nIE1JTUVUeXBlID0gY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKICAg
ICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5
cGUoTUlNRVR5cGUpKTsKIAotICAgIHdyaXRlRmlsZVdyYXBwZXJBc1JURkRBdHRhY2htZW50KGZp
bGVXcmFwcGVyRm9ySW1hZ2UoY2FjaGVkSW1hZ2UsIFVSTCkpOworICAgIHdyaXRlRmlsZVdyYXBw
ZXJBc1JURkRBdHRhY2htZW50KGZpbGVXcmFwcGVyRm9ySW1hZ2UoY2FjaGVkSW1hZ2UsIGNvY29h
VVJMKSk7CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKQEAgLTMyNCwx
MyArMzI0LDExIEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpwbGFpblRleHQoRnJhbWUqIGZyYW0KICAg
ICB9CiAgICAgCiAgICAgCi0gICAgTlNVUkwgKlVSTDsKLSAgICAKLSAgICBpZiAoKFVSTCA9IFtO
U1VSTCBVUkxGcm9tUGFzdGVib2FyZDptX3Bhc3RlYm9hcmQuZ2V0KCldKSkgeworICAgIGlmIChO
U1VSTCAqdXJsID0gW05TVVJMIFVSTEZyb21QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5nZXQoKV0p
IHsKICAgICAgICAgLy8gRklYTUU6IHVzaW5nIHRoZSBlZGl0b3JDbGllbnQgdG8gY2FsbCBpbnRv
IHdlYmtpdCwgZm9yIG5vdywgc2luY2UgCi0gICAgICAgIC8vIGNhbGxpbmcgW1VSTCBfd2ViX3Vz
ZXJWaXNpYmxlU3RyaW5nXSBmcm9tIFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEgc2l6YWJs
ZSB3ZWIgb2YgCisgICAgICAgIC8vIGNhbGxpbmcgX3dlYl91c2VyVmlzaWJsZVN0cmluZyBmcm9t
IFdlYkNvcmUgaW52b2x2ZXMgbWlncmF0aW5nIGEgc2l6YWJsZSB3ZWIgb2YgCiAgICAgICAgIC8v
IGhlbHBlciBjb2RlIHRoYXQgc2hvdWxkIGVpdGhlciBiZSBkb25lIGluIGEgc2VwYXJhdGUgcGF0
Y2ggb3IgZmlndXJlZCBvdXQgaW4gYW5vdGhlciB3YXkuCi0gICAgICAgIHN0cmluZyA9IGZyYW1l
LT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFVSTCk7CisgICAgICAgIHN0
cmluZyA9IGZyYW1lLT5lZGl0b3IoKS0+Y2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKHVybCk7
CiAgICAgICAgIGlmIChbc3RyaW5nIGxlbmd0aF0gPiAwKQogICAgICAgICAgICAgcmV0dXJuIHN0
cmluZzsKICAgICB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDI4NjAyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDExICsxNzIsMTEgQEAgYm9v
bCBSZXNvdXJjZUhhbmRsZTo6cG9ydEFsbG93ZWQoY29uc3QgUgogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIC8vIEFsbG93IHBvcnRzIDIxIGFuZCAyMiBmb3IgRlRQIFVSTHMsIGFzIE1vemls
bGEgZG9lcy4KLSAgICBpZiAoKHBvcnQgPT0gMjEgfHwgcG9ydCA9PSAyMikgJiYgcmVxdWVzdC51
cmwoKS51cmwoKS5zdGFydHNXaXRoKCJmdHA6IiwgZmFsc2UpKQorICAgIGlmICgocG9ydCA9PSAy
MSB8fCBwb3J0ID09IDIyKSAmJiByZXF1ZXN0LnVybCgpLmRlcHJlY2F0ZWRTdHJpbmcoKS5zdGFy
dHNXaXRoKCJmdHA6IiwgZmFsc2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEFs
bG93IGFueSBwb3J0IG51bWJlciBpbiBhIGZpbGUgVVJMLCBzaW5jZSB0aGUgcG9ydCBudW1iZXIg
aXMgaWdub3JlZC4KLSAgICBpZiAocmVxdWVzdC51cmwoKS51cmwoKS5zdGFydHNXaXRoKCJmaWxl
OiIsIGZhbHNlKSkKKyAgICBpZiAocmVxdWVzdC51cmwoKS5kZXByZWNhdGVkU3RyaW5nKCkuc3Rh
cnRzV2l0aCgiZmlsZToiLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1
LDcgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc051bGwoKSBjb25zdAogewogICAgIHVw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKICAgICAKLSAgICByZXR1cm4gbV91cmwudXJsKCkuaXNO
dWxsKCk7CisgICAgcmV0dXJuIG1fdXJsLmRlcHJlY2F0ZWRTdHJpbmcoKS5pc051bGwoKTsKIH0K
IAogY29uc3QgS1VSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTYxLDcgKzYy
LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbgogewogICAgIFJl
c291cmNlSGFuZGxlKiBoYW5kbGUgPSAoUmVzb3VyY2VIYW5kbGUqKWNsaWVudEluZm87CiAKLSAg
ICBMT0coTmV0d29yaywgIkNGTmV0IC0gd2lsbFNlbmRSZXF1ZXN0KGNvbm49JXAsIGhhbmRsZT0l
cCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5yZXF1ZXN0KCkudXJsKCkudXJsKCkuYXNj
aWkoKSk7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIHdpbGxTZW5kUmVxdWVzdChjb25uPSVw
LCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
Y2ZSZXF1ZXN0KTsKICAgICBpZiAoaGFuZGxlLT5jbGllbnQoKSkKQEAgLTc3LDcgKzc4LDcgQEAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uZWN0aW9uUgogewogICAgIFJlc291cmNl
SGFuZGxlKiBoYW5kbGUgPSAoUmVzb3VyY2VIYW5kbGUqKWNsaWVudEluZm87CiAKLSAgICBMT0co
TmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbm49JXAsIGhhbmRsZT0lcCkg
KCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5yZXF1ZXN0KCkudXJsKCkudXJsKCkuYXNjaWko
KSk7CisgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVSZXNwb25zZShjb25uPSVw
LCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAg
ICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZFJlY2VpdmVSZXNwb25zZShoYW5kbGUsIGNmUmVz
cG9uc2UpOwpAQCAtODksNyArOTAsNyBAQCB2b2lkIGRpZFJlY2VpdmVEYXRhKENGVVJMQ29ubmVj
dGlvblJlZiBjCiAgICAgY29uc3QgVUludDgqIGJ5dGVzID0gQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
KTsKICAgICBDRkluZGV4IGxlbmd0aCA9IENGRGF0YUdldExlbmd0aChkYXRhKTsKIAotICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YShjb25uPSVwLCBoYW5kbGU9JXAsIGJ5
dGVzPSVkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBsZW5ndGgsIGhhbmRsZS0+cmVxdWVzdCgpLnVy
bCgpLnVybCgpLmFzY2lpKCkpOworICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZl
RGF0YShjb25uPSVwLCBoYW5kbGU9JXAsIGJ5dGVzPSVkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBs
ZW5ndGgsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRp
ZFJlY2VpdmVEYXRhKGhhbmRsZSwgKGNvbnN0IGNoYXIqKWJ5dGVzLCBsZW5ndGgsIG9yaWdpbmFs
TGVuZ3RoKTsKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgZGlkRmluaXNoTG9hZGluZyhDRlVSTENv
bm5lY3Rpb25SZWYKIHsKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlID0gKFJlc291cmNlSGFu
ZGxlKiljbGllbnRJbmZvOwogCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZEZpbmlzaExv
YWRpbmcoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPnJl
cXVlc3QoKS51cmwoKS51cmwoKS5hc2NpaSgpKTsKKyAgICBMT0coTmV0d29yaywgIkNGTmV0IC0g
ZGlkRmluaXNoTG9hZGluZyhjb25uPSVwLCBoYW5kbGU9JXApICglcykiLCBjb25uLCBoYW5kbGUs
IGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
aWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZpbmlz
aExvYWRpbmcoaGFuZGxlKTsKQEAgLTEwOSw3ICsxMTAsNyBAQCB2b2lkIGRpZEZhaWwoQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm4sIENGCiB7CiAgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IChS
ZXNvdXJjZUhhbmRsZSopY2xpZW50SW5mbzsKIAotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBk
aWRGYWlsKGNvbm49JXAsIGhhbmRsZT0lcCwgZXJyb3IgPSAlcCkgKCVzKSIsIGNvbm4sIGhhbmRs
ZSwgZXJyb3IsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpLnVybCgpLmFzY2lpKCkpOworICAgIExP
RyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRGYWlsKGNvbm49JXAsIGhhbmRsZT0lcCwgZXJyb3IgPSAl
cCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgZXJyb3IsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAgICAg
ICAgIGhhbmRsZS0+Y2xpZW50KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9y
KSk7CkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQ29u
bmVjdGlvbgogewogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSAoUmVzb3VyY2VIYW5kbGUq
KWNsaWVudEluZm87CiAgICAgQVNTRVJUKGhhbmRsZSk7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5l
dCAtIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29ubj0lcCwgaGFuZGxlPSVwICglcykiLCBjb25uLCBo
YW5kbGUsIGhhbmRsZS0+cmVxdWVzdCgpLnVybCgpLnVybCgpLmFzY2lpKCkpOworICAgIExPRyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbm49JXAsIGhhbmRsZT0lcCAo
JXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGhhbmRsZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSwgaGFuZGxlKSk7CiB9CkBAIC0x
NjIsMTQgKzE2MywxNCBAQCB2b2lkIGFkZEhlYWRlcnNGcm9tSGFzaE1hcChDRk11dGFibGVVUkxS
CiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgpCiB7CiAg
ICAgaWYgKG1fY29ubmVjdGlvbikgewotICAgICAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gQ2Fu
Y2VsbGluZyBjb25uZWN0aW9uICVwICglcykiLCBtX2Nvbm5lY3Rpb24sIG1fcmVxdWVzdC51cmwo
KS51cmwoKS5hc2NpaSgpKTsKKyAgICAgICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIENhbmNlbGxp
bmcgY29ubmVjdGlvbiAlcCAoJXMpIiwgbV9jb25uZWN0aW9uLCBtX3JlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIENGVVJMQ29ubmVjdGlvbkNhbmNlbChtX2Nv
bm5lY3Rpb24uZ2V0KCkpOwogICAgIH0KIH0KIAogUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhh
bmRsZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIERlc3Ryb3lpbmcgam9iICVwICgl
cykiLCB0aGlzLCBkLT5tX3JlcXVlc3QudXJsKCkudXJsKCkuYXNjaWkoKSk7CisgICAgTE9HKE5l
dHdvcmssICJDRk5ldCAtIERlc3Ryb3lpbmcgam9iICVwICglcykiLCB0aGlzLCBkLT5tX3JlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIENGQXJyYXlSZWYgYXJyYXlG
cm9tRm9ybURhdGEoY29uc3QgRm9ybURhdGEmIGQpCkBAIC0yNjAsNyArMjYxLDcgQEAgYm9vbCBS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoRnJhbWUqIGZyYW1lKQogICAgIENGVVJMQ29ubmVjdGlvblNj
aGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCksIGxvYWRlclJ1
bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICBDRlVSTENvbm5lY3Rpb25TdGFy
dChkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCi0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIFN0
YXJ0aW5nIFVSTCAlcyAoaGFuZGxlPSVwLCBjb25uPSVwKSIsIGQtPm1fcmVxdWVzdC51cmwoKS51
cmwoKS5hc2NpaSgpLCB0aGlzLCBkLT5tX2Nvbm5lY3Rpb24pOworICAgIExPRyhOZXR3b3JrLCAi
Q0ZOZXQgLSBTdGFydGluZyBVUkwgJXMgKGhhbmRsZT0lcCwgY29ubj0lcCkiLCBkLT5tX3JlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgZC0+bV9jb25uZWN0aW9uKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgRk9STUFURVRDKiB0ZXh0aHRtbEZvcm1hdCgpIAogCiBIR0xP
QkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogewotICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC51cmwoKSk7CisgICAgU3RyaW5nIG11dGFi
bGVVUkwodXJsLnN0cmluZygpKTsKICAgICBTdHJpbmcgbXV0YWJsZVRpdGxlKHRpdGxlKTsKICAg
ICBTSVpFX1Qgc2l6ZSA9IG11dGFibGVVUkwubGVuZ3RoKCkgKyBtdXRhYmxlVGl0bGUubGVuZ3Ro
KCkgKyAyOyAgLy8gKzEgZm9yICJcbiIgYW5kICsxIGZvciBudWxsIHRlcm1pbmF0b3IKICAgICBI
R0xPQkFMIGNiRGF0YSA9IDo6R2xvYmFsQWxsb2MoR1BUUiwgc2l6ZSAqIHNpemVvZihVQ2hhcikp
OwpAQCAtMTk2LDcgKzE5Niw3IEBAIERlcHJlY2F0ZWRDU3RyaW5nIG1hcmt1cFRvQ0ZfSFRNTChj
b25zdCAKIFN0cmluZyB1cmxUb01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiB7CiAgICAgU3RyaW5nIG1hcmt1cCgiPGEgaHJlZj1cIiIpOwotICAgIG1hcmt1cC5h
cHBlbmQodXJsLnVybCgpKTsKKyAgICBtYXJrdXAuYXBwZW5kKHVybC5zdHJpbmcoKSk7CiAgICAg
bWFya3VwLmFwcGVuZCgiXCI+Iik7CiAgICAgbWFya3VwLmFwcGVuZCh0aXRsZSk7CiAgICAgbWFy
a3VwLmFwcGVuZCgiPC9hPiIpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4u
Y3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCBzdGF0aWMgYm9vbCB3cml0
ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsCiAgICAgfQogCiAgICAgaWYgKHdpdGhQbGFpblRleHQp
IHsKLSAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKHVybC51cmwoKSk7
CisgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YSh1cmwuc3RyaW5nKCkp
OwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEocGxh
aW5UZXh0V0Zvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZy
ZWUobWVkaXVtLmhHbG9iYWwpOwogICAgICAgICBlbHNlCkBAIC02NDIsNyArNjQyLDcgQEAgc3Rh
dGljIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChJRGF0YQogICAgIGlmICghaW1hZ2VCdWZm
ZXIgfHwgIWltYWdlQnVmZmVyLT5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhHTE9C
QUwgaW1hZ2VGaWxlRGVzY3JpcHRvciA9IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3Io
dXJsLnVybCgpLCBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYWx0QXR0ciksIGNhY2hlZEltYWdlKTsK
KyAgICBIR0xPQkFMIGltYWdlRmlsZURlc2NyaXB0b3IgPSBjcmVhdGVHbG9iYWxJbWFnZUZpbGVE
ZXNjcmlwdG9yKHVybC5zdHJpbmcoKSwgZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFsdEF0dHIpLCBj
YWNoZWRJbWFnZSk7CiAgICAgaWYgKCFpbWFnZUZpbGVEZXNjcmlwdG9yKQogICAgICAgICByZXR1
cm47CiAKQEAgLTY5NSw3ICs2OTUsNyBAQCB2b2lkIENsaXBib2FyZFdpbjo6d3JpdGVVUkwoY29u
c3QgS1VSTCYgCiAgICAgV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0
KCksIGt1cmwsIHRpdGxlU3RyLCB0cnVlLCB0cnVlKTsKIAogICAgIGludCBlc3RpbWF0ZWRTaXpl
ID0gMDsKLSAgICBTdHJpbmcgdXJsID0ga3VybC51cmwoKTsKKyAgICBTdHJpbmcgdXJsID0ga3Vy
bC5zdHJpbmcoKTsKIAogICAgIEhHTE9CQUwgdXJsRmlsZURlc2NyaXB0b3IgPSBjcmVhdGVHbG9i
YWxVcmxGaWxlRGVzY3JpcHRvcih1cmwsIHRpdGxlU3RyLCBlc3RpbWF0ZWRTaXplKTsKICAgICBp
ZiAoIXVybEZpbGVEZXNjcmlwdG9yKQpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgQ2xpcGJvYXJk
V2luOjp3cml0ZVJhbmdlKFJhbmdlKiBzZWwKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xP
QkFMOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogCi0gICAgbWVkaXVtLmhHbG9iYWwgPSBj
cmVhdGVHbG9iYWxEYXRhKG1hcmt1cFRvQ0ZfSFRNTChjcmVhdGVNYXJrdXAoc2VsZWN0ZWRSYW5n
ZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKGVjKS0+ZG9jdW1lbnQoKS0+VVJMKCkpKTsKKyAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0
ZUdsb2JhbERhdGEobWFya3VwVG9DRl9IVE1MKGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAw
LCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIo
ZWMpLT5kb2N1bWVudCgpLT51cmwoKSkpOwogICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlM
RUQobV93cml0YWJsZURhdGFPYmplY3QtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBU
UlVFKSkpCiAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNyArMTE2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogcwog
ICAgIC8vIFB1dCBDRl9IVE1MIGZvcm1hdCBvbiB0aGUgcGFzdGVib2FyZCAKICAgICBpZiAoOjpP
cGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEobWFya3VwVG9DRl9IVE1M
KGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwg
c2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT5VUkwoKSkpOwor
ICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEobWFya3VwVG9DRl9IVE1M
KGNyZWF0ZU1hcmt1cChzZWxlY3RlZFJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKSwg
c2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoZWMpLT5kb2N1bWVudCgpLT51cmwoKSkpOwog
ICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRh
dGEpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CiAgICAgICAgIDo6Q2xvc2VD
bGlwYm9hcmQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
KGNvbnN0IEtVUkwmIHVyCiAKICAgICAvLyBiYXJlLWJvbmVzIENGX1VOSUNPREVURVhUIHN1cHBv
cnQKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7Ci0gICAgICAgIEhHTE9CQUwg
Y2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YSh1cmwudXJsKCkpOworICAgICAgICBIR0xPQkFMIGNi
RGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEodXJsLnN0cmluZygpKTsKICAgICAgICAgaWYgKCE6OlNl
dENsaXBib2FyZERhdGEoQ0ZfVU5JQ09ERVRFWFQsIGNiRGF0YSkpCiAgICAgICAgICAgICA6Okds
b2JhbEZyZWUoY2JEYXRhKTsKICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwpJbmRleDogV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAJKHJldmlzaW9uIDI4NjAyKQor
KysgV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxNCw3ICs1MTQsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2VXaW46Ok1JTUVUeXBl
Rm9yRXh0CiBQbHVnaW5QYWNrYWdlV2luKiBQbHVnaW5EYXRhYmFzZVdpbjo6ZmluZFBsdWdpbihj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgbWltZVR5cGUpCiB7ICAgCiAgICAgUGx1Z2luUGFja2Fn
ZVdpbiogcGx1Z2luID0gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUpOwotICAgIFN0cmluZyBm
aWxlbmFtZSA9IHVybC51cmwoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSB1cmwuc3RyaW5nKCk7
CiAgICAgCiAgICAgaWYgKCFwbHVnaW4pIHsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJs
Lmxhc3RQYXRoQ29tcG9uZW50KCk7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblN0
cmVhbVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5TdHJl
YW1XaW4uY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2lu
U3RyZWFtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDEwICsxMjksMTAgQEAgdm9pZCBQ
bHVnaW5TdHJlYW1XaW46OnN0YXJ0U3RyZWFtKCkKIAogICAgIC8vIFNvbWUgcGx1Z2lucyAoRmxh
c2gpIGV4cGVjdCB0aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUgcGFzc2VkIGJhY2sgZGVjb2RlZCBh
cyB0aGlzIGlzIHRoZQogICAgIC8vIGZvcm1hdCB1c2VkIHdoZW4gcmVxdWVzdGluZyB0aGUgVVJM
LgotICAgIGlmIChyZXNwb25zZVVSTC51cmwoKS5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIsIGZh
bHNlKSkKLSAgICAgICAgbV9zdHJlYW0udXJsID0gX3N0cmR1cChyZXNwb25zZVVSTC5kZWNvZGVf
c3RyaW5nKHJlc3BvbnNlVVJMLnVybCgpKS51dGY4KCkpOworICAgIGlmIChyZXNwb25zZVVSTC5z
dHJpbmcoKS5zdGFydHNXaXRoKCJqYXZhc2NyaXB0OiIsIGZhbHNlKSkKKyAgICAgICAgbV9zdHJl
YW0udXJsID0gX3N0cmR1cChyZXNwb25zZVVSTC5kZWNvZGVfc3RyaW5nKHJlc3BvbnNlVVJMLmRl
cHJlY2F0ZWRTdHJpbmcoKSkudXRmOCgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fc3RyZWFtLnVy
bCA9IF9zdHJkdXAocmVzcG9uc2VVUkwudXJsKCkudXRmOCgpKTsKKyAgICAgICAgbV9zdHJlYW0u
dXJsID0gX3N0cmR1cChyZXNwb25zZVVSTC5kZXByZWNhdGVkU3RyaW5nKCkudXRmOCgpKTsKICAg
ICAKICAgICBDU3RyaW5nIG1pbWVUeXBlU3RyID0gbV9yZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBl
KCkudXRmOCgpOwogICAgIApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtV2lu
OjpkZXN0cm95U3RyZWFtKCkKICAgICB9CiAKICAgICBpZiAobV9zZW5kTm90aWZpY2F0aW9uKQot
ICAgICAgICBtX3BsdWdpbkZ1bmNzLT51cmxub3RpZnkobV9pbnN0YW5jZSwgbV9yZXNvdXJjZVJl
cXVlc3QudXJsKCkudXJsKCkudXRmOCgpLCBtX3JlYXNvbiwgbV9ub3RpZnlEYXRhKTsKKyAgICAg
ICAgbV9wbHVnaW5GdW5jcy0+dXJsbm90aWZ5KG1faW5zdGFuY2UsIG1fcmVzb3VyY2VSZXF1ZXN0
LnVybCgpLmRlcHJlY2F0ZWRTdHJpbmcoKS51dGY4KCksIG1fcmVhc29uLCBtX25vdGlmeURhdGEp
OwogCiAgICAgbV9zdHJlYW1TdGF0ZSA9IFN0cmVhbVN0b3BwZWQ7CiAKSW5kZXg6IFdlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVn
aW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsMTEgKzIw
NCwxMSBAQCBwcml2YXRlOgogCiBzdGF0aWMgU3RyaW5nIHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlw
dFVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCF1cmwudXJsKCkuc3RhcnRzV2l0aCgi
amF2YXNjcmlwdDoiLCBmYWxzZSkpCisgICAgaWYgKCF1cmwuc3RyaW5nKCkuc3RhcnRzV2l0aCgi
amF2YXNjcmlwdDoiLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIC8v
IFRoaXMgcmV0dXJucyBhbiB1bmVzY2FwZWQgc3RyaW5nCi0gICAgcmV0dXJuIEtVUkw6OmRlY29k
ZV9zdHJpbmcodXJsLnVybCgpLm1pZCgxMSkpOworICAgIHJldHVybiBLVVJMOjpkZWNvZGVfc3Ry
aW5nKHVybC5kZXByZWNhdGVkU3RyaW5nKCkubWlkKDExKSk7CiB9CiAKIFBsdWdpblZpZXdXaW4q
IFBsdWdpblZpZXdXaW46OnNfY3VycmVudFBsdWdpblZpZXcgPSAwOwpAQCAtNzg0LDcgKzc4NCw3
IEBAIHZvaWQgUGx1Z2luVmlld1dpbjo6cGVyZm9ybVJlcXVlc3QoUGx1Z2kKICAgICAgICAgICAg
IC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNDgwNzQ2OT4gVGhpcyBzaG91bGQgYmUgc2VudCB3
aGVuIHRoZSBkb2N1bWVudCBoYXMgZmluaXNoZWQgbG9hZGluZwogICAgICAgICAgICAgaWYgKHJl
cXVlc3QtPnNlbmROb3RpZmljYXRpb24oKSkgewogICAgICAgICAgICAgICAgIEtKUzo6SlNMb2Nr
OjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzOwotICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5w
bHVnaW5GdW5jcygpLT51cmxub3RpZnkobV9pbnN0YW5jZSwgcmVxdWVzdFVSTC51cmwoKS51dGY4
KCksIE5QUkVTX0RPTkUsIHJlcXVlc3QtPm5vdGlmeURhdGEoKSk7CisgICAgICAgICAgICAgICAg
bV9wbHVnaW4tPnBsdWdpbkZ1bmNzKCktPnVybG5vdGlmeShtX2luc3RhbmNlLCByZXF1ZXN0VVJM
LmRlcHJlY2F0ZWRTdHJpbmcoKS51dGY4KCksIE5QUkVTX0RPTkUsIHJlcXVlc3QtPm5vdGlmeURh
dGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3N2Zy9TVkdJ
bWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDkgQEAgdm9pZCBTVkdJ
bWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIAogICAgIENhY2hlZEltYWdlICpu
ZXdJbWFnZSA9IDA7CiAgICAgaWYgKCFpbWFnZUVsZW1lbnQtPmhyZWYoKS5pc0VtcHR5KCkpIHsK
LSAgICAgICAgRGVwcmVjYXRlZFN0cmluZyB1cmkgPSBpbWFnZUVsZW1lbnQtPmJhc2VVUkkoKS5k
ZXByZWNhdGVkU3RyaW5nKCk7OworICAgICAgICBEZXByZWNhdGVkU3RyaW5nIHVyaSA9IGltYWdl
RWxlbWVudC0+YmFzZVVSSSgpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICAgICAgaWYgKCF1cmku
aXNFbXB0eSgpKQotICAgICAgICAgICAgdXJpID0gS1VSTCh1cmksIGltYWdlRWxlbWVudC0+aHJl
ZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSkudXJsKCk7CisgICAgICAgICAgICB1cmkgPSBLVVJMKHVy
aSwgaW1hZ2VFbGVtZW50LT5ocmVmKCkuZGVwcmVjYXRlZFN0cmluZygpKS5kZXByZWNhdGVkU3Ry
aW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVyaSA9IGltYWdlRWxlbWVudC0+aHJl
ZigpLmRlcHJlY2F0ZWRTdHJpbmcoKTsKICAgICAgICAgbmV3SW1hZ2UgPSBkb2MtPmRvY0xvYWRl
cigpLT5yZXF1ZXN0SW1hZ2UodXJpKTsKSW5kZXg6IFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlz
aW9uIDI4NjAyKQorKysgV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzEsNyArMTcxLDcgQEAgRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpnZXRSZXNw
b25zZVhNTAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IG1f
ZG9jLT5pbXBsZW1lbnRhdGlvbigpLT5jcmVhdGVEb2N1bWVudCgwKTsKICAgICAgICAgICAgIG1f
cmVzcG9uc2VYTUwtPm9wZW4oKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPnNldFVSTCht
X3VybC51cmwoKSk7CisgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5zZXRVUkwobV91cmwuZGVw
cmVjYXRlZFN0cmluZygpKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBzZXQgTGFzdC1Nb2RpZmll
ZCBhbmQgY29va2llcyAoY3VycmVudGx5LCB0aG9zZSBhcmUgb25seSBhdmFpbGFibGUgZm9yIEhU
TUxEb2N1bWVudHMpLgogICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+d3JpdGUoU3RyaW5nKG1f
cmVzcG9uc2VUZXh0KSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5maW5pc2hQYXJzaW5n
KCk7CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6dXJsTWF0Y2hlc0Rv
Y3VtZW50RAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIGJ1dCBhIHJlbW90ZSBkb2N1
bWVudCBjYW4gb25seSBsb2FkIGZyb20gdGhlIHNhbWUgcG9ydCBvbiB0aGUgc2VydmVyCi0gICAg
S1VSTCBkb2N1bWVudFVSTCA9IG1fZG9jLT5VUkwoKTsKKyAgICBLVVJMIGRvY3VtZW50VVJMID0g
bV9kb2MtPnVybCgpOwogICAgIGlmIChkb2N1bWVudFVSTC5wcm90b2NvbCgpLmxvd2VyKCkgPT0g
dXJsLnByb3RvY29sKCkubG93ZXIoKQogICAgICAgICAgICAgJiYgZG9jdW1lbnRVUkwuaG9zdCgp
Lmxvd2VyKCkgPT0gdXJsLmhvc3QoKS5sb3dlcigpCiAgICAgICAgICAgICAmJiBkb2N1bWVudFVS
TC5wb3J0KCkgPT0gdXJsLnBvcnQoKSkKSW5kZXg6IFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCShyZXZpc2lv
biAyODYwMikKKysrIFdlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgWFNMSW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKICAgICBY
U0xTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAo
IXBhcmVudFNoZWV0LT5ocmVmKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5
bGVoZWV0J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJl
bnRTaGVldC0+aHJlZigpLmRlcHJlY2F0ZWRTdHJpbmcoKSxtX3N0ckhyZWYuZGVwcmVjYXRlZFN0
cmluZygpKS51cmwoKTsKKyAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmhyZWYo
KS5kZXByZWNhdGVkU3RyaW5nKCksIG1fc3RySHJlZi5kZXByZWNhdGVkU3RyaW5nKCkpLnN0cmlu
ZygpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4u
ICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFp
biB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCkluZGV4OiBXZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIFJlZlB0cjxEb2N1bWVudD4gWFNMVFBy
b2Nlc3Nvcjo6Y3JlYXRlRG8KICAgICAKICAgICByZXN1bHQtPm9wZW4oKTsKICAgICBpZiAoc291
cmNlSXNEb2N1bWVudCkgewotICAgICAgICByZXN1bHQtPnNldFVSTChvd25lckRvY3VtZW50LT5V
UkwoKSk7CisgICAgICAgIHJlc3VsdC0+c2V0VVJMKG93bmVyRG9jdW1lbnQtPnVybCgpKTsKICAg
ICAgICAgcmVzdWx0LT5zZXRCYXNlVVJMKG93bmVyRG9jdW1lbnQtPmJhc2VVUkwoKSk7CiAgICAg
fQogICAgIHJlc3VsdC0+ZGV0ZXJtaW5lUGFyc2VNb2RlKGRvY3VtZW50U291cmNlKTsgLy8gTWFr
ZSBzdXJlIHdlIHBhcnNlIGluIHRoZSBjb3JyZWN0IG1vZGUuCkBAIC0yOTMsNyArMjkzLDcgQEAg
c3RhdGljIGlubGluZSBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gYwogc3RhdGljIHhzbHRTdHls
ZXNoZWV0UHRyIHhzbHRTdHlsZXNoZWV0UG9pbnRlcihSZWZQdHI8WFNMU3R5bGVTaGVldD4mIGNh
Y2hlZFN0eWxlc2hlZXQsIE5vZGUqIHN0eWxlc2hlZXRSb290Tm9kZSkKIHsKICAgICBpZiAoIWNh
Y2hlZFN0eWxlc2hlZXQgJiYgc3R5bGVzaGVldFJvb3ROb2RlKSB7Ci0gICAgICAgIGNhY2hlZFN0
eWxlc2hlZXQgPSBuZXcgWFNMU3R5bGVTaGVldChzdHlsZXNoZWV0Um9vdE5vZGUtPnBhcmVudCgp
ID8gc3R5bGVzaGVldFJvb3ROb2RlLT5wYXJlbnQoKSA6IHN0eWxlc2hlZXRSb290Tm9kZSwgc3R5
bGVzaGVldFJvb3ROb2RlLT5kb2N1bWVudCgpLT5VUkwoKSk7CisgICAgICAgIGNhY2hlZFN0eWxl
c2hlZXQgPSBuZXcgWFNMU3R5bGVTaGVldChzdHlsZXNoZWV0Um9vdE5vZGUtPnBhcmVudCgpID8g
c3R5bGVzaGVldFJvb3ROb2RlLT5wYXJlbnQoKSA6IHN0eWxlc2hlZXRSb290Tm9kZSwgc3R5bGVz
aGVldFJvb3ROb2RlLT5kb2N1bWVudCgpLT51cmwoKSk7CiAgICAgICAgIGNhY2hlZFN0eWxlc2hl
ZXQtPnBhcnNlU3RyaW5nKGNyZWF0ZU1hcmt1cChzdHlsZXNoZWV0Um9vdE5vZGUpKTsKICAgICB9
CiAgICAgCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGlubGluZSB4bWxEb2NQdHIgeG1sRG9j
UHRyRnJvbU5vZAogICAgIGlmIChzb3VyY2VJc0RvY3VtZW50KQogICAgICAgICBzb3VyY2VEb2Mg
PSAoeG1sRG9jUHRyKW93bmVyRG9jdW1lbnQtPnRyYW5zZm9ybVNvdXJjZSgpOwogICAgIGlmICgh
c291cmNlRG9jKSB7Ci0gICAgICAgIHNvdXJjZURvYyA9ICh4bWxEb2NQdHIpeG1sRG9jUHRyRm9y
U3RyaW5nKG93bmVyRG9jdW1lbnQtPmRvY0xvYWRlcigpLCBjcmVhdGVNYXJrdXAoc291cmNlTm9k
ZSksIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT5VUkwoKSA6IERlcHJlY2F0ZWRT
dHJpbmcoKSk7CisgICAgICAgIHNvdXJjZURvYyA9ICh4bWxEb2NQdHIpeG1sRG9jUHRyRm9yU3Ry
aW5nKG93bmVyRG9jdW1lbnQtPmRvY0xvYWRlcigpLCBjcmVhdGVNYXJrdXAoc291cmNlTm9kZSks
IHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IERlcHJlY2F0ZWRTdHJp
bmcoKSk7CiAgICAgICAgIHNob3VsZERlbGV0ZSA9IChzb3VyY2VEb2MgIT0gMCk7CiAgICAgfQog
ICAgIHJldHVybiBzb3VyY2VEb2M7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2MDUpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDA3LTEyLTEw
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2NydWIgVVJMIG91dCBvZiB0aGUgdHJlZSBpbiBwcmVw
YXJhdGlvbiBvZiByYW5hbWVpbmcgS1VSTCB0byBVUkwuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgX1VSTF0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZy
b21XZWJGcmFtZTpdKToKKwogMjAwNy0xMi0xMCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbgpJbmRleDogV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZp
c2lvbiAyODYwMikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMjEsNyArMTEyMSw3IEBAIE5TRGljdGlvbmFy
eSAqV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFjdGkKICAgICAgICAgICAgIGVsZW1lbnQsIFdlYkFj
dGlvbkVsZW1lbnRLZXksCiAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb3Vz
ZUV2ZW50LT5idXR0b24oKV0sIFdlYkFjdGlvbkJ1dHRvbktleSwKICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoSW50Om1vZGlmaWVyRmxhZ3NdLCBXZWJBY3Rpb25Nb2RpZmllckZsYWdz
S2V5LAotICAgICAgICAgICAgYWN0aW9uLlVSTCgpLmdldE5TVVJMKCksIFdlYkFjdGlvbk9yaWdp
bmFsVVJMS2V5LAorICAgICAgICAgICAgYWN0aW9uLnVybCgpLmdldE5TVVJMKCksIFdlYkFjdGlv
bk9yaWdpbmFsVVJMS2V5LAogICAgICAgICAgICAgbmlsXTsKICAgICAgICAgW2VsZW1lbnQgcmVs
ZWFzZV07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTI5LDcgKzExMjksNyBAQCBOU0Rp
Y3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3RpCiAgICAgcmV0dXJuIFtOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6YWN0aW9uLnR5cGUoKV0sIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptb2RpZmllckZsYWdzXSwgV2ViQWN0aW9u
TW9kaWZpZXJGbGFnc0tleSwKLSAgICAgICAgYWN0aW9uLlVSTCgpLmdldE5TVVJMKCksIFdlYkFj
dGlvbk9yaWdpbmFsVVJMS2V5LAorICAgICAgICBhY3Rpb24udXJsKCkuZ2V0TlNVUkwoKSwgV2Vi
QWN0aW9uT3JpZ2luYWxVUkxLZXksCiAgICAgICAgIG5pbF07CiB9CiAKSW5kZXg6IFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCShyZXZpc2lvbiAyODYwMikKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTksNyArMzE5LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTQogLy8gTWF5IHJldHVybiBu
aWwgaWYgbm90IGluaXRpYWxpemVkIHdpdGggYSBVUkwuCiAtIChOU1VSTCAqKV9VUkwKIHsKLSAg
ICBLVVJMIFVSTCA9IF9wcml2YXRlLT5sb2FkZXItPlVSTCgpOworICAgIEtVUkwgVVJMID0gX3By
aXZhdGUtPmxvYWRlci0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTC5pc0VtcHR5KCkgPyBuaWwgOiBV
UkwuZ2V0TlNVUkwoKTsKIH0KIApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDI4
NjAyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwMzksNyArNDAzOSw3IEBAIHN0YXRpYyBXZWJGcmFtZVZpZXcgKmNvbnRhaW5pbmdGcmFtZVZp
ZXcKIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVt
ZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHNl
bGYpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVJY29uRm9yRnJhbWVGdW5j
KSB7Ci0gICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVS
TChjb3JlKHdlYkZyYW1lKS0+bG9hZGVyKCktPnVybCgpLnVybCgpLCBJbnRTaXplKDE2LCAxNikp
OworICAgICAgICBJbWFnZSogaW1hZ2UgPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwo
Y29yZSh3ZWJGcmFtZSktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgxNiwgMTYp
KTsKICAgICAgICAgaWYgKE5TSW1hZ2UgKmljb24gPSB3ZWJHZXROU0ltYWdlKGltYWdlLCBOU01h
a2VTaXplKDE2LCAxNikpKQogICAgICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxl
bWVudGF0aW9ucy0+ZGlkUmVjZWl2ZUljb25Gb3JGcmFtZUZ1bmMsIHNlbGYsIEBzZWxlY3Rvcih3
ZWJWaWV3OmRpZFJlY2VpdmVJY29uOmZvckZyYW1lOiksIGljb24sIHdlYkZyYW1lKTsKICAgICB9
CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0No
YW5nZUxvZwkocmV2aXNpb24gMjg2MDUpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDA3LTEyLTEwICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU2NydWIgVVJMIG91dCBvZiB0aGUgdHJlZSBpbiBwcmVwYXJhdGlvbiBvZiByYW5hbWVpbmcg
S1VSTCB0byBVUkwuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFt
ZTo6dXJsKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAoV2ViRnJhbWU6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkZyYW1l
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yU3RhbmRhcmRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1l
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5Rm9yUmVsb2FkKToKKyAgICAgICAgKFdlYkZyYW1lOjpjYW5j
ZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJGcmFtZTo6YmxvY2tlZEVycm9yKToKKyAgICAgICAg
KFdlYkZyYW1lOjppbnRlcnJ1cHRGb3JQb2xpY3lDaGFuZ2VFcnJvcik6CisgICAgICAgIChXZWJG
cmFtZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6Om5vdGlmeURpZEFkZEljb24pOgorCiAyMDA3LTEyLTA3ICBTdGV2ZSBGYWxrZW5idXJn
ICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHZlcnNpb24gcGFyc2luZy4KSW5k
ZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAyODYwMikKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NjIsNyArNzYyLDcgQEAgS1VSTCBXZWJGcmFtZTo6dXJsKCkgY29u
c3QKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAotICAgIHJl
dHVybiBjb3JlRnJhbWUtPmxvYWRlcigpLT5VUkwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5s
b2FkZXIoKS0+dXJsKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OmF0dGFjaFNjcmlwdERlYnVnZ2Vy
KCkKQEAgLTE1NjUsNyArMTU2NSw3IEBAIHZvaWQgV2ViRnJhbWU6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnQKIHsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWRE
ZWxlZ2F0ZTsKICAgICBpZiAoU1VDQ0VFREVEKGQtPndlYlZpZXctPmZyYW1lTG9hZERlbGVnYXRl
KCZmcmFtZUxvYWREZWxlZ2F0ZSkpKQotICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMKGQtPndlYlZpZXcsIEJTdHJpbmcodXJsLnVybCgpKSwg
ZGVsYXksIE1hcnNoYWxsaW5nSGVscGVyczo6Q0ZBYnNvbHV0ZVRpbWVUb0RBVEUoZmlyZURhdGUp
LCB0aGlzKTsKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTChkLT53ZWJWaWV3LCBCU3RyaW5nKHVybC5zdHJpbmcoKSksIGRlbGF5LCBNYXJz
aGFsbGluZ0hlbHBlcnM6OkNGQWJzb2x1dGVUaW1lVG9EQVRFKGZpcmVEYXRlKSwgdGhpcyk7CiB9
CiAKIHZvaWQgV2ViRnJhbWU6OmRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkK
QEAgLTE4MjYsNyArMTgyNiw3IEBAIHZvaWQgV2ViRnJhbWU6OnNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYgdGkKICAgICAgICAgaGlzdG9yeS5hZG9wdFJlZih3ZWJIaXN0b3J5KCkpOwogICAgICAgICBp
ZiAoaGlzdG9yeSkgewogICAgICAgICAgICAgQ09NUHRyPElXZWJIaXN0b3J5SXRlbT4gaXRlbTsK
LSAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaGlzdG9yeS0+aXRlbUZvclVSTChCU3RyaW5nKHVy
bC51cmwoKSksICZpdGVtKSkpIHsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaGlzdG9yeS0+
aXRlbUZvclVSTChCU3RyaW5nKHVybC5zdHJpbmcoKSksICZpdGVtKSkpIHsKICAgICAgICAgICAg
ICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtUHJpdmF0ZT4gaXRlbVByaXZhdGU7CiAgICAgICAg
ICAgICAgICAgaWYgKFNVQ0NFRURFRChpdGVtLT5RdWVyeUludGVyZmFjZShJSURfSVdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZSwgKHZvaWQqKikmaXRlbVByaXZhdGUpKSkKICAgICAgICAgICAgICAgICAg
ICAgaXRlbVByaXZhdGUtPnNldFRpdGxlKEJTdHJpbmcodGl0bGUpKTsKQEAgLTE4NTMsMTIgKzE4
NTMsMTIgQEAgdm9pZCBXZWJGcmFtZTo6dXBkYXRlR2xvYmFsSGlzdG9yeUZvclN0YQogICAgIGlm
ICghaGlzdG9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGlzdG9yeS0+YWRkSXRlbUZvclVS
TChCU3RyaW5nKHVybC51cmwoKSksIDApOyAgICAgICAgICAgICAgICAgCisgICAgaGlzdG9yeS0+
YWRkSXRlbUZvclVSTChCU3RyaW5nKHVybC5zdHJpbmcoKSksIDApOyAgICAgICAgICAgICAgICAg
CiB9CiAKIHZvaWQgV2ViRnJhbWU6OnVwZGF0ZUdsb2JhbEhpc3RvcnlGb3JSZWxvYWQoY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIEJTdHJpbmcgdXJsQlN0cih1cmwudXJsKCkpOworICAgIEJTdHJp
bmcgdXJsQlN0cih1cmwuc3RyaW5nKCkpOwogCiAgICAgQ09NUHRyPFdlYkhpc3Rvcnk+IGhpc3Rv
cnk7CiAgICAgaGlzdG9yeS5hZG9wdFJlZih3ZWJIaXN0b3J5KCkpOwpAQCAtMTkyOSwxMyArMTky
OSwxMyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lOjpjYW5jZWxsZWRFcnJvcihjCiB7CiAgICAg
Ly8gRklYTUU6IE5lZWQgQ2hpY2tlbkNhdCB0byBpbmNsdWRlIENGTmV0d29yay9DRlVSTEVycm9y
LmggdG8gZ2V0IHRoZXNlIHZhbHVlcwogICAgIC8vIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIGNy
ZWF0ZSBvdXIgb3duIGVycm9yIGRvbWFpbi9jb2Rlcy4KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCAtOTk5LCByZXF1ZXN0LnVybCgpLnVybCgpLCBT
dHJpbmcoKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9t
YWluKSwgLTk5OSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSwgU3RyaW5nKCkpOwogfQogCiBSZXNv
dXJjZUVycm9yIFdlYkZyYW1lOjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxlbWVudCB0aGUgU3RyaW5nIGRl
c2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHRoZSBXZWJLaXRFcnJvckRvbWFpbiBhbmQgaGF2ZSB0
aGVtIGxvY2FsaXplZAotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJv
ckRvbWFpbiksIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBvcnQsIHJlcXVlc3QudXJs
KCkudXJsKCksIFN0cmluZygpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcoV2Vi
S2l0RXJyb3JEb21haW4pLCBXZWJLaXRFcnJvckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0LCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLCBTdHJpbmcoKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgV2ViRnJh
bWU6OmNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQpAQCAtMTk0Nyw3
ICsxOTQ3LDcgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZTo6Y2Fubm90U2hvd1VSTEVycgogUmVz
b3VyY2VFcnJvciBXZWJGcmFtZTo6aW50ZXJydXB0Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIGltcGxl
bWVudCB0aGUgU3RyaW5nIGRlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHRoZSBXZWJLaXRFcnJv
ckRvbWFpbiBhbmQgaGF2ZSB0aGVtIGxvY2FsaXplZAotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0
ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS51cmwoKSwgU3RyaW5nKCkpOworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyhXZWJLaXRFcnJvckRvbWFpbiksIFdlYktpdEVycm9y
RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KSwgU3RyaW5nKCkpOwogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lOjpjYW5ub3RTaG93TUlN
RVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKQEAgLTIzNzQsNyArMjM3NCw3IEBA
IFdpZGdldCogV2ViRnJhbWU6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnQKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VF
cnJvcihTdHJpbmcoV2ViS2l0RXJyb3JEb21haW4pLCBlcnJvckNvZGUsIHVybC51cmwoKSwgU3Ry
aW5nKCkpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcoV2ViS2l0RXJy
b3JEb21haW4pLCBlcnJvckNvZGUsIHVybC5zdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIENPTVB0
cjxJV2ViRXJyb3I+IGVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UocmVz
b3VyY2VFcnJvciwgdXNlckluZm9CYWcuZ2V0KCkpKTsKICAgICAgCiAgICAgcmVzb3VyY2VMb2Fk
RGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJvcihkLT53ZWJWaWV3LCBlcnJvci5nZXQoKSwg
Z2V0V2ViRGF0YVNvdXJjZShkLT5mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpKTsK
SW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMjg2MDIpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTAwLDcgKzIxMDAsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlm
eURpZEFkZEljb24oSVdlYk5vCiAKICAgICBTdHJpbmcgbWFpbkZyYW1lVVJMOwogICAgIGlmICht
X21haW5GcmFtZSkKLSAgICAgICAgbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUtPnVybCgpLnVy
bCgpOworICAgICAgICBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZS0+dXJsKCkuc3RyaW5nKCk7
CiAKICAgICBpZiAoIW1haW5GcmFtZVVSTC5pc0VtcHR5KCkgJiYgbWFpbkZyYW1lVVJMID09IFN0
cmluZygoQ0ZTdHJpbmdSZWYpdmFsdWUpKQogICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVJY29u
RnJvbVdlYkZyYW1lKG1fbWFpbkZyYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212788</attachid>
            <date>2013-09-26 22:42:48 -0700</date>
            <delta_ts>2013-09-27 07:25:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-16214-20130926224244.patch</filename>
            <type>text/plain</type>
            <size>1591835</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyYTNkNzFkMDU0NWE5
NGY3OTg5NjU4YThmMjQ5NjNkYTE5Y2YyMS4uYjhkODMxZmExZjg1ZmNiNDJiM2E5ZGVmZmEwNzA0
MjFhNjRlYjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZp
bGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtlIE1l
ZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlN2E2ZjQ3ZDI3ODA3N2FhYzI0NDhmYjZj
Y2E0Y2ZhZDRmYzNmZGUuLmZlNzMwZGQ4OWZlNTk4YWJiZTA5ODM4ZjU2OTJlOGI0MGY3ZDE0MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKyAgICAgICAgTGV0IHRoZSBz
Y3JpcHQgdG8gdHJ5IHRvIHJlbmFtZSBoZXJlLgorCiAyMDEzLTA5LTI2ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gbWFrZSBN
ZWRpYVN0cmVhbSB0ZXN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggYzg2
ZDA5ODVjYTA5ZDlkZWUxZDY5MTMwYjRmYzZhMjI4NGY3YWIyZS4uOTY3NjMzZDU2NmJkZWEwMmEy
MjA2MjNjMGFkOWEyODRkOWM5YmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlw
dC4KKwogMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCmluZGV4IDI3ODM0NDM1NjE0NmZlMmEyZWUxYmNlZDg4NTg2YmI1YTdmYTRm
OTYuLmIzZGFhYTcwOTlmNGY5NTg3ZDgwM2E5NmE3Y2ZjNTk4MGM3NDM5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNp
bmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5n
bGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYTQyMWI1ZTkyYzc3OTllZTgwYjA0MzJiMzdjYzQ0
MTNkZjU2YmEzMy4uNjk4MzAzMzBjNzZkOWVlODZmMzQ0MDk5ZjUxMDI1NzkzYzQ0OGI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5h
bWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBh
cyBhIFNpbmdsZXRvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYjEwYzA0MmNkMDU3NDViMGIzZmUy
NjIzYTU0MjAxOTUyM2ZjNWMzLi43NjY3MTAyYjA2OGZmYjczNDEwM2VlYzA4NTk0NGRhODc5N2Qx
OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmls
ZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIG1ha2UgTWVk
aWFTdHJlYW0gdGVzdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWM5MzIwY2MwZjVlNjc1ZTU4MmRl
NWYyMjk4YWI1MmNlYWVlZWRmMC4uYTk5Y2IyN2RhNTkyODgzN2NkMmMyMmJiMDFjYTdjMmE0ZTM0
NDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxl
czogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGZjNWNmZmI0YjQyYzNh
MjQzM2E4YWQ3NTFlOWUyZDIxOGEwZjg0OS4uYmJlNGRkMGZkMTBkMThmYmFmYzNhOWU1ZTJhYzU4
MmVkZTlhYzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0
byBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
YW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIFJvZ2VyIEZv
bmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQXR0ZW1wdGlu
ZyB0byBzY3JvbGwgZnJvbSBhIG5vbi1zY3JvbGxhYmxlIGxheWVyIHJlc3VsdHMgdGhlIG1haW4g
ZG9jdW1lbnQgZ2V0dGluZyBzY3JvbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggZTU4YmQ4
ZmY3MWE1OWFhOGQ3YmIxOGJhNTMzNGE3OGQ2MWM1YmZjMi4uNGJmYzAzYjAwM2M5NTNlMTMzNTBk
OTVmYjRiMWQ5MmJhMWY4YWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
cmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5
LTE2ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVudXNlZCBmdW5jdGlvbiBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBF
ZGl0b3JDbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODE2ZDJjOWEyYTVmYzE2ZTFjYzUzODRmYjg0YmFi
M2U0NmZhMzYwYS4uZDQ3NjliM2JhNmUyMzFhZmE4NDA0OWE3NTdlMjQ5NDBjZDQyZWNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1
c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2luZG93cyBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDExNjMwMjA3NTc4ZGE3NDMzZWQzNWQ1ZjVhYWVmZjk1ZTFkNTliMDguLjU0ZWM0YzFi
Mzc3MGE0ZTY2ZmU0OTFiZDFiNmE3ZWVjOWRhYmE2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xODE2LDcgKzE4MTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vRmls
ZVN0cmVhbS5jcHAKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogICAgIHBsYXRmb3JtL0hp
c3RvZ3JhbVN1cHBvcnQuY3BwCi0gICAgcGxhdGZvcm0vS1VSTC5jcHAKKyAgICBwbGF0Zm9ybS9V
UkwuY3BwCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcAogICAgIHBsYXRmb3JtL0xhbmd1
YWdlLmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IGYxZmY4M2Y1MGE1YzdjZDQ2YzZiMzgwMzAyNTk3YjI0MzE2OTQ4NmUuLjBmYWJi
NjVmZmY1NzJiNzU1YzA3OThiODYzZDQ0MmU5Zjc0NTEzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNjA1Nyw5ICs2MDU3LDkgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vSG9zdFdpbmRvdy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMSGFzaC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMSGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LaWxsUmluZy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MYW5ndWFnZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGRkODgxZjdjNGNkNGZlZjAyNDAwYTlj
OTZkNTc5MjY3MGM1MWFlYzkuLjJmYzFmODMxZGVmYWRmZTVmYzkzN2YwMGNjMzczOGRkY2NjNTVl
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
c3RhdGljCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZp
bGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250
ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CiAgICAgZmlsZVN5
c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CkBAIC04MywxMCArODMsMTAgQEAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW8KICAgICByb290VVJMLmFwcGVuZChmaWxlc3lzdGVtSWQpOwogICAgIHJvb3RV
UkwuYXBwZW5kKCIvIik7CiAKLSAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRl
eHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06
OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZp
bGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRl
KCkpOwogfQogCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmls
ZVN5c3RlbSkKK0RPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBj
b25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVT
eXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290
VVJMLCBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKIHsK
QEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBTbmFwc2hvdEZpbGVDYWxs
YmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U25hcHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8U25h
cHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8Rmls
ZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU25hcHNob3RG
aWxlQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgdXJsLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKTsKICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBTbmFwc2hvdEZpbGVDYWxsYmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0IEtVUkwmIHVybCwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIFNuYXBzaG90RmlsZUNhbGxiYWNrKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3Qg
VVJMJiB1cmwsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBGaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAgICAsIG1fZmlsZXN5c3RlbShmaWxl
c3lzdGVtKQogICAgICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmlu
ZyBtX25hbWU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgUmVmUHRyPEZp
bGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CiB9OwogCkBAIC0yMDMsNyArMjAzLDcgQEAg
cHJpdmF0ZToKIAogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRy
eSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgS1VSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIFVSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVS
TCwgU25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwg
ZmlsZVN5c3RlbVVSTCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCmlu
ZGV4IGFlODExM2Y3MzZlYzcxZWMyMDNhMzE0NTNlMmFmMGNkNjMyN2Y1ZGYuLjc5YWZjODhlMzdk
OTVhODQ4Y2MwMDM0MDNhNmM2NThlNmRmZjg0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9N
RmlsZVN5c3RlbUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYgcm9v
dFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgaXNvbGF0ZWQgZmls
ZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQuCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCk7CkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3Qg
S1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01GaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Pik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKaW5kZXggN2VmYWFjZWMwYmY2YTU3OGJhOTU3
ZjkyMTNiNzAyMDRhZTRiM2I3NC4uZjZhNTIxNTE0NzhjNDRlMmVjMGJiZTE4MmFlMTM4OTY1OTAy
NGJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0IHNpemVfdCBET01G
aWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxl
U3lzdGVtCiBjb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXhb
XSA9ICJpc29sYXRlZCI7CiBjb25zdCBzaXplX3QgRE9NRmlsZVN5c3RlbUJhc2U6Omlzb2xhdGVk
UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRo
UHJlZml4KSAtIDE7CiAKLURPTUZpbGVTeXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitET01GaWxlU3lzdGVtQmFzZTo6RE9NRmlsZVN5c3RlbUJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBG
aWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fbmFtZShuYW1lKQogICAgICwgbV90eXBlKHR5cGUpCkBAIC03OSw3ICs3OSw3IEBAIGJv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiB9
CiAKIC8vIHN0YXRpYwotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJM
KGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmluZyYgZmlsZVBhdGgp
Citib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgVVJMJiB1
cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmICgh
dXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTA1LDEwICsxMDUsMTAgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6c3VwcG9ydHNUb1VSTCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNy
ZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3QKK1VSTCBET01G
aWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KSBjb25zdAogewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShmdWxsUGF0aCkp
OwotICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAgICBVUkwgdXJsID0gbV9m
aWxlc3lzdGVtUm9vdFVSTDsKICAgICAvLyBSZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2gu
CiAgICAgdXJsLnNldFBhdGgodXJsLnBhdGgoKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoZnVsbFBhdGguc3Vic3RyaW5nKDEpKSk7CiAgICAgcmV0dXJuIHVybDsKQEAgLTEyMCw3ICsx
MjAsNyBAQCBTZWN1cml0eU9yaWdpbiogRE9NRmlsZVN5c3RlbUJhc2U6OnNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1L
VVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFz
ZSogZW50cnkpIGNvbnN0CitVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1V
UkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlRmls
ZVN5c3RlbVVSTChlbnRyeS0+ZnVsbFBhdGgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4IDNiNDI0NmE5
MTA2ZjM4ZTdkNWEyZjAxMzRjNmFjYWQwZmY5MmY5ODQuLjI4NzI4MzcwZGRhODA0YzAxMzEwZmFm
ZWUxOGY0MmQxNDBlMWMwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZsYWdzLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgaXNvbGF0ZWRQYXRoUHJlZml4W107CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBpc29sYXRlZFBhdGhQcmVmaXhMZW5ndGg7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmls
ZVN5c3RlbSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmls
ZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3lu
Y0ZpbGVTeXN0ZW0pKTsKICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIEZpbGVTeXN0
ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBLVVJMIHJvb3RVUkwo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJMOyB9CisgICAgVVJMIHJvb3RVUkwo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJMOyB9CiAgICAgQXN5bmNGaWxlU3lz
dGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRmlsZVN5c3RlbS5n
ZXQoKTsgfQogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCkBA
IC04NSwxMCArODUsMTAgQEAgcHVibGljOgogICAgIGJvb2wgY2xvbmFibGUoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb25hYmxlOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVHlwZShGaWxlU3lz
dGVtVHlwZSk7Ci0gICAgc3RhdGljIGJvb2wgY3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwm
LCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmlsZVBhdGgpOworICAgIHN0YXRpYyBib29sIGNy
YWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwmLCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmls
ZVBhdGgpOwogICAgIGJvb2wgc3VwcG9ydHNUb1VSTCgpIGNvbnN0OwotICAgIEtVUkwgY3JlYXRl
RmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsKLSAgICBLVVJMIGNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3Q7CisgICAgVVJMIGNyZWF0
ZUZpbGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKikgY29uc3Q7CisgICAgVVJMIGNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3Q7CiAKICAgICAvLyBBY3R1
YWwgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRpb25zLiBBbGwgdGhlIHZhbGlkaXR5IGNoZWNr
cyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25lIGF0IHRoaXMgbGV2ZWwuCiAgICAgLy8gVGhleSBy
ZXR1cm4gZmFsc2UgZm9yIGltbWVkaWF0ZSBlcnJvcnMgdGhhdCBkb24ndCBpbnZvbHZlIGxvd2Vy
IEFzeW5jRmlsZVN5c3RlbSBsYXllciAoZS5nLiBmb3IgbmFtZSB2YWxpZGF0aW9uIGVycm9ycyku
IE90aGVyd2lzZSB0aGV5IHJldHVybiB0cnVlIChidXQgbGF0ZXIgbWF5IGNhbGwgYmFjayB3aXRo
IGFuIHJ1bnRpbWUgZXJyb3IpLgpAQCAtMTAzLDEzICsxMDMsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgcmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7CiAKIHByb3RlY3RlZDoKLSAgICBET01GaWxlU3lzdGVtQmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29u
c3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01G
aWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4pOwogICAgIGZyaWVuZCBjbGFzcyBET01GaWxlU3lzdGVtU3luYzsKIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAg
IEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKLSAgICBLVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7Cisg
ICAgVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7CiAgICAgYm9vbCBtX2Nsb25hYmxlOwogCiAgICAg
bXV0YWJsZSBPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5c3RlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCmluZGV4IDBjNmVhZTllYTBmN2EyOTA1MTZkNDU3Yzg4NTk3YzAwODNiMTdkMjYuLmRk
ODYwMmQzNDg4MjBiMDdlNmVkYTAwMjczNDdlZDhkY2NkYzczMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBET01GaWxlU3lz
dGVtU3luYzo6Y3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlUwogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMoZmlsZVN5c3RlbS0+bV9jb250ZXh0LCBmaWxlU3lz
dGVtLT5uYW1lKCksIGZpbGVTeXN0ZW0tPnR5cGUoKSwgZmlsZVN5c3RlbS0+cm9vdFVSTCgpLCBm
aWxlU3lzdGVtLT5tX2FzeW5jRmlsZVN5c3RlbS5yZWxlYXNlKCkpKTsKIH0KIAotRE9NRmlsZVN5
c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RP
TUZpbGVTeXN0ZW1TeW5jOjpET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKICAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkws
IGFzeW5jRmlsZVN5c3RlbSkKIHsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+OwogICAgIH07
CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcmVhdGVGaWxlSGVscGVyPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENy
ZWF0ZUZpbGVIZWxwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3Vs
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlRmlsZUhlbHBlcihy
ZXN1bHQsIG5hbWUsIHVybCwgdHlwZSkpOwogICAgIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiBwcml2YXRlOgotICAgIENyZWF0ZUZpbGVIZWxwZXIoUGFz
c1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQorICAgIENyZWF0ZUZpbGVIZWxwZXIo
UGFzc1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiAgICAgICAgIDogbV9yZXN1bHQo
cmVzdWx0KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAg
LTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+
IG1fcmVzdWx0OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwg
bV91cmw7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwogfTsKIApAQCAtMTU1LDcgKzE1NSw3
IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVG
aWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgZWMgPSAwOwotICAgIEtVUkwgZmlsZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoZmlsZUVudHJ5KTsKKyAgICBVUkwgZmlsZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoZmlsZUVudHJ5KTsKICAgICBSZWZQdHI8Q3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJl
c3VsdD4gcmVzdWx0KENyZWF0ZUZpbGVIZWxwZXI6OkNyZWF0ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgp
KTsKICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFk
YXRhKGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZpbGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVF
bnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCB0eXBlKCkpKTsKICAgICBpZiAoIW1fYXN5bmNG
aWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCmluZGV4
IDI0ZmJkMTU5NGJhODVjMmJiNmFkY2M0MDE4ZjFlOTYyYzEwY2VkMmYuLjI2MjliZGY2NGZkMWJj
NmNiY2EyNTAxYTJmYTcxODMxOTJkNTEyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCkBAIC00Niw3ICs0Niw3IEBA
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jIDog
cHVibGljIERPTUZpbGVTeXN0ZW1CYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUg
dHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5
bmNGaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxl
U3lzdGVtU3luYyhjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0p
KTsKICAgICB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZpbGVX
cml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5U3luYyosIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogcHJpdmF0ZToKLSAgICBET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01GaWxlU3lzdGVt
U3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lz
dGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4p
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDE3OWVjZTZmNDQ5MTc3NzE2NThiZTIw
NGMxNmYyZGI5NzM3MWU1MmQuLjgyM2E1ZWQxNmI1MzkyMjNhZDU5NDdlOGM1YmJhNWI1MjZjZDg1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5k
b3dGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBET01XaW5kb3dG
aWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKERPTVdpbmRvdyogd2lu
ZG93LCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgS1VSTCBjb21wbGV0ZWRV
UkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0g
ZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06Omlz
QXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwg
IXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKICAgICAgICAgRE9N
RmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuY3BwCmluZGV4IDlkODFhMjI0NmMzMjViZmJiOTllY2YzM2NlODIwYzk0
ZTY5NzZiNGIuLjQyYjRhZmRhNzBjYzEzYTk0YTdhMDBiYzMxNDc0Zjg1OGY3MjgzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpG
aWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNz
QwogewogfQogCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK3ZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiB7CiAgICAgaWYgKG1f
c3VjY2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwpAQCAt
MjExLDcgKzIxMSw3IEBAIFJlc29sdmVVUklDYWxsYmFja3M6OlJlc29sdmVVUklDYWxsYmFja3Mo
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhCiB7CiB9CiAKLXZvaWQgUmVz
b2x2ZVVSSUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQordm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsK
ICAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01GaWxlU3lzdGVtOjpjcmVhdGUo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBtX3R5cGUsIHJvb3RVUkwsIGFz
eW5jRmlsZVN5c3RlbSktPnJvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IDI1ZmUzNjg1YzgzNjBj
YWI3ZTljODY3NzM1NDgyZWY1ZDIyZDQyN2UuLjM5OWM1OTBiY2M0OGZjY2MzMmI4NTYxYzAyMzVi
Y2YzZDhlMGRjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6
CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CisgICAgdmlydHVh
bCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiBwcml2YXRlOgogICAgIEZp
bGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5
cGUpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiBjbGFzcyBSZXNvbHZlVVJJQ2FsbGJh
Y2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJM
JiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogcHJpdmF0ZToKICAgICBSZXNvbHZl
VVJJQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSwgY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCmluZGV4
IDdkMmFlYTRiODBlZGZjZTVlMDRjZWIyNGEzYTcwNmMzNWQ0MTljMTEuLjZkOTg0YWNhOTE3Njgz
NTBhNzYxMDY4MmZjYmQ4NTgxN2FiZWIwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0
ZW0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0CiAKIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
VVJMKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5j
b21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRl
VVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdv
cmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVs
ZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpTRUNVUklUWV9FUlIpKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJH
bG9iYWxTYwogUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlciwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVj
ID0gMDsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgp
IHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
ZFVSTCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZVJlZ2lzdHJ5LmNwcAppbmRleCBkYjQ3NTFlMDA1YmM1ZTIwYTQ4NDNmZjBiNGM3NjFjOWM5MWYz
YzgxLi5hNjdlYzBmZjk4OWFkZTZlYWQwMDMxNzMyYzY5NmM4NTViOWExYjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VS
ZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFT
b3VyY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDYsNyArNDYs
NyBAQCBNZWRpYVNvdXJjZVJlZ2lzdHJ5JiBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgp
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi12b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYgdXJsLCBVUkxSZWdpc3RyYWJs
ZSogcmVnaXN0cmFibGUpCit2b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJs
ZSkKIHsKICAgICBBU1NFUlQoJnJlZ2lzdHJhYmxlLT5yZWdpc3RyeSgpID09IHRoaXMpOwogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgTWVkaWFTb3Vy
Y2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiB1cmws
IFVSTFJlZ2lzCiAgICAgbV9tZWRpYVNvdXJjZXMuc2V0KHVybC5zdHJpbmcoKSwgc291cmNlKTsK
IH0KIAotdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwm
IHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPiA+OjppdGVyYXRvciBpdGVyID0gbV9tZWRpYVNvdXJj
ZXMuZmluZCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAppbmRleCA0NmMyNGQ0ZTAzMDVm
NmRkZGU5MWNmNGU4NDQxZjQ3N2M5NjQ4YTY2Li43OGQyN2UwMDY1YzQ3MWNjNzVjYWQyYmQ4MjJh
YmY3MGNkMDYzMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBNZWRpYVNv
dXJjZUJhc2U7CiAKIGNsYXNzIE1lZGlhU291cmNlUmVnaXN0cnkgOiBwdWJsaWMgVVJMUmVnaXN0
cnkgewpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhU291cmNlUmVn
aXN0cnkmIHJlZ2lzdHJ5KCk7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJp
bmcgdG8gdGhlIHNwZWNpZmllZCBtZWRpYSBzb3VyY2UuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBVUkxSZWdpc3RyYWJs
ZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKaW5kZXggMzZkMjdlNmZjODg4NGEzYWY5NzQ0ODI2OWQyYjNhMTU3NzJmMTdlNi4u
Mjk2NzE4MWM5ZjdiZjdiZGY1YmY1ZmU3M2JlNzhmNDllZTE1NTI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDEsMTQgKzQxLDE0IEBAIE1l
ZGlhU3RyZWFtUmVnaXN0cnkmIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiBzdHJl
YW0pCit2b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiBzdHJlYW0pCiB7CiAgICAgQVNTRVJU
KCZzdHJlYW0tPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBtX3N0cmVhbURlc2NyaXB0b3JzLnNldCh1cmwuc3RyaW5nKCksIHN0YXRpY19jYXN0
PE1lZGlhU3RyZWFtKj4oc3RyZWFtKS0+ZGVzY3JpcHRvcigpKTsKIH0KIAotdm9pZCBNZWRpYVN0
cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgTWVkaWFT
dHJlYW1SZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMucmVtb3ZlKHVybC5z
dHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4IGU4YmU0YzFiNDkwZjkzMGIxYTEzMDRkMGIx
Y2M2YTI3M2NlYmVmN2EuLmU0NmMyYjJkY2QwYWE1OTgyNGY1ZWEyNzVjZDcwY2Q1NzE2NDU5MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3Mg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgTWVkaWFTdHJlYW1SZWdpc3RyeSYgcmVnaXN0cnkoKTsKIAogICAgIC8vIFJlZ2lzdGVy
cyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIHN0cmVhbSBkYXRhLgotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBV
UkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJM
KGNvbnN0IEtVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogCiAgICAg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3Qg
U3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGNlZDAyMzMyMWMyNjQ2MDViMjFh
NzIyZGU4Njg5ZTlkMDZlNTE1YTEuLjA1MWUwZGRhNWFkMjE2NTY2ZWIyNGU5MWRkY2NmN2ZiYWU2
NDZlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC05OSw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8UlRD
Q29uZmlndXJhdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBhcnNlQ29uZmlndXJhdGlvbihjb25z
dCBEaWN0aW9uCiAgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJp
bmcpOworICAgICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAgICAgICBpZiAoIXVy
bC5pc1ZhbGlkKCkgfHwgISh1cmwucHJvdG9jb2xJcygidHVybiIpIHx8IHVybC5wcm90b2NvbElz
KCJzdHVuIikpKSB7CiAgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmln
YXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmNw
cAppbmRleCA5OWI5NmNmOThhYTg0ZmMzNmJkZjMxOTcwMTFiMWE4ZGMwOTU5NjhkLi5mM2IxZGI4
Njk2MjhjMGQxMmU0OThiNDQyZWUyMGM3YjE1N2RkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05h
dmlnYXRvckNvbnRlbnRVdGlscy5jcHAKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGJvb2wgdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
dXJsLCBFeGMKICAgICBTdHJpbmcgbmV3VVJMID0gdXJsOwogICAgIG5ld1VSTC5yZW1vdmUoaW5k
ZXgsIFdURl9BUlJBWV9MRU5HVEgodG9rZW4pIC0gMSk7CiAKLSAgICBLVVJMIGJhc2UoUGFyc2Vk
VVJMU3RyaW5nLCBiYXNlVVJMKTsKLSAgICBLVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKKyAgICBV
UkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOworICAgIFVSTCBrdXJsKGJhc2UsIG5l
d1VSTCk7CiAKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYWFiNTY0OWZlNGZlNzJiZGQw
NDIxYjI2MmFjY2YzNDI2OGNlMzQ0YS4uZjYyOWVjNzcwYzM5NmIzNjIzZTJiMGVlMjEyODE3NzBj
YTZjOTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgTm90aWZpY2F0aW9uOjpOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBT
dHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faWNvbiA9IGljb25VUkkuaXNF
bXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChp
Y29uVVJJKTsKKyAgICBtX2ljb24gPSBpY29uVVJJLmlzRW1wdHkoKSA/IFVSTCgpIDogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKICAgICBpZiAoIW1faWNv
bi5pc0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGMKICAgICBpZiAob3B0aW9ucy5nZXQoImRpciIsIGFyZ3VtZW50KSkKICAgICAgICAg
bm90aWZpY2F0aW9uLT5zZXREaXIoYXJndW1lbnQpOwogICAgIGlmIChvcHRpb25zLmdldCgiaWNv
biIsIGFyZ3VtZW50KSkgewotICAgICAgICBLVVJMIGljb25VUkkgPSBhcmd1bWVudC5pc0VtcHR5
KCkgPyBLVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTChhcmd1bWVudCk7CisgICAgICAgIFVS
TCBpY29uVVJJID0gYXJndW1lbnQuaXNFbXB0eSgpID8gVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0
ZVVSTChhcmd1bWVudCk7CiAgICAgICAgIGlmICghaWNvblVSSS5pc0VtcHR5KCkgJiYgaWNvblVS
SS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBub3RpZmljYXRpb24tPnNldEljb25VUkwoaWNvblVS
SSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCmluZGV4IDUwN2E3ZmEzMGZiM2Q3ZmZjNTJlNWQ5NjU1NzFmZWIwYTcx
ZjFkYzIuLjc5NjcwOTFiZDYzODMzMmM5YTRiNTA3YTc4MTRhNDNkNTljMjkzNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgpAQCAt
ODMsOCArODMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBL
VVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KLSAgICB2b2lkIHNldEljb25V
UkwoY29uc3QgS1VSTCYgdXJsKSB7IG1faWNvbiA9IHVybDsgfQorICAgIFVSTCBpY29uVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFVSTCYg
dXJsKSB7IG1faWNvbiA9IHVybDsgfQogCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1
cm4gbV90aXRsZTsgfQogICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gVGV4dCBub3Rp
ZmljYXRpb25zLgotICAgIEtVUkwgbV9pY29uOworICAgIFVSTCBtX2ljb247CiAgICAgU3RyaW5n
IG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKICAgICBTdHJpbmcgbV9kaXJlY3Rpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2xpZW50LmgKaW5kZXggOWU5MjgzNmU1NjRjYWM5NmE5MGYzZjE1ZDljZDI5NmM1OWM0
NWIwNC4uMjI4MTViZjdhNDBiYTNmM2U0YjZlNWQ0MjA0YTA1ZTIyNDA0ZDlhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb3RpZmljYXRpb247
CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKaW5kZXggNTlkNDJmOTg4
MDIzNDc3MTY5NWIyYjE0MjZlNWUxYTk5NjkxY2FjNS4uY2RjMWYyMjcyYjIyYmNjMDIxNGE4Y2I5
MzUwMjcxZTMwODZkN2IxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoR3JhbW1hci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTcGVlY2hHcmFt
bWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Bl
ZWNoR3JhbW1hcik7CiB9CiAKLVBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1h
cjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCkKK1Bhc3NSZWZQdHI8U3Bl
ZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNvbnN0IFVSTCYgc3JjLCBkb3VibGUg
d2VpZ2h0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hcihzcmMsIHdl
aWdodCkpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFy
KCkKIHsKIH0KIAotU3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcihjb25zdCBLVVJMJiBzcmMs
IGRvdWJsZSB3ZWlnaHQpCitTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0IFVSTCYg
c3JjLCBkb3VibGUgd2VpZ2h0KQogICAgIDogbV9zcmMoc3JjKQogICAgICwgbV93ZWlnaHQod2Vp
Z2h0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
R3JhbW1hci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5o
CmluZGV4IDc0YjAwYWQ3NjY2ZTE0MzQ4ZTYzNDMyODlkOTVjZWQ4OTEzNTdiNGYuLjQ5NDFmYjQy
ZmJjM2IzMmViMTRiOWNhZTA3MDY5OWQ3YTI1MTA1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTcGVlY2hHcmFtbWFyIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1h
cj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IGNyZWF0
ZSgpOyAvLyBGSVhNRTogVGhlIHNwZWMgaXMgbm90IGNsZWFyIG9uIHdoYXQgdGhlIGNvbnN0cnVj
dG9yIHNob3VsZCBsb29rIGxpa2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1h
cj4gY3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRlKGNvbnN0IFVSTCYgc3JjLCBkb3VibGUgd2Vp
Z2h0KTsKIAotICAgIGNvbnN0IEtVUkwmIHNyYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29u
c3QgeyByZXR1cm4gbV9zcmM7IH0KLSAgICBjb25zdCBLVVJMJiBzcmMoKSBjb25zdCB7IHJldHVy
biBtX3NyYzsgfQorICAgIGNvbnN0IFVSTCYgc3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBj
b25zdCB7IHJldHVybiBtX3NyYzsgfQorICAgIGNvbnN0IFVSTCYgc3JjKCkgY29uc3QgeyByZXR1
cm4gbV9zcmM7IH0KICAgICB2b2lkIHNldFNyYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBzcmMpOwogCiAgICAgZG91YmxlIHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2VpZ2h0OyB9CkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hHcmFtbWFyKCk7Ci0gICAgU3BlZWNoR3JhbW1hcihjb25zdCBLVVJMJiBzcmMsIGRvdWJsZSB3
ZWlnaHQpOworICAgIFNwZWVjaEdyYW1tYXIoY29uc3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQp
OwogCi0gICAgS1VSTCBtX3NyYzsKKyAgICBVUkwgbV9zcmM7CiAgICAgZG91YmxlIG1fd2VpZ2h0
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
R3JhbW1hckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hckxpc3QuY3BwCmluZGV4IGMzZGRiZTExZjg5YWIzOWUzNTc1NzdiOWNjNzEzNzljMmJlNDk5
ZTIuLjJkYWE3OTNiMjJiMTIwNWY5Njc1NWMwMGY5YTBmNWYxYTZlNzI0YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRkRnJvbVVyaShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXgKIHZvaWQgU3BlZWNoR3JhbW1h
ckxpc3Q6OmFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSB3ZWlnaHQp
CiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IFN0cmluZygiZGF0YTphcHBsaWNhdGlvbi94bWws
IikgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHN0cmluZyk7Ci0gICAgbV9ncmFtbWFy
cy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKEtVUkwoS1VSTCgpLCB1cmxTdHJpbmcpLCB3
ZWlnaHQpKTsKKyAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVlY2hHcmFtbWFyOjpjcmVhdGUoVVJM
KFVSTCgpLCB1cmxTdHJpbmcpLCB3ZWlnaHQpKTsKIH0KIAogU3BlZWNoR3JhbW1hckxpc3Q6OlNw
ZWVjaEdyYW1tYXJMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZmY3Mjgz
ZDg1N2Y4ZTJjZGUzOGNmMDIzMzU4NDliYjdiZTQxZWZkZC4uZGVkMzRjODViYzI4NWZhZjk4Zjgz
ZDBlNzE0ODQyYzFmODZlYTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCbG9iOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwogCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW52YWxpZE1lc3NhZ2UKICAgICB9OwogCi0gICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdp
bGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgog
ICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxl
IGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgU2Vu
ZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkOTYwNjQxMmM2NmY0
NzgwMDg0NjgzZDU3YzNmMWMyNjcwMTQzZDM2Li5hNDJiOWFiOWRmY2JiNDI2OTE4Y2RjN2FlN2Qx
OTg4ODkwZTY4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
CiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0ZjgoKS5k
YXRhKCkpOwotICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CisgICAgbV91cmwgPSBVUkwo
VVJMKCksIHVybCk7CiAKICAgICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0ICIgKyBtX3VybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0K
IAotY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBXZWJTb2Nr
ZXQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGQ2N2M1NGNmODlhNGJhZTlh
NDM1ZjBlYjY5ZjQ5NjljYjIzYzk1MGMuLjQwNDhjY2QyNWRkNDhmMjIyZDViNGUwNTQ1YmViYmVm
ZWM5ZjkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9u
Q29kZSYgZWMpIHsgY2xvc2UoV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVj
aWZpZWQsIFN0cmluZygpLCBlYyk7IH0KICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykgeyBjbG9zZShjb2RlLCBTdHJpbmcoKSwgZWMpOyB9CiAKLSAgICBjb25zdCBL
VVJMJiB1cmwoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkg
Y29uc3Q7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsK
ICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlN2Y4ZGJkYWRi
ZDEzMWY4YmQwM2Y3NGY1NDc3ZWU0MmI0NDlmMGRhLi5hOTMyYjNjMWZjNzBmNmZiNjczOGY4NGM1
ZjkxNzg2ZDIzMzQwMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05OSw3ICs5OSw3IEBAIFdlYlNvY2tl
dENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKIHsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29u
bmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBmMTQ4
Y2Q5MWIwODEwMDhmOGJhZjUwMDVmZTA5YTQ5NzQ4MzcxNTA4Li4zOTY0NjQ3ODUwOWI3MzA4MjZi
YjQwMDU2MDZmOGViYTU3Y2JiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8v
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDU2M2Q3MTQwOGE3MTg2Njkz
MWEzNWFkMGVhOTY3ZDhlMzc2YzM2NWYuLjFlYzEyNzdkMzEwODc5M2VkYjUxOWRhY2Y5NmE2MDQz
OTQ1NGU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBjaGFyIHJhbmRvbUNoYXJhY3RlckluU2VjV2ViU29ja2V0S2V5W10gPSAiIVwi
IyQlJicoKSorLC0uLzo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4iOwogCi1zdGF0aWMgU3RyaW5nIHJlc291cmNlTmFt
ZShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBVUkwm
IHVybCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG5hbWU7CiAgICAgbmFtZS5hcHBlbmQodXJsLnBh
dGgoKSk7CkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0
IEtVUkwmIHVybCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgU3RyaW5nIGhvc3RO
YW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCitzdGF0aWMgU3RyaW5nIGhvc3ROYW1l
KGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3VyZSkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29s
SXMoIndzcyIpID09IHNlY3VyZSk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTIx
LDcgKzEyMSw3IEBAIFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0CiAgICAgcmV0dXJuIGJhc2U2NEVu
Y29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihoYXNoLmRhdGEoKSksIHNoYTFIYXNo
U2l6ZSk7CiB9CiAKLVdlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9jbGllbnRQcm90b2NvbChwcm90
b2NvbCkKICAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMoIndzcyIpKQpAQCAtMTM2LDEy
ICsxMzYsMTIgQEAgV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkKIHsK
IH0KIAotY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAorY29uc3Qg
VVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJs
OwogfQogCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
bV91cmwgPSB1cmwuY29weSgpOwogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIENTdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKICAgICBpZiAoIW1f
Y2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2Vi
U29ja2V0LVByb3RvY29sOiAiICsgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAgICBLVVJMIHVybCA9
IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICBVUkwgdXJsID0gaHR0
cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
Y29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBSZXNvdXJjZVJlcXVl
c3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKICAg
ICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmFkZEhU
VFBIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIsIG1fY2xpZW50UHJvdG9jb2wp
OwogCi0gICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7
CisgICAgVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKICAg
ICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQpOwogICAgICAgICBTdHJpbmcgY29va2llID0gY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZG9jdW1lbnQsIHVybCk7CkBAIC0zODYsOSArMzg2
LDkgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3NvcihQYXNz
T3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2MKICAgICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIu
YWRkUHJvY2Vzc29yKHByb2Nlc3Nvcik7CiB9CiAKLUtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpo
dHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKK1VSTCBXZWJTb2NrZXRI
YW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogewot
ICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgpOworICAgIFVSTCB1cmwgPSBtX3VybC5jb3B5KCk7
CiAgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8g
Imh0dHBzIiA6ICJodHRwIik7CiAgICAgQVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBj
b3VsZFNldFByb3RvY29sKTsKICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGM4N2Fj
NmJhNjMxNmZlZTg2ODBhNzYyMWQ0Yjk5MTYxM2ExNDFhZjYuLmNjYWIwNDUwMTQxMzQ3OWNkNmM2
Y2FhNDA3YWRiNmZiYWNmM2Q2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oIgpAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICBlbnVtIE1vZGUgewogICAg
ICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIEZhaWxlZCwgQ29ubmVjdGVkCiAgICAgfTsKLSAgICBX
ZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IH5XZWJTb2NrZXRIYW5kc2hha2UoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYpOwogICAgIGNvbnN0IFN0cmluZyBob3N0KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFByb3RvY29sKCkgY29uc3Q7CkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KTsKIAogcHJpdmF0ZToKLSAg
ICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKKyAgICBV
UkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCiAgICAgaW50
IHJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwg
aW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NIZWFkZXJzKCk7CiAgICAgYm9vbCBjaGVja1Jl
c3BvbnNlSGVhZGVycygpOwogCi0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAg
U3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CiAgICAgYm9vbCBtX3NlY3VyZTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBjOTM2ZWUwOTgwNGFlOWY4YWU5YzhjYjFhZjMxMjdkZWRhN2I1
MDIzLi5iNmJhMmQ2ZmE5NDI3YzY2NzRiZmNiYzJlYzJiNWM1ZjFmY2UyOTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6On5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCgpCiAgICAgICAgIG1fYnJpZGdlLT5kaXNjb25uZWN0KCk7CiB9CiAKLXZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsK
ICAgICBpZiAobV9icmlkZ2UpCiAgICAgICAgIG1fYnJpZGdlLT5jb25uZWN0KHVybCwgcHJvdG9j
b2wpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjp+UGVlcigpCiAgICAgICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmRpc2Nvbm5l
Y3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQpAQCAtNDI4LDcgKzQyOCw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6
ZSgpCiAgICAgICAgIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RmFpbGVkV2ViU29ja2V0Q2hh
bm5lbENyZWF0aW9uKCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgcGVlci0+Y29ubmVjdCh1
cmwsIHByb3RvY29sKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQo
bV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBpZiAoIW1fcGVlcikKQEAgLTQ2NCw3ICs0NjQs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbgogICAgIHBlZXItPnNlbmQoKmFycmF5QnVmZmVy
KTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDE5YWM0
MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYyZGJhMC4uZmY5ODlkZjkwODc1ZjI3YjAxMzIw
Y2NiNGFlY2Q4MzI2MjA4YTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB+UGVlcigpOwogCi0g
ICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7
CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZv
aWQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7CiAgICAgICAgIHZvaWQgc2VuZChjb25z
dCBCbG9iJik7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICB+QnJpZGdlKCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgICAgICB2b2lkIGNv
bm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworICAgICAgICB2b2lk
IGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwpAQCAtMTY5LDEwICsxNjksMTAgQEAgcHJpdmF0ZToK
IAogICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3Bl
KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCi0g
ICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4pOwot
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXpl
KTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBz
aXplKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNTA0
ZDkyZDA1MmZjMDQ2MmUwYjFiYjgzMTQyOWY5NzcyMDAwZTVmZC4uYjY4MzgxNGFhZDIwYWQ5NzM2
NzgyMWJmNTEwZWNmMzBhZWFlOWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDI2LDcgKzEwMjYsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmNwcFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKLSAgICBwbGF0Zm9ybS9L
VVJMLmNwcCBcCisgICAgcGxhdGZvcm0vVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2Uu
Y3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3gu
Y3BwIFwKQEAgLTIyNDMsNyArMjI0Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmgg
XAotICAgIHBsYXRmb3JtL0tVUkwuaCBcCisgICAgcGxhdGZvcm0vVVJMLmggXAogICAgIHBsYXRm
b3JtL0xlbmd0aC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3guaCBcCiAgICAgcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCQ29tcGFyYXRvci5oIFwKQEAgLTI5MDQsNyArMjkwNCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TaW1wbGVGb250RGF0YVF0LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcCBcCi0gICAgcGxhdGZvcm0vcXQvS1VSTFF0
LmNwcCBcCisgICAgcGxhdGZvcm0vcXQvVVJMUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9NSU1F
VHlwZVJlZ2lzdHJ5UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBmMGFhYjg2MTUyZjJiOGJkNDdhYWVkNDI5YTg4ODQwMTExNmJkNWI2Li5i
MGI2OTdlM2IwYWI3YTc0OGU5MzllM2EzYjdiNGZhZGUwMDZkN2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtNjcsNyArNjcsNiBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbGN2UDhOU1N0cmluZ0V2
CiBfX1pOM1dURjEyQXRvbWljU3RyaW5nM2FkZEVQSzEwX19DRlN0cmluZwogX19aTjNXVEY2U3Ry
aW5nQzFFUDhOU1N0cmluZwogX19aTjNXVEY2U3RyaW5nQzFFUEsxMF9fQ0ZTdHJpbmcKLV9fWk43
V2ViQ29yZThHcmFkaWVudEQxRXYKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0lu
dFJlY3RFCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFCiBfX1pO
N1dlYkNvcmUxMENsaWVudFJlY3RDMUV2CkBAIC04OSw2ICs4OCw4IEBAIF9fWk43V2ViQ29yZTEw
U2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzIzc2V0UGFpbnRzRW50aXJlQ29udGVudHNFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3
aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NGhpZGVF
dgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NHNob3dFdgogX19aTjdXZWJDb3JlMTBTY3JvbGxW
aWV3NXBhaW50RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZXaWRnZXRFRUUK
IF9fWk43V2ViQ29yZTEwU3RvcmFnZU1hcDEwcmVtb3ZlSXRlbUVSS04zV1RGNlN0cmluZ0VSUzJf
CkBAIC05OSwxMSArMTAwLDExIEBAIF9fWk43V2ViQ29yZTEwU3RvcmFnZU1hcDZjcmVhdGVFagog
X19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwN3NldEl0ZW1FUktOM1dURjZTdHJpbmdFUzRfUlMyX1Ji
CiBfX1pON1dlYkNvcmUxMGRlbGV0ZUZpbGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
MGZpbGVFeGlzdHNFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxMHNldENvb2tpZXNFUE5T
XzhEb2N1bWVudEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTBzZXRD
b29raWVzRVBOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCitfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdl
MTNnZXRDR0ltYWdlUmVmRXYKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQ
TlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVBOU18xM0lt
YWdlT2JzZXJ2ZXJFCi1fX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMTNnZXRDR0ltYWdlUmVmRXYK
IF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRXYKIF9f
Wk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU4zV1RG
MTBQYXNzT3duUHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKIF9fWk43V2ViQ29y
ZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOM1dURjZTdHJpbmdFCkBAIC0xMTEsMTQgKzEx
MiwxMyBAQCBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxlc0VSS04zV1RGNlZl
Y3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3JhcwogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3Nl
ckQxRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMWxvYWRBcmNoaXZlRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzdBcmNoaXZlRUVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFzaG91bGRD
bG9zZUV2Ci1fX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3RlZEVSS05TXzRLVVJM
RVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQdHJJTlNfNUV2ZW50RUVFYmJOU18xOFNob3Vs
ZFNlbmRSZWZlcnJlckUKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMnNob3VsZFJlbG9hZEVS
S05TXzRLVVJMRVMzXworX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExdXJsU2VsZWN0ZWRFUktO
U18zVVJMRVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQdHJJTlNfNUV2ZW50RUVFYmJOU18x
OFNob3VsZFNlbmRSZWZlcnJlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENo
aWxkcmVuRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5TXzI2
Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZk
ZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJl
cXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZl
bnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXIxN3N0b3BGb3JVc2VyQ2FuY2VsRWIKLV9fWk43V2ViQ29yZTEx
RnJhbWVMb2FkZXIyMWxvYWRVUkxJbnRvQ2hpbGRGcmFtZUVSS05TXzRLVVJMRVJLTjNXVEY2U3Ry
aW5nRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjFsb2FkVVJMSW50b0No
aWxkRnJhbWVFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVBOU181RnJhbWVFCiBfX1pON1dlYkNv
cmUxMUZyYW1lTG9hZGVyMjJmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uRVJLTjNXVEYxMkF0b21pY1N0
cmluZ0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjIzdGltZU9mTGFz
dENvbXBsZXRlZExvYWRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjI2cmVsb2FkV2l0aE92
ZXJyaWRlRW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCkBAIC0xNDYsMTMgKzE0NiwxMiBAQCBfX1pO
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRPcmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNX
VEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjFkZWNv
ZGVCYWNrRm9yd2FyZFRyZWVFUktOM1dURjZTdHJpbmdFUzRfUzRfUk5TMV83RGVjb2RlckUKIF9f
Wk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMm1lcmdlQXV0b0NvbXBsZXRlSGludHNFUFMwXwotX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbTZzZXRVUkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW03dmlzaXRlZEVSS04zV1RGNlN0cmluZ0VkTlNfMThWaXNpdENvdW50QmVoYXZp
b3JFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW04c2V0VGl0bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfUzRfZAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRl
bUMxRVJLTjNXVEY2U3RyaW5nRVM0X2QKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1DMUVSS05T
XzRLVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XworX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMx
RVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0VTN19TN18KIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW1DMUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtRDFFdgogX19aTjdXZWJDb3JlMTFKU0RP
TVdpbmRvdzZzX2luZm9FCkBAIC0xNjAsNyArMTU5LDcgQEAgX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTExc2V0RGlzYWJsZWRFYgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlz
dGljc0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0ZXZpY3RSZXNvdXJjZXNFdgotX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTExTWVt
b3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5
Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFzaFNldElO
UzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdpbkhhc2hF
TlMxXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjVyZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQpAQCAtMTY4LDggKzE2
Nyw4IEBAIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2
CiBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgog
X19aTjdXZWJDb3JlMTFTUUxSZXN1bHRPa0UKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZO
U0RhdGFQNU5TVVJMCi1fX1pON1dlYkNvcmUxMWdldFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3
Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJOM1dURjZWZWN0
b3JJY0xtNTEyRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTFnZXRVUkxC
eXRlc0VQSzdfX0NGVVJMUk4zV1RGN0NTdHJpbmdFCiBfX1pON1dlYkNvcmUxMWlCZWFtQ3Vyc29y
RXYKIF9fWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdgogX19aTjdXZWJDb3JlMTFzdGFydE9mTGlu
ZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQpAQCAtMjM0LDcgKzIzMyw3IEBAIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJVVEY4RW5jb2RpbmdFdgogX19aTjdX
ZWJDb3JlMTJjYWNoZVN0b3JhZ2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU181
UmFuZ2VFUE4zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VF
RU5TXzIzRUFubm90YXRlRm9ySW50ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43
V2ViQ29yZTEyZGVsZXRlQ29va2llRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180
S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEyZGVsZXRlQ29va2llRVJLTlNfMjFO
ZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTJnY0NvbnRyb2xsZXJFdgogX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VFdgogX19aTjdX
ZWJDb3JlMTNBWE9iamVjdENhY2hlMTByb290T2JqZWN0RXYKQEAgLTI2MSw2ICsyNjAsNyBAQCBf
X1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOHNldEJhY2tncm91bmRDb2xvckVSS05TXzVDb2xv
ckUKIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjIwc2V0UmVwbGljYXRlZEJ5TGF5ZXJFUFMw
XwogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyNTRub3RlRGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkSW5jbHVkaW5nRGVzY2VuZGFudHNFdgogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xh
eWVyNmNyZWF0ZUVQTlNfMjBHcmFwaGljc0xheWVyRmFjdG9yeUVQTlNfMTlHcmFwaGljc0xheWVy
Q2xpZW50RQorX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyN3NldFNpemVFUktOU185RmxvYXRT
aXplRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyOGFkZENoaWxkRVBTMF8KIF9fWk43V2Vi
Q29yZTEzR3JhcGhpY3NMYXllckMyRVBOU18xOUdyYXBoaWNzTGF5ZXJDbGllbnRFCiBfX1pON1dl
YkNvcmUxM0dyYXBoaWNzTGF5ZXJEMkV2CkBAIC0yODIsMTEgKzI4MiwxMyBAQCBfX1pON1dlYkNv
cmUxM1F1YWxpZmllZE5hbWVEMUV2CiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQN05T
RXJyb3IKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA5X19DRkVycm9yCiBfX1pON1dl
YkNvcmUxM1NRTFJlc3VsdERvbmVFCitfX1pON1dlYkNvcmUxM1NjcmlwdEdDRXZlbnQxMWdldEhl
YXBTaXplRVJOU184SGVhcEluZm9FCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnQyMnNldElu
bGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERVJLTjNXVEY2U3RyaW5nRWIKIF9f
Wk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIyc2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NT
U1Byb3BlcnR5SURFZE5TXzE3Q1NTUHJpbWl0aXZlVmFsdWU5VW5pdFR5cGVzRWIKLV9fWk43V2Vi
Q29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtV
UkxFUzVfCitfX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01FUktOU18yMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNv
cmUxM2RpcmVjdG9yeU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxM2dldFJhd0Nv
b2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfUk4zV1RGNlZl
Y3RvcklOU182Q29va2llRUxtMEVOUzZfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29y
ZTEzbGlzdERpcmVjdG9yeUVSS04zV1RGNlN0cmluZ0VTM18KIF9fWk43V2ViQ29yZTEzcG9pbnRl
ckN1cnNvckV2CiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKQEAg
LTM5MCwxMCArMzkyLDkgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxiYXJUaGVtZTV0aGVtZUV2CiBf
X1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9tU3RyaW5nRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllckVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTjNXVEY2U3RyaW5nRVM0X2kKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05T
XzNVUkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzZXRMb2NhbExvYWRQb2xpY3lF
TlMwXzE1TG9jYWxMb2FkUG9saWN5RQotX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTE4c2hv
dWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUx
NFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVhZGVyRU5TXzE0UmVmZXJyZXJQb2xp
Y3lFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xp
Y3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZlcnJlclBvbGljeUVSS05TXzNVUkxF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjdyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI5YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3Ry
aW5nRVM3X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19i
CkBAIC00MDUsNyArNDA2LDcgQEAgX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjMyc3luY0Zp
bGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVF
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNr
ZXI3dHJhY2tlckV2CiBfX1pON1dlYkNvcmUxNFN1YmZyYW1lTG9hZGVyMTJhbGxvd1BsdWdpbnNF
TlNfMjhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zRQotX19aTjdXZWJDb3JlMTRjb29raWVz
RW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCitfX1pO
N1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U18zVVJMRVM1XwogX19aTjdXZWJDb3JlMTRkZWNvZGVIb3N0TmFtZUVQOE5TU3RyaW5nCiBfX1pO
N1dlYkNvcmUxNGVuY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5kT2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKQEAgLTQxNyw3ICs0MTgsMjMgQEAgX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zv
cm04bXVsdGlwbHlFUktTMF8KIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXRyYW5zbGF0
ZUVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUVkZGRkZGQKIF9fWk43V2ViQ29y
ZTE1QWZmaW5lVHJhbnNmb3JtQzFFdgotX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3Jl
YXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05T
MV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJDb3JlMTVB
cmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVy
RUVFUktOU18zVVJMRVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VF
CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5
SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKK19fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CitfX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1FdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxMXNldENhcGFjaXR5RWkKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTJjb250YWlu
c0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDE3
YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5
SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19fWk43V2ViQ29yZTE1QmFja0Zv
cndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0
cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Y2xvc2VkRXYKK19fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0NmdvQmFja0V2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDdlbmFibGVkRXYK
K19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VudHJpZXNFdgorX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q4
Y2FwYWNpdHlFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJkRXYKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTVE
T01XcmFwcGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01XcmFwcGVy
V29ybGREMUV2CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjEwaW5pdGlhbGl6ZUVSS04z
V1RGNlN0cmluZ0UKQEAgLTQzNSw5ICs0NTIsOSBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFu
YWdlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaQog
X19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmln
aW5FeQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50RVBOU18yMURhdGFi
YXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTBzZXRGb2N1
c2VkRWIKLV9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTdzZXRGb2N1c2VkRWxlbWVudEVQ
TlNfN0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFTlNfMTRGb2N1c0RpcmVj
dGlvbkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTVzZXRGb2N1c2VkRnJhbWVFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxl
cjE1c2V0SW5pdGlhbEZvY3VzRU5TXzE0Rm9jdXNEaXJlY3Rpb25FUE5TXzEzS2V5Ym9hcmRFdmVu
dEUKK19fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTdzZXRGb2N1c2VkRWxlbWVudEVQTlNf
N0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFTlNfMTRGb2N1c0RpcmVjdGlv
bkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMjhzZXRDb250YWluaW5nV2luZG93SXNW
aXNpYmxlRWIKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyOXNldEFjdGl2ZUViCiBfX1pO
N1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEwc3Ryb2tlUmVjdEVSS05TXzlGbG9hdFJlY3RFZgpA
QCAtNDk3LDcgKzUxNCw3IEBAIF9fWk43V2ViQ29yZTE1U3RyaW5nVHJ1bmNhdG9yNXdpZHRoRVJL
TjNXVEY2U3RyaW5nRVJLTlNfNEZvbnRFTlMwXzI0RW5hYmxlUm91bmRpCiBfX1pON1dlYkNvcmUx
NVZpc2libGVQb3NpdGlvbkMxRVJLTlNfOFBvc2l0aW9uRU5TXzlFQWZmaW5pdHlFCiBfX1pON1dl
YkNvcmUxNWRlZmF1bHRMYW5ndWFnZUV2CiBfX1pON1dlYkNvcmUxNWxvY2FsaXplZFN0cmluZ0VQ
S2MKLV9fWk43V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJLTlNfNEtVUkxFCitfX1pON1dlYkNv
cmUxNW1pbWVUeXBlRnJvbVVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUxNW9yaWdpbmFsVVJM
RGF0YUVQNU5TVVJMCiBfX1pON1dlYkNvcmUxNXBhdGhHZXRGaWxlTmFtZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE1cmVwb3J0RXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdK
U1ZhbHVlRVBOU18xMkNhY2hlZFNjcmlwdEUKQEAgLTUwNyw3ICs1MjQsNyBAQCBfX1pON1dlYkNv
cmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdl
Rm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlv
bkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43
V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04z
V1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9jdW1l
bnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZEYXRhYmFzZVN0cmF0
ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGEx
MkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRh
dGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCkBAIC01OTMsNyArNjEwLDcgQEAgX19aTjdX
ZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQTlNfMTRDYWNoZWRS
ZXNvdXJjZUVSS05TXzE1UmUKIF9fWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19a
TjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3Jh
cnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCi1fX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9N
RVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV9SS04zV1RGNlN0cmlu
Z0UKK19fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkVSS05TXzNVUkxFUzVfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxN3VzZXJW
aXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFF
UE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3Jt
UGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CkBAIC02MTYsNDAgKzYzMywyMiBAQCBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKIF9fWk43V2ViQ29yZTE4aXNTdGFydE9mUGFyYWdy
YXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGVFCiBfX1pON1dlYkNvcmUxOG1ha2VBbGxEaXJlY3Rvcmllc0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEzSlNI
VE1MRWxlbWVudEUKLV9fWk43V2ViQ29yZTE4cHJveHlTZXJ2ZXJzRm9yVVJMRVJLTlNfNEtVUkxF
UEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQotX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJv
bGxlcjExaXNTdXNwZW5kZWRFdgorX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktO
U18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9u
Q29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNv
bnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29u
dHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNl
VHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOM1dURjZTdHJpbmdFZAogX19a
TjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hp
bGVTdXNwZW5kZWRFYgotX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjMzYWxsb3dz
TmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTByZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3QxMHNldEVuYWJsZWRFYgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWN1
cnJlbnRJdGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFmb3J3YXJkSXRlbUV2
Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExc2V0Q2FwYWNpdHlFaQotX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3QxMmNvbnRhaW5zSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKLV9f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVy
Zmxvd0VFRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExp
bWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9z
ZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKLV9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJsZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3Q3ZW50cmllc0V2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhiYWNrSXRlbUV2Ci1f
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhjYXBhY2l0eUV2Ci1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3RD
MUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJlYUVsZW1lbnQ4c2V0VmFsdWVF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXIxMGludmFs
aWRhdGVFdgorX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyMjNydW5Mb29wT2JzZXJ2
ZXJDYWxsYmFja0V2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXI2cmVzdW1lRXYK
IF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjdzdXNwZW5kRXYKIF9fWk43V2ViQ29y
ZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjhzY2hlZHVsZUV2CitfX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzJFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dEUKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckQxRXYKIF9fWk43V2ViQ29yZTE5
TGF5ZXJGbHVzaFNjaGVkdWxlckQyRXYKLV9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxl
cjIzcnVuTG9vcE9ic2VydmVyQ2FsbGJhY2tFdgotX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyQzFFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9fWk43V2ViQ29yZTE5
UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0SFRUUEJvZHlFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEZv
cm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxM3NldEhUVFBNZXRo
b2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNl
dEhUVFBIZWFkZXJGaWVsZEVQS2NSS04zV1RGNlN0cmluZ0UKQEAgLTY1OCw3ICs2NTcsNyBAQCBf
X1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWxF
dgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjRzX2RlZmF1bHRUaW1lb3V0SW50
ZXJ2YWxFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNXNldERlZmF1bHRUaW1l
b3V0SW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNTBzZXRSZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUVSS04zV1RGNlN0cmlu
Z0VTNF9TNF8KLV9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTZzZXRVUkxFUktOU180
S1VSTEUKK19fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTZzZXRVUkxFUktOU18zVVJM
RQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNWZsdXNoRXYKIF9fWk43V2ViQ29y
ZTE5VGV4dFJlc291cmNlRGVjb2RlcjZkZWNvZGVFUEtjbQogX19aTjdXZWJDb3JlMTlUZXh0UmVz
b3VyY2VEZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18xMlRleHRFbmNvZGluZ0ViCkBAIC02
NzIsNyArNjcxLDYgQEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9f
Wk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QyOXNldFBsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uRQogX19aTjdXZWJDb3JlMjBS
ZW5kZXJFbWJlZGRlZE9iamVjdDM3c2V0VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc0hpZGRl
bkViCiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0NDRzZXRQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbldpdGhEZXNjcmlwdGlvbkVOUzBfMjZQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbkVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0
MjFpc1JlcGxhY2VtZW50T2JzY3VyZWRFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNs
aWVudDE2ZGlkUmVjZWl2ZUJ1ZmZlckVQTlNfMTRSZXNvdXJjZUhhbmRsZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRWkKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVD
bGllbnQyMHdpbGxTZW5kUmVxdWVzdEFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVJLTlNfMTVS
ZXNvdXJjZVJlcXVlc3RFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUyMFJl
c291cmNlSGFuZGxlQ2xpZW50MjJ3aWxsQ2FjaGVSZXNwb25zZUFzeW5jRVBOU18xNFJlc291cmNl
SGFuZGxlRVAxOU5TQ2FjaGVkVVJMUmVzcG9uc2UKQEAgLTY4OCw5ICs2ODYsOCBAQCBfX1pON1dl
YkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMThzZXRIVFRQSGVhZGVyRmllbGRFUktOM1dURjEy
QXRvbWljU3RyaW5nRVJLTgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE5c2V0
VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoRXgK
LV9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNfNEtVUkxFCitf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pO
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJFdgotX19aTjdXZWJDb3JlMjBSZXNvdXJj
ZVJlc3BvbnNlQmFzZUMyRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFeFM3X1M3XwogX19aTjdX
ZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2Vy
R2VzdHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pO
N1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpAQCAtNzExLDcgKzcwOCw2IEBAIF9f
Wk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjFyZXN1bWVQZW5kaW5nUmVxdWVzdHNF
dgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMnN1c3BlbmRQZW5kaW5nUmVx
dWVzdHNFdgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyM3NjaGVkdWxlU3Vi
cmVzb3VyY2VMb2FkRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291
cmNlUmVxdWVzdEVOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RVJLTlNfMjFSZXNvdXJjZUxvYWRl
ck9wdGlvbnNFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKLV9fWk43V2ViQ29yZTIxUmVzb3VyY2VM
b2FkU2NoZWR1bGVyMjdjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWRFUE5TXzE0UmVzb3VyY2VM
b2FkZXJFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMzJu
b3RpZnlEaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9f
Wk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyNnJlbW92ZUVQTlNfMTRSZXNvdXJjZUxv
YWRlckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyQzJFdgpAQCAtODAzLDEz
ICs3OTksMTMgQEAgX19aTjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2
CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrQzFFdgotX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWxFUktOU180S1VSTEVTMl8KK19fWk43V2ViQ29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsRVJLTlNfM1VSTEVTMl8KIF9fWk43V2ViQ29yZTI3c3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzRVBGdnZFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFk
ZFVzZXJTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQog
X19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVl
dEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJD
b3JlMjhlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2Ci1fX1pON1dlYkNvcmUyOWNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25F
UktOU180S1VSTEVTNV8KK19fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNv
cmUyOWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0RWliCiBfX1pON1dlYkNvcmUzMGhvc3RO
YW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNv
cmUzMGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCkBA
IC04MTksNiArODE1LDExIEBAIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZTZzaGFyZWRFdgogX19aTjdXZWJDb3JlMzNzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1vdmVXaWRnZXRzRXYKIF9fWk43V2ViQ29yZTM3V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVT
dXNwZW5kQ291bnRFCitfX1pON1dlYkNvcmUzVVJMMTBpbnZhbGlkYXRlRXYKK19fWk43V2ViQ29y
ZTNVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTNVUkxDMUVQNU5TVVJMCitfX1pON1dlYkNvcmUzVVJMQzFFUEs3X19DRlVSTAorX19aTjdX
ZWJDb3JlM1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNf
MTBDcmVkZW50aWFsRQogX19aTjdXZWJDb3JlM21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VFCiBfX1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9y
dFNpemVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRWYKQEAgLTgzMywxMSAr
ODM0LDYgQEAgX19aTjdXZWJDb3JlNEZvbnRDMUV2CiBfX1pON1dlYkNvcmU0Rm9udGFTRVJLUzBf
CiBfX1pON1dlYkNvcmU0SWNvbjE4Y3JlYXRlSWNvbkZvckZpbGVzRVJLTjNXVEY2VmVjdG9ySU5T
MV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTRJY29u
RDFFdgotX19aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVFdgotX19aTjdXZWJDb3JlNEtVUkxD
MUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTRL
VVJMQzFFUDVOU1VSTAotX19aTjdXZWJDb3JlNEtVUkxDMUVQSzdfX0NGVVJMCi1fX1pON1dlYkNv
cmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0Tm9kZTEwcmVuZGVy
UmVjdEVQYgogX19aTjdXZWJDb3JlNE5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRy
SVMwX0VFUmlOU18xNEF0dGFjaEJlaGF2aW9yRQogX19aTjdXZWJDb3JlNE5vZGUxMXJlbW92ZUNo
aWxkRVBTMF9SaQpAQCAtMTA0MSwyMiArMTAzNywyMyBAQCBfX1pON1dlYkNvcmU3UnVuTG9vcDlU
aW1lckJhc2VEMkV2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjE5YWxsb3dzUm91bmRpbmdIYWNrc0V2
CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxvd3NSb3VuZGluZ0hhY2tzRQogX19aTjdXZWJD
b3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5nSGFja3NFYgotX19aTjdXZWJDb3JlN2Nvb2tp
ZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTdjb29raWVzRVBLTlNf
OERvY3VtZW50RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTdqc0FycmF5RVBOM0pTQzlFeGVjU3Rh
dGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTNET01TdHJp
bmdMaXN0RUVFCiBfX1pON1dlYkNvcmU3bWFrZVJHQkVpaWkKIF9fWk43V2ViQ29yZTdyZXBsYWNl
RVJOM1dURjZTdHJpbmdFUktOU18xN1JlZ3VsYXJFeHByZXNzaW9uRVJLUzFfCiBfX1pON1dlYkNv
cmU3dG9JbnQ2NEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOU18zMEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbkUKIF9fWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVF
CiBfX1pON1dlYkNvcmU3dG9VSW50OEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOU18z
MEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkUKK19fWk43V2ViQ29yZThCbG9iRGF0YTEw
YXBwZW5kQmxvYkVSS05TXzNVUkxFeHgKIF9fWk43V2ViQ29yZThCbG9iRGF0YTE0c2V0Q29udGVu
dFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4Q1NTVmFsdWU3ZGVzdHJveUV2CiBf
X1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29yZThEb2N1bWVu
dDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzY3JlYXRlRWxlbWVudEVS
S05TXzEzUXVhbGlmaWVkTmFtZUViCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNGNyZWF0ZVRleHRO
b2RlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlOERvY3VtZW50MTdzZXRGb2N1c2VkRWxl
bWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVFRU5TXzE0Rm9jdXNEaXJlY3Rpb25F
CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNmlzUGFnZUJveFZpc2libGVFaQogX19aTjdXZWJDb3Jl
OERvY3VtZW50MTZzaG9ydGN1dEljb25VUkxzRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDE3c2V0
Rm9jdXNlZEVsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfN0VsZW1lbnRFRUVOU18xNEZvY3Vz
RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjBzdHlsZVJlc29sdmVyQ2hhbmdlZEVO
U18yM1N0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJjcmVh
dGVEb2N1bWVudEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDIzZGlkQWRkV2hlZWxF
dmVudEhhbmRsZXJFdgpAQCAtMTA3NSw4ICsxMDcyLDExIEBAIF9fWk43V2ViQ29yZThGb3JtRGF0
YTZkZWNvZGVFUk4zV1RGN0RlY29kZXJFCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBfX1pO
N1dlYkNvcmU4R3JhZGllbnQxMmFkZENvbG9yU3RvcEVmUktOU181Q29sb3JFCiBfX1pON1dlYkNv
cmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18KK19fWk43V2ViQ29yZThHcmFkaWVu
dEQxRXYKIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFaU5TMF8xMEFuY2hvclR5cGVFCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxM2dRVEtpdEVuYWJs
ZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKK19fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0
SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKQEAgLTExMDQsNyAr
MTEwNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxl
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzRWIKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRFYgotX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjVzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLTlNfNEtVUkxFCitfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU18zVVJMRQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyN3NldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlc0ViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyN3NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUViCkBAIC0xMTQyLDcgKzEx
NDIsNiBAQCBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjlwdXJnZUluYWN0aXZlRm9udERhdGFJZk5l
ZWRlZEV2CiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlMTFhcHBlbmRDaGlsZEVOM1dURjEwUGFzc1Jl
ZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWU3c2V0TmFtZUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlOWNsZWFyTmFtZUV2Ci1fX1pO
N1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVSTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzExZm9yY2VMYXlvdXRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEyc2V0TWVkaWFUeXBl
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEydGlsZWRCYWNraW5nRXYK
QEAgLTExNjIsMTIgKzExNjEsMTIgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tz
UmVwYWludHNFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3d2lsbEVuZExpdmVSZXNpemVFdgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE4ZW5hYmxlQXV0b1NpemVNb2RlRWJSS05TXzdJbnRTaXpl
RVMzXwogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKLV9fWk43
V2ViQ29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKK19fWk43V2Vi
Q29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwcmVt
b3ZlU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFFCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50c0V2CitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBz
ZXRDYW5IYXZlU2Nyb2xsYmFyc0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFmbHVzaERlZmVy
cmVkUmVwYWludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIxcmVzdW1lQW5pbWF0aW5nSW1h
Z2VzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJhc2VCYWNrZ3JvdW5kQ29sb3JFUktO
U181Q29sb3JFCkBAIC0xMTc3LDEzICsxMTc2LDE0IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcy
NHBhaW50Q29udGVudHNGb3JTbmFwc2hvdEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183SW50
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjRzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3JFTlNfMjFT
Y3JvbGxQaW5uaW5nQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjZhZGp1c3RQYWdl
SGVpZ2h0RGVwcmVjYXRlZEVQZmZmZgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI2YWRqdXN0VGls
ZWRCYWNraW5nQ292ZXJhZ2VFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBk
YXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0QXV0b1NpemVG
aXhlZE1pbmltdW1IZWlnaHRFaQorX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBk
YXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzMxc2V0VmlzdWFsVXBk
YXRlc0FsbG93ZWRCeUNsaWVudEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzdzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3Vw
ZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzM4c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzM5Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzRXYK
K19fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczExdGV4dGFyZWFU
YWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTJzZWxlY3RlZEF0dHJFCkBAIC0xMjUzLDE0ICsx
MjUzLDE0IEBAIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxNnN5bmNMb2NhbFN0b3JhZ2VFdgogX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDE3Y2xvc2VMb2NhbFN0b3JhZ2VFdgogX19aTjdXZWJDb3JlOVBh
Z2VHcm91cDE4YWRkVmlzaXRlZExpbmtIYXNoRXkKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxOG51
bWJlck9mUGFnZUdyb3Vwc0V2Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBhZGRVc2VyU2NyaXB0
VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEVS
S05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKK19fWk43
V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJX
b3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1
Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjNVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUVOU18yNVVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjByZW1vdmVB
bGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjFyZW1vdmVBbGxWaXNpdGVk
TGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZW
ZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9u
VGltZUUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGRF
UE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MjRhZGRVc2VyU3R5bGVTaGVldFRvV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2
U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZs
b3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZl
bEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjVy
ZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzNVUkxF
CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZyZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZEVQTlNf
MTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rc0ViCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjlyZW1vdmVVc2VyU3R5bGVT
aGVldEZyb21Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU180S1VSTEUKK19fWk43V2Vi
Q29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdy
YXBwZXJXb3JsZEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzBjbG9zZUlkbGVM
b2NhbFN0b3JhZ2VEYXRhYmFzZXNFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDMwcmVtb3ZlVXNl
clN0eWxlU2hlZXRzRnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29y
ZTlQYWdlR3JvdXA5cGFnZUdyb3VwRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTI4Niw3ICsxMjg2LDYg
QEAgX19aTjdXZWJDb3JlOXBhZ2VDYWNoZUV2CiBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNf
NVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFYgogX19aTjdXZWJDb3JlOXRvRWxlbWVu
dEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOXVuaW9uUmVjdEVSS04zV1RGNlZlY3RvcklO
U185RmxvYXRSZWN0RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTEz
U2NyaXB0R0NFdmVudDExZ2V0SGVhcFNpemVFUk5TXzhIZWFwSW5mb0UKIF9fWk5LM0pTQzhCaW5k
aW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9fWk5LM1dURjZTdHJpbmcxNGNyZWF0
ZUNGU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWwxMWhhc1Bhc3N3b3JkRXYKQEAg
LTEzMTUsOCArMTMxNCw2IEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9S
b290Vmlld0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2li
bGVDb250ZW50UmVjdEVOU18xNFNjcm9sbGFibGVBcmVhMzZWaXNpYmxlQ29udGVudFJlY3RJbmNs
dWRlc1Njcm9sbGJhcnNFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MjNyb290Vmlld1RvVG90
YWxDb250ZW50c0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXczMHNj
cm9sbE9mZnNldFJlbGF0aXZlVG9Eb2N1bWVudEV2Ci1fX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0
aGlkZUV2Ci1fX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hvd0V2CiBfX1pOSzdXZWJDb3JlMTBT
dG9yYWdlTWFwNmxlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdlTWFwN2dldEl0ZW1FUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdlTWFwOGNvbnRhaW5zRVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTM3Myw3ICsxMzcwLDYgQEAgX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
NG5vZGVFdgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNXJhbmdlRXYKIF9fWk5LN1dlYkNv
cmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYKIF9fWk5LN1dlYkNvcmUxM0NvbnRh
aW5lck5vZGU5Y2hpbGROb2RlRWoKLV9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjdzZXRTaXpl
RVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGFjY3VtdWxh
dGVkT3BhY2l0eUV2CiBfX1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMThnZXREZWJ1Z0JvcmRl
ckluZm9FUk5TXzVDb2xvckVSZgogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjI2YmFja2lu
Z1N0b3JlTWVtb3J5RXN0aW1hdGVFdgpAQCAtMTQwNiw3ICsxNDAyLDcgQEAgX19aTks3V2ViQ29y
ZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9h
ZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxv
YWRlckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExcmVzcG9uc2VVUkxFdgotX19a
Tks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMXN1YnJlc291cmNlRVJLTlNfNEtVUkxFCitfX1pO
SzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3VyY2VFUktOU18zVVJMRQogX19aTks3
V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMm1haW5SZXNvdXJjZUV2CiBfX1pOSzdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjEzdXJsRm9ySGlzdG9yeUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjE0dW5yZWFjaGFibGVVUkxFdgpAQCAtMTQxNyw3ICsxNDEzLDYgQEAgX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxN3BhcnNlZEFyY2hpdmVEYXRhRXYKIF9fWk5LN1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyMThtYWluUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxOWlzTG9hZGluZ0luQVBJU2Vuc2VFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxOW9yaWdpbmFsUmVxdWVzdENvcHlFdgotX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXIyMWFyY2hpdmVSZXNvdXJjZUZvclVSTEVSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTE0RG9j
dW1lbnRMb2FkZXIyOHVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmVFdgogX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIzdXJsRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOWlz
TG9hZGluZ0V2CkBAIC0xNDMwLDYgKzE0MjUsNyBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVj
dGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXwog
X19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3Vt
ZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZib3VuZHNFYgogX19a
Tks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdgorX19aTks3V2ViQ29yZTE0SW5z
cGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRl
bTEwbWFya2VyVGV4dEV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKIF9f
Wk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVFdgpAQCAtMTQ0Myw3ICsxNDM5LDcgQEAg
X19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMW1vdXNlRW50ZXJlZFNjcm9sbGJhckVQTlNf
OVNjcm9sbGJhckUKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjJtb3VzZUV4aXRlZENv
bnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZUVudGVyZWRD
b250ZW50QXJlYUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIzbW91c2VNb3ZlZElu
Q29udGVudEFyZWFFdgotX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3BsYXlF
UktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTBjYW5EaXNwbGF5RVJL
TlNfM1VSTEUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTF0b1Jhd1N0cmluZ0V2CiBf
X1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5LN1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMTZjYW5BY2Nlc3NTdG9yYWdlRVBLUzBfTlMwXzI1U2hvdWxkQWxs
b3dGcm9tVGhpcmRQYXJ0eUUKQEAgLTE1MDMsMTAgKzE0OTksMTEgQEAgX19aTks3V2ViQ29yZTE3
UmVzb3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTks3V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkMTFjaGFuZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3JlMThSZW5kZXJMYXllckJhY2tpbmcx
MWNvbnRlbnRzQm94RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFja2luZzIwY29tcG9z
aXRpbmdMYXllclR5cGVFdgorX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjExaXNT
dXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjI0bnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zRVBOU184RG9jdW1lbnRFCitfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMzNhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgogX19aTks3V2Vi
Q29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0SGlnaGxpZ2h0RVBOU185SGlnaGxpZ2h0RQog
X19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI5YnVpbGRPYmplY3RGb3JIaWdobGln
aHRlZE5vZGVFdgotX19aTks3V2ViQ29yZTE0SW5zcGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2
CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTBodHRwTWV0aG9kRXYKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBIZWFkZXJGaWVsZEVQS2MKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMGZpcnN0UGFydHlGb3JDb29raWVzRXYKQEAg
LTE1MTYsNiArMTUxMyw3IEBAIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U3aXNF
bXB0eUV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlOGh0dHBCb2R5RXYKIF9f
Wk5LN1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMTFpc1ByZWxvYWRlZEVSS04zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmUyMEhUTUxUYWJsZUNlbGxFbGVtZW50OWNlbGxBYm92ZUV2Citf
X1pOSzdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVk
RXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJpc0F0dGFjaG1lbnRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmxhc3RNb2RpZmllZEV2CiBfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE0aHR0cFN0YXR1c0NvZGVFdgpAQCAtMTUz
Myw3ICsxNTMxLDcgQEAgX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyOWJhY2tD
b3VudEV2CiBfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tpZVN0b3Jh
Z2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxMYXllckV2
CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJMYXllckV2
Ci1fX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05TXzRLVVJM
RQorX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuN21hdGNoZXNFUktOU18zVVJM
RQogX19aTks3V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxMW1heGltdW1TaXplRXYK
IF9fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjBhdXRoZW50aWNhdGlvbkNs
aWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRlclN0YXRlTWFjaGluZTE1Zmlyc3RMYXlv
dXREb25lRXYKQEAgLTE1NDcsMzMgKzE1NDUsMjkgQEAgX19aTks3V2ViQ29yZTI3QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlMThwcm9wb3NlZENyZWRlbnRpYWxFdgogX19aTks3V2ViQ29yZTI3
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlMjBwcmV2aW91c0ZhaWx1cmVDb3VudEV2CiBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U1ZXJyb3JFdgogX19aTks3V2Vi
Q29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CitfX1pOSzdXZWJDb3Jl
M1VSTDEwcHJvdG9jb2xJc0VQS2MKK19fWk5LN1dlYkNvcmUzVVJMMTFjcmVhdGVDRlVSTEV2Citf
X1pOSzdXZWJDb3JlM1VSTDExaXNMb2NhbEZpbGVFdgorX19aTks3V2ViQ29yZTNVUkwxMmJhc2VB
c1N0cmluZ0V2CitfX1pOSzdXZWJDb3JlM1VSTDE0ZmlsZVN5c3RlbVBhdGhFdgorX19aTks3V2Vi
Q29yZTNVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKK19fWk5LN1dlYkNvcmUzVVJMMThmcmFnbWVu
dElkZW50aWZpZXJFdgorX19aTks3V2ViQ29yZTNVUkwyMWhhc0ZyYWdtZW50SWRlbnRpZmllckV2
CitfX1pOSzdXZWJDb3JlM1VSTDRob3N0RXYKK19fWk5LN1dlYkNvcmUzVVJMNHBhc3NFdgorX19a
Tks3V2ViQ29yZTNVUkw0cGF0aEV2CitfX1pOSzdXZWJDb3JlM1VSTDRwb3J0RXYKK19fWk5LN1dl
YkNvcmUzVVJMNHVzZXJFdgorX19aTks3V2ViQ29yZTNVUkw1cXVlcnlFdgorX19aTks3V2ViQ29y
ZTNVUkw4cHJvdG9jb2xFdgorX19aTks3V2ViQ29yZTNVUkxjdlA1TlNVUkxFdgogX19aTks3V2Vi
Q29yZTRGb250NXdpZHRoRVJLTlNfN1RleHRSdW5FUE4zV1RGN0hhc2hTZXRJUEtOU18xNFNpbXBs
ZUZvbnREYXRhRU5TNF83UHRySGFzaElTOF9FRU5TNF8xMEhhc2hUcmFpdHNJUzhfRUVFRVBOU18x
M0dseXBoT3ZlcmZsb3dFCiBfX1pOSzdXZWJDb3JlNEZvbnQ4ZHJhd1RleHRFUE5TXzE1R3JhcGhp
Y3NDb250ZXh0RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFaWlOUzBfMjRDdXN0b21G
b250Tm90UmVhZHlBY3Rpb25FCiBfX1pOSzdXZWJDb3JlNEZvbnRlcUVSS1MwXwotX19aTks3V2Vi
Q29yZTRLVVJMMTBwcm90b2NvbElzRVBLYwotX19aTks3V2ViQ29yZTRLVVJMMTFjcmVhdGVDRlVS
TEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxMWlzTG9jYWxGaWxlRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDEyYmFzZUFzU3RyaW5nRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDE0ZmlsZVN5c3RlbVBhdGhFdgot
X19aTks3V2ViQ29yZTRLVVJMMTdsYXN0UGF0aENvbXBvbmVudEV2Ci1fX1pOSzdXZWJDb3JlNEtV
UkwxOGZyYWdtZW50SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwyMWhhc0ZyYWdtZW50
SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0aG9zdEV2Ci1fX1pOSzdXZWJDb3JlNEtV
Ukw0cGFzc0V2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0cGF0aEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0
cG9ydEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0dXNlckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw1cXVl
cnlFdgotX19aTks3V2ViQ29yZTRLVVJMOHByb3RvY29sRXYKLV9fWk5LN1dlYkNvcmU0S1VSTGN2
UDVOU1VSTEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNv
cmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFu
dE9mRVBLUzBfCi1fX1pOSzdXZWJDb3JlNE5vZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYx
MUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2RU5TXzhLVVJMSGFzaEVFRQogX19aTks3V2ViQ29y
ZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlRXYKLSNpZiBFTkFCTEUoU1RZTEVf
U0NPUEVEKQotX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxk
cmVuRXYKLSNlbmRpZgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CiBfX1pOSzdXZWJD
b3JlNE5vZGU5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNfN0ludFJlY3RFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTRQYWdlMTBwbHVnaW5EYXRhRXYKQEAgLTE3
MjgsOSArMTcyMiwxMiBAQCBfaGFzQ2FzZUluc2Vuc2l0aXZlU3Vic3RyaW5nCiBfaGFzQ2FzZUlu
c2Vuc2l0aXZlU3VmZml4CiBfc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nCiBf
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUKK193a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0Jl
aW5nRHJhd25XaXRoQmxvY2sKK193a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcKIF93
a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzCiBfd2tDR0NvbnRleHRJc1BERkNvbnRleHQK
IF93a0NHQ29udGV4dFJlc2V0Q2xpcAorX3drQ0dQYXRoQWRkUm91bmRlZFJlY3QKIF93a0NHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybQogX3drQ1RSdW5HZXRJbml0aWFsQWR2YW5j
ZQogX3drQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZQpAQCAtMTc0MSw2ICsxNzM4LDcg
QEAgX3drQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluCiBfd2tDb3B5TlNVUkxSZXNw
b25zZVN0YXR1c0xpbmUKIF93a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uCiBfd2tDcmVh
dGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyCitfd2tDcmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5p
Q2hhclByb3ZpZGVyQW5kT3B0aW9ucwogX3drQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtCiBfd2tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24KIF93a0RlbGV0ZUFsbEhUVFBDb29raWVzCkBAIC0x
ODY1LDkgKzE4NjMsOCBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjdtb3VzZVVwRVA3TlNF
dmVudAogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXI4a2V5RXZlbnRFUDdOU0V2ZW50CiBfX1pO
N1dlYkNvcmUxMkV2ZW50SGFuZGxlcjltb3VzZURvd25FUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUx
M3RvRGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKLV9fWk43V2ViQ29yZTEz
Z2V0UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVf
Uk4zV1RGNlZlY3RvcklOU182Q29va2llRUxtMEVOUzZfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXpl
RU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlfTlNfMTdDb21wb3NpdGVPcGVyYXRv
ckVOU185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlvbkUKK19fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0
Mzl1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHlFUktTMF8KIF9fWk43V2Vi
Q29yZTE2Rm9udFBsYXRmb3JtRGF0YUMxRVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9u
RU5TXzE2Rm9udFdpZHRoVmFyaWFudEUKIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRmb3JtRGF0YUMy
RVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9uRU5TXzE2Rm9udFdpZHRoVmFyaWFudEUK
QEAgLTE4NzYsOCArMTg3Myw4IEBAIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50UmVjdEVSSzdf
TlNSZWN0CiBfX1pON1dlYkNvcmUxOWFwcGxpY2F0aW9uSXNTYWZhcmlFdgogX19aTjdXZWJDb3Jl
MjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3TlNFdmVu
dFA2TlNWaWV3CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0
Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50Ci1fX1pON1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVn
aW5OYW1lRXYKIF9fWk43V2ViQ29yZTIwYXBwbGljYXRpb25Jc0hSQmxvY2tFdgorX19aTjdXZWJD
b3JlMjBidWlsdEluUERGUGx1Z2luTmFtZUV2CiBfX1pON1dlYkNvcmUyMURldmljZU9yaWVudGF0
aW9uRGF0YTZjcmVhdGVFYmRiZGJkYmIKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc0FwZXJ0
dXJlRXYKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc1ZlcnNpb25zRXYKQEAgLTE5MjQsOCAr
MTkyMSw4IEBAIF9fWk43V2ViQ29yZTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZ0V2
CiBfX1pON1dlYkNvcmUzMmFwcGxpY2F0aW9uSXNBT0xJbnN0YW50TWVzc2VuZ2VyRXYKIF9fWk43
V2ViQ29yZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnRFdgogX19aTjdXZWJDb3Jl
MzJjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2Ci1fX1pON1dlYkNvcmUzM3Bvc3RT
Y3JpcHREb2N1bWVudFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pON1dlYkNvcmUzM2NvbnRleHRNZW51
SXRlbVRhZ1RleHRSZXBsYWNlbWVudEV2CitfX1pON1dlYkNvcmUzM3Bvc3RTY3JpcHREb2N1bWVu
dFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pON1dlYkNvcmUzM3NldERlZmF1bHRUaHJlYWRWaW9sYXRp
b25CZWhhdmlvckVOU18yM1RocmVhZFZpb2xhdGlvbkJlaGF2aW9yRU5TXzIwVGhyZWFkVmlvbGF0
aW9uUm91bmRFCiBfX1pON1dlYkNvcmUzNGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rp
b25FdgogX19aTjdXZWJDb3JlMzVjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbEVi
CkBAIC0xOTUxLDggKzE5NDgsOCBAQCBfX1pON1dlYkNvcmU2RWRpdG9yMjhzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkRXYKIF9fWk43V2ViQ29yZTZXaWRnZXQxN3NldFBsYXRmb3JtV2lkZ2V0
RVA2TlNWaWV3CiBfX1pON1dlYkNvcmU2V2lkZ2V0QzJFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTdu
c0NvbG9yRVJLTlNfNUNvbG9yRQotX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks4X05TUG9pbnQK
IF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLN0NHUG9pbnQKK19fWk43V2ViQ29yZThJbnRQb2lu
dEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUks3X05TUmVjdAogX19a
Tks3V2ViQ29yZTEwRmxvYXRQb2ludGN2OF9OU1BvaW50RXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9s
bGFibGVBcmVhMTh2aXNpYmxlQ29udGVudFJlY3RFTlMwXzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkZXNTY3JvbGxiYXJzRQpAQCAtMTk2MiwxMCArMTk1OSwxMiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFNpemVjdjZDR1NpemVFdgogX19aTks3V2ViQ29yZThJbnRQb2ludGN2OF9OU1BvaW50RXYKIF9f
Wk5LN1dlYkNvcmU5RmxvYXRSZWN0Y3Y3X05TUmVjdEV2CiBfc3RyaW5nRW5jb2RpbmdGb3JSZXNv
dXJjZQorX3drQVZBc3NldFJlc29sdmVkVVJMCiBfd2tBY2Nlc3NpYmlsaXR5SGFuZGxlRm9jdXND
aGFuZ2VkCiBfd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfd2tDb3B5QVhU
ZXh0TWFya2VyUmFuZ2VFbmQKIF93a0NvcHlBWFRleHRNYXJrZXJSYW5nZVN0YXJ0Citfd2tDb3B5
RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUKIF93a0NyZWF0ZUFYVGV4dE1hcmtlcgog
X3drQ3JlYXRlQVhUZXh0TWFya2VyUmFuZ2UKIF93a0NyZWF0ZUFYVUlFbGVtZW50UmVmCkBAIC0x
OTczLDYgKzE5NzIsOCBAQCBfd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcKIF93a0NyZWF0
ZU1lZGlhVUlDb250cm9sCiBfd2tDcmVhdGVVUkxOUGFzdGVib2FyZEZsYXZvclR5cGVOYW1lCiBf
d2tDcmVhdGVVUkxQYXN0ZWJvYXJkRmxhdm9yVHlwZU5hbWUKK193a0NyZWF0ZVZNUHJlc3N1cmVE
aXNwYXRjaE9uTWFpblF1ZXVlCitfd2tDdXJzb3IKIF93a0RyYXdCZXplbGVkVGV4dEFyZWEKIF93
a0RyYXdCZXplbGVkVGV4dEZpZWxkQ2VsbAogX3drRHJhd0NhcHNMb2NrSW5kaWNhdG9yCkBAIC0x
OTgwLDYgKzE5ODEsNyBAQCBfd2tEcmF3Rm9jdXNSaW5nCiBfd2tEcmF3TWVkaWFTbGlkZXJUcmFj
awogX3drRHJhd01lZGlhVUlQYXJ0CiBfd2tEcmF3VGV4dEZpZWxkQ2VsbEZvY3VzUmluZworX3dr
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZAogX3drR2V0QVhUZXh0TWFy
a2VyUmFuZ2VUeXBlSUQKIF93a0dldEFYVGV4dE1hcmtlclR5cGVJRAogX3drR2V0Qnl0ZXNGcm9t
QVhUZXh0TWFya2VyCkBAIC0yMDEzLDcgKzIwMTUsOSBAQCBfd2tRVE1vdmllUmVzb2x2ZWRVUkwK
IF93a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzCiBfd2tRVE1vdmllU2V0U2hvd0Ns
b3NlZENhcHRpb25zCiBfd2tRVE1vdmllVmlld1NldERyYXdTeW5jaHJvbm91c2x5Citfd2tSZWNv
bW1lbmRlZFNjcm9sbGVyU3R5bGUKIF93a1NldENHRm9udFJlbmRlcmluZ01vZGUKK193a1NldENy
YXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uCiBfd2tTZXREcmFnSW1hZ2UK
IF93a1NldE1ldGFkYXRhVVJMCiBfd2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcK
QEAgLTIxMTAsMTAgKzIxMTQsOCBAQCBfX1pON1dlYkNvcmUxMUltYWdlU291cmNlMjZzX2FjY2Vs
ZXJhdGVkSW1hZ2VEZWNvZGluZ0UKIF9fWk43V2ViQ29yZTExSW1hZ2VTb3VyY2UzM21heGltdW1J
bWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0V2CiBfX1pON1dlYkNvcmUxMUltYWdlU291cmNlMzZz
ZXRNYXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmdFagogX19aTjdXZWJDb3JlMTFNYXRo
TUxOYW1lczRpbml0RXYKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNWFkZEltYWdlVG9DYWNo
ZUVQN0NHSW1hZ2VSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE4cHJ1bmVE
ZWFkUmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHBydW5lTGl2ZVJlc291
cmNlc0ViCi1fX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjByZW1vdmVJbWFnZUZyb21DYWNoZUVS
S05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTFpc0VuZE9mTGluZUVSS05TXzE1VmlzaWJsZVBvc2l0
aW9uRQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMG1vdXNlTW92ZWRFUDhXZWJFdmVudAog
X19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMHdoZWVsRXZlbnRFUDhXZWJFdmVudApAQCAtMjIw
MCw3ICsyMjAyLDYgQEAgX19aTjdXZWJDb3JlMjhjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRl
RWZmCiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JDMUVQS3Rp
CiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JEMUV2CiBfX1pO
N1dlYkNvcmUzMWFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnlFdgotX19aTjdXZWJDb3Jl
MzJlbmFibGVLVVJMU2NoZW1lQ2Fub25pY2FsaXphdGlvbkViCiBfX1pON1dlYkNvcmUzM2FwcGxp
Y2F0aW9uSXNUaGVFY29ub21pc3RPbklQaG9uZUV2CiBfX1pON1dlYkNvcmU0MWluaXRpYWxpemVI
VFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwRXYKIF9fWk43V2ViQ29yZTRGb250QzFFUktO
U18xNkZvbnRQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJGb250U2VsZWN0b3JF
RUUKQEAgLTIyMTQsNyArMjIxNSw2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTIwZG9jdW1lbnRTY2Fs
ZUNoYW5nZWRFdgogX19aTjdXZWJDb3JlNUZyYW1lMjBzZXRWaWV3cG9ydEFyZ3VtZW50c0VSS05T
XzE3Vmlld3BvcnRBcmd1bWVudHNFCiBfX1pON1dlYkNvcmU1RnJhbWUyMWRlZXBlc3ROb2RlQXRM
b2NhdGlvbkVQN0NHUG9pbnQKIF9fWk43V2ViQ29yZTVGcmFtZTIxdmlld3BvcnRPZmZzZXRDaGFu
Z2VkRXYKLV9fWk43V2ViQ29yZTVGcmFtZTI2aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnRFUktO
M1dURjZTdHJpbmdFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTVGcmFtZTI3bm9kZVJlc3BvbmRp
bmdUb0NsaWNrRXZlbnRzRVA3Q0dQb2ludAogX19aTjdXZWJDb3JlNUZyYW1lMzBzZXRTaW5nbGVM
aW5lU2VsZWN0aW9uQmVoYXZpb3JFYgogX19aTjdXZWJDb3JlNUZyYW1lMzJkaXNwYXRjaFBhZ2VI
aWRlRXZlbnRCZWZvcmVQYXVzZUV2CkBAIC0yMjUxLDkgKzIyNTEsNiBAQCBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjRyZW5kZXJlZENoYXJhY3RlcnNFeGNlZWRFagogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzMwZ3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0RVA3V0FLVmlldwogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzMyc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RFUktOU183SW50
UmVjdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczNXNldFVzZUN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0RWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAxN3JlbW92ZVZpc2l0ZWRMaW5rRVJL
TlNfNEtVUkxFCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBhZGRVc2VyU2NyaXB0VG9Xb3JsZEVQ
TlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVj
dG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKLV9fWk43V2ViQ29yZTlQ
YWdlR3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRF
UktOM1dURjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFz
aE9uT3ZlcmZsb3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2Vy
U3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCiBfX1pON1dlYkNvcmU5VGls
ZUNhY2hlMTRkcmFpbkxheWVyUG9vbEV2CiBfX1pON1dlYkNvcmU5VGlsZUNhY2hlMjBzZXRMYXll
clBvb2xDYXBhY2l0eUVqCiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y3Q0dQb2ludEV2CkBA
IC0yMzE1LDUyICsyMzEyLDMxIEBAIF9fWk5LN1dlYkNvcmU3RWxlbWVudDI2ZmFzdEF0dHJpYnV0
ZUxvb2t1cEFsbG93ZWRFUktOU18xM1F1YWxpZmllZE5hbWVFCiBfX1pON1dlYkNvcmUyMExvZ05v
dFlldEltcGxlbWVudGVkRQogX19aTjdXZWJDb3JlMjhub3RJbXBsZW1lbnRlZExvZ2dpbmdDaGFu
bmVsRXYKIF9fWk43V2ViQ29yZTM2aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5
RXYKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisjZW5kaWYKIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKIF9fWk43V2ViQ29yZTI3Tm9FeGNlcHRpb25Bc3NlcnRpb25DaGVja2VyQzFFUEtjaQogX19a
TjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXJEMUV2Ci0jZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorI2VuZGlmCiAKICNpZiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NB
TUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykgJiYgIVBMQVRGT1JNKElPUykKIF9fWk43V2ViQ29yZTdJ
bnRTaXplQzFFUks3X05TU2l6ZQogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiAj
ZW5kaWYKIAotX3drQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jawotX3dr
Q0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZwotX3drQ0dQYXRoQWRkUm91bmRlZFJlY3QK
LV93a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zCi0KICNp
ZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIF93a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUKIF93
a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQotX3drQVZBc3NldFJlc29sdmVkVVJMCi1fd2tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlz
cGxheU5hbWUKLV93a1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9u
Ci1fd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1ZQotX3drQ3Vyc29yCi1fd2tF
eGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkCi1fd2tSZWNvbW1lbmRlZFNj
cm9sbGVyU3R5bGUKLSNlbmRpZgotCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDcmVhdGVNZW1vcnlTdGF0dXNQcmVzc3Vy
ZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZQotI2VuZGlmCi0KLSNpZiBVU0UoQ09OVEVOVF9G
SUxURVJJTkcpCi1fd2tGaWx0ZXJBZGREYXRhCi1fd2tGaWx0ZXJDcmVhdGVJbnN0YW5jZQotX3dr
RmlsdGVyRGF0YUNvbXBsZXRlCi1fd2tGaWx0ZXJJc0J1ZmZlcmluZwotX3drRmlsdGVySXNNYW5h
Z2VkU2Vzc2lvbgotX3drRmlsdGVyV2FzQmxvY2tlZAotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0o
SU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKK19fWk43V2Vi
Q29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9O
U1JhbmdlCitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0
ZXJuYXRpdmVzRVJLTjNXVEY5UmV0YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43
V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93QWx0ZXJuYXRpdmVzRVA2
TlNWaWV3UktOU185RmxvYXRSZWN0RXlVMTNibG9ja19wb2ludGVyRnZQOE5TU3RyaW5nRQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZl
c0V5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjIyYWx0ZXJuYXRp
dmVzRm9yQ29udGV4dEV5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cjVjbGVhckV2CitfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
RVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX3drQ0dDb250ZXh0RHJhd3NX
aXRoQ29ycmVjdFNoYWRvd09mZnNldHMKIF93a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3Jl
TGlvbgogX3drTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEKQEAgLTIzNjgsMjggKzIzNDQs
MTggQEAgX3drTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEKIF93a05TUmVib3VuZERlbHRhRm9y
RWxhc3RpY0RlbHRhCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDVEZvbnRUcmFuc2Zvcm1HbHlwaHMKKyNp
ZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKK193a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1
ZXVlCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCi1fX1pON1dlYkNvcmUyN0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0YWluUHRy
STE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKLV9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKLV9fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKLV9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQotX19aTjdXZWJDb3JlMjdBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNFUDZOU1ZpZXdSS05TXzlG
bG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCi1fX1pON1dlYkNvcmUyNFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQot
X19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJp
YnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxt
MEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKKyNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorX3drQ1RGb250VHJhbnNmb3JtR2x5cGhz
CiAjZW5kaWYKIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiBfV2ViQ29yZUhhczNEUmVuZGVy
aW5nCiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLV9fWk43V2ViQ29yZTE2Rmls
dGVyT3BlcmF0aW9uc2FTRVJLUzBfCi0jZW5kaWYKLQogI2lmIFVTRShBUFBLSVQpCiBfX1pON1dl
YkNvcmU2RWRpdG9yMTNsb3dlcmNhc2VXb3JkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxM3VwcGVy
Y2FzZVdvcmRFdgpAQCAtMjQwMSw5ICsyMzY3LDIyIEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczIw
Z0FWRm91bmRhdGlvbkVuYWJsZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldEFWRm91bmRh
dGlvbkVuYWJsZWRFYgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi1fX1pON1dlYkNvcmU4
U2V0dGluZ3MxM2dRVEtpdEVuYWJsZWRFCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFFUS2l0
RW5hYmxlZEViCisjaWYgRU5BQkxFKEJMT0IpCitfX1pON1dlYkNvcmUxMmJsb2JSZWdpc3RyeUV2
CitfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgorX19a
TjdXZWJDb3JlN1Jhd0RhdGFDMUV2CitfX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAorX19aTjdXZWJDb3JlOEJsb2JEYXRh
MTBhcHBlbmRGaWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAorX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNy
ZWF0ZUV2CitfX1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCitfX1pON1dl
YkNvcmUxMkJsb2JSZWdpc3RyeUQyRXYKK19fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCitf
X1pUVk43V2ViQ29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNlbmRpZgorCisjaWYgRU5BQkxFKENB
Q0hFX1BBUlRJVElPTklORykKK19fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTNwYXJ0aXRp
b25OYW1lRVJLTjNXVEY2U3RyaW5nRQorX3drQ2FjaGVQYXJ0aXRpb25LZXkKICNlbmRpZgogCiAj
aWYgVVNFKENGTkVUV09SSykKQEAgLTI0MjEsMTggKzI0MDAsMTMgQEAgX3drU2V0Q0ZVUkxSZXF1
ZXN0U2hvdWxkQ29udGVudFNuaWZmCiBfd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEJMT0IpCi1fX1pON1dlYkNvcmUxMmJsb2JSZWdpc3RyeUV2Ci1fX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgotX19aTjdXZWJD
b3JlN1Jhd0RhdGFDMUV2Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZEJsb2JFUktOU180
S1VSTEV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmREYXRhRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzdSYXdEYXRhRUVFeHgKLV9fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kRmlsZUVS
S04zV1RGNlN0cmluZ0V4eGQKLV9fWk43V2ViQ29yZThCbG9iRGF0YTZjcmVhdGVFdgotX19aTjdX
ZWJDb3JlMTJCbG9iRGF0YUl0ZW0xMXRvRW5kT2ZGaWxlRQotX19aTjdXZWJDb3JlMTJCbG9iUmVn
aXN0cnlEMkV2Ci1fX1pUVk43V2ViQ29yZTEyQmxvYlJlZ2lzdHJ5RQotX19aVFZON1dlYkNvcmUx
NkJsb2JSZWdpc3RyeUltcGxFCisjaWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQorX3drRmlsdGVy
QWRkRGF0YQorX3drRmlsdGVyQ3JlYXRlSW5zdGFuY2UKK193a0ZpbHRlckRhdGFDb21wbGV0ZQor
X3drRmlsdGVySXNCdWZmZXJpbmcKK193a0ZpbHRlcklzTWFuYWdlZFNlc3Npb24KK193a0ZpbHRl
cldhc0Jsb2NrZWQKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yNDU0
LDEzICsyNDI4LDE3IEBAIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTV0aXRsZUV2CiBf
X1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUxNUNv
bnRleHRNZW51SXRlbTdjaGVja2VkRXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdl
bmFibGVkRXYKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZgorCisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQorX19aTjdXZWJDb3JlMTZGaWx0ZXJPcGVyYXRpb25zYVNFUktT
MF8KKyNlbmRpZgogCiAjaWYgRU5BQkxFKENTUzNfQ09ORElUSU9OQUxfUlVMRVMpCiAub2JqY19j
bGFzc19uYW1lX0RPTUNTU1N1cHBvcnRzUnVsZQogX19aTjdXZWJDb3JlMTJET01XaW5kb3dDU1M2
Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01H
bG9iYWxPYmplY3RFUE5TXzEyRE9NV2luZG93Q1NTRQotI2VuZGlmIC8vIEVOQUJMRShDU1MzX0NP
TkRJVElPTkFMX1JVTEVTKQorI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
IHx8IEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogX19aTks3V2ViQ29yZThEb2N1bWVudDE2YW5u
b3RhdGVkUmVnaW9uc0V2CkBAIC0yNDc5LDYgKzI0NTcsMTAgQEAgX19aTjdXZWJDb3JlOERyYWdE
YXRhQzFFUDExb2JqY19vYmplY3RSS05TXzhJbnRQb2ludEVTNV9OU18xM0RyYWdPcGVyYXRpb25F
TlNfMjAKIF9fWk43V2ViQ29yZThEcmFnRGF0YUMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfOEludFBv
aW50RVM3X05TXzEzRHJhZ09wZXJhdGlvbkVOU18yMERyYWdBcHBsaWNhdGlvbkZsYWdzRQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NETTE4
cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50
ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCisjZW5kaWYKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIF9fWk43V2ViQ29yZThEb2N1bWVudDIyd2Via2l0Q2Fu
Y2VsRnVsbFNjcmVlbkV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzM3dlYmtpdERpZEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCkBAIC0yNTI4LDcgKzI1MTAsNyBAQCBfX1pO
N1dlYkNvcmUxMkljb25EYXRhYmFzZUMxRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgot
I2VuZGlmIC8vIEVOQUJMRShJQ09OREFUQUJBU0UpCisjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogX19aTjdXZWJDb3JlNUNvbG9yQzFFUDdDR0NvbG9yCkBAIC0yNTk2LDYg
KzI1NzgsMTkgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMmNvbnRhaW5zUXVhZEVSS1MwXwog
X19aTks3V2ViQ29yZTlGbG9hdFF1YWQxM2NvbnRhaW5zUG9pbnRFUktOU18xMEZsb2F0UG9pbnRF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorX19aTjdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4dEF1dG9zaXppbmdFdgorX19aTjdXZWJDb3JlNUZyYW1l
MjJzZXRUZXh0QXV0b3NpemluZ1dpZHRoRWYKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIydXNlck1lZGlhQWNjZXNzR3Jh
bnRlZEV2CitfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0Rl
bmllZEV2CitfX1pON1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1
VXNlck1lZGlhQ2xpZW50RQorX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJp
dHlPcmlnaW5FdgorX19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVy
TW9ja01lZGlhU3RyZWFtQ2VudGVyRXYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiBfX05QTl9Db25zdHJ1Y3QKIF9fTlBOX0NyZWF0ZU9iamVjdApAQCAtMjY4OSw2
ICsyNjg0LDEyIEBAIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTIwYXV0aGVudGljYXRp
b25TY2hlbWVFdgogX19aTjdXZWJDb3JlOGNyZWF0ZUNGRVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCitfX1pON1dlYkNvcmUx
NGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjh0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQorX3drSXNQdWJsaWNTdWZmaXgKKyNl
bmRpZgorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBfX1pON1dlYkNvcmUyN3FsUHJldmlld0NvbnZl
cnRlclVUSUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUzMHJlbW92ZVFMUHJldmlld0NvbnZl
cnRlckZvclVSTEVQNU5TVVJMCkBAIC0yNzAwLDE4ICsyNzAxLDMxIEBAIF9fWk43V2ViQ29yZTMz
UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNFZAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzMxc2V0V2FudHNMYXllckZvclRv
cE92ZXJIYW5nQXJlYUViCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzM0c2V0V2FudHNMYXllckZv
ckJvdHRvbU92ZXJIYW5nQXJlYUViCisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
X19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTlNfMTBTaGFkb3dSb290RQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKK19fWk43V2ViQ29yZTE1U3BlZWNoU3ludGhlc2lzMjJzZXRQbGF0Zm9ybVN5bnRoZXNpemVy
RU4zV1RGMTBQYXNzT3duUHRySU5TXzI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVFRQorX19a
TjdXZWJDb3JlMjRET01XaW5kb3dTcGVlY2hTeW50aGVzaXMxNXNwZWVjaFN5bnRoZXNpc0VQTlNf
OURPTVdpbmRvd0UKK19fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckMyRVBO
U18zMVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRFCitfX1pUVk43V2ViQ29yZTI1UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckUKK19fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckQyRXYKK19fWk43V2ViQ29yZTI4UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTZj
cmVhdGVFUktOM1dURjZTdHJpbmdFUzRfUzRfYmIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNWRykK
IF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKLV9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTlyZXNldFRleHRBdXRv
c2l6aW5nRXYKLV9fWk43V2ViQ29yZTVGcmFtZTIyc2V0VGV4dEF1dG9zaXppbmdXaWR0aEVmCisj
aWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKK19fWk5LN1dlYkNvcmU0Tm9kZTMxbnVtYmVyT2ZTY29w
ZWRIVE1MU3R5bGVDaGlsZHJlbkV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JP
TExJTkcpCkBAIC0yNzYyLDQ5ICsyNzc2LDEyIEBAIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQ2cGF1c2VkRXYKIAogI2lmIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQogX19aTjdX
ZWJDb3JlNFBhZ2UxMXNldFZpZXdNb2RlRU5TMF84Vmlld01vZGVFCi0jZW5kaWYgLy8gRU5BQkxF
KFZJRVdfTU9ERV9DU1NfTUVESUEpCisjZW5kaWYKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogX19a
TjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVhZENvdW50RXYKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLV9fWk43V2ViQ29yZTNDRE0xOHJlZ2lzdGVy
Q0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVyZmFjZUVF
RVBTMF9FUEZiUktOUzFfNlN0cmluZ0VFUEZiU0FfU0FfRQotI2VuZGlmCi0KICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNF
dgogI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLV9fWk43V2ViQ29yZTE1
U3BlZWNoU3ludGhlc2lzMjJzZXRQbGF0Zm9ybVN5bnRoZXNpemVyRU4zV1RGMTBQYXNzT3duUHRy
SU5TXzI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVFRQotX19aTjdXZWJDb3JlMjRET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMxNXNwZWVjaFN5bnRoZXNpc0VQTlNfOURPTVdpbmRvd0UKLV9fWk43
V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckMyRVBOU18zMVBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRFCi1fX1pUVk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckUKLV9fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckQyRXYKLV9fWk43
V2ViQ29yZTI4UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFUzRfUzRfYmIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotX19aTks3
V2ViQ29yZTlGcmFtZVZpZXczMXNldFdhbnRzTGF5ZXJGb3JUb3BPdmVySGFuZ0FyZWFFYgotX19a
Tks3V2ViQ29yZTlGcmFtZVZpZXczNHNldFdhbnRzTGF5ZXJGb3JCb3R0b21PdmVySGFuZ0FyZWFF
YgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotX19aTjdXZWJDb3Jl
MTRpc1B1YmxpY1N1ZmZpeEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTI4dG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbkVSS04zV1RGNlN0cmluZ0UKLV93a0lzUHVibGljU3VmZml4Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi1fX1pON1dlYkNvcmUxNVJl
c291cmNlUmVxdWVzdDEzcGFydGl0aW9uTmFtZUVSS04zV1RGNlN0cmluZ0UKLV93a0NhY2hlUGFy
dGl0aW9uS2V5Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1fX1pON1dlYkNv
cmUxNlVzZXJNZWRpYVJlcXVlc3QyMnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWRFdgotX19aTjdXZWJD
b3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjF1c2VyTWVkaWFBY2Nlc3NEZW5pZWRFdgotX19aTjdXZWJD
b3JlMThwcm92aWRlVXNlck1lZGlhVG9FUE5TXzRQYWdlRVBOU18xNVVzZXJNZWRpYUNsaWVudEUK
LV9fWk5LN1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QxNHNlY3VyaXR5T3JpZ2luRXYKLV9fWk43
V2ViQ29yZTIxTW9ja01lZGlhU3RyZWFtQ2VudGVyMjlyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNl
bnRlckV2Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IGUzZGZlYjkxNTFkODI4ZDA5NWY1NjNkMmI1MWUwOTc2OTY2NWMzMjIu
LmQ1ODY5OWZmY2E2MjFmNWQ2M2I5NDE1MmI4NTUxMWYyNGI3MTliNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzQyMCw3ICs3NDIw
LDcgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXEhpc3RvZ3JhbVN1cHBvcnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cS2lsbFJpbmdOb25lLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEtVUkwuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cVVJMLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExhbmd1
YWdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGhCb3guY3Bw
IiAvPgpAQCAtNzYwNCw3ICs3NjA0LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRyYXMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcRmlsZVN5c3RlbUNGLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEtVUkxDRk5ldC5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxVUkxDRi5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxTaGFyZWRCdWZmZXJDRi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlmaWNhdGVDRldp
bi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xC
aXRtYXBJbWFnZS5jcHAiIC8+CkBAIC0xOTAxNSw4ICsxOTAxNSw4IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIaXN0b2dyYW1TdXBwb3J0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxsUmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cS1VSTEhhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXFVSTC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMSGFz
aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExheW91dFVuaXQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aC5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDFmMGNkOTQ3NDQ5OGI3OWU3MzlkMzY2ZWVjMDgyOGRkZjA2OTc0YmYuLmZhMDA1
MjlkYTI0ZTg4OTRiMzE5OTMzZGI4OGFiYjJkMThmOWY2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEx
MjUsNyArMTEyNSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxs
UmluZ05vbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtVUkwuY3BwIj4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuY3BwIj4KQEAgLTUxMDksNyArNTEwOSw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0YuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEtVUkxDRk5ldC5jcHAiPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcVVJMQ0YuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxDZXJ0aWZpY2F0ZUNGV2luLmNwcCI+
CkBAIC04MTE1LDEwICs4MTE1LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLaWxsUmluZy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtVUkwuaCI+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVUkwuaCI+CiAgICAgICA8Rmls
dGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxLVVJMSGFzaC5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXFVSTEhhc2guaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxM
YW5ndWFnZS5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwYzRmYjU0Y2UyOTBmYjVkN2FkZjU5MWJjYWQwYjM1OGQ5Y2UyOWU2
Li4wZDBhYTZlNjhjMGY4MDVhZDZjYWYxZmZmODMyNWEzMzBmMDMxZGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTIsNyAr
NjUyLDcgQEAKIAkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkyN0ZDRjE0MTZBMTVCMDAz
QTgzQzggLyogbnBhcGkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQTkyN0ZEMzE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkyN0ZEMDE0MTZBMTVC
MDAzQTgzQzggLyogbnBydW50aW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUE5MjdGRDQxNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTI3RkQxMTQx
NkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5l
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTk4
OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCAqLzsgfTsKKwkJMUE5ODk1NkIw
QUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAg
Ki87IH07CiAJCTFBQTIxMjUwMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9taWNTdHJpbmdDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyMTI0RjE2
M0YwREE4MDAwMEU2M0YgLyogQXRvbWljU3RyaW5nQ0YuY3BwICovOyB9OwogCQkxQUE3MTYwQTE0
OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwODE0OUJDNERBMDAxNkVDMTkgLyogVGls
ZUNvbnRyb2xsZXIubW0gKi87IH07CiAJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxl
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBNzE2MDkxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggKi87IH07CkBA
IC0xODkwLDkgKzE4OTAsOSBAQAogCQk2NTdFREEwODEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1N0VEQTA2MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwICovOyB9OwogCQk2NTdFREEwQjEzODVDQkQ4MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU3RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1h
Yy5tbSAqLzsgfTsKIAkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQz
Njg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1
MzFGIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovOyB9OwotCQk2NTkz
OTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2NTkzOTIz
QTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFj
Lm1tICovOyB9OworCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM1MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuY3BwICovOyB9OworCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyog
VVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkz
OTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIFVSTE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5
MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi87IH07CiAJCTY1OTZGMkIzMEI4NzMx
REYwMDEzMjZCRCAvKiBET01IVE1MSW5wdXRFbGVtZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMTY0
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSW5wdXRFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsK
IAkJNjU5NkYyQzEwQjg3MzI1QzAwMTMyNkJEIC8qIERPTUhUTUxUZXh0QXJlYUVsZW1lbnRJbnRl
cm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVFNzExN0YwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vi
c3RpdHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MDQwLDcgKzUwNDAs
NyBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIwMDA3
MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tU
cmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyog
S1VSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYy
IC8qIFVSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQTBE
Q0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi87IH07CiAJCUJDQkZCNTNE
MERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNET01XaW5kb3dTaGVsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTc3MEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLzsgfTsKQEAgLTcxMTQsNyArNzExNCw3
IEBACiAJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkxDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUEyMTI0RjE2M0YwREE4MDAwMEU2M0YgLyogQXRvbWljU3Ry
aW5nQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRvbWljU3Ry
aW5nQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE3MTYwODE0OUJDNERB
MDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBUaWxlQ29udHJvbGxlci5tbTsgcGF0aCA9IGNhL21hYy9UaWxlQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBNzE2MDkxNDlCQzREQjAw
MTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFRpbGVDb250cm9sbGVyLmg7IHBhdGggPSBjYS9tYWMvVGlsZUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0ODcsOSArODQ4Nyw5IEBACiAJCTY1N0VEQTA3
MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1N0VEQTBBMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVz
c3VyZUhhbmRsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRSZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLVVJMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtVUkwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IEtVUkxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0
aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk2NTkzOTIzNTA5QUU0MzQ2
MDAyQzUzMUYgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTkzOTIzNjA5QUU0MzQ2
MDAyQzUzMUYgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFG
IC8qIFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRp
bmcgPSAwOyBwYXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJNjU5
QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0Rv
Y3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvY3VtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTkzNiw3ICsxMTkzNiw3IEBACiAJCUJD
QkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREludGVydmFsVHJlZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxh
Y2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRFJlZEJsYWNrVHJl
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcw
RjIgLyogS1VSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1VSTEhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNCRDIxQUEwRTQxN0FENDAwQTA3
MEYyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMSGFz
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIz
RTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVdpbmRvd1NoZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dTaGVsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0MwNjU3NzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGllbnRSZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTU1LDcgKzEzOTU1LDcgQEAKIAkJ
CQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAogCQkJCUUx
QThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCTUxNjAzMDZC
MENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAotCQkJCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAorCQkJCTFBOTg5NTZBMEFBNzhGODAw
MDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkJMjlBMzA5QUIxNTYxQzk5QjAwQkJEOEU1IC8q
IFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJl
ZEJ1ZmZlckNGLmNwcCAqLywKIAkJCSk7CkBAIC0xNTE0Niw3ICsxNTE0Niw3IEBACiAJCQkJQzUz
OTJEMzQxMzI2QUQwMTAwMDQzRDM1IC8qIEhUTUxDb252ZXJ0ZXIubW0gKi8sCiAJCQkJOTM1QzQ3
NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tICovLAogCQkJCTUyMUQ0NkY1MTFB
RUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5tbSAqLywKLQkJCQk2NTkzOTIzOTA5QUU0MzVD
MDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLywKKwkJCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYg
LyogVVJMTWFjLm1tICovLAogCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFn
ZS5tbSAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0LmggKi8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKQEAgLTE5ODU2LDkgKzE5ODU2LDkgQEAKIAkJ
CQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCTUyMUQ0
NkY3MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oICovLAogCQkJCTQzMDZFNEU1MTQ5NTU1
NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwICovLAotCQkJCTY1OTM5MjM1MDlBRTQzNDYw
MDJDNTMxRiAvKiBLVVJMLmNwcCAqLywKLQkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyog
S1VSTC5oICovLAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICov
LAorCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICovLAorCQkJCTY1OTM5
MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKKwkJCQlCQ0JEMjFBQTBFNDE3QUQ0MDBB
MDcwRjIgLyogVVJMSGFzaC5oICovLAogCQkJCUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgKi8sCiAJCQkJODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdl
LmggKi8sCiAJCQkJMTQxREMwNDcxNjQ4MzQ4RjAwMzcxRTVBIC8qIExheW91dFVuaXQuaCAqLywK
QEAgLTIzNDA3LDggKzIzNDA3LDggQEAKIAkJCQkzMTZGRTExQTBFNkUxREE3MDBCRjYwODggLyog
S2V5ZnJhbWVBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCQTExMEU4MjNFNDcw
MEIyNTk2NSAvKiBLZXlmcmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyMUQ0NkY4MTFB
RUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjU5MzkyMzgw
OUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0
MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU5MzkyMzgw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCRDIxQUIwRTQx
N0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MENFQkYxMTUw
NzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjY5Niw5ICsyNjY5Niw5IEBACiAJCQkJQkM1RUJBMTAwRTgyM0U0NzAwQjI1OTY1
IC8qIEtleWZyYW1lTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjFENDZGNjExQUVDOTgx
MDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MzA2RTRFNjE0
OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTY1
OTM5MjM3MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFB
OTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IDFjYjFj
NjljNTM0MzM2ZjlkYTFjZThiYjU4MzlhZWM1YzBmZjAyZWIuLjc5MWJmMWM0ZWNiZmZmMjFiZjY3
NzczZmUzYmVhMDgxMTM5NTNlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtODcsMTAgKzg3
LDEwIEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFuY2hvckVsZW1lbnQo
KSBjb25zdAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50LmdldCgpOwogfQogCi1LVVJMIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbms6OnVybCgpIGNvbnN0CitVUkwgQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluazo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXJlYUVsZW1lbnQuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICAKICAgICBy
ZXR1cm4gbV9hcmVhRWxlbWVudC0+aHJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAppbmRleCA3YTNl
YzA4MmRlMDJlZTZhOTg3YjdjMGI3YjEwMGQzOTMxMTBhMmVlLi4yZjFmYjBiNzI3MjQ1MmI2YjNi
YmFkZTgxNDBkZWNmYTQxNDIyNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBLVVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9IAogICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyB0aXRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA1MjdkZDRhZDFjYzFlM2RkNjA4ZGY4MmNiOTVk
MjczMTg2ZWY5OTVjLi5iYmExODVmOTdiNjk0MmI0MzJhOWIyZGMyZjFlMjNkYjlhZmVjNDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtNjQyLDcgKzY0Miw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzZWxlY3Rpb25T
dGFydCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KICAgICB1
bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgp
Lmxlbmd0aDsgfQogICAgIAotICAgIHZpcnR1YWwgS1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBL
VVJMKCk7IH0KKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQog
ICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBhY2Nlc3NLZXkoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggYTRlYzBhMGE4N2RhOWVlYWQ5N2NlNjNmMzAzNDRlMTM2MzlmNjlhMi4uMmU0MTgz
Y2RjYjZmNDFkZTlkMTAwYjkzNjVkYTRkNmZlMTE4YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC04OTYsMTMgKzg5NiwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQo
ZWxlbWVudCk7CiAgICAgCi0gICAgS1VSTCBsaW5rVVJMID0gYW5jaG9yLT5ocmVmKCk7CisgICAg
VVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlm
aWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gY2hlY2sg
aWYgVVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgS1VSTCBkb2N1bWVudFVSTCA9
IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CisgICAgVVJMIGRvY3VtZW50VVJMID0gbV9y
ZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlCiAgICAgICAg
IFBvc2l0aW9uKG5vZGUsIHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc09mZnNldEluQW5jaG9yKSwgRE9XTlNUUkVBTSkpOwogfQogCi1LVVJMIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CitVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoaXNBbmNob3IoKSAmJiBpc0hUTUxBbmNob3JF
bGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKICAgICAgICAgaWYgKEhUTUxBbmNob3JFbGVt
ZW50KiBhbmNob3IgPSB0b0hUTUxBbmNob3JFbGVtZW50KGFuY2hvckVsZW1lbnQoKSkpCkBAIC0x
NDY0LDcgKzE0NjQsNyBAQCBLVVJMIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNv
bnN0CiAgICAgaWYgKGlzSW5wdXRJbWFnZSgpKQogICAgICAgICByZXR1cm4gdG9IVE1MSW5wdXRF
bGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSktPnNyYygpOwogICAgIAotICAgIHJldHVybiBLVVJM
KCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVW52aXNpdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggYjA5ZDFjZWUzZGMx
N2JiODU5NDRhODZiZWFjMGZiY2MxYTA1ZjVkZC4uMGZlMDMyNzUwNzg5YTg1N2RiYjY1MTBmNThl
ZjdlNGU2ZDZhNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3Q7CiAgICAgSFRNTExhYmVsRWxl
bWVudCogbGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBL
VVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggZGQ1YmE5ZDQyMGJlMzgzZmU2NjQ0ZDFmODY2YjhiZjdhMjIwNTM5NC4uYmI1NGUy
YzNiMWE3NzkyNTc2ZDUwZTUzYjBjYzIwYjM0ZjM5NWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTk3OSw3ICs5NzksNyBAQCAtIChOU1VSTCAqKWFjY2Vz
c2liaWxpdHlVUkwKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIEtVUkwgdXJsID0gbV9vYmplY3QtPnVybCgp
OworICAgIFVSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CiAgICAgaWYgKHVybC5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gKE5TVVJMKil1cmw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDJkOGJiODMwODc5MmMzN2ExZmQxZWVi
ZmY3ZTI3NmVjZWRmYjZmMmIuLjlkZDZmOGUyYmU4NDk1NjhlNmRlMGM2ZjBhZTZlNDg3YWY3YzQy
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0yMTM4LDcg
KzIxMzgsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nKilh
dHRyaWJ1dGVOYW1lCiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgS1VSTCB1
cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgICAgIFVSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7
CiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICByZXR1cm4gKE5TVVJMKil1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHAKaW5kZXggMDVjMzBkZWE2N2IyYjUwMDdlYTk1OTE1MjQ2
ZmVhYWQwNDZmYWRkYy4uNzRhNTI2MmExNWViZjMxODRhZTg1ZDgzYjFmMjkwMGIwYzkxNzFhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNw
cApAQCAtNzMsNyArNzMsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgcmV0dXJuIGV2
YWx1YXRlKHNvdXJjZUNvZGUpOwogfQogCi1ib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJ
ZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkph
dmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQorYm9vbCBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMKQogewogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKaW5kZXggMTgxZmMyYWEzNTIzNWEz
MWMzMjMyMWMwYTRkNmI5NjUzMDAzMDg2OC4uMTRkZjNhNjlkYWYxNzU5MTAyNjgyNTY5OTlhNjc1
ZTIwY2IzMzI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9D
b252ZXJ0VG9VVEY4U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzIsNyArMzIsNyBAQCBnY2hh
ciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmluZyBjb25zdCYgcykKICAgICByZXR1cm4g
Z19zdHJkdXAocy51dGY4KCkuZGF0YSgpKTsKIH0KIAotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdl
YkNvcmU6OlVSTCBjb25zdCYgcykKIHsKICAgICByZXR1cm4gZ19zdHJkdXAocy5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKaW5kZXggYmMyMzRjZmRlMjgzOTZkNmJjYmVmYzBj
OGQxMTg2NzE1ZTM5OWYyNC4uZTQ5NDExM2EzZjhmZjZlOWM0ZGJlNjhhZjlmMWQ4YTJlMjIyZmVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9V
VEY4U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0
VG9VVEY4U3RyaW5nLmgKQEAgLTI0LDEyICsyNCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAK
IHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpT
dHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6S1VS
TCBjb25zdCYgcyk7CitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29u
c3QmIHMpOwogCiAjZW5kaWYgLyogQ29udmVydFRvVVRGOFN0cmluZ19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBiNTA0YTRkZTY5NGRmMWY5
MjkzNDkxMjM0MTVkNDdkMDBkZTNjNzY4Li4xMGVhZjMyZmUyMGM2MWRmZWQ2MDVjY2MzYmI3OGRj
YjU0NTZhYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKQEAgLTc1LDE5ICs3NSwxOSBAQCBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIHMpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
S1VSTCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkp
OwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VS
TCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdXJsLnN0cmluZygpKTsKIH0K
IAotSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VS
TCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IGFmODU5NTUxNDNiYmU5ODIxM2RkNDBkM2MyODNiNmRjMzg3NDIwMzMuLjAwODcxNjc4ODlh
NTZlMDc2Mjk4Y2ZhY2VjMGZhNjY3YWZmM2Y5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7
CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSFRNTERv
Y3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIE5vZGU7
CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtMjQzLDE3ICsyNDMsMTcgQEAg
Y2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENh
Y2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGpz
U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAvLyBlbXB0eSBpZiB0aGUgVVJM
IGlzIG51bGwKKyAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVSTCBpcyBudWxsCiAgICAgaW5saW5lIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWlj
U3RyaW5nJiBzKQogICAgIHsgCiAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBzLnN0cmluZygpKTsKICAgICB9CiAgICAgICAgIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmlu
Z09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBz
dHJpbmcgaXMgbnVsbAotICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gbnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKKyAgICBKU0M6
OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8g
bnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5k
ZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIHVuZGVmaW5lZCBpZiB0
aGUgc3RyaW5nIGlzIG51bGwKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBVUkwgaXMg
bnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgVVJMJik7IC8vIHVuZGVmaW5lZCBpZiB0aGUgVVJMIGlzIG51bGwKIAogICAgIC8v
IFNlZSBKYXZhU2NyaXB0Q29yZSBmb3IgZXhwbGFuYXRpb246IFNob3VsZCBiZSB1c2VkIGZvciBh
bnkgc3RyaW5nIHRoYXQgaXMgYWxyZWFkeSBvd25lZCBieSBhbm90aGVyCiAgICAgLy8gb2JqZWN0
LCB0byBsZXQgdGhlIGVuZ2luZSBrbm93IHRoYXQgY29sbGVjdGluZyB0aGUgSlNTdHJpbmcgd3Jh
cHBlciBpcyB1bmxpa2VseSB0byBzYXZlIG1lbW9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMzBmY2YzZWIz
ZTY1MGM3ZTNiOTM5MzZmNTM2MjFiYTMzMjY5YmRkMy4uNzA0MTU3NzZiMTdmNzBiZmY0Y2VmNGE1
ODQ3NGMxZjY1Y2MwZTE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRl
VVJMKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKICAgICBTdHJpbmcgbWV0aG9kID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggMDMxNTE2ZTBmYzZmODgxMzgxZDVhMjY3YmI1N2M2MGZkYzE5NGFlMy4uOTNiOGUwNjFk
YTlkNjBlOGNlY2IwODhiMzBhYWUzZjlhMmUwYzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgotICAgIGJv
b2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgU2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9
IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CisgICAgYm9vbCBleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAg
ICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNh
bGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTE2MzU4
MWNjODE3OGFiODg5YzhhNDYyMTYxODY1ZTQ1ZDNkODYwZS4uMmQzYzE1OTcwZGUxYzYxOGIzNDdm
NTVmYTQzZDExMDMxY2Y2ZDYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUgewogcHVi
bGljOgotICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtV
UkwmIHVybCA9IEtVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4
dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQogICAg
ICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJj
ZSwgdXJsLmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24p
KQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVC
YXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAg
ICwgbV91cmwodXJsKQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgpOyB9
CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1f
Y2FjaGVkU2NyaXB0OwogCi0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IGI4NTMyZDM2NTU4YTQwYTU5NWMyOTMyZGI2N2E3MmRiYTc4NGNhY2MuLjQ1
ZDM1YmMwZmUyYmE4NGUxZTFkNDk5MTY5MWE2OGRhMDNhYWNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTM4
Myw3ICsxMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YSh0eXBl
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pc0RPTUdsb2JhbE9iamVj
dCkKLSAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aC0+c3RyaW5nKCksIEtVUkwo
S1VSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCkpOworICAgICAgICAgICAgZmls
ZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygp
KSwgdHlwZS0+c3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1
NzcsNyArMTU3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpj
cmVhdGUoS1VSTChLVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSku
Z2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6Y3JlYXRlKFVSTChV
UkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplKS5nZXQoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmlu
Z1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXggYzM5YTc3NDE1MjVlYzM2NjQxZjZkYjg4YzA0
NGZlMGEzNDVjNTBmYi4uMmJjYWQ4YzgwNDA1OTNkZjQ3NTMxZWI1YjcxOGNiMTUyYWI5NDBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
Q1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckNQUC5wbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKIAogICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJ
bmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0g
MTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siV2ViRE9NU3RyaW5nLmgifSA9IDE7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC01NzMsNyArNTczLDcgQEAgc3ViIEFkZFJldHVyblN0YXRlbWVu
dAogICAgIG15ICR0eXBlSW5mbyA9IHNoaWZ0OwogICAgIG15ICRyZXR1cm5WYWx1ZSA9IHNoaWZ0
OwogCi0gICAgIyBVc2VkIHRvIGludm9rZSBLVVJMcyAiY29uc3QgU3RyaW5nJiIgb3BlcmF0b3IK
KyAgICAjIFVzZWQgdG8gaW52b2tlIFVSTHMgImNvbnN0IFN0cmluZyYiIG9wZXJhdG9yCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGVJbmZvLT5zaWduYXR1cmUtPnR5
cGUpKSB7CiAgICAgICAgIHJldHVybiAiICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXVEY6
OlN0cmluZyY+KCRyZXR1cm5WYWx1ZSk7XG4iOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODFlZGEzZDlmZjg5
M2JiNTUxMTYwZjcxOWY0NWVkMTY4MjAwOWIyZC4uYjlkYjZkYzBhZjA4ZWMwMTFiY2MyMjM4MDUw
ZjAyMzY4ZmRkNTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI1MDEsNyArMjUwMSw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmosIGluZm8oKSk7XG4iKTsKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVVJM
LmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNT
dHJpbmdPclVuZGVmaW5lZChleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW0oaW5kZXgpKTtcbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+aXRlbShpbmRleCkpO1xuIik7CkBAIC0zNDM2LDcgKzM0MzYsNyBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlCiAgICAgfQogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5
cGUpKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJLVVJMLmgiLCAkY29uZGl0aW9uYWwp
OworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVVJMLmgiLCAkY29uZGl0aW9uYWwpOwogICAg
ICAgICBteSAkY29udiA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdFJl
dHVybmVkTnVsbFN0cmluZ0FzIn07CiAgICAgICAgIGlmIChkZWZpbmVkICRjb252KSB7CiAgICAg
ICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JOdWxsKGV4ZWMsICR2YWx1ZSkiIGlmICRjb252IGVx
ICJOdWxsIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtCmluZGV4IGVkZjExOWQzMWY5MzFlNGNmZTUxZWMyMTgxMDQ5ZmU5YmFj
ZjczZDcuLjQ4NWIwYzRhMGI0ZWY5NzkzMTEwNzcyZmEyOGNkYWIwMTBkZTFkODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQpAQCAtNjE4LDcgKzYxOCw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9CiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGlt
cGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9
ID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYjliOTJjNjg2ZjdjZDU0NjYxN2MwNTM2YjRjYjIwNTBj
YTI1NDZmNS4uNjhkNzk0ZWI0MTM3NzIwZDJmZWU1NzE4NDY1YTQ3NGJkMWJlZTE3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJUZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViRE9N
Tm9kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IGZlMzVkMmI1NjVjNDNh
NzNkZDJjYmQxMTA5NDdlY2NjMjM5MzhkZGIuLjRkYmE3ZjdjZjhkM2Y0YWYzNDMyMGQ1YzlmNDli
MDUwZmQ3YzQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAKQEAgLTI2LDEwICsy
NiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkZsb2F0MzJB
cnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRlICJUZXN0Tm9kZS5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA1M2QyNTVi
ZTI1NDIyZmNiNTVlZGEwYzkyYTE1MWE4MzFkNDkxZmIzLi41YjE5OTFlZTBiMDZhNTM3Mjk4N2I1
MWUyYTgyMjY5MWVlOTdhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyNzgw
NmYwNGJlMTY1MzI3ZjJhNTk2MDM5ODQ5OTdiZDFkZjg3Nzc4Li5hZDRiNTIyYjE1M2RhYzA0MmYx
ODUyYjI4OGU0MzZkYjQ5NThhMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZjNlYWMwYmZiMTc2NTk0
ZTNhOTE1YTFiMGQ5NjQ0ODAzOTg1MWE4NS4uMGJhNDE3NzVmMTI1Zjg3YTljN2VhYTRjOWY5NTNk
MWMzYmMxOWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjIs
NyArMjIsNyBAQAogI2luY2x1ZGUgIldlYkRPTVRlc3RFdmVudFRhcmdldC5oIgogCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIldlYkRP
TUV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MjM1YjNhMzA1
Yzc4NDg1ZTBmMTM3YTllNGM5YjNlNzFmYmEwMzE5Li45NGY5ZTY5MWI4MTAxYzYzYzNjMzJiNGZi
NmVkMmVjYmUwNWNmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIx
LDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0RXhj
ZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVGVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1ZGUg
IldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IDA5YWQzMzdkYWE3OTJkMzBkNWM1N2U5ZTBjNjVhNGVjNDI0NzAwODguLjM0NDRmYjQzYTNi
ZmRlYjA0ZTNjYjNkNDVjMzZkOWExZmQ0OWM0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFj
ZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1l
bnRhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggZmU1NTQ0OTRjZjhlNTA3NDk5ZmEyNTIy
MTI5NDE3MGNmNWRkODhhNC4uMDk1ZjYzZjMyOWU0YzhhMGYxMTQyM2Y3YTU4YmJjNjdhZjAzODMz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0VHlwZWRlZnMuY3BwCmluZGV4IDc0Zjc3M2M5YzdlYzIzNDE1YTJj
NDFlMzYyYmI0YmU5ZjA0MTcwYWIuLjYxODNhNjM0NDg1MDJjMTdmYzNmOWVlYTRlMGFhZGUxOGFj
NzZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RUeXBlZGVmcy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0VHlwZWRlZnMuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTVkdQb2ludC5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRlc3RUeXBl
ZGVmcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDA5MDJlNjky
ZTE2NDcwNGYyMTY0NmQ3ZTQ0ZjQyNzc3MjQwOTY5NzIuLjU0YjQyMWQ0ZGZlYzIyNDUwZDhjZWI0
OTFlZWIzZWM0N2QzZmJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAppbmRleCAyZTkzZTFhOGM5N2E1MWNiNTc2ZjFhZTZkMmNmYWI0YWJlOTcxZjAwLi5j
MTE0MjcxZWVjNDM4ZmZiZWJlYWFiZDZhYTM3N2MyNmUyOTVlN2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTVGVzdEV4Y2VwdGlvbi5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBm
MTQwMWEwMmViNzkzYjhiNDM4NmI5YmI0ZDNjOGMxOWI0YWI3MTk1Li4yNzNlOWI1ZGU0MWI0NjNm
NDEyM2Y1YjgyYjlhYjZiYzZiMTUwZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpIHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1
ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2OWE2YzE4
MTU4MmFmNTE3NzdhZjdiNzdmZGY0MTVkODE1ZWM1NjQzLi43YmIyZjQyMDg3YmJjYTNlZjhlNGFl
NzVhM2YxNGFiNDM2MjE5NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIkpT
Ym9vbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJT
VkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RhdGlj
UHJvcGVydHlUZWFyT2ZmLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA0ZjQ2NmM1ZWJjZjY2
NDc0NjlmZWM3YWE0NzY5YjM5MmE2ZDBmNGJiLi42MTcwNWQxYjI0NTVlZTE1ZDI1NjIxNmFmMzVj
Zjg4NTBmY2Q3YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdFR5cGVkZWZzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5tbQppbmRleCBhYjI4NjQxZDc1YWZlNjQyMjFkMjlkMWViYzRjZDgzNTVm
YjM2OWUxLi43ZGExNGIwZmQxZGIyZjI2NDgxNTQ2ODIyZjJlYjBjZGI0OTI0MTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0
aXZlRE9NT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBv
cnQgIkRPTVRlc3RBY3RpdmVET01PYmplY3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9u
SGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAi
S1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNr
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENh
bGxiYWNrLm1tCmluZGV4IDkzYWRmOGM0OGY2YWY2YWY1NmU3YzdiYzAxOWJiYjhlMGY4MjZlOTku
LjRkZDk2ZTU5MDY0YjBhOGYxZGM3YTIxMDAwNjhhMWE3ODNmMDgwOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q2FsbGJhY2subW0KQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJl
YWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9y
dCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJUZXN0Q2FsbGJhY2suaCIKICNp
bXBvcnQgIlRlc3ROb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
bW0KaW5kZXggMTBhOTBhNWE5YWE0ZTNjODMxNzQxN2YxOGMzMDRhMmJjYTc2NjY0Ny4uOWMyOTFk
NWY0YjUxNDBjN2QxYWJlNGY3M2E3NGJhZjI1ZWFiNjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDdXN0b21OYW1lZEdldHRlci5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCAiRE9NVGVz
dEN1c3RvbU5hbWVkR2V0dGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJz
LmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIK
KyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW1w
b3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RF
dmVudENvbnN0cnVjdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KaW5kZXggODA5ZDU1MzdhNTc1ODNlZDc0
OWI2ZDRjN2JlNTIwZDc0YWY4MTA0Ny4uNzFkYWI1MDQwZTdjNDNiNTNmYWVmNjAyMmJjMTRkZTJk
NzE4ZDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KQEAgLTM0
LDcgKzM0LDcgQEAKICNpbXBvcnQgIkRPTVRlc3RFdmVudENvbnN0cnVjdG9ySW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlT2JqQ0V4dHJhcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tCmluZGV4IGZh
MjQ0N2Q4ZTdmNGYxNGQzYTJmM2M1ZTgxMjVlZWJlZjg5ZTk1YzUuLjdlOWY0OWU0YmY2OGUwZGE3
ZjhmZGNmOTA4ZGQ1NjQyMzQzZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRhcmdldC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0K
QEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIkV2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNp
bXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTm9kZS5oIgogI2ltcG9y
dCAiT2JqQ0V2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIlRlc3RFdmVudFRhcmdldC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RFeGNlcHRpb24ubW0KaW5kZXggZDJiOTU0ODJiZDRmYzI0MDcxY2VlYmYxMDk1MTQw
N2Q4MjdjNzgzOC4uMWRmYjc5MmY2NzNiYWRlZTVmMGNmZDE5NGJkN2RmY2I3MGRmMmU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXhjZXB0aW9uLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJET01U
ZXN0RXhjZXB0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEV4Y2VwdGlvbi5oIgogI2ltcG9ydCAiVGhyZWFkQ2hl
Y2suaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFj
ZS5tbQppbmRleCAyZTIxYmZkOTFkNzIzODY3MTJkN2Y0NzAyMjlmNzY4ZjUyN2M2NmZkLi5iNGU0
ZGE2ZDk0NmVjYjJkMjk2NDYzMTVjODViMzg3YzU2ZDVmMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRl
cmZhY2UubW0KQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgIkRPTVRlc3RPYmpJbnRlcm5hbC5o
IgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
b2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJUZXN0T2JqLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQppbmRleCAzMzFhYzY2MzU2OWVkMGJiOWRiNmI1YzZiZjM4NzlkMmZlYzM3NzAy
Li5kOGNlMzQ0YTg5OWU1MmM3NTQyNGFlNWNiODQwYjYxY2JkYmZhNTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2lt
cG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0
ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZHRG9jdW1lbnQuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBl
ZGVmcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RUeXBlZGVmcy5tbQppbmRleCA3ZTNkODM4ZjBiMjdjYzZkODA5YWJlNTY2YzkyZmRiNTgwYjUw
NzgzLi5iZDU4Y2UwNzNmOTYxMjNjOTlhNmJjNTFlMmQyMTQ2YWI4ZTU0MzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRl
ZnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdFR5cGVkZWZzLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJET01UZXN0VHlwZWRl
ZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0ICJTVkdQb2ludC5oIgogI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW1wb3J0ICJUZXN0VHlwZWRlZnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcAppbmRleCA0OTZmZDhjNTkwOGJkYjkxYzg1NGRhYzU3ZjNhZmQ3MDE3ZjAz
ODc1Li5kMTM3YjAzY2JjMjUwODFlMWJhY2NiY2JhNDBhOGNiODJmZmJmNjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAg
Ym9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjppc1NWR0N1cnNvcigpIGNvbnN0CiB7CiAgICAgaWYg
KG1faW1hZ2VWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpIHsKICAgICAgICAgUmVmUHRyPENTU0ltYWdl
VmFsdWU+IGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4obV9pbWFnZVZh
bHVlLmdldCgpKTsKLSAgICAgICAgS1VSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgaW1hZ2VWYWx1
ZS0+dXJsKCkpOworICAgICAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIGltYWdlVmFsdWUt
PnVybCgpKTsKICAgICAgICAgcmV0dXJuIGt1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcAppbmRleCA0MDM3NDJkNDVlNmVmYzZjYTU4Y2JlYzNkNmVhYjViMDNlNzYwMzg0
Li42ZTY1MzU2N2FlY2FiNGE5MjA4ZDBiNzM4MjAwZjc0N2QxN2VmNTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmlu
ZyBDU1NGb250RmFjZVNyY1ZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5
bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIGlmICghaXNMb2NhbCgp
KQogICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBzdHlsZVNoZWV0LT5jb21wbGV0ZVVS
TChtX3Jlc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApp
bmRleCA0MjliYmI0ZTZlN2VmYmE1MTZiOTc4Zjk1ZGEyMDg2ZTQ3MzZmNTc5Li45OWExMTQ0MjNj
YjliNDhkYjQxYTJmZTg1N2YwNmMzNjk0NmFhZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsK
KyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBjb25z
dCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IDcyNjhlZTBlZDQ2OWI1YWVkYWNmYzY5MTQ5ZjQyNjBkMzg3ZWQ1MTUuLjM0YTYxODYwZTYwMDM5
N2MyNWQ0Y2Q1NDlmNjQzMjY1YmM1YmY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC0yNTQsNyArMjU0LDcgQEAgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2Vy
Q29udGV4dCgpCiAgICAgcmV0dXJuIHN0cmljdENvbnRleHQ7CiB9CiAKLUNTU1BhcnNlckNvbnRl
eHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBtb2RlLCBjb25zdCBLVVJMJiBiYXNl
VVJMKQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1v
ZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCkKICAgICA6IGJhc2VVUkwoYmFzZVVSTCkKICAgICAsIG1v
ZGUobW9kZSkKICAgICAsIGlzSFRNTERvY3VtZW50KGZhbHNlKQpAQCAtMjcyLDcgKzI3Miw3IEBA
IENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBtb2RlLCBj
b25zdCBLVVJMJiBiYXNlVVJMKQogewogfQogCi1DU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJD
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQog
ICAgIDogYmFzZVVSTChiYXNlVVJMLmlzTnVsbCgpID8gZG9jdW1lbnQuYmFzZVVSTCgpIDogYmFz
ZVVSTCkKICAgICAsIGNoYXJzZXQoY2hhcnNldCkKICAgICAsIG1vZGUoZG9jdW1lbnQuaW5RdWly
a3NNb2RlKCkgPyBDU1NRdWlya3NNb2RlIDogQ1NTU3RyaWN0TW9kZSkKQEAgLTE2MTUsMTYgKzE2
MTUsMTYgQEAgdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcygpCiAgICAgbV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KIAotS1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRlVVJM
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQorVVJM
IENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIGlmIChjb250ZXh0LmNoYXJz
ZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChjb250ZXh0LmJhc2VVUkwsIHVybCk7
Ci0gICAgcmV0dXJuIEtVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNldCk7
CisgICAgICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwpOworICAgIHJldHVybiBV
UkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNldCk7CiB9CiAKLUtVUkwgQ1NT
UGFyc2VyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1VSTCBDU1NQYXJz
ZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBj
b21wbGV0ZVVSTChtX2NvbnRleHQsIHVybCk7CiB9CkBAIC04Nzg0LDcgKzg3ODQsNyBAQCBQYXNz
UmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VNaXhGdW5j
dGlvbihDU1NQYXJzZXJWYWx1ZQogICAgICAgICB1bnNpZ25lZCBhcmdOdW1iZXIgPSBhcmdzTGlz
dC0+Y3VycmVudEluZGV4KCk7CiAgICAgICAgIGlmICghYXJnTnVtYmVyKSB7CiAgICAgICAgICAg
ICBpZiAoYXJnLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAg
ICAgICAgICAgS1VSTCBzaGFkZXJVUkwgPSBjb21wbGV0ZVVSTChhcmctPnN0cmluZyk7CisgICAg
ICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IFdlYktpdENTU1NoYWRlclZhbHVlOjpjcmVhdGUoc2hhZGVy
VVJMLnN0cmluZygpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhcmdOdW1i
ZXIgPT0gMSB8fCBhcmdOdW1iZXIgPT0gMikgewpAQCAtODk3NCw3ICs4OTc0LDcgQEAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUN1c3RvbUZpbHRlckZ1
bmN0aW9uV2l0aElubGluZVMKICAgICAgICAgaWYgKGFyZy0+aWQgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVOb25lKTsKICAgICAgICAgZWxzZSBpZiAoYXJnLT51bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICBLVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRl
VVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgIFVSTCBzaGFkZXJVUkwgPSBjb21wbGV0ZVVS
TChhcmctPnN0cmluZyk7CiAgICAgICAgICAgICB2YWx1ZSA9IFdlYktpdENTU1NoYWRlclZhbHVl
OjpjcmVhdGUoc2hhZGVyVVJMLnN0cmluZygpKTsKICAgICAgICAgICAgIGhhZEF0TGVhc3RPbmVD
dXN0b21TaGFkZXIgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGFyZ3NMaXN0LT5jdXJyZW50
SW5kZXgoKSA9PSAxICYmIGFyZy0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBmZmQxZDllMTc2MzIzNjJiM2E2ZjczMmJjNDMxNWVj
ODdhMWYyZWNlLi42Y2MxNDM5NWY0OGZkNDQ1OWRmNjNiYzhkNTMwNjIyZTkyNWNiYmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCkBAIC00MjIsNyArNDIyLDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhcmlhYmxlTmFtZVZhbHVl
KENTU1BhcnNlclZhbHVlKik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBLVVJMIGNvbXBsZXRlVVJM
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgc3RhdGlj
IFVSTCBjb21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29uc3QgU3RyaW5nJiB1
cmwpOwogCiAgICAgTG9jYXRpb24gY3VycmVudExvY2F0aW9uKCk7CiAKQEAgLTUwMiw3ICs1MDIs
NyBAQCBwcml2YXRlOgogICAgIGlubGluZSBib29sIGluU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dC5tb2RlID09IENTU1N0cmljdE1vZGUgfHwgbV9jb250ZXh0Lm1vZGUgPT0g
U1ZHQXR0cmlidXRlTW9kZTsgfQogICAgIGlubGluZSBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGU7IH0KICAgICAKLSAgICBL
VVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKKyAgICBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogCiAgICAgdm9pZCByZWNoZWNrQXRLZXl3
b3JkKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1v
ZGUuaAppbmRleCA1NzM1N2Y1ODBkYjUwMGNkOGEyMzZkMjM5MTQ2MTFiNjNjMjgyYTIxLi5iNDdj
MDE5NTM0Njc5YWRmMzM5OGQ1NWJhNWIwZjg5MTg5YmZjYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJNb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAj
ZGVmaW5lIENTU1BhcnNlck1vZGVfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3LDEwICs1NywxMCBAQCBpbmxpbmUg
Ym9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogc3Ry
dWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgS1VSTCYgYmFz
ZVVSTCA9IEtVUkwoKSk7Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChEb2N1bWVudCYsIGNvbnN0IEtV
UkwmIGJhc2VVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5n
KCkpOworICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNl
VVJMID0gVVJMKCkpOworICAgIENTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQmLCBjb25zdCBVUkwm
IGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7
CiAKLSAgICBLVVJMIGJhc2VVUkw7CisgICAgVVJMIGJhc2VVUkw7CiAgICAgU3RyaW5nIGNoYXJz
ZXQ7CiAgICAgQ1NTUGFyc2VyTW9kZSBtb2RlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBiZjIyMGNmYjNlODBh
NzU4MzBhMWVjYmE1ZmRiYmMzODZmMmRiNTU1Li5iNTllODA4YWI5MWVlZGZlOGRjNDcxMzI5NTY5
YzlhYThhNGYxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
QEAgLTEyMDMsNyArMTIwMyw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6Omhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjph
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5
bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NQcmltaXRpdmVWYWx1
ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3Qg
U3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIGlmIChtX3ByaW1p
dGl2ZVVuaXRUeXBlID09IENTU19VUkkpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMs
IHN0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKG1fdmFsdWUuc3RyaW5nKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDY0MjA2ZjhjOTQxYTJjZDU1MGEzNmM1NmNhMDRm
NmJkMjg3Y2I5YzcuLjY0OWE3NGI4YTNiOTE3OTEzZWFmMDZhNGM5NzRmMjlkZTM2MGNhMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMzAsNyArMzMwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1F1aXJrVmFsdWUoKSB7IHJldHVybiBtX2lzUXVpcmtWYWx1
ZTsgfQogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyopIGNvbnN0OwogCiAgICAgTGVuZ3RoIHZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBjZjcxNDk1
ZDk4MWVmMDczNTM3M2ZkZGU2Njc1MGQ1MmVlNTI2M2ViLi4xNWFlOGZhZmIzOGE5NTMzNjNlMThj
ZDRmYzNjOTY5ODU3ZWE0ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVm
bGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNw
cApAQCAtNDksNyArNDksNyBAQCBTdHJpbmcgQ1NTUmVmbGVjdFZhbHVlOjpjdXN0b21TZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdAogfQogI2VuZGlmCiAK
LXZvaWQgQ1NTUmVmbGVjdFZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25z
dAordm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29u
c3QKIHsKICAgICBpZiAobV9tYXNrKQogICAgICAgICBtX21hc2stPmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5o
CmluZGV4IDBlZjExY2U0YjE0YWU4MjNlZDNlMTgxOTY2NGVlNmMyZjU3MjA3YmQuLjgxZmJlOWY0
NmMxYjM4YTVlYzBkMDUwMTA0ZWVmNzljMWIwZWY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVm
bGVjdFZhbHVlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
UmVmbGVjdFZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCA0Y2Q1NmJhYTc5NmZmNWJkMzZhNTc3MWQwYjQ2MDhkNWE5ODQxZTNjLi5lOGNjZjI4ZTUx
ZTcwZTFkMjcxNzBiZjE5MWNlNjJmYWJmNTUwY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBzCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KHNoZWV0LCBvd25lck5vZGUsIGZhbHNl
KSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
SW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZykKK1Bhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3Jl
YXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nKQogewogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChvd25l
ck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZW5jb2RpbmcpOwogICAgIFJlZlB0cjxTdHlsZVNo
ZWV0Q29udGVudHM+IHNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5z
dHJpbmcoKSwgcGFyc2VyQ29udGV4dCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgYm9vbCBDU1NTdHls
ZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNJbmxpbmVTdHls
ZXNoZWV0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBLVVJMIGJhc2VVUkwgPSBtX2NvbnRl
bnRzLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VVUkwgPSBtX2NvbnRlbnRzLT5iYXNlVVJMKCk7
CiAgICAgaWYgKGJhc2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBvd25lckRvY3VtZW50KCk7CkBAIC0zNjMsNyArMzYzLDcgQEAg
U3RyaW5nIENTU1N0eWxlU2hlZXQ6OmhyZWYoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRz
LT5vcmlnaW5hbFVSTCgpOwogfQogCi1LVVJMIENTU1N0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25z
dAorVVJMIENTU1N0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2Nv
bnRlbnRzLT5iYXNlVVJMKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBi
MzA4YmQxZDg1MmNhYmE4MzJhMWUyOWZiN2RlZWE0ZDk2MzRiMzU3Li4zMmI1Y2UxMGEzNDU3ZWFi
YjIxN2FiMTFjYTgzYjMxZGJmNDNkMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBGSU5BTCA6IHB1YmxpYyBTdHls
ZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBj
cmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+LCBDU1NJbXBvcnRSdWxlKiBvd25l
clJ1bGUgPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUo
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+LCBOb2RlKiBvd25lck5vZGUpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5
bGVTaGVldCgpOwogCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9vd25lclJ1bGU7IH0KLSAgICB2
aXJ0dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgpIHsgbV9vd25lclJ1
bGUgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBiMzY5OTBkODkxM2FlODQ3NDFh
NTFiZDQwZTA5OGU1ODBmNWUwNzJkLi43NTE3NWU1OWVhMWRmYzZkMmFjNDA3ZGUxMDFiZjgwYzEw
NDdmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDU1NW
YWx1ZTo6VHlwZSBDU1NWYWx1ZTo6Y3NzVmFsdWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ1NT
X0NVU1RPTTsKIH0KIAotdm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVl
dCkgY29uc3QKK3ZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29u
c3QKIHsKICAgICAvLyBUaGlzIHNob3VsZCBnZXQgY2FsbGVkIGZvciBpbnRlcm5hbCBpbnN0YW5j
ZXMgb25seS4KICAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCA3ZTQ4MDI3ODc5Y2Q5MjU1YTJhN2QwZDU5NzdjNGFjMDExMTUzYTc0Li41MDZlMjVkODVh
ZDEzYjE1OWI1NTgyMGY3ODRlZjllMmVmMmQ5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAt
MjIsNyArMjIsNyBAQAogI2RlZmluZSBDU1NWYWx1ZV9oCiAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogCiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCi0gICAgdm9pZCBh
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggNDlmNWM3Yzc0MWY5MWE5ZWQ0N2JmOGI5MTE5ZTNj
N2IzY2Y4NjRlYi4uNzczZTY0MjUxMTlmMzUzNzlkZWJmNGY4N2Q5MmRjZmNjMWRiNTJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcg
Q1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbgogfQogI2VuZGlmCiAKLXZvaWQgQ1NTVmFsdWVMaXN0OjphZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVl
dENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRD
b250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fdmFsdWVz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuaAppbmRleCA5ZWUxYWZhOTI5YTc1ODAxMTY5ZTI5MjdiMjY3M2Q2Zjlm
MGJiZWU4Li4yYmRkOWU1NmVjOGM1NzM0ZGU1MjVkZWVkOTQ5ODU2ODBmZDU3NGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMq
KSBjb25zdDsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDcxMWRhZmRkNGM3NWI1MTgz
Y2NjNjIxMDgxZDg1ZGUyMzliOGNiOTkuLmIyYTBmYTc0Njc5ZGNhZDhiNTBiMjUzMDUyYTVmM2M2
N2I4NDAwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5jcHAKQEAgLTE5OTgsNyArMTk5OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAg
ICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBjc3NVUkxW
YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgICAg
IEtVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVUkxW
YWx1ZSk7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50
KCkuY29tcGxldGVVUkwoY3NzVVJMVmFsdWUpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJ
dCBkb2Vzbid0IHdvcmsgd2l0aCBmb3J3YXJkIG9yIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzIChz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDA1KQogICAgICAg
ICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIFJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpjcmVhdGUoY3NzVVJMVmFsdWUsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CmluZGV4IDVmNzEwMzIyMTM1NmRmODZhY2JiNjI5MzIxMjhjMjA5MzlkMDcwODQuLjFmNWMxNWIy
ZWYwY2RlNmJlNDZkYWVlYTI4YTYzNjQ4MWY4Y2VhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgTXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVy
dHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9D
U1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBTdHlsZVByb3BlcnR5U2V0OjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBj
b250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRz
KiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVy
dHlDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA0ZWFiYjNiYzU0MmMyYmJiMzY2NGNm
MWIzNGZhZWVlMWJlYzE5Y2I5Li4yMjE2YTA0ZmI1NTIzNDZiM2ViMzUwMTlkNWI0N2Q5M2M4ZmNj
ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOwogY2xhc3MgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDsKIGNs
YXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KG1fY3NzUGFy
c2VyTW9kZSk7IH0KIAotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBjb25zdDsK
KyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBTdHls
ZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBjb25zdDsKIAogICAgIFBhc3NSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVDb3B5KCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBpbW11dGFibGVDb3B5SWZOZWVkZWQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2ZjQ1YWEzYjI5
MGIwYzEwNDM5NjU5ZDljODY2YTgxNjBiNTA2OTg0Li5mYWFhYzA5MmYzYzdiN2MzMGE4NWFjOTgy
YmY5ZmE4NzhjNzA4YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0z
NDIwLDggKzM0MjAsOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IFN0eWxlUmVz
b2x2ZXI6Omxvb2t1cEN1c3RvbUZpbHRlclByb2dyYW0oV2ViS2l0QwogICAgIEN1c3RvbUZpbHRl
clByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKIHsKICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBLVVJMIHZlcnRleFNoYWRlclVS
TCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpIDogS1VSTCgpOwotICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwgPSBmcmFnbWVu
dFNoYWRlciA/IGZyYWdtZW50U2hhZGVyLT5jb21wbGV0ZVVSTChjYWNoZWRSZXNvdXJjZUxvYWRl
cikgOiBLVVJMKCk7CisgICAgVVJMIHZlcnRleFNoYWRlclVSTCA9IHZlcnRleFNoYWRlciA/IHZl
cnRleFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogVVJMKCk7Cisg
ICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMID0gZnJhZ21lbnRTaGFkZXIgPyBmcmFnbWVudFNoYWRl
ci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogVVJMKCk7CiAgICAgUmVmUHRy
PFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBpZiAobV9jdXN0b21GaWx0
ZXJQcm9ncmFtQ2FjaGUpCiAgICAgICAgIHByb2dyYW0gPSBtX2N1c3RvbUZpbHRlclByb2dyYW1D
YWNoZS0+bG9va3VwKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclVSTCwgZnJh
Z21lbnRTaGFkZXJVUkwsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKQEAg
LTM3ODAsNyArMzc4MCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0
aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSogc3Zn
RG9jdW1lbnRWYWx1ZSA9IHN0YXRpY19jYXN0PFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUqPihh
cmd1bWVudCk7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChzdmdEb2N1bWVudFZhbHVlLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgdXJsID0g
bV9zdGF0ZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN2Z0RvY3VtZW50VmFsdWUtPnVybCgpKTsK
IAogICAgICAgICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9u
ID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJs
KCksIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSwgb3BlcmF0aW9uVHlwZSk7CiAgICAgICAgICAg
ICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKHN2Z0RvY3VtZW50
VmFsdWUtPnVybCgpLCBtX3N0YXRlLmRvY3VtZW50KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAppbmRleCA2YTE2MTk2Y2MyYzRiZDBhZTFlMjhmYmE0ZWRlODhmOThiODVmMGVmLi42
NzU0ZDdkZDViZWE1MDNmZGI5YzM5NzU4OTMxOWJlMzEyYWJhOWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVp
bGRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBLZXlmcmFt
ZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5jcHAKaW5kZXggMDk1NjYwOTk5N2YyMmI3MGQ2MmJiZDdiMTcyOWFhNzZkM2M2
NTdiMi4uNWY0MzA2ZjdkOTkyMzQxZmE4NmZlNDdiOGE3OGQyMzkxMWM1NTZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3R5bGVSdWxl
SW1wb3J0Ojp+U3R5bGVSdWxlSW1wb3J0KCkKICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3Zl
Q2xpZW50KCZtX3N0eWxlU2hlZXRDbGllbnQpOwogfQogCi12b2lkIFN0eWxlUnVsZUltcG9ydDo6
c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVk
U3R5bGVTaGVldCkKK3ZvaWQgU3R5bGVSdWxlSW1wb3J0OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYg
KG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5jbGVhck93bmVyUnVsZSgpOwpA
QCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNo
ZWV0KCkKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBLVVJMIGFic1VSTDsKKyAgICBVUkwgYWJzVVJMOwogICAgIGlmICghbV9wYXJlbnRTdHls
ZVNoZWV0LT5iYXNlVVJMKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVo
ZWV0J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNVUkwgPSBLVVJMKG1fcGFyZW50
U3R5bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOworICAgICAgICBhYnNVUkwgPSBVUkwo
bV9wYXJlbnRTdHlsZVNoZWV0LT5iYXNlVVJMKCksIG1fc3RySHJlZik7CiAgICAgZWxzZQogICAg
ICAgICBhYnNVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobV9zdHJIcmVmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCmluZGV4IGVlNTRkYjllNmI5MDcwN2E2ODRiMTIwMWRl
ZWQzMGE3NTQ5MjFjZGUuLjQ1MjEyNGZlMWYxN2EyMjU1YzczYWYxZmFjNjJmMzljMzIxMDY3NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJp
dmF0ZToKICAgICBwdWJsaWM6CiAgICAgICAgIEltcG9ydGVkU3R5bGVTaGVldENsaWVudChTdHls
ZVJ1bGVJbXBvcnQqIG93bmVyUnVsZSkgOiBtX293bmVyUnVsZShvd25lclJ1bGUpIHsgfQogICAg
ICAgICB2aXJ0dWFsIH5JbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoKSB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hl
ZXQqIHNoZWV0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKICAgICAgICAgewogICAgICAgICAgICAg
bV9vd25lclJ1bGUtPnNldENTU1N0eWxlU2hlZXQoaHJlZiwgYmFzZVVSTCwgY2hhcnNldCwgc2hl
ZXQpOwogICAgICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN0eWxl
UnVsZUltcG9ydCogbV9vd25lclJ1bGU7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0Q1NTU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOworICAgIHZvaWQgc2V0Q1NT
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CiAgICAgZnJpZW5k
IGNsYXNzIEltcG9ydGVkU3R5bGVTaGVldENsaWVudDsKIAogICAgIFN0eWxlUnVsZUltcG9ydChj
b25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmgKaW5kZXggNjBiYmI1ZjI2N2U4YmNkM2ZjNmQzYWIzNWU1NDZiYzRlYzQ4ZWFk
OC4uMzg5OTE2YWQ3NDdmZTc0ZDQ5MDQ3MDI0Mzg5NzM3OTQ4YTRlNzM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hlZXRfaAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkgPSAwOwot
ICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXgg
ZWY1ZDUzOTdiNDNiMDRkNDQ5ZmYzMmU3ZWNjMjYwNzVkZjU5ZmRmOS4uZjU1Zjc0OGZlYTk5OGNl
MGQ2N2UzNjUwNzdkMDU0MjRmM2NlMjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAKQEAgLTM5NywxMiArMzk3LDEyIEBAIERvY3VtZW50KiBTdHlsZVNoZWV0
Q29udGVudHM6OnNpbmdsZU93bmVyRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBvd25lck5v
ZGUgPyAmb3duZXJOb2RlLT5kb2N1bWVudCgpIDogMDsKIH0KIAotS1VSTCBTdHlsZVNoZWV0Q29u
dGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIFN0eWxlU2hl
ZXRDb250ZW50czo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENTU1BhcnNlcjo6Y29tcGxldGVVUkwobV9wYXJzZXJDb250ZXh0LCB1cmwpOwogfQog
Ci12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKIHsKICAgICBEZXF1ZTxTdHlsZVNo
ZWV0Q29udGVudHMqPiBzdHlsZVNoZWV0UXVldWU7CiAgICAgc3R5bGVTaGVldFF1ZXVlLmFwcGVu
ZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCA2YjQ5
Nzk2MjhiMmRhZDQ4NmVlNDhmNDg4NDk2OGEwZTE4ZDUwZmE0Li5mOWU2OTQ1YzY5Njg4OGQ1YzNm
N2I0YzZhNzE1ODM2NzBjYmIwNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hlZXRDb250ZW50c19oCiAK
ICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTgwLDggKzgwLDggQEAgcHVi
bGljOgogICAgIGJvb2wgbG9hZENvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZENvbXBs
ZXRlZDsgfQogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0
OwogCi0gICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7Ci0gICAg
dm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOworICAgIFVS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jik7CiAKICAgICB2b2lkIHNldElzVXNl
clN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNVc2VyU3R5bGVTaGVldCA9IGI7IH0KICAgICBib29s
IGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlclN0eWxlU2hlZXQ7IH0K
QEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhpcyBzdHlsZSBzaGVldC4gVGhp
cyBwcm9wZXJ0eSBwcm9iYWJseSBpc24ndCB1c2VmdWwgZm9yIG11Y2ggZXhjZXB0CiAgICAgLy8g
dGhlIEphdmFTY3JpcHQgYmluZGluZyAod2hpY2ggbmVlZHMgdG8gdXNlIHRoaXMgdmFsdWUgZm9y
IHNlY3VyaXR5KS4KICAgICBTdHJpbmcgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbmFsVVJMOyB9Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CisgICAgY29uc3QgVVJMJiBiYXNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZXJDb250ZXh0LmJhc2VVUkw7IH0KIAogICAgIHVuc2lnbmVkIHJ1bGVD
b3VudCgpIGNvbnN0OwogICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGVBdCh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRl
eCAxZDNhZDI4NzNjNDg4MmExYWE1Yjk2YzNjZjBiZDdkZGI1ZGZmNTk5Li41Yzk2MmM1OTYwZGJk
ZjNhOTA3NDMzNmMyOGRjNDlhYzlhYTgxYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHls
ZVBlbmRpbmdTaGFkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC01NSw3ICs1NSw3IEBAIFdlYktpdENTU1NoYWRlclZhbHVlOjp+V2ViS2l0Q1NTU2hhZGVyVmFs
dWUoKQogewogfQogCi1LVVJMIFdlYktpdENTU1NoYWRlclZhbHVlOjpjb21wbGV0ZVVSTChDYWNo
ZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAorVVJMIFdlYktpdENTU1NoYWRlclZhbHVl
Ojpjb21wbGV0ZVVSTChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAogewogICAg
IHJldHVybiBsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggNjliZTUxNmZhMjVmY2I2
ODVkNGFmNGQxODgwNmRlYzczOWI3MzY4NS4uNDJiYTdkZmQxZmQxZTNmZTQzYjliOTAzYjEyMzZl
OGE5Y2Q2MDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU3R5bGVDYWNoZWRT
aGFkZXI7CiBjbGFzcyBTdHlsZVNoYWRlcjsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAg
IHZvaWQgc2V0Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KSB7IG1fZm9ybWF0ID0gZm9ybWF0
OyB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29uc3Q7
CisgICAgVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29uc3Q7CiAgICAg
U3R5bGVDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwog
ICAgIFN0eWxlU2hhZGVyKiBjYWNoZWRPclBlbmRpbmdTaGFkZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1NzRhYTE1MTkyZWJiZmZjNmJlYzQw
NWYyZGFkYTZkYjlkYjcwNi4uODhjZDY2ZGY1NmZkZTExNjEzZmNkYjJhNDQ4YmIyYjhhOTE3NGFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0yMzMsMTMg
KzIzMywxMyBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUgogICAgIFJlZlB0cjxEb2N1bWVudD4g
ZG9jOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBTVkdOYW1lczo6
c3ZnTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIEtV
UkwoKSk7CisgICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogICAg
IGVsc2UKICNlbmRpZgogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVzOjp4aHRtbE5h
bWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwo
KSk7CisgICAgICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CiAgICAg
ZWxzZQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CisgICAgICAg
IGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogCiAgICAgZG9jLT5zZXRTZWN1cml0
eU9yaWdpbihtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOwogCkBAIC0zMTAsNyArMzEwLDcg
QEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIAogUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBSZWZQdHI8SFRN
TERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICBSZWZQ
dHI8SFRNTERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogICAg
IGQtPm9wZW4oKTsKICAgICBkLT53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iKTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQpAQCAtMzE5LDcgKzMxOSw3
IEBAIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRN
TERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0CiAgICAgcmV0dXJuIGQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBp
blZpZXdTb3VyY2VNb2RlKQorUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogewogICAgIGlmIChpblZpZXdTb3VyY2VN
b2RlKQogICAgICAgICByZXR1cm4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwsIHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAppbmRleCBm
OWFjNmZmNTk2N2FkZDFmZTNlNjE2ZGRiYjI2ZTAwY2I5Njg1YTFlLi5hYmFmY2E1M2YzMGFmMzZk
MzI5Y2Q4MmFlNTg2MWQyYzk0OGRjNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
VHlwZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MRG9j
dW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIC8v
IE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
b2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBj
b25zdCBLVVJMJiwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUq
LCBjb25zdCBVUkwmLCBib29sIGluVmlld1NvdXJjZU1vZGUpOwogCiAgICAgc3RhdGljIGJvb2wg
aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKICAgICBzdGF0aWMgYm9vbCBp
c1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDMyMzA1NDk2YzFjOTk4MTJiNDFhOGVhZTJlNmZiNGQwNTM2Yjk4MDMuLjBiMTlj
ZmJkNDc0ZThhYWExZDlmMDY5NTBjZmEyZjExZTM1Yjg2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVBh
cnQoVUNoYXIzMiBjKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRJ
bmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIGJv
b2wgc2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI29yaWdpbi0wCiAgICAgLy8KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBjYW5B
Y2Nlc3NBbmNlc3Rvcihjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlU2VjdXJpdHlPcmlnaW4s
IEZyYW1lKgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0
aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgYWN0aXZlVVJMLCBjb25z
dCBjaGFyKiByZWFzb24pCitzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2Uo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29uc3QgY2hhciogcmVhc29uKQog
ewogICAgIFN0cmluZyBtZXNzYWdlID0gIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5p
dGlhdGUgbmF2aWdhdGlvbiBmb3IgZnJhbWUgd2l0aCBVUkwgJyIgKyBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkgKyAiJyBmcm9tIGZyYW1lIHdpdGggVVJMICciICsgYWN0aXZlVVJM
LnN0cmluZygpICsgIicuICIgKyByZWFzb24gKyAiXG4iOwogCkBAIC00MDAsNyArNDAwLDcgQEAg
Ym9vbCBUZXh0QXV0b1NpemluZ1RyYWl0czo6aXNEZWxldGVkVmFsdWUoY29uc3QgVGV4dEF1dG9T
aXppbmdLZXkmIHZhbHVlKQogfQogI2VuZGlmCiAKLURvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQorRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcykKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCiAgICAg
LCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fc3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyKHRo
aXMsICZEb2N1bWVudDo6c3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyRmlyZWQsIHRpbWVCZWZv
cmVUaHJvd2luZ0F3YXlTdHlsZVJlc29sdmVyQWZ0ZXJMYXN0VXNlSW5TZWNvbmRzKQpAQCAtMTM5
NCw3ICsxMzk0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1lbnRVUkkoY29uc3QgU3RyaW5n
JiB1cmkpCiAgICAgdXBkYXRlQmFzZVVSTCgpOwogfQogCi1LVVJMIERvY3VtZW50OjpiYXNlVVJJ
KCkgY29uc3QKK1VSTCBEb2N1bWVudDo6YmFzZVVSSSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YmFzZVVSTDsKIH0KQEAgLTI2MjMsOSArMjYyMyw5IEBAIHZvaWQgRG9jdW1lbnQ6OmxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
CiAgICAgYWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJv
ck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjYWxsU3RhY2sp
OwogfQogCi12b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1
bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9
IHVybC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJM
ID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CiAgICAgaWYgKG5ld1VSTCA9PSBt
X3VybCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNl
VVJMKCkKIHsKLSAgICBLVVJMIG9sZEJhc2VVUkwgPSBtX2Jhc2VVUkw7CisgICAgVVJMIG9sZEJh
c2VVUkwgPSBtX2Jhc2VVUkw7CiAgICAgLy8gRE9NIDMgQ29yZTogV2hlbiB0aGUgRG9jdW1lbnQg
c3VwcG9ydHMgdGhlIGZlYXR1cmUgIkhUTUwiIFtET00gTGV2ZWwgMiBIVE1MXSwgdGhlIGJhc2Ug
VVJJIGlzIGNvbXB1dGVkIHVzaW5nCiAgICAgLy8gZmlyc3QgdGhlIHZhbHVlIG9mIHRoZSBocmVm
IGF0dHJpYnV0ZSBvZiB0aGUgSFRNTCBCQVNFIGVsZW1lbnQgaWYgYW55LCBhbmQgdGhlIHZhbHVl
IG9mIHRoZSBkb2N1bWVudFVSSSBhdHRyaWJ1dGUKICAgICAvLyBmcm9tIHRoZSBEb2N1bWVudCBp
bnRlcmZhY2Ugb3RoZXJ3aXNlLgpAQCAtMjY0OCwxNCArMjY0OCwxNCBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgLy8gVGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0ZSBp
cyByZWFkLW9ubHkgZnJvbSBKYXZhU2NyaXB0LCBidXQgd3JpdGFibGUgZnJvbSBPYmplY3RpdmUg
Qywgc28gd2UgbmVlZCB0byByZXRhaW4KICAgICAgICAgLy8gdGhpcyBmYWxsYmFjayBiZWhhdmlv
ci4gV2UgdXNlIGEgbnVsbCBiYXNlIFVSTCwgc2luY2UgdGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0
ZSBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nCiAgICAgICAgIC8vIGFuZCBET00gMyBDb3JlIGRvZXMg
bm90IHNwZWNpZnkgaG93IGl0IHNob3VsZCBiZSByZXNvbHZlZC4KLSAgICAgICAgbV9iYXNlVVJM
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGRvY3VtZW50VVJJKCkpOworICAgICAgICBtX2Jhc2VV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBkb2N1bWVudFVSSSgpKTsKICAgICB9CiAKICAgICBp
ZiAobV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCiAgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5p
bnZhbGlkYXRlKCk7CiAKICAgICBpZiAoIW1fYmFzZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgIG1f
YmFzZVVSTCA9IEtVUkwoKTsKKyAgICAgICAgbV9iYXNlVVJMID0gVVJMKCk7CiAKICAgICBpZiAo
bV9lbGVtZW50U2hlZXQpIHsKICAgICAgICAgLy8gRWxlbWVudCBzaGVldCBpcyBzaWxseS4gSXQg
bmV2ZXIgY29udGFpbnMgYW55dGhpbmcuCkBAIC0yNjc1LDcgKzI2NzUsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEJhc2VV
UkxPdmVycmlkZShjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRCYXNlVVJMT3Zl
cnJpZGUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9iYXNlVVJMT3ZlcnJpZGUgPSB1cmw7CiAg
ICAgdXBkYXRlQmFzZVVSTCgpOwpAQCAtMjcwMSwxMSArMjcwMSwxMSBAQCB2b2lkIERvY3VtZW50
Ojpwcm9jZXNzQmFzZUVsZW1lbnQoKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlz
IGRvZXNuJ3Qgc2hhcmUgY29kZSB3aXRoIGNvbXBsZXRlVVJMIGl0IG1heSBub3QgaGFuZGxlIGVu
Y29kaW5ncyBjb3JyZWN0bHkuCi0gICAgS1VSTCBiYXNlRWxlbWVudFVSTDsKKyAgICBVUkwgYmFz
ZUVsZW1lbnRVUkw7CiAgICAgaWYgKGhyZWYpIHsKICAgICAgICAgU3RyaW5nIHN0cmlwcGVkSHJl
ZiA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcygqaHJlZik7CiAgICAgICAgIGlm
ICghc3RyaXBwZWRIcmVmLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJhc2VFbGVtZW50VVJMID0g
S1VSTCh1cmwoKSwgc3RyaXBwZWRIcmVmKTsKKyAgICAgICAgICAgIGJhc2VFbGVtZW50VVJMID0g
VVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwogICAgIH0KICAgICBpZiAobV9iYXNlRWxlbWVudFVS
TCAhPSBiYXNlRWxlbWVudFVSTCAmJiBjb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dCYXNl
VVJJKGJhc2VFbGVtZW50VVJMKSkgewogICAgICAgICBtX2Jhc2VFbGVtZW50VVJMID0gYmFzZUVs
ZW1lbnRVUkw7CkBAIC0yNzE1LDcgKzI3MTUsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQmFz
ZUVsZW1lbnQoKQogICAgIG1fYmFzZVRhcmdldCA9IHRhcmdldCA/ICp0YXJnZXQgOiBudWxsQXRv
bTsKIH0KIAotU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKSBjb25z
dAorU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS51c2VyQWdlbnQodXJsKSA6IFN0
cmluZygpOwogfQpAQCAtMzcyNiw3ICszNzI2LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUo
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9
CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOworICAgIFVSTCBjb29r
aWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0zNzQ3LDcgKzM3NDcsNyBAQCB2b2lkIERv
Y3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNv
b2tpZVVSTCgpOworICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBp
ZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTcxLDIwICsz
OTcxLDIwIEBAIHZvaWQgRG9jdW1lbnQ6OnNldERlY29kZXIoUGFzc1JlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBkZWNvZGVyKQogICAgIG1fZGVjb2RlciA9IGRlY29kZXI7CiB9CiAKLUtVUkwg
RG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBLVVJMJiBiYXNl
VVJMT3ZlcnJpZGUpIGNvbnN0CitVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKIHsKICAgICAvLyBBbHdh
eXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4KLSAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMg
YmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVSTCBjb25zdHJ1
Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgLy8gU2VlIGFsc28gW0NTU11TdHlsZVNo
ZWV0Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAgIGlmICh1cmwuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCA9ICgoYmFzZVVS
TE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYg
cGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJM
T3ZlcnJpZGU7CisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBjb25zdCBVUkwmIGJhc2VVUkwg
PSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRlID09IGJsYW5r
VVJMKCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgp
IDogYmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4g
S1VSTChiYXNlVVJMLCB1cmwpOwotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybCwgbV9kZWNv
ZGVyLT5lbmNvZGluZygpKTsKKyAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwpOworICAg
IHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOwogfQogCi1L
VVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1VSTCBE
b2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMKTsKIH0KQEAgLTQxOTksMjEgKzQxOTksMjEg
QEAgU3RyaW5nIERvY3VtZW50OjpxdWVyeUNvbW1hbmRWYWx1ZShjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lKQogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS52YWx1ZSgpOwog
fQogCi1LVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQorVVJMIERvY3Vt
ZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBvcGVuU2VhcmNoTUlNRVR5cGUgPSAiYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2Ny
aXB0aW9uK3htbCI7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5TZWFyY2hSZWxh
dGlvbiA9ICJzZWFyY2giOwogCiAgICAgLy8gRklYTUU6IFdoeSBkbyBvbmx5IHRvcC1sZXZlbCBm
cmFtZXMgaGF2ZSBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkxzPwogICAgIGlmICghZnJhbWUoKSB8
fCBmcmFtZSgpLT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAg
ICAgIHJldHVybiBVUkwoKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0byB3YWl0
IGZvciBGcmFtZVN0YXRlQ29tcGxldGU/CiAgICAgaWYgKGZyYW1lKCktPmxvYWRlcigpLnN0YXRl
KCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gVVJMKCk7CiAKICAgICBpZiAoIWhlYWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBj
aGlsZHJlbiA9IGhlYWQoKS0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBO
b2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKQEAgLTQyMjcsNyArNDIyNyw3
IEBAIEtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpCiAgICAgICAgIHJl
dHVybiBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgIH0KIAotICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgcmV0dXJuIFVSTCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVudFNjcmlwdChQ
YXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBuZXdDdXJyZW50U2NyaXB0KQpAQCAtNDU2Niw3
ICs0NTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgaWYg
KCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3IgYSBzZWN1cml0eSBjb250ZXh0
LgogICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlRG9jdW1lbnQoKS4KLSAgICAgICAgbV9jb29raWVVUkwgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVS
TFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBv
bGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQ2NTIsNyArNDY1Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzQ29udGV4dFRocmVhZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi12b2lkIERvY3VtZW50Ojp1
cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1
bWVudDo6dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIEZyYW1lKiBmID0gZnJhbWUoKTsKICAgICBpZiAoIWYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDQxMGFmYWViZDY4MTAwMWE2MzExOTBjNGZkMzNhZGFjYWZmMDkwMGQuLjczYTc4NTNiZDQ3
MmExNWFiNTdiZmMwNjYyOTRmMzUwMTU2ZDcyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0y
MzYsMTEgKzIzNiwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgRG9jdW1lbnRDbGFzc0ZsYWdz
OwogCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNj
b3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3Vt
ZW50KGZyYW1lLCB1cmwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+
IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudChmcmFtZSwg
dXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CkBAIC00MTQsNyArNDE0LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRV
Ukk7IH0KICAgICB2b2lkIHNldERvY3VtZW50VVJJKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmly
dHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICBTdHJpbmcgdmlzaWJp
bGl0eVN0YXRlKCkgY29uc3Q7CkBAIC01ODQsMjIgKzU4NCwyMiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0KIAotICAgIHZp
cnR1YWwgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV91
cmw7IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgdm9p
ZCBzZXRVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBj
b25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29t
bWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCi0gICAgY29uc3QgS1VSTCYgYmFz
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQotICAgIHZvaWQgc2V0QmFzZVVSTE92
ZXJyaWRlKGNvbnN0IEtVUkwmKTsKLSAgICBjb25zdCBLVVJMJiBiYXNlVVJMT3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlkZTsgfQotICAgIGNvbnN0IEtVUkwmIGJhc2VF
bGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVSTDsgfQorICAgIGNvbnN0
IFVSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQorICAgIHZvaWQgc2V0
QmFzZVVSTE92ZXJyaWRlKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBVUkwm
IGJhc2VFbGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVSTDsgfQogICAg
IGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVRhcmdldDsg
fQogICAgIHZvaWQgcHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIEtVUkwgY29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgS1VSTCBj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNv
bnN0OworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKQEAgLTgxNyw4ICs4MTcsOCBAQCBwdWJsaWM6CiAgICAgLy8g
ICAgZG9jdW1lbnQgaW5oZXJpdHMgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgYW5vdGhlciBkb2N1
bWVudCwgaXQKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29va2llVVJMIGJ1dCBub3QgaXRzIFVS
TC4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGNvb2tpZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29va2llVVJMOyB9Ci0gICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1f
Y29va2llVVJMID0gdXJsOyB9CisgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2Nvb2tpZVVSTDsgfQorICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJs
KSB7IG1fY29va2llVVJMID0gdXJsOyB9CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMgaXMgdXNlZCB0byBjb21wdXRlIHdoZXRoZXIgdGhpcyBkb2N1bWVudAogICAgIC8vIGFwcGVh
cnMgaW4gYSAidGhpcmQtcGFydHkiIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXJkLXBh
cnR5CkBAIC04MzAsOCArODMwLDggQEAgcHVibGljOgogICAgIC8vICAgICAgIGZpcnN0UGFydHlG
b3JDb29raWVzIGhhdmUgYSBkaWZmZXJlbnQgcmVnaXN0cnktY29udHJvbGxlZAogICAgIC8vICAg
ICAgIGRvbWFpbi4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQotICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKSB7IG1fZmlyc3RQYXJ0eUZvckNv
b2tpZXMgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIHZvaWQgc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpIHsgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9
IHVybDsgfQogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyB0aGUgcnVsZSBm
cm9tIEhUTUwgNCBmb3Igd2hhdCB2YWxpZCBuYW1lcyBhcmUuCiAgICAgLy8gVG8gZ2V0IHRoaXMg
cmlnaHQgZm9yIGFsbCB0aGUgWE1MIGNhc2VzLCB3ZSBwcm9iYWJseSBoYXZlIHRvIGltcHJvdmUg
dGhpcyBvciBtb3ZlIGl0CkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcXVl
cnlDb21tYW5kU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgU3RyaW5nIHF1
ZXJ5Q29tbWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAKLSAgICBLVVJMIG9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTCgpOworICAgIFVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwo
KTsKIAogICAgIC8vIGRlc2lnbk1vZGUgc3VwcG9ydAogICAgIGVudW0gSW5oZXJpdGVkQm9vbCB7
IG9mZiA9IGZhbHNlLCBvbiA9IHRydWUsIGluaGVyaXQgfTsgICAgCkBAIC0xMDA3LDcgKzEwMDcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgdm9pZCBp
bml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZVVSTEZvclB1c2hP
clJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJik7CisgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JS
ZXBsYWNlU3RhdGUoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzdGF0ZVBvcHBlZChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCiAgICAgYm9vbCBwcm9jZXNzaW5nTG9hZEV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CkBAIC0xMTg3LDcgKzEx
ODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50
KGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwg
dW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcyk7CisgICAgRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKIAogICAgIHZvaWQg
Y2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCkBAIC0xMjkz
LDEyICsxMjkzLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dlbGxGb3JtZWQ7CiAKICAgICAv
LyBEb2N1bWVudCBVUkxzLgotICAgIEtVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVS
TCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KLSAgICBLVVJMIG1fYmFz
ZVVSTDsgLy8gTm9kZS5iYXNlVVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29sdmluZyByZWxh
dGl2ZSBVUkxzLgotICAgIEtVUkwgbV9iYXNlVVJMT3ZlcnJpZGU7IC8vIEFuIGFsdGVybmF0aXZl
IGJhc2UgVVJMIHRoYXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1fYmFzZVVSTCAoYnV0IG5vdCBt
X2Jhc2VFbGVtZW50VVJMKS4KLSAgICBLVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8vIFRoZSBVUkwg
c2V0IGJ5IHRoZSA8YmFzZT4gZWxlbWVudC4KLSAgICBLVVJMIG1fY29va2llVVJMOyAvLyBUaGUg
VVJMIHRvIHVzZSBmb3IgY29va2llIGFjY2Vzcy4KLSAgICBLVVJMIG1fZmlyc3RQYXJ0eUZvckNv
b2tpZXM7IC8vIFRoZSBwb2xpY3kgVVJMIGZvciB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcu
CisgICAgVVJMIG1fdXJsOyAvLyBEb2N1bWVudC5VUkw6IFRoZSBVUkwgZnJvbSB3aGljaCB0aGlz
IGRvY3VtZW50IHdhcyByZXRyaWV2ZWQuCisgICAgVVJMIG1fYmFzZVVSTDsgLy8gTm9kZS5iYXNl
VVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLgorICAgIFVS
TCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtl
cyBwcmVjZWRlbmNlIG92ZXIgbV9iYXNlVVJMIChidXQgbm90IG1fYmFzZUVsZW1lbnRVUkwpLgor
ICAgIFVSTCBtX2Jhc2VFbGVtZW50VVJMOyAvLyBUaGUgVVJMIHNldCBieSB0aGUgPGJhc2U+IGVs
ZW1lbnQuCisgICAgVVJMIG1fY29va2llVVJMOyAvLyBUaGUgVVJMIHRvIHVzZSBmb3IgY29va2ll
IGFjY2Vzcy4KKyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsgLy8gVGhlIHBvbGljeSBV
UkwgZm9yIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KIAogICAgIC8vIERvY3VtZW50LmRv
Y3VtZW50VVJJOgogICAgIC8vIEFsdGhvdWdoIFVSTC1saWtlLCBEb2N1bWVudC5kb2N1bWVudFVS
SSBjYW4gYWN0dWFsbHkgYmUgc2V0IHRvIGFueQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cAppbmRleCBhY2VmYTY3M2M0OTc0M2QxOWM5Mjc2MGU1NmJlZmYzYTYyMGYxMzhlLi40NzJmODRl
MGM4MjVmMDljMzU4M2VhNjBjOTJkMjY5NzkyMjRlMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcApAQCAtMzYsOSArMzYsOSBAQCBEb2N1bWVudFR5cGU6OkRvY3VtZW50VHlwZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJgogewog
fQogCi1LVVJMIERvY3VtZW50VHlwZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgRG9jdW1lbnRUeXBl
OjpiYXNlVVJJKCkgY29uc3QKIHsKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBVUkwo
KTsKIH0KIAogU3RyaW5nIERvY3VtZW50VHlwZTo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5oCmluZGV4IDFkYjYzMjdjZGRiZDFlMzFlOTA0OGY0ZmMwODhhNDRhYTEy
ZjdlYWUuLjY1MDE4MDc3MDQ4ZWVhNGY5ZWU4MzlkMmVjN2MzMTgzOGVmMzgzODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBEb2N1bWVudFR5cGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOwogCi0gICAgdmlydHVhbCBL
VVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBl
IG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDM2NjEwYjQ2NWJhYjQyMjQ5
YWM0OTY1YTkwYTliODYxYTFlNGUyYmQuLjJlMDExN2ExYTdlMjhmOTlmZGE3YzNjYTFiODI3MDQ0
NThhODk1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyNDYsMTAgKzEyNDYsMTAgQEAg
dm9pZCBFbGVtZW50OjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIG1fdGFnTmFtZS5zZXRQcmVmaXgocHJlZml4LmlzRW1wdHkoKSA/
IEF0b21pY1N0cmluZygpIDogcHJlZml4KTsKIH0KIAotS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkg
Y29uc3QKK1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGJhc2VBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUoYmFzZUF0dHIpOwotICAgIEtVUkwg
YmFzZShLVVJMKCksIGJhc2VBdHRyaWJ1dGUpOworICAgIFVSTCBiYXNlKFVSTCgpLCBiYXNlQXR0
cmlidXRlKTsKICAgICBpZiAoIWJhc2UucHJvdG9jb2woKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBiYXNlOwogCkBAIC0xMjU3LDExICsxMjU3LDExIEBAIEtVUkwgRWxlbWVudDo6YmFzZVVS
SSgpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBiYXNlOwogCi0gICAg
Y29uc3QgS1VSTCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOworICAgIGNvbnN0IFVS
TCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOwogICAgIGlmIChwYXJlbnRCYXNlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gYmFzZTsKIAotICAgIHJldHVybiBLVVJMKHBhcmVudEJh
c2UsIGJhc2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBVUkwocGFyZW50QmFzZSwgYmFzZUF0dHJp
YnV0ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwo
KSBjb25zdApAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgRE9NU3RyaW5nTWFwKiBFbGVtZW50OjpkYXRh
c2V0KCkKICAgICByZXR1cm4gZGF0YS5kYXRhc2V0KCk7CiB9CiAKLUtVUkwgRWxlbWVudDo6Z2V0
VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitVUkwgRWxlbWVu
dDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CkBAIC0yNTAxLDcg
KzI1MDEsNyBAQCBLVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUobmFtZSkpKTsKIH0KIAot
S1VSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAorVVJMIEVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IGlmIChlbGVtZW50RGF0YSgpKSB7CkBAIC0yNTExLDcgKzI1MTEsNyBAQCBLVVJMIEVsZW1lbnQ6
OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAjZW5kaWYKICAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgcmV0dXJuIGRv
Y3VtZW50KCkuY29tcGxldGVVUkwodmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2
NDAyZDUyZTg3ZjEzZjdhOWQwOTE4NTZhZjc2OTVlZjg0NzM2MjIzLi4zNDI2YWQ5NTZkNThiODQz
NzVjYTYzNjcyZDEzODJkODRhYmM3ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI1Myw3ICsy
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdGFnTmFtZS5wcmVmaXgoKTsgfQogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJKCk7IH0KIAotICAgIHZpcnR1
YWwgS1VSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBVUkwg
YmFzZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9k
ZU5hbWUoKSBjb25zdDsKIApAQCAtMzg0LDggKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgS1VSTCBnZXRVUkxBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIEtVUkwgZ2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBnZXRVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBnZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
Y3BwCmluZGV4IDAzYmIzYmYzMDI4YzA0ZWIxNTYyNjAzNmYwZjM5MDNiYWY1YzgzZGQuLjY0NmY2
YzVhMGIwMjJjMjk1MWViZTI2YmZlMjYyOGFlMTJhYmUxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JY29uVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JY29uVVJMIElj
b25VUkw6OmRlZmF1bHRJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKK0lj
b25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29uc3QgVVJMJiB1cmwsIEljb25UeXBlIHR5
cGUpCiB7CiAgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmlu
ZygpLCB0eXBlKTsKICAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCmluZGV4IDFmYjM1NzhkMjA0OTg5ZmNiNjNhOWEyODI2NjRhZTA5NzkxODIzOWMuLjc5
MTZhZTBmNzY0ZTVkZjVmMzhiYTczOTJlM2NmNDVmNDU3MmMxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
aApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBJY29uVVJMX2gKICNkZWZpbmUgSWNvblVSTF9o
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgSWNvblR5cGUg
bV9pY29uVHlwZTsKICAgICBTdHJpbmcgbV9zaXplczsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
LSAgICBLVVJMIG1faWNvblVSTDsKKyAgICBVUkwgbV9pY29uVVJMOwogICAgIGJvb2wgbV9pc0Rl
ZmF1bHRJY29uOwogCiAgICAgSWNvblVSTCgpCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBJY29u
VVJMIHsKICAgICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIHR5cGUpCisg
ICAgSWNvblVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUp
CiAgICAgICAgICwgbV9zaXplcyhzaXplcykKICAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBl
KQpAQCAtNzAsNyArNzAsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgewogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgSWNvblVSTCBkZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiwgSWNvblR5cGUp
OworICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJMKGNvbnN0IFVSTCYsIEljb25UeXBl
KTsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJY29uVVJMJiwgY29uc3QgSWNvblVSTCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA0
MTg5M2ExZTA0OGQ3YTYyY2Y1MmU5NGZiZDMwYmM0ZGU3M2E5YzYwLi43MTMyYzQ3Nzk4NDY0MDEx
MjkzNDQ0NDVhMWE3YTA3NDY4MTFjYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSW5saW5lU3R5bGVT
aGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRl
eHQpCiAKICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCi0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBLVVJMKCksIGRvY3VtZW50LmlucHV0RW5jb2Rpbmco
KSk7CisgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBV
UkwoKSwgZG9jdW1lbnQuaW5wdXRFbmNvZGluZygpKTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1
ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxl
bWVudC50aXRsZSgpKTsKICAgICBtX3NoZWV0LT5jb250ZW50cygpLT5wYXJzZVN0cmluZ0F0TGlu
ZSh0ZXh0LCBtX3N0YXJ0TGluZU51bWJlci56ZXJvQmFzZWRJbnQoKSwgbV9pc1BhcnNpbmdDaGls
ZHJlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjg5ZTdkM2UxMDUyM2NkZjM3Mzk2M2VlYjQyMTVl
NWM5YzkxNDg5OS4uYWEyMTk2ZTU0MzZiZTczNzhhOGVmZDBmMWEzNWZmZTk3YmVjMTcwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMTEzOCw5ICsxMTM4LDkgQEAgRG9jdW1lbnQgKk5vZGU6Om93bmVy
RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb2MgPT0gdGhpcyA/IDAgOiBkb2M7CiB9CiAK
LUtVUkwgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVSSSgpIDogS1VS
TCgpOworICAgIHJldHVybiBwYXJlbnROb2RlKCkgPyBwYXJlbnROb2RlKCktPmJhc2VVUkkoKSA6
IFVSTCgpOwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUqIG90aGVyKSBjb25zdApA
QCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNh
Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKICAgICAgICAgaXQtPnZhbHVlLT5p
bnZhbGlkYXRlQ2FjaGUoKTsKIH0KIAotdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyh1cmxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGNmMTUwNzI5ZDk4ZjEwNDYxNzhm
ZmRhZTgyNDM3N2ZhNzg4ODYxZDUuLjUxM2Q2YmI2YjRhMGVjMjM3YTBhN2M5ODUxZWQxZDc2ZWYz
Zjc3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRWRpdGlu
Z0JvdW5kYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMSGFz
aC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCkBAIC0xOTEsOSArMTkxLDkgQEAgcHVibGljOgogICAgIE5vZGUqIHBzZXVkb0F3YXJlRmly
c3RDaGlsZCgpIGNvbnN0OwogICAgIE5vZGUqIHBzZXVkb0F3YXJlTGFzdENoaWxkKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkkoKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNo
U2V0PFVSTD4mKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIHNob3VsZCBhbGwgYWN0dWFsbHkgcmV0
dXJuIGEgbm9kZSwgYnV0IHRoaXMgaXMgb25seSBpbXBvcnRhbnQgZm9yIGxhbmd1YWdlIGJpbmRp
bmdzLAogICAgIC8vIHdoaWNoIHdpbGwgYWxyZWFkeSBrbm93IGFuZCBob2xkIGEgcmVmIG9uIHRo
ZSByaWdodCBub2RlIHRvIHJldHVybi4gUmV0dXJuaW5nIGJvb2wgYWxsb3dzCkBAIC02NjQsNyAr
NjY0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQorICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0IHsgfQogCiAgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSGFzUmFyZURhdGFGbGFnKTsgfQogCkBAIC03MzcsNyArNzM3LDcgQEAgcHJvdGVjdGVk
OgogfTsKIAogLy8gVXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoKSBh
bmQgaW4gYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoKQotaW5saW5lIHZvaWQgYWRkU3VicmVzb3Vy
Y2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKK2lubGluZSB2
b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIGlmICghdXJsLmlzTnVsbCgpKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBlMjg4
MjU5M2JiZDFhYzI0ZGYwNGFhZjViODk0YzE3NjIxYjE4ZDY0Li41MTA4OTFmMWNiMjZkZjgxYWQy
ZTMyNTdmZGQ4ZDIyY2EzNjI2YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtl
IGEgc3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4gIEl0IG5lZWRzIHRv
IGJlIGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9pbmNsdWRlIGxvYWRz
IHRoYXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAgICAgICAgaWYgKG1f
aXNYU0wpIHsKLSAgICAgICAgICAgICAgICBLVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywg
bV9sb2NhbEhyZWYpOworICAgICAgICAgICAgICAgIFVSTCBmaW5hbFVSTChQYXJzZWRVUkxTdHJp
bmcsIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVl
dDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgZmluYWxVUkwpOwogICAgICAgICAgICAgICAgIG1fbG9h
ZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpCit2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVl
dCkKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkgewogICAgICAgICBBU1NFUlQoIW1fc2hlZXQp
OwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzCiB9CiAKICNpZiBF
TkFCTEUoWFNMVCkKLXZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBz
aGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KQog
ewogICAgIEFTU0VSVChtX2lzWFNMKTsKICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVldDo6Y3Jl
YXRlKHRoaXMsIGhyZWYsIGJhc2VVUkwpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gc2hlZXQpCiAgICAgc2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKIH0KIAotdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QK
IHsKICAgICBpZiAoIXNoZWV0KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBkYjI5NDUyMGE5OGRmMzNjMzI4NmE0Y2E0
ODQxMjhkOWQ5OTkzYWFiLi40NzE5Njk5MmNkOWEwOTBlZTMzNmMxZGIzZjhjZTVkYjQ0NGFlZWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC02NCwx
NSArNjQsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdm9pZCBjaGVja1N0eWxlU2hlZXQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtV
UkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVT
aGVldCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqKTsKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNo
ZWV0KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgc2hlZXRMb2FkZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAog
ICAgIHZvaWQgcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggOTAwMjBlYmI1
OTU1NTE0ZTk3NGQzZDkzZDM3YWJjMWQwNzExYzM3NS4uZjc0OGFjOWUwZjk1MDRiOTkzMWU3MmE5
ZTU5ZWU1NzMyMWE4ZDQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y2xvc2VNZXNzYWdlUG9ydHMoKSB7CiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2FuaXRpemVTY3JpcHRFcnJvcihTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50JiBsaW5lTnVt
YmVyLCBpbnQmIGNvbHVtbk51bWJlciwgU3RyaW5nJiBzb3VyY2VVUkwsIENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KQogewotICAgIEtVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVVUkwoc291cmNl
VVJMKTsKKyAgICBVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVVUkwoc291cmNlVVJMKTsKICAgICBp
ZiAoc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh0YXJnZXRVUkwpIHx8IChjYWNoZWRTY3Jp
cHQgJiYgY2FjaGVkU2NyaXB0LT5wYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soc2VjdXJpdHlPcmln
aW4oKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZXJyb3JNZXNzYWdlID0gIlNjcmlw
dCBlcnJvci4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
aW5kZXggYTllOWUzYjliZjdkYjEyYjQ4ODU1MTBmMWZlYjA2YWMzM2ZmNDM2ZC4uMWMzZWNjY2M0
OTAyMTc3NzVlZjc4MzhjNTM1MmU1ZjQ4NmRlMjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAj
aW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
NjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBVUkwmIHVybCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCmluZGV4IDc0ZDNlM2IwMDM3
NWMzOGRiYTJmZmM3MWMwMDk5YWZjNDMxODA4OTUuLmQ4M2ZkZjIyYzdlZjJiYjRmNGMzZDgxOTdj
MjhjNDJiNmNiNGViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+CiAgICAgbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9CiAKLWJvb2wgU2VjdXJpdHlD
b250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29s
IFNlY3VyaXR5Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBpbml0aWFsaXplZCBvdXIgc2VjdXJpdHkgb3Jp
Z2luIGJ5IG5vdywgdGhpcyBpcyBwcm9iYWJseQogICAgIC8vIGEgbmV3IHdpbmRvdyBjcmVhdGVk
IHZpYSB0aGUgQVBJIChpLmUuLCB0aGF0IGxhY2tzIGFuIG9yaWdpbiBhbmQgbGFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCAzMmFlMGRmOTk0MzlmY2Y1ZWQ4NmZjNGY1
ZTgxM2QzYTgyMmVmNzkxLi4yZGI1ZDBkMjk2Mjc2MjE4ODlhY2M3ODE4Nzk2MmVjNjc5NjNkYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBlbnVtIFNhbmRib3hG
bGFnIHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBmb3IgYSBsaXN0IG9mIHRoZSBzYW5kYm94
IGZsYWdzLgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAgICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeS5nZXQoKTsgfQogCi0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhj
b25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBV
UkwmKSBjb25zdDsKIAogICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mg
bWFzayk7CiAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3QgeyBy
ZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKaW5kZXggZTQ1ZmI4MDNhYWViNjdhNmFmMDcwNmJlYjI0YzM5ZTAyMTc0NmVkYy4uOWNj
M2VmODQ0MDYxMDQ5YjU2NmY1OTNhMWY1MjM3NDRmNDhjYjFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6
cmVtb3ZlQWxsSW5saW5lU3R5bGVQcm9wZXJ0aWVzKCkKICAgICBpbmxpbmVTdHlsZUNoYW5nZWQo
KTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewog
ICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGVsZW1lbnREYXRh
KCkgPyBlbGVtZW50RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkKICAgICAgICAgaW5saW5lU3R5
bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIGRvY3VtZW50KCkuZWxlbWVudFNoZWV0
KCkuY29udGVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCAwY2MwYjky
MDU3Y2I3OTVlMDYzYmY2ODY3MzVjODVhYjgxN2ExNzgyLi4xOGM2ZTk5YzZmNzBkYjU5NjM0MDRi
NzMwZDE3YjdlMTY2NTk5NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwg
ZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKICAgICB2b2lkIGFk
ZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0
eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcsIEF0dHJpYnV0ZU1vZGlm
aWNhdGlvblJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZWI2Zjg2NGRh
MjllNmJkMDJhM2Q4MGIyMWMxNjM2OWQxZTQ1Njg5YS4uYTMwNGI5M2M1ZWY3MmIxYWNhNGRhYmZk
M2IzMWQ3NTU5YjU3NzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3NCwx
MiArMTE3NCwxMiBAQCB2b2lkIEVkaXRvcjo6c2ltcGxpZnlNYXJrdXAoTm9kZSogc3RhcnROb2Rl
LCBOb2RlKiBlbmROb2RlKQogICAgIGFwcGx5Q29tbWFuZChTaW1wbGlmeU1hcmt1cENvbW1hbmQ6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE5vZGUsIChlbmROb2RlKSA/IE5vZGVUcmF2ZXJzYWw6
Om5leHQoZW5kTm9kZSkgOiAwKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGNvcHlVUkwodXJsLCB0aXRs
ZSwgKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAotdm9pZCBFZGl0
b3I6OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJv
YXJkJiBwYXN0ZWJvYXJkKQordm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAgICAgUGFzdGVi
b2FyZFVSTCBwYXN0ZWJvYXJkVVJMOwogICAgIHBhc3RlYm9hcmRVUkwudXJsID0gdXJsOwpAQCAt
MTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBL
VVJMIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBVUkwgdXJsID0gcmVzdWx0
LmFic29sdXRlTGlua1VSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwg
PSByZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRl
eCBhYjA5ZWJiYTBmNTA2OTVlZTA5MzEzNTdjYTg2OGJmM2E3ZWJhOTZjLi5iNWFmNzc0MTg2MjQ0
Mzk1OTJjOWRlZTYxMzkwMmVjYTE4YWZiNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KCk7CiAg
ICAgdm9pZCBwZXJmb3JtRGVsZXRlKCk7CiAKLSAgICB2b2lkIGNvcHlVUkwoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgY29weVVSTChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOworICAgIHZvaWQgY29weVVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwogICAgIHZvaWQgY29weUltYWdlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmKTsKIAogICAgIFN0cmluZyByZWFkUGxhaW5UZXh0RnJvbVBhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYpOwotICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
LCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCmluZGV4IDlkZjU5NTI0OTczNWYzY2VkYTdlMDg0MmNjZmM2OTMwMWY3MzBk
MGMuLjVlOGFiZDQ0Nzk0ZTM1ZDYxODZiYjQ0ZThmYWE2ZjI3YTk3ZTYwOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlhM
aW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9lZmwvRWRpdG9yRWZsLmNwcAppbmRleCBmYzc4MWMyYmQ2ZmU2NDMzYTBhMmY0ODk1M2MwNWI3
MzA5NWY3NDQ4Li5mMzUwOWUyYzY3YjMyZmVlMzVlMWFlYTg1MGU4OGEzODNiZTAxOWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
dm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBmZDdmMGFjOWJjYzI4
ODhmNjBjNGJhZTlkZmEzYmI3ZWE1YjhmNmZjLi40NGFiNWJiZTU1Yzk3NDY5YTk0NGU1Y2FiZjk2
MzZjZTMyMThhYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBA
IC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVt
ZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJgogICAgIGNhY2hlZEltYWdl
ID0gdGVudGF0aXZlQ2FjaGVkSW1hZ2U7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVkaXRvcjo6d3JpdGVJbWFn
ZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1l
bnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgUGFzdGVib2FyZElt
YWdlIHBhc3RlYm9hcmRJbWFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IGJmYjZhNDY3OTFhZmU4MTQ2OGNhN2U2ZDY1ZDMwODU0MzU2N2IzY2QuLmRkNDQz
NjM3YzlkNjY4ZDJjZjY4MTAwZjgzNTBjZDBlMGQyYjI4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTM4Niw3ICszODYsNyBAQCBTdHJpbmcgRWRpdG9yOjpw
bGFpblRleHRGcm9tUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQog
ICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0LnRleHQ7CiAKICAgICAvLyBGSVhNRTogSXQncyBub3Qg
Y2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhT
dHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKLSAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFu
ZGxlIHdlbGwgaW4gdGhlIEtVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCisgICAgLy8g
YWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3Jl
YXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCiAgICAgICAgIHN0cmluZyA9IGNs
aWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsK
IApAQCAtMzk0LDcgKzM5NCw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJv
YXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgcmV0dXJuIFsoTlNTdHJp
bmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CiB9CiAK
LXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYg
cGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlOwog
CkBAIC00MzcsNyArNDM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFJURihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEtVUkwoKSwgYnVmZmVyLmdldCgpKTsKKyAg
ICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShVUkwoKSwgYnVmZmVyLmdldCgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNTM1LDEzICs1MzUsMTMgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25z
dAogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwogICAgIFN0cmluZyB0eXBlQXNGaWxl
bmFtZVdpdGhFeHRlbnNpb24gPSB0eXBlOwogICAgIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lv
bi5yZXBsYWNlKCcvJywgJy4nKTsKLSAgICBLVVJMIGltYWdlVVJMID0gS1VSTChLVVJMKCksICJ3
ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsg
dHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKKyAgICBVUkwgaW1hZ2VVUkwgPSBVUkwoVVJM
KCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsg
Jy8nICsgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKIAogICAgIGZyYWdtZW50ID0gZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBpbWFnZVVSTCwgdHlwZSwgZW1wdHlTdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSkpOwogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAotYm9vbCBF
ZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQorYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVybC5zdHJpbmco
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAppbmRleCBkMmZmZjhjN2UyMzdlYmMzMzY5MDQyM2ZiNzE0MTZiYzUwMTA5YTY3Li41MWVm
M2YyZWM5ZWVkMjBiZjc4MDM4MzE2Y2M0MjFiMjZmMTY0NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCkBAIC00OCw3ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJNYXJrdXBBY2N1bXVsYXRvci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdm9pZCBjb21w
bGV0ZVVSTHMoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCkKIHsKICAgICBWZWN0b3I8QXR0cmlidXRlQ2hhbmdlPiBjaGFuZ2VzOwogCi0gICAgS1VSTCBw
YXJzZWRCYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIHBhcnNlZEJh
c2VVUkwoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKIAogICAgIGZvciAoYXV0byBlbGVtZW50
ID0gZWxlbWVudERlc2NlbmRhbnRzKGZyYWdtZW50KS5iZWdpbigpLCBlbmQgPSBlbGVtZW50RGVz
Y2VuZGFudHMoZnJhZ21lbnQpLmVuZCgpOyBlbGVtZW50ICE9IGVuZDsgKytlbGVtZW50KSB7CiAg
ICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQpAQCAtMTA5LDcgKzEwOSw3IEBA
IHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gZWxl
bWVudC0+YXR0cmlidXRlQXQoaSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNVUkxBdHRy
aWJ1dGUoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZSgmKmVsZW1lbnQsIGF0dHJp
YnV0ZS5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmlu
ZygpKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0cmlidXRlQ2hhbmdlKCYq
ZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgVVJMKHBhcnNlZEJhc2VVUkwsIGF0dHJpYnV0ZS52
YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MjMsNyArNzIzLDcg
QEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBX
aXRoQ29udGV4dChEb2N1bWVudCogZG9jdW0KICAgICB0YWdnZWRNYXJrdXAuYXBwZW5kKG1hcmt1
cC5zdWJzdHJpbmcoZnJhZ21lbnRFbmQpKTsKIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiB0YWdnZWRGcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCwgdGFn
Z2VkTWFya3VwLnRvU3RyaW5nKCksIGJhc2VVUkwsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwotICAg
IFJlZlB0cjxEb2N1bWVudD4gdGFnZ2VkRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtV
UkwoKSk7CisgICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWREb2N1bWVudCA9IERvY3VtZW50Ojpj
cmVhdGUoMCwgVVJMKCkpOwogICAgIHRhZ2dlZERvY3VtZW50LT50YWtlQWxsQ2hpbGRyZW5Gcm9t
KHRhZ2dlZEZyYWdtZW50LmdldCgpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBub2RlQmVmb3JlQ29u
dGV4dDsKQEAgLTk1Miw3ICs5NTIsNyBAQCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBS
YW5nZSogcmFuZ2UpCiAgICAgcmV0dXJuIGRvY3VtZW50VHlwZVN0cmluZyhub2RlLT5kb2N1bWVu
dCgpKSArIGNyZWF0ZU1hcmt1cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CiB9
CiAKLVN0cmluZyB1cmxUb01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCitTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7CiAgICAgbWFya3VwLmFwcGVuZCgiPGEg
aHJlZj1cIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggY2ExMjBhNDcyY2U4MmVhZmJk
MzBjZTMyN2Y0YWRiMjA0ZDU0ZDZmZS4uMTU2NWJhMTYyYTQzNGFiZTVkZTgzZTljOGQ5NjdmMTc0
ZmM3MjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBIVE1MRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFJhbmdlOwpAQCAtNzAsNyArNzAsNyBAQCBTdHJpbmcg
Y3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZl
Y3RvcjxOb2RlKj4qID0gMAogU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgTm9kZSopOwog
U3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgUmFuZ2UqKTsKIAotU3RyaW5nIHVybFRvTWFy
a3VwKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK1N0cmluZyB1cmxUb01hcmt1
cChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogU3RyaW5nIGRvY3VtZW50VHlw
ZVN0cmluZyhjb25zdCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKaW5kZXggNjQyNTI2NzBkMmE1OGFiMGEwYzAwMGIyNjlhZDhlMDU3NDAz
Y2MyNS4uYzZiNDhkYWZjMWJlMzU0YzBhNzI0Yjc5ODYyNTIwZTRjNTFlMDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMjAzLDEyICsyMDMsMTIg
QEAgc3RhdGljIHZvaWQgZGlkV3JpdGUoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5dGVz
V3JpdHRlbikKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRXcml0ZShieXRlc1dyaXR0ZW4p
OwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwg
bG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQordm9pZCBBc3luY0ZpbGVTdHJlYW06Ondy
aXRlKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQog
ewogICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywg
JkFzeW5jRmlsZVN0cmVhbTo6d3JpdGVPbkZpbGVUaHJlYWQsIGJsb2JVUkwsIHBvc2l0aW9uLCBs
ZW5ndGgpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNv
bnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKK3ZvaWQg
QXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZChjb25zdCBVUkwmIGJsb2JVUkwsIGxv
bmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNXcml0dGVuID0g
bV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgIGNhbGxPbk1h
aW5UaHJlYWQoZGlkV3JpdGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzV3Jp
dHRlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA2OGYy
M2U5OWMwYWZkZTQ2YjAzMTRiNjhlODY2ZjY1YmM5NjQwMDFjLi44NDllYTJiYzk0NzI0MDVmYjA0
ZDVhNzE2ZDU2OTZhMmM3ZDU4M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
aWxlU3RyZWFtQ2xpZW50OwogY2xhc3MgRmlsZVN0cmVhbTsKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiAKIGNsYXNzIEFzeW5jRmlsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jRmls
ZVN0cmVhbT4gewogcHVibGljOgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBv
cGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAgICAg
dm9pZCByZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCk7Ci0gICAgdm9pZCB3cml0ZShjb25z
dCBLVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpOworICAgIHZv
aWQgd3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5n
dGgpOwogICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKTsKIAogICAgIC8vIFN0
b3BzIHRoZSBwcm94eSBhbmQgc2NoZWR1bGVzIGl0IHRvIGJlIGRlc3RydWN0ZWQuIEFsbCB0aGUg
cGVuZGluZyB0YXNrcyB3aWxsIGJlIGFib3J0ZWQgYW5kIHRoZSBmaWxlIHN0cmVhbSB3aWxsIGJl
IGNsb3NlZC4KQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZW5Gb3JXcml0
ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xvc2VPbkZpbGVU
aHJlYWQoKTsKICAgICB2b2lkIHJlYWRPbkZpbGVUaHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVu
Z3RoKTsKLSAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxv
bmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgdm9pZCB3cml0ZU9uRmlsZVRocmVh
ZChjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAg
ICAgdm9pZCB0cnVuY2F0ZU9uRmlsZVRocmVhZChsb25nIGxvbmcgcG9zaXRpb24pOwogCiAgICAg
UmVmUHRyPEZpbGVTdHJlYW0+IG1fc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXgg
YzAzNzg0ZjQzMDZiYTZkMDZlOTI3MTBiN2FkMzk2YTU5MjY0ZjVlNy4uNDU0NzE4MDdhOGZjMzBh
ZWNlNTlhNTZmZDY0OTY1ZjFmZmI3NWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC01
NCwyMCArNTQsMjAgQEAgZW51bSBTbGljZUhpc3RvZ3JhbUVudW0gewogCiBjbGFzcyBCbG9iVVJM
UmVnaXN0cnkgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBVUkxSZWdpc3RyYWJs
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogCiAgICAgc3RhdGljIFVSTFJl
Z2lzdHJ5JiByZWdpc3RyeSgpOwogfTsKIAogCi12b2lkIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0
ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgcHVibGljVVJMLCBVUkxS
ZWdpc3RyYWJsZSogYmxvYikKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUq
IGJsb2IpCiB7CiAgICAgQVNTRVJUKCZibG9iLT5yZWdpc3RyeSgpID09IHRoaXMpOwogICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChvcmlnaW4sIHB1YmxpY1VSTCwg
c3RhdGljX2Nhc3Q8QmxvYio+KGJsb2IpLT51cmwoKSk7CiB9CiAKLXZvaWQgQmxvYlVSTFJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CkBAIC0xMDAsNyArMTAwLDcgQEAgQmxv
Yjo6QmxvYihQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSwgbG9uZyBsb25nIHNpemUpCiAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkws
IGJsb2JEYXRhKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCitCbG9iOjpCbG9iKGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQogICAgIDogbV90eXBlKEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaAppbmRleCAyMWIzMWI0MTNhY2Y3ZTQ4Y2Y5MjViZTkyZjFiYjUwMmNkZDY0
ZGYxLi4wMzU5ZDQyMzA4ODQ0OGQzM2Q2YTVhNDIxZTRlMjJhMTViMGJmNjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBCbG9iX2gKIAogI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4g
Y3JlYXRlKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcg
c2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgewogICAgICAgICBB
U1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsb2Ioc3JjVVJMLCB0eXBlLCBzaXplKSk7CkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBs
b25nIHNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KG1fc2l6ZSk7IH0KQEAgLTkxLDEyICs5MSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgQmxvYihQYXNz
T3duUHRyPEJsb2JEYXRhPiwgbG9uZyBsb25nIHNpemUpOwogCiAgICAgLy8gRm9yIGRlc2VyaWFs
aXphdGlvbi4KLSAgICBCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBsb25nIGxvbmcgc2l6ZSk7CisgICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFs
IFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpl
Y3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhl
IGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQK
ICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJM
cyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgotICAgIEtVUkwgbV9pbnRlcm5hbFVS
TDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgbG9u
ZyBsb25nIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IDY1OTAwN2Ix
NDk1ZDFiNzc0ZjU2ZGM3OTlmNzc1N2RkNTA3ZDEyMjQuLjNkZWJmMzgzMWY2ZjBiMWIyZjUwZWFk
ZTgwZGE5ZmFiNTVhNjM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VVVJRC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDEsMTggKzQxLDE4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciBCbG9iVVJMOjprQmxvYlByb3Rv
Y29sW10gPSAiYmxvYiI7CiAKLUtVUkwgQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK1VSTCBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEFTU0VSVChzZWN1cml0eU9yaWdp
bik7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkp
OwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKK1VSTCBCbG9iVVJMOjpj
cmVhdGVJbnRlcm5hbFVSTCgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJsb2JpbnRl
cm5hbDovLyIpOwogfQogCi1TdHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjEsNyArNjEsNyBAQCBT
dHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gdXJs
LnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggLSAx
KTsKIH0KIAotU3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjksMTEgKzY5LDExIEBA
IFN0cmluZyBCbG9iVVJMOjpnZXRJZGVudGlmaWVyKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1
cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4KTsKIH0KIAotS1VSTCBCbG9iVVJM
OjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQorVVJMIEJsb2JVUkw6
OmNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAgICAgQVNTRVJU
KCFvcmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gImJsb2I6
IiArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMob3JpZ2luU3RyaW5nKSArICcvJyArIGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKLSAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
Zyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgK
aW5kZXggMmNhZWMyOTU3ZjZiOWZiYWE0MTZjY2YyZTdhNTFkMmJmNWFmZjlmMC4uYzdmYTRmZTc0
NDc2YzNjNjg5ZTYwMDcyZGM3ZWEzYjI1OGZmZmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJM
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQmxvYlVSTF9oCiAjZGVmaW5lIEJsb2JVUkxf
aAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIC8vIGJl
IHVzZWQgd2l0aCBSZXNvdXJjZUhhbmRsZSBvciBGaWxlUmVhZGVyLgogY2xhc3MgQmxvYlVSTCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2lu
Kik7Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBzdGF0aWMgU3Ry
aW5nIGdldE9yaWdpbihjb25zdCBLVVJMJik7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRJZGVudGlm
aWVyKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgVVJMIGNyZWF0ZVB1YmxpY1VSTChTZWN1cml0
eU9yaWdpbiopOworICAgIHN0YXRpYyBVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsKKyAgICBzdGF0
aWMgU3RyaW5nIGdldE9yaWdpbihjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldElk
ZW50aWZpZXIoY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJsb2JQcm90b2Nv
bCgpIHsgcmV0dXJuIGtCbG9iUHJvdG9jb2w7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgS1VS
TCBjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAgICBzdGF0aWMg
VVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyIGtCbG9iUHJvdG9jb2xbXTsKICAgICBCbG9iVVJMKCkgeyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNTRlNWE5MDAxNmE1MDA3YTU3Y2UwOTRjMmVmZTY3MmRk
ZDkyN2ViNi4uNzRiMDFiOGUzZjE4YjA3ODA0NjM0ZjVmZDJjM2IzZmM0NDhiZTJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPEJs
b2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBm
aWxlCiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiBm
aWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIFBhc3NP
d25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChjb25zdCBVUkwm
IGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgT3du
UHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0
YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbVVS
TC5wYXRoKCksIEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHlwZUxvb2t1cFBvbGlj
eSBwb2xpY3kpCiB7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIDogQmxvYih1cmws
IHR5cGUsIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQpA
QCAtMTQyLDcgKzE0Miw3IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBG
aWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEtVUkwmIGZp
bGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCitGaWxlOjpGaWxlKGNv
bnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAg
ICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0ZW1VUkwsIG1l
dGFkYXRhKSwgbWV0YWRhdGEubGVuZ3RoKQogICAgICwgbV9maWxlU3lzdGVtVVJMKGZpbGVTeXN0
ZW1VUkwpCiAgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oCmluZGV4IGFiZTU1NDRlM2QwNDdiODAwMGE5ZWY5NzQ3NTBiOGMxNWM5YmYzZmUuLjVl
YjZmOWNiYmY1N2FlNDkyYzMyMWJmYjNjMTdhMzZkM2Y5NjkxODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGaWxl
TWV0YWRhdGE7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBGaWxlIDogcHVibGlj
IEJsb2IgewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gRm9yIGRlc2VyaWFsaXphdGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIHNyY1VSTCwgdHlwZSkpOwogICAgIH0K
QEAgLTY4LDEyICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RmlsZShuYW1lLCBtZXRhZGF0YSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bGU+IGNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgRmlsZU1l
dGFkYXRhJiBtZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JG
aWxlU3lzdGVtRmlsZShjb25zdCBVUkwmIHVybCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0
YSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZSh1cmwsIG1ldGFkYXRh
KSk7CiAgICAgfQogCi0gICAgS1VSTCBmaWxlU3lzdGVtVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxlU3lzdGVtVVJMOyB9CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGVTeXN0ZW1VUkw7IH0KICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEg
bmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQg
RE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhl
IHBhdGguCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgogICAgIEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBDb250ZW50VHlwZUxvb2t1cFBvbGljeSk7CiAKICAgICAvLyBGb3IgZGVzZXJp
YWxpemF0aW9uLgotICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsK
IAogIyBpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotICAgIEZpbGUoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVS
TCwgY29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBVUkwmIGZpbGVTeXN0ZW1V
UkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
aGFzIGEgdmFsaWQgc25hcHNob3QgbWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hvdFNpemUgPj0gMCku
CiAgICAgYm9vbCBoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Nu
YXBzaG90U2l6ZSA+PSAwOyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9uYW1lOwogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEtVUkwgbV9maWxlU3lz
dGVtVVJMOworICAgIFVSTCBtX2ZpbGVTeXN0ZW1VUkw7CiAKICAgICAvLyBJZiBtX3NuYXBzaG90
U2l6ZSBpcyBuZWdhdGl2ZSAoaW5pdGlhbGl6ZWQgdG8gLTEgYnkgZGVmYXVsdCksIHRoZSBzbmFw
c2hvdCBtZXRhZGF0YSBpcyBpbnZhbGlkIGFuZCB3ZSByZXRyaWV2ZSB0aGUgbGF0ZXN0IG1ldGFk
YXRhIHN5bmNocm9ub3VzbHkgaW4gc2l6ZSgpLCBsYXN0TW9kaWZpZWRUaW1lKCkgYW5kIHNsaWNl
KCkuCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc25hcHNob3QgbWV0YWRhdGEgYXJlIHVzZWQgZGly
ZWN0bHkgaW4gdGhvc2UgbWV0aG9kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKaW5kZXggMjRmMWU3ZjFiZGE4NmEzNDc3NzE4ZjE3MWFmMDcyY2JlYzlmOTUzNS4u
ODBlMTM0M2ZmMTdhMmQ3MmIzMmUxM2IzNDViYjdkYzk0YTk0MDZhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBFTkFC
TEUoQkxPQikKIAogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTEwNiw3
ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIFRleHRFbmNvZGluZyBtX2VuY29kaW5nOwogICAgIFN0
cmluZyBtX2RhdGFUeXBlOwogCi0gICAgS1VSTCBtX3VybEZvclJlYWRpbmc7CisgICAgVVJMIG1f
dXJsRm9yUmVhZGluZzsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAK
ICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTBiZmIyZWUw
ZWFhNzA2NGZjN2YzNzE5MWEzNmI3YmVlM2VlYzZiZS4uMjBkY2RkNzE2MzFiMzEyY2Q4ZWVhMmVl
YTA1OTcyMDE4NDc2OGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC00OSwyNiArNDksMjYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IEJsb2JSZWdpc3RyeUNvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgS1VSTCYgdXJs
LCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKKyAgICBCbG9iUmVnaXN0cnlDb250ZXh0
KGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKICAgICAgICAg
OiB1cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBibG9iRGF0YShibG9iRGF0YSkKICAgICB7CiAg
ICAgICAgIHRoaXMtPmJsb2JEYXRhLT5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwogICAgIH0K
IAotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBz
cmNVUkwpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCiAgICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgICAgICwgc3JjVVJMKHNy
Y1VSTC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29u
c3QgS1VSTCYgdXJsKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEtVUkwgdXJsOwot
ICAgIEtVUkwgc3JjVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIHNyY1VSTDsKICAgICBPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhOwogfTsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9p
ZCByZWdpc3RlckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCiAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29u
dGV4dC0+YmxvYkRhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRh
PiBibG9iRGF0YSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBp
ZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TCh1cmwsIGJsb2JEYXRhKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGcm9tVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJsb2JSZWdpc3RyeUNvbnRleHQt
PnNyY1VSTCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYg
c3JjVVJMKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQog
ewogICAgIC8vIElmIHRoZSBibG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwgYXMgaW4gdGhl
IGNvbnRleHQgd2l0aCB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJMLCBzYXZlIHRo
ZSBtYXBwaW5nIGJldHdlZW4gdXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3JpZ2luIGNhbiBi
ZSByZXRyaXZlZCB3aGVuIGRvaW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAgICBpZiAob3Jp
Z2luICYmIEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTFRhc2sodm9pZCogY29udGV4dCkKICAg
ICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51
cmwpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1
cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkp
OwpAQCAtMTM2LDI2ICsxMzYsMjYgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29u
c3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBv
cmlnaW5NYXAoKS0+Z2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKICNlbHNlCiAKLXZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEJsb2JEYXRhPikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KQogewogfQogCi12b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJikKIHsKIH0KIAot
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJikKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVS
TCYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGY2NmJkMTBjNGViN2IzNTYxYWMzZDUzMDdhZmEw
MjY0YmZiOTU1MTIuLjgzZTU1Y2M3YTdhNTY2YTk2MTBiODdmODI3YWQxZDFjY2NhNmRmMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBA
IC0zNywxOCArMzcsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYkRhdGE7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNz
IFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBLVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiBzcmNVUkwpOwotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFz
c093blB0cjxCbG9iRGF0YT4pOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBzdGF0aWMg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFJldHVybnMgdGhl
IG9yaWdpbiBmb3IgdGhlIGdpdmVuIGJsb2IgVVJMLiBUaGlzIGlzIGJlY2F1c2Ugd2UgYXJlIG5v
dCBhYmxlIHRvIGVtYmVkIHRoZSB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIHRoZSBvcmlnaW4g
b2YgZmlsZSBVUkwKICAgICAvLyBpbiB0aGUgYmxvYiBVUkwuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBVUkwm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKaW5kZXggYzUyOGNhMWU4M2M5OTUyMzI5ZDQ1YzE2YmQ5NmJkZjZmOGVlZTY2
YS4uYjg1MzM4MzViZmFhODliYzYyYmM2MjJiZDQ2NDA1NTZmNzM2YTY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIENhY2hl
ZEZyYW1lOjpjbGVhcigpCiAgICAgbV9kb2N1bWVudCA9IDA7CiAgICAgbV92aWV3ID0gMDsKICAg
ICBtX21vdXNlUHJlc3NOb2RlID0gMDsKLSAgICBtX3VybCA9IEtVUkwoKTsKKyAgICBtX3VybCA9
IFVSTCgpOwogCiAgICAgbV9jYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5jbGVhcigpOwogICAgIG1f
Y2FjaGVkRnJhbWVTY3JpcHREYXRhLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmgKaW5kZXggOTgzOGY3M2M0YmUyMmZmNWY3N2UzNGUxZTYyYjQ2ZDM2NzUyNTk1Mi4uMzg2
NGNhNDcyYmJjNzc4MDFjNGNiOGIzODIwNDE4ZGVlMDQ0ZjM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBDYWNoZWRGcmFtZV9o
CiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXcuZ2V0KCk7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBib29s
IGlzTWFpbkZyYW1lKCkgeyByZXR1cm4gbV9pc01haW5GcmFtZTsgfQogCiBwcm90ZWN0ZWQ6CkBA
IC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1f
ZG9jdW1lbnRMb2FkZXI7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV92aWV3OwogICAgIFJlZlB0
cjxOb2RlPiBtX21vdXNlUHJlc3NOb2RlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJs
OwogICAgIE93blB0cjxTY3JpcHRDYWNoZWRGcmFtZURhdGE+IG1fY2FjaGVkRnJhbWVTY3JpcHRE
YXRhOwogICAgIE93blB0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4gbV9jYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YTsKICAgICBib29sIG1faXNNYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwCmluZGV4IDFjYjU2YmZjNTJlOWZiMDcwNmM3MDJhYmNjNzczYmY5MjE2
MjE4ZDkuLmI0ZjA1ZGYyOWVhZjc2NDQ2Y2M0OThiNjExYTljMzYyZmQwMjE0MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSGlzdG9y
eUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHIKICAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29uRm9yUGFnZVVS
TChtX3VybFN0cmluZyk7CiB9CiAKLUhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKK0hpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygpKQogICAgICwgbV9vcmlnaW5h
bFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQpCkBAIC0yNDAs
MTQgKzI0MCwxNCBAQCBkb3VibGUgSGlzdG9yeUl0ZW06Omxhc3RWaXNpdGVkVGltZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbGFzdFZpc2l0ZWRUaW1lOwogfQogCi1LVVJMIEhpc3RvcnlJdGVtOjp1
cmwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAogewotICAgIHJldHVybiBL
VVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CiB9CiAKLUtVUkwgSGlzdG9yeUl0ZW06Om9yaWdpbmFs
VVJMKCkgY29uc3QKK1VSTCBIaXN0b3J5SXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAogewotICAg
IHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmluZyk7CisgICAg
cmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fb3JpZ2luYWxVUkxTdHJpbmcpOwogfQogCiBj
b25zdCBTdHJpbmcmIEhpc3RvcnlJdGVtOjpyZWZlcnJlcigpIGNvbnN0CkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQogICAgIG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBIaXN0
b3J5SXRlbTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldFVS
TChjb25zdCBVUkwmIHVybCkKIHsKICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKHRoaXMpOwogICAg
IHNldFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCmluZGV4IDU3M2MxYjE2YjQ3OGM2YjVjYmMwNzg4MjRkOGNmNWEyMmYxZTE3NTEuLjBjMzQ4
ODE3MzM5MDdjMmM4NjkyOTc5NmU2YmNkZGMyOGMwZTQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b3JtRGF0YTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0odXJs
U3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUsIGxhc3RWaXNpdGVkKSk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25z
dCBTdHJpbmcmIHRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0
b3J5SXRlbSh1cmwsIHRhcmdldCwgcGFyZW50LCB0aXRsZSkpOwogICAgIH0KQEAgLTEwOSw4ICsx
MDksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSgpIGNvbnN0
OwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgcGFyZW50KCkgY29uc3Q7Ci0gICAgS1VSTCB1cmwo
KSBjb25zdDsKLSAgICBLVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNv
bnN0OworICAgIFVSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0OwogICAgIGJv
b2wgaXNUYXJnZXRJdGVtKCkgY29uc3Q7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RG9jdW1lbnRTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQg
Y2xlYXJEb2N1bWVudFN0YXRlKCk7CiAKLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJik7Cisg
ICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzZXRVUkxTdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRPcmlnaW5hbFVSTFN0cmluZyhjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHNldFJlZmVycmVyKGNvbnN0IFN0cmluZyYpOwpAQCAtMjIyLDcgKzIyMiw3IEBA
IHByaXZhdGU6CiAgICAgSGlzdG9yeUl0ZW0oKTsKICAgICBIaXN0b3J5SXRlbShjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGxhc3RWaXNpdGVkKTsK
ICAgICBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwgZG91YmxlIGxhc3RWaXNpdGVkKTsK
LSAgICBIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgSGlzdG9y
eUl0ZW0oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJp
bmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBleHBsaWNpdCBIaXN0b3J5
SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKaW5kZXggYzcxNjRjZjYyNzZlZmUzMzhlNGM0ZmNjMzJlYzYzZjlkODIyMTI1Yi4uMzEwNjFm
YjVhODMyYmQxYjM0MWQ2MzQ0ODhlZDkwOWVjNDU2NzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcApAQCAtOTUsOCArOTUsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9nQ2FuQ2Fj
aGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQogICAgICAgICBy
ZXR1cm4gMSA8PCBOb0RvY3VtZW50TG9hZGVyOwogICAgIH0KIAotICAgIEtVUkwgY3VycmVudFVS
TCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKTsKLSAgICBLVVJMIG5l
d1VSTCA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgPyBmcmFt
ZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsK
KyAgICBVUkwgY3VycmVudFVSTCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKTsKKyAgICBVUkwgbmV3VVJMID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkt
PnVybCgpIDogVVJMKCk7CiAgICAgaWYgKCFuZXdVUkwuaXNFbXB0eSgpKQogICAgICAgICBQQ0xP
RygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9tICgi
LCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToiKTsK
ICAgICBlbHNlCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdl
RGVjaXNpb24oUGFnZSogcGFnZSkKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWlu
IGZyYW1lcyB0aGF0IGhhdmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAgICAg
aWYgKHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIGN1cnJlbnRV
UkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID8gcGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkgOiBLVVJMKCk7Cisg
ICAgVVJMIGN1cnJlbnRVUkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpID8gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJs
KCkgOiBVUkwoKTsKICAgICBpZiAoY3VycmVudFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhZTM2OTM4MjRiM2U5NTgxZjI0MTQw
YjVjODE5ZTJkM2QyOTdlNzNiLi5hYzllNzQxZGI5MjBlZjY0NDI3N2RjMGM3YjExMWZkOGMwZmNj
NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCCiAK
IFN0cmluZyBET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCiB7Ci0g
ICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgVVJMIHB1YmxpY1VSTCA9IEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uCiAgICAgaWYg
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVy
bChLVVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAppbmRl
eCBiMzU4MjYzMjQwODQyNDA2ZWU4NTkwOGVjMDVhNmVlYmQ0MDYwMDgyLi43ZDIxNGQxY2I5ZWU2
NGVkNDVkNDQyYjg0ZjBlMmJhZmU0ZmEwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNWJhYTRj
OGQ0OGQ2MDkwOWZiOGViMDcxYjUxN2U4MzQwZmViNTI1ZS4uOTQyMTM3MTcyNzlmYTFhYzU0MTky
M2Y3NzU0MTZhYWEzMjk3MDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjpmaW5pc2goKQogICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCk7CiB9
CiAKLUZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50
KGZyYW1lLCB1cmwpCiB7CiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5oCmluZGV4IGU3ZTUyZjdhNzI0YjExM2EwMjAzOGI3NDMyZTU2
NTk3YmQ0NzFmZjkuLjBkOTEwMTRhMjFiZmUyZTY3Yjg1NmFmYzdhYzViYWViMjgwNzY1ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKQEAgLTMzLDEzICsz
MywxMyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKICAgICAKIGNsYXNzIEZUUERpcmVjdG9y
eURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJM
Jik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOwogfTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggMjRhMzczODBjNTk5
YzVkZTIyZDY5Mzc1OTRiNDQzNjUwZTMyMTZhOS4uZTIxNWNmYjBmYjQzNDFiOWQ0MTY4NTJhOWVj
YjdmNjdhMjM2MzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAg
LTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkRm9ybVN0cnVjdHVyZShj
b25zdCBIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ0J1aWxkZQogCiBzdGF0aWMgaW5saW5l
IFN0cmluZyBmb3JtU2lnbmF0dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSkKIHsKLSAg
ICBLVVJMIGFjdGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0dHIpOworICAg
IFVSTCBhY3Rpb25VUkwgPSBmb3JtLmdldFVSTEF0dHJpYnV0ZShhY3Rpb25BdHRyKTsKICAgICAv
LyBSZW1vdmUgdGhlIHF1ZXJ5IHBhcnQgYmVjYXVzZSBpdCBtaWdodCBjb250YWluIHZvbGF0aWxl
IHBhcmFtZXRlcnMgc3VjaAogICAgIC8vIGFzIGEgc2Vzc2lvbiBrZXkuCiAgICAgYWN0aW9uVVJM
LnNldFF1ZXJ5KFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKaW5kZXggNzg0YmIwZWUwODI0MDhjMWFlNTFhNzYyN2RjZDBhOTBjMGI4ZmZjNy4uMTlk
NjVkNjUwNjMyOTU1NzY2MDU1ZmEzMzk4YWE1ZmM3N2UxMjQyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIEhUTUxB
bmNob3JFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUo
aHJlZkF0dHIpOwogfQogCi1LVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKK1VS
TCBIVE1MQW5jaG9yRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50
KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJp
YnV0ZShocmVmQXR0cikpKTsKIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgSFRNTEFuY2hv
ckVsZW1lbnQ6Omhhc2goKSBjb25zdAogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNo
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJM
IHVybCA9IGhyZWYoKTsKICAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQogICAgICAgICB1cmwuc2V0
RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CiAgICAgZWxzZQpAQCAtMzUx
LDcgKzM1MSw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIAogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkgY29uc3QKIHsKLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBocmVmKCk7
CiAgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBhdGhTdGFydCgpKQogICAgICAgICByZXR1
cm4gdXJsLmhvc3QoKTsKICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0
KCksIHVybC5wcm90b2NvbCgpKSkKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVS
TCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50Ojpz
ZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChpID09IGhvc3RMZW5ndGgp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwg
PSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTQyMyw3ICs0MjMsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBhdGhu
YW1lKCkgY29uc3QKIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0g
aHJlZigpOwogICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDQ1LDcgKzQ0NSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cG9ydCgpIGNv
bnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwogICAg
IGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00Njgs
NyArNDY4LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwcm90b2NvbCgpIGNvbnN0CiAK
IHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICB1
cmwuc2V0UHJvdG9jb2wodmFsdWUpOwogICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKIH0KQEAg
LTQ4Nyw3ICs0ODcsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Om9yaWdpbigpIGNvbnN0
CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAg
U3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEp
IDogdmFsdWU7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5v
dCBsZWFrIHRvIHRoZSBoYXNoLgogICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZVdp
dGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCBib29sIEhUTUxBbmNo
b3JFbGVtZW50Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICByZXR1cm4gaXNMaW5rKCkgJiYgdHJl
YXRMaW5rQXNMaXZlRm9yRXZlbnRUeXBlKG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURvd24gPyBN
b3VzZUV2ZW50V2l0aFNoaWZ0S2V5IDogTW91c2VFdmVudFdpdGhvdXRTaGlmdEtleSk7CiB9CiAK
LXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBLVVJMJiBkZXN0aW5hdGlv
blVSTCkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3Rp
bmF0aW9uVVJMKQogewogICAgIGlmICghaGFzQXR0cmlidXRlKHBpbmdBdHRyKSB8fCAhZG9jdW1l
bnQoKS5zZXR0aW5ncygpIHx8ICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQqIGV2ZW50KQogICAgIFN0cmluZ0J1
aWxkZXIgdXJsOwogICAgIHVybC5hcHBlbmQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGZhc3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKSk7CiAgICAgYXBwZW5kU2VydmVyTWFwTW91
c2VQb3NpdGlvbih1cmwsIGV2ZW50KTsKLSAgICBLVVJMIGt1cmwgPSBkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHVybC50b1N0cmluZygpKTsKKyAgICBVUkwga3VybCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwodXJsLnRvU3RyaW5nKCkpOwogCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkK
ICAgICBpZiAoaGFzQXR0cmlidXRlKGRvd25sb2FkQXR0cikpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBmODJmNDBmMjc2NTg4MDZkZGRlOTI5NTVlNTcxZGY3
ZWQ5Y2IzYjVkLi5mNmI3OTkxN2JmMGNjMjIzZDczNTk5NjFiMzQzYzU0YjQwNDZhZjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkhUTUxBbmNob3JFbGVtZW50KCk7CiAKLSAgICBLVVJMIGhy
ZWYoKSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJlZihjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzaG9ydCB0YWJJbmRl
eCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBj
b25zdDsKIAotICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsK
KyAgICB2b2lkIHNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIAogICAgIHZv
aWQgaGFuZGxlQ2xpY2soRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuY3BwCmluZGV4IDFmYzhkNjM0MmVkYTBkZWNmOTMxNDQ0YzkxOTQxZWFlYmJiNmU0NjcuLjg0
MmI3MDBlYTFhZGU1ZWNmNTlmOTJkMjc4OWY5NDM2NWI0OWRlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU3RyaW5nIEhUTUxCYXNl
RWxlbWVudDo6dGFyZ2V0KCkgY29uc3QKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0YXJn
ZXRBdHRyKTsKIH0KIAotS1VSTCBIVE1MQmFzZUVsZW1lbnQ6OmhyZWYoKSBjb25zdAorVVJMIEhU
TUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkb2VzIG5vdCB1c2Ug
dGhlIGdldFVSTEF0dHJpYnV0ZSBmdW5jdGlvbiBiZWNhdXNlIHRoYXQgd2lsbCByZXNvbHZlIHJl
bGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJMOwogICAgIC8vIGJhc2UgZWxlbWVudHMg
bGlrZSB0aGlzIG9uZSBjYW4gYmUgdXNlZCB0byBzZXQgdGhhdCBiYXNlIFVSTC4gVGh1cyB3ZSBu
ZWVkIHRvIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3MKQEAgLTg3LDEyICs4Nywx
MiBAQCBLVVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgaWYgKGF0dHJpYnV0
ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS51cmwoKTsKIAotICAg
IEtVUkwgdXJsID0gIWRvY3VtZW50KCkuZGVjb2RlcigpID8KLSAgICAgICAgS1VSTChkb2N1bWVu
dCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFs
dWUpKSA6Ci0gICAgICAgIEtVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9jdW1lbnQoKS5kZWNvZGVyKCktPmVu
Y29kaW5nKCkpOworICAgIFVSTCB1cmwgPSAhZG9jdW1lbnQoKS5kZWNvZGVyKCkgPworICAgICAg
ICBVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGF0dHJpYnV0ZVZhbHVlKSkgOgorICAgICAgICBVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9jdW1lbnQoKS5k
ZWNvZGVyKCktPmVuY29kaW5nKCkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICByZXR1cm4gdXJs
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKaW5kZXggYmM2M2Q0ZjNlM2Rh
NmIyMDliMDhmMzY5NmVkYTRjODM1OTc3MzVhNi4uMGNkZTlmMDc1MTcxZDk1MjJlZWZlMzU0ZGNi
NDUwNTg1Y2E4YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIEhUTUxCYXNlRWxlbWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBLVVJMIGhyZWYo
KSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJlZihjb25zdCBB
dG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcAppbmRleCAzOWNiMDdiNmYwOTc4MDM5YTI3ZDNhNzEyZWFhOTk5NjE2MTViNmI4Li4y
ZjNlYWE0OTU3NTcyNDU0M2U2N2Y4NDM2M2QzMzNhNTJkMjkyMzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgaW50IEhUTUxCb2R5
RWxlbWVudDo6c2Nyb2xsV2lkdGgoKQogICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmNv
bnRlbnRzV2lkdGgoKSwgKmZyYW1lKTsKIH0KIAotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTEJvZHlFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaApp
bmRleCA4MzBmOTE2YWJhNzdlYmY0ODBiNWNhMzQ2NmE3ODY3MmM4OGMyYTdiLi5iZWE0MjMyMzJi
N2NiYTkyZGY2ZWZmNmRlYzkxZDQ2ODQ4ZTM3ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCBz
Y3JvbGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwZWYxM2MyYmJmYjcyZTBlMmY4ZDZh
NTNiZDZkMjRiYzA5Li4zMzhmNDZmMTdmYmU3MzQyMWNhZjlhN2UzYmMyMTNjMDc5ZjZlZTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAjaW5j
bHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50
OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFz
c2VzKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaAppbmRleCAyNWM0YjU4YjU4NTExNWY3YjUzOWQ2NTU0MzRiYzUxNGU3OGE3ZGY4
Li4wNDc5YmQ1ZjhmMjZhMDg5MjRmZTJjYmE1NDU3Zjg4ZDE4ZjM2ODc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1
cmwpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3VtZW50Q2xhc3NG
bGFncyA9IDApOworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50
Q2xhc3NGbGFncyA9IDApOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzU0
N2U0NjlhN2I2Y2ZhMjViMWVkM2NlNzY5YTdiYjQ1NGQyYWE5Mi4uZWY2M2FlMGFlY2FiYWQ3MWJj
ZWNiNzI5ZGZhMTRhNjYzNjBhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1i
ZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0
ZShzcmNBdHRyKTsKIH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAppbmRleCAyZTk5ZTJjMDllNGQyMTg2ZDcyNWJjZDBiMDliZGQ2Yjg3NjYyNmMwLi43Zjg2NTY2
MmUzYmIyMjFmY2RmMmQ5ZTlhNmI4YzA3YWI4NDE1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2b2lkIHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCAzMDAx
OTJkZjE4MTk4YTE1ODhhMDdiZTg2NzE0ZTU0OWY1MWY0NTJiLi5iODFhYWQwMjNkZDM0NWUwYzRh
ZmUxNjlmY2FhNDFlZDNjZTNhNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
QEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2Vk
KCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCht
X1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVV
UkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSkg
eyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0aGlzLT5jb250ZW50RG9jdW1lbnQo
KTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmRpZEF0
dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjps
b2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmxvY2F0aW9uKCkgY29u
c3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNkb2NBdHRyKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CisgICAgICAgIHJldHVy
biBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDMxYTU0ZjcxNWI5NjBiZWNk
ZTQ5ODIyNTY1YWM0MDhhYjAyNmU4MjkuLjIzMDMzYWFiODBlMGYwMmQzNjAxZTBmYmQzOGQxYzAx
MDExNjAwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRnJhbWVF
bGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewogcHVibGljOgotICAg
IEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJN
b2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5OGI0ODg0NGFmYjhh
Y2Y5MjU4Njk5OTg3ZDcyMzIxYzk3My4uMjVmNTE2NmY2ZjMwMDE2ZTcyZTg2OWU2MGM5MTdlNDc3
OTUzMDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0z
MDksNyArMzA5LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZhbHVl
KQogICAgIHNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOwog
fQogCi1LVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTEltYWdlRWxl
bWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChn
ZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgSFRNTElt
YWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmlt
YWdlQ29tcGxldGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXgg
NzQ3OGNlNDc0MDk2ZDYxM2ZjYjUyNDBkYTMzZDA5MDA5Yzk0MTQzMi4uN2ZjN2M0Mjc4MzkwOTg5
NjFhNmU3MzA2NzQxYTQ2NGNkYzdhOWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIZWlnaHQo
aW50KTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwpA
QCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxl
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
NTRkOTFmMDNhZmU0ZTkzNzQ3Y2QxMDcyYThhMzdhYzRlZGI5YzZkMC4uZjVmZTAzNGEzMWZmYWFm
NjgwMzQwNDY4Zjk1ZjNjZDJhZWRkMjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFNpemUodW5zaWduZWQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldFNp
emUoc2l6ZSk7CiB9CiAKLUtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBI
VE1MSW5wdXRFbGVtZW50OjpzcmMoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMTU3MCw3ICsxNTcw
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCogb2xkRG9jdW1lbnQpCiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0
Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZGE4ZThlNTAwZGY0ODc2M2Y3YjkwZGY5N2U3MDk1
NDU0MjlmMTQwNy4uOWEzMGQxZmQxYjQyNTgxNTg5ZWFkYzBmNTZkODJmYjAwOTMxNmU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBJY29u
OwogY2xhc3MgSW5wdXRUeXBlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
OwogCkBAIC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZSh1bnNpZ25l
ZCk7CiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBL
VVJMIHNyYygpIGNvbnN0OworICAgIFVSTCBzcmMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50
IG1heExlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9u
Q29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRv
Y3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxs
YmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGIzMzk4Njg3N2Rk
MDc3MWJjYWJhNzllYjNkMDllM2E2OWE4ZWFiZTYuLmM5MDhkYTNiNDQxYTI5ZDBiNDVlMmMyZmNj
NzVmZDVkMTllZTVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAg
fQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKLSAgICBLVVJMIHVybCA9IGdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBVUkwgdXJsID0gZ2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAgaWYgKCFtX2xpbmtMb2FkZXIubG9hZExp
bmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMtPnRvU3RyaW5nKCksIHVybCwgJmRvY3Vt
ZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVkU3R5bGVTaGVl
dCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFpbkRvY3Vt
ZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0KTsKQEAgLTM5NSw3ICszOTUsNyBAQCBi
b29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0g
aHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAK
LUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKK1VSTCBIVE1MTGlua0VsZW1lbnQ6
OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0
dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcgKzQyNSw3IEBAIFN0cmluZyBIVE1MTGlu
a0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZXMtPnRvU3RyaW5n
KCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxMaW5rRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0
CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMGJhMzUwZjE0MDM1OGY5
MWRjMzZlZjkyMjUyNTQ5NTZhNTRkZTkxNC4uZGNjMDgzODRhMjgwZjljZTM0MzQ0ZjhlZDA3ZTJi
ODJiYjE1ODEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV2
ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+IExpbmtFdmVu
dFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTGlua0VsZW1lbnQoKTsK
IAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7CkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKICAgICB2aXJ0dWFsIGJv
b2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRB
bGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2
YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNTlhMjllNGVm
ZTQ3YmU5NDE2OThjZjNhNWNmOWQ0ZDBjYmVlYjA3Li41OWFjNjAxOTZiODI0M2I1NWQwYzQzYzg2
ZGM0ZDAwOTkwMzIxZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVuc2lnbmVkJiB2
YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGlj
IFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmlu
ZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBAIC03NDAsNyAr
NzQwLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6
Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOwogfQogCi1T
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmlu
ZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShDb250ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsKICAgICBTdHJp
bmcgY2FuUGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3Jj
QXR0cjsKIAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRoZSBl
bXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cKLSAgICAg
ICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAg
ICAgICBVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAg
ICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3JjJyIpOwpA
QCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VD
aGlsZCgpCiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygpKSk7CiAgICAg
U3RyaW5nIGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4dFNvdXJjZUNo
aWxkKCZjb250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVSTCBtZWRpYVVS
TCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0ZW0sIENvbXBs
YWluKTsKICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3YWl0Rm9yU291
cmNlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAsMTggQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBsb2FkUmVzb3Vy
Y2UobWVkaWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0aWMgS1VSTCBj
cmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3N0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBhIGZ1bmN0aW9u
IHRvIGNyZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBUaGlzIGZ1bmN0
aW9uCi0gICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0aCB1c2VzIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAgLy8gVVJMIHNo
b3VsZCBoYXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRoLCBidXQgaXQg
ZG9lcyBub3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSBV
Ukw6OnNldFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3aGljaCBpdCBu
b3RlcwogICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAnPycuIFRoaXMg
ZnVuY3Rpb24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8gYXBwIGNhY2hl
IG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZpbGVOYW1lKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJ
TikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdp
bmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOworICAg
IFVSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJs
OwogCiAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKICAgICB1cmwu
c2V0UGF0aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZp
bGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IHJldHVybiB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
dCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFsVVJMLCBD
b21wbGFpbikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVu
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0aWFsVVJMOwor
ICAgIFVSTCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1MjcsNyArMTUy
Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFj
ayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rp
b24gYWN0aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRV
UkwoY29uc3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewog
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFs
aWQiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE5ODMsNyAr
MTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRp
YVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2ZW50UXVldWUu
ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNz
YWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJMKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVSTCYg
ZGVmYXVsdFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsKICAgICBp
bml0aWFsaXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMxODksNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50
KiB0cmFja0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRyYWNrRWxlbWVu
dC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1l
bnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBVUkwgdXJsID0g
dHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAnc3JjJyBpcyAl
cyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRp
ZgpAQCAtMzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZlUG90ZW50
aWFsU291cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3VycmVudFNv
dXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9k
ZSA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRVUkwgPSBzZWxl
Y3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4dFVSTCA9IHNl
bGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9jdXJyZW50U291
cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lk
ZXIgPSBuZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVSTC5pc1ZhbGlk
KCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENv
bnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rp
b24gYWN0aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3Vy
Y2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lzdGVtLCBJbnZh
bGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
Ly8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJl
IGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICszNDQ2LDEwIEBA
IEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBl
KiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQg
LT4gMHgwMDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7CisgICAgVVJMIG1l
ZGlhVVJMOwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAgIFN0cmluZyB0
eXBlOwogICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBjaGVja19hZ2Fp
bjoKICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50U291cmNlTm9k
ZS5nZXQoKSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRpYShtZWRpYVVS
TCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5Vc2VTb3VyY2VF
bGVtZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNvdXJjZUVsZW1l
bnQgPyBtZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcgKzM1NTIsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50
KiBzb3VyY2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFt
ZShzb3VyY2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEo
dXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyArMzYwMCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNlRWxlbWVu
dCogc291cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhhc1RhZ05h
bWUoc291cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UtPmdldE5vbkVt
cHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVk
aWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEsNyArNDMxMSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRpYVBs
YXllclByb3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94eShwcm94
eSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMoS1VS
TCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYgdXJsLCBWZWN0
b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAgICAgUmVmPEhU
TUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291cmNlQ2hpbGQg
bWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KIApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQ
bHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKIAog
ICAgIGlmIChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSB0
b0hUTUxWaWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0gdmlkZW8t
PnBvc3RlckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVy
SW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYm
IGZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwpKSB7CiAg
ICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9wb3N0
ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkpOwpA
QCAtNDM1NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBs
YXllclByb3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhUGxheWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgVmVj
dG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsK
IApAQCAtNDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRn
ZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsK
ICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTogUmVuYW1lIGt1
cmwgdG8gc29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOworICAgIFVSTCBr
dXJsOwogCiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9jdW1lbnQoKS5m
cmFtZSgpIGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGNm
NmU4OTY2MzMyMzA1YWJkN2UyNDI3Yjg2NTk0NWYzMjJkMDhjMjkuLmQ1NWMwNDE2YTUzZjg2MDMw
YWUyYjBmZDA2NmZmYjUwZjA3OGUwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVHJh
Y2tFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhQ29udHJvbGxl
cjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAtMTM4LDcgKzEz
OCw3IEBAIHB1YmxpYzoKIAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0U3JjKGNvbnN0
IFN0cmluZyYpOwotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRTcmM7IH0KKyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRTcmM7IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBU
WSwgTkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAg
ICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsK
ICAgICB2b2lkIGxvYWQoKTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29uc3QgS1VSTCYg
PSBLVVJMKCkpIGNvbnN0OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0g
VVJMKCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OwpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRX
aWRnZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9
IG5lZWRXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQ
bGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1l
ZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAgIHZvaWQgZ2V0
UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3Rv
cjxTdHJpbmc+JiB2YWx1ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1
cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAg
dm9pZCBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1
Z2luQ3JlYXRpb25PcHRpb24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWlu
IH07Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVUkxBY3Rp
b24pOworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFsaWRVUkxBY3Rp
b24pOwogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5z
aWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5z
aWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWdu
ZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZh
dWx0VVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
TWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxl
bmd0aCkgT1ZFUlJJREU7CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgLy8gbG9hZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotICAg
IHZvaWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50
VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVkdWxlTmV4dFNv
dXJjZUNoaWxkKCk7CiAgICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCB1
c2VyQ2FuY2VsbGVkTG9hZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAg
ICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmluZyoga2V5U3lz
dGVtLCBJbnZhbGlkVVJMQWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENv
bnRlbnRUeXBlKiwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAg
dm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKQEAg
LTYzNCw3ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0
ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlT
dGF0ZU1heGltdW07Ci0gICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1fY3VycmVudFNy
YzsKIAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGIzYzA0N2FiNGVkMjgyMGU5YzEyNzM1ZWYy
MTMyNTdmOWVkOGM3ODQuLjJmZDM4YmM0NzJhZjllYmU0ZGQ3N2JhMTRiNTY1NjEyYmQwNzc2ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oCmluZGV4IDQ0MTUzNTU1MTA0NWJkMThlNjg5OTQyMGQ1ZmY2ZmEzMzkz
MDFlN2EuLmNjZTNmYmYwMDhiNWQwMGZlYWMwNWRmN2ZkMzY3MmEzMDlmMzYyMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdz
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKICAgICB2b2lkIHVwZGF0
ZURvY05hbWVkSXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFy
YW1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAK
aW5kZXggNjk4YmExMjhhMDE3NTljY2YxYzU1N2E5NTcwYTQxZDVmMzVkYjI3Yy4uZDEwZjQ2MmVk
ZDkxZmU2ZGM3NGFmMzY4MzQxNmMzZDYzNjE0NTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgSFRNTFBhcmFtRWxlbWVu
dDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAg
cmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi12b2lk
IEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFBhcmFtRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRN
TEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRleCBlNjJmODRhMWFmY2Y3Y2VlNjY1NTQ5MGE3
YjFiYzljMTBmYmY3NDNiLi4zMmM2MzllMGU5ZWUwNWU5ZDY3ODNiYTNhYTdjYzVhNjg5ZWU1YTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaApAQCAtNDAsNyArNDAsNyBA
QCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogfTsK
IAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0Y2FmNGM5NWE1NmI0MmZl
NjQ4YjUzMDc4ZTRkODNiZWVhNGY3ZDdkLi5hNmZkYzg2YzZkMmExYWQwYjljNDhmZmIwMzg3YmMw
ZTBkYzcwMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmlzSW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFV
UkwobV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkg
ewotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwobV91
cmwpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCht
X3VybCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub2JqZWN0Q29u
dGVudFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAgLTE3MCw3ICsx
NzAsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKIC8vIGRl
cGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIEtVUkwgY29t
cGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRl
VVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNvbnRlbnRGcmFt
ZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAgICAmJiAhZG9j
dW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFTU0VSVChkb2N1
bWVudCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0
ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGF0aWMg
dm9pZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVs
ZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAgaWYgKHBsdWdJ
bkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9hZGVkVVJMID0g
cGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBV
UkwmIGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRl
ZE1pbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9PSBsb2FkZWRV
UkwuaG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAgICAgICAgICAg
ICAgIHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01NzEsNyArNTcx
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFw
c2hvdHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJlZ2luU25hcHNo
b3R0aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25z
dCBVUkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJMOiAlcyIsIHRo
aXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAgQWN0dWFsIFVS
TDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWNmMzkzZGYxZDQ3OTU3YjBl
ZWExNWYxMzEwZjQ0MGUxNTkuLjcxYmEwNTk2ZGE2NmQwOWYzM2RlZWFlOGEwMDk3NTM5YmZhYjAy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2FkZWRVcmwoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5nIGxvYWRlZE1p
bWVUeXBlKCkgY29uc3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBVUkwgbWlnaHQg
bm90IGJlIHRoZSBzYW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0ZXJzLgotICAg
IHZvaWQgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHBsdWdJblVS
TCk7CisgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiBw
bHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3Qg
V2lkZ2V0Kik7CiAKICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRNTEltYWdlTG9h
ZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwogICAgIFN0cmlu
ZyBtX3VybDsKLSAgICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRlZFVybDsKIAog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNpZ25lZCA9IDAp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRlMmRmMTkwZTlm
MDg2NzcwNzk1NjcwNTFlMTk2ZWRhZTQ2Yi4uNjYxZTM4MjI0ODhmNmI0NjVlNDdmYTA3OWFhM2U1
YWIwNzQ1MzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAK
QEAgLTEwNSwxMiArMTA1LDEyIEBAIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmFzeW5jKCkgY29u
c3QKICAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShhc3luY0F0dHIpIHx8IGZvcmNlQXN5bmMo
KTsKIH0KIAotS1VSTCBIVE1MU2NyaXB0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBIVE1MU2Ny
aXB0RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpKTsKIH0KIAotdm9pZCBIVE1MU2NyaXB0RWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCmluZGV4IGFlNWNhMWJiM2VjYjM4NjI2NTQ0M2IxMmRhNmYyNTFiYWRhNGVh
MGIuLjY3MjI4ZjhhZjZhMjBkYWRjZTllMzQyNGQ2MjA5Njg1YzlmZDRhMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgpOyB9CiAgICAg
dm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgS1VSTCBzcmMoKSBjb25zdDsKKyAg
ICBVUkwgc3JjKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEFzeW5jKGJvb2wpOwogICAgIGJvb2wg
YXN5bmMoKSBjb25zdDsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cAppbmRleCAxODI4NGM4ZmE3MDhlYWY2M2RmNmM5MzI0ODhjOTI0MDE1ZGQ2YmY2Li5hOThiZjE0
ODk5OTU3NjNlZjg1NzFlNzA0ZTAwZmRiYWFhNTY5YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEhUTUxTdHlsZUVs
ZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBl
cnJvck9jYwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMp
IGNvbnN0Cit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogeyAgICAKICAgICBIVE1MRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5oCmluZGV4IDhmOTQzODhjYmFhZDFhOTIyMDc3NWJkNTMyODA3MjkzMDY2
MjFlZmEuLmZiYTBhMDNhMjk3MTc2Y2NjZWNlYzQyNzg0ODIwZTU5NTI5YzUyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNv
dXJjZXMoYm9vbCBlcnJvck9jY3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hl
ZXQoZG9jdW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogI2lm
IEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgdm9pZCBzY29wZWRBdHRyaWJ1dGVDaGFuZ2VkKGJv
b2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRl
eCA3ZmIyZGFlYzMzZDViZjZjM2NkNzBkNDQxOTAxMWY3YzllMDQ1MmEyLi5mMzU3MjYwNjA4MThk
NWYzM2UyOWIxZTU5OGRkNzNhOTMxNTgyNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFN0cmluZyBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6c2NvcGUoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc2Nv
cGVBdHRyKTsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCmluZGV4IDk4MjcwZTNjNTRkZjFmOGI5MDE5YmU4NWUwY2NhMzUzZmY4ZjIy
MTguLmZlMDE2NzZlMjdlYjRlYzdiNDk0MDE5ZTFkMGNlN2IxMDBlMWE0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAK
IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KE5vZGUqIG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYTAyOWI1MDgz
YzUzM2IzYzM5OTcwMGVlY2Y0YWIyY2VlZGIzOGE5Ni4uOTdiM2IwODM5MGY2Njk4MDZiMTZlNGQ0
Njg1NWQzNjg5YjYxNWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCkBAIC01NzAsNyArNTcwLDcgQEAgU3RyaW5nIEhUTUxUYWJsZUVsZW1lbnQ6OnN1bW1hcnko
KSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogfQogCi12b2lk
IEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRN
TEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCAwOGQyM2UzYTMzMmE5M2U5ODk4MTYzNTAx
MjA1YWRlYzg3ODU2MmFlLi5lY2U1MTVkNDcwNDU1YjgwNTk0YjRlZDA4MTZlYzVkMTlkYjA3ZGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogICAgIC8vIFVzZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNl
dCBib3JkZXIgZGVjbCBhbmQgdG8gZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmli
dXRlcy4KICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9uYWxQcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0OwogCiAgICAgZW51bSBUYWJsZVJ1bGVzIHsgVW5zZXRSdWxlcywgTm9uZVJ1bGVz
LCBHcm91cHNSdWxlcywgUm93c1J1bGVzLCBDb2xzUnVsZXMsIEFsbFJ1bGVzIH07CiAgICAgZW51
bSBDZWxsQm9yZGVycyB7IE5vQm9yZGVycywgU29saWRCb3JkZXJzLCBJbnNldEJvcmRlcnMsIFNv
bGlkQm9yZGVyc0NvbHNPbmx5LCBTb2xpZEJvcmRlcnNSb3dzT25seSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggODU3ZTIwZjI3MzBlMzc3Y2IzOTVlYTgz
NzNlOGZhYzExN2Y1MDY5My4uZGIzMWUyMDA4M2YxMjk2OTUyZmQ0ZTgxZGRiY2U2NjZiZWExYTg3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
ICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25zdCBVUkwm
IHVybCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVVSTExlbmd0aEZvckxv
Z2dpbmcgPSAxMjg7CiAgICAgCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHIKICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQog
Ci1LVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFRyYWNrRWxlbWVu
dDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRB
dHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTFRyYWNrRWxlbWVudD4qKQogICAgIHNl
dFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6TE9BRElORyk7CiAKICAgICAvLyA3LiBMZXQg
VVJMIGJlIHRoZSB0cmFjayBVUkwgb2YgdGhlIHRyYWNrIGVsZW1lbnQuCi0gICAgS1VSTCB1cmwg
PSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBVUkwgdXJsID0gZ2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAKICAgICAvLyA4LiBJZiB0aGUgdHJhY2sgZWxl
bWVudCdzIHBhcmVudCBpcyBhIG1lZGlhIGVsZW1lbnQgdGhlbiBsZXQgQ09SUyBtb2RlIGJlIHRo
ZSBzdGF0ZSBvZiB0aGUgcGFyZW50IG1lZGlhCiAgICAgLy8gZWxlbWVudCdzIGNyb3Nzb3JpZ2lu
IGNvbnRlbnQgYXR0cmlidXRlLiBPdGhlcndpc2UsIGxldCBDT1JTIG1vZGUgYmUgTm8gQ09SUy4K
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+KikKICAgICBlbnN1cmVUcmFjaygpLnNjaGVkdWxlTG9h
ZCh1cmwpOwogfQogCi1ib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCmluZGV4IDNiOWM0ZjcyY2I0YjI3NTRkNDY4MTA3
OWJlMjVjOWUyYmNjOTcxY2EuLmI3NjE1MWI2ZDE4NTdkMGFjNzAzZTQ4NzU4OWNiMmY0OGZkMWVi
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1
YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGtpbmQoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRU
cmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKICAgICBMb2FkYWJsZVRleHRUcmFj
ayYgZW5zdXJlVHJhY2soKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChjb25zdCBLVVJM
Jik7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoY29uc3QgVVJMJik7CiAKICAgICBSZWZQ
dHI8TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CiAgICAgVGltZXI8SFRNTFRyYWNrRWxlbWVu
dD4gbV9sb2FkVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApp
bmRleCBhMTAzNjgzYzkxYTMxN2M1ZmNmZWIzZDQ0ODQ5OTZkZTgxMDA1YWMxLi5lZDY3YzZiZTQ2
NDYyNjhlYmEyNTkzODk1ODJjOTY3YTUwN2QyYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIHsKICAgICBEaXNwbGF5
TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBLVVJMIHBvc3RlciA9IHBvc3Rlcklt
YWdlVVJMKCk7CisgICAgVVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJMKCk7CiAKICAgICBpZiAo
IXBvc3Rlci5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHBvc3RlciBwYXRoLCBi
dXQgb25seSBzaG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRpc3BsYXkgYnkgcGxheWlu
ZyBvciBzZWVraW5nIGFuZCB0aGUKQEAgLTMxNSwxMSArMzE1LDExIEBAIHVuc2lnbmVkIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0KICNlbmRpZgog
Ci1LVVJMIEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkgY29uc3QKK1VSTCBIVE1M
VmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHVybCA9
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVNvdXJjZVVSTCgpKTsKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggOGVlMjAyZWY5Y2Y0NWQ2
ZDJhZTY4NTFmNGIyZDVmNTA4MWQxZTY1NC4uYmEwZjViNGNiOWJkOGRmMjQzODBiYjg3NjQ2MjA2
YjAzMjdkOGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgp
ID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCi0gICAgS1VSTCBwb3N0ZXJJbWFnZVVSTCgp
IGNvbnN0OworICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IEhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRl
eCA3NjI0ZmU5MjkwY2FkNmY5ZjRkMzBmYzEzOWZlZmIzYjUwYzA3ZjFiLi5kYjM1NWFjNGI3Mzcw
N2I3ZTVlMzZjNTM1YTUzNDVkMTdjNGIyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MVmlld1NvdXJjZURv
Y3VtZW50OjpIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRN
TFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiAgICAgLCBt
X3R5cGUobWltZVR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5oCmluZGV4IGNlZDU5ZGYzM2Y3NjkwZTY4MDhkYjg3ODNjY2VhMmEzM2RmOGViODAu
LmM0ZWY1ZDBmNmE4NDM3NTcyOTJlZmUwNzMyMWUxMmQ1MjJjN2Y5MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCBGSU5BTCA6IHB1
YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxW
aWV3U291cmNlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlld1Nv
dXJjZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU291cmNlKGNvbnN0IFN0cmluZyYsIEhU
TUxUb2tlbiYpOwogCiBwcml2YXRlOgotICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwog
CiAgICAgLy8gUmV0dXJucyBIVE1MVmlld1NvdXJjZVBhcnNlciBvciBUZXh0RG9jdW1lbnRQYXJz
ZXIgYmFzZWQgb24gbV90eXBlLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gY3JlYXRlUGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCBkYWVhMDFlZThlYzdmYTBmOWMwMmNkY2E3YzExOTg5MTZhZmZmZTRhLi5hY2I2NzJkYTJlNjVl
NmM2NTIwNjlkNDVlNDg5OTAxYmEyODU3MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZp
bmlzaCgpCiAgICAgCiAvLyAtLS0tLS0tLQogCi1JbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZy
YW1lLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykKICAgICAsIG1faW1hZ2VFbGVtZW50KDApCiAg
ICAgLCBtX2ltYWdlU2l6ZUlzS25vd24oZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCmluZGV4IDMyMDRkMDE2ZDJjYzZmODdjOTFjYjI1MTU5YmM3MWYyYzI4MDZlOWIuLmVkNTMz
OWNhODY1MzIyOGJlZWE5ODMwODk3NGE2MTkyZjdkM2Q5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEltYWdlRG9jdW1lbnRFbGVtZW50
OwogCiBjbGFzcyBJbWFnZURvY3VtZW50IEZJTkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdlQ2xpY2tlZChpbnQgeCwg
aW50IHkpOwogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJM
Jik7CisgICAgSW1hZ2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGQ4ZGM1ZjkwNjFhNDQyZmYwNjBlNzg1
MjNmMGMyMzhlYzI4NTRkMzcuLjdmMGVkZmIwODQ4OWNmOTdkZmRmNDQzNzdlZTU4MDA5NjJlYjgy
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTE4LDcgKzExOCw3
IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIq
LCBjb25zdCBjaGFyKiwgc2l6ZV90KQogICAgIGZpbmlzaCgpOwogfQogICAgIAotTWVkaWFEb2N1
bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK01lZGlh
RG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3VtZW50Q2xhc3MpCiAgICAgLCBt
X3JlcGxhY2VNZWRpYUVsZW1lbnRUaW1lcih0aGlzLCAmTWVkaWFEb2N1bWVudDo6cmVwbGFjZU1l
ZGlhRWxlbWVudFRpbWVyRmlyZWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCmlu
ZGV4IDNhZjU1MGUyZmEyOWUzNDNhNzcyMjQ4ZmY3NjNlMGM0MWU3ZDU4NzAuLjVmNjExYjA5MGJl
YTVjZjA0YWVkYmE2MTVhZTkxMzQ5NDE0M2JlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVk
aWFEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRlZFRyYWNrcygp
OwogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7Cisg
ICAgTWVkaWFEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5kZXggMzk1OWRkYTRmMDZjMzVj
ZWI0YmFiYjdlNzNlMDdkZjRiYWZlNTM4Ny4uMjVhYWJiOTY2NTI2NTFlNDBkODEzYjU3OWIxZmQz
NTEyYTAyOWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQ
YXJzZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGRvdWJsZSBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
OjppbnZhbGlkVGltZVZhbHVlKCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CiB9CiAKLU1lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXIo
Y29uc3QgS1VSTCYgdXJsKQorTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6TWVkaWFGcmFnbWVudFVS
SVBhcnNlcihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fdGltZUZv
cm1hdChOb25lKQogICAgICwgbV9zdGFydFRpbWUoTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDE3
ZGZjM2Y3OTAwNjVkM2Y0MTQ0OWM0NjhhZTU4ZmQ5OGM4ZDhkM2QuLjkzMmM3OTQ5YTVmYTQ0YWJj
OWQ5ZDNjYzE0YWNjOTg3YjRhNGZkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFG
cmFnbWVudFVSSVBhcnNlci5oCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShWSURF
TykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIAogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBGSU5BTCB7CiBwdWJsaWM6CiAgICAg
Ci0gICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlcihjb25zdCBLVVJMJik7CisgICAgTWVkaWFGcmFn
bWVudFVSSVBhcnNlcihjb25zdCBVUkwmKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUoKTsKICAg
ICBkb3VibGUgZW5kVGltZSgpOwpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
cGFyc2VOUFRGcmFnbWVudChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgZG91YmxlJiBz
dGFydFRpbWUsIGRvdWJsZSYgZW5kVGltZSk7CiAgICAgYm9vbCBwYXJzZU5QVFRpbWUoY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBvZmZzZXQsIGRvdWJsZSYgdGltZSk7
CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBUaW1lRm9ybWF0IG1fdGlt
ZUZvcm1hdDsKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1fZW5kVGltZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNTI5M2RjZDFhODVlNjE3
MTViZDhhMWY4NmEyMTNlNDcwNzE4YjZhOC4uMmMzYjRiMjgyMjk5NDlmYzY3ODc5NWFhM2U5MjE0
MjRkZWFkZTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpCiAgICAgfQogfQogCi1QbHVnaW5Eb2N1
bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCitQbHVn
aW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
ICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBQbHVnaW5Eb2N1bWVudENsYXNzKQogICAg
ICwgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkodHJ1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuaAppbmRleCBlMGJiZDk2ZmU5MTM1ZTIyM2NkODFlM2ExMGQwNGY3NzUzYzEz
NDk4Li4yMGU0YzhjNjRhOGI0ZWFlMmEyMjBmYTZjZWZmOGI3ZDRhNTQyM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFdpZGdldDsK
IAogY2xhc3MgUGx1Z2luRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAg
IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkTG9hZFBsdWdpbk1h
bnVhbGx5KCkgeyByZXR1cm4gbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHk7IH0KIAogcHJpdmF0
ZToKLSAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBQbHVnaW5E
b2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERv
Y3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggNWFkOGZjNjM4NWM3MjQ5NzM2Y2Y1ZGM1M2Y3
Mjc2YTA4MWVhZjIyMS4uMmJmN2Q3MGNmNGIyM2NmY2E1MDJkMmVhMjM0ZDhhN2VkMWViNzkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0yOSwyMCArMjks
MjAgQEAKIAogI2lmIEVOQUJMRShCTE9CKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUHVibGljVVJMTWFuYWdl
cjo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBV
UkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCit2b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnJlZ2lz
dGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBVUkxSZWdpc3Ry
YWJsZSogcmVnaXN0cmFibGUpCiB7CiAgICAgUmVnaXN0cnlVUkxNYXA6Oml0ZXJhdG9yIGZvdW5k
ID0gbV9yZWdpc3RyeVRvVVJMLmFkZCgmcmVnaXN0cmFibGUtPnJlZ2lzdHJ5KCksIFVSTFNldCgp
KS5pdGVyYXRvcjsKICAgICBmb3VuZC0+a2V5LT5yZWdpc3RlclVSTChvcmlnaW4sIHVybCwgcmVn
aXN0cmFibGUpOwogICAgIGZvdW5kLT52YWx1ZS5hZGQodXJsLnN0cmluZygpKTsKIH0KIAotdm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgS1VSTCYgdXJsKQordm9pZCBQdWJsaWNV
UkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChSZWdpc3RyeVVS
TE1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9IG1fcmVnaXN0
cnlUb1VSTC5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmIChpLT52YWx1ZS5jb250YWlucyh1cmwu
c3RyaW5nKCkpKSB7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUHVibGljVVJMTWFuYWdlcjo6Y29u
dGV4dERlc3Ryb3llZCgpCiB7CiAgICAgZm9yIChSZWdpc3RyeVVSTE1hcDo6aXRlcmF0b3IgaSA9
IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9IG1fcmVnaXN0cnlUb1VSTC5lbmQoKTsgKytp
KSB7CiAgICAgICAgIGZvciAoVVJMU2V0OjppdGVyYXRvciBqID0gaS0+dmFsdWUuYmVnaW4oKTsg
aiAhPSBpLT52YWx1ZS5lbmQoKTsgKytqKQotICAgICAgICAgICAgaS0+a2V5LT51bnJlZ2lzdGVy
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikpOworICAgICAgICAgICAgaS0+a2V5LT51bnJl
Z2lzdGVyVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICpqKSk7CiAgICAgfQogCiAgICAgbV9yZWdp
c3RyeVRvVVJMLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCmlu
ZGV4IGExMDkxMTE2YmVjYmE1ODBmMjhlOTNmNjAzZTE0ZThhNmRjNjc2ZTEuLjlhZDAxYmQ0NTg5
ZTQ0NWZlMTQzZjE4ZWQxZmIxM2ZiODRkZjE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTFJlZ2lzdHJ5OwpAQCAtNDYsOCArNDYsOCBA
QCBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgT3duUHRyPFB1
YmxpY1VSTE1hbmFnZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxN
YW5hZ2VyKTsgfQogCi0gICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmLCBVUkxSZWdpc3RyYWJsZSopOwotICAgIHZvaWQgcmV2b2tlKGNvbnN0IEtVUkwmKTsK
KyAgICB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVn
aXN0cmFibGUqKTsKKyAgICB2b2lkIHJldm9rZShjb25zdCBVUkwmKTsKICAgICB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNw
cAppbmRleCA5MzM0YTM5N2JlZGYyOWM3NmUyM2NjYWM1MGNjMmYxZTk3OWNkYTVkLi44M2VmMTMx
YzViZWQyMTdmZGMwNTQ2MThjYzA2MzZkZjc0YzJkYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RG9jdW1lbnQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CitUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0
eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAppbmRleCBlZWI2
MDEwZWI4MDBlYmRkMTg5NDVmYzAwYTU4NjEyMzU2NTg3YjNkLi5mNGE4MzJkNzBlZDc1NjA4YTk3
YzUzZjQ5ODY1NGE0Y2FjYWMxMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHREb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKQEAg
LTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHREb2N1bWVu
dCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHREb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRleHREb2N1
bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNy
ZWF0ZVBhcnNlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCBl
YjVhOTdiZDMzY2E5NThmOGQ0M2I5NmE4ODAzMmM2N2JmODgzM2ExLi4xYjU1ZGM4ZTU2NmUzNDI5
YjM0MjAxYzliYjY5YjE2Yjg0ZTc3MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUu
Y3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBib29s
IFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgIUtVUkwoS1VSTCgpLCB2YWx1ZSku
aXNWYWxpZCgpOworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFVUkwoVVJMKCksIHZh
bHVlKS5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCmluZGV4IDY2ODdjOWM5M2Y5MmQwNWE0ZWY5
ZmQxNWYzMzM1Y2MzODUzMmIwY2IuLjZlZTU3ZTIxY2Y5OWQyZmIyNTRmOTNiMWZhNzZlNmIwZDJh
OGExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKIApAQCAtNDksOCArNDksOCBAQCBjbGFz
cyBVUkxSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+VVJMUmVnaXN0cnkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgVVJMUmVnaXN0cmFibGUqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdp
c3RyYWJsZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwm
KSA9IDA7CiAKICAgICAvLyBUaGlzIGlzIGFuIG9wdGlvbmFsIEFQSQogICAgIHZpcnR1YWwgVVJM
UmVnaXN0cmFibGUqIGxvb2t1cChjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyNmJjNGViOTExOWVjZjUwNTMyZDk4ZmMzZjli
ZjU4YmVjODE4M2Q3Li5kZmE5MjBlMzRmM2YwMDU2NjA1NTZhMDY0MDk2MWNmZmVkN2ZhMjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNyArOTEsNyBAQCBib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghY2FudmFzKCktPm9yaWdpbkNsZWFuKCkgfHwgbV9jbGVhblVSTHMuY29udGFpbnModXJsLnN0
cmluZygpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBLVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNo
ZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
Y2hlY2tPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4o
dXJsKSkKICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA4
ZTg0OWJkZThmYjFjNGQ4MGVlYTUyOWJiNTcyZDZkOTNmZTFiZmJkLi5iNWIyNzgxZjcwOTViZDQy
NzA4M2U4MTY1ZmQ1ZjZkZGRhOGYwNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNz
IENhbnZhc1BhdHRlcm47CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFn
ZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIFdlYkdMT2JqZWN0OwogCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CkBAIC02NywxNCArNjcsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOwogICAg
IGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7CiAgICAgYm9v
bCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKLSAgICBib29sIHdv
dWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgY2hlY2tPcmlnaW4oY29u
c3QgVCogYXJnKQogICAgIHsKICAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4oYXJnKSkKICAg
ICAgICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVkKCk7CiAgICAgfQotICAgIHZvaWQg
Y2hlY2tPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVVJM
Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNmQwNDBkNDc0NmRjMzVhNTBlNmE0OTMzNjg5YzZmOWQ3ZjdlYzA2NS4uYzBmMjg4Mzhm
M2ZmNTEwMjhhYWU1NTYxNGMwNDA3YTJjYjQ0NWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NTU5LDcgKzU1
NTksNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVIVE1MSW1hZ2VFbGVt
ZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSAogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gaW1h
Z2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjb25zdCBLVVJMJiB1cmwg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKKyAgICBjb25zdCBVUkwm
IHVybCA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5yZXNwb25zZSgpLnVybCgpOwogICAgIGlmICh1
cmwuaXNOdWxsKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVu
Y3Rpb25OYW1lLCAiaW52YWxpZCBpbWFnZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
NjdmNmJjYjE4Y2Q1Y2RkZTgxNTY3N2ZmMDZiMzc0ZTYwNGUyYzMyZi4uM2U3MGI3OTkxOGQ1Nzg5
MDdkZTM1YTAzYjkwN2Y1NGNmZjk2YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQ1NT
UHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICBpZiAocnVsZUVxdWFsSWdub3JpbmdDYXNl
KG1fcnVsZSwgImltcG9ydCIpKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBwYXJzZUNTU1N0cmlu
Z09yVVJMKG1fcnVsZVZhbHVlLmRhdGEoKSwgbV9ydWxlVmFsdWUuc2l6ZSgpKTsKICAgICAgICAg
aWYgKCF1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGJhc2VFbGVtZW50VVJMOyAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nh
bmVyIHZpYSBzY2FuKCkhCisgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FuZXIgdmlh
IHNjYW4oKSEKICAgICAgICAgICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IFBy
ZWxvYWRSZXF1ZXN0OjpjcmVhdGUoImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KICAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChyZXF1ZXN0LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IGE3Y2I3MmUy
ZmI5N2Q2YjU2MjE2MGI0MWMxZGQyZTg5ODQ3NmRkNWQuLjc4ZDFmMTM1Y2FiYzUxNzQ2YjBlODQz
NzQ5MzY3ZTljOWYxZTQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNpbWFs
LmgiCiAjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNDFlZTIwMTYxYmU3NmRhNjlk
OGFiMDk2ZDJiMWY1OWYxZjY2NzM4Ni4uNjQyMzU5Mzk4OTkzNWM4YjZmMzkzOWIyNWYxZmFhMmYw
ODU1YWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgog
Ci0gICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGVQcmVsb2FkUmVxdWVzdChjb25zdCBL
VVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQorICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRl
UHJlbG9hZFJlcXVlc3QoY29uc3QgVVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQogICAgIHsKICAgICAg
ICAgaWYgKCFzaG91bGRQcmVsb2FkKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7
CiB9OwogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK1Rva2VuUHJlbG9hZFNj
YW5uZXI6OlRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBtX2RvY3VtZW50VVJMKGRvY3VtZW50VVJMKQogICAg
ICwgbV9pblN0eWxlKGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3RvcikKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJU
KG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwuaXNFbXB0eSgpKTsKICAgICBpZiAoY29uc3QgdHlw
ZW5hbWUgVG9rZW46OkF0dHJpYnV0ZSogaHJlZkF0dHJpYnV0ZSA9IHRva2VuLmdldEF0dHJpYnV0
ZUl0ZW0oaHJlZkF0dHIpKQotICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0gS1VS
TChtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZkF0
dHJpYnV0ZS0+dmFsdWUpKS5jb3B5KCk7CisgICAgICAgIG1fcHJlZGljdGVkQmFzZUVsZW1lbnRV
UkwgPSBVUkwobV9kb2N1bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29weSgpOwogfQogCi1IVE1MUHJlbG9hZFNjYW5uZXI6
OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorSFRNTFByZWxv
YWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICAsIG1f
dG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zKSkKIHsKQEAgLTM5OSw3ICsz
OTksNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7CiB9CiAKLXZv
aWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRlciogcHJlbG9h
ZGVyLCBjb25zdCBLVVJMJiBzdGFydGluZ0Jhc2VFbGVtZW50VVJMKQordm9pZCBIVE1MUHJlbG9h
ZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiBwcmVsb2FkZXIsIGNvbnN0IFVS
TCYgc3RhcnRpbmdCYXNlRWxlbWVudFVSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OyAvLyBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciBvbmx5IHdvcmtzIG9uIHRoZSBtYWlu
IHRocmVhZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuaAppbmRleCA3YzNmNTM1YzU3N2Q4MTdjZTMyMGUyZjYzNmE5MzU4NjI0MmQxZDk3Li40
ZmFmN2ZhZmM0Mzg3ZTc2M2QzMTAwZmI5MGQ5MWViZWRmMWMwNzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUb2tlblByZWxvYWRTY2FubmVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVG9rZW5QcmVsb2FkU2Nhbm5lcihj
b25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwor
ICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1bWVudFVSTCwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwogICAgIH5Ub2tlblByZWxvYWRTY2FubmVy
KCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJl
YW0mIHJlcXVlc3RzKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nhbihj
b25zdCBDb21wYWN0SFRNTFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBzZXRQcmVkaWN0ZWRCYXNlRWxlbWVudFVSTChjb25zdCBLVVJM
JiB1cmwpIHsgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0
UHJlZGljdGVkQmFzZUVsZW1lbnRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9wcmVkaWN0ZWRCYXNl
RWxlbWVudFVSTCA9IHVybDsgfQogCiAgICAgLy8gQSBUb2tlblByZWxvYWRTY2FubmVyQ2hlY2tw
b2ludCBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvIHJld2luZFRvLAogICAgIC8vIGF0
IHdoaWNoIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxpZGF0ZWQu
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVkaWN0ZWRCYXNl
VVJMKGNvbnN0IFRva2VuJik7CiAKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7Ci0gICAgICAgIENo
ZWNrcG9pbnQoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwsIGJvb2wgaW5TdHls
ZQorICAgICAgICBDaGVja3BvaW50KGNvbnN0IFVSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkws
IGJvb2wgaW5TdHlsZQogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgICAgICAgICAg
LCBzaXplX3QgdGVtcGxhdGVDb3VudAogI2VuZGlmCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgS1VSTCBwcmVkaWN0ZWRCYXNlRWxl
bWVudFVSTDsKKyAgICAgICAgVVJMIHByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwogICAgICAgICBi
b29sIGluU3R5bGU7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHNpemVf
dCB0ZW1wbGF0ZUNvdW50OwpAQCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgfTsKIAog
ICAgIENTU1ByZWxvYWRTY2FubmVyIG1fY3NzU2Nhbm5lcjsKLSAgICBjb25zdCBLVVJMIG1fZG9j
dW1lbnRVUkw7Ci0gICAgS1VSTCBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMOworICAgIGNvbnN0
IFVSTCBtX2RvY3VtZW50VVJMOworICAgIFVSTCBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwog
ICAgIGJvb2wgbV9pblN0eWxlOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAKQEAg
LTEzMCwxMSArMTMwLDExIEBAIHByaXZhdGU6CiBjbGFzcyBIVE1MUHJlbG9hZFNjYW5uZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxQcmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1M
UGFyc2VyT3B0aW9ucyYsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IDEuMCk7CisgICAgSFRNTFByZWxvYWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJP
cHRpb25zJiwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSAxLjApOwogICAgIH5IVE1MUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kVG9F
bmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdm9pZCBzY2FuKEhUTUxSZXNvdXJjZVBy
ZWxvYWRlciosIGNvbnN0IEtVUkwmIGRvY3VtZW50QmFzZUVsZW1lbnRVUkwpOworICAgIHZvaWQg
c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBVUkwmIGRvY3VtZW50QmFzZUVsZW1l
bnRVUkwpOwogCiBwcml2YXRlOgogICAgIFRva2VuUHJlbG9hZFNjYW5uZXIgbV9zY2FubmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRl
ci5jcHAKaW5kZXggMzYzMzQxYWEwMDNiYmU2NTkwNmIxNTc2ZWU0OTE0YmJlMDdiZDczNy4uYjEw
MDk5NzhhNjFhZTIzYWI2MDEwMGFjYmY2YjRhNWExMjg5NGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIGJvb2wgUHJlbG9hZFJlcXVlc3Q6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0CiAgICAgICAgICYmIG1fYmFzZVVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKTsKIH0KIAotS1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVVUkwoRG9jdW1lbnQqIGRv
Y3VtZW50KQorVVJMIFByZWxvYWRSZXF1ZXN0Ojpjb21wbGV0ZVVSTChEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlVVJMLCBt
X2Jhc2VVUkwuaXNFbXB0eSgpID8gZG9jdW1lbnQtPnVybCgpIDogbV9iYXNlVVJMKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgK
aW5kZXggZWY5MzM5NWIxMzA2YjhiZTkyZDY0NDFiMWQ5YzUyY2U5ZWFjNTYzZi4uYWFhODdlYTMy
MzU4YWFjOWI3ZDJiZGM4OTIyNmM0YjIzNzM3NDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKQEAgLTMzLDEyICszMywxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZWxvYWRSZXF1ZXN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBp
bml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBtZWRpYUF0
dHJpYnV0ZSkKKyAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcm
IG1lZGlhQXR0cmlidXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQcmVs
b2FkUmVxdWVzdChpbml0aWF0b3IsIHJlc291cmNlVVJMLCBiYXNlVVJMLCByZXNvdXJjZVR5cGUs
IG1lZGlhQXR0cmlidXRlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVx
dWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBVUkwmIGJh
c2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCByZXNvdXJjZVVS
TCwgYmFzZVVSTCwgcmVzb3VyY2VUeXBlLCBTdHJpbmcoKSkpOwogICAgIH0KQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAgUHJlbG9hZFJl
cXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkws
IGNvbnN0IEtVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSkKKyAgICBQcmVsb2FkUmVxdWVzdChjb25zdCBT
dHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29uc3QgVVJMJiBi
YXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZyYg
bWVkaWFBdHRyaWJ1dGUpCiAgICAgICAgIDogbV9pbml0aWF0b3IoaW5pdGlhdG9yKQogICAgICAg
ICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkpCiAgICAgICAgICwg
bV9iYXNlVVJMKGJhc2VVUkwuY29weSgpKQpAQCAtNjQsMTEgKzY0LDExIEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAotICAgIEtVUkwgY29tcGxldGVVUkwoRG9jdW1lbnQqKTsKKyAgICBVUkwg
Y29tcGxldGVVUkwoRG9jdW1lbnQqKTsKIAogICAgIFN0cmluZyBtX2luaXRpYXRvcjsKICAgICBT
dHJpbmcgbV9yZXNvdXJjZVVSTDsKLSAgICBLVVJMIG1fYmFzZVVSTDsKKyAgICBVUkwgbV9iYXNl
VVJMOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgbV9y
ZXNvdXJjZVR5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWFBdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDQ5MWRiZDM4MmNh
NzJhNmUwNGYyNWJhOGYwMDI5MDJiNTEyMDkyNzAuLjVlNGY3ZWNkNDg2OWVjY2UyOGQ5ZDRhZDcx
NWZkMWY3MGI1NDQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
Y3JpcHRSdW5uZXIuY3BwCkBAIC03NCwxMCArNzQsMTAgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVy
OjpkZXRhY2goKQogICAgIG1fZG9jdW1lbnQgPSAwOwogfQogCi1zdGF0aWMgS1VSTCBkb2N1bWVu
dFVSTEZvclNjcmlwdEV4ZWN1dGlvbihEb2N1bWVudCogZG9jdW1lbnQpCitzdGF0aWMgVVJMIGRv
Y3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8gVXNlIHRoZSBVUkwgb2YgdGhlIGN1
cnJlbnRseSBhY3RpdmUgZG9jdW1lbnQgZm9yIHRoaXMgZnJhbWUuCiAgICAgcmV0dXJuIGRvY3Vt
ZW50LT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggM2UzOTMzNDUyYWZhNDRhYzQyMmZhZWYxMjNjMDRmNzE4
YjQxNDRhOC4uODRlYWMzNDZkY2VkMjYyNDFkNDgzYTc2MjcwY2Q0NTgwM2UyNGUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTE1Niw4ICsxNTYs
OCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBkZWNvZGUxNkJpdFVuaWNvZGVFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGRlY29kZVN0
YW5kYXJkVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIFdlIHVzZSBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygpIChkZWNsYXJlZCBpbiBL
VVJMLmgpIHRvCi0gICAgLy8gYXZvaWQgcGxhdGZvcm0tc3BlY2lmaWMgVVJMIGRlY29kaW5nIGRp
ZmZlcmVuY2VzIChlLmcuIEtVUkxHb29nbGUpLgorICAgIC8vIFdlIHVzZSBkZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygpIChkZWNsYXJl
ZCBpbiBVUkwuaCkgdG8KKyAgICAvLyBhdm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBVUkwgZGVjb2Rp
bmcgZGlmZmVyZW5jZXMgKGUuZy4gVVJMR29vZ2xlKS4KICAgICByZXR1cm4gZGVjb2RlRXNjYXBl
U2VxdWVuY2VzPFVSTEVzY2FwZVNlcXVlbmNlPihzdHJpbmcsIGVuY29kaW5nKTsKIH0KIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQs
IFhTU0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRlbGVnYXRlKQogICAgICAgICBTdHJpbmcgZXJy
b3JEZXRhaWxzOwogICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsKICAgICAgICAg
U3RyaW5nIHJlcG9ydFVSTDsKLSAgICAgICAgS1VSTCB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMOwor
ICAgICAgICBVUkwgeHNzUHJvdGVjdGlvblJlcG9ydFVSTDsKIAogICAgICAgICAvLyBQcm9jZXNz
IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciwgdGhlbiBtaXggaW4gdGhlIENTUCBoZWFkZXIn
cyB2YWx1ZS4KICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNw
b3NpdGlvbiB4c3NQcm90ZWN0aW9uSGVhZGVyID0gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGhl
YWRlclZhbHVlLCBlcnJvckRldGFpbHMsIGVycm9yUG9zaXRpb24sIHJlcG9ydFVSTCk7CkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwg
WFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgICAgICBpZiAoTWl4
ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkwpKSB7CiAgICAgICAgICAgICAgICAgZXJyb3JEZXRh
aWxzID0gImluc2VjdXJlIHJlcG9ydGluZyBVUkwgZm9yIHNlY3VyZSBwYWdlIjsKICAgICAgICAg
ICAgICAgICB4c3NQcm90ZWN0aW9uSGVhZGVyID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZs
ZWN0ZWRYU1NJbnZhbGlkOwotICAgICAgICAgICAgICAgIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkwg
PSBLVVJMKCk7CisgICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IFVSTCgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICh4c3NQcm90ZWN0aW9uSGVh
ZGVyID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTSW52YWxpZCkKQEAgLTcy
MCw3ICs3MjAsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIGlmIChtX2RvY3VtZW50VVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgcmVzb3VyY2VVUkwobV9kb2N1bWVudFVS
TCwgdXJsKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwobV9kb2N1bWVudFVSTCwgdXJsKTsKICAgICBy
ZXR1cm4gKG1fZG9jdW1lbnRVUkwuaG9zdCgpID09IHJlc291cmNlVVJMLmhvc3QoKSAmJiByZXNv
dXJjZVVSTC5xdWVyeSgpLmlzRW1wdHkoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuaAppbmRleCAwNjkwYmU5MjhiMzcyMzgyYzc3Mzg2NzRiMTEyMjE3ZjVlMDYx
YTg1Li4zMjFlNmUxYTVmMzBlOGQxNTRhOTAzMDc2MWU2MTE3MWVhNzlkNTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdWZmaXhUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTEwNCw3
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDb250YWluZWRJblJlcXVlc3QoY29uc3Qg
U3RyaW5nJik7CiAgICAgYm9vbCBpc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCk7CiAKLSAgICBLVVJMIG1fZG9jdW1lbnRVUkw7CisgICAgVVJMIG1fZG9jdW1lbnRVUkw7CiAg
ICAgYm9vbCBtX2lzRW5hYmxlZDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVj
dGVkWFNTRGlzcG9zaXRpb24gbV94c3NQcm90ZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAppbmRleCAxZDhjN2Q4ODBlZDRiMmY4NDFm
YzgyNzUyYTE0YTdkODc3MTczNTkzLi42NTFjNTBlZjY3YzI3OGQxYTA3NWE5ZDczOTliMDMyZDI4
MjcyMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBYU1NBdWRpdG9yRGVsZWdhdGVfaAog
I2RlZmluZSBYU1NBdWRpdG9yRGVsZWdhdGVfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50Kik7CiAKICAgICB2
b2lkIGRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mKTsKLSAgICB2b2lkIHNldFJlcG9ydFVS
TChjb25zdCBLVVJMJiB1cmwpIHsgbV9yZXBvcnRVUkwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFJl
cG9ydFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3JlcG9ydFVSTCA9IHVybDsgfQogCiBwcml2YXRl
OgogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGdlbmVyYXRlVmlvbGF0aW9uUmVwb3J0KCk7CiAK
ICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBib29sIG1fZGlkU2VuZE5vdGlmaWNhdGlv
bnM7Ci0gICAgS1VSTCBtX3JlcG9ydFVSTDsKKyAgICBVUkwgbV9yZXBvcnRVUkw7CiB9OwogCiB0
eXBlZGVmIFZlY3RvcjxPd25QdHI8WFNTSW5mbz4gPiBYU1NJbmZvU3RyZWFtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCBjZTUxZjY1
NWZlZGY1NzY3YTMxNTZkNzU2MDlmNTYxZTJhMGE0MmRmLi5jZWQ2Yzg2MmU4MDMxOGEzYTkwMGM1
NzI1NDI3OTk0ZDQ0NmUzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRy
YWNrOjpjbGVhckNsaWVudCgpCiAgICAgVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpOwogfQogCi12
b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGlmICh1cmwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAppbmRleCAxODhlYWQxMzc1OGUwYjFjYWM2YWRj
NjUwMDM4MjA2MmE0YzUxM2Y2Li5hYmJjNzg3YTczYjgwZmM2NDc2YTBmODNiMjBmMWE5YWU1MWMz
YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50IDogcHVibGlj
IFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJh
Y2tDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJs
ZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgVVJMJikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRU
cmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9OwogCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKIAot
ICAgIHZvaWQgc2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9h
ZChjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpOwogCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1l
bnQ7CiAgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOwogICAgIE93blB0
cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1f
dXJsOwogICAgIGJvb2wgbV9pc0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCBjMWMy
ODhkYzdiYWI2OGMyY2E3YWM5NWYwOWUwZGM3ZmFjODM4ZDg1Li4yZWVkNzQ2OTZmNmRhYjUwMjQz
MzU0NTRkNzU3YzhiZGExZTI3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtOTEsMTIgKzkxLDEyIEBAIHZvaWQgRE9NUGF0Y2hTdXBwb3J0
OjpwYXRjaERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFJlZlB0cjxEb2N1
bWVudD4gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
Ci0gICAgICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
KyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAg
ICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG5ld0Rv
Y3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBLVVJMKCkpOworICAgICAgICBu
ZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgVVJMKCkpOwogI2lmIEVO
QUJMRShTVkcpCiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQotICAg
ICAgICBuZXdEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAg
bmV3RG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKICNlbmRpZgogCiAgICAg
QVNTRVJUKG5ld0RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwCmluZGV4IDBjZTFlOTY3NzhjZDQ5MDkzNmNkYTA0ZjI0Yjc4OTM2YjUyNTljYmIu
LmZiNWI2OTMzYzRkNmU5NzA3YTY1YTJiMWExZTE1MTQ3M2Y4MjhiODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZv
aWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCkKICAgICBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmNsZWFySW5zcGVjdGVk
T2JqZWN0cygpOwogfQogCi1ib29sIEluc3BlY3RvckFnZW50Ojppc01haW5SZXNvdXJjZUxvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKQorYm9vbCBJ
bnNwZWN0b3JBZ2VudDo6aXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKQogewogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2Ut
PmZyYW1lSXNNYWluRnJhbWUobG9hZGVyLT5mcmFtZSgpKSAmJiByZXF1ZXN0VXJsID09IGxvYWRl
ci0+cmVxdWVzdFVSTCgpOwogfQpAQCAtMTY5LDE0ICsxNjksMTQgQEAgdm9pZCBJbnNwZWN0b3JB
Z2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IG9iamUKICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNvbmQgPSBoaW50czsKIH0KIAot
S1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKK1VSTCBJbnNwZWN0b3JB
Z2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAotS1VSTCBJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKK1VSTCBJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKIHsKLSAgICBLVVJMIHVybCA9
IGluc3BlY3RlZFVSTCgpOworICAgIFVSTCB1cmwgPSBpbnNwZWN0ZWRVUkwoKTsKICAgICB1cmwu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggYTBlZTBmNzUzZmZlZmU4Nzhl
ZTZiYmRiOTYyOGJlZmRkMTdmNTUyNy4uNzcyYzkyYmJmMTY0MDg2MTkxYTE1NGFhODFkNmUyODU4
NTc2ZmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAot
ICAgIEtVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7Ci0gICAgS1VSTCBpbnNwZWN0ZWRVUkxXaXRo
b3V0RnJhZ21lbnQoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7CisgICAg
VVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0OwogCiAgICAgSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9mcm9udGVuZDsgfQogCkBAIC05
OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCk7
CiAjZW5kaWYKIAotICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlTG9hZGVy
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKTsKIAogICAgIFBhZ2UqIG1f
aW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBhMjllNTRiMjVkOWUxMTAxZmQ4MzE4YTdjY2FkNWQ5ODY0M2I1NzFlLi41MGY3ZDRjNDc4
NjNhYjViYjFhMGRlZDUyMjcxOGYxZDRjZWYzMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02ODMsNyArNjgzLDcg
QEAgU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChj
b25zdCBTY3JpcHQmIHNjcmlwdCkKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkgewotICAgICAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShwYWdlQWdlbnQtPm1h
aW5GcmFtZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOworICAgICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShw
YWdlQWdlbnQtPm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7
CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgc291
cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJj
ZU1hcEhUVFBIZWFkZXIpOwogICAgICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggNmUyODhhZGNmZTk4OWQ1MWNjYTdjODYzMTdjYzE3ZDI5
ZDYxY2RiYi4uNDBhZDM3MDc1ZGNmZGU5YTE5YWJjNDBlODJlYWYyMmFkYTkzODNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9j
YWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1ldGFkYXRhLmgiCkBAIC0yMTcsNyArMjE3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRE
aXJlY3RvcnlFbnRyaWVzKCk7CiAKICAgICBSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRD
YWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gPiBt
X2VudHJpZXM7CiAgICAgUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gbV9kaXJlY3RvcnlSZWFkZXI7
CiB9OwpAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV91cmwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpIHsgfQogCiAgICAgUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNr
PiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9pc0RpcmVjdG9yeTsKIH07CkBAIC00NDIsNyAr
NDQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkgeyB9CiAKICAg
ICBSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwot
ICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9yZWFkQXNUZXh0Owog
ICAgIGludCBtX3N0YXJ0OwogICAgIGxvbmcgbG9uZyBtX2VuZDsKQEAgLTUyMiw3ICs1MjIsNyBA
QCB2b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkUmVhZCgpCiAKIGNsYXNzIERlbGV0ZUVudHJ5
UmVxdWVzdCA6IHB1YmxpYyBWb2lkQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERlbGV0ZUVudHJ5UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8RGVsZXRlRW50cnlD
YWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxEZWxldGVFbnRy
eUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVFbnRyeVJlcXVlc3QocmVxdWVzdENhbGxiYWNr
LCB1cmwpKTsKICAgICB9CkBAIC01NTQsMTIgKzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUp
KTsKICAgICB9CiAKLSAgICBEZWxldGVFbnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxEZWxldGVFbnRy
eUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEtVUkwmIHVybCkKKyAgICBEZWxldGVF
bnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2ssIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RD
YWxsYmFjaykKICAgICAgICAgLCBtX3VybCh1cmwpIHsgfQogCiAgICAgUmVmUHRyPERlbGV0ZUVu
dHJ5Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogfTsKIAogdm9pZCBEZWxldGVFbnRyeVJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC02ODYsNyArNjg2LDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiB1cmwKICAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
Zyk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CiAKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1
cmwpLmdldCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAz
YjY0MTVmNzFjM2FkMTE2ZGM3YzU1NzcwZTFkNjg1Nzc4YTQwYzUuLjRmZTY4M2YxNTZkM2E0N2Jl
NmFhMGI3NDBlZjBhN2JhZGRjNGFjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlbW92ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
U3lzdGVtUGF0aCkKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojppc29sYXRlZEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29u
c3QgU3RyaW5nJiByb290VVJMKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVTeXN0ZW1OYW1lLCBGaWxlU3lzdGVt
VHlwZUlzb2xhdGVkLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcm9vdFVSTCksIEFzeW5jRmlsZVN5
c3RlbTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4
dCwgZmlsZVN5c3RlbU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRVUkxT
dHJpbmcsIHJvb3RVUkwpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGQ1NTMyYzBiNDhlM2ViZWIxNDYzNDk2ZWFhMmFmOWFjYWI5Njg2MDYu
LmNmZmI3M2YxMTEzODgwYTgzMDM1MjBmZmFkNmJlZmQyY2M1NWI0ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC03OTcsNyArNzk3LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW0KICAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQo
aWRlbnRpZmllciwgY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRh
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMs
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJl
c291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbExvYWRYSFIoY2xpZW50
LCBtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlh
bHMpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFy
dFdvcmtlckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBj
b25zdCBLVVJMJiB1cmwpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQcm94eSwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvcldvcmtlckFnZW50KCkpCiAgICAgICAg
IHdvcmtlckFnZW50LT5kaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3Bl
UHJveHksIHVybCk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVu
dCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2Vi
U29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckFnZW50KCk7CiAgICAgaWYgKCFpbnNwZWN0b3JBZ2VudCB8fCAhaW5zcGVjdG9yQWdlbnQtPmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkZjZmYTFlMmUyZjY4ZmY1MDUxNmY0
MmM3ZTM0ZjY5NDFmNDg2ZTJiLi5kZjNlYTI4MGUxMWVmODI0ODliOWMyZmQ0NzM4NTdiNTViM2Rm
ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIEluc3BlY3RvckNTU09NV3JhcHBl
cnM7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNzIFJlbmRlckxh
eWVyOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
U3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwotICAgIHN0YXRpYyB2
b2lkIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CisgICAgc3RhdGljIHZvaWQgd2ls
bExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
Y29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJM
b2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoV09SS0VSUykKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9u
U3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckdsb2JhbFNj
b3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRXb3JrZXJH
bG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSosIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWlu
YXRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVdvcmtlclNjcmlwdChXb3JrZXJHbG9iYWxTY29w
ZSosIGludCB3b3JrZXJUaHJlYWRTdGFydE1vZGUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBL
VVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgc3RhdGljIHZv
aWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdChEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQoRG9j
dW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3Vi
bGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0g
ICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIGJvb2wsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CisgICAgc3Rh
dGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwgUGFzc1JlZlB0
cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDYzLDEyICs0NjMsMTIgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNl
RGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0
YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBX
b3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0g
ICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRG9jdW1lbnQqKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQqKTsKQEAgLTE1MDQsNyArMTUwNCw3
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRY
SFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC0xODA2LDcgKzE4MDYsNyBA
QCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNh
dGVkV29ya2VyT25TdGFydChTY3JpcHRFeAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkq
IHByb3h5LCBjb25zdCBLVVJMJiB1cmwpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHksIGNvbnN0IFVSTCYgdXJsKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0
KSkKQEAgLTE4MzMsNyArMTgzMyw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1dGlvCiAKIAogI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVS
TCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1l
bnRVUkwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDgyMDI4ZGQ2ODA5MzJlYjRi
YTg5OGM0MTA4M2UzMjViNDc4YzY0MDkuLjMzZGFjNGEzMjk3MDYxNGU0NGE0NzUxMWMxZjg2MWVh
ODc5ZjA4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQYWdlQWdl
bnQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGkKIH0K
IAogLy8gc3RhdGljCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIFN0
cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQordm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQog
ewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBhc3NlcnREb2N1bWVudExvYWRlcihlcnJv
clN0cmluZywgZnJhbWUpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMjk4LDcgKzI5OCw3IEBAIFN0
cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1DYWNoZWRS
ZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCkKK0NhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZSkgewpAQCAtNTYxLDkgKzU2MSw5IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBj
YWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIFZlY3RvcjxLVVJMPiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUq
IGZyYW1lKQorc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgVmVjdG9yPEtVUkw+IHJlc3VsdDsKKyAgICBWZWN0b3I8VVJMPiBy
ZXN1bHQ7CiAKICAgICByZXN1bHQuYXBwZW5kKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT51cmwoKSk7CiAKQEAgLTU4OSwxMCArNTg5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUoKSkpIHsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgICAgIFZlY3RvcjxLVVJM
PiBhbGxVUkxzID0gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKTsKLSAgICAgICAgZm9y
IChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsVVJMcy5iZWdpbigpOyBpdCAh
PSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFZlY3RvcjxVUkw+IGFsbFVSTHMgPSBh
bGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBmb3IgKFZlY3RvcjxVUkw+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFsbFVSTHMuYmVnaW4oKTsgaXQgIT0gYWxsVVJMcy5lbmQo
KTsgKytpdCkgewogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7Ci0g
ICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50
LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOworICAgICAgICAg
ICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcyhkb2N1bWVudCwgVVJMKFBh
cnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOwogICAgICAgICAgICAgaWYgKCFy
YXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVl
ZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBj
b29raWVzLgogICAgICAgICAgICAgICAgIC8vCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGUKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwp
CiB7Ci0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIFVSTCBw
YXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCZtX3BhZ2UtPm1haW5GcmFtZSgpKSkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwogfQpAQCAtNjM3
LDcgKzYzNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwg
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOworICAg
IHJlc291cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOwogfQogCiBzdGF0aWMgYm9vbCB0ZXh0Q29u
dGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3Ry
aW5nKiByZXN1bHQpCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGMK
ICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBrdXJsKFBhcnNl
ZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAK
ICAgICBTdHJpbmcgY29udGVudDsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBkZDAxODc0Y2M5
MGI1YjlkNjMyYTZlY2VmNTVkZmMzNTRmN2FlZThjLi4yYjAyZWM3ZTgwZGY0ZWFiOGZkMTdkNDdj
ODI4ZGM1ZjQ5Nzk1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNs
YXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFnZTsKIGNs
YXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtODYsMTEgKzg2
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0
RW5jb2RlZCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nKiwg
RnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7
CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEo
RnJhbWUqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgS1VSTCYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhKEZyYW1lKiwg
Y29uc3QgVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBzdGF0aWMgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGlj
IFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlSnNvbihS
ZXNvdXJjZVR5cGUpOwogICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBl
KGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAgICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNv
dXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwCmluZGV4IGZkODg5NGVmMjJlNDljNzU2NGFiZDk4MGM4MjJiMDQwYTU3NDU2
MjIuLmIwOTU4MDU2ZDEyYWEzYmY3MTA4MTZmOTYyYWJiNjllMDVkMDQwNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hv
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDM3M2NhNWRhMDY0MWU5OTkxYmQ3ZWI1ZjExMDg2NjJmZmFkMGI5NmQu
Ljk4YmE1MjU2MDQwODA4ZWViYjRjMGFiYzcyN2RjY2Q4NzI2Y2JkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KHVucwogICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHhoclJlcGxheURhdGEpOwogfQogCi12b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBh
c3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQordm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Ojp3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKQogewogICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiB4aHJSZXBsYXlE
YXRhID0gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKG1ldGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEs
IGluY2x1ZGVDcmVkZW50aWFscyk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gaGVhZGVycy5lbmQoKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxk
SW5pdGlhdAogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCi12b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCkKIHsKICAgICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRDcmVhdGVkKElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmlu
ZGV4IDNkN2E2N2QwZGE2NjNiMzA0NTA0NmU4ZTA1OGIwZTNlMjQxNDU5YTMuLjU3YTIxZmE5MzU4
NDE0ZDFiMzZkOWZkYzk0NDY0YTUyNTdhMTE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgdm9pZCB3
aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBib2R5LCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlhbHMpOworICAg
IHZvaWQgd2lsbExvYWRYSFIoVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBib2R5
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlhbHMp
OwogICAgIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwog
ICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKQEAg
LTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCopOwogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7CisgICAgdm9pZCBkaWRD
cmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwpOwogICAgIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tl
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDdjYzEwZjUyNzI2YjNjYzI5ZjFiZGYx
ZjBjYzY2YTdlZWU4YTgxYTguLjEzOTBhMDFlMmMwOTU5OTU3NDQ3YzI0MmUyZmEwODgwYThiOTIz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTEzODIsNyArMTM4Miw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVz
b3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIAogICAgIFN0cmluZyBl
cnJvcjsKICAgICBib29sIGJhc2U2NEVuY29kZWQ7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50Ojpy
ZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCksIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQsICZiYXNlNjRF
bmNvZGVkKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCgmZXJyb3Is
IG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgbV9wYWdlU3R5
bGVTaGVldC0+aHJlZigpKSwgcmVzdWx0LCAmYmFzZTY0RW5jb2RlZCk7CiAgICAgcmV0dXJuIGVy
cm9yLmlzRW1wdHkoKSAmJiAhYmFzZTY0RW5jb2RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDI2NTE0ZTYz
YTRiZjA0ZWI5NmNmNDZkNWY5NzM5MTdhYWYzNzkyNjMuLjdhZmFmYzA5NDQyZmIyZDBkMGYyZDZk
NTQ0ZDA3ZjJjYjBjNDYwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSgpCiB9CiAKICNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQogewogICAgIGFw
cGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURh
dGEoaWRlbnRpZmllciwgdXJsLCBwcm90b2NvbCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29j
a2V0Q3JlYXRlLCB0cnVlLCBmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBiYmUwMGI2NGVmODRlOGVlMTFhMzIw
YjVkZWZiMjJmMGQ4ZDk0Nzk5Li40NTkyY2IxNjc1ODE4ZGI0MWFjZjYzZmEyYmU3MGQ0MGI0MWNk
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgSW50
UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEZyYW1lKik7CisgICAg
dm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSopOwogICAgIHZvaWQgd2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUq
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDhhYWE3YzY3MzcwNzg4
YzBmN2JkMjRjNjBiMWIzZjI4Njk0MWQ0YzYuLjZiN2ZkZWI4Y2VjMTFlMjY3NjY4ZGU4ODEyODlm
MzU0NDY1MDY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0
YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkKICAg
ICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0YXRlOjphdXRvY29ubmVj
dFRvV29ya2Vycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZFN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQ
cm94eSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkU3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxT
Y29wZVByb3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX2RlZGljYXRlZFdvcmtlcnMuc2V0
KHdvcmtlckdsb2JhbFNjb3BlUHJveHksIHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKG1faW5zcGVj
dG9yRnJvbnRlbmQgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0YXRlOjp3b3Jr
ZXJJbnNwZWN0aW9uRW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDUxZjkwNmU2M2JmYzE3OGM5MjgxNjZjOWZmMDRmN2Vi
OTA4MTIwNjAuLjg5N2RlMzZlMjQ1YmQ0MTNlMzVjYTM3OGRkZGE3ZmFlMzQ5MjhjMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICBib29sIHNo
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpOwotICAgIHZvaWQgZGlkU3RhcnRXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VSTCYpOworICAg
IHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5Kiwg
Y29uc3QgVVJMJik7CiAgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCmluZGV4IDNmYzM1MDIwNmNjOGMwYTAyZTMzMDE3ODlhMGFjODYwNzJhNGY1
YmEuLjk2OWQzMGQ3ZTAxZjQzZDIyMWIxMDAzOWQyN2I5N2NhOTkyMjY3MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gMTAgKiAxMDAwICogMTAwMDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzUmVmUHRy
PFhIUlJlcGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3Jt
RGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+
IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1
ZGVDcmVkZW50aWFscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEo
bWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxzKSk7CiB9CkBA
IC01OSw3ICs1OSw3IEBAIHZvaWQgWEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKGNvbnN0IEF0b21p
Y1N0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faGVhZGVycy5zZXQoa2V5
LCB2YWx1ZSk7CiB9CiAKLVhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5n
ICZtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZm9ybURhdGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQorWEhSUmVwbGF5RGF0YTo6WEhS
UmVwbGF5RGF0YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50aWFs
cykKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fYXN5
bmMoYXN5bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCmluZGV4IDQxNmQ1M2RmZDFhOTIzZWVkNjEwY2NmNzM4NzBkM2EyZWE3YmMyYjcuLjFh
NDI5NDgxYTk4MmE4OTQyNjVjMzVlM2VkYmE1Mjc2ZDBkNzdiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3ICszMSw3IEBA
CiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFn
ZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtNTEsMjAgKzUxLDIwIEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiAKIGNsYXNzIFhIUlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxYSFJSZXBsYXlE
YXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0
IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscyk7CiAKICAgICB2b2lkIGFkZEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nJiBtZXRob2QoKSBjb25zdCB7
IHJldHVybiBtX21ldGhvZDsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgIGJvb2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CiAgICAgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRhOyB9CiAgICAg
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyczsg
fQogICAgIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRl
Q3JlZGVudGlhbHM7IH0KIHByaXZhdGU6Ci0gICAgWEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcg
Jm1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBi
b29sIGluY2x1ZGVDcmVkZW50aWFscyk7CisgICAgWEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcg
Jm1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJv
b2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKIAogICAgIFN0cmluZyBtX21ldGhvZDsKLSAgICBLVVJM
IG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fYXN5bmM7CiAgICAgUmVmUHRyPEZv
cm1EYXRhPiBtX2Zvcm1EYXRhOwogICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IDI4
NzJmMjZhNDkwMGRjZWEwZDUwNzcwZjI2NDc0YjlmNTU2NDNkOWIuLmNhMzM0MWJlZGUyOWRmODFl
OTlkOTE2YWRhZmUwZDZhMGI3MzlkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
dm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRR
dWFkJik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICAgICAgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKaW5kZXggOWNiMWRjZWI2M2NkOTc1OWM2
N2VjNjUzMjAwMWNjYmNjYzk1MzgzMS4uZTkzZDFjYTIwMTY1YTU2ZGFjZjk1ZjljOTZiYzdhNzUz
YTVmODBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTU5LDEzICs1OSwx
MyBAQCBpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQpCiAjZGVmaW5lIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiBzZXNzaW9uKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSk7CiAj
ZW5kaWYKIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpCiAgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2llc0ZvckRPTShzZXNz
aW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKIH0KIAotdm9pZCBz
ZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBMT0NBTF9T
RVNTSU9OKGRvY3VtZW50KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRl
Z3koKS0+c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKQEAgLTc3LDE5ICs3NywxOSBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRW5hYmxlZChzZXNzaW9u
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgp
KTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKIH0KIAotYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykK
IHsKICAgICBMT0NBTF9TRVNTSU9OKGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZG9jdW1l
bnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCwgY29va2llcyk7CiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAg
ICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29v
a2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDYwZGVkMTQwY2UwZWIzMjEwMzJkODY0YTY1
MTkyNTQxMmZmYmY2YmQuLmE5NmFlNDVhY2VmMzkzYTRkN2NhNjgwNDQ4YWI0N2U1ZjNmNTU2NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTM0LDE5ICszNCwxOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiBzdHJ1Y3QgQ29va2llOwogCiAvLyBGdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHRha2UgYSBEb2N1
bWVudCBwb2ludGVyIHRvIGRldGVybWluZSB3aGljaCBjb29raWUgc3RvcmFnZSB0byB1c2UuIFdl
IHNob3VsZCBtZXJnZSB0aGF0IGludG8gY2FsbCBzaXRlcywgYW5kIHVzZSBQbGF0Zm9ybUNvb2tp
ZUphciBkaXJlY3RseS4KIAogLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBpbXBsZW1lbnQgZG9jdW1l
bnQuY29va2llIEFQSSwgd2l0aCBzcGVjaWFsIHJ1bGVzIGZvciBIdHRwT25seSBjb29raWVzLgot
U3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Ci12b2lkIHNldENv
b2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcp
OworU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmKTsKK3ZvaWQgc2V0
Q29va2llcyhEb2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KTsKIAogYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopOwotU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwot
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Citib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwordm9pZCBk
ZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA0YTE3ZGZkZGZkMWE1OTcz
NDVjZTI0ZDFmZDAwZjlhYmIyOWExYTJkLi4zNTgwYTUwNGZkZDcyYWQyMDdmYTU3MzcwZTFjNDE4
MTVmYTNjYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlJiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlOjpzaGFyZWQoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAotdm9pZCBDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJ
dGVtPiBwcmVmbGlnaHRSZXN1bHQpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgUGFz
c093blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gcHJlZmxpZ2h0UmVz
dWx0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wcmVmbGlnaHRIYXNo
TWFwLnNldChtYWtlX3BhaXIob3JpZ2luLCB1cmwpLCBwcmVmbGlnaHRSZXN1bHQpOwogfQogCi1i
b29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHMgaW5j
bHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1h
cCYgcmVxdWVzdEhlYWRlcnMpCitib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6
OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBT
dG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDo6aXRl
cmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0SGFzaE1hcC5maW5kKG1ha2VfcGFpcihvcmlnaW4s
IHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgKaW5kZXggMGQ2NDMzOGIyNjMxMjBlYTM1Y2FlNjJlMjQ3OTQ3
MjQ5ZjJjNzRhNy4uZDRjNDgyY2U0OGZjMDdjNWZmYzY2YWFlNTAyZGIzOTczMjc5NmIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGVfaAogI2RlZmluZSBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
X2gKIAotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03MCwxNSArNzAsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUmIHNoYXJlZCgpOwogCi0gICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVJdGVtPik7Ci0gICAgICAgIGJvb2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFN0b3JlZENyZWRlbnRpYWxzLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpOworICAgICAg
ICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmLCBQYXNz
T3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPik7CisgICAgICAgIGJv
b2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgVVJMJiwgU3Rv
cmVkQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVycyk7CiAKICAgICAgICAgdm9pZCBlbXB0eSgpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSgpIHsgfQogCi0gICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwgT3duUHRyPENyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiA+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0SGFzaE1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFVS
TD4sIE93blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gPiBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA7CiAKICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRIYXNoTWFwIG1fcHJlZmxpZ2h0SGFzaE1hcDsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcAppbmRleCA0YjIyZjcyM2JmODQ3MjIz
NTg5YWU1NzY0ZjdmYzhiYWIxMDJkZDM2Li4zYTAyYjIzMTBlOTI4YzllYzRjMmNmM2Y2NDY1YzU0
OTk2ZmRmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
VGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6c2V0TmF2aWdh
dGlvblN0YXJ0KGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQpCiAgICAgbV9uYXZpZ2F0aW9uU3RhcnQg
PSBuYXZpZ2F0aW9uU3RhcnQ7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRp
cmVjdChjb25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVy
bCkKK3ZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGly
ZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpCiB7CiAgICAgbV9yZWRpcmVjdENv
dW50Kys7CiAgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmgKaW5kZXggNjQ0OTQzMzBkNTA2Yzg3ZWY5OTEyNGIyMzY5Yjg3
NWU0ODJmNWU1MC4uODU0MDkwMWViMzZkMzhmNWE3NGRlNjg3YTYwY2E1MTM5ZDc3M2YyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaApAQCAtMzEsNyArMzEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAKIGNsYXNzIERvY3VtZW50TG9hZFRpbWluZyB7CiBwdWJsaWM6CkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFya05hdmlnYXRpb25TdGFydCgpOwogICAg
IHZvaWQgc2V0TmF2aWdhdGlvblN0YXJ0KGRvdWJsZSk7Ci0gICAgdm9pZCBhZGRSZWRpcmVjdChj
b25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVybCk7Cisg
ICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwm
IHJlZGlyZWN0ZWRVcmwpOwogCiAgICAgdm9pZCBtYXJrVW5sb2FkRXZlbnRTdGFydCgpIHsgbV91
bmxvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KICAgICB2
b2lkIG1hcmtVbmxvYWRFdmVudEVuZCgpIHsgbV91bmxvYWRFdmVudEVuZCA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCBmMjhiMGQ1N2E0Yzc5ZjJmOTM5MTJmYWI1ZWQzNDVjN2YyZTc2Y2JmLi5iYmZi
YTEzNWE3YmRjY2U0ZWM0ZGVjN2UxYWE0YTFjZjU4MGMzYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4MywxMiArMTgzLDEyIEBAIFJlc291cmNlUmVx
dWVzdCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3QoKQogICAgIHJldHVybiBtX3JlcXVlc3Q7CiB9
CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBE
b2N1bWVudExvYWRlcjo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgp
OwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1bWVudExvYWRlcjo6cmVw
bGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIG1fb3JpZ2luYWxSZXF1ZXN0Q29weS5zZXRVUkwodXJsKTsKICAgICBtX3JlcXVlc3Qu
c2V0VVJMKHVybCk7CkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNQ
b3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QK
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KERvY3Vt
ZW50TG9hZGVyVGltZXIqKQogewotICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5yZXNw
b25zZVVSTCgpOworICAgIFVSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7
CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1fcmVxdWVzdC51cmwoKTsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1l
VHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVE
YXRhLnRleHRFbmNvZGluZygpLCAiIik7CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkK
ICAgICBpZiAoaXNTdG9wcGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9
IG1fcmVxdWVzdC51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgCiAgICAg
c3dpdGNoIChwb2xpY3kpIHsKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbgogI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKE1BQykKICAgICAvLyBXb3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjA2MDc4Mj4KICAgICBpZiAobV9yZXNwb25zZS5pc051
bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4
dC9odG1sIiwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2UoVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkp
OwogI2VuZGlmCiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2Fs
bGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBA
IC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3Vy
Y2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlKQogICAgIG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi1QYXNzUmVmUHRy
PEFyY2hpdmU+IERvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8QXJjaGl2ZT4gRG9j
dW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVBcmNoaXZlKGZy
YW1lTmFtZSwgdXJsKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CiB9CkBAIC0xMDI5LDcgKzEw
MjksNyBAQCBTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
CiAKLUFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVS
TChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVy
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA1
MSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVy
OjptYWluUmVzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShkYXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFt
ZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNDb21taXR0ZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpnZXRT
dWJyZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZQog
ICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxS
ZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsK
ICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBpdC0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoVVJMKFBhcnNlZFVSTFN0cmluZywgaXQt
PnZhbHVlLT51cmwoKSkpOwogICAgICAgICBpZiAoc3VicmVzb3VyY2UpCiAgICAgICAgICAgICBz
dWJyZXNvdXJjZXMuYXBwZW5kKHN1YnJlc291cmNlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtMTIx
MCw3ICsxMjEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUpCiAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlVGl0bGUo
dGhpcyk7CiB9CiAKLUtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAor
VVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAgICAvLyBSZXR1
cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4KICAgICAvLyBS
ZXR1cm5zIG5pbCBmb3IgV2ViRGF0YVByb3RvY29sIFVSTHMgdGhhdCBhcmVuJ3QgYWx0ZXJuYXRl
cwpAQCAtMTIyNiwyNCArMTIyNiwyNCBAQCBib29sIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgfHwgbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMDsKIH0KIAotY29u
c3QgS1VSTCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKK2NvbnN0IFVSTCYg
RG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcmln
aW5hbFJlcXVlc3RDb3B5LnVybCgpOwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6
cmVxdWVzdFVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpyZXF1ZXN0VVJM
KCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgpOwogfQogCi1jb25zdCBLVVJM
JiBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX3Jlc3BvbnNlLnVy
bCgpOwogfQogCi1LVVJMIERvY3VtZW50TG9hZGVyOjpkb2N1bWVudFVSTCgpIGNvbnN0CitVUkwg
RG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKIHsKLSAgICBLVVJMIHVybCA9IHN1
YnN0aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKKyAgICBVUkwgdXJsID0gc3Vic3RpdHV0ZURh
dGEoKS5yZXNwb25zZVVSTCgpOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkKICAgICBpZiAodXJs
LmlzRW1wdHkoKSAmJiBtX2FyY2hpdmUgJiYgbV9hcmNoaXZlLT50eXBlKCkgPT0gQXJjaGl2ZTo6
V2ViQXJjaGl2ZSkKICAgICAgICAgdXJsID0gbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKS0+dXJs
KCk7CkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBjb25zdCBTdHJpbmcmIERvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgp
OwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVVUkwoKSBjb25z
dAorY29uc3QgVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVVUkwoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNGJkMmM3YWU0NzkzNWYxYzRiNTU0MjI3YWFm
ZWY3MWQxYTZkOTE2ZS4uZTI3ZWQ0OGIwOTkzNWE3NmMwYmU1ZjIwNGJhN2ViN2M1N2U1MjUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTEwOSwxNSArMTA5LDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YTsgfQogCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSBzYW1lIGFzIHJlcXVlc3RVUkwoKS4gV2Ugc2hvdWxk
IHJlbW92ZSBvbmUgb2YgdGhlbS4KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0g
ICAgICAgIGNvbnN0IEtVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBj
b25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0OwotICAgICAg
ICBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJl
c3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25z
dDsKKyAgICAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXNwb25z
ZU1JTUVUeXBlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZXBsYWNlUmVxdWVzdFVSTEZvclNh
bWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYpOworICAgICAgICB2b2lkIHJlcGxhY2VS
ZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsKICAgICAgICAg
Ym9vbCBpc1N0b3BwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BwaW5nOyB9CiAgICAgICAg
IHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBzZXRDb21taXR0ZWQoYm9vbCBjb21t
aXR0ZWQpIHsgbV9jb21taXR0ZWQgPSBjb21taXR0ZWQ7IH0KQEAgLTE0MiwyMCArMTQyLDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBcmNoaXZlKFBhc3NSZWZQdHI8
QXJjaGl2ZT4pOwogICAgICAgICB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSop
OwogICAgICAgICB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4pOwotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFt
ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgS1VSTCYpOworICAgICAgICBQYXNzUmVm
UHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgVVJMJik7CiAgICAgICAgIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdDsKIAogICAgICAgICBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKIAogICAgICAgICAvLyBSZXR1cm4gdGhlIEFyY2hpdmVSZXNv
dXJjZSBmb3IgdGhlIFVSTCBvbmx5IHdoZW4gbG9hZGluZyBhbiBBcmNoaXZlCi0gICAgICAgIEFy
Y2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJM
JikgY29uc3Q7CiAKICAgICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNv
dXJjZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybiBhbiBBcmNoaXZlUmVzb3VyY2UgZm9y
IHRoZSBVUkwsIGVpdGhlciBjcmVhdGluZyBmcm9tIGxpdmUgZGF0YSBvcgogICAgICAgICAvLyBw
dWxsaW5nIGZyb20gdGhlIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24KLSAgICAgICAgUGFzc1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAg
ICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0IFVSTCYp
IGNvbnN0OwogICAgICAgICB2b2lkIGdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFzc1JlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+ID4mKSBjb25zdDsKIAogCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VUaXRsZTsgfQogCi0gICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OworICAg
ICAgICBVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3Rv
cnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBUaGVzZSBhY2Nlc3NvcnMg
YWNjb21tb2RhdGUgV2ViQ29yZSdzIHNvbWV3aGF0IGZpY2tsZSBjdXN0b20gb2YgY3JlYXRpbmcg
aGlzdG9yeQpAQCAtMjU3LDcgKzI1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2
YXRlOgogCiAgICAgICAgIC8vIFRoZSBVUkwgb2YgdGhlIGRvY3VtZW50IHJlc3VsdGluZyBmcm9t
IHRoaXMgRG9jdW1lbnRMb2FkZXIuCi0gICAgICAgIEtVUkwgZG9jdW1lbnRVUkwoKSBjb25zdDsK
KyAgICAgICAgVVJMIGRvY3VtZW50VVJMKCkgY29uc3Q7CiAgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggM2ZlNTZmM2YyNGQ0ZDQ3ZjRjN2E1ZjEyZWI2ZWUxZGY2MTI5M2Ez
YS4uYjBkODYxNjJhZDVlZDU5OWUxY2Y3Mjc4ZjBjNTRjZDQzNWE2MjNmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFp
bHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
ZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgLy8gQW55IGNyZWRlbnRp
YWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNpdGUgcmVxdWVzdHMu
Ci0gICAgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBtX29wdGlvbnMuc2VjdXJpdHlD
aGVjayA9IHNlY3VyaXR5Q2hlY2s7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwg
cmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVx
dWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOwpAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVy
LCAwLjApOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVk
aXJlY3QoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omlz
QWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX29wdGlvbnMuY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKaW5kZXggMGNlOTk3YTdmNmZjZmFmYjFjMzdhY2U5NGY2NjlkYjZhMDdl
MTE1OS4uYmYzMWJhMzEwYWNjODNmMmJkNDY1Zjc3ODFkNDQ0M2VjMDViZTc1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtNDUs
NyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlOwogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
ICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OwpAQCAtOTUsNyArOTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVz
Y3JpcHRpb24pOwogCiAgICAgICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7Ci0gICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJl
Y3QoY29uc3QgS1VSTCYpOworICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVS
TCYpOwogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCAxYWMxNDc0YjQy
OTM4OTA4Mzg4N2FiMWYxZWY3NGM4NzU2MDM3NmM0Li4zZTYxNDVlNTE1NzBlNjA1MTc5YTQ0YjMx
YjI1ZjZlNmE5OTI4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmNsZWFyKCkKIAog
dm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKQogewotICAgIGJlZ2luKEtVUkwoKSk7CisgICAg
YmVnaW4oVVJMKCkpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6
Y3JlYXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxEb2N1bWVudD4gRG9j
dW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9mcmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0
eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNl
UGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVu
dDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CkBAIC0xMTIsMTIgKzExMiwxMiBAQCBQYXNzUmVmUHRy
PERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJs
KQogICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlw
ZSwgbV9mcmFtZSwgdXJsLCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpOwogfQogCi12b2lk
IERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlz
cGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQordm9pZCBEb2N1bWVudFdyaXRlcjo6YmVn
aW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25l
ckRvY3VtZW50KQogewogICAgIC8vIFdlIGdyYWIgYSBsb2NhbCBjb3B5IG9mIHRoZSBVUkwgYmVj
YXVzZSBpdCdzIGVhc3kgZm9yIGNhbGxlcnMgdG8gc3VwcGx5CiAgICAgLy8gYSBVUkwgdGhhdCB3
aWxsIGJlIGRlYWxsb2NhdGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgZnVuY3Rpb24u
CiAgICAgLy8gRm9yIGV4YW1wbGUsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MzYwPi4KLSAgICBLVVJMIHVybCA9IHVybFJlZmVyZW5jZTsKKyAgICBVUkwg
dXJsID0gdXJsUmVmZXJlbmNlOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGRvY3VtZW50IGJlZm9y
ZSBjbGVhcmluZyB0aGUgZnJhbWUsIGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8KICAgICAvLyBpbmhl
cml0IGFuIGFsaWFzZWQgc2VjdXJpdHkgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKaW5kZXggM2Q5MGI5ZDg3M2ZlMDRiNzlkMTg2ODkxYTc4MWM3ZjdjNjM2OGE2
OS4uODFkMGYxMjlkZmUzYzViOTU1NDcwYzlmNWQyMDM0YzkzZmYwNmE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgRG9j
dW1lbnRXcml0ZXJfaAogI2RlZmluZSBEb2N1bWVudFdyaXRlcl9oCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsK
IAogICAgIHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGJlZ2luKGNvbnN0IEtVUkwmLCBib29sIGRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQgPSAwKTsKKyAgICB2b2lkIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dP
YmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAgICAgdm9p
ZCBlbmQoKTsKICAgICAKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RG9j
dW1lbnRXYXNMb2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oKTsKIAogcHJpdmF0ZToKLSAgICBQYXNz
UmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJik7CisgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBjbGVh
cigpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCmluZGV4IDBmODhlZWIxOTlmZGQ1ZGFlZWMwZjgwOTU3Y2UwNjdjN2ZiNzdlNTMuLmVm
NjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4YjY4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBQYXNzUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBSZQogICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQorUGFzc1JlZlB0cjxG
cmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBpbnQpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICByZXR1cm4gMDsKIH0K
QEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4oV2lkZ2V0KikKIHsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxN
ZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5MTljYTg0YTRiOTI3NTc3MmMxZGNiNTc1
NTkxN2NkYTIyNjYzZGUwLi4zM2IyYjkxYzBiYjM0MGFmOGIxMGE3NGZmNmVkMGZiMTFmMmY4NDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNDMsNyArMjQzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlLCBkb3VibGUpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwg
ZG91YmxlLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hT
dGF0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgeyB9CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlVmlld1N0YXRlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIHsgfQogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
S1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgVVJMJikgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgS1VSTCYpIHsgcmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIHsgcmV0dXJuICIiOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRm
b3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgeyB9CkBA
IC0zMzgsMTkgKzMzOCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3Rh
dGVUb0l0ZW0oSGlzdG9yeUl0ZW0qKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdpZGdldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklE
RTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgeyB9
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5
cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9iamVjdENvbnRl
bnRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9iamVjdENvbnRl
bnRUeXBlKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2lkZ2V0KikgeyB9CkBAIC01MTcsNyArNTE3LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSos
IGNvbnN0IENvbnRleHRNZW51KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgSGl0VGVz
dFJlc3VsdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZy
YW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggOWJmNDQyYTll
OTRkNmM1ZmMzOGVmN2NmNzQyNWZhMDA3NzMwZDdmNS4uM2M0MWVmZTEyNjdiMmFiZDY0MTQ3ZTE0
YTBkOWYxODI2NzYxY2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlRm9ybURhdGFJZGVu
dGlmaWVyKCkKICAgICByZXR1cm4gKytuZXh0SWRlbnRpZmllcjsKIH0KIAotc3RhdGljIHZvaWQg
YXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoS1VSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCitzdGF0aWMgdm9pZCBhcHBlbmRNYWls
dG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdUeXBlKQogewogICAgIFN0cmluZyBib2R5ID0gZGF0YS5mbGF0dGVu
VG9TdHJpbmcoKTsKIApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAog
CiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJp
bmcmIGFjdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHBhcnNlIGludG8gYSBLVVJMPwor
ICAgIC8vIEZJWE1FOiBDYW4gd2UgcGFyc2UgaW50byBhIFVSTD8KICAgICBtX2FjdGlvbiA9IHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhY3Rpb24pOwogfQogCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6Y29weUZyb20oY29uc3Qg
QXR0cmlidXRlcyYgb3RoZXIpCiAgICAgbV9hY2NlcHRDaGFyc2V0ID0gb3RoZXIubV9hY2NlcHRD
aGFyc2V0OwogfQogCi1pbmxpbmUgRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNzaW9uKE1ldGhv
ZCBtZXRob2QsIGNvbnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlz
dG9yeSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCitpbmxpbmUgRm9ybVN1Ym1pc3Npb246OkZv
cm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJvdW5k
YXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKICAgICAsIG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1fdGFyZ2V0KHRh
cmdldCkKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgIH0K
ICAgICAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmb3JtLT5kb2N1bWVudCgpOwotICAgIEtV
UkwgYWN0aW9uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwoY29waWVkQXR0cmlidXRlcy5hY3Rp
b24oKS5pc0VtcHR5KCkgPyBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSA6IGNvcGllZEF0dHJpYnV0
ZXMuYWN0aW9uKCkpOworICAgIFVSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChj
b3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50LnVybCgpLnN0cmlu
ZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CiAgICAgYm9vbCBpc01haWx0b0Zvcm0g
PSBhY3Rpb25VUkwucHJvdG9jb2xJcygibWFpbHRvIik7CiAgICAgYm9vbCBpc011bHRpUGFydEZv
cm0gPSBmYWxzZTsKICAgICBTdHJpbmcgZW5jb2RpbmdUeXBlID0gY29waWVkQXR0cmlidXRlcy5l
bmNvZGluZ1R5cGUoKTsKQEAgLTIyMiwxMiArMjIyLDEyIEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1p
c3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25z
dCBBCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlzc2lvbihjb3BpZWRBdHRyaWJ1
dGVzLm1ldGhvZCgpLCBhY3Rpb25VUkwsIHRhcmdldE9yQmFzZVRhcmdldCwgZW5jb2RpbmdUeXBl
LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5kYXJ5LCBsb2Nr
SGlzdG9yeSwgZXZlbnQpKTsKIH0KIAotS1VSTCBGb3JtU3VibWlzc2lvbjo6cmVxdWVzdFVSTCgp
IGNvbnN0CitVUkwgRm9ybVN1Ym1pc3Npb246OnJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIGlm
IChtX21ldGhvZCA9PSBGb3JtU3VibWlzc2lvbjo6UG9zdE1ldGhvZCkKICAgICAgICAgcmV0dXJu
IG1fYWN0aW9uOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKKyAgICBVUkwgcmVx
dWVzdFVSTChtX2FjdGlvbik7CiAgICAgcmVxdWVzdFVSTC5zZXRRdWVyeShtX2Zvcm1EYXRhLT5m
bGF0dGVuVG9TdHJpbmcoKSk7ICAgIAogICAgIHJldHVybiByZXF1ZXN0VVJMOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCA0ZDM1OTNiNDZlNWUyYjBmMTZkMDZl
OGY0OGY5OThiMThjY2FlZDg2Li5jMmY4M2Q1M2Y4OTE1MGVmOTFhZjA5ZWYzY2Q5ZDYzMTk0OWFm
ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtMzIsNyArMzIs
NyBAQAogI2RlZmluZSBGb3JtU3VibWlzc2lvbl9oCiAKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtOTIsMTAgKzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wdWxhdGVGcmFt
ZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmKTsKICAgICAKLSAgICBLVVJMIHJlcXVlc3RV
UkwoKSBjb25zdDsKKyAgICBVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgTWV0aG9kIG1l
dGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VSTCYgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KKyAgICBjb25zdCBVUkwmIGFjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXQoKSBjb25z
dCB7IHJldHVybiBtX3RhcmdldDsgfQogICAgIHZvaWQgY2xlYXJUYXJnZXQoKSB7IG1fdGFyZ2V0
ID0gU3RyaW5nKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50VHlwZTsgfQpAQCAtMTExLDExICsxMTEsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2lu
OyB9CiAKIHByaXZhdGU6Ci0gICAgRm9ybVN1Ym1pc3Npb24oTWV0aG9kLCBjb25zdCBLVVJMJiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBTdHJpbmcm
IGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgRm9y
bVN1Ym1pc3Npb24oTWV0aG9kLCBjb25zdCBVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3Rv
cnksIFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBIb2xkIGFuIGluc3RhbmNl
IG9mIEF0dHJpYnV0ZXMgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIG1lbWJlcnMuCiAgICAgTWV0aG9k
IG1fbWV0aG9kOwotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9uOwogICAgIFN0
cmluZyBtX3RhcmdldDsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBtX2Zvcm1TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDRiNzhlNGE0NmRjZDdlNzE0ZGFhYzBmMzY5YWYyMDUyOWQ5NjBkYTkuLjE5MTRjYmUxMmYy
ZjZhYmU1MjQzODdjYTk0MmRmZjMyNzkzMDZkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEZyYW1lTG9hZGVyOjp+RnJhbWVMb2FkZXIo
KQogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiB7CiAgICAgLy8gVGhpcyBzb21ld2hhdCBvZGQg
c2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50Lgot
ICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVy
KFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBT
dWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9j
bGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxT
dHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNl
dFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7
CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKQEAgLTI4Nywx
MyArMjg3LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZl
cnMpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29s
IHJlZnJlc2gpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgcmVmcmVz
aCkKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KHNlY3VyaXR5T3JpZ2luLCBS
ZXNvdXJjZVJlcXVlc3QodXJsLCByZWZlcnJlciwgcmVmcmVzaCA/IFJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSksICJfc2VsZiIpLAogICAgICAgICAwLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgTWF5YmVTZW5kUmVmZXJyZXIsIFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNl
bGVjdGVkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NS
ZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyKQor
dm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
IHNob3VsZFNlbmRSZWZlcnJlcikKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0
KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVy
bCksIHBhc3NlZFRhcmdldCksCiAgICAgICAgIHRyaWdnZXJpbmdFdmVudCwgbG9ja0hpc3Rvcnks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgRG9Ob3RSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKICAg
ICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlzc2lvbi0+YWN0aW9uKCkp
KSB7Ci0gICAgICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dGb3JtQWN0aW9uKEtVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKKyAgICAg
ICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CiAg
ICAgICAgIG1fZnJhbWUuc2NyaXB0KCkuZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChzdWJtaXNzaW9u
LT5hY3Rpb24oKSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtNjQ4
LDcgKzY0OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBt
X2ZyYW1lLm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KGRlbGF5LCB1cmwp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJyZXIoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gdXJsLnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpOwogfQpAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ2Fs
bEltcGxpY2l0Q2xvc2UoKQogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW1wbGljaXRDbG9zZSgp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQordm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewogICAgIEFTU0VSVChjaGlsZEZy
YW1lKTsKIApAQCAtODg2LDcgKzg4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRBcmNoaXZl
KFBhc3NSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSkKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YShtYWluUmVzb3VyY2UtPmRhdGEoKSwgbWFpblJlc291cmNlLT5taW1lVHlwZSgpLCBtYWluUmVz
b3VyY2UtPnRleHRFbmNvZGluZygpLCBLVVJMKCkpOworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0
aXR1dGVEYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCks
IG1haW5SZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIFVSTCgpKTsKICAgICAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChtYWluUmVzb3VyY2UtPnVybCgpKTsKICNpZiBQTEFURk9STShNQUMp
CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1Jl
ZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkg
fHwgRU5BQkxFKE1IVE1MKQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlcjo6ZGVmYXVs
dE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlw
ZSBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cykKIHsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZUluOwogCkBAIC05NTMsNyArOTUz
LDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29uc3Qg
S1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxv
d2VkQnlDU1AoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3VibWl0dGVkRm9y
bVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAwMCw3ICsxMDAwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKQogewotICAg
IG1fc3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKKyAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBV
UkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMo
KQpAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0
eUZvckNvb2tpZXMoKQogICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLmRv
Y3VtZW50KCktPnVybCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1fZnJh
bWUpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
dXJsKTsKQEAgLTEwMTksMTMgKzEwMTksMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQogCiAvLyBUaGlzIGRvZXMgdGhlIHNhbWUg
a2luZCBvZiB3b3JrIHRoYXQgZGlkT3BlblVSTCBkb2VzLCBleGNlcHQgaXQgcmVsaWVzIG9uIHRo
ZSBmYWN0CiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBV
UkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0aGluZyB0byBkby4KLXZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmln
YXRpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgVVJMJiB1
cmwsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBp
c05ld05hdmlnYXRpb24pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXRlIG9iamVjdCwgd2Ug
Y2Fubm90IGFsc28gYmUgYSBuZXcgbmF2aWdhdGlvbi4KICAgICBBU1NFUlQoIXN0YXRlT2JqZWN0
IHx8IChzdGF0ZU9iamVjdCAmJiAhaXNOZXdOYXZpZ2F0aW9uKSk7CiAKICAgICAvLyBVcGRhdGUg
dGhlIGRhdGEgc291cmNlJ3MgcmVxdWVzdCB3aXRoIHRoZSBuZXcgVVJMIHRvIGZha2UgdGhlIFVS
TCBjaGFuZ2UKLSAgICBLVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7Cisg
ICAgVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgbV9mcmFtZS5k
b2N1bWVudCgpLT5zZXRVUkwodXJsKTsKICAgICBzZXRPdXRnb2luZ1JlZmVycmVyKHVybCk7CiAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKHVybCk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
RnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hp
cwogICAgIC8vIFByb3RlY3QgZnJhbWUgZnJvbSBnZXR0aW5nIGJsb3duIGF3YXkgaW5zaWRlIGRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIuCiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogCi0gICAgS1VSTCB1cmwgPSByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnVybCgpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsKQEAgLTExOTksNyArMTE5OSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbmV3
TG9hZFR5cGUsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IFVSTCYgbmV3VVJMLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKICAgICBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKIHsKICAgICBpZiAo
bV9pblN0b3BBbGxMb2FkZXJzKQpAQCAtMTI3MiwxNCArMTI3MiwxNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Y29uc3QgU3RyaQogICAgIH0KIH0KIAotU3Vic3RpdHV0ZURhdGEgRnJhbWVMb2FkZXI6OmRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdWJzdGl0dXRlRGF0YSBG
cmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCkpCiAgICAgICAg
IHJldHVybiBTdWJzdGl0dXRlRGF0YSgpOwogICAgIFN0cmluZyBzcmNkb2MgPSBtX2ZyYW1lLm93
bmVyRWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHNyY2RvY0F0dHIpOwogICAgIEFTU0VSVCgh
c3JjZG9jLmlzTnVsbCgpKTsKICAgICBDU3RyaW5nIGVuY29kZWRTcmNkb2MgPSBzcmNkb2MudXRm
OCgpOwotICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNv
ZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0ZXh0L2h0bWwiLCAi
VVRGLTgiLCBLVVJMKCkpOworICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0
ZXh0L2h0bWwiLCAiVVRGLTgiLCBVUkwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCkKQEAgLTEzODYsNyArMTM4Niw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlID0gcHJwRm9ybVN0YXRlOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZvcm1TdGF0
ZTsKIAotICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9IGxvYWRlci0+cmVxdWVzdCgpLnVybCgpOwor
ICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCk7CiAgICAgY29u
c3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgpOwog
CiAgICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNGb3JtU3VibWlzc2lv
biwgaHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5ld1VSTCkpIHsKQEAg
LTE0MzgsNyArMTQzOCw3IEBAIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6Omlu
aXRpYWxSZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
b3JpZ2luYWxSZXF1ZXN0KCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFF
bGVtZW50VVJMKEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKFVSTCYgdXJsKQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAK
QEAgLTE0NTQsNyArMTQ1NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKEtVUkwmIHVybCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkVG9IYW5k
bGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciogZG9jTG9hZGVyKQogewotICAgIEtVUkwg
dW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgVVJMIHVu
cmVhY2hhYmxlVVJMID0gZG9jTG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogCiAgICAgaWYgKHVu
cmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ4Miw3
ICsxNDgyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7Ci0gICAgS1VSTCB1
bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAg
VVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
ICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRV
UkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQog
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBGcmFtZUxvYWRUeXBlUmVs
b2FkLCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNv
bnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkKQordm9pZCBGcmFtZUxv
YWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYgb3ZlcnJpZGVVcmwsIGJvb2wg
ZW5kVG9FbmRSZWxvYWQpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9v
bCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIFJlcGxhY2UgZXJyb3ItcGFnZSBVUkwgd2l0aCB0
aGUgVVJMIHdlIHdlcmUgdHJ5aW5nIHRvIHJlYWNoLgogICAgIFJlc291cmNlUmVxdWVzdCBpbml0
aWFsUmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKTsKLSAgICBLVVJMIHVucmVh
Y2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBVUkwg
dW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogICAg
IGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5z
ZXRVUkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRo
TG9hZEluUHJvZ3JlcwogICAgIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uID0gZmFsc2U7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYgdXJsLCBk
b3VibGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qp
Cit2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3Vi
bGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7
CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVybCwgc2Vj
b25kcywgZmlyZURhdGUpOwogICAgIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBk
b3VibGUgZmlyZUQKICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJk
TGlzdCB8fCBoaXN0b3J5KCkuY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkpICYmIG1fZG9j
dW1lbnRMb2FkZXIgJiYgIW1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIH0KIAot
Ym9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkKGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwsIGNv
bnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2Fk
KGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCkKIHsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHJ1bGU6ICJEb24ndCByZWxvYWQgaWYg
bmF2aWdhdGluZyBieSBmcmFnbWVudCB3aXRoaW4KICAgICAvLyB0aGUgc2FtZSBVUkwsIGJ1dCBk
byByZWxvYWQgaWYgZ29pbmcgdG8gYSBuZXcgVVJMIG9yIHRvIHRoZSBzYW1lIFVSTCB3aXRoIG5v
CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1l
QmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gRG9uJ3QgcmUtZW1pdCB0aGUgbG9hZCBldmVudC4K
ICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAotICAgIEtVUkwgdXJsID0gY2Fj
aGVkRnJhbWUudXJsKCk7CisgICAgVVJMIHVybCA9IGNhY2hlZEZyYW1lLnVybCgpOwogCiAgICAg
Ly8gRklYTUU6IEkgc3VzcGVjdCB0aGlzIGJsb2NrIG9mIGNvZGUgZG9lc24ndCBkbyBhbnl0aGlu
Zy4KICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhdXJsLmhvc3QoKS5p
c0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5pc0VtcHR5KCkpCkBAIC0yMTQyLDcgKzIxNDIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgICAg
ICAgICAgICAgaWYgKHBkbCA9PSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBLVVJM
IHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwo
KTsKKyAgICAgICAgICAgICAgICAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF1
bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFibGVVUkwgPT0gcGRsLT5yZXF1ZXN0
KCkudXJsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZXNldCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTIyMzAsMTIgKzIyMzAsMTIgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KIAotc3RhdGljIEtV
Ukwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCitzdGF0aWMg
VVJMIG9yaWdpbmF0aW5nVVJMRnJvbUJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdlKQogewogICAg
IC8vIEZJWE1FOiBDYW4gdGhpcyBsb2dpYyBiZSByZXBsYWNlZCB3aXRoIG1fZnJhbWUuZG9jdW1l
bnQoKS0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKT8KICAgICAvLyBJdCBoYXMgdGhlIHNhbWUgbWVh
bmluZyBvZiAicGFnZSBhIHVzZXIgdGhpbmtzIGlzIHRoZSBjdXJyZW50IG9uZSIuCiAKLSAgICBL
VVJMIG9yaWdpbmFsVVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICBpbnQgYmFja0NvdW50
ID0gcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrQ291bnQoKTsKICAgICBmb3IgKGludCBiYWNrSW5k
ZXggPSAwOyBiYWNrSW5kZXggPD0gYmFja0NvdW50OyBiYWNrSW5kZXgrKykgewogICAgICAgICAv
LyBGSVhNRTogQXQgb25lIHBvaW50IHdlIGhhZCBjb2RlIGhlcmUgdG8gY2hlY2sgYSAid2FzIHVz
ZXIgZ2VzdHVyZSIgZmxhZy4KQEAgLTIyNDksMTIgKzIyNDksMTIgQEAgc3RhdGljIEtVUkwgb3Jp
Z2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWxVUkw7CiAgICAgfQogCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1
cm4gVVJMKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93bmxv
YWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBLVVJMIG9yaWdpbmFs
VVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICAKICAgICAvLyBJZiB0aGVyZSBpcyBubyBy
ZWZlcnJlciwgYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBpbml0aWF0ZWQgZGlyZWN0bHks
IHNvIGN1cnJlbnQgZG9jdW1lbnQgaXMKICAgICAvLyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byBp
dC4gU2VlIDxyZGFyOi8vcHJvYmxlbS81Mjk0NjkxPi4KQEAgLTIyODAsNyArMjI4MCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgICAgIGhvc3RPbmx5VVJMU3RyaW5nID0gbWFrZVN0
cmluZyhvcmlnaW5hbFVSTC5wcm90b2NvbCgpLCAiOi8vIiwgb3JpZ2luYWxVUkwuaG9zdCgpKTsK
IAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGZpcnN0UGFydHlGb3JDb29raWVzIGJhY2sgdG8g
bWFpbkRvY3VtZW50VVJMLiBJdCB3YXMgYSBtaXN0YWtlIHRvIHRoaW5rIHRoYXQgaXQgd2FzIG9u
bHkgdXNlZCBmb3IgY29va2llcy4KLSAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhLVVJMKEtVUkwoKSwgaG9zdE9ubHlVUkxTdHJpbmcpKTsKKyAgICAgICAgcmVxdWVzdC5z
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoVVJMKCksIGhvc3RPbmx5VVJMU3RyaW5nKSk7CiAg
ICAgfQogfQogCkBAIC0yMzcyLDcgKzIzNzIsNyBAQCBpbnQgRnJhbWVMb2FkZXI6Om51bVBlbmRp
bmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2UpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50
OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNv
bnN0CitTdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9jbGllbnQudXNlckFnZW50KHVybCk7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlKCZtX2ZyYW1l
LCAmdXNlckFnZW50KTsKQEAgLTI1MzksNyArMjUzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwgY29uc3QgU3Ry
aW5nCiAgICAgLy8gYnVuY2ggb2YgcGFyYW1ldGVycyB0aGF0IHdvdWxkIGNvbWUgaW4gaGVyZSBh
bmQgdGhlbiBiZSBidWlsdCBiYWNrIHVwIHRvIGEgUmVzb3VyY2VSZXF1ZXN0LiAgSW4gY2FzZQog
ICAgIC8vIGFueSBjYWxsZXIgZGVwZW5kcyBvbiB0aGUgaW1tdXRhYmlsaXR5IG9mIHRoZSBvcmln
aW5hbCBSZXNvdXJjZVJlcXVlc3QsIEknbSByZWJ1aWxkaW5nIGEgUmVzb3VyY2VSZXF1ZXN0CiAg
ICAgLy8gZnJvbSBzY3JhdGNoIGFzIGl0IGRpZCBhbGwgYWxvbmcuCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gaW5SZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gaW5SZXF1ZXN0LnVy
bCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpblJlcXVlc3QuaHR0cEJvZHko
KTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gaW5SZXF1ZXN0Lmh0dHBDb250ZW50
VHlwZSgpOwogICAgIFN0cmluZyBvcmlnaW4gPSBpblJlcXVlc3QuaHR0cE9yaWdpbigpOwpAQCAt
MjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRNYWluUmVzb3VyY2VF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIGlmIChtX3N0YXRlID09IEZy
YW1lU3RhdGVQcm92aXNpb25hbCAmJiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpIHsKICAg
ICAgICAgaWYgKG1fc3VibWl0dGVkRm9ybVVSTCA9PSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS51cmwoKSkKLSAgICAgICAgICAgIG1fc3VibWl0dGVk
Rm9ybVVSTCA9IEtVUkwoKTsKKyAgICAgICAgICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IFVSTCgp
OwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgbWFkZSBhIHBhZ2UgY2Fj
aGUgaXRlbSwgYnV0IG5vdyB3ZSdyZSBiYWlsaW5nIG91dCBkdWUgdG8gYW4gZXJyb3IgYmVmb3Jl
IHdlIGV2ZXIKICAgICAgICAgLy8gdHJhbnNpdGlvbmVkIHRvIHRoZSBuZXcgcGFnZSAoYmVmb3Jl
IFdlYkZyYW1lU3RhdGUgPT0gY29tbWl0KS4gIFRoZSBnb2FsIGhlcmUgaXMgdG8gcmVzdG9yZSBh
bnkgc3RhdGUKQEAgLTI2NzEsNyArMjY3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
RnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1CiAg
ICAgbG9hZEluU2FtZURvY3VtZW50KHJlcXVlc3QudXJsKCksIDAsICFpc1JlZGlyZWN0KTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29s
IGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlw
ZSBsb2FkVHlwZSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVy
Zm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmlu
ZyYgaHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBpZiB3ZSBhcmUgc3VibWl0dGluZyBhIGZvcm0gd2l0
aCBtZXRob2Qgb3RoZXIgdGhhbiAiR0VUIiwgZXhwbGljaXRseSByZWxvYWRpbmcsCiAgICAgLy8g
Y3VycmVudGx5IGRpc3BsYXlpbmcgYSBmcmFtZXNldCwgb3IgaWYgdGhlIFVSTCBkb2VzIG5vdCBo
YXZlIGEgZnJhZ21lbnQuCkBAIC0yNjg5LDcgKzI2ODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29u
c3QgUwogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29u
c3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJl
bnRCb3VuZGFyeShjb25zdCBVUkwmIHVybCkKIHsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAgICAgfQogCiAgICAgaWYgKCFzaG91bGRDbG9zZSkK
LSAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICBtX3N1Ym1pdHRl
ZEZvcm1VUkwgPSBVUkwoKTsKIAogICAgIG1fY3VycmVudE5hdmlnYXRpb25IYXNTaG93bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCA9IGZhbHNlOwogICAgIHJldHVybiBzaG91bGRDbG9zZTsKQEAg
LTI5NzcsNyArMjk3Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQodXNlckFn
ZW50KTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBLVVJMJiB1cmwsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIEZlYXR1cmVPYnNl
cnZlcjo6b2JzZXJ2ZShtX2ZyYW1lLmRvY3VtZW50KCksIEZlYXR1cmVPYnNlcnZlcjo6WEZyYW1l
T3B0aW9ucyk7CiAKQEAgLTMwMzUsMTQgKzMwMzUsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKICAgICBjb21taXRQcm92aXNpb25hbExv
YWQoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFoaXN0
b3J5KCkuY3VycmVudEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB1
cmwgPT0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCktPnVybCgpIHx8IHVybCA9PSBoaXN0b3J5KCku
Y3VycmVudEl0ZW0oKS0+b3JpZ2luYWxVUkwoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHVybC5zdHJpbmcoKSwgImFi
b3V0OnNyY2RvYyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTMxLDkgKzMxMzEsOSBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
S1VSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7Ci0gICAgS1VSTCBpdGVtT3JpZ2luYWxVUkwgPSBp
dGVtLT5vcmlnaW5hbFVSTCgpOwotICAgIEtVUkwgY3VycmVudFVSTDsKKyAgICBVUkwgaXRlbVVS
TCA9IGl0ZW0tPnVybCgpOworICAgIFVSTCBpdGVtT3JpZ2luYWxVUkwgPSBpdGVtLT5vcmlnaW5h
bFVSTCgpOworICAgIFVSTCBjdXJyZW50VVJMOwogICAgIGlmIChkb2N1bWVudExvYWRlcigpKQog
ICAgICAgICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAgICAgUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YSA9IGl0ZW0tPmZvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IGY1N2U1ZWY5MGUyNjMyMGRjYTMzMWYyMDVmYmU3OGRiZTI3OTVj
NjUuLjg2NGRiNjU5NTA2Y2ExZGNjOGZiOGE3Y2IxYTM4OTJhNTQ4N2I2ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0dXBGb3JSZXBsYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFsbCBmdW5j
dGlvbnMgd2hpY2ggc3RhcnQgbG9hZHMuIFdlIGhhdmUgdG9vIG1hbnkuCi0gICAgdm9pZCBsb2Fk
VVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJh
bWUqKTsKKyAgICB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7CiAgICAgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsICAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFu
ZCBsb2FkVVJMLgogICAgICAgICBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBk
YXRhKTsKIAotICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJv
b2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJvb2wgcmVmcmVzaCA9IGZhbHNlKTsKLSAg
ICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFz
c1JlZlB0cjxFdmVudD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgU2hvdWxkU2VuZFJlZmVycmVyKTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlz
dG9yeSA9IHRydWUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJvb2wgcmVmcmVz
aCA9IGZhbHNlKTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogICAgIHZvaWQgc3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHJlbG9hZChib29sIGVu
ZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKTsKLSAgICB2b2lkIHJlbG9hZFdpdGhP
dmVycmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCA9
IGZhbHNlKTsKKyAgICB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBVUkwmIG92ZXJy
aWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogCiAgICAgdm9pZCBvcGVuKENh
Y2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0qLCBGcmFtZUxv
YWRUeXBlKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCgpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZWRNYWluUmVz
b3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIHdpbGxMb2FkTWVk
aWFFbGVtZW50VVJMKEtVUkwmKTsKKyAgICBib29sIHdpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVS
TCYpOwogCiAgICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIApAQCAtMTc1LDcgKzE3
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSk7CiAKLSAgICBib29sIHNob3VsZFRy
ZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBzaG91
bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWNlaXZlZEZpcnN0RGF0YSgpOwogCiAgICAgdm9pZCBoYW5kbGVkT25sb2Fk
RXZlbnRzKCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKik7CiAgICAgdm9pZCBk
aXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CkBAIC0yMTksNyArMjE5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZs
YWdzKSB7IG1fZm9yY2VkU2FuZGJveEZsYWdzIHw9IGZsYWdzOyB9CiAgICAgU2FuZGJveEZsYWdz
IGVmZmVjdGl2ZVNhbmRib3hGbGFncygpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja0lmRm9ybUFj
dGlvbkFsbG93ZWRCeUNTUChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBjaGVja0lmRm9y
bUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIEZyYW1lKiBvcGVu
ZXIoKTsKICAgICB2b2lkIHNldE9wZW5lcihGcmFtZSopOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZnJhbWVEZXRhY2hlZCgpOwogCi0gICAgdm9pZCBzZXRPdXRnb2lu
Z1JlZmVycmVyKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNldE91dGdvaW5nUmVmZXJyZXIoY29u
c3QgVVJMJik7CiAKICAgICB2b2lkIGxvYWREb25lKCk7CiAgICAgdm9pZCBmaW5pc2hlZFBhcnNp
bmcoKTsKQEAgLTI0OCwxMSArMjQ4LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHlVc2Vy
QWdlbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBib29sIHNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJh
bWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjb21wbGV0ZWQoKTsKICAgICBib29sIGFsbEFuY2Vz
dG9yc0FyZUNvbXBsZXRlKCkgY29uc3Q7IC8vIGluY2x1ZGluZyB0aGlzCi0gICAgdm9pZCBjbGll
bnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICB2b2lkIGNsaWVudFJlZGlyZWN0ZWQoY29u
c3QgVVJMJiwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCk7CiAgICAgdm9pZCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9v
bCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlc3MpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgcHVi
bGljIGJlY2F1c2UgdGhpcyBhc3luY2hyb25vdXMgY2FsbGJhY2sgZnJvbSB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHByZXNz
T3BlbmVySW5OZXdGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0Zy
YW1lOyB9CiAKLSAgICBzdGF0aWMgT2JqZWN0Q29udGVudFR5cGUgZGVmYXVsdE9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHN0YXRpYyBPYmplY3RDb250ZW50VHlwZSBkZWZh
dWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIGJvb2wgcXVpY2tSZWRp
cmVjdENvbWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tSZWRpcmVjdENvbWluZzsgfQogCkBA
IC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3NpbmdTdGF0
dXNDaGFuZ2VkKCk7CiAKLSAgICBjb25zdCBLVVJMJiBwcmV2aW91c1VSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJldmlvdXNVUkw7IH0KKyAgICBjb25zdCBVUkwmIHByZXZpb3VzVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91c1VSTDsgfQogCiAgICAgdm9pZCBmb3JjZVBhZ2VUcmFuc2l0aW9u
SWZOZWVkZWQoKTsKIApAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2Fk
UHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKTsKIAogICAgIHZvaWQgdXBkYXRlRmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKTsKLSAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0
IEtVUkwmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYpOwog
ICAgIAogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jiwg
RnJhbWVMb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSk7CiAKQEAgLTMxMiw3ICszMTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqKTsK
ICAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOwogCi0gICAgU3Vic3RpdHV0ZURhdGEgZGVm
YXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBTdWJzdGl0dXRlRGF0
YSBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMg
dm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGlu
dWUpOwogICAgIHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGlj
eSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hv
dWxkQ29udGludWUpOwpAQCAtMzI0LDggKzMyNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250
aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgdm9pZCBjb250aW51ZUZyYWdt
ZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgc2hvdWxkQ29udGludWUpOwogCi0gICAgYm9vbCBzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZp
Z2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBG
cmFtZUxvYWRUeXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0ZyYWdtZW50V2l0
aFBhcmVudEJvdW5kYXJ5KGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHNob3VsZFBlcmZvcm1GcmFn
bWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IFVSTCYpOworICAgIHZvaWQgc2Nyb2xsVG9GcmFn
bWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgY2hlY2tMb2Fk
Q29tcGxldGVGb3JUaGlzRnJhbWUoKTsKIApAQCAtMzUyLDE5ICszNTIsMTkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsICAgICAgICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVS
ZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KICAgICAgICAgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwotICAgIHZvaWQgbG9hZFVSTChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
ICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5h
dmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0
ZQorICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJl
cXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbiBvciBkaXNwYXRjaGVzIHRvIG5h
dmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCiAgICAgICAgIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1l
TG9hZFR5cGUsIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogCiAg
ICAgdm9pZCByZWxvYWRXaXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGVu
ZFRvRW5kUmVsb2FkKTsKIAotICAgIGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0IEtVUkwmIGN1cnJl
bnRVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBib29sIHNob3VsZFJlbG9h
ZChjb25zdCBVUkwmIGN1cnJlbnRVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCiAg
ICAgdm9pZCByZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcmIGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgZGV0YWNoQ2hpbGRy
ZW4oKTsKICAgICB2b2lkIGNsb3NlQW5kUmVtb3ZlQ2hpbGQoRnJhbWUqKTsKIAotICAgIHZvaWQg
bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKKyAgICB2b2lkIGxv
YWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvckxvYWRTdGFydCgpOwogICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwpA
QCAtMzc2LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNoZWNrTG9hZENv
bXBsZXRlKCk7CiAgICAgdm9pZCBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOwogCi0gICAgYm9v
bCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmKSBjb25zdDsKIAog
ICAgIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJbkFsbFdvcmxkcygpOwogCkBA
IC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9uZWVkc0NsZWFyOwogCi0g
ICAgS1VSTCBtX3N1Ym1pdHRlZEZvcm1VUkw7CisgICAgVVJMIG1fc3VibWl0dGVkRm9ybVVSTDsK
IAogICAgIFRpbWVyPEZyYW1lTG9hZGVyPiBtX2NoZWNrVGltZXI7CiAgICAgYm9vbCBtX3Nob3Vs
ZENhbGxDaGVja0NvbXBsZXRlZDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAg
ICBLVVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwogICAgIE93blB0cjxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eUFzc2VydGlvbjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmNzZiYjQ2YTg4MzA5OWIzMGQ3
ZDc4NWNmYWQ5Y2ZlNWQ1ZGU3MTMuLmRjN2Q5ZTk5ODllOTMzZWIyNDZiOTI5ZTgyZjcyZmU3OTBh
Y2EzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03
Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBj
bGFzcyBVUkw7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50OwogICAgIGNsYXNzIE5hdmlnYXRpb25B
Y3Rpb247CiAgICAgY2xhc3MgUGFnZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlIGlu
dGVydmFsLCBkb3VibGUgZmlyZURhdGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWws
IGRvdWJsZSBmaXJlRGF0ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRO
YXZpZ2F0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgPSAwOwpAQCAtMjE0LDggKzIxNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gVGhlIGluZGljYXRlZCBzZWN1cml0eSBvcmln
aW4gaGFzIHJ1biBhY3RpdmUgY29udGVudCAoc3VjaCBhcyBhCiAgICAgICAgIC8vIHNjcmlwdCkg
ZnJvbSBhbiBpbnNlY3VyZSBzb3VyY2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQg
Y2FuCiAgICAgICAgIC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2lu
LgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVS
TCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgPSAwOwpAQCAtMjQyLDkgKzI0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpID0gMDsKIAotICAgICAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpID0gMDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShD
YWNoZWRGcmFtZSopID0gMDsKQEAgLTI1OCwyMSArMjU4LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsK
KyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcykgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqKSBjb25zdCB7
IH0KICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNv
bnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdl
dCopID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2Jq
ZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOworICAgICAgICB2aXJ0dWFsIE9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkKikgPSAwOwpAQCAtMjk0LDE2ICsyOTQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c1VzZVBsdWdpbkRv
Y3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBL
VVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
TG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpIHsgfQogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyBy
ZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1Nj
cmlwdEZyb21Tb3VyY2UoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IEtVUkwmKSB7IHJl
dHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2Ny
aXB0RnJvbVNvdXJjZShib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgVVJMJikgeyByZXR1
cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1BsdWdp
bnMoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbWFnZShib29sIGVuYWJsZWRQZXJTZXR0aW5n
cywgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQotICAgICAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBl
clNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBlbmFibGVk
UGVyU2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmluZ0luc2VjdXJl
Q29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwmKSB7IHJldHVy
biBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFsbG93RGlzcGxh
eWluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVy
U2V0dGluZ3M7IH0KIAogICAgICAgICAvLyBUaGlzIGNhbGxiYWNrIG5vdGlmaWVzIHRoZSBjbGll
bnQgdGhhdCB0aGUgZnJhbWUgd2FzIGFib3V0IHRvIHJ1bgogICAgICAgICAvLyBKYXZhU2NyaXB0
IGJ1dCBkaWQgbm90IGJlY2F1c2UgYWxsb3dTY3JpcHQgcmV0dXJuZWQgZmFsc2UuIFdlCkBAIC0z
MTUsMTEgKzMxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7IH0KIAogICAgICAgICAvLyBDbGllbnRzIHRoYXQgZ2Vu
ZXJhbGx5IGRpc2FsbG93IHVuaXZlcnNhbCBhY2Nlc3MgY2FuIG1ha2UgZXhjZXB0aW9ucyBmb3Ig
cGFydGljdWxhciBVUkxzLgotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJz
YWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChj
b25zdCBVUkwmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpID0gMDsK
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJM
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZShjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBlbWJlZGRlciBpbnRlcmNlcHRlZCB0aGUgcG9zdE1l
c3NhZ2UgY2FsbAogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNz
YWdlRXZlbnQoU2VjdXJpdHlPcmlnaW4qIC8qdGFyZ2V0Ki8sIE1lc3NhZ2VFdmVudCopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCBmOThjMzhjMzcyNjQ0MzhlODdhOTIzMjFjNDA1YWRjOWYzNjE1OGRjLi43
MTU2M2E5NTJhOGE4MjZlZGNiYWUyN2MzMTYzYTk5ZTRmNGIwMDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRlZExpbmsoUGFn
ZSogcGFnZSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIGlubGluZSB2b2lkIGFkZFZpc2l0ZWRM
aW5rKFBhZ2UqIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT52aXNpdGVkTGlua1N0cmF0ZWd5KCktPmFkZFZpc2l0ZWRMaW5rKHBhZ2UsIHZpc2l0ZWRM
aW5rSGFzaCh1cmwuc3RyaW5nKCkpKTsKIH0KQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBk
YXRlVHlwZSkKICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigp
OwogCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVy
LmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBjb25zdCBVUkwmIGhpc3Rv
cnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAK
ICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3Qo
KSkgewogICAgICAgICBpZiAoIWhpc3RvcnlVUkwuaXNFbXB0eSgpKSB7CkBAIC0zODQsNyArMzg0
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2Vk
QmFja0ZvcndhcmRMaXN0KCkKICNlbmRpZgogICAgIAogICAgIGJvb2wgbmVlZFByaXZhY3kgPSBt
X2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGNvbnN0IEtV
UkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZv
ckhpc3RvcnkoKTsKKyAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1lLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewogICAgICAgICBp
ZiAoIW1fY3VycmVudEl0ZW0gJiYgIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpKSB7CkBAIC00MzIs
NyArNDMyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJl
Y3QoKQogICAgIH0KIAogICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGNvbnN0IEtVUkwmIGhpc3RvcnlVUkwgPSBt
X2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBj
b25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghaGlzdG9yeVVSTC5pc0VtcHR5KCkgJiYgIW5l
ZWRQcml2YWN5KSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCkBA
IC02MDMsMTAgKzYwMywxMCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgQVNTRVJUKGRvY3VtZW50
TG9hZGVyKTsKIAotICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVudExvYWRlci0+dW5y
ZWFjaGFibGVVUkwoKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVudExvYWRlci0+
dW5yZWFjaGFibGVVUkwoKTsKIAotICAgIEtVUkwgdXJsOwotICAgIEtVUkwgb3JpZ2luYWxVUkw7
CisgICAgVVJMIHVybDsKKyAgICBVUkwgb3JpZ2luYWxVUkw7CiAKICAgICBpZiAoIXVucmVhY2hh
YmxlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICB1cmwgPSB1bnJlYWNoYWJsZVVSTDsKQEAgLTg1
Miw3ICs4NTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogICAgIGlmIChtX2ZyYW1lLnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhZGRWaXNpdGVkTGluayhwYWdlLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7
CisgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5n
KSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7
CiAKIH0KQEAgLTg3Myw3ICs4NzMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNl
U3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwotICAgIGFkZFZpc2l0ZWRM
aW5rKG1fZnJhbWUucGFnZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7Cisg
ICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5wYWdlKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bFN0cmluZykpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlz
dG9yeSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggYjliY2Nk
OWIyYTA0NTMxNTI0ZmU4YjJjNGZmMzAyOTFhMTg2MzFmYS4uMTdjNzMzZDNlMzMzY2NkZDQ4Yzlh
ZWZlMzJmNGI2NTI0ZDdmNjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApA
QCAtODYsNyArODYsNyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBM
aW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYgaHJl
ZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAg
ICAvLyBXZSdsbCByZWNvcmQgdGhpcyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVy
IG9ubHkgdXNlIGl0IGluIHRvcCBsZXZlbCBmcmFtZXMKICAgICBpZiAocmVsQXR0cmlidXRlLm1f
aWNvblR5cGUgIT0gSW52YWxpZEljb24gJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhyZWYuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBlMjUxMzU3MjExOGZjOThh
OGNmNzEwMmRlZjE0YjFiOGIyM2MzNjU5Li4yNzdlYzQzODI3NDg2NmEzNmFhYmI1NGU3OTE5Y2Nh
MGUyMTY2YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGU7CiAKIC8vIFRoZSBMaW5rTG9hZGVy
IGNhbiBsb2FkIGxpbmsgcmVsIHR5cGVzIGljb24sIGRucy1wcmVmZXRjaCwgc3VicmVzb3VyY2Ug
YW5kIHByZWZldGNoLgpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lkIHJlbGVhc2VkKCk7
Ci0gICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKKyAg
ICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFVSTCYsIERvY3VtZW50Kik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRlcj4qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCBjZTBh
OGRjZTIzNzU2MDQ5OTI4YjRmZGJiNDgzZGU0M2E1YTM2N2UzLi41NmEyNDZmNDdlN2MwMDc5ZWQ0
YTZmZDYxZTRjMmE2ZDk3NGI1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50JiBN
aXhlZENvbnRlbnRDaGVja2VyOjpjbGllbnQoKSBjb25zdAogfQogCiAvLyBzdGF0aWMKLWJvb2wg
TWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCitib29sIE1peGVkQ29udGVudENoZWNrZXI6Omlz
TWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpICE9ICJodHRwcyIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2Ugb25seSBjYXJlIGFib3V0IEhUVFBTIHNlY3VyaXR5
IG9yaWdpbnMuCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNN
aXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLCiAgICAg
cmV0dXJuICFTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUodXJsKTsKIH0KIAotYm9vbCBNaXhlZENv
bnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBNaXhlZENvbnRlbnRD
aGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVu
dChzZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03Nyw3ICs3
Nyw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAK
LWJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWlzTWl4ZWRD
b250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRl
bnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAgIHJldHVybiBhbGxvd2VkOwog
fQogCi12b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYgdGFyZ2V0KSBjb25zdAordm9pZCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBh
Y3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KSBjb25zdAogewogICAgIFN0cmluZyBtZXNzYWdlID0g
bWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIs
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpLCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVz
c2FnZUxldmVsLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5oCmluZGV4IGQwZDdiMWUxYzExNjY1ODc1ZGNmZTUwYjViY2NhMmVkNmJmNDEwY2Qu
LjhlNGYzMDAxYTBlZTBmMWQwMDk0YTliMzAzMzIyZmUyMjIzNzgyODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNz
IE1peGVkQ29udGVudENoZWNrZXIgewpAQCAtNDYsMTUgKzQ2LDE1IEBAIGNsYXNzIE1peGVkQ29u
dGVudENoZWNrZXIgewogcHVibGljOgogICAgIE1peGVkQ29udGVudENoZWNrZXIoRnJhbWUqKTsK
IAotICAgIGJvb2wgY2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IEtVUkwmKSBjb25zdDsKLSAgICBib29sIGNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IEtVUkwmKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKKyAgICBib29sIGNhbkRpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBi
b29sIGNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIGNv
bnN0OworICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGhhdmUgYSBzZXBhcmF0ZSBjbGllbnQgZnJvbSBGcmFtZUxvYWRlci4KICAgICBGcmFtZUxvYWRl
ckNsaWVudCYgY2xpZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZvaWQg
bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwm
KSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGMzNmIxNzBlZWJmYTZkZDQ2YmQ0M2JhN2QxMzIxM2M4
YjhiM2MxYjIuLjVlMjFlMDE0MGYxMzQ5Y2E2NWI5YTFjM2E1OWRkMGM3ZTI4NmE4NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAog
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLmlzRW1wdHkoKTsgfQogCi0gICAgICAgIEtVUkwgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KKyAgICAgICAgVVJMIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpOyB9CiAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVJlcXVlc3Q7IH0KIAogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5jcHAKaW5kZXggMjJkMTNmYTk2ZWE0ZTU5YTY5Y2VkNTg3ZWM5NzJiN2Q0ZjgxZDZh
YS4uOWFiOTU5ZjcwMTBhNzkyYWE1NmYyOWRjODIwMzg2MzEwYTk1ZDQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAgICAg
ewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJH
ZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5v
dFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VM
b2NhdGlvbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91
cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIGZh
bHNlKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKG1fc2VjdXJpdHlP
cmlnaW4uZ2V0KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9j
a0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxOYXZpZ2F0aW9u
U2NoZWR1bGVyPiogdGltZXIpCkBAIC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBtX2hhdmVUb2xkQ2xpZW50ID0gdHJ1ZTsKIAogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnRSZWRpcmVjdGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBtX3VybCksIGRlbGF5KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZh
bCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCkpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50UmVkaXJlY3RlZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIGRlbGF5KCksIGN1cnJl
bnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJhbWUqIGZyYW1l
LCBib29sIG5ld0xvYWRJblByb2dyZXNzKQpAQCAtMTYwLDggKzE2MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAgICAgewogICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7Ci0gICAgICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KCkpKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3Jp
Z2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCksIGxvY2tIaXN0
b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgcmVmcmVzaCk7CisgICAgICAgIGJvb2wgcmVm
cmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSkpOworICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4oKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKCkpLCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCksIHJlZnJlc2gpOwogICAgIH0KIH07CiAKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5p
dGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdl
c3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlP
cmlnaW4oKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpLCB0cnVlKTsKICAgICB9CiB9OwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbiwKIAogICAgIC8vIElmIHRoZSBVUkwgd2UncmUgZ29pbmcgdG8gbmF2aWdhdGUg
dG8gaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lLCBleGNlcHQgZm9yIHRoZQogICAgIC8v
IGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUgdGhlIGxvY2F0aW9uIGNo
YW5nZS4KLSAgICBLVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJM
IHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgaWYgKHBhcnNlZFVSTC5oYXNG
cmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBwYXJzZWRVUkwpKSB7CiAgICAgICAgIGxvYWRlci5j
aGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWZyZXNoKCkKIHsKICAgICBpZiAoIXNob3VsZFNjaGVkdWxlTmF2aWdh
dGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKaW5kZXggMzEwZWNhZmQwNTRhNmRhNzVlNDdm
N2RjMGI4NWI4ZTJhMDk1ZDlkNy4uNGIyNDNmNzM5NTc0ODYzNmU0ODFkZWRlMmJkYzFkZDE0MzE4
ZWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2Uo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsKTsKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1
cmwpCiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvbXVsdGlwYWdlL2xpbmtzLmh0bWwjaHlwZXJsaW5rLWF1ZGl0aW5nCi12b2lkIFBpbmdM
b2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25VUkwpCit2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogewog
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHBpbmdVUkwpOwogI2lmIFBMQVRGT1JNKEJMQUNL
QkVSUlkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBpbmdVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmEKICAgICBV
TlVTRURfUEFSQU0obGVha2VkUGluZ0xvYWRlcik7CiB9CiAKLXZvaWQgUGluZ0xvYWRlcjo6c2Vu
ZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9u
UmVwb3J0KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IHJlcG9ydCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXBvcnRVUkwp
OwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApp
bmRleCA0ZmUxN2FkZTAzYzdmMjlhZjYwZDIzODJiZDAyNTA2M2IxMWFhNzNhLi42OTM5YTIzZjkx
YjM1M2FkZjQ5NzVkYTM4YzhmZTM3NDUyZGQxNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3Jt
RGF0YTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CkBAIC01NCw5ICs1NCw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBQaW5nTG9h
ZGVyIDogcHJpdmF0ZSBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGluZ0xvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7Ci0gICAgc3Rh
dGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJM
JiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydChG
cmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0
KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBVUkwmIHVybCk7Cisg
ICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBVUkwmIHBpbmdVUkwsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnQoRnJhbWUqLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVw
b3J0KTsKIAogICAgIHZpcnR1YWwgflBpbmdMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKaW5kZXggZDNhYjc0MTVmMWExOTUxZDZkMDgyMTA2
NTcwYmY5ZmY5ZmFhNTQ3Yy4uY2UyMzI3ODI3YTZhODBiZDU0OWY2NWIwODllZWMzZjA2N2FkMDVh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhY2Vob2xkZXJEb2N1
bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGxhY2Vob2xkZXJEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYWNlaG9sZGVyRG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbGFjZWhvbGRlckRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVJl
bmRlclRyZWUoKSBPVkVSUklERTsKIAotICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgUGxhY2Vob2xkZXJEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwpCiAgICAg
ewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKaW5kZXggMWQyNDNiNTVkNWUyNGVkMTM4OWU0Mzk4NjM1MDVkZDNiZjQ4NjA5NC4uYThk
MjE4ZGNiYTk0Y2RkNmUyMTkxY2JmYTM2ZmJjMWQ4YWYxYzA0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgiCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZXF1ZXN0c0luRmxpZ2h0Rm9yTm9uSFRUUFBy
b3RvY29scyA9IDIwOwogLy8gTWF0Y2ggdGhlIHBhcmFsbGVsIGNvbm5lY3Rpb24gY291bnQgdXNl
ZCBieSB0aGUgbmV0d29ya2luZyBsYXllci4KIHN0YXRpYyB1bnNpZ25lZCBtYXhSZXF1ZXN0c0lu
RmxpZ2h0UGVySG9zdDsKIAotUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb24q
IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25zdCBLVVJMJiB1cmwsIENyZWF0
ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKK1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9z
dEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgVVJM
JiB1cmwsIENyZWF0ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKIHsKICAgICBpZiAoIXVy
bC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVybiBtX25vbkhUVFBQcm90
b2NvbEhvc3Q7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgc2NoZWR1bGVTZXJ2
ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBIb3N0SW5mb3JtYXRpb24qIG9sZEhvc3Qg
PSBob3N0Rm9yVVJMKHJlc291cmNlTG9hZGVyLT51cmwoKSk7CiAgICAgQVNTRVJUKG9sZEhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4
IDJhMWU0MTMzNTVhZTA3Y2RhZjc2YjZhZDBmY2FkZDNjM2FlNWI5Y2IuLjJkYmY2NTA2YThkOGU0
YjhiZGM1NmIzMDkyZDA2ZDAzNjY2NDVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogY2xhc3MgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwotICAgIHZpcnR1YWwgdm9pZCBj
cm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJiBy
ZWRpcmVjdFVSTCk7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5p
bXVtUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhvc3RJbmZvcm1hdGlvbiog
aG9zdEZvclVSTChjb25zdCBLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKKyAg
ICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgVVJMJiwgQ3JlYXRlSG9zdFBvbGlj
eSA9IEZpbmRPbmx5KTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKEhvc3RJbmZvcm1h
dGlvbiosIFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIEhvc3RJbmZvcm1hdGlvbiosIFN0cmluZ0hhc2g+IEhvc3RNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGQ4MmFhODJjYTYyNGI3ODNiMmQ1MmJhMTJjMjM5
YmRkMzZmYjMxZTMuLmMzMWYyN2VkZjk3NDdlNGRmMTVhNWE5Yzg1MTc5NzY2ZjFkMDBhYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsKICNlbmRpZgog
Ci0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9
IAorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9
IAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS5n
ZXQoKTsgfQogICAgIGJvb2wgc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzOyB9
CiAgICAgdm9pZCBzZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrUG9saWN5IHNlbmRM
b2FkQ2FsbGJhY2tzKSB7IG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHNlbmRMb2FkQ2Fs
bGJhY2tzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IDQ4NGQy
Mzg5YTU3MGEzYzZmNDlhNjVjYWQ3MTYxNmY4MTkwMTY2NGQuLjYwNTFkN2RkZGJlMDA5MTNkMTFk
YWU1NjJkMzY1N2UzZjNkMGMyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
aW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiB9OwogCi1TaW5r
RG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Np
bmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9k
ZShRdWlya3NNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAppbmRleCA3NmQ5
YTgzNDgzZjk0M2EzMzI5MGFmYzljMDU3NTg1YzJkODMwMmQ4Li4yNDY2ODg0MjFiNDdiZDUyZTYx
NGQyYmVlMjU5YWI1MDIyNmVmYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U2lua0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5o
CkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5rRG9j
dW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaW5rRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW5r
RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgU2lua0RvY3VtZW50KEZyYW1lKiwg
Y29uc3QgVVJMJik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2Vy
PiBjcmVhdGVQYXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcAppbmRleCA4ZjhiYzMzNmE0NDBmNDI3YWFkYzEyYjBkNzMzNmZmYmM1MTkxNzAzLi44Yzlm
MTIyMmVmNDIyMGJmNjhhMzMwNTI4ZDEzNDk4YmI5YTYxYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBTdWJmcmFtZUxv
YWRlcjo6Y2xlYXIoKQogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKIHsKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUgc3JjPSJqYXZhc2Ny
aXB0OnN0cmluZyI+Ci0gICAgS1VSTCBzY3JpcHRVUkw7Ci0gICAgS1VSTCB1cmw7CisgICAgVVJM
IHNjcmlwdFVSTDsKKyAgICBVUkwgdXJsOwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmxTdHJpbmcpKSB7CiAgICAgICAgIHNjcmlwdFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7
IC8vIGNvbXBsZXRlVVJMKCkgZW5jb2RlcyB0aGUgVVJMLgogICAgICAgICB1cmwgPSBibGFua1VS
TCgpOwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cgogICAgIAogYm9v
bCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkw7CisgICAgVVJMIGNvbXBsZXRlZFVSTDsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJM
KHVybCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXNvdXJj
ZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZQogICAg
IHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlcywgZmFsc2UsIHVzZUZhbGxiYWNrKTsKIH0KIAotYm9vbCBTdWJm
cmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVn
aW5FbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitib29s
IFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxlKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQq
IHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ewogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlw
ZSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzSmF2YUVuYWJsZWQoKSkK
QEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxl
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbgogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQorYm9vbCBTdWJmcmFtZUxv
YWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29s
IHVzZUZhbGxiYWNrKQogewogICAgIC8vIEFwcGxpY2F0aW9uIHBsdWctaW5zIGFyZSBwbHVnLWlu
cyBpbXBsZW1lbnRlZCBieSB0aGUgdXNlciBhZ2VudCwgZm9yIGV4YW1wbGUgUXQgcGx1Zy1pbnMs
CiAgICAgLy8gYXMgb3Bwb3NlZCB0byB0aGlyZC1wYXJ0eSBjb2RlIHN1Y2ggYXMgRmxhc2guIFRo
ZSB1c2VyIGFnZW50IGRlY2lkZXMgd2hldGhlciBvciBub3QgdGhleSBhcmUKQEAgLTIxOSw3ICsy
MTksNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUwogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21w
bGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwg
PSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yMzcsMTIgKzIzNywxMiBAQCBib29sIFN1YmZyYW1l
TG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIG93bmVyRWxlbWVu
dCwgY29uc3QgUwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNz
UmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2lu
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBTdWJmcmFt
ZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgVVJM
JiB1cmwsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG5vZGUpKTsKIAotICAgIEtVUkwgY29tcGxl
dGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQog
ICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yOTIsNyArMjky
LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICB9CiAKICAgICBpZiAoIWNvZGVCYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGNvZGVCYXNlVVJMID0gY29tcGxl
dGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOworICAgICAgICBVUkwgY29kZUJhc2VVUkwgPSBjb21w
bGV0ZVVSTChjb2RlQmFzZVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghZWxlbWVudC0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNvZGVCYXNlVVJMKSkgewogICAgICAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCBjb2RlQmFz
ZVVSTC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMwNiw3ICszMDYsNyBA
QCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSAogCiAgICAgaWYgKGJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICBiYXNlVVJMU3RyaW5nID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVS
TCgpLnN0cmluZygpOwotICAgIEtVUkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJp
bmcpOworICAgIFVSTCBiYXNlVVJMID0gY29tcGxldGVVUkwoYmFzZVVSTFN0cmluZyk7CiAKICAg
ICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQ7CiAgICAgaWYgKGFsbG93UGx1Z2lucyhBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pKQpAQCAtMzI2LDcgKzMyNiw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBT
dWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzaXpl
LCBICiAgICAgcmV0dXJuIHdpZGdldDsKIH0KIAotRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2Fk
T3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCitGcmFtZSogU3ViZnJhbWVMb2FkZXI6
OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBs
b2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG93bmVyRWxlbWVudC0+Y29udGVudEZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKQpAQCAtMzM4
LDcgKzMzOCw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJlY3RTdWJmcmFt
ZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVuCiAgICAgcmV0dXJuIG93bmVyRWxl
bWVudC0+Y29udGVudEZyYW1lKCk7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1
YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK0ZyYW1lKiBT
dWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIApAQCAt
NDAzLDcgKzQwMyw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmFsbG93UGx1Z2lucyhSZWFzb25G
b3JDYWxsaW5nQWxsb3dQbHVnaW5zIHJlYXNvbikKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAot
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzLCBi
b29sIGhhc0ZhbGxiYWNrLCBib29sJiB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6
OnNob3VsZFVzZVBsdWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzLCBib29sIGhhc0ZhbGxiYWNrLCBib29s
JiB1c2VGYWxsYmFjaykKIHsKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobWltZVR5cGUpKSB7CiAgICAgICAgIHVzZUZhbGxi
YWNrID0gZmFsc2U7CkBAIC00MzAsNyArNDMwLDcgQEAgRG9jdW1lbnQqIFN1YmZyYW1lTG9hZGVy
Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7CiB9CiAK
LWJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCog
cGx1Z2luRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAor
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQogewogICAgIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0KiByZW5kZXJlciA9IHBsdWdpbkVsZW1lbnQtPnJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CkBA
IC00NjIsNyArNDYyLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBLVVIKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotS1VSTCBTdWJmcmFtZUxvYWRlcjo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0CitVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggZDhlMDNjMTAyMzY2NWRlNGRlNmJhODQ2Y2VjMTg3
MzIxYTBhZDQxYS4uMmU4NDBlOTJmZGI4NDE0YTFiZjBkODU3NzBkNjA0N2UyZDM3OTBmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgSFRNTEFwcGxldEVsZW1lbnQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFz
cyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiBjbGFzcyBOb2Rl
OwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBFbGVtZW50KiBp
bnN0ZWFkIG9mIE5vZGUqLCBvciBiZXR0ZXIgeWV0IHRoZQogICAgIC8vIHNwZWNpZmljIHR5cGUg
b2YgRWxlbWVudCB3aGljaCB0aGlzIGNvZGUgZGVwZW5kcyBvbi4KLSAgICBQYXNzUmVmUHRyPFdp
ZGdldD4gbG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSosIGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKKyAgICBQYXNzUmVmUHRyPFdpZGdldD4gbG9hZE1lZGlhUGxheWVyUHJveHlQbHVn
aW4oTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogI2VuZGlmCiAKICAgICBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKQEAgLTgwLDIxICs4MCwyMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZXNvdXJjZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCByZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1
c2VGYWxsYmFjayk7Ci0gICAgRnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwotICAgIEZyYW1l
KiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7Ci0gICAgYm9vbCBsb2FkUGx1
Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwKKyAgICBib29sIHJlcXVlc3RQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wg
dXNlRmFsbGJhY2spOworICAgIEZyYW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOworICAgIEZyYW1l
KiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBib29sIGxvYWRQbHVn
aW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCi0gICAgYm9v
bCBzaG91bGRVc2VQbHVnaW4oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYg
dXNlRmFsbGJhY2spOwotICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIGJvb2wg
c2hvdWxkVXNlUGx1Z2luKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYgdXNl
RmFsbGJhY2spOworICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgbV9jb250YWluc1BsdWdpbnM7CiAgICAg
RnJhbWUqIG1fZnJhbWU7CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGUwNzdiZmFhZGY1MTA4NGNlMmQ3ZTVmOGMzYmNhNmU5MzZjMTMxMGMu
LmZhNTllODdkZDU2NzJiYTE3OTYxYjY0Y2EyNWQ4NjI0MmNlZWE0MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJv
b2wgU3VicmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKQogdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICAvLyBTdG9y
ZSB0aGUgcHJldmlvdXMgVVJMIGJlY2F1c2UgdGhlIGNhbGwgdG8gUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdCB3aWxsIG1vZGlmeSBpdC4KLSAgICBLVVJMIHByZXZpb3VzVVJMID0gcmVx
dWVzdCgpLnVybCgpOworICAgIFVSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKICAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgQVNTRVJUKCFu
ZXdSZXF1ZXN0LmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgK
aW5kZXggNTIwZWY1ODA1NDk5NmM5OTZiNzcxZjcwN2UxZDE3MWE1ZDMzNTMyYS4uMjk1OWRlN2E4
ZmNhYTNmYzBlN2IzYTc5N2E0ODllMjJiNTY3YWNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU3Vic3RpdHV0ZURhdGFf
aAogI2RlZmluZSBTdWJzdGl0dXRlRGF0YV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSw4ICs0MSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFN1YnN0aXR1dGVEYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgS1VS
TCYgZmFpbGluZ1VSTCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9u
c2VVUkwgPSBLVVJMKCksIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9IGZhbHNl
KQorICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBVUkwm
IGZhaWxpbmdVUkwsCisgICAgICAgICAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IFVS
TCgpLCBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPSBmYWxzZSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KGNvbnRlbnQpCiAgICAgICAgICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgICAgICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTYwLDE1
ICs2MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAg
ICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVu
Y29kaW5nOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVy
biBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVVJMOyB9CisgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAgICBjb25zdCBVUkwmIHJl
c3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQogICAgICAgICAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7Ci0g
ICAgICAgIEtVUkwgbV9mYWlsaW5nVVJMOwotICAgICAgICBLVVJMIG1fcmVzcG9uc2VVUkw7Cisg
ICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFVSTCBtX3Jlc3BvbnNlVVJMOwogICAg
ICAgICBib29sIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggMTVjYmM2ZjZlOGFm
MjFlMTlmYzE1MmU0ZGUyYTA5YTZhMDg2YTBlMS4uOThjODdhMjM1NTcwZTk2OWY5MmE4N2M1YTRi
YTE5NjliNDkxMzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKQEAgLTQwLDEyICs0MCwxMiBA
QCBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdWJzdGl0dXRl
UmVzb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdWJzdGl0dXRlUmVzb3VyY2UoKSB7
IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAg
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAg
ICA6IG1fdXJsKHVybCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAs
IG1fZGF0YShkYXRhKQpAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIAog
cHJpdmF0ZToKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZjZlYzZlZDcy
YzNhNTFhYmU0OWRkOWM3MGE5ZTFkMjhiZmZkNzJmMS4uNGZhMDc2OGUzYjgxNWM2MTBjMmZkMjQx
NTEzZWJkYzg5ZDBjYzk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGNhbmNlbExvYWQoKTsKIH0KIAot
Ym9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSkKK2Jvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKIHsKICAgICBjYW5jZWxMb2FkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAppbmRleCAzNmYzZWYwOWVj
MmQxMThjZjMyNDkzZTJmMGE2Y2IyYzJmNjAyMmE0Li45MzU3ZTEwYzk2MGU1MjBhY2U1YmJlMjIy
MDA1MjhlNjc3OGE4NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5o
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNr
TG9hZGVyKCk7CiAgICAgCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKICAgICB2b2lkIGdl
dE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpOwogI2lm
IEVOQUJMRShXRUJWVFRfUkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA2MTgyOWIyNzYwNzhjYzAwMGZmOTI3
NTY0NWM4NmUxOWI2NDRlNDliLi44NTI4OWIzMzk4MjM4MjNkZGQyZDcwYWRlYzE0YWYyOTZmNDlh
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBmYWxsYmFja1VSTExvbmdlclRoYW4oY29uc3Qgc3RkOjpwYWly
PEtVUkwsIEtVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiYgcmhzKQorc3Rh
dGljIGlubGluZSBib29sIGZhbGxiYWNrVVJMTG9uZ2VyVGhhbihjb25zdCBzdGQ6OnBhaXI8VVJM
LCBVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxVUkwsIFVSTD4mIHJocykKIHsKICAgICByZXR1
cm4gbGhzLmZpcnN0LnN0cmluZygpLmxlbmd0aCgpID4gcmhzLmZpcnN0LnN0cmluZygpLmxlbmd0
aCgpOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJl
bW92ZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIAogQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKLSAgICBBU1NFUlQoIUtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBtX3Jlc291cmNlcy5nZXQodXJsKTsK
IH0gICAgCiAKQEAgLTEzOCwyMCArMTM4LDIwIEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
QXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxCiAg
ICAgaWYgKCFyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBLVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsKHJlcXVlc3Qu
dXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIHJldHVybiByZXNvdXJjZUZvclVS
TCh1cmwpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRlbGlzdChj
b25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKK3ZvaWQgQXBwbGljYXRpb25DYWNo
ZTo6c2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3Qp
CiB7CiAgICAgQVNTRVJUKG1fb25saW5lV2hpdGVsaXN0LmlzRW1wdHkoKSk7CiAgICAgbV9vbmxp
bmVXaGl0ZWxpc3QgPSBvbmxpbmVXaGl0ZWxpc3Q7IAogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGU6OmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBBcHBsaWNh
dGlvbkNhY2hlOjppc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHNpemVfdCB3aGl0ZWxpc3RTaXplID0gbV9vbmxpbmVXaGl0ZWxpc3Quc2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVsaXN0U2l6ZTsgKytpKSB7CkBAIC0xNjksNyArMTY5
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRGYWxsYmFja1VSTHMoY29uc3QgRmFsbGJh
Y2tVUkxWZWN0b3ImIGZhbGxiYWNrVVJMcykKICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fZmFsbGJh
Y2tVUkxzLmJlZ2luKCksIG1fZmFsbGJhY2tVUkxzLmVuZCgpLCBmYWxsYmFja1VSTExvbmdlclRo
YW4pOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGU6OnVybE1hdGNoZXNGYWxsYmFja05hbWVz
cGFjZShjb25zdCBLVVJMJiB1cmwsIEtVUkwqIGZhbGxiYWNrVVJMKQorYm9vbCBBcHBsaWNhdGlv
bkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgVVJMJiB1cmwsIFVSTCog
ZmFsbGJhY2tVUkwpCiB7CiAgICAgc2l6ZV90IGZhbGxiYWNrQ291bnQgPSBtX2ZhbGxiYWNrVVJM
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmYWxsYmFja0NvdW50OyArK2kp
IHsKQEAgLTE5MywxMyArMTkzLDEzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9y
YWdlSUQoKQogICAgIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAg
IFZlY3RvcjxVUkw+IHVybHM7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2UoKS5tYW5pZmVzdFVSTHMo
JnVybHMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0
aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
S1VSTCBvcmlnaW5VUkwoS1VSTCgpLCBvcmlnaW4tPnRvU3RyaW5nKCkpOworICAgIFVSTCBvcmln
aW5VUkwoVVJMKCksIG9yaWdpbi0+dG9TdHJpbmcoKSk7CiAKICAgICBzaXplX3QgY291bnQgPSB1
cmxzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCmlu
ZGV4IDI1MWJlYTMyM2JhYzMwYWZlYTA3N2I1MzNlZGEyNWNiNzc0M2IyMmMuLmZmZTQ4MjE4NzBi
Njk1YzIzODEzZGU3MzY3ZjkwM2ZmMDEyOGZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzgsMTEgKzM4LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8S1VSTCwgS1VSTD4gPiBGYWxsYmFja1VS
TFZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFVSTD4gPiBGYWxsYmFja1VS
TFZlY3RvcjsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFw
cGxpY2F0aW9uQ2FjaGU+IHsKIHB1YmxpYzoKQEAgLTY4LDEzICs2OCwxMyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhib29sIHZhbHVlKSB7IG1fYWxs
b3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB2YWx1ZTsgfQogICAgIGJvb2wgYWxsb3dzQWxsTmV0d29y
a1JlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgfQot
ICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxLVVJMPiYgb25saW5lV2hp
dGVsaXN0KTsKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAgYm9vbCBpc1VSTEluT25saW5lV2hp
dGVsaXN0KGNvbnN0IEtVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25saW5lIHdoaXRl
bGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0
aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCisgICAgdm9pZCBz
ZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCk7Cisg
ICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b25saW5lV2hpdGVsaXN0OyB9CisgICAgYm9vbCBpc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0
IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBlbnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0IHRoYXQgaGFz
IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVm
aXggbWF0Y2ggZm9yIHRoZSByZXNvdXJjZSdzIFVSTC4KIAogICAgIHZvaWQgc2V0RmFsbGJhY2tV
UkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJik7CiAgICAgY29uc3QgRmFsbGJhY2tVUkxWZWN0
b3ImIGZhbGxiYWNrVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fZmFsbGJhY2tVUkxzOyB9Ci0gICAg
Ym9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgS1VSTCYsIEtVUkwqIGZhbGxi
YWNrVVJMID0gMCk7CisgICAgYm9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3Qg
VVJMJiwgVVJMKiBmYWxsYmFja1VSTCA9IDApOwogICAgIAogI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGR1bXAoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbV9tYW5pZmVzdDsKIAogICAgIGJvb2wgbV9hbGxvd0FsbE5ldHdvcmtS
ZXF1ZXN0czsKLSAgICBWZWN0b3I8S1VSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CisgICAgVmVjdG9y
PFVSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgbV9mYWxsYmFj
a1VSTHM7CiAKICAgICAvLyBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzb3VyY2VzIGJlbG9uZ2lu
ZyB0byB0aGlzIEFwcGxpY2F0aW9uIENhY2hlIGluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRl
eCBkNmJmOTg3MGM0YjNiNDI1OTBjOWRjOTY1MzM1MGIyZDQ4ZTMyZWI5Li41OWIzYmRiYzdhNmE2
NTllMWE1NGY5MTM0N2M3MjBjZmVhNmJkM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNTYsNyAr
NTYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29w
eSkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5KQogICAgIDogbV9tYW5pZmVzdFVSTChtYW5pZmVz
dFVSTCkKICAgICAsIG1fb3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFuaWZlc3RVUkwp
KQogICAgICwgbV91cGRhdGVTdGF0dXMoSWRsZSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBBcHBsaWNh
dGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZQogICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRU
UE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwo
cmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJs
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdQog
ICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVz
dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwocmVxdWVzdC51cmwoKSk7Cisg
ICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTEz
NCw3ICsxMzQsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZh
bGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdQogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdFVSTCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVUkwp
CiB7CiAgICAgQVNTRVJUKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpOwogICAgIApAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBLVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJMKTsKKyAgICBVUkwgbWFu
aWZlc3RVUkwocGFzc2VkTWFuaWZlc3RVUkwpOwogICAgIGlmIChtYW5pZmVzdFVSTC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSkKICAgICAgICAgbWFuaWZlc3RVUkwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdAog
ICAgICAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdyb3VwKCktPnVwZGF0ZShmcmFtZSwgQXBw
bGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIGNhY2hl
LCBzbyB0aGUgY2FjaGUgbXVzdCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBpdCBhcyBmb3Jl
aWduLgotICAgICAgICAgICAgS1VSTCByZXNvdXJjZVVSTChkb2N1bWVudExvYWRlci0+cmVzcG9u
c2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgcmVzb3VyY2VVUkwoZG9jdW1lbnRMb2FkZXItPnJl
c3BvbnNlVVJMKCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlVVJMLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQogICAgICAgICAgICAgICAgIHJlc291cmNlVVJMLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwogICAgICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSA9IG1haW5SZXNvdXJjZUNhY2hlLT5yZXNvdXJjZUZvclVSTChyZXNvdXJjZVVSTCk7CkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGlu
Z01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVChtX3Bl
bmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMobG9hZGVyKSk7CiAgICAgQVNTRVJU
KG1fY29tcGxldGlvblR5cGUgPT0gTm9uZSB8fCBtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7
Ci0gICAgS1VSTCB1cmwgPSBsb2FkZXItPnVybCgpOworICAgIFVSTCB1cmwgPSBsb2FkZXItPnVy
bCgpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjphYm9ydChGcmFtZSogZnJhbWUpCiAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpCitQYXNzUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgbV9mcmFtZS0+bG9h
ZGVyKCkuYXBwbHlVc2VyQWdlbnQocmVxdWVzdCk7CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXMKICAgICAKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3VycmVudEhh
bmRsZSk7CiAKLSAgICBLVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAg
ICBVUkwgdXJsKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKICAgICAKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgog
ICAgIEFTU0VSVChoYW5kbGUgPT0gbV9jdXJyZW50SGFuZGxlKTsKIAogICAgIHVuc2lnbmVkIHR5
cGUgPSBtX2N1cnJlbnRSZXNvdXJjZSA/IG1fY3VycmVudFJlc291cmNlLT50eXBlKCkgOiBtX3Bl
bmRpbmdFbnRyaWVzLmdldChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKLSAgICBLVVJM
IHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICBVUkwgdXJsKGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtMTAyNCw3
ICsxMDI0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZ0VudHJ5
KCkKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKLSAgICBtX2N1cnJlbnRI
YW5kbGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShLVVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPmtl
eSksIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTChpdC0+a2V5
KSA6IDApOworICAgIG1fY3VycmVudEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdlc3RDYWNoZS0+
cmVzb3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpCkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWluUmVzb3VyY2Vz
KCkKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25zdCBTdHJpbmcmIHVy
bCwgdW5zaWduZWQgdHlwZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZUJlaW5nVXBkYXRlZCk7Ci0g
ICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKICAgICAKICAgICAvLyBEb24ndCBhZGQgdGhlIFVSTCBpZiB3ZSBhbHJl
YWR5IGhhdmUgYW4gbWFzdGVyIHJlc291cmNlIGluIHRoZSBjYWNoZQogICAgIC8vIChpLmUuLCB0
aGUgbWFpbiByZXNvdXJjZSBmaW5pc2hlZCBsb2FkaW5nIGJlZm9yZSB0aGUgbWFuaWZlc3QpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCmluZGV4IDFhNGFmODYwNTFjNjQ2ZDU4ZDJmOWEwZThhMTZjNjMwZTU4N2MxYWQu
LjMyNzA4NDlkOGVlMDE5MTU0YTJkNWI5ZjBlZGNhZGE1N2UwYWQzZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgQXBwbGljYXRpb25DYWNoZUdyb3VwX2gKIAogI2lu
Y2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTUzLDcgKzUz
LDcgQEAgZW51bSBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCA6IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBcHBsaWNhdGlvbkNhY2hlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAgICAKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAogICAgIH5B
cHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7IElk
bGUsIENoZWNraW5nLCBEb3dubG9hZGluZyB9OwpAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogY2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyBBcHBsaWNhdGlv
bkNhY2hlKiBmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZShG
cmFtZSosIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBzdGF0aWMgdm9pZCBzZWxlY3RD
YWNoZShGcmFtZSosIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOwogICAgIHN0YXRpYyB2b2lkIHNl
bGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKik7CiAgICAgCi0gICAgY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0VVJMOyB9CisgICAgY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuaWZlc3RVUkw7IH0KICAg
ICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4u
Z2V0KCk7IH0KICAgICBVcGRhdGVTdGF0dXMgdXBkYXRlU3RhdHVzKCkgY29uc3QgeyByZXR1cm4g
bV91cGRhdGVTdGF0dXM7IH0KICAgICB2b2lkIHNldFVwZGF0ZVN0YXR1cyhVcGRhdGVTdGF0dXMg
c3RhdHVzKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogCi0gICAgUGFzc1JlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOworICAgIFBhc3NSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFVSTCYsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwogCiAgICAgLy8gRm9yIG5vcm1h
bCByZXNvdXJjZSBsb2FkaW5nLCBXZWJLaXQgY2xpZW50IGlzIGFza2VkIGFib3V0IGVhY2ggcmVz
b3VyY2UgaW5kaXZpZHVhbGx5LiBTaW5jZSBhcHBsaWNhdGlvbiBjYWNoZSBkb2VzIG5vdCBiZWxv
bmcgdG8gYW55IHBhcnRpY3VsYXIgZG9jdW1lbnQsCiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVu
dCBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0
IGVuYWJsZXMgYXBwbGljYXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlh
bCBzdG9yYWdlLgpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBz
dG9wTG9hZGluZygpOwogICAgIAotICAgIEtVUkwgbV9tYW5pZmVzdFVSTDsKKyAgICBVUkwgbV9t
YW5pZmVzdFVSTDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIFVw
ZGF0ZVN0YXR1cyBtX3VwZGF0ZVN0YXR1czsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDRjNjk4
MDk5MzY5NGJiYTA1YjJhMDVmNTY3OTQ1NTc4MmIzNWJhZTIuLjQzM2JmMjY5M2VhNjI2YjcwNDU3
MWM3NDk0N2FjMDdmNTM1NjYxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdCgpCiAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTCht
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25zdCBVUkwm
IG1hbmlmZXN0VVJMKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUo
bV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgbWFuaWZlc3RVUkwpOwogfQpAQCAtODYsOCArODYs
OCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRNYWluUmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdWJzdAogICAgICAgICAgICAgc3Vic3RpdHV0ZURhdGEg
PSBTdWJzdGl0dXRlRGF0YShyZXNvdXJjZS0+ZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVz
cG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtVUkwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS1VSTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVVJMKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1
YnN0aXR1dGVEYXRhOjpTaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaW5p
c2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgICAgICBncm91cC0+ZmluaXNoZWRMb2FkaW5n
TWFpblJlc291cmNlKG1fZG9jdW1lbnRMb2FkZXIpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKQorYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIG9yaWdpbmFsVVJMKQogewogICAg
IGlmICghaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMDMsNyArMzAzLDcgQEAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6YXBwbGljYXRpb25DYWNoZUluZm8oKQogewogICAgIEFwcGxpY2F0
aW9uQ2FjaGUqIGNhY2hlID0gYXBwbGljYXRpb25DYWNoZSgpOwogICAgIGlmICghY2FjaGUgfHwg
IWNhY2hlLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIHJldHVybiBDYWNoZUluZm8oS1VSTCgpLCAw
LCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIENhY2hlSW5mbyhVUkwoKSwgMCwgMCwgMCk7CiAgIAog
ICAgIC8vIEZJWE1FOiBBZGQgIkNyZWF0aW9uIFRpbWUiIGFuZCAiVXBkYXRlIFRpbWUiIHRvIEFw
cGxpY2F0aW9uIENhY2hlcy4KICAgICByZXR1cm4gQ2FjaGVJbmZvKGNhY2hlLT5tYW5pZmVzdFJl
c291cmNlKCktPnVybCgpLCAwLCAwLCBjYWNoZS0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKTsK
QEAgLTM3OCw3ICszNzgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpnZXRBcHBsaWNh
dGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcQogICAgIGlmICghQXBw
bGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgZmFsbGJhY2tVUkw7CisgICAgVVJMIGZhbGxiYWNr
VVJMOwogICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxs
YmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpLCAmZmFsbGJhY2tVUkwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRl
eCA2NTIwY2NjNDgwM2ZmOTA5NDVlZGUzZjQ2MGU3NDE2ZGY5ZDBhNDA3Li5mNmUwZDBiOTQxZTJm
YTIzYTI1MjZmMmY3YzE2OWE0OWQ4NTVkZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMzEsNyArMzEsNyBA
QAogI2lmbmRlZiBBcHBsaWNhdGlvbkNhY2hlSG9zdF9oCiAjZGVmaW5lIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTc4LDE5ICs3OCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBzdHJ1Y3QgQ2FjaGVJbmZvIHsKLSAgICAgICAg
ICAgIENhY2hlSW5mbyhjb25zdCBLVVJMJiBtYW5pZmVzdCwgZG91YmxlIGNyZWF0aW9uVGltZSwg
ZG91YmxlIHVwZGF0ZVRpbWUsIGxvbmcgbG9uZyBzaXplKQorICAgICAgICAgICAgQ2FjaGVJbmZv
KGNvbnN0IFVSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGRvdWJsZSB1cGRhdGVU
aW1lLCBsb25nIGxvbmcgc2l6ZSkKICAgICAgICAgICAgICAgICA6IG1fbWFuaWZlc3QobWFuaWZl
c3QpCiAgICAgICAgICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShjcmVhdGlvblRpbWUpCiAgICAg
ICAgICAgICAgICAgLCBtX3VwZGF0ZVRpbWUodXBkYXRlVGltZSkKICAgICAgICAgICAgICAgICAs
IG1fc2l6ZShzaXplKSB7IH0KLSAgICAgICAgICAgIEtVUkwgbV9tYW5pZmVzdDsKKyAgICAgICAg
ICAgIFVSTCBtX21hbmlmZXN0OwogICAgICAgICAgICAgZG91YmxlIG1fY3JlYXRpb25UaW1lOwog
ICAgICAgICAgICAgZG91YmxlIG1fdXBkYXRlVGltZTsKICAgICAgICAgICAgIGxvbmcgbG9uZyBt
X3NpemU7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0IFJlc291cmNlSW5mbyB7Ci0gICAg
ICAgICAgICBSZXNvdXJjZUluZm8oY29uc3QgS1VSTCYgcmVzb3VyY2UsIGJvb2wgaXNNYXN0ZXIs
IGJvb2wgaXNNYW5pZmVzdCwgYm9vbCBpc0ZhbGxiYWNrLCBib29sIGlzRm9yZWlnbiwgYm9vbCBp
c0V4cGxpY2l0LCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIFJlc291cmNlSW5mbyhjb25z
dCBVUkwmIHJlc291cmNlLCBib29sIGlzTWFzdGVyLCBib29sIGlzTWFuaWZlc3QsIGJvb2wgaXNG
YWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJvb2wgaXNFeHBsaWNpdCwgbG9uZyBsb25nIHNpemUp
CiAgICAgICAgICAgICAgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQogICAgICAgICAgICAgICAg
ICwgbV9pc01hc3Rlcihpc01hc3RlcikKICAgICAgICAgICAgICAgICAsIG1faXNNYW5pZmVzdChp
c01hbmlmZXN0KQpAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICAgICAgLCBtX2lzRm9yZWlnbihpc0ZvcmVpZ24pCiAgICAgICAgICAgICAgICAgLCBtX2lz
RXhwbGljaXQoaXNFeHBsaWNpdCkKICAgICAgICAgICAgICAgICAsIG1fc2l6ZShzaXplKSB7IH0K
LSAgICAgICAgICAgIEtVUkwgbV9yZXNvdXJjZTsKKyAgICAgICAgICAgIFVSTCBtX3Jlc291cmNl
OwogICAgICAgICAgICAgYm9vbCBtX2lzTWFzdGVyOwogICAgICAgICAgICAgYm9vbCBtX2lzTWFu
aWZlc3Q7CiAgICAgICAgICAgICBib29sIG1faXNGYWxsYmFjazsKQEAgLTExNCw3ICsxMTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5BcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwog
CiAgICAgICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKTsKLSAgICAgICAgdm9p
ZCBzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7CisgICAg
ICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7
CiAKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0Jiwg
U3Vic3RpdHV0ZURhdGEmKTsKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JS
ZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtMTIzLDcgKzEy
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdN
YWluUmVzb3VyY2UoKTsKICAgICAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7
CiAKLSAgICAgICAgYm9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKTsKKyAgICAgICAgYm9vbCBtYXli
ZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVS
TCYgb3JpZ2luYWxVUkwpOwogICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJl
Y3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgYm9vbCBtYXliZUxv
YWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCA5OTc2NmUzYTY2YmQzNmViNDJmZWQyYTkyNjlk
MzRiMDY2MTk0ZDdmLi40ZmNiOGYyZjEwZmE0NjA2NDI4ZjgwOWYxNDU1ZWEzYWUwZWU1ZTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2ln
bmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0YSkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRl
eCBkMWRmZWE0OGNkZmE4ZTU3ZDdmMjAxNzY0ZTllZGNiMjYyZjkwNjZjLi5kOGQzZjFhYTA5NGFk
MjBkZDkyYjhjZjAzZDEzMjI2NGEwMmY5ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogICAg
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNy
ZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29u
c3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NFUlQoIXVybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGJ1ZmZlciwgcGF0aCkp
OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEtVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBVUkwmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdW5zaWduZWQgbV90eXBlOwogICAgIHVu
c2lnbmVkIG1fc3RvcmFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDNjNzMxMjllYjk5
YzJhZjViMTdjM2MzNjgxOTgwOTA4YWU4Yzk4YS4uM2M2MjRkZjQ0N2JmZTFhYTMyNTk3MTFmZGJh
MmNlYzkyNDIyZDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKQEAg
LTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVjb3JkPiBtX3JlY29yZHM7CiB9
OwogCi1zdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2goY29uc3QgS1VSTCYgdXJsKQorc3RhdGlj
IHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVuc2lnbmVkIGhv
c3RTdGFydCA9IHVybC5ob3N0U3RhcnQoKTsKICAgICB1bnNpZ25lZCBob3N0RW5kID0gdXJsLmhv
c3RFbmQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2go
Y29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBBbHJlYWR5SGFzaGVkOjphdm9pZERlbGV0ZWRW
YWx1ZShTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVybFN0cmluZy5j
aGFyYWN0ZXJzMTYoKSArIGhvc3RTdGFydCwgaG9zdEVuZCAtIGhvc3RTdGFydCkpOwogfQogCi1B
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVH
cm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpCiB7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCkBAIC0xMzUsNyArMTM1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWYKICAgICBy
ZXR1cm4gZ3JvdXA7CiB9ICAgIAogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKQorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCkBAIC0xNjAsNyArMTYw
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKLUFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9y
eUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CitBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlDYWNoZUdyb3Vw
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FjaGVzSW5N
ZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKIH0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKICAgICAgICAgbV9j
YWNoZUhvc3RTZXQuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50NjQoMCkpKTsKIH0gICAgCiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSk7CiAgICAgCkBAIC0yMjksNyArMjI5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwKICAg
ICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAo
KSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKFBh
cnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwg
bWFuaWZlc3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgxKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVzSW5NZW1vcnkuY29udGFpbnMobWFuaWZlc3RV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjYsNyArMjY2LDcgQEAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBLVVJMJiB1cmwKICAgICByZXR1cm4gMDsKIH0KIAotQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0Nh
Y2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRl
KCkpOwogCiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdl
c3RDYWNoZSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgICAgICAgICAg
VVJMIGZhbGxiYWNrVVJMOwogICAgICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hp
dGVsaXN0KHVybCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAo
IWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UodXJsLCAmZmFsbGJhY2tVUkwpKQpA
QCAtMjk5LDcgKzI5OSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLCiAgICAgCiAgICAgaW50
IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJl
c3VsdFJvdykgewotICAgICAgICBLVVJMIG1hbmlmZXN0VVJMID0gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAg
ICAgICAgIGlmIChtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25z
dCBLCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKICAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCi0gICAgICAgIEtV
UkwgZmFsbGJhY2tVUkw7CisgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAgICAgaWYgKGNh
Y2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHVybCwgJmZh
bGxiYWNrVVJMKSkKQEAgLTcyOSw3ICs3MjksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdlSURKbwog
ICAgIH0KICAgICAKICAgICAvLyBTdG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAotICAgIGNvbnN0
IFZlY3RvcjxLVVJMPiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgp
OworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QgPSBjYWNoZS0+b25saW5l
V2hpdGVsaXN0KCk7CiAgICAgewogICAgICAgICBzaXplX3Qgd2hpdGVsaXN0U2l6ZSA9IG9ubGlu
ZVdoaXRlbGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVs
aXN0U2l6ZTsgKytpKSB7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3Rv
cmFnZQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGNhY2hlU3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgdXJsKFBhcnNlZFVS
TFN0cmluZywgY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIFVSTCB1
cmwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKICAg
ICAgICAgCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LmdldENv
bHVtbkludCgxKTsKIApAQCAtMTE1Niw5ICsxMTU2LDkgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3Jh
Z2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgd2hpdGVsaXN0U3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBzdG9yYWdlSUQpOwogICAgIAotICAgIFZlY3RvcjxLVVJMPiB3aGl0ZWxpc3Q7CisgICAgVmVj
dG9yPFVSTD4gd2hpdGVsaXN0OwogICAgIHdoaWxlICgocmVzdWx0ID0gd2hpdGVsaXN0U3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSAKLSAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChL
VVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
KTsKKyAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5nLCB3aGl0ZWxp
c3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxS
ZXN1bHREb25lKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGlu
ZSB3aGl0ZWxpc3QsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpA
QCAtMTE4OCw3ICsxMTg4LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBG
YWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBmYWxs
YmFja1N0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgCi0gICAgICAgIGZhbGxiYWNr
VVJMcy5hcHBlbmQobWFrZV9wYWlyKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3Rh
dGVtZW50LmdldENvbHVtblRleHQoMSkpKSk7CisgICAgICAgIGZhbGxiYWNrVVJMcy5hcHBlbmQo
bWFrZV9wYWlyKFVSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3RhdGVtZW50LmdldENvbHVt
blRleHQoMCkpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1
bW5UZXh0KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKQogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGZhbGxiYWNrIFVSTHMsIGVycm9yIFwiJXNcIiIs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNh
Y2hlRGlyZWN0b3J5LCBBcHAKICAgICByZXR1cm4gY29weVN0b3JhZ2Uuc3RvcmVOZXdlc3RDYWNo
ZShncm91cENvcHkuZ2V0KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpt
YW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxzKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxVUkw+KiB1cmxzKQogewogICAgIEFTU0VSVCh1cmxz
KTsKICAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJMPiogdXJscykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUgKHNlbGVjdFVSTHMuc3RlcCgpID09
IFNRTFJlc3VsdFJvdykKLSAgICAgICAgdXJscy0+YXBwZW5kKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgdXJscy0+YXBwZW5kKFVS
TChQYXJzZWRVUkxTdHJpbmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBsb25nIGxvbmcgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiA+JiBvcmlnaW5zKQogewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAgIFZlY3RvcjxV
Ukw+IHVybHM7CiAgICAgaWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7CiAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IGFmNjQzN2U4NDNiODYyOGYw
NDNmYWFmY2IzNzljYjNjMDM2ZTYwOWQuLmU0YjMxMDQ0ZWRiYzI5ZGI3ZTAyMDUyMDhmZGZlZTBm
NDY0MjE3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKLWNsYXNzIEtV
Ukw7CitjbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpAQCAtNjksMTEg
KzY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CiAgICAgYm9vbCBjaGVja09yaWdp
blF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIEFwcGxpY2F0aW9uQ2FjaGUqIG9sZENhY2hl
LCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNoZSwgaW50NjRfdCYgdG90YWxTcGFjZU5lZWRlZCk7
CiAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VS
TCYpOyAvLyBDYWNoZSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgotICAgIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8g
Q2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBm
cm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgorICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
Y2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVz
b3VyY2UgZnJvbS4KKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91
cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0
byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgogCi0g
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMKTsKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9y
eUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0OworICAgIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9yeUNhY2hlR3JvdXAo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9pZCBjYWNoZUdyb3VwRGVzdHJv
eWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQgY2FjaGVHcm91cE1hZGVPYnNv
bGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAgCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgYm9vbCBzdG9yZUNvcHlPZkNhY2hlKGNvbnN0IFN0
cmluZyYgY2FjaGVEaXJlY3RvcnksIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Kik7CiAKLSAgICBib29s
IG1hbmlmZXN0VVJMcyhWZWN0b3I8S1VSTD4qIHVybHMpOworICAgIGJvb2wgbWFuaWZlc3RVUkxz
KFZlY3RvcjxVUkw+KiB1cmxzKTsKICAgICBib29sIGNhY2hlR3JvdXBTaXplKGNvbnN0IFN0cmlu
ZyYgbWFuaWZlc3RVUkwsIGludDY0X3QqIHNpemUpOwogICAgIGJvb2wgZGVsZXRlQ2FjaGVHcm91
cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKTsKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmls
ZSgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UoKTsKICAgICBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbG9h
ZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7CiAgICAgCiAg
ICAgdHlwZWRlZiBTdG9yYWdlSURKb3VybmFsPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gUmVz
b3VyY2VTdG9yYWdlSURKb3VybmFsOwogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91cm5hbDxBcHBs
aWNhdGlvbkNhY2hlR3JvdXA+IEdyb3VwU3RvcmFnZUlESm91cm5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IDk1
ODcxMGNkODRiNjdlMTIxMTRkZTBkNGE5ODFiZDNhODk1OGFmMjYuLmIwNTRjZDI1NWE1M2IyMTU3
YTMwZWI3YWJjNTkyMTk5MDdiMWEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApAQCAtNDEsNyArNDEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0
cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgogY2xhc3MgRE9NQXBwbGljYXRpb25D
YWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxp
Y2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIERP
TVdpbmRvd1Byb3BlcnR5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGM5ODVhOWMyYWI0NzE0NmRlNDkxNTQzMjkyYjMxMDdk
OGYzODZiZmYuLmJiMWYwMzkxNmFlNDJjYjkxYzUwZjI2MzNhNWQ1MDE3ZGUxMDI5M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApA
QCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hbmlmZXN0
UGFyc2VyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rl
ck5hbWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVX
aGl0ZWxpc3QsIFVua25vd24gfTsKICAgICAKLWJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1h
bmlmZXN0KQorYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKIHsKICAgICBBU1NF
UlQobWFuaWZlc3QuZXhwbGljaXRVUkxzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0
Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5pc0VtcHR5KCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIGJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIEtVUkwgdXJsKG1hbmlmZXN0VVJMLCBTdHJpbmcobGluZS5j
aGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOworICAgICAgICAgICAgVVJMIHVy
bChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0
ZXJzKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgcGFyc2VN
YW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEtVUkwgbmFtZXNwYWNlVVJMKG1hbmlmZXN0VVJMLCBT
dHJpbmcobGluZS5jaGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOworICAgICAg
ICAgICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVy
cygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgICAgIGlmICghbmFtZXNwYWNl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
IChuYW1lc3BhY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTY0LDcg
QEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmUKICAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVu
ZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykgCiAgICAgICAgICAgICAgICAgcCsrOwogCi0g
ICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMKG1hbmlmZXN0VVJMLCBTdHJpbmcoZmFsbGJhY2tT
dGFydCwgcCAtIGZhbGxiYWNrU3RhcnQpKTsKKyAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTCht
YW5pZmVzdFVSTCwgU3RyaW5nKGZhbGxiYWNrU3RhcnQsIHAgLSBmYWxsYmFja1N0YXJ0KSk7CiAg
ICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmIChmYWxsYmFja1VSTC5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmgKaW5kZXggMzliNzYwZDM2MjNhMjc0OTFjZGZkZTAzNmQyODcwZjA4MTk1ZTJlZi4uMjgzMTVk
ZGU2OGZlMWFlNzhjNjg2NzBmOTFhM2FjYzJhYmUyYzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAgLTMwLDE2ICszMCwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsK
IAogICAgIHN0cnVjdCBNYW5pZmVzdCB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiBvbmxpbmVXaGl0
ZWxpc3RlZFVSTHM7CisgICAgICAgIFZlY3RvcjxVUkw+IG9ubGluZVdoaXRlbGlzdGVkVVJMczsK
ICAgICAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICAgICAgRmFsbGJhY2tV
UkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgICAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVl
c3RzOyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiAgICAgfTsKIAotICAg
IGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmKTsKKyAgICBib29sIHBhcnNlTWFuaWZlc3QoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZl
c3QmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAKaW5kZXggMTRjODFmZGI3YTkzNTkwZTFkMTlmMWUyYzEwY2ViMGJmMTg0NDgz
MC4uZDc3NWJjOTA3NjA5ZmFiYjgyYWM3NGM1MDYwYzJkNGFlMzk2ZTJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDUsMTIg
KzQ1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBQYXNzUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIq
KTsKK3R5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFw
OwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVy
biBQYXNzUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMg
YWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgot
dGVtcGxhdGUgPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBQYXNzUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZm
ZXIpOwogfQpAQCAtODIsNyArODIsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVN
aW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNF
bXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVBh
c3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmws
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1Bhc3NSZWZQdHI8
QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKiBmdW5jdGlvbiA9IG1pbWVUeXBlLmlzRW1wdHkoKSA/IDAgOiBhcmNoaXZlTUlN
RVR5cGVzKCkuZ2V0KG1pbWVUeXBlKTsKICAgICByZXR1cm4gZnVuY3Rpb24gPyBmdW5jdGlvbih1
cmwsIGRhdGEpIDogUGFzc1JlZlB0cjxBcmNoaXZlPigwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IGQwNDA1Y2E1MmM4Y2FiYTFiNDNj
ZTAwOGZhZDVmOGIwYzY0OGZhYWYuLjU0YjY0ZGQ3NzdjZDU5MGU3YzFjMDVlZWI2YmI0YzU0ZTlm
ZjY3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rv
cnkuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBBcmNoaXZl
RmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTWltZVR5cGUoY29u
c3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0
IEtVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCA3ZGVkYzkzNGFlNjZhOTkw
NGVlY2FjMGE1M2Q1NmMyZDAwNGM0YzVmLi4yMTAwMGM4MjgzZjIyOWVlMjMyNDI5MDU4NDUxOWNm
MmE2YmQxMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFy
Y2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0YSkKICAgICAsIG1f
bWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5jb2RpbmcpCkBA
IC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
NTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEsIHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywg
ZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKGRhdGEsIHVybCwgcmVzcG9uc2UubWlt
ZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aAppbmRleCA5N2Q2ZTMyZjdkMjA1YzJjNjRlYzdhMzdkNWU5OWQ1YmE4MTBjMTZhLi45YjRiMDFi
OWM5ZjM3YmMwYjQ3ODYxOGVmZjdhYTlmOTE5MTAyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0
dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgS1VSTCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IEtVUkwmLAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0KIAogcHJpdmF0
ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
QXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwCmluZGV4IGFhNGE4NzBmNTdhZDgyZjY0YWZhOTIyNWEyYWViYjY0Njk2MjhiZWEuLjY0ZWMy
OGRhNWNkZDg4Y2ZmNWYyN2JhNGQ5NzUyYzk0MGRmYWUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwCkBAIC02OCwxMSArNjgsMTEgQEAgdm9pZCBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjph
ZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UKICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXNv
dXJjZS0+dXJsKCk7IC8vIGdldCBiZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3aGljaCBzZXRz
IGl0IHRvIDApCisgICAgY29uc3QgVVJMJiB1cmwgPSByZXNvdXJjZS0+dXJsKCk7IC8vIGdldCBi
ZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3aGljaCBzZXRzIGl0IHRvIDApCiAgICAgbV9zdWJy
ZXNvdXJjZXMuc2V0KHVybCwgcmVzb3VyY2UpOwogfQogCi1BcmNoaXZlUmVzb3VyY2UqIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJiB1
cmwpCitBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVS
ZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlID0gbV9zdWJyZXNvdXJjZXMuZ2V0KHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKQEAg
LTgxLDcgKzgxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYgdXIKICAgICByZXR1cm4gcmVzb3Vy
Y2U7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6
cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBLVVJMJiB1
cmwpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OnBvcFN1
YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFt
ZSk7CiAgICAgaWYgKGFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXggMTVlZjhiY2M5YWY0
YWRjNGZmM2M1MWU0ZTlhMmIyNmJkMzA5MjVjNy4uNWFlNGIyZDQwNWY4N2JiOGEwMGQwZTMwYzBl
NWE5YTliN2NhNWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQXJjaGl2ZS5oIgogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7CiAg
ICAgdm9pZCBhZGRBbGxSZXNvdXJjZXMoQXJjaGl2ZSopOwogICAgIAotICAgIEFyY2hpdmVSZXNv
dXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKTsKLSAgICBQYXNzUmVmUHRy
PEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgS1VSTCYpOworICAgIEFyY2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNv
bnN0IFVSTCYpOworICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wU3ViZnJhbWVBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAgICAKIHByaXZhdGU6ICAgIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IG1fc3VicmVzb3Vy
Y2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAppbmRleCA0MTAxYWRjYjkyYzllYTVmYzA2ZTkwZGQ4YWY2OTllOTBiNDky
NmE5Li5mYmU5ZTMwZTg1NDI1Zjc0YWM4NGY2YmM5ZjU2ZDE5YWEyMDA4Y2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklj
b25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIK
KyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjI3LDcgKzIyNyw3IEBAIFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShD
RkRpY3Rpb25hcnlSZWYgZGljCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNw
b25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbik7CiAgICAgfQogICAgIAotICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEocmVzb3VyY2VEYXRhKSwgS1VSTChLVVJM
KCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwor
ICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBDRkRh
dGEocmVzb3VyY2VEYXRhKSwgVVJMKFVSTCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
LCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQpAQCAtMjU1LDEwICsyNTUsMTAgQEAgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1JlZlB0
cjxBcmNoaXZlUmVzb3VyY2UKIAogUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJldHVybiBjcmVh
dGUoS1VSTCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAot
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29u
c3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK1Bhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJv
bSByYXcgZGF0YSIpOwogICAgIApAQCAtNTAxLDE4ICs1MDEsMTggQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCk7Ci0gICAgS1VSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOworICAgIFVSTCBy
ZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwogICAgIAogICAgIC8vIGl0J3MgcG9zc2libGUg
dG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKLSAgICAgICAgcmVz
cG9uc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IHJlc3BvbnNlVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIAogICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIobWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJl
c3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIsIGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKTsK
IAogICAgIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4gc3ViZnJhbWVBcmNo
aXZlczsKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gc3VicmVzb3Vy
Y2VzOwotICAgIEhhc2hTZXQ8S1VSTD4gdW5pcXVlU3VicmVzb3VyY2VzOworICAgIEhhc2hTZXQ8
VVJMPiB1bmlxdWVTdWJyZXNvdXJjZXM7CiAKICAgICBzaXplX3Qgbm9kZXNTaXplID0gbm9kZXMu
c2l6ZSgpOyAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzU2l6ZTsgKytpKSB7
CkBAIC01MzAsMTMgKzUzMCwxMyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlZCB0byBhcmNoaXZlIHN1
YmZyYW1lICVzIiwgY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExpc3RIYXNoU2V0PEtV
Ukw+IHN1YnJlc291cmNlVVJMczsKKyAgICAgICAgICAgIExpc3RIYXNoU2V0PFVSTD4gc3VicmVz
b3VyY2VVUkxzOwogICAgICAgICAgICAgbm9kZS0+Z2V0U3VicmVzb3VyY2VVUkxzKHN1YnJlc291
cmNlVVJMcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgICAgICAg
ICAgTGlzdEhhc2hTZXQ8S1VSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJyZXNvdXJjZVVSTHMu
ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PEtVUkw+OjppdGVyYXRvciBpdGVy
ID0gc3VicmVzb3VyY2VVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgc3VicmVzb3VyY2VVUkwgPSAqaXRlcjsKKyAgICAg
ICAgICAgIExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJyZXNvdXJjZVVS
THMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0
ZXIgPSBzdWJyZXNvdXJjZVVSTHMuYmVnaW4oKTsgaXRlciAhPSBpdGVyRW5kOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMID0gKml0ZXI7CiAgICAg
ICAgICAgICAgICAgaWYgKHVuaXF1ZVN1YnJlc291cmNlcy5jb250YWlucyhzdWJyZXNvdXJjZVVS
TCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01NzMsNyArNTczLDcgQEAg
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMID0g
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChyZXNwb25zZVVSTCk7
CiAgICAgICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYgaWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgewogICAgICAgICAgICAgaWYg
KEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdl
VVJMKHJlc3BvbnNlVVJMLCBJbnRTaXplKDE2LCAxNikpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoaWNvbkltYWdlLT5kYXRhKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpY29uVVJMKSwgImlt
YWdlL3gtaWNvbiIsICIiLCAiIikpCisgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoaWNvbkltYWdlLT5k
YXRhKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIGljb25VUkwpLCAiaW1hZ2UveC1pY29uIiwgIiIs
ICIiKSkKICAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggY2UxYjcxMjU1
OTBlODEyNjM1MjM4YjQ5YmZiZGVhMjVjZGY0YTk5YS4uZGJhZTlkYzFiYjk3MTU2MDRiMTBlOTc4
MGFjZGFhOGM0ZjcwNDQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBMZWdhY3lX
ZWJBcmNoaXZlIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIqKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSwgVmVj
dG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxQ
YXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlKiwgRnJhbWVGaWx0
ZXIqID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAppbmRleCBmODMxNWM5YTA3NDNmNzM5MGI1YWViNzk4OTRhNDdjYjEx
NjE2MTY4Li42ZWMyMGU5ZWZiZmEzNzdmNzhjZDc4Zjg3YmYyZTM4MTlhN2I5YjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTUhUTUxBcmNoaXZlKTsKIH0K
IAotUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IEtV
UkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhKQorUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBsb2FkIE1IVE1MIHBhZ2VzIGZy
b20gbG9jYWwgVVJMcy4KICAgICBpZiAoIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCBkZDE0ZDk5YzRhNWM5NjI2ZjI2
MmIwOGQ0MGIyZmMwZGFjYjdkZTM0Li4xNGNkODc1NzIzNWIzNjViNTVjNDU4MDQzNTZkYTk4YWRi
NDExMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBNSFRNTDsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNSFRNTEFyY2hp
dmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKik7CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqKTsKICAgICAvLyBCaW5hcnkgZW5jb2RpbmcgcmVzdWx0cyBpbiBzbWFsbGVyIE1IVE1MIGZp
bGVzIGJ1dCB0aGV5IG1pZ2h0IG5vdCB3b3JrIGluIG90aGVyIGJyb3dzZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4
IDJkNzJhMTJkOWNjMDNjMmY3YTIxYzI2MDVlZTliZTI0NjY4MWMyYjAuLmQ4NzYwZjllZDlkNjI2
MzFmMTBhMDJmYjY2Nzc2NjI0YzkwNWU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYQogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1F
IGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMu
CiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRw
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBG
aXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCi0gICAg
S1VSTCBsb2NhdGlvbiA9IEtVUkwoS1VSTCgpLCBtaW1lSGVhZGVyLmNvbnRlbnRMb2NhdGlvbigp
KTsKKyAgICBVUkwgbG9jYXRpb24gPSBVUkwoVVJMKCksIG1pbWVIZWFkZXIuY29udGVudExvY2F0
aW9uKCkpOwogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShjb250ZW50QnVmZmVy
LCBsb2NhdGlvbiwgbWltZUhlYWRlci5jb250ZW50VHlwZSgpLCBtaW1lSGVhZGVyLmNoYXJzZXQo
KSwgU3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggNzI3M2IwNDhkM2Q4ZTI4YzJjNTIxOWFlZTJiZDI0OTk2N2ZmZDJiNi4uOGM1
NWRkMTlhMjhlZDY1N2M4YzE2ZDhjYTc5ZGRiYmQxNDY0MDRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEZvbnRQbGF0
Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZmxvYXQgc2l6
ZSwgYm9vbCBib2xkLCBiCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFp
c0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKIAogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIFN0cmluZyBzdmdTb3VyY2UgPSBkZWNvZGVy
LT5kZWNvZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGYzNjFhZmYzNGUwOTg4
YjMzYTlkMzRhMzRhMGQ4ZTAxNTAwMWQ0NTMuLjgzOWRkNTk5NjA2N2FkMGNjNWM4M2EyNWEzMmM3
Njc3NjdhNGFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKQEAgLTIzMCw3ICsyMzAsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUpCiAKICAgICBp
ZiAoIW1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmxGb3JDYWNoZSA9IE1lbW9yeUNhY2hlOjpyZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSk7CisgICAg
VVJMIHVybEZvckNhY2hlID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklm
TmVlZGVkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsRm9yQ2FjaGUuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2ZyYWdtZW50SWRl
bnRpZmllckZvclJlcXVlc3QgPSBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5mcmFnbWVudElkZW50
aWZpZXIoKTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzbwogICAg
IC8vIFdlIHNob3VsZCBsb29rIGludG8gcmVtb3ZpbmcgdGhlIGV4cGVjdGF0aW9uIG9mIHRoYXQg
a25vd2xlZGdlIGZyb20gdGhlIHBsYXRmb3JtIG5ldHdvcmsgc3RhY2tzLgogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBpZiAoIW1fZnJhZ21lbnRJ
ZGVudGlmaWVyRm9yUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBLVVJMIHVybCA9IHJlcXVl
c3QudXJsKCk7CisgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICB1cmwu
c2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdCk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgICAgIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCA4ZWZlOTQ5MjhmZGI3NThmNDVlMTQ5NmFjMTEzYWFjNWVkZmY2
ZmNhLi4wNjYzMjk2MTI4Y2YyYTI4MTEyYmJjMGM4MTgyNzcyZTRiNGQwYmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpO30KKyAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgp
O30KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGNvbnN0IFN0cmluZyYgY2Fj
aGVQYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC5jYWNoZVBhcnRp
dGlvbigpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM0NjM3ODYyY2E0YTVhNTEwZmI5NTFjMzU3
ZjJlYTQzYjcyN2YyMTUuLmU0Y2IyNGEzNDdiOWJkOWM2NDBhODdmMzM3YjQ5ZjI4YTY3MmFlMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTQyLDEzICsxNDIsMTMgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6On5D
YWNoZWRSZXNvdXJjZUxvYWRlcigpCiAKIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCkgY29uc3QgCiB7
Ci0gICAgS1VSTCB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTChyZXNvdXJjZVVSTCk7Cisg
ICAgVVJMIHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHJlc291cmNlVVJMKTsKICAgICBy
ZXR1cm4gY2FjaGVkUmVzb3VyY2UodXJsKTsgCiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpIGNv
bnN0CitDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNl
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwgPSBNZW1vcnlD
YWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVzb3VyY2VVUkwpOworICAg
IFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQo
cmVzb3VyY2VVUkwpOwogICAgIHJldHVybiBtX2RvY3VtZW50UmVzb3VyY2VzLmdldCh1cmwpLmdl
dCgpOyAKIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hlZFJlc291CiB7
CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICBpZiAoZi0+bG9hZGVyKCku
cGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6Ok5vRGlz
bWlzc2FsKSB7Ci0gICAgICAgICAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpOworICAgICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3RVUkwuaXNWYWxp
ZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3RV
UkwsIHJlcXVlc3Qub3B0aW9ucygpLCByZXF1ZXN0LmZvclByZWxvYWQoKSkpCiAgICAgICAgICAg
ICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKGYsIHJlcXVlc3RVUkwpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xOTcsNyArMTk3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVMKIAog
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgVVJM
IHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCiAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0Q2FjaGVQYXJ0
aXRpb24oZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkpOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJjCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENhY2hlZFJhd1Jlc291cmNlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpN
YWluUmVzb3VyY2UsIHJlcXVlc3QpLmdldCgpKTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNl
Y3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0OgpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNr
SW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKK2Jvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgYm9vbCBmb3JQcmVs
b2FkKQogewogICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQpAQCAtNDM1
LDcgKzQzNSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRpbnVlQWZ0
ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjCiAKIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBLVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7Cisg
ICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgCiAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3Vy
Y2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0ldSIsIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3Qu
Y2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpLCByZXF1ZXN0LmZv
clByZWxvYWQoKSk7CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2
YWxpZGEKICAgICByZXR1cm4gVXNlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAordm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcw
MywxMiArNzAzLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJs
ZWQoYm9vbCBlbmFibGUpCiAgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogfQogCi1i
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZlcnNJbWFnZShjb25zdCBLVVJMJiB1
cmwpIGNvbnN0Citib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZlcnNJbWFnZShj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSAmJiAhZnJhbWUoKS0+
bG9hZGVyKCkuY2xpZW50KCkuYWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQsIHVybCk7CiB9CiAK
LWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1h
Z2VMb2FkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnREZWZlcnNJ
bWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOwogfQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmlzUHJl
bG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIGNvbnN0IEtVUkwm
IHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgY29uc3QgVVJM
JiB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCiAgICAgaWYgKG1f
cHJlbG9hZHMpIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0
b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ3NjA4MzI1MmI1NjJiOWJhMWFl
MTI4MmUzZTY3NzBkODZiMjMzMDEuLjljOTU5YzQ2YjY0ZWYwNmUwZGU5NmM2M2VkYWU1OTQwYWYx
Y2MyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIAogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIHByb3ZpZGVzIGEg
cGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQogLy8gYW5kIGVuZm9yY2Vz
IGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3IgcmVzb3VyY2UgcmV2YWxp
ZGF0aW9uLgpAQCAtOTcsMTAgKzk3LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gTG9n
cyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZp
ZWQgVVJMLgotICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVy
bCkgY29uc3Q7CisgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdDsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoY29u
c3QgS1VSTCYgdXJsKSBjb25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Uo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0OwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiA+IERvY3VtZW50UmVzb3VyY2VN
YXA7CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2FjaGVkUmVzb3VyY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQpAQCAtMTEwLDcgKzExMCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKIAotICAgIGJvb2wg
c2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxk
RGVmZXJJbWFnZUxvYWQoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kg
Y2FjaGVQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUpIGNvbnN0OwogICAgIApAQCAtMTMzLDcg
KzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgdm9p
ZCBjaGVja0ZvclBlbmRpbmdQcmVsb2FkcygpOwogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMo
KTsKLSAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7
CisgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7CiAK
ICAgICBzdGF0aWMgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCk7CiAKQEAgLTE1MiwxMiArMTUyLDEyIEBAIHByaXZhdGU6CiAgICAgUmV2
YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJj
ZSogZXhpc3RpbmdSZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpEZWZlck9wdGlvbikg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVk
RnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKik7Ci0gICAgYm9vbCBjaGVja0luc2VjdXJl
Q29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJv
b2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYp
IGNvbnN0OwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJG
aXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0
TG9hZEFjdGlvbnMoKTsKIAotICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYp
IGNvbnN0OworICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJikgY29uc3Q7CiAg
ICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCmluZGV4IGE0ODhhZjBkMjE5MWMxOTRkZGZj
Nzc2NTU2OGQzYzVkNmEwNTdhODMuLjAwY2M1NDY5NjA5ZTNiMTJmMmUwYjBhNTE5YzZmOWJlZDlj
NzI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaApAQCAtMzIsMTUgKzMyLDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
CiBjbGFzcyBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTdHlsZVNoZWV0Q2xpZW50KCkgeyB9
CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJl
dHVybiBTdHlsZVNoZWV0VHlwZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRU
eXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVm
ICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQg
Ki8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJh
c2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgVVJMJiAv
KiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3Ry
aW5nJiAvKiBzaGVldCAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBiNjcyMzM4NmEy
MThiMTkzOGM3OTY1MzcwYmZlZDQ1MTM4YTc3Mzg4Li4zN2M3MmM2NDAxZGY0NDliZjlmYzYwNWIw
ZTlmMGI2ZWRjOTgyYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgTWVtb3J5Q2FjaGU6Ok1lbW9yeUNhY2hlKCkKIHsK
IH0KIAotS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQo
Y29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCitVUkwgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpCiB7CiAgICAgaWYgKCFv
cmlnaW5hbFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgcmV0dXJuIG9yaWdp
bmFsVVJMOwpAQCAtODMsNyArODMsNyBAQCBLVVJMIE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVu
dElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkKICAgICAvLyB0byBi
ZSB1bmlxdWUgZXZlbiB3aGVuIHRoZXkgZGlmZmVyIGJ5IHRoZSBmcmFnbWVudCBpZGVudGlmaWVy
IG9ubHkuCiAgICAgaWYgKCFvcmlnaW5hbFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAg
ICAgICAgIHJldHVybiBvcmlnaW5hbFVSTDsKLSAgICBLVVJMIHVybCA9IG9yaWdpbmFsVVJMOwor
ICAgIFVSTCB1cmwgPSBvcmlnaW5hbFVSTDsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIE1lbW9y
eUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jl
c291cmNlKQogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVhclJlc291cmNlVG9SZXZhbGlk
YXRlKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JVUkwo
Y29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJl
c291cmNlRm9yVVJMKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgcmV0dXJuIHJlc291
cmNlRm9yUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VVUkwpKTsKIH0KQEAgLTE3MSw3
ICsxNzEsNyBAQCBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKGNv
bnN0IEtVUkwmIHJlc291cmNlVVJMKQogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNv
dXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBLVVJMIHVybCA9IHJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwgPSByZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKICNpZiBFTkFCTEUoQ0FD
SEVfUEFSVElUSU9OSU5HKQogICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9IG1fcmVzb3Vy
Y2VzLmdldCh1cmwpOwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDJiYTNhZGJhNDYwZTM0ZTA4
YzllMGU4ZjA4N2NjNjJkY2E5NTY4N2EuLjc4NWNkZTIzNWE2MjBlN2U5ZDQxYmQ0Y2YwNzg3MGIx
ZTk0NGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlICB7CiBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTEx
MiwxMyArMTEyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVN0YXRpc3RpYyBmb250czsKICAg
ICB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKTsK
KyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJik7CiAgICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICAKICAgICBib29sIGFkZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpOwogICAgIHZvaWQg
cmVtb3ZlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgeyBldmljdChyZXNvdXJjZSk7IH0KIAot
ICAgIHN0YXRpYyBLVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IEtV
UkwmIG9yaWdpbmFsVVJMKTsKKyAgICBzdGF0aWMgVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOwogICAgIAogICAgIHZvaWQgcmV2YWxp
ZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVkKENhY2hl
ZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggYmM3YjljNWIyYTcyMzVjM2YwOGY5Nzc1
YmZmZTJjZTg2NDBmMjFkYS4uYWZlNjdiNzllM2ExYzMxYWQ1NDQ2NzQyOGJmNzQ4OGY2MTllNmNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApA
QCAtNjAsMTAgKzYwLDEwIEBAIEljb25Db250cm9sbGVyOjp+SWNvbkNvbnRyb2xsZXIoKQogewog
fQogCi1LVVJMIEljb25Db250cm9sbGVyOjp1cmwoKQorVVJMIEljb25Db250cm9sbGVyOjp1cmwo
KQogewogICAgIEljb25VUkxzIGljb25VUkxzID0gdXJsc0ZvclR5cGVzKEZhdmljb24pOwotICAg
IHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBpY29uVVJMc1swXS5tX2ljb25V
Ukw7CisgICAgcmV0dXJuIGljb25VUkxzLmlzRW1wdHkoKSA/IFVSTCgpIDogaWNvblVSTHNbMF0u
bV9pY29uVVJMOwogfQogCiBJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJMKEljb25UeXBl
IGljb25UeXBlKSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBAIEljb25VUkxzIEljb25Db250cm9s
bGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiAgICAgcmV0dXJuIGljb25VUkxz
OwogfQogCi12b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwm
IGljb24pCit2b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IFVSTCYg
aWNvbikKIHsKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29uVVJMICVzIHRv
IGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSwgbV9mcmFtZS0+bG9hZGVyKCkuaW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNv
bi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKICAgICBpZiAo
IWRvY3VtZW50Q2FuSGF2ZUljb24obV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBLVVJMIGljb25VUkwodXJsKCkpOworICAgIFVSTCBpY29uVVJMKHVy
bCgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3RyaW5nKCkpOwogICAgIGlmICh1
cmxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVj
aXNpb24gaWNvbkxvYWREZWNpc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGljb25M
b2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewotICAgICAgICBLVVJMIGljb25VUkwodXJsKCkp
OworICAgICAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAgICAgIFN0cmluZyB1cmxTdHJpbmco
aWNvblVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDExICsyNTMsMTEgQEAgYm9vbCBJY29uQ29udHJvbGxl
cjo6YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMqIGljb25VUkxz
KQogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkK
IHsKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0
dHAgb3IgaHR0cHMKLSAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CiAgICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAg
IHJldHVybiBJY29uVVJMKCk7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIGJv
b2wgY291bGRTZXRQcm90b2NvbCA9IHVybC5zZXRQcm90b2NvbChkb2N1bWVudFVSTC5wcm90b2Nv
bCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxkU2V0UHJvdG9j
b2wpOwogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAppbmRleCA2MWRmYTc2YjZjNGZmY2JmZjc2
ZDU2Yjk2NDNiNWM0ODc1NzA2NjU4Li5jYTljMTRjODUxZWRhMzk3MDY2ZTcxNjBhOGYzZjE4ZmRk
ZGNkZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNpbmNs
dWRlICJJY29uVVJMLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IEljb25Db250cm9sbGVyKEZyYW1lKik7CiAgICAgfkljb25Db250cm9sbGVyKCk7CiAKLSAg
ICBLVVJMIHVybCgpOworICAgIFVSTCB1cmwoKTsKICAgICBJY29uVVJMcyB1cmxzRm9yVHlwZXMo
aW50IGljb25UeXBlc01hc2spOwogICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7
CiAKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERlY2lzaW9uUmVjZWl2
ZWQoSWNvbkxvYWREZWNpc2lvbik7CiAgICAgdm9pZCBjb250aW51ZUxvYWRXaXRoRGVjaXNpb24o
SWNvbkxvYWREZWNpc2lvbik7CiAKLSAgICB2b2lkIGNvbW1pdFRvRGF0YWJhc2UoY29uc3QgS1VS
TCYgaWNvbik7CisgICAgdm9pZCBjb21taXRUb0RhdGFiYXNlKGNvbnN0IFVSTCYgaWNvbik7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBhcHBlbmRUb0ljb25VUkxzKEljb25UeXBlLCBJY29uVVJMcyop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCBhNjIyNmRk
ZjJiZmUyOWI3NWFhNGViNzg5NmVjOGU5OGM3MzM0M2I1Li5jNzc3ZGQ0ZjI3ZjAyNzBkNzhiYmI3
NjNhYmNhNzExMjMwYmEyYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgSWNvbkRhdGFi
YXNlQ2xpZW50OwogY2xhc3MgSWNvblJlY29yZDsKIGNsYXNzIEljb25TbmFwc2hvdDsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlVVJMUmVjb3JkOwogY2xhc3MgUGFnZVVSTFNu
YXBzaG90OwogY2xhc3MgU2hhcmVkQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2VCYXNlLmNwcAppbmRleCA5ZjExNjBjYmNmMjI3NThiMGNhODYyMzhm
YzI2ODQ4MjYxZTEzYjQ0Li41MWNjYjNiMjdkOTRhZmJmZDlmNjVjNmYwY2RiMTUzMTE3MDBiMTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmNw
cApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKIAogI2lu
Y2x1ZGUgIkljb25EYXRhYmFzZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KaW5kZXggMDgz
YjFlNjAzMzY5YTk4M2JmYWQxODMwYmRlMjEwMWFmMDRiNDc0My4uZDVjYjkwODgzNjRmY2M4ZDgw
MWVhNTMyMTAxNTczNDkxN2JhZjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFj
L0xvYWRlck5TVVJMRXh0cmFzLm1tCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0ICJLVVJMLmgiCisj
aW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbXBvcnQgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgpAQCAt
NTgsNyArNTgsNyBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoTlNV
UkwgKnVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIGlmIChbZmlsZW5hbWUgbGVu
Z3RoXSA9PSAwIHx8IFtsYXN0UGF0aENvbXBvbmVudCBpc0VxdWFsVG9TdHJpbmc6QCIvIl0pIHsK
ICAgICAgICAgLy8gbGFzdFBhdGhDb21wb25lbnQgaXMgbm8gZ29vZCwgdHJ5IHRoZSBob3N0Lgot
ICAgICAgICBOU1N0cmluZyAqaG9zdCA9IEtVUkwodXJsKS5ob3N0KCk7CisgICAgICAgIE5TU3Ry
aW5nICpob3N0ID0gVVJMKHVybCkuaG9zdCgpOwogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1l
QnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhob3N0KTsKICAgICAgICAgaWYgKFtmaWxlbmFtZSBs
ZW5ndGhdID09IDApIHsKICAgICAgICAgICAgIC8vIENhbid0IG1ha2UgYSBmaWxlbmFtZSB1c2lu
ZyB0aGlzIFVSTCwgdXNlICJ1bmtub3duIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDIzNzVlZDNiNmVkMDliYjA1ODE3YWY1MGYwZDAw
NTQ2NTAwMjc5NGYuLjUxYWEzOGVlNjcwYTdkY2I4ZGI5ZjkyNzU3NGI3M2Y5ZTJhODRlODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAt
MjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNT
dHlsZVNoZWV0T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8g
SWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBu
ZXcgc2NoZW1lIGFuZCBhIFVVSUQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBjYXB0
aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJ1c2VyLWNhcHRpb25zLW92ZXJy
aWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5n
LCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIz
NERDMjMiKSk7CiAKICAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29y
bGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAKaW5kZXggNTFiMzZjMmU2YTcxZTg1ODFiMzRlNzhiNGJiMzFiYWJjZmIwNjcxMS4uNzM5
NTU5YzkzYjFjMDlkNWU4NDhkOWE5ZTU2Y2E0ZGNiM2NjNGM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGbG9h
dENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVk
ZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTFjOTA0NWIxNzg3
YjA3Y2E1YTQ1YTRjMmY0N2UzZmRiYjhkZjE5Li44YzU1NTMwMTg3ZTU4N2ZkYTVlYTQ2ZTA4MDQw
OTVhMGJjMDhkODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGluZ0xv
YWRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgpAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBib29sIG1h
dGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIXNjaGVtZU1h
dGNoZXModXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25z
dCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9vbCBzY2hlbWVNYXRjaGVzKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgU3RyaW5nIHByb3RlY3RlZFJlc291cmNlU2NoZW1lKG1fcG9saWN5LT5zZWN1cml0eU9y
aWdpbigpLT5wcm90b2NvbCgpKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodXJsLnByb3RvY29sKCksIG1fc2NoZW1lKTsKICAg
ICB9CiAKLSAgICBib29sIGhvc3RNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBi
b29sIGhvc3RNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgU3RyaW5nJiBob3N0ID0gdXJsLmhvc3QoKTsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGhvc3QsIG1faG9zdCkpCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKIAogICAgIH0K
IAotICAgIGJvb2wgcGF0aE1hdGNoZXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorICAgIGJvb2wg
cGF0aE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9w
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg1LDcgKzI4NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwYXRoID09IG1fcGF0aDsKICAgICB9CiAKLSAg
ICBib29sIHBvcnRNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBib29sIHBvcnRN
YXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcG9ydEhh
c1dpbGRjYXJkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogICAgIENTUFNvdXJjZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3Qg
U3RyaW5nJiBkaXJlY3RpdmVOYW1lKTsKIAogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7
Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIG1hdGNoZXMoY29uc3Qg
VVJMJik7CiAgICAgYm9vbCBhbGxvd0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dJbmxp
bmU7IH0KICAgICBib29sIGFsbG93RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dFdmFsOyB9
CiAKQEAgLTM2NCwxMiArMzY0LDEyIEBAIHZvaWQgQ1NQU291cmNlTGlzdDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICBwYXJzZSh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmNoYXJh
Y3RlcnMoKSArIHZhbHVlLmxlbmd0aCgpKTsKIH0KIAotYm9vbCBDU1BTb3VyY2VMaXN0OjptYXRj
aGVzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQ1NQU291cmNlTGlzdDo6bWF0Y2hlcyhjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAobV9hbGxvd1N0YXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgS1VSTCBlZmZlY3RpdmVVUkwgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJV
UkwodXJsKSA/IFNlY3VyaXR5T3JpZ2luOjpleHRyYWN0SW5uZXJVUkwodXJsKSA6IHVybDsKKyAg
ICBVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVy
bCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAo
bV9saXN0W2ldLm1hdGNoZXMoZWZmZWN0aXZlVVJMKSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fc291cmNlTGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgYm9v
bCBhbGxvd3MoY29uc3QgS1VSTCYgdXJsKQorICAgIGJvb2wgYWxsb3dzKGNvbnN0IFVSTCYgdXJs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVzKHVybC5pc0VtcHR5
KCkgPyBwb2xpY3koKS0+dXJsKCkgOiB1cmwpOwogICAgIH0KQEAgLTgzOSwyNSArODM5LDI1IEBA
IHB1YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVT
dHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25z
dDsKICAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSosIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93U2NyaXB0Tm9uY2Uo
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVB
dHRyaWJ1dGUsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJM
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJv
b2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9t
U291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAg
ICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1Nv
dXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNvbnN0IEtVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VV
UkkoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKKyAgICBib29sIGFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworCisgICAgYm9vbCBh
bGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNv
bnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsK
KyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbWFn
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25z
dCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24o
Y29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0
OworICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKIAogICAgIHZvaWQgZ2F0aGVyUmVwb3J0VVJJcyhE
T01TdHJpbmdMaXN0JikgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVj
dGVkWFNTRGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0
aW9uOyB9CiAgICAgYm9vbCBpc1JlcG9ydE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9u
bHk7IH0KLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHJlcG9ydFVSSXMoKSBjb25zdCB7IHJldHVy
biBtX3JlcG9ydFVSSXM7IH0KKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCiBwcml2YXRlOgogICAgIENTUERpcmVjdGl2
ZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKQEAgLTg3NiwxMiArODc2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDU1BE
aXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPd25QdHI8
Q1NQRGlyZWN0aXZlVHlwZT4mKTsKIAogICAgIFNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2
ZURpcmVjdGl2ZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7Ci0gICAgdm9pZCByZXBvcnRW
aW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYg
YmxvY2tlZFVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCks
IGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OworICAgIHZvaWQg
cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0
IFVSTCYgYmxvY2tlZFVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJp
bmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CiAKICAg
ICBib29sIGNoZWNrRXZhbChTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9vbCBj
aGVja0lubGluZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9vbCBjaGVja05v
bmNlKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBjaGVj
a1NvdXJjZShTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJv
b2wgY2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFVSTCYpIGNvbnN0Owog
ICAgIGJvb2wgY2hlY2tNZWRpYVR5cGUoTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsg
bV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IH0KQEAgLTg5MCw3ICs4
OTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24o
U291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgYm9vbCBpc1NjcmlwdCkgY29uc3Q7CiAgICAgYm9vbCBjaGVja05vbmNlQW5kUmVwb3J0Vmlv
bGF0aW9uKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5n
JiBjb25zb2xlTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSkgY29uc3Q7CisgICAgYm9vbCBjaGVja1NvdXJj
ZUFuZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tNZWRp
YVR5cGVBbmRSZXBvcnRWaW9sYXRpb24oTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UpIGNvbnN0OwogCiAgICAgYm9vbCBkZW55SWZFbmZvcmNpbmdQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KQEAgLTkxOCw3ICs5MTgsNyBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKICAgICBPd25QdHI8
U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zdHlsZVNyYzsKIAotICAgIFZlY3RvcjxLVVJMPiBtX3Jl
cG9ydFVSSXM7CisgICAgVmVjdG9yPFVSTD4gbV9yZXBvcnRVUklzOwogCiAgICAgU3RyaW5nIG1f
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogfTsKQEAgLTk0OSw3ICs5NDksNyBAQCBQYXNzT3du
UHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIHBvbAogICAgIHJldHVybiBkaXJlY3RpdmVzLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5n
JiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZl
RGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2Nr
ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAogewogICAgIFN0cmlu
ZyBtZXNzYWdlID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNz
YWdlIDogY29uc29sZU1lc3NhZ2U7CiAgICAgbV9wb2xpY3ktPnJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmVUZXh0LCBlZmZlY3RpdmVEaXJlY3RpdmUsIG1lc3NhZ2UsIGJsb2NrZWRVUkwsIG1fcmVw
b3J0VVJJcywgbV9oZWFkZXIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CkBAIC05
NzAsNyArOTcwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja05vbmNlKE5vbmNlRGly
ZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgbm9uY2UKICAgICByZXR1cm4gIWRpcmVj
dGl2ZSB8fCBkaXJlY3RpdmUtPmFsbG93cyhub25jZSk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6Y2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBL
VVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlKFNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFkaXJlY3RpdmUgfHwgZGlyZWN0aXZlLT5hbGxvd3ModXJsKTsKIH0KQEAgLTk5OCw3
ICs5OTgsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrRXZhbEFuZFJlcG9ydFZpb2xh
dGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdgogICAgIGlmIChkaXJlY3RpdmUgPT0g
bV9kZWZhdWx0U3JjKQogICAgICAgICBzdWZmaXggPSAiIE5vdGUgdGhhdCAnc2NyaXB0LXNyYycg
d2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2RlZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFs
bGJhY2suIjsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0
U3JjLCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsg
c3VmZml4ICsgIlxuIiwgS1VSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwor
ICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0U3JjLCBjb25zb2xl
TWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsgc3VmZml4ICsgIlxu
IiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CiAgICAgaWYgKCFtX3Jl
cG9ydE9ubHkpIHsKICAgICAgICAgbV9wb2xpY3ktPnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRp
b25Ub0luc3BlY3RvcihkaXJlY3RpdmUtPnRleHQoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tOb25jZUFu
ZFJlcG9ydFZpb2xhdGlvbihOb25jZURpcmVjdGl2ZSogZGlyZWN0aXZlLCBjCiB7CiAgICAgaWYg
KGNoZWNrTm9uY2UoZGlyZWN0aXZlLCBub25jZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0Tm9uY2UsIGNvbnNvbGVN
ZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLlxuIiwgS1VSTCgpLCBjb250
ZXh0VVJMLCBjb250ZXh0TGluZSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4
dCgpLCBzY3JpcHROb25jZSwgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0
KCkgKyAiXCIuXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKIH0KIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihNZWRp
YUxpc3REaXJlY3RpdmUqIGRpcmUKICAgICBpZiAodHlwZUF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgIiBXaGVuIGVuZm9yY2luZyB0aGUgJ3BsdWdpbi10
eXBlcycgZGlyZWN0aXZlLCB0aGUgcGx1Z2luJ3MgbWVkaWEgdHlwZSBtdXN0IGJlIGV4cGxpY2l0
bHkgZGVjbGFyZWQgd2l0aCBhICd0eXBlJyBhdHRyaWJ1dGUgb24gdGhlIGNvbnRhaW5pbmcgZWxl
bWVudCAoZS5nLiAnPG9iamVjdCB0eXBlPVwiW1RZUEUgR09FUyBIRVJFXVwiIC4uLj4nKS4iOwog
Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBwbHVnaW5UeXBlcywgbWVz
c2FnZSArICJcbiIsIEtVUkwoKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4
dCgpLCBwbHVnaW5UeXBlcywgbWVzc2FnZSArICJcbiIsIFVSTCgpKTsKICAgICByZXR1cm4gZGVu
eUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMzYsNyArMTAzNiw3IEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6Y2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERp
cmVjdGl2ZSogZGlyZWN0CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCiAgICAg
ICAgIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIiBOb3RlIHRoYXQgJyIsIChpc1NjcmlwdCA/ICJzY3Jp
cHQiIDogInN0eWxlIiksICItc3JjJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVs
dC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iKTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihk
aXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29uc29s
ZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJc
biIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9ydFZpb2xhdGlv
bihkaXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29u
c29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCAr
ICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7CiAKICAgICBpZiAoIW1fcmVw
b3J0T25seSkgewogICAgICAgICBpZiAoaXNTY3JpcHQpCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBi
b29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJl
Y3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2
ZURpcmVjdGl2ZSkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRS
ZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0CiB7CiAgICAgaWYg
KGNoZWNrU291cmNlKGRpcmVjdGl2ZSwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MTI5LDcgKzExMjksNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UgogICAgICAgICBjaGVja0V2
YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSk7CiB9CiAKLWJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dT
Y3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkws
IGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xh
dGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkp
OwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMTEzNywyMSArMTEzNywyMSBAQCBib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjb250ZQogICAgIHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9u
KG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29udGV4
dFVSTCwgY29udGV4dExpbmUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1
Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwg
Y29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2lu
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRl
bnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrTWVkaWFUeXBlQW5k
UmVwb3J0VmlvbGF0aW9uKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5cGVBdHRyaWJ1dGUs
ICJSZWZ1c2VkIHRvIGxvYWQgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkgKyAiJyAoTUlNRSB0eXBlICciICsgdHlwZUF0dHJpYnV0ZSArICInKSBiZWNhdXNlIGl0IHZp
b2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgRGlyZWN0aXZlOiAi
KSA6CiAgICAgICAgIGNoZWNrTWVkaWFUeXBlKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5
cGVBdHRyaWJ1dGUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0RnJv
bVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxs
b3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJl
cG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAg
ICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9z
Y3JpcHRTcmMuZ2V0KCkpLCB1cmwsIHNjcmlwdFNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShv
cGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29u
c3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2wKICAg
ICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fb2JqZWN0U3JjLmdldCgpKSwg
dXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0No
aWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5p
c0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2OSwzNSArMTE2OSwzNSBA
QCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdAogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVE
aXJlY3RpdmUobV9mcmFtZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVy
YXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1cmwsIGltZ1NyYykgOgogICAgICAgICBj
aGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1cmwpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRS
ZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCB1cmws
IHN0eWxlU3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0
eWxlU3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zv
bnRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwog
ICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9mb250U3JjLmdldCgpKSwgdXJsLCBmb250U3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX2ZvbnRTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5
UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRp
b24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fbWVkaWFTcmMuZ2V0KCkpLCB1cmwsIG1lZGlhU3JjKSA6
CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgp
KSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Nvbm5lY3RUb1NvdXJj
ZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
IHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25u
ZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5n
U3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNo
ZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX2Nvbm5lY3RT
cmMuZ2V0KCkpLCB1cmwsIGNvbm5lY3RTcmMpIDoKQEAgLTEyMTAsMTQgKzEyMTAsMTQgQEAgdm9p
ZCBDU1BEaXJlY3RpdmVMaXN0OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0cmluZ0xpc3QmIGxpc3Qp
IGNvbnN0CiAgICAgICAgIGxpc3QuYXBwZW5kKG1fcmVwb3J0VVJJc1tpXS5zdHJpbmcoKSk7CiB9
CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IEtVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0Vmlv
bGF0aW9uKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsLCBmb3JtQWN0aW9uKSA6CiAgICAgICAgIGNo
ZWNrU291cmNlKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3Rp
dmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVy
biByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8K
ICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24obV9iYXNlVVJJLmdldCgpLCB1
cmwsIGJhc2VVUkkpIDoKQEAgLTE1MzcsOCArMTUzNyw4IEBAIGJvb2wgaXNBbGxvd2VkQnlBbGxX
aXRoQ29udGV4dChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3Qg
U3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERpcmVjdGl2ZUxp
c3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImLCBjb25zdCBLVVJMJikgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0
aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25zdCBTdHJp
bmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51
bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtVUkwmIHVybCkKK3RlbXBsYXRlPGJvb2wgKENTUERp
cmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImLCBjb25zdCBVUkwmKSBjb25zdD4KK2Jvb2wgaXNBbGxvd2Vk
QnlBbGxXaXRoTm9uY2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwb2xpY2llcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIShw
b2xpY2llc1tpXS5nZXQoKS0+KmFsbG93ZWQpKG5vbmNlLCBjb250ZXh0VVJMLCBjb250ZXh0TGlu
ZSwgdXJsKSkKQEAgLTE1NDcsOCArMTU0Nyw4IEBAIGJvb2wgaXNBbGxvd2VkQnlBbGxXaXRoTm9u
Y2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFN0cmluCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERpcmVjdGl2ZUxpc3Q6Oiph
bGxvd0Zyb21VUkwpKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTChjb25zdCBDU1BEaXJl
Y3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1wbGF0ZTxib29s
IChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Citib29sIGlzQWxsb3dlZEJ5QWxs
V2l0aFVSTChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykKIHsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRl
bnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTU5NiwxMiArMTU5NiwxMiBAQCBTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5OjpldmFs
RGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhO
b25jZTwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZT4obV9wb2xpY2llcywgbm9u
Y2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB1cmwpOwogfQogCi1ib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3BvbGljaWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICgh
bV9wb2xpY2llc1tpXS0+YWxsb3dQbHVnaW5UeXBlKHR5cGUsIHR5cGVBdHRyaWJ1dGUsIHVybCwg
cmVwb3J0aW5nU3RhdHVzKSkKQEAgLTE2MTAsNTIgKzE2MTAsNTIgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgdHkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd1NjcmlwdEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3Rh
dHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNv
dXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4g
aXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21T
b3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFs
bFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2U+KG1f
cG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5n
U3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9t
U291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21T
b3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250RnJvbVNvdXJjZShjb25z
dCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVw
b3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVk
aWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRp
YUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IEtVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291
cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0
aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2U+KG1fcG9saWNpZXMs
IHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1B
Y3Rpb24+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29u
c3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0Jhc2VVUkk+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KQEAg
LTE2ODYsMTIgKzE2ODYsMTIgQEAgU2VjdXJpdHlPcmlnaW4qIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLWNvbnN0IEtVUkwmIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6dXJsKCkgY29uc3QKK2NvbnN0IFVSTCYgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1
cmwoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVybCgp
OwogfQogCi1LVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CitVUkwgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogfQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIG1h
c2spIGNvbnN0CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5lbmZvcmNlU2FuZGJveEZs
YWdzKG1hc2spOwogfQogCi1zdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHN0cmlwVVJM
Rm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3MTEs
NyArMTcxMSw3IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBVUkxGb3JVc2VJblJlcG9ydChEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIH0KIAogI2lmIEVOQUJMRShDU1BfTkVYVCkK
LXN0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3Rp
dmUsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgaGVhZGVyKQorc3RhdGlj
IHZvaWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudEluaXQmIGluaXQsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29u
c3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRlcikKIHsKICAgICBpbml0LmRv
Y3VtZW50VVJJID0gZG9jdW1lbnQtPnVybCgpLnN0cmluZygpOwogICAgIGluaXQucmVmZXJyZXIg
PSBkb2N1bWVudC0+cmVmZXJyZXIoKTsKQEAgLTE3MjksMTQgKzE3MjksMTQgQEAgc3RhdGljIHZv
aWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudEkKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdl
dEZpcnN0Tm9uTmF0aXZlRnJhbWUoc3RhY2spOwogCiAgICAgaWYgKGNhbGxGcmFtZS5saW5lTnVt
YmVyKCkpIHsKLSAgICAgICAgS1VSTCBzb3VyY2UgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgY2Fs
bEZyYW1lLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQYXJzZWRVUkxT
dHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgIGluaXQuc291cmNlRmlsZSA9
IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSk7CiAgICAgICAgIGluaXQu
bGluZU51bWJlciA9IGNhbGxGcmFtZS5saW5lTnVtYmVyKCk7CiAgICAgfQogfQogI2VuZGlmCiAK
LXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVj
dG9yPEtVUkw+JiByZXBvcnRVUklzLCBjb25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBl
ZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFVS
TCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51
bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsKICAgICBs
b2dUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0
ZSk7CiAKQEAgLTE3ODksNyArMTc4OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
ICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lID0gZ2V0Rmlyc3ROb25OYXRpdmVG
cmFtZShzdGFjayk7CiAKICAgICAgICAgaWYgKGNhbGxGcmFtZS5saW5lTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGNhbGxGcmFtZS5z
b3VyY2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgc291cmNlID0gVVJMKFBhcnNlZFVSTFN0cmlu
ZywgY2FsbEZyYW1lLnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0U3Ry
aW5nKCJzb3VyY2UtZmlsZSIsIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJj
ZSkpOwogICAgICAgICAgICAgY3NwUmVwb3J0LT5zZXROdW1iZXIoImxpbmUtbnVtYmVyIiwgY2Fs
bEZyYW1lLmxpbmVOdW1iZXIoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDljZGFhNzhhOWE3YTVkZDkzZTZjYjE3Yzk4YTc2
NDYzZGZkNTM2YTUuLjJlYTg4ZjIzM2QzOTdmMTBmMGQzZTgzY2Q5NDA5MWM1NzYxMWNmOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMjYsNyAr
MjYsNyBAQAogI2lmbmRlZiBDb250ZW50U2VjdXJpdHlQb2xpY3lfaAogI2RlZmluZSBDb250ZW50
U2VjdXJpdHlQb2xpY3lfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtOTIsMTkgKzkyLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJl
cG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5n
U3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVj
U3RhdGUqID0gMCwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VS
TCYgPSBLVVJMKCkpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiwgUmVwb3J0
aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJv
bVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0
YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNv
dXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVz
ID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25z
dCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBh
bGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVw
b3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBS
ZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Q29ubmVj
dFRvU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25z
dDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVz
ID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTY3Jp
cHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgPSBVUkwoKSkg
Y29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNl
bmRSZXBvcnQpIGNvbnN0OworCisgICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxv
d09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9y
dCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbWFn
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2Uo
Y29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9v
bCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5k
UmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dGb3Jt
QWN0aW9uKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRS
ZXBvcnQpIGNvbnN0OwogCiAgICAgUmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNT
RGlzcG9zaXRpb24oKSBjb25zdDsKIApAQCAtMTI0LDEyICsxMjQsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgcmVwb3J0SW52YWxpZFJlZmxlY3RlZFhTUyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
dm9pZCByZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAg
ICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8S1VSTD4mIHJlcG9ydFVSSXMs
IGNvbnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmco
KSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51
bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CisgICAgdm9p
ZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29u
c3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJcywgY29uc3Qg
U3RyaW5nJiBoZWFkZXIsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsKIAogICAgIHZvaWQgcmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGlyZWN0
aXZlVGV4dCkgY29uc3Q7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBLVVJM
IGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3Q7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZvaWQgZW5mb3JjZVNh
bmRib3hGbGFncyhTYW5kYm94RmxhZ3MpIGNvbnN0OwogICAgIFN0cmluZyBldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQu
aAppbmRleCAxMjg2ZWNmZTg0MDhlMmM4ZDc5MzdkMWJiZWE2OGI2NDgxMjMyMDVlLi4yM2QzYTVh
YTY5OWY0MzE5YmZjN2NiMTFkODNhY2NmMGUzN2M1MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBDb250ZXh0TWVudUl0ZW07CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKSA9IDA7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDQ0ODI5ODI5ZGRkOGM0ZjhkMDNiOWNhNzcx
ZDlkNWMwMzQwN2I3MTguLmRhMjE3ZmZhOWJjYTA1YmY2NDNlOWI2ZmJmZThjMTdhZTBkN2U3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAg
LTE3MSw3ICsxNzEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRN
ZW51KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAot
c3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBm
cmFtZSkKK3N0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1cmxUb0xvYWQsIEZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsK
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpKSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgIGlmICghbV9oaXRUZXN0UmVzdWx0LmlzQ29u
dGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKTsKLSAgICAgICAgS1VSTCBsaW5rVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRl
TGlua1VSTCgpOworICAgICAgICBVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZUxpbmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChs
aW5rVVJMKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CkBAIC04MzQsNyArODM0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQ29weUxpbmtJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIEtVUkwgaW1hZ2VV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworICAgICAgICBVUkwgaW1h
Z2VVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogICAgICAgICBpZiAo
IWltYWdlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwpAQCAtODQ4LDcgKzg0OCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIEtVUkwgbWVkaWFV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworICAgICAgICBVUkwgbWVk
aWFVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOwogICAgICAgICBpZiAo
IW1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHko
KSB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC05OTEsNyArOTkxLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgfQogCiAgICAg
ICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIEtVUkwg
bGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICAgICAgVVJM
IGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlm
ICghbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIuY2xpZW50KCku
Y2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwMGM3NmVlMDA3MjBl
NGY2MDE1OGU2YmE2YWI0NGJiN2RmYzE5MzQyLi43YTI2NGVlNGEyN2Q3Mjg1ODkwZmEyNmZkZGE2
YWJkYzhmYWVkMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5
UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmNw
cApAQCAtNDgsMjIgKzQ4LDIyIEBAIGJvb2wgaXNQb2xpY3lBY3RpdmVJbkNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gY29udGV4dC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmlzQWN0aXZlKCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFR5cGUpKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q+Cit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhU
eXBlKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+CiBib29sIGlzQWxsb3dlZFdpdGhU
eXBlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5Db250ZXh0KGNvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiAoY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBLVVJMKCksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6U3VwcHJlc3NSZXBvcnQpOworICAgIHJldHVybiAoY29udGV4dC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBVUkwoKSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpTdXBwcmVzc1JlcG9ydCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRl
bnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KK3RlbXBsYXRlPGJvb2wgKENvbnRl
bnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgVVJMJiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgogYm9vbCBpc0FsbG93ZWRXaXRoVVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIGlmICghaXNQb2xpY3lBY3RpdmVJbkNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgS1VSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OworICAgIFVSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlm
ICghcGFyc2VkVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTog
RmlndXJlIG91dCBob3cgdG8gdGhyb3cgYSBKYXZhU2NyaXB0IGVycm9yLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggMzZiZjJiZTBkMDA1Yjc4MmFlMmI0M2E1ZTk2ZDAwYjVlY2E1
NmNjMi4uYjY5YzljODkwZmQxNWJiMTYyM2RiODRhNjViMDA4MmYwZTg2MjM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzAsNyArNzAsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCkBAIC0xNzY5LDcgKzE3NjksNyBAQCB2b2lkIERP
TVdpbmRvdzo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdpbmRvdyog
YWN0aXZlV2luZG93LCBETwogICAgIGlmICghZmlyc3RGcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTCh1cmxTdHJpbmcpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgIGlmIChjb21wbGV0ZWRVUkwuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBET01X
aW5kb3c6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogU3RyaW5n
IERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoRE9NV2luZG93KiBhY3Rp
dmVXaW5kb3cpCiB7Ci0gICAgY29uc3QgS1VSTCYgYWN0aXZlV2luZG93VVJMID0gYWN0aXZlV2lu
ZG93LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIGFjdGl2ZVdpbmRvd1VSTCA9
IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKGFjdGl2ZVdpbmRvd1VS
TC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xODA2LDggKzE4MDYs
OCBAQCBTdHJpbmcgRE9NV2luZG93Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShET01X
aW5kb3cqIGFjdGl2ZVdpbmRvdykKICAgICBTdHJpbmcgbWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJh
bWUgd2l0aCBvcmlnaW4gXCIiICsgYWN0aXZlT3JpZ2luLT50b1N0cmluZygpICsgIlwiIGZyb20g
YWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gXCIiICsgdGFyZ2V0T3JpZ2luLT50b1N0cmlu
ZygpICsgIlwiLiAiOwogCiAgICAgLy8gU2FuZGJveCBlcnJvcnM6IFVzZSB0aGUgb3JpZ2luIG9m
IHRoZSBmcmFtZXMnIGxvY2F0aW9uLCByYXRoZXIgdGhhbiB0aGVpciBhY3R1YWwgb3JpZ2luIChz
aW5jZSB3ZSBrbm93IHRoYXQgYXQgbGVhc3Qgb25lIHdpbGwgYmUgIm51bGwiKS4KLSAgICBLVVJM
IGFjdGl2ZVVSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgS1VSTCB0
YXJnZXRVUkwgPSBkb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gYWN0aXZl
V2luZG93LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdGFyZ2V0VVJMID0gZG9jdW1lbnQo
KS0+dXJsKCk7CiAgICAgaWYgKGRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4p
IHx8IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikp
IHsKICAgICAgICAgbWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShhY3RpdmVVUkwpLT50b1N0cmluZygpICsgIlwiIGZyb20gYWNjZXNzaW5n
IGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLT50b1N0
cmluZygpICsgIlwiLiAiOwogICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikgJiYgYWN0aXZlV2luZG93LT5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5k
Ym94T3JpZ2luKSkKQEAgLTE4NjIsNyArMTg2Miw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IERPTVdp
bmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
CiB7CiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlV2luZG93LT5mcmFtZSgpOwogCi0g
ICAgS1VSTCBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRV
UkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1w
dHkoKSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAoIWNvbXBsZXRlZFVS
TC5pc0VtcHR5KCkgJiYgIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gRG9u
J3QgZXhwb3NlIGNsaWVudCBjb2RlIHRvIGludmFsaWQgVVJMcy4KICAgICAgICAgYWN0aXZlV2lu
ZG93LT5wcmludEVycm9yTWVzc2FnZSgiVW5hYmxlIHRvIG9wZW4gYSB3aW5kb3cgd2l0aCBpbnZh
bGlkIFVSTCAnIiArIGNvbXBsZXRlZFVSTC5zdHJpbmcoKSArICInLlxuIik7CkBAIC0xOTQwLDcg
KzE5NDAsNyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAgICBpZiAoIWFjdGl2ZURv
Y3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRGcmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
IAotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZy
YW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCiAgICAgICAgIGlmICh0
YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nl
c3MoYWN0aXZlV2luZG93LCBjb21wbGV0ZWRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmlu
ZGV4IDRkZWExOTkzYjY4MzdhNDk0ZGM2MThmYmFiYWFkZGRhZDNhMmFjZGUuLjg4M2ViZTI3M2Jj
NGZlODkwOTQzMjQ2Yjc4MjgxZDQ3ZGU2N2Q2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBjOTdmZjRkZGExZGM5Y2VhYjEzZDdmOWIwOTM4NzRj
MzFiY2NlYWFlLi4xODE4NDg3ODUxYWJlOGE3MTNmYTk2M2JlMTdiZmM2OTY0NTE5MjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzQyLDEyICs3NDIsMTIgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdTdGF0
ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgLy8gaGlkZGVuIG9yIG1vdmVkIG91dCBm
cm9tIHVuZGVyIHRoZSBjdXJzb3IuIFJlZ2FyZGxlc3MsIHdlIGRvbid0IHdhbnQgdG8gc3RhcnQg
YSBkcmFnIG9uCiAgICAgICAgIC8vIHNvbWV0aGluZyB0aGF0J3Mgbm90IGFjdHVhbGx5IHVuZGVy
IHRoZSBkcmFnIG9yaWdpbi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEtVUkwgbGlua1VS
TCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFnZVVSTCA9
IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworICAgIFVSTCBsaW5rVVJMID0gaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBVUkwgaW1hZ2VVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKIAogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBv
aW50ID0gc3JjLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBvc2l0aW9uKCkp
OwogCi0gICAgbV9kcmFnZ2luZ0ltYWdlVVJMID0gS1VSTCgpOworICAgIG1fZHJhZ2dpbmdJbWFn
ZVVSTCA9IFVSTCgpOwogICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHNyY09wOwogCiAgICAg
RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKaW5kZXggMjgwMzg5ZjU0MWJiMjRmMDE5MGVkZjllMzE2MDcxYTQxNTEwNTZiZi4uM2M2OTEy
OGI0NTQyMzY1ZjM1MzU2YjZjYzQ4MWY0MjU0MzE4YmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgi
CiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RGlkSW5p
dGlhdGVEcmFnKGJvb2wgaW5pdGlhdGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVk
OyB9IAogICAgICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlk
SW5pdGlhdGVEcmFnOyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlvbjsgfQotICAgICAgICBjb25z
dCBLVVJMJiBkcmFnZ2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdl
VVJMOyB9CisgICAgICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29u
c3QgSW50UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7
IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9CkBAIC0xMDksNyArMTA5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQqLCBjb25zdCBJbnRQ
b2ludCYsIGNvbnN0IEludFJlY3QmLCBDbGlwYm9hcmQqLCBGcmFtZSosIEludFBvaW50Jik7CiAg
ICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBj
b25zdCBJbnRQb2ludCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBmb3JMaW5rKTsKICAgICAg
ICAgdm9pZCBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7Ci0gICAgICAgIHZvaWQgZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCosIEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7CisgICAgICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENs
aXBib2FyZCosIEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKIAog
ICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50OwpAQCAt
MTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RpZElu
aXRpYXRlRHJhZzsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVyYXRpb247
IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3du
IHdpdGhpbiBXZWJLaXQKICAgICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwotICAgICAgICBL
VVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsKKyAgICAgICAgVVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGFkZTVmYzZk
MjdkNGQ5ODNmMDYzYjAwMDhjZjI4YjRmNWMyOWNmNDkuLjU5MjhjMGVkY2JlY2JmMWFjY2U5N2Uw
NzU3MTg4MDlhOTI0NjVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nIEV2ZW50U291cmNlOjpkZWZhdWx0UmVjb25uZWN0RGVsYXkgPSAzMDAwOwogCi1pbmxpbmUg
RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQoraW5s
aW5lIEV2ZW50U291cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3VybCh1cmwpCiAgICAgLCBt
X3dpdGhDcmVkZW50aWFscyhmYWxzZSkKQEAgLTgwLDcgKzgwLDcgQEAgUGFzc1JlZlB0cjxFdmVu
dFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb24KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgS1VSTCBmdWxsVVJMID0g
Y29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgZnVsbFVSTCA9IGNvbnRleHQtPmNv
bXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSkgewogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5oCmluZGV4IDk3ZTdjMTAwZjFhNzE4YzkzZjNmYjYyOTkxZWVlOThhYmNkZDkzZTMuLjc0Nzdl
NmYyMWQ0ZTdlZTQwYWZmMzRmOGU0YzdiNDZhMDgzZmU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRXZlbnRTb3VyY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBEaWN0aW9uYXJ5Jik7Cisg
ICAgRXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIGNvbnN0
IERpY3Rpb25hcnkmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIEZJTkFMIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3MsIGludCBmaWVsZExl
bmd0aCwgaW50IGxpbmVMZW5ndGgpOwogICAgIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVh
dGVNZXNzYWdlRXZlbnQoKTsKIAotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAg
IGJvb2wgbV93aXRoQ3JlZGVudGlhbHM7CiAgICAgU3RhdGUgbV9zdGF0ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAppbmRleCBlODIxNGU0M2U3ODc5Njc4OWNjNjFlYjViMjNkZGRiYzY3MmQxOTU1Li43
YWZiODdmNjQ1M2MyZTJjNzczNjJkOTRlOTI5YWY5ODY2YjBmMGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtOTQ2LDcgKzk0Niw3IEBAIHZvaWQgRnJhbWU6OmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICAvLyBXZSBhbGxvdyBvbmUgbGV2ZWwgb2Ygc2VsZi1yZWZlcmVuY2Ug
YmVjYXVzZSBzb21lIHNpdGVzIGRlcGVuZCBvbiB0aGF0LAogICAgIC8vIGJ1dCB3ZSBkb24ndCBh
bGxvdyBtb3JlIHRoYW4gb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDcwMzA2ZDkyN2I1N2E1MmQy
YTFmYjIwYWU0NWFhNjQyMDkzYzAzMGMuLjAwMmUwNTIzZjdjZWM3OTRjNTI5NTg0YzZhYzFhOTQ5
ZmMzMDYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKTsKICAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5k
ZWRDb3VudCA+IDA7IH0KIAotICAgICAgICBib29sIGlzVVJMQWxsb3dlZChjb25zdCBLVVJMJikg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAg
ICAgLy8gPT09PT09PT0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDRmYmYxNDIw
NmViYWQxYjc2YzJkZjZlYWEzMjU3Mzk1MzZhZmIyMDkuLjNlMmY5NDQ0MzFlYWJhYTA0YWVmNWE5
YzM2YzU4OTkxZmEyNjc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE4MjQs
NyArMTgyNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN0b3JlU2Nyb2xsYmFyKCkKICAgICBzZXRT
Y3JvbGxiYXJzU3VwcHJlc3NlZChmYWxzZSk7CiB9CiAKLWJvb2wgRnJhbWVWaWV3OjpzY3JvbGxU
b0ZyYWdtZW50KGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdt
ZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIElmIG91ciBVUkwgaGFzIG5vIHJlZiwgdGhl
biB3ZSBoYXZlIG5vIHBsYWNlIHdlIG5lZWQgdG8ganVtcCB0by4KICAgICAvLyBPVE9IIElmIENT
UyB0YXJnZXQgd2FzIHNldCBwcmV2aW91c2x5LCB3ZSB3YW50IHRvIHNldCBpdCB0byAwLCByZWNh
bGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDAzZmMyMjI2MWY1YzkwNzVjOGJiOWRhMjY4
MTdmNmM1Nzc1NDMwNjMuLjRjYzdmNjcxZWJiNzY1NmFlODI5NjVmYTVkNjc2ZGJlYzhiOGE4NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBFdmVudDsK
IGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVt
ZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBOTyBP
VEhFUiBQTEFURk9STSBCRVNJREVTIE1BQyBTSE9VTEQgVVNFIFRISVMgTUVUSE9ELgogICAgIHZv
aWQgYWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQoZmxvYXQqIG5ld0JvdHRvbSwgZmxvYXQgb2xk
VG9wLCBmbG9hdCBvbGRCb3R0b20sIGZsb2F0IGJvdHRvbUxpbWl0KTsKIAotICAgIGJvb2wgc2Ny
b2xsVG9GcmFnbWVudChjb25zdCBLVVJMJik7CisgICAgYm9vbCBzY3JvbGxUb0ZyYWdtZW50KGNv
bnN0IFVSTCYpOwogICAgIGJvb2wgc2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBtYWludGFpblNjcm9sbFBvc2l0aW9uQXRBbmNob3IoTm9kZSopOwogICAgIHZvaWQgc2Ny
b2xsRWxlbWVudFRvUmVjdChFbGVtZW50KiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAKaW5kZXggMjVjMWZlNGIwNWI2ZGMyOGMzMDJhYmNjZWFiNzgwNzU2ZTcxNjYyYy4u
ZDNlMzE2NDFjY2I2NjViNzAxZTk5OGVjYWNkNGExOTAyNTNjYWIyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwCkBAIC0xMjcsMTMgKzEyNywxMyBAQCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICBtX2ZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihkaXN0YW5jZSk7CiB9
CiAKLUtVUkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCitV
UkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAg
S1VSTCBiYXNlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOworICAgIFVSTCBi
YXNlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOwogICAgIGlmICh1cmxTdHJp
bmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYmFzZVVSTDsKIAotICAgIHJldHVybiBLVVJM
KGJhc2VVUkwsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmxTdHJpbmcp
OwogfQogCiB2b2lkIEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBTdGF0ZU9iamVjdFR5cGUgc3RhdGVPYmplY3RUeXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cgogICAgIGlm
ICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgS1VSTCBmdWxsVVJMID0gdXJsRm9yU3RhdGUodXJsU3RyaW5nKTsKKyAgICBVUkwgZnVsbFVS
TCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7CiAgICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSB8
fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChmdWxs
VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0hpc3RvcnkuaAppbmRleCBjYTk3NmE5NmM3MTYwZjQwZmIzMTMwODQ0NDIyZDNhYjNhNjhl
M2NiLi44MGI2OGQ2YzUyYTcwOGRkOTY4NDg0Zjc0ZWM0MGM4YTVlNDJmMDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuaApAQCAtMjcsOSArMjcsOSBAQAogI2RlZmluZSBIaXN0b3J5X2gKIAogI2luY2x1
ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEhpc3RvcnkoRnJhbWUqKTsKIAotICAg
IEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIFVSTCB1cmxGb3JTdGF0
ZShjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVJbnRlcm5hbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmlu
ZGV4IGQ4NDM0NzhhNmIxODc5YWJmNzZmMGFkNWQ1ZmU0YTQ2YjhjYmNlNDcuLmI3NWIxZjg0OWY1
OTc3YWJiOGZiZjVhZjNjZThkNjMwYTVjNTcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDQsMTEgKzQ0LDExIEBAIExvY2F0aW9uOjpMb2NhdGlvbihGcmFtZSog
ZnJhbWUpCiB7CiB9CiAKLWlubGluZSBjb25zdCBLVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QK
K2lubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVCht
X2ZyYW1lKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gYmxhbmtVUkwoKTsgLy8gVXNl
ICJhYm91dDpibGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdl
IGhhdmUgYSBmcmFtZSkuCiAKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpob3N0
KCkgY29uc3QKIAogICAgIC8vIE5vdGU6IHRoaXMgaXMgdGhlIElFIHNwZWMuIFRoZSBOUyBzcGVj
IHN3YXBzIHRoZSB0d28sIGl0IHNheXMKICAgICAvLyAiVGhlIGhvc3RuYW1lIHByb3BlcnR5IGlz
IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBob3N0IGFuZCBwb3J0IHByb3BlcnRpZXMsIHNlcGFy
YXRlZCBieSBhIGNvbG9uLiIKLSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAg
ICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwuaGFzUG9ydCgp
ID8gdXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpIDogdXJsLmhv
c3QoKTsKIH0KIApAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25z
dAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQoKSA/IFN0cmluZzo6bnVtYmVyKHVybC5wb3J0
KCkpIDogIiI7CiB9CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBTdHJpbmcgTG9jYXRpb246OnBhdGhu
YW1lKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdGhpcy0+dXJsKCk7CiAgICAgcmV0dXJuIHVybC5wYXRoKCkuaXNFbXB0eSgpID8gIi8iIDog
dXJsLnBhdGgoKTsKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBAIFN0cmluZyBMb2NhdGlvbjo6c2Vh
cmNoKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdGhpcy0+dXJsKCk7CiAgICAgcmV0dXJuIHVybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5
U3RyaW5nKCkgOiAiPyIgKyB1cmwucXVlcnkoKTsKIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIHZv
aWQgTG9jYXRpb246OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIERPTVdpbmRv
dyogYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9j
b2wocHJvdG9jb2wpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgTG9jYXRpb246OnNldEhvc3QoY29uc3QgU3RyaW5n
JiBob3N0LCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmCiB7CiAgICAgaWYg
KCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwogICAgIHNldExvY2F0aW9uKHVybC5zdHJp
bmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAg
dm9pZCBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE9NV2lu
ZG93KiBhY3RpdmVXaW5kb3csIERPTVcKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVS
TCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0SG9zdChob3N0
bmFtZSk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93KTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQb3J0KGNv
bnN0IFN0cmluZyYgcG9ydFN0cmluZywgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbgog
ewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOwogICAgIGludCBwb3J0ID0gcG9ydFN0cmluZy50b0ludCgpOwogICAgIGlmIChw
b3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8IHBvcnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAg
ICB1cmwucmVtb3ZlUG9ydCgpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgTG9jYXRpb246OnNl
dFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUsIERPTVdpbmRvdyogYWN0aXZlV2luZG93
LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBhdGgocGF0aG5hbWUpOwogICAgIHNldExv
Y2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0y
MDYsNyArMjA2LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgc2Vh
cmNoLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG8KIHsKICAgICBpZiAoIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1
cmwuc2V0UXVlcnkoc2VhcmNoKTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2
ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTG9jYXRp
b246OnNldEhhc2goY29uc3QgU3RyaW5nJiBoYXNoLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93KiBmCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
S1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgU3RyaW5nIG9sZEZyYWdtZW50SWRlbnRpZmll
ciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBTdHJpbmcgbmV3RnJhZ21lbnRJZGVu
dGlmaWVyID0gaGFzaDsKICAgICBpZiAoaGFzaFswXSA9PSAnIycpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmgKaW5kZXggYjRmOWE0YzE3OTBjZDNlM2NlYjM3YmQwNTU2ZGQzYTVlMjViMGIzNS4uOTViMDdm
OTU3NTAwOWQ1ZGFjOWU0OTM5ZDgwZjQ4OWE5ZWFlMjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRv
dzsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKIApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93KiBmaXJzdFdpbmRvdyk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggN2MxOGFiOTliY2E0OWU3YjNjN2E4Yzk0ZmMzOTM0NTU2ZWQwMmVj
Ny4uZjAxOWM3MDI5ZDhkNTYxZWY5MmUwMjZmOWI5YjM1YzZkYTM2MWQ5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC05NjEsNyArOTYxLDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0
aW9uQ2hhbmdlZCgpCiB7CiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIHRv
IGEgbW9kZWwgb2YganVzdCBiZWluZyBoYW5kZWQgdGhlIHNoZWV0CiAgICAgLy8gdGV4dCBpbnN0
ZWFkIG9mIGxvYWRpbmcgdGhlIFVSTCBvdXJzZWx2ZXMuCi0gICAgS1VSTCB1cmwgPSBtX3NldHRp
bmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CisgICAgVVJMIHVybCA9IG1fc2V0dGluZ3Mt
PnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKICAgICAKICAgICAvLyBBbGxvdyBhbnkgbG9jYWwg
ZmlsZSBVUkwgc2NoZW1lIHRvIGJlIGxvYWRlZC4KICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5jcHAKaW5kZXggMWFkMWE1NmY2YTkxZjE3YTg0ZDQwNzA5NGM2N2Q1ZWRkNzk4NDQx
ZS4uMTU1ZjIxMDRkYTg0ZTA0ZTdkMDYxYTVlZDU3OTJiNDVjNzU1Y2QyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91
cDo6YWRkVmlzaXRlZExpbmsoTGlua0hhc2ggaGFzaCkKICAgICBwYWdlQ2FjaGUoKS0+bWFya1Bh
Z2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRW
aXNpdGVkTGluayhjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExp
bmsoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjczLDcgKzI3Myw3IEBAIFN0b3JhZ2VOYW1lc3BhY2UqIFBh
Z2VHcm91cDo6dHJhbnNpZW50TG9jYWxTdG9yYWdlKFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFn
ZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLAordm9pZCBQYWdlR3JvdXA6OmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBVUkwmIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCiB7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFk
ZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYg
c291cmMKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTY3JpcHQucmVsZWFzZSgpKTsK
IH0KIAotdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLAordm9p
ZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxp
c3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHls
ZUxldmVsIGxldmVsLApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
CiAgICAgICAgIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7
CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFnZUdyb3VwOjpyZW1vdmVV
c2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKIApAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQsIGNvbnN0IEtVUkwmIHVyCiAgICAgICAgIG1fdXNlclNjcmlwdHMtPnJlbW92ZShp
dCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhZ2VHcm91cDo6
cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAppbmRleCAwMzQyMTYzOTM0YWExZTc4NzE1ZDE5ODc0YzhjZjRiNmJjMDhk
Y2MwLi45YTFkYTg1Y2E3OWQ1YjRjNTJjOWVlODBlMWU5MTYyNTc4NzFlNDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcjsKICAgICBjbGFzcyBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOwogI2VuZGlmCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBV
Ukw7CiAgICAgY2xhc3MgR3JvdXBTZXR0aW5nczsKICAgICBjbGFzcyBJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZTsKICAgICBjbGFzcyBQYWdlOwpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKIAotICAg
ICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCBhZGRW
aXNpdGVkTGluayhjb25zdCBVUkwmKTsKICAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25z
dCBVQ2hhciosIHNpemVfdCk7CiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoKExpbmtI
YXNoKTsKICAgICAgICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua3MoKTsKQEAgLTg5LDE2ICs4OSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RvcmFnZU5hbWVzcGFjZSogdHJh
bnNpZW50TG9jYWxTdG9yYWdlKFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCi0gICAgICAg
IHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IEtVUkwmLAorICAgICAgICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxk
KERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0
ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMpOwotICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYsCisgICAgICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBVUkwmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxhY2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCA9IFVzZXJTdHlsZVVzZXJMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lID0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7Ci0gICAgICAgIHZvaWQg
cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBLVVJMJik7
Ci0gICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVVJMJik7CisgICAgICAgIHZvaWQgcmVtb3ZlVXNl
clN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVVJMJik7CiAKICAg
ICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQqKTsK
ICAgICAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDliOTBmY2I1
NTE5MzVmMTBiYjgzZjJmYTQ0YjZmNDc0MDM4ZjgzNjYuLmQxYWQxYWE4ZTFhMzZiNDEyZTk1ZTE2
NWM2YTM0NzhlNWFmYWJiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBTZXJpYWxpemVyTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZEN1c3RvbUF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGUKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlm
ICh1cmwuaXNWYWxpZCgpICYmICF1cmwuaXNCbGFua1VSTCgpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE3NSw3ICsxNzUsNyBAQCBQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U6OlJlc291cmNlKCkK
IHsKIH0KIAotUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpCiAgICAg
OiB1cmwodXJsKQogICAgICwgbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBkYXRhKGRhdGEpCkBA
IC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplKFBhZ2UqIHBh
Z2UpCiB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiB7
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgS1VSTCB1
cmwgPSBkb2N1bWVudC0+dXJsKCk7CisgICAgVVJMIHVybCA9IGRvY3VtZW50LT51cmwoKTsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzQmxhbmtVUkwoKSkgewogICAgICAgICAvLyBG
b3IgYmxhbmsgZnJhbWVzIHdlIGdlbmVyYXRlIGEgZmFrZSBVUkwgc28gdGhleSBjYW4gYmUgcmVm
ZXJlbmNlZCBieSB0aGVpciBjb250YWluaW5nIGZyYW1lLgogICAgICAgICB1cmwgPSB1cmxGb3JC
bGFua0ZyYW1lKGZyYW1lKTsKQEAgLTIzNCwxOSArMjM0LDE5IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKIAogICAgICAgICBpZiAoaXNIVE1MSW1h
Z2VFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFn
ZUVsZW1lbnQgPSB0b0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgICAgICBLVVJM
IHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZUVsZW1lbnQtPmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OnNyY0F0dHIpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29t
cGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKSk7
CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCk7CiAgICAgICAgICAgICBhZGRJbWFnZVRvUmVzb3VyY2VzKGNhY2hlZEltYWdl
LCBpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIHVybCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmxpbmtUYWcpKSB7CiAgICAgICAgICAgICBIVE1M
TGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4o
ZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoQ1NTU3R5bGVTaGVldCogc2hlZXQgPSBsaW5rRWxl
bWVudC0+c2hlZXQoKSkgewotICAgICAgICAgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGxpbmtFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikp
OworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobGlua0Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAg
ICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwgdXJsKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVVSTHMuY29udGFpbnModXJsKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICBpZiAoQ1NTU3R5bGVTaGVldCogc2hlZXQgPSB0b0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkt
PnNoZWV0KCkpCi0gICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwg
S1VSTCgpKTsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KHNoZWV0LCBV
UkwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHNlcmlhbGl6
ZUZyYW1lKGNoaWxkRnJhbWUpOwogfQogCi12b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBjc3NU
ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
KytpKSB7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
Q1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICAg
ICAgLy8gU29tZSBydWxlcyBoYXZlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB0aGF0
IHdlIG5lZWQgdG8gcmV0cmlldmUuCiAgICAgICAgIGlmIChydWxlLT50eXBlKCkgPT0gQ1NTUnVs
ZTo6SU1QT1JUX1JVTEUpIHsKICAgICAgICAgICAgIENTU0ltcG9ydFJ1bGUqIGltcG9ydFJ1bGUg
PSBzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4ocnVsZSk7Ci0gICAgICAgICAgICBLVVJMIGlt
cG9ydFVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbXBvcnRSdWxlLT5ocmVmKCkpOworICAg
ICAgICAgICAgVVJMIGltcG9ydFVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbXBvcnRSdWxl
LT5ocmVmKCkpOwogICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKGltcG9y
dFVSTCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSwgaW1wb3J0VVJMKTsKQEAgLTI5
MSw3ICsyOTEsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0
KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEtVUgogICAgIH0KIH0KIAotdm9pZCBQ
YWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJl
bmRlck9iamVjdCogaW1hZ2VSZW5kZXJlciwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQYWdlU2Vy
aWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlck9i
amVjdCogaW1hZ2VSZW5kZXJlciwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM0MCwxOCArMzQwLDE4IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3Vy
Y2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsCiAKICAgICAgICAg
Q2FjaGVkSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KHN0eWxl
SW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwogCi0gICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGltYWdlLT51cmwoKSk7CisgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29t
cGxldGVVUkwoaW1hZ2UtPnVybCgpKTsKICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhpbWFn
ZSwgMCwgdXJsKTsKICAgICB9CiB9CiAKLUtVUkwgUGFnZVNlcmlhbGl6ZXI6OnVybEZvckJsYW5r
RnJhbWUoRnJhbWUqIGZyYW1lKQorVVJMIFBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1l
KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBIYXNoTWFwPEZyYW1lKiwgS1VSTD46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2JsYW5rRnJhbWVVUkxzLmZpbmQoZnJhbWUpOworICAgIEhhc2hNYXA8RnJhbWUqLCBV
Ukw+OjppdGVyYXRvciBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKICAgICBp
ZiAoaXRlciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7CiAgICAgU3RyaW5nIHVybCA9ICJ3eWNpd3lnOi8vZnJhbWUvIiArIFN0cmluZzo6bnVt
YmVyKG1fYmxhbmtGcmFtZUNvdW50ZXIrKyk7Ci0gICAgS1VSTCBmYWtlVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKTsKKyAgICBVUkwgZmFrZVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAg
bV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZha2VVUkwpOwogCiAgICAgcmV0dXJuIGZha2VV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggNGU4MTU3OWUyY2ZiOTBm
MGUzMTM2ZGZhYmJlMzJiYzUwMTA3MzIxNy4uMTczMWQzOWUwYjAwNzM1ZjgwYzI0YjY0MjlmMTQx
ZjRhYjlmZjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtMzEsOCAr
MzEsOCBAQAogI2lmbmRlZiBQYWdlU2VyaWFsaXplcl9oCiAjZGVmaW5lIFBhZ2VTZXJpYWxpemVy
X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpA
QCAtNTQsMTEgKzU0LDExIEBAIGNsYXNzIFN0eWxlUnVsZTsKIGNsYXNzIFBhZ2VTZXJpYWxpemVy
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewotICAgICAgICBLVVJMIHVybDsKKyAg
ICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZXNvdXJjZSgpOwotICAgICAgICBSZXNvdXJj
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEpOworICAgICAgICBSZXNvdXJjZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSk7CiAgICAgfTsKIAogICAg
IGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4qKTsKQEAgLTY4LDIyICs2
OCwyMiBAQCBwdWJsaWM6CiAgICAgLy8gdmVjdG9yIGlzIHRoZSB0b3AgZnJhbWUgc2VyaWFsaXpl
ZCBjb250ZW50LgogICAgIHZvaWQgc2VyaWFsaXplKFBhZ2UqKTsKIAotICAgIEtVUkwgdXJsRm9y
QmxhbmtGcmFtZShGcmFtZSopOworICAgIFVSTCB1cmxGb3JCbGFua0ZyYW1lKEZyYW1lKik7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXJpYWxpemVGcmFtZShGcmFtZSopOwogCiAgICAgLy8gU2Vy
aWFsaXplcyB0aGUgc3R5bGVzaGVldCBiYWNrIHRvIHRleHQgYW5kIGFkZHMgaXQgdG8gdGhlIHJl
c291cmNlcyBpZiBVUkwgaXMgbm90LWVtcHR5LgogICAgIC8vIEl0IGFsc28gYWRkcyBhbnkgcmVz
b3VyY2VzIGluY2x1ZGVkIGluIHRoYXQgc3R5bGVzaGVldCAoaW5jbHVkaW5nIGFueSBpbXBvcnRl
ZCBzdHlsZXNoZWV0cyBhbmQgdGhlaXIgb3duIHJlc291cmNlcykuCi0gICAgdm9pZCBzZXJpYWxp
emVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBLVVJMJik7CisgICAgdm9pZCBz
ZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBVUkwmKTsKIAotICAg
IHZvaWQgYWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSosIFJlbmRlck9iamVjdCosIGNv
bnN0IEtVUkwmKTsKKyAgICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBS
ZW5kZXJPYmplY3QqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9y
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgRG9jdW1lbnQqKTsKICAgICB2b2lk
IHJldHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHlsZVJ1bGUqLCBEb2N1bWVudCopOwogCiAgICAg
VmVjdG9yPFJlc291cmNlPiogbV9yZXNvdXJjZXM7Ci0gICAgTGlzdEhhc2hTZXQ8S1VSTD4gbV9y
ZXNvdXJjZVVSTHM7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+IG1fYmxhbmtGcmFtZVVSTHM7
CisgICAgTGlzdEhhc2hTZXQ8VVJMPiBtX3Jlc291cmNlVVJMczsKKyAgICBIYXNoTWFwPEZyYW1l
KiwgVVJMPiBtX2JsYW5rRnJhbWVVUkxzOwogICAgIHVuc2lnbmVkIG1fYmxhbmtGcmFtZUNvdW50
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNl
VGltaW5nLmNwcAppbmRleCA1Mzk4NzhmNmY0NzBjZmE4MGI2YWI5ZjhkMDFhY2M4YTk1ZGVkNzUy
Li5mOGZmYzBjYzc5MTViMmFhZTQ4MmFlZTM0ZGU5MmVmNWY3OTkwNDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRp
bWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAppbmRleCBlZDI0
NDkyYzM1NTAxMGE4YmNmMDRiN2VjMzI3Yjg4MmY4YzBhMmQ4Li42Mjc2OTQ0Y2EwZmU1MmNiNWYz
NzYyMTVjYjdlMzBkMDE0YzQ5ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNDIsNyArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRUaW1pbmc7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBjZWJj
ODk2ODQ3N2RlOGMzYzRmMmI1ZTg1MDQ1NjUxN2Q4YmE0YzhjLi5jYzFjYWRhZjJiNWUyYzZiMWU2
YmFlZDRlODg3ZmVkMjIyYWM1OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY29uc3QgaW50IEludmFsaWRQb3J0ID0gMDsKIGNvbnN0IGludCBNYXhB
bGxvd2VkUG9ydCA9IDY1NTM1OwogCi1zdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0hvc3QoY29u
c3QgS1VSTCYgdXJsKQorc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNIb3N0KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFdlIGV4cGVjdCBVUkxzIHdpdGggdGhlc2Ugc2NoZW1lcyB0byBoYXZl
IGF1dGhvcml0eSBjb21wb25lbnRzLiBJZiB0aGUKICAgICAvLyBVUkwgbGFja3MgYW4gYXV0aG9y
aXR5IGNvbXBvbmVudCwgd2UgZ2V0IGNvbmNlcm5lZCBhbmQgbWFyayB0aGUgb3JpZ2luCkBAIC01
Miw3ICs1Miw3IEBAIHN0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzSG9zdChjb25zdCBLVVJMJiB1
cmwpCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3Rv
Y29sSXMoImZ0cCIpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVS
TChjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVS
TChjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoQkxPQikKICAgICAvLyBGSVhNRTogQmxv
YiBVUkxzIGRvbid0IGhhdmUgaW5uZXIgVVJMcy4gVGhlaXIgZm9ybSBpcyAiYmxvYjo8aW5uZXIt
b3JpZ2luPi88VVVJRD4iLCBzbyB0cmVhdGluZyB0aGUgcGFydCBhZnRlciAiYmxvYjoiIGFzIGEg
VVJMIGlzIGluY29ycmVjdC4KQEAgLTcwLDE2ICs3MCwxNiBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpzaG91bGRVc2VJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCiAvLyBJbiBnZW5lcmFsLCBleHRy
YWN0aW5nIHRoZSBpbm5lciBVUkwgdmFyaWVzIGJ5IHNjaGVtZS4gSXQganVzdCBzbyBoYXBwZW5z
CiAvLyB0aGF0IGFsbCB0aGUgVVJMIHNjaGVtZXMgd2UgY3VycmVudGx5IHN1cHBvcnQgdGhhdCB1
c2UgaW5uZXIgVVJMcyBmb3IgdGhlaXIKIC8vIHNlY3VyaXR5IG9yaWdpbiBjYW4gYmUgcGFyc2Vk
IHVzaW5nIHRoaXMgYWxnb3JpdGhtLgotS1VSTCBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVy
VVJMKGNvbnN0IEtVUkwmIHVybCkKK1VSTCBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJM
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwuaW5uZXJVUkwoKSkKICAgICAgICAgcmV0
dXJuICp1cmwuaW5uZXJVUkwoKTsKICAgICAvLyBGSVhNRTogVXBkYXRlIHRoaXMgY2FsbHNpdGUg
dG8gdXNlIHRoZSBpbm5lclVSTCBtZW1iZXIgZnVuY3Rpb24gd2hlbgogICAgIC8vIHdlIGZpbmlz
aCBpbXBsZW1lbnRpbmcgaXQuCi0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOworICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK3N0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmln
aW4oY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgaWYgKHVybC5wcm90
b2NvbElzKCJibG9iIikpCkBAIC05MCwxOCArOTAsMTggQEAgc3RhdGljIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgS1VS
TCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8KLSAg
ICBLVVJMIGlubmVyVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVybCkg
PyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CisgICAgVVJMIGlu
bmVyVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBTZWN1cml0
eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CiAKICAgICAvLyBGSVhNRTogQ2hl
Y2sgd2hldGhlciBpbm5lclVSTCBpcyB2YWxpZC4KIAogICAgIC8vIEZvciBlZGdlIGNhc2UgVVJM
cyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2lu
IGlzIHVuaXF1ZS4KLSAgICAvLyBUaGlzIGlzIGFuIGFkZGl0aW9uYWwgc2FmZXR5IG5ldCBhZ2Fp
bnN0IGJ1Z3MgaW4gS1VSTCBwYXJzaW5nLCBhbmQgZm9yIG5ldHdvcmsgYmFjay1lbmRzIHRoYXQg
cGFyc2UgVVJMcyBkaWZmZXJlbnRseSwKKyAgICAvLyBUaGlzIGlzIGFuIGFkZGl0aW9uYWwgc2Fm
ZXR5IG5ldCBhZ2FpbnN0IGJ1Z3MgaW4gVVJMIHBhcnNpbmcsIGFuZCBmb3IgbmV0d29yayBiYWNr
LWVuZHMgdGhhdCBwYXJzZSBVUkxzIGRpZmZlcmVudGx5LAogICAgIC8vIGFuZCBjb3VsZCBtaXNp
bnRlcnByZXQgYW5vdGhlciBjb21wb25lbnQgZm9yIGhvc3RuYW1lLgogICAgIGlmIChzY2hlbWVS
ZXF1aXJlc0hvc3QoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRy
ZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK1NlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fcHJvdG9j
b2wodXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkp
CiAgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5sb3dl
cigpKQogICAgICwgbV9wb3J0KHVybC5wb3J0KCkpCkBAIC0xNzIsNyArMTcyLDcgQEAgU2VjdXJp
dHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKIHsK
IH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShj
b25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Y2FjaGVkT3JpZ2luID0gZ2V0Q2FjaGVkT3JpZ2luKHVybCk7CiAgICAgaWYgKGNhY2hlZE9yaWdp
bi5nZXQoKSkKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXREb21h
aW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogICAgIG1fZG9tYWluID0gbmV3RG9t
YWluLmxvd2VyKCk7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIC8vIEludmFsaWQgVVJMcyBhcmUgc2VjdXJlLCBhcyBhcmUgVVJMcyB3aGljaCBoYXZl
IGEgc2VjdXJlIHByb3RvY29sLgogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZSh1cmwucHJvdG9jb2woKSkpCkBAIC0y
ODcsNyArMjg3LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6cGFzc2VzRmlsZUNoZWNrKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gKG1fZmlsZVBhdGggPT0g
b3RoZXItPm1fZmlsZVBhdGgpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3Qo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpjYW5SZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OnRhaW50c0NhbnZhcyhjb25zdCBLVVJMJiB1cmwpIGNv
bnN0Citib29sIFNlY3VyaXR5T3JpZ2luOjp0YWludHNDYW52YXMoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgaWYgKGNhblJlcXVlc3QodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlY2VpdmVEcmFnRGF0
YShjb25zdCBTZWN1cml0eU9yaWdpbiogZHJhZ0luaXRpYXRvcikgY29uCiAvLyBodHRwIG9yIGh0
dHBzLCBvdGhlcndpc2Ugd2UgaWdub3JlIHRoZSBuZXN0aW5nIGZvciB0aGUgcHVycG9zZSBvZiBh
IHNlY3VyaXR5IGNoZWNrLiBXZSBuZWVkCiAvLyBhIGZhY2lsaXR5IGZvciByZWdpc3RlcmluZyBu
ZXN0aW5nIHNjaGVtZXMsIGFuZCBzb21lIGdlbmVyYWxpemVkIGxvZ2ljIGZvciB0aGVtLgogLy8g
VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBhcyBhbiBvdXRjb21lIG9mIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE5Ngotc3RhdGljIGJvb2wgaXNGZWVk
V2l0aE5lc3RlZFByb3RvY29sSW5IVFRQRmFtaWx5KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBi
b29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBVUkwmIHVybCkK
IHsKICAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKICAgICBpZiAo
IXVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkIiwgZmFsc2UpKQpAQCAtMzU5LDcgKzM1OSw3IEBA
IHN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBL
VVJMJiB1cmwpCiAgICAgICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0
dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHBzOiIs
IGZhbHNlKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBLVVJM
JiB1cmwpIGNvbnN0Citib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00OTYsNyArNDk2LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0
cmluZygpIGNvbnN0CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogewotICAgIHJl
dHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoS1VSTCgpLCBvcmlnaW5TdHJpbmcpKTsK
KyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIG9yaWdpblN0cmlu
ZykpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CkBA
IC01MDYsMzQgKzUwNiwzNCBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdAogICAgIC8vIE1ha2Ug
c3VyZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBk
YXRhYmFzZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBh
cmF0b3IxID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhl
cmUncyBhIHNlY29uZCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMiA9IGRhdGFiYXNl
SWRlbnRpZmllci5yZXZlcnNlRmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBh
cmF0b3IyID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBFbnN1cmUgdGhlcmUg
d2VyZSBhdCBsZWFzdCAyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiBTb21lIGhvc3RuYW1lcyBvbiBp
bnRyYW5ldHMgaGF2ZQogICAgIC8vIHVuZGVyc2NvcmVzIGluIHRoZW0sIHNvIHdlJ2xsIGFzc3Vt
ZSB0aGF0IGFueSBhZGRpdGlvbmFsIHVuZGVyc2NvcmVzIGFyZSBwYXJ0IG9mIHRoZSBob3N0Lgog
ICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUo
S1VSTCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgICAgIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9l
c24ndCBleGlzdAogICAgIGJvb2wgcG9ydE9rYXk7CiAgICAgaW50IHBvcnQgPSBkYXRhYmFzZUlk
ZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAt
IDEpLnRvSW50KCZwb3J0T2theSk7CiAgICAgYm9vbCBwb3J0QWJzZW50ID0gKHNlcGFyYXRvcjIg
PT0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gMSk7CiAgICAgaWYgKCEocG9ydE9rYXkg
fHwgcG9ydEFic2VudCkpCi0gICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgCiAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiBN
YXhBbGxvd2VkUG9ydCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAgICAgLy8gU3BsaXQgb3V0IHRoZSAzIHNl
Y3Rpb25zIG9mIGRhdGEKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIFN0cmluZyBob3N0ID0gZGF0YWJhc2VJZGVu
dGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEg
LSAxKTsKICAgICAKICAgICBob3N0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwot
ICAgIHJldHVybiBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsg
IjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKKyAgICByZXR1cm4gY3JlYXRlKFVS
TChVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihw
b3J0KSArICIvIikpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwg
aW50IHBvcnQpCkBAIC01NDEsNyArNTQxLDcgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdAogICAg
IGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCiAgICAgICAgIHJldHVybiBj
cmVhdGVVbmlxdWUoKTsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoaG9zdCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShLVVJMKEtVUkwoKSwgcHJvdG9jb2wg
KyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOworICAg
IHJldHVybiBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiAr
IFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgKaW5kZXggODU3MmY0Y2U0ZjgzMTA1MzMwZmVlNjVkNDA2MTBkNWNjYmEyY2I4Ni4uZDEx
ODY2ZGUwYmRhNTNkOTA4M2YwNjNkYTg0MzY4ODk4NmRiZWRlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQmxvY2tBbGxTdG9yYWdlCiAgICAgfTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJM
Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgp
OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICAvLyBHZW5lcmFsbHksIHdlIGFkZCBVUkwgc2NoZW1lcyB0byB0aGlzIGxpc3Qgd2hlbiBX
ZWJLaXQgc3VwcG9ydCB0aGVtLiBGb3IKICAgICAvLyBleGFtcGxlLCB3ZSBkb24ndCBpbmNsdWRl
IHRoZSAiamFyIiBzY2hlbWUsIGV2ZW4gdGhvdWdoIEZpcmVmb3gKICAgICAvLyB1bmRlcnN0YW5k
cyB0aGF0ICJqYXIiIHVzZXMgYW4gaW5uZXIgVVJMIGZvciBpdCdzIHNlY3VyaXR5IG9yaWdpbi4K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VJbm5lclVSTChjb25zdCBLVVJMJik7Ci0gICAgc3Rh
dGljIEtVUkwgZXh0cmFjdElubmVyVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBz
aG91bGRVc2VJbm5lclVSTChjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgVVJMIGV4dHJhY3RJbm5l
clVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIENyZWF0ZSBhIGRlZXAgY29weSBvZiB0aGlzIFNl
Y3VyaXR5T3JpZ2luLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwKICAgICAvLyB3aGVuIG1hcnNoYWxs
aW5nIGEgU2VjdXJpdHlPcmlnaW4gdG8gYW5vdGhlciB0aHJlYWQuCkBAIC04OCw3ICs4OCw3IEBA
IHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSBnaXZlbiBVUkwgaXMgc2VjdXJlLCBi
YXNlZCBlaXRoZXIgZGlyZWN0bHkgb24gaXRzCiAgICAgLy8gb3duIHByb3RvY29sLCBvciwgd2hl
biByZWxldmFudCwgb24gdGhlIHByb3RvY29sIG9mIGl0cyAiaW5uZXIgVVJMIgogICAgIC8vIFBy
b3RvY29scyBsaWtlIGJsb2I6IGFuZCBmaWxlc3lzdGVtOiBmYWxsIGludG8gdGhpcyBsYXR0ZXIg
Y2F0ZWdvcnkuCi0gICAgc3RhdGljIGJvb2wgaXNTZWN1cmUoY29uc3QgS1VSTCYpOworICAgIHN0
YXRpYyBib29sIGlzU2VjdXJlKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHNjcmlwdCBvYmplY3RzIGluIHRoZSBnaXZlbgogICAg
IC8vIFNlY3VyaXR5T3JpZ2luLiBGb3IgZXhhbXBsZSwgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9y
ZSBhbGxvd2luZwpAQCAtOTksMTIgKzk5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVhZCBjb250ZW50IHJldHJpZXZlZCBmcm9t
CiAgICAgLy8gdGhlIGdpdmVuIFVSTC4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBi
ZWZvcmUgaXNzdWluZwogICAgIC8vIFhNTEh0dHBSZXF1ZXN0cy4KLSAgICBib29sIGNhblJlcXVl
c3QoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgY2FuUmVxdWVzdChjb25zdCBVUkwmKSBj
b25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBkcmF3aW5nIGFuIGltYWdlIGZyb20gdGhp
cyBVUkwgdGFpbnRzIGEgY2FudmFzIGZyb20KICAgICAvLyB0aGlzIHNlY3VyaXR5IG9yaWdpbi4g
Rm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUKICAgICAvLyBkcmF3aW5nIGFu
IGltYWdlIG9udG8gYW4gSFRNTCBjYW52YXMgZWxlbWVudCB3aXRoIHRoZSBkcmF3SW1hZ2UgQVBJ
LgotICAgIGJvb2wgdGFpbnRzQ2FudmFzKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIHRh
aW50c0NhbnZhcyhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiByZWNlaXZlIGRyYWcgY29udGVudCBmcm9tIHRoZQogICAg
IC8vIGluaXRpYXRvci4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxs
b3dpbmcgY29udGVudCB0byBiZQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgfGRvY3VtZW50fCBjYW4gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIGdp
dmVuIFVSTCAoZS5nLiwKICAgICAvLyBpbiBhbiBpZnJhbWUgb3IgYXMgYW4gaW1hZ2UpLiBGb3Ig
ZXhhbXBsZSwgd2ViIHNpdGVzIGdlbmVyYWxseSBjYW5ub3QKICAgICAvLyBkaXNwbGF5IGNvbnRl
bnQgZnJvbSB0aGUgdXNlcidzIGZpbGVzIHN5c3RlbS4KLSAgICBib29sIGNhbkRpc3BsYXkoY29u
c3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgY2FuRGlzcGxheShjb25zdCBVUkwmKSBjb25zdDsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBsb2FkIGxv
Y2FsIHJlc291cmNlcywgc3VjaAogICAgIC8vIGFzIGltYWdlcywgaWZyYW1lcywgYW5kIHN0eWxl
IHNoZWV0cywgYW5kIGNhbiBsaW5rIHRvIGxvY2FsIFVSTHMuCkBAIC0yMDksNyArMjA5LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgZXhwbGljaXQg
U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFVSTCYpOwogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKik7CiAKICAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgZnVuY3Rpb24gdG8gc29tZXRo
aW5nIG1vcmUgc2VtYW50aWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2gu
aAppbmRleCA0NTRjZjgzZWRlZWY2OThhNGU5NTdmNDQ2MTMyNGNhNzhjMWQxYzBiLi45NmI4NzU0
N2U0YWRiZmRiOTI0MWEzZTE5ODk5Zjk1ZWQ0MDFmYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlP
cmlnaW5IYXNoX2gKICNkZWZpbmUgU2VjdXJpdHlPcmlnaW5IYXNoX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cAppbmRleCA1YjM2ZjRmNzE2YzQ0YmZiMDlmMjBlNjMyY2MwZDAzODZmM2NjYTNjLi5iMjRjYTk0
NDc0NTJiYTMyNGUyZTQzZjVlNmM5NGMzYWRkYzAwZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlICJPcmlnaW5B
Y2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCw3ICs1MCw3
IEBAIHN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiAgICAgcmV0dXJu
IG9yaWdpbkFjY2Vzc01hcDsKIH0KIAotYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJl
ZmVycmVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK2Jvb2wgU2Vj
dXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcikKIHsKICAgICBib29sIHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2Nv
bElzKHJlZmVycmVyLCAiaHR0cHMiKTsKICAgICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZl
cnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29sSXMocmVmZXJyZXIsICJodHRwIik7CkBAIC02Niw3
ICs2Niw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgcmV0dXJuICFVUkxJc1NlY3Vy
ZVVSTDsKIH0KIAotU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVy
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCitTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmln
aW4sIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4s
IGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0
ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICByZXR1cm4gaXNBY2Nlc3NXaGl0ZUxpc3RlZChhY3Rp
dmVPcmlnaW4sIHRhcmdldE9yaWdpbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmgKaW5kZXggMzM3ZWVjMmIzYWRmNWNmMTIwYzQ2ODlmMGZhNmQzNmVhNGU5ZTZiMS4uYjI2
OWMxYWY1MjU0NWZmNDRmOGE0ODVhYjE3ZTZhOTM2MzQ1Zjk5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgU2VjdXJpdHlQb2xpY3kgewpAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICAvLyBU
cnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21pdHRlZCBhY2NvcmRpbmcgdG8gdGhlCiAg
ICAgLy8gUmVmZXJyZXJQb2xpY3lEZWZhdWx0LiBJZiB5b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZl
cnJlciBoZWFkZXIsIHlvdQogICAgIC8vIHNob3VsZCB1c2UgZ2VuZXJhdGVSZWZlcnJlckhlYWRl
ciBpbnN0ZWFkLgotICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJl
ZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcnJlciBwb2xp
Y3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRvIGEgZ2l2ZW4gVVJMLiBJZiB0aGUgcmVmZXJy
ZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAgIC8vIHJlZmVycmVyIGhlYWRlciBzaG91bGQg
YmUgb21pdHRlZC4KLSAgICBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVm
ZXJyZXJQb2xpY3ksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3ksIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgZW51bSBMb2NhbExvYWRQb2xp
Y3kgewogICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9u
IGxvY2FsIGxvYWRzLgpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vz
c1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzVG9V
UkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBL
VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBjMDQzMmQwMmExZGZm
MTBiNmQ3ZjMwZTRkZWMzZThjMThmODhiZDY2Li4wNGZiYjNmNGFhOTYyMTA4MjUzNWQ4NTJlMjYz
NTk4YzIxNjhhZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNDE0LDcgKzQxNCw3
IEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkKQogICAgIG1fcGFnZS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3Qg
S1VSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKK3ZvaWQgU2V0dGluZ3M6OnNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJiB1c2VyU3R5bGVTaGVldExvY2F0aW9uKQogewogICAg
IGlmIChtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPT0gdXNlclN0eWxlU2hlZXRMb2NhdGlvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGQ4YjdjYTZjMjgyMjU4
MGNmZGE3ZTllMDM0OWJkMjNhZjMzOTA5Y2QuLmVkZjY5OGM4YzdlMTY1N2ExZDU5ZWYxYjE1NzJj
YTdjYjgxZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdN
b2RlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
TWFjcm9zLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTE1MCw4ICsxNTAsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGJvb2wp
OwogICAgICAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKGNvbnN0IEtVUkwmKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQor
ICAgICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJik7CisgICAg
ICAgIGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TmVlZHNBZG9iZUZy
YW1lUmVsb2FkaW5nUXVpcmsoYm9vbCk7CiAgICAgICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJhbWVS
ZWxvYWRpbmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5n
UXVpcms7IH0KQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFBhZ2UqIG1fcGFnZTsKIAogICAgICAgICBTdHJpbmcgbV9tZWRpYVR5cGVPdmVycmlkZTsKLSAg
ICAgICAgS1VSTCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CisgICAgICAgIFVSTCBtX3VzZXJT
dHlsZVNoZWV0TG9jYXRpb247CiAgICAgICAgIFJlZlB0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBt
X2ZvbnRHZW5lcmljRmFtaWxpZXM7CiAgICAgICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cAppbmRleCBjN2Q4MTliMGJkMGJjODdkOTYyMDlhYzkyNTMwYzQ2Y2EyMDJmZTMzLi5mZGFlZDFl
NTA5YjUxMDJmOTJlMmJmZTRhNjIwMDM2NDc3OGVkMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QpCitib29sIFVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0
KQogewogICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0IGhhcyB0byBi
ZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50IGluIHRoZSBibGFja2xp
c3QuCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFsbCwgdGhlbiBhbGwgVVJM
cyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgpAQCAtMTEwLDcgKzExMCw3IEBA
IGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4p
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzKGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
bWF0Y2hlcyhjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7CiAgICAgaWYgKG1faW52YWxpZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzKGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJuIG1h
dGNoZXNQYXRoKHRlc3QpOwogfQogCi1ib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c0hvc3QoY29uc3QgS1VSTCYgdGVzdCkgY29uc3QKK2Jvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7CiAgICAgY29uc3QgU3RyaW5n
JiBob3N0ID0gdGVzdC5ob3N0KCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGhvc3QsIG1f
aG9zdCkpCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAgICAgfQogfTsK
IAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0IEtVUkwmIHRl
c3QpIGNvbnN0Citib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdGgoY29uc3Qg
VVJMJiB0ZXN0KSBjb25zdAogewogICAgIE1hdGNoVGVzdGVyIG1hdGNoKG1fcGF0aCwgdGVzdC5w
YXRoKCkpOwogICAgIHJldHVybiBtYXRjaC50ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCAwZGUwNTVlZjUxNmZlMzk5YTJiYTFkYjc3ZDRm
MzMyZGZmZTM1ZjMyLi5hODY4OTJiY2U5YThlZjFkYzUxOGVjZDAyOGI5ZmNhYzQ0ZGI4OGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogCiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm4gewogcHVibGljOgpAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9pbnZh
bGlkOyB9CiAKLSAgICBib29sIG1hdGNoZXMoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wg
bWF0Y2hlcyhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9zY2hlbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25z
dCB7IHJldHVybiBtX2hvc3Q7IH0KQEAgLTUzLDEzICs1MywxMyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIG1hdGNoU3ViZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hTdWJkb21haW5zOyB9
CiAgICAgCi0gICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2ts
aXN0KTsKKyAgICBzdGF0aWMgYm9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlz
dCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pOwog
Ci0gICAgYm9vbCBtYXRjaGVzSG9zdChjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgYm9vbCBtYXRj
aGVzUGF0aChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzSG9zdChjb25zdCBV
UkwmKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXNQYXRoKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAg
ICAgYm9vbCBtX2ludmFsaWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggOGJiZmE0
OWJiNTUyNDk0ZmU4YzU4ZDJhMWRmOWVjMzM3NzkwMmNkZi4uOGEyYjQxMTg3NGY4ZDkzOTkwZDBl
NzY5MzExYjlmMTA4ZTMzODY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgVXNlclNjcmlwdF9oCiAjZGVmaW5lIFVzZXJTY3JpcHRfaAogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVXNl
clNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKQorICAgIFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmpl
Y3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogICAg
ICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgICAgICwg
bV93aGl0ZWxpc3Qod2hpdGVsaXN0KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQogICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsg
fQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGlvblRpbWU7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3Vy
bDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2JsYWNrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggZmM2N2Q3YWNhOGYzZTk4MTM1
ZGQ3MjdkNzMwNWEzNGU3MjFjOGVlOS4uNzIzNDQ2MmNiMTk1MjliYzk2ZjVlNjcxZTM4YWFmMGI5
ZDg2ODRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBVc2VyU3R5bGVTaGVldF9oCiAjZGVmaW5lIFVzZXJTdHlsZVNoZWV0X2gK
IAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQ29u
dGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2Vy
U3R5bGVMZXZlbCBsZXZlbCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5q
ZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsKQogICAgICAgICA6IG1fc291cmNlKHNv
dXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgICAgICwgbV93aGl0ZWxpc3Qod2hpdGVs
aXN0KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBj
b25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bGFja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
RnJhbWVzOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibGFja2xpc3Q7CiAg
ICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDI3NTBlMmUzOWQ2
NzVkYjIyODk3OGZmMTdkNGZlMDRlODhmYzVkOGEuLmE3YTM2MDIwNWM2MzJmMmYwZTU1MWQ4YWU1
NWI5NTExODQ0NDYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdD
b250cm9sbGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJv
bGxlckVmbC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51
cEFmdGVyU3lzdGVtRHJhZygpCiB7CiB9CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2Uo
Q2xpcGJvYXJkKiwgRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCBk
NGRlMjdlMjlhZmJlMTJlOWE3MjQxMTMyYjVlOGVjYmZhNWM3MzRkLi4xNzBlODQxYWQ1NTMyNzk3
YTAwMzI3MzZlOWZhZTU0MjAxZjVhZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsv
RHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVy
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7CiAgICAgY2xpcGJvYXJkLT5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1cmws
IGxhYmVsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNjllYmQ2YmE0Yjg4MDgyZWM5MDQyNzljMzA4OWIwNjZkMjhhZDdiOS4uZTdiOGJj
NzdmMzQwZGI0NjZlNzdmZDkzNzU0ZTcyNjQzNGJmZWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBEcmFn
Q29udHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVtRHJhZygpCiAgICAgICAgIGRyYWdFbmRlZCgp
OwogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xp
cGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLm5hbWUoKSwga2l0KGVsZW1lbnQp
LCB1cmwsIGxhYmVsLCBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggY2Q5NjMxMGNmMDMxN2Qw
MWEwYWQyOWI5YTRhZDJmMGFkY2IxNjVmYi4uNTEwZDA3ODllNzdmYmU2ZDk4MWJhYWYxNmJmMjRj
OGU3ZWE1Mjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJv
bGxlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5
c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgY2xpcGJvYXJk
LT5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCBiN2JmZWEx
NThiMmRlZTY3Y2JlMjY5YTVlYWNmYzUwZDJjNjg3ZjMzLi5kZjJmMzIwZTI1OGE3NjQxMmFhNzY0
ODliYmJjNGFjZGRmM2YyODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9E
cmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0Nv
bnRyb2xsZXJXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNs
ZWFudXBBZnRlclN5c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRy
b2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAg
ICAgUGFzdGVib2FyZCYgcGFzdGVib2FyZCA9IGNsaXBib2FyZC0+cGFzdGVib2FyZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IGFmNWM1MTIzMmE5
NGQ1YzlkM2E4MmQwMjQ1ODkyYTJmYzU2OGYxNjkuLjNiMTY4NDZlOWNmMzZkMDU4ZWZhNDBmYTJi
MTBkY2FhZTA5ZDk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3Rl
bS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzIsNTggKzcyLDU4IEBAIHB1YmxpYzoKICAg
ICAvLyBNb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0byBkZXN0UGF0aC4K
ICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzcmNQYXRoLCBjb25zdCBLVVJMJiBkZXN0
UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG1vdmUoY29uc3QgVVJMJiBzcmNQYXRoLCBjb25zdCBVUkwmIGRlc3RQYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENvcGll
cyBhIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0byBkZXN0UGF0aC4KICAgICAvLyBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUg
b3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFs
IHZvaWQgY29weShjb25zdCBLVVJMJiBzcmNQYXRoLCBjb25zdCBLVVJMJiBkZXN0UGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvcHkoY29uc3QgVVJMJiBzcmNQYXRoLCBjb25zdCBVUkwmIGRlc3RQYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIERlbGV0ZXMgYSBmaWxl
IG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8g
dHJ5IHRvIHJlbW92ZSBhIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBlbXB0eS4KICAgICAvLyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIFJlY3Vy
c2l2ZWx5IGRlbGV0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
ID0gMDsKIAogICAgIC8vIFJldHJpZXZlcyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhl
IGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRp
b24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAg
Ly8gQ3JlYXRlcyBhIGZpbGUgYXQgYSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMg
dHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMuCiAgICAgLy8gQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJh
dGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVG
aWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBh
IGdpdmVuIHBhdGguICBJZiBleGNsdXNpdmUgZmxhZyBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUg
cGF0aCBhbHJlYWR5IGV4aXN0cy4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMg
Y2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0
IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVS
TCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikgPSAwOwogCiAgICAgLy8gQ2hlY2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiBw
YXRoLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNh
bGxlZCBpZiB0aGUgZmlsZSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4
aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ2hlY2tz
IGlmIGEgZGlyZWN0b3J5IGV4aXN0cyBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIGlmIHRoZSBkaXJlY3Rvcnkg
ZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNh
bGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWFkcyBkaXJlY3Rv
cnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBhdCBwYXRoLgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KCkgaXMgY2FsbGVkIHdoZW4g
ZWFjaCBkaXJlY3RvcnkgZW50cnkgaXMgY2FsbGVkLiBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKCkgaXMgY2FsbGVkIGFmdGVyIGEgY2h1bmsgb2YgZGly
ZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KLSAgICB2aXJ0dWFs
IHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAw
OwogCiAgICAgLy8gQ3JlYXRlcyBhbiBBc3luY0ZpbGVXcml0ZXIgZm9yIGEgZ2l2ZW4gZmlsZSBw
YXRoLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRl
cigpIGlzIGNhbGxlZCB3aGVuIGFuIEFzeW5jRmlsZVdyaXRlciBpcyBjcmVhdGVkIHN1Y2Nlc3Nm
dWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxs
ZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVX
cml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ3JlYXRlcyBhIHNuYXBzaG90IGZpbGUgYW5kIHJl
YWQgaXRzIG1ldGFkYXRhIGZvciBhIG5ldyBGaWxlIG9iamVjdC4KICAgICAvLyBJbiBsb2NhbCBm
aWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5kIG1heSBzaW1wbHkgcmV0dXJuIHRoZSBtZXRhZGF0
YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdlbGwgYXMgcmVhZE1ldGFkYXRhIGRvZXMpLApAQCAt
MTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgogICAgIC8vCiAgICAgLy8gTm90ZTogdGhl
IHJldHVybmVkIG1ldGFkYXRhIGluZm8gaXMgY2FjaGVkIGluIHRoZSBGaWxlIG9iamVjdCBmb3Ig
bm9uLXJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAobmVpdGhlciBUZW1wb3Jhcnkgbm9yIFBlcnNp
c3RlbnQpLiBUaGUgcG9ydCBjb3VsZCByZXR1cm4gdmFsaWQgbWV0YWRhdGEgaWYgaXQgd2FudHMg
RmlsZSBvYmplY3QgdG8gY2FjaGUgbWV0YWRhdGEgKGUuZy4gaWYgdGhlIGZpbGUgYm9keSBpcyBv
biBhIHJlbW90ZSBzZXJ2ZXIpLCBidXQgb3RoZXJ3aXNlIHNob3VsZCBOT1QgcmV0dXJuIHZhbGlk
IG1ldGFkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRh
ZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQXN5bmNGaWxlU3lzdGVtKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4
IDAxYmVlODk3MmM0ZTExODhjMzA4NGI5ZTIzNmYwNTYzNzc2YWIxZDYuLjUxOTQ4MjQ5NzExOWE0
MDRhNGNhNmI0MjEyOWVjNzMxM2E2YTg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVzdGVkIGZpbGUgc3lzdGVtIGlzIG9wZW5l
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBu
YW1lICovLCBjb25zdCBLVVJMJiAvKiByb290VVJMICovLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3Bl
bkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBuYW1lICovLCBjb25zdCBVUkwmIC8qIHJvb3RV
UkwgKi8sIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJlYWQgc3VjY2Vz
c2Z1bGx5LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFk
YXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWVzU3RyYXRlZ3kuaAppbmRleCBjMGU2ZWYyMWVjMGI0ZmI5MTlmNTQ4ZTk0ZjJjMGMzMjIy
ZDRlZThlLi42NTQwNTdkM2Q3YTdhYWJhNGIwNjAzNGE3YmRjOWJjOTVmNjM4ZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaApAQCAtMzMsMTggKzMzLDE4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIGNsYXNzIENvb2tpZXNT
dHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
fkNvb2tpZXNTdHJhdGVneSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmluZGV4IGMyZGI2M2M5OGFlMWIyNDI4OTVlZjZhNTQ4ZjBkMGEwZDc5
ZjY2NGMuLjJlODYxMWIwYjRjZTQ0MTRmMmFjMTNlMTI1YjEwZDI3MDkxYWJhMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAg
LTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Dcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBLVVJMPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBLVVJMPjo6Y29weShjb25zdCBLVVJMJiB1cmwpCitDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFVSTD46OmNvcHkoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5j
b3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApp
bmRleCBiMWMxNGViMzZhYTI0NDQxYmZiYjE0NTMwMDljMTgyYTVhODBjOTVlLi5hZTJlZjI0YTEw
YmE3ZDhiMjVmMjAwZmI3NGUyNjk4YjBmMjA3ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNz
IEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0xMjAs
OSArMTIwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgfTsKIAotICAg
IHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEtV
Ukw+IHsKLSAgICAgICAgdHlwZWRlZiBLVVJMIFR5cGU7Ci0gICAgICAgIHN0YXRpYyBUeXBlIGNv
cHkoY29uc3QgS1VSTCYpOworICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIFVSTD4geworICAgICAgICB0eXBlZGVmIFVSTCBUeXBlOworICAg
ICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFVSTCYpOwogICAgIH07CiAKICAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBTdHJpbmc+IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDI3ZGRkNmUyMzMyYzQwODg4ODY0ZmJi
ZjU2ZDY2NTk0Yjc3NGYyZTMuLjVlNzEwNmNmODY2OGI5OGE1MDM4Y2E5NTU2YmIxOWI2NmI0ZTU1
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNjksNyArNjksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSYW5nZTsKIAogZW51bSBEcmFnQXBwbGlj
YXRpb25GbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCAxY2E1
MTJkNWYwMTE5Mzg4NjUzMWJjZWM3MDZlODJkZjczMGQzZDJkLi5iODFhZmQ1NzllODI5M2VlZmEy
YmE5M2I5YmI1NWMxZjUwNzZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGMKIH0KIAogI2lmICFQ
TEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCi1EcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRl
cmluZ01vZGUpCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25z
dCBTdHJpbmcmLCBGb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggN2MyMjg1ZTEzYWZmNzY0NjBjNDRmMDUzYTMw
ODljMDNiMDY0YzBmNi4uZmFiOTc1NDUyODUyZGIwOGRkOGYzYmNlODllYjJiZDI3ODNlN2VkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKQEAgLTUxLDcgKzUxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJh
Z0ltYWdlUmVmOwpAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAg
ICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUlj
b25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250
UmVuZGVyaW5nTW9kZSk7CisgICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmso
VVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwogICAgIHZvaWQg
ZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHAKaW5kZXggNWM4MTdlZGVmZmUxNzQ5NzM2MWZlNTc1MzJmMDk1MmM2ZmZk
ODBjNy4uYWQxNjU3YjAzYjM3OTM4ODg5ZGM0N2E3ZGJiNzVhMmZmZTY0N2QzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBpbnQgRmls
ZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAgIHJldHVybiBi
eXRlc1JlYWQ7CiB9CiAKLWludCBGaWxlU3RyZWFtOjp3cml0ZShjb25zdCBLVVJMJiwgbG9uZyBs
b25nLCBpbnQpCitpbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgVVJMJiwgbG9uZyBsb25nLCBp
bnQpCiB7CiAgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgogICAgIHJldHVybiAtMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCBiYWEzOTQ4ZGMxOWJmMzU3ZTUx
ZmJkMGU3NGViNWE2YjU3ODRhMWMyLi5lZWVhYTBlYTcxZGY1YjYwYjA3NTBiNjNjNTRjMTc3MTRk
NDNhYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC00MCw3ICs0MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAog
Ly8gQWxsIG1ldGhvZHMgYXJlIHN5bmNocm9ub3VzLgogY2xhc3MgRmlsZVN0cmVhbSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZpbGVTdHJlYW0+IHsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV3JpdGVzIGEgYmxvYiB0byB0aGUgZmlsZS4KICAgICAvLyBSZXR1cm5zIG51bWJlciBv
ZiBieXRlcyBiZWluZyB3cml0dGVuIG9uIHN1Y2Nlc3MuIC0xIG90aGVyd2lzZS4KLSAgICBpbnQg
d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KTsKKyAgICBpbnQgd3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpOwogCiAgICAgLy8gVHJ1bmNhdGVzIHRoZSBmaWxlIHRvIHRoZSBzcGVjaWZp
ZWQgcG9zaXRpb24uCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuIEZhbHNlIG90aGVy
d2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJhMDBhYzMyNDZiYmM4NmQ3NzZlMGVmYTRkNjE1ZmMwNjI4YjA2YWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCi0KLSNpbmNsdWRlICJEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCIKLSNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0j
aW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBVU0UoSUNVX1VOSUNPREUp
Ci0jaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgotI2VuZGlmCi0KLS8vIEZJWE1FOiBUaGlzIGZp
bGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KLS8vIFdl
IGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZv
bHZlCi0vLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5n
QnVmZmVyIGluc3RlYWQuCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2Ug
V1RGOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1z
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVZhbGlkUG9ydE51bWJlciA9IDB4RkZGRTsKLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKLQotc3RhdGlj
IGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoVUNoYXIgY2hhcmFjdGVyLCBj
aGFyIGxvd2VyY2FzZUxldHRlcikKLXsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2Fz
ZUxldHRlcikpOwotICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0
dGVyOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciB3c1NjaGVtZVtdID0geyd3JywgJ3MnfTsKLXN0
YXRpYyBjb25zdCBjaGFyIGZ0cFNjaGVtZVtdID0geydmJywgJ3QnLCAncCd9Owotc3RhdGljIGNv
bnN0IGNoYXIgZnRwUG9ydFtdID0geycyJywgJzEnfTsKLXN0YXRpYyBjb25zdCBjaGFyIHdzc1Nj
aGVtZVtdID0geyd3JywgJ3MnLCAncyd9Owotc3RhdGljIGNvbnN0IGNoYXIgZmlsZVNjaGVtZVtd
ID0geydmJywgJ2knLCAnbCcsICdlJ307Ci1zdGF0aWMgY29uc3QgY2hhciBodHRwU2NoZW1lW10g
PSB7J2gnLCAndCcsICd0JywgJ3AnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0dHBQb3J0W10gPSB7
JzgnLCAnMCd9Owotc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNTY2hlbWVbXSA9IHsnaCcsICd0Jywg
J3QnLCAncCcsICdzJ307Ci1zdGF0aWMgY29uc3QgY2hhciBodHRwc1BvcnRbXSA9IHsnNCcsICc0
JywgJzMnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGdvcGhlclNjaGVtZVtdID0geydnJywgJ28nLCAn
cCcsICdoJywgJ2UnLCAncid9Owotc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyUG9ydFtdID0geyc3
JywgJzAnfTsKLQotc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
Y2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQotewotICAgIEFTU0VSVChpc0FT
Q0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7Ci0gICAgcmV0dXJuIChjaGFyYWN0ZXIgfCAweDIw
KSA9PSBsb3dlcmNhc2VMZXR0ZXI7Ci19Ci0KLWVudW0gVVJMQ2hhcmFjdGVyQ2xhc3NlcyB7Ci0g
ICAgLy8gYWxwaGEgCi0gICAgU2NoZW1lRmlyc3RDaGFyID0gMSA8PCAwLAotCi0gICAgLy8gKCBh
bHBoYSB8IGRpZ2l0IHwgIisiIHwgIi0iIHwgIi4iICkKLSAgICBTY2hlbWVDaGFyID0gMSA8PCAx
LAotCi0gICAgLy8gbWFyayAgICAgICAgPSAiLSIgfCAiXyIgfCAiLiIgfCAiISIgfCAifiIgfCAi
KiIgfCAiJyIgfCAiKCIgfCAiKSIKLSAgICAvLyB1bnJlc2VydmVkICA9IGFscGhhbnVtIHwgbWFy
awotICAgIC8vICggdW5yZXNlcnZlZCB8IGVzY2FwZWQgfCAiOyIgfCAiOiIgfCAiJiIgfCAiPSIg
fCAiKyIgfCAiJCIgfCAiLCIgKQotICAgIFVzZXJJbmZvQ2hhciA9IDEgPDwgMiwKLQotICAgIC8v
IGFsbnVtIHwgIi4iIHwgIi0iIHwgIiUiCi0gICAgLy8gVGhlIGFib3ZlIGlzIHdoYXQgdGhlIHNw
ZWNpZmljYXRpb24gc2F5cywgYnV0IHdlIGFyZSBsZW5pZW50IHRvCi0gICAgLy8gbWF0Y2ggZXhp
c3RpbmcgcHJhY3RpY2UgYW5kIGFsc28gYWxsb3c6Ci0gICAgLy8gIl8iCi0gICAgSG9zdG5hbWVD
aGFyID0gMSA8PCAzLAotCi0gICAgLy8gaGV4ZGlnaXQgfCAiOiIgfCAiJSIKLSAgICBJUHY2Q2hh
ciA9IDEgPDwgNCwKLQotICAgIC8vICIjIiB8ICI/IiB8ICIvIiB8IG51bAotICAgIFBhdGhTZWdt
ZW50RW5kQ2hhciA9IDEgPDwgNSwKLQotICAgIC8vIG5vdCBhbGxvd2VkIGluIHBhdGgKLSAgICBC
YWRDaGFyID0gMSA8PCA2Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjaGFyYWN0
ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgLyogMCBudWwgKi8gUGF0aFNlZ21lbnRFbmRDaGFy
LCAgICAvKiAxIHNvaCAqLyBCYWRDaGFyLAotICAgIC8qIDIgc3R4ICovIEJhZENoYXIsICAgIC8q
IDMgZXR4ICovIEJhZENoYXIsCi0gICAgLyogNCBlb3QgKi8gQmFkQ2hhciwgICAgLyogNSBlbnEg
Ki8gQmFkQ2hhciwgICAgLyogNiBhY2sgKi8gQmFkQ2hhciwgICAgLyogNyBiZWwgKi8gQmFkQ2hh
ciwKLSAgICAvKiA4IGJzICovIEJhZENoYXIsICAgICAvKiA5IGh0ICovIEJhZENoYXIsICAgICAv
KiAxMCBubCAqLyBCYWRDaGFyLCAgICAvKiAxMSB2dCAqLyBCYWRDaGFyLAotICAgIC8qIDEyIG5w
ICovIEJhZENoYXIsICAgIC8qIDEzIGNyICovIEJhZENoYXIsICAgIC8qIDE0IHNvICovIEJhZENo
YXIsICAgIC8qIDE1IHNpICovIEJhZENoYXIsCi0gICAgLyogMTYgZGxlICovIEJhZENoYXIsICAg
LyogMTcgZGMxICovIEJhZENoYXIsICAgLyogMTggZGMyICovIEJhZENoYXIsICAgLyogMTkgZGMz
ICovIEJhZENoYXIsCi0gICAgLyogMjAgZGM0ICovIEJhZENoYXIsICAgLyogMjEgbmFrICovIEJh
ZENoYXIsICAgLyogMjIgc3luICovIEJhZENoYXIsICAgLyogMjMgZXRiICovIEJhZENoYXIsCi0g
ICAgLyogMjQgY2FuICovIEJhZENoYXIsICAgLyogMjUgZW0gKi8gQmFkQ2hhciwgICAgLyogMjYg
c3ViICovIEJhZENoYXIsICAgLyogMjcgZXNjICovIEJhZENoYXIsCi0gICAgLyogMjggZnMgKi8g
QmFkQ2hhciwgICAgLyogMjkgZ3MgKi8gQmFkQ2hhciwgICAgLyogMzAgcnMgKi8gQmFkQ2hhciwg
ICAgLyogMzEgdXMgKi8gQmFkQ2hhciwKLSAgICAvKiAzMiBzcCAqLyBCYWRDaGFyLCAgICAvKiAz
MyAgISAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogMzQgICIgKi8gQmFkQ2hhciwgICAgLyogMzUg
ICMgKi8gUGF0aFNlZ21lbnRFbmRDaGFyIHwgQmFkQ2hhciwKLSAgICAvKiAzNiAgJCAqLyBVc2Vy
SW5mb0NoYXIsICAgIC8qIDM3ICAlICovIFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQ
djZDaGFyIHwgQmFkQ2hhciwKLSAgICAvKiAzOCAgJiAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDM5
ICAnICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0MCAgKCAqLyBVc2VySW5mb0NoYXIsICAgIC8q
IDQxICApICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0MiAgKiAqLyBVc2VySW5mb0NoYXIsICAg
IC8qIDQzICArICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIsCi0gICAgLyogNDQgICwgKi8g
VXNlckluZm9DaGFyLAotICAgIC8qIDQ1ICAtICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNDYgIC4gKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDQ3ICAvICovIFBhdGhTZWdtZW50
RW5kQ2hhciwKLSAgICAvKiA0OCAgMCAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDQ5ICAxICovIFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgICAgCi0gICAgLyogNTAgIDIgKi8g
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAg
ICAvKiA1MSAgMyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsCi0gICAgLyogNTIgIDQgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA1MyAgNSAqLyBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNTQgIDYgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAv
KiA1NSAgNyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2
NkNoYXIsCi0gICAgLyogNTYgIDggKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA1NyAgOSAqLyBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNTggIDogKi8gVXNlcklu
Zm9DaGFyIHwgSVB2NkNoYXIsICAgIC8qIDU5ICA7ICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA2
MCAgPCAqLyBCYWRDaGFyLCAgICAvKiA2MSAgPSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNjIg
ID4gKi8gQmFkQ2hhciwgICAgLyogNjMgID8gKi8gUGF0aFNlZ21lbnRFbmRDaGFyIHwgQmFkQ2hh
ciwKLSAgICAvKiA2NCAgQCAqLyAwLAotICAgIC8qIDY1ICBBICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgICAg
Ci0gICAgLyogNjYgIEIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDY3ICBDICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2
Q2hhciwKLSAgICAvKiA2OCAgRCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjkgIEUgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8
IElQdjZDaGFyLAotICAgIC8qIDcwICBGICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA3MSAgRyAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyLAotICAgIC8qIDcyICBIICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzMgIEkgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NCAg
SiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAotICAgIC8qIDc1ICBLICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzYgIEwgKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3
NyAgTSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLAotICAgIC8qIDc4ICBOICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzkgIE8gKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAv
KiA4MCAgUCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAotICAgIC8qIDgxICBRICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODIgIFIgKi8gU2NoZW1l
Rmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAg
ICAvKiA4MyAgUyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg0ICBUICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODUgIFUgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiA4NiAgViAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg3ICBXICovIFNjaGVtZUZpcnN0Q2hhciB8IFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODggIFggKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwgCi0gICAgLyogODkgIFkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA5MCAgWiAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDkxICBb
ICovIDAsCi0gICAgLyogOTIgIFwgKi8gMCwgICAgLyogOTMgIF0gKi8gMCwKLSAgICAvKiA5NCAg
XiAqLyAwLAotICAgIC8qIDk1ICBfICovIFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAg
ICAvKiA5NiAgYCAqLyAwLAotICAgIC8qIDk3ICBhICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA5
OCAgYiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDk5ICBjICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAg
ICAvKiAxMDAgIGQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiAxMDEgIGUgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDEwMiAgZiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDEwMyAgZyAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LAotICAgIC8qIDEwNCAgaCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMDUgIGkgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDYg
IGogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwgCi0gICAgLyogMTA3ICBrICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTA4ICBsICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAg
IC8qIDEwOSAgbSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDExMCAgbiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMTEgIG8gKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKLSAgICAvKiAxMTIgIHAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTEzICBxICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE0
ICByICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsIAotICAgIC8qIDExNSAgcyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDExNiAgdCAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAg
ICAvKiAxMTcgIHUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTggIHYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTE5ICB3ICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogMTIwICB4ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDEyMSAgeSAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEy
MiAgeiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLCAKLSAgICAvKiAxMjMgIHsgKi8gMCwKLSAgICAvKiAxMjQgIHwgKi8gMCwgICAv
KiAxMjUgIH0gKi8gMCwgICAvKiAxMjYgIH4gKi8gVXNlckluZm9DaGFyLCAgIC8qIDEyNyBkZWwg
Ki8gQmFkQ2hhciwKLSAgICAvKiAxMjggKi8gQmFkQ2hhciwgLyogMTI5ICovIEJhZENoYXIsIC8q
IDEzMCAqLyBCYWRDaGFyLCAvKiAxMzEgKi8gQmFkQ2hhciwKLSAgICAvKiAxMzIgKi8gQmFkQ2hh
ciwgLyogMTMzICovIEJhZENoYXIsIC8qIDEzNCAqLyBCYWRDaGFyLCAvKiAxMzUgKi8gQmFkQ2hh
ciwKLSAgICAvKiAxMzYgKi8gQmFkQ2hhciwgLyogMTM3ICovIEJhZENoYXIsIC8qIDEzOCAqLyBC
YWRDaGFyLCAvKiAxMzkgKi8gQmFkQ2hhciwKLSAgICAvKiAxNDAgKi8gQmFkQ2hhciwgLyogMTQx
ICovIEJhZENoYXIsIC8qIDE0MiAqLyBCYWRDaGFyLCAvKiAxNDMgKi8gQmFkQ2hhciwKLSAgICAv
KiAxNDQgKi8gQmFkQ2hhciwgLyogMTQ1ICovIEJhZENoYXIsIC8qIDE0NiAqLyBCYWRDaGFyLCAv
KiAxNDcgKi8gQmFkQ2hhciwKLSAgICAvKiAxNDggKi8gQmFkQ2hhciwgLyogMTQ5ICovIEJhZENo
YXIsIC8qIDE1MCAqLyBCYWRDaGFyLCAvKiAxNTEgKi8gQmFkQ2hhciwKLSAgICAvKiAxNTIgKi8g
QmFkQ2hhciwgLyogMTUzICovIEJhZENoYXIsIC8qIDE1NCAqLyBCYWRDaGFyLCAvKiAxNTUgKi8g
QmFkQ2hhciwKLSAgICAvKiAxNTYgKi8gQmFkQ2hhciwgLyogMTU3ICovIEJhZENoYXIsIC8qIDE1
OCAqLyBCYWRDaGFyLCAvKiAxNTkgKi8gQmFkQ2hhciwKLSAgICAvKiAxNjAgKi8gQmFkQ2hhciwg
LyogMTYxICovIEJhZENoYXIsIC8qIDE2MiAqLyBCYWRDaGFyLCAvKiAxNjMgKi8gQmFkQ2hhciwK
LSAgICAvKiAxNjQgKi8gQmFkQ2hhciwgLyogMTY1ICovIEJhZENoYXIsIC8qIDE2NiAqLyBCYWRD
aGFyLCAvKiAxNjcgKi8gQmFkQ2hhciwKLSAgICAvKiAxNjggKi8gQmFkQ2hhciwgLyogMTY5ICov
IEJhZENoYXIsIC8qIDE3MCAqLyBCYWRDaGFyLCAvKiAxNzEgKi8gQmFkQ2hhciwKLSAgICAvKiAx
NzIgKi8gQmFkQ2hhciwgLyogMTczICovIEJhZENoYXIsIC8qIDE3NCAqLyBCYWRDaGFyLCAvKiAx
NzUgKi8gQmFkQ2hhciwKLSAgICAvKiAxNzYgKi8gQmFkQ2hhciwgLyogMTc3ICovIEJhZENoYXIs
IC8qIDE3OCAqLyBCYWRDaGFyLCAvKiAxNzkgKi8gQmFkQ2hhciwKLSAgICAvKiAxODAgKi8gQmFk
Q2hhciwgLyogMTgxICovIEJhZENoYXIsIC8qIDE4MiAqLyBCYWRDaGFyLCAvKiAxODMgKi8gQmFk
Q2hhciwKLSAgICAvKiAxODQgKi8gQmFkQ2hhciwgLyogMTg1ICovIEJhZENoYXIsIC8qIDE4NiAq
LyBCYWRDaGFyLCAvKiAxODcgKi8gQmFkQ2hhciwKLSAgICAvKiAxODggKi8gQmFkQ2hhciwgLyog
MTg5ICovIEJhZENoYXIsIC8qIDE5MCAqLyBCYWRDaGFyLCAvKiAxOTEgKi8gQmFkQ2hhciwKLSAg
ICAvKiAxOTIgKi8gQmFkQ2hhciwgLyogMTkzICovIEJhZENoYXIsIC8qIDE5NCAqLyBCYWRDaGFy
LCAvKiAxOTUgKi8gQmFkQ2hhciwKLSAgICAvKiAxOTYgKi8gQmFkQ2hhciwgLyogMTk3ICovIEJh
ZENoYXIsIC8qIDE5OCAqLyBCYWRDaGFyLCAvKiAxOTkgKi8gQmFkQ2hhciwKLSAgICAvKiAyMDAg
Ki8gQmFkQ2hhciwgLyogMjAxICovIEJhZENoYXIsIC8qIDIwMiAqLyBCYWRDaGFyLCAvKiAyMDMg
Ki8gQmFkQ2hhciwKLSAgICAvKiAyMDQgKi8gQmFkQ2hhciwgLyogMjA1ICovIEJhZENoYXIsIC8q
IDIwNiAqLyBCYWRDaGFyLCAvKiAyMDcgKi8gQmFkQ2hhciwKLSAgICAvKiAyMDggKi8gQmFkQ2hh
ciwgLyogMjA5ICovIEJhZENoYXIsIC8qIDIxMCAqLyBCYWRDaGFyLCAvKiAyMTEgKi8gQmFkQ2hh
ciwKLSAgICAvKiAyMTIgKi8gQmFkQ2hhciwgLyogMjEzICovIEJhZENoYXIsIC8qIDIxNCAqLyBC
YWRDaGFyLCAvKiAyMTUgKi8gQmFkQ2hhciwKLSAgICAvKiAyMTYgKi8gQmFkQ2hhciwgLyogMjE3
ICovIEJhZENoYXIsIC8qIDIxOCAqLyBCYWRDaGFyLCAvKiAyMTkgKi8gQmFkQ2hhciwKLSAgICAv
KiAyMjAgKi8gQmFkQ2hhciwgLyogMjIxICovIEJhZENoYXIsIC8qIDIyMiAqLyBCYWRDaGFyLCAv
KiAyMjMgKi8gQmFkQ2hhciwKLSAgICAvKiAyMjQgKi8gQmFkQ2hhciwgLyogMjI1ICovIEJhZENo
YXIsIC8qIDIyNiAqLyBCYWRDaGFyLCAvKiAyMjcgKi8gQmFkQ2hhciwKLSAgICAvKiAyMjggKi8g
QmFkQ2hhciwgLyogMjI5ICovIEJhZENoYXIsIC8qIDIzMCAqLyBCYWRDaGFyLCAvKiAyMzEgKi8g
QmFkQ2hhciwKLSAgICAvKiAyMzIgKi8gQmFkQ2hhciwgLyogMjMzICovIEJhZENoYXIsIC8qIDIz
NCAqLyBCYWRDaGFyLCAvKiAyMzUgKi8gQmFkQ2hhciwKLSAgICAvKiAyMzYgKi8gQmFkQ2hhciwg
LyogMjM3ICovIEJhZENoYXIsIC8qIDIzOCAqLyBCYWRDaGFyLCAvKiAyMzkgKi8gQmFkQ2hhciwK
LSAgICAvKiAyNDAgKi8gQmFkQ2hhciwgLyogMjQxICovIEJhZENoYXIsIC8qIDI0MiAqLyBCYWRD
aGFyLCAvKiAyNDMgKi8gQmFkQ2hhciwKLSAgICAvKiAyNDQgKi8gQmFkQ2hhciwgLyogMjQ1ICov
IEJhZENoYXIsIC8qIDI0NiAqLyBCYWRDaGFyLCAvKiAyNDcgKi8gQmFkQ2hhciwKLSAgICAvKiAy
NDggKi8gQmFkQ2hhciwgLyogMjQ5ICovIEJhZENoYXIsIC8qIDI1MCAqLyBCYWRDaGFyLCAvKiAy
NTEgKi8gQmFkQ2hhciwKLSAgICAvKiAyNTIgKi8gQmFkQ2hhciwgLyogMjUzICovIEJhZENoYXIs
IC8qIDI1NCAqLyBCYWRDaGFyLCAvKiAyNTUgKi8gQmFkQ2hhcgotfTsKLQotc3RhdGljIGludCBj
b3B5UGF0aFJlbW92aW5nRG90cyhjaGFyKiBkc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IHNyY1N0
YXJ0LCBpbnQgc3JjRW5kKTsKLXN0YXRpYyB2b2lkIGVuY29kZVJlbGF0aXZlU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVsLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBDaGFyQnVmZmVyJiBvdXB1dCk7Ci1z
dGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmKTsKLQotc3Rh
dGljIGlubGluZSBib29sIGlzU2NoZW1lRmlyc3RDaGFyKGNoYXIgYykgeyByZXR1cm4gY2hhcmFj
dGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBTY2hlbWVGaXJz
dENoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hhcihVQ2hhciBjKSB7
IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBTY2hlbWVGaXJz
dENoYXIpOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyKGNoYXIgYykgeyByZXR1
cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBT
Y2hlbWVDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyKFVDaGFyIGMpIHsg
cmV0dXJuIGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFNjaGVtZUNoYXIp
OyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNVc2VySW5mb0NoYXIodW5zaWduZWQgY2hhciBjKSB7
IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgVXNlckluZm9DaGFyOyB9Ci1zdGF0aWMg
aW5saW5lIGJvb2wgaXNIb3N0bmFtZUNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NdICYgSG9zdG5hbWVDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wg
aXNJUHY2Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVb
Y10gJiBJUHY2Q2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzUGF0aFNlZ21lbnRFbmRDaGFy
KGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjKV0gJiBQYXRoU2VnbWVudEVuZENoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c1BhdGhTZWdtZW50RW5kQ2hhcihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJh
Y3RlckNsYXNzVGFibGVbY10gJiBQYXRoU2VnbWVudEVuZENoYXIpOyB9Ci1zdGF0aWMgaW5saW5l
IGJvb2wgaXNCYWRDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjXSAmIEJhZENoYXI7IH0KLSAgICAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUNo
YXJhY3Rlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFyIHNjaGVtZUNoYXJh
Y3RlcikKLXsKLSAgICBBU1NFUlQoaXNTY2hlbWVDaGFyKGNoYXJhY3RlcikpOwotICAgIEFTU0VS
VChzY2hlbWVDaGFyYWN0ZXIgJiAweDIwKTsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKHNjaGVt
ZUNoYXJhY3RlcikgfHwgKCFpc0FTQ0lJVXBwZXIoc2NoZW1lQ2hhcmFjdGVyKSAmJiBpc1NjaGVt
ZUNoYXIoc2NoZW1lQ2hhcmFjdGVyKSkpOwotICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkg
PT0gc2NoZW1lQ2hhcmFjdGVyOwotfQotCi0vLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVz
dGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlCi0vLyBBU0NJ
SS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFy
YWN0ZXJzIGFyZSBhbGxvd2VkCi0vLyBpbiB0aGUgc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVt
cHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVzdWx0Lgotc3RhdGljIHZvaWQgY29w
eUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0KQotewotICAgIGlmIChzdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJpbmcuY2hh
cmFjdGVyczE2KCk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBk
ZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIGFwcGVuZEFTQ0lJKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgY2hhciogcmVsLCBzaXpl
X3QgbGVuLCBDaGFyQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYnVmZmVyLnJlc2l6ZShiYXNlLmxl
bmd0aCgpICsgbGVuICsgMSk7Ci0gICAgY29weUFTQ0lJKGJhc2UsIGJ1ZmZlci5kYXRhKCkpOwot
ICAgIG1lbWNweShidWZmZXIuZGF0YSgpICsgYmFzZS5sZW5ndGgoKSwgcmVsLCBsZW4pOwotICAg
IGJ1ZmZlcltidWZmZXIuc2l6ZSgpIC0gMV0gPSAnXDAnOwotfQotCi0vLyBGSVhNRTogTW92ZSB0
byBXVEZTdHJpbmcuaCBldmVudHVhbGx5LgotLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZp
cnN0IGluZGV4IGluIHN0cmluZyB8c3wgb2YgYW55IG9mIHRoZSBjaGFyYWN0ZXJzCi0vLyBpbiB8
dG9GaW5kfC4gfHRvRmluZHwgc2hvdWxkIGJlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgYWxs
IGNoYXJhY3RlcnMgdXAKLS8vIHRvIHRoZSBudWxsIHdpbGwgYmUgc2VhcmNoZWQuIFJldHVybnMg
aW50IGlmIG5vdCBmb3VuZC4KLXN0YXRpYyBpbnQgZmluZEZpcnN0T2YoY29uc3QgVUNoYXIqIHMs
IGludCBzTGVuLCBpbnQgc3RhcnRQb3MsIGNvbnN0IGNoYXIqIHRvRmluZCkKLXsKLSAgICBmb3Ig
KGludCBpID0gc3RhcnRQb3M7IGkgPCBzTGVuOyBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciog
Y3VyID0gdG9GaW5kOwotICAgICAgICB3aGlsZSAoKmN1cikgewotICAgICAgICAgICAgaWYgKHNb
aV0gPT0gKihjdXIrKykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tFbmNvZGVk
U3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVF9VTlVTRUQodXJsLCB1cmwu
Y29udGFpbnNPbmx5QVNDSUkoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1cmwsIHVybC5pc0VtcHR5
KCkgfHwgaXNTY2hlbWVGaXJzdENoYXIodXJsWzBdKSk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6
OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQot
ewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKHN0cmluZywgcHJvdG9jb2wpOwotfQot
Ci12b2lkIEtVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAg
IG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsK
LSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydEVuZCA9IDA7Ci0gICAgbV9w
YXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVu
ZCA9IDA7Ci0gICAgbV9mcmFnbWVudEVuZCA9IDA7Ci19Ci0KLUtVUkw6OktVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBwYXJzZSh1cmwpOwotICAgIEFT
U0VSVCh1cmwgPT0gbV9zdHJpbmcpOwotfQotCi1LVVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpCi17Ci0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRG
OEVuY29kaW5nKCkpOwotfQotCi1LVVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0
cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgLy8g
Rm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkgcGFy
dCBhcyAKLSAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0gd2l0aCBH
RVQgbWV0aG9kCi0gICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBhcyBxdWVy
eSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCi0gICAgLy8gdG8gYmUgY29uc2lzdGVudC4KLSAg
ICBpbml0KGJhc2UsIHJlbGF0aXZlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9u
KCkpOwotfQotCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVSTCh1bnNpZ25lZCBjaGFyIGMp
Ci17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBh
bmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMg
YW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxk
IG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0K
LQotdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgLy8gQWxsb3cgcmVzb2x1
dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBhbnkgb3Ro
ZXIgaW52YWxpZCBvbmUuCi0gICAgLy8gRklYTUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/Ci0gICAg
aWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFzZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9zdHJp
bmcgPSByZWxhdGl2ZTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW4gSUUsIHRyZWF0IGJhY2tz
bGFzaGVzIGFzIGlmIHRoZXkgd2VyZSBzbGFzaGVzLAotICAgIC8vIGFzIGxvbmcgYXMgd2UncmUg
bm90IGRlYWxpbmcgd2l0aCBqYXZhc2NyaXB0OiBvciBkYXRhOiBVUkxzLgotICAgIFN0cmluZyBy
ZWwgPSByZWxhdGl2ZTsKLSAgICBpZiAocmVsLmNvbnRhaW5zKCdcXCcpICYmICEocHJvdG9jb2xJ
c0phdmFTY3JpcHQocmVsKSB8fCBwcm90b2NvbElzKHJlbCwgImRhdGEiKSkpCi0gICAgICAgIHJl
bCA9IHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhyZWwpOwotCi0gICAgYm9vbCBhbGxBU0NJSSA9IHJl
bC5jb250YWluc09ubHlBU0NJSSgpOwotICAgIENoYXJCdWZmZXIgc3RyQnVmZmVyOwotICAgIGNo
YXIqIHN0cjsKLSAgICBzaXplX3QgbGVuOwotICAgIGlmIChhbGxBU0NJSSkgewotICAgICAgICBs
ZW4gPSByZWwubGVuZ3RoKCk7Ci0gICAgICAgIHN0ckJ1ZmZlci5yZXNpemUobGVuICsgMSk7Ci0g
ICAgICAgIGNvcHlBU0NJSShyZWwsIHN0ckJ1ZmZlci5kYXRhKCkpOwotICAgICAgICBzdHJCdWZm
ZXJbbGVuXSA9IDA7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRhKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgZW5jb2RlUmVsYXRpdmVTdHJpbmcocmVsLCBlbmNvZGluZywgc3RyQnVmZmVy
KTsKLSAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKLSAgICAgICAgbGVuID0gc3RybGVu
KHN0cik7Ci0gICAgfQotCi0gICAgLy8gR2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJM
KCpzdHIpKSB7Ci0gICAgICAgIHN0cisrOwotICAgICAgICAtLWxlbjsKLSAgICB9Ci0KLSAgICAv
LyBHZXQgcmlkIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4K
LSAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJMKHN0cltsZW4gLSAxXSkpCi0gICAg
ICAgIHN0clstLWxlbl0gPSAnXDAnOwotCi0gICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBSRkMsIHRo
ZSByZWZlcmVuY2Ugc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGFuCi0gICAgLy8gYWJzb2x1dGUg
VVJJIGlmIHBvc3NpYmxlLCB1c2luZyB0aGUgImxlZnRtb3N0LCBsb25nZXN0IgotICAgIC8vIGFs
Z29yaXRobS4gSWYgdGhlIFVSSSByZWZlcmVuY2UgaXMgYWJzb2x1dGUgaXQgd2lsbCBoYXZlIGEK
LSAgICAvLyBzY2hlbWUsIG1lYW5pbmcgdGhhdCBpdCB3aWxsIGhhdmUgYSBjb2xvbiBiZWZvcmUg
dGhlIGZpcnN0Ci0gICAgLy8gbm9uLXNjaGVtZSBlbGVtZW50LgotICAgIGJvb2wgYWJzb2x1dGUg
PSBmYWxzZTsKLSAgICBjaGFyKiBwID0gc3RyOwotICAgIGlmIChpc1NjaGVtZUZpcnN0Q2hhcigq
cCkpIHsKLSAgICAgICAgKytwOwotICAgICAgICB3aGlsZSAoaXNTY2hlbWVDaGFyKCpwKSkgewot
ICAgICAgICAgICAgKytwOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqcCA9PSAnOicpIHsKLSAg
ICAgICAgICAgIGlmIChwWzFdICE9ICcvJyAmJiBlcXVhbElnbm9yaW5nQ2FzZShiYXNlLnByb3Rv
Y29sKCksIFN0cmluZyhzdHIsIHAgLSBzdHIpKSAmJiBiYXNlLmlzSGllcmFyY2hpY2FsKCkpCi0g
ICAgICAgICAgICAgICAgc3RyID0gcCArIDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWJzb2x1dGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQ2hhckJ1ZmZl
ciBwYXJzZUJ1ZmZlcjsKLQotICAgIGlmIChhYnNvbHV0ZSkgewotICAgICAgICBwYXJzZShzdHIs
ICZyZWxhdGl2ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgdGhlIGJhc2UgaXMgZW1w
dHkgb3Igb3BhcXVlIChlLmcuIGRhdGE6IG9yIGphdmFzY3JpcHQ6KSwgdGhlbiB0aGUgVVJMIGlz
IGludmFsaWQKLSAgICAgICAgLy8gdW5sZXNzIHRoZSByZWxhdGl2ZSBVUkwgaXMgYSBzaW5nbGUg
ZnJhZ21lbnQuCi0gICAgICAgIGlmICghYmFzZS5pc0hpZXJhcmNoaWNhbCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RyWzBdID09ICcjJykgewotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJh
c2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIp
OwotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSByZWxhdGl2
ZTsKLSAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHN0clswXSkgewotICAg
ICAgICBjYXNlICdcMCc6Ci0gICAgICAgICAgICAvLyBUaGUgcmVmZXJlbmNlIGlzIGVtcHR5LCBz
byB0aGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIGRvY3VtZW50IHdpdGggYW55IGZyYWdt
ZW50IGlkZW50aWZpZXIgcmVtb3ZlZC4KLSAgICAgICAgICAgICp0aGlzID0gYmFzZTsKLSAgICAg
ICAgICAgIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgJyMnOiB7Ci0gICAgICAgICAgICAvLyBtdXN0IGJlIGZyYWdtZW50LW9ubHkg
cmVmZXJlbmNlCi0gICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFz
ZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgIHBhcnNl
KHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgJz8nOiB7Ci0gICAgICAgICAgICAvLyBxdWVyeS1vbmx5IHJl
ZmVyZW5jZSwgc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3Igbm9uLVVSTCByZXN1bHRzCi0gICAgICAg
ICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BhdGhFbmQpLCBzdHIs
IGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgp
LCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSAnLyc6Ci0gICAgICAgICAgICAvLyBtdXN0IGJlIG5ldC1wYXRoIG9yIGFic29sdXRlLXBhdGgg
cmVmZXJlbmNlCi0gICAgICAgICAgICBpZiAoc3RyWzFdID09ICcvJykgewotICAgICAgICAgICAg
ICAgIC8vIG5ldC1wYXRoCi0gICAgICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmlu
Zy5sZWZ0KGJhc2UubV9zY2hlbWVFbmQgKyAxKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIGFicy1wYXRoCi0gICAgICAgICAg
ICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9wb3J0RW5kKSwgc3Ry
LCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5k
YXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBtdXN0IGJl
IHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlCi0KLSAgICAgICAgICAgICAgICAvLyBCYXNlIHBhcnQg
cGx1cyByZWxhdGl2ZSBwYXJ0IHBsdXMgb25lIHBvc3NpYmxlIHNsYXNoIGFkZGVkIGluIGJldHdl
ZW4gcGx1cyB0ZXJtaW5hdGluZyBcMCBieXRlLgotICAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBidWZmZXJTaXplID0gYmFzZS5tX3BhdGhFbmQgKyAxICsgbGVuICsgMTsKLSAgICAgICAgICAg
ICAgICBwYXJzZUJ1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7Ci0KLSAgICAgICAgICAgICAgICBj
aGFyKiBidWZmZXJQb3MgPSBwYXJzZUJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgY2hh
ciogYnVmZmVyU3RhcnQgPSBidWZmZXJQb3M7Ci0KLSAgICAgICAgICAgICAgICAvLyBmaXJzdCBj
b3B5IGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBwYXRoIGZyb20gdGhlIGJhc2UKLSAgICAgICAgICAg
ICAgICBDaGFyQnVmZmVyIGJhc2VTdHJpbmdCdWZmZXIoYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7
Ci0gICAgICAgICAgICAgICAgY29weUFTQ0lJKGJhc2UubV9zdHJpbmcsIGJhc2VTdHJpbmdCdWZm
ZXIuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nID0gYmFz
ZVN0cmluZ0J1ZmZlci5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZVN0
cmluZ1N0YXJ0ID0gYmFzZVN0cmluZzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXRo
U3RhcnQgPSBiYXNlU3RyaW5nU3RhcnQgKyBiYXNlLm1fcG9ydEVuZDsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAoYmFzZVN0cmluZ1N0YXJ0IDwgcGF0aFN0YXJ0KQotICAgICAgICAgICAgICAgICAg
ICAqYnVmZmVyUG9zKysgPSAqYmFzZVN0cmluZ1N0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgY2hh
ciogYnVmZmVyUGF0aFN0YXJ0ID0gYnVmZmVyUG9zOwotCi0gICAgICAgICAgICAgICAgLy8gbm93
IGNvcHkgdGhlIGJhc2UgcGF0aAotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmdFbmQgPSBiYXNlU3RyaW5nICsgYmFzZS5tX3BhdGhFbmQ7Ci0KLSAgICAgICAgICAgICAgICAv
LyBnbyBiYWNrIHRvIHRoZSBsYXN0IHNsYXNoCi0gICAgICAgICAgICAgICAgd2hpbGUgKGJhc2VT
dHJpbmdFbmQgPiBiYXNlU3RyaW5nU3RhcnQgJiYgYmFzZVN0cmluZ0VuZFstMV0gIT0gJy8nKQot
ICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nRW5kLS07Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoYmFzZVN0cmluZ0VuZCA9PSBiYXNlU3RyaW5nU3RhcnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gbm8gcGF0aCBpbiBiYXNlLCBhZGQgYSBwYXRoIHNlcGFyYXRvciBpZiBuZWNlc3NhcnkK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UubV9zY2hlbWVFbmQgKyAxICE9IGJhc2UubV9w
YXRoRW5kICYmICpzdHIgJiYgKnN0ciAhPSAnPycgJiYgKnN0ciAhPSAnIycpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAqYnVmZmVyUG9zKysgPSAnLyc7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IGNvcHlQYXRoUmVtb3ZpbmdEb3Rz
KGJ1ZmZlclBvcywgYmFzZVN0cmluZ1N0YXJ0LCAwLCBiYXNlU3RyaW5nRW5kIC0gYmFzZVN0cmlu
Z1N0YXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiByZWxTdHJpbmdTdGFydCA9IHN0cjsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWxT
dHJpbmdQb3MgPSByZWxTdHJpbmdTdGFydDsKLQotICAgICAgICAgICAgICAgIHdoaWxlICgqcmVs
U3RyaW5nUG9zICYmICpyZWxTdHJpbmdQb3MgIT0gJz8nICYmICpyZWxTdHJpbmdQb3MgIT0gJyMn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWxTdHJpbmdQb3NbMF0gPT0gJy4nICYmIGJ1
ZmZlclBvc1stMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXRo
U2VnbWVudEVuZENoYXIocmVsU3RyaW5nUG9zWzFdKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbFN0cmluZ1BvcyArPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZWxTdHJpbmdQb3NbMF0gPT0gJy8nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWxTdHJpbmdQb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVsU3RyaW5nUG9zWzFdID09ICcuJyAm
JiBpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMl0pKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuLiIgc2VnbWVudCBhbmQgcmV3aW5kIHRoZSBs
YXN0IHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZl
cyBpdCB1cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdtZW50cyAtIHdlIGNob29zZSB0byBk
cm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJlbGllcyBvbiB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbFN0
cmluZ1BvcyArPSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxTdHJpbmdQ
b3NbMF0gPT0gJy8nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQ
b3MrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyUG9zID4gYnVmZmVy
UGF0aFN0YXJ0ICsgMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9z
LS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlclBvcyA+IGJ1ZmZl
clBhdGhTdGFydCArIDEgICYmIGJ1ZmZlclBvc1stMV0gIT0gJy8nKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZmZXJQb3MtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICpidWZmZXJQb3MgPSAqcmVsU3RyaW5nUG9zOwot
ICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MrKzsKLSAgICAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zKys7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gYWxs
IGRvbmUgd2l0aCB0aGUgcGF0aCB3b3JrLCBub3cgY29weSBhbnkgcmVtYWluZGVyCi0gICAgICAg
ICAgICAgICAgLy8gb2YgdGhlIHJlbGF0aXZlIHJlZmVyZW5jZTsgdGhpcyB3aWxsIGFsc28gYWRk
IGEgbnVsbCB0ZXJtaW5hdG9yCi0gICAgICAgICAgICAgICAgc3RybmNweShidWZmZXJQb3MsIHJl
bFN0cmluZ1BvcywgYnVmZmVyU2l6ZSAtIChidWZmZXJQb3MgLSBidWZmZXJTdGFydCkpOwotCi0g
ICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotCi0g
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cmxlbihwYXJzZUJ1ZmZlci5kYXRhKCkpICsgMSA8PSBw
YXJzZUJ1ZmZlci5zaXplKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi1LVVJMIEtVUkw6OmNvcHkoKSBjb25zdAotewotICAg
IEtVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3Ry
aW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBLVVJM
OjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNQYXRoKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7
Ci0gICAgaWYgKG1fc3RyaW5nW2VuZF0gPT0gJy8nKQotICAgICAgICAtLWVuZDsKLQotICAgIHNp
emVfdCBzdGFydCA9IG1fc3RyaW5nLnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3Rh
cnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3J0RW5kKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgICsrc3RhcnQ7Ci0KLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0
YXJ0LCBlbmQgLSBzdGFydCArIDEpOwotfQotCi1TdHJpbmcgS1VSTDo6cHJvdG9jb2woKSBjb25z
dAotewotICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1fc2NoZW1lRW5kKTsKLX0KLQotU3RyaW5n
IEtVUkw6Omhvc3QoKSBjb25zdAotewotICAgIGludCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAg
IHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0
LCBtX2hvc3RFbmQgLSBzdGFydCkpOwotfQotCi11bnNpZ25lZCBzaG9ydCBLVVJMOjpwb3J0KCkg
Y29uc3QKLXsKLSAgICAvLyBXZSByZXR1cm4gYSBwb3J0IG9mIDAgaWYgdGhlcmUgaXMgbm8gcG9y
dCBzcGVjaWZpZWQuIFRoaXMgY2FuIGhhcHBlbiBpbiB0d28gc2l0dWF0aW9uczoKLSAgICAvLyAx
KSBUaGUgVVJMIGNvbnRhaW5zIG5vIGNvbG9uIGFmdGVyIHRoZSBob3N0IG5hbWUgYW5kIGJlZm9y
ZSB0aGUgcGF0aCBjb21wb25lbnQgb2YgdGhlIFVSTC4KLSAgICAvLyAyKSBUaGUgVVJMIGNvbnRh
aW5zIGEgY29sb24gYnV0IHRoZXJlJ3Mgbm8gcG9ydCBudW1iZXIgYmVmb3JlIHRoZSBwYXRoIGNv
bXBvbmVudCBvZiB0aGUgVVJMIGJlZ2lucy4KLSAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVu
ZCB8fCBtX2hvc3RFbmQgPT0gbV9wb3J0RW5kIC0gMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBjb25zdCBVQ2hhciogc3RyaW5nRGF0YSA9IG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsKLSAgICBi
b29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0
cmljdChzdHJpbmdEYXRhICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0g
MSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IG1heGltdW1WYWxpZFBvcnROdW1iZXIp
Ci0gICAgICAgIHJldHVybiBpbnZhbGlkUG9ydE51bWJlcjsKLSAgICByZXR1cm4gbnVtYmVyOwot
fQotCi1TdHJpbmcgS1VSTDo6cGFzcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGFzc3dvcmRFbmQg
PT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBt
X3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOyAKLX0KLQotU3RyaW5nIEtVUkw6OnVzZXIo
KSBjb25zdAotewotICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcu
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOwotfQotCi1T
dHJpbmcgS1VSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9mcmFn
bWVudEVuZCA9PSBtX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxLCBtX2ZyYWdtZW50RW5kIC0g
KG1fcXVlcnlFbmQgKyAxKSk7Ci19Ci0KLWJvb2wgS1VSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kOwotfQot
Ci1TdHJpbmcgS1VSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJp
bmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oUVQpICYm
ICFVU0UoQ0YpCi1TdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlm
ICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHBhdGgoKSk7Ci19Ci0jZW5k
aWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoY29uc3QgY2hhciopCi17Ci19Ci0KLSNlbHNlCi0KLXN0YXRpYyB2b2lkIGFzc2VydFBy
b3RvY29sSXNHb29kKGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIGNvbnN0IGNoYXIqIHAg
PSBwcm90b2NvbDsKLSAgICB3aGlsZSAoKnApIHsKLSAgICAgICAgQVNTRVJUKCpwID4gJyAnICYm
ICpwIDwgMHg3RiAmJiAhKCpwID49ICdBJyAmJiAqcCA8PSAnWicpKTsKLSAgICAgICAgKytwOwot
ICAgIH0KLX0KLQotI2VuZGlmCi0KLWJvb2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBw
cm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0K
LSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRl
ZCBldmVuIGlmIEtVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgotICAgIC8vIFRoZSBmcmVl
IGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4g
Ci0gICAgQVNTRVJUKCFlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgU3RyaW5nKCJqYXZhc2Ny
aXB0IikpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2Jq
ZWN0LgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAg
ICBpZiAoIXByb3RvY29sW2ldIHx8ICFpc1NjaGVtZUNoYXJhY3Rlck1hdGNoSWdub3JpbmdDYXNl
KG1fc3RyaW5nW2ldLCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiAhcHJvdG9jb2xbbV9zY2hlbWVFbmRdOyAvLyBXZSBzaG91bGQgaGF2
ZSBjb25zdW1lZCBhbGwgY2hhcmFjdGVycyBpbiB0aGUgYXJndW1lbnQuCi19Ci0KLVN0cmluZyBL
VVJMOjpxdWVyeSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcXVlcnlFbmQgPT0gbV9wYXRoRW5kKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsgMSkpOyAKLX0KLQotU3Ry
aW5nIEtVUkw6OnBhdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kLCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOwotfQotCi1ib29sIEtVUkw6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUg
ZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3Np
dGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5n
KDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLQotICAgIGlmICghaXNWYWxpZFByb3RvY29sKG5ld1By
b3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpIHsK
LSAgICAgICAgcGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgS1VSTDo6
c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVu
Y29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8g
YW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSBob3N0LgotCi0gICAgYm9v
bCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOwotCi0g
ICAgcGFyc2UobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkgKyAoc2xhc2hTbGFzaE5lZWRlZCA/
ICIvLyIgOiAiIikgKyBzICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotfQotCi12
b2lkIEtVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5k
KQotICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldFBvcnQo
dW5zaWduZWQgc2hvcnQgaSkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7Ci0gICAg
aW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEp
OwotCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVkID8g
IjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0
RW5kKSk7Ci19Ci0KLXZvaWQgS1VSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0
QW5kUG9ydCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBl
ZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKLSAgICAvLyBhbmQgdG8gYXZvaWQgY2hh
bmdpbmcgbW9yZSB0aGFuIGp1c3QgaG9zdCBhbmQgcG9ydC4KLQotICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKLQotICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIp
ICsgaG9zdEFuZFBvcnQgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7Ci19Ci0KLXZv
aWQgS1VSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVy
cyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlv
bnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2Vy
IGxvZ2luLgotCi0gICAgaW50IGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gdXNlcjsKLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0
ID09IG1fc2NoZW1lRW5kICsgMSkKLSAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKLSAgICAgICAg
Ly8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAgICBpZiAoZW5k
ID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAh
PSAnQCcpKQotICAgICAgICAgICAgdS5hcHBlbmQoJ0AnKTsKLSAgICAgICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX3VzZXJTdGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1
c2VyIG5vciBwYXNzd29yZC4KLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5k
ICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAg
ICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0
cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5n
ZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKLSAgICAgICAgICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwotICAg
IH0KLX0KLQotdm9pZCBLVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCi17Ci0g
ICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFy
c2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhh
biBqdXN0IHRoZSB1c2VyIHBhc3N3b3JkLgotCi0gICAgaW50IGVuZCA9IG1fcGFzc3dvcmRFbmQ7
Ci0gICAgaWYgKCFwYXNzd29yZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHAgPSAiOiIg
KyBwYXNzd29yZCArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3NjaGVtZUVuZCAr
IDEpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3Rp
bmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVu
ZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQg
Kz0gMTsKLSAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0An
IGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmICht
X3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tl
bmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5v
dCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkK
LSAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1fc3RyaW5nLnN1
YnN0cmluZyhlbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2Rl
ZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucy4KLSAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpICsgIiMiICsgcyk7Ci19Ci0KLXZvaWQgS1VSTDo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAg
cmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwotfQotICAgIAot
dm9pZCBLVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxs
eSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYt
OCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRo
aXMgZnVuY3Rpb24uCi0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8n
KSAmJiAhcXVlcnkuaXNOdWxsKCkpCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRo
RW5kKSArICI/IiArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArIHF1ZXJ5ICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKLQotfQotCi12b2lkIEtVUkw6OnNldFBh
dGgoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyBkb2VzIG5v
dCBjb3JyZWN0bHkgZXNjYXBlICcjJyBhbmQgJz8nLCBzbyBmcmFnbWVudCBhbmQgcXVlcnkgcGFy
dHMKLSAgICAvLyBtYXkgYmUgaW5hZHZlcnRlbnRseSBhZmZlY3RlZC4KLSAgICBTdHJpbmcgcGF0
aCA9IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAg
ICBwYXRoID0gIi8iICsgcGF0aDsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5k
KSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCkgKyBtX3N0cmluZy5zdWJzdHJp
bmcobV9wYXRoRW5kKSk7Ci19Ci0KLVN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlczxV
UkxFc2NhcGVTZXF1ZW5jZT4oc3RyaW5nLCBVVEY4RW5jb2RpbmcoKSk7Ci19Ci0KLVN0cmluZyBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlczxV
UkxFc2NhcGVTZXF1ZW5jZT4oc3RyaW5nLCBlbmNvZGluZyk7Ci19Ci0KLS8vIENhdXRpb246IFRo
aXMgZnVuY3Rpb24gZG9lcyBub3QgYm91bmRzIGNoZWNrLgotc3RhdGljIHZvaWQgYXBwZW5kRXNj
YXBlZENoYXIoY2hhciomIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBjKQotewotICAgICpidWZmZXIr
KyA9ICclJzsKLSAgICBwbGFjZUJ5dGVBc0hleChjLCBidWZmZXIpOwotfQotCi1zdGF0aWMgdm9p
ZCBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clN0
YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIqIHAgPSBidWZmZXI7Ci0KLSAgICBjb25z
dCBjaGFyKiBzdHIgPSBzdHJTdGFydDsKLSAgICBjb25zdCBjaGFyKiBzdHJFbmQgPSBzdHJTdGFy
dCArIGxlbmd0aDsKLSAgICB3aGlsZSAoc3RyIDwgc3RyRW5kKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGNoYXIgYyA9ICpzdHIrKzsKLSAgICAgICAgaWYgKGlzQmFkQ2hhcihjKSkgewotICAgICAgICAg
ICAgaWYgKGMgPT0gJyUnIHx8IGMgPT0gJz8nKQotICAgICAgICAgICAgICAgICpwKysgPSBjOwot
ICAgICAgICAgICAgZWxzZSBpZiAoYyAhPSAweDA5ICYmIGMgIT0gMHgwYSAmJiBjICE9IDB4MGQp
Ci0gICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgfQotCi0gICAgYnVmZmVyID0gcDsKLX0KLQot
c3RhdGljIHZvaWQgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFyY2hpY2FsUGFydChjaGFyKiYgYnVm
ZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFyKiBw
ID0gYnVmZmVyOwotCi0gICAgY29uc3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29uc3Qg
Y2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVu
ZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIC8vIFN0cmlw
IENSLCBMRiBhbmQgVGFiIGZyb20gZnJhZ21lbnRzLCBwZXI6Ci0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzcwCi0gICAgICAgIGlmIChjID09IDB4
MDkgfHwgYyA9PSAweDBhIHx8IGMgPT0gMHgwZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIC8vIENocm9tZSBhbmQgSUUgYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gZnJh
Z21lbnRzLCBob3dldmVyIGRvaW5nCi0gICAgICAgIC8vIHNvIHdvdWxkIGhpdCBhbiBBU1NFUlQg
aW4gY2hlY2tFbmNvZGVkU3RyaW5nLCBzbyBmb3Igbm93IHdlIGRvbid0LgotICAgICAgICBpZiAo
YyA8IDB4MjAgfHwgYyA+PSAxMjcpIHsKLSAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRDaGFyKHAs
IGMpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgKnArKyA9IGM7
Ci0gICAgfQotCi0gICAgYnVmZmVyID0gcDsKLX0KLQotLy8gY29weSBhIHBhdGgsIGFjY291bnRp
bmcgZm9yICIuIiBhbmQgIi4uIiBzZWdtZW50cwotc3RhdGljIGludCBjb3B5UGF0aFJlbW92aW5n
RG90cyhjaGFyKiBkc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjRW5k
KQotewotICAgIGNoYXIqIGJ1ZmZlclBhdGhTdGFydCA9IGRzdDsKLQotICAgIC8vIGVtcHR5IHBh
dGggaXMgYSBzcGVjaWFsIGNhc2UsIGFuZCBuZWVkIG5vdCBoYXZlIGEgbGVhZGluZyBzbGFzaAot
ICAgIGlmIChzcmNTdGFydCAhPSBzcmNFbmQpIHsKLSAgICAgICAgY29uc3QgY2hhciogYmFzZVN0
cmluZ1N0YXJ0ID0gc3JjICsgc3JjU3RhcnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmdFbmQgPSBzcmMgKyBzcmNFbmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdQb3Mg
PSBiYXNlU3RyaW5nU3RhcnQ7Ci0KLSAgICAgICAgLy8gdGhpcyBjb2RlIGlzIHVucHJlcGFyZWQg
Zm9yIHBhdGhzIHRoYXQgZG8gbm90IGJlZ2luIHdpdGggYQotICAgICAgICAvLyBzbGFzaCBhbmQg
d2Ugc2hvdWxkIGFsd2F5cyBoYXZlIG9uZSBpbiB0aGUgc291cmNlIHN0cmluZwotICAgICAgICBB
U1NFUlQoYmFzZVN0cmluZ1Bvc1swXSA9PSAnLycpOwotCi0gICAgICAgIC8vIGNvcHkgdGhlIGxl
YWRpbmcgc2xhc2ggaW50byB0aGUgZGVzdGluYXRpb24KLSAgICAgICAgKmRzdCA9ICpiYXNlU3Ry
aW5nUG9zOwotICAgICAgICBiYXNlU3RyaW5nUG9zKys7Ci0gICAgICAgIGRzdCsrOwotCi0gICAg
ICAgIHdoaWxlIChiYXNlU3RyaW5nUG9zIDwgYmFzZVN0cmluZ0VuZCkgewotICAgICAgICAgICAg
aWYgKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy4nICYmIGRzdFstMV0gPT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGJhc2VTdHJpbmdQb3NbMV0gPT0gJy8nIHx8IGJhc2VTdHJpbmdQb3MgKyAx
ID09IGJhc2VTdHJpbmdFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIu
IiBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMjsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNl
U3RyaW5nUG9zWzFdID09ICcuJyAmJiAoYmFzZVN0cmluZ1Bvc1syXSA9PSAnLycgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKyAyID09IGJh
c2VTdHJpbmdFbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4iIHNl
Z21lbnQgYW5kIHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBSRkMgbGVhdmVzIGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0
aCBleGNlc3MKLSAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdtZW50cyAtIHdlIGNob29z
ZSB0byBkcm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAotICAgICAgICAgICAgICAgICAg
ICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ1BvcyAr
PSAzOwotICAgICAgICAgICAgICAgICAgICBpZiAoZHN0ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoZHN0ID4gYnVmZmVyUGF0aFN0YXJ0ICYmIGRzdFstMV0gIT0gJy8nKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZHN0LS07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmRzdCA9ICpiYXNlU3Ry
aW5nUG9zOwotICAgICAgICAgICAgYmFzZVN0cmluZ1BvcysrOwotICAgICAgICAgICAgZHN0Kys7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKmRzdCA9ICdcMCc7Ci0gICAgcmV0dXJuIGRzdCAtIGJ1
ZmZlclBhdGhTdGFydDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNoRG90T3JEb3RE
b3QoY29uc3QgY2hhciogc3RyKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihzdHIpOwotICAgIGlmICghKnApCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBjaGFyIHBjID0gKnA7Ci0gICAgd2hp
bGUgKHVuc2lnbmVkIGNoYXIgYyA9ICorK3ApIHsKLSAgICAgICAgaWYgKGMgPT0gJy4nICYmIChw
YyA9PSAnLycgfHwgcGMgPT0gJy4nKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBwYyA9IGM7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBLVVJMOjpwYXJz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5n
KTsKLQotICAgIENoYXJCdWZmZXIgYnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOwotICAgIGNv
cHlBU0NJSShzdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltzdHJpbmcubGVuZ3Ro
KCldID0gJ1wwJzsKLSAgICBwYXJzZShidWZmZXIuZGF0YSgpLCAmc3RyaW5nKTsKLX0KLQotdGVt
cGxhdGU8c2l6ZV90IGxlbmd0aD4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFy
KiBhLCBjb25zdCBjaGFyICgmYilbbGVuZ3RoXSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhW2ldICE9IGJbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTxz
aXplX3QgbGVuZ3RoQj4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBzdHJp
bmdBLCBzaXplX3QgbGVuZ3RoQSwgY29uc3QgY2hhciAoJnN0cmluZ0IpW2xlbmd0aEJdKQotewot
ICAgIHJldHVybiBsZW5ndGhBID09IGxlbmd0aEIgJiYgZXF1YWwoc3RyaW5nQSwgc3RyaW5nQik7
Ci19Ci0KLS8vIExpc3Qgb2YgZGVmYXVsdCBzY2hlbWVzIGlzIHRha2VuIGZyb20gZ29vZ2xlLXVy
bDoKLS8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdXJsL3NvdXJjZS9icm93c2Uv
dHJ1bmsvc3JjL3VybF9jYW5vbl9zdGR1cmwuY2MjMTIwCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNE
ZWZhdWx0UG9ydEZvclNjaGVtZShjb25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwg
Y29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIC8vIFRoaXMg
c3dpdGNoIGlzIHRoZW9yZXRpY2FsbHkgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uICBJdCBj
YW1lIG92ZXIgd2hlbgotICAgIC8vIHRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmws
IGJ1dCBtYXkgYmUgcmVtb3ZlZCBsYXRlci4KLSAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewot
ICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpICYmIGVx
dWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKLSAgICBjYXNlIDM6Ci0gICAgICAgIGlm
IChlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocG9y
dCwgcG9ydExlbmd0aCwgZnRwUG9ydCk7Ci0gICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1Nj
aGVtZSkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQ
b3J0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwo
c2NoZW1lLCBodHRwU2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7
Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSkg
JiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKLSAgICBjYXNlIDY6Ci0gICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGdvcGhlclNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9y
dExlbmd0aCwgZ29waGVyUG9ydCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGhvc3RQb3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudChp
bnQgaG9zdFN0YXJ0LCBpbnQgcG9ydEVuZCwgY2hhciB1c2VyaW5mb0VuZENoYXIpCi17Ci0gICAg
cmV0dXJuIHVzZXJpbmZvRW5kQ2hhciA9PSAnQCcgJiYgaG9zdFN0YXJ0ID09IHBvcnRFbmQ7Ci19
Ci0KLXN0YXRpYyBib29sIGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBz
Y2hlbWUsIHNpemVfdCBzY2hlbWVMZW5ndGgpCi17Ci0gICAgc3dpdGNoIChzY2hlbWVMZW5ndGgp
IHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsK
LSAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwg
ZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpOwotICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgaHR0cFNjaGVtZSk7Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBodHRwc1NjaGVtZSk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3Qg
Y2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIHN3aXRjaCAoc2NoZW1l
TGVuZ3RoKSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1Nj
aGVtZSk7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hl
bWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIHJl
dHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgZmlsZVNjaGVt
ZSk7Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVt
ZSk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hl
bWUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgS1VSTDo6cGFyc2UoY29u
c3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQotewotICAgIGlmICgh
dXJsIHx8IHVybFswXSA9PSAnXDAnKSB7Ci0gICAgICAgIC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5v
bi1lbXB0eQotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3Ry
aW5nIDogdXJsOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkpIHsKLSAgICAgICAgLy8gc2No
ZW1lIG11c3Qgc3RhcnQgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlcgotICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwotICAgICAgICBp
bnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgc2NoZW1lRW5k
ID0gMDsKLSAgICB3aGlsZSAoaXNTY2hlbWVDaGFyKHVybFtzY2hlbWVFbmRdKSkKLSAgICAgICAg
c2NoZW1lRW5kKys7Ci0KLSAgICBpZiAodXJsW3NjaGVtZUVuZF0gIT0gJzonKSB7Ci0gICAgICAg
IG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAg
ICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCB1c2Vy
U3RhcnQgPSBzY2hlbWVFbmQgKyAxOwotICAgIGludCB1c2VyRW5kOwotICAgIGludCBwYXNzd29y
ZFN0YXJ0OwotICAgIGludCBwYXNzd29yZEVuZDsKLSAgICBpbnQgaG9zdFN0YXJ0OwotICAgIGlu
dCBob3N0RW5kOwotICAgIGludCBwb3J0U3RhcnQ7Ci0gICAgaW50IHBvcnRFbmQ7Ci0KLSAgICBi
b29sIGhpZXJhcmNoaWNhbCA9IHVybFtzY2hlbWVFbmQgKyAxXSA9PSAnLyc7Ci0gICAgYm9vbCBo
YXNTZWNvbmRTbGFzaCA9IGhpZXJhcmNoaWNhbCAmJiB1cmxbc2NoZW1lRW5kICsgMl0gPT0gJy8n
OwotCi0gICAgYm9vbCBpc0ZpbGUgPSBzY2hlbWVFbmQgPT0gNAotICAgICAgICAmJiBpc0xldHRl
ck1hdGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2YnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFsxXSwgJ2knKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFsyXSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFszXSwgJ2UnKTsKLQotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgLy8gUGFyc2Ug
bG9jYWw6IHVybHMgdGhlIHNhbWUgYXMgZmlsZTogdXJscy4KLSAgICBpZiAoIWlzRmlsZSkKLSAg
ICAgICAgaXNGaWxlID0gc2NoZW1lRW5kID09IDUKLSAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UodXJsWzBdLCAnbCcpCi0gICAgICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFsxXSwgJ28nKQotICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaEln
bm9yaW5nQ2FzZSh1cmxbMl0sICdjJykKLSAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UodXJsWzNdLCAnYScpCi0gICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFs0XSwgJ2wnKTsKLSNlbmRpZgotCi0gICAgbV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5ID0gaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdoJykKLSAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICd0JykKLSAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICd0JykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRj
aElnbm9yaW5nQ2FzZSh1cmxbM10sICdwJykKLSAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwg
KGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzRdLCAncycpICYmIHVybFs1XSA9PSAnOicp
KTsKLQotICAgIGlmICgoaGllcmFyY2hpY2FsICYmIGhhc1NlY29uZFNsYXNoKSB8fCBpc05vbkZp
bGVIaWVyYXJjaGljYWxTY2hlbWUodXJsLCBzY2hlbWVFbmQpKSB7Ci0gICAgICAgIC8vIFRoZSBw
YXJ0IGFmdGVyIHRoZSBzY2hlbWUgaXMgZWl0aGVyIGEgbmV0X3BhdGggb3IgYW4gYWJzX3BhdGgg
d2hvc2UgZmlyc3QgcGF0aCBzZWdtZW50IGlzIGVtcHR5LgotICAgICAgICAvLyBBdHRlbXB0IHRv
IGZpbmQgYW4gYXV0aG9yaXR5LgotICAgICAgICAvLyBGSVhNRTogQXV0aG9yaXR5IGNoYXJhY3Rl
cnMgbWF5IGJlIHNjYW5uZWQgdHdpY2UsIGFuZCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGZhc3Rl
ci4KLQotICAgICAgICBpZiAoaGllcmFyY2hpY2FsKQotICAgICAgICAgICAgdXNlclN0YXJ0Kys7
Ci0gICAgICAgIGlmIChoYXNTZWNvbmRTbGFzaCkKLSAgICAgICAgICAgIHVzZXJTdGFydCsrOwot
ICAgICAgICB1c2VyRW5kID0gdXNlclN0YXJ0OwotCi0gICAgICAgIGludCBjb2xvblBvcyA9IDA7
Ci0gICAgICAgIHdoaWxlIChpc1VzZXJJbmZvQ2hhcih1cmxbdXNlckVuZF0pKSB7Ci0gICAgICAg
ICAgICBpZiAodXJsW3VzZXJFbmRdID09ICc6JyAmJiBjb2xvblBvcyA9PSAwKQotICAgICAgICAg
ICAgICAgIGNvbG9uUG9zID0gdXNlckVuZDsKLSAgICAgICAgICAgIHVzZXJFbmQrKzsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh1cmxbdXNlckVuZF0gPT0gJ0AnKSB7Ci0gICAgICAgICAgICAv
LyBhY3R1YWwgZW5kIG9mIHRoZSB1c2VyaW5mbywgc3RhcnQgb24gdGhlIGhvc3QKLSAgICAgICAg
ICAgIGlmIChjb2xvblBvcyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgcGFzc3dvcmRFbmQgPSB1
c2VyRW5kOwotICAgICAgICAgICAgICAgIHVzZXJFbmQgPSBjb2xvblBvczsKLSAgICAgICAgICAg
ICAgICBwYXNzd29yZFN0YXJ0ID0gY29sb25Qb3MgKyAxOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3b3JkRW5kID0gdXNlckVuZDsKLQot
ICAgICAgICAgICAgaG9zdFN0YXJ0ID0gcGFzc3dvcmRFbmQgKyAxOwotICAgICAgICB9IGVsc2Ug
aWYgKHVybFt1c2VyRW5kXSA9PSAnWycgfHwgaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3VzZXJF
bmRdKSkgewotICAgICAgICAgICAgLy8gaGl0IHRoZSBlbmQgb2YgdGhlIGF1dGhvcml0eSwgbXVz
dCBoYXZlIGJlZW4gbm8gdXNlcgotICAgICAgICAgICAgLy8gb3IgbG9va3MgbGlrZSBhbiBJUHY2
IGhvc3RuYW1lCi0gICAgICAgICAgICAvLyBlaXRoZXIgd2F5LCB0cnkgdG8gcGFyc2UgaXQgYXMg
YSBob3N0bmFtZQotICAgICAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLSAgICAgICAgICAg
IHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICBob3N0
U3RhcnQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBpbnZh
bGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpv
cmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGhvc3RFbmQgPSBob3N0U3RhcnQ7Ci0K
LSAgICAgICAgLy8gSVBWNiBJUCBhZGRyZXNzCi0gICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0g
J1snKSB7Ci0gICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICB3aGlsZSAoaXNJUHY2
Q2hhcih1cmxbaG9zdEVuZF0pKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKLSAgICAgICAg
ICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJ10nKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVy
Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0
cmluZyA6IHVybDsKLSAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
d2hpbGUgKGlzSG9zdG5hbWVDaGFyKHVybFtob3N0RW5kXSkpCi0gICAgICAgICAgICAgICAgaG9z
dEVuZCsrOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09
ICc6JykgewotICAgICAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQgKyAxOwot
IAotICAgICAgICAgICAgLy8gcG9zc2libGUgc3RhcnQgb2YgcG9ydAotICAgICAgICAgICAgcG9y
dEVuZCA9IHBvcnRTdGFydDsKLSAgICAgICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodXJsW3Bv
cnRFbmRdKSkKLSAgICAgICAgICAgICAgICBwb3J0RW5kKys7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQ7Ci0KLSAgICAgICAgaWYgKCFp
c1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbcG9ydEVuZF0pKSB7Ci0gICAgICAgICAgICAvLyBpbnZh
bGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpv
cmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChob3N0UG9ydElzRW1wdHlCdXRD
cmVkZW50aWFsc0FyZVByZXNlbnQoaG9zdFN0YXJ0LCBwb3J0RW5kLCB1cmxbcGFzc3dvcmRFbmRd
KSkgewotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0
cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh1c2VyU3RhcnQgPT0gcG9ydEVuZCAmJiAhbV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ICYmICFpc0ZpbGUpIHsKLSAgICAgICAgICAgIC8vIE5vIGF1
dGhvcml0eSBmb3VuZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGlzIGlzIG5vdCBhIG5ldF9wYXRoLCBi
dXQgcmF0aGVyIGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHR3bwotICAgICAgICAgICAgLy8gcGF0
aCBzZWdtZW50cyBhcmUgZW1wdHkuIEZvciBmaWxlLCBodHRwIGFuZCBodHRwcyBvbmx5LCBhbiBl
bXB0eSBhdXRob3JpdHkgaXMgYWxsb3dlZC4KLSAgICAgICAgICAgIHVzZXJTdGFydCAtPSAyOwot
ICAgICAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLSAgICAgICAgICAgIHBhc3N3b3JkU3Rh
cnQgPSB1c2VyRW5kOwotICAgICAgICAgICAgcGFzc3dvcmRFbmQgPSBwYXNzd29yZFN0YXJ0Owot
ICAgICAgICAgICAgaG9zdFN0YXJ0ID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgICAgICBob3N0RW5k
ID0gaG9zdFN0YXJ0OwotICAgICAgICAgICAgcG9ydFN0YXJ0ID0gaG9zdEVuZDsKLSAgICAgICAg
ICAgIHBvcnRFbmQgPSBob3N0RW5kOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gdGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBtdXN0IGJlIGFuIG9wYXF1ZV9wYXJ0IG9yIGFu
IGFic19wYXRoCi0gICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgIHBhc3N3b3Jk
U3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgIGhvc3RTdGFydCA9IGhvc3RF
bmQgPSBwYXNzd29yZEVuZDsKLSAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQ7
Ci0gICAgfQotCi0gICAgaW50IHBhdGhTdGFydCA9IHBvcnRFbmQ7Ci0gICAgaW50IHBhdGhFbmQg
PSBwYXRoU3RhcnQ7Ci0gICAgd2hpbGUgKHVybFtwYXRoRW5kXSAmJiB1cmxbcGF0aEVuZF0gIT0g
Jz8nICYmIHVybFtwYXRoRW5kXSAhPSAnIycpCi0gICAgICAgIHBhdGhFbmQrKzsKLQotICAgIGlu
dCBxdWVyeVN0YXJ0ID0gcGF0aEVuZDsKLSAgICBpbnQgcXVlcnlFbmQgPSBxdWVyeVN0YXJ0Owot
ICAgIGlmICh1cmxbcXVlcnlTdGFydF0gPT0gJz8nKSB7Ci0gICAgICAgIHdoaWxlICh1cmxbcXVl
cnlFbmRdICYmIHVybFtxdWVyeUVuZF0gIT0gJyMnKQotICAgICAgICAgICAgcXVlcnlFbmQrKzsK
LSAgICB9Ci0KLSAgICBpbnQgZnJhZ21lbnRTdGFydCA9IHF1ZXJ5RW5kOwotICAgIGludCBmcmFn
bWVudEVuZCA9IGZyYWdtZW50U3RhcnQ7Ci0gICAgaWYgKHVybFtmcmFnbWVudFN0YXJ0XSA9PSAn
IycpIHsKLSAgICAgICAgZnJhZ21lbnRTdGFydCsrOwotICAgICAgICBmcmFnbWVudEVuZCA9IGZy
YWdtZW50U3RhcnQ7Ci0gICAgICAgIHdoaWxlICh1cmxbZnJhZ21lbnRFbmRdKQotICAgICAgICAg
ICAgZnJhZ21lbnRFbmQrKzsKLSAgICB9Ci0KLSAgICAvLyBhc3NlbWJsZSBpdCBhbGwsIHJlbWVt
YmVyaW5nIHRoZSByZWFsIHJhbmdlcwotCi0gICAgVmVjdG9yPGNoYXIsIDQwOTY+IGJ1ZmZlcihm
cmFnbWVudEVuZCAqIDMgKyAxKTsKLQotICAgIGNoYXIgKnAgPSBidWZmZXIuZGF0YSgpOwotICAg
IGNvbnN0IGNoYXIgKnN0clB0ciA9IHVybDsKLQotICAgIC8vIGNvcHkgaW4gdGhlIHNjaGVtZQot
ICAgIGNvbnN0IGNoYXIgKnNjaGVtZUVuZFB0ciA9IHVybCArIHNjaGVtZUVuZDsKLSAgICB3aGls
ZSAoc3RyUHRyIDwgc2NoZW1lRW5kUHRyKQotICAgICAgICAqcCsrID0gdG9BU0NJSUxvd2VyKCpz
dHJQdHIrKyk7Ci0gICAgbV9zY2hlbWVFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIGJv
b2wgaG9zdElzTG9jYWxIb3N0ID0gcG9ydEVuZCAtIHVzZXJTdGFydCA9PSA5Ci0gICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydF0sICdsJykKLSAgICAgICAg
JiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzFdLCAnbycpCi0gICAg
ICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCsyXSwgJ2MnKQot
ICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrM10sICdh
JykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzRd
LCAnbCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFy
dCs1XSwgJ2gnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2Vy
U3RhcnQrNl0sICdvJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxb
dXNlclN0YXJ0KzddLCAncycpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
dXJsW3VzZXJTdGFydCs4XSwgJ3QnKTsKLQotICAgIC8vIEZpbGUgVVJMcyBuZWVkIGEgaG9zdCBw
YXJ0IHVubGVzcyBpdCBpcyBqdXN0IGZpbGU6Ly8gb3IgZmlsZTovL2xvY2FsaG9zdAotICAgIGJv
b2wgZGVnZW5lcmF0ZUZpbGVQYXRoID0gcGF0aFN0YXJ0ID09IHBhdGhFbmQgJiYgKGhvc3RTdGFy
dCA9PSBob3N0RW5kIHx8IGhvc3RJc0xvY2FsSG9zdCk7Ci0KLSAgICAvLyBXZSBkcm9wIGVtcHR5
IGNyZWRlbnRpYWxzLCBidXQga2VlcCBhIGNvbG9uIGluIGFuIGVtcHR5IGhvc3QvcG9ydCBwYWly
LgotICAgIC8vIFJlbW92aW5nIGhvc3RuYW1lIGNvbXBsZXRlbHkgd291bGQgY2hhbmdlIHRoZSBz
dHJ1Y3R1cmUgb2YgdGhlIFVSTCBvbiByZS1wYXJzaW5nLgotICAgIGJvb2wgaGF2ZU5vbkhvc3RB
dXRob3JpdHlQYXJ0ID0gdXNlclN0YXJ0ICE9IHVzZXJFbmQgfHwgcGFzc3dvcmRTdGFydCAhPSBw
YXNzd29yZEVuZCB8fCBob3N0RW5kICE9IHBvcnRFbmQ7Ci0KLSAgICAvLyBhZGQgIjoiIGFmdGVy
IHNjaGVtZQotICAgICpwKysgPSAnOic7Ci0KLSAgICAvLyBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9u
ZSBhdXRob3JpdHkgcGFydCBvciBhIGZpbGUgVVJMIC0gYWRkICIvLyIgYW5kIGF1dGhvcml0eQot
ICAgIGlmIChpc0ZpbGUgPyAhZGVnZW5lcmF0ZUZpbGVQYXRoIDogKGhhdmVOb25Ib3N0QXV0aG9y
aXR5UGFydCB8fCBob3N0U3RhcnQgIT0gaG9zdEVuZCkpIHsKLSAgICAgICAgKnArKyA9ICcvJzsK
LSAgICAgICAgKnArKyA9ICcvJzsKLQotICAgICAgICBtX3VzZXJTdGFydCA9IHAgLSBidWZmZXIu
ZGF0YSgpOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhlIHVzZXIKLSAgICAgICAgc3RyUHRyID0g
dXJsICsgdXNlclN0YXJ0OwotICAgICAgICBjb25zdCBjaGFyKiB1c2VyRW5kUHRyID0gdXJsICsg
dXNlckVuZDsKLSAgICAgICAgd2hpbGUgKHN0clB0ciA8IHVzZXJFbmRQdHIpIHsKLSAgICAgICAg
ICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKLSAgICAgICAgICAgIEFTU0VSVChpc1VzZXJJbmZvQ2hh
cihjKSk7Ci0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgfQotICAgICAgICBtX3VzZXJF
bmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRoZSBwYXNzd29y
ZAotICAgICAgICBpZiAocGFzc3dvcmRFbmQgIT0gcGFzc3dvcmRTdGFydCkgewotICAgICAgICAg
ICAgKnArKyA9ICc6JzsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIHBhc3N3b3JkU3RhcnQ7
Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwYXNzd29yZEVuZFB0ciA9IHVybCArIHBhc3N3b3Jk
RW5kOwotICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IHBhc3N3b3JkRW5kUHRyKSB7Ci0gICAg
ICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgIEFTU0VSVChp
c1VzZXJJbmZvQ2hhcihjKSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9wYXNzd29yZEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotCi0gICAgICAgIC8vIElmIHdlIGhhZCBhbnkgdXNlciBpbmZvLCBhZGQgIkAiCi0gICAgICAg
IGlmIChwIC0gYnVmZmVyLmRhdGEoKSAhPSBtX3VzZXJTdGFydCkKLSAgICAgICAgICAgICpwKysg
PSAnQCc7Ci0KLSAgICAgICAgLy8gY29weSBpbiB0aGUgaG9zdCwgZXhjZXB0IGluIHRoZSBjYXNl
IG9mIGEgZmlsZSBVUkwgd2l0aCBhdXRob3JpdHk9ImxvY2FsaG9zdCIKLSAgICAgICAgaWYgKCEo
aXNGaWxlICYmIGhvc3RJc0xvY2FsSG9zdCAmJiAhaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0KSkg
ewotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgaG9zdFN0YXJ0OwotICAgICAgICAgICAgY29u
c3QgY2hhciogaG9zdEVuZFB0ciA9IHVybCArIGhvc3RFbmQ7Ci0gICAgICAgICAgICBpZiAoaXND
YW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZUZvclNjaGVtZShidWZmZXIuZGF0YSgpLCBtX3NjaGVt
ZUVuZCkpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgewot
ICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSB0b0FTQ0lJTG93ZXIoKnN0clB0cisrKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzSG9zdG5hbWVDaGFyKGMpIHx8IGMgPT0gJ1snIHx8
IGMgPT0gJ10nIHx8IGMgPT0gJzonKTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB3
aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgewotICAgICAgICAgICAgICAgICAgICBjaGFyIGMg
PSAqc3RyUHRyKys7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3RuYW1lQ2hhcihj
KSB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAgICAgICAgICAg
ICAgICpwKysgPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBtX2hvc3RFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBD
b3B5IGluIHRoZSBwb3J0IGlmIHRoZSBVUkwgaGFzIG9uZSAoYW5kIGl0J3Mgbm90IGRlZmF1bHQp
LiBBbHNvLCBjb3B5IGl0IGlmIHRoZXJlIHdhcyBubyBob3N0bmFtZSwgc28gdGhhdCB0aGVyZSBp
cyBzdGlsbCBzb21ldGhpbmcgaW4gYXV0aG9yaXR5IGNvbXBvbmVudC4KLSAgICAgICAgaWYgKGhv
c3RFbmQgIT0gcG9ydFN0YXJ0KSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwb3J0U3RyID0g
dXJsICsgcG9ydFN0YXJ0OwotICAgICAgICAgICAgc2l6ZV90IHBvcnRMZW5ndGggPSBwb3J0RW5k
IC0gcG9ydFN0YXJ0OwotICAgICAgICAgICAgaWYgKChwb3J0TGVuZ3RoICYmICFpc0RlZmF1bHRQ
b3J0Rm9yU2NoZW1lKHBvcnRTdHIsIHBvcnRMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1l
RW5kKSkKLSAgICAgICAgICAgICAgICB8fCAoaG9zdFN0YXJ0ID09IGhvc3RFbmQgJiYgaG9zdEVu
ZCAhPSBwb3J0U3RhcnQpKSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICc6JzsKLSAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBwb3J0RW5kUHRyID0gdXJsICsgcG9ydEVuZDsKLSAgICAgICAg
ICAgICAgICB3aGlsZSAocG9ydFN0ciA8IHBvcnRFbmRQdHIpCi0gICAgICAgICAgICAgICAgICAg
ICpwKysgPSAqcG9ydFN0cisrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1f
cG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChp
c0ZpbGUpIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWdlbmVyYXRlRmlsZVBhdGgpOwotICAgICAg
ICAgICAgKnArKyA9ICcvJzsKLSAgICAgICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV91c2VyU3RhcnQgPSBtX3VzZXJFbmQgPSBtX3Bhc3N3b3JkRW5kID0gbV9ob3N0RW5k
ID0gbV9wb3J0RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0gICAgfQotCi0gICAgLy8gRm9yIGNh
bm9uaWNhbGl6YXRpb24sIGVuc3VyZSB3ZSBoYXZlIGEgJy8nIGZvciBubyBwYXRoLgotICAgIC8v
IERvIHRoaXMgb25seSBmb3IgVVJMIHdpdGggcHJvdG9jb2wgZmlsZSwgaHR0cCBvciBodHRwcy4K
LSAgICBpZiAoKG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSB8fCBpc0ZpbGUpICYmIHBhdGhFbmQg
PT0gcGF0aFN0YXJ0KQotICAgICAgICAqcCsrID0gJy8nOwotCi0gICAgLy8gYWRkIHBhdGgsIGVz
Y2FwaW5nIGJhZCBjaGFyYWN0ZXJzCi0gICAgaWYgKCFoaWVyYXJjaGljYWwpCi0gICAgICAgIGVz
Y2FwZUFuZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQocCwgdXJsICsgcGF0aFN0YXJ0LCBwYXRo
RW5kIC0gcGF0aFN0YXJ0KTsKLSAgICBlbHNlIGlmICghaGFzU2xhc2hEb3RPckRvdERvdCh1cmwp
KQotICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHBhdGhTdGFydCwgcGF0
aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENoYXJCdWZmZXIgcGF0aEJ1
ZmZlcihwYXRoRW5kIC0gcGF0aFN0YXJ0ICsgMSk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBj
b3B5UGF0aFJlbW92aW5nRG90cyhwYXRoQnVmZmVyLmRhdGEoKSwgdXJsLCBwYXRoU3RhcnQsIHBh
dGhFbmQpOwotICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHBhdGhCdWZmZXIuZGF0
YSgpLCBsZW5ndGgpOwotICAgIH0KLQotICAgIG1fcGF0aEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotCi0gICAgLy8gRmluZCB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3Qgc2xhc2ggaW4gdGhl
IHBhdGgsIG9yCi0gICAgLy8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgcGF0aCBpZiB0aGVyZSBh
cmUgbm8gc2xhc2hlcyBpbiBpdC4KLSAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSBtX3BhdGhFbmQ7
IGkgPiBtX3BvcnRFbmQ7IC0taSkgewotICAgICAgICBpZiAoYnVmZmVyW2kgLSAxXSA9PSAnLycp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBp
OwotCi0gICAgLy8gYWRkIHF1ZXJ5LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGFwcGVu
ZEVzY2FwaW5nQmFkQ2hhcnMocCwgdXJsICsgcXVlcnlTdGFydCwgcXVlcnlFbmQgLSBxdWVyeVN0
YXJ0KTsKLSAgICBtX3F1ZXJ5RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAvLyBhZGQg
ZnJhZ21lbnQsIGVzY2FwaW5nIGJhZCBjaGFyYWN0ZXJzCi0gICAgaWYgKGZyYWdtZW50RW5kICE9
IHF1ZXJ5RW5kKSB7Ci0gICAgICAgICpwKysgPSAnIyc7Ci0gICAgICAgIGVzY2FwZUFuZEFwcGVu
ZE5vbkhpZXJhcmNoaWNhbFBhcnQocCwgdXJsICsgZnJhZ21lbnRTdGFydCwgZnJhZ21lbnRFbmQg
LSBmcmFnbWVudFN0YXJ0KTsKLSAgICB9Ci0gICAgbV9mcmFnbWVudEVuZCA9IHAgLSBidWZmZXIu
ZGF0YSgpOwotCi0gICAgQVNTRVJUKHAgLSBidWZmZXIuZGF0YSgpIDw9IHN0YXRpY19jYXN0PGlu
dD4oYnVmZmVyLnNpemUoKSkpOwotICAgIEFTU0VSVChidWZmZXIuc2l6ZSgpID4gMCk7Ci0KLSAg
ICAvLyBJZiB3ZSBkaWRuJ3QgZW5kIHVwIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBvcmlnaW5hbCBz
dHJpbmcgYW5kCi0gICAgLy8gaXQgd2FzIGFscmVhZHkgaW4gYSBTdHJpbmcsIHJldXNlIGl0IHRv
IGF2b2lkIGV4dHJhIGFsbG9jYXRpb24uCi0gICAgaWYgKG9yaWdpbmFsU3RyaW5nICYmIGVxdWFs
KG9yaWdpbmFsU3RyaW5nLT5pbXBsKCksIGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpKQot
ICAgICAgICBtX3N0cmluZyA9ICpvcmlnaW5hbFN0cmluZzsKLSAgICBlbHNlCi0gICAgICAgIG1f
c3RyaW5nID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpOwotCi0gICAgbV9p
c1ZhbGlkID0gdHJ1ZTsKLX0KLQotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgaWYgKGEubV9xdWVyeUVuZCAh
PSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBxdWVy
eUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVl
cnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtp
XSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYg
YikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7Ci0gICAg
aW50IGhvc3RMZW5ndGhBID0gYS5ob3N0RW5kKCkgLSBob3N0U3RhcnRBOwotICAgIGludCBob3N0
U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICBpbnQgaG9zdExlbmd0aEIgPSBiLmhvc3RFbmQo
KSAtIGIuaG9zdFN0YXJ0KCk7Ci0gICAgaWYgKGhvc3RMZW5ndGhBICE9IGhvc3RMZW5ndGhCKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayB0aGUgc2NoZW1lCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBBbmQgdGhlIGhvc3QKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyAr
K2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygp
W2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChh
LnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgbm90RW5jb2RlZFN0cmluZykKLXsKLSAgICBDU3RyaW5nIGFzVVRGOCA9IG5vdEVuY29k
ZWRTdHJpbmcudXRmOCgpOwotCi0gICAgQ2hhckJ1ZmZlciBidWZmZXIoYXNVVEY4Lmxlbmd0aCgp
ICogMyArIDEpOwotICAgIGNoYXIqIHAgPSBidWZmZXIuZGF0YSgpOwotCi0gICAgY29uc3QgY2hh
ciogc3RyID0gYXNVVEY4LmRhdGEoKTsKLSAgICBjb25zdCBjaGFyKiBzdHJFbmQgPSBzdHIgKyBh
c1VURjgubGVuZ3RoKCk7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVuZCkgewotICAgICAgICB1bnNp
Z25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChpc0JhZENoYXIoYykpCi0gICAgICAg
ICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
KnArKyA9IGM7Ci0gICAgfQotCi0gICAgQVNTRVJUKHAgLSBidWZmZXIuZGF0YSgpIDw9IHN0YXRp
Y19jYXN0PGludD4oYnVmZmVyLnNpemUoKSkpOwotCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIu
ZGF0YSgpLCBwIC0gYnVmZmVyLmRhdGEoKSk7Ci19Ci0KLS8vIEFwcGVuZHMgdGhlIHB1bnljb2Rl
ZCBob3N0bmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxlbmd0aCB0bwot
Ly8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVsbCB0ZXJtaW5h
dGVkLgotc3RhdGljIHZvaWQgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFVDaGFyKiBzdHIsIHVuc2lnbmVkIHN0ckxlbikKLXsKLSAgICAvLyBOZWVkcyB0
byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3Ig
aG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdo
aWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVC
dWZmZXJMZW5ndGggPSAyMDQ4OwotCi0gICAgaWYgKHN0ckxlbiA+IGhvc3RuYW1lQnVmZmVyTGVu
Z3RoIHx8IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHIsIHN0ckxlbikpIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIHN0ckxlbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBV
U0UoSUNVX1VOSUNPREUpCi0gICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJM
ZW5ndGhdOwotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgaW50MzJf
dCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfSUROVG9BU0NJSShzdHIsIHN0ckxlbiwg
aG9zdG5hbWVCdWZmZXIsCi0gICAgICAgIGhvc3RuYW1lQnVmZmVyTGVuZ3RoLCBVSUROQV9BTExP
V19VTkFTU0lHTkVELCAwLCAmZXJyb3IpOwotICAgIGlmIChlcnJvciA9PSBVX1pFUk9fRVJST1Ip
Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VS
TChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiYg
bmFtZVJhbmdlcykKLXsKLSAgICAvLyBJbiBhIG1haWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUg
YWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIG9y
IGVuZCBvZiBzdHJpbmcgY2hhcmFjdGVyLgotICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28g
dGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KLSAgICAvLyBXaGVuIHdl
IGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRo
YXQgY29udGFpbnMgaG9zdCBuYW1lcy4KLQotICAgIG5hbWVSYW5nZXMuY2xlYXIoKTsKLQotICAg
IGludCBwID0gMDsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpbnQgaG9zdG5hbWVPclN0cmlu
Z1N0YXJ0ID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIHAsICJcIkA/Iik7Ci0gICAgICAgIGlm
IChob3N0bmFtZU9yU3RyaW5nU3RhcnQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIFVDaGFyIGMgPSBzdHJbaG9zdG5hbWVPclN0cmluZ1N0YXJ0XTsKLSAgICAgICAgcCA9IGhv
c3RuYW1lT3JTdHJpbmdTdGFydCArIDE7Ci0KLSAgICAgICAgaWYgKGMgPT0gJz8nKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAgICAgICAgLy8g
RmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgaW50IGhvc3RuYW1lU3RhcnQgPSBw
OwotICAgICAgICAgICAgaW50IGhvc3RuYW1lRW5kID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4s
IHAsICI+LD8iKTsKLSAgICAgICAgICAgIGJvb2wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0
bmFtZUVuZCA9PSAtMSkgewotICAgICAgICAgICAgICAgIGhvc3RuYW1lRW5kID0gc3RyTGVuOwot
ICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwID0gaG9zdG5hbWVFbmQ7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IGZhbHNl
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuYW1lUmFuZ2VzLmFwcGVuZChtYWtlX3Bh
aXIoaG9zdG5hbWVTdGFydCwgaG9zdG5hbWVFbmQpKTsKLQotICAgICAgICAgICAgaWYgKGRvbmUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAg
ICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgaW50IGVzY2FwZWRDaGFyYWN0
ZXJPclN0cmluZ0VuZCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiXCJcXCIpOwotICAg
ICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPT0gLTEpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGMgPSBzdHJbZXNjYXBl
ZENoYXJhY3Rlck9yU3RyaW5nRW5kXTsKLSAgICAgICAgICAgICAgICBwID0gZXNjYXBlZENoYXJh
Y3Rlck9yU3RyaW5nRW5kICsgMTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUg
ZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0
byB0aGUgaG9zdCBuYW1lIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBl
ZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHAgPT0gc3RyTGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXN0YXRpYyBib29sIGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKGNvbnN0IFVDaGFy
KiBzdHIsIGludCBzdHJMZW4sIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KQotewot
ICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0gICAgLy8g
SXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVycyBw
cmVjZWRpbmcsIGFuZAotICAgIC8vIHRoaXMgc2hvdWxkIGJlIHRoZSBmaXJzdCBjb2xvbiBpbiB0
aGUgc3RyaW5nLgotICAgIC8vIEl0IGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3Ig
YSAiOiIgb3IgYSBwYXRoIHNlZ21lbnQgZW5kaW5nIGNoYXJhY3Rlci4KLSAgICAvLyBJZiB0aGVy
ZSBpcyBhICJAIiBjaGFyYWN0ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBhZnRl
ciB0aGUgIkAiLgotICAgIGludCBzZXBhcmF0b3IgPSBmaW5kRmlyc3RPZihzdHIsIHN0ckxlbiwg
MCwgIjoiKTsKLSAgICBpZiAoc2VwYXJhdG9yID09IC0xIHx8IHNlcGFyYXRvciArIDIgPj0gc3Ry
TGVuIHx8Ci0gICAgICAgIHN0cltzZXBhcmF0b3IgKyAxXSAhPSAnLycgfHwgc3RyW3NlcGFyYXRv
ciArIDJdICE9ICcvJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhh
dCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNoYXJhY3Rl
cnMuCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcihzdHJbMF0pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzZXBhcmF0b3I7ICsraSkgewotICAgICAg
ICBpZiAoIWlzU2NoZW1lQ2hhcihzdHJbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0gICAgaW50IGF1dGhv
cml0eVN0YXJ0ID0gc2VwYXJhdG9yICsgMzsKLQotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hh
cmFjdGVyLgotICAgIGludCBob3N0bmFtZUVuZCA9IHN0ckxlbjsKLSAgICBmb3IgKGludCBpID0g
YXV0aG9yaXR5U3RhcnQ7IGkgPCBzdHJMZW47ICsraSkgewotICAgICAgICBVQ2hhciBjID0gc3Ry
W2ldOwotICAgICAgICBpZiAoYyA9PSAnOicgfHwgKGlzUGF0aFNlZ21lbnRFbmRDaGFyKGMpICYm
IGMgIT0gMCkpIHsKLSAgICAgICAgICAgIGhvc3RuYW1lRW5kID0gaTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBv
ZiB0aGUgaG9zdCBuYW1lLgotICAgIGludCB1c2VySW5mb1Rlcm1pbmF0b3IgPSBmaW5kRmlyc3RP
ZihzdHIsIHN0ckxlbiwgYXV0aG9yaXR5U3RhcnQsICJAIik7Ci0gICAgaW50IGhvc3RuYW1lU3Rh
cnQ7Ci0gICAgaWYgKHVzZXJJbmZvVGVybWluYXRvciA9PSAtMSB8fCB1c2VySW5mb1Rlcm1pbmF0
b3IgPiBob3N0bmFtZUVuZCkKLSAgICAgICAgaG9zdG5hbWVTdGFydCA9IGF1dGhvcml0eVN0YXJ0
OwotICAgIGVsc2UKLSAgICAgICAgaG9zdG5hbWVTdGFydCA9IHVzZXJJbmZvVGVybWluYXRvciAr
IDE7Ci0KLSAgICBzdGFydE9mZnNldCA9IGhvc3RuYW1lU3RhcnQ7Ci0gICAgZW5kT2Zmc2V0ID0g
aG9zdG5hbWVFbmQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIENvbnZlcnRzIGFsbCBob3N0
bmFtZXMgZm91bmQgaW4gdGhlIGdpdmVuIGlucHV0IHRvIHB1bnljb2RlLCBwcmVzZXJ2aW5nIHRo
ZQotLy8gcmVzdCBvZiB0aGUgVVJMIHVuY2hhbmdlZC4gVGhlIG91dHB1dCB3aWxsIE5PVCBiZSBu
dWxsLXRlcm1pbmF0ZWQuCi1zdGF0aWMgdm9pZCBlbmNvZGVIb3N0bmFtZXMoY29uc3QgU3RyaW5n
JiBzdHIsIFVDaGFyQnVmZmVyJiBvdXRwdXQpCi17Ci0gICAgb3V0cHV0LmNsZWFyKCk7Ci0KLSAg
ICBpZiAocHJvdG9jb2xJcyhzdHIsICJtYWlsdG8iKSkgewotICAgICAgICBWZWN0b3I8cGFpcjxp
bnQsIGludD4gPiBob3N0bmFtZVJhbmdlczsKLSAgICAgICAgZmluZEhvc3RuYW1lc0luTWFpbFRv
VVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdG5hbWVSYW5nZXMpOwotICAg
ICAgICBpbnQgbiA9IGhvc3RuYW1lUmFuZ2VzLnNpemUoKTsKLSAgICAgICAgaW50IHAgPSAwOwot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgY29uc3Qg
cGFpcjxpbnQsIGludD4mIHIgPSBob3N0bmFtZVJhbmdlc1tpXTsKLSAgICAgICAgICAgIG91dHB1
dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJzKClbcF0sIHIuZmlyc3QgLSBwKTsKLSAgICAgICAgICAg
IGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW3IuZmlyc3Rd
LCByLnNlY29uZCAtIHIuZmlyc3QpOwotICAgICAgICAgICAgcCA9IHIuc2Vjb25kOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBjb3B5IGVpdGhlciBldmVyeXRoaW5nIGFmdGVyIHRo
ZSBsYXN0IGhvc3RuYW1lLCBvciB0aGUKLSAgICAgICAgLy8gd2hvbGUgdGhpbmcgaWYgdGhlcmUg
aXMgbm8gaG9zdG5hbWUuCi0gICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJzKClb
cF0sIHN0ci5sZW5ndGgoKSAtIHApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBob3N0U3Rh
cnQsIGhvc3RFbmQ7Ci0gICAgICAgIGlmIChmaW5kSG9zdG5hbWVJbkhpZXJhcmNoaWNhbFVSTChz
dHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3RTdGFydCwgaG9zdEVuZCkpIHsKLSAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgaG9zdFN0YXJ0KTsgLy8g
QmVmb3JlIGhvc3RuYW1lLgotICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKG91dHB1
dCwgJnN0ci5jaGFyYWN0ZXJzKClbaG9zdFN0YXJ0XSwgaG9zdEVuZCAtIGhvc3RTdGFydCk7Ci0g
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW2hvc3RFbmRdLCBzdHIu
bGVuZ3RoKCkgLSBob3N0RW5kKTsgLy8gQWZ0ZXIgaG9zdG5hbWUuCi0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBObyBob3N0bmFtZSB0byBlbmNvZGUsIHJldHVybiB0aGUgaW5wdXQu
Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGVuY29kZVJlbGF0aXZlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmVsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBDaGFy
QnVmZmVyJiBvdXRwdXQpCi17Ci0gICAgVUNoYXJCdWZmZXIgczsKLSAgICBlbmNvZGVIb3N0bmFt
ZXMocmVsLCBzKTsKLQotICAgIFRleHRFbmNvZGluZyBwYXRoRW5jb2RpbmcoVVRGOEVuY29kaW5n
KCkpOyAvLyBQYXRoIGlzIGFsd2F5cyBlbmNvZGVkIGFzIFVURi04OyBvdGhlciBwYXJ0cyBtYXkg
ZGVwZW5kIG9uIHRoZSBzY2hlbWUuCi0KLSAgICBpbnQgcGF0aEVuZCA9IC0xOwotICAgIGlmIChl
bmNvZGluZyAhPSBwYXRoRW5jb2RpbmcgJiYgZW5jb2RpbmcuaXNWYWxpZCgpICYmICFwcm90b2Nv
bElzKHJlbCwgIm1haWx0byIpICYmICFwcm90b2NvbElzKHJlbCwgImRhdGEiKSAmJiAhcHJvdG9j
b2xJc0phdmFTY3JpcHQocmVsKSkgewotICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBpbnN0YW5j
ZSBvZiBlaXRoZXIgIyBvciA/LCBrZWVwIHBhdGhFbmQgYXQgLTEgb3RoZXJ3aXNlLgotICAgICAg
ICBwYXRoRW5kID0gZmluZEZpcnN0T2Yocy5kYXRhKCksIHMuc2l6ZSgpLCAwLCAiIz8iKTsKLSAg
ICB9Ci0KLSAgICBpZiAocGF0aEVuZCA9PSAtMSkgewotICAgICAgICBDU3RyaW5nIGRlY29kZWQg
PSBwYXRoRW5jb2RpbmcuZW5jb2RlKHMuZGF0YSgpLCBzLnNpemUoKSwgVVJMRW5jb2RlZEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICAgICAgb3V0cHV0LnJlc2l6ZShkZWNvZGVkLmxlbmd0
aCgpKTsKLSAgICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCksIGRlY29kZWQuZGF0YSgpLCBkZWNv
ZGVkLmxlbmd0aCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBDU3RyaW5nIHBhdGhEZWNvZGVk
ID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwgcGF0aEVuZCwgVVJMRW5jb2RlZEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICAgICAgLy8gVW5lbmNvZGFibGUgY2hhcmFjdGVycyBp
biBVUkxzIGFyZSByZXByZXNlbnRlZCBieSBjb252ZXJ0aW5nCi0gICAgICAgIC8vIHRoZW0gdG8g
WE1MIGVudGl0aWVzIGFuZCBlc2NhcGluZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuCi0g
ICAgICAgIENTdHJpbmcgb3RoZXJEZWNvZGVkID0gZW5jb2RpbmcuZW5jb2RlKHMuZGF0YSgpICsg
cGF0aEVuZCwgcy5zaXplKCkgLSBwYXRoRW5kLCBVUkxFbmNvZGVkRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOwotCi0gICAgICAgIG91dHB1dC5yZXNpemUocGF0aERlY29kZWQubGVuZ3RoKCkgKyBv
dGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSwgcGF0
aERlY29kZWQuZGF0YSgpLCBwYXRoRGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweShv
dXRwdXQuZGF0YSgpICsgcGF0aERlY29kZWQubGVuZ3RoKCksIG90aGVyRGVjb2RlZC5kYXRhKCks
IG90aGVyRGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgfQotICAgIG91dHB1dC5hcHBlbmQoJ1wwJyk7
IC8vIG51bGwtdGVybWluYXRlIHRoZSBvdXRwdXQuCi19Ci0KLXN0YXRpYyBTdHJpbmcgc3Vic3Rp
dHV0ZUJhY2tzbGFzaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHNpemVfdCBxdWVz
dGlvblBvcyA9IHN0cmluZy5maW5kKCc/Jyk7Ci0gICAgc2l6ZV90IGhhc2hQb3MgPSBzdHJpbmcu
ZmluZCgnIycpOwotICAgIHVuc2lnbmVkIHBhdGhFbmQ7Ci0KLSAgICBpZiAoaGFzaFBvcyAhPSBu
b3RGb3VuZCAmJiAocXVlc3Rpb25Qb3MgPT0gbm90Rm91bmQgfHwgcXVlc3Rpb25Qb3MgPiBoYXNo
UG9zKSkKLSAgICAgICAgcGF0aEVuZCA9IGhhc2hQb3M7Ci0gICAgZWxzZSBpZiAocXVlc3Rpb25Q
b3MgIT0gbm90Rm91bmQpCi0gICAgICAgIHBhdGhFbmQgPSBxdWVzdGlvblBvczsKLSAgICBlbHNl
Ci0gICAgICAgIHBhdGhFbmQgPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICByZXR1cm4gc3RyaW5n
LmxlZnQocGF0aEVuZCkucmVwbGFjZSgnXFwnLCcvJykgKyBzdHJpbmcuc3Vic3RyaW5nKHBhdGhF
bmQpOwotfQotCi1ib29sIEtVUkw6OmlzSGllcmFyY2hpY2FsKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChtX3N0cmluZ1tt
X3NjaGVtZUVuZF0gPT0gJzonKTsKLSAgICByZXR1cm4gbV9zdHJpbmdbbV9zY2hlbWVFbmQgKyAx
XSA9PSAnLyc7Ci19Ci0KLXZvaWQgS1VSTDo6Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+
JiBidWZmZXIpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhp
Z2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmchCi0gICAgLy8gVGhh
dCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJMLCB3aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9y
IGludmFsaWQgVVJMcy4KLSAgICBidWZmZXIucmVzaXplKG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwotfQotCi1ib29sIHByb3RvY29s
SXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIC8vIERv
IHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwotICAgIGZvciAoaW50IGkgPSAwOyA7ICsr
aSkgewotICAgICAgICBpZiAoIXByb3RvY29sW2ldKQotICAgICAgICAgICAgcmV0dXJuIHVybFtp
XSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbaV0s
IHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWJv
b2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCi17Ci0gICAgLy8gUkZD
Mzk4NjogQUxQSEEgKiggQUxQSEEgLyBESUdJVCAvICIrIiAvICItIiAvICIuIiApCi0gICAgaWYg
KHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNT
Y2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoIWlz
U2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWZuZGVmIE5ERUJVRwotdm9pZCBLVVJMOjpwcmlu
dCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Ci19Ci0jZW5kaWYKLQotU3RyaW5nIEtVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNv
bnN0Ci17Ci0gICAgS1VSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihT
dHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygp
OwotfQotCi1ib29sIEtVUkw6OmlzTG9jYWxGaWxlKCkgY29uc3QKLXsKLSAgICAvLyBJbmNsdWRp
bmcgZmVlZCBoZXJlIG1pZ2h0IGJlIGEgYmFkIGlkZWEgc2luY2UgZHJhZyBhbmQgZHJvcCB1c2Vz
IHRoaXMgY2hlY2sKLSAgICAvLyBhbmQgaW5jbHVkaW5nIGZlZWQgd291bGQgYWxsb3cgZmVlZHMg
dG8gcG90ZW50aWFsbHkgbGV0IHNvbWVvbmUncyBibG9nCi0gICAgLy8gcmVhZCB0aGUgY29udGVu
dHMgb2YgdGhlIGNsaXBib2FyZCBvbiBhIGRyYWcsIGV2ZW4gd2l0aG91dCBhIGRyb3AuCi0gICAg
Ly8gTGlrZXdpc2Ugd2l0aCB1c2luZyB0aGUgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNM
b2NhbCgpIGZ1bmN0aW9uLgotICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7Ci19Ci0KLWJv
b2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgcmV0dXJu
IHByb3RvY29sSXModXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1jb25zdCBLVVJMJiBibGFua1VS
TCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBzdGF0aWNCbGFua1VSTCwgKFBh
cnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIikpOwotICAgIHJldHVybiBzdGF0aWNCbGFua1VS
TDsKLX0KLQotYm9vbCBLVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5z
aWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBpZiAocHJv
dG9jb2wuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZCwgQ2FzZUZvbGRpbmdIYXNoPiBEZWZhdWx0UG9ydHNNYXA7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChEZWZhdWx0UG9ydHNNYXAsIGRlZmF1bHRQb3J0cywg
KCkpOwotICAgIGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRlZmF1bHRQ
b3J0cy5zZXQoImh0dHAiLCA4MCk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHBzIiwg
NDQzKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwIiwgMjEpOwotICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJmdHBzIiwgOTkwKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRQb3J0
cy5nZXQocHJvdG9jb2wpID09IHBvcnQ7Ci19Ci0KLWJvb2wgcG9ydEFsbG93ZWQoY29uc3QgS1VS
TCYgdXJsKQotewotICAgIHVuc2lnbmVkIHNob3J0IHBvcnQgPSB1cmwucG9ydCgpOwotCi0gICAg
Ly8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRo
ZSAibm8gcG9ydCIgY2FzZS4KLSAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5n
IHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgotICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEu
b3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9u
LgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBibG9ja2VkUG9ydExpc3RbXSA9IHsK
LSAgICAgICAgMSwgICAgLy8gdGNwbXV4Ci0gICAgICAgIDcsICAgIC8vIGVjaG8KLSAgICAgICAg
OSwgICAgLy8gZGlzY2FyZAotICAgICAgICAxMSwgICAvLyBzeXN0YXQKLSAgICAgICAgMTMsICAg
Ly8gZGF5dGltZQotICAgICAgICAxNSwgICAvLyBuZXRzdGF0Ci0gICAgICAgIDE3LCAgIC8vIHFv
dGQKLSAgICAgICAgMTksICAgLy8gY2hhcmdlbgotICAgICAgICAyMCwgICAvLyBGVFAtZGF0YQot
ICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAotICAgICAgICAyMiwgICAvLyBTU0gKLSAgICAg
ICAgMjMsICAgLy8gdGVsbmV0Ci0gICAgICAgIDI1LCAgIC8vIFNNVFAKLSAgICAgICAgMzcsICAg
Ly8gdGltZQotICAgICAgICA0MiwgICAvLyBuYW1lCi0gICAgICAgIDQzLCAgIC8vIG5pY25hbWUK
LSAgICAgICAgNTMsICAgLy8gZG9tYWluCi0gICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCi0gICAg
ICAgIDc5LCAgIC8vIGZpbmdlcgotICAgICAgICA4NywgICAvLyB0dHlsaW5rCi0gICAgICAgIDk1
LCAgIC8vIHN1cGR1cAotICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKLSAgICAgICAgMTAyLCAg
Ly8gaXNvLXRzYXAKLSAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAotICAgICAgICAxMDQsICAvLyBh
Y3ItbmVtYQotICAgICAgICAxMDksICAvLyBQT1AyCi0gICAgICAgIDExMCwgIC8vIFBPUDMKLSAg
ICAgICAgMTExLCAgLy8gc3VucnBjCi0gICAgICAgIDExMywgIC8vIGF1dGgKLSAgICAgICAgMTE1
LCAgLy8gU0ZUUAotICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKLSAgICAgICAgMTE5LCAgLy8g
bm50cAotICAgICAgICAxMjMsICAvLyBOVFAKLSAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAvIGVw
bWFwCi0gICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKLSAgICAgICAgMTQzLCAgLy8gSU1BUDIKLSAg
ICAgICAgMTc5LCAgLy8gQkdQCi0gICAgICAgIDM4OSwgIC8vIExEQVAKLSAgICAgICAgNDY1LCAg
Ly8gU01UUCtTU0wKLSAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCi0gICAgICAgIDUxMywg
IC8vIGxvZ2luCi0gICAgICAgIDUxNCwgIC8vIHNoZWxsCi0gICAgICAgIDUxNSwgIC8vIHByaW50
ZXIKLSAgICAgICAgNTI2LCAgLy8gdGVtcG8KLSAgICAgICAgNTMwLCAgLy8gY291cmllcgotICAg
ICAgICA1MzEsICAvLyBDaGF0Ci0gICAgICAgIDUzMiwgIC8vIG5ldG5ld3MKLSAgICAgICAgNTQw
LCAgLy8gVVVDUAotICAgICAgICA1NTYsICAvLyByZW1vdGVmcwotICAgICAgICA1NjMsICAvLyBO
TlRQK1NTTAotICAgICAgICA1ODcsICAvLyBFU01UUAotICAgICAgICA2MDEsICAvLyBzeXNsb2ct
Y29ubgotICAgICAgICA2MzYsICAvLyBMREFQK1NTTAotICAgICAgICA5OTMsICAvLyBJTUFQK1NT
TAotICAgICAgICA5OTUsICAvLyBQT1AzK1NTTAotICAgICAgICAyMDQ5LCAvLyBORlMKLSAgICAg
ICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBhc3N3b3JkU2VydmVyIFtBcHBsZSBhZGRpdGlvbl0K
LSAgICAgICAgNDA0NSwgLy8gbG9ja2QKLSAgICAgICAgNjAwMCwgLy8gWDExCi0gICAgICAgIDY2
NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY2LCAvLyBB
bHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBw
bGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52
YWxpZCBwb3J0IG51bWJlcnMKLSAgICB9OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25z
dCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBXVEZfQVJSQVlfTEVOR1RI
KGJsb2NrZWRQb3J0TGlzdCk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgLy8gVGhlIHBvcnQgbGlz
dCBtdXN0IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0byB3b3JrLgotICAgIHN0YXRpYyBi
b29sIGNoZWNrZWRQb3J0TGlzdCA9IGZhbHNlOwotICAgIGlmICghY2hlY2tlZFBvcnRMaXN0KSB7
Ci0gICAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAgPSBibG9ja2VkUG9ydExpc3Q7
IHAgIT0gYmxvY2tlZFBvcnRMaXN0RW5kIC0gMTsgKytwKQotICAgICAgICAgICAgQVNTRVJUKCpw
IDwgKihwICsgMSkpOwotICAgICAgICBjaGVja2VkUG9ydExpc3QgPSB0cnVlOwotICAgIH0KLSNl
bmRpZgotCi0gICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlz
dCwgYWxsb3cgaXQuCi0gICAgaWYgKCFiaW5hcnlfc2VhcmNoKGJsb2NrZWRQb3J0TGlzdCwgYmxv
Y2tlZFBvcnRMaXN0RW5kLCBwb3J0KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBB
bGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCi0gICAg
aWYgKChwb3J0ID09IDIxIHx8IHBvcnQgPT0gMjIpICYmIHVybC5wcm90b2NvbElzKCJmdHAiKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBbGxvdyBhbnkgcG9ydCBudW1iZXIgaW4g
YSBmaWxlIFVSTCwgc2luY2UgdGhlIHBvcnQgbnVtYmVyIGlzIGlnbm9yZWQuCi0gICAgaWYgKHVy
bC5wcm90b2NvbElzKCJmaWxlIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKLSAgICBpZiAodXJsLnByb3RvY29sSXMoImxvY2FsIikpCi0gICAgICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90
b2NvbElzKHVybCwgImRhdGEiKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gdXJsLmZpbmQoJzsnKTsK
LSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywn
KTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgaWYgKGluZGV4ID4gNSkK
LSAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkubG93ZXIoKTsK
LSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsgLy8gRGF0YSBVUkxzIHdpdGggbm8gTUlNRSB0
eXBlIGFyZSBjb25zaWRlcmVkIHRleHQvcGxhaW4uCi0gICAgfQotICAgIHJldHVybiAiIjsKLX0K
LQotU3RyaW5nIG1pbWVUeXBlRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgU3RyaW5n
IGRlY29kZWRQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwotICAg
IFN0cmluZyBleHRlbnNpb24gPSBkZWNvZGVkUGF0aC5zdWJzdHJpbmcoZGVjb2RlZFBhdGgucmV2
ZXJzZUZpbmQoJy4nKSArIDEpOwotCi0gICAgLy8gV2UgZG9uJ3QgdXNlIE1JTUVUeXBlUmVnaXN0
cnk6OmdldE1JTUVUeXBlRm9yUGF0aCgpIGJlY2F1c2UgaXQgcmV0dXJucyAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIiB1cG9uIGZhaWx1cmUKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKLX0KLQotYm9vbCBLVVJMOjppc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5p
c1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsKLX0KLQotU3RyaW5nIEtVUkw6OnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYg
KHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwot
Ci0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJp
bmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRhOWU2NWMwOTJkZDE3ZjMwMDdkMmNhNmNm
MmRlNWJhODNhMDJjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgS1VSTF9oCi0jZGVmaW5lIEtVUkxfaAotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIFVTRShD
RikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOwotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShRVCkKLVFUX0JFR0lOX05BTUVTUEFDRQotY2xhc3MgUVVybDsKLVFUX0VORF9OQU1FU1BBQ0UK
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRleHRFbmNvZGluZzsKLXN0
cnVjdCBLVVJMSGFzaDsKLQotZW51bSBQYXJzZWRVUkxTdHJpbmdUYWcgeyBQYXJzZWRVUkxTdHJp
bmcgfTsKLQotY2xhc3MgS1VSTCB7Ci1wdWJsaWM6Ci0gICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdo
aWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCi0gICAgS1VSTCgpIHsgaW52YWxpZGF0ZSgpOyB9
Ci0KLSAgICAvLyBUaGUgYXJndW1lbnQgaXMgYW4gYWJzb2x1dGUgVVJMIHN0cmluZy4gVGhlIHN0
cmluZyBpcyBhc3N1bWVkIHRvIGJlIG91dHB1dCBvZiBLVVJMOjpzdHJpbmcoKSBjYWxsZWQgb24g
YSB2YWxpZAotICAgIC8vIEtVUkwgb2JqZWN0LCBvciBpbmRpc2Nlcm5pYmxlIGZyb20gc3VjaC4K
LSAgICAvLyBJdCBpcyB1c3VhbGx5IGJlc3QgdG8gYXZvaWQgcmVwZWF0ZWRseSBwYXJzaW5nIGEg
c3RyaW5nLCB1bmxlc3MgbWVtb3J5IHNhdmluZyBvdXR3ZWlnaCB0aGUgcG9zc2libGUgc2xvdy1k
b3ducy4KLSAgICBLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJik7Ci0gICAg
ZXhwbGljaXQgS1VSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmco
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Ci0KLSAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVu
IGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCi0gICAgLy8gVGV4dEVuY29kaW5nIGlzIHVzZWQg
dG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAv
LyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBp
bnRlcnByZXRlZCBhcwotICAgIC8vIGFic29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFz
ZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8g
VVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZh
bGlkIGJhc2UgVVJMcwotICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1w
dHkgYmFzZSBVUkxzLgotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSk7Ci0gICAgS1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNo
b3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxs
IG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8v
IHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5
LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgS1VSTCBvbiBhbm90aGVyCi0gICAg
Ly8gdGhyZWFkLiAgU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBp
bW11dGFibGUsIHRoZXJlJ3MKLSAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIg
Y29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgS1VSTCBjb3B5KCkgY29uc3Q7
Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owot
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBj
YW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMLgotICAgIC8vIE5vbi1oaWVyYXJj
aGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KLSAgICBib29sIGNhblNldEhv
c3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0KLSAgICBib29s
IGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotICAg
IGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQotICAgIFN0cmluZyBzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBT
dHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIHNob3J0IHBvcnQoKSBjb25zdDsKLSAgICBib29sIGhhc1BvcnQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgdXNlcigpIGNvbnN0OwotICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsK
LSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLQotICAg
IFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHBy
b3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQotICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkg
YXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgYm9vbCBwcm90
b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwotICAgIGJv
b2wgaXNCbGFua1VSTCgpIGNvbnN0OwotCi0gICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHJlbW92
ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwotCi0gICAgLy8gSW5w
dXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBzZXRIb3N0
QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBJZiB5b3UgcGFz
cyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0
aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsK
LQotICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBp
ZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCi0gICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVl
cnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQotICAgIC8vIFVS
TCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVs
bCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQg
c2V0RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21l
bnRJZGVudGlmaWVyKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci0KLSAgICBmcmllbmQgYm9v
bCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsK
LQotICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGhvc3RFbmQo
KSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IHBhdGhFbmQoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25z
dDsKLQotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmco
KTsgfQotCi0jaWYgVVNFKENGKQotICAgIEtVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIEtVUkwoTlNVUkwqKTsKLSAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKLSNlbmRp
ZgotI2lmZGVmIF9fT0JKQ19fCi0gICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCk7IH0KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgS1VSTChjb25z
dCBRVXJsJik7Ci0gICAgb3BlcmF0b3IgUVVybCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBjb25z
dCBLVVJMKiBpbm5lclVSTCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQotI2lmbmRlZiBOREVCVUcK
LSAgICB2b2lkIHByaW50KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbnZhbGlkYXRl
KCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFy
Kik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0
RW5jb2RpbmcmKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVm
ZmVyKSBjb25zdDsKLQotICAgIC8vIFBhcnNlcyB0aGUgZ2l2ZW4gVVJMLiBUaGUgb3JpZ2luYWxT
dHJpbmcgcGFyYW1ldGVyIGFsbG93cyBmb3IgYW4KLSAgICAvLyBvcHRpbWl6YXRpb246IFdoZW4g
dGhlIHNvdXJjZSBpcyB0aGUgc2FtZSBhcyB0aGUgZml4ZWQtdXAgc3RyaW5nLAotICAgIC8vIGl0
IHdpbGwgdXNlIHRoZSBwYXNzZWQtaW4gc3RyaW5nIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5l
dyBvbmUuCi0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNv
bnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZyA9IDApOwotCi0gICAg
Ym9vbCBoYXNQYXRoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgYm9vbCBt
X2lzVmFsaWQgOiAxOwotICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLQot
ICAgIGludCBtX3NjaGVtZUVuZDsKLSAgICBpbnQgbV91c2VyU3RhcnQ7Ci0gICAgaW50IG1fdXNl
ckVuZDsKLSAgICBpbnQgbV9wYXNzd29yZEVuZDsKLSAgICBpbnQgbV9ob3N0RW5kOwotICAgIGlu
dCBtX3BvcnRFbmQ7Ci0gICAgaW50IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgIGludCBtX3Bh
dGhFbmQ7Ci0gICAgaW50IG1fcXVlcnlFbmQ7Ci0gICAgaW50IG1fZnJhZ21lbnRFbmQ7Ci19Owot
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0
b3I9PShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nJiwgY29uc3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwot
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLQotYm9vbCBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci1i
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYp
OwotCi1jb25zdCBLVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9w
ZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0
IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJv
bSB0aGUgS1VSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmlu
ZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJp
bHkgY29uc2lkZXJlZCB2YWxpZCBieSBLVVJMLgotCi1ib29sIHByb3RvY29sSXMoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29uc3QgU3RyaW5nJiB1cmwpOwotCi1ib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1
bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLWJvb2wgcG9ydEFs
bG93ZWQoY29uc3QgS1VSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIg
YmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KLQotYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3QgS1VSTCYpOwotCi0vLyBVbmVzY2FwZXMg
dGhlIGdpdmVuIHN0cmluZyB1c2luZyBVUkwgZXNjYXBpbmcgcnVsZXMsIGdpdmVuIGFuIG9wdGlv
bmFsCi0vLyBlbmNvZGluZyAoZGVmYXVsdGluZyB0byBVVEYtOCBvdGhlcndpc2UpLiBEQU5HRVI6
IElmIHRoZSBVUkwgaGFzICIlMDAiCi0vLyBpbiBpdCwgdGhlIHJlc3VsdGluZyBzdHJpbmcgd2ls
bCBoYXZlIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycyEKLVN0cmluZyBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwotCi1TdHJpbmcgZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQotewotICAg
IHJldHVybiBhLnN0cmluZygpID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0
cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBLVVJMJiBiKQotewotICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAg
ICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcoKSAhPSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwotfQotCi0v
LyBJbmxpbmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBj
YW4gZ2V0IGlubGluaW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkg
aWZkZWZzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgotCi1pbmxpbmUgYm9vbCBLVVJMOjppc051
bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5l
IGJvb2wgS1VSTDo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1w
dHkoKTsKLX0KLQotaW5saW5lIGJvb2wgS1VSTDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faXNWYWxpZDsKLX0KLQotaW5saW5lIGJvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX3BvcnRFbmQ7Ci19Ci0KLWlubGluZSBib29sIEtV
Ukw6Omhhc1BvcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgPCBtX3BvcnRFbmQ7
Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7Ci19Ci0KLWlubGluZSB1bnNp
Z25lZCBLVVJMOjpob3N0U3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiAobV9wYXNzd29yZEVu
ZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBLVVJMOjpob3N0RW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9ob3N0RW5kOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6cGF0aFN0YXJ0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6cGF0
aEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZDsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIEtVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFj
ZSBXVEYgewotCi0gICAgLy8gS1VSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5n
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OktVUkw+IHsKLSAgICAgICAgdHlwZWRl
ZiBXZWJDb3JlOjpLVVJMSGFzaCBIYXNoOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgot
Ci0jZW5kaWYgLy8gS1VSTF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjFkZDEzYjJhYzkzYzgzNDE2MTg3Y2EyNjNkZjg5ODQ2NmFk
Mzk5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEtVUkxIYXNoX2gKLSNkZWZpbmUgS1VSTEhhc2hfaAotCi0jaW5jbHVkZSAiS1VSTC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IEtVUkxIYXNoIHsK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS1VSTCYga2V5KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS1VSTCYgYSwgY29uc3QgS1VS
TCYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEu
c3RyaW5nKCksIGIuc3RyaW5nKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi0gICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpLVVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxXZWJDb3JlOjpLVVJMPiB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8g
S1VSTEhhc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCmluZGV4IDI1NzNmNjM1
M2ZiMGZiNjFhMGVhYWNmYTM2OWQwNWJlYTYwZWMyYTkuLjJiMmVlMjAwODBjMGU4Mjc3YTA5Y2Yy
NjNjNDQ5YzFkNjEzNzJlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xp
bmtIYXNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAKQEAg
LTIyLDcgKzIyLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgpAQCAtMjI2LDEzICsyMjYsMTMgQEAgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVD
aGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgNTEyPiYgYnVmZmVyKQorc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQ2hh
cmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8Q2hhcmFjdGVy
VHlwZSwgNTEyPiYgYnVmZmVyKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGlzIGlzIGEgcG9vciBtYW4ncyBjb21wbGV0ZVVSTC4gRmFzdGVyIHdpdGgg
bGVzcyBtZW1vcnkgYWxsb2NhdGlvbi4KLSAgICAvLyBGSVhNRTogSXQncyBtaXNzaW5nIGEgbG90
IG9mIHdoYXQgY29tcGxldGVVUkwgZG9lcyBhbmQgYSBsb3Qgb2Ygd2hhdCBLVVJMIGRvZXMuCisg
ICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMg
YW5kIGEgbG90IG9mIHdoYXQgVVJMIGRvZXMuCiAgICAgLy8gRm9yIGV4YW1wbGUsIGl0IGRvZXMg
bm90IGhhbmRsZSBpbnRlcm5hdGlvbmFsIGRvbWFpbiBuYW1lcyBwcm9wZXJseS4KIAogICAgIC8v
IEZJWE1FOiBJdCBpcyB3cm9uZyB0aGF0IHdlIGRvIG5vdCBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcg
b24gc3RyaW5ncyB0aGF0IGhhdmUgIjovLyIgaW4gdGhlbToKQEAgLTI4NCwxMiArMjg0LDEyIEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRlZFVSTElubGluZShjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBDaGFyYWN0ZXJUeXBlCiAgICAgcmV0dXJuOwogfQogCi12b2lkIHZpc2l0ZWRV
UkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZl
Y3RvcjxVQ2hhciwgNTEyPiYgYnVmZmVyKQordm9pZCB2aXNpdGVkVVJMKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYg
YnVmZmVyKQogewogICAgIHJldHVybiB2aXNpdGVkVVJMSW5saW5lKGJhc2UsIGF0dHJpYnV0ZVVS
TC5jaGFyYWN0ZXJzKCksIGF0dHJpYnV0ZVVSTC5sZW5ndGgoKSwgYnVmZmVyKTsKIH0KIAotTGlu
a0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKQorTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgaWYgKGF0dHJpYnV0
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtI
YXNoLmgKaW5kZXggNzhlYWEzYTQzYzZjMmFiOWUwNGIwNjI4YzkwNmJkZTllMDdlYWYyMi4uMjli
Y2ZlMGFlMDAyNDZkYWE5YTI5YWUzMzk2MjBhNmUzNWY4YzRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MaW5rSGFzaC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIApA
QCAtNjEsMTIgKzYxLDEyIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciog
dXJsLCB1bnNpZ25lZCBsZW5ndGgpOwogLy8gYmFzZSBVUkwsIGFuZCByZXR1cm5zIHRoZSBoYXNo
IG9mIHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHZpc2l0ZWQKIC8vIGxpbmsgY29s
b3JpbmcuIEl0IHdpbGwgcmV0dXJuIHRoZSBzcGVjaWFsIHZhbHVlIG9mIDAgaWYgYXR0cmlidXRl
VVJMIGRvZXMgbm90CiAvLyBsb29rIGxpa2UgYSByZWxhdGl2ZSBVUkwuCi1MaW5rSGFzaCB2aXNp
dGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOworTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVSTCYgYmFzZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogCiAvLyBSZXNvbHZlcyB0aGUgcG90ZW50aWFs
bHkgcmVsYXRpdmUgVVJMICJhdHRyaWJ1dGVVUkwiIHJlbGF0aXZlIHRvIHRoZSBnaXZlbgogLy8g
YmFzZSBVUkwsIGFuZCByZXR1cm5zIHRoZSBoYXNoIG9mIHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJl
IHVzZWQgZm9yIHZpc2l0ZWQuCiAvLyBJdCB3aWxsIHJldHVybiBhbiBlbXB0eSBWZWN0b3IgaW4g
Y2FzZSBvZiBlcnJvcnMuCi12b2lkIHZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYpOwordm9pZCB2
aXNpdGVkVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYpOwogCiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2UyNzdjZTE1MzUwMjNkZmZlNDA3
YmRhNjQwZDEzYTllNzQ2YzRlYS4uODkyMTFmMGM2MjVmMzYzZDExNzAwZDczYjQyZTdhNzY0ZWJk
ZjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjgsNyArMjgsNyBA
QAogCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
ODYsNyArODYsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogfTsKIAogc3RydWN0
IFBhc3RlYm9hcmRVUkwgewotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgU3RyaW5n
IHRpdGxlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBTdHJpbmcg
dXNlclZpc2libGVGb3JtOwpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURkQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRSVEYoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYg
dHlwZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogfTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKFdJTikKLSAgICB2b2lkIHdyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KKyAgICB2b2lkIHdy
aXRlSW1hZ2UoTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCA9IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlKTsgLy8gRklYTUU6IExh
eWVyaW5nIHZpb2xhdGlvbi4KICNlbmRpZgogCkBAIC0yMTAsOSArMjEwLDkgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKFdJTikKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KICAgICB2b2lkIHNldEV4dGVybmFsRGF0YU9i
amVjdChJRGF0YU9iamVjdCopOwotICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB3cml0ZVVSTFRvV3JpdGFi
bGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwogICAgIENPTVB0cjxXQ0Rh
dGFPYmplY3Q+IHdyaXRhYmxlRGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVE
YXRhT2JqZWN0OyB9Ci0gICAgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqLCBj
b25zdCBLVVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCisgICAgdm9pZCB3cml0
ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqLCBjb25zdCBVUkwmKTsgLy8gRklYTUU6IExheWVy
aW5nIHZpb2xhdGlvbi4KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjQwLDcgKzI0MCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW5nUGFzdGVib2FyZCgpOwogICAgIHZvaWQg
d3JpdGVSYW5nZVRvRGF0YU9iamVjdChSYW5nZSosIEZyYW1lKik7IC8vIEZJWE1FOiBMYXllcmlu
ZyB2aW9sYXRpb24uCi0gICAgdm9pZCB3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0VG9EYXRhT2JqZWN0KGNv
bnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA4MTVjM2Y5ODA1MjVmMzg2
ZWE4ZjQxMWYzMmQ2YjdmMWMzNzg1MTBhLi5iZmYxNmM4NTBkNWI0MDA1OGNkOTRmNjFkMjJkMzhl
YTUxMTdmNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAgICAgCiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRl
Z3kgewogcHVibGljOgpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBsb25n
IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgS1VSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgVVJMIHVybChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCBsb25nIGFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAppbmRleCAyMzYyNTUzNzk3ZGVlYTJlNGM2MWNlOTU0Mjg4ZDI5YjQ4NDgxM2JkLi5kZDY4Njc5
MzY5NjRmNTA4YmEyODA4MGFmZjM0N2M3YTk2MTgzZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDMsNyArNDMsNyBAQCBPQkpDX0NMQVNT
IFVJUGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGlj
OgpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgbG9uZyBjaGFuZ2VDb3VudCgpIGNvbnN0
OwogICAgIENvbG9yIGNvbG9yKCk7Ci0gICAgS1VSTCB1cmwoKTsKKyAgICBVUkwgdXJsKCk7CiAK
ICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCwgYW5kIHJldHVybiBuZXcg
Y2hhbmdlIGNvdW50LgogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xL
ZXlHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5o
CmluZGV4IDA2NTE1MjYwNTU4ODhiMTg5OGI0MGMwMDUxMTA3NWY5MjU1MmZiOTguLmRmNjhiZmU3
ZWY2NDg3YWZkODQxYmE0YWNlZGU3ZjY4OTExOTM0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NTTEtleUdlbmVyYXRvci5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAgICAgLy8gUmV0dXJu
cyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogICAgIC8v
IGZvciB0aGUgPGtleWdlbj4gdGFnLiBUaGUgZmlyc3Qgc3RyaW5nIGlzIGRpc3BsYXllZCBhcyB0
aGUgZGVmYXVsdApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSA8a2V5Z2VuPiB0YWcgaW4gZm9ybSBlbGVtZW50cy4K
ICAgICAvLyBSZXR1cm5zIGEgc2lnbmVkIGNvcHkgb2YgdGhlIGNvbWJpbmVkIGNoYWxsZW5nZSBz
dHJpbmcgYW5kIHB1YmxpYwogICAgIC8vIGtleSAoZnJvbSBhIG5ld2x5IGdlbmVyYXRlZCBrZXkg
cGFpcikuCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBL
VVJMJik7CisgICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBV
UkwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOTYxMzdmYzNjN2I1YmRlNzM1NzY1ZDUzZmFmZjExNmUwNTJiZTAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtMCwwICsx
LDE5MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTEsIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworI2luY2x1ZGUgIkRlY29kZUVz
Y2FwZVNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
I2lmIFVTRShJQ1VfVU5JQ09ERSkKKyNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjZW5kaWYK
KworLy8gRklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2YgdGhlICsgb3BlcmF0
b3Igb24gU3RyaW5nLgorLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUgdGhhdCBvcGVyYXRv
ciBzbyBpdCBkb2Vzbid0IGludm9sdmUKKy8vIHNvIG1hbnkgYWxsb2NhdGlvbnMsIG9yIGNoYW5n
ZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KKwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwordHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUx
Mj4gVUNoYXJCdWZmZXI7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtVmFsaWRQb3J0
TnVtYmVyID0gMHhGRkZFOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludmFsaWRQb3J0TnVtYmVy
ID0gMHhGRkZGOworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZShVQ2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQoreworICAgIEFTU0VSVChp
c0FTQ0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7CisgICAgcmV0dXJuIChjaGFyYWN0ZXIgfCAw
eDIwKSA9PSBsb3dlcmNhc2VMZXR0ZXI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIHdzU2NoZW1l
W10gPSB7J3cnLCAncyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZnRwU2NoZW1lW10gPSB7J2YnLCAn
dCcsICdwJ307CitzdGF0aWMgY29uc3QgY2hhciBmdHBQb3J0W10gPSB7JzInLCAnMSd9Oworc3Rh
dGljIGNvbnN0IGNoYXIgd3NzU2NoZW1lW10gPSB7J3cnLCAncycsICdzJ307CitzdGF0aWMgY29u
c3QgY2hhciBmaWxlU2NoZW1lW10gPSB7J2YnLCAnaScsICdsJywgJ2UnfTsKK3N0YXRpYyBjb25z
dCBjaGFyIGh0dHBTY2hlbWVbXSA9IHsnaCcsICd0JywgJ3QnLCAncCd9Oworc3RhdGljIGNvbnN0
IGNoYXIgaHR0cFBvcnRbXSA9IHsnOCcsICcwJ307CitzdGF0aWMgY29uc3QgY2hhciBodHRwc1Nj
aGVtZVtdID0geydoJywgJ3QnLCAndCcsICdwJywgJ3MnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGh0
dHBzUG9ydFtdID0geyc0JywgJzQnLCAnMyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyU2No
ZW1lW10gPSB7J2cnLCAnbycsICdwJywgJ2gnLCAnZScsICdyJ307CitzdGF0aWMgY29uc3QgY2hh
ciBnb3BoZXJQb3J0W10gPSB7JzcnLCAnMCd9OworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNoYXJhY3RlciwgY2hhciBsb3dlcmNhc2VMZXR0ZXIp
Cit7CisgICAgQVNTRVJUKGlzQVNDSUlMb3dlcihsb3dlcmNhc2VMZXR0ZXIpKTsKKyAgICByZXR1
cm4gKGNoYXJhY3RlciB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKK30KKworZW51bSBVUkxD
aGFyYWN0ZXJDbGFzc2VzIHsKKyAgICAvLyBhbHBoYSAKKyAgICBTY2hlbWVGaXJzdENoYXIgPSAx
IDw8IDAsCisKKyAgICAvLyAoIGFscGhhIHwgZGlnaXQgfCAiKyIgfCAiLSIgfCAiLiIgKQorICAg
IFNjaGVtZUNoYXIgPSAxIDw8IDEsCisKKyAgICAvLyBtYXJrICAgICAgICA9ICItIiB8ICJfIiB8
ICIuIiB8ICIhIiB8ICJ+IiB8ICIqIiB8ICInIiB8ICIoIiB8ICIpIgorICAgIC8vIHVucmVzZXJ2
ZWQgID0gYWxwaGFudW0gfCBtYXJrCisgICAgLy8gKCB1bnJlc2VydmVkIHwgZXNjYXBlZCB8ICI7
IiB8ICI6IiB8ICImIiB8ICI9IiB8ICIrIiB8ICIkIiB8ICIsIiApCisgICAgVXNlckluZm9DaGFy
ID0gMSA8PCAyLAorCisgICAgLy8gYWxudW0gfCAiLiIgfCAiLSIgfCAiJSIKKyAgICAvLyBUaGUg
YWJvdmUgaXMgd2hhdCB0aGUgc3BlY2lmaWNhdGlvbiBzYXlzLCBidXQgd2UgYXJlIGxlbmllbnQg
dG8KKyAgICAvLyBtYXRjaCBleGlzdGluZyBwcmFjdGljZSBhbmQgYWxzbyBhbGxvdzoKKyAgICAv
LyAiXyIKKyAgICBIb3N0bmFtZUNoYXIgPSAxIDw8IDMsCisKKyAgICAvLyBoZXhkaWdpdCB8ICI6
IiB8ICIlIgorICAgIElQdjZDaGFyID0gMSA8PCA0LAorCisgICAgLy8gIiMiIHwgIj8iIHwgIi8i
IHwgbnVsCisgICAgUGF0aFNlZ21lbnRFbmRDaGFyID0gMSA8PCA1LAorCisgICAgLy8gbm90IGFs
bG93ZWQgaW4gcGF0aAorICAgIEJhZENoYXIgPSAxIDw8IDYKK307CisKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKKyAgICAvKiAwIG51bCAq
LyBQYXRoU2VnbWVudEVuZENoYXIsICAgIC8qIDEgc29oICovIEJhZENoYXIsCisgICAgLyogMiBz
dHggKi8gQmFkQ2hhciwgICAgLyogMyBldHggKi8gQmFkQ2hhciwKKyAgICAvKiA0IGVvdCAqLyBC
YWRDaGFyLCAgICAvKiA1IGVucSAqLyBCYWRDaGFyLCAgICAvKiA2IGFjayAqLyBCYWRDaGFyLCAg
ICAvKiA3IGJlbCAqLyBCYWRDaGFyLAorICAgIC8qIDggYnMgKi8gQmFkQ2hhciwgICAgIC8qIDkg
aHQgKi8gQmFkQ2hhciwgICAgIC8qIDEwIG5sICovIEJhZENoYXIsICAgIC8qIDExIHZ0ICovIEJh
ZENoYXIsCisgICAgLyogMTIgbnAgKi8gQmFkQ2hhciwgICAgLyogMTMgY3IgKi8gQmFkQ2hhciwg
ICAgLyogMTQgc28gKi8gQmFkQ2hhciwgICAgLyogMTUgc2kgKi8gQmFkQ2hhciwKKyAgICAvKiAx
NiBkbGUgKi8gQmFkQ2hhciwgICAvKiAxNyBkYzEgKi8gQmFkQ2hhciwgICAvKiAxOCBkYzIgKi8g
QmFkQ2hhciwgICAvKiAxOSBkYzMgKi8gQmFkQ2hhciwKKyAgICAvKiAyMCBkYzQgKi8gQmFkQ2hh
ciwgICAvKiAyMSBuYWsgKi8gQmFkQ2hhciwgICAvKiAyMiBzeW4gKi8gQmFkQ2hhciwgICAvKiAy
MyBldGIgKi8gQmFkQ2hhciwKKyAgICAvKiAyNCBjYW4gKi8gQmFkQ2hhciwgICAvKiAyNSBlbSAq
LyBCYWRDaGFyLCAgICAvKiAyNiBzdWIgKi8gQmFkQ2hhciwgICAvKiAyNyBlc2MgKi8gQmFkQ2hh
ciwKKyAgICAvKiAyOCBmcyAqLyBCYWRDaGFyLCAgICAvKiAyOSBncyAqLyBCYWRDaGFyLCAgICAv
KiAzMCBycyAqLyBCYWRDaGFyLCAgICAvKiAzMSB1cyAqLyBCYWRDaGFyLAorICAgIC8qIDMyIHNw
ICovIEJhZENoYXIsICAgIC8qIDMzICAhICovIFVzZXJJbmZvQ2hhciwKKyAgICAvKiAzNCAgIiAq
LyBCYWRDaGFyLCAgICAvKiAzNSAgIyAqLyBQYXRoU2VnbWVudEVuZENoYXIgfCBCYWRDaGFyLAor
ICAgIC8qIDM2ICAkICovIFVzZXJJbmZvQ2hhciwgICAgLyogMzcgICUgKi8gVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIgfCBCYWRDaGFyLAorICAgIC8qIDM4ICAmICovIFVz
ZXJJbmZvQ2hhciwgICAgLyogMzkgICcgKi8gVXNlckluZm9DaGFyLAorICAgIC8qIDQwICAoICov
IFVzZXJJbmZvQ2hhciwgICAgLyogNDEgICkgKi8gVXNlckluZm9DaGFyLAorICAgIC8qIDQyICAq
ICovIFVzZXJJbmZvQ2hhciwgICAgLyogNDMgICsgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciwKKyAgICAvKiA0NCAgLCAqLyBVc2VySW5mb0NoYXIsCisgICAgLyogNDUgIC0gKi8gU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA0NiAgLiAqLyBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyog
NDcgIC8gKi8gUGF0aFNlZ21lbnRFbmRDaGFyLAorICAgIC8qIDQ4ICAwICovIFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCisgICAgLyogNDkgIDEg
Ki8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAg
ICAKKyAgICAvKiA1MCAgMiAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDUxICAzICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiA1MiAgNCAqLyBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDUzICA1
ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
KyAgICAvKiA1NCAgNiAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
IHwgSVB2NkNoYXIsIAorICAgIC8qIDU1ICA3ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiA1NiAgOCAqLyBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDU3ICA5ICov
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAg
ICAvKiA1OCAgOiAqLyBVc2VySW5mb0NoYXIgfCBJUHY2Q2hhciwgICAgLyogNTkgIDsgKi8gVXNl
ckluZm9DaGFyLAorICAgIC8qIDYwICA8ICovIEJhZENoYXIsICAgIC8qIDYxICA9ICovIFVzZXJJ
bmZvQ2hhciwKKyAgICAvKiA2MiAgPiAqLyBCYWRDaGFyLCAgICAvKiA2MyAgPyAqLyBQYXRoU2Vn
bWVudEVuZENoYXIgfCBCYWRDaGFyLAorICAgIC8qIDY0ICBAICovIDAsCisgICAgLyogNjUgIEEg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IElQdjZDaGFyLCAgICAKKyAgICAvKiA2NiAgQiAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAg
LyogNjcgIEMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAgIC8qIDY4ICBEICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
KyAgICAvKiA2OSAgRSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogNzAgIEYgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAorICAgIC8qIDcxICBHICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzIgIEggKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA3MyAg
SSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAorICAgIC8qIDc0ICBKICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzUgIEsgKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA3
NiAgTCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLAorICAgIC8qIDc3ICBNICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzggIE4gKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAv
KiA3OSAgTyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAorICAgIC8qIDgwICBQICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODEgIFEgKi8gU2NoZW1l
Rmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAg
ICAvKiA4MiAgUiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDgzICBTICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODQgIFQgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
KyAgICAvKiA4NSAgVSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDg2ICBWICovIFNjaGVtZUZpcnN0Q2hhciB8IFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODcgIFcgKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKKyAgICAvKiA4OCAgWCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiA4OSAgWSAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDkwICBa
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsCisgICAgLyogOTEgIFsgKi8gMCwKKyAgICAvKiA5MiAgXCAqLyAwLCAgICAvKiA5MyAg
XSAqLyAwLAorICAgIC8qIDk0ICBeICovIDAsCisgICAgLyogOTUgIF8gKi8gVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDk2ICBgICovIDAsCisgICAgLyogOTcgIGEgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8
IElQdjZDaGFyLAorICAgIC8qIDk4ICBiICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCisgICAgLyogOTkgIGMg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IElQdjZDaGFyLAorICAgIC8qIDEwMCAgZCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8q
IDEwMSAgZSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogMTAyICBmICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwg
CisgICAgLyogMTAzICBnICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogMTA0ICBoICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEwNSAg
aSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAorICAgIC8qIDEwNiAgaiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMDcgIGsgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAv
KiAxMDggIGwgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTA5ICBtICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogMTEwICBuICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
IAorICAgIC8qIDExMSAgbyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDExMiAgcCAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMTMg
IHEgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwKKyAgICAvKiAxMTQgIHIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTE1ICBzICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAg
LyogMTE2ICB0ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDExNyAgdSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDExOCAgdiAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LCAKKyAgICAvKiAxMTkgIHcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiAxMjAgIHggKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTIx
ICB5ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsCisgICAgLyogMTIyICB6ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEyMyAgeyAqLyAwLAorICAg
IC8qIDEyNCAgfCAqLyAwLCAgIC8qIDEyNSAgfSAqLyAwLCAgIC8qIDEyNiAgfiAqLyBVc2VySW5m
b0NoYXIsICAgLyogMTI3IGRlbCAqLyBCYWRDaGFyLAorICAgIC8qIDEyOCAqLyBCYWRDaGFyLCAv
KiAxMjkgKi8gQmFkQ2hhciwgLyogMTMwICovIEJhZENoYXIsIC8qIDEzMSAqLyBCYWRDaGFyLAor
ICAgIC8qIDEzMiAqLyBCYWRDaGFyLCAvKiAxMzMgKi8gQmFkQ2hhciwgLyogMTM0ICovIEJhZENo
YXIsIC8qIDEzNSAqLyBCYWRDaGFyLAorICAgIC8qIDEzNiAqLyBCYWRDaGFyLCAvKiAxMzcgKi8g
QmFkQ2hhciwgLyogMTM4ICovIEJhZENoYXIsIC8qIDEzOSAqLyBCYWRDaGFyLAorICAgIC8qIDE0
MCAqLyBCYWRDaGFyLCAvKiAxNDEgKi8gQmFkQ2hhciwgLyogMTQyICovIEJhZENoYXIsIC8qIDE0
MyAqLyBCYWRDaGFyLAorICAgIC8qIDE0NCAqLyBCYWRDaGFyLCAvKiAxNDUgKi8gQmFkQ2hhciwg
LyogMTQ2ICovIEJhZENoYXIsIC8qIDE0NyAqLyBCYWRDaGFyLAorICAgIC8qIDE0OCAqLyBCYWRD
aGFyLCAvKiAxNDkgKi8gQmFkQ2hhciwgLyogMTUwICovIEJhZENoYXIsIC8qIDE1MSAqLyBCYWRD
aGFyLAorICAgIC8qIDE1MiAqLyBCYWRDaGFyLCAvKiAxNTMgKi8gQmFkQ2hhciwgLyogMTU0ICov
IEJhZENoYXIsIC8qIDE1NSAqLyBCYWRDaGFyLAorICAgIC8qIDE1NiAqLyBCYWRDaGFyLCAvKiAx
NTcgKi8gQmFkQ2hhciwgLyogMTU4ICovIEJhZENoYXIsIC8qIDE1OSAqLyBCYWRDaGFyLAorICAg
IC8qIDE2MCAqLyBCYWRDaGFyLCAvKiAxNjEgKi8gQmFkQ2hhciwgLyogMTYyICovIEJhZENoYXIs
IC8qIDE2MyAqLyBCYWRDaGFyLAorICAgIC8qIDE2NCAqLyBCYWRDaGFyLCAvKiAxNjUgKi8gQmFk
Q2hhciwgLyogMTY2ICovIEJhZENoYXIsIC8qIDE2NyAqLyBCYWRDaGFyLAorICAgIC8qIDE2OCAq
LyBCYWRDaGFyLCAvKiAxNjkgKi8gQmFkQ2hhciwgLyogMTcwICovIEJhZENoYXIsIC8qIDE3MSAq
LyBCYWRDaGFyLAorICAgIC8qIDE3MiAqLyBCYWRDaGFyLCAvKiAxNzMgKi8gQmFkQ2hhciwgLyog
MTc0ICovIEJhZENoYXIsIC8qIDE3NSAqLyBCYWRDaGFyLAorICAgIC8qIDE3NiAqLyBCYWRDaGFy
LCAvKiAxNzcgKi8gQmFkQ2hhciwgLyogMTc4ICovIEJhZENoYXIsIC8qIDE3OSAqLyBCYWRDaGFy
LAorICAgIC8qIDE4MCAqLyBCYWRDaGFyLCAvKiAxODEgKi8gQmFkQ2hhciwgLyogMTgyICovIEJh
ZENoYXIsIC8qIDE4MyAqLyBCYWRDaGFyLAorICAgIC8qIDE4NCAqLyBCYWRDaGFyLCAvKiAxODUg
Ki8gQmFkQ2hhciwgLyogMTg2ICovIEJhZENoYXIsIC8qIDE4NyAqLyBCYWRDaGFyLAorICAgIC8q
IDE4OCAqLyBCYWRDaGFyLCAvKiAxODkgKi8gQmFkQ2hhciwgLyogMTkwICovIEJhZENoYXIsIC8q
IDE5MSAqLyBCYWRDaGFyLAorICAgIC8qIDE5MiAqLyBCYWRDaGFyLCAvKiAxOTMgKi8gQmFkQ2hh
ciwgLyogMTk0ICovIEJhZENoYXIsIC8qIDE5NSAqLyBCYWRDaGFyLAorICAgIC8qIDE5NiAqLyBC
YWRDaGFyLCAvKiAxOTcgKi8gQmFkQ2hhciwgLyogMTk4ICovIEJhZENoYXIsIC8qIDE5OSAqLyBC
YWRDaGFyLAorICAgIC8qIDIwMCAqLyBCYWRDaGFyLCAvKiAyMDEgKi8gQmFkQ2hhciwgLyogMjAy
ICovIEJhZENoYXIsIC8qIDIwMyAqLyBCYWRDaGFyLAorICAgIC8qIDIwNCAqLyBCYWRDaGFyLCAv
KiAyMDUgKi8gQmFkQ2hhciwgLyogMjA2ICovIEJhZENoYXIsIC8qIDIwNyAqLyBCYWRDaGFyLAor
ICAgIC8qIDIwOCAqLyBCYWRDaGFyLCAvKiAyMDkgKi8gQmFkQ2hhciwgLyogMjEwICovIEJhZENo
YXIsIC8qIDIxMSAqLyBCYWRDaGFyLAorICAgIC8qIDIxMiAqLyBCYWRDaGFyLCAvKiAyMTMgKi8g
QmFkQ2hhciwgLyogMjE0ICovIEJhZENoYXIsIC8qIDIxNSAqLyBCYWRDaGFyLAorICAgIC8qIDIx
NiAqLyBCYWRDaGFyLCAvKiAyMTcgKi8gQmFkQ2hhciwgLyogMjE4ICovIEJhZENoYXIsIC8qIDIx
OSAqLyBCYWRDaGFyLAorICAgIC8qIDIyMCAqLyBCYWRDaGFyLCAvKiAyMjEgKi8gQmFkQ2hhciwg
LyogMjIyICovIEJhZENoYXIsIC8qIDIyMyAqLyBCYWRDaGFyLAorICAgIC8qIDIyNCAqLyBCYWRD
aGFyLCAvKiAyMjUgKi8gQmFkQ2hhciwgLyogMjI2ICovIEJhZENoYXIsIC8qIDIyNyAqLyBCYWRD
aGFyLAorICAgIC8qIDIyOCAqLyBCYWRDaGFyLCAvKiAyMjkgKi8gQmFkQ2hhciwgLyogMjMwICov
IEJhZENoYXIsIC8qIDIzMSAqLyBCYWRDaGFyLAorICAgIC8qIDIzMiAqLyBCYWRDaGFyLCAvKiAy
MzMgKi8gQmFkQ2hhciwgLyogMjM0ICovIEJhZENoYXIsIC8qIDIzNSAqLyBCYWRDaGFyLAorICAg
IC8qIDIzNiAqLyBCYWRDaGFyLCAvKiAyMzcgKi8gQmFkQ2hhciwgLyogMjM4ICovIEJhZENoYXIs
IC8qIDIzOSAqLyBCYWRDaGFyLAorICAgIC8qIDI0MCAqLyBCYWRDaGFyLCAvKiAyNDEgKi8gQmFk
Q2hhciwgLyogMjQyICovIEJhZENoYXIsIC8qIDI0MyAqLyBCYWRDaGFyLAorICAgIC8qIDI0NCAq
LyBCYWRDaGFyLCAvKiAyNDUgKi8gQmFkQ2hhciwgLyogMjQ2ICovIEJhZENoYXIsIC8qIDI0NyAq
LyBCYWRDaGFyLAorICAgIC8qIDI0OCAqLyBCYWRDaGFyLCAvKiAyNDkgKi8gQmFkQ2hhciwgLyog
MjUwICovIEJhZENoYXIsIC8qIDI1MSAqLyBCYWRDaGFyLAorICAgIC8qIDI1MiAqLyBCYWRDaGFy
LCAvKiAyNTMgKi8gQmFkQ2hhciwgLyogMjU0ICovIEJhZENoYXIsIC8qIDI1NSAqLyBCYWRDaGFy
Cit9OworCitzdGF0aWMgaW50IGNvcHlQYXRoUmVtb3ZpbmdEb3RzKGNoYXIqIGRzdCwgY29uc3Qg
Y2hhciogc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNFbmQpOworc3RhdGljIHZvaWQgZW5jb2Rl
UmVsYXRpdmVTdHJpbmcoY29uc3QgU3RyaW5nJiByZWwsIGNvbnN0IFRleHRFbmNvZGluZyYsIENo
YXJCdWZmZXImIG91cHV0KTsKK3N0YXRpYyBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tzbGFzaGVzKGNv
bnN0IFN0cmluZyYpOworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVGaXJzdENoYXIoY2hh
ciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGMpXSAmIFNjaGVtZUZpcnN0Q2hhcjsgfQorc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1l
Rmlyc3RDaGFyKFVDaGFyIGMpIHsgcmV0dXJuIGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjXSAmIFNjaGVtZUZpcnN0Q2hhcik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVt
ZUNoYXIoY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW3N0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGMpXSAmIFNjaGVtZUNoYXI7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Nj
aGVtZUNoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1Rh
YmxlW2NdICYgU2NoZW1lQ2hhcik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1VzZXJJbmZvQ2hh
cih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBVc2Vy
SW5mb0NoYXI7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0hvc3RuYW1lQ2hhcih1bnNpZ25lZCBj
aGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBIb3N0bmFtZUNoYXI7IH0K
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0lQdjZDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4g
Y2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIElQdjZDaGFyOyB9CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNQYXRoU2VnbWVudEVuZENoYXIoY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxl
W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXSAmIFBhdGhTZWdtZW50RW5kQ2hhcjsgfQor
c3RhdGljIGlubGluZSBib29sIGlzUGF0aFNlZ21lbnRFbmRDaGFyKFVDaGFyIGMpIHsgcmV0dXJu
IGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFBhdGhTZWdtZW50RW5kQ2hh
cik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0JhZENoYXIodW5zaWduZWQgY2hhciBjKSB7IHJl
dHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgQmFkQ2hhcjsgfQorICAgIAorc3RhdGljIGlu
bGluZSBib29sIGlzU2NoZW1lQ2hhcmFjdGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhciBjaGFyYWN0
ZXIsIGNoYXIgc2NoZW1lQ2hhcmFjdGVyKQoreworICAgIEFTU0VSVChpc1NjaGVtZUNoYXIoY2hh
cmFjdGVyKSk7CisgICAgQVNTRVJUKHNjaGVtZUNoYXJhY3RlciAmIDB4MjApOworICAgIEFTU0VS
VChpc0FTQ0lJTG93ZXIoc2NoZW1lQ2hhcmFjdGVyKSB8fCAoIWlzQVNDSUlVcHBlcihzY2hlbWVD
aGFyYWN0ZXIpICYmIGlzU2NoZW1lQ2hhcihzY2hlbWVDaGFyYWN0ZXIpKSk7CisgICAgcmV0dXJu
IChjaGFyYWN0ZXIgfCAweDIwKSA9PSBzY2hlbWVDaGFyYWN0ZXI7Cit9CisKKy8vIENvcGllcyB0
aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hh
cmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFy
Z2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBzb3VyY2Ug
c3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1
bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNo
YXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kQVNDSUkoY29uc3QgU3RyaW5nJiBiYXNlLCBj
b25zdCBjaGFyKiByZWwsIHNpemVfdCBsZW4sIENoYXJCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBi
dWZmZXIucmVzaXplKGJhc2UubGVuZ3RoKCkgKyBsZW4gKyAxKTsKKyAgICBjb3B5QVNDSUkoYmFz
ZSwgYnVmZmVyLmRhdGEoKSk7CisgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCkgKyBiYXNlLmxlbmd0
aCgpLCByZWwsIGxlbik7CisgICAgYnVmZmVyW2J1ZmZlci5zaXplKCkgLSAxXSA9ICdcMCc7Cit9
CisKKy8vIEZJWE1FOiBNb3ZlIHRvIFdURlN0cmluZy5oIGV2ZW50dWFsbHkuCisvLyBSZXR1cm5z
IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgaW5kZXggaW4gc3RyaW5nIHxzfCBvZiBhbnkgb2YgdGhl
IGNoYXJhY3RlcnMKKy8vIGluIHx0b0ZpbmR8LiB8dG9GaW5kfCBzaG91bGQgYmUgYSBudWxsLXRl
cm1pbmF0ZWQgc3RyaW5nLCBhbGwgY2hhcmFjdGVycyB1cAorLy8gdG8gdGhlIG51bGwgd2lsbCBi
ZSBzZWFyY2hlZC4gUmV0dXJucyBpbnQgaWYgbm90IGZvdW5kLgorc3RhdGljIGludCBmaW5kRmly
c3RPZihjb25zdCBVQ2hhciogcywgaW50IHNMZW4sIGludCBzdGFydFBvcywgY29uc3QgY2hhciog
dG9GaW5kKQoreworICAgIGZvciAoaW50IGkgPSBzdGFydFBvczsgaSA8IHNMZW47IGkrKykgewor
ICAgICAgICBjb25zdCBjaGFyKiBjdXIgPSB0b0ZpbmQ7CisgICAgICAgIHdoaWxlICgqY3VyKSB7
CisgICAgICAgICAgICBpZiAoc1tpXSA9PSAqKGN1cisrKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBjaGVja0VuY29kZWRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNT
RVJUX1VOVVNFRCh1cmwsIHVybC5jb250YWluc09ubHlBU0NJSSgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHVybCwgdXJsLmlzRW1wdHkoKSB8fCBpc1NjaGVtZUZpcnN0Q2hhcih1cmxbMF0pKTsKK30K
KworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhzdHJp
bmcsIHByb3RvY29sKTsKK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNW
YWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAg
IG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0g
MDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9y
dEVuZCA9IDA7CisgICAgbV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9
IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7CisgICAgbV9mcmFnbWVudEVuZCA9IDA7Cit9CisKK1VS
TDo6VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcGFy
c2UodXJsKTsKKyAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKK30KKworVVJMOjpVUkwoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQoreworICAgIGluaXQoYmFzZSwg
cmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKK30KKworVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQor
eworICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhl
IHF1ZXJ5IHBhcnQgYXMgCisgICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS4gQSBm
b3JtIHdpdGggR0VUIG1ldGhvZAorICAgIC8vIGhhcyBpdHMgY29udGVudHMgYWRkZWQgdG8gYSBV
UkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQorICAgIC8vIHRvIGJlIGNvbnNp
c3RlbnQuCisgICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3Jt
U3VibWlzc2lvbigpKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwodW5zaWdu
ZWQgY2hhciBjKQoreworICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wKKyAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUg
dGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCisgICAgLy8gc28gdGhpcyBjb21wYXJp
c29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4gYyA8
PSAnICc7Cit9CisKK3ZvaWQgVVJMOjppbml0KGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKK3sKKyAgICAvLyBBbGxv
dyByZXNvbHV0aW9ucyB3aXRoIGEgbnVsbCBvciBlbXB0eSBiYXNlIFVSTCwgYnV0IG5vdCB3aXRo
IGFueSBvdGhlciBpbnZhbGlkIG9uZS4KKyAgICAvLyBGSVhNRTogSXMgdGhpcyBhIGdvb2QgcnVs
ZT8KKyAgICBpZiAoIWJhc2UubV9pc1ZhbGlkICYmICFiYXNlLmlzRW1wdHkoKSkgeworICAgICAg
ICBtX3N0cmluZyA9IHJlbGF0aXZlOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbiBJRSwgdHJl
YXQgYmFja3NsYXNoZXMgYXMgaWYgdGhleSB3ZXJlIHNsYXNoZXMsCisgICAgLy8gYXMgbG9uZyBh
cyB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGphdmFzY3JpcHQ6IG9yIGRhdGE6IFVSTHMuCisgICAg
U3RyaW5nIHJlbCA9IHJlbGF0aXZlOworICAgIGlmIChyZWwuY29udGFpbnMoJ1xcJykgJiYgIShw
cm90b2NvbElzSmF2YVNjcmlwdChyZWwpIHx8IHByb3RvY29sSXMocmVsLCAiZGF0YSIpKSkKKyAg
ICAgICAgcmVsID0gc3Vic3RpdHV0ZUJhY2tzbGFzaGVzKHJlbCk7CisKKyAgICBib29sIGFsbEFT
Q0lJID0gcmVsLmNvbnRhaW5zT25seUFTQ0lJKCk7CisgICAgQ2hhckJ1ZmZlciBzdHJCdWZmZXI7
CisgICAgY2hhciogc3RyOworICAgIHNpemVfdCBsZW47CisgICAgaWYgKGFsbEFTQ0lJKSB7Cisg
ICAgICAgIGxlbiA9IHJlbC5sZW5ndGgoKTsKKyAgICAgICAgc3RyQnVmZmVyLnJlc2l6ZShsZW4g
KyAxKTsKKyAgICAgICAgY29weUFTQ0lJKHJlbCwgc3RyQnVmZmVyLmRhdGEoKSk7CisgICAgICAg
IHN0ckJ1ZmZlcltsZW5dID0gMDsKKyAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBlbmNvZGVSZWxhdGl2ZVN0cmluZyhyZWwsIGVuY29kaW5nLCBz
dHJCdWZmZXIpOworICAgICAgICBzdHIgPSBzdHJCdWZmZXIuZGF0YSgpOworICAgICAgICBsZW4g
PSBzdHJsZW4oc3RyKTsKKyAgICB9CisKKyAgICAvLyBHZXQgcmlkIG9mIGxlYWRpbmcgd2hpdGVz
cGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHdoaWxlIChsZW4gJiYgc2hvdWxkVHJp
bUZyb21VUkwoKnN0cikpIHsKKyAgICAgICAgc3RyKys7CisgICAgICAgIC0tbGVuOworICAgIH0K
KworICAgIC8vIEdldCByaWQgb2YgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHdoaWxlIChsZW4gJiYgc2hvdWxkVHJpbUZyb21VUkwoc3RyW2xlbiAtIDFd
KSkKKyAgICAgICAgc3RyWy0tbGVuXSA9ICdcMCc7CisKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IFJGQywgdGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYW4KKyAgICAvLyBh
YnNvbHV0ZSBVUkkgaWYgcG9zc2libGUsIHVzaW5nIHRoZSAibGVmdG1vc3QsIGxvbmdlc3QiCisg
ICAgLy8gYWxnb3JpdGhtLiBJZiB0aGUgVVJJIHJlZmVyZW5jZSBpcyBhYnNvbHV0ZSBpdCB3aWxs
IGhhdmUgYQorICAgIC8vIHNjaGVtZSwgbWVhbmluZyB0aGF0IGl0IHdpbGwgaGF2ZSBhIGNvbG9u
IGJlZm9yZSB0aGUgZmlyc3QKKyAgICAvLyBub24tc2NoZW1lIGVsZW1lbnQuCisgICAgYm9vbCBh
YnNvbHV0ZSA9IGZhbHNlOworICAgIGNoYXIqIHAgPSBzdHI7CisgICAgaWYgKGlzU2NoZW1lRmly
c3RDaGFyKCpwKSkgeworICAgICAgICArK3A7CisgICAgICAgIHdoaWxlIChpc1NjaGVtZUNoYXIo
KnApKSB7CisgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpwID09ICc6
JykgeworICAgICAgICAgICAgaWYgKHBbMV0gIT0gJy8nICYmIGVxdWFsSWdub3JpbmdDYXNlKGJh
c2UucHJvdG9jb2woKSwgU3RyaW5nKHN0ciwgcCAtIHN0cikpICYmIGJhc2UuaXNIaWVyYXJjaGlj
YWwoKSkKKyAgICAgICAgICAgICAgICBzdHIgPSBwICsgMTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBhYnNvbHV0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBD
aGFyQnVmZmVyIHBhcnNlQnVmZmVyOworCisgICAgaWYgKGFic29sdXRlKSB7CisgICAgICAgIHBh
cnNlKHN0ciwgJnJlbGF0aXZlKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiB0aGUgYmFz
ZSBpcyBlbXB0eSBvciBvcGFxdWUgKGUuZy4gZGF0YTogb3IgamF2YXNjcmlwdDopLCB0aGVuIHRo
ZSBVUkwgaXMgaW52YWxpZAorICAgICAgICAvLyB1bmxlc3MgdGhlIHJlbGF0aXZlIFVSTCBpcyBh
IHNpbmdsZSBmcmFnbWVudC4KKyAgICAgICAgaWYgKCFiYXNlLmlzSGllcmFyY2hpY2FsKCkpIHsK
KyAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgYXBwZW5k
QVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJz
ZUJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVs
YXRpdmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3N0cmluZyA9
IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3RyWzBd
KSB7CisgICAgICAgIGNhc2UgJ1wwJzoKKyAgICAgICAgICAgIC8vIFRoZSByZWZlcmVuY2UgaXMg
ZW1wdHksIHNvIHRoaXMgaXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgZG9jdW1lbnQgd2l0aCBh
bnkgZnJhZ21lbnQgaWRlbnRpZmllciByZW1vdmVkLgorICAgICAgICAgICAgKnRoaXMgPSBiYXNl
OworICAgICAgICAgICAgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAnIyc6IHsKKyAgICAgICAgICAgIC8vIG11c3QgYmUgZnJhZ21l
bnQtb25seSByZWZlcmVuY2UKKyAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcu
bGVmdChiYXNlLm1fcXVlcnlFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOworICAgICAgICAg
ICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAnPyc6IHsKKyAgICAgICAgICAgIC8vIHF1ZXJ5
LW9ubHkgcmVmZXJlbmNlLCBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBub24tVVJMIHJlc3VsdHMK
KyAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcGF0aEVu
ZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7CisgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZl
ci5kYXRhKCksICZyZWxhdGl2ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgIC8vIG11c3QgYmUgbmV0LXBhdGggb3IgYWJzb2x1
dGUtcGF0aCByZWZlcmVuY2UKKyAgICAgICAgICAgIGlmIChzdHJbMV0gPT0gJy8nKSB7CisgICAg
ICAgICAgICAgICAgLy8gbmV0LXBhdGgKKyAgICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNl
Lm1fc3RyaW5nLmxlZnQoYmFzZS5tX3NjaGVtZUVuZCArIDEpLCBzdHIsIGxlbiwgcGFyc2VCdWZm
ZXIpOworICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gYWJzLXBhdGgKKyAg
ICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BvcnRF
bmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOworICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNl
QnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IG11c3QgYmUgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UKKworICAgICAgICAgICAgICAgIC8vIEJh
c2UgcGFydCBwbHVzIHJlbGF0aXZlIHBhcnQgcGx1cyBvbmUgcG9zc2libGUgc2xhc2ggYWRkZWQg
aW4gYmV0d2VlbiBwbHVzIHRlcm1pbmF0aW5nIFwwIGJ5dGUuCisgICAgICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IGJ1ZmZlclNpemUgPSBiYXNlLm1fcGF0aEVuZCArIDEgKyBsZW4gKyAxOworICAg
ICAgICAgICAgICAgIHBhcnNlQnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKKworICAgICAgICAg
ICAgICAgIGNoYXIqIGJ1ZmZlclBvcyA9IHBhcnNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAg
ICAgICBjaGFyKiBidWZmZXJTdGFydCA9IGJ1ZmZlclBvczsKKworICAgICAgICAgICAgICAgIC8v
IGZpcnN0IGNvcHkgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBhdGggZnJvbSB0aGUgYmFzZQorICAg
ICAgICAgICAgICAgIENoYXJCdWZmZXIgYmFzZVN0cmluZ0J1ZmZlcihiYXNlLm1fc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICBjb3B5QVNDSUkoYmFzZS5tX3N0cmluZywgYmFzZVN0
cmluZ0J1ZmZlci5kYXRhKCkpOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmcgPSBiYXNlU3RyaW5nQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBiYXNlU3RyaW5nU3RhcnQgPSBiYXNlU3RyaW5nOworICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHBhdGhTdGFydCA9IGJhc2VTdHJpbmdTdGFydCArIGJhc2UubV9wb3J0RW5kOworICAgICAg
ICAgICAgICAgIHdoaWxlIChiYXNlU3RyaW5nU3RhcnQgPCBwYXRoU3RhcnQpCisgICAgICAgICAg
ICAgICAgICAgICpidWZmZXJQb3MrKyA9ICpiYXNlU3RyaW5nU3RhcnQrKzsKKyAgICAgICAgICAg
ICAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQgPSBidWZmZXJQb3M7CisKKyAgICAgICAgICAgICAg
ICAvLyBub3cgY29weSB0aGUgYmFzZSBwYXRoCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YmFzZVN0cmluZ0VuZCA9IGJhc2VTdHJpbmcgKyBiYXNlLm1fcGF0aEVuZDsKKworICAgICAgICAg
ICAgICAgIC8vIGdvIGJhY2sgdG8gdGhlIGxhc3Qgc2xhc2gKKyAgICAgICAgICAgICAgICB3aGls
ZSAoYmFzZVN0cmluZ0VuZCA+IGJhc2VTdHJpbmdTdGFydCAmJiBiYXNlU3RyaW5nRW5kWy0xXSAh
PSAnLycpCisgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdFbmQtLTsKKworICAgICAgICAg
ICAgICAgIGlmIChiYXNlU3RyaW5nRW5kID09IGJhc2VTdHJpbmdTdGFydCkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBubyBwYXRoIGluIGJhc2UsIGFkZCBhIHBhdGggc2VwYXJhdG9yIGlmIG5l
Y2Vzc2FyeQorICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5tX3NjaGVtZUVuZCArIDEgIT0g
YmFzZS5tX3BhdGhFbmQgJiYgKnN0ciAmJiAqc3RyICE9ICc/JyAmJiAqc3RyICE9ICcjJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICpidWZmZXJQb3MrKyA9ICcvJzsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gY29weVBhdGhSZW1v
dmluZ0RvdHMoYnVmZmVyUG9zLCBiYXNlU3RyaW5nU3RhcnQsIDAsIGJhc2VTdHJpbmdFbmQgLSBi
YXNlU3RyaW5nU3RhcnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHJlbFN0cmluZ1N0YXJ0ID0gc3RyOworICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHJlbFN0cmluZ1BvcyA9IHJlbFN0cmluZ1N0YXJ0OworCisgICAgICAgICAgICAgICAgd2hp
bGUgKCpyZWxTdHJpbmdQb3MgJiYgKnJlbFN0cmluZ1BvcyAhPSAnPycgJiYgKnJlbFN0cmluZ1Bv
cyAhPSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbFN0cmluZ1Bvc1swXSA9PSAn
LicgJiYgYnVmZmVyUG9zWy0xXSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMV0pKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuIiBzZWdtZW50CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVsU3RyaW5nUG9zICs9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlbFN0cmluZ1Bvc1swXSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbFN0cmluZ1BvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWxTdHJpbmdQb3NbMV0g
PT0gJy4nICYmIGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1syXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdp
bmQgdGhlIGxhc3Qgc2VnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBS
RkMgbGVhdmVzIGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBleGNl
c3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiLi4iIHNlZ21lbnRzIC0gd2UgY2hv
b3NlIHRvIGRyb3AgdGhlbSBzaW5jZSBzb21lIHdlYiBjb250ZW50CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVsU3RyaW5nUG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
bFN0cmluZ1Bvc1swXSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bFN0cmluZ1BvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJQb3Mg
PiBidWZmZXJQYXRoU3RhcnQgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
dWZmZXJQb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYnVmZmVyUG9z
ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSAgJiYgYnVmZmVyUG9zWy0xXSAhPSAnLycpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcy0tOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcyA9ICpyZWxTdHJp
bmdQb3M7CisgICAgICAgICAgICAgICAgICAgIHJlbFN0cmluZ1BvcysrOworICAgICAgICAgICAg
ICAgICAgICBidWZmZXJQb3MrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBhbGwgZG9uZSB3aXRoIHRoZSBwYXRoIHdvcmssIG5vdyBjb3B5IGFueSByZW1haW5kZXIK
KyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgcmVsYXRpdmUgcmVmZXJlbmNlOyB0aGlzIHdpbGwg
YWxzbyBhZGQgYSBudWxsIHRlcm1pbmF0b3IKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGJ1ZmZl
clBvcywgcmVsU3RyaW5nUG9zLCBidWZmZXJTaXplIC0gKGJ1ZmZlclBvcyAtIGJ1ZmZlclN0YXJ0
KSk7CisKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2
ZSk7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RybGVuKHBhcnNlQnVmZmVyLmRhdGEoKSkg
KyAxIDw9IHBhcnNlQnVmZmVyLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1VSTCBVUkw6OmNvcHkoKSBjb25zdAor
eworICAgIFVSTCByZXN1bHQgPSAqdGhpczsKKyAgICByZXN1bHQubV9zdHJpbmcgPSByZXN1bHQu
bV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5n
IFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAoreworICAgIGlmICghaGFzUGF0aCgpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQg
LSAxOworICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKKyAgICAgICAgLS1lbmQ7CisKKyAg
ICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7CisgICAgaWYg
KHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICArK3N0YXJ0OworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKK30KKworU3RyaW5nIFVSTDo6cHJvdG9jb2woKSBj
b25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1fc2NoZW1lRW5kKTsKK30KKworU3Ry
aW5nIFVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgaW50IHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Cisg
ICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIG1faG9zdEVuZCAtIHN0YXJ0KSk7Cit9CisKK3Vuc2lnbmVkIHNob3J0IFVSTDo6cG9ydCgp
IGNvbnN0Cit7CisgICAgLy8gV2UgcmV0dXJuIGEgcG9ydCBvZiAwIGlmIHRoZXJlIGlzIG5vIHBv
cnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4gdHdvIHNpdHVhdGlvbnM6CisgICAgLy8g
MSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRlciB0aGUgaG9zdCBuYW1lIGFuZCBiZWZv
cmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwuCisgICAgLy8gMikgVGhlIFVSTCBjb250
YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQgbnVtYmVyIGJlZm9yZSB0aGUgcGF0aCBj
b21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCisgICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRF
bmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAg
Ym9vbCBvayA9IGZhbHNlOworICAgIHVuc2lnbmVkIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAt
IDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBtYXhpbXVtVmFsaWRQb3J0TnVtYmVy
KQorICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1iZXI7CisgICAgcmV0dXJuIG51bWJlcjsK
K30KKworU3RyaW5nIFVSTDo6cGFzcygpIGNvbnN0Cit7CisgICAgaWYgKG1fcGFzc3dvcmRFbmQg
PT0gbV91c2VyRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBt
X3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOyAKK30KKworU3RyaW5nIFVSTDo6dXNlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5z
dWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0
cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhZ21l
bnRFbmQgPT0gbV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0
dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSwgbV9mcmFnbWVudEVuZCAtICht
X3F1ZXJ5RW5kICsgMSkpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kOworfQorCitT
dHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5s
ZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKworI2lmICFQTEFURk9STShRVCkgJiYgIVVT
RShDRikKK1N0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKCkpOworfQorI2VuZGlmCisK
KyNpZmRlZiBOREVCVUcKKworc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29k
KGNvbnN0IGNoYXIqKQoreworfQorCisjZWxzZQorCitzdGF0aWMgdm9pZCBhc3NlcnRQcm90b2Nv
bElzR29vZChjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICBjb25zdCBjaGFyKiBwID0gcHJv
dG9jb2w7CisgICAgd2hpbGUgKCpwKSB7CisgICAgICAgIEFTU0VSVCgqcCA+ICcgJyAmJiAqcCA8
IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSk7CisgICAgICAgICsrcDsKKyAgICB9
Cit9CisKKyNlbmRpZgorCitib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2Nv
bCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICAv
LyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVu
IGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rp
b24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBB
U1NFUlQoIWVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCBTdHJpbmcoImphdmFzY3JpcHQiKSkp
OworCisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmICgh
cHJvdG9jb2xbaV0gfHwgIWlzU2NoZW1lQ2hhcmFjdGVyTWF0Y2hJZ25vcmluZ0Nhc2UobV9zdHJp
bmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1
bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworU3RyaW5nIFVSTDo6cXVl
cnkoKSBjb25zdAoreworICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhF
bmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCit9CisKK1N0cmluZyBVUkw6
OnBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5k
LCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOworfQorCitib29sIFVSTDo6c2V0UHJvdG9jb2woY29u
c3QgU3RyaW5nJiBzKQoreworICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5n
IGFmdGVyIHRoZSBmaXJzdCAnOicuCisgICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5m
aW5kKCc6Jyk7CisgICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9yUG9zaXRpb24pOworCisgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2wobmV3UHJvdG9jb2wpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBw
YXJzZShuZXdQcm90b2NvbCArICc6JyArIG1fc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcGFyc2UobmV3UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9z
Y2hlbWVFbmQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29u
c3QgU3RyaW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBl
c2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9p
ZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgaG9zdC4KKworICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKworICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIp
ICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsKK30KKwordm9pZCBVUkw6OnJl
bW92ZVBvcnQoKQoreworICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5kKQorICAgICAgICBy
ZXR1cm47CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fcG9ydEVuZCkpOworfQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9y
dCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBpbnQgcG9ydFN0YXJ0
ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CisKKyAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBT
dHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKK30KKwor
dm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBOb24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFy
c2UoKSBleHBlY3RhdGlvbnMsCisgICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhh
biBqdXN0IGhvc3QgYW5kIHBvcnQuCisKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KGhv
c3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiKSArIGhvc3RBbmRQb3J0
ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworfQorCit2b2lkIFVSTDo6c2V0VXNl
cihjb25zdCBTdHJpbmcmIHVzZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCisgICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2VyIGxvZ2luLgorCisgICAg
aW50IGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAg
IFN0cmluZyB1ID0gdXNlcjsKKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5k
ICsgMSkKKyAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKKyAgICAgICAgLy8gQWRkICdAJyBpZiB3
ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgorICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8
fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQorICAgICAg
ICAgICAgdS5hcHBlbmQoJ0AnKTsKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJT
dGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29y
ZC4KKyAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hv
c3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBj
YXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYg
KG1fdXNlclN0YXJ0ICE9IGVuZCkKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91
c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgIH0KK30KKwordm9pZCBV
Ukw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxp
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJz
IG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9u
cywKKyAgICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIg
cGFzc3dvcmQuCisKKyAgICBpbnQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoIXBhc3N3
b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBhc3N3b3JkICsgIkAi
OworICAgICAgICBpZiAobV91c2VyRW5kID09IG1fc2NoZW1lRW5kICsgMSkKKyAgICAgICAgICAg
IHAgPSAiLy8iICsgcDsKKyAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2Ug
YXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgorICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAm
JiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAxOworICAgICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBwICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUg
bmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1f
dXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAg
ICAgICAgICAgZW5kICs9IDE7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4g
dGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2Ug
YSBjaGFuZ2UuCisgICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKQorICAgICAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwor
ICAgIH0KK30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IHMpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8g
bWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMuCisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1
ZXJ5RW5kKSArICIjIiArIHMpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIHBhcnNl
KG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOworfQorICAgIAordm9pZCBVUkw6OnNldFF1ZXJ5
KGNvbnN0IFN0cmluZyYgcXVlcnkpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3Qg
YmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KKyAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5j
b2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2
ZQorICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICBp
ZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwo
KSkKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpICsgIj8iICsgcXVlcnkg
KyBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCkpOworICAgIGVsc2UKKyAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpICsgcXVlcnkgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9xdWVyeUVuZCkpOworCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykK
K3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSAn
IycgYW5kICc/Jywgc28gZnJhZ21lbnQgYW5kIHF1ZXJ5IHBhcnRzCisgICAgLy8gbWF5IGJlIGlu
YWR2ZXJ0ZW50bHkgYWZmZWN0ZWQuCisgICAgU3RyaW5nIHBhdGggPSBzOworICAgIGlmIChwYXRo
LmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7
CisKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNj
YXBlU2VxdWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOworfQor
CitTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0
cmluZywgVVRGOEVuY29kaW5nKCkpOworfQorCitTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQor
eworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0
cmluZywgZW5jb2RpbmcpOworfQorCisvLyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90
IGJvdW5kcyBjaGVjay4KK3N0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZm
ZXIsIHVuc2lnbmVkIGNoYXIgYykKK3sKKyAgICAqYnVmZmVyKysgPSAnJSc7CisgICAgcGxhY2VC
eXRlQXNIZXgoYywgYnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRD
aGFycyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBjaGFyKiBwID0gYnVmZmVyOworCisgICAgY29uc3QgY2hhciogc3RyID0gc3RyU3Rh
cnQ7CisgICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7CisgICAgd2hp
bGUgKHN0ciA8IHN0ckVuZCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Cisg
ICAgICAgIGlmIChpc0JhZENoYXIoYykpIHsKKyAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBj
ID09ICc/JykKKyAgICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGMgIT0gMHgwOSAmJiBjICE9IDB4MGEgJiYgYyAhPSAweDBkKQorICAgICAgICAgICAgICAgIGFw
cGVuZEVzY2FwZWRDaGFyKHAsIGMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICpwKysg
PSBjOworICAgIH0KKworICAgIGJ1ZmZlciA9IHA7Cit9CisKK3N0YXRpYyB2b2lkIGVzY2FwZUFu
ZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3Ry
U3RhcnQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgY2hhciogcCA9IGJ1ZmZlcjsKKworICAgIGNv
bnN0IGNoYXIqIHN0ciA9IHN0clN0YXJ0OworICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0
YXJ0ICsgbGVuZ3RoOworICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciBjID0gKnN0cisrOworICAgICAgICAvLyBTdHJpcCBDUiwgTEYgYW5kIFRhYiBmcm9t
IGZyYWdtZW50cywgcGVyOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc3MAorICAgICAgICBpZiAoYyA9PSAweDA5IHx8IGMgPT0gMHgwYSB8fCBj
ID09IDB4MGQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBDaHJvbWUgYW5k
IElFIGFsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGZyYWdtZW50cywgaG93ZXZlciBkb2lu
ZworICAgICAgICAvLyBzbyB3b3VsZCBoaXQgYW4gQVNTRVJUIGluIGNoZWNrRW5jb2RlZFN0cmlu
Zywgc28gZm9yIG5vdyB3ZSBkb24ndC4KKyAgICAgICAgaWYgKGMgPCAweDIwIHx8IGMgPj0gMTI3
KSB7CisgICAgICAgICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgICpwKysgPSBjOworICAgIH0KKworICAgIGJ1ZmZl
ciA9IHA7Cit9CisKKy8vIGNvcHkgYSBwYXRoLCBhY2NvdW50aW5nIGZvciAiLiIgYW5kICIuLiIg
c2VnbWVudHMKK3N0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25z
dCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCkKK3sKKyAgICBjaGFyKiBidWZm
ZXJQYXRoU3RhcnQgPSBkc3Q7CisKKyAgICAvLyBlbXB0eSBwYXRoIGlzIGEgc3BlY2lhbCBjYXNl
LCBhbmQgbmVlZCBub3QgaGF2ZSBhIGxlYWRpbmcgc2xhc2gKKyAgICBpZiAoc3JjU3RhcnQgIT0g
c3JjRW5kKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IHNyYyArIHNy
Y1N0YXJ0OworICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gc3JjICsgc3JjRW5k
OworICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nUG9zID0gYmFzZVN0cmluZ1N0YXJ0Owor
CisgICAgICAgIC8vIHRoaXMgY29kZSBpcyB1bnByZXBhcmVkIGZvciBwYXRocyB0aGF0IGRvIG5v
dCBiZWdpbiB3aXRoIGEKKyAgICAgICAgLy8gc2xhc2ggYW5kIHdlIHNob3VsZCBhbHdheXMgaGF2
ZSBvbmUgaW4gdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgICAgQVNTRVJUKGJhc2VTdHJpbmdQb3Nb
MF0gPT0gJy8nKTsKKworICAgICAgICAvLyBjb3B5IHRoZSBsZWFkaW5nIHNsYXNoIGludG8gdGhl
IGRlc3RpbmF0aW9uCisgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKKyAgICAgICAgYmFz
ZVN0cmluZ1BvcysrOworICAgICAgICBkc3QrKzsKKworICAgICAgICB3aGlsZSAoYmFzZVN0cmlu
Z1BvcyA8IGJhc2VTdHJpbmdFbmQpIHsKKyAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzBd
ID09ICcuJyAmJiBkc3RbLTFdID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmIChiYXNlU3Ry
aW5nUG9zWzFdID09ICcvJyB8fCBiYXNlU3RyaW5nUG9zICsgMSA9PSBiYXNlU3RyaW5nRW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAorICAgICAgICAg
ICAgICAgICAgICBiYXNlU3RyaW5nUG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVN0cmluZ1Bvc1sxXSA9PSAnLicg
JiYgKGJhc2VTdHJpbmdQb3NbMl0gPT0gJy8nIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9zICsgMiA9PSBiYXNlU3RyaW5nRW5kKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhl
IGxhc3Qgc2VnbWVudAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZlcyBpdCB1
cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCisgICAgICAgICAg
ICAgICAgICAgIC8vICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNl
IHNvbWUgd2ViIGNvbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMu
CisgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMzsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCisgICAgICAgICAgICAgICAgICAg
ICAgICBkc3QtLTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhT
dGFydCAmJiBkc3RbLTFdICE9ICcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKKyAgICAgICAgICAg
IGJhc2VTdHJpbmdQb3MrKzsKKyAgICAgICAgICAgIGRzdCsrOworICAgICAgICB9CisgICAgfQor
ICAgICpkc3QgPSAnXDAnOworICAgIHJldHVybiBkc3QgLSBidWZmZXJQYXRoU3RhcnQ7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGNvbnN0IGNoYXIqIHN0cikK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oc3RyKTsKKyAgICBpZiAoISpwKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgdW5zaWduZWQgY2hhciBwYyA9ICpwOworICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMg
PSAqKytwKSB7CisgICAgICAgIGlmIChjID09ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcu
JykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcGMgPSBjOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5nKTsKKworICAgIENoYXJCdWZmZXIg
YnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOworICAgIGNvcHlBU0NJSShzdHJpbmcsIGJ1ZmZl
ci5kYXRhKCkpOworICAgIGJ1ZmZlcltzdHJpbmcubGVuZ3RoKCldID0gJ1wwJzsKKyAgICBwYXJz
ZShidWZmZXIuZGF0YSgpLCAmc3RyaW5nKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBjb25zdCBjaGFyICgmYilb
bGVuZ3RoXSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChhW2ldICE9IGJbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoQj4KK3N0YXRp
YyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBzdHJpbmdBLCBzaXplX3QgbGVuZ3RoQSwg
Y29uc3QgY2hhciAoJnN0cmluZ0IpW2xlbmd0aEJdKQoreworICAgIHJldHVybiBsZW5ndGhBID09
IGxlbmd0aEIgJiYgZXF1YWwoc3RyaW5nQSwgc3RyaW5nQik7Cit9CisKKy8vIExpc3Qgb2YgZGVm
YXVsdCBzY2hlbWVzIGlzIHRha2VuIGZyb20gZ29vZ2xlLXVybDoKKy8vIGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGUtdXJsL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL3VybF9jYW5vbl9z
dGR1cmwuY2MjMTIwCitzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWZhdWx0UG9ydEZvclNjaGVtZShj
b25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwgY29uc3QgY2hhciogc2NoZW1lLCBz
aXplX3Qgc2NoZW1lTGVuZ3RoKQoreworICAgIC8vIFRoaXMgc3dpdGNoIGlzIHRoZW9yZXRpY2Fs
bHkgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uICBJdCBjYW1lIG92ZXIgd2hlbgorICAgIC8v
IHRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmwsIGJ1dCBtYXkgYmUgcmVtb3ZlZCBs
YXRlci4KKyAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgeworICAgIGNhc2UgMjoKKyAgICAgICAg
cmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgs
IGh0dHBQb3J0KTsKKyAgICBjYXNlIDM6CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIGZ0cFNj
aGVtZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgZnRwUG9y
dCk7CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSA0OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSAm
JiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7CisgICAgY2FzZSA1OgorICAgICAg
ICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExl
bmd0aCwgaHR0cHNQb3J0KTsKKyAgICBjYXNlIDY6CisgICAgICAgIHJldHVybiBlcXVhbChzY2hl
bWUsIGdvcGhlclNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgZ29waGVyUG9ydCk7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGhvc3RQ
b3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudChpbnQgaG9zdFN0YXJ0LCBpbnQgcG9y
dEVuZCwgY2hhciB1c2VyaW5mb0VuZENoYXIpCit7CisgICAgcmV0dXJuIHVzZXJpbmZvRW5kQ2hh
ciA9PSAnQCcgJiYgaG9zdFN0YXJ0ID09IHBvcnRFbmQ7Cit9CisKK3N0YXRpYyBib29sIGlzTm9u
RmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBzY2hlbWUsIHNpemVfdCBzY2hlbWVM
ZW5ndGgpCit7CisgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKKyAgICBjYXNlIDI6CisgICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsKKyAgICBjYXNlIDM6CisgICAgICAg
IHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3c3NTY2hl
bWUpOworICAgIGNhc2UgNDoKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVt
ZSk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVt
ZSk7CisgICAgY2FzZSA2OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hl
bWUpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGlzQ2Fub25p
Y2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qg
c2NoZW1lTGVuZ3RoKQoreworICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3RoKSB7CisgICAgY2FzZSAy
OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7CisgICAgY2FzZSAzOgor
ICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwg
d3NzU2NoZW1lKTsKKyAgICBjYXNlIDQ6CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0
dHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgZmlsZVNjaGVtZSk7CisgICAgY2FzZSA1OgorICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSk7CisgICAgY2FzZSA2OgorICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0
cmluZyogb3JpZ2luYWxTdHJpbmcpCit7CisgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09ICdcMCcp
IHsKKyAgICAgICAgLy8gdmFsaWQgVVJMIG11c3QgYmUgbm9uLWVtcHR5CisgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIGlu
dmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXNTY2hlbWVG
aXJzdENoYXIodXJsWzBdKSkgeworICAgICAgICAvLyBzY2hlbWUgbXVzdCBzdGFydCB3aXRoIGFu
IGFscGhhYmV0aWMgY2hhcmFjdGVyCisgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludCBzY2hlbWVFbmQgPSAwOworICAgIHdoaWxlIChpc1Nj
aGVtZUNoYXIodXJsW3NjaGVtZUVuZF0pKQorICAgICAgICBzY2hlbWVFbmQrKzsKKworICAgIGlm
ICh1cmxbc2NoZW1lRW5kXSAhPSAnOicpIHsKKyAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0
cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHVzZXJTdGFydCA9IHNjaGVtZUVuZCArIDE7
CisgICAgaW50IHVzZXJFbmQ7CisgICAgaW50IHBhc3N3b3JkU3RhcnQ7CisgICAgaW50IHBhc3N3
b3JkRW5kOworICAgIGludCBob3N0U3RhcnQ7CisgICAgaW50IGhvc3RFbmQ7CisgICAgaW50IHBv
cnRTdGFydDsKKyAgICBpbnQgcG9ydEVuZDsKKworICAgIGJvb2wgaGllcmFyY2hpY2FsID0gdXJs
W3NjaGVtZUVuZCArIDFdID09ICcvJzsKKyAgICBib29sIGhhc1NlY29uZFNsYXNoID0gaGllcmFy
Y2hpY2FsICYmIHVybFtzY2hlbWVFbmQgKyAyXSA9PSAnLyc7CisKKyAgICBib29sIGlzRmlsZSA9
IHNjaGVtZUVuZCA9PSA0CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
WzBdLCAnZicpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAn
aScpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnbCcpCisg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAnZScpOworCisjaWYg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICAvLyBQYXJzZSBsb2NhbDogdXJscyB0aGUgc2FtZSBh
cyBmaWxlOiB1cmxzLgorICAgIGlmICghaXNGaWxlKQorICAgICAgICBpc0ZpbGUgPSBzY2hlbWVF
bmQgPT0gNQorICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0s
ICdsJykKKyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAn
bycpCisgICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsyXSwgJ2Mn
KQorICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdhJykK
KyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzRdLCAnbCcpOwor
I2VuZGlmCisKKyAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBpc0xldHRlck1hdGNoSWdu
b3JpbmdDYXNlKHVybFswXSwgJ2gnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdD
YXNlKHVybFsxXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVy
bFsyXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwg
J3AnKQorICAgICAgICAmJiAodXJsWzRdID09ICc6JyB8fCAoaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbNF0sICdzJykgJiYgdXJsWzVdID09ICc6JykpOworCisgICAgaWYgKChoaWVyYXJj
aGljYWwgJiYgaGFzU2Vjb25kU2xhc2gpIHx8IGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZSh1
cmwsIHNjaGVtZUVuZCkpIHsKKyAgICAgICAgLy8gVGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBp
cyBlaXRoZXIgYSBuZXRfcGF0aCBvciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCBwYXRoIHNlZ21l
bnQgaXMgZW1wdHkuCisgICAgICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhdXRob3JpdHkuCisg
ICAgICAgIC8vIEZJWE1FOiBBdXRob3JpdHkgY2hhcmFjdGVycyBtYXkgYmUgc2Nhbm5lZCB0d2lj
ZSwgYW5kIGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgZmFzdGVyLgorCisgICAgICAgIGlmIChoaWVy
YXJjaGljYWwpCisgICAgICAgICAgICB1c2VyU3RhcnQrKzsKKyAgICAgICAgaWYgKGhhc1NlY29u
ZFNsYXNoKQorICAgICAgICAgICAgdXNlclN0YXJ0Kys7CisgICAgICAgIHVzZXJFbmQgPSB1c2Vy
U3RhcnQ7CisKKyAgICAgICAgaW50IGNvbG9uUG9zID0gMDsKKyAgICAgICAgd2hpbGUgKGlzVXNl
ckluZm9DaGFyKHVybFt1c2VyRW5kXSkpIHsKKyAgICAgICAgICAgIGlmICh1cmxbdXNlckVuZF0g
PT0gJzonICYmIGNvbG9uUG9zID09IDApCisgICAgICAgICAgICAgICAgY29sb25Qb3MgPSB1c2Vy
RW5kOworICAgICAgICAgICAgdXNlckVuZCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHVy
bFt1c2VyRW5kXSA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIGFjdHVhbCBlbmQgb2YgdGhlIHVz
ZXJpbmZvLCBzdGFydCBvbiB0aGUgaG9zdAorICAgICAgICAgICAgaWYgKGNvbG9uUG9zICE9IDAp
IHsKKyAgICAgICAgICAgICAgICBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7CisgICAgICAgICAgICAg
ICAgdXNlckVuZCA9IGNvbG9uUG9zOworICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBj
b2xvblBvcyArIDE7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXNzd29y
ZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOworCisgICAgICAgICAgICBob3N0U3RhcnQg
PSBwYXNzd29yZEVuZCArIDE7CisgICAgICAgIH0gZWxzZSBpZiAodXJsW3VzZXJFbmRdID09ICdb
JyB8fCBpc1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbdXNlckVuZF0pKSB7CisgICAgICAgICAgICAv
LyBoaXQgdGhlIGVuZCBvZiB0aGUgYXV0aG9yaXR5LCBtdXN0IGhhdmUgYmVlbiBubyB1c2VyCisg
ICAgICAgICAgICAvLyBvciBsb29rcyBsaWtlIGFuIElQdjYgaG9zdG5hbWUKKyAgICAgICAgICAg
IC8vIGVpdGhlciB3YXksIHRyeSB0byBwYXJzZSBpdCBhcyBhIGhvc3RuYW1lCisgICAgICAgICAg
ICB1c2VyRW5kID0gdXNlclN0YXJ0OworICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3
b3JkRW5kID0gdXNlckVuZDsKKyAgICAgICAgICAgIGhvc3RTdGFydCA9IHVzZXJTdGFydDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCisgICAgICAg
ICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwor
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaG9zdEVuZCA9IGhvc3RTdGFydDsKKworICAgICAgICAvLyBJUFY2IElQIGFk
ZHJlc3MKKyAgICAgICAgaWYgKHVybFtob3N0RW5kXSA9PSAnWycpIHsKKyAgICAgICAgICAgIGhv
c3RFbmQrKzsKKyAgICAgICAgICAgIHdoaWxlIChpc0lQdjZDaGFyKHVybFtob3N0RW5kXSkpCisg
ICAgICAgICAgICAgICAgaG9zdEVuZCsrOworICAgICAgICAgICAgaWYgKHVybFtob3N0RW5kXSA9
PSAnXScpCisgICAgICAgICAgICAgICAgaG9zdEVuZCsrOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAg
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAoaXNIb3N0bmFtZUNoYXIo
dXJsW2hvc3RFbmRdKSkKKyAgICAgICAgICAgICAgICBob3N0RW5kKys7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJzonKSB7CisgICAgICAgICAgICBw
b3J0U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVuZCArIDE7CisgCisgICAgICAgICAgICAvLyBwb3Nz
aWJsZSBzdGFydCBvZiBwb3J0CisgICAgICAgICAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OworICAg
ICAgICAgICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh1cmxbcG9ydEVuZF0pKQorICAgICAgICAgICAg
ICAgIHBvcnRFbmQrKzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb3J0U3RhcnQgPSBw
b3J0RW5kID0gaG9zdEVuZDsKKworICAgICAgICBpZiAoIWlzUGF0aFNlZ21lbnRFbmRDaGFyKHVy
bFtwb3J0RW5kXSkpIHsKKyAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCisgICAgICAg
ICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwor
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGhvc3RQb3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudCho
b3N0U3RhcnQsIHBvcnRFbmQsIHVybFtwYXNzd29yZEVuZF0pKSB7CisgICAgICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHVzZXJTdGFydCA9PSBwb3J0RW5kICYmICFtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkg
JiYgIWlzRmlsZSkgeworICAgICAgICAgICAgLy8gTm8gYXV0aG9yaXR5IGZvdW5kLCB3aGljaCBt
ZWFucyB0aGF0IHRoaXMgaXMgbm90IGEgbmV0X3BhdGgsIGJ1dCByYXRoZXIgYW4gYWJzX3BhdGgg
d2hvc2UgZmlyc3QgdHdvCisgICAgICAgICAgICAvLyBwYXRoIHNlZ21lbnRzIGFyZSBlbXB0eS4g
Rm9yIGZpbGUsIGh0dHAgYW5kIGh0dHBzIG9ubHksIGFuIGVtcHR5IGF1dGhvcml0eSBpcyBhbGxv
d2VkLgorICAgICAgICAgICAgdXNlclN0YXJ0IC09IDI7CisgICAgICAgICAgICB1c2VyRW5kID0g
dXNlclN0YXJ0OworICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHVzZXJFbmQ7CisgICAgICAg
ICAgICBwYXNzd29yZEVuZCA9IHBhc3N3b3JkU3RhcnQ7CisgICAgICAgICAgICBob3N0U3RhcnQg
PSBwYXNzd29yZEVuZDsKKyAgICAgICAgICAgIGhvc3RFbmQgPSBob3N0U3RhcnQ7CisgICAgICAg
ICAgICBwb3J0U3RhcnQgPSBob3N0RW5kOworICAgICAgICAgICAgcG9ydEVuZCA9IGhvc3RFbmQ7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyB0aGUgcGFydCBhZnRlciB0aGUg
c2NoZW1lIG11c3QgYmUgYW4gb3BhcXVlX3BhcnQgb3IgYW4gYWJzX3BhdGgKKyAgICAgICAgdXNl
ckVuZCA9IHVzZXJTdGFydDsKKyAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3b3JkRW5kID0g
dXNlckVuZDsKKyAgICAgICAgaG9zdFN0YXJ0ID0gaG9zdEVuZCA9IHBhc3N3b3JkRW5kOworICAg
ICAgICBwb3J0U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVuZDsKKyAgICB9CisKKyAgICBpbnQgcGF0
aFN0YXJ0ID0gcG9ydEVuZDsKKyAgICBpbnQgcGF0aEVuZCA9IHBhdGhTdGFydDsKKyAgICB3aGls
ZSAodXJsW3BhdGhFbmRdICYmIHVybFtwYXRoRW5kXSAhPSAnPycgJiYgdXJsW3BhdGhFbmRdICE9
ICcjJykKKyAgICAgICAgcGF0aEVuZCsrOworCisgICAgaW50IHF1ZXJ5U3RhcnQgPSBwYXRoRW5k
OworICAgIGludCBxdWVyeUVuZCA9IHF1ZXJ5U3RhcnQ7CisgICAgaWYgKHVybFtxdWVyeVN0YXJ0
XSA9PSAnPycpIHsKKyAgICAgICAgd2hpbGUgKHVybFtxdWVyeUVuZF0gJiYgdXJsW3F1ZXJ5RW5k
XSAhPSAnIycpCisgICAgICAgICAgICBxdWVyeUVuZCsrOworICAgIH0KKworICAgIGludCBmcmFn
bWVudFN0YXJ0ID0gcXVlcnlFbmQ7CisgICAgaW50IGZyYWdtZW50RW5kID0gZnJhZ21lbnRTdGFy
dDsKKyAgICBpZiAodXJsW2ZyYWdtZW50U3RhcnRdID09ICcjJykgeworICAgICAgICBmcmFnbWVu
dFN0YXJ0Kys7CisgICAgICAgIGZyYWdtZW50RW5kID0gZnJhZ21lbnRTdGFydDsKKyAgICAgICAg
d2hpbGUgKHVybFtmcmFnbWVudEVuZF0pCisgICAgICAgICAgICBmcmFnbWVudEVuZCsrOworICAg
IH0KKworICAgIC8vIGFzc2VtYmxlIGl0IGFsbCwgcmVtZW1iZXJpbmcgdGhlIHJlYWwgcmFuZ2Vz
CisKKyAgICBWZWN0b3I8Y2hhciwgNDA5Nj4gYnVmZmVyKGZyYWdtZW50RW5kICogMyArIDEpOwor
CisgICAgY2hhciAqcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY29uc3QgY2hhciAqc3RyUHRyID0g
dXJsOworCisgICAgLy8gY29weSBpbiB0aGUgc2NoZW1lCisgICAgY29uc3QgY2hhciAqc2NoZW1l
RW5kUHRyID0gdXJsICsgc2NoZW1lRW5kOworICAgIHdoaWxlIChzdHJQdHIgPCBzY2hlbWVFbmRQ
dHIpCisgICAgICAgICpwKysgPSB0b0FTQ0lJTG93ZXIoKnN0clB0cisrKTsKKyAgICBtX3NjaGVt
ZUVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgYm9vbCBob3N0SXNMb2NhbEhvc3QgPSBw
b3J0RW5kIC0gdXNlclN0YXJ0ID09IDkKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbdXNlclN0YXJ0XSwgJ2wnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFt1c2VyU3RhcnQrMV0sICdvJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaEln
bm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzJdLCAnYycpCisgICAgICAgICYmIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCszXSwgJ2EnKQorICAgICAgICAmJiBpc0xldHRl
ck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNF0sICdsJykKKyAgICAgICAgJiYgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzVdLCAnaCcpCisgICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs2XSwgJ28nKQorICAgICAg
ICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrN10sICdzJykKKyAg
ICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzhdLCAndCcp
OworCisgICAgLy8gRmlsZSBVUkxzIG5lZWQgYSBob3N0IHBhcnQgdW5sZXNzIGl0IGlzIGp1c3Qg
ZmlsZTovLyBvciBmaWxlOi8vbG9jYWxob3N0CisgICAgYm9vbCBkZWdlbmVyYXRlRmlsZVBhdGgg
PSBwYXRoU3RhcnQgPT0gcGF0aEVuZCAmJiAoaG9zdFN0YXJ0ID09IGhvc3RFbmQgfHwgaG9zdElz
TG9jYWxIb3N0KTsKKworICAgIC8vIFdlIGRyb3AgZW1wdHkgY3JlZGVudGlhbHMsIGJ1dCBrZWVw
IGEgY29sb24gaW4gYW4gZW1wdHkgaG9zdC9wb3J0IHBhaXIuCisgICAgLy8gUmVtb3ZpbmcgaG9z
dG5hbWUgY29tcGxldGVseSB3b3VsZCBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgVVJMIG9u
IHJlLXBhcnNpbmcuCisgICAgYm9vbCBoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQgPSB1c2VyU3Rh
cnQgIT0gdXNlckVuZCB8fCBwYXNzd29yZFN0YXJ0ICE9IHBhc3N3b3JkRW5kIHx8IGhvc3RFbmQg
IT0gcG9ydEVuZDsKKworICAgIC8vIGFkZCAiOiIgYWZ0ZXIgc2NoZW1lCisgICAgKnArKyA9ICc6
JzsKKworICAgIC8vIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGF1dGhvcml0eSBwYXJ0IG9yIGEg
ZmlsZSBVUkwgLSBhZGQgIi8vIiBhbmQgYXV0aG9yaXR5CisgICAgaWYgKGlzRmlsZSA/ICFkZWdl
bmVyYXRlRmlsZVBhdGggOiAoaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0IHx8IGhvc3RTdGFydCAh
PSBob3N0RW5kKSkgeworICAgICAgICAqcCsrID0gJy8nOworICAgICAgICAqcCsrID0gJy8nOwor
CisgICAgICAgIG1fdXNlclN0YXJ0ID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAgICAgLy8g
Y29weSBpbiB0aGUgdXNlcgorICAgICAgICBzdHJQdHIgPSB1cmwgKyB1c2VyU3RhcnQ7CisgICAg
ICAgIGNvbnN0IGNoYXIqIHVzZXJFbmRQdHIgPSB1cmwgKyB1c2VyRW5kOworICAgICAgICB3aGls
ZSAoc3RyUHRyIDwgdXNlckVuZFB0cikgeworICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisr
OworICAgICAgICAgICAgQVNTRVJUKGlzVXNlckluZm9DaGFyKGMpKTsKKyAgICAgICAgICAgICpw
KysgPSBjOworICAgICAgICB9CisgICAgICAgIG1fdXNlckVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OworCisgICAgICAgIC8vIGNvcHkgaW4gdGhlIHBhc3N3b3JkCisgICAgICAgIGlmIChwYXNzd29y
ZEVuZCAhPSBwYXNzd29yZFN0YXJ0KSB7CisgICAgICAgICAgICAqcCsrID0gJzonOworICAgICAg
ICAgICAgc3RyUHRyID0gdXJsICsgcGFzc3dvcmRTdGFydDsKKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHBhc3N3b3JkRW5kUHRyID0gdXJsICsgcGFzc3dvcmRFbmQ7CisgICAgICAgICAgICB3aGls
ZSAoc3RyUHRyIDwgcGFzc3dvcmRFbmRQdHIpIHsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSAq
c3RyUHRyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzVXNlckluZm9DaGFyKGMpKTsKKyAg
ICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBtX3Bhc3N3b3JkRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAgICAgLy8gSWYgd2Ug
aGFkIGFueSB1c2VyIGluZm8sIGFkZCAiQCIKKyAgICAgICAgaWYgKHAgLSBidWZmZXIuZGF0YSgp
ICE9IG1fdXNlclN0YXJ0KQorICAgICAgICAgICAgKnArKyA9ICdAJzsKKworICAgICAgICAvLyBj
b3B5IGluIHRoZSBob3N0LCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBmaWxlIFVSTCB3aXRoIGF1
dGhvcml0eT0ibG9jYWxob3N0IgorICAgICAgICBpZiAoIShpc0ZpbGUgJiYgaG9zdElzTG9jYWxI
b3N0ICYmICFoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQpKSB7CisgICAgICAgICAgICBzdHJQdHIg
PSB1cmwgKyBob3N0U3RhcnQ7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBob3N0RW5kUHRyID0g
dXJsICsgaG9zdEVuZDsKKyAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbEhvc3RuYW1lTG93ZXJj
YXNlRm9yU2NoZW1lKGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1lRW5kKSkgeworICAgICAgICAgICAg
ICAgIHdoaWxlIChzdHJQdHIgPCBob3N0RW5kUHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGNo
YXIgYyA9IHRvQVNDSUlMb3dlcigqc3RyUHRyKyspOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoaXNIb3N0bmFtZUNoYXIoYykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnOicp
OworICAgICAgICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdoaWxlIChzdHJQdHIgPCBob3N0RW5k
UHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGlzSG9zdG5hbWVDaGFyKGMpIHx8IGMgPT0gJ1snIHx8IGMgPT0g
J10nIHx8IGMgPT0gJzonKTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1faG9zdEVuZCA9
IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgICAgIC8vIENvcHkgaW4gdGhlIHBvcnQgaWYgdGhl
IFVSTCBoYXMgb25lIChhbmQgaXQncyBub3QgZGVmYXVsdCkuIEFsc28sIGNvcHkgaXQgaWYgdGhl
cmUgd2FzIG5vIGhvc3RuYW1lLCBzbyB0aGF0IHRoZXJlIGlzIHN0aWxsIHNvbWV0aGluZyBpbiBh
dXRob3JpdHkgY29tcG9uZW50LgorICAgICAgICBpZiAoaG9zdEVuZCAhPSBwb3J0U3RhcnQpIHsK
KyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnRTdHIgPSB1cmwgKyBwb3J0U3RhcnQ7CisgICAg
ICAgICAgICBzaXplX3QgcG9ydExlbmd0aCA9IHBvcnRFbmQgLSBwb3J0U3RhcnQ7CisgICAgICAg
ICAgICBpZiAoKHBvcnRMZW5ndGggJiYgIWlzRGVmYXVsdFBvcnRGb3JTY2hlbWUocG9ydFN0ciwg
cG9ydExlbmd0aCwgYnVmZmVyLmRhdGEoKSwgbV9zY2hlbWVFbmQpKQorICAgICAgICAgICAgICAg
IHx8IChob3N0U3RhcnQgPT0gaG9zdEVuZCAmJiBob3N0RW5kICE9IHBvcnRTdGFydCkpIHsKKyAg
ICAgICAgICAgICAgICAqcCsrID0gJzonOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBv
cnRFbmRQdHIgPSB1cmwgKyBwb3J0RW5kOworICAgICAgICAgICAgICAgIHdoaWxlIChwb3J0U3Ry
IDwgcG9ydEVuZFB0cikKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwb3J0U3RyKys7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9wb3J0RW5kID0gcCAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzRmlsZSkgeworICAgICAgICAgICAg
QVNTRVJUKGRlZ2VuZXJhdGVGaWxlUGF0aCk7CisgICAgICAgICAgICAqcCsrID0gJy8nOworICAg
ICAgICAgICAgKnArKyA9ICcvJzsKKyAgICAgICAgfQorICAgICAgICBtX3VzZXJTdGFydCA9IG1f
dXNlckVuZCA9IG1fcGFzc3dvcmRFbmQgPSBtX2hvc3RFbmQgPSBtX3BvcnRFbmQgPSBwIC0gYnVm
ZmVyLmRhdGEoKTsKKyAgICB9CisKKyAgICAvLyBGb3IgY2Fub25pY2FsaXphdGlvbiwgZW5zdXJl
IHdlIGhhdmUgYSAnLycgZm9yIG5vIHBhdGguCisgICAgLy8gRG8gdGhpcyBvbmx5IGZvciBVUkwg
d2l0aCBwcm90b2NvbCBmaWxlLCBodHRwIG9yIGh0dHBzLgorICAgIGlmICgobV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5IHx8IGlzRmlsZSkgJiYgcGF0aEVuZCA9PSBwYXRoU3RhcnQpCisgICAgICAg
ICpwKysgPSAnLyc7CisKKyAgICAvLyBhZGQgcGF0aCwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMK
KyAgICBpZiAoIWhpZXJhcmNoaWNhbCkKKyAgICAgICAgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFy
Y2hpY2FsUGFydChwLCB1cmwgKyBwYXRoU3RhcnQsIHBhdGhFbmQgLSBwYXRoU3RhcnQpOworICAg
IGVsc2UgaWYgKCFoYXNTbGFzaERvdE9yRG90RG90KHVybCkpCisgICAgICAgIGFwcGVuZEVzY2Fw
aW5nQmFkQ2hhcnMocCwgdXJsICsgcGF0aFN0YXJ0LCBwYXRoRW5kIC0gcGF0aFN0YXJ0KTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQ2hhckJ1ZmZlciBwYXRoQnVmZmVyKHBhdGhFbmQgLSBwYXRoU3Rh
cnQgKyAxKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNvcHlQYXRoUmVtb3ZpbmdEb3RzKHBh
dGhCdWZmZXIuZGF0YSgpLCB1cmwsIHBhdGhTdGFydCwgcGF0aEVuZCk7CisgICAgICAgIGFwcGVu
ZEVzY2FwaW5nQmFkQ2hhcnMocCwgcGF0aEJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAgfQor
CisgICAgbV9wYXRoRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAvLyBGaW5kIHRoZSBw
b3NpdGlvbiBhZnRlciB0aGUgbGFzdCBzbGFzaCBpbiB0aGUgcGF0aCwgb3IKKyAgICAvLyB0aGUg
cG9zaXRpb24gYmVmb3JlIHRoZSBwYXRoIGlmIHRoZXJlIGFyZSBubyBzbGFzaGVzIGluIGl0Lgor
ICAgIGludCBpOworICAgIGZvciAoaSA9IG1fcGF0aEVuZDsgaSA+IG1fcG9ydEVuZDsgLS1pKSB7
CisgICAgICAgIGlmIChidWZmZXJbaSAtIDFdID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IGk7CisKKyAgICAvLyBhZGQgcXVlcnks
IGVzY2FwaW5nIGJhZCBjaGFyYWN0ZXJzCisgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCB1
cmwgKyBxdWVyeVN0YXJ0LCBxdWVyeUVuZCAtIHF1ZXJ5U3RhcnQpOworICAgIG1fcXVlcnlFbmQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKKworICAgIC8vIGFkZCBmcmFnbWVudCwgZXNjYXBpbmcgYmFk
IGNoYXJhY3RlcnMKKyAgICBpZiAoZnJhZ21lbnRFbmQgIT0gcXVlcnlFbmQpIHsKKyAgICAgICAg
KnArKyA9ICcjJzsKKyAgICAgICAgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFyY2hpY2FsUGFydChw
LCB1cmwgKyBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50U3RhcnQpOworICAg
IH0KKyAgICBtX2ZyYWdtZW50RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICBBU1NFUlQo
cCAtIGJ1ZmZlci5kYXRhKCkgPD0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXIuc2l6ZSgpKSk7Cisg
ICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkgPiAwKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBlbmQg
dXAgYWN0dWFsbHkgY2hhbmdpbmcgdGhlIG9yaWdpbmFsIHN0cmluZyBhbmQKKyAgICAvLyBpdCB3
YXMgYWxyZWFkeSBpbiBhIFN0cmluZywgcmV1c2UgaXQgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlv
bi4KKyAgICBpZiAob3JpZ2luYWxTdHJpbmcgJiYgZXF1YWwob3JpZ2luYWxTdHJpbmctPmltcGwo
KSwgYnVmZmVyLmRhdGEoKSwgbV9mcmFnbWVudEVuZCkpCisgICAgICAgIG1fc3RyaW5nID0gKm9y
aWdpbmFsU3RyaW5nOworICAgIGVsc2UKKyAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgbV9mcmFnbWVudEVuZCk7CisKKyAgICBtX2lzVmFsaWQgPSB0cnVlOworfQorCiti
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBV
UkwmIGIpCit7CisgICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKKyAgICAgICAg
aWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9zY2hlbWVF
bmQgIT0gYi5tX3NjaGVtZUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGhv
c3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOworICAgIGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVu
ZCgpIC0gaG9zdFN0YXJ0QTsKKyAgICBpbnQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Cisg
ICAgaW50IGhvc3RMZW5ndGhCID0gYi5ob3N0RW5kKCkgLSBiLmhvc3RTdGFydCgpOworICAgIGlm
IChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVt
ZUVuZDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmco
KVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCit7
CisgICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKKworICAgIENo
YXJCdWZmZXIgYnVmZmVyKGFzVVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKKyAgICBjaGFyKiBwID0g
YnVmZmVyLmRhdGEoKTsKKworICAgIGNvbnN0IGNoYXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Cisg
ICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyICsgYXNVVEY4Lmxlbmd0aCgpOworICAgIHdoaWxl
IChzdHIgPCBzdHJFbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOworICAg
ICAgICBpZiAoaXNCYWRDaGFyKGMpKQorICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwg
Yyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOworICAgIH0KKworICAgIEFT
U0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkp
KTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkp
OworfQorCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0
aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUg
cmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KK3N0YXRpYyB2b2lkIGFwcGVuZEVu
Y29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNp
Z25lZCBzdHJMZW4pCit7CisgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFu
IElETi1lbmNvZGVkIG5hbWUuCisgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhp
cywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9L
LgorICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKKworICAg
IGlmIChzdHJMZW4gPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoc3RyLCBzdHJMZW4pKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNFKElDVV9VTklDT0RFKQorICAgIFVDaGFy
IGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9
IHVpZG5hX0lETlRvQVNDSUkoc3RyLCBzdHJMZW4sIGhvc3RuYW1lQnVmZmVyLAorICAgICAgICBo
b3N0bmFtZUJ1ZmZlckxlbmd0aCwgVUlETkFfQUxMT1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsK
KyAgICBpZiAoZXJyb3IgPT0gVV9aRVJPX0VSUk9SKQorICAgICAgICBidWZmZXIuYXBwZW5kKGhv
c3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKKyNlbmRpZgorfQorCitzdGF0
aWMgdm9pZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0
ckxlbiwgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4mIG5hbWVSYW5nZXMpCit7CisgICAgLy8gSW4g
YSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQg
ZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4K
KyAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRv
bid0IGNvbmZ1c2UgdXMuCisgICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2Ug
YXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCisK
KyAgICBuYW1lUmFuZ2VzLmNsZWFyKCk7CisKKyAgICBpbnQgcCA9IDA7CisgICAgd2hpbGUgKDEp
IHsKKyAgICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmlu
Zy4KKyAgICAgICAgaW50IGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwg
c3RyTGVuLCBwLCAiXCJAPyIpOworICAgICAgICBpZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09
IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1l
T3JTdHJpbmdTdGFydF07CisgICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwor
CisgICAgICAgIGlmIChjID09ICc/JykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAg
ICAgICAgICAgIGludCBob3N0bmFtZVN0YXJ0ID0gcDsKKyAgICAgICAgICAgIGludCBob3N0bmFt
ZUVuZCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiPiw/Iik7CisgICAgICAgICAgICBi
b29sIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdG5hbWVFbmQgPT0gLTEpIHsKKyAgICAgICAg
ICAgICAgICBob3N0bmFtZUVuZCA9IHN0ckxlbjsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5k
OworICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbmFtZVJhbmdlcy5hcHBlbmQobWFrZV9wYWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1l
RW5kKSk7CisKKyAgICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAg
ICAgICAgICAgIEFTU0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAg
ICAgICAgICAgICAgIGludCBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RP
ZihzdHIsIHN0ckxlbiwgcCwgIlwiXFwiKTsKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENo
YXJhY3Rlck9yU3RyaW5nRW5kID09IC0xKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICBjID0gc3RyW2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Cisg
ICAgICAgICAgICAgICAgcCA9IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7CisKKyAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJy
ZWFrIGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgorICAg
ICAgICAgICAgICAgIGlmIChjID09ICciJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAg
ICAgIEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmIChwID09IHN0ckxlbikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgKytwOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBmaW5kSG9zdG5h
bWVJbkhpZXJhcmNoaWNhbFVSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3sKKyAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUg
aW4gYSBoaWVyYXJjaGljYWwgVVJMLgorICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2Vx
dWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLCBhbmQKKyAgICAvLyB0aGlz
IHNob3VsZCBiZSB0aGUgZmlyc3QgY29sb24gaW4gdGhlIHN0cmluZy4KKyAgICAvLyBJdCBlbmRz
IHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVu
ZGluZyBjaGFyYWN0ZXIuCisgICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUg
aG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KKyAgICBpbnQgc2VwYXJh
dG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIDAsICI6Iik7CisgICAgaWYgKHNlcGFyYXRv
ciA9PSAtMSB8fCBzZXBhcmF0b3IgKyAyID49IHN0ckxlbiB8fAorICAgICAgICBzdHJbc2VwYXJh
dG9yICsgMV0gIT0gJy8nIHx8IHN0cltzZXBhcmF0b3IgKyAyXSAhPSAnLycpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRo
ZSA6Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgorICAgIGlmICghaXNTY2hlbWVGaXJz
dENoYXIoc3RyWzBdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgc2VwYXJhdG9yOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTdGFydCBhZnRl
ciB0aGUgc2VwYXJhdG9yLgorICAgIGludCBhdXRob3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7
CisKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBpbnQgaG9zdG5hbWVF
bmQgPSBzdHJMZW47CisgICAgZm9yIChpbnQgaSA9IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVu
OyArK2kpIHsKKyAgICAgICAgVUNoYXIgYyA9IHN0cltpXTsKKyAgICAgICAgaWYgKGMgPT0gJzon
IHx8IChpc1BhdGhTZWdtZW50RW5kQ2hhcihjKSAmJiBjICE9IDApKSB7CisgICAgICAgICAgICBo
b3N0bmFtZUVuZCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBpbnQg
dXNlckluZm9UZXJtaW5hdG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0
YXJ0LCAiQCIpOworICAgIGludCBob3N0bmFtZVN0YXJ0OworICAgIGlmICh1c2VySW5mb1Rlcm1p
bmF0b3IgPT0gLTEgfHwgdXNlckluZm9UZXJtaW5hdG9yID4gaG9zdG5hbWVFbmQpCisgICAgICAg
IGhvc3RuYW1lU3RhcnQgPSBhdXRob3JpdHlTdGFydDsKKyAgICBlbHNlCisgICAgICAgIGhvc3Ru
YW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IgKyAxOworCisgICAgc3RhcnRPZmZzZXQgPSBo
b3N0bmFtZVN0YXJ0OworICAgIGVuZE9mZnNldCA9IGhvc3RuYW1lRW5kOworICAgIHJldHVybiB0
cnVlOworfQorCisvLyBDb252ZXJ0cyBhbGwgaG9zdG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBp
bnB1dCB0byBwdW55Y29kZSwgcHJlc2VydmluZyB0aGUKKy8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNo
YW5nZWQuIFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUgbnVsbC10ZXJtaW5hdGVkLgorc3RhdGljIHZv
aWQgZW5jb2RlSG9zdG5hbWVzKGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0
KQoreworICAgIG91dHB1dC5jbGVhcigpOworCisgICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFp
bHRvIikpIHsKKyAgICAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7
CisgICAgICAgIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIu
bGVuZ3RoKCksIGhvc3RuYW1lUmFuZ2VzKTsKKyAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdl
cy5zaXplKCk7CisgICAgICAgIGludCBwID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5h
bWVSYW5nZXNbaV07CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygp
W3BdLCByLmZpcnN0IC0gcCk7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0
cHV0LCAmc3RyLmNoYXJhY3RlcnMoKVtyLmZpcnN0XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKKyAg
ICAgICAgICAgIHAgPSByLnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGlzIHdpbGwg
Y29weSBlaXRoZXIgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCisg
ICAgICAgIC8vIHdob2xlIHRoaW5nIGlmIHRoZXJlIGlzIG5vIGhvc3RuYW1lLgorICAgICAgICBv
dXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpbnQgaG9zdFN0YXJ0LCBob3N0RW5kOworICAgICAgICBpZiAo
ZmluZEhvc3RuYW1lSW5IaWVyYXJjaGljYWxVUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0
aCgpLCBob3N0U3RhcnQsIGhvc3RFbmQpKSB7CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0
ci5jaGFyYWN0ZXJzKCksIGhvc3RTdGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KKyAgICAgICAg
ICAgIGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RT
dGFydF0sIGhvc3RFbmQgLSBob3N0U3RhcnQpOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgm
c3RyLmNoYXJhY3RlcnMoKVtob3N0RW5kXSwgc3RyLmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFm
dGVyIGhvc3RuYW1lLgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm8gaG9zdG5h
bWUgdG8gZW5jb2RlLCByZXR1cm4gdGhlIGlucHV0LgorICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ2hhckJ1ZmZlciYgb3V0cHV0KQoreworICAgIFVD
aGFyQnVmZmVyIHM7CisgICAgZW5jb2RlSG9zdG5hbWVzKHJlbCwgcyk7CisKKyAgICBUZXh0RW5j
b2RpbmcgcGF0aEVuY29kaW5nKFVURjhFbmNvZGluZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5j
b2RlZCBhcyBVVEYtODsgb3RoZXIgcGFydHMgbWF5IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgorCisg
ICAgaW50IHBhdGhFbmQgPSAtMTsKKyAgICBpZiAoZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYm
IGVuY29kaW5nLmlzVmFsaWQoKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJv
dG9jb2xJcyhyZWwsICJkYXRhIikgJiYgIXByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKKyAg
ICAgICAgLy8gRmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBw
YXRoRW5kIGF0IC0xIG90aGVyd2lzZS4KKyAgICAgICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMu
ZGF0YSgpLCBzLnNpemUoKSwgMCwgIiM/Iik7CisgICAgfQorCisgICAgaWYgKHBhdGhFbmQgPT0g
LTEpIHsKKyAgICAgICAgQ1N0cmluZyBkZWNvZGVkID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRh
dGEoKSwgcy5zaXplKCksIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAg
ICAgIG91dHB1dC5yZXNpemUoZGVjb2RlZC5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShvdXRw
dXQuZGF0YSgpLCBkZWNvZGVkLmRhdGEoKSwgZGVjb2RlZC5sZW5ndGgoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQ1N0cmluZyBwYXRoRGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5k
YXRhKCksIHBhdGhFbmQsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAg
ICAgIC8vIFVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgaW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkg
Y29udmVydGluZworICAgICAgICAvLyB0aGVtIHRvIFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcg
bm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgorICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2Rl
ZCA9IGVuY29kaW5nLmVuY29kZShzLmRhdGEoKSArIHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVu
ZCwgVVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKKworICAgICAgICBvdXRwdXQu
cmVzaXplKHBhdGhEZWNvZGVkLmxlbmd0aCgpICsgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKKyAg
ICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCksIHBhdGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29k
ZWQubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVk
Lmxlbmd0aCgpLCBvdGhlckRlY29kZWQuZGF0YSgpLCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwor
ICAgIH0KKyAgICBvdXRwdXQuYXBwZW5kKCdcMCcpOyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0
cHV0LgorfQorCitzdGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICBzaXplX3QgcXVlc3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycp
OworICAgIHNpemVfdCBoYXNoUG9zID0gc3RyaW5nLmZpbmQoJyMnKTsKKyAgICB1bnNpZ25lZCBw
YXRoRW5kOworCisgICAgaWYgKGhhc2hQb3MgIT0gbm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09
IG5vdEZvdW5kIHx8IHF1ZXN0aW9uUG9zID4gaGFzaFBvcykpCisgICAgICAgIHBhdGhFbmQgPSBo
YXNoUG9zOworICAgIGVsc2UgaWYgKHF1ZXN0aW9uUG9zICE9IG5vdEZvdW5kKQorICAgICAgICBw
YXRoRW5kID0gcXVlc3Rpb25Qb3M7CisgICAgZWxzZQorICAgICAgICBwYXRoRW5kID0gc3RyaW5n
Lmxlbmd0aCgpOworCisgICAgcmV0dXJuIHN0cmluZy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xc
JywnLycpICsgc3RyaW5nLnN1YnN0cmluZyhwYXRoRW5kKTsKK30KKworYm9vbCBVUkw6OmlzSGll
cmFyY2hpY2FsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIEFTU0VSVChtX3N0cmluZ1ttX3NjaGVtZUVuZF0gPT0gJzonKTsKKyAgICBy
ZXR1cm4gbV9zdHJpbmdbbV9zY2hlbWVFbmQgKyAxXSA9PSAnLyc7Cit9CisKK3ZvaWQgVVJMOjpj
b3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiBhbGwgdGhlIGNoYXJhY3Rl
cnMgaW4gdGhlIHN0cmluZyEKKyAgICAvLyBUaGF0J3MgZmluZSBmb3IgYSB2YWxpZCBVUkwsIHdo
aWNoIGlzIGFsbCBBU0NJSSwgYnV0IG5vdCBmb3IgaW52YWxpZCBVUkxzLgorICAgIGJ1ZmZlci5y
ZXNpemUobV9zdHJpbmcubGVuZ3RoKCkpOworICAgIGNvcHlBU0NJSShtX3N0cmluZywgYnVmZmVy
LmRhdGEoKSk7Cit9CisKK2Jvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Y2hhciogcHJvdG9jb2wpCit7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtp
bmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2Nv
bCk7CisgICAgZm9yIChpbnQgaSA9IDA7IDsgKytpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xb
aV0pCisgICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6JzsKKyAgICAgICAgaWYgKCFpc0xl
dHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFtpXSwgcHJvdG9jb2xbaV0pKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKK3sKKyAgICAvLyBSRkMzOTg2OiBBTFBIQSAqKCBBTFBIQSAvIERJR0lU
IC8gIisiIC8gIi0iIC8gIi4iICkKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcihwcm90b2NvbFswXSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBwcm90b2NvbExlbmd0aCA9IHBy
b3RvY29sLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwcm90b2NvbExl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghaXNTY2hlbWVDaGFyKHByb3RvY29sW2ldKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNp
Zm5kZWYgTkRFQlVHCit2b2lkIFVSTDo6cHJpbnQoKSBjb25zdAoreworICAgIHByaW50ZigiJXNc
biIsIG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworfQorI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlz
KTsKKyAgICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNz
KFN0cmluZygpKTsKKyAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgp
IGNvbnN0Cit7CisgICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVh
IHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGlu
ZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxv
ZworICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBl
dmVuIHdpdGhvdXQgYSBkcm9wLgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJv
dG9jb2xJcygiZmlsZSIpOworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsK
K30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChV
UkwsIHN0YXRpY0JsYW5rVVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOworfQorCitib29sIFVSTDo6aXNCbGFua1VSTCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Cit9CisKK2Jvb2wgaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xkaW5n
SGFzaD4gRGVmYXVsdFBvcnRzTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBv
cnRzTWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKKyAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHko
KSkgeworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOworICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0
cCIsIDIxKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAgfQor
ICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworfQorCitib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHVuc2lnbmVkIHNob3J0IHBvcnQg
PSB1cmwucG9ydCgpOworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0
LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAoIXBvcnQpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRj
aGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgorICAgIC8vIFNl
ZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1s
IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBi
bG9ja2VkUG9ydExpc3RbXSA9IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAgIDcs
ICAgIC8vIGVjaG8KKyAgICAgICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAvLyBz
eXN0YXQKKyAgICAgICAgMTMsICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRzdGF0
CisgICAgICAgIDE3LCAgIC8vIHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAgICAg
ICAyMCwgICAvLyBGVFAtZGF0YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAgICAg
ICAyMiwgICAvLyBTU0gKKyAgICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAgIC8v
IFNNVFAKKyAgICAgICAgMzcsICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisgICAg
ICAgIDQzLCAgIC8vIG5pY25hbWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAgIDc3
LCAgIC8vIHByaXYtcmpzCisgICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4NywgICAv
LyB0dHlsaW5rCisgICAgICAgIDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBob3N0
cmlhbWUKKyAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3BwaXRu
cAorICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisgICAg
ICAgIDExMCwgIC8vIFBPUDMKKyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDExMywg
IC8vIGF1dGgKKyAgICAgICAgMTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNwLXBh
dGgKKyAgICAgICAgMTE5LCAgLy8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAgICAg
MTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAgICAg
ICAgMTQzLCAgLy8gSU1BUDIKKyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwgIC8v
IExEQVAKKyAgICAgICAgNDY1LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJpbnQg
LyBleGVjCisgICAgICAgIDUxMywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxsCisg
ICAgICAgIDUxNSwgIC8vIHByaW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAgICAg
NTMwLCAgLy8gY291cmllcgorICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwgIC8v
IG5ldG5ld3MKKyAgICAgICAgNTQwLCAgLy8gVVVDUAorICAgICAgICA1NTYsICAvLyByZW1vdGVm
cworICAgICAgICA1NjMsICAvLyBOTlRQK1NTTAorICAgICAgICA1ODcsICAvLyBFU01UUAorICAg
ICAgICA2MDEsICAvLyBzeXNsb2ctY29ubgorICAgICAgICA2MzYsICAvLyBMREFQK1NTTAorICAg
ICAgICA5OTMsICAvLyBJTUFQK1NTTAorICAgICAgICA5OTUsICAvLyBQT1AzK1NTTAorICAgICAg
ICAyMDQ5LCAvLyBORlMKKyAgICAgICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBhc3N3b3JkU2Vy
dmVyIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNDA0NSwgLy8gbG9ja2QKKyAgICAgICAgNjAw
MCwgLy8gWDExCisgICAgICAgIDY2NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9u
XQorICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAg
ICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OCwg
Ly8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjksIC8vIEFsdGVy
bmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8g
VXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKKyAgICB9OworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExp
c3QgKyBXVEZfQVJSQVlfTEVOR1RIKGJsb2NrZWRQb3J0TGlzdCk7CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgLy8gVGhlIHBvcnQgbGlzdCBtdXN0IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0
byB3b3JrLgorICAgIHN0YXRpYyBib29sIGNoZWNrZWRQb3J0TGlzdCA9IGZhbHNlOworICAgIGlm
ICghY2hlY2tlZFBvcnRMaXN0KSB7CisgICAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgc2hvcnQq
IHAgPSBibG9ja2VkUG9ydExpc3Q7IHAgIT0gYmxvY2tlZFBvcnRMaXN0RW5kIC0gMTsgKytwKQor
ICAgICAgICAgICAgQVNTRVJUKCpwIDwgKihwICsgMSkpOworICAgICAgICBjaGVja2VkUG9ydExp
c3QgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGlu
IHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCisgICAgaWYgKCFiaW5hcnlfc2VhcmNo
KGJsb2NrZWRQb3J0TGlzdCwgYmxvY2tlZFBvcnRMaXN0RW5kLCBwb3J0KSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBh
cyBNb3ppbGxhIGRvZXMuCisgICAgaWYgKChwb3J0ID09IDIxIHx8IHBvcnQgPT0gMjIpICYmIHVy
bC5wcm90b2NvbElzKCJmdHAiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGxv
dyBhbnkgcG9ydCBudW1iZXIgaW4gYSBmaWxlIFVSTCwgc2luY2UgdGhlIHBvcnQgbnVtYmVyIGlz
IGlnbm9yZWQuCisgICAgaWYgKHVybC5wcm90b2NvbElzKCJmaWxlIikpCisgICAgICAgIHJldHVy
biB0cnVlOworCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBpZiAodXJsLnByb3RvY29s
SXMoImxvY2FsIikpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIEFTU0VSVChwcm90b2NvbElzKHVybCwgImRhdGEiKSk7CisgICAgc2l6ZV90IGlu
ZGV4ID0gdXJsLmZpbmQoJzsnKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IGluZGV4ID0gdXJsLmZpbmQoJywnKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgaWYgKGluZGV4ID4gNSkKKyAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUs
IGluZGV4IC0gNSkubG93ZXIoKTsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsgLy8gRGF0
YSBVUkxzIHdpdGggbm8gTUlNRSB0eXBlIGFyZSBjb25zaWRlcmVkIHRleHQvcGxhaW4uCisgICAg
fQorICAgIHJldHVybiAiIjsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJvbVVSTChjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBTdHJpbmcgZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXModXJsLnBhdGgoKSk7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGRlY29kZWRQYXRoLnN1YnN0
cmluZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSk7CisKKyAgICAvLyBXZSBkb24n
dCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVzZSBpdCBy
ZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZQorICAgIHJldHVy
biBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwor
fQorCitib29sIFVSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Cit9CisKK1N0
cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0Cit7CisgICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIHN0cmluZygpOworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAt
IDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYzMTNlOWZlYzgxNjYzMWI0YTg3OGQwMjZkNWJl
ZjU5NTUzMmExOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oCkBAIC0wLDAgKzEsMzU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVUkxfaAorI2RlZmluZSBVUkxfaAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
I2lmIFVTRShDRikKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9O
QU1FU1BBQ0UKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRFbmNv
ZGluZzsKK3N0cnVjdCBVUkxIYXNoOworCitlbnVtIFBhcnNlZFVSTFN0cmluZ1RhZyB7IFBhcnNl
ZFVSTFN0cmluZyB9OworCitjbGFzcyBVUkwgeworcHVibGljOgorICAgIC8vIEdlbmVyYXRlcyBh
IFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgpIHsgaW52YWxpZGF0
ZSgpOyB9CisKKyAgICAvLyBUaGUgYXJndW1lbnQgaXMgYW4gYWJzb2x1dGUgVVJMIHN0cmluZy4g
VGhlIHN0cmluZyBpcyBhc3N1bWVkIHRvIGJlIG91dHB1dCBvZiBVUkw6OnN0cmluZygpIGNhbGxl
ZCBvbiBhIHZhbGlkCisgICAgLy8gVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJuaWJsZSBmcm9tIHN1
Y2guCisgICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVhdGVkbHkgcGFyc2lu
ZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhlIHBvc3NpYmxlIHNs
b3ctZG93bnMuCisgICAgVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJik7Cisg
ICAgZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKworICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0aGUgZ2l2
ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKKyAgICAvLyBUZXh0RW5jb2RpbmcgaXMgdXNl
ZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBiZQorICAg
IC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJl
IGludGVycHJldGVkIGFzCisgICAgLy8gYWJzb2x1dGUuCisgICAgLy8gRklYTUU6IElmIHRoZSBi
YXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQKKyAgICAv
LyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGlu
dmFsaWQgYmFzZSBVUkxzCisgICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBl
bXB0eSBiYXNlIFVSTHMuCisgICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSk7CisgICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CisKKyAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91
bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQorICAgIC8vIGJhc2Ugb2YgbnVsbCBv
ciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKKyAgICAvLyBz
dGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCisKKyAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4g
SGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCisgICAgLy8g
dGhyZWFkLiAgU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11
dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgY29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCisgICAgVVJMIGNvcHkoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91IGNhbiBz
ZXQgdGhlIGhvc3QgYW5kIHBvcnQgZm9yIHRoZSBVUkwuCisgICAgLy8gTm9uLWhpZXJhcmNoaWNh
bCBVUkxzIGRvbid0IGhhdmUgYSBob3N0IGFuZCBwb3J0LgorICAgIGJvb2wgY2FuU2V0SG9zdE9y
UG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKworICAgIGJvb2wgY2Fu
U2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAgYm9v
bCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorCisgICAgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKKworICAgIFN0cmlu
ZyBwcm90b2NvbCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0KCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgc2hvcnQgcG9ydCgpIGNvbnN0OworICAgIGJvb2wgaGFzUG9ydCgpIGNvbnN0OworICAgIFN0
cmluZyB1c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBTdHJpbmcg
cGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAg
IFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgU3Ry
aW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworCisgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkg
Y29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9j
b2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1
bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KKyAgICBib29sIHByb3RvY29s
SXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7
IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KKyAgICBib29sIHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSBjb25zdDsKKyAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAgYm9vbCBp
c0JsYW5rVVJMKCkgY29uc3Q7CisKKyAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgcmVtb3ZlUG9y
dCgpOworICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisKKyAgICAvLyBJbnB1dCBp
cyBsaWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KKyAgICB2b2lkIHNldEhvc3RBbmRQ
b3J0KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIElmIHlvdSBwYXNzIGFu
IGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCisg
ICAgLy8gd2lsbCBiZSAiLyIuCisgICAgdm9pZCBzZXRQYXRoKGNvbnN0IFN0cmluZyYpOworCisg
ICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywgb3IsIGlmIG5v
dCwgb25lIHdpbGwgYmUgYWRkZWQKKyAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRoZSBxdWVyeSB0
byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCisgICAgLy8gVVJMICh3
aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3MgYSBudWxsIHN0
cmluZy4KKyAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKKworICAgIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBmcmllbmQgYm9vbCBwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICB1
bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBob3N0RW5kKCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoRW5k
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKKyAg
ICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKwor
I2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFVS
TChOU1VSTCopOworICAgIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OworI2VuZGlmCisjaWZkZWYg
X19PQkpDX18KKyAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmco
KTsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkKKyAgICBVUkwoY29uc3QgUVVybCYpOwor
ICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKKyNlbmRpZgorCisgICAgY29uc3QgVVJMKiBpbm5l
clVSTCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHBy
aW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgc3Rh
dGljIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisgICAgdm9p
ZCBpbml0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwor
ICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Owor
CisgICAgLy8gUGFyc2VzIHRoZSBnaXZlbiBVUkwuIFRoZSBvcmlnaW5hbFN0cmluZyBwYXJhbWV0
ZXIgYWxsb3dzIGZvciBhbgorICAgIC8vIG9wdGltaXphdGlvbjogV2hlbiB0aGUgc291cmNlIGlz
IHRoZSBzYW1lIGFzIHRoZSBmaXhlZC11cCBzdHJpbmcsCisgICAgLy8gaXQgd2lsbCB1c2UgdGhl
IHBhc3NlZC1pbiBzdHJpbmcgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IG9uZS4KKyAgICB2
b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcGFyc2UoY29uc3QgY2hhciogdXJs
LCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nID0gMCk7CisKKyAgICBib29sIGhhc1BhdGgo
KSBjb25zdDsKKworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBib29sIG1faXNWYWxpZCA6IDE7
CisgICAgYm9vbCBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgOiAxOworCisgICAgaW50IG1fc2No
ZW1lRW5kOworICAgIGludCBtX3VzZXJTdGFydDsKKyAgICBpbnQgbV91c2VyRW5kOworICAgIGlu
dCBtX3Bhc3N3b3JkRW5kOworICAgIGludCBtX2hvc3RFbmQ7CisgICAgaW50IG1fcG9ydEVuZDsK
KyAgICBpbnQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgaW50IG1fcGF0aEVuZDsKKyAgICBp
bnQgbV9xdWVyeUVuZDsKKyAgICBpbnQgbV9mcmFnbWVudEVuZDsKK307CisKK2Jvb2wgb3BlcmF0
b3I9PShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKKworYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKK2NvbnN0IFVSTCYgYmxhbmtVUkwo
KTsKKworLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBU
aGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgor
Ly8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhh
dCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJs
ZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2
YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwu
CisKK2Jvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9j
b2wpOworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CisKK2Jv
b2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOworYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2ts
aXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCisK
K2Jvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitTdHJpbmcgbWltZVR5cGVG
cm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CitTdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNv
bnN0IFVSTCYpOworCisvLyBVbmVzY2FwZXMgdGhlIGdpdmVuIHN0cmluZyB1c2luZyBVUkwgZXNj
YXBpbmcgcnVsZXMsIGdpdmVuIGFuIG9wdGlvbmFsCisvLyBlbmNvZGluZyAoZGVmYXVsdGluZyB0
byBVVEYtOCBvdGhlcndpc2UpLiBEQU5HRVI6IElmIHRoZSBVUkwgaGFzICIlMDAiCisvLyBpbiBp
dCwgdGhlIHJlc3VsdGluZyBzdHJpbmcgd2lsbCBoYXZlIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVy
cyEKK1N0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CitTdHJp
bmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNv
ZGluZyYpOworCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmKTsKKworLy8gSW5saW5lcy4KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygp
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5n
JiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Cit9CisKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEg
PT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwor
fQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBi
KQoreworICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgIT0g
Yi5zdHJpbmcoKTsKK30KKworLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVS
TCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZworLy8gd2l0aG91dCBoYXZpbmcgdG8g
aGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKworaW5s
aW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5pc051
bGwoKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcuaXNFbXB0eSgpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzVmFsaWQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFz
UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX3BvcnRFbmQ7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzUG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faG9zdEVu
ZCA8IG1fcG9ydEVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OworfQor
CitpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0U3RhcnQoKSBjb25zdAoreworICAgIHJldHVybiAo
bV9wYXNzd29yZEVuZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29y
ZEVuZCArIDE7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6Omhvc3RFbmQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2hvc3RFbmQ7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFy
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9ydEVuZDsKK30KKworaW5saW5lIHVuc2lnbmVk
IFVSTDo6cGF0aEVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZDsKK30KKworaW5s
aW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
bmFtZXNwYWNlIFdURiB7CisKKyAgICAvLyBVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9y
IFN0cmluZworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKKyAgICAgICAg
dHlwZWRlZiBXZWJDb3JlOjpVUkxIYXNoIEhhc2g7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKKyNlbmRpZiAvLyBVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlZGM0ZjM4NTMwNWMzYjJiZWNkMjk2ZjY5ZWU1MmQwOGE4MmY5NjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFVSTEhhc2hfaAorI2RlZmluZSBVUkxIYXNoX2gKKworI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3RydWN0IFVSTEhhc2ggeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwg
Yi5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFdlYkNvcmU6OlVSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVJMSGFzaF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgKaW5kZXggNDY5
ZjlkYjU4NDU1Yjc4Y2NmYmVmYWUyZWEyYjcyYmVhMWNmYTMwYy4uOTJkNGY3YzYzYjNmMTBmMzdl
NTE3MzM3ZGFhZTBjZTRiMzBhNjhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
c2l0ZWRMaW5rU3RyYXRlZ3kuaApAQCAtMzAsMTEgKzMwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBLVVJM
OworY2xhc3MgVVJMOwogCiBjbGFzcyBWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChQYWdlKiwgTGlua0hhc2gsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UqLCBMaW5rSGFzaCkgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9B
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBjMzA5NjQ5ZDljODIyOTA0NDE2MTcx
ODJlNDNiZjE4NGZhNWZlZTg4Li4yMzgyZGI4ODMwNzVlOTBiMTk2NTVmMjhiYTU3NzdlMWY2MjY4
NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTI2LDExICsyNiwxMSBA
QAogI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW1CYXNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0
ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9w
ZW5GaWxlU3lzdGVtKGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgs
IGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgaW50IHBsYXllcklkLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBl
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgaW50IHBsYXllcklkLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlk
ZW50aWZpZXIsIHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKSwgc2l6ZSwgY3JlYXRlLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCByb290VVJMKSwgcGxheWVySWQpOwogfQpAQCAtNzgsNjcgKzc4
LDY3IEBAIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6On5Bc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5KCkKIHsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojptb3ZlKGNvbnN0
IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1Bh
dGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3
IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0
Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRoKSwgZmls
ZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6cmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlbW92ZShmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVt
b3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZp
bGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGV4Y2x1c2l2ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShm
aWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5m
aWxlRXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmls
ZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1f
cGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0
aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyOjpjcmVhdGVXcml0
ZXIobV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCks
IG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNsaWVudCkp
OwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcykpOwogfQogCi1TdHJpbmcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Zmls
ZVN5c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBVUkwmIHVybCkKIHsKICAgICBG
aWxlU3lzdGVtVHlwZSB0eXBlOwogICAgIFN0cmluZyBmdWxsUGF0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmgKaW5kZXggOGYzNmVkMmVlZDY5N2FlZGJmNjZkOTFhN2Y3NWYxNDY5MDE1MjM0
ZS4uZjRjZmMzNDcyNDMxMGY2OTExMjk3ZGFjMjg1ZjA2MzQ3YjkzOGFjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVR5
cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgpAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KHBsYXRmb3JtRmlsZVN5c3RlbSkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBv
cGVuRmlsZVN5c3RlbShjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgs
IGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxv
bmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
KCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJl
Y3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJl
Y3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rv
cnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCos
IGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNv
bnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByb3RlY3RlZDoKICAgICBBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5KFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgc3RhdGljIFN0cmluZyBmaWxlU3lz
dGVtVVJMVG9QYXRoKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGZpbGVTeXN0ZW1V
UkxUb1BhdGgoY29uc3QgVVJMJik7CiAKICAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0+IG1fcGxhdGZvcm1GaWxlU3lzdGVtOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcAppbmRleCA5OTEwYTY4YTc2ZDM5NzQwZmM1ZDg0MDA2
ZWI0MWMwODM5ODdjMjcwLi5lYmM3NDkyYmZlMzA5ZmU1NjVlYzJhMTA4OTMwYjRkMTAyNWVmZmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCkBAIC0yMCw3ICsy
MCw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgiCiAKICNp
bmNsdWRlICJDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlv
blNwYWNlLmgiCiAKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdHlwZWRl
ZiBIYXNoTWFwPFBhZ2VDbGllbnRCbGFja0JlcnJ5KiwgYm9vbD4gUGFnZVZpc2liaWxpdHlNYXA7
CiAKIHN0cnVjdCBDaGFsbGVuZ2VJbmZvIHsKLSAgICBDaGFsbGVuZ2VJbmZvKGNvbnN0IEtVUkwm
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworICAgIENoYWxsZW5n
ZUluZm8oY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlh
bCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkq
KTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgUHJvdGVjdGlvblNwYWNlIHNw
YWNlOwogICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudCogYXV0aENsaWVudDsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENoYWxsZW5n
ZUluZm8gewogICAgIGJvb2wgYmxvY2tlZDsKIH07CiAKLUNoYWxsZW5nZUluZm86OkNoYWxsZW5n
ZUluZm8oY29uc3QgS1VSTCYgYVVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhU3BhY2UsIGNv
bnN0IENyZWRlbnRpYWwmIGFDcmVkZW50aWFsLAorQ2hhbGxlbmdlSW5mbzo6Q2hhbGxlbmdlSW5m
byhjb25zdCBVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYVNwYWNlLCBjb25zdCBD
cmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dCogYW5BdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSogYVBhZ2VDbGllbnQpCiAgICAg
OiB1cmwoYVVybCkKICAgICAsIHNwYWNlKGFTcGFjZSkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6cGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBh
Z2VDbGllbnRCbGFja0JlcnJ5KgogICAgIGQtPnJlc3VtZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNsaWVudCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjphdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgc3BhY2UsCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgc3Bh
Y2UsCiAgICAgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQqIGF1dGhDbGllbnQsIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBwYWdlQ2xpZW50
KQogewogICAgIEJMQUNLQkVSUllfQVNTRVJUKGF1dGhDbGllbnQpOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpjYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvCiAgICAgICAgIGQtPnN0YXJ0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UobmV4dCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5h
Z2VyOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgc3BhY2UsCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgc3BhY2Us
CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQogewogICAgIGQtPm1fYWN0aXZlQ2hhbGxlbmdlID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCmluZGV4IDNhZmM4ZTUyNTNhYTQ3MGRjNzZl
ZmMxYTQ5ODgzZWY2YWE3YzU0MDcuLjg0ZDc5NDRlY2NlM2YyYWE4YWY5ZWI2MWYzZmU4YWYzMDhk
MTkxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaApAQCAtMjgsNyAr
MjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlTWFuYWdlclByaXZhdGU7CiBjbGFzcyBDcmVkZW50aWFsOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAogZW51bSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVJlc3VsdCB7CkBAIC0zOCw3ICszOCw3IEBAIGVudW0gQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VSZXN1bHQgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNv
bnN0IENyZWRlbnRpYWwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJl
c3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpID0gMDsKIH07CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlciA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VGhyZWFkVW5zYWZlU2luZ2xldG9uPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcj4gewpA
QCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlRGVsZXRlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSopOwogICAgIHZvaWQgcGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBhZ2VDbGllbnRC
bGFja0JlcnJ5KiwgYm9vbCB2aXNpYmxlKTsKIAotICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRp
YWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRCbGFja0JlcnJ5
Kik7CisgICAgdm9pZCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBVUkwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOwogICAgIHZvaWQgY2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqKTsKLSAgICB2
b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsK
KyAgICB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlh
bCYpOwogCiBwcml2YXRlOgogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdl
ci5jcHAKaW5kZXggMTcyMjY1NTQzZDMwZTAzNTNiMWY3MzIyYjZlZDZlNWVmYzc5OWQ4NS4uOWVi
Zjc3NDY4MjQ0ZjE0MDc5ZDZkM2M0MzNhZGVkNGYyZGM3ZGM5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlU2NoZW1lKGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCiAgICAgcmV0dXJuIHByb3RvY29sID09ICJmaWxlIiB8fCBwcm90b2NvbCA9PSAi
bG9jYWwiOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29r
aWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBDb29raWVGaWx0ZXIgZmlsdGVyKQogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3Qg
YmVlbiBzeW5jLWVkIGF0IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFt
X3N5bmNlZFdpdGhEYXRhYmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZQogICAgIH0KIH0KIAotdm9pZCBDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tp
ZXMsIENvb2tpZUZpbHRlciBmaWx0ZXIpCit2b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0
ZXIgZmlsdGVyKQogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3QgYmVlbiBzeW5jLWVk
IGF0IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhE
YXRhYmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIENvb2tp
ZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29va2llcywgQwogICAgIH0KIH0KIAotU3RyaW5nIENvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZShjb25zdCBLVVJMJiB1cmwsIENvb2tpZUZpbHRlciBmaWx0ZXIpIGNvbnN0CitTdHJpbmcgQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llKGNvbnN0IFVSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVy
KSBjb25zdAogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3QgYmVlbiBzeW5jLWVkIGF0
IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhEYXRh
YmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBTdHJpbmcgQ29va2ll
TWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0
cjxQYXJzZWRDb29raWU+ID4gJnN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
LCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAordm9pZCBDb29raWVNYW5hZ2VyOjpnZXRSYXdD
b29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+ICZzdGFja09mQ29va2llcywgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAogewogICAgIC8v
IEZvcmNlIGEgc3luYyBsb2FkIG9mIHRoZSBkYXRhYmFzZQogICAgIGlmICghbV9zeW5jZWRXaXRo
RGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC01ODksMTMgKzU4OSwxMyBAQCBDb29raWVN
YXAqIENvb2tpZU1hbmFnZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcChDb29raWVNYXAqIHByb3Rv
Y29sTWFwLCBjb25zdCBQYQogICAgIHJldHVybiBjdXJNYXA7CiB9CiAKLXZvaWQgQ29va2llTWFu
YWdlcjo6cmVtb3ZlQ29va2llV2l0aE5hbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpCit2b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUNvb2tpZVdpdGhOYW1lKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgLy8gRGlzcGF0
Y2ggdGhlIG1lc3NhZ2UgYmVjYXVzZSB0aGUgZGF0YWJhc2UgY29va2llcyBhcmUgbm90IGxvYWRl
ZCBpbiBtZW1vcnkgeWV0LgogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYgIW1fcHJp
dmF0ZU1vZGUpIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkIChXZWJDb3JlOjpDb29raWVNYW5hZ2Vy
OjoqRnVuY3Rpb25UeXBlKShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIHR5
cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6KkZ1bmN0aW9uVHlwZSkoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJL
aXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZSgKLSAgICAgICAgICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RDYWxsTWVzc2FnZTxGdW5jdGlvblR5cGUs
IENvb2tpZU1hbmFnZXIsIGNvbnN0IEtVUkwsIGNvbnN0IFN0cmluZz4oCisgICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBl
LCBDb29raWVNYW5hZ2VyLCBjb25zdCBVUkwsIGNvbnN0IFN0cmluZz4oCiAgICAgICAgICAgICAg
ICAgJkNvb2tpZU1hbmFnZXI6OnJlbW92ZUNvb2tpZVdpdGhOYW1lLCB0aGlzLCB1cmwsIGNvb2tp
ZU5hbWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKaW5kZXggMGQ2OTBmYzY5MWMyNzUy
N2FjNjI4NTIxMDMyNTdkNTEzNzBhZDk1MS4uZGFmMDFiYjAyNTQ1M2ZmNDYyNzNkODMxMzJmYmRi
MGNhZjBiNjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
VVJMOwogCiBlbnVtIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kgewogICAgIFJlbW92ZUZyb21C
YWNraW5nU3RvcmUsCkBAIC03MCwxMSArNzAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgY2FuTG9j
YWxBY2Nlc3NBbGxDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxsQ29va2ll
czsgfQogICAgIHZvaWQgc2V0Q2FuTG9jYWxBY2Nlc3NBbGxDb29raWVzKGJvb2wgZW5hYmxlZCkg
eyBtX3Nob3VsZER1bXBBbGxDb29raWVzID0gZW5hYmxlZDsgfQogCi0gICAgdm9pZCBzZXRDb29r
aWVzKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgPSBXaXRo
SHR0cE9ubHlDb29raWVzKTsKLSAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgS1VSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0ZXIpOworICAgIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgPSBXaXRo
SHR0cE9ubHlDb29raWVzKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZXMsIENvb2tpZUZpbHRlcik7CiAKICAgICB2b2lkIHJlbW92
ZUFsbENvb2tpZXMoQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7Ci0gICAgdm9pZCByZW1vdmVD
b29raWVXaXRoTmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAg
ICB2b2lkIHJlbW92ZUNvb2tpZVdpdGhOYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBjb29raWVzQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvdW50OyB9CiAKQEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcml2YXRlTW9kZShib29sKTsKIAogICAgIFN0cmluZyBnZW5lcmF0ZUh0bWxGcmFnbWVudEZv
ckNvb2tpZXMoKTsKLSAgICBTdHJpbmcgZ2V0Q29va2llKGNvbnN0IEtVUkwmIHJlcXVlc3RVUkws
IENvb2tpZUZpbHRlcikgY29uc3Q7CisgICAgU3RyaW5nIGdldENvb2tpZShjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIENvb2tpZUZpbHRlcikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIGFsbCBjb29r
aWVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIFVSTCBhcyByYXcgY29v
a2llcy4KLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+
ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIg
PSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIENvb2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBDb29raWVNYW5hZ2VyJiBjb29raWVNYW5hZ2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAK
aW5kZXggZWE5MGNhOGVmMmJhYmJmYWE0ZTRiMzE3NDljMzNmMmVjYTgyMjdjYS4uMTcwMGY0OTlj
OWFjOGYxYmUyNWRkZTc3ODZmOGE0MjhmZmM5OGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNMaWdodHdlaWdodFNwYWNlKFVDaGFyIGMpCiAgICAgcmV0
dXJuIChjID09ICcgJyB8fCBjID09ICdcdCcpOwogfQogCi1Db29raWVQYXJzZXI6OkNvb2tpZVBh
cnNlcihjb25zdCBLVVJMJiBkZWZhdWx0Q29va2llVVJMKQorQ29va2llUGFyc2VyOjpDb29raWVQ
YXJzZXIoY29uc3QgVVJMJiBkZWZhdWx0Q29va2llVVJMKQogICAgIDogbV9kZWZhdWx0Q29va2ll
VVJMKGRlZmF1bHRDb29raWVVUkwpCiB7CiAgICAgbV9kZWZhdWx0Q29va2llSG9zdCA9IGRlZmF1
bHRDb29raWVVUkwuaG9zdCgpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8UGFyc2Vk
Q29va2llPiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
LCB1bnNpCiAgICAgICAgIGNhc2UgJ1AnOgogICAgICAgICBjYXNlICdwJyA6IHsKICAgICAgICAg
ICAgIGlmIChsZW5ndGggPj0gNCAmJiAoKGNvb2tpZS5maW5kKCJhdGgiLCB0b2tlblN0YXJ0U3Zn
ICsgMSwgZmFsc2UpIC0gdG9rZW5TdGFydFN2ZykgPT0gMSkpIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRoZSBwYXRoIHRvIGJlIGRlY29kZWQgdG8gbWF0Y2ggdGhvc2UgcmV0dXJuZWQg
ZnJvbSBLVVJMOjpwYXRoKCkuCisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcGF0aCB0
byBiZSBkZWNvZGVkIHRvIG1hdGNoIHRob3NlIHJldHVybmVkIGZyb20gVVJMOjpwYXRoKCkuCiAg
ICAgICAgICAgICAgICAgLy8gVGhlIHBhdGggYXR0cmlidXRlIG1heSBvciBtYXkgbm90IGluY2x1
ZGUgcGVyY2VudC1lbmNvZGVkIGNoYXJhY3RlcnMuIEZvcnR1bmF0ZWx5CiAgICAgICAgICAgICAg
ICAgLy8gaWYgdGhlcmUgYXJlIG5vIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0ZXJzLCBkZWNvZGlu
ZyB0aGUgdXJsIGlzIGEgbm8tb3AuCiAgICAgICAgICAgICAgICAgcmVzLT5zZXRQYXRoKGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXJzZWRWYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKaW5kZXggYzk0NGY4NjMwMTg1MDE0
N2Y0ZWVkNWZmNTI0Y2I2ZDJiZDlkMDY3Yy4uMmIwYjUyYWUwNzhhNmY0ZWRiYzE1OTg4ZDM4YjZm
NGEyMjY4MGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0Nvb2tpZVBhcnNlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIENvb2tpZVBhcnNlcl9o
CiAjZGVmaW5lIENvb2tpZVBhcnNlcl9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgUGFyc2VkQ29va2llOwogCiBjbGFzcyBDb29raWVQYXJzZXIgewog
cHVibGljOgotICAgIENvb2tpZVBhcnNlcihjb25zdCBLVVJMJiBkZWZhdWx0Q29va2llVVJMKTsK
KyAgICBDb29raWVQYXJzZXIoY29uc3QgVVJMJiBkZWZhdWx0Q29va2llVVJMKTsKICAgICB+Q29v
a2llUGFyc2VyKCk7CiAKICAgICAvLyBQYXJzZXMgYSBzZXF1ZW5jZSBvZiAiQ29va2llOiIgaGVh
ZGVyIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBjb29raWVzLgpAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBjdXJUaW1lLCBzdGFydCwgZW5kIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlbW92ZWQuIEFuZCB0aGlzIG1ldGhvZCBjYW4gYmUgcHVibGljLgogICAgIFBhc3NSZWZQ
dHI8UGFyc2VkQ29va2llPiBwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgZG91YmxlIGN1clRpbWUpOwogCi0gICAgS1VSTCBt
X2RlZmF1bHRDb29raWVVUkw7CisgICAgVVJMIG1fZGVmYXVsdENvb2tpZVVSTDsKICAgICBTdHJp
bmcgbV9kZWZhdWx0Q29va2llSG9zdDsKICAgICBib29sIG1fZGVmYXVsdERvbWFpbklzSVBBZGRy
ZXNzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
RE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggYzJhMmIyNDA4MDRhOGEw
MjJmYjkwZDNhMzc3MjcxMjc1NDVmNGUzNy4uY2ZmYjlmYWQ5NTNhNjgzOTZhY2VhYzdlZmM4MjI0
YmZmMDc3M2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1LVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVh
dGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CitVUkwgRE9NRmls
ZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUoZnVsbFBhdGgpKTsK
IApAQCAtMzgsNyArMzgsNyBAQCBLVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lz
dGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Y29tcGxldGVVUkwobV9maWxlc3lzdGVtUm9vdFVSTC5zdHJpbmcoKSArIGVuY29kZVdpdGhV
UkxFc2NhcGVTZXF1ZW5jZXMoZnVsbFBhdGgpKTsKIH0KIAotYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5
cGUsIFN0cmluZyYgZmlsZVBhdGgpCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVT
eXN0ZW1VUkwoY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmICghdXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQsNyArNTQsNyBAQCBib29sIERPTUZpbGVTeXN0ZW1CYXNl
OjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlw
ZQogCiAgICAgICAgIGZpbGVQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRo
KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEtVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsLnBhdGgoKSk7CisgICAgICAgIFVSTCBvcmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwucGF0aCgpKTsKICAgICAgICAgU3RyaW5nIHBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMob3JpZ2luVVJMLnBhdGgoKSk7CiAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRo
WzBdICE9ICcvJykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJs
YWNrQmVycnkuY3BwCmluZGV4IGJlOGQxYzhkOWI3YzEzYzg3YmU2MGQ1NzdmY2Y3ZDRjZWEzYWM1
OTIuLmQ0ZDEyZWE1MDhiNDA0OGRjYzYxYmI0ODI0N2RiYzMxOTZjMDkyNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNrQmVycnkuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9p
ZCBvcGVuRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIGJhc2VQYQogICAgIGlmICh0eXBlID09IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gY29udGV4dC0+dXJsKCk7CisgICAgVVJM
IHVybCA9IGNvbnRleHQtPnVybCgpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICB1cmwuc2V0
UXVlcnkoU3RyaW5nKCkpOwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5
c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGJhc2VQ
YQogICAgIGJ1aWxkZXIuYXBwZW5kKCJmaWxlc3lzdGVtOiIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KHVybC5zdHJpbmcoKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoZmlsZVN5c3RlbVR5cGVTdHJpbmco
dHlwZSkpOwotICAgIEtVUkwgcm9vdFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgIEFTU0VSVChyb290VVJMLmlzVmFsaWQoKSk7CiAKICAgICAv
LyBUT0RPOiBBc2sgdXNlciBmb3IgZmlsZSBzeXN0ZW0gcGVybWlzc2lvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVy
cnkuaAppbmRleCBkNDBlZjhiZDY0MWU5M2ZjNzY1YzE0Y2M2ODQ5ZmZhNzEzZjA2MmM2Li43MzRk
ZDE1ZDc1ZmIxNzZiOTEwMzc2NDZhMTgwYmRhYWI5ODdiNjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Owog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBQcm90ZWN0aW9uU3Bh
Y2U7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzaG93QWxl
cnREaWFsb2coQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50OjpBbGVydFR5cGUpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7
CiAgICAgdmlydHVhbCBTYXZlQ3JlZGVudGlhbFR5cGUgbm90aWZ5U2hvdWxkU2F2ZUNyZWRlbnRp
YWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJveHlDcmVkZW50aWFsKGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwCmluZGV4IGNmYTc0MzRjZGEzMjZh
NDk4ODNlOTYxMGY2ZWRhMTVkNTVhNjhjMmUuLjhjMTg2NzM2OTIxMTM0NWVjZjRiNTQ4ZGFlNWI5
NWM0NjgxZWYyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGFyc2VkQ29va2llLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BhcnNlZENvb2tpZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJQYXJzZWRD
b29raWUuaCIKIAogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPGN1cmwv
Y3VybC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmgKaW5kZXggYmNjNzkxNjhiZGZm
YmIwY2Y0YzhmYjJhNTQ5NzlkMGJhOTYxODBjZi4uNTZjNTI5YWExOTg3OWQ2Y2QzZTM4YWU2N2M4
ZDdlMDdkZWIxMTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXJzZWRDb29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BhcnNlZENvb2tpZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFN0cmluZzsKIH0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogLy8gVGhpcyBj
bGFzcyByZXByZXNlbnRzIGEgY29va2llIGludGVybmFsbHkKIC8vIEl0IGNhbiBlaXRoZXIgYmUg
Y3JlYXRlZCBieSB0aGUgQ29va2llUGFyc2VyIHdoaWNoIHdpbGwgdGhlbiBmaWxsIGl0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2Fy
ZEJsYWNrQmVycnkuY3BwCmluZGV4IDBiNTNlMWU1YmUxZDM3MDMwODE4ODYyNzAxMDE5MGM3OGNm
NDFmNjUuLmYyNWVlNGIxNDI1OGM3MGRkMzhhODdlNjU5MDAzNmMwZDZkNTQ1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2Fy
ZEJsYWNrQmVycnkuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OmNsZWFyKCkKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBi
b2FyZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIEtVUkwgY29u
c3QmLCBTdHJpbmcgY29uc3QmKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBV
UkwgY29uc3QmLCBTdHJpbmcgY29uc3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMWFmYjVmNTk1N2E2
Nzg2NDM4YTBhNmM5ZDU0ODg5NzJiMmY5MTMzNy4uMzQwNDQ5ZjBkYzY0NDg5ODJiODYxNjljOTg5
ZWUwZTE5YzliOWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUg
IkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFzeW5jRmls
ZVdyaXRlckNsaWVudDsKIAogY2xhc3MgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBw
dWJsaWM6Ci0gICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgS1VSTCYgcm9vdFVSTCA9
IEtVUkwoKSkKKyAgICBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBVUkwmIHJvb3RVUkwg
PSBVUkwoKSkKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgICAgICwgbV93
cml0ZXJDbGllbnQoMCkKICAgICAgICAgLCBtX3Jvb3RVUkwocm9vdFVSTCkKQEAgLTcwLDcgKzcw
LDcgQEAgcHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVdyaXRlckNsaWVudCogbV93cml0ZXJDbGll
bnQ7CiAKIHByaXZhdGU6Ci0gICAgS1VSTCBtX3Jvb3RVUkw7CisgICAgVVJMIG1fcm9vdFVSTDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9yQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnku
Y3BwCmluZGV4IDFhMzE5ODcxYjZlMDY2YjAwNWVjZDY3Nzk3ZTNkY2EyYzNlMjUwZWQuLmUxZDMz
OTkxMDg3NjNiMzU5NGQzZWE1YWYzNDZhOWRmMjY1MGNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9yQmxhY2tCZXJyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5lcmF0b3JC
bGFja0JlcnJ5LmNwcApAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzEsNyArMzEsNyBAQCB2
b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkLCBTdHJpbmcgY29uc3QmLCBLVVJMIGNvbnN0JikKK1N0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIFN0cmluZyBjb25zdCYsIFVSTCBjb25zdCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBkYTM5MTE1NzIzMWMxNmI1
Y2MwYjAwNzlkZDMxZDVhOTc4MmVkYThhLi41NWZhOWY3YTMzZDNmMDgwZDM0MjYyMzBjN2RiYTg5
Mzk1NDc3MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAK
QEAgLTY5LDY3ICs2OSw2NyBAQCB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmRlbGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aQogICAgIFdlYkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0od2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNl
UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+
KHR5cGUpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6Om1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpt
b3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBw
bGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1Bh
dGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgY2Fs
bGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxl
U3lzdGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRo
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewog
ICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y29weShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBh
dGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNhbGxiYWNrcyk7CiB9
CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lz
dGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAg
ICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3Rl
bSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBL
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQog
ewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRo
KHBhdGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNr
cykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3Rz
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmZp
bGVFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmls
ZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0
Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25z
dCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0
ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQq
LCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCiB7CiAgICAgV2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKHBsYXRmb3Jt
RmlsZVN5c3RlbSwgZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
Om9wZW5GaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBLVVJMJiBy
b290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0
IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZp
bGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFVSTCYgcm9vdFVSTCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
Ym9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGJhc2VQYXRoLCBzdG9yYWdlSWRlbnRpZmllciwgdHlwZSwg
c2l6ZSwgY3JlYXRlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzLCBjb250ZXh0LCBtb2RlLCByb290VVJMKSkpOwpAQCAtMTQxLDYyICsxNDEsNjIg
QEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxlU3lzdGVt
KFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXgKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRlbGV0ZUZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGJhc2VQYXRoLCBzdG9yYWdlSWRlbnRpZmllciwgdHlwZSwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY29u
dGV4dCwgbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
Ojptb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBh
dGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZU9uTWFp
blRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHNvdXJjZVBhdGgsIGRlc3RpbmF0
aW9uUGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6Y29weShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBk
ZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3Qg
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNvcHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQ
YXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNr
VG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6cmVtb3ZlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwg
cGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNr
cywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBv
c3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCwgbV9wbGF0Zm9y
bUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZp
bGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0
ZUZpbGVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBleGNs
dXNpdmUsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0
IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3Rv
cnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBleGNsdXNp
dmUsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpm
aWxlRXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9j
b250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdl
dCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RU
YXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0
ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBjbGllbnQsIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNsaWVudCwgbV9jb250ZXh0LCBtX21vZGUpKSk7
CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFP
bk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1f
bW9kZSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgKaW5kZXgg
MTY1MWE1Y2U5YTA1NjliMzRmYTI1YTYwMTQyOGU3OTk5NDE1MmRhZC4uOTQxZjc1N2QwN2RiNzEz
NTBjMWZiMGNiOTg3ZTRkZDEwZTZmMDg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmgKQEAgLTQxLDM5ICs0MSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShjb250ZXh0LCBtb2Rl
LCBwbGF0Zm9ybUZpbGVTeXN0ZW0pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmls
ZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBv
cGVuRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFVSTCYgcm9vdFVSTCwgY29u
c3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2
b2lkIGRlbGV0ZUZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1v
ZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwogICAgIHZpcnR1YWwgfldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoKTsKICAgICB2
aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25Q
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3Qg
S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBw
YXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3Rv
cnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIG1vdmUo
Y29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weShj
b25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5j
RmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5k
UmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5KFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBQYXNzT3duUHRyPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwog
ICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1UeXBlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwot
ICAgIHN0YXRpYyB2b2lkIG1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgc291cmNl
UGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
KiwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vy
c2l2ZWx5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgcmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJl
Y3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZv
aWQgZmlsZUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGRpcmVj
dG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWREaXJl
Y3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVXcml0ZXJP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0
aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMg
dm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKKyAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgc291
cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJz
aXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9y
eU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGZp
bGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGRpcmVjdG9yeUV4
aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVh
dGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJM
JiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogCiAgICAg
V29ya2VyR2xvYmFsU2NvcGUqIG1fY29udGV4dDsKICAgICBTdHJpbmcgbV9tb2RlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IGIzNTA4
MmY1YWU1OTZhMTI5YTY1MTdlNWQxYTdiNzI1MmYxNTRjMjguLmRmMTFkN2I5NWM5NmQ5NGM5MWYz
MWNkMDc2ZGMxMTcwYmE5YTMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTU0LDExICs1NCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBc3luY0ZpbGVXcml0ZXJDbGll
bnQqPiA6CiAKIHZvaWQgcG9zdFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPik7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNz
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOiBwdWJsaWMgUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MsIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2
ZXIgewogcHVibGljOgotICAgIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckds
b2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IEtVUkwmIHJvb3RV
UkwgPSBLVVJMKCkpCisgICAgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgV29ya2VyR2xv
YmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgVVJMJiByb290VVJM
ID0gVVJMKCkpCiAgICAgICAgIDogUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCByb290VVJMKQogICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihj
b250ZXh0KQogICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tVUkxDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYjdj
ZmU5YzhhYjkxNjc2ZTE4ZTI4MDIwNDJmMTBhNTQ2NTU4N2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VS
TENGTmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVk
ZSAiQ0ZVUkxFeHRyYXMuaCIKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKENGVVJMUmVmIHVybCkKLXsKLSAgICBpZiAo
IXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwotICAg
IENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Ci0gICAg
cGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi1SZXRhaW5Q
dHI8Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
V2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8KLSAgICAvLyBDdXJyZW50
bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZyBpbiB0aGF0IGNhc2UsCi0gICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KLSAg
ICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKLSAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICBy
ZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Ci17Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Ci0gICAgaWYgKCFj
ZlVSTCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0jaWYgUExBVEZPUk0oV0lOKQotICAg
IENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7Ci0jZWxz
ZQotICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwot
I2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoY2ZVUkwu
Z2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9V
UkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMyZWYyODlkMjNhN2U3Zjc1NWJjODkwYTkzZWE5NjlkNTkw
OTY0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlVSTC5oIgorCisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKyNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitV
Ukw6OlVSTChDRlVSTFJlZiB1cmwpCit7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBp
dCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAg
IGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOworICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7
Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4g
Zm9yIGludmFsaWQgVVJMcz8KKyAgICAvLyBDdXJyZW50bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhp
Z2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBpbiB0aGF0IGNhc2UsCisg
ICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KKyAgICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsK
KyAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorI2VuZGlmCisKK1N0cmluZyBV
Ukw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNm
VVJMID0gY3JlYXRlQ0ZVUkwoKTsKKyAgICBpZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyNpZiBQTEFURk9STShXSU4pCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKKyNlbHNlCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0
aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAgICByZXR1cm4gYWRvcHRD
RihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0Zp
bGVTeXN0ZW1FZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5
c3RlbUVmbC5jcHAKaW5kZXggYTY2MDhiYmI0MDI0MDVjZWYzMjQxYzBmNjg1ZjI2N2VkYzZkMDY1
YS4uODBhNTM2MWU4NDgxMmEzYTljOTljNTFhNTJlMGFkMzBjNzM0NmRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5jcHAKQEAgLTYz
LDYyICs2Myw2MiBAQCBBc3luY0ZpbGVTeXN0ZW1FZmw6On5Bc3luY0ZpbGVTeXN0ZW1FZmwoKQog
ewogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6bW92ZShjb25zdCBLVVJMJiwgY29uc3Qg
S1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNG
aWxlU3lzdGVtRWZsOjptb3ZlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y29weShjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVt
RWZsOjpjb3B5KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUVmbDo6cmVtb3ZlKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVtb3ZlKGNvbnN0IFVS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVh
dGVGaWxlKGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlRGly
ZWN0b3J5KGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6ZmlsZUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmZpbGVFeGlzdHMoY29uc3QgVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpkaXJlY3RvcnlFeGlzdHMo
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6cmVhZERpcmVjdG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0Zp
bGVTeXN0ZW1FZmw6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBL
VVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0Zp
bGVTeXN0ZW1FZmw6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAppbmRleCAxOTliN2M0Y2E5NjIz
NDNjZjYwZGI5YmFjYmIxMTZmMzM5MzkyYjY1Li45M2U2YjNhNzZkM2I3MGM0MDU2ZWIxNWE4ZTQw
NDZjYTdhY2JhYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5
bmNGaWxlU3lzdGVtRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5j
RmlsZVN5c3RlbUVmbC5oCkBAIC00MCwxOCArNDAsMTggQEAgcHVibGljOgogICAgIEFzeW5jRmls
ZVN5c3RlbUVmbCgpOwogICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbUVmbCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShj
b25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtV
UkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMo
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShj
b25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIG1vdmUo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRh
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5
KGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3Rz
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5j
RmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvRXJyb3JzRWZsLmNwcAppbmRleCAyNjQ4ZjFjMmY2ZjU2ZDU0NjM4Y2E1ZDMxZDUyMjY0MDIx
OGE2ODMxLi5kYTJlMjNkMGFlYjc5OGQzNjcxNjRlMWUwNTk0OGJlNWM0MGVhMmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtOTAsMjEgKzkwLDIxIEBA
IFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4
dCwgY29uc3QgU3RyaW5nJiBlcnJvck1lCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
OwogCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJv
ckdlbmVyYWwsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJp
bnQsIFByaW50RXJyb3JHZW5lcmFsLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51
cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUHJpbnQsIFByaW50RXJyb3JQcmludGVyTm90Rm91bmQsIGRvY3VtZW50TG9hZGVyID8g
ZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgpLCBBU0NJSUxpdGVyYWwoIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFBy
aW50RXJyb3JQcmludGVyTm90Rm91bmQsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXIt
PnVybCgpIDogVVJMKCksIEFTQ0lJTGl0ZXJhbCgiUHJpbnRlciBub3QgZm91bmQiKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgUHJpbnRDb250ZXh0
KiBwcmludENvbnRleHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
cHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQ
YWdlUmFuZ2UsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwgZG9j
dW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFs
KCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
aW5kZXggMWY5ZDBmNTc5ZjEzNmQwYTlhMmFkMWMzZjFkYmI3MTNjODY4YjVhOC4uNmMyYjcyYzMy
ZmJmZmE3YWM4MTA5ZGEyNDc0MzQyNmJjNmUxOTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIGdldFN1
cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikKK1N0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpCiB7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwZWI1MTM2M2NkZWI2NDkwMGJiNzdhMzE3ZTRi
ZWQ0ZjdiOTM1ZTk1Li45NzNkYmMyMDQ2MGU5YTQ3MWQ2ZTc3MjZiZGNhMDViMDExMGJmZDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW1h
Z2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSb3VuZGVkUmVjdDsKLSAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKICAgICBjbGFzcyBUZXh0UnVuOwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwpA
QCAtNDAwLDcgKzQwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0cmFu
c2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOyB9CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkp
OwogCi0gICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29uc3QgSW50UmVj
dCYpOworICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVj
dCYpOwogCiAgICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgICAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA0YTUxNTU0
MjAzOTk2MDk4MWMxODQ5OTEyYTQ5MWNmYWEzYjQwNzkwLi4zYmM4YjI5ZmJmMTg1YmUxYzc5YzVi
NzNlYTU5ZTY1ZWU3ODQ5NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogCiBzdGF0
aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lR2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOwogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBi
ZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiwgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gMCk7CitzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQgPSAwKTsKIHN0YXRpYyBNZWRpYVBsYXllckZhY3Rv
cnkqIG5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpOwogCiBlbnVt
IFJlcXVlcnlFbmdpbmVPcHRpb25zIHsgRG9Ob3RSZXNldEVuZ2luZXMsIFJlc2V0RW5naW5lcyB9
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvZGVjcygp
CiAgICAgcmV0dXJuIGNvZGVjczsKIH0KIAotc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogYmVz
dE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBi
ZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCwg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNTksNyArMzU5LDcgQEAgTWVkaWFQbGF5ZXI6On5NZWRp
YVBsYXllcigpCiAgICAgbV9tZWRpYVBsYXllckNsaWVudCA9IDA7CiB9CiAKLWJvb2wgTWVkaWFQ
bGF5ZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKIHsKICAgICBtX2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUo
KS5sb3dlcigpOwogICAgIG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0
ZXIoY29kZWNzKCkpOwpAQCAtMzk0LDcgKzM5NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0
CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotYm9vbCBNZWRpYVBsYXllcjo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkK
K2Jvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1l
ZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKIHsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3Vy
Y2U7CiAgICAgbV9jb250ZW50TUlNRVR5cGUgPSAiIjsKQEAgLTc0MCw3ICs3NDAsNyBAQCBib29s
IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIGxldmVsLCB0eXBlLCBpbnRlcm5h
bEZvcm1hdCwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1NZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQogewogICAgIFN0cmluZyB0
eXBlID0gY29udGVudFR5cGUudHlwZSgpLmxvd2VyKCk7CiAgICAgLy8gVGhlIGNvZGVjcyBzdHJp
bmcgaXMgbm90IGxvd2VyLWNhc2VkIGJlY2F1c2UgTVA0IHZhbHVlcyBhcmUgY2FzZSBzZW5zaXRp
dmUKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmtleUVycm9yKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTWVkCiAgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5RXJyb3IodGhpcywga2V5U3lzdGVt
LCBzZXNzaW9uSWQsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXI6OmtleU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVu
Z3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJMKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVS
TCYgZGVmYXVsdFVSTCkKIHsKICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKICAgICAgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKHRoaXMsIGtleVN5c3Rl
bSwgc2Vzc2lvbklkLCBtZXNzYWdlLCBtZXNzYWdlTGVuZ3RoLCBkZWZhdWx0VVJMKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDAyY2Nj
NTE5YmNjMzkzMGJlZmI2ZTk5ZGFlMmNjOThhN2RkODg0MDIuLmIzZDg4NDQ3Nzg1MWU4Yzg0MWNj
OWI0Y2RkZDgzODQ1ZGFiYWEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9U
cmFja1ByaXZhdGUuaCIKQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNZWRp
YUtleUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJy
b3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3Ry
aW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0
IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywg
TWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IC8qIHN5c3RlbUNvZGUgKi8pIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25z
dCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8s
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VM
ZW5ndGggKi8sIGNvbnN0IEtVUkwmIC8qIGRlZmF1bHRVUkwgKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8q
IGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNv
bnN0IFVSTCYgLyogZGVmYXVsdFVSTCAqLykgeyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8s
IGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovLCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBp
bml0RGF0YSAqLywgdW5zaWduZWQgLyogaW5pdERhdGFMZW5ndGggKi8pIHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlh
IGVuZ2luZSBzdXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQs
IElzU3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVD
bGllbnQqKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgQ29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJM
JiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKICAgICBzdGF0aWMgYm9vbCBp
c0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+Jik7CkBAIC0yODAsOSArMjgwLDkgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKTsKIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5
cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYs
IGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4pOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4pOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2
b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwg
dW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7Ci0gICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQg
Y2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVs
dFVSTCk7CisgICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKTsKICAgICBib29sIGtleU5l
ZWRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAj
ZW5kaWYKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5
ZXI+IG1fcmVsb2FkVGltZXI7CiAgICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhUGxheWVyRmFjdG9yeSogbV9jdXJyZW50TWVkaWFFbmdp
bmU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY29udGVu
dE1JTUVUeXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgIFN0cmluZyBt
X2tleVN5c3RlbTsKQEAgLTUyNiw5ICs1MjYsOSBAQCBwcml2YXRlOgogdHlwZWRlZiBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXll
cikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
IHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwm
IHVybCk7Cit0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKTsKICNlbHNlCi10eXBlZGVmIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKK3R5
cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBl
KShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVy
bCk7CiAjZW5kaWYKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2Fj
aGUpKFZlY3RvcjxTdHJpbmc+Jik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODFmNWJhMDdmODhhZGNkOTViZDBiODQ5NjU4NmIwODcz
YzEyZmMxMi4uODc0MjQ4Nzg4OWUzMDEzMzI1ZjY0YjA3MTE1NTMzOTBjNjdiNmQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1
ZGUgIlNvZnRMaW5raW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBjYWNkZGUzYmQwZDJmMzI0
N2RjZTI5OGI2MjRmMmIzZGMzYWE4Y2UzLi5iOTVlOTA0OWY3ZGJjMGU3YTBhYjY0NzNhYTIxNWJl
NjEyNTg5MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNlbHNlCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIKICNlbmRpZgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKQEAg
LTgyOCw3ICs4MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcgogICAgIHN1cHBvcnRlZFR5
cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYp
CiB7CiAgICAgLy8gT25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2Rl
Y3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIGFzayBpZiBpdCBzdXBw
b3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1JTUUgdHlwZSB1bnRpbCByZGFyOi8vODcyMTcxNSBp
cyBmaXhlZC4KQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNz
ZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwog
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOwogCiAgICAgQVZDRlVSTEFzc2V0
UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKICAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggZGM2MThk
MTRlNmFkNjQ0OGM2Mjc5NDU3MjU4MDIzMDI1ZTViYWJmMC4uODU4YzUyMWE0ZDI3Y2ZmNWJiN2Nk
OWRmM2MyYjMwMmU0ODM2MjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3Rh
dGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFp
bGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggYjVkMzk0OWVjOGFhMDhhN2Q5ODY1Mzg0YWFiM2U0OWMzYmIwNWI1My4uYWI0
OGQzZDhjMDM1N2NmNWQ0NjBkMGJiNjBlNjlmOWVmMzU2NmFjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUo
TWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwm
KTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYpOwog
I2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZmIwYzc4MDdjN2FhNTk4OWI2NTA4ZWRkZDA3ODJkZDBiMGQ0N2Y3Mi4uNGFi
MGQ3ZGU0MDgzZGUzYjk2NzMxM2RlYTlkOGMzNTM3NDVlNGNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0zNyw3ICszNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5o
IgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVs
ZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKICNlbmRp
ZgogCi0gICAgTlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7Cisg
ICAgTlNVUkwgKmNvY29hVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBtX2F2
QXNzZXQgPSBhZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwg
b3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3Vw
cAogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRh
aW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwpA
QCAtOTA1LDcgKzkwNSw3IEBAIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRl
ZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRnJvbTogPGh0
dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8vIElu
IGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0aGlz
IG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtMTExNyw3ICsxMTE3LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZBc3Nl
dC5nZXQoKSkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tBVkFzc2V0UmVzb2x2ZWRVUkwobV9hdkFzc2V0
LmdldCgpKSkpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSk7CiAgICAgcmV0dXJu
IHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0
KCkpOwogfQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0
aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmUKIAog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhd
KTsKICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdEFycmF5ID0gVWludDhBcnJheTo6
Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgcGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtleVJl
cXVlc3RBcnJheS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgS1VSTCgp
KTsKKyAgICBwbGF5ZXIoKS0+a2V5TWVzc2FnZShrZXlTeXN0ZW0sIHNlc3Npb25JRCwga2V5UmVx
dWVzdEFycmF5LT5kYXRhKCksIGtleVJlcXVlc3RBcnJheS0+Ynl0ZUxlbmd0aCgpLCBVUkwoKSk7
CiAKICAgICAvLyBNb3ZlIG93bmVyc2hpcCBvZiB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3Rmcm9tIHRoZSBrZXlJRFRvUmVxdWVzdE1hcCB0byB0aGUgc2Vzc2lvbklEVG9SZXF1ZXN0
TWFwOgogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnNldChzZXNzaW9uSUQsIGF2UmVxdWVz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggMjg3ZWU4MTIzY2RlNzhkNWI4Y2FmZWNiOTUwNmJjMmRhZDliZTUwNS4uNzU2
MjEwZjAxNGU3OTVlZGVkYTVkNzdkMzhhYjhlZjU1NDI2Mjk4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBp
ZiAobV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0g
W1ttX2F2UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOworICAgIFVSTCByZXF1ZXN0VVJMID0g
W1ttX2F2UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNy
ZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNG
b3JUeXBlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA2YTRj
ZDcwMGVmNDhlMzZiNTg5NzAwN2U0OTg4ODY4MzFhMzIxYTU1Li4zOTFmZmQ0ZmM5MmVjOTBmMGRl
MTI4MzFiODU4NjNlZDc4ODFhNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnku
Y3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29u
dGV4dEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9HcmFwaGljc0NvbnRleHRCbGFja0JlcnJ5LmNwcAppbmRleCBlMmYxYzQzMzNlMDg4
OGMwMDc0ZWVlMmFmYTc0ZmJhZWUyYzQ4NWQyLi44N2U2NjY5Yjk1MWQxYzFmMjllYjAzN2Q5MDkz
ODZjNjdjNTIzM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0QmxhY2tC
ZXJyeS5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgpAQCAtMzg3LDcgKzM4Nyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwQm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChJTlRfTUlOIC8g
MiwgSU5UX01JTiAvIDIpLCBJbnRTaXplKElOVF9NQVgsIElOVF9NQVgpKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3Qm
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3Qg
SW50UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0
ZUJsYWNrQmVycnkuY3BwCmluZGV4IGU0MWJlNmY5OWU2NDZhMTEzOWE5MzQwNWNmZDhjZjJjNzg4
MmZlNTguLjk2MDYxMGU5NTY4MjFhMmU4OWJhMWYxMTZkODhkNzA1N2UxNzllZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxXVEY6OlN0cmluZz4mIHR5cGVzKQogICAgICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1N
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBl
KGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25z
dCBLVVJMJiB1cmwpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBib29sIGlzUlRTUCA9IHVybC5wcm90
b2NvbElzKCJydHNwIik7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQogICAgIFdURjo6U3RyaW5nIG1vZGlm
aWVkVXJsKHVybCk7CiAKICAgICBpZiAobW9kaWZpZWRVcmwuc3RhcnRzV2l0aCgibG9jYWw6Ly8i
KSkgewotICAgICAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgbW9kaWZpZWRVcmwpOworICAg
ICAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgbW9kaWZpZWRVcmwpOwogICAgICAgICBrdXJsLnNl
dFByb3RvY29sKCJmaWxlIik7CiAgICAgICAgIFdURjo6U3RyaW5nIHRlbXBQYXRoKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKS0+YXBwbGljYXRpb25Mb2NhbERpcmVj
dG9yeSgpLmNfc3RyKCkpOwogICAgICAgICB0ZW1wUGF0aC5hcHBlbmQoa3VybC5wYXRoKCkpOwpA
QCAtMTU3LDggKzE1Nyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdU
Rjo6U3RyaW5nJiB1cmwpCiAgICAgLy8gYWxyZWFkeSBkb25lIGEgc2VjdXJpdHkgY2hlY2sgb24g
dGhlIGZpbGVzeXN0ZW06IFVSTCBhcyBwYXJ0IG9mIHRoZQogICAgIC8vIG1lZGlhIHJlc291cmNl
IHNlbGVjdGlvbiBhbGdvcml0aG0sIHdlIHNob3VsZCBiZSBPSyBoZXJlLgogICAgIGlmIChtb2Rp
ZmllZFVybC5zdGFydHNXaXRoKCJmaWxlc3lzdGVtOiIpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9
IEtVUkwoS1VSTCgpLCBtb2RpZmllZFVybCk7Ci0gICAgICAgIEtVUkwgbWVkaWFVUkw7CisgICAg
ICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCBtb2RpZmllZFVybCk7CisgICAgICAgIFVSTCBtZWRp
YVVSTDsKICAgICAgICAgV1RGOjpTdHJpbmcgZnNQYXRoOwogICAgICAgICBGaWxlU3lzdGVtVHlw
ZSBmc1R5cGU7CiAgICAgICAgIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKQEAgLTIwMSw3ICsy
MDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYg
dXJsKQogCiAgICAgV1RGOjpTdHJpbmcgY29va2llUGFpcnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0
eSgpKQotICAgICAgICBjb29raWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgICAgICBj
b29raWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9h
ZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwsIG1fd2ViQ29yZVBsYXllci0+dXNlckFnZW50KCksIGNv
b2tpZVBhaXJzKTsKIH0KIApAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpvbkJ1ZmZlcmluZyhib29sIGZsYWcpCiAKIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgZ2Vu
ZXJhdGVQcm90ZWN0aW9uU3BhY2VGcm9tTU1SQXV0aENoYWxsZW5nZShjb25zdCBNTVJBdXRoQ2hh
bGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
V1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQ
YXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkp
OwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKIAogICAgIHJldHVybiBQcm90ZWN0aW9uU3Bh
Y2UodXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwKQEAgLTczOSw3ICs3MzksNyBAQCBzdGF0aWMgUHJv
dGVjdGlvblNwYWNlIGdlbmVyYXRlUHJvdGVjdGlvblNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2Uo
Y29uc3QgTU1SQXV0aAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlv
bk5lZWRlZChNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJs
KFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigp
KSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVu
Z2UudXJsKCkuY19zdHIoKSkpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0
aGVudGljYXRpb25OZWVkZWQoTU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKICAgICAg
ICAgdGhpcywgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXll
ckhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5v
dGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogewogICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFs
c2U7CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvbgogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1
dGhDaGFsbGVuZ2UmIGF1dGhDaGFsbGVuZ2UpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwoUGFyc2Vk
VVJMU3RyaW5nLCBXVEY6OlN0cmluZyhhdXRoQ2hhbGxlbmdlLnVybCgpLmNfc3RyKCkpKTsKKyAg
ICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwo
KS5jX3N0cigpKSk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKaW5kZXgg
YjM0NjViYjExMTE5MzhkOTk4NWMzNjcwM2E5MDIxODkyMTJhYjQzNy4uNTQ3YjFkNTIwMDRlMzRm
NWNkODAyODdkOTFiMjBiMjRkN2M1OWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBs
YXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxX
VEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IEtV
UkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUo
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAg
IHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2YXRlZEV2ZW50KGJvb2wpOwogICAgIHN0YXRpYyB2
b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25zdCBXVEY6OlN0cmluZyYpOwogCkBAIC0xNTQsNyAr
MTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkNyZWF0ZUhvbGVQdW5jaFJlY3Qo
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0cm95SG9sZVB1bmNoUmVjdCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYzdlYTc2ZDVkNDQ3NjBhYzUwM2YyZDky
ZmRjNWVlNGRjYjUxZjhmNC4uODQ5MDc4OTcxNzhkODIwYTMzOTE3ZWQ3ZjZhOTIwMzM0NzM0NmQ1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNzU3LDcgKzc1Nyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0
cm9rZVN0eWxlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0NGJmMmQzZGE5Y2JhZGRkNWM5NmI4
OTUxZTNkYmMzZjliMGY1ZmRlLi5iMDgxNzVlMGI5MDg0YWYwYjE4ZTM2MDAxOTExY2QxZDY4NWI2
Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3
aWR0aCwgYm9vbAogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1D
b250ZXh0KCksIHRydWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVj
dChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCAxYjdjNTc5MjVkNTkwYzUwNjE2ZDRmNWQ1YTcwYzYzYjU2ZDhkN2JhLi4wMTA3MDIxMDI5ZTQ1
YTJjMWM0YmJkMDU5MDU4M2I5Nzc1ZGNhN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
R1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVn
aXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwo
S1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgIFN0cmluZyBjbGVh
blVybCh1cmwpOwogCiAgICAgLy8gQ2xlYW4gb3V0IGV2ZXJ5dGhpbmcgYWZ0ZXIgZmlsZTovLyB1
cmwgcGF0aC4KQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIEFTU0VSVChtX3BsYXlCaW4pOwog
Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOworICAgIG1fdXJsID0gVVJMKFVS
TCgpLCBjbGVhblVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgInVyaSIs
IGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgSU5GT19NRURJQV9NRVNTQUdF
KCJMb2FkICVzIiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDI4LDggKzE0MjgsOCBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAg
ICAgICAgIC8vIEZvdW5kIGEgY2FuZGlkYXRlLiBuZXctbG9jYXRpb24gaXMgbm90IGFsd2F5cyBh
biBhYnNvbHV0ZSB1cmwKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJh
c2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9m
IG5ldy1sb2NhdGlvbiB0byBpdC4KLSAgICAgICAgS1VSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192
YWxpZChuZXdMb2NhdGlvbikgPyBLVVJMKCkgOiBtX3VybDsKLSAgICAgICAgS1VSTCBuZXdVcmwg
PSBLVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3Rf
dXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7CisgICAgICAgIFVSTCBu
ZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogCiAgICAgICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJs
KTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKQEAg
LTE2NTMsNyArMTY1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWltZVR5
cGVDYWNoZSgpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICh0eXBlLmlzTnVs
bCgpIHx8IHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IGQ3ZjZlZDY4ZDJkZDkxMjViOTM2NDRiY2UwMWJjOTVhY2RhMTkzZjcuLjI1YzljNTA2
YWUxYzJkMzk3ZTkyZjA2Yjg0NDNkYzFhMGY1Yzg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
KE1lZGlhUGxheWVyKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsK
IAogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBw
cml2YXRlOgogICAgIGd1aW50IG1fcmVhZHlUaW1lckhhbmRsZXI7CiAgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVz
OwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQ
aXRjaDsKICAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwogICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gbV9hdXRvQXVkaW9TaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAppbmRleCBmOGM3OTA0NWYzMWU4NTJhYzJkODdlMmFiOWMwODIzZjFhNjhmYzgy
Li43OTY0Mjk1MWRmZTYwNDk5YWRiMWRlMjljMGEzMzI1NTY5YWE2ZjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAg
IEFTU0VSVCghcHJpdi0+Y2xpZW50KTsKIAotICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHBy
aXYtPnVyaSk7CisgICAgVVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMo
dHJ1ZSk7CkBAIC02ODgsNyArNjg4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBp
ZiAoIXVyaSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCksIHVy
aSk7CisgICAgVVJMIHVybChVUkwoKSwgdXJpKTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8
fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBnX3NldF9lcnJvcihl
cnJvciwgR1NUX1VSSV9FUlJPUiwgR1NUX1VSSV9FUlJPUl9CQURfVVJJLCAiSW52YWxpZCBVUkkg
JyVzJyIsIHVyaSk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQogICAg
IGlmICghdXJpKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwg
dXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9P
QkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCmluZGV4IDcyYjIyNTQwMWMwOGQ2YzlhODBkYzY4NWM2NmQ2NDJhMTI3OTNiNDcuLmYz
MGQxMTZkOWFmMWQ3MDQ0ZWIxZmE2ZGE3NzA1NzI3OTRmYTlhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oCkBAIC03NSw5ICs3NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1
cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IFVSTCYpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCi0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
VVJMJik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZl
Y3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZjcyMmJk
MGM2YWJmYTg4ZWFkY2Q1YmY5NjBkYmVhNTkxNWI2MTFjYy4uMGM4NGY4YTk4MjU5MWI3MzQ4ZTlm
MjBhNDY2MzUyMWQ1MGRiN2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTI2NSw3ICsyNjUsNyBAQCBOU011
dGFibGVEaWN0aW9uYXJ5ICpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y29tbW9uTW92aWVBdHRy
aWJ1dGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShj
b25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIGtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
OworICAgIFVSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBOU1VSTCAqY29jb2FV
UkwgPSBrVVJMOwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm1vdmllQXR0cmlidXRlcyA9IGNv
bW1vbk1vdmllQXR0cmlidXRlcygpOyAgICAKICAgICBbbW92aWVBdHRyaWJ1dGVzIHNldFZhbHVl
OmNvY29hVVJMIGZvcktleTpRVE1vdmllVVJMQXR0cmlidXRlXTsKQEAgLTE0NjIsNyArMTQ2Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAgICAgY29uY2F0ZW5hdGVIYXNoU2V0cyhzdXBw
b3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2FjaGUoKSk7CiB9CiAKLU1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKK01lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewog
ICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29kZWNzIHBh
cmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQgaWYgaXQgc3VwcG9y
dHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUgeWV0LgpAQCAtMTQ4MCw3ICsxNDgwLDcg
QEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKIH0KIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBlZCBtZWRp
YSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9uLU5VTEw6
CiAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwgIWtleVN5c3RlbS5pc0VtcHR5KCkpCkBA
IC0xNjMxLDcgKzE2MzEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX3F0TW92aWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9xdE1v
dmllLmdldCgpKSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92
aWUuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsKICAgICByZXR1
cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5n
ZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggMTdkYzQxNDJjM2M2MjUzOWU3MzdhMzU3
ZjkzMWE5MzZlZTk3YjMxOC4uMWU2YmVkZTYxMWE0MGQ3NmM5ZTQ0NTU0Y2VlNWI2NjFhMzk3NjU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0pCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3Qo
Y29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVS
TEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCA3NWE2ZjNlZGY5NTc3NzM4NjUw
NjZlOGQ1NDYzZTZmZmEyZmI0ZGQzLi4yYzZlYjU0MWUzYzNkNjE0NTg5Mzg3YTY0Zjg0NTk3Yjg1
YjM3YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9N
ZWRpYVBsYXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiAm
c3VwcG9ydGVkKQogICAgIH0KIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29uc3QgU3Ry
aW5nJiBjb2RlYywgY29uc3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZVF0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiBtaW1lLCBjb25zdCBT
dHJpbmcmIGNvZGVjLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZS5zdGFydHNXaXRoKCJh
dWRpby8iKSAmJiAhbWltZS5zdGFydHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVF0Ojpjb21taXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICBt
X3dlYkNvcmVQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCi0gICAgS1VSTCBr
VXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga1VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CiAgICAgY29uc3QgUVVybCByVXJsID0ga1VybDsKICAgICBjb25zdCBRU3RyaW5nIHNj
aGVtZSA9IHJVcmwuc2NoZW1lKCkudG9Mb3dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAppbmRl
eCA3ZTM4OGM0MDg2MGFhYTgzNTUxOTI4MTA0NTZjZGNmY2QwMDllYzRmLi4xM2U5MDBlMWZjM2Vi
MzVjMzEzNjM5MGUwZThiMjYwZWI5YjgyNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dC5jcHAKaW5kZXggMGIzNTE4NGM4YWQxYjg1MjkxYWQ5MDJiMGE0Nzc0ZWIwNGI5NzE1
Zi4uOWRkMjVmMjQ5MjY5ZWFhZGQ3NjQzZmIyZDU2YTU0YmQ0ZGY5MDc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVRhc2tUaW1lci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJRVENGRGljdGlvbmFyeS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUg
IlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8QXNzZXJ0TWFjcm9zLmg+CiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQ29udGV4dC5oPgpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c2V0VXBDb29raWVzRm9yUXVpY2tUaW1lKGNvbnN0
IFN0CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+
c2V0dGluZ3MoKS5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwg
bW92aWVVUkwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwgbW92aWVVUkwgPSBVUkwoVVJM
KCksIHVybCk7CiAgICAgVmVjdG9yPENvb2tpZT4gZG9jdW1lbnRDb29raWVzOwogICAgIGlmICgh
Z2V0UmF3Q29va2llcyhmcmFtZS0+ZG9jdW1lbnQoKSwgbW92aWVVUkwsIGRvY3VtZW50Q29va2ll
cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9
CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICAv
LyBvbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0
ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFu
CiAgICAgLy8gIGV4dGVuZGVkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgKaW5kZXggNjYzMzRmMjQ0YzEzOGQyZWUw
NzhmNGI1NDExODI1ZmIyNzJiN2ZlMS4uMzljY2JhMGVkYzcwMmYzYzMwYTU4NDc1ZTI2NTYyYjk0
ZTRhMWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApp
bmRleCA5MTFjM2FkNzQ0YzkyN2U2YmUwOWQwZWE2ODAxZTI3NjE3OTMyOGE0Li42ZTUxMjlmYmE0
ZWI3ZGM2NDExNzFlOTNhYzdiMTQyN2Q3ODIzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBL
VVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5D
RS5oCmluZGV4IDAwOWYwZDQzMTI2YzgyNzczNmViYjkxZjIyMDQwYTExNzQ4YjZhNTguLjQyZjY3
M2FiZmNjNjQyYTRjM2ZmMWU5YjY1OTlhM2JkYWI2NTI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQ
cml2YXRlV2luQ0UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAg
ICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAgICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmdpbmVE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJXaW5DRSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggNjZhZDY2Mjkx
YzZkMjExMjQ0Zjc4YTcyMmZiZTA5Y2FkMzY4NGIwYi4uZmVhN2YzZmI5NjBlOWNjMTZiYWExOWVi
ZThkZDlmZmRlOGY4YWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTYyLDYzICs2Miw2MyBAQCBBc3luY0ZpbGVTeXN0
ZW1HdGs6On5Bc3luY0ZpbGVTeXN0ZW1HdGsoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNv
bnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IFVS
TCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29uc3QgS1VSTCYgc291cmNl
UGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHko
Y29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IEtV
UkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Cit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZW1vdmVSZWN1cnNpdmVseShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJl
YWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wg
ZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3Rr
OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmls
ZVN5c3RlbUd0azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmZpbGVF
eGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxlRXhpc3RzKGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6ZGly
ZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0Zp
bGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRlcihBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3Rr
OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3Jl
YXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRl
U25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCmluZGV4IDM5
ZjU3MzcwODFjYTY4NGYwMTEzMjFjNzViYThkZmU1ZGE2NTVjNzEuLmRhYTZlMWU4NTI1ZDg3Njg3
NTEyNTRjNjFlMzk2ODlmODVlZGVlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKQEAgLTM0LDE3ICszNCwxNyBAQCBwdWJsaWM6CiAg
ICAgQXN5bmNGaWxlU3lzdGVtR3RrKCk7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3Rr
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURp
cmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwCmluZGV4IDBiZDMwNGJhNjczMjQ0YWYwNzE4MjhjYzM3ZmFmMzY1OGM4NTViOTAu
LjE3OTAxMGRkNDFkZDlmMGI4ZjQwMzI3MmQ0NjY5NmQ3M2Y2MGFmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmlu
ZykKICAgICAgICAgaWYgKGxpbmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwg
PSBVUkwoVVJMKCksIGxpbmUpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAg
ICAgICAgaWYgKCFzZXRVUkwpIHsKICAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5n
JiB1cmlMaXN0U3RyaW5nKQogICAgIH0KIH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQordm9pZCBEYXRhT2JqZWN0R3Rr
OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91
cmwgPSB1cmw7CiAgICAgbV91cmlMaXN0ID0gdXJsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
RGF0YU9iamVjdEd0azo6Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKQogICAgIG1fdGV4dCA9ICIi
OwogICAgIG1fbWFya3VwID0gIiI7CiAgICAgbV91cmlMaXN0ID0gIiI7Ci0gICAgbV91cmwgPSBL
VVJMKCk7CisgICAgbV91cmwgPSBVUkwoKTsKICAgICBtX2ltYWdlID0gMDsKICAgICBtX3Jhbmdl
ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmlu
ZGV4IDUyODFiMWUxNzhiZjk0N2RhMmMwODBkMzgzZWFhNTA2YjZhNjM5ODAuLmJjNTVjMmQzMGFj
MWQxZjBmZDZlYzQxNzA4ZDNhMDBmMTdkYWE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RhdGFPYmplY3RHdGsuaApAQCAtMjAsNyArMjAsNyBAQAogI2RlZmluZSBEYXRhT2Jq
ZWN0R3RrX2gKIAogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0zNiwxMyArMzYsMTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiB1cmlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV91cmlMaXN0OyB9CiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVzOyB9
CiAgICAgR2RrUGl4YnVmKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFJhbmdlKFBhc3NSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlKSB7IG1fcmFuZ2Ug
PSBuZXdSYW5nZTsgfQogICAgIHZvaWQgc2V0SW1hZ2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBt
X2ltYWdlID0gbmV3SW1hZ2U7IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgYm9vbCBoYXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV90ZXh0LmlzRW1w
dHkoKTsgfQogICAgIGJvb2wgaGFzTWFya3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAh
bV9tYXJrdXAuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgY29uc3QgeyByZXR1
cm4gIW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRmlsZW5hbWVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5hbWVzLmlzRW1wdHko
KTsgfQogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAg
dm9pZCBjbGVhclVSSUxpc3QoKSB7IG1fdXJpTGlzdCA9ICIiOyB9Ci0gICAgdm9pZCBjbGVhclVS
TCgpIHsgbV91cmwgPSBLVVJMKCk7IH0KKyAgICB2b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IFVS
TCgpOyB9CiAgICAgdm9pZCBjbGVhckltYWdlKCkgeyBtX2ltYWdlID0gMDsgfQogCiAgICAgU3Ry
aW5nIHRleHQoKSBjb25zdDsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX21hcmt1cDsKLSAgICBLVVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV91cmlMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fZmlsZW5hbWVzOwogICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBtX2ltYWdlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNzk3Yzc4YmYwNWZkY2Q2
NDVkYWRlZTljZGNlMjg0MDQyNzZjZGZmYi4uM2Y5ZGVhM2EyNzIxZTEzZGZiYWUxYWQ0NTE1MjM5
NTFlODJjMjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdE
YXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxl
bmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyoKICAgICBpZiAoIW1f
cGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICBpZiAoZmlsZW5hbWVQb2xpY3kgIT0gQ29udmVydEZpbGVuYW1lcykgewotICAgICAgICBLVVJM
IHVybChLVVJMKCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJsKCkpOworICAgICAgICBVUkwgdXJs
KFVSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsKICAgICAgICAgaWYgKHVybC5pc0xv
Y2FsRmlsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKaW5kZXggYmE0N2UyYWJiZmJiMjNmMjQx
NjM1MTA3ODZhYzY4Yjc3ZDA3NDljYy4uM2NmNmIwMDEzYWJmZWU1MjAwODU5YWYzYzI5NzYzYjQ4
ZjcxMWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKQEAg
LTk1LDIxICs5NSwyMSBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgUHJpbnRDb250
ZXh0KiBwcmludENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZQogewogICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBy
aW50LCBQcmludEVycm9yR2VuZXJhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVy
LT51cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBSZXNvdXJjZUVycm9yIHByaW50
ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJQcmludGVyIG5v
dCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChj
b25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJp
bnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRv
Y3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhY2E1MTMyM2VkZmYxNDdmZDhjM2E3ZmIxYmZhMDI3
Yjg3YzY2MjI2Li5jMzkyZTA1N2Y5NzJjMGJkOTI4ZWI2OTU4OGE3MjRjZjI4OWEyOTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bWFnZS5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAg
ICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhtX2d0a0NsaXBib2FyZCk7CiB9CiAKLXN0YXRpYyBLVVJMIGdldFVSTEZv
ckltYWdlTm9kZShOb2RlKiBub2RlKQorc3RhdGljIFVSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9k
ZSogbm9kZSkKIHsKICAgICAvLyBGSVhNRTogTGF0ZXIgdGhpcyBjb2RlIHNob3VsZCBiZSBzaGFy
ZWQgd2l0aCBDaHJvbWl1bSBzb21laG93LiBDaGFuY2VzIGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQg
aXQuCiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKQEAgLTIwMSwxMCArMjAxLDEwIEBAIHN0
YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2RlKQogICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50
LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KLSAgICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHko
KSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOworICAgIHJldHVybiB1cmxTdHJpbmcuaXNF
bXB0eSgpID8gVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC0yMjAsNyArMjIw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwog
Ci0gICAgS1VSTCB1cmwgPSBnZXRVUkxGb3JJbWFnZU5vZGUobm9kZSk7CisgICAgVVJMIHVybCA9
IGdldFVSTEZvckltYWdlTm9kZShub2RlKTsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgbV9kYXRhT2JqZWN0LT5zZXRVUkwodXJsLCB0aXRsZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXggZTM0YzFi
YmUxZDViNmE2NzQ0NzM1YWMxODhiNTk1M2VlNzJlODg0My4uYTBiZjg4ZTQzZGFiYjAyNGEyNTA1
YTdlYTY4ZmMyYjM1ZDg4Mzg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlT
aXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5n
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQogewogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
aW5kZXggZDExNWQ2MTFhNmY4MzJiYTliNmY5Y2YwMGNhYjc0ZWY3YWUzMmI5YS4uNzBhZjE3NzZi
ZjZmNjRkNjg3ZDYyYzU0MmEzZWJjMDdmOGRkYTIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgIkhU
TUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTGVn
YWN5V2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0
cmF0ZWd5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQppbmRleCA5OGNiY2NkMjhlODc1NTQ3NTk4ZTExOGU5MTUyOGQ1YWM0
N2FhMmUxLi44NWU5NTlmYmQ0MzAxNjA0YmVkMGI2Mjc2N2RhYzIyZTZjNmVmYjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb2xv
ci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJJbWFnZS5o
IgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5o
IgpAQCAtOTksOSArOTksOSBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKICAg
ICByZXR1cm4gQ29sb3IoKTsKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitV
UkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewotICAgIHJldHVybiBLVVJMKCk7CisgICAg
cmV0dXJuIFVSTCgpOwogfQogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBT
dHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5k
ZXggMTQ5M2FlNjM4OTY0NDBjNzM2NjA2ZTA3N2RiNmIxNzI0NmNlZDdiNC4uMmUwNWM5ZjUxZjU0
OTk3MmJjYTdhMTUxMzc0YzBlMWJhNWJlYzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJGb250U2Vs
ZWN0b3IuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgi
CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50KE5TU3Ry
aW5nICpzdHJpbmcsIE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3AKICAgICAgICAgZHJh
d0F0UG9pbnQoc3RyaW5nLCB0ZXh0UG9pbnQsIGZvbnQsIHRvcENvbG9yKTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGb250UmVuZGVyaW5nTW9kZSkKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVuZGVyaW5nTW9kZSkKIHsK
ICAgICBOU1N0cmluZyAqbGFiZWwgPSBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpOwogICAgIE5T
VVJMICpjb2NvYVVSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzc1YzdhMzRhMDkzMThmMTZlZmRjYWQ2
MjczNzVlZGE1OTA4ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIC9kZXYvbnVs
bApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJLVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYv
T2JqY1J1bnRpbWVFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYgKCF1
cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBD
U3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxS
ZWY+KHVybCksIHVybEJ5dGVzKTsKLSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwotfQotCi1L
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2Vy
dmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4g
cm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxS
ZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2Ug
dGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEg
Q0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCkpOwotICAgIH0KLQotICAgIFVSTENoYXJCdWZmZXIg
YnVmZmVyOwotICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci19Ci0KLQotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGU3YWQ2
YTFhODg5NTQyMDA1NjEyZDZiYmRjNmMyOTYwYTExMTg0OWEuLmYzMWY0MjYzNzNkMzQxYmI4ZjRh
MGI3MGFkY2EzYWRjN2E5N2YwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJodG1sZWRpdGluZy5o
IgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1w
b3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgpA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyKQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJp
bmcoTlNVUkxQYm9hcmRUeXBlKSkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBzdHJhdGVneS51cmwo
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0
ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5
cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAo
IXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IDQwYjQxZTg4MGVmNGE1NDk1MGU1MWZhNjNjMGM3MmEyZTFk
ZGVhZjkuLjAzODc5MGJhOWExNTdlMWI1YzRmNmMxYjZmMWUxNTBlY2Y5ZmYzOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9y
LmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
UGFzdGVib2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NCw3ICs5NCw3IEBAIENv
bG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogICAgICAgICAgICAgICAgICAgICAoaW50
KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBo
YUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkpOyAgICAKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnVybCgpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewogICAgIHJldHVy
biBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5k
ZXggZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4ZjVhYmY0ZjNkZC4uZGU4YjFiNDVkZWQ4
MmE4YWRhYzgwZDE2YmE3NDdlMjFiZmY5ZmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMpCiAgICAgc3VwcG9ydGVkS2V5U2l6ZXMu
YXBwZW5kKGtleWdlbk1lbnVJdGVtNTEyKCkpOwogfQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
YWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7ICAgCiAgICAgLy8gVGhpcyBzd2l0Y2gg
c3RhdGVtZW50IG11c3QgYWx3YXlzIGJlIHN5bmNlZCB3aXRoIHRoZSBVSSBzdHJpbmdzIHJldHVy
bmVkIGJ5IGdldFN1cHBvcnRlZEtleVNpemVzLgogICAgIFVJbnQzMiBrZXlTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyZGY1YjJiMmRhNzA4ZjA0
NzMxNGM2YjE3NDczMzkyYmU3MzMzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9VUkxNYWMubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVVJMLmgiCisKKyNpbXBvcnQgIkNGVVJMRXh0
cmFzLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVUkw6OlVSTChOU1VSTCAq
dXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJh
c2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyhyZWlu
dGVycHJldF9jYXN0PENGVVJMUmVmPih1cmwpLCB1cmxCeXRlcyk7CisgICAgcGFyc2UodXJsQnl0
ZXMuZGF0YSgpKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKK3sKKyAgICAv
LyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VS
TCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KKyAgICAvLyBXZSdsbCBu
ZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KKyAg
ICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOworfQor
CitSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIGlm
IChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBD
RlVSTCB0byBjcmVhdGUgYSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwg
dmFsdWVzLgorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKS5nZXQoKSk7CisgICAgfQorCisg
ICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAg
cmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKK30KKworCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaAppbmRleCA5ZThhZGI0ODRlM2UyYjcxMWI2Y2JmZDBk
YzE5YTliNDdjYTE4ZDljLi4yM2FkYjFlNDZiMDk0MmQ5MjQzNWNiYTliYjU2ZWE2YzdmMThmYTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
Q29uZmlndXJhdGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00MywyNSArNDMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENJY2VTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENJY2VTZXJ2ZXI+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENJY2VTZXJ2ZXI+IGNyZWF0ZShjb25zdCBL
VVJMJiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiB1c2VybmFt
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENJY2VTZXJ2ZXI+IGNyZWF0ZShjb25zdCBVUkwm
IHVyaSwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJY2VTZXJ2ZXIodXJpLCBjcmVk
ZW50aWFsLCB1c2VybmFtZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5SVENJY2VTZXJ2ZXIoKSB7
IH0KIAotICAgIGNvbnN0IEtVUkwmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CisgICAgY29uc3Qg
VVJMJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQogICAgIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bCgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbDsgfQogICAgIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUo
KSB7IHJldHVybiBtX3VzZXJuYW1lOyB9CiAKIHByaXZhdGU6Ci0gICAgUlRDSWNlU2VydmVyKGNv
bnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVz
ZXJuYW1lKQorICAgIFJUQ0ljZVNlcnZlcihjb25zdCBVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQogICAgICAgICA6IG1fdXJpKHVyaSkK
ICAgICAgICAgLCBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKICAgICAgICAgLCBtX3VzZXJuYW1l
KHVzZXJuYW1lKQogICAgIHsKICAgICB9CiAKLSAgICBLVVJMIG1fdXJpOworICAgIFVSTCBtX3Vy
aTsKICAgICBTdHJpbmcgbV9jcmVkZW50aWFsOwogICAgIFN0cmluZyBtX3VzZXJuYW1lOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKaW5kZXggZGQ0
OTZjYThiZWZhNTUzMWRhNzY2YTRhMzZhNjdkYWMzOGI1ZGRmZC4uYmYwMTY2ZmRjNjNjN2VhMzQx
ZWRiZGQ0NzcxNmQ3ODljMTYxODJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YS5jcHAKQEAgLTk0LDEzICs5NCwxMyBAQCB2b2lkIEJsb2JEYXRhOjphcHBl
bmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxl
bmd0aAogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShwYXRoLCBvZmZzZXQsIGxlbmd0
aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CiAKLXZvaWQgQmxvYkRhdGE6OmFwcGVu
ZEJsb2IoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KQordm9pZCBCbG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0
ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCkpOwogfQogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
dm9pZCBCbG9iRGF0YTo6YXBwZW5kVVJMKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNl
dCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3Zv
aWQgQmxvYkRhdGE6OmFwcGVuZFVSTChjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAg
ICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCwgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhLmgKaW5kZXggZmQ5NGY1OTkxZTI2OGFlN2YyMzE5ZDhlM2IwNDIzYzBiOWU2Njc3
NC4uZjYwNTQ4MWRhMWVkMTg1M2UzMTIyZGM2OWI0Y2Q3MmVmYzdiZTI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaApAQCAtMzIsNyArMzIsNyBAQAogI2Rl
ZmluZSBCbG9iRGF0YV9oCiAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KQEAgLTEwMiw3ICsxMDIsNyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKICAgICB9CiAKICAg
ICAvLyBDb25zdHJ1Y3RvciBmb3IgQmxvYiB0eXBlLgotICAgIEJsb2JEYXRhSXRlbShjb25zdCBL
VVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCisgICAgQmxvYkRh
dGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KQogICAgICAgICA6IHR5cGUoQmxvYikKICAgICAgICAgLCB1cmwodXJsKQogICAgICAgICAsIG9m
ZnNldChvZmZzZXQpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgLy8gQ29uc3RydWN0b3IgZm9yIFVSTCB0eXBl
IChlLmcuIEZpbGVTeXN0ZW0gZmlsZXMpLgotICAgIEJsb2JEYXRhSXRlbShjb25zdCBLVVJMJiB1
cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpCisgICAgQmxvYkRhdGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxv
bmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKQogICAgICAgICA6IHR5cGUoVVJMKQogICAgICAgICAsIHVybCh1cmwpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsK
ICAgICBTdHJpbmcgcGF0aDsKIAogICAgIC8vIEZvciBCbG9iIG9yIFVSTCB0eXBlLgotICAgIEtV
UkwgdXJsOworICAgIFVSTCB1cmw7CiAKICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgIGxvbmcg
bG9uZyBsZW5ndGg7CkBAIC0xODQsOSArMTg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
RGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+LCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lk
IGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxv
bmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKLSAgICB2b2lkIGFw
cGVuZEJsb2IoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgp
OworICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25n
IGxvbmcgbGVuZ3RoKTsKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdm9pZCBhcHBlbmRV
UkwoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IFVS
TCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yMTcsNyArMjE3LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIEJsb2JEYXRhSGFuZGxlKFBhc3NPd25QdHI8QmxvYkRh
dGE+LCBsb25nIGxvbmcgc2l6ZSk7Ci0gICAgS1VSTCBtX2ludGVybmFsVVJMOworICAgIFVSTCBt
X2ludGVybmFsVVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZTc4YmUyMzJkODJi
YTI2OWFkYjRiMTg1MjgxZDdiYjE1YzhjODE1Zi4uZGIxYzU0NjYxNDAwZDBhMjkzZjI5ODA2YjNk
NDVhYmUwNTAyZTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2JEYXRhOwogY2xhc3MgQmxvYlN0b3JhZ2VEYXRhOwogY2xhc3MgQmxvYlJlZ2lzdHJ5Owot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsK
IApAQCAtNDYsMTIgKzQ2LDEyIEBAIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiBjbGFz
cyBCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJl
ZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxCbG9i
RGF0YT4pID0gMDsKICAgICAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJy
aW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiBzcmNVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5
SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDBiYjY1YWJmMWI0
YWRiYTM2Yzk3MzUxMGRkMjE5YTY4YWM4NTNlNTguLjgzYzE5MTNmNTQwYzBhMjBhZjEzNTJjMmZh
OThhODA4ZDljNjdlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3Jh
Z2VEYXRhLCBjb25zCiAgICAgfQogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQor
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBh
c3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvCiAgICAgbV9ibG9icy5zZXQodXJs
LnN0cmluZygpLCBibG9iU3RvcmFnZURhdGEpOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3Zv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lz
dGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKQEAgLTE3NywxMyArMTc3LDEzIEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgS1VSTCYgc3JjVVJMKQogICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgc3JjKTsK
IH0KIAotdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9ibG9icy5yZW1v
dmUodXJsLnN0cmluZygpKTsKIH0KIAotQmxvYlN0b3JhZ2VEYXRhKiBCbG9iUmVnaXN0cnlJbXBs
OjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorQmxvYlN0b3JhZ2VE
YXRhKiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJiB1cmwp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9ibG9i
cy5nZXQodXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggYjM0ZGM3NmYwYTU4ZDY1ODJiMDcxMjE4ZGY4
NzBlNzJhYmZhZTM3Yi4uZTBjMzJiZTMzOGE3N2Q3MGQ4MTJjOTMyYzQ0NjI0OWQ0MGIxMTM4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTUwLDcgKzUwLDcgQEAgY2xh
c3MgQmxvYlJlZ2lzdHJ5SW1wbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkJsb2JSZWdpc3RyeUltcGwoKTsKIAotICAgIEJsb2JTdG9yYWdlRGF0YSogZ2V0
QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBCbG9iU3RvcmFnZURhdGEq
IGdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CiAKQEAgLTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqLCBjb25zdCBCbG9i
RGF0YUl0ZW1MaXN0Jik7CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VE
YXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9u
ZyBsZW5ndGgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiwgUGFzc093blB0cjxCbG9iRGF0YT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8
QmxvYkRhdGE+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiA+IG1fYmxvYnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggZGI3NWZiZDIxNWY0MDQ3YWQ1ZGY0ZTRiZTEwZThhOTdhY2Y1YzQ1NC4u
Mzc2OTY0MTJkMWEyNWYwZWUzZTI3ODk5ZTA0YzMxMmY2ODc3ZmYzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCmluZGV4IDU4OGZmNWIyZWMwZjI5ZDIzZTQ2NzI0YzU4YzU0NTViOTI1MGQzYTguLjk1OTU3
MjQ4N2U5OTkzOTFmZTVjMGEzYTczZDdkZjU1ZjI2Yzg5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIkNy
ZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUHJvdGVjdGlvblNwYWNlSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTYxLDcgKzYxLDcgQEAgc3Rh
dGljIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAmIHBhdGhUb0RlZmF1bHRQcm90ZWN0
aW9uU3BhY2VNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgb3JpZ2lu
U3RyaW5nRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIG9yaWdpblN0cmlu
Z0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5wb3J0KCkpCiAgICAgICAg
IHJldHVybiB1cmwucHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArICc6JyArIFN0cmlu
Zzo6bnVtYmVyKHVybC5wb3J0KCkpICsgJy8nOwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgU3Ry
aW5nIG9yaWdpblN0cmluZ0Zyb21VUkwoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwu
cHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArICcvJzsKIH0KIAotc3RhdGljIFN0cmlu
ZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBT
dHJpbmcgcHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQodXJsLmlzVmFsaWQoKSk7CiAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmlu
ZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1
cm4gZGlyZWN0b3J5VVJMOwogfQogCi12b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29uc3Qg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHByb3RlY3Rpb25TcGFjZS5p
c1Byb3h5KCkgfHwgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAgICAgQVNTRVJUKHBy
b3RlY3Rpb25TcGFjZS5pc1Byb3h5KCkgfHwgdXJsLmlzVmFsaWQoKSk7CkBAIC0xMTQsNyArMTE0
LDcgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHJvdGVjdGlvblNwYWNlKQogICAgIHByb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCgp
LnJlbW92ZShwcm90ZWN0aW9uU3BhY2UpOwogfQogCi1zdGF0aWMgUGF0aFRvRGVmYXVsdFByb3Rl
Y3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwo
Y29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXA6
Oml0ZXJhdG9yIGZpbmREZWZhdWx0UHJvdGVjdGlvblNwYWNlRm9yVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKICAgICBBU1NF
UlQodXJsLmlzVmFsaWQoKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIFBhdGhUb0RlZmF1
bHRQcm90ZWN0aW9uU3BhY2VNYXA6Oml0ZXJhdG9yIGZpbmREZWZhdWx0UHJvdGVjdGlvblNwYWNl
Rm9yVVIKICAgICB9CiB9CiAKLWJvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBLVVJMJiB1cmwpCitib29sIENyZWRlbnRpYWxTdG9y
YWdlOjpzZXQoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVCh1
cmwuaXNWYWxpZCgpKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENyZWRlbnRpYWxTdG9yYWdl
OjpzZXQoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgS1VSTCYgdXJsKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1DcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29u
c3QgS1VSTCYgdXJsKQorQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvbnN0IFVS
TCYgdXJsKQogewogICAgIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTCh1cmwpOwogICAgIGlmIChp
dGVyID09IHBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAoKS5lbmQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAppbmRl
eCA0OWFmNDUyNTE5OTA3ZWU2YzgxYjE3ZWFmZmFmZDZiN2M2YjM5Y2VkLi5iM2JkMWZkNzgzOTJh
MjY3ZTMwOWZmY2NjZjQ3YTIxYWUwNmU4OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCkBAIC0yOSwxMyArMjksMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENyZWRlbnRpYWxTdG9y
YWdlIHsKIHB1YmxpYzoKICAgICAvLyBXZWJDb3JlIHNlc3Npb24gY3JlZGVudGlhbCBzdG9yYWdl
LgotICAgIHN0YXRpYyB2b2lkIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgUHJvdGVjdGlv
blNwYWNlJiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2b2lkIHNldChjb25zdCBDcmVkZW50
aWFsJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIENy
ZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKIApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMg
dGhhdCBzdXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJl
cXVlc3QuIEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8v
IGEgY2xpZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4g
dGhlIGRlcHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4g
dGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZS4KLSAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYsIGNvbnN0IEtVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgotICAgIHN0YXRpYyBDcmVkZW50aWFsIGdldChjb25zdCBLVVJMJik7CisgICAg
c3RhdGljIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNl
LCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgorICAgIHN0YXRpYyBDcmVkZW50aWFs
IGdldChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVNb2RlKGJvb2wp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggNDliZGNhMTBkMTQwYzVjMjFlZDM4NmNlMWQ0MDdjMWUxZGI5ZDk1Mi4uYTUxMzIxZTMzYjcy
OWVjZDBkY2E1N2JlMjhkNzc1Yzk2YzYzYWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTE3OCwxOCArMTc4LDE4IEBAIHZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVu
YW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIHNob3VsZEdlbmVy
YXRlRmlsZSkpOwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJs
b2JVUkwpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsK
ICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoYmxvYlVSTCkpOwogfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQodXJsLCAwLCBCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlLCBpbnZhbGlkRmlsZVRpbWUoKSkpOwogfQogCi12b2lkIEZvcm1E
YXRhOjphcHBlbmRVUkxSYW5nZShjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3ZvaWQgRm9y
bURhdGE6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAg
bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwgc3RhcnQsIGxlbmd0aCwgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CkBAIC0zMjYsMTMgKzMyNiwxMyBAQCBTdHJpbmcg
Rm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQkxPQikK
LXN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9ybURhdGEsIGNvbnN0
IEtVUkwmIHVybCkKK3N0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9y
bURhdGEsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghYmxvYlJlZ2lzdHJ5KCkuaXNCbG9i
UmVnaXN0cnlJbXBsKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJUcmllZCB0byByZXNvbHZlIGEg
YmxvYiB3aXRob3V0IGEgdXNhYmxlIHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgQmxvYlN0b3JhZ2VEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3Ry
eUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKKyAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nh
c3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwo
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CiAgICAgaWYgKCFibG9iRGF0YSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRhIGZyb20gYSByZWdpc3RyeSIpOwog
ICAgICAgICByZXR1cm47CkBAIC01MjEsNyArNTIxLDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlRWxl
bWVudChEZWNvZGVyJiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiAKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGlmICh0eXBlID09IEZvcm1EYXRhRWxlbWVudDo6
ZW5jb2RlZFVSTCkKLSAgICAgICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgZmls
ZW5hbWVPclVSTCk7CisgICAgICAgICAgICBlbGVtZW50Lm1fdXJsID0gVVJMKFVSTCgpLCBmaWxl
bmFtZU9yVVJMKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIGVsZW1lbnQubV9maWxl
bmFtZSA9IGZpbGVuYW1lT3JVUkw7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGJvb2wgZGVj
b2RlRWxlbWVudChEZWNvZGVyJiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIFN0cmluZyBibG9iVVJMU3RyaW5nOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
U3RyaW5nKGJsb2JVUkxTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBlbGVtZW50Lm1fdXJsID0gS1VSTChLVVJMKCksIGJsb2JVUkxTdHJpbmcpOworICAgICAgICBl
bGVtZW50Lm1fdXJsID0gVVJMKFVSTCgpLCBibG9iVVJMU3RyaW5nKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDdjZTQ2ZmE2OWI4NzM1N2E2ZThkNzNkNmIwZWRlMmY3ZTY1MDViM2IuLjk3ZjQ0
YzJkZDU5ZTc5NjY1NTZmMjMyZjJmOTY2ZTc5ZDU4NzdjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgRm9y
bURhdGFfaAogI2RlZmluZSBGb3JtRGF0YV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM5LDEyICszOSwxMiBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgbG9uZyBsb25nIGZpbGVTdGFydCwgbG9uZyBsb25nIGZpbGVMZW5ndGgsIGRv
dWJsZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9maWxlU3Rh
cnQoZmlsZVN0YXJ0KSwgbV9maWxlTGVuZ3RoKGZpbGVMZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2Vu
ZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9Ci0gICAgZXhwbGljaXQgRm9ybURhdGFF
bGVtZW50KGNvbnN0IEtVUkwmIGJsb2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9iKSwgbV91cmwo
YmxvYlVSTCkgeyB9CisgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxv
YlVSTCkgOiBtX3R5cGUoZW5jb2RlZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KICNlbHNlCiAg
ICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2Vu
ZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBt
X3Nob3VsZEdlbmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBLVVJMJiB1cmws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpIDogbV90eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2ZpbGVT
dGFydChzdGFydCksIG1fZmlsZUxlbmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJhdGVG
aWxlKGZhbHNlKSB7IH0KKyAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUpIDogbV90eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2ZpbGVTdGFydChz
dGFydCksIG1fZmlsZUxlbmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKGZh
bHNlKSB7IH0KICNlbmRpZgogCiAgICAgZW51bSBUeXBlIHsKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIFZlY3RvcjxjaGFyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fZmlsZW5hbWU7CiAj
aWYgRU5BQkxFKEJMT0IpCi0gICAgS1VSTCBtX3VybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgorICAg
IFVSTCBtX3VybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgogICAgIGxvbmcgbG9uZyBtX2ZpbGVTdGFy
dDsKICAgICBsb25nIGxvbmcgbV9maWxlTGVuZ3RoOwogICAgIGRvdWJsZSBtX2V4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWU7CkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wgc2hvdWxkR2VuZXJhdGVG
aWxlID0gZmFsc2UpOwogI2lmIEVOQUJMRShCTE9CKQogICAgIHZvaWQgYXBwZW5kRmlsZVJhbmdl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0
aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJsb2JVUkwpOwor
ICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IEtVUkwmKTsKLSAgICB2
b2lkIGFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgYXBw
ZW5kVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKICNlbmRpZgogICAgIGNoYXIqIGV4cGFuZERhdGFTdG9yZShzaXplX3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29v
a2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2ll
SmFyLmgKaW5kZXggOTFkNTFmYzlhMDQwOTY3ZWQ1MGIxOWYyNzE1NGUyMjI0ZWZiNWZjMy4uNWUx
MjJjMTk0ZmM4NjZiMjJjYmYxZDcwMjk5YTlkZTE2NDMwNjRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaApAQCAtMzMsMTgg
KzMzLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIC8vIEZJ
WE1FOiBUaGVzZSBzaG91bGQgcHJvYmFibHkgYmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG1lbWJl
ciBmdW5jdGlvbnMuCiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpOwot
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpOworU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKK3ZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmKTsKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpOwogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7CiB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuaAppbmRleCA4Zjc2MTJlNGU5MWJhNmNmMWVjMWMzNjU0YTAyN2RkY2ZjY2U2NjI3Li43
YzE5MTRlYmE4NDU3MzJkY2EyYjViYTFkNzU5OTM2MTc1MGU2ZDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBAIC0zMSw3ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwogCiAvLyBSZXByZXNlbnRzIGEgc2luZ2xlIHByb3h5IHNlcnZlci4K
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFJldHVybiBhIHZlY3RvciBvZiBw
cm94eSBzZXJ2ZXJzIGZvciB0aGUgZ2l2ZW4gVVJMLgotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0Kik7CitW
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBO
ZXR3b3JraW5nQ29udGV4dCopOwogCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdmVjdG9yIG9mIHBy
b3h5IHNlcnZlcnMgdG8gYSBQQUMgc3RyaW5nLCBhcyBkZXNjcmliZWQgaW4KIC8vIGh0dHA6Ly93
ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDYwNDI0MDA1MDM3L3dwLm5ldHNjYXBlLmNvbS9lbmcvbW96
aWxsYS8yLjAvcmVsbm90ZXMvZGVtby9wcm94eS1saXZlLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2Q3NjhmMjkw
ZDE4ZTk2YjAzMTQ5YjBjMDQ5NWZhNzg5OWU4M2NhNi4uMjhjZjA5NzM5M2VkZWJhOGRkNjIxMDhj
NGFjZTY4ZjI1MGM5NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIFJlc291cmNl
SGFuZGxlOjpzaG91bGRDb250ZW50U25pZmYoKSBjb25zdAogICAgIHJldHVybiBkLT5tX3Nob3Vs
ZENvbnRlbnRTbmlmZjsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNu
aWZmVVJMKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmIHVybCkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KHNob3VsZEZvcmNlQ29udGVudFNuaWZmaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGU5NmFlNzlmYTgyMjIzMzBhMDljMzcx
MDJmNWY0MzY4OTg4MDgxNTguLjkxNjc4NGU1ZWYxZWYxZDczMWZkNWJkYmVlMmVmOTkwMTYwOWQ4
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYoKSBjb25zdDsKLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgS1VSTCYpOworICAgIHN0
YXRpYyBib29sIHNob3VsZENvbnRlbnRTbmlmZlVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGZvcmNlQ29udGVudFNuaWZmaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBjZTEzNDg2
YmVlYmNhYzIzYjY3MTg0NDAxODNiMzYxMWM0ZGVmOGIwLi5jMGNhODhhYzFiNDRmM2MyMmZlNzFl
MDZmNDNmMmQ1N2QwMWVlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIE9CSkNf
Q0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBjbGFzcyBDcmVkZW50aWFsOwotICAgIGNs
YXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAg
ICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAppbmRleCBkZTUyZDAzZThkNzAzNGY5MmM2NmQwMDljNTYxYjliMzMxMmNiMDczLi4x
NTQ2ODEwN2U0M2I5Yzc3NmE4NjI1ZjUyNjc3Yzk2NWZjZTA0NWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aApAQCAtMTMwLDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwg
bV9zY2hlZHVsZWRGYWlsdXJlVHlwZShSZXNvdXJjZUhhbmRsZTo6Tm9GYWlsdXJlKQogICAgICAg
ICAgICAgLCBtX2ZhaWx1cmVUaW1lcihsb2FkZXIsICZSZXNvdXJjZUhhbmRsZTo6ZmlyZUZhaWx1
cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZmlyc3RSZXF1
ZXN0LnVybCgpOworICAgICAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51
cmwoKTsKICAgICAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgICAgICAgICBtX3Bh
c3MgPSB1cmwucGFzcygpOwogICAgICAgICAgICAgbV9maXJzdFJlcXVlc3QucmVtb3ZlQ3JlZGVu
dGlhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDE5NWY0YWUxZGQ0M2NiNzQ3NGNjMDI4YjgxOGQ3
YWI5ZjMzZGJmZGYuLjRlZjlmYTlkOWVmMzA1YTAwNDY1YmY0YjY1MDY0NDI3ZGM2YzE0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtMTEzLDE0ICsxMTMsMTQgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiBtX3VybC5pc051bGwoKTsKIH0KIAotY29u
c3QgS1VSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCitjb25zdCBVUkwmIFJl
c291cmNlUmVxdWVzdEJhc2U6OnVybCgpIGNvbnN0IAogewogICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKICAgICAKICAgICByZXR1cm4gbV91cmw7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogeyAKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsgCiAKQEAgLTE4MiwxNCArMTgyLDE0IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0
VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAgICAgICAgIG1fcGxhdGZv
cm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0Citjb25zdCBVUkwmIFJlc291cmNl
UmVxdWVzdEJhc2U6OmZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QKIHsKICAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCiAgICAgCiAgICAgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tp
ZXM7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tp
ZXMoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCit2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpCiB7IAogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRl
eCAwMTg0NTc0MzM2NTU1MDNhZDg5ZDVhOTI1MzVjNzE2NWE0NWMyYzU3Li4xNDA1N2NiMjdmNGY4
MjNlNTlhYmM0MmE4ODBmODQwMWM1ZTVhMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMzAsNyArMzAsNyBA
QAogCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFByaW9yaXR5LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02NCw4ICs2NCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmIHVybCk7CisgICAgICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYgdXJsKTsK
IAogICAgICAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTc1LDggKzc1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBkb3VibGUgdGltZW91dEludGVydmFsKCkgY29u
c3Q7IC8vIE1heSByZXR1cm4gMCB3aGVuIHVzaW5nIHBsYXRmb3JtIGRlZmF1bHQuCiAgICAgICAg
IHZvaWQgc2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpOwogICAgICAg
ICAKLSAgICAgICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiBmaXJzdFBhcnR5
Rm9yQ29va2llcyk7CisgICAgICAgIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgaHR0
cE1ldGhvZCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5n
JiBodHRwTWV0aG9kKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdEJhc2UoY29uc3Qg
S1VSTCYgdXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2UoY29uc3QgVVJMJiB1cmwsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSkKICAgICAgICAgICAgIDogbV91cmwodXJsKQogICAgICAgICAgICAgLCBtX2Nh
Y2hlUG9saWN5KHBvbGljeSkKICAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoc19kZWZh
dWx0VGltZW91dEludGVydmFsKQpAQCAtMTgxLDExICsxODEsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBUaGUgUmVzb3VyY2VSZXF1ZXN0IHN1YmNsYXNzIG1heSAic2hhZG93
IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgICAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEtVUkwgbV91
cmw7CisgICAgICAgIFVSTCBtX3VybDsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBtX2NhY2hlUG9saWN5OwogICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2YWw7IC8v
IDAgaXMgYSBtYWdpYyB2YWx1ZSBmb3IgcGxhdGZvcm0gZGVmYXVsdCBvbiBwbGF0Zm9ybXMgdGhh
dCBoYXZlIG9uZS4KLSAgICAgICAgS1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOworICAgICAg
ICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKICAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhv
ZDsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXk7CkBAIC0yMTUsMTEgKzIxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2Up
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2UoKSB7IH0KLSAgICAgICAgS1VSTCBtX3VybDsKKyAg
ICAgICAgVVJMIG1fdXJsOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1f
Y2FjaGVQb2xpY3k7CiAgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsKLSAgICAgICAg
S1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOworICAgICAgICBVUkwgbV9maXJzdFBhcnR5Rm9y
Q29va2llczsKIAogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBPd25QdHI8
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKaW5kZXggZTRlNjNiY2I0YzE4YWRjNzhiZjRlYjgzZTBhM2E3MDM4ZWUyMTc4YS4uNDA1MjJh
MTNkNjM3YWRmYWZlY2FmYzg5NmZkZjVhNzIyNTRiMDhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNl
KCkKIHsKIH0KIAotUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVk
TGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCitSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0
aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQpAQCAtMTM4LDE0ICsxMzgsMTQg
QEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29uc3QKICAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgIHx8IGVxdWFsSWdub3JpbmdDYXNl
KHByb3RvY29sLCAiaHR0cHMiKTsKIH0KIAotY29uc3QgS1VSTCYgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIFJlc291cmNlUmVzcG9uc2VCYXNlOjp1cmwoKSBj
b25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgcmV0dXJuIG1f
dXJsOyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKICAgICBtX2lzTnVsbCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCmluZGV4IDQ5YmRjNzAzODk3OGM0Y2ZjZWQ4YWQ2MGEzMzRhNmI3NDZiOGY5
ZjguLjJjZmI1M2E5MzdmYjRhYjdmYTZiODZiNDc5NmJiODZlMjRlYjdlYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJhc2VfaAogCiAj
aW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKIAot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwm
IHVybCk7CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsKKyAgICB2b2lkIHNldFVSTChjb25z
dCBVUkwmIHVybCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKCk7Ci0g
ICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisgICAgUmVzb3VyY2VSZXNwb25zZUJh
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKTsKIAogICAgIHZvaWQgbGF6eUluaXQoSW5pdExldmVsKSBjb25zdDsKIApAQCAt
MTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBz
dWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVj
aWZpYyBmaWVsZHMKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4
dEVuY29kaW5nTmFtZTsKQEAgLTE4NCw3ICsxODQsNyBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UoKSB7IH0KLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCmluZGV4IDJjMDI3NGRjNTRjZjQyMmUwYmE2
MmMwMmMyMzg4M2ZhODY4NWI0OGIuLmU3YzExMzlkZGY4MjY4NjQ3YzkzZWRhMTFhMDc1M2E5NzMx
OTQ3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGludCBidWZmZXJTaXplID0gMTAwICogMTAyNCAq
IDEwMjQ7CiAKLVNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogbV91cmwodXJsKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zdGF0ZShDb25uZWN0aW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaAppbmRleCA3ZGVkNGRjYjIyNjZkZTNhZWMwYTUwODY5YTE5ZDhmNDUzZmEzZjA2Li5mNzk0
NzIwMjFiYmU5MzU0OTU5YjQwOTYxYjNmMWY1Njg0MDAzNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApA
QCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKICNkZWZp
bmUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAKQEAgLTU2LDEzICs1
NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Q2xpZW50KFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsK
KyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqKTsKIAogICAgICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogICAgICAg
ICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpID0gMDsKIAotICAgICAg
ICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogbV9jbGllbnQ7CiAgICAgICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICog
MTAyND4gbV9idWZmZXI7CiAgICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaAppbmRleCBiZmY2Njc2Yjk2YWJkY2FkMmRhNDljNGZkYjRmOTY0Y2QxYTU4
MTAwLi41YThjNGQ1MGVlMmVjMmE3OTE5MDY1NmFhNGZhMTFhMTI2NDNmODg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xh
c3MgVVJMOwogICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOwogICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCmluZGV4IDY2
MWMwZWYxOGZjZTk2Y2IyODBiZGY0Njg2ZWMwMmExOGYzNWFiZTQuLjYxNTkxZmMzYTMyNDc4YTI4
YjBjZjg2ZDhmZjBhNDUyYTRmZWJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJy
eS5jcHAKQEAgLTI0LDI4ICsyNCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgY29va2llTWFuYWdlcigpLnNldENvb2tpZXModXJsLCB2YWx1ZSwgTm9IdHRw
T25seUNvb2tpZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyAnSHR0cE9u
bHknIGNvb2tpZXMgc2hvdWxkIG5vIGJlIGFjY2Vzc2libGUgZnJvbSBzY3JpcHRzLCBzbyB3ZSBm
aWx0ZXIgdGhlbSBvdXQgaGVyZS4KICAgICByZXR1cm4gY29va2llTWFuYWdlcigpLmdldENvb2tp
ZSh1cmwsIE5vSHR0cE9ubHlDb29raWUpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gY29va2llTWFuYWdlcigp
LmdldENvb2tpZSh1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOwogfQogCi1ib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBV
UkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuICFjb29raWVNYW5hZ2VyKCkuY29va2llSmFyKCku
aXNFbXB0eSgpOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIFZlY3RvcjxSZWZQdHI8UGFy
c2VkQ29va2llPiA+IHJlc3VsdDsKICAgICBjb29raWVNYW5hZ2VyKCkuZ2V0UmF3Q29va2llcyhy
ZXN1bHQsIHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CkBAIC01NCw3ICs1NCw3IEBAIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBjb29raWVN
YW5hZ2VyKCkucmVtb3ZlQ29va2llV2l0aE5hbWUodXJsLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMDM1ODk2YWI3YTU3MmRiYjk5ZGEz
YjY5OWRlZDE5NmQ2M2ZlY2IwLi4xNjYxYjY0ZjI5MWY2MzE4MjdhMGMwMTViOTNmNDIwMjBjNjE3
OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCkBAIC0yMiw3
ICsyMiw3IEBACiAjaWYgRU5BQkxFKEJMQUNLQkVSUllfQ1JFREVOVElBTF9QRVJTSVNUKQogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtRW5jcnlwdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKaW5kZXggMTZhZTI0YWFj
MWZkZWRjNWU5NmJiZThhZWU0ZjM1ZTlkNGI2YjM0YS4uNzBmM2MzNmFmMWI5YjNmMTRiMDNiN2U3
NWVkMDE2NzFmNTgzZTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcApAQCAtMjgsNyArMjgsNyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVNuaWZmaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtNYW5hZ2VyLmgiCkBAIC0xMTcsNyArMTE3LDcg
QEAgTmV0d29ya0pvYjo6fk5ldHdvcmtKb2IoKQogCiB2b2lkIE5ldHdvcmtKb2I6OmluaXRpYWxp
emUoaW50IHBsYXllcklkLAogICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwKLSAgICBj
b25zdCBLVVJMJiB1cmwsCisgICAgY29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0LAogICAgIFBhc3NSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IGhhbmRsZSwKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1N0
cmVhbUZhY3RvcnkqIHN0cmVhbUZhY3RvcnksCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBOZXR3
b3JrSm9iOjpoYW5kbGVOb3RpZnlNdWx0aXBhcnRIZWFkZXJSZWNlaXZlZChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3QKIAogdm9pZCBOZXR3b3JrSm9iOjpoYW5kbGVTZXRDb29raWVIZWFkZXIo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IG1fcmVzcG9uc2UudXJsKCk7
CisgICAgVVJMIHVybCA9IG1fcmVzcG9uc2UudXJsKCk7CiAgICAgQ29va2llTWFuYWdlciYgbWFu
YWdlciA9IGNvb2tpZU1hbmFnZXIoKTsKICAgICBpZiAoKG1hbmFnZXIuY29va2llUG9saWN5KCkg
PT0gQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQog
ICAgICAgICAmJiAobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVz
KCkgIT0gdXJsKQpAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgTmV0d29ya0pvYjo6cmV0cnlBc0ZU
UERpcmVjdG9yeSgpCiAKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIFJlc291cmNlUmVxdWVz
dCBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpOwotICAgIEtVUkwgdXJsID0g
bmV3UmVxdWVzdC51cmwoKTsKKyAgICBVUkwgdXJsID0gbmV3UmVxdWVzdC51cmwoKTsKICAgICB1
cmwuc2V0UGF0aCh1cmwucGF0aCgpICsgIi8iKTsKICAgICBuZXdSZXF1ZXN0LnNldFVSTCh1cmwp
OwogICAgIG5ld1JlcXVlc3Quc2V0TXVzdEhhbmRsZUludGVybmFsbHkodHJ1ZSk7CkBAIC02NzIs
NyArNjcyLDcgQEAgYm9vbCBOZXR3b3JrSm9iOjpoYW5kbGVSZWRpcmVjdCgpCiAgICAgaWYgKGxv
Y2F0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIG5ld1VS
TChtX3Jlc3BvbnNlLnVybCgpLCBsb2NhdGlvbik7CisgICAgVVJMIG5ld1VSTChtX3Jlc3BvbnNl
LnVybCgpLCBsb2NhdGlvbik7CiAgICAgaWYgKCFuZXdVUkwuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTgxMyw3ICs4MTMsNyBAQCBOZXR3b3JrSm9iOjpTZW5kUmVxdWVz
dFJlc3VsdCBOZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFscyhQcm90ZWN0aW9u
UwogICAgIGlmICghbV9oYW5kbGUpCiAgICAgICAgIHJldHVybiBTZW5kUmVxdWVzdENhbmNlbGxl
ZDsKIAotICAgIEtVUkwgbmV3VVJMID0gbV9yZXNwb25zZS51cmwoKTsKKyAgICBVUkwgbmV3VVJM
ID0gbV9yZXNwb25zZS51cmwoKTsKICAgICBpZiAoIW5ld1VSTC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBTZW5kUmVxdWVzdENhbmNlbGxlZDsKIApAQCAtODMyLDEwICs4MzIsMTAgQEAgTmV0
d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1bHQgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMoUHJvdGVjdGlvblMKICAgICAgICAgICAgIGhvc3QgPSBtX3Jlc3BvbnNlLnVybCgp
Lmhvc3QoKTsKICAgICAgICAgICAgIHBvcnQgPSBtX3Jlc3BvbnNlLnVybCgpLnBvcnQoKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHByb3h5SW5mbyByZXR1cm5zIGhvc3Q6cG9y
dCwgd2l0aG91dCBhIHByb3RvY29sLiBLVVJMIGNhbid0IHBhcnNlIHRoaXMsIHNvIHN0aWNrIGh0
dHAKKyAgICAgICAgICAgIC8vIHByb3h5SW5mbyByZXR1cm5zIGhvc3Q6cG9ydCwgd2l0aG91dCBh
IHByb3RvY29sLiBVUkwgY2FuJ3QgcGFyc2UgdGhpcywgc28gc3RpY2sgaHR0cAogICAgICAgICAg
ICAgLy8gb24gdGhlIGZyb250LgogICAgICAgICAgICAgLy8gKFdlIGNvdWxkIHNwbGl0IGludG8g
aG9zdCBhbmQgcG9ydCBieSBoYW5kLCBidXQgdGhhdCBnZXRzIGhhcmQgdG8gcGFyc2Ugd2l0aCBJ
UHY2IHVybHMsCi0gICAgICAgICAgICAvLyBzbyBiZXR0ZXIgdG8gcmV1c2UgS1VSTCdzIHBhcnNp
bmcuKQorICAgICAgICAgICAgLy8gc28gYmV0dGVyIHRvIHJldXNlIFVSTCdzIHBhcnNpbmcuKQog
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBwcm94eUFkZHJlc3M7CiAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFApCiAgICAgICAgICAgICAgICAgcHJveHlB
ZGRyZXNzLmFwcGVuZCgiaHR0cDovLyIpOwpAQCAtODQzLDcgKzg0Myw3IEBAIE5ldHdvcmtKb2I6
OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0aENyZWRlbnRpYWxz
KFByb3RlY3Rpb25TCiAgICAgICAgICAgICAgICAgcHJveHlBZGRyZXNzLmFwcGVuZCgiaHR0cHM6
Ly8iKTsKICAgICAgICAgICAgIHByb3h5QWRkcmVzcy5hcHBlbmQocHJveHlJbmZvLmFkZHJlc3Mp
OwogCi0gICAgICAgICAgICBLVVJMIHByb3h5VVJMKEtVUkwoKSwgcHJveHlBZGRyZXNzLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgVVJMIHByb3h5VVJMKFVSTCgpLCBwcm94eUFkZHJlc3MudG9T
dHJpbmcoKSk7CiAgICAgICAgICAgICBob3N0ID0gcHJveHlVUkwuaG9zdCgpOwogICAgICAgICAg
ICAgcG9ydCA9IHByb3h5VVJMLnBvcnQoKTsKICAgICAgICAgfQpAQCAtMTAyOCw3ICsxMDI4LDcg
QEAgdm9pZCBOZXR3b3JrSm9iOjpmaXJlRGVsZXRlSm9iVGltZXIoVGltZXI8TmV0d29ya0pvYj4q
KQogICAgIE5ldHdvcmtNYW5hZ2VyOjppbnN0YW5jZSgpLT5kZWxldGVKb2IodGhpcyk7CiB9CiAK
LXZvaWQgTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQg
TmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VS
ZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIEFTU0VS
VCh1cmwuaXNWYWxpZCgpKTsKICAgICBBU1NFUlQodXJsID09IG1fcmVzcG9uc2UudXJsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05l
dHdvcmtKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9O
ZXR3b3JrSm9iLmgKaW5kZXggM2VjY2IxYTQyYjc3OWYwODA1ODE0MDI3MjI3NTJkMWFiNTg0Zjcy
NC4uZmEzNGY0OWU1MzkxOGQ2OWQxMGNiODczMzMxNDJlMGU0NmNiMGFkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pv
Yi5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVu
dGlhbDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3Rl
Y3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemUoaW50IHBsYXllcklkLAogICAgICAgICBjb25z
dCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsCi0gICAgICAgIGNvbnN0IEtVUkwmLAorICAgICAgICBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1Jl
cXVlc3QmLAogICAgICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiwKICAgICAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJlYW1GYWN0b3J5KiwKQEAgLTkyLDcgKzkyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
ZW5kZWRTdGF0dXNDb2RlOyB9CiAgICAgdmlydHVhbCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2hh
bGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsK
IAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBwdXJl
IHZpcnR1YWxzLgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3
b3JrTWFuYWdlci5jcHAKaW5kZXggOTIzMTRmMDViM2IwN2I1NzJiZTdkMmM1NGZhMzhjMGI1YWQ5
OWU2Ny4uZWFmZGM1N2EyNzI4MzU0ODAxYjEyYWMwNmY4ZTIwMWMzMDQ3NzQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya01hbmFnZXIuY3BwCkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBpbnQgTmV0d29ya01hbmFn
ZXI6OnN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBQ
YXNzUmVmUAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUmVzb3VyY2VIYW5kbGUgZG9lc24ndCBnbyBv
dXQgb2Ygc2NvcGUgd2hpbGUgY2FsbGluZyBjYWxsYmFja3MuCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBndWFyZEpvYihqb2IpOwogCi0gICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogCiAgICAgLy8gT25seSBsb2FkIHRoZSBpbml0
aWFsIHVybCBvbmNlLgogICAgIGJvb2wgaXNJbml0aWFsID0gKHVybCA9PSBtX2luaXRpYWxVUkwp
OwogICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgIG1faW5pdGlhbFVSTCA9IEtVUkwoKTsKKyAg
ICAgICAgbV9pbml0aWFsVVJMID0gVVJMKCk7CiAKICAgICAvLyBBbHdheXMgcmVyZWFkIGNvb2tp
ZXMgb24gYSByZWRpcmVjdAogICAgIGlmIChyZWRpcmVjdENvdW50KQpAQCAtMTU2LDggKzE1Niw4
IEBAIGludCBOZXR3b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBTdHJp
bmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5l
dHdvcmtSZXF1ZXN0IHBsYXRmb3JtUmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRpYWxpemVQbGF0
Zm9ybVJlcXVlc3QocGxhdGZvcm1SZXF1ZXN0LCBmcmFtZS0+bG9hZGVyKCkgJiYgZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKSAmJiBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+Y29va2llc0VuYWJsZWQoKSwgaXNJbml0
aWFsLCByZXJlYWRDb29raWVzKTsKIAotICAgIC8vIEdVUkwgYW5kIEtVUkwgY29uc2lkZXIgdmFs
aWQgVVJMcyBkaWZmZXJlbnRseSwgZm9yIGV4YW1wbGUgaHR0cDovLyBpcyBwYXJzZWQgYXMKLSAg
ICAvLyBodHRwOi8gYnkgS1VSTCBhbmQgY29uc2lkZXJlZCB2YWxpZCwgd2hpbGUgR1VSTCBjb25z
aWRlcnMgaXQgaW52YWxpZC4KKyAgICAvLyBHVVJMIGFuZCBVUkwgY29uc2lkZXIgdmFsaWQgVVJM
cyBkaWZmZXJlbnRseSwgZm9yIGV4YW1wbGUgaHR0cDovLyBpcyBwYXJzZWQgYXMKKyAgICAvLyBo
dHRwOi8gYnkgVVJMIGFuZCBjb25zaWRlcmVkIHZhbGlkLCB3aGlsZSBHVVJMIGNvbnNpZGVycyBp
dCBpbnZhbGlkLgogICAgIGlmICghcGxhdGZvcm1SZXF1ZXN0LnVybCgpLmlzX3ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFtOjpTdGF0dXNF
cnJvckludmFsaWRVcmw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKaW5kZXggMWQ4MzNkYTJlZTM3
YWI4MWQwZjUwNDExOTYwZTkyYTEyOTliMzQ5OS4uMjg2Y2I5MGE5MDM5NTNjYzMzMWNhNGY4N2U4
NzI4MGQwNTYzMWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKQEAgLTE5LDcgKzE5LDcgQEAK
ICNpZm5kZWYgTmV0d29ya01hbmFnZXJfaAogI2RlZmluZSBOZXR3b3JrTWFuYWdlcl9oCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVNpbmdsZXRvbi5oPgpAQCAtNDMs
OCArNDMsOCBAQCB2b2lkIHByb3RlY3Rpb25TcGFjZVRvUGxhdGZvcm1BdXRoKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOgogY2xhc3MgTmV0d29ya01hbmFnZXIg
OiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRocmVhZFVuc2FmZVNpbmdsZXRvbjxOZXR3
b3JrTWFuYWdlcj4gewogICAgIFNJTkdMRVRPTl9ERUZJTklUSU9OX1RIUkVBRFVOU0FGRShOZXR3
b3JrTWFuYWdlcikKIHB1YmxpYzoKLSAgICB2b2lkIHNldEluaXRpYWxVUkwoY29uc3QgS1VSTCYg
dXJsKSB7IG1faW5pdGlhbFVSTCA9IHVybDsgfQotICAgIEtVUkwgaW5pdGlhbFVSTCgpIHsgcmV0
dXJuIG1faW5pdGlhbFVSTDsgfQorICAgIHZvaWQgc2V0SW5pdGlhbFVSTChjb25zdCBVUkwmIHVy
bCkgeyBtX2luaXRpYWxVUkwgPSB1cmw7IH0KKyAgICBVUkwgaW5pdGlhbFVSTCgpIHsgcmV0dXJu
IG1faW5pdGlhbFVSTDsgfQogICAgIGludCBzdGFydEpvYihpbnQgcGxheWVySWQsIFBhc3NSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IGpvYiwgRnJhbWUqLCBib29sIGRlZmVyc0xvYWRpbmcpOwogICAg
IGludCBzdGFydEpvYihpbnQgcGxheWVySWQsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGpv
YiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqLCBib29sIGRlZmVyc0xvYWRpbmcpOwog
ICAgIGJvb2wgc3RvcEpvYihQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPik7CkBAIC02MCw3ICs2
MCw3IEBAIHByaXZhdGU6CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgY29uc3QgU3Ry
aW5nJiBwYWdlR3JvdXBOYW1lLCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJlYW1GYWN0b3J5
KiwgRnJhbWUqLCBpbnQgZGVmZXJMb2FkaW5nQ291bnQgPSAwLCBpbnQgcmVkaXJlY3RDb3VudCA9
IDAsIGJvb2wgcmVyZWFkQ29va2llcyA9IGZhbHNlKTsKIAogICAgIFZlY3RvcjxOZXR3b3JrSm9i
Kj4gbV9qb2JzOwotICAgIEtVUkwgbV9pbml0aWFsVVJMOworICAgIFVSTCBtX2luaXRpYWxVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUHJveHlTZXJ2ZXJCbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwCmluZGV4IDMzYjIwNjJhNmRiNDMxMDQ2M2Q1ZWRlNTQzZDk1NGYxZTQ0ODc1
ZDcuLmE3MWI5MjkxY2M4MTExOGM5ZTlhYTE4OTZmMzI1OTcyMzE1ZTBmNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9Qcm94eVNlcnZlckJsYWNrQmVycnkuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JV
UkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNl
cnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250
ZXh0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBWZWN0b3I8UHJveHlT
ZXJ2ZXI+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggOTJhYTFkODZlMGM3YmUzZmY5
ZTYyMzZmYTIwZGQwNWI3YTVmYmQyNi4uYmQxM2I2ZDBhMWRkZTlkMGViYzY3MzE3OTJmMjU1MDU2
ZGNmYTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFRhcmdldElzVW5zcGVjaWZpZWQsCiAgICAgfTsKICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQog
ICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCiAgICAgICAgICwgbV9mb3Jj
ZURvd25sb2FkKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgUmVzb3VyY2VSZXF1
ZXN0KGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBV
c2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAsIG1faXNYTUxIVFRQUmVxdWVzdChmYWxz
ZSkKICAgICAgICAgLCBtX211c3RIYW5kbGVJbnRlcm5hbGx5KGZhbHNlKQpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1
ZXN0KGZhbHNlKQogICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQogICAgICAgICAsIG1f
bXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCiAgICAgICAgICwgbV9mb3JjZURvd25sb2FkKGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggNGMxYWQ2OTY1ZWM0Y2FmMDAwYmIz
ZTZjODVjYjdmMjAxOTNmNWI3OS4uY2JmMTdlMWY3OTU1NDJkYTdiNDhmMTZkZWYwZjYwMDQyYjAz
NzFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zMCw3ICszMCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJl
c291cmNlUmVzcG9uc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxv
bmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVy
bCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkK
ICAgICAgICAgLCBtX2lzTXVsdGlwYXJ0UGF5bG9hZChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFt
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29j
a2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggODBlYzQxYmQ3OTdhM2MxNThlMWQyZmI4NmUxMmZlNDQz
ZGIzYmE4My4uYzgyMmU0NmI3NmVhYTM2YTE2ODYwNDI4MjE4YTA5NmE5MWJhZDllNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0
cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQ7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RmlsdGVyU3RyZWFtLCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUoZ3Jv
dXBOYW1lLCB1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNvY2tldFN0cmVhbUhhbmRsZShncm91cE5hbWUsIHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZp
cnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiBwcml2YXRlOgotICAgIFNv
Y2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBT
dHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7
CiAKICAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbT4gbV9zb2Nr
ZXRTdHJlYW07CiAgICAgaW50IG1fc3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0
cmVhbUhhbmRsZUJsYWNrQmVycnkuY3BwCmluZGV4IGIxYTRkZWIyZGM0MGE3OThhZWM2ZDk3Yjg4
MDEwNjdiNTRjZGVhMDEuLmNjOTUxOWNjOGYwNWEzNjVmYmViMWE5NDU2ZTc4OGYyMjkxMjQ0OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9T
b2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkK
IHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVw
IiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5jcHAKaW5kZXgg
NTVjZTNjMzc1YjA0ODg0YWNhNmEwMGIwMzM3ZWIzYWE3YTU0MTkyZS4uMjQyYzkxYTdmZjRlNjM1
MTJkNmQ3N2Y1NGE4NDZmY2Q5M2Q2YTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIFJTU0F0b21QYXJzZXI6OlJTU0F0b21QYXJzZXIoKQogCiBi
b29sIFJTU0F0b21QYXJzZXI6OnBhcnNlQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgaW50IGxl
bmd0aCwgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBlbmNvZGluZykKIHsKLSAgICBtX3Vy
bCA9IEtVUkwoYmxhbmtVUkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChibGFua1VSTCgpLCB1
cmwpOwogICAgIHJldHVybiBwYXJzZVhtbERvYyh4bWxSZWFkTWVtb3J5KGJ1ZmZlciwgbGVuZ3Ro
LCB1cmwsIGVuY29kaW5nLCBYTUxfUEFSU0VfTk9CTEFOS1MgfCBYTUxfUEFSU0VfTk9ORVQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaAppbmRleCA4NjVmNTBmMjQyMTQ2NTg2N2U2
YTM3OTVlNWZmMjViZDZkZmIyNjg5Li5jNGQ3OWNlN2I5NmEwYmNhNGJiYmZjNzY1OTcxZGQwNGEy
NTBmNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaApAQCAtMTksNyArMTksNyBAQAog
I2lmbmRlZiBSU1NBdG9tUGFyc2VyX2gKICNkZWZpbmUgUlNTQXRvbVBhcnNlcl9oCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUlNTUGFyc2VyQmFzZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIHBhcnNlQ29udGVudChjb25zdCBTdHJpbmcmIGJhc2UsIHhtbE5vZGUqKTsKICAgICBT
dHJpbmcgcGFyc2VBdXRob3IoeG1sTm9kZSopOwogICAgIFN0cmluZyBwYXJzZUNhdGVnb3J5KHht
bE5vZGUqKTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggNTBmNjk4YmJkNzQ2NzdlNTQyNjc5YWU4NDli
ODQ1MDA2ZTliMjkxZi4uZjM1YzE4MmQ0NjgxNjQyYjMyMmZkMmRlYjFjZWU5MjJmOTMyZDY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVK
YXJDRk5ldC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5j
bHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgi
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CkBAIC05Myw3ICs5Myw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2llcyhDRkFycmF5UmVm
IHVuZmlsdGVyZWRDb29raWVzKQogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQ
Q29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkgY29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50
IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29r
aWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5n
ZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRiA9IHVy
bC5jcmVhdGVDRlVSTCgpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1UKICAgICByZXR1cm4gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRl
ckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gdXJsQ0YgPSB1cmwuY3JlYXRlQ0ZVUkwoKTsKIApAQCAtMTM3LDEzICsxMzcs
MTMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1cm4gKENGU3RyaW5nUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0KIAotYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29r
aWVBY2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVy
biBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
QWx3YXlzOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdD
b29raWVzLmNsZWFyKCk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNDRk5ldC5jcHAKaW5kZXggMWJhZjU4MTFlOWQ4M2Q1OWVkMDMxMjIyODlmYzUwMTZmZGMxYzZk
YS4uMDc1YWE2YmNhNWUyNTY0N2FlYmU5ZjEyZDY5ZDZhYjZjODNlNDZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAg
LTU1LDggKzU1LDggQEAgYm9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJs
ZWRJblN5c3RlbVByZWZlcmVuY2VzKCkKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gS1VS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVD
RlVSTCgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRv
cHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0
dGluZ3MuZ2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAppbmRleCAxMmYzYjExNmYyNjVjMTlj
NGM1MDM0ZDQxZGMwYTRjZmE2YjVhNDU2Li43MTExOGQyZWViMWZmOTUyYTE1OTIzMGMwYmM0Mzg2
MmQ5NDRhNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Byb3h5U2VydmVyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTE5LDcgKzExOSw3
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQcm94eVNlcnZlcnMoVmVjdG9yPFByb3h5U2VydmVyPiYg
cHJveHlTZXJ2ZXJzLCBDRkFycmF5UmVmIHByCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhZGRQ
cm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgdm9pZCBhZGRQcm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFBy
b3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCkBAIC0xMzMs
NyArMTMzLDcgQEAgc3RhdGljIHZvaWQgYWRkUHJveHlTZXJ2ZXJzRm9yVVJMKFZlY3RvcjxQcm94
eVNlcnZlcj4mIHByb3h5U2VydmVycywgY29uc3QgS1VSTCYKICAgICBwcm9jZXNzUHJveHlTZXJ2
ZXJzKHByb3h5U2VydmVycywgcHJveGllc0ZvclVSTC5nZXQoKSwgY2ZVUkwuZ2V0KCkpOwogfQog
Ci1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2
ZXJzRm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAg
ICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5k
ZXggYTJhNmZkN2M1ZGYzYWQzMDljNjY4MjQ1NDJhMzgzYjg0OWUyMjcyNy4uYWUxYzFlYjNiNzVm
ZGIwNzNiNGI4ZTE3NjBlNDJkMWMxZWEzNTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgVVNFKENGTkVUV09SSykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDcxYWFmMWE4NTdiZTBhNDVmMWM4YjljNmZjZWMyYWRj
ZDE4ZDM2MzAuLjI2ZTczYTU2ZjMyMjJlMWE0ZjQ3ZGQ5ZWIwZWM0NWM4N2I5OGZiMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBi
b29sCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1w
dHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
ewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBV
UkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdhdGUgY2FsbCB3
b24ndCBiZSBtYWRlLgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVl
c3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0
KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIp
OwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAg
ICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTQ3OSw3ICs0
NzksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGNvbnN0IEtVUkwmIHVybCA9
IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
IGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKICAg
ICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01NDIsNyAr
NTQyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICBpZiAoIWQtPm1fdXNlci5pc051
bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENy
ZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+
bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAg
VVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCku
aHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6
c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwg
dXJsVG9TdG9yZSk7CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UK
ICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVk
ZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwogICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0
ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3Jl
ID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOyAgICAgIAogICAgICAgICBDcmVk
ZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MzQ5Y2U4OTE4ZGRiNzBlNDVjYTg3YTM3
MGQ5N2MxNjcwNDA3YzUxLi42Y2YyNmFiNGMzZWY4NGEwNGNlY2U4ZmFkZTk4ZDdkOGNhMjM1ZDcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0LmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VS
TCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSAKICAgICAg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAogICAgICAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICB7CiAgICAg
ICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewog
ICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBlMGE1ZGQ0OGFkZTE3YWI0NmFkMTQ2
ZTk0NDljNDM0ZjQ5MDU0MDcwLi4xM2E1ODExODBlYTY4OGRkZTM3NmUzNWYwN2UyZWUzMTYzOGFk
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlm
CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25zZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVk
TGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhw
ZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1faW5p
dExldmVsKENvbW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgICAgICAsIG1fcGxhdGZvcm1SZXNw
b25zZUlzVXBUb0RhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCAyNTRiMDM0NWIwZDgxNzVi
MzNjMmZiZTE0NjAzNzE0ZjZlNGQ4OWQ4Li45OWJiZTg4YmIyMWU1YWRjYmY1NGQ2MjMwNjRmNzY4
Yzg1OWFhMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0
U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVh
bUhhbmRsZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQg
cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VS
TCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGNyZWF0ZVN0
cmVhbXMoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJv
eHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggOTE0YTU3NTVmNWNhZDQ4MWY4
ZmVmOTc0NDIyYTA3NDYxYWQxZDU0Zi4uZmMyZDI4ZDcyNDE4M2Y1NTRhZWM3NzI3N2U0MWEzMjA1
YTkwMjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
ZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGU3RyZWFtU29ja2V0U2V0Tm9EZWxheTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAg
ICAsIG1fY29ubmVjdGlvblR5cGUoVW5rbm93bikKQEAgLTY1LDcgKzY1LDcgQEAgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQKIAogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwu
cHJvdG9jb2xJcygid3NzIikpOwogCi0gICAgS1VSTCBodHRwc1VSTChLVVJMKCksICJodHRwczov
LyIgKyBtX3VybC5ob3N0KCkpOworICAgIFVSTCBodHRwc1VSTChVUkwoKSwgImh0dHBzOi8vIiAr
IG1fdXJsLmhvc3QoKSk7CiAgICAgbV9odHRwc1VSTCA9IGh0dHBzVVJMLmNyZWF0ZUNGVVJMKCk7
CiAKICAgICBjcmVhdGVTdHJlYW1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKaW5kZXggOGQxODFmM2IyYWRiZmJl
YzM2OGI2NGFkNDJkMDk5YjMwMzliNDc1Yy4uOWNkOGE5YjJkNjE4MWJlNzE2MzAzOTUxZThmMzJk
OWJmMmJmODg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgIlBs
YXRmb3JtQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgi
CiAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMg
dm9pZCBhZGRNYXRjaGluZ0N1cmxDb29raWUoY29uc3QgY2hhciogY29va2llLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29ucwogCiB9CiAKLXN0YXRpYyBTdHJpbmcgZ2V0TmV0c2NhcGVDb29raWVG
b3JtYXQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIFN0cmlu
ZyBnZXROZXRzY2FwZUNvb2tpZUZvcm1hdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICAvLyBDb25zdHJ1Y3RzIGEgY29va2llIHN0cmluZyBpbiBOZXRzY2FwZSBD
b29raWUgZmlsZSBmb3JtYXQuCiAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgU3RyaW5nIGdl
dE5ldHNjYXBlQ29va2llRm9ybWF0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICByZXR1cm4gY29va2llU3RyLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgQ1VSTCogY3VybCA9IGN1cmxfZWFzeV9pbml0
KCk7CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cgogICAgIGN1
cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgaHR0cG9ubHkpCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBi
b29sIGh0dHBvbmx5KQogewogICAgIFN0cmluZyBjb29raWVzOwogICAgIENVUkwqIGN1cmwgPSBj
dXJsX2Vhc3lfaW5pdCgpOwpAQCAtMjg0LDI5ICsyODQsMjkgQEAgc3RhdGljIFN0cmluZyBjb29r
aWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QKICAgICByZXR1cm4gY29va2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgZmFsc2UpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHRydWUpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8q
dXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xl
YXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQK
IH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFkYzAzZmQ0MGYwYjlm
ZDhkOGM0MzQ5ZTdmZGVlNDE0MjU1NDZlZjMuLmZiMjA5MjJjZDRkMTA1Y2Y5N2ZjMGI0OWE4YTVi
YTY0ZDdkNGVmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgQ3VybERvd25sb2Fk
Ojp+Q3VybERvd25sb2FkKCkKICAgICBtb3ZlRmlsZVRvRGVzdGluYXRpb24oKTsKIH0KIAotdm9p
ZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBjb25z
dCBLVVJMJiB1cmwpCit2b2lkIEN1cmxEb3dubG9hZDo6aW5pdChDdXJsRG93bmxvYWRMaXN0ZW5l
ciogbGlzdGVuZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbGlzdGVuZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6aW5pdChD
dXJsRG93bmxvYWRMaXN0ZW5lciogbGlzdGVuZXIsIFJlc291cmNlSGFuZGxlKiwgY29uc3QgUgog
CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCi0gICAgS1VSTCB1cmwoUGFyc2Vk
VVJMU3RyaW5nLCByZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
cmVxdWVzdC51cmwoKSk7CiAKICAgICBpbml0KGxpc3RlbmVyLCB1cmwpOwogCkBAIC0zOTAsNyAr
MzkwLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDAp
IHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVybCA9IDA7CiAgICAgICAgICAgICBlcnIgPSBj
dXJsX2Vhc3lfZ2V0aW5mbyhtX2N1cmxIYW5kbGUsIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1
cmwpOwotICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCkpOworICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSk7CiAKICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1U
eXBlIikpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRl
bnQtVHlwZSIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKaW5kZXggZjc1YWM4ZjE1M2U4YjdjNWNjYzUxYWYwYjFkNzk5NTEy
ZDg4YjFiNS4uZDkyYjQzY2EyY2YyZGNjNGJhN2E0N2IyYmNlMjBhZDlkMzY5YjlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgQ3VybERvd25sb2FkKCk7CiAgICAgfkN1
cmxEb3dubG9hZCgpOwogCi0gICAgdm9pZCBpbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lcios
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5l
ciosIFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgYm9vbCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAppbmRleCAy
MTI3NjhhZGIyZGM1NTMxZjMzNWQ0ZTJhYzZlYmVhYzc3NTc3NWRlLi4xMTczNWFlNmRjMTAxN2E5
MmMzOTY4NzUyYTBkOTM3ZjUyYTA1YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcApAQCAtMjYsMTIgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1Zl
Y3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5l
dHdvcmtpbmdDb250ZXh0KikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHJldHVy
biBWZWN0b3I8UHJveHlTZXJ2ZXI+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdmMzRk
YjI2ZGVkMTIyM2I0N2Q5OWM0M2NjZjA1MTllNTlhNmE4ZTguLmM5MThmMTViODg3Y2MyZTcwOTli
MTcxMDBhMzUzM2IxNzk5ODU0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKIAogICAgIGlmIChzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSgpKSB7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNl
KCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpIHsKLSAgICAgICAgICAgIEtVUkwgdXJsVG9TdG9y
ZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgIFVSTCB1
cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAg
ICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIHVybFRvU3RvcmUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcAppbmRleCBhMGYyYTI0OGY4YzQzNTcxMTE5NDEwYzFhNjNmNTQ5ZjFhMjQ2ZWY4
Li43ZGQ1YjZhMDA4NzhiNDk1OGRmZTJiNDg1Y2QxNjQ5Mzc4YzQyMWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUxv
Y2FsUmVjZWl2ZVJlc3BvbnNlIChDVVJMKiBoYW5kbGUsIFJlc291cmNlSGFuZGxlKiBqb2IsIFJl
c291CiAgICAgIGNvbnN0IGNoYXIqIGhkcjsKICAgICAgQ1VSTGNvZGUgZXJyID0gY3VybF9lYXN5
X2dldGluZm8oaGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsKICAgICAgQVNT
RVJUX1VOVVNFRChlcnIsIENVUkxFX09LID09IGVycik7Ci0gICAgIGQtPm1fcmVzcG9uc2Uuc2V0
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBoZHIpKTsKKyAgICAgZC0+bV9yZXNwb25zZS5zZXRV
UkwoVVJMKFBhcnNlZFVSTFN0cmluZywgaGRyKSk7CiAgICAgIGlmIChkLT5jbGllbnQoKSkKICAg
ICAgICAgIGQtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2Uoam9iLCBkLT5tX3Jlc3BvbnNl
KTsKICAgICAgZC0+bV9yZXNwb25zZS5zZXRSZXNwb25zZUZpcmVkKHRydWUpOwpAQCAtMzExLDcg
KzMxMSw3IEBAIHN0YXRpYyBib29sIGdldFByb3RlY3Rpb25TcGFjZShDVVJMKiBoLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJvdGVjCiAgICAgaWYgKGVyciAhPSBDVVJMRV9P
SykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCBrdXJsKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKTsKKyAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAKICAgICBTdHJp
bmcgaG9zdCA9IGt1cmwuaG9zdCgpOwogICAgIFN0cmluZyBwcm90b2NvbCA9IGt1cmwucHJvdG9j
b2woKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNo
YXIqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCogZGF0YSkKIAogICAgICAg
ICBjb25zdCBjaGFyKiBoZHI7CiAgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZP
X0VGRkVDVElWRV9VUkwsICZoZHIpOwotICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChLVVJM
KFBhcnNlZFVSTFN0cmluZywgaGRyKSk7CisgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VVJMKFVS
TChQYXJzZWRVUkxTdHJpbmcsIGhkcikpOwogCiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoaHR0cENvZGUpOwogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldE1pbWVUeXBl
KGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoIkNvbnRlbnQtVHlwZSIpKS5sb3dlcigpKTsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGF0aWMg
c2l6ZV90IGhlYWRlckNhbGxiYWNrKGNoYXIqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVt
Yiwgdm9pZCogZGF0YSkKICAgICAgICAgaWYgKGlzSHR0cFJlZGlyZWN0KGh0dHBDb2RlKSkgewog
ICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoImxvY2F0aW9uIik7CiAgICAgICAgICAgICBpZiAoIWxvY2F0aW9uLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIEtVUkwgbmV3VVJMID0gS1VSTChqb2ItPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLCBsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgVVJMIG5ld1VSTCA9IFVSTChqb2ItPmZp
cnN0UmVxdWVzdCgpLnVybCgpLCBsb2NhdGlvbik7CiAKICAgICAgICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVkaXJlY3RlZFJlcXVlc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpOwogICAgICAg
ICAgICAgICAgIHJlZGlyZWN0ZWRSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwpAQCAtNzg2LDcgKzc4
Niw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydFNjaGVkdWxlZEpvYnMoKQog
CiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZGlzcGF0Y2hTeW5jaHJvbm91c0pvYihSZXNv
dXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3VybCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOwogCiAgICAg
aWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBoYW5kbGVEYXRhVVJMKGpvYik7
CkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNo
U3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUqIGpvYikKIAogdm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7Ci0gICAgS1VSTCBrdXJs
ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwga3VybCA9IGpvYi0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCk7CiAKICAgICBpZiAoa3VybC5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAg
ICAgIGhhbmRsZURhdGFVUkwoam9iKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlTWFuYWdlcjo6YXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUo
UmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IGFsbG93ZWRQcm90
b2NvbHMgPSBDVVJMUFJPVE9fRklMRSB8IENVUkxQUk9UT19GVFAgfCBDVVJMUFJPVE9fRlRQUyB8
IENVUkxQUk9UT19IVFRQIHwgQ1VSTFBST1RPX0hUVFBTOwotICAgIEtVUkwga3VybCA9IGpvYi0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgp
LnVybCgpOwogCiAgICAgLy8gUmVtb3ZlIGFueSBmcmFnbWVudCBwYXJ0LCBvdGhlcndpc2UgY3Vy
bCB3aWxsIHNlbmQgaXQgYXMgcGFydCBvZiB0aGUgcmVxdWVzdC4KICAgICBrdXJsLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDkxNDcyZTAwNWU1Y2JhNTFlMTFj
ZjAyZDNjZGE5NDUxMmQyZTc1ODUuLmE3NWE3MWFmODA4MjkyNzJkMjZiOWU4ZTY5ZDMzY2NhMWI5
MDE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM2LDIzICszNiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
dXJsKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwpCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkK
ICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgewog
ICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
S1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggNDk4NWViMzFjNWI5YzE5NjIzYWI1MjA1MDNiZWU3
MjBhNDdkNzAwOS4uYWUwOWI4MTRmYjAxMTVhMTY4OWNkMjdlYTljNThhZmY4ZWU3MGYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VSZXNwb25zZS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0
aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVk
TGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSksCiAgICAgICAgICAgbV9yZXNwb25z
ZUZpcmVkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA2NDEzOWU1Y2QzMzk4
OWZhOWU0N2IwMmVmY2RkY2M2YmNjMjZhZjMzLi5hODIzMTlmOTQ1MmJkZTM5YjU3ODM5MDdhZTVi
MzFjMWJlZGYxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVh
bUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBj
bGllbnQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsg
fQogCiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC01NCw3ICs1
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
Q2xvc2UoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgICAg
ICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkg
YXNrIGZvciBjcmVkZW50aWFscy4KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVD
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVDdXJsLmNwcAppbmRleCA4OTFlOTZlNTA2ZjE1MDI0NmEyZmIyMDgwZjlkMTk5NTI0
NTA3NTJhLi43OWFkYzMwM2RmYTA2OGUwZmJlNDYyZDFhZDBiMTkzMWZlMTdiMjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSh1cmwsIGNsaWVudCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhh
bmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IGJjMjIz
NzUyZTFjOGI2ZWM3OTA0ZTI3Y2M5ZWY2YmNkNWJlZmRhZDIuLjY1Mzc0MGU5YjIzZmNlYjk0OWMz
OTUyZDNiYzAxNWU3ZDVkM2I3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQg
IkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVT
dG9yYWdlLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29v
a2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcykKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApA
QCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVQogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGEKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCA4MzMxNWIwMTdj
MDM0OGQyZDlkZWNhODRhN2FkYjE0YjI1MTM2ZDU1Li5jZWY2Y2RmMzQ2ZTBkMjNjN2RmMmJjNTcw
ZDBhMmFjNjZmMTRkNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBv
cnQgIlJlc291cmNlRXJyb3IuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0jaW1w
b3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
RXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCmluZGV4IDA5NDAwYTFkMTNmNmE0MjgxZTQ5ZTMzN2QyOWRhMThjZWE0MDU3MzAuLmU3M2M2
NWQyMjc3ZDk4OTIyZTY3OGVjNjViZWY4ZjhjN2E5MGViNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBA
IC05OCw3ICs5OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlv
bihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiB7CiAgICAgLy8gQ3JlZGVu
dGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlvbjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUg
bWFkZS4KICAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0
eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7
Ci0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgpLnVybCgpKTsK
KyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAg
ICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7CiAgICAgICAgIHVy
bFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAgICAgICAgIGZpcnN0UmVxdWVz
dCgpLnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBk
LT5tX2NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSkK
ICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwogCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gcmVxdWVzdC51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7
CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKICAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygp
OwogICAgIGQtPm1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKQEAgLTU1
NCw3ICs1NTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICAvLyB0byBpZ25v
cmUgaXQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IChzaG9ydCBvZiByZW1vdmluZyBpdCBhbHRv
Z2V0aGVyKS4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzY4Njc1OTg+IGdhbGxlcnkubWUu
Y29tIGlzIHRlbXBvcmFyaWx5IHdoaXRlbGlzdGVkLCBzbyB0aGF0IFF1aWNrVGltZSBwbHVnLWlu
IGNvdWxkIHNlZSB0aGUgY3JlZGVudGlhbHMuCiAgICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVu
dGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgS1VS
TCB1cmxUb1N0b3JlOworICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAg
ICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CiAgICAg
ICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY29yZShbZC0+bV9jdXJy
ZW50TWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKaW5kZXgg
NTVhZWFjMmVjZGJhN2IyMDhiMDY4ZjI1NGU3ZDBiM2E2NTNlYWNhNS4uOWMyNDY1ZDhmODJkODVj
NmY4OGZhNTc3MmQ2NmU4ODk4YjRhYzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJDb29raWVKYXJRdC5oIgogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKICNpbmNsdWRlICJUaGlyZFBhcnR5Q29va2ll
c1F0LmgiCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNo
YXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tpZUphclF0ID0gMDsKIAotdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/
IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKICAgICBqYXItPnNldENvb2tpZXNGcm9tVXJs
KGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBAIC05NCw3ICs5NCw3
IEBAIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9p
bihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFFOZXR3b3Jr
Q29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5u
ZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0Ojpz
aGFyZWQoKTsKICAgICBpZiAoIWphcikKQEAgLTExMSwyMCArMTExLDIwIEBAIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4xU3RyaW5n
KCI7ICIpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykK
IHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNz
aW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFy
ZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgcmV0dXJuICEhamFyOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJs
Ki8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsg
Ly8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikK
K3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlT
ZXJ2ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2Vy
dmVyUXQuY3BwCmluZGV4IDBiZjM2ODcyNzEwZjNiZjQ1ZjRmMWRhOWNlM2ExMzBjM2NlYmJmNzEu
LmFhZTYxN2FmNTkzMTUyYjJhMjgwMWYwMWVhYjFhZjNlOGJlZThiN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlTZXJ2ZXJRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNlcnZlclF0LmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKIAogI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KQEAg
LTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0KQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFZlY3RvcjxQcm94eVNlcnZlcj4gc2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
aW5kZXggYTZlMDg0MGJmMTMxMjAxNTI3NTIxODZhMWM3ZGZmODM1MzRkZTQwOS4uOGI3OTFmNDgy
ZDdiOWQzYjU1ZmZjNmE5NjFiN2Q0YjcwMzJjZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9u
c2VJZk5lZWRlZCgpCiAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JQYXRoKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKS5wYXRoKCkpOwogICAg
IH0KIAotICAgIEtVUkwgdXJsKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKSk7CisgICAg
VVJMIHVybChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+dXJsKCkpOwogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UodXJsLCBtaW1lVHlwZS5sb3dlcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVwbHlXcmFwcGVyLT5lbmNvZGluZygpLCBTdHJpbmcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxl
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRs
ZVF0LmNwcAppbmRleCA4NGFiYTRlZTE4NjViMWNhM2ZkNmE3YzJjMDY0M2E1YjY2Yjk0NGYyLi45
NTViODQ5YTYwZDM4MmZkMDJlNDZmYTBlNjhhODczNmJlMmU4MGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGlmICgh
ZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBJZiBjcmVkZW50aWFscyB3ZXJlIHNwZWNpZmllZCBmb3IgdGhpcyByZXF1ZXN0LCBhZGQgdGhl
bSB0byB0aGUgdXJsLAogICAgICAgICAvLyBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwYXNzZWQgdG8g
UU5ldHdvcmtSZXF1ZXN0LgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJl
cXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1
ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3Vz
ZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAg
ICAgICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTEz
Miw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGlmICghZC0+bV91c2Vy
LmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJZiBjcmVk
ZW50aWFscyB3ZXJlIHNwZWNpZmllZCBmb3IgdGhpcyByZXF1ZXN0LCBhZGQgdGhlbSB0byB0aGUg
dXJsLAogICAgICAgICAvLyBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwYXNzZWQgdG8gUU5ldHdvcmtS
ZXF1ZXN0LgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhkLT5tX2ZpcnN0UmVxdWVz
dC51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZC0+bV9maXJzdFJlcXVl
c3QudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIp
OwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAg
ICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCmlu
ZGV4IGM4YTk5MDhhYjhhYmEzMzQ3ODQ2NzlmNzljOTkyOTI2ZDZiODkwNGEuLmViN2I3NjcwNDdl
YzdkYWI3MzA5ODdlYjY5MTRiYWMyMTI5ODM4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMzksMjMgKzM5LDIz
IEBAIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6
IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkgCi0gICAgICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkgCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2Nv
bENhY2hlUG9saWN5KSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kg
PSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgewogICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVy
KHJlZmVycmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2Nv
bENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0N2U1
NjZiOTAzYTllZmM5NzZiMjQ4ZDM2NTk5NWZiMDlkOGYxY2Y5Li43ZGVmZjJiNzFkNWQxNDU3Nzcy
NDJlMzY0NDY4MzcwOWE3MDQ0NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1
cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUp
CiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IDllNmVhYzBmYzA1MDllZDBjNDgwMjU2
ZTU1OTdlODU0NGExZTc0ZjIuLjg3MDA4OTI1MDUwNDI1NjYyMDhkYTI2YzM2ZDRiY2MwNTk1MmE3
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0
U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9T
b2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2Nr
ZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoUVRjcFNvY2tldCogc29j
a2V0LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXQsIGNsaWVudCkpOyB9CiAKICAgICAgICAgdmly
dHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwm
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KFFUY3BTb2NrZXQqLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgICAgICAvLyBO
byBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZv
ciBjcmVkZW50aWFscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKaW5kZXggZjQ0N2NjMjA2
N2UwNjkyMmFhYTA3OTZmYTE3NThhYmQ3OGRlMGI1ZC4uYzE1NjBlNDkxNTgzZTE5Mzk4ZjJiN2Vi
OTgzYzMzMGZiZjEyNzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTsKIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIHB1Ymxp
YzoKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNv
bnN0IEtVUkwmKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhh
bmRsZSosIGNvbnN0IFVSTCYpOwogICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0
U3RyZWFtSGFuZGxlKiwgUVRjcFNvY2tldCopOwogICAgIH5Tb2NrZXRTdHJlYW1IYW5kbGVQcml2
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
U29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKaW5kZXggMTAzZGMxZmNjMWQyNmQ0YTVkMTA4
Mzk3YmY3NWIzYmM2M2JjMDdhMy4uOTYxOGFlNWJhYzg2NmYxNjYzMmJlMTdhNzU4YjIyNmYxYjJj
NzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgpAQCAt
NDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBz
dHJlYW1IYW5kbGUsIGNvbnN0IEtVUkwmIHVybCkKK1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6
OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJlYW1IYW5k
bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fc3RyZWFtSGFuZGxlID0gc3RyZWFtSGFuZGxl
OwogICAgIG1fc29ja2V0ID0gMDsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGU6OnNvY2tldFNzbEVycm9ycyhjb25zdCBRTGlzdDxRU3NsRXJyb3I+JiBl
cnJvcikKIH0KICNlbmRpZgogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSh1cmwsIGNsaWVudCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAl
cCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFNv
Y2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50CiB9CiAKIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlKFFUY3BTb2NrZXQqIHNvY2tldCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBj
bGllbnQpCi0gICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKEtVUkwoKSwgY2xpZW50KQorICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShVUkwoKSwgY2xpZW50KQogewogICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVu
dCk7CiAgICAgbV9wID0gbmV3IFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUodGhpcywgc29ja2V0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVKYXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVKYXJTb3VwLmNwcAppbmRleCBlYjZmY2M4OGFlZTEwMTIwZWZlODYyNGY3NmRlNzE0ODIxZTQ3
ODM1Li5kZDVkYmQ1NjdkMzM5OTkxZjgwNThhZGQ2NGIxZWFlNTI0NWU2ZWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAu
Y3BwCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJH
T3duUHRyU291cC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29u
c3QgZ2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24p
OwogICAgIGlmICghamFyKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhCiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVzKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQorc3RhdGljIFN0cmlu
ZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7CiAgICAgU291cENvb2tpZUph
ciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKQEAg
LTEyOCwyMiArMTI4LDIyIEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMCiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgZmFsc2UpOwogfQogCi1TdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9
CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0
dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIFNvdXBDb29r
aWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CkBAIC0xNjYsNyArMTY2
LDcgQEAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNz
aW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAppbmRleCA1MGIzMmRl
M2Y2OWIxOTRkYWZhY2FiY2M0YTdhMWNjNWIwY2YwZTI2Li5jODVmZTY4OTE5MTVmYzE5YWI5YzBh
YzFhYzA0MTM3ZWRlMmM3MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1W
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3Qg
TmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JV
UkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3RvcjxQcm94eVNlcnZlcj4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKaW5kZXggZjY2MGU5MDRlNTViZTQyNzUwODgxZWUzZDRiZmM2YjQ0ZTJiOWIz
MS4uODQ2ZTI1YThjZjUzODEwYjQ5OTQyM2NkNmE1NGEwYTJiMWVhMmUxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUF1dGhlbnRp
Y2F0aW9uVG9SZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdAog
ICAgIC8vIFdlIGFsd2F5cyBwdXQgdGhlIGNyZWRlbnRpYWxzIGludG8gdGhlIFVSTC4gSW4gdGhl
IENGTmV0d29yay1wb3J0IEhUVFAgZmFtaWx5IGNyZWRlbnRpYWxzIGFyZSBhcHBsaWVkIGluCiAg
ICAgLy8gdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjYWxsYmFjaywgYnV0
IGxpYnNvdXAgcmVxdWlyZXMgdXMgdG8gdXNlIHRoaXMgbWV0aG9kIHRvIG92ZXJyaWRlCiAgICAg
Ly8gYW55IHByZXZpb3VzbHkgcmVtZW1iZXJlZCBjcmVkZW50aWFscy4gSXQgaGFzIGl0cyBvd24g
cGVyLXNlc3Npb24gY3JlZGVudGlhbCBzdG9yYWdlLgotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRp
YWxzKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMocmVxdWVzdC51
cmwoKSk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAgICAgdXJsV2l0
aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybFdp
dGhDcmVkZW50aWFscyk7CkBAIC00MjIsNyArNDIyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVk
aXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChTb3VwTWVzc2FnZSogbWVzc2FnZSwgS1VSTCYg
bmV3VVJMLCBib29sIGNyb3NzT3JpZ2luKQorc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dF
VChTb3VwTWVzc2FnZSogbWVzc2FnZSwgVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NPcmlnaW4pCiB7
CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9HRVQgfHwgbWVzc2FnZS0+
bWV0aG9kID09IFNPVVBfTUVUSE9EX0hFQUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2
MCw3ICs0NjAsNyBAQCBzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5k
bGUpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpOwogICAgIFNvdXBNZXNzYWdlKiBtZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQoKTsK
ICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbiA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIik7Ci0gICAgS1VSTCBuZXdVUkwg
PSBLVVJMKHNvdXBVUklUb0tVUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSkpLCBsb2Nh
dGlvbik7CisgICAgVVJMIG5ld1VSTCA9IFVSTChzb3VwVVJJVG9LVVJMKHNvdXBfbWVzc2FnZV9n
ZXRfdXJpKG1lc3NhZ2UpKSwgbG9jYXRpb24pOwogICAgIGJvb2wgY3Jvc3NPcmlnaW4gPSAhcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIG5l
d1VSTCk7CiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKICAgICBuZXdSZXF1ZXN0LnNl
dEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1VSTCk7CkBAIC03NzksNyArNzc5LDcgQEAgc3RhdGlj
IHZvaWQgYWRkRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IEJsb2IKIAogc3RhdGljIHZvaWQgYWRkRW5jb2RlZEJsb2JUb1NvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVt
ZW50LCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlTaXplKQogewotICAgIFJlZlB0cjxCbG9iU3Rv
cmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JS
ZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1l
bnQubV91cmwpKTsKKyAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iRGF0YSA9IHN0YXRp
Y19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9t
VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1lbnQubV91cmwpKTsKICAgICBpZiAoIWJsb2JE
YXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCBhMGQwYjRjNzUyYTc1NDgx
NjI0NTA1MDliZDlhYWE0ZTIxMjJjMGQyLi5jZjIyNmMxOTBjNTM5MjgxYTdkZGRiYmJiMzNjM2Y2
YmVkNzNhMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zNSwyMCArMzUsMjAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVl
c3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAg
ICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYg
dXJsKQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAg
ICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAgICAsIG1fc291cEZs
YWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGlj
eSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkK
ICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4o
MCkpCkBAIC01NywxNCArNTcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAK
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAg
ICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3Rh
dGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdChTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCi0gICAgICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAg
ICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggYjVhNGEwZGRhNzAyMmI2NGJkZTgw
OTY4N2ZkNjljYzc3YTZmYjc2My4uNDMwNzE1YzQ0ZDNjODVlMWM2OGIyN2U4MTBlZjI4ZDE3Yjhh
ZTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFNvdXBV
UkkqIFJlc291cmNlUmVxdWVzdDo6c291cFVSSSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzb3Vw
X3VyaV9uZXcodXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAotICAgIEtVUkwgdXJs
ID0gbV91cmw7CisgICAgVVJMIHVybCA9IG1fdXJsOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9uZXcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAzNzBmNDMwYjY5Zjc1YmE2Mjg3
N2U2M2UwZjQ5M2MwOWJmZDIxYTBiLi40ODkxZjkzNWZjYmM3Zjc3MjNhNjYxNTdlZTJlZDkzM2Nm
NTNlMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAs
IG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICAs
IG1fdGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAppbmRleCBhNmE1MTQ1MjcyODU0ZDUyMGNhYzZkMjRjOWU2MmU1NjQwZTNmY2Nh
Li44NDhmZmNmMGU4ZTk4NTY1YjVlMTc2YWEwM2I0ZmFjYjllMjA1ODY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRs
ZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2Nr
ZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29u
bmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUoc29ja2V0Q29ubmVjdGlvbiwgY2xpZW50KSk7IH0K
IAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKQEAgLTY3LDcgKzY3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBtX3JlYWRCdWZmZXI7CiAgICAg
ICAgIHZvaWQqIG1faWQ7CiAKLSAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwm
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoR1NvY2tldENvbm5lY3Rpb24qLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQq
KTsKIAogICAgICAgICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1
dCBwcm94eSBtYXkgYXNrIGZvciBjcmVkZW50aWFscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3Vw
LmNwcAppbmRleCBiY2RkOTRiY2QyN2VjNzk0MTlmMzJlODg4YmY2NzNjZWIwODU5YWI4Li41NTA4
ZjM2MDk1NTNkZGE4MmIwYTVlOWRjMmE5MzM3MGExYjYwMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKQEAgLTgwLDcgKzgwLDcgQEAgc3Rh
dGljIHZvaWQqIGFjdGl2YXRlSGFuZGxlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAg
IHJldHVybiBpZDsKIH0KIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tl
dFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
dXJsLCBjbGllbnQpCiAgICAgLCBtX3JlYWRCdWZmZXIoMCkKIHsKQEAgLTk2LDcgKzk2LDcgQEAg
U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKIH0KIAogU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRT
dHJlYW1IYW5kbGUoR1NvY2tldENvbm5lY3Rpb24qIHNvY2tldENvbm5lY3Rpb24sIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQotICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShL
VVJMKCksIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoVVJMKCksIGNsaWVu
dCkKICAgICAsIG1fcmVhZEJ1ZmZlcigwKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCmlu
ZGV4IGYwN2FkN2Y2YzRlMjcwMTAyZTBkMTQ4NmFkYjg1ZmFiNDFkMmY5ZTUuLjU1M2JhZDkzODUz
OWYzMDk2ZmYwNWRhYjkwMjUwMTk4MTI3ODY0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCkBAIC0yOSwxMCArMjks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gc291cF91cmlfdG9fc3RyaW5nLCBhbmQgdGh1
cyB0aGUgcmVxdWVzdHMgYXJlIG5vdCBwcm9wZXJseQogLy8gYnVpbHQuIEZpeGluZyBzb3VwX3Vy
aV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCiAvLyBub3Qgd2Fu
dCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCi1L
VVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSkKK1VSTCBzb3VwVVJJVG9LVVJMKFNv
dXBVUkkqIHNvdXBVUkkpCiB7CiAgICAgR093blB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJp
X3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIEtVUkwgdXJsKEtVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVybFN0cmluZy5nZXQoKSkpOwogCiAgICAgaWYgKCFzb3VwVVJJLT5wYXNzd29y
ZCkKICAgICAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaAppbmRleCA2OTc3MmU3MjY5ODI4MmIwNjI4YWM0
NTc0ZDc4ZGUxNGIzZDRkYzk3Li41ZjZlOGQ1MjI4NWQ2MDE3ODJkMDU4M2RiMDMzNDE3NmZkNjQx
YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cFVSSVV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBVUklVdGlscy5oCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpZm5kZWYgU291cFVSSVV0aWxzX2gK
ICNkZWZpbmUgU291cFVSSVV0aWxzX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBVUkkgU291cFVSSTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotS1VSTCBzb3VwVVJJVG9LVVJMKFNvdXBVUkkqIHNvdXBVUkkpOworVVJMIHNvdXBV
UklUb0tVUkwoU291cFVSSSogc291cFVSSSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggN2Ix
MjZlMDMxNDM1NDA5MzcwZDRjMjlkMmRmMGRmZDI3MjEwNTU5ZC4uOGM3OTA1NDIzZGQxNmE0YTg5
OGZkY2JjYWNjZGE3MzA2YTU3ZWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgpA
QCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBh
cnR5IGFyZ3VtZW50LgogICAgIFN0cmluZyBzdHIgPSB1cmwuc3RyaW5nKCk7CkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVyCiAgICAgSW50ZXJuZXRTZXRDb29raWUoc3Ry
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCB2YWwuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYg
dXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBm
aXJzdFBhcnR5IGFyZ3VtZW50LgogCkBAIC02NSwyNSArNjUsMjUgQEAgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQogCi1TdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIC8vIEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5IGNvb2tpZQogICAgIHJldHVybiBjb29raWVz
Rm9yRE9NKHNlc3Npb24uY29udGV4dCgpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJl
dHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL1Byb3h5U2VydmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL1Byb3h5U2VydmVyV2luLmNwcAppbmRleCBjNjEwZTIwYjgxN2QxMWUyMWY4NDEwYTgx
N2NmM2ZkZTE0ZDEzMGMzLi4xNDk1YjQ1YjgxZDRmNmVjNmQ0YjBmNTFjMmJjYTBlMmVmYmQwY2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Qcm94eVNl
cnZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJv
eHlTZXJ2ZXJXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNv
bnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJz
Rm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50LgogICAgIHJldHVybiBWZWN0b3I8UHJveHlTZXJ2ZXI+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhh
bmRsZVdpbi5jcHAKaW5kZXggMzIwYzQ1ZDY1NTc5MTliZWU3MjJjNDE1OWI4ZmNkMjhmYmFkZWI0
OC4uMGY2NmI3MDdhMGRmOTQ3NWM3NTM0MTIzMjIxOWZlYTRmYWYxZmUxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxl
V2luLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmludGVybmV0
U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxlLCBEV09SRF9QVFIKIHZvaWQg
UmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QoKQogewogICAgIFJlc291cmNlUmVxdWVzdCBuZXdS
ZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7Ci0gICAgbmV3UmVxdWVzdC5zZXRVUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKKyAgICBuZXdSZXF1ZXN0LnNldFVSTChV
UkwoUGFyc2VkVVJMU3RyaW5nLCBkLT5tX3JlZGlyZWN0VXJsKSk7CiAKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBTdHJpbmcoKSwgMCwgU3RyaW5n
KCksIFN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCAxMGI5NTI0N2NhZGNjOTJkZTkxMjNmMmRl
NTVlNzRjOGZjMDRmOTQxLi5kMWViN2Q1NGMwNzI2OGI5ODJkMjllMTFiMTFmNjZlNzg5NzMzODY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZVJlcXVlc3QuaApAQCAtMzMsMjMgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKIHB1Ymxp
YzoKICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKKyAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewogICAgIH0KIAotICAg
IFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgUmVzb3VyY2VSZXF1ZXN0KGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgIHsKICAgICAgICAgc2V0SFRU
UFJlZmVycmVyKHJlZmVycmVyKTsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDM4MjY2ODMzMGNhNTFhZTlh
NmM1ZDkwZWQ3OTNiZmY3NjBlNzhkZDMuLmJlYzBlMDQzY2E2M2NkMzdlZGNjNTJiNjVhYzQwYThh
YzY2MjgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Nv
Y2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IDYyODA4ZWM1NTBlZDFmYmYyMzJiZTFiNDYwMGY2ZjAw
OGIzMjQ3MTMuLjAzMzUwYTQ3NTViNzZhMzI4ZjZmZGMxYjJhZDM0ODM1MjkwMzlmZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0
cmVhbUhhbmRsZS5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29j
a2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0
IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNv
Y2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRT
dHJlYW1IYW5kbGUoKTsKIApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0
cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAg
IC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBh
c2sgZm9yIGNyZWRlbnRpYWxzLgogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxl
V2luLmNwcAppbmRleCBiMmI1NDBmYjI0YzJmYWQ3NmEyODUwOWRlZmI2ZWNhYTZkYzcwOGZiLi4x
NmFjNzg4MmM1ZGViZmVmMTA5ZWE2Y2I2NmU4YjI5ZDg5NmZhODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhh
bmRsZVdpbi5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwg
Y2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBj
bGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uaXgvUGFzdGVib2FyZE5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
aXgvUGFzdGVib2FyZE5peC5jcHAKaW5kZXggMzRlYzFjMGUwNTJmM2Q3MjMyNmViNTc3ODM1NGRh
ZGJkMTllNjA3MS4uMDc3YjQwOWYwNWUwOTk3ZWFjNjNjM2FiMmJhMmMyY2M0ODEzODAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcApAQCAtNTYs
NyArNTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShO
b2RlKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
SW1hZ2UoTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tVUkxR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LVVJMUXQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZGNhNGVlZTBiZGRlYjI0Y2Y4OTMxMTE2ZmZmMDA4MjQ0YTZh
ODZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tVUkxRdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgotI2luY2x1ZGUgInF1cmwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VSTChjb25zdCBRVXJsJiB1cmwpCi17
Ci0gICAgKnRoaXMgPSBLVVJMKEtVUkwoKSwgdXJsLnRvRW5jb2RlZCgpLmNvbnN0RGF0YSgpLCBV
VEY4RW5jb2RpbmcoKSk7Ci19Ci0KLUtVUkw6Om9wZXJhdG9yIFFVcmwoKSBjb25zdAotewotICAg
IHJldHVybiBRVXJsKG1fc3RyaW5nKTsKLX0KLQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRo
KCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotCi0gICAgaWYgKGlzTG9jYWxGaWxlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxR
VXJsPigqdGhpcykudG9Mb2NhbEZpbGUoKTsKLQotICAgIC8vIEEgdmFsaWQgcXJjIHJlc291cmNl
IHBhdGggYmVnaW5zIHdpdGggYSBjb2xvbi4KLSAgICBpZiAocHJvdG9jb2xJcygicXJjIikpCi0g
ICAgICAgIHJldHVybiAiOiIgKyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCgpKTsKLQot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggZWI4ZWRmZGIyYTRjMTVkYWMzNDQyMDU1ZjBmNjA2YjRj
ODUwMDkzNi4uYzU1Mzc3NjJjYmI3OGJhNGJmYTFiYjQ4NWUwZWQyYmU2MzlhYTlkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJv
YXJkVVJMKQogI2VuZGlmCiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBu
b2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJ
bWFnZShOb2RlKiBub2RlLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VS
VChub2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZv
cm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQu
aAppbmRleCA0MjgxY2Q2NzZhMmIwNmE2MTQwNzEwNGQxOGQxZjNiMWJmNDg3MDU3Li5lMmQwODgy
OTQ4NDFmYmZhYTY2MDhhMTFmNmE4MWQ2YzJiOGYzYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQ
bGF0Zm9ybVN1cHBvcnRfaAogI2RlZmluZSBQbGF0Zm9ybVN1cHBvcnRfaAogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCmluZGV4IGU5M2E3NjM2YzNlZmEwZjFh
NzNiNTNhY2ZmNmMzOGJmNzU1YWQxN2IuLjU5OTVkZmUyY2ZiMmRjZTA3NGIxZmYyNTg2Mzk5MGJk
Y2NhYTI3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFy
eUxpbmtTdHVic1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3Jh
cnlMaW5rU3R1YnNRdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4m
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQorU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9VUkxRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9VUkxRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4ZTY1YWM3MDE5NmM4ZjhkNzlkNzdk
OTg0ZGMxNTM5NDA1YWU3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1VSTFF0LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAicXVybC5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVUkw6
OlVSTChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgKnRoaXMgPSBVUkwoVVJMKCksIHVybC50b0Vu
Y29kZWQoKS5jb25zdERhdGEoKSwgVVRGOEVuY29kaW5nKCkpOworfQorCitVUkw6Om9wZXJhdG9y
IFFVcmwoKSBjb25zdAoreworICAgIHJldHVybiBRVXJsKG1fc3RyaW5nKTsKK30KKworU3RyaW5n
IFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoaXNMb2NhbEZpbGUoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFFVcmw+KCp0aGlzKS50b0xvY2FsRmlsZSgpOworCisgICAgLy8g
QSB2YWxpZCBxcmMgcmVzb3VyY2UgcGF0aCBiZWdpbnMgd2l0aCBhIGNvbG9uLgorICAgIGlmIChw
cm90b2NvbElzKCJxcmMiKSkKKyAgICAgICAgcmV0dXJuICI6IiArIGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhwYXRoKCkpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggZmUwZmU0Njk1MWZkYjI4NjA4MTA2
Nzk4MjUzYjBmYzE3MTAzYjRjNy4uYTAxY2QwNDQ0YWFlZTkyMmU4NDAxZDFmMDY2MzI3M2I3YmM5
ZjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC02OCw3ICs2OCw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKQogICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihzLmNoYXJhY3RlcnMoKSwg
cy5sZW5ndGgoKSk7CiB9CiAKLUJTdHJpbmc6OkJTdHJpbmcoY29uc3QgS1VSTCYgdXJsKQorQlN0
cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQog
ICAgICAgICBtX2JzdHIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0JTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKaW5k
ZXggZGMxYzI3ZDhjOGI3Y2RmMTA0ZjYwYzAwN2FiYWRhMTljZjA5MDhlNi4uNDU3Njc4ZTM3MWFj
YjZhYWNhNTJhYmI0YjBjMzE4MWViODczODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYgd2NoYXJfdCogQlNUUjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAg
ICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQlN0cmluZyhjb25zdCB3Y2hhcl90Kiwgc2l6ZV90IGxlbmd0
aCk7CiAgICAgICAgIEJTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJTdHJpbmcoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIEJTdHJpbmcoY29uc3QgS1VSTCYpOworICAgICAg
ICBCU3RyaW5nKGNvbnN0IFVSTCYpOwogI2lmIFVTRShDRikKICAgICAgICAgQlN0cmluZyhDRlN0
cmluZ1JlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggYmZhMGI2NzE0NzExMjI1MzA2N2FlNzc3
NWNlZTUwMmFkN2VlMjJjNy4uZjQ1ODM0YTljZTZmNzNjNmQyMWE3NzdmZGZkYmMwNTc0NzViNzY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDbGlwYm9hcmRVdGls
aXRpZXNXaW4uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0xNzMsNyArMTczLDcgQEAg
c3RhdGljIEZPUk1BVEVUQyogdGV4dGh0bWxGb3JtYXQoKQogICAgIHJldHVybiAmdGV4dGh0bWxG
b3JtYXQ7CiB9CiAKLUhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCitIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgU3RyaW5nIG11dGFibGVVUkwodXJsLnN0
cmluZygpKTsKICAgICBTdHJpbmcgbXV0YWJsZVRpdGxlKHRpdGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCBlOGQ0
NzU1ZTM3OTgzNjZkOTJjNjcxMWJlMDcyNGEzMDYzOWJhNDc2Li4yYTVlZTAxZjczM2FkMWFiNTQz
YTg3YzNhMDU1ZTE5YTI0MmRhZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zMywxMSArMzMsMTEgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogCiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgU3RyaW5nJik7CiBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbERhdGEoY29uc3QgVmVjdG9yPGNoYXI+Jik7Ci1IR0xPQkFMIGNyZWF0ZUdsb2Jh
bERhdGEoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK0hHTE9CQUwgY3Jl
YXRlR2xvYmFsRGF0YShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKIEZP
Uk1BVEVUQyogdXJsV0Zvcm1hdCgpOwogRk9STUFURVRDKiB1cmxGb3JtYXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggYzA4ZGE3NGYzNTVm
YjAwMjM4NmFjMzYxNWNmYjg4ODQ1YmEzOThjNi4uMzFhMzJlNGMzYzAyNTNlODE1N2U4NDg1YmQx
M2I1YTExY2VlYTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRleHRSZW5kZXJlci5oIgpAQCAtMTIx
LDcgKzEyMSw3IEBAIHN0YXRpYyBGb250IGRyYWdMYWJlbEZvbnQoaW50IHNpemUsIGJvb2wgYm9s
ZCwgRm9udFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBpbkxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSBmb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICAv
LyBUaGlzIGlzIG1vcmUgb3IgbGVzcyBhbiBleGFjdCBtYXRjaCBmb3IgdGhlIE1hYyBPUyBYIGNv
ZGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCBlYWFjMTUwNjBmYWM1ZjU4NTY3ODg5YWQyYjllZmU5ZTZiMjYyZDc0Li44MTZhMzE1MDBk
Nzk5Yjk2ZDNlZjNlNDRiMmMwNWU1MThkZDg0YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
SFduZERDLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0zNDQs
NyArMzQ0LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25z
dCBLVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoUGxhaW5UZXh0LCBib29sIHdpdGhI
VE1MKQorc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBVUkwm
IHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGhQbGFpblRleHQsIGJvb2wgd2l0aEhUTUwpCiB7
CiAgICAgQVNTRVJUKGRhdGEpOwogCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBQYXN0ZWJvYXJk
Ojp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAg
ICBDbGlwYm9hcmREYXRhVHlwZSB3aW5UeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0
eXBlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKQotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIEtV
UkwoS1VSTCgpLCBkYXRhKSwgU3RyaW5nKCksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBVUkwoVVJMKCks
IGRhdGEpLCBTdHJpbmcoKSwgZmFsc2UsIHRydWUpOwogCiAgICAgaWYgKHdpblR5cGUgPT0gQ2xp
cGJvYXJkRGF0YVR5cGVUZXh0KSB7CiAgICAgICAgIFNUR01FRElVTSBtZWRpdW0gPSB7MH07CkBA
IC01NjUsNyArNTY1LDcgQEAgc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRp
dGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICB9CiAKICAgICBp
ZiAoIWxzdHJsZW4oZnNQYXRoQnVmZmVyKSkgewotICAgICAgICBLVVJMIGt1cmwoS1VSTCgpLCB1
cmwpOworICAgICAgICBVUkwga3VybChVUkwoKSwgdXJsKTsKICAgICAgICAgdXNlZFVSTCA9IHRy
dWU7CiAgICAgICAgIC8vIFRoZSBmaWxlbmFtZSBmb3IgYW55IGNvbnRlbnQgYmFzZWQgZHJhZyBv
ciBmaWxlIHVybCBzaG91bGQgYmUgdGhlIGxhc3QgZWxlbWVudCBvZiAKICAgICAgICAgLy8gdGhl
IHBhdGguIElmIHdlIGNhbid0IGZpbmQgaXQsIG9yIHdlJ3JlIGNvbWluZyB1cCB3aXRoIHRoZSBu
YW1lIGZvciBhIGxpbmsKQEAgLTY0MCwxNCArNjQwLDE0IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhy
OwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IEtVUkwm
IGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
VG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKIHsK
ICAgICBpZiAoIW1fd3JpdGFibGVEYXRhT2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgV2Vi
Q29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIGt1cmwsIHRpdGxlU3Ry
LCB0cnVlLCB0cnVlKTsKIAogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwotICAgIEFT
U0VSVCh1cmwuY29udGFpbnNPbmx5QVNDSUkoKSk7IC8vIEtVUkw6OnN0cmluZygpIGlzIFVSTCBl
bmNvZGVkLgorICAgIEFTU0VSVCh1cmwuY29udGFpbnNPbmx5QVNDSUkoKSk7IC8vIFVSTDo6c3Ry
aW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKICAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBh
dGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCBMIi5VUkwiLCB0cnVlKTsKICAgICBTdHJp
bmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxy
XG4iKTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgd3JpdGVVUkxUb0RhdGFPYmplY3QocGFz
dGVib2FyZFVSTC51cmwsIHBhc3RlYm9hcmRVUkwudGl0bGUpOwogfQogCi12b2lkIFBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9kZSk7CiAKQEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxI
RHJvcENvbnRlbnQoY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBp
ZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEw
MDEsNyArMTAwMSw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlCiAgICAgcmV0dXJuIG1lbU9i
ajsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRv
RGF0YU9iamVjdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBT
aG92ZSBpbWFnZSBkYXRhIGludG8gYSBEYXRhT2JqZWN0IGZvciB1c2UgYXMgYSBmaWxlCiAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZ2V0Q2FjaGVkSW1hZ2UoZWxlbWVudCk7CkBAIC0x
MDMyLDcgKzEwMzIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3Qo
RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsKQogICAgIHdyaXRlRmlsZVRvRGF0YU9i
amVjdChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgaW1hZ2VGaWxlRGVzY3JpcHRvciwgaW1h
Z2VGaWxlQ29udGVudCwgaERyb3BDb250ZW50KTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBXZWJDb3JlOjp3cml0ZVVS
TChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgdXJsLCB0aXRsZSwgdHJ1ZSwgZmFsc2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRv
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2lu
LmNwcAppbmRleCBiZDQwZjIwYTM0MmIwNzRlODBjOWM5ZmU1MjBmMTllMDIxYzM0OTI1Li40OGRl
Mzg3N2JhYzdiNDlkMGM0NzBkMzIxZjRmMTE0MzA4OGQzMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB2b2lkIFdlYkNvcmU6OmdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JiB2
KQogICAgIHYuYXBwZW5kKCJNZWRpdW0gR3JhZGUiKTsKIH0KIAotU3RyaW5nIFdlYkNvcmU6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBjaGFsbGVuZ2UsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJDb3JlOjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJpbmcga2V5U3RyaW5nOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3Bw
CmluZGV4IDg1NmNlYTk2NWVlYTMzZWU4MDA1YmVlODA0MDU2MDdjYWE3NjQxNWEuLjQwNTZlMzIw
NWMwMTQzMGY3YTVhYzBkOTFlZTMyMWNlNjFkOWIzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIDxrZXlnZW4+Ci1TdHJpbmcgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJM
JikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1
cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAK
ICNpZiAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKaW5kZXggZjhjYzAxMzg4YTgzZmNmMGZmY2VmNDBiNGRiMWVmMDNjNWY0NGJmYi4uY2M2
MmM5ZWYyZWY0NTI5NWJlNTE2MmUzNjEyZWE5YjkzOWFiOTY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgpAQCAtMjgxLDcgKzI4MSw3IEBAIFN0cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0CiAgICAgcmV0dXJuIG1pbWVU
eXBlRm9yUGx1Z2luLmdldChwbHVnaW5DaG9pY2VzWzBdKTsKIH0KIAotUGx1Z2luUGFja2FnZSog
UGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIG1pbWVU
eXBlKQorUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgVVJM
JiB1cmwsIFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggNmZhZTVmMDhhNzA4YzA0MTY5ZmZmMjIy
OTQzMjBiNWJkNTcxZThmOC4uOGQ3ZWQwODQwOWQ3MjQyMDE4YTJhMTNjMzlmZTUyYjA3MThkNmI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNlQ2xpZW50OwogICAgIGNsYXNzIFBsdWdpblBhY2th
Z2U7CiAKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0
aWMgYm9vbCBpc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSk7CiAgICAgICAgIHN0YXRpYyBpbnQgcHJlZmVycmVkUGx1Z2luQ29tcGFyZShjb25zdCB2b2lk
KiwgY29uc3Qgdm9pZCopOwogCi0gICAgICAgIFBsdWdpblBhY2thZ2UqIGZpbmRQbHVnaW4oY29u
c3QgS1VSTCYsIFN0cmluZyYgbWltZVR5cGUpOworICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5k
UGx1Z2luKGNvbnN0IFVSTCYsIFN0cmluZyYgbWltZVR5cGUpOwogICAgICAgICBQbHVnaW5QYWNr
YWdlKiBwbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAg
dm9pZCBzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0
cmVhbS5jcHAKaW5kZXggNTA1OWFkYmUwYjhjNDRlZTQ5YzFhMjIzNTkyODlhOWE1ZWM3ZmZiZC4u
OGIzYmQ5OTI5NTRhNTllOGJkNTlmMTBkYTYzYjJkMDI5ZTIzNzYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUGx1Z2lu
U3RyZWFtOjpzdGFydFN0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fc3RyZWFtU3RhdGUgPT0gU3Ry
ZWFtQmVmb3JlU3RhcnRlZCk7CiAKLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9IG1fcmVz
b3VyY2VSZXNwb25zZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gbV9yZXNv
dXJjZVJlc3BvbnNlLnVybCgpOwogCiAgICAgLy8gU29tZSBwbHVnaW5zIChGbGFzaCkgZXhwZWN0
IHRoYXQgamF2YXNjcmlwdCBVUkxzIGFyZSBwYXNzZWQgYmFjayBkZWNvZGVkIGFzIHRoaXMgaXMg
dGhlCiAgICAgLy8gZm9ybWF0IHVzZWQgd2hlbiByZXF1ZXN0aW5nIHRoZSBVUkwuCkBAIC0zODYs
NyArMzg2LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKCkKICAgICB9IAogfQog
Ci12b2lkIFBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmVzdWx0U3RyaW5nKQordm9pZCBQbHVnaW5TdHJlYW06
OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmlu
ZyYgcmVzdWx0U3RyaW5nKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZSgwLCBSZXNvdXJjZVJl
c3BvbnNlKHJlcXVlc3RVUkwsICJ0ZXh0L3BsYWluIiwgcmVzdWx0U3RyaW5nLmxlbmd0aCgpLCAi
IiwgIiIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggNTVkMTcw
MmJmOWI1OWNjYWI0NzVlYzVkM2MzMmZkOWQ2OGNmZWQ3ZC4uN2MwNDg2NmE4OTlmODgyOWVkNWVh
ZDg0ZmZhZTdjYWEzZDdjYzJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5o
CkBAIC0yOCw3ICsyOCw3IEBACiAjZGVmaW5lIFBsdWdpblN0cmVhbV9oCiAKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtT
ZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTcwLDcgKzcwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0TG9hZE1hbnVhbGx5KGJvb2wgbG9h
ZE1hbnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5OyB9CiAKLSAgICAgICAg
dm9pZCBzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
VEY6OkNTdHJpbmcmIHJlc3VsdFN0cmluZyk7CisgICAgICAgIHZvaWQgc2VuZEphdmFTY3JpcHRT
dHJlYW0oY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OkNTdHJpbmcmIHJlc3VsdFN0
cmluZyk7CiAgICAgICAgIHZvaWQgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAK
ICAgICAgICAgc3RhdGljIE5QUCBvd25lckZvclN0cmVhbShOUFN0cmVhbSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYWZjMGFhYjU5NjYzNjdjOTM4MGQ0MDcyMjQ3
NjIyYmVmMDQ1ODA5My4uMGIyZjg2ZDBhMDkyNTM5ODhkNjU4MmIzMWY5MzkxYmMwYWMzMGFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RhdGljIEluc3RhbmNlTWFwJiBpbnN0YW5jZU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
c3RhdGljIFN0cmluZyBzY3JpcHRTdHJpbmdJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJs
KQorc3RhdGljIFN0cmluZyBzY3JpcHRTdHJpbmdJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
UmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIGlmIChtX3BhcmVudEZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpICE9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCkgJiYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSB8fCBtX3BhcmVu
dEZyYW1lLT50cmVlKCkuZmluZCh0YXJnZXRGcmFtZU5hbWUpICE9IG1fcGFyZW50RnJhbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxv
YWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIHJlcXVlc3RVUkwg
PSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAg
ICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RV
UkwpOwogCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0
LT5zaG91bGRBbGxvd1BvcHVwcygpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6
IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKQEAgLTUxMiw3ICs1MTIsNyBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVx
dWVzdCwgYm9vbCBzZW5kTm90aQogewogICAgIEFTU0VSVChmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSA9PSAiR0VUIiB8fCBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpOwogCi0gICAgS1VSTCB1cmwg
PSBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwg
PSBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIAogICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTlBFUlJfSU5WQUxJRF9VUkw7CkBAIC01
NDEsNyArNTQxLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkKICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CiB9CiAKLXN0YXRpYyBLVVJMIG1ha2VVUkwoY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgY2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCitzdGF0aWMgVVJMIG1ha2VVUkwoY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKIHsKICAgICBTdHJp
bmcgdXJsU3RyaW5nID0gcmVsYXRpdmVVUkxTdHJpbmc7CiAKQEAgLTU0OSw3ICs1NDksNyBAQCBz
dGF0aWMgS1VSTCBtYWtlVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IGNoYXIqIHJlbGF0
aXZlVVJMU3RyaW5nKQogICAgIHVybFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIiIp
OwogICAgIHVybFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJ1xyJywgIiIpOwogCi0gICAgcmV0
dXJuIEtVUkwoYmFzZVVSTCwgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVy
bFN0cmluZyk7CiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VVJMTm90aWZ5KGNvbnN0IGNo
YXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKQpAQCAtNzk2LDcg
Kzc5Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGFyYW1ldGVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0CiAgICAgbV9wYXJhbUNvdW50ID0gcGFy
YW1Db3VudDsKIH0KIAotUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUs
IGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbiwgSFRNTFBsdWdJbkVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEZy
YW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGx1Z2luUGFja2FnZSogcGx1
Z2luLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogICAgIDogbV9w
YXJlbnRGcmFtZShwYXJlbnRGcmFtZSkKICAgICAsIG1fcGx1Z2luKHBsdWdpbikKICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQpAQCAtOTQ4LDcgKzk0OCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXND
YWxsaW5nUGx1Z2luKCkKICAgICByZXR1cm4gc19jYWxsaW5nUGx1Z2luID4gMDsKIH0KIAotUGFz
c1JlZlB0cjxQbHVnaW5WaWV3PiBQbHVnaW5WaWV3OjpjcmVhdGUoRnJhbWUqIHBhcmVudEZyYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKK1Bhc3NSZWZQdHI8UGx1Z2luVmlldz4gUGx1Z2luVmlldzo6Y3JlYXRlKEZyYW1l
KiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICAvLyBpZiB3ZSBmYWlsIHRvIGZpbmQgYSBwbHVn
aW4gZm9yIHRoaXMgTUlNRSB0eXBlLCBmaW5kUGx1Z2luIHdpbGwgc2VhcmNoIGZvcgogICAgIC8v
IGEgcGx1Z2luIGJ5IHRoZSBmaWxlIGV4dGVuc2lvbiBhbmQgdXBkYXRlIHRoZSBNSU1FIHR5cGUs
IHNvIHBhc3MgYSBtdXRhYmxlIFN0cmluZwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgTlBFcnJvciBQ
bHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29uc3Qg
Y2hhciogdXJsLCBjaGEKIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlVS
TFZDb29raWU6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJh
c2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAg
ICAgICAgICBpZiAoZnJhbWUpIHsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWVGb3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIq
IHVybCwgY2hhCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5QTlVSTFZQcm94eTog
ewotICAgICAgICBLVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1
cmwpOworICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCks
IHVybCk7CiAgICAgICAgIGlmICh1LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgRnJhbWUqIGZy
YW1lID0gZ2V0RnJhbWUocGFyZW50RnJhbWUoKSwgbV9lbGVtZW50KTsKICAgICAgICAgICAgIGNv
bnN0IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGZyYW1lID8gJmZyYW1lLT5sb2FkZXIoKSA6
IDA7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OnNldFZhbHVlRm9y
VVJMKE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNvbgogCiAgICAg
c3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVVJMVkNvb2tpZTogewotICAgICAgICBL
VVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOworICAgICAg
ICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7CiAgICAg
ICAgIGlmICh1LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nIGNvb2tpZVN0
ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUsIGxlbik7CiAgICAgICAgICAgICBGcmFtZSogZnJh
bWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuaAppbmRleCBjMjQ1ZDMxZjBiMTU2YjJhYWEwODkyZDBlOGM4YTQwODE2ODkw
ZjNiLi4xNjZhNjM3YzkwMGIyM2FmMjlkNmMzMDA2MDE2ODIzMTI1YjA5NmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzksNyArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKICAgICBjbGFzcyBNb3VzZUV2ZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGNs
YXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKQEAgLTEzMiw3ICsxMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBQbHVn
aW5NYW51YWxMb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICwgcHJpdmF0ZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1
Z2luVmlldz4gY3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1
Z2luVmlldz4gY3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogICAgICAgICB2aXJ0dWFsIH5QbHVnaW5WaWV3KCk7
CiAKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW4uZ2V0KCk7IH0KQEAgLTIxNyw3ICsyMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2lu
c1BhZ2U7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWltZVR5cGU7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogCiAjaWYgZGVmaW5lZChYUF9NQUNPU1gpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICAgICBib29sIHBvcFVwQ29udGV4dE1lbnUoTlBNZW51Kik7CkBAIC0yNTAsNyArMjUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAg
ICBQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIFBsdWdpblBh
Y2thZ2UqLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgICAgIFBsdWdpblZp
ZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiwgUGx1Z2luUGFja2FnZSosIEhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiAgICAgICAgIHZvaWQgc2V0UGFyYW1ldGVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKTsKICAgICAgICAgYm9vbCBzdGFydE9yQWRkVG9VbnN0YXJ0ZWRMaXN0KCk7
CkBAIC0yODYsNyArMjg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8
UGx1Z2luUGFja2FnZT4gbV9wbHVnaW47CiAgICAgICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX2Vs
ZW1lbnQ7CiAgICAgICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7Ci0gICAgICAgIEtVUkwgbV91cmw7Cisg
ICAgICAgIFVSTCBtX3VybDsKICAgICAgICAgUGx1Z2luU3RhdHVzIG1fc3RhdHVzOwogICAgICAg
ICBWZWN0b3I8SW50UmVjdD4gbV9pbnZhbGlkUmVjdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCBmYmZmMmU5MTU1YWEzY2I0
MjRmZTI2ZjhjYWEzYTIzNWY2YTFhMGI1Li4zNjYwZTRhYmJjNTM1NjBkMDNjMTFjMzhjOWQ5NTUw
MThmYjJkYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5E
YXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2Uu
aCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4
dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExv
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKaW5k
ZXggNWVmZTVmNzdkZDE5MGM5MWNjYzRhNzI5ZTQ3NzVmMDRmN2I5YTg3MS4uZTEyMTkxZmY3NmMw
NGY0MzlkZGMxNjBiMmQxOWI2OTE2ZWU2YjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQ7CiAjZW5kaWYKIGNsYXNzIEltYWdlOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBTY3JvbGxi
YXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYjM5
YTM4MDM2MTkzMTE2MjQ2M2VkZTMwOWNlOTFlZTZiMGFlZjNhZi4uODY5MmM4ZWNmNTI3MTY5Yjdh
MTRmOGU5YzlkMmI4MDM5OTkwNThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcApAQCAtMzEwLDEzICszMTAsMTMgQEAgSW50UmVjdCBIaXRUZXN0UmVzdWx0
OjppbWFnZVJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVu
ZGVyQm94KCktPmFic29sdXRlQ29udGVudFF1YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwog
fQogCi1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAorVVJMIEhp
dFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogewogICAgIGlmICghbV9pbm5l
ck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBV
UkwoKTsKIAogICAgIGlmICghKG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpICYmIG1f
aW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpKQotICAgICAgICByZXR1
cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBBdG9taWNTdHJpbmcgdXJs
U3RyaW5nOwogICAgIGlmIChtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShlbWJlZFRh
ZykKQEAgLTMzMCwzNyArMzMwLDM3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFn
ZVVSTCgpIGNvbnN0CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9pbm5l
ck5vblNoYXJlZE5vZGUuZ2V0KCkpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFn
ZVNvdXJjZVVSTCgpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gVVJMKCk7CiAKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0
cmluZykpOwogfQogCi1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlUERGVVJMKCkgY29uc3QK
K1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lubmVyTm9uU2hhcmVkTm9kZSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogCiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShl
bWJlZFRhZykgJiYgIW1faW5uZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykp
Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQo
bV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwotICAgIEtVUkwgdXJsID0gbV9pbm5lck5vblNo
YXJlZE5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGVsZW1lbnQtPnVybCgpKSk7CisgICAgVVJMIHVybCA9IG1faW5uZXJOb25TaGFy
ZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhlbGVtZW50LT51cmwoKSkpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgaWYgKGVsZW1l
bnQtPnNlcnZpY2VUeXBlKCkgPT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgKGVsZW1lbnQtPnNlcnZp
Y2VUeXBlKCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkubG93ZXIoKS5lbmRzV2l0aCgiLnBkZiIp
KSkKICAgICAgICAgcmV0dXJuIHVybDsKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBV
UkwoKTsKIH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QK
K1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWx0ID0gbWVkaWFFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBtZWRpYUVsdC0+Y3VycmVudFNyYygpOwotICAgIHJldHVy
biBLVVJMKCk7CisgICAgcmV0dXJuIFVSTCgpOwogI2Vsc2UKLSAgICByZXR1cm4gS1VSTCgpOwor
ICAgIHJldHVybiBVUkwoKTsKICNlbmRpZgogfQogCkBAIC01MTAsMTAgKzUxMCwxMCBAQCB2b2lk
IEhpdFRlc3RSZXN1bHQ6OnRvZ2dsZU1lZGlhTXV0ZVN0YXRlKCkgY29uc3QKICNlbmRpZgogfQog
Ci1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CitVUkwgSGl0VGVz
dFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJVUkxF
bGVtZW50KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAK
ICAgICBBdG9taWNTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50
KG1faW5uZXJVUkxFbGVtZW50LmdldCgpKSB8fCBpc0hUTUxBcmVhRWxlbWVudChtX2lubmVyVVJM
RWxlbWVudC5nZXQoKSkgfHwgbV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUobGlua1RhZykp
CkBAIC01MjMsNyArNTIzLDcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwo
KSBjb25zdAogICAgICAgICB1cmxTdHJpbmcgPSBtX2lubmVyVVJMRWxlbWVudC0+Z2V0QXR0cmli
dXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJV
UkxFbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCmluZGV4IGVjNTIwZjgzMDJiOTU0YjZjMWQ4MTYwNWMyMjlkYjM4YmYxNDY0YzMu
LmY1ZDA5NTk0ZjQ5OTE5OGQzNTY4YTNlMGUyNGZiYTgyOWM2OWM2OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAjZW5kaWYKIGNsYXNzIEltYWdlOwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFz
cyBTY3JvbGxiYXI7CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRp
dGxlRGlzcGxheVN0cmluZygpIGNvbnN0OwogICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OwogICAg
IEludFJlY3QgaW1hZ2VSZWN0KCkgY29uc3Q7Ci0gICAgS1VSTCBhYnNvbHV0ZUltYWdlVVJMKCkg
Y29uc3Q7Ci0gICAgS1VSTCBhYnNvbHV0ZVBERlVSTCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1
dGVNZWRpYVVSTCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7Cisg
ICAgVVJMIGFic29sdXRlSW1hZ2VVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVQREZVUkwo
KSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0OworICAgIFVSTCBhYnNv
bHV0ZUxpbmtVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgdGV4dENvbnRlbnQoKSBjb25zdDsKICAg
ICBib29sIGlzTGl2ZUxpbmsoKSBjb25zdDsKICAgICBib29sIGlzT3ZlckxpbmsoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0uaAppbmRleCBmYzcxYTA4YzIxYjU3MTUxNGJhM2I4NWY3ZWZhNDAwZjhh
NjczNGJhLi5mOGNiZWE4M2I0OGI4NGIxYzU2NDYzY2E4MDVhM2ViZmE4MWI2Nzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0
ZXJQcm9ncmFtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlN0eWxlU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIApAQCAtNDgs
OCArNDgsOCBAQCBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTsKIGNsYXNzIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtLCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4g
Y3JlYXRlKEtVUkwgdmVydGV4U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0
ZXhTaGFkZXIsIAotICAgICAgICBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0
eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3Jh
bVR5cGUsCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBj
cmVhdGUoVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4
U2hhZGVyLCAKKyAgICAgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxl
U2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5
cGUsCiAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0
dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyVVJM
LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyVVJMLCBmcmFnbWVudFNoYWRlciwgcHJvZ3Jh
bVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkpOwpAQCAtMTQzLDExICsxNDMsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2FjaGUoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUqIGNh
Y2hlKSB7IG1fY2FjaGUgPSBjYWNoZTsgfQogICAgIGJvb2wgaW5DYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGU7IH0KICAgICAKLSAgICBLVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmVydGV4U2hhZGVyVVJMOyB9Ci0gICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJVUkw7IH0KKyAgICBVUkwgdmVydGV4U2hh
ZGVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJVUkw7IH0KKyAgICBVUkwgZnJh
Z21lbnRTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyVVJMOyB9CiAK
IHByaXZhdGU6Ci0gICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKEtVUkwgdmVydGV4U2hhZGVy
VVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIEtVUkwgZnJhZ21lbnRT
aGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCAKKyAgICBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0oVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBVUkwgZnJhZ21lbnRTaGFkZXJVUkwsIFBhc3NSZWZQ
dHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCAKICAgICAgICAgQ3VzdG9tRmlsdGVyUHJv
Z3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyYgbWl4U2V0dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQogICAgICAgICA6
IEN1c3RvbUZpbHRlclByb2dyYW0ocHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkK
ICAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCkBAIC0xNzAsOCArMTcwLDgg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZSBVUkxzIGZvcm0gdGhlIGtleSBvZiB0aGUgU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIGluIHRoZSBjYWNoZSBhbmQgYXJlIHVzZWQKICAgICAvLyB0byBs
b29rdXAgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB3aGVuIGl0J3MgcmVtb3ZlZCBmcm9t
IHRoZSBjYWNoZS4KLSAgICBLVVJMIG1fdmVydGV4U2hhZGVyVVJMOwotICAgIEtVUkwgbV9mcmFn
bWVudFNoYWRlclVSTDsKKyAgICBVUkwgbV92ZXJ0ZXhTaGFkZXJVUkw7CisgICAgVVJMIG1fZnJh
Z21lbnRTaGFkZXJVUkw7CiAKICAgICAvLyBUaGUgQ2FjaGUgaXMgcmVzcG9uc2libGUgb2YgaW52
YWxpZGF0aW5nIHRoaXMgcmVmZXJlbmNlLgogICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNh
Y2hlKiBtX2NhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCmluZGV4
IDcwZjk5YWFkZTc2ODdmYjBmNzFjY2Q0YjI5NWZjYjA5YmY4YmRkMWMuLjFjNjJlZjRjMzY5YmZj
ZGYyMTVmOTU0ODIyMjQ2ODRhODQyNWI0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAg
ICgqaXQpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAordm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5oCmluZGV4IDEzMjgxZDRmMmMzMWMxMGE1ZDE1N2VkZGM0MjM5NTk0MGUzNTM4N2UuLjRm
YzgxMmY4N2RiOTI0Yzc4ZjMzZmMwYjg1ZDE3MzIzZWFjOGNmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1cnNvckVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
LmNwcAppbmRleCAwOWVmYzY2YzBlOTJhMjk0MDM1MGRiNTkyOTczOWYyMjdmODY2M2U0Li42MmE1
NmQ5ZTYzY2ExZmMzMjVkYmJhMDRkMDJjYjg2YTA1MjlmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCitT
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIFNWR0RvY3VtZW50Q2xhc3MpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudC5oCmluZGV4IGRjMGQzNDIyYjRlNjU4M2FmMjdjNGRjZDAwNzQ3YTMyMjhj
NDQwY2MuLjY1M2ZhM2I2MTFjNTcxNGYzMDcxMzgwYzcyM2RkYjBhMWE3MThkMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNWR1NWR0VsZW1lbnQ7
CiAKIGNsYXNzIFNWR0RvY3VtZW50IEZJTkFMIDogcHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7
CisgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggNGIxNzU1NDlhMjRkNjNkMzVh
YzYzMjU2Y2Y5OWIwOTdkOTQyOTIyNC4uMWMxYjRhOGU2MTVkNzM2NDhjZWRhZGQyYWQwMDY2ZDFi
ODVhZTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0y
MDksNyArMjA5LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWwKICAgICByZXR1cm4gRkVJbWFn
ZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShmaWx0ZXIsIGRvY3VtZW50KCksIGhyZWYoKSwgcHJl
c2VydmVBc3BlY3RSYXRpbygpKTsKIH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9p
ZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggMWRlNmE4M2NkZGY2YjZmMTc0OWE5NjZj
OTgwNDNkMmRjOTNkZjEwOS4uNjk2NmQzMGNkMGE1Nzc1OGY2MWU1OWM3NTY3OWM2MDQ4NWZhY2Zj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCA5ODk0ZWM0ZTViODNlMjJmZGQzZmRmZmY1MjViYjM5
YmJlZWE3NzI0Li44YmJiZjI0NmY2YzU4MzJjMDM1NzJhZDdmZDU4YWUwYzVlZTI1ZjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKLXZv
aWQgU1ZHSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBiYTU0Yjk3Mjg1MjEwY2Y1M2M0NTJi
ZTBhMDdhOTBjMTBjZWJkOWJiLi40NGQ2NDJjMjRkNTEyNzU1M2YwZmNkNmMwZTFjNjVkMzhhN2Rm
MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2Vz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDc0ZmY2ZTEzYTM2
ODNmY2I4YmJlYjFmN2ExNWJjYTAyNTZkNjRiNDMuLmY2NWY2NzFlZmY0OTlmMjM4ZDE0Yjg4NmRj
NGZiYTkxZmRiMzNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcApAQCAt
NTAsOSArNTAsOSBAQCB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiAK
IFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlKSBjb25zdAogewotICAgIEtVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwor
ICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLT5iYXNlVVJJKCk7CiAgICAgaWYgKGJhc2UuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gS1VSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CisgICAgICAgIHJldHVybiBVUkwoYmFzZSwg
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOwog
ICAgIHJldHVybiBlbGVtZW50KCktPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggN2Q5MTFmMGRjNjYzMmY5NDVlNjRmM2UzYTNjMTRi
N2I4YzU5MGViNi4uMDk0YTJjODA2YmJkOTNhNDVkYjQxNjJhNDRhMzI5MGE1NWYzYmI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
bV90eXBlID0gdHlwZTsKIH0KIAotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzKSBjb25zdAogewogICAgIFNWR0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZDVj
OTQ2ZDQ5NmQ3NDc4MTQ1ZTMxNjYyZjhkODllNTczMjc1NTQ1Yi4uMzc5M2IwZjUzZjAyNmY1N2Fi
MTg4OWVkMGY3ZWYyZGUzMjBlY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVu
dC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSB7IHJl
dHVybiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNv
dXJjZXMoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IDMw
ZTg0OTliZWE3ZWNlNzhjMDc1NzZkOTQ1NmYzMGQyMjQwMzUwNWMuLmE2NjdlMTFkMjY4YzYxNGIw
MTM1ZmNlZmE0NWEwMzllZDQxOWM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTIsOSArNTIsOSBAQCBTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpmcmFnbWVu
dElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bQogICAgIGlm
IChzdGFydCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAg
ICBLVVJMIGJhc2UgPSBzdGFydCA/IEtVUkwoZG9jdW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3Ry
aW5nKDAsIHN0YXJ0KSkgOiBkb2N1bWVudC5iYXNlVVJJKCk7CisgICAgVVJMIGJhc2UgPSBzdGFy
dCA/IFVSTChkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnQpKSA6IGRv
Y3VtZW50LmJhc2VVUkkoKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1
YnN0cmluZyhzdGFydCk7Ci0gICAgS1VSTCBrdXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7
CisgICAgVVJMIGt1cmwoYmFzZSwgZnJhZ21lbnRJZGVudGlmaWVyKTsKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihrdXJsLCBkb2N1bWVudC51cmwoKSkpCiAgICAgICAg
IHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuc3Vic3RyaW5nKDEpOwogCkBAIC02MiwyOCArNjIs
MjggQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0
cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IH0KIAotc3RhdGljIGlubGluZSBLVVJMIHVybEZyb21JUklTdHJpbmdXaXRoRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYgZnJh
Z21lbnRJZGVudGlmaWVyKQorc3RhdGljIGlubGluZSBVUkwgdXJsRnJvbUlSSVN0cmluZ1dpdGhG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiB1cmwsIERvY3VtZW50JiBkb2N1bWVudCwg
U3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIpCiB7CiAgICAgc2l6ZV90IHN0YXJ0T2ZGcmFnbWVu
dElkZW50aWZpZXIgPSB1cmwuZmluZCgnIycpOwogICAgIGlmIChzdGFydE9mRnJhZ21lbnRJZGVu
dGlmaWVyID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1
cm4gVVJMKCk7CiAKICAgICAvLyBFeGNsdWRlIHRoZSAnIycgY2hhcmFjdGVyIHdoZW4gZGV0ZXJt
aW5pbmcgdGhlIGZyYWdtZW50SWRlbnRpZmllci4KICAgICBmcmFnbWVudElkZW50aWZpZXIgPSB1
cmwuc3Vic3RyaW5nKHN0YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIgKyAxKTsKICAgICBpZiAoc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllcikgewotICAgICAgICBLVVJMIGJhc2UoZG9jdW1lbnQuYmFz
ZVVSSSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIpKTsKLSAg
ICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVu
dGlmaWVyKSk7CisgICAgICAgIFVSTCBiYXNlKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0
cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBVUkwo
YmFzZSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIEtVUkwoZG9jdW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3RyaW5nKHN0YXJ0
T2ZGcmFnbWVudElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gVVJMKGRvY3VtZW50LmJhc2VVUkko
KSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CiB9CiAKIEVsZW1l
bnQqIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3QgU3Ry
aW5nJiBpcmksIERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nKiBmcmFnbWVudElkZW50aWZpZXIs
IERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KQogewogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZnJh
Z21lbnQgaWRlbnRpZmllciBjb250YWluZWQgd2l0aGluIHRoZSBJUkkgc3RyaW5nLCB3ZSBjYW4n
dCBsb29rdXAgYW4gZWxlbWVudC4KICAgICBTdHJpbmcgaWQ7Ci0gICAgS1VSTCB1cmwgPSB1cmxG
cm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihpcmksIGRvY3VtZW50LCBpZCk7Ci0g
ICAgaWYgKHVybCA9PSBLVVJMKCkpCisgICAgVVJMIHVybCA9IHVybEZyb21JUklTdHJpbmdXaXRo
RnJhZ21lbnRJZGVudGlmaWVyKGlyaSwgZG9jdW1lbnQsIGlkKTsKKyAgICBpZiAodXJsID09IFVS
TCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKaW5kZXggMzZlMDExN2Q5NTY0NzA0ZDQwYzk4
NGFmZTZkNmViOTFhNDhkNmVlMS4uZGQ5NTZhZjg3ZjQ5NTgyNDVjNTkxMmFlMjAzZGIyNmRmYjc0
OTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gSWYgdGhl
IFVSSSBtYXRjaGVzIG91ciBkb2N1bWVudHMgVVJMLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBsb2Nh
bCByZWZlcmVuY2UuCi0gICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwodXJp
KTsKKyAgICAgICAgVVJMIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVyaSk7CiAgICAgICAg
IHJldHVybiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGRvY3VtZW50LnVy
bCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA0YjEx
MGIwNGNkM2NiNDEyODRkODgxMmNmYzMwNDQzYzU4M2UyNDNmLi40Y2VhNjhjZGFlY2M3OWFlM2Y4
ZTg2MGU4YTVhYWQ2OWI4NzczZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVu
Y2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIGJvb2wgaXNFeHRlcm5h
bFJlZmVyZW5jZSA9IGlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoaHJlZigpLCBkb2N1bWVudCgpKTsK
ICAgICAgICAgaWYgKGlzRXh0ZXJuYWxSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgIEtVUkwgdXJs
ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpOworICAgICAgICAgICAgVVJMIHVybCA9
IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKTsKICAgICAgICAgICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsLnN0cmluZygpKSk7CiAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCA3NWUxMmJkZWNkNWFkOTZkOTFjMWFkYWQ1NDNiNmRiNTQw
MDg5ZWExLi5mYWExNDEyNjk5MGM1MWI1YmQwYmVkMzMzYmE4Y2RhM2MyNjYwZmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTM3Miw3ICszNzIsNyBAQCBi
b29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5zZXRNSU1FVHlwZSgiaW1hZ2Uv
c3ZnK3htbCIpOwotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVy
KCktPmJlZ2luKEtVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKKyAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5iZWdpbihVUkwoKSk7IC8v
IGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLT5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUo
KSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+ZW5k
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKaW5kZXggNjQ3
MmVkOTA5ZjQwYjg5NTRkMmRmYzMyMDUyZWYzYjQxMWJjYTI1Zi4uOGExZDZmYWMzMDk2NTA3NTQz
YTcyM2FhNWVjMDY2NTgwMmM0NWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5jcHAKQEAgLTYwLDI4ICs2MCwyOCBAQCB2b2lkIEFic3RyYWN0V29ya2VyOjpjb250
ZXh0RGVzdHJveWVkKCkKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsg
CiB9CiAKLUtVUkwgQWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmIGVjKQorVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0
IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAodXJsLmlzRW1wdHko
KSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgICAgIHJldHVybiBVUkwoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIHRoZSBkeW5hbWljIGdsb2JhbCBzY29wZSAoYnVnICMyNzg4NykKLSAgICBLVVJMIHNjcmlw
dFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBV
Ukwgc2NyaXB0VVJMID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1cmwp
OwogICAgIGlmICghc2NyaXB0VVJMLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICB9
CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChzY3JpcHRVUkwpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAg
aWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgJiYg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
U2NyaXB0RnJvbVNvdXJjZShzY3JpcHRVUkwpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJS
OwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHNjcmlwdFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3Jr
ZXIuaAppbmRleCA0ZWFjMzIyMDVhZTE1NGJmMjIxNjg3NWE5OTRmNGUxZjQzMjBmYjBjLi41ZGM2
NjRmZGU5ZmJjNzU4ZDA0ZGIzNTExNzk1MjRiM2E0NGVhZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFic3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
aGF0IGNvbnZlcnRzIGEgVVJMIHRvIGFuIGFic29sdXRlIFVSTCBhbmQgY2hlY2tzIHRoZSByZXN1
bHQgZm9yIHZhbGlkaXR5LgotICAgICAgICBLVVJMIHJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1
cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgVVJMIHJlc29sdmVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAgaW50cHRyX3QgYXNJRCgpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRoaXMpOyB9CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCAzZWFmZDEzNTdhMjlmZjQxMmZjZGY3YjAwYzkxNzYyNjY4
YjY5ODI3Li45MjQxOTMwZjk2MzY3ZGJkNDVlMDdiNWQ0MmI0YWJkMDU0ZTUzZTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNz
T3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRo
cmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBz
ZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKQogewogICAgIFJlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9
IGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwg
c2V0dGluZ3MsIHRocmVhZCwgdG9wT3JpZ2luKSk7CiAgICAgY29udGV4dC0+YXBwbHlDb250ZW50
U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSk7CiAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwogfQogCi1E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRl
ZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pCiAgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRo
cmVhZCwgdG9wT3JpZ2luKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGY0Njk0MzJiMzk0MjMxNTlmNDI1OWJi
YWNkNmFiMDIzZmQxZWIxNDkuLjQzYTViNTRjNTViYzM0NWJmYzQxNjIyMGE0ZDJmYjE2NDY4NGRm
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3Bl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgV29ya2VyR2xvYmFsU2NvcGUgQmFzZTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIERlZGljYXRlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVu
dFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2lu
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+
IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250
ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pOwogICAgICAgICB2aXJ0dWFsIH5EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkKCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIERlZGlj
YXRlZFdvcmtlclRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7
CisgICAgICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAppbmRleCBkYzIyMDM4ZWQyZTdiYjMzN2FlZTEwZDZh
MzhiZDM2MDM0MjA1NTE3Li45MjlmZGU3NWI0OGIxZDQ1N2VlZjdhYWNkYmY1ODgzM2MwODU0MDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikKK1Bhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJM
b2FkZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKIH0KIAotRGVk
aWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3Ms
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRl
clByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKK0RlZGljYXRlZFdvcmtlclRo
cmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6IFdvcmtlclRocmVhZCh1cmwsIHVzZXJBZ2Vu
dCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQ
cm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIHRvcE9yaWdpbikKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkod29ya2VyT2Jq
ZWN0UHJveHkpCiB7CkBAIC01NSw3ICs1NSw3IEBAIERlZGljYXRlZFdvcmtlclRocmVhZDo6fkRl
ZGljYXRlZFdvcmtlclRocmVhZCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2Nv
cGU+IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91
cFNldHRpbmdzPiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCiB7CiAgICAgcmV0dXJu
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUodXJsLCB1c2VyQWdlbnQsIHNldHRp
bmdzLCB0aGlzLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIHRvcE9yaWdpbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaAppbmRleCBhNzBiZTZjOGRmNGQxYzk0MjQ1ZDI5ODI2MzhiNGIwNmJkNmFl
MTdmLi4xOTk4ZmU5MmM1N2RkMTA0MDRiMGI2Y2UzMzgxMGM0MDZjODJiN2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKQEAgLTQxLDE2ICs0
MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IEtVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0
UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
OwogICAgICAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7
IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9CiAgICAgICAgIHZpcnR1YWwgfkRlZGljYXRl
ZFdvcmtlclRocmVhZCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVS
UklERTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1
bkV2ZW50TG9vcCgpIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGVkaWNhdGVk
V29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CisgICAgICAgIERlZGljYXRl
ZFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICAgICAgV29ya2Vy
T2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAK
aW5kZXggOTg1YWYwMDZhZWM2YTRkMzY5MDZiZDA0NTM0MDhhZjkzNWIxOGM3Zi4uNWMyNmM4YzYx
MDE1MjZjMjcyZjhkODY0MjlkZmJhM2FkNjBmMTA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTY0
LDE5ICs2NCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclBy
b3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5PiwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlclByb3h5KG5hbWUs
IHVybCwgb3JpZ2luKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94
eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtl
clByb3h5KG5hbWUsIHVybCwgb3JpZ2luKSk7IH0KIAogICAgIHZvaWQgc2V0VGhyZWFkKFBhc3NS
ZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiB0aHJlYWQpIHsgbV90aHJlYWQgPSB0aHJlYWQ7IH0K
ICAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgp
OyB9CiAgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nsb3Npbmc7IH0KLSAg
ICBLVVJMIHVybCgpIGNvbnN0CisgICAgVVJMIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICAv
LyBEb24ndCB1c2UgbV91cmwuY29weSgpIGJlY2F1c2UgaXQgaXNuJ3QgYSB0aHJlYWRzYWZlIG1l
dGhvZC4KLSAgICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybC5zdHJpbmco
KS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBt
X3VybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7IH0KLSAgICBib29sIG1hdGNo
ZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4s
IGNvbnN0IEtVUkwmIHVybFRvTWF0Y2gpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgVVJM
JiB1cmxUb01hdGNoKSBjb25zdDsKIAogICAgIC8vIFdvcmtlckxvYWRlclByb3h5CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPik7CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBwdWJsaWM6CiAgICAgR3JvdXBTZXR0
aW5ncyogZ3JvdXBTZXR0aW5ncygpIGNvbnN0OyAvLyBQYWdlIEdyb3VwU2V0dGluZ3MgdXNlZCBi
eSB3b3JrZXIgdGhyZWFkLgogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb3h5KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsK
KyAgICBTaGFyZWRXb3JrZXJQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBib29s
IG1fY2xvc2luZzsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogICAgIC8vIFRoZSB0aHJlYWQgaXMgZnJlZWQgd2hlbiB0aGUgcHJveHkgaXMgZGVz
dHJveWVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwcm94eSBzdGF5cyBhcm91
bmQgdW50aWwgdGhlIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlIGV4aXRzLgogICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fdGhyZWFkOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
bV9vcmlnaW47CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX3dvcmtl
ckRvY3VtZW50c0xvY2s7CiB9OwogCi1TaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJv
eHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbikKK1NoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4pCiAgICAgOiBtX2Nsb3NpbmcoZmFsc2UpCiAgICAgLCBtX25hbWUobmFtZS5p
c29sYXRlZENvcHkoKSkKICAgICAsIG1fdXJsKHVybC5jb3B5KCkpCkBAIC0xMjcsNyArMTI3LDcg
QEAgU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtlclByb3h5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmUKICAgICBBU1NFUlQobV9vcmlnaW4tPmhhc09uZVJl
ZigpKTsKIH0KIAotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6bWF0Y2hlcyhjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgS1VSTCYgdXJs
VG9NYXRjaCkgY29uc3QKK2Jvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVSTCYg
dXJsVG9NYXRjaCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgb3JpZ2lucyBkb24ndCBtYXRjaCwg
b3IgdGhlIG5hbWVzIGRvbid0IG1hdGNoLCB0aGVuIHRoaXMgaXMgbm90IHRoZSBwcm94eSB3ZSBh
cmUgbG9va2luZyBmb3IuCiAgICAgaWYgKCFvcmlnaW4tPmVxdWFsKG1fb3JpZ2luLmdldCgpKSkK
QEAgLTI4OSw3ICsyODksNyBAQCBwcml2YXRlOgogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPiwgcHJpdmF0
ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsPiwgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4pOwotICAgIHZvaWQgbG9h
ZChjb25zdCBLVVJMJik7CisgICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgog
ICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCBjYWxsYmFja3MKQEAgLTMwOSw3ICszMDks
NyBAQCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29yawogewogfQogCi12b2lkIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBTdGF5IGFsaXZlIChhbmQg
a2VlcCB0aGUgU2hhcmVkV29ya2VyIGFuZCBKUyB3cmFwcGVyIGFsaXZlKSB1bnRpbCB0aGUgbG9h
ZCBmaW5pc2hlcy4KICAgICB0aGlzLT5yZWYoKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIERl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpkb2N1bWVudERldGFjaGVkKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgbV9wcm94aWVzW2ldLT5kb2N1bWVudERldGFjaGVkKGRvY3VtZW50
KTsKIH0KIAotdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdFRvV29y
a2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsPiBwb3J0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25u
ZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9sb2NrKTsK
ICAgICBBU1NFUlQod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpKTsKQEAg
LTQyNiwxMiArNDI2LDEyIEBAIHZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNv
bm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29yCiB9CiAKIC8vIENyZWF0
ZXMgYSBuZXcgU2hhcmVkV29ya2VyUHJveHkgb3IgcmV0dXJucyBhbiBleGlzdGluZyBvbmUgZnJv
bSB0aGUgcmVwb3NpdG9yeS4gTXVzdCBvbmx5IGJlIGNhbGxlZCB3aGlsZSB0aGUgcmVwb3NpdG9y
eSBtdXRleCBpcyBoZWxkLgotUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnk6OmdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnk6OmdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgLy8gTG9vayBmb3IgYW4gZXhpc3Rpbmcgd29ya2VyLCBhbmQgY3JlYXRlIG9u
ZSBpZiBpdCBkb2Vzbid0IGV4aXN0LgogICAgIC8vIEl0ZW1zIGluIHRoZSBjYWNoZSBhcmUgZnJl
ZWQgb24gYW5vdGhlciB0aHJlYWQsIHNvIGRvIGEgdGhyZWFkc2FmZSBjb3B5IG9mIHRoZSBVUkwg
YmVmb3JlIGNyZWF0aW5nIHRoZSBvcmlnaW4sCiAgICAgLy8gdG8gbWFrZSBzdXJlIG5vIHJlZmVy
ZW5jZXMgdG8gZXh0ZXJuYWwgc3RyaW5ncyBsaW5nZXIuCi0gICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fcHJveGllcy5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAoIW1fcHJveGllc1tpXS0+
aXNDbG9zaW5nKCkgJiYgbV9wcm94aWVzW2ldLT5tYXRjaGVzKG5hbWUsIG9yaWdpbiwgdXJsKSkK
ICAgICAgICAgICAgIHJldHVybiBtX3Byb3hpZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5kZXggNzA1ZWY0
NzE2NzU3NmY2NzE0YzE3YmUyYTc2ODNkODg0NjBmNTg0Ni4uODI2N2M4MzYzZjEwYmU3ZWFlYmU1
ZTk2MTliMmE1MTJiOTI4MjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApAQCAtNDYsNyArNDYsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VSTDsK
KyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogICAgIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwpAQCAtNjUs
NyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd29ya2VyU2NyaXB0
TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IFN0cmluZyYgd29ya2VyU2NyaXB0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUpOwogCiAgICAgICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIFNo
YXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3QoKQotICAgICAgICB2b2lkIGNvbm5lY3RUb1dv
cmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgYSBk
b2N1bWVudCBoYXMgYmVlbiBkZXRhY2hlZC4KICAgICAgICAgdm9pZCBkb2N1bWVudERldGFjaGVk
KERvY3VtZW50Kik7CkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkoKTsKICAgICAgICAgfkRlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQ
cm94eT4gZ2V0UHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJik7CisgICAgICAg
IFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IGdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgVVJMJik7CiAgICAgICAgIC8vIE11dGV4IHVzZWQgdG8gcHJvdGVjdCBpbnRlcm5h
bCBkYXRhIHN0cnVjdHVyZXMuCiAgICAgICAgIE11dGV4IG1fbG9jazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDI4YTFlZWQwYTA3ODBiYjBhNmVjNjkwMWZh
NzA2NDg2ODFmNGNkY2YuLmFhNTI1ZjY5MjdkYTRlM2RjMGE3MTZmMTc4MTllMjJiMzY5OWQ3MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmVhdHVyZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC02Niw3ICs2Niw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAKICAgICB3b3JrZXIt
PnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgS1VSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29s
dmVVUkwodXJsLCBlYyk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHdvcmtlci0+cmVzb2x2ZVVSTCh1
cmwsIGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKaW5kZXggZDcxNjg3MjMwMjcxNzQwMDg5MjgxMTA3ZDhhODZjNzgzMGQ5MjMwNC4uMWNm
NWY4MTQzYmEyZjNiY2YzNmI2NzAyNmJmMzViNmMxYTViN2VjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUzLDE0ICs1
MywxNCBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NS
ZWZQdHI8TWVzc2FnZVBvcnQ+IHBycFBvcnQpCiB9CiAKIC8vIHN0YXRpYwotUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVh
ZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCitQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
KQogewogICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9IGFkb3B0
UmVmKG5ldyBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShuYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0
dGluZ3MsIHRocmVhZCkpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5
RnJvbVN0cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQpCitTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQogICAgIDog
V29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIDApCiAg
ICAgLCBtX25hbWUobmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA3Y2Q5OWI3NmU5OTdkYzJlZTc1NzBjOWQ0OTZmYjI5
MmY2NTliYTQxLi5lMDEzNmNhNDhmNTI5YjFjNDM1Y2NmMDM4MGYxYWM2ZWM0OTZlY2Y0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hhcmVkV29y
a2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKICAg
ICAgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJl
ZFdvcmtlclRocmVhZCopOworICAgICAgICBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3du
UHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pIE9WRVJSSURFOwogCiAgICAgICAgIFN0cmlu
ZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
clJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmNwcAppbmRleCBkZjQ5NTkyNWJkYzQxMGQ0ZTExNDY2Mjg2Yzc0MjU0MTgyNThjOTEx
Li5hM2NkYTViNTA1ZjgxMzAyNWU4N2UzZTdhOGM2YTVmNjFiNTkxMWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgYm9vbCBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojppc0F2YWlsYWJsZSgpCiAgICAg
cmV0dXJuIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpLmlzQXZhaWxh
YmxlKCk7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
cG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS5jb25uZWN0VG9X
b3JrZXIod29ya2VyLCBwb3J0LCB1cmwsIG5hbWUsIGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5kZXggYzNkODdlYzkwZWFjN2Iw
ZDkwMDVlZDE1MjkwMTg0ZWE3NzViM2VhZC4uMDQ5Zjg2YWM5ZTY1M2JmODZjODE2Mjk2OTg0YmYx
YTAxZTBjZTM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNs
YXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAKQEAgLTUz
LDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBpc0F2
YWlsYWJsZSgpOwogCiAgICAgICAgIC8vIENvbm5lY3RzIHRoZSBwYXNzZWQgU2hhcmVkV29ya2Vy
IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgd29ya2VyIHRocmVhZCwgY3JlYXRpbmcgYSBuZXcg
dGhyZWFkIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgc3RhdGljIHZvaWQgY29ubmVjdChQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBzdGF0
aWMgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgICAgICAvLyBJbnZva2VkIHdoZW4gYSBkb2N1bWVudCBoYXMgYmVlbiBk
ZXRhY2hlZC4KICAgICAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCmluZGV4
IGJhYjM5NTg0YTVhNWM3Nzc2NjJmMjAxYjBjN2Y0ZGRiODlhNzc4NzMuLjFhYzE0OGIxZjU4NWE4
YmRmODAzNWI4MmI2ODc2Mjk1MDczMWQzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBTaGFyZWRXb3JrZXJU
aHJlYWQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpCitQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVkV29ya2VyVGhy
ZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94
eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJUaHJlYWQobmFt
ZSwgc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2Fk
ZXJQcm94eSwgd29ya2VyUmVwb3J0aW5nUHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKSk7CiB9CiAKLVNoYXJlZFdvcmtlclRo
cmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGlu
Z3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxv
YWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSkKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1By
b3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQogICAgIDogV29ya2Vy
VGhyZWFkKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVy
UHJveHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgMCkKICAgICAsIG1fbmFtZShuYW1lLmlz
b2xhdGVkQ29weSgpKQogewpAQCAtNTMsNyArNTMsNyBAQCBTaGFyZWRXb3JrZXJUaHJlYWQ6On5T
aGFyZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1QYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3Bl
PiBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4pCitQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBTaGFy
ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5n
cywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPikKIHsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX25hbWUsIHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IGU4NzBkMWZjZmVhODdjMTc4YTJi
ODE2Yjg1YTU0NjI1NDE5OWZiNjAuLmNhMDVhYTczZWRkMjU0ZWU2MjVlOTdmMWNlN2JjM2IwZWQx
NTZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaApA
QCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNoYXJl
ZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdy
b3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5
JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlKTsKICAgICAgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyVGhyZWFk
KCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJH
bG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBl
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pIE9WRVJSSURFOworICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW4pIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2hhcmVkV29ya2Vy
VGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBX
b3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUpOwogCiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAppbmRleCBjMmY2MTk2MmRjODM5ZmM1YzA3MmY4YzJmYmE3ZGRmZjhjNTEw
MWJiLi5iYTkyZjI4ZThlOTkyZmNmNTcyNDIzYTMzMzBhM2VlNzQwYWE1ZmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8V29ya2VyPiBX
b3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmCiAKICAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgS1VSTCBzY3JpcHRV
UkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHdv
cmtlci0+cmVzb2x2ZVVSTCh1cmwsIGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggYTgzNDZkZDEzZjM1MmEzZDY0ZTNjOGQzYTY3NmYwOWYzMjEwNDFm
OS4uYjdlNmRiOTMxNDUxMmIyODY5MWYxOGI4NTRlOWRmODMwNjkwMmMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCkBAIC04NCw3ICs4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQorV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0
cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1f
dXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fZ3JvdXBTZXR0aW5ncyhzZXR0aW5ncykKQEAg
LTExNywxNyArMTE3LDE3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFwcGx5Q29udGVudFNl
Y3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHBvbGljCiAgICAgY29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5LCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlKTsKIH0KIAotS1VSTCBXb3JrZXJHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJiB1cmwpIGNvbnN0CitVUkwgV29ya2VyR2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogewogICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxs
IFVSTCB3aGVuIHBhc3NlZCBhIG51bGwgc3RyaW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
Y2hhbmdlIHRoZSBLVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhp
cyBiZWhhdmlvcj8KICAgICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gS1VSTCgp
OworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBpbiBXb3Jr
ZXJzLgotICAgIHJldHVybiBLVVJMKG1fdXJsLCB1cmwpOworICAgIHJldHVybiBVUkwobV91cmws
IHVybCk7CiB9CiAKLVN0cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IEtV
UkwmKSBjb25zdAorU3RyaW5nIFdvcmtlckdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJM
JikgY29uc3QKIHsKICAgICByZXR1cm4gbV91c2VyQWdlbnQ7CiB9CkBAIC0yMTcsMTggKzIxNywx
OCBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQ
b2xpY3koKSk7CiAgICAgZWMgPSAwOwogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciB1cmxzRW5kID0gdXJscy5lbmQoKTsKLSAgICBWZWN0b3I8S1VSTD4gY29tcGxldGVkVVJMczsK
KyAgICBWZWN0b3I8VVJMPiBjb21wbGV0ZWRVUkxzOwogICAgIGZvciAoVmVjdG9yPFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdXJscy5iZWdpbigpOyBpdCAhPSB1cmxzRW5kOyArK2l0KSB7
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29t
cGxldGVVUkwoKml0KTsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKCppdCk7CiAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGNvbXBsZXRlZFVSTHMuYXBwZW5kKHVybCk7CiAgICAgfQotICAgIFZl
Y3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29tcGxldGVkVVJMcy5lbmQoKTsKKyAg
ICBWZWN0b3I8VVJMPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29tcGxldGVkVVJMcy5lbmQoKTsK
IAotICAgIGZvciAoVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbXBsZXRlZFVS
THMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChWZWN0b3I8VVJMPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVyPiBzY3JpcHRMb2FkZXIoV29ya2Vy
U2NyaXB0TG9hZGVyOjpjcmVhdGUoKSk7CiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICAg
ICAgc2NyaXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
Y3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4
IDcyNGI0MGUxMGU1ODk3ZDk3YzYzNmZlYzkxZjE0NTE5ZWFkZjI0Y2YuLjc4YWY3ODIyZTIyZmNi
NWE2YWVhZmRjZDY2M2I4MzcyZjZjMWY3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgKQEAgLTY1LDExICs2NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgICAgIHZpcnR1YWwg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV91cmw7IH0K
LSAgICAgICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgdmlydHVhbCBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICAgICAgY29u
c3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncygpIHsgcmV0dXJuIG1fZ3JvdXBTZXR0aW5n
cy5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29u
c3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKSBPVkVSUklERTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBXb3JrZXJUaHJlYWQqLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKTsKICAgICAgICAgdm9pZCBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29u
c29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4pIE9WRVJSSURFOwpAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBP
VkVSUklERSBGSU5BTDsKIAotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7
CiAgICAgICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICAgICAgT3duUHRyPEdyb3VwU2V0dGlu
Z3M+IG1fZ3JvdXBTZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCBkOTdhMDdjYmQ5ZTI3YjE5NzYwYjk4MTk5MTM1NmFl
MTMyM2NkYWQyLi5hOTVkYzc1MmE0Nzg4MjVmMTU3YjAyMDVhMDQ0N2MyZGM5ZWY4OTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAt
NDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOwor
ICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBXb3JrZXI7CiAKICAgICAvLyBBIHByb3h5IHRvIHRh
bGsgdG8gdGhlIHdvcmtlciBjb250ZXh0LgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVQcm94eSgpIHsgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAppbmRleCA0
YmQzNTkxODkyZjYxYzkzM2M1NGYyZGVjYTFkOTM5NDYxNTkwZTg5Li4xMTExYjVkMjAzYjEyZTU0
ZTQwMWU1ZWE4NWUzMjhlYmUxNzY4ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFdv
cmtlckxvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyTG9jYXRpb24+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckxvY2F0aW9uPiBjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlv
bj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdvcmtlckxvY2F0aW9uKHVybCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogCiAgICAgICAgIFN0cmluZyBocmVm
KCkgY29uc3Q7CiAKQEAgLTYwLDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBocmVmKCk7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGV4cGxpY2l0IFdvcmtlckxvY2F0aW9uKGNvbnN0IEtVUkwmIHVybCkgOiBt
X3VybCh1cmwpIHsgfQorICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBVUkwm
IHVybCkgOiBtX3VybCh1cmwpIHsgfQogCi0gICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFVS
TCBtX3VybDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI3NGNlNDE0YzNh
OGE5YzZhNmFmZTYyYmMwMjM0Mzc1MGZhMDZkZTguLjAyZWJjNjUxY2Q2YjhhNjg2Y2Q1MjA3Yjdk
NDZmMGZkYzM2MTk2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgV29ya2VyTWVzc2FnaW5nUHJveHk6
On5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpCiAgICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc3Rh
dGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0
KCkpLT50aHJlYWQoKS0+dGhyZWFkSUQoKSkpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSkKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZCB0byBiZSByZXZpc2l0ZWQgd2hlbiB3
ZSBzdXBwb3J0IG5lc3RlZCB3b3JrZXIgb25lIGRheQogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggOGE3ZWM4ZGIwZmQxYmFiNzdmYWE3NTEyYjQ0YmJm
MzZkNTUwMWY4Yi4uMTg5NmE4MTM1MDRhYzE4YWJhY2RkMWZhYzAzMTkwNjlkZmY3NWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTMs
NyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRp
b25zIG9mIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVz
ZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgT1ZFUlJJREU7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIE9WRVJS
SURFOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3Bl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4pIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggOTIyNzIyNjNkZjFiNTAzNDJjNDg4MzIwNDRmZDg5
MWQxNWFlYjdiYy4uOGRhNGVlZmVkNDJjODY1MjRkNmY3MzVkYzk0NDI2YThkOTliMTYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKQogewog
fQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBD
cm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KQordm9pZCBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9zc09yaWdpblJl
cXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KQogewogICAgIG1fdXJsID0gdXJs
OwogCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxX
b3JrZXJHbG9iYWxTY29wZSo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRo
aXMsIG9wdGlvbnMpOwogfQogICAgIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBLVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJl
cXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQordm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xp
ZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgbV9jbGllbnQgPSBjbGll
bnQ7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0CiAgICAgbV90aHJl
YWRhYmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KIAotY29uc3QgS1VSTCYgV29ya2Vy
U2NyaXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIFdvcmtlclNjcmlw
dExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogewogICAgIEFTU0VSVCghZmFpbGVkKCkpOwog
ICAgIHJldHVybiBtX3Jlc3BvbnNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKaW5kZXggZGMxYzViYTYyMTE5MzFiYTJjYzVhYTQ5NzNlNGY1ZDg5NDdk
Mjg5OS4uOWNiNGZiZGY0ODExOTUzN2IwZjA1ZWQ4MmVkOGYxMzhkNzhjY2YyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgpAQCAtNTYsMTQg
KzU2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV29ya2VyU2NyaXB0TG9hZGVyKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBs
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7Ci0gICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKKyAgICAgICAgdm9pZCBsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgQ3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5KTsKKyAgICAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwg
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CiAKICAgICAgICAgdm9pZCBub3RpZnlFcnJvcigp
OwogCiAgICAgICAgIFN0cmluZyBzY3JpcHQoKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwo
KSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgICAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
ZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWQ7IH0KICAgICAgICAgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKQEAgLTkxLDgg
KzkxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9yZXNwb25zZUVu
Y29kaW5nOyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7Ci0gICAgICAgIEtVUkwgbV91
cmw7Ci0gICAgICAgIEtVUkwgbV9yZXNwb25zZVVSTDsKKyAgICAgICAgVVJMIG1fdXJsOworICAg
ICAgICBVUkwgbV9yZXNwb25zZVVSTDsKICAgICAgICAgYm9vbCBtX2ZhaWxlZDsKICAgICAgICAg
dW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAgICAgICAgIGJvb2wgbV9maW5pc2hpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTgzZjk5ZDAzZDM4Yjg1
ZTFlMDExMDA2YzdkMjgzYzRjMDRkYjc5YS4uNWU0OTI5YWI1NzhiYzhhMTc0Zjc3ZmFiNGYzODU1
ZWE0ZTNhMWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAt
MzIsMTEgKzMyLDExIEBACiAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERh
dGEuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjks
MTIgKzY5LDEyIEBAIHVuc2lnbmVkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKQog
c3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVh
dGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5n
cywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikpOwogICAgIH0KIAotICAgIEtVUkwgbV9zY3Jp
cHRVUkw7CisgICAgVVJMIG1fc2NyaXB0VVJMOwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAg
ICBPd25QdHI8R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdzOwogICAgIFN0cmluZyBtX3Nv
dXJjZUNvZGU7CkBAIC04MywxMCArODMsMTAgQEAgcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGU7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKIHByaXZhdGU6Ci0gICAgV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogfTsKIAotV29ya2VyVGhyZWFkU3RhcnR1
cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIHRvcE9yaWdpbikKK1dvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFy
dHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6IG1f
c2NyaXB0VVJMKHNjcmlwdFVSTC5jb3B5KCkpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3NvdXJjZUNvZGUoc291cmNlQ29kZS5pc29sYXRlZENv
cHkoKSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2Vy
VGhyZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdAogICAgIG1f
Z3JvdXBTZXR0aW5ncy0+c2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKHNldHRpbmdzLT5pbmRleGVk
REJEYXRhYmFzZVBhdGgoKS5pc29sYXRlZENvcHkoKSk7CiB9CiAKLVdvcmtlclRocmVhZDo6V29y
a2VyVGhyZWFkKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJv
eHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2Rl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3Mq
IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3
b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAg
ICAgOiBtX3RocmVhZElEKDApCiAgICAgLCBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRl
clByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGVhMzQ5NDgwMjNlNTNi
OTVlYTYwY2JmMjRjZDQ3MDQwMGYzMDgyMGQuLmQ1ZGIyYWJjZWVjNzQyMDI4OWU1MWM5MTQ2ZjZm
YThjNmI4MzBhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzks
NyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiAgICAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CkBAIC03MSwxMCArNzEs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IEdyb3VwU2V0dGluZ3MqLCAgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAg
V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBH
cm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICAgICAgLy8g
RmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IHdvcmtlciBjb250ZXh0IGZvciB0aGUg
dGhyZWFkLgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOwogCiAg
ICAgICAgIC8vIEV4ZWN1dGVzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd29ya2VyIHRocmVhZC4g
RGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwZXJmb3JtIGFjdGlvbnMgYmVmb3JlL2Fm
dGVyIGVudGVyaW5nIHRoZSBldmVudCBsb29wLgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuRXZl
bnRMb29wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCmluZGV4IDM4MDY0M2FkNTNiOWRmZjc5
M2I2MTJlMTIxN2Q0Y2ZhODlmMGIyNWMuLjNlMjBkOTdlYjg5Mjk4Y2M5NmRkN2I0ODJkNWJhOGY0
N2FkNzUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IERPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJl
ZlB0cjxEb2N1bWVudD4gZG9jID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNv
bnRlbnRUeXBlLCAwLCBLVVJMKCksIGZhbHNlKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9
IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgVVJMKCks
IGZhbHNlKTsKICAgICBkb2MtPnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVh
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDE5YjE5OTQ5
ZDJjNTUzYzkyMDQwMTMxNWViY2Q2YmE0YjhlMDMzMDMuLmMyNzViMTAzZDIyMDA0YjBiODZmM2Fl
Mjk4ZTFlZmZiMmE3ZTFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtNDY5LDEyICs0NjksMTIgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUEhl
YWRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICYmICFuYW1lLnN0YXJ0c1dpdGgoc3Rh
dGljRGF0YS0+bV9zZWNIZWFkZXJQcmVmaXgsIGZhbHNlKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVx
dWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IFVSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBvcGVuKG1ldGhv
ZCwgdXJsLCB0cnVlLCBlYyk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaW50
ZXJuYWxBYm9ydCgpOwogICAgIFN0YXRlIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwpAQCAtNTU0
LDE3ICs1NTQsMTcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBFeGMKICAgICAgICAgbV9zdGF0ZSA9
IE9QRU5FRDsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsK
KyAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxz
LnNldFVzZXIodXNlcik7CiAKICAgICBvcGVuKG1ldGhvZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBh
c3luYywgZWMpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBh
c3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOworICAgIFVS
TCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNl
cih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMjQxZWE0NTAyYjVkMGNjMWUyM2IyOGE4
MDZlZTliMzIzMmI5OTYwZC4uZjgwNjRmNWIzZTBkNDQzMTFkODAwZTc2MzQ4MGU1NDlhMDA3MmRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTg2LDE2ICs4NiwxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0RXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKICAgICBpbnQgc3RhdHVzKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCB3aXRoQ3JlZGVudGlhbHMoKSBj
b25zdCB7IHJldHVybiBtX2luY2x1ZGVDcmVkZW50aWFsczsgfQogICAgIHZvaWQgc2V0V2l0aENy
ZWRlbnRpYWxzKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYs
IGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNv
bnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJM
JiwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25z
dCBVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2VuZChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQo
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+IG1fdXBsb2FkOwogCi0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbWV0aG9kOwogICAgIEhU
VFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVhZGVyczsKICAgICBSZWZQdHI8Rm9ybURhdGE+IG1fcmVx
dWVzdEVudGl0eUJvZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0
UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5kZXggNzg3
ODQ2MmRhNTI4Njg0ZDYxNmEzNzUwYzExYmYyYTY1ZGQ3NDhlZi4uZGY4NTM0ZWVmZWFmZjE2ZWVj
NWFjZmUzNWZkN2NlNmFiNmRkMzMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TEltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNw
cApAQCAtNDksNyArNDksNyBAQCBYU0xJbXBvcnRSdWxlOjp+WFNMSW1wb3J0UnVsZSgpCiAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotdm9pZCBYU0xJbXBv
cnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCkKK3ZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0WFNM
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiBzaGVldCkKIHsKICAgICBpZiAobV9zdHlsZVNoZWV0KQogICAgICAgICBtX3N0eWxl
U2hlZXQtPnNldFBhcmVudFN0eWxlU2hlZXQoMCk7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgWFNM
SW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9
IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXBhcmVudFNoZWV0LT5iYXNlVVJMKCkuaXNO
dWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVoZWV0J3MgVVJMIGFzIHRoZSBiYXNl
IFVSTAotICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRTaGVldC0+YmFzZVVSTCgpLCBtX3N0
ckhyZWYpLnN0cmluZygpOworICAgICAgICBhYnNIcmVmID0gVVJMKHBhcmVudFNoZWV0LT5iYXNl
VVJMKCksIG1fc3RySHJlZikuc3RyaW5nKCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGEgY3lj
bGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVuY291bnRlciBhIHN0eWxlc2hlZXQKICAg
ICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhlIHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFp
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oCmluZGV4IDM1MGNkZDliMTY1MzRiNjE3ZjA2
Mjc2MjkzYzQ3NDBlMmNmNmIxOWUuLjcyZTA0MDA4YWQ5NjY2N2VlODkyMmZmZWUxNjQ2OGY0MmJj
MWZlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFhTTEltcG9ydFJ1bGUoWFNMU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIGNvbnN0IFN0cmluZyYgaHJlZik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKICAg
ICAKICAgICBYU0xTdHlsZVNoZWV0KiBtX3BhcmVudFN0eWxlU2hlZXQ7CiAgICAgU3RyaW5nIG1f
c3RySHJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCmluZGV4IGQzNDZhYWY2YTM1N2Rk
NDUwNGJmMDkyNjUwOWM3ZDU4NjJmMTQ3NTYuLmZkMWUzOTMyMTJmMjVkM2M2YjJjZGMyNzYxMzg4
MTdmZjY0OWZiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtNDAsMjIgKzQw
LDIyIEBAIGNsYXNzIFhTTEltcG9ydFJ1bGU7CiAgICAgCiBjbGFzcyBYU0xTdHlsZVNoZWV0IEZJ
TkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBv
cnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50SW1wb3J0
LCBvcmlnaW5hbFVSTCwgZmluYWxVUkwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
WFNMU3R5bGVTaGVldD4gY3JlYXRlKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGFyZW50Tm9kZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKFByb2Nlc3NpbmdJbnN0cnVjdGlv
biogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5h
bFVSTCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChw
YXJlbnROb2RlLCBvcmlnaW5hbFVSTCwgZmluYWxVUkwsIGZhbHNlKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVkKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlRW1iZWRkZWQoUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKiBwYXJlbnROb2RlLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGZpbmFsVVJMLnN0
cmluZygpLCBmaW5hbFVSTCwgdHJ1ZSkpOwogICAgIH0KIAogICAgIC8vIFRha2luZyBhbiBhcmJp
dHJhcnkgbm9kZSBpcyB1bnNhZmUsIGJlY2F1c2Ugb3duZXIgbm9kZSBwb2ludGVyIGNhbiBiZWNv
bWUgc3RhbGUuCiAgICAgLy8gWFNMVFByb2Nlc3NvciBlbnN1cmVzIHRoYXQgdGhlIHN0eWxlc2hl
ZXQgZG9lc24ndCBvdXRsaXZlIGl0cyBwYXJlbnQsIGluIHBhcnQgYnkgbm90IGV4cG9zaW5nIGl0
IHRvIEphdmFTY3JpcHQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3Jl
YXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xT
dHlsZVNoZWV0PiBjcmVhdGVGb3JYU0xUUHJvY2Vzc29yKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxV
UkwsIGZpbmFsVVJMLCBmYWxzZSkpOwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY2hlY2tMb2FkZWQoKTsKICAgICAKLSAgICBjb25zdCBLVVJMJiBmaW5h
bFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIGZpbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maW5hbFVSTDsgfQogCiAgICAgdm9pZCBsb2FkQ2hpbGRT
aGVldHMoKTsKICAgICB2b2lkIGxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZik7CkBA
IC05NCwxOCArOTQsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyT3duZXJOb2RlKCkgT1ZFUlJJREUgeyBtX293bmVyTm9kZSA9IDA7IH0KLSAgICB2aXJ0
dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZmluYWxVUkw7IH0K
KyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJMKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9maW5h
bFVSTDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1hTTFN0eWxlU2hlZXQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2Rl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgYm9vbCBl
bWJlZGRlZCk7Ci0gICAgWFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKKyAgICBY
U0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IFVSTCYgZmluYWxVUkwsIGJvb2wgZW1iZWRkZWQpOworICAgIFhTTFN0eWxlU2hlZXQo
WFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBj
b25zdCBVUkwmIGZpbmFsVVJMKTsKICAgICAKICAgICBOb2RlKiBtX293bmVyTm9kZTsKICAgICBT
dHJpbmcgbV9vcmlnaW5hbFVSTDsKLSAgICBLVVJMIG1fZmluYWxVUkw7CisgICAgVVJMIG1fZmlu
YWxVUkw7CiAgICAgYm9vbCBtX2lzRGlzYWJsZWQ7CiAKICAgICBWZWN0b3I8T3duUHRyPFhTTElt
cG9ydFJ1bGU+ID4gbV9jaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwCmluZGV4IDY3ZmYxZWI4OTZkMTRhM2VmNTA4OGYwZjdhOGZhZTJiYTk3NmZk
OTAuLmZlNzRlNDQ4ODU0YzhjN2U5NGVjNjNiYzk1ZmUwYTUxMjJiYmI0YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBT
T0ZUX0xJTksobGlieHNsdCwgeHNsdExvYWRTdHlsZXNoZWV0UEksIHhzbHRTdHlsZXNoZWV0UHRy
LCAoeG1sRG9jUHRyIGRvYyksIChkbwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVhTTFN0eWxl
U2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCitYU0xTdHlsZVNoZWV0OjpY
U0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgOiBtX293bmVyTm9kZSgwKQogICAg
ICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKICAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwp
CkBAIC02Nyw3ICs2Nyw3IEBAIFhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0
UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSCiB7CiB9CiAKLVhTTFN0
eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsICBib29sIGVtYmVkZGVkKQorWFNMU3R5
bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkKICAgICA6IG1f
b3duZXJOb2RlKHBhcmVudE5vZGUpCiAgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQog
ICAgICwgbV9maW5hbFVSTChmaW5hbFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNw
cAppbmRleCAwZDA3OTUyMTBmMzkzZTUxNmI3Mjk3ZWVmNjQwZTRmOTI5ZGJmYzIzLi5hZWJhOTQ1
NTg1MjA3NTdmNzQyNjI0ZDdmZjMzZThkYjcyMjFkMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCkBAIC03NiwxMCArNzYsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmMK
IAogICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0OwogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9
PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFt
ZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogS1VSTCgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/
IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOwogICAgICAgICB0cmFuc2Zvcm1UZXh0U3Ry
aW5nVG9YSFRNTERvY3VtZW50U3RyaW5nKGRvY3VtZW50U291cmNlKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1J
TUVUeXBlLCBmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDog
S1VSTCgpLCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25l
ckRvY3VtZW50LT51cmwoKSA6IFVSTCgpLCBmYWxzZSk7CiAKICAgICAvLyBCZWZvcmUgcGFyc2lu
Zywgd2UgbmVlZCB0byBzYXZlICYgZGV0YWNoIHRoZSBvbGQgZG9jdW1lbnQgYW5kIGdldCB0aGUg
bmV3IGRvY3VtZW50CiAgICAgLy8gaW4gcGxhY2UuIFdlIGhhdmUgdG8gZG8gdGhpcyBvbmx5IGlm
IHdlJ3JlIHJlbmRlcmluZyB0aGUgcmVzdWx0IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNmYwODQ5ZDdkMzk3OTlmOTBkNzVmMjJj
NDVkMDkwY2Y4NDEzMTJmNC4uZTk1MjRiZTUzNDczZWQ2OWJhMDczZmQ5MWUwZjVlM2ZlNTFiMmFm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MjAsNyArMTIwLDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKICAgICBjYXNlIFhTTFRfTE9BRF9ET0NVTUVOVDogewogICAgICAgICB4c2x0VHJh
bnNmb3JtQ29udGV4dFB0ciBjb250ZXh0ID0gKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7
CiAgICAgICAgIHhtbENoYXIqIGJhc2UgPSB4bWxOb2RlR2V0QmFzZShjb250ZXh0LT5kb2N1bWVu
dC0+ZG9jLCBjb250ZXh0LT5ub2RlKTsKLSAgICAgICAgS1VSTCB1cmwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CisgICAgICAgIFVSTCB1cmwoVVJMKFBhcnNlZFVSTFN0
cmluZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCAzMzg3MDkxNDJlZGU4Y2RjZTk0ODU4MTBjYTg3NjA5NGQyZGI0ZTli
Li5iMTg2MTY0MTZiNWNmY2ExMzhkYzg2NGYxM2Q2YThiZGJjZGZiNjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIHZvaWQgc3dpdGNoVG9VVEYxNih4bWxQYXJzZXJD
dHh0UHRyIGN0eHQpCiAgICAgeG1sU3dpdGNoRW5jb2RpbmcoY3R4dCwgQk9NSGlnaEJ5dGUgPT0g
MHhGRiA/IFhNTF9DSEFSX0VOQ09ESU5HX1VURjE2TEUgOiBYTUxfQ0hBUl9FTkNPRElOR19VVEYx
NkJFKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQoY29uc3QgS1VS
TCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKIApAQCAtNDUxLDcg
KzQ1MSw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgQVNT
RVJUKFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlcik7
CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQpOwogCi0g
ICAgS1VSTCB1cmwoS1VSTCgpLCB1cmkpOworICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKICAg
ICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHVybCkpCiAgICAgICAgIHJldHVybiAmZ2xv
YmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4KaW5kZXggODNiMzhjNDExMjExNmNmYWZjNWJlZjNmMjA4OTUzMDJlYTM0OTk5Yy4uYzFjN2Zm
NDZmMjA1MzA2MjY3YjE5MGYyNTU2OWYyYzNjNDFhMzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTM5Myw3ICszOTMsNyBAQCBFWFBPUlRTCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9hZGRBdXRob3JTaGVldEBEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFBRVhWPyRQYXNzUmVmUHRyQFZTdHlsZVNoZWV0Q29udGVu
dHNAV2ViQ29yZUBAQFdURkBAQFosID9hZGRBdXRob3JTaGVldEBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFzc1JlZlB0ckBWU3R5bGVTaGVldENvbnRlbnRz
QFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGFyc2VTdHJp
bmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQFFBRV9OQUJWU3RyaW5nQFdURkBAQFosID9w
YXJzZVN0cmluZ0BTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUVBQV9OQUVCVlN0cmluZ0BX
VEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZW1wdHlTdHJpbmdAV1RGQEBZQUFC
VlN0cmluZ0AxQFhaLCA/ZW1wdHlTdHJpbmdAV1RGQEBZQUFFQlZTdHJpbmdAMUBYWikKLSAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP2ludmFsaWRhdGVAS1VSTEBXZWJDb3JlQEBBQUVYWFosID9p
bnZhbGlkYXRlQEtVUkxAV2ViQ29yZUBAQUVBQVhYWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2ludmFsaWRhdGVAVVJMQFdlYkNvcmVAQEFBRVhYWiwgP2ludmFsaWRhdGVAVVJMQFdlYkNv
cmVAQEFFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/MFN0eWxlU2hlZXRDb250
ZW50c0BXZWJDb3JlQEBBQUVAUEFWU3R5bGVSdWxlSW1wb3J0QDFAQUJWU3RyaW5nQFdURkBAQUJV
Q1NTUGFyc2VyQ29udGV4dEAxQEBaLCA/PzBTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAQUVB
QUBQRUFWU3R5bGVSdWxlSW1wb3J0QDFAQUVCVlN0cmluZ0BXVEZAQEFFQlVDU1NQYXJzZXJDb250
ZXh0QDFAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9hZGRVc2VyU2hlZXRARG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0ckBWU3R5bGVT
aGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkVXNlclNoZWV0QERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUVBQVhWPyRQYXNzUmVmUHRyQFZTdHlsZVNoZWV0
Q29udGVudHNAV2ViQ29yZUBAQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/
MVN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVAWFosID8/MVN0eWxlU2hlZXRDb250ZW50
c0BXZWJDb3JlQEBRRUFBQFhaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJD
b29raWVKYXIuY3BwCmluZGV4IGIzYmE4ZjM3MmViM2RiMDAxMDdlYzYzODBiNGNkYWNiYmMwYmM4
MTguLjE5NDY4ODQ4MjkwMzMyOGU1NjJhOTliYzNmMzRkMzc4NGNlYWZhOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKQEAgLTIxLDcgKzIxLDcg
QEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzUs
NyArMzUsNyBAQCBXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcigpCiAKIHN0ZDo6dmVjdG9yPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+IFdlYkNvb2tpZUphcjo6Y29va2llcyhjb25zdCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB1cmwpCiB7Ci0gICAgS1VSTCBrdXJsID0gS1VS
TChLVVJMKCksIHVybCk7CisgICAgVVJMIGt1cmwgPSBVUkwoVVJMKCksIHVybCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiByYXdDb29raWVzOwogICAgIGNvb2tpZU1hbmFn
ZXIoKS5nZXRSYXdDb29raWVzKHJhd0Nvb2tpZXMsIGt1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMp
OwpAQCAtNDksNyArNDksNyBAQCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nPiBXZWJDb29raWVKYXI6OmNvb2tpZXMoY29uc3QgQmxhY2tCZXJyeQogCiB2b2lkIFdlYkNv
b2tpZUphcjo6c2V0Q29va2llcyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB1
cmwsIGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+JiBjb29r
aWVzKQogewotICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJs
ID0gVVJMKFVSTCgpLCB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IGNvcmVDb29raWVzOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkKICAgICAgICAgY29y
ZUNvb2tpZXMuYXBwZW5kKGNvb2tpZXNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwCmluZGV4IDJlNjM4ZTZlMTBmZGQxZWEyMDk0NTRm
Y2MxOWRmMzI2NWM2NWY1MDYuLjg3MjI4ZTExMzgxMmIwYThiMDZjYjE1OWRlY2NkMWZiMjRjOTQ1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENv
ZGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRDb2Rl
Yy5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJLaXRUZXh0Q29kZWMuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJUZXh0Q29kZWNJQ1UuaCIKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1T
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcAppbmRleCAwMGU2ODQwNDA4NTY4MmI5YzYxNmYwZDBhMGZiZjg2NjZh
YmIwNGRiLi40OTllZDBjYmEyOWZlM2I2ZmZhODJlNGIxYWJkYzczNDVjNGQyYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTIyNCwxMyArMjI0LDEzIEBA
IGNvbnN0IGRvdWJsZSBtYXhpbXVtSW1hZ2VEb2N1bWVudFpvb21Ub0ZpdFNjYWxlID0gMjsKIGNv
bnN0IGRvdWJsZSB6b29tRmFjdG9yRXBzaWxvbiA9IDAuMDAwMTsKIAogLy8gSGVscGVyIGZ1bmN0
aW9uIHRvIHBhcnNlIGEgVVJMIGFuZCBmaWxsIGluIG1pc3NpbmcgcGFydHMuCi1zdGF0aWMgS1VS
TCBwYXJzZVVybChjb25zdCBTdHJpbmcmIHVybCkKK3N0YXRpYyBVUkwgcGFyc2VVcmwoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyh1cmwpOwotICAgIEtVUkwga3Vy
bCA9IEtVUkwoS1VSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1
cmxTdHJpbmcpOwogICAgIGlmIChrdXJsLnByb3RvY29sKCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHVybFN0cmluZy5pbnNlcnQoImh0dHA6Ly8iLCAwKTsKLSAgICAgICAga3VybCA9IEtVUkwoS1VS
TCgpLCB1cmxTdHJpbmcpOworICAgICAgICBrdXJsID0gVVJMKFVSTCgpLCB1cmxTdHJpbmcpOwog
ICAgIH0KIAogICAgIHJldHVybiBrdXJsOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgV2ViUGFn
ZVByaXZhdGU6OmluaXQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGFnZUdy
b3VwTmFtZSkKIAogY2xhc3MgRGVmZXJyZWRUYXNrTG9hZE1hbnVhbFNjcmlwdDogcHVibGljIERl
ZmVycmVkVGFzazwmV2ViUGFnZVByaXZhdGU6Om1fd291bGRMb2FkTWFudWFsU2NyaXB0PiB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmZXJyZWRUYXNrTG9hZE1hbnVhbFNjcmlwdChXZWJQYWdl
UHJpdmF0ZSogd2ViUGFnZVByaXZhdGUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBleHBsaWNpdCBE
ZWZlcnJlZFRhc2tMb2FkTWFudWFsU2NyaXB0KFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlUHJpdmF0
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogRGVmZXJyZWRUYXNrVHlwZSh3ZWJQYWdlUHJp
dmF0ZSkKICAgICB7CiAgICAgICAgIHdlYlBhZ2VQcml2YXRlLT5tX2NhY2hlZE1hbnVhbFNjcmlw
dCA9IHVybDsKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkKGNv
bnN0IFBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYgbmV0UmVxLCBib29sIG5lZWRSZWZlcgogICAg
IH0gZWxzZQogICAgICAgICBtX21haW5GcmFtZS0+c2V0SW5WaWV3U291cmNlTW9kZShmYWxzZSk7
CiAKLSAgICBLVVJMIGt1cmwgPSBwYXJzZVVybCh1cmxTdHJpbmcpOworICAgIFVSTCBrdXJsID0g
cGFyc2VVcmwodXJsU3RyaW5nKTsKICAgICBpZiAocHJvdG9jb2xJcyhrdXJsLCAiamF2YXNjcmlw
dCIpKSB7CiAgICAgICAgIC8vIE5ldmVyIHJ1biBqYXZhc2NyaXB0IHdoaWxlIGxvYWRpbmcgaXMg
ZGVmZXJyZWQuCiAgICAgICAgIGlmIChtX3BhZ2UtPmRlZmVyc0xvYWRpbmcoKSkKQEAgLTczOSwx
NCArNzM5LDE0IEBAIHZvaWQgV2ViUGFnZTo6bG9hZChjb25zdCBQbGF0Zm9ybTo6TmV0d29ya1Jl
cXVlc3QmIHJlcXVlc3QsIGJvb2wgbmVlZFJlZmVyZXIpCiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6
OmxvYWRTdHJpbmcoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgc3RyaW5nLCBj
b25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBiYXNlVVJMLCBjb25zdCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgZmFpbGluZ1VSTCkKIHsKLSAgICBLVVJMIGt1cmwgPSBwYXJzZVVybChi
YXNlVVJMKTsKKyAgICBVUkwga3VybCA9IHBhcnNlVXJsKGJhc2VVUkwpOwogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KGt1cmwpOwogICAgIFdURjo6UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyCiAgICAgICAgID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RyaW5nLmNfc3RyKCksIHN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoYnVmZmVyLAog
ICAgICAgICBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKICAgICAg
ICAgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKLSAgICAgICAgIWZh
aWxpbmdVUkwuZW1wdHkoKSA/IHBhcnNlVXJsKGZhaWxpbmdVUkwpIDogS1VSTCgpKTsKKyAgICAg
ICAgIWZhaWxpbmdVUkwuZW1wdHkoKSA/IHBhcnNlVXJsKGZhaWxpbmdVUkwpIDogVVJMKCkpOwog
ICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJh
bWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAKQEAgLTg1OCwxNCArODU4LDE0IEBA
IGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3Qgc3Rk
Ojp3c3RyaW5nJiBzY3JpcHQsIEphdmFTCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgU3RyaW5nIHN0ciA9IFN0cmluZyhkYXRhLCBsZW5ndGhDb3BpZWQpOwotICAgIFNjcmlwdFNv
dXJjZUNvZGUgc291cmNlQ29kZShzdHIsIEtVUkwoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlKHN0ciwgVVJMKCkpOwogICAgIHJldHVybiBkLT5leGVjdXRlSmF2YVNjcmlwdElu
SXNvbGF0ZWRXb3JsZChzb3VyY2VDb2RlLCByZXR1cm5UeXBlLCByZXR1cm5WYWx1ZSk7CiB9CiAK
IGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgc2NyaXB0VVRGOCwgSmF2YVNjcmlwdERhdGFUeXBl
JiByZXR1cm5UeXBlLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiByZXR1cm5WYWx1ZSkK
IHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChzY3JpcHRVVEY4LmlzVXRmOCgpKTsKLSAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0VVRGOCwgS1VSTCgpKTsKKyAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0VVRGOCwgVVJMKCkpOwogICAgIHJldHVybiBkLT5l
eGVjdXRlSmF2YVNjcmlwdEluSXNvbGF0ZWRXb3JsZChzb3VyY2VDb2RlLCByZXR1cm5UeXBlLCBy
ZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTk5OCw3ICs5OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6UwogICAgIGlmIChzb3VyY2UtPmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEtVUkwgZGVzdGluYXRpb24oS1VSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgVVJMIGRl
c3RpbmF0aW9uKFVSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CiAgICAgU2VjdXJpdHlQb2xpY3k6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3Rv
Y29sKCksIGRlc3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwog
fQogCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybQogICAgIGlm
IChzb3VyY2UtPmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgZGVzdGlu
YXRpb24oS1VSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgVVJMIGRlc3RpbmF0aW9uKFVS
TCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CiAgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRl
c3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCkBAIC0y
MDY0LDcgKzIwNjQsNyBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjppc0FjdGl2ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2xpZW50LT5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2YXRl
OjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENyZWRlbnRp
YWwpCit2b2lkIFdlYlBhZ2VQcml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBV
UkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENy
ZWRlbnRpYWwmIGlucHV0Q3JlZGVudGlhbCkKIHsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZU1hbmFnZXIqIGF1dGhtZ3IgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3Rh
bmNlKCk7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyB1c2VybmFtZTsKQEAgLTIx
NTYsNyArMjE1Niw3IEBAIFBsYXRmb3JtOjpXZWJDb250ZXh0IFdlYlBhZ2VQcml2YXRlOjp3ZWJD
b250ZXh0KFRhcmdldERldGVjdGlvblN0cmF0ZWd5IHN0cmF0ZWd5CiAgICAgTm9kZSogbGlua05v
ZGUgPSBub2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKICAgICAvLyBTZXQg
bGluayB1cmwgb25seSB3aGVuIHRoZSBub2RlIGlzIGxpbmtlZCBpbWFnZSwgb3IgdGV4dCBpbnNp
ZGUgYW5jaG9yLiBQcmV2ZW50IENDTSBwb3B1cCB3aGVuIGxvbmcgcHJlc3Mgbm9uLWxpbmsgZWxl
bWVudChlZy4gYnV0dG9uKSBpbnNpZGUgYW4gYW5jaG9yLgogICAgIGlmIChsaW5rTm9kZSAmJiAo
bm9kZSA9PSBsaW5rTm9kZSB8fCBub2RlLT5pc1RleHROb2RlKCkgfHwgbm9kZUlzSW1hZ2UpKSB7
Ci0gICAgICAgIEtVUkwgaHJlZjsKKyAgICAgICAgVVJMIGhyZWY7CiAgICAgICAgIGlmIChsaW5r
Tm9kZS0+aXNMaW5rKCkgJiYgbGlua05vZGUtPmhhc0F0dHJpYnV0ZXMoKSkgewogICAgICAgICAg
ICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9FbGVtZW50KGxpbmtOb2RlKS0+
ZmluZEF0dHJpYnV0ZUJ5TmFtZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkKICAgICAgICAgICAgICAg
ICBocmVmID0gbGlua05vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUtPnZhbHVlKCkpKTsKQEAgLTQ4OTcsNyArNDg5
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6aW5pdFBvcHVwV2ViVmlldyhCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgZC0+bV9wYWdlUG9wdXAtPmluaXRpYWxpemUod2ViUGFn
ZSk7CiB9CiAKLVN0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRlcm5TdHJpbmdGb3JVcmwo
Y29uc3QgS1VSTCYgdXJsKSBjb25zdAorU3RyaW5nIFdlYlBhZ2VQcml2YXRlOjpmaW5kUGF0dGVy
blN0cmluZ0ZvclVybChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoKG1fd2ViU2V0
dGluZ3MtPnNob3VsZEhhbmRsZVBhdHRlcm5VcmxzKCkgJiYgcHJvdG9jb2xJcyh1cmwsICJwYXR0
ZXJuIikpCiAgICAgICAgIHx8IHByb3RvY29sSXModXJsLCAidGVsIikKQEAgLTU4NDEsNyArNTg0
MSw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFdlYlNldHRpbmdz
KiB3ZWJTZXR0aW5ncykKIAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgc3R5bGVz
aGVldFVSTCA9IHdlYlNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CiAgICAgaWYg
KCFzdHlsZXNoZWV0VVJMLmVtcHR5KCkpCi0gICAgICAgIGNvcmVTZXR0aW5ncy0+c2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihLVVJMKEtVUkwoKSwgc3R5bGVzaGVldFVSTCkpOworICAgICAgICBj
b3JlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBzdHlsZXNo
ZWV0VVJMKSk7CiAKICAgICBjb3JlU2V0dGluZ3MtPnNldEZpcnN0U2NoZWR1bGVkTGF5b3V0RGVs
YXkod2ViU2V0dGluZ3MtPmZpcnN0U2NoZWR1bGVkTGF5b3V0RGVsYXkoKSk7CiAgICAgY29yZVNl
dHRpbmdzLT5zZXRVc2VDYWNoZSh3ZWJTZXR0aW5ncy0+dXNlV2ViS2l0Q2FjaGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCBhN2U4M2YxMjBhMWI1MTc0
YmY4MWQxMmQ4NzFmMDY0ZWQ3YTg4YTViLi40N2NkOGVjNDBjNzE3Y2MyOTE0OWJiNDU4Yjc2OGE5
NGM0NzY3ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8RUdM
L2VnbC5oPgogI2VuZGlmCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlci5oIgogI2VuZGlmCkBAIC0yMTYsNyArMjE2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNob3dBbGVydERpYWxvZyhXZWJQYWdlQ2xpZW50
OjpBbGVydFR5cGUgYXR5cGUpOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5v
dGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJv
eHlDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIApAQCAtMzQ5LDcgKzM0
OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElmIHRoaXMgdXJsIHNob3VsZCBiZSBoYW5kbGVkIGFz
IGEgcGF0dGVybiwgcmV0dXJucyB0aGUgcGF0dGVybgogICAgIC8vIG90aGVyd2lzZSwgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgZmluZFBhdHRlcm5TdHJpbmdG
b3JVcmwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHN1c3BlbmRCYWNr
aW5nU3RvcmUoKTsKICAgICB2b2lkIHJlc3VtZUJhY2tpbmdTdG9yZSgpOwpAQCAtNjIxLDcgKzYy
MSw3IEBAIHB1YmxpYzoKICAgICBpbnQgbV9jYWNoZWRQb3B1cExpc3RTZWxlY3RlZEluZGV4Owog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbV9jYWNoZWREYXRlVGltZUlucHV0Owog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbV9jYWNoZWRDb2xvcklucHV0OwotICAg
IFdlYkNvcmU6OktVUkwgbV9jYWNoZWRNYW51YWxTY3JpcHQ7CisgICAgV2ViQ29yZTo6VVJMIG1f
Y2FjaGVkTWFudWFsU2NyaXB0OwogCiAgICAgY2xhc3MgRGVmZXJyZWRUYXNrQmFzZSB7CiAgICAg
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDMyMzkzYTdj
MzNkMmRmZjAzZjBjN2JmNmIyY2U5OGQ2ODE2YTM5YWYuLjcxYzcyZDg2ZWI5YTliNDMxMmExZjRj
NmI0ZDRmZGUzMWYyODI1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SWNvbi5oIgogI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFnZSogQ2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYKICAgICAvLyBCYWlsIG91dCBlYXJseSB3aGVuIHdlIGFyZW4ndCBhbGxvd2Vk
IHRvIGRpc3BsYXkgdGhlIHRhcmdldCBvcmlnaW4sIG90aGVyd2lzZSwKICAgICAvLyBpdCB3b3Vs
ZCBiZSBoYXJtZnVsIGFuZCB0aGUgd2luZG93IHdvdWxkIGJlIHVzZWxlc3MuIFRoaXMgaXMgdGhl
IHNhbWUgY2hlY2sKICAgICAvLyBhcyB0aGUgb25lIGluIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVS
ZXF1ZXN0KCkuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsK
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJs
LnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNwcApp
bmRleCA0MTY5MGJkZmU3OTNhMWE5ZmUzZmZjYjQ5ZDcxYTljYTYzM2Y1MzE0Li43YTAwZGM0ZDIx
NTczMWE2OTg1ODk1YmE5M2JjMDUyZWY4MmYyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5j
cHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKaW5kZXggNTFkMTgxN2ExNzY3OTU0ZjEyMDc3NDhhYWY5ZTBhODJmYmQ5
OTI0Yy4uZDUwNzlkZmM4ZDY2YTQ5MzA5NGVmYzExNWQ0OGY3OTUyOGU1YjhiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGEuY3BwCmluZGV4IDhlM2RmNDBiYmM1YmFlNjAzOWM5NmZjZDhjZjAy
NDI1ZjA0NzU4YWIuLjYwYjdkY2MxZGM4YTYwZmJhNDRmY2NhN2IyYmYzZWZjZWQwMDhiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50
aWFsVHJhbnNmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgiCiAKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksOSArNDksOSBA
QCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQYXNzd29yZHMgPSAzOwogCiAv
LyBIZWxwZXIgbWV0aG9kIHRvIGNsZWFyIHVybCBvZiB1bm5lZWRlZCBwYXJ0cy4KLUtVUkwgc3Ry
aXBVUkwoY29uc3QgS1VSTCYgdXJsKQorVVJMIHN0cmlwVVJMKGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIEtVUkwgc3RyaXBwZWRVUkwgPSB1cmw7CisgICAgVVJMIHN0cmlwcGVkVVJMID0gdXJsOwog
ICAgIHN0cmlwcGVkVVJMLnNldFVzZXIoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFBh
c3MoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTc4
LDEzICs3OCwxMyBAQCBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9y
bURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGlzRgogICAgIEFTU0VSVChmb3JtKTsK
IAogICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgVVJMCi0gICAgS1VSTCBmdWxsT3JpZ2luKFBhcnNl
ZFVSTFN0cmluZywgZm9ybS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKSk7CisgICAgVVJMIGZ1
bGxPcmlnaW4oUGFyc2VkVVJMU3RyaW5nLCBmb3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgp
KTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2Fub25pY2FsIGFjdGlvbiBVUkwKICAgICBTdHJp
bmcgYWN0aW9uID0gZm9ybS0+YWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKICAg
ICAgICAgYWN0aW9uID0gIiI7IC8vIG1pc3NpbmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMg
Y3VycmVudCBVUkwKLSAgICBLVVJMIGZ1bGxBY3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChhY3Rpb24pOworICAgIFVSTCBmdWxsQWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoYWN0aW9uKTsKICAgICBpZiAoIWZ1bGxBY3Rpb24uaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTk1LDcgKzk1LDcgQEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6
OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YK
ICAgICBpZiAoIWlzRm9yU2F2aW5nICYmIG1fb2xkUGFzc3dvcmRFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IHN0cmlwVVJMKGZ1bGxPcmlnaW4pOworICAgIFVSTCB1
cmwgPSBzdHJpcFVSTChmdWxsT3JpZ2luKTsKICAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxB
Y3Rpb24pOwogICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0
KCksIHVybC5wb3J0KCksIFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFAsICJGb3JtIiwgUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1MRm9ybSk7CiAgICAgbV9jcmVkZW50aWFs
ID0gQ3JlZGVudGlhbChtX3VzZXJOYW1lRWxlbWVudC0+dmFsdWUoKSwgbV9wYXNzd29yZEVsZW1l
bnQtPnZhbHVlKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YS5oCmluZGV4IDZkZWU3ZWRiZjFmYzliN2M0MzQ0N2IzY2Y0OTU2
YTVhYjU3NmEwYmIuLjIwYWY1ODc1ZjEyMmZhNjFlMzFkMmRjM2FiYzA0YjE4ZjI4YzVhODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50
aWFsVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5j
bHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBmaW5kUGFzc3dvcmRGb3Jt
RmllbGRzKGNvbnN0IEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJvb2wgbG9jYXRlU3BlY2lmaWNQ
YXNzd29yZHMoY29uc3QgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRzKTsKIAot
ICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9uOwogICAgIFByb3RlY3Rpb25TcGFj
ZSBtX3Byb3RlY3Rpb25TcGFjZTsKICAgICBtdXRhYmxlIENyZWRlbnRpYWwgbV9jcmVkZW50aWFs
OwogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX3VzZXJOYW1lRWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggODM4NTg4MDBiN2Mx
YWJjZGMxZmU4NjI2NzBmODIyZDc1MDg4NGFkZi4uZGJjYmE1NzNmNTRjYjcwMmY5YzIzMDVhYzcz
NDdmNDdjNTc1NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgbV9jbGllbnRSZWRpcmVj
dElzUGVuZGluZyA9IGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUs
IGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCiAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZERpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdCgpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVAK
IHsKICAgICBQb2xpY3lBY3Rpb24gZGVjaXNpb24gPSBQb2xpY3lJZ25vcmU7CiAKLSAgICBjb25z
dCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBGcmFnbWVudCBz
Y3JvbGxzIG9uIHRoZSBzYW1lIHBhZ2Ugc2hvdWxkIGFsd2F5cyBiZSBoYW5kbGVkIGludGVybmFs
bHkuCiAgICAgICAgIC8vIChPbmx5IGNvdW50IGFzIGEgZnJhZ21lbnQgc2Nyb2xsIGlmIHdlIGFy
ZSBzY3JvbGxpbmcgdG8gYSAjZnJhZ21lbnQgdXJsLCBub3QgYmFjayB0byB0aGUgdG9wLCBhbmQg
cmVsb2FkaW5nCiAgICAgICAgIC8vIHRoZSBzYW1lIHVybCBpcyBub3QgYSBmcmFnbWVudCBzY3Jv
bGwgZXZlbiBpZiBpdCBoYXMgYSAjZnJhZ21lbnQuKQotICAgICAgICBjb25zdCBLVVJMJiBjdXJy
ZW50VXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgICAgIGNvbnN0IFVSTCYg
Y3VycmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgICAgICBib29sIGlz
RnJhZ21lbnRTY3JvbGwgPSB1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgdXJsICE9IGN1
cnJlbnRVcmwgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjdXJyZW50VXJsLCB1
cmwpOwogICAgICAgICBkZWNpc2lvbiA9IGRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChyZXF1
ZXN0LCBpc0ZyYWdtZW50U2Nyb2xsKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIGJvb2wgRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25z
dCBTdHJpbmcmIG1pCiB9CiAKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAotICAgIEhU
TUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLAorICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJv
b2wgbG9hZE1hbnVhbGx5KQogewogICAgIFN0cmluZyBtaW1lVHlwZShtaW1lVHlwZUluKTsKQEAg
LTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAgICAgICBpZiAoIXNv
dXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEFsd2F5cyBpZ25vcmUgZXhpc3Rpbmcg
c3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KICAgICAgICAgICAgIFdURjo6UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNlLmlzOEJpdCgpID8gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3RlcnM4KCkpIDogc291cmNl
LmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHN1YnN0aXR1
dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4x
IiwgS1VSTCgpKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRl
RGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwgVVJMKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIH0KIAotU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQorU3Ry
aW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7
CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViU2V0dGluZ3MtPnVzZXJBZ2VudFN0
cmluZygpOwogfQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0CiAg
ICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIC8q
dGl0bGUqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiAvKnRpdGxlKi8sIGNv
bnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktpdCB0byB1cGRh
dGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAvLyBRdFdlYktp
dCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBpdCBldmVyIGRv
ZXMsCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yUGFnZSA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xp
ZW50LT5nZXRFcnJvclBhZ2UoZXJyb3IuZXJyb3JDb2RlKCksIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCksIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAgU3Vic3RpdHV0ZURhdGEgZXJyb3JE
YXRhKHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRtbCIsICJ1dGYtOCIsIEtVUkwoS1VS
TCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBlcnJvckRhdGEo
dXRmOEJ1ZmZlcihlcnJvclBhZ2UpLCAidGV4dC9odG1sIiwgInV0Zi04IiwgVVJMKFVSTCgpLCBl
cnJvci5mYWlsaW5nVVJMKCkpKTsKIAogICAgIC8vIExvYWRpbmcgdXNpbmcgU3Vic3RpdHV0ZURh
dGEgd2lsbCByZXBsYWNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggb3VyCiAgICAgLy8gZXJy
b3IgZGF0YS4gVGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZCwKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YQogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZQorUGFzc1JlZlB0
cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBpZiAoIW1fd2Vi
UGFnZVByaXZhdGUpCkBAIC04MTUsNyArODE1LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnMK
ICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmluZyBt
aW1lVHlwZSA9IG1pbWVUeXBlSW47CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIFBvbGljeUFjdGlvbiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChjb25zdCBSZXNvCiAgICAgLy8gYW5kIGV4cG9z
ZWQgdG8gY2xpZW50LiBCZWZvcmUgdGhhdCwgZG9uJ3QgcmV0dXJuIFBvbGljeUlnbm9yZSBzbyB3
ZSBjYW4gY29udGludWUgdG8KICAgICAvLyBjcmVhdGUgbmV3IHdpbmRvdyBhbmQgZ2V0IHRvIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigpIHdoZXJlIHRoZSBjbGllbnQK
ICAgICAvLyBpcyBnaXZlbiBhIGNoYW5jZSB0byBkZWNpZGUgaG93IHRvIGhhbmRsZSBwYXR0ZXJu
cyBzdWNoIGFzICdtYWlsdG86Jy4KLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgp
OworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBTdHJpbmcgcGF0dGVy
biA9IG1fd2ViUGFnZVByaXZhdGUtPmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKHVybCk7CiAgICAg
aWYgKCFwYXR0ZXJuLmlzRW1wdHkoKSkgewogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2Ns
aWVudC0+aGFuZGxlU3RyaW5nUGF0dGVybihwYXR0ZXJuLmNoYXJhY3RlcnMoKSwgcGF0dGVybi5s
ZW5ndGgoKSk7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlzcGF0Y2hEaWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzbwog
ICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlEaWRMb2FkRnJvbUFwcGxpY2F0
aW9uQ2FjaGUoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5OjpzZWN1cml0eU9yaWdpbkZvck5ld0RvY3VtZW50KGNvbnN0IEtVUkwm
IHVybCkKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICAvLyBXaGF0IHdlIGFyZSB0cnlpbmcgdG8gZG8gaGVyZSBpcyB0byBrZWVwIHVzaW5nIHRoZSBv
bGQgcGF0aCBhcyBvcmlnaW4gd2hlbiBhIGZpbGUtYmFzZWQgaHRtbCBwYWdlCiAgICAgLy8gY2hh
bmdlcyBpdHMgbG9jYXRpb24gdG8gc29tZSBodG1sIGluIGEgc3ViZm9sZGVyLiBUaGlzIHdpbGwg
YWxsb3cgc29tZSBmaWxlLWJhc2VkIGh0bWwgcGFja2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAzZWFhYWIzNTllYjc0MzZhMGNlM2QzYWY3ZGM1ZDRj
NTEzMDg3MDVlLi5iZmRhNmM4YmVmMzFhMTIwNGY3YzIwM2Q4MDgwOGRkZWI4MzI4NzUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91Ymxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFj
ZVN0YXRlV2l0aGluUGFnZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJM
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsVXBkYXRlQXBwbGljYXRpb25DYWNoZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkRnJvbUFw
cGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJy
b3IoZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJyb3IoZW1wdHlTdHJpbmco
KSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KQEAgLTEzMyw4ICsxMzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGlu
dCwgaW50KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1
Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBT
dHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lk
Z2V0Kik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KQEAgLTE1OSw3ICsxNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRJY29uRXh0ZXJuYWxseSgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShj
b25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmws
IGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFVSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKEljb25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCkBAIC0x
NjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRm9yTmV3RG9jdW1lbnQo
Y29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgcmVhZHlU
b1JlbmRlcihib29sIHBhZ2VJc1Zpc3VhbGx5Tm9uRW1wdHkpOwogCkBAIC0yMDMsOCArMjAzLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRGcmFtZUNyZWF0aW9uU3VwcHJlc3NlZDsKIAog
ICAgIC8vIFRoaXMgc2V0IGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBhbmQgZmluYWwgdXJscyBmb3Ig
c2VydmVyIHJlZGlyZWN0cy4KLSAgICBIYXNoU2V0PEtVUkw+IG1faGlzdG9yeU5hdmlnYXRpb25T
b3VyY2VVUkxzOwotICAgIEhhc2hTZXQ8S1VSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hp
c3RvcnlOYXZpZ2F0aW9uOworICAgIEhhc2hTZXQ8VVJMPiBtX2hpc3RvcnlOYXZpZ2F0aW9uU291
cmNlVVJMczsKKyAgICBIYXNoU2V0PFVSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hpc3Rv
cnlOYXZpZ2F0aW9uOwogCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0by4K
ICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeS5jcHAKaW5kZXggZGNmZWY2MDUzMGJmOWZkNTRkOTk0YWVlZWE5NWQx
NzRhYzE0ODJmNi4uNGE2MTJjZDU1MTVlNmNhNTA5ZjFlYmZlMDhiZGI0NmQ2MzdlNDIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtODEsMzIg
KzgxLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kK
LVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzQmxhY2tCZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVz
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8oY29u
c3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPgogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSog
cGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFn
ZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAg
ICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKaW5kZXggYzUxNTY0NWQyY2Q0OWM0ZTE2
N2MwYzJkZGQzZGY1ZDRlYTA3ZTJiOC4uZDI0NWZhNTUwY2Q2MGI2NTczMWYwNWNlMzk0Mzc3ZWFm
ZDVkOWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCkBA
IC00NywxMiArNDcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0
IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8v
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29y
ZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCmluZGV4IDZjOGVmOGE0
ZTZkOWRiNjlhOWM2ZTUyYzMzNmM3ZDNjNGQ0NzllZGEuLjRiYzU5OTVlMjAzNGM0ODU5MzQxNDUw
Y2ZhMWIyMmI4ZDdiNzQ3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvUGFnZVBvcHVwLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
IkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNS
ZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgUGFnZVBvcHVwOjp3cml0ZURvY3VtZW50
KERvY3VtZW50V3JpdGVyKiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKHdyaXRlcik7CiAgICAgd3Jp
dGVyLT5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7Ci0gICAgd3JpdGVyLT5iZWdpbihLVVJMKCkp
OworICAgIHdyaXRlci0+YmVnaW4oVVJMKCkpOwogCiAgICAgLy8gQWxsIHRoZSBwb3B1cHMgaGF2
ZSB0aGUgc2FtZSBodG1sIGhlYWQgYW5kIHRoZSBwYWdlIGNvbnRlbnQgc2hvdWxkIGJlIG5vbi16
b29tYWJsZS4KICAgICBTdHJpbmdCdWlsZGVyIHNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDA4NjczMmEx
ZDgzNDZjZWU4ZmZmMjBkNDM1MjlhMTRlNWM1ZWY5MWMuLjE1NjRmNzE4M2E2NzFiYzc3MjM2YzA1
N2UzYzIzMDczNWZiY2MyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUG9wdXBNZW51RWZsLmgiCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRFZmw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IGhpdCwgdW5zaWduZWQKICAgICAvLyBGSVhNRSwgY29tcGFyZSB3aXRoIG9sZCBsaW5rLCBsb29r
IGF0IFF0IGltcGwuCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGluaygpOwogICAgIGlm
IChpc0xpbmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7Cisg
ICAgICAgIFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAgICAgICAgICAgY29u
c3QgY2hhciogbGlua1syXTsKICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyOwpAQCAtMzc2
LDcgKzM3Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkCiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKCFpc0xpbmsgJiYgIW1faG92ZXJlZExpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KG1fdmlldyk7Ci0gICAgICAgIG1faG92ZXJl
ZExpbmtVUkwgPSBLVVJMKCk7CisgICAgICAgIG1faG92ZXJlZExpbmtVUkwgPSBVUkwoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgKaW5kZXggNmVkYmUzN2JkYTYzYWZhZGZkZTQ0Y2M2ZDExZWJmZjljYWVhYzBj
Yi4uODRhMzE5ZmRlNzcxNjY2NDA2ZWRmMzVjNGI1Y2Q4MGQzZDI2NjgxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTI1
LDcgKzI1LDcgQEAKICNkZWZpbmUgQ2hyb21lQ2xpZW50RWZsX2gKIAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJQb3B1cE1lbnUuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtMTg4LDcg
KzE4OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKLSAg
ICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CisgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5F
bGVtZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKaW5kZXggY2RlYTNlNDkwYzBkMjI4MTgx
NGFhOTM4MWE4ZjBmYjZkMmJhMjJjNi4uOTRiZTZjNzU0YWUzNzNkMWM3MTE4NTNhN2VlNTEzOTEz
Yjc0MTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q2xpZW50RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4dE1l
bnVDbGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBDb250ZXh0TWVudUNs
aWVudEVmbDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50RWZsLmgKaW5kZXggNzA4Mzc3ZmMwYmY4NzhmMTRhYTE1YzQwYTUwNDg0N2Uz
MmFmMjQ5My4uNWJlZjI5NjNmOWYxYWY2YTlmMjA2ZTg0NDQwMjZkYzZiZjVhNTgxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEVmbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0TWVudT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZXh0TWVudSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAg
ICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggZGMwYzI0MzM1MGU5NjI2Mzk4M2VkZDM0
NmYzMGZhMDZmYzEyZjc0MS4uOWVhNTFkMmJmZmVkYzRlNDFhYzNkYTY5ZjRlNTdlMWIwYzIzYjcx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0yMjEsMTMgKzIyMSwxMyBAQCBTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzdWl0YWJsZURSVEZyYW1lTmFtZShjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbQogICAgIHJldHVybiBTdHJpbmcoImZyYW1lIChhbm9ueW1vdXMp
Iik7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OktVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpw
cm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCitjb25zdCBXZWJDb3Jl
OjpVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92aXNpb25hbFVSTChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgZnJhbWUsIFdlYkNvcmU6OktVUkwoKSk7CisgICAgRFJUX1NVUFBPUlRfRlJB
TUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIFdlYkNvcmU6OlVSTCgpKTsKIAogICAg
IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIXByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKCk7Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpVUkwoKTsKIAogICAgIHJldHVybiBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT51cmwoKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclNjcmlwdChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgUwogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHBhZ2UpOwogCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgV2ViQ29yZTo6S1VSTCgpLAor
ICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoV2ViQ29yZTo6bWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OlVSTCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgcnVuQXRTdGFydCA/IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydCA6IFdlYkNv
cmU6OkluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6
OkluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbgogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHBhZ2UpOwogCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
V2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OktV
UkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7
CisgICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OlVSTCgpLCBWZWN0b3I8
U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJ
bkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIAogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyVXNlclN0eWxlU2hlZXRzKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRleCBjZWY3NmRjZGZkOGE4
OTllNmNhZTRmNWMwZjI3YTBlY2I0MWIyOGM2Li41OGNkNDgzZTE3ZmVjNzY1YWZiYWNmMDlhOGE5
NjJmMWQzMDU4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtMjIsNyArMjIsNyBAQAog
I2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmxfaAogI2RlZmluZSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxGaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPEludFJl
Y3QuaD4KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcmVzcG9u
c2VNaW1lVHlwZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBXZWJD
b3JlOjpJbnRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpOwogICAgIHN0YXRpYyBTdHJpbmcgc3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6S1VSTCBwcm92aXNp
b25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOworICAgIHN0YXRpYyBjb25zdCBX
ZWJDb3JlOjpVUkwgcHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdr
RnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCmluZGV4IDkxMTMyMjEzMzhiZTQzNjY0YjRiZmYxYzQwZGQ4MzRiM2Q2
MGQyOTUuLjc3N2IyMzAxMjQzNDE0NjYxZDdmOTg0ZmI5NGI3OWY1NWUyZjZhN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y3VzdG9tVXNlckFnZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9jdXN0b21Vc2Vy
QWdlbnQ7CiB9CiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0
IEtVUkwmKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjp1c2VyQWdlbnQoY29uc3QgVVJM
JikKIHsKICAgICBpZiAoIW1fY3VzdG9tVXNlckFnZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG1fY3VzdG9tVXNlckFnZW50OwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJy
ZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgJm1lc3NhZ2VzKTsKIAogICAgIGlmIChyZXF1ZXN0
LnVybCAhPSBvcmlnLnVybCkgewotICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoS1VSTChLVVJM
KCksIHJlcXVlc3QudXJsKSk7CisgICAgICAgIGNvcmVSZXF1ZXN0LnNldFVSTChVUkwoVVJMKCks
IHJlcXVlc3QudXJsKSk7CiAKICAgICAgICAgLy8gQ2FsbGluZyBjbGllbnQgbWlnaHQgaGF2ZSBj
aGFuZ2VkIG91ciB1cmwgcG9pbnRlci4KICAgICAgICAgLy8gRnJlZSB0aGUgbmV3IGFsbG9jYXRl
ZCBzdHJpbmcuCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAg
ICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIHBvbGljeSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
UGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAgICAgQVNTRVJUKG1fdmlldyk7CkBA
IC0zNjYsNyArMzY2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBp
bnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKK1Bhc3NSZWZQdHI8RnJh
bWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJn
aW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7
CiAgICAgQVNTRVJUKG1fdmlldyk7CkBAIC00MDYsMTQgKzQwNiwxNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkK
ICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsCitQYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgLypwYXJhbU5hbWVzKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKnBhcmFtVmFsdWVzKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
MDsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRFZmw6Om9iamVjdENv
bnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBz
aG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAg
Ly8gRklYTUU6IG9uY2UgcGx1Z2luIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhpcyBtZXRob2QgbmVl
ZHMgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgJ3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMn
IGZsYWcuIFNlZQogICAgIC8vIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29u
dGVudFR5cGUoKSBmb3IgYW4gZXhhbXBsZS4KQEAgLTU3NSwxMiArNTc1LDEyIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQogICAgIGV3a19m
cmFtZV9taXhlZF9jb250ZW50X2Rpc3BsYXllZF9zZXQobV9mcmFtZSwgdHJ1ZSk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiosIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKIHsKICAgICBld2tfZnJh
bWVfbWl4ZWRfY29udGVudF9ydW5fc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYgaW5zZWN1cmVVUkwsIGJv
b2wgZGlkQmxvY2tFbnRpcmVQYWdlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQog
ewogICAgIENTdHJpbmcgY3MgPSBpbnNlY3VyZVVSTC5zdHJpbmcoKS51dGY4KCk7CiAgICAgRXdr
X0ZyYW1lX1hzc19Ob3RpZmljYXRpb24geHNzSW5mbyA9IHsgY3MuZGF0YSgpLCBkaWRCbG9ja0Vu
dGlyZVBhZ2UgfTsKQEAgLTYzMCw3ICs2MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICBld2tfZnJhbWVfcmVkaXJl
Y3RfY2FuY2VsbGVkKG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUs
IGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgZXdr
X2ZyYW1lX3JlZGlyZWN0X3JlcXVlc3RlZChtX2ZyYW1lLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggMjI3MTI5NDg3OGI5NzE0N2U2NWM5MWI3M2EzZmMxMTY4
ZmFlNjg0Yy4uODQ3MDdiZTEzNjczZDcyMTJlNmM2OTlhMDJhMWU5Nzk3MWY3MzE4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91YmxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xv
c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwpAQCAtMTI4
LDEzICsxMjgsMTMgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVM
b2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWROb3RpZmljYXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWRO
b3RpZmljYXRpb24oKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Nj
cm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZSgpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBw
dWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9y
SWNvbk5vdGlmaWNhdGlvbihib29sKTsKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUg
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmlydHVhbCBPYmplY3RDb250
ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE1OSw4ICsxNTksOCBA
QCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSk7CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE4Nyw5ICsxODcsOSBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RG
OjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
OwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCmluZGV4IDQ5YWEzNTcxYmNkMDg2M2M0
MDNkODFhYzkxOTYwYzE4NTcyNDM2MzQuLjZiZTQ0NzhkMDkzYjE2OTRmMjBjZmZiMzNlZjFhMTY1
ZDUzMjNkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcApAQCAtODcsMzIgKzg3LDMyIEBAIFN0b3Jh
Z2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVTdG9yYWdlU3RyYXRlZ3ko
KQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdl
KiwgVmVjdG9yPFBsdWdpbkluZm8+JiBvdXRQbAogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBM
aW5rSGFzaCBoYXNoLCBjb25zdCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhh
c2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiB7CiAgICAgcmV0dXJuIHBhZ2Ut
Pmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggNzQ3
MGMyY2E2ZGIzYWNkNGZiYWNiZDk2YzFjOWU2MDE4ZDAyYWFjOS4uMzFiYWVjMjYzNzJiODU0ZTMw
ODY5MjI1MDFkOTZlM2JkMjA3OTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKQEAgLTQ4LDEyICs0OCwx
MiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSog
Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAg
ICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFn
ZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29s
IGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBmZmE3Mjg5Y2UxNWRkYTI5NTFmNTc0NzRjZTIwYjM4OGJkM2ExZWE4Li4yMjNlMDY4YjUxYmFh
ZjU3ZDg5Nzg4YTM3ODk1YWYxOTkwZjU2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmgiCkBAIC0zMzYsNyArMzM2LDcgQEAgRXZhc19PYmplY3QqIGV3a19mcmFt
ZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogbmFtZSkKIEVp
bmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNo
YXIqIHVyaSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwg
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOworICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNv
cmU6OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcShrdXJsKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS5s
b2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qoc21hcnREYXRhLT5mcmFtZSwgcmVxKSk7CiAK
QEAgLTQwMiwxMiArNDAyLDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50
c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHNtYXJ0RGF0CiAgICAgaWYgKCFi
YXNlVXJpKQogICAgICAgICBiYXNlVXJpID0gImFib3V0OmJsYW5rIjsKIAotICAgIFdlYkNvcmU6
OktVUkwgYmFzZUtVUkwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYmFz
ZVVyaSkpOwotICAgIFdlYkNvcmU6OktVUkwgdW5yZWFjaGFibGVLVVJMOworICAgIFdlYkNvcmU6
OlVSTCBiYXNlS1VSTChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGJhc2VV
cmkpKTsKKyAgICBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVLVVJMOwogICAgIGlmICh1bnJlYWNo
YWJsZVVyaSkKLSAgICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6S1VSTChXZWJDb3Jl
OjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVyaSkpOworICAgICAg
ICB1bnJlYWNoYWJsZUtVUkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVyaSkpOwogICAgIGVsc2UKLSAgICAgICAgdW5yZWFj
aGFibGVLVVJMID0gV2ViQ29yZTo6S1VSTCgpOworICAgICAgICB1bnJlYWNoYWJsZUtVUkwgPSBX
ZWJDb3JlOjpVUkwoKTsKIAogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMsIGNvbnRlbnRz
U2l6ZSk7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEKQEAgLTE2
OTAsNyArMTY5MCw3IEBAIEV3a19DZXJ0aWZpY2F0ZV9TdGF0dXMgZXdrX2ZyYW1lX2NlcnRpZmlj
YXRlX3N0YXR1c19nZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogCiAgICAgY29uc3QgV2ViQ29y
ZTo6RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCk7
CiAgICAgY29uc3QgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJh
bWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMIGRvY3Vt
ZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVlc3RVUkwoKTsKKyAgICBjb25zdCBXZWJDb3Jl
OjpVUkwgZG9jdW1lbnRVUkwgPSBkb2N1bWVudExvYWRlci0+cmVxdWVzdFVSTCgpOwogCiAgICAg
aWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKCJodHRwcyIpKQogICAgICAgICByZXR1cm4gRVdL
X0NFUlRJRklDQVRFX1NUQVRVU19OT19DRVJUSUZJQ0FURTsKQEAgLTE3NjMsNyArMTc2Myw3IEBA
IHZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpCiAgKgog
ICogQ3JlYXRlcyBwbHVnaW4uCiAgKi8KLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBEQkcoImV3a0ZyYW1lPSVwLCBzaXplPSVkeCVkLCBlbGVtZW50PSVwLCB1
cmw9JXMsIG1pbWVUeXBlPSVzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2
YXRlLmgKaW5kZXggYTE0NDZkZmVlNjQ2YzVjYzJkMWNmNTAwZmM3ZmM0NTA0NDQ2YjZmMi4uN2Q0
MTc2NmU5OWEzODFlM2UwMzNhZDllN2YzYTMyMGIwZTg4MjBkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRFZmw7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdpZGdldDsKQEAgLTc2LDcg
Kzc2LDcgQEAgYm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKIHZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpOwog
dm9pZCBld2tfZnJhbWVfaWNvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAKLVdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpOwogCiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0
aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAppbmRleCBkZDNiYTlmYTllYzgyYmJiZjcwM2Y5
NTU1NGY0ZDg3OGFhM2M4ZjNkLi45ZTRkNWE1NjdlNGMxZTc4OWRhODU4NmEwODhmZWQ2NjZhMDk3
MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3Bw
CkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
Y3VyaXR5X3BvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
IApAQCAtMjksNyArMjksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgZXdrX3Nl
Y3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3VyY2VVcmws
IGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uVXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQog
ewogICAgIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlVXJsKTsKLSAgICBjb25zdCBLVVJMIGRlc3RpbmF0
aW9uKEtVUkwoKSwgZGVzdGluYXRpb25VcmwpOworICAgIGNvbnN0IFVSTCBkZXN0aW5hdGlvbihV
UkwoKSwgZGVzdGluYXRpb25VcmwpOwogCiAgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRlc3Rp
bmF0aW9uLmhvc3QoKSwgYWxsb3dTdWJkb21haW5zKTsKIH0KQEAgLTM3LDcgKzM3LDcgQEAgdm9p
ZCBld2tfc2VjdXJpdHlfcG9saWN5X3doaXRlbGlzdF9vcmlnaW5fYWRkKGNvbnN0IGNoYXIqIHNv
dXJjZVVybCwgY29uc3QgY2hhcioKIHZvaWQgZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rf
b3JpZ2luX2RlbChjb25zdCBjaGFyKiBzb3VyY2VVcmwsIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9u
VXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQogewogICAgIGNvbnN0IFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291
cmNlVXJsKTsKLSAgICBjb25zdCBLVVJMIGRlc3RpbmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25V
cmwpOworICAgIGNvbnN0IFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVzdGluYXRpb25VcmwpOwog
CiAgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpz
b3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRlc3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dT
dWJkb21haW5zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXgg
NGFiMGFlNzcwMTcxNjQ0NGQyMWI1YmY2MDczZGUxMWJkZTdmMTBmOS4uZDVkMzE2NTNlYzM0YTk4
ZmJmYTI2MTlmYjY1MDk1ODUxZTJmODI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0
aW5ncy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX29yaWdpbl9jbGVh
cihjb25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odXJs
KTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBjb25zdCBXZWJDb3JlOjpVUkwga3VybChXZWJD
b3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFdlYkNvcmU6OlN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoa3VybCkuZ2V0KCkpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgY2Fpcm9f
c3VyZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNv
bnN0IGNoYXIqIHVybCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJs
LCAwKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChXZWJDb3JlOjpVUkwo
KSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25G
b3JQYWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CiAgICAg
aWYgKCFpY29uKQogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIsIHVybCk7CkBAIC0y
MjcsNyArMjI3LDcgQEAgRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2lj
b25fb2JqZWN0X2dldChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGMKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY2FudmFzLCAwKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChX
ZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJv
bm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUo
MTYsIDE2KSk7CiAKICAgICBpZiAoIXN1cmZhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IGEwZWY5YzUxYmU4OTA1ZWM4YjIzNjcwODBhN2YwYjNiYWVhYWE2ODMuLjc5OTZk
ZGE0NmUwYWI5OWU5YjgzMjA0ODIzZGZhZjkyZDM0OWY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAg
ICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gbmV3IEV3a19WaWV3X1ByaXZhdGVfRGF0
YTsKICAgICBtZW1zZXQocHJpdiwgMCwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOwog
ICAgIEF0b21pY1N0cmluZyBzdHJpbmc7Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmw7CisgICAgV2Vi
Q29yZTo6VVJMIHVybDsKIAogICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGll
bnRzOwogICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKQEAgLTE3MjgsNyArMTcyOCw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld192aXNpdGVkX2xpbmtfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBj
aGFyKiB2aXNpdGVkVXJsCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYt
PnBhZ2UsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+
cGFnZS0+Z3JvdXBQdHIoKSwgZmFsc2UpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNv
cmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZpc2l0ZWRVcmwpKTsKKyAgICBXZWJD
b3JlOjpVUkwga3VybChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZpc2l0
ZWRVcmwpKTsKICAgICBwcml2LT5wYWdlLT5ncm91cFB0cigpLT5hZGRWaXNpdGVkTGluayhrdXJs
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwNTUsNyArMjA1NSw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+
c2V0dGluZ3MudXNlclN0eWxlc2hlZXQsIHVyaSkpIHsKLSAgICAgICAgV2ViQ29yZTo6S1VSTCBr
dXJsKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICAgICAgV2Vi
Q29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJs
KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjYyLDcgKzM2NjIsNyBAQCB2b2lkIGV3
a192aWV3X2ZyYW1lX3JlY3RfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBfZXdr
X3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwogfQogCi1XVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
T2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJld2tWaWV3PSVwLCBmcmFtZT0lcCwg
c2l6ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIGV3
a1ZpZXcsIGZyYW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVs
ZW1lbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAzMTNl
ZjdjOTAyMDBkOWU3Y2FmMWQ5NWRlY2FhYjNmYzA3ZGQ4YmUxLi40NDVjMWRkYWUyYzYzM2EwZjFj
MjIxMDYzNDBhMDhiZTQ3ZGFjNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19w
cml2YXRlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3Jl
X3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAogdm9pZCBld2tfdmlld19m
cmFtZV9yZWN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogCi1XVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogdm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX25ldyhFdmFzX09iamVjdCogZXdrVmll
dywgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvTkVXUyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL05FV1MKaW5kZXggZWYzZjMxNDFiMWQzZmRkY2ZjYWI4NDgwYmVh
MzI0MjlkNGMzY2E3NC4uMmZjY2Y4MjdkNWY3NzRmY2E5MjkwYzI2MzZkMzE4OTU1NzY0Y2Y1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvTkVXUworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9ORVdTCkBAIC0zNDQsNyArMzQ0LDcgQEAgV2hhdCdzIG5ldyBpbiBXZWJLaXRHVEsrIDEuOS4z
PwogICAtIEZpeCBjdXJzb3IgdXNlZCBmb3IgbmUtcmVzaXplLgogICAtIEZpeCBjb250cmFjdGlv
bnMgcmVjb2duaXRpb24gYnkgdGhlIHNwZWxsIGNoZWNrZXIuCiAgIC0gRml4IGEgY3Jhc2ggcmVu
ZGVyaW5nIHNjcm9sbGJhcnMgb24gR1RLIHd4V2Via2l0LgotICAtIEZpeCBLVVJMOjpmaWxlU3lz
dGVtUGF0aCgpIGltcGxlbWVudGF0aW9uIHRvIHN0cmlwIHRoZSBxdWVyeSBwYXJ0CisgIC0gRml4
IFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBpbXBsZW1lbnRhdGlvbiB0byBzdHJpcCB0aGUgcXVlcnkg
cGFydAogICAgIG9mIHRoZSB1cmkuCiAgIC0gQ2hlY2sgZm9yIEdUSzIvR1RLMyBzeW1ib2wgbWlz
bWF0Y2ggZWFybGllciB0byBmaXggcGx1Z2lucyBydW4KICAgICB3aXRoIG5zcGx1Z2lud3JhcHBl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCmluZGV4IDFjMDk4NWFkZDhiZmY5ODE4OTFhY2FjNjc3ZmFhY2JhMzdlMDA5YTku
LmQ0MDllNWE5ZGU4NGQ5ZjFlNTZjMDllMDA3OTE2OTIyYTExNTliZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
NDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKQEAgLTc5OCw3ICs3
OTgsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNpZ25lZCBtbwogICAgIC8vIGNoZWNrIGlmIHRoZSBlbGVt
ZW50IGlzIGEgbGluay4uLgogICAgIGJvb2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAg
ICBpZiAoaXNMaW5rKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgp
OworICAgICAgICBVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAo
IXVybC5pc0VtcHR5KCkgJiYgdXJsICE9IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAg
IFRleHREaXJlY3Rpb24gZGlyOwogICAgICAgICAgICAgQ1N0cmluZyB0aXRsZVN0cmluZyA9IGhp
dC50aXRsZShkaXIpLnV0ZjgoKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIENocm9tZUNsaWVu
dDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNp
Z25lZCBtbwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghaXNMaW5rICYmICFtX2hvdmVyZWRM
aW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJW
aWV3LCAiaG92ZXJpbmctb3Zlci1saW5rIiwgMCwgMCk7Ci0gICAgICAgIG1faG92ZXJlZExpbmtV
UkwgPSBLVVJMKCk7CisgICAgICAgIG1faG92ZXJlZExpbmtVUkwgPSBVUkwoKTsKICAgICB9CiAK
ICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdC5pbm5lck5vblNoYXJlZE5vZGUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRl
eCBkMWIwYTU5ZTgyNzViZWFmZTdhZDUxODAzOTcxZWQ4Y2IzODlkM2Y0Li4yYTRhN2ViZWIyODVl
Y2UwYjFjMzI5MDQzZWE0ZDQ4N2Q3Y2IyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMjUsNyArMjUsNyBAQAogI2lu
Y2x1ZGUgIkd0a0FkanVzdG1lbnRXYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU2Vh
cmNoUG9wdXBNZW51LmgiCkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogICAgICAgICBH
dGtBZGp1c3RtZW50V2F0Y2hlciBtX2FkanVzdG1lbnRXYXRjaGVyOwotICAgICAgICBLVVJMIG1f
aG92ZXJlZExpbmtVUkw7CisgICAgICAgIFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogICAgICAgICB1
bnNpZ25lZCBpbnQgbV9jbG9zZVNvb25UaW1lcjsKIAogICAgICAgICBUaW1lciA8Q2hyb21lQ2xp
ZW50PiBtX2Rpc3BsYXlUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcAppbmRleCA0MTcwZjc3ZmY1MmIx
NzE5NTBhNTFjZjE1NTZiMWM5OTIxYjdmZTI5Li45ZWI3NWRlMDMxYjliOTQ4YmQwYjA5NjA4YWU2
ZThmNTVjZmY2NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIENv
bnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZXh0TQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4
dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1l
bnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmgKaW5kZXggZDY3NzRiNTgz
YzZmODk4OTVjZDRmN2VkZmRjYWEyOWFjNmZiZDQ2Mi4uNDU2YjgxOTJhMWJkZGQ4YjNhYWUzNmI1
MzVlMGIzMGJiMDU3ODkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYkNvcmU6OkNvbnRleHRNZW51
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRl
eCBkZGVkOGM0NjdmZmQ5ZTY5YzA4YzBlNTFhOThkZTExNWNiYWQzZTk2Li4wMzZlNjE5MjRmMGYy
NWI2YmFlMDk2NzM3NWUyZDkxYzU4MmRhYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRkVXNl
clNjcmlwdChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqCiAKICAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3Js
ZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgS1VSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLAorICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlw
dFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFVSTCgpLCBWZWN0
b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLAogICAgICAgICBydW5BdFN0YXJ0ID8gSW5q
ZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgYWxsRnJhbWVzID8gSW5q
ZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRkVXNlclN0eWxlU2hlZXQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaAogCiAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IGdldFZpZXdGcm9tRnJhbWUoZnJhbWUpOwogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdl
YlZpZXcpOwotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0
SW5Ub3BGcmFtZU9ubHkpOyAKKyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTdHlsZVNoZWV0VG9X
b3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgVVJMKCksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVz
IDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOyAKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5k
ZXggMWRjMjA3NjI1OTY3MzNjZWNjYTUzZWVkMjU5ODc3NmVmNWEzMzhkNy4uNDI1OTQ4ZDY2ZGQx
NzkwMjJjYTk0ODg1ZGU4YzA1MTg4NjYyZWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMTIw
LDcgKzEyMCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogfQog
CiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0
dGluZ3MoZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSk7CiAgICAgR093blB0cjxnY2hhcj4gdXNl
ckFnZW50U3RyaW5nKHdlYmtpdFdlYlNldHRpbmdzVXNlckFnZW50Rm9yVVJJKHNldHRpbmdzLCB1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIsCiAgICAgLy8gRmVlZCBhbnkgY2hhbmdlcyBiYWNrIGludG8gdGhlIFJl
c291cmNlUmVxdWVzdCBvYmplY3QuCiAgICAgU291cE1lc3NhZ2UqIG1lc3NhZ2UgPSB3ZWJraXRf
bmV0d29ya19yZXF1ZXN0X2dldF9tZXNzYWdlKG5ldHdvcmtSZXF1ZXN0LmdldCgpKTsKICAgICBp
ZiAoIW1lc3NhZ2UpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmtSZXF1ZXN0
LmdldCgpKSkpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShuZXR3b3JrUmVxdWVzdC5nZXQo
KSkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdAogICAgICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91
c2UobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICAvKiBDaGVj
ayBpZiB3ZSB3YW50IHRvIGVtYmVkIGEgR3RrV2lkZ2V0LCBmYWxsYmFjayB0byBwbHVnaW5zIGxh
dGVyICovCiAgICAgQ1N0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCkudXRmOCgpOwpAQCAt
NTE2LDcgKzUxNiw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUCiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CkBAIC01NTgsMTIgKzU1OCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpyZWRp
cmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9oYXNTZW50
UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICByZXR1
cm4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBlbGVtZW50LCBi
YXNlVVJMLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBs
ZXQiLCBmYWxzZSk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZy
YW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewog
ICAgIHJldHVybiBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKHVybCwgbWlt
ZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogfQpAQCAtNjczLDEyICs2NzMs
MTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2so
bV9mcmFtZSwgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpEaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50LCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNv
cmVPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSht
X2ZyYW1lLCAiaW5zZWN1cmUtY29udGVudC1ydW4iLCBraXQoY29yZU9yaWdpbiksIHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiB7CiAgICAgaWYgKCFEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSB8fCAhRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTcz
MSw3ICs3MzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2Fk
RXZlbnRDYWxsYmFjayhtX2ZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRpZENhbmNl
bENsaWVudFJlZGlyZWN0LCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3Vi
bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGlmICghRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkgfHwgIUR1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6c19mcmFtZUxvYWRFdmVudENhbGxiYWNrKQogICAgICAgICBy
ZXR1cm47CkBAIC05NzIsNyArOTcyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IG1fZnJhbWUtPnByaXY7CiAg
ICAgZ19mcmVlKGZyYW1lRGF0YS0+dGl0bGUpOwpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgY2hhciogdXJp
ID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJpKHdlYlJlc291cmNlKTsKLSAgICBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjb3JlUmVzb3VyY2UobG9hZGVyLT5zdWJyZXNvdXJjZShLVVJMKEtV
UkwoKSwgdXJpKSkpOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVSZXNvdXJjZShs
b2FkZXItPnN1YnJlc291cmNlKFVSTChVUkwoKSwgdXJpKSkpOwogCiAgICAgLy8gSWYgY29yZVJl
c291cmNlIGlzIE5VTEwgaGVyZSwgdGhlIHJlc291cmNlIGZhaWxlZCB0byBsb2FkLAogICAgIC8v
IHVubGVzcyBpdCdzIHRoZSBtYWluIHJlc291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKaW5kZXggYzc4Mjky
ZmI1YTc1ZWRiNWY4OTViNzMwZmE2YTU2MDc5ZmM2MWQ3OS4uN2I4MmUxMjVhODhkMzk3MTE0YzU5
Nzk0NmI4NDU3Y2ExOWM4ODY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC03Nyw3ICs3Nyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRv
dWJsZSwgZG91YmxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUsIGRvdWJsZSk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpOwpAQCAt
MTE1LDEyICsxMTUsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7CiAKLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJD
b3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCk7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6
OlN0cmluZyYsIGJvb2wpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0KikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0gICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZh
bHVlcyk7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNh
dGlvbihib29sKTsKIAotICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBl
IG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgICAg
IHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3Vs
ZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogCkBAIC0xNDYsOCArMTQ2LDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3Rv
cnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJD
b3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE3NCw5
ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKLSAgICAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRG
cmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKaW5kZXggZjll
ZDVhZDBkOTljZjc2OWNiYzBiN2M0ZTA1OTI5MGQwMmQ0MzI2OS4uYzZkMWEwYmEwNDcwODNlNjc4
NTZhZTljYWIxNWEzMmQ4ZGIzMGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCkBAIC04MSwzMiAr
ODEsMzIgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0ZWd5Ci1TdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNv
cmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3Ry
aW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFt
ZSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Omdl
dFBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbkluZm8+JgogfQogCiAv
LyBWaXNpdGVkTGlua1N0cmF0ZWd5Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6aXNMaW5r
VmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBLVVJMJiwgY29uc3QgQXRv
bWljU3RyaW5nJikKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
CiB7CiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0d0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmgKaW5kZXggYjVmMDc2MmU1MjQxMzMxNzI3MTlmMWFiOGVlY2Q0ODdiMDgxYzM0
Ni4uN2Y5ODI4NWE1ZGFmYTJhODYyNTA2ZjQ2Y2Q0ZGNjNmE2OTk1YmQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
R3RrLmgKQEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAg
Ly8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbklu
Zm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwog
CiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVS
TCk7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGlu
ayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmgKaW5kZXggMmMzMmYyYzlhNDlm
YzE2MGQzZmNiNjY5ZWNlZTgxM2M5NDE3YTEyNS4uMzdiOTc2Zjc1NWIzZTU2NTM3ZDJlYjNhYjNj
NzM5M2QzMmI2NzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0
VG9HQ2hhclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dD
aGFyUHJpdmF0ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIENvbnZlcnRUb0dDaGFyUHJp
dmF0ZV9oCiAjZGVmaW5lIENvbnZlcnRUb0dDaGFyUHJpdmF0ZV9oCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMzAsNyArMzAsNyBAQCBpbmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdURjo6
U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1pbmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdlYkNvcmU6OktVUkwgY29uc3QmIHMpCitp
bmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdlYkNvcmU6OlVSTCBjb25zdCYgcykKIHsKICAgICBy
ZXR1cm4gY29weUFzR2NoYXIocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvd25sb2FkLmNwcAppbmRleCBkMmQ1NTk3YTViMjg5MzQwM2JjOTJjNjBmZGY2
MDAzNTAzMjFjN2Y1Li5jNzQ4YzY1ODFjZjM3ZjEyNmQxMDdlYmNlNjI0OGUzMTAyYTZhMzFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTYzNSw3
ICs2MzUsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X2Rvd25sb2FkX2dldF9zdWdnZXN0ZWRfZmls
ZW5hbWUoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKQogICAgIGlmIChwcml2LT5zdWdnZXN0ZWRG
aWxlbmFtZSkKICAgICAgICAgcmV0dXJuIHByaXYtPnN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAg
S1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHBy
aXYtPm5ldHdvcmtSZXF1ZXN0KSk7CisgICAgVVJMIHVybCA9IFVSTChVUkwoKSwgd2Via2l0X25l
dHdvcmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtSZXF1ZXN0KSk7CiAgICAgdXJsLnNl
dFF1ZXJ5KFN0cmluZygpKTsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAg
ICAgcHJpdi0+c3VnZ2VzdGVkRmlsZW5hbWUgPSBnX3N0cmR1cChkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IDc5NDM3
OWUxNmU5ZWNiYTNlZDgwMTQwNzY4MDM0YTA2ZTEzNzlkYTMuLmNiNDFlZGQ3ZjdiMWVhOTI2YzQ1
M2M4YjlmYWM4Y2RjOThhMGNmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9N
Tm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3
ZWJraXRnbG9iYWxzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5l
dHdvcmtyZXF1ZXN0LmNwcAppbmRleCA0OTk2ZGQ5ODExMTc2MmU5Y2M1NGE1NGRiMmJkOWNlZjVi
MGIxNWZhLi4zNmUyOGEwMGE1OGU2MGU3YmYxNWE1N2ZlY2Y1MTYyZjFkYjk0ZmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKQEAg
LTI2Niw3ICsyNjYsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29yZShXZWJLaXROZXR3
b3JrUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAoc291cE1lc3NhZ2UpCiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qoc291cE1lc3NhZ2UpOwogCi0gICAgV2ViQ29yZTo6
S1VSTCB1cmwgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRG
OCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpKTsKKyAgICBXZWJDb3Jl
OjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkpOwogICAgIHJldHVybiBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCmluZGV4IDA3OTIyYjA5ZjA3NzZlNzJk
MThkNWI1ZGQ2YTA1Y2Y3MjIyNTFhN2YuLmQyNzI1YmZjYTRhNDVhYTAzNjNhNTM0ZjdmNGExZTZi
ZjM1NTRjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJk
YXRhc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0
YXNvdXJjZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlckd0
ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnRHdGsuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJLaXRXZWJEYXRhU291cmNl
KiB3ZWJraXRfd2ViX2RhdGFfc291cmNlX25ld193aXRoX3JlcXVlc3QoV2ViS2l0TmV0d29ya1Jl
cXVlcwogCiAgICAgY29uc3QgZ2NoYXIqIHVyaSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0
X3VyaShyZXF1ZXN0KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgp
LCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJjZSogZGF0
YXNvdXJjZSA9IGtpdE5ldyhXZWJLaXQ6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVzb3VyY2VS
ZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpKSk7CiAKICAgICBXZWJLaXRXZWJEYXRhU291cmNlUHJp
dmF0ZSogcHJpdiA9IGRhdGFzb3VyY2UtPnByaXY7CkBAIC0zOTYsNyArMzk2LDcgQEAgY29uc3Qg
Z2NoYXIqIHdlYmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X3VucmVhY2hhYmxlX3VyaShXZWJLaXRX
ZWJEYXRhU291cmNlKiB3ZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0RBVEFfU09VUkNFKHdlYkRhdGFTb3VyY2UpLCBOVUxMKTsKIAogICAgIFdlYktpdFdlYkRhdGFT
b3VyY2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YVNvdXJjZS0+cHJpdjsKLSAgICBjb25zdCBLVVJM
JiB1bnJlYWNoYWJsZVVSTCA9IHByaXYtPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OwogCiAgICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE5V
TEw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCA2
ZDFmOTQ0MmRjMDZhYmUxZTZjOWMxOTY4YmQ0NGY1MmRlNGY2MmFkLi43MzU3M2RmN2M2YWUyNjMy
ODU0NjExOWU5ZjdjMmM5ZmY2NmEwMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJh
bWVfbG9hZF91cmkoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdXJpKQogICAg
IGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChLVVJM
KEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChVUkwo
VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIq
IGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBj
b25zdCBnY2hhciogYmFzZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQpAQCAtNjg0
LDcgKzY4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoZnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwogCi0gICAgS1VSTCBiYXNl
S1VSTCA9IGJhc2VVUkwgPyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSkg
OiBibGFua1VSTCgpOworICAgIFVSTCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgoYmFzZVVSTCkpIDogYmxhbmtVUkwoKTsKIAogICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KGJhc2VLVVJMKTsKIApAQCAtNjkyLDggKzY5Miw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Z2NoYXIqIGNvbnRlCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVm
ZmVyLnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlw
ZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9o
dG1sIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJp
bmc6OmZyb21VVEY4KGVuY29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVU
RjgodW5yZWFjaGFibGVVUkwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBL
VVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5y
ZWFjaGFibGVVUkwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSk7CiAKICAgICBjb3JlRnJhbWUt
PmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
Ymhpc3RvcnlpdGVtLmNwcAppbmRleCA1YjdkYjIyMjM1NDllMzZhOGI0MGJiNTE5OTAzOGM4OGJh
NGRmNzU1Li4yZjI1MDkyMTQyMDMzNWRmMjdiNTEwMTFjOGQ4OTIyZjhjNGRlNTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKQEAg
LTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiAjaW5j
bHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJo
aXN0b3J5aXRlbXByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0yOTgsNyArMjk4LDcg
QEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRo
X2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwgY28KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfV0VCX0hJU1RPUllfSVRFTSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
UHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgV2ViQ29yZTo6S1VS
TCBoaXN0b3J5VXJpKFdlYkNvcmU6OktVUkwoKSwgdXJpKTsKKyAgICBXZWJDb3JlOjpVUkwgaGlz
dG9yeVVyaShXZWJDb3JlOjpVUkwoKSwgdXJpKTsKICAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0
bGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4gaXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVy
aSwgaGlzdG9yeVRpdGxlLCAwKTsKICAgICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFz
ZSgpLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJyZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVz
b3VyY2UuY3BwCmluZGV4IDZmYWMzN2JmNmNlM2M0ODE2N2E3ZGNhMTQ4YWEzZDg2MDM2YzYxZjUu
LjQ1Zjg3ODJhZTE1MjMwOTczNWM3MTc5NDgzZjVmNWIzMDgxYzM3N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmNwcApAQCAtMjEsNyArMjEsNyBA
QAogI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlLmgiCiAKICNpbmNsdWRlICJBcmNoaXZlUmVz
b3VyY2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAid2Via2l0ZW51bXR5cGVzLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJLaXRXZWJSZXNv
dXJjZSogd2Via2l0X3dlYl9yZXNvdXJjZV9uZXcoY29uc3QgZ2NoYXIqIGRhdGEsCiAgICAgICAg
IHNpemUgPSBzdHJsZW4oZGF0YSk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICBXZWJLaXRXZWJSZXNvdXJj
ZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3Vy
Y2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBLVVJMKEtVUkwoKSwgU3RyaW5nOjpm
cm9tVVRGOCh1cmkpKSwgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIFN0cmluZzo6ZnJvbVVU
RjgoZW5jb2RpbmcpLCBTdHJpbmc6OmZyb21VVEY4KGZyYW1lTmFtZSkpKTsKKyAgICBXZWJLaXRX
ZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2Nv
cmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgodXJpKSksIFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpLCBTdHJpbmc6
OmZyb21VVEY4KGVuY29kaW5nKSwgU3RyaW5nOjpmcm9tVVRGOChmcmFtZU5hbWUpKSk7CiAKICAg
ICByZXR1cm4gd2ViUmVzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyMmNlNmJiMzYzN2NlMDBhZmJjZGJhMGJhNDI2NWEy
NDc1Y2E3ZWFkLi5hZWVhM2YzNmEwMGI0NmY3NGIwNTE2M2VkMDZmM2U3OWY3YWE2MTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvci5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRHdGsuaCIKICNpbmNsdWRl
ICJ3ZWJraXRlbnVtdHlwZXMuaCIKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHN0YXRpYyBib29sIGlz
R29vZ2xlRG9tYWluKFN0cmluZyBob3N0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRm9yIEdvb2dsZSBkb21h
aW5zLCBkcm9wIHRoZSBicm93c2VyJ3MgY3VzdG9tIFVzZXIgQWdlbnQgc3RyaW5nLCBhbmQgdXNl
IHRoZQogICAgIC8vIHN0YW5kYXJkIENocm9tZSBvbmUsIHNvIHRoZXkgZG9uJ3QgZ2l2ZSB1cyBh
IGJyb2tlbiBleHBlcmllbmNlLgpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgc3RhdGljIFN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQogY2hhciogd2Via2l0V2ViU2V0dGluZ3NV
c2VyQWdlbnRGb3JVUkkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzLCBjb25zdCBjaGFy
KiB1cmkpCiB7CiAgICAgaWYgKHdlYlNldHRpbmdzLT5wcml2LT5lbmFibGVTaXRlU3BlY2lmaWNR
dWlya3MpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9IHVzZXJBZ2VudEZvclVS
TChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7
CisgICAgICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmcgPSB1c2VyQWdlbnRGb3JVUkwoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKTsKICAgICAgICAg
aWYgKCF1c2VyQWdlbnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGdfc3Ry
ZHVwKHVzZXJBZ2VudFN0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYzcxMmM5YWRjYjYxMDNlMGNkYjBj
MmY4MTQ3YTJmOTM1MDc1NGMyZi4uOWY4OTllOTI5M2RmYzNlYWRkNDQwMWQ5ZTc5ZWEwZDA3YTYy
MTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAt
MzUzOCw3ICszNTM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0
aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy5zZXRTY3JpcHRF
bmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlU2NyaXB0cyk7CiAgICAgY29yZVNldHRpbmdz
LnNldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUGx1Z2lucyk7CiAgICAg
Y29yZVNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShzZXR0aW5nc1ByaXZhdGUtPnJl
c2l6YWJsZVRleHRBcmVhcyk7Ci0gICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oS1VSTChLVVJMKCksIHNldHRpbmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRVUkkuZGF0
YSgpKSk7CisgICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVS
TCgpLCBzZXR0aW5nc1ByaXZhdGUtPnVzZXJTdHlsZXNoZWV0VVJJLmRhdGEoKSkpOwogICAgIGNv
cmVTZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5h
YmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBjb3JlU2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVByaXZhdGVCcm93c2luZyk7CiAgICAgY29y
ZVNldHRpbmdzLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxl
Q2FyZXRCcm93c2luZyk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywg
R1BhcgogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJyZXNpemFibGUtdGV4
dC1hcmVhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoZ192
YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJu
X3N0cmluZygidXNlci1zdHlsZXNoZWV0LXVyaSIpKQotICAgICAgICBzZXR0aW5ncy5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnZhbHVl
KSkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwo
KSwgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdf
aW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAgICAgICAgc2V0dGlu
Z3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtcHJpdmF0ZS1i
cm93c2luZyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0K
aW5kZXggY2NlYmEwYjZiMjBiNjhjYzEzYWUzMzVlZGZlNzJiZDFjYjJiODU4Ni4uODIyYWRhYTJj
NzU4YzhiZjc3MTE0YTlmMDc1NzVlYzk4YzBhNjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9I
aXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJXZWJU
eXBlc0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CkBAIC01MzUs
NyArNTM1LDcgQEAgLSAodm9pZClzZXRBbHdheXNBdHRlbXB0VG9Vc2VQYWdlQ2FjaGU6KEJPT0wp
ZmxhZwogLSAoTlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBj
b25zdCBLVVJMJiB1cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1
cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
Yk5TVVJMRXh0cmFzLm1tCmluZGV4IDBlYjNlYTMwZmRhOGI0MGEzNDFjYjM4YzdjNzMzZmYxYjQ3
ZjQ3YTEuLjA3NzEwMTUwZjQ1MzljYjAwZTZiOWNhOWVhYTc1MWEwNWYwOGY0MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2lt
cG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIK
ICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tV
UkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5T
VVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMjcsOSArMTI3LDkgQEAgLSAoTlNV
UkwgKilfd2Via2l0X2Nhbm9uaWNhbGl6ZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAg
ICAgCi0gICAgLy8gVGhpcyBhcHBsaWVzIE5TVVJMJ3MgY29uY2VwdCBvZiBjYW5vbmljYWxpemF0
aW9uLCBidXQgbm90IEtVUkwncyBjb25jZXB0LiBJdCB3b3VsZAorICAgIC8vIFRoaXMgYXBwbGll
cyBOU1VSTCdzIGNvbmNlcHQgb2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBVUkwncyBjb25j
ZXB0LiBJdCB3b3VsZAogICAgIC8vIG1ha2Ugc2Vuc2UgdG8gYXBwbHkgYm90aCwgYnV0IHdoZW4g
d2UgdHJpZWQgdGhhdCBpdCBjYXVzZWQgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbgotICAgIC8v
IChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0aGUgS1VS
TCBjb25jZXB0IGFuZCBub3QgdGhlIE5TVVJMCisgICAgLy8gKHNlZSA1MzE1OTI2KS4gSXQgbWln
aHQgbWFrZSBzZW5zZSB0byBhcHBseSBvbmx5IHRoZSBVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBO
U1VSTAogICAgIC8vIGNvbmNlcHQsIGJ1dCBpdCdzIHRvbyByaXNreSB0byBtYWtlIHRoYXQgY2hh
bmdlIGZvciBXZWJLaXQgMy4wLgogICAgIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCA9IFtjb25j
cmV0ZUNsYXNzIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TVVJM
ICpuZXdVUkwgPSBbbmV3UmVxdWVzdCBVUkxdOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KaW5kZXggODgzZjJlNmFlY2YxNTg2MjA0
MzhkOWEzZjNmYTNiZDFiYTI4YThhOC4uZTllZDVjYmViMjk1ZDA2ZGFhZDk2OTU3MjJhMzRmM2Vl
ZTU1NjY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW0KQEAgLTI0LDcgKzI0LDcgQEAKIAogI2ltcG9ydCAiV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmlu
ZGV4IGNmOWVjN2JlOWYzYjZlZTMxMzU5ODUyN2U2OGUyZjc5NjZjY2M3MjkuLmFiNDcyOTljMzY5
MjcwOGNjZDczZTI0NTFkZTBkZDMzOGRiM2ExZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KQEAgLTUzLDcgKzUzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpp
bmRleCA1ZGI4NDU3NDA3N2E5MzNjMmRmMmZkM2FiYjZiZWNjYmJmM2FiY2EwLi43NDI0OGE3MDk4
YTk4Nzg4NWM1NzYzMDVhNTlhNzlkMGNkYTc1NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC04NDcsNyAr
ODQ3LDcgQEAgLSAoQ1N0cmluZylyZXNvbHZlZFVSTFN0cmluZ0ZvclVSTDooY29uc3QgY2hhciop
dXJsIHRhcmdldDooY29uc3QgY2hhciopdGFyZ2V0CiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKICAgCi0gICAgS1VS
TCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxh
dGl2ZVVSTFN0cmluZyk7CisgICAgVVJMIGFic29sdXRlVVJMID0gdGFyZ2V0RnJhbWUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMU3RyaW5nKTsKICAgICByZXR1cm4gYWJzb2x1
dGVVUkwuc3RyaW5nKCkudXRmOCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMjBiZWVlMjQwZWU4ZGQxMTIx
ZTE0YmFiYzZmNjJkMTYzMGZkOTM3OS4uNjhhMjkzNjAxZjRmZDhiNjgyZTVlMTVhN2QxZGFlZDRl
NjJjNmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNh
bmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKLSAgICB2b2lk
IHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVl
c3RVUkwgPSByZXF1ZXN0VVJMOyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVlc3RVUkwgPSByZXF1ZXN0VVJMOyB9CiAKICAg
ICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0OwogCiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURhdGE+IG1fZGVsaXZlcnlEYXRhOwotICAgIFdlYkNvcmU6OktVUkwgbV9yZXF1
ZXN0VVJMOworICAgIFdlYkNvcmU6OlVSTCBtX3JlcXVlc3RVUkw7CiAgICAgUmV0YWluUHRyPE5T
VVJMPiBtX3Jlc3BvbnNlVVJMOwogICAgIENTdHJpbmcgbV9taW1lVHlwZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgKaW5kZXggZTUzNmYzYzI0YmU4N2Y3NmMyYmE5MzhjYzc5MDY5NDhiZDgxZjJkZi4uMDE1M2Ey
MzliYmNiOGEwNjJjOGI1MjJkYzcxYTBhNmE5ZjU3MDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TTXV0YWJsZUFycmF5KiBnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShX
ZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGM0Y2M2YzYwMmI0MThiZTFjYzczMTZiZjRi
YzE1YWRlZjk0MmQ5MzkuLmI4MzJlODgyMzY2OWViOTg0YzI0NGM5NWNkMzJjMTlhYjlkYzgyYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
QEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpCit2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBbbV93ZWJWaWV3IF9kb3dubG9hZFVSTDp1cmxdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
YWZmZjMwNjNiYmY1YjhmMWUzMGRkMjljMmEzNjQwZDkwMWM3YWVhMi4uNDI5ZjI1ZGUyMjAzYmYy
MzViNDFiNDYwYzY1ZjU4OGI3ZGM4MWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05MSw3ICs5MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBh
Z2UoKSBPVkVSUklERTsKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkBAIC0xNjYsNyArMTY2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwpAQCAt
MTkxLDI2ICsxOTEsMjYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgYmFzZVVSTCwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bVZhbHVlcykgT1ZFUlJJREU7CiAgICAgCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBX
VEY6OlN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVkaWFQbGF5ZXJQ
cm94eVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAj
ZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQqKSBPVkVSUklERTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZShjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICBS
ZXRhaW5QdHI8V2ViRnJhbWU+IG1fd2ViRnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMjIw
YjRkODg0ZTcwNDZmY2FhNWIwYjk0YmJlOWEwZGFlMGI4ZmUyZC4uYWZhYmYyMDRiNDBhMGFmZmUx
Y2E5YWU2ZGMyYTE3NzYzYTY4ZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKgogfQogI2VuZGlmCiAKLWJvb2wgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgS1VSTCYgaW1hZ2VVUkwp
IGNvbnN0Citib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdl
KGNvbnN0IFVSTCYgaW1hZ2VVUkwpIGNvbnN0CiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkK
ICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBXZWJG
cmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdl
YlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTk5
Miw3ICs5OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IEtVUkwmIGluc2VjdXJlVVJMKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgaW5zZWN1
cmVVUkwpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBp
bXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bnMod2ViVmlldyk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
SwogICAgIH0KIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2Vi
VmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTExOTIsNyArMTE5Miw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAg
ICAgCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIoRnJhbQogICAgIHJl
dHVybiBtX3BvbGljeUxpc3RlbmVyOwogfQogCi1TdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBBU1NFUlQod2ViVmlldyk7CkBAIC0xMzI4
LDcgKzEzMjgsNyBAQCBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25z
dCBLVVJMJiB1cmwpCiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIHdpdGggbmlsIGZv
ciB0aGUgV2ViVmlldyB1bmxlc3MgdGhlcmUgaXMgYSBidWcgc29tZXdoZXJlIGVsc2UuCiAgICAg
Ly8gQnV0IGlmIHdlIGRvLCBpdCdzIGJldHRlciB0byByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyB0
aGFuIGp1c3QgY3Jhc2hpbmcgb24gdGhlIHNwb3QuCiAgICAgLy8gTW9zdCBvdGhlciBjYWxsIHNp
dGVzIGFyZSB0b2xlcmFudCBvZiBuaWwgYmVjYXVzZSBvZiBPYmplY3RpdmUtQyBiZWhhdmlvciwg
YnV0IHRoaXMgb25lCi0gICAgLy8gaXMgbm90IGJlY2F1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBf
dXNlckFnZW50Rm9yVVJMIGlzIGEgY29uc3QgS1VSTCYuCisgICAgLy8gaXMgbm90IGJlY2F1c2Ug
dGhlIHJldHVybiB2YWx1ZSBvZiBfdXNlckFnZW50Rm9yVVJMIGlzIGEgY29uc3QgVVJMJi4KICAg
ICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC0xMzg5
LDcgKzEzODksNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBj
b25zdAogICAgIHJldHVybiBbW1ttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSByZXByZXNl
bnRhdGlvbl0gaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXV07CiB9
CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0xNDIzLDcgKzE0MjMsNyBA
QCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiAwOwogfQogCi1PYmplY3RDb250
ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAKQEAgLTE2NDEsNyArMTY0MSw3IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhU
TUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0xNzQ2LDkgKzE3NDYsOSBAQCBQYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiBzaXplLCBIVE1MUAogICAgIGlmIChlcnJvckNvZGUgJiYgbV93ZWJGcmFtZSkgewogICAgICAg
ICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25z
ID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcp
OwogICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5j
KSB7Ci0gICAgICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBhcmFtZXRlclZhbHVlKHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1Z2luc3BhZ2UiKSkpOworICAgICAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHBhcmFtZXRlclZhbHVlKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1
Z2luc3BhZ2UiKSkpOwogICAgICAgICAgICAgaWYgKCFwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gS1VSTCgpOwor
ICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkwgPSBVUkwoKTsKICAgICAgICAgICAgIE5TU3Ry
aW5nICpwbHVnaW5OYW1lID0gcGx1Z2luUGFja2FnZSA/IChOU1N0cmluZyAqKVtwbHVnaW5QYWNr
YWdlIHBsdWdpbkluZm9dLm5hbWUgOiBuaWw7CiAKICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCkBA
IC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERh
dGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogfQogICAgIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxBcHBsZXRF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiBiYXNlVVJMLCAKK1Bhc3NSZWZQdHI8V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiBzaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiBiYXNlVVJM
LCAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
QEAgLTE4NTUsNyArMTg1NSw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzCiB9CiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXpl
JiBzaXplLCBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsCitQYXNz
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJv
eHlQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4
IDJhNjZjMjk5NDVhMWI4MzFhMTliZmMyMTEyZDhjNGQ3YzRhYzA2NzQuLjIyZjIwZmVjNjVhNGRm
YmI5Nzc4ODhhY2VmZTdkOGI4ODNmNmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NywxMiAr
NTcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRl
Z3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNzgsNyArNzgs
NyBAQCBwcml2YXRlOgogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KIAog
ICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNM
aW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Uq
LCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
VEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKSBPVkVS
UklERTsKICAgICAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKQEAgLTk0LDcg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVl
TmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpL
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGQ4MTE0NDE1NzYyOTBlNmU1ZjM1NTM5ZDVkYjgxYzdjYzVmNjNjYmMuLjhl
ZWM1MWYwMjUzMGMzNWYwNDBjMWZiN2JlOWU0NjVjMzI4ZGQxODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTkyLDMyICs5MiwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlzOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbklu
Zm8+JgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLWJvb2wgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNv
bnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtW
aXNpdGVkKGhhc2gpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIENvbG9yIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpOyAgICAKIH0KIAotS1VS
TCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
dXJsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGI4M2JlMTZlNDdmZTgxYTFjMzE4MTYxZDkxODIyZjk5
ZDUyZmQ2NjcuLmExODAwNDU5NzlmY2IwMWNiY2ZiNTY1YzlkNDJkYjcxMzYyNjY4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3Jp
Z2luLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIgogI2ltcG9y
dCAiV2ViUXVvdGFNYW5hZ2VyLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCkBAIC00NCw3ICs0NCw3IEBAIC0gKGlk
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRl
VVJMXSkpOwogICAgIG9yaWdpbi0+cmVmKCk7CiAgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9j
YXN0PFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqPihvcmlnaW4uZ2V0KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYzVmMmMyNzQ3MGQ3ZDEw
OTAyMzQ0MGIxOTM0NjZjYjJhZDU0MzI3Zi4uODRmYWEyNDFjOTY0MThlNDlhZGRkNmYzZWM2NTc3
NTExM2M5MmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQpAQCAtNDksNyArNDksNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZl
ci5oPgpAQCAtMzEyLDcgKzMxMiw3IEBAIC0gKERPTUVsZW1lbnQgKilfaW1hZ2VFbGVtZW50V2l0
aEltYWdlUmVzb3VyY2U6KFdlYlJlc291cmNlICopcmVzb3VyY2UKIC8vIE1heSByZXR1cm4gbmls
IGlmIG5vdCBpbml0aWFsaXplZCB3aXRoIGEgVVJMLgogLSAoTlNVUkwgKilfVVJMCiB7Ci0gICAg
Y29uc3QgS1VSTCYgdXJsID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKKyAg
ICBjb25zdCBVUkwmIHVybCA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+dXJsKCk7CiAg
ICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHVy
bDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCAtIChOU1N0cmluZyAqKXBhZ2VUaXRsZQogCiAtIChOU1VS
TCAqKXVucmVhY2hhYmxlVVJMCiB7Ci0gICAgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVVUkwgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+dW5yZWFj
aGFibGVVUkwoKTsKICAgICBpZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IDhhZDlkZGE0M2E2NGI5NjkyZWYyZmNjZDljN2VkMWQ5MzJm
NTdkNTIuLjg1NDQyNzcxNzQ0MjZhZThmNWRkMWNiYmM3OGNjODBmMDU1NjI5ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTQxNyw3ICsxNDE3LDcgQEAgLSAodm9p
ZClfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
dGV4dEVuY29kaW5nTmFtZToKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBy
ZXR1cm4gW1tzZWxmIF93ZWJraXRfaW52b2tlT25NYWluVGhyZWFkXSBfbG9hZERhdGE6ZGF0YSBN
SU1FVHlwZTpNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOmVuY29kaW5nTmFtZSBiYXNlVVJMOmJh
c2VVUkwgdW5yZWFjaGFibGVVUkw6dW5yZWFjaGFibGVVUkxdOwogICAgIAotICAgIEtVUkwgcmVz
cG9uc2VVUkw7CisgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgIGlmICghYmFzZVVSTCkgewogICAg
ICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVV
bmlxdWVXZWJEYXRhVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCAwYjJhNjJkODE5OWJmZjc0ZTU3Yzg0N2IzN2YzYzk5NWFiYWQzYTUyLi5lNzZhNWRj
MTYzNzc3NDExMDRjYjkwNDA0YzIyOTU3MTg2ZjMzZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM2NzMsNyArMzY3Myw3IEBAIC0gKE5TQXJyYXkgKilu
YW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0
aW5hdGlvbgogICAgICAgICBpZiAoIXBhZ2UpIAogICAgICAgICAgICAgcmV0dXJuIG5pbDsgCiAg
ICAgICAgIAotICAgICAgICBjb25zdCBLVVJMJiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ2dpbmdJbWFnZVVSTCgpOworICAgICAgICBjb25zdCBVUkwmIGltYWdlVVJMID0g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2luZ0ltYWdlVVJMKCk7CiAgICAgICAgIEFTU0VS
VCghaW1hZ2VVUkwuaXNFbXB0eSgpKTsKICAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdl
VVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5kZXggYTBjYTg1
ZjkzODk2OWRiZmE4ZWIxNGQ5MjA0ODE2ZmNkN2JkYmY3Zi4uMWM5NTc2NmFkMTRhMTQyZDgyMmU0
NDk3MTI3ZGRhODdlODY2NTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbQpAQCAtNTYsNyArNTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KaW5kZXggYmIxMWNmY2I3NzYxOWI1MmM2MDVkZWI1MjZjODM0NmZmNTI5OGJiYy4u
MTk2MDQyYzg5ZjRmY2Q5NGU3MGFkNjIxYzU3ZTVhNzg0ODhjNmY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJM
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRp
YyBOU1VSTCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywg
cyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHMpOwogfQogCiBzdGF0aWMgV2Vi
RnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYTk2ZTAzYzdjZWY0ZTE5NTdmOWFlZmVlOTY0
NDFlMDM1YWQ2ODBmLi44Y2ZlN2ZmZjVmODEyYTU3N2IxMGU0OGM5Y2IwY2Y4ZWVhNzY0MTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02ODIsNyArNjgyLDcgQEAgLSh2
b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpv
dXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRD
b250ZW50cygpOwogICAgIGNvcmUoc2VsZiktPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQo
Y29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwKLSAgICAgICAgb3V0bG9va1F1aXJrc1Njcmlw
dENvbnRlbnRzLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIElu
amVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKKyAgICAgICAgb3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpOwogfQogCiBzdGF0
aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzI3MDgyOTQw
Nzk0YThjNGJhMDFmYmJmYmY1ZWZiNTMxYTc5Y2FlZC4uY2Q1NGYwNzI2OWQ1MWRlYTMyMzhiY2I1
OGU0Yzk4YWI3NjhiODllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSGlzdG9yeUl0ZW07Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKaW5kZXggOWQzZjNhYzRkODcwNDZiOWViMzc1
OTI1NWFkZWNiYTU4Mzc2YTI2OC4uYTdiYzgzZTU0YjViYTg0YmYyYTkyNzYyNDMxM2ViNmY1ZWJi
MDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgPFFXZWJQ
YWdlQWRhcHRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlw
dHdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAKaW5k
ZXggYWZlYjViYjJhMThlYTlhMzI4OGMwYjE5MTlhZGEzZTRiMzgwNTJhYy4uYzVhNWZiNDg3MjVm
ZDhjOWQ4ZjA3MWI2MGY1YmM2OWExN2EzOTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNjcmlwdHdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
c2NyaXB0d29ybGQuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAicXdlYnNjcmlwdHdv
cmxkLmgiCiAjaW5jbHVkZSAicXdlYnNjcmlwdHdvcmxkX3AuaCIKIAotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSA8UVN0cmluZ0xpc3Q+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZWN1cml0eW9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlv
cmlnaW4uY3BwCmluZGV4IDU4ZmU3OTUxOWIwZWIyOTdmZGRjZDlkMmJjOWNlMWE5YzU0YzQ1MWQu
LjZlOTM1MGZiZjUyNmQ3ZDM4MTVjYWUyNzAyOGYzZmRlZWE3MmEyNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1h
bmFnZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5UG9saWN5LmgiCkBAIC0yNzMsNyArMjczLDcgQEAgUVN0cmluZ0xpc3QgUVdlYlNl
Y3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKQogKi8KIFFXZWJTZWN1cml0eU9yaWdpbjo6UVdl
YlNlY3VyaXR5T3JpZ2luKGNvbnN0IFFVcmwmIHVybCkKIHsKLSAgICBkID0gbmV3IFFXZWJTZWN1
cml0eU9yaWdpblByaXZhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHVybCkpKTsKKyAg
ICBkID0gbmV3IFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwodXJsKSkpOwogfQogCiAvKiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CmluZGV4IGU3OTYzM2IxMjA0MDExNjQyZThhMDJiMzFkNGJlMjBmNzEzYWE5ZjEuLjcwN2IwNjU5
YWYzM2UwYWU3ZjZhY2M2ODBmYTc1Njc5ZjRhZWNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiSW5pdFdl
YkNvcmVRdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTIyNSw3ICsyMjUsNyBAQCB2
b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgc2V0dGluZ3MtPnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQodmFsdWUpOwogCiAgICAgICAgIFFVcmwgbG9jYXRpb24gPSAh
dXNlclN0eWxlU2hlZXRMb2NhdGlvbi5pc0VtcHR5KCkgPyB1c2VyU3R5bGVTaGVldExvY2F0aW9u
IDogZ2xvYmFsLT51c2VyU3R5bGVTaGVldExvY2F0aW9uOwotICAgICAgICBzZXR0aW5ncy0+c2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJDb3JlOjpLVVJMKGxvY2F0aW9uKSk7CisgICAgICAg
IHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFdlYkNvcmU6OlVSTChsb2NhdGlv
bikpOwogCiAgICAgICAgIFFTdHJpbmcgZW5jb2RpbmcgPSAhZGVmYXVsdFRleHRFbmNvZGluZy5p
c0VtcHR5KCkgPyBkZWZhdWx0VGV4dEVuY29kaW5nOiBnbG9iYWwtPmRlZmF1bHRUZXh0RW5jb2Rp
bmc7CiAgICAgICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShlbmNvZGlu
Zyk7CkBAIC03NDksNyArNzQ5LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFi
YXNlKCkKIFFJY29uIFFXZWJTZXR0aW5nczo6aWNvbkZvclVybChjb25zdCBRVXJsJiB1cmwpCiB7
CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwotICAgIFFQaXhtYXAqIGljb24g
PSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KFdlYkNvcmU6OktVUkwodXJsKS5zdHJpbmcoKSwKKyAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3Jl
OjpVUkwodXJsKS5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKICAgICBpZiAoIWljb24pCiAgICAgICAgIHJldHVybiBR
SWNvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5oCmluZGV4IDlkNWJhYWNhZTNlYTc1ODYxNGQ5NmIxYzgzYmE1YTI4NTI4MmUwOGIuLjI1
NDlmMmZmYmYyNjkxZmM4MmQyMDI5Y2MxZDFiNTg3ZjRiYzczMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTMxLDcgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJRdFBsYXRmb3Jt
UGx1Z2luLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBRV2ViRnVsbFNjcmVl
blZpZGVvSGFuZGxlciogY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwogCiAgICAgUVdl
YlBhZ2VBZGFwdGVyKiBtX3dlYlBhZ2U7Ci0gICAgS1VSTCBsYXN0SG92ZXJVUkw7CisgICAgVVJM
IGxhc3RIb3ZlclVSTDsKICAgICBTdHJpbmcgbGFzdEhvdmVyVGl0bGU7CiAgICAgU3RyaW5nIGxh
c3RIb3ZlckNvbnRlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCmluZGV4IDcyYTNkYmJkN2Y3ZTNjYTQzNGFi
Yzk5ZTU2OTEzZGNiZGU1NTc3YzEuLjA4OTc1YzFkN2EzMDY4MzVhNjMwMWRjZDFlNTNjM2E5MGZl
ZjMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudFF0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENvbnRleHRNZW51
Q2xpZW50UXQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0
IENvbnRleAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVDbGll
bnRRdDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYpCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6
OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0LmgKaW5kZXggZThlZmQyODJmYTIyY2I2Y2FkZjhjNTllOWJmYTUxMzhhNDY5N2Q4NS4uMjE5
MjFjNDEzODE5MzBiZmNkZmUxZjAyOWFlMzNiNTg5ZWQ4NDQ2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmgKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb250ZXh0TWVudT4g
Y3VzdG9taXplTWVudShQYXNzT3duUHRyPENvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRN
ZW51Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgS1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCmluZGV4IDk2MDA5MjJlNWM0ZDIyNjI2ZjlmNGY2MjI4M2FiZjBkYmY1NWI4OGIuLjI5
ZjVkYWFhMTU2YTc2ZTQ2NGEwMThlNTRjZjlmNzliODEwZDljOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCkBAIC03MzMsNyArNzMzLDcgQEAgUVVybCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
bWVkaWFDb250ZW50VXJsQnlFbGVtZW50SWQoUVdlYkZyYW1lQWRhcHRlciogYWRhcHQKIC8vIEFQ
SSBDYW5kaWRhdGU/CiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBbHRlcm5hdGVI
dG1sKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIGh0bWwsIGNvbnN0
IFFVcmwmIGJhc2VVcmwsIGNvbnN0IFFVcmwmIGZhaWxpbmdVcmwpCiB7Ci0gICAgS1VSTCBrdXJs
KGJhc2VVcmwpOworICAgIFVSTCBrdXJsKGJhc2VVcmwpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBj
b3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChrdXJsKTsKICAgICBjb25zdCBRQnl0ZUFycmF5IHV0ZjggPSBodG1sLnRvVXRmOCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKaW5kZXggMTk4MWZkMWJkYWU3ZDIyYjliMmFhNDU0ZDc1MzE3M2JhOTE3
NDQzYi4uMzRmYWVjMDcxNjFjNDJmYWQ0MDlmMTFmMTM1ZThiOTMyMWRhNTg1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIFFTdHJpbmcgZHJ0UHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlMVwiIikuYXJnKFFMYXRp
bjFTdHJpbmcoImZhbHNlIikpOwogfQogCi1zdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpLVVJMJiBrdXJsKQorc3RhdGljIFFT
dHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6
VVJMJiBrdXJsKQogewogICAgIGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc0xvY2FsRmls
ZSgpKQogICAgICAgICByZXR1cm4ga3VybC5zdHJpbmcoKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBV
UkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxi
YWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDogJXMgXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KG1fZnJhbWUpKSwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCh1cmwpKSk7CkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29u
c3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gVXNl
ZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0
b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBhY2NvbW9kYXRlIHRoaXMgb24gaGlz
dG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLApAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmCiB9CiAKIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJB
Z2VudChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFn
ZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICByZXR1
cm4gbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPnVzZXJBZ2VudEZvclVybCh1cmwpLnJlbW92ZShR
TGF0aW4xQ2hhcignXG4nKSkucmVtb3ZlKFFMYXRpbjFDaGFyKCdccicpKTsKQEAgLTgzNSw3ICs4
MzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRc
biIpOwpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGV0ZWN0
WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKICAgICAgICAgcHJpbnRmKCJkaWREZXRlY3RYU1NcbiIpOwpAQCAtMTE1Myw4ICsxMTUzLDgg
QEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXBhZ2UtPmVycm9yUGFnZUV4dGVu
c2lvbigmb3B0aW9uLCAmb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VS
TCBiYXNlVXJsKG91dHB1dC5iYXNlVXJsKTsKLSAgICBLVVJMIGZhaWxpbmdVcmwob3B0aW9uLnVy
bCk7CisgICAgVVJMIGJhc2VVcmwob3V0cHV0LmJhc2VVcmwpOworICAgIFVSTCBmYWlsaW5nVXJs
KG9wdGlvbi51cmwpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFz
ZVVybCk7CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdXRwdXQuY29udGVudC5jb25zdERhdGEoKSwg
b3V0cHV0LmNvbnRlbnQubGVuZ3RoKCkpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKICAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+ZW1pdERvd25sb2Fk
UmVxdWVzdGVkKHJlcXVlc3QudG9OZXR3b3JrUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS5uZXR3
b3JraW5nQ29udGV4dCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGlu
ZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIGlmICghbV93ZWJG
cmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZwogCiAgICAgLy8gRklYTUU6IFNldCBvdmVycmlkZSBlbmNvZGluZyBpZiB3
ZSBoYXZlIG9uZS4KIAotICAgIEtVUkwgdXJsVG9Mb2FkID0gdXJsOworICAgIFVSTCB1cmxUb0xv
YWQgPSB1cmw7CiAgICAgaWYgKHVybFRvTG9hZC5pc0VtcHR5KCkpCiAgICAgICAgIHVybFRvTG9h
ZCA9IGJsYW5rVVJMKCk7CiAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nCiAgICAgcmV0dXJuIGZyYW1lRGF0YS5mcmFtZS5yZWxlYXNlKCk7CiB9CiAKLU9iamVj
dENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUlu
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgLy8gcURlYnVnKCk8
PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnN0cmluZygpPDwiLCBtaW1lID0gIjw8
bWltZVR5cGVJbjsKICAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7CkBAIC0xNDYwLDcgKzE0
NjAsNyBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIC8vIHFE
ZWJ1ZygpPDwiLS0tLS0tIENyZWF0aW5nIHBsdWdpbiBpbiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVQbHVnaW4gZm9yICI8PHVybC5zdHJpbmcoKSA8PCBtaW1lVHlwZTsKICAgICAvLyBxRGVi
dWcoKTw8Ii0tLS0tLVx0IHVybCA9ICI8PHVybC5zdHJpbmcoKTsKQEAgLTE1NjMsNyArMTU2Myw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0
KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lk
Z2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICByZXR1cm4gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUs
IGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWph
dmEtYXBwbGV0IiwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDNlZGIzNjU2MmJkZTkxODFmYzhh
NWQyN2YyYWY3MGU1Y2IxZDU3OTkuLjRlNTZjODhiMzg0NGZiYjljY2FkMjMxODVmNTFjOWQwMjk5
M2ViN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3Jt
RWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgIldlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgiCkBAIC0xMDksNyArMTA5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJM
JiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSk7CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJik7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSop
OwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUo
V2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKQEAgLTIwNiwxNCArMjA2LDE0IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50Kiwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKKyAgICB2aXJ0dWFs
IE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCopOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0g
ICAgY29uc3QgS1VSTCYgbGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJl
cXVlc3RlZFVybDsgfQorICAgIGNvbnN0IFVSTCYgbGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFJlcXVlc3RlZFVybDsgfQogCiAgICAgUVdlYkZyYW1lQWRhcHRlciogd2Vi
RnJhbWUoKSBjb25zdDsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpbjsKIAotICAgIEtVUkwgbV9sYXN0UmVxdWVzdGVkVXJsOworICAgIFVSTCBtX2xhc3RS
ZXF1ZXN0ZWRVcmw7CiAgICAgYm9vbCBtX2lzT3JpZ2luYXRpbmdMb2FkOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0LmNwcAppbmRleCBlODlhMTQzYTkwMzk5MjgzNzMwZmYzOTYx
YTI1MmU5N2VlOWZkODc5Li5lNTdhNmEyNjczYzYwYTQ3YzE2M2QwNTg1NGYxZWJiMjgzMWZhZDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcApAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUVdlYlBh
Z2VBZGFwdGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCmluZGV4IGFmYjFhZGIyODdjNGU3OTkyMDdhY2Ew
ODYzMzA0ZjkyMDY1YjdjZTEuLmI0MWQyNmZiNmU3NDMyN2ZjN2NlNDE0MmM1ZTUyNzM0MWRkNTg5
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0xMDAsMzIgKzEwMCwzMiBAQCBWaXNpdGVkTGlua1N0
cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgp
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vz
c2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqIHBhZ2Us
IFZlY3RvcjxXZWJDbwogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5CiAKLWJvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCitib29s
IFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNo
IGhhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpCiB7CiAgICAgQVNTRVJUKGhhc2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKaW5kZXggZGFhYjI1OTJlMmEw
ZDFiMjViZWU0M2I0ZjlhZWI4YjEyNzhiMjI3NC4uOTc5MWU2NGY0MThiMDcyYzA5YmQ3MWZmYmYy
YjdkYjg0NzFhMDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaApAQCAtNTksMTIgKzU5LDEyIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVk
TGlua1N0cmF0ZWd5KCk7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVz
aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtT
dHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggNzYzM2JmNzhkYWNlMGFkYmRiYmJiODQxMDE2MTA1
MGQwZDVhYTQyNS4uZmY2OWJhZGZkNDhkYjBkZDhkNzZlYmIxNDU3YzRkYWExZjk2Y2RhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5nIFFXZWJGcmFtZUFkYXB0
ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRDb250
ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBjb25z
dCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJsKTsKKyAgICBVUkwga3Vy
bChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsK
ICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCkpOwog
ICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3NywxNyBAQCB2b2lkIFFX
ZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSwgY29uc3Qg
UVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGluZyA9IGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmcoYWN0dWFsTWltZVR5cGUp
LCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBlKSwgZW5jb2RpbmcsIFVS
TCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2b2lkIFFXZWJGcmFtZUFk
YXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVybCAmYmFzZVVybCkK
IHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwoYmFzZVVybCk7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVB
cnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmNvbnN0
RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiksIFdURjo6U3RyaW5nKCJ1
dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJpbmcoInV0Zi04Iiks
IFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1
ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC0zNzYsOCArMzc2
LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGNvbnN0IEZyYW1l
KiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1dGVVcmwoY29uc3Qg
UVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxk
IGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJMIGFuZCBiYWNrIHRvIHBy
ZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdo
dHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwpOworICAgIC8vIENvbnZl
cnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4
dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwgdmFsaWRhdGVkVXJsID0g
VVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlkKCkgfHwgIXZhbGlkYXRl
ZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRVcmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5k
ZXggZDI2NjUyNjYxYzIyNDhjYWVlMzYxMDc0ODBkOWI5MTM1YjU4NzEzZC4uNWFhOWJmNjYyNGZl
YmQ5ODA4MmQ2NWY4YzkyZDgzODJmMzUyZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMTA2OCw3ICsxMDY4LDcg
QEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVyOjpN
ZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9hZEZy
YW1lUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsICZmcmFt
ZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFsc2Us
IC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzogewotICAgICAgICBLVVJM
IHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCk7
CisgICAgICAgIFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJl
YWNoYWJsZVVSTCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVy
bCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICBvcGVu
TmV3V2luZG93KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBl
cnMuY3BwCmluZGV4IDM2MGY3YzI1NjkyZmNiODk5NWQzNWU1NWZhY2QyNTE2ZDgyOGMzZTIuLjQy
ZjZkMTliNDE3ZGMxNzBlODQ4ZGNiZWU1NWRmYzFiMmE1MzMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksMTIgKzM5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogQ0ZBcnJheUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFy
cmF5Q2FsbEJhY2tzID0gezAsIElVbmtub3duUmV0YWluQ2FsbGJhY2ssIElVbmtub3duUmVsZWFz
ZUNhbGxiYWNrLCAwLCAwfTsKIENGRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzIE1hcnNoYWxsaW5n
SGVscGVyczo6a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzID0gezAsIElVbmtub3du
UmV0YWluQ2FsbGJhY2ssIElVbmtub3duUmVsZWFzZUNhbGxiYWNrLCAwLCAwfTsKIAotS1VSTCBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwoQlNUUiB1cmxTdHIpCitVUkwgTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3RyKQogewotICAgIHJldHVybiBLVVJMKEtV
UkwoKSwgU3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKKyAgICByZXR1cm4g
VVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNTdHJpbmdMZW4odXJsU3RyKSkpOwogfQogCi1C
U1RSIE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihjb25zdCBLVVJMJiB1cmwpCitCU1RS
IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJl
dHVybiBCU3RyaW5nKHVybC5zdHJpbmcoKSkucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuaAppbmRleCBiMjEzZmI5MGZhZDExZGEwNmI0M2IzMmVjMGY1YTU5
MTg4YmQwODA4Li41MGUyYzY3NzBiNjJmNDczYmY3MGRkNTI1NmUyNzgxNWUyYmUzYTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaApAQCAtMzEsMTQgKzMxLDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwotICAgIGNsYXNzIEtVUkw7
CisgICAgY2xhc3MgVVJMOwogfQogCiBjbGFzcyBNYXJzaGFsbGluZ0hlbHBlcnMKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6S1VSTCBCU1RSVG9LVVJMKEJTVFIpOwotICAgIHN0YXRp
YyBCU1RSIEtVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHN0YXRpYyBXZWJD
b3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsKKyAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29u
c3QgV2ViQ29yZTo6VVJMJik7CiAgICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVD
RlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxl
Q0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7CiAgICAgc3RhdGljIENGVVJM
UmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGM3MzM3NzU4
OTUwN2JlNmI5ZTVhN2U1NDQ3N2Q5OGU4ZDg5ZjU2ZDIuLmEyYzNmMjcxZGIwZWE1Y2M2NGEzNWY3
MjU3ZGYyYjk3NjU2MDM5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0CiAgICAgdWlEZWxlZ2F0ZS0+Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQobV93ZWJWaWV3LCAmc2VsZWN0ZWRJdGVtLCBwcm9wZXJ0eUJhZy5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVy
bCkKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fd2ViVmlldy0+ZG93bmxvYWRVUkwodXJsKTsKIH0KQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZy
YW1lKiBmcmFtZSkKIAogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnVybFNlbGVj
dGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSwgMCwgZmFsc2UsIGZhbHNl
LCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LnVybFNlbGVjdGVkKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygpLCAwLCBmYWxz
ZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmlu
ZGV4IGVkNDFjNTlkMjRlZjc0NWY3MmFmMmFhMjNhMzRlMDczYWQyODRhNjQuLjIxZTI2N2RhMzIw
YjRkYmQwMmQ0MmQ2YTkwYmIzODg1OTYzMzlmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRN
ZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8V2ViQ29yZTo6Q29udGV4dE1lbnU+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtKiwgY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBs
b29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Bl
YWsoY29uc3QgV1RGOjpTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5jcHAKaW5kZXggYTU2NDZmMjU1NzdlNzMwMmQ0NTdmOTg5NDc4MGZhNTdhZGFhODQ4ZS4uOGRk
ZmRmZGY1MTFkYmU0OTJmZDYxYWVhMzRlN2E1ZTYxMTIyMTliZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJW
aWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW8K
IHsKIH0KIAotTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihjb25zdCBLVVJMJiB1cmwpCitOb3RpZmlj
YXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6
Y2hlY2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGludCBvdXQgPSAwOwogICAg
IEJTdHJpbmcgb3JnKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKS0+dG9TdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggYjZmOWMyMThmNDMwNDkwN2Y2
NGI1Yzk2MjRkZmI5YmNjMzA5Mzk4MC4uZDcwZmI4ZDkzZGIxZGQzZWM0NWRmYmM0M2I2MWFjYjEy
YjIyMDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtMzgsNyAr
MzgsNyBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSA6IHB1YmxpYyBX
ZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KTsK
ICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihjb25zdCBLVVJMJik7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hl
Y2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaGFzTm90aWZp
Y2F0aW9uRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhYmE3NGVjMGRjOGQwMzQ0
MmZkNjhiMTUxNjE4YmEyM2FhZjdmYjQ1Li4wY2RmZDg0NjUxZDIzN2E1ZjY4NzM3YWExNmUzOTY1
ODJjNjY4YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUg
ZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlIGRlbGF5
LCBkb3VibGUgZmlyZURhdGUpCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUt
PndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWRE
ZWxlZ2F0ZTsKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5k
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KHdlYlZpZXcpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgS1VSTCYgaW5zZWN1cmVVUkwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiBpbnNl
Y3VyZVVSTCkKIHsKICAgICBDT01QdHI8SVdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9y
aWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShvcmlnaW4pOwogCkBAIC04
NjEsNyArODYxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVD
b250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEsKICAgICBmcmFtZUxvYWREZWxl
Z2F0ZVByaXYyLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmlldywgd2ViU2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1Mo
Y29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RY
U1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogcHJvcG9nYXRlIGNhbGwgaW50
byB0aGUgcHJpdmF0ZSBkZWxlZ2F0ZS4KIH0KQEAgLTk3OSw3ICs5NzksNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRy
PElXZWJIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKQEAgLTEwNTYsNyArMTA1Niw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQo
Ym9vbCkKIHsKIH0KIAotU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPndlYlZpZXcoKS0+dXNlckFn
ZW50Rm9yS1VSTCh1cmwpOwogfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1hcmdp
bldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdodCovKQogewogICAgIFJlZlB0cjxGcmFtZT4gcmVz
dWx0ID0gY3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVsZW1lbnQsIHJlZmVycmVyKTsKQEAg
LTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
CitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29u
c3QgVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CkBAIC0xMDk3
LDcgKzEwOTcsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbgogICAgIHJldHVybiBjaGlsZEZy
YW1lLnJlbGVhc2UoKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5
cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29u
dGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9
CkBAIC0xMTE2LDcgKzExMTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgIEFTU0VS
VChmcmFtZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKIAogICAgIGlmICghcGx1Z2lu
Vmlldy0+cGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewotICAgICAgICBLVVJMIHBsdWdpblBhZ2VV
UkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKKyAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKICAgICAg
ICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5Q
YWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTE2MCw3ICsxMTYw
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+
cGx1Z0luRmFpbGVkV2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291
cmNlKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
UGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygp
OwogCkBAIC0xMjE3LDkgKzEyMTcsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRp
cmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9tYW51YWxM
b2FkZXIgPSBzdGF0aWNfY2FzdDxFbWJlZGRlZFdpZGdldCo+KHBsdWdpbldpZGdldCk7CiB9CiAK
LVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxl
bWVudCwgY29uc3QgS1VSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVS
TCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBs
dWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6
ZSwgZWxlbWVudCwgS1VSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9u
L3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZp
ZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgZWxl
bWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZh
LWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxv
YWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2lu
Vmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQ5OTE4ZGM3OTg5OTY1
M2U0MWFhMDhhOTNlNTMwNTg4ZWE3NGExODMuLmFlNDI4ZjUzMWViMmQ2MDBlYjEyNTllNzg1ZTNk
NmRhYmIzNWU4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50
ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsK
QEAgLTEzNSw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnlJdGVtRm9yUGFnZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJD
b3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9u
VG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklE
RTsKQEAgLTE3NywxNSArMTc3LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5D
YWNoZVBhZ2UoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYs
IGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0
cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
cmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdl
YkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHBy
b3RlY3RlZDoKICAgICBPd25QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+IG1fcG9s
aWN5TGlzdGVuZXJQcml2YXRlOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJp
bmcmIHJlZmVycmVyKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKICAg
ICBXZWJIaXN0b3J5KiB3ZWJIaXN0b3J5KCkgY29uc3Q7CiAKICAgICBXZWJGcmFtZSogbV93ZWJG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDAxYmI4YjA3NjE4MzlkYTlmMzlhNDM1NDAx
M2FmZTMwNTU4MWE5NjguLmFkYzM3ZjI2M2QxNDM1ZmY4MDI4NzZhOTI3MjQ0NmRhYzM2Yjk5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtODgsMzIgKzg4LDMyIEBAIFZpc2l0ZWRMaW5rU3Ry
YXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgp
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAg
ICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmws
IHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3Jl
OjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAgIH0KIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3Qg
S1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0
ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGFiMTRhZmI5YTg3ZWEzNWI5Zjc3YWM2
NDM0OTljNTAwM2VhODBkZTMuLjA5YTgxZDExM2NiYzY5YTY1YjY4NmIzMGViNDcxZmMwOWY0NmFh
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01MywxMiArNTMsMTIgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3Ry
YXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLgpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJM
LCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggZmZjYWE4NTYwZmU1YjVjMDQw
YTA4Mjk5ZjUzNDdjYmY1MTA2ODIwYS4uM2FhZTg1MmVlZDNhNjc2NDBlYTMxNzY1ZmVjMmNmMzI5
NzcyN2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTQsNyArMjU0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjpwYWdlVGl0bGUo
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnVucmVhY2hhYmxlVVJM
KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkKIHsKLSAgICBLVVJMIHVucmVh
Y2hhYmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgVVJMIHVucmVhY2hh
YmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAgICAgQlN0cmluZyB1cmxTdHJp
bmcoKExQT0xFU1RSKXVucmVhY2hhYmxlVVJMLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgdW5yZWFj
aGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkpOwogCiAgICAgKnVybCA9IHVybFN0cmluZy5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYjhmYWJlMjhiYTY4YWU4MzU1
MzQwOGMwNzJiMDFmNDkzZTdmOTVkNC4uM2QxYjJkNmI4YjRhMDVhZWU5OTRkOTkxZjk1MDE4MTJh
MTE0MmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtODIsNyArODIsNyBAQCBX
ZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUgogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotV2ViRG93
bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZShjb25zdCBLVVJMJiB1cmwsIElXZWJE
b3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKK1dlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3Jl
YXRlSW5zdGFuY2UoY29uc3QgVVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKICAgICBXZWJEb3dubG9hZCogaW5zdGFuY2UgPSBuZXcgV2ViRG93bmxvYWQoKTsKICAg
ICBpbnN0YW5jZS0+QWRkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaAppbmRleCA3YTY2ZGYx
NjQ0YTIyMDYyODczZDBhOGVlMTIxZGU5ZDYwNjAwY2MxLi4yMjU0ZGI5NjIzOWI3OTcyMTU2MzJm
OTRlYjllM2YzOGE1ODliYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3du
bG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4
LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAg
ICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC01MiwxMyArNTIsMTMg
QEAgY2xhc3MgV2ViRG93bmxvYWQKICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJE
b3dubG9hZCogY3JlYXRlSW5zdGFuY2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIElXZWJEb3dubG9h
ZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJE
b3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0
ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRl
Kik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBJV2ViRG93bmxvYWREZWxl
Z2F0ZSopOworICAgIHZvaWQgaW5pdChjb25zdCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWRE
ZWxlZ2F0ZSopOwogICAgIH5XZWJEb3dubG9hZCgpOwogcHVibGljOgogICAgIC8vIElVbmtub3du
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDRkNTlmODg5OTUxMGM1
Yzg4ODk4MzY3YTAwODZjODAwMTA5MzRkNzkuLjAwODI2YWE1MjUyMWRmNGJjMGI5NDU1NzEzMWIw
MzZlYzBiZjRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGMKICAgICBDRlJlbGVhc2UoY29u
bmVjdGlvbik7CiB9CiAKLXZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCit2b2lkIFdlYkRvd25sb2FkOjppbml0KGNv
bnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgbV9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6
c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxl
Z2F0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1
cmwuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCBkMTlm
NDIwNGM1MjhiNDBjOTZmZjZiNjY2MTg1MTBlYjRmZDUzMjY2Li45OGU4NWIxNDdmNWYwYjUyYjNk
NTFiNDdkOWYwMjEzYzcyNTUzMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGMKICAgICBzdGFydCgp
OwogfQogCi12b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgSVdlYkRvd25s
b2FkRGVsZWdhdGUqIGRlbGVnYXRlKQordm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBVUkwm
IHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIG1fZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAKaW5kZXggNWMwZGZhMWRjMTJhYTY4N2M3MjY2NWUwN2U3MTIyYjU3NzI4OGIyOC4uNjE5NWZi
ZmQzOTQ0M2Q4NTZiNTkyZTdlN2I2MWI0NjY2Y2UzYWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IGFiNzE5NDVmMWQ1NjYwYjI2NWJkNTMzYmE0NzMzYzgyMjU1MDYzMTIuLjJhMWMwODRlNTAyZGIz
YjIwN2I3YjdlZGVjNTA3NWE2MmUzYTQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2
NywxMSArNTY3LDExIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCCiAgICAgU3RyaW5nIGVuY29k
aW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1l
KSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBiZSB1c2luZyBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0tVUkwgaGVyZSwKLSAgICAvLyBidXQgdGhhdCB3b3VsZCB0dXJuIGEg
bnVsbCBCU1RSIGludG8gYSBudWxsIEtVUkwsIGFuZCB3ZSBjcmFzaCBpbnNpZGUgb2YKLSAgICAv
LyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgS1VSTCBpbiBjb25zdHJ1Y3RpbmcgdGhlIFJlc291
cmNlUmVxdWVzdC4KLSAgICBLVVJMIGJhc2VLVVJMID0gS1VSTChLVVJMKCksIFN0cmluZyhiYXNl
VVJMID8gYmFzZVVSTCA6IEwiIiwgU3lzU3RyaW5nTGVuKGJhc2VVUkwpKSk7CisgICAgLy8gYnV0
IHRoYXQgd291bGQgdHVybiBhIG51bGwgQlNUUiBpbnRvIGEgbnVsbCBVUkwsIGFuZCB3ZSBjcmFz
aCBpbnNpZGUgb2YKKyAgICAvLyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgVVJMIGluIGNvbnN0
cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgorICAgIFVSTCBiYXNlS1VSTCA9IFVSTChVUkwo
KSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFzZVVSTCkp
KTsKIAotICAgIEtVUkwgZmFpbGluZ0tVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tV
UkwoZmFpbGluZ1VSTCk7CisgICAgVVJMIGZhaWxpbmdLVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJz
OjpCU1RSVG9LVVJMKGZhaWxpbmdVUkwpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
YmFzZUtVUkwpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGRhdGEsIG1pbWVU
eXBlU3RyaW5nLCBlbmNvZGluZ1N0cmluZywgZmFpbGluZ0tVUkwpOwpAQCAtNzAxLDExICs3MDEs
MTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cHJvdmlzaW9uYWxEYXRh
U291cmNlKAogICAgIHJldHVybiAqc291cmNlID8gU19PSyA6IEVfRkFJTDsKIH0KIAotS1VSTCBX
ZWJGcmFtZTo6dXJsKCkgY29uc3QKK1VSTCBXZWJGcmFtZTo6dXJsKCkgY29uc3QKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCA2Mjcw
ZDc4MThlMmZmYTNhMTdjOGUxMDA2OTM3NDU0Y2E1MDg0NjdjLi4zMzY0Y2Q2ZTE1YzUzMTkwM2Mz
M2E3MDFjMDAzN2I4ODRlOGZlMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0FkanVzdFZpZXdTaXplT3JOb3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KIAogI2luY2x1ZGUgPFdURi9S
ZWZQdHIuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBtYXRjaExh
YmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01F
bGVtZW50KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblBy
b3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6S1VSTCB1
cmwoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7CiAKICAgICBXZWJWaWV3
KiB3ZWJWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKQEAgLTM0
MSw3ICszNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgV2ViRnJhbWVQcml2YXRlOwogICAg
IFdlYkZyYW1lUHJpdmF0ZSogICAgZDsKICAgICBib29sICAgICAgICAgICAgICAgIG1fcXVpY2tS
ZWRpcmVjdENvbWluZzsKLSAgICBXZWJDb3JlOjpLVVJMICAgICAgIG1fb3JpZ2luYWxSZXF1ZXN0
VVJMOworICAgIFdlYkNvcmU6OlVSTCAgICAgICBtX29yaWdpbmFsUmVxdWVzdFVSTDsKICAgICBi
b29sICAgICAgICAgICAgICAgIG1faW5QcmludGluZ01vZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+IG1fcGFnZVJlY3RzOwogICAgIGludCBtX3BhZ2VIZWlnaHQ7ICAgLy8gaGVpZ2h0
IG9mIHRoZSBwYWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAK
aW5kZXggNTNlMWQ1NDhhYzM4YzkyZjE4ZmE2YmRhZWY4MGUyN2EwMjAyNTRlOC4uN2U2MzcwN2M0
ZDI5YmRmNmQ4YmFiNTFjODBmMzM2ODNmMDYzOTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAtNTMwLDcgKzUz
MCw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbShJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5
LCBib29sIGRpc2NhcmREdXBsaWNhdGUsIGJvb2wqCiAgICAgcmV0dXJuIGhyOwogfQogCi12b2lk
IFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNy
ZWFzZVZpc2l0Q291bnQpCit2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3
YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCkKIHsKICAgICBJV2ViSGlzdG9yeUl0
ZW0qIGVudHJ5ID0gbV9lbnRyaWVzQnlVUkwuZ2V0KHVybC5zdHJpbmcoKSkuZ2V0KCk7CiAgICAg
aWYgKGVudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXggM2M3NWExODBkYzQxNGQ0ZTk1
YWZjNTZiYjk5MGRjYWE1ZDI0OWNjYy4uZmY3NzdjZjNlNjE2MzU4NGZkMzczMmYzYjM5OTVlOGFk
MjFlYjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEtV
Ukw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKIH0KIApAQCAtMTExLDcg
KzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkhpc3RvcnkKICAgICBzdGF0aWMgV2ViSGlz
dG9yeSogc2hhcmVkSGlzdG9yeSgpOwotICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgaHR0
cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCk7CisgICAg
dm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0
aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9v
bCBpbmNyZWFzZVZpc2l0Q291bnQpOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtzVG9QYWdlR3Jv
dXAoV2ViQ29yZTo6UGFnZUdyb3VwJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBp
dGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggOGJmZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2
NTI0MzIxYi4uNDUwOGNlNDI2NGVlMmUzYTIxZDEyYmJiZWNiMWRkMjU3NzE3YzcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDk2NDJlNjg4OWIw
NjBmMzgyMTZkMGI4NzRmYzM4YTZhYWY2YzFmYTcuLjdkY2FiYzQyNDBmNmZiMzhlY2FmNzFhM2Q1
NGM3NGZlYTEyM2M0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11
dGFibGVVUkxSZXF1ZXN0Ojppbml0V2l0aFVSTCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCggCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVscGVy
czo6S1VSTFRvQlNUUihtX3JlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgKnJl
c3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKG1fcmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjIyLDcgKzIyMiw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnRpbWVvdXRJ
bnRlcnZhbCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OlVSTCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJl
c3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihtX3JlcXVlc3QudXJsKCkpOwor
ICAgICpyZXN1bHQgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlVSTFRvQlNUUihtX3JlcXVlc3QudXJs
KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5k
ZXggY2NmZDk1ZDRiYzJlNDVhMWQ3OWZiM2RiODI4MzFlYjZlYTZjM2VlMi4uZTQ2OTkxN2QzZTIy
ZWQzZDYwMTQ3MTQ1MGY2NTUxNGYyYjEyMGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViUmVz
b3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5h
bWUpCiAgICAgOiBtX3JlZkNvdW50KDApCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJs
KHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGQ4ZmI0MzNlMTg1YjBmMTY1YzFkYTY2
YmZjNmFkNmU2MTVkZjE2YTkuLjc5MGJhNDc0MmEzOTNiZDE1MDVhNWVlNGIxODg2YjkzMmNjYTZj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2ViUmVz
b3VyY2UgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CiBwcm90ZWN0
ZWQ6Ci0gICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNv
dXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291cmNlKCk7CiAKIHB1Ymxp
YzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNv
dW50OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3Vy
bDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV1RGOjpTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBXVEY6OlN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgV1RGOjpTdHJpbmcgbV9m
cmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggZjBjNDMwMjIw
MGU5NWFiMWY1MTc2YzNiNzQwNmMxZDE5Y2Y3YWQ5ZC4uMDM1MGRlM2U3ODU1ZmZhZjBjYThmZDc2
ZGE3MGZjN2Y3NzBjYWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAt
MzgsNyArMzgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0y
MjYsNyArMjI2LDcgQEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0
YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3Bv
bnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2Vi
SFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly8iKSwgU3RyaW5nKCks
IDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlKFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vIiksIFN0cmluZygpLCAw
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1
cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAppbmRleCAxYzhjNTY5NDljMzljZDQ0MGVmNTVkYjhkNGMyODZiMWUzNTdmNGI2
Li4wNzljNDAyNjA4Y2VlMTgwYTQ1NjhiNTE5N2NmZmNjMGRmYjUzNWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDEyNDI5
Y2FjYTBkMmQ4MzI3YjM4ODViNjE1Nzc1Yjk3YWIzNTE5MDIuLjU2MzcxYWUzZWY0OGJhNTJmODky
YjIxMDNiZGUwMTVlNTI5MWYwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yMjQsOSArMjI0
LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJpbmcoQlNUUiBic3RyKQogICAgIHJldHVy
biBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIpKTsKIH0KIAotc3RhdGljIGlubGluZSBL
VVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5saW5lIFVSTCB0b1VSTChCU1RSIGJzdHIp
CiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0cmluZyhic3RyKSk7CisgICAgcmV0dXJu
IFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQogCiBjbGFzcyBQcmVmZXJlbmNlc0NoYW5n
ZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uT2JzZXJ2ZXIgewpA
QCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCkK
ICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7CiB9CiAKLWNvbnN0IFN0cmluZyYgV2Vi
Vmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJMJikKK2NvbnN0IFN0cmluZyYgV2ViVmll
dzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQogewogICAgIGlmIChtX3VzZXJBZ2VudE92
ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJBZ2VudEN1c3RvbTsKQEAgLTQ4NTUsNyAr
NDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJO
b3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAgICBzdHIuY2xlYXIoKTsKICAgICB9IGVs
c2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihLVVJMKCkpOwor
ICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTCgpKTsKIAogICAg
IGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFja2dyb3VuZHMoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYwLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojph
ZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29y
bGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5n
KHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29y
bGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvVVJMKHVybCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3RDb3Vu
dCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0Q291bnQsIGJsYWNrbGlzdCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25UaW1lID09IFdl
YkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6IEluamVjdEF0
RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmplY3RJ
bkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVz
ZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29y
bAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgcGFn
ZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5n
KHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclN0eWxlU2hlZXRU
b1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhzb3VyY2UpLCB0b1VSTCh1cmwpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nVmVjdG9yKHdoaXRl
bGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3RDb3VudCwgYmxh
Y2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmplY3RJ
bkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVt
b3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBp
V29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBw
YWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndvcmxkKCksIHRvS1VS
TCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQod29ybGQt
PndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC02NDI3LDcg
KzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbUdyb3Vw
KEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqCiAgICAgaWYgKCFwYWdlR3JvdXApCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tVUkwodXJsKSk7CisgICAgcGFnZUdyb3Vw
LT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3b3JsZC0+d29ybGQoKSwgdG9VUkwodXJs
KSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1NDksNyArNjU0OSw3IEBAIEhSRVNVTFQg
V2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZpc2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNp
dGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViVmlldzo6ZG93bmxv
YWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJWaWV3Ojpkb3dubG9hZFVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxlZ2F0ZSdzIGpvYiB0byByZWYgdGhlIFdl
YkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhlcndpc2UgaXQgd2lsbCBiZQogICAgIC8v
IGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaAppbmRl
eCBhYjI3MTg3MmQwMDMwNGFkZjM2NzYwMmJmNTNlNDc2NTkzN2QxM2QxLi5jYWQ4NWIxMjJlZmZm
ODIwZDNlNzdhOWIwMDE5NTViMjg0NjdjZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBAIC05MDgsNyAr
OTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxlIHRvIHZpb2xh
dGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4K
ICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1l
OyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VSTChj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC05NDcsNyArOTQ3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0sIExSRVNVTFQm
KSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmplY3RGcm9tV2lu
ZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVjdCk7CiAKLSAg
ICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGRvd25s
b2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudFdpbkNFLmNwcAppbmRleCBkZGE0ZDI3YTk5OWM5ODBkZTk4YTc1YTZl
ZTc3ODVjZTY3ZDlhYmZiLi43YjVkNjFmMGNkNGY0MmE1YmU3N2Y3MTM1MTg2YTJkNTA2NGI5OTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBDb250
ZXh0TWVudUNsaWVudFdpbkNFOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0
ZW0qLCBjb25zdCBDb24KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRN
ZW51Q2xpZW50V2luQ0U6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4
dE1lbnVDbGllbnRXaW5DRTo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKaW5kZXggOGNkMTk1MTM5NGQ2
MWViMGUxNGYzYWQxNmY2ZDE4NDhjYmQxNDg2Ny4uZGI3NTZmM2QyZTVhZTUzOGYyMTZiYzYxODQx
MzU5NzkyOWIyOWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3Vz
dG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRNZW51Pik7CiAgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSos
IGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxv
YWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVS
TChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlw
Ym9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lk
IGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5D
RS5jcHAKaW5kZXggODUzYjFiYjVmMDYzNjExMzk3YTk3NDkxNmEzZjJiMTNiYjczZmFmZS4uNmQw
MGIwYmM0N2Q4N2Q1ODQxMzJiZDM4MWNhZTQzZmZjYWFkZTg5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6On5GcmFt
ZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudFdpbkNF
Ojp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2MiwxMiArMTYyLDEyIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1
bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS0+
KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7CiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxs
b3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAg
cmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVsZW1lbnQsIHJl
ZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwpAQCAt
MTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpyZWRpcmVjdERh
dGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9oYXNTZW50UmVzcG9u
c2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1l
bnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwogfQogCi1PYmpl
Y3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpvYmplY3RDb250ZW50VHlwZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVy
UGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgcmV0dXJuIEZy
YW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0yNjIsMTIgKzI2MiwxMiBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxv
YWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlLCBkb3VibGUp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiAKIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewotICAgIHJldHVybiBGcmFtZU5ldHdvcmtp
bmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1c2VyQWdlbnQoS1VSTCgpKSk7CisgICAg
cmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5DRTo6Y3JlYXRlKG1fZnJhbWUsIHVzZXJB
Z2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5o
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmgKaW5kZXggOTdkYzk1MDQwZWNiOGEwZjM1MDNmMTA5NTFhMDQzYzQyMzQ4N2I0NS4uYjEw
ZjAyYjg4ZTA4OWQ3ZWVjYTE5YzlkZTIxOTg3NzM5YzIwYWY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKKysr
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91
YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlLCBkb3VibGUpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xMDUsMTIgKzEwNSwx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWNy
ZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVs
ZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwogCi0gICAgdmlydHVh
bCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTEzNiw4
ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9y
SGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQsOSArMTYzLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2
aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9y
bURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCA3MzNhNGVlMTNkYWVjMDI2
ZGFjM2M0YzFmYWVmOWUxMzdmY2RkZTdmLi4yZGM5OWNkZjY2MjdiNzFhNTVmYjg1ZjVlMDViNjBi
NGRhYmE1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtODQsMzIgKzg0LDMy
IEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjcmVhdGVW
aXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFBsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNz
aW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQbHVn
aW5JbmZvPiYgb3V0CiAgICAgfQogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpp
c0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6aXNMaW5rVmlz
aXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNT
dHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKaW5kZXggMTIwODgxMWM0MjBjOWM2OGY2NzlkOGJk
ODE1MWY2MDBjY2MwMjhlMS4uOTI1ZjBlODExZTIyZjA1MzEyZjJkNjI0MmFjODgxMGNiMzliZTI1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVk
TGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcg
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdl
YkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0
ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAppbmRleCAzNjUw
ZDgzZjAxZTAyMDk0M2U3MGExZDYzODNmN2ViYjllMTFkMDc5Li5mNTUzMTVkNWFiMGEzZmUxYmIy
NGJjYzFhZTM0MTg2OTUzOGQ3M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKQEAgLTE1NSw3
ICsxNTUsNyBAQCB2b2lkIFdlYlZpZXc6OmNsZWFudXAoKQogICAgIFVucmVnaXN0ZXJDbGFzcyhr
V2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSk7CiB9CiAK
LVBhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0
ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBp
bnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBGcmFtZSog
Y29yZUZyYW1lID0gbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Vmlldy5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKaW5kZXggYjQ0MDI1MTUyNTI5
MTExZmNhZjIxNTIyZjE0ZTVkYzE5MTZhNDNkMy4uOGI2MDY1MWVkMTE3NjliODQ2ZGU4MTg4YjY4
NzAzODIzYTcwYTU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgSFRNTEZyYW1l
T3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKIH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZyYW1lUmVj
dChSRUNUKiByZWN0KSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCwgaW50
LCBpbnQpOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViQ29yZTo6SFRNTEZyYW1lT3du
ZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sLCBpbnQsIGludCk7CiAKICAgICAv
LyBKYXZhU2NyaXB0IERpYWxvZwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDFlNjBk
NDAxYmVkN2RlNTM3MzA3NjMwYWEzMDUyYzEyZDk2ZDI5OGYuLjg1MDc2OGNlZmE3NTlmODY0YWU2
NWRjNjlmOWYwMTA4NjJiOGMwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNDcs
NyArNDcsNyBAQCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5KCkKIHsK
IH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IEtVUkwmIHVybCwgUGFzc093
blB0cjxCbG9iRGF0YT4gZGF0YSwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4mIG5ld1NhbmRib3hFeHRlbnNpb25zKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNv
bnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBkYXRhLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiYgbmV3U2FuZGJveEV4dGVuc2lvbnMpCiB7CiAgICAgQVNT
RVJUKCFtX3NhbmRib3hFeHRlbnNpb25zLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpOwogCkBAIC02
NywxMSArNjcsMTEgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBBU1NFUlQoIW1fYmxv
YnNGb3JDb25uZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1cmwpKTsKICAgICBCbG9i
Rm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVj
dGlvbi5maW5kKGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9y
Q29ubmVjdGlvbi5lbmQoKSkKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVj
dGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxLVVJMPigpKS5pdGVyYXRvcjsKKyAgICAgICAg
bWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNl
dDxVUkw+KCkpLml0ZXJhdG9yOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQodXJsKTsKIH0K
IAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkKIHsK
ICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwpOwogICAgIFNh
bmRib3hFeHRlbnNpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3NhbmRib3hFeHRlbnNpb25zLmZp
bmQoc3JjVVJMLnN0cmluZygpKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3QKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5h
ZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJs
KTsKICAgICBtX3NhbmRib3hFeHRlbnNpb25zLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwpAQCAtOTgs
OCArOTgsOCBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAgIGlmICghbV9ibG9ic0ZvckNv
bm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhh
c2hTZXQ8S1VSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZp
bmQoY29ubmVjdGlvbiktPnZhbHVlOwotICAgIGZvciAoSGFzaFNldDxLVVJMPjo6aXRlcmF0b3Ig
aXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0ZvckNvbm5lY3Rp
b24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICBIYXNoU2V0PFVSTD4mIGJsb2Jz
Rm9yQ29ubmVjdGlvbiA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZh
bHVlOworICAgIGZvciAoSGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gYmxvYnNGb3JDb25u
ZWN0aW9uLmJlZ2luKCksIGVuZCA9IGJsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKTsgaXRlciAhPSBl
bmQ7ICsraXRlcikgewogICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgq
aXRlcik7CiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMucmVtb3ZlKCppdGVyKTsKICAgICB9
CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25uZWN0aW9u
VG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAKICAgICBtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2NvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBtX3NhbmRib3hFeHRlbnNpb25zLmdl
dCh1cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAppbmRleCA2ZDcxYmJmYzk2
MzEyZmE1ZWRlNmE2NTcyODA1MTE3N2VhOGUwMDkzLi43MzMwNmYyN2RjZTlhMmJmMzM2ZTY0OTAx
NzM1NWY1NmJiOGQ3MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjgsNyArMjgsNyBA
QAogCiAjaWYgRU5BQkxFKEJMT0IpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAKLSNpbmNs
dWRlIDxXZWJDb3JlL0tVUkxIYXNoLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCkBAIC00
NywxMyArNDcsMTMgQEAgcHVibGljOgogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnkoKTsKICAgICBz
dGF0aWMgTmV0d29ya0Jsb2JSZWdpc3RyeSYgc2hhcmVkKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiwgY29uc3QgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4mKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBzcmNVUkwpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdm9pZCByZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2b2lkIGNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gc2FuZGJv
eEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OlVS
TCYpOwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPj4+IFNhbmRib3hFeHRlbnNpb25NYXA7CiAgICAgU2FuZGJveEV4
dGVuc2lvbk1hcCBtX3NhbmRib3hFeHRlbnNpb25zOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpLVVJMPj4gQmxv
YkZvckNvbm5lY3Rpb25NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29ubmVjdGlvbk1h
cDsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlvbjsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA4OWQ0ZWFmYjM3NGI0OTRlNGRiM2Vk
YTUyZTM2MWNhZDFkNGZhYmVmLi4wM2FmMWM0ZmYyMThmOWRhZmZlNmIyZTI1ZmY1OWIxNDNhYjBk
MjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xODIsMzcgKzE4MiwzNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQodWludDY0X3QgbQogICAgIGxvYWRlci0+ZGlkQ29udmVydEhhbmRsZVRv
RG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5h
YmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7CiAg
ICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3RyaW5nJiByZXN1
bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tp
ZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJlc3VsdCkKIHsKICAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9u
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2ll
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Np
b24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKIHsKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+PiBleHRlbnNpb25zOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9
IGRhdGEuc2FuZGJveEV4dGVuc2lvbnMoKS5zaXplKCk7IGkgPCBjb3VudDsgKytpKSB7CkBAIC0y
MjMsMTIgKzIyMywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBCbG9iUgogICAgIE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwsIGRhdGEucmVsZWFz
ZURhdGEoKSwgZXh0ZW5zaW9ucyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJM
JiBzcmNVUkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKIHsKICAgICBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBz
cmNVUkwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS51bnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZmJmZDgyMzE1MTZlMmJlYjY4NDU0ZjVhN2M4
Mzg4YjYyNmM2NGEwMy4uZDIyZGQ1MzAwNjhhM2U2Zjc2NTEwZWE5MWI5ODRiNWNjOWE5OTY0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03MywyMiArNzMsMjIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5Pik7CiAKICAgICB2
b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIHZv
aWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGNyb3NzT3JpZ2luUmVk
aXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKHVpbnQzMl90IHJl
c291cmNlTG9hZFByaW9yaXR5KTsKICAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdFbmFibGVkKGJv
b2wpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
LSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5n
JiByZXN1bHQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29raWVzRW5hYmxlZChib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1
bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRW5hYmxl
ZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcm
IHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVnaXN0ZXJC
bG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
c3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBC
bG9iUmVnaXN0cmF0aW9uRGF0YSYpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIFJlZlB0cjxD
b3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWZhZTFhMjMwZmFmMzRkN2FjOGI4MjM0NmNj
NjU0ZjQ0M2U0ZDk0NS4uYTVmN2NjNTJjMGYyNzExM2JmNGU3ZGRmZjg0ZjkzMGIxZGViNWJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM1LDE2
ICszNSwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAK
LSAgICBDb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3Vs
dCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdl
YkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNv
b2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChib29s
IGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwg
dXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OktV
UkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQotICAgIERl
bGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgdXJs
LCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQorICAgIENvb2tpZXNGb3JET00oYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVy
bCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpV
UkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBh
cnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQorICAgIEdldFJh
d0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQ
YXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4g
Y29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBX
ZWJDb3JlOjpVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQogCi0gICAgUmVnaXN0ZXJC
bG9iVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3RyYXRpb25EYXRhIGRh
dGEpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpLVVJMIHVybCwgV2ViQ29y
ZTo6S1VSTCBzcmNVUkwpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6S1VSTCB1cmwp
CisgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6QmxvYlJlZ2lz
dHJhdGlvbkRhdGEgZGF0YSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OlVS
TCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCisgICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29y
ZTo6VVJMIHVybCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkxODY5N2ExMzFjNmNhYjc5MDFhMmU5ZmZjM2Uz
NTkzZDE5YjZmZTIuLmZmNDI3NDNlZGU3MjBiN2E4MzFjNzU2MTdhZWU1ZWE0ZmFjMDAzY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkZXIoUGFzc1JlZlB0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkCiAgICAgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi1I
b3N0UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmIHVybCwgQ3JlYXRlSG9zdFBvbGljeSBjcmVhdGVIb3N0UG9saWN5KQor
SG9zdFJlY29yZCogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25z
dCBXZWJDb3JlOjpVUkwmIHVybCwgQ3JlYXRlSG9zdFBvbGljeSBjcmVhdGVIb3N0UG9saWN5KQog
ewogICAgIGlmICghdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJu
IG1fbm9uSFRUUFByb3RvY29sSG9zdC5nZXQoKTsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9h
ZGVyKiBsb2FkZXIpCiAgICAgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi12
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QoTmV0d29y
a1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJM
KQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJlZGlyZWN0KE5l
dHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0
VVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpy
ZWNlaXZlZFJlZGlyZWN0IGxvYWRlciBvcmlnaW5hbGx5IGZvciAnJXMnIHJlZGlyZWN0ZWQgdG8g
JyVzJyIsIGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJl
ZGlyZWN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CmluZGV4IGZiNDEwMjc5N2VjNGIwNTdlMzk3MzRjODlhZmE5MjBiMTU1ODQ3MDIuLjg0MGEyNzgy
OWI1MDU4NzgzYmQwNGI4NjMyMzBjMWNhNWZiMTA0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCB3aXRoaW4g
dGhlIE5ldHdvcmtQcm9jZXNzIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgd2hlbiBhIHJlc291cmNl
IGxvYWQgaGFzIGZpbmlzaGVkLgogICAgIHZvaWQgc2NoZWR1bGVSZW1vdmVMb2FkZXIoTmV0d29y
a1Jlc291cmNlTG9hZGVyKik7CiAKLSAgICB2b2lkIHJlY2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jl
c291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZv
aWQgcmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNv
cmU6OlJlc291cmNlTG9hZFByaW9yaXR5ID0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlW
ZXJ5TG93KTsKIAogICAgIC8vIEZvciBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNzIHJlcG9ydGlu
Zy4KQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluZE9ubHkKICAgICB9Owog
ICAgIAotICAgIEhvc3RSZWNvcmQqIGhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYsIENy
ZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdFJlY29yZCogaG9zdEZvclVSTChj
b25zdCBXZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmluZE9ubHkpOwogICAgIAog
ICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZvaWQgcmVxdWVz
dFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcj4q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3Jr
UHJvY2Vzc01hYy5tbQppbmRleCAwODg0NTJlMDM2NTliODliMzMxNDQzMGIyOGZlNTdhZjk4MDVk
YzQzLi5lMTk3ZmYzOTZmNzBhNzdhOTU2MmQzNWFiNTNkMmM0NDUzNWNjMDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFj
Lm1tCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJveGllcyhj
b25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1ByCiAgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqcHJveHlTZXR0aW5ncyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rp
b25hcnldOwogCiAgICAgaWYgKCFodHRwUHJveHkuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCBo
dHRwUHJveHlVUkwoS1VSTCgpLCBodHRwUHJveHkpOworICAgICAgICBVUkwgaHR0cFByb3h5VVJM
KFVSTCgpLCBodHRwUHJveHkpOwogICAgICAgICBpZiAoaHR0cFByb3h5VVJMLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNv
cmVTdHJpbmcoaHR0cFByb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdv
cmtQcm94aWVzSFRUUFByb3h5XTsKICAgICAgICAgICAgIGlmIChodHRwUHJveHlVUkwuaGFzUG9y
dCgpKSB7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJveGll
cyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1ByCiAgICAgfQog
CiAgICAgaWYgKCFodHRwc1Byb3h5LmlzTnVsbCgpKSB7Ci0gICAgICAgIEtVUkwgaHR0cHNQcm94
eVVSTChLVVJMKCksIGh0dHBzUHJveHkpOworICAgICAgICBVUkwgaHR0cHNQcm94eVVSTChVUkwo
KSwgaHR0cHNQcm94eSk7CiAgICAgICAgIGlmIChodHRwc1Byb3h5VVJMLmlzVmFsaWQoKSkgewog
ICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVT
dHJpbmcoaHR0cHNQcm94eVVSTC5ob3N0KCkpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZOZXR3b3Jr
UHJveGllc0hUVFBTUHJveHldOwogICAgICAgICAgICAgaWYgKGh0dHBzUHJveHlVUkwuaGFzUG9y
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWQzOGY2ZWJmMmI0MjNhNjY1NGVjZTczMTZlZTJlYzMw
MjJkMDQwNC4uNmMwNTNjMTFhOTgzNzM0OTBkMzQ5Njc2NTgwMzFiZjVlMWZhNGQxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpk
aWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpCiAKIHZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJpbmcsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKQogewotICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVS
TFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRl
cnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0
cmVhbUlELCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxl
bmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKIH0K
IAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpAQCAtNDYy
LDcgKzQ2Miw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByZXNwb25zCiAgICAgaWYgKG1fcGx1Z2luQ2Fu
Y2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BsdWdpbi0+
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNw
b25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUs
IGhlYWRlcnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFt
TGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOwog
fQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGQ1YTg5
ODVjMDI1OTllM2U0YjBjMWJmNTYxYjc1MzE1OTFhOWYxZmQuLjVkMTFkOTg2MzJmNjNjMTlmY2Zk
Y2YzZmQ3YWVmMmM3NDA3MDBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMTg5LDExICsxODksMTEgQEAgc3Rh
dGljIHZvaWQgY2FyYm9uV2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiBzdGF0aWMgYm9v
bCBvcGVuQ0ZVUkxSZWYoQ0ZVUkxSZWYgdXJsLCBpbnQzMl90JiBzdGF0dXMsIENGVVJMUmVmKiBs
YXVuY2hlZFVSTCkKIHsKICAgICBTdHJpbmcgbGF1bmNoZWRVUkxTdHJpbmc7Ci0gICAgaWYgKCFQ
bHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5vcGVuVVJMKEtVUkwodXJsKS5zdHJpbmcoKSwgc3RhdHVz
LCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5v
cGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3RyaW5nKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmluZy5pc051bGwo
KSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gS1VSTChQYXJzZWRVUkxT
dHJpbmcsIGxhdW5jaGVkVVJMU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmxlYWtSZWYoKTsKKyAgICAg
ICAgKmxhdW5jaGVkVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbGF1bmNoZWRVUkxTdHJpbmcp
LmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yOTMs
NyArMjkzLDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNlZE5TV29ya3Nw
YWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKEtV
UkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRzKSkgeworICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpz
aGFyZWQoKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVSTCh1cmwpLnN0cmluZygpLCBhcmd1bWVu
dHMpKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICplcnJvciA9IG5pbDsKICAg
ICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1VSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5jcHAKaW5kZXggMTE0Yzc0MTkwNTBmOGUzZWZhYmJhMjBhMWVlYjMzOTU2NjU3MWNjYi4u
ZjY2MTA4MDQ4NGE4NWNlNjQ3NDQwMDdkZGM3YjlhOTdhNDdkZmY3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00MCw3ICs0MCw3
IEBAIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJRCgpCiAKIFdLVVJMUmVxdWVzdFJlZiBX
S1VSTFJlcXVlc3RDcmVhdGVXaXRoV0tVUkwoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0
b0FQSShXZWJVUkxSZXF1ZXN0OjpjcmVhdGUoS1VSTChLVVJMKCksIHRvSW1wbCh1cmwpLT5zdHJp
bmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYlVSTFJlcXVlc3Q6OmNyZWF0
ZShVUkwoVVJMKCksIHRvSW1wbCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CiB9CiAKIFdL
VVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKaW5kZXggYzU0
OTE4NDBiZGEwNzE5OWEwZjZkN2NkYjk3NDY3MmE3YzM3ZWFmMy4uNDdhZmNhNDBhZDQ5ZWM0NTcz
NTA3ZmIwNDI5ZDRmNTg2YjUwMWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tV
UkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKaW5kZXggZjA0
ZWNmZDI2YzQ3NmYxYTJkMjM5YjllOWY3M2VkMDEyOWYwZWQ5MC4uNDc1NjRlYmJiYTc1NThhNWMx
YTEyYWQ5MGM2ODAzNzhkZThlOTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLmNwcApAQCAtNTQsOCArNTQsOCBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBXZSBm
aXJzdCBjcmVhdGUgYSBDU3RyaW5nIGFuZCB0aGVuIGNyZWF0ZSB0aGUgQ0ZVUkwgZnJvbSBpdC4g
VGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBDRlVSTCBpcyBzdG9yZWQgaW4gCiAgICAgLy8gVVRG
LTggd2hpY2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdo
dCBleHBlY3QuCiAKLSAgICAvLyBUaGlzIHBhdHRlcm4gb2YgdXNpbmcgVVRGLTggYW5kIHRoZW4g
ZmFsbGluZyBiYWNrIHRvIExhdGluMSBvbiBmYWlsdXJlIG1hdGNoZXMgS1VSTDo6Y3JlYXRlQ0ZT
dHJpbmcgd2l0aCB0aGUKLSAgICAvLyBtYWpvciBkaWZmZXJuY2UgYmVpbmcgdGhhdCBLVVJMIGRv
ZXMgbm90IGRvIGEgVVRGLTggY29udmVyc2lvbiBhbmQgaW5zdGVhZCBjaG9wcyBvZmYgdGhlIGhp
Z2ggYml0cyBvZiB0aGUgVVRGLTE2CisgICAgLy8gVGhpcyBwYXR0ZXJuIG9mIHVzaW5nIFVURi04
IGFuZCB0aGVuIGZhbGxpbmcgYmFjayB0byBMYXRpbjEgb24gZmFpbHVyZSBtYXRjaGVzIFVSTDo6
Y3JlYXRlQ0ZTdHJpbmcgd2l0aCB0aGUKKyAgICAvLyBtYWpvciBkaWZmZXJuY2UgYmVpbmcgdGhh
dCBVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9uIGFuZCBpbnN0ZWFkIGNob3BzIG9m
ZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKICAgICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2Uu
CiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHRvSW1wbChVUkxSZWYpLT5zdHJpbmcoKS51dGY4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3F0L1F0RmlsZURv
d25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9xdC9RdEZpbGVE
b3dubG9hZGVyLmNwcAppbmRleCBjM2IyZThkMGVlMjJhNDc3NTdkM2MwM2RhOGNhZGQzMGVkZGYy
ZWU3Li5mMTZiMGMyZTVkMDljODA3YmNlZmJjZTM1MjU2YzFhMTIzOTMzMWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRl
ci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUVN0cmluZyBRdEZpbGVEb3dubG9hZGVyOjpkZXRlcm1p
bmVGaWxlbmFtZSgpCiAKICAgICBRU3RyaW5nIGZpbGVuYW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVG
cm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1fcmVwbHktPnJh
d0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CiAgICAgaWYgKGZpbGVuYW1lQ2FuZGlk
YXRlLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKKyAg
ICAgICAgVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKICAgICAgICAgZmlsZW5hbWVDYW5kaWRh
dGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291
cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3Vw
L0Rvd25sb2FkU291cC5jcHAKaW5kZXggMTFlMGE0MWQ3NDVhODJlZWRmMzVmNjUyYzQyYjI1MDdm
MGE3ZjdlMS4uZDBlZWJiNWRlNTJiMzI5MDM4ZTAxZjVmN2U4NjhiNmU1ODRmZTE1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291
cC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgIGlmIChz
dWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEtVUkwgdXJsID0gcmVz
cG9uc2UudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJsID0gcmVzcG9uc2UudXJsKCk7CiAgICAg
ICAgICAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOwogICAgICAgICAgICAgdXJsLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwogICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3Bw
CmluZGV4IGEwZGQ0ZGM5YWM5NjZjOWM4YzA4MGZhYTcxN2M5ODZkMmUxYjlmY2YuLjQxMzBiMTUy
ZDM0NjRhNjI5MGE1ODFlMjEwZTA2MGRiYzc3NGUzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAKQEAgLTE2Myw3
ICsxNjMsNyBAQCBib29sIEJsb2JSZWdpc3RyYXRpb25EYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBCbG9iUmVnaXN0cgogICAgICAgICAgICAgU3RyaW5nIHVy
bDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXN1bHQubV9kYXRhLT5hcHBlbmRCbG9iKEtV
UkwoS1VSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgICAgICByZXN1bHQubV9k
YXRhLT5hcHBlbmRCbG9iKFVSTChVUkwoKSwgdXJsKSwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KaW5kZXggMjcyNmYxY2Nj
NTQ4ZDZjYzRlNjFhMzQ1MjU0MDkwYzNlYTQzYjQ1My4uNzk4M2E3N2ZkMzFiN2UyNjNiOWU0ZGU5
ZTJjN2NmYWI2NDA4MGU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJNYWMubW0KQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZVJlc3BvbnNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
QXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVz
b3VyY2UuY3BwCmluZGV4IGQ4NTVlM2Q5Y2NjNjFiYzdkNjQ0ODg3NTUzNmFjNWJjM2U2MWNkODku
LjA4M2IyMTA4MzI4YmNjYWJhZjU5ZDU2M2E1ZWI0NzI5NjcyYzI3M2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
ICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2Uu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBA
IC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiBXZWJBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvCiB9CiAKIFdlYkFyY2hpdmVS
ZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFdlYkRhdGEqIGRhdGEsIGNvbnN0IFN0cmluZyYg
VVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZykK
LSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIEtVUkwoS1VSTCgpLCBV
UkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCisgICAgOiBtX2FyY2hpdmVS
ZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFVS
TCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhYjY5ZmY2
MDA1NzE4YjIxNjkyNDBmYjIzNWEwY2Q5YjQwN2FlZmY5Li43NWQyYjU3NzkzZmE0MmQ1NTM0ZTYz
MGE5NTIwMDA3YmM2Y2Q0MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VS
ZQogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0VVJMKEtVUkwo
S1VSTCgpLCB1cmwpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpKTsK
IAogICAgICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwTWV0aG9kKSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVz
b3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VS
ZQogICAgICAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZmlyc3RQYXJ0eUZvckNvb2tpZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKEtVUkwoS1VSTCgp
LCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOworICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlG
b3JDb29raWVzKFVSTChVUkwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpKTsKIAogICAgICAgICBy
ZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIH0KQEAgLTUwMyw3ICs1MDMsNyBAQCBib29s
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
c3BvbnNlLnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSk7CisgICAgICAgIHJlc3BvbnNlLnNldFVS
TChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIGludDMyX3QgaHR0cFN0YXR1c0NvZGU7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQpAQCAtMTAzMywxNyAr
MTAzMywxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ1Nlc3Npb24+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBEcmFnU2Vzc2lvbiYgcgogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEFyZ3VtZW50Q29kZXI8S1VSTD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEtVUkwmIHJlc3VsdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxVUkw+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVUkwmIHJlc3VsdCkKIHsKICAgICBlbmNv
ZGVyIDw8IHJlc3VsdC5zdHJpbmcoKTsKIH0KICAgICAKLWJvb2wgQXJndW1lbnRDb2RlcjxLVVJM
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgS1VSTCYgcmVzdWx0KQorYm9vbCBB
cmd1bWVudENvZGVyPFVSTD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFVSTCYg
cmVzdWx0KQogewogICAgIFN0cmluZyB1cmxBc1N0cmluZzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybEFzU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdCA9IEtV
UkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmxBc1N0cmluZyk7CisgICAgcmVzdWx0ID0g
VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsQXNTdHJpbmcpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVy
bCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlVzZXJTY3JpcHQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb3IKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2MzBiNmI2Y2M2
NGE2MDg5ODQ3Y2NkMDU0OGJiMjI3NmUwNDlhNDNlLi4zYjBiYTlkZjNkY2U2MjQ2Y2E1ZTg3MWFl
MGM0ZjlkMDcyNWMwODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgS2V5ZnJhbWVWYWx1
ZUxpc3Q7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm90aWZp
Y2F0aW9uOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAgICBjbGFzcyBSZXNvdXJjZUVy
cm9yOwpAQCAtMjU1LDkgKzI1NSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6RHJhZ1Nlc3Npb24+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6RHJhZ1Nlc3Npb24mKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OktVUkwmKTsKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VVJMPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpVUkwmKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA5YzM1MTUwNzE3ZmE1
OGU1ZDc0NTRmMzQwNTc3MWFhNzg4YTZmNTA1Li5jOWQ4NGMwNDJlZGViYjBiNmY1ZjgxNzFhM2Zi
ODIwNzQ2ODU3NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQu
Y3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IDI3YTc0NGUyMTVmYjM2ZmQ2Njc2OTQ4M2Uy
ZWQ3ODU0MWQ2ZDIxYzAuLmQ3NjE2ZDJlZDMxMWRhOTJhMzM4ZjZhMTkxMWY2NGVlOGVkNTg2YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgV2ViVVJM
X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ2
LDExICs0NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVUkw+IGNy
ZWF0ZShjb25zdCBXZWJVUkwqIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVVUkwpCiAg
ICAgewotICAgICAgICB1c2luZyBXZWJDb3JlOjpLVVJMOworICAgICAgICB1c2luZyBXZWJDb3Jl
OjpVUkw7CiAKICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwogICAgICAgICBiYXNlVVJMLT5wYXJz
ZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIEtVUkwqIGFic29sdXRlVVJMID0gbmV3IEtVUkwo
KmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAgICAgIFVSTCog
YWJzb2x1dGVVUkwgPSBuZXcgVVJMKCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRp
dmVVUkwpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVVJMKGFkb3B0UHRyKGFi
c29sdXRlVVJMKSwgYWJzb2x1dGVVUkwtPnN0cmluZygpKSk7CiAgICAgfQpAQCAtOTAsNyArOTAs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBXZWJVUkwoUGFzc093blB0cjxXZWJD
b3JlOjpLVVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAgIFdlYlVSTChQ
YXNzT3duUHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRVUkwocGFyc2Vk
VVJMKQogICAgIHsKQEAgLTEwMCwxMSArMTAwLDExIEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcGFyc2Vk
VVJMID0gV1RGOjphZG9wdFB0cihuZXcgV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIG1f
c3RyaW5nKSk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gV1RGOjphZG9wdFB0cihuZXcgV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBtX3N0cmluZykpOwogICAgIH0KIAogICAgIFN0cmluZyBt
X3N0cmluZzsKLSAgICBtdXRhYmxlIE93blB0cjxXZWJDb3JlOjpLVVJMPiBtX3BhcnNlZFVSTDsK
KyAgICBtdXRhYmxlIE93blB0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAK
aW5kZXggNDhhY2YzNzliZWMyY2U2MjU2MzliYWZiNmNmMThjNWIyYWNlMjEwZC4uMzA3MmY5NWU5
ZjhlZmY1MzFiMzQ0NmZlYjViMzlmMDQzMjc2YmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJVUkxSZXF1ZXN0LmNwcApAQCAtMTYsNyArMTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2Vi
VVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8V2ViVVJMUmVx
dWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgV2ViVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNGY4YWVmZmZjMzVlN2RkYWVj
YTJjYWE2MWY0MTdjZjk3NWJiZjYzNi4uOWYyZjRmNzA1YzliNzVhOTYzY2MxMjgxOWE5YmVlOTcz
MjhiNmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCkBAIC00MCw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJVUkxSZXF1ZXN0IDogcHVibGlj
IFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVUkxSZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
S1VSTCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oCmlu
ZGV4IDVjMDhiODBmOWE1OGY3MWIzNjdhNmRhNGY4YTlkNTg3ZDMyOWE4YTUuLmIzM2Y0OTc3MTZk
ZGYxOTdmYTUyMGNhNjFkMTBiNzhjMGMwODQ4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmhvc3Qo
KTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
LnNjaGVtZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJu
LmlzVmFsaWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNv
bnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFy
c2VkVVJMU3RyaW5nLCB1cmwpKTsgfQorICAgIGJvb2wgbWF0Y2hlc1VSTChjb25zdCBTdHJpbmcm
IHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5z
KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBj
b25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJp
bmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2Rl
cnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKaW5kZXggZjdlNzZlNzY0OGFiZmYwNDk1MzQwZTExZjJkMDUwMmYxNjY2NjI5Ni4uNmUwMWY0
OGU5ZWRlOGVlMzA2ZTY2OWQwNzc4NGEwYWZiZGU2MDNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBz
dGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVm
UHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSwgU3RyaW5nKCkpOworICAgICAgICBkYXRh
LT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJpbmcoKSk7CiAgICAgfQogCiAgICAgYm9vbCBo
YXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVT
dG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmNwcAppbmRleCA3ZTZhOGMxMzM3OGQ5YWM4NTBiYjBlOTY4NzBhM2M1NWFiMWVkMGJjLi4w
MGJiMTRiZWEwMjc4ZDE1YzQzZGRlMWVjOWVkNWVmNjg5NWJjZWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGRsZmNu
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIENGRGljdGlv
bmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVmIGluUmVxdWVz
dFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAgICBLVVJMIGZpcnN0UGFydHlGb3JDb29r
aWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VSTDsKICAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNVUkwsIGluUmVxdWVz
dFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0d29ya1JlcGx5RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAppbmRleCA1MTY0MWVk
YjRlYmE1MGEyNGJlN2UzNDY1YTcyMjkwMjUzMWM1Mjk1Li5iODM1YWYyYjJiZThlNTFlZjczMjFk
ZjgyNTBlZjcyNGI5MWE0ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQv
UXROZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXRO
ZXR3b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlF0TmV0d29y
a1JlcGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNRdC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vz
c01hbmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWE1ZDRmNWEyMzdkOTk5NGViMmRlZjBkOTYy
NjdiYjM3MDkuLjM4NGJkMzc0MmQ5OTQ5YTkwYjNmNGQ1ZWY0NmY4MDA3YjQ5ZThlMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVl
c3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3Vy
aShXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiB1cmkpCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwodXJpKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJs
KFVSTCgpLCB1cmkpOwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1
ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGI4Y2EwMDJmMTQ3ZjMxMGJmMTlh
OGJhMTBmODJmNzIzZDI3NmU4ZTYuLmFhMjU0ZDgxM2U0OTY3NTlkNTNlNWYzYzdlOTcyMTQ1NzRl
Mzg4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJ2aWV3LmNwcApAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogCi0gICAgUVVy
bCB1cmwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHdlYlBhZ2VQcm94eS0+dXJsQXRQ
cm9jZXNzRXhpdCgpKSk7CisgICAgUVVybCB1cmwoVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmlu
Zywgd2ViUGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkpKTsKICAgICBxV2FybmluZygiV0FS
TklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJp
bnRhYmxlKHVybC50b1N0cmluZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKIAogICAgIHBhZ2VF
dmVudEhhbmRsZXItPnJlc2V0R2VzdHVyZVJlY29nbml6ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmlu
ZGV4IDVkOWM0YjJlYTNjYzRkMzg4YzM0YjdjOTU4NWM3NjdjOTJjOGRlNjguLmMwMjZkNzc0NDY0
YWM5Zjc0Y2EwOWFkNjRjMTRlMGI1NGFlMDYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIHNpemVfdCBIVFRQUmVxdWVzdDo6cGFyc2VSZXF1ZXN0TGluZShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhCiB7CiAgICAgU3RyaW5nIHVybDsKICAg
ICBzaXplX3QgcmVzdWx0ID0gcGFyc2VIVFRQUmVxdWVzdExpbmUoZGF0YSwgbGVuZ3RoLCBmYWls
dXJlUmVhc29uLCBtX3JlcXVlc3RNZXRob2QsIHVybCwgbV9odHRwVmVyc2lvbik7Ci0gICAgbV91
cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgSFRUUFJlcXVlc3Q6OkhU
VFBSZXF1ZXN0KCkKIHsKIH0KIAotSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBIVFRQVmVyc2lvbiB2ZXJzaW9uKQor
SFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29u
c3QgVVJMJiB1cmwsIEhUVFBWZXJzaW9uIHZlcnNpb24pCiAgICAgOiBtX3VybCh1cmwpCiAgICAg
LCBtX2h0dHBWZXJzaW9uKHZlcnNpb24pCiAgICAgLCBtX3JlcXVlc3RNZXRob2QocmVxdWVzdE1l
dGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvSFRUUFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvSFRUUFJlcXVlc3QuaAppbmRleCA3MTllMjQxMTRkYTA2MDk3MmNiZWRjZDM1NjFmNDVhZGI1
ZmJmMGY0Li5lY2RhMTRlOTliYzA1MTM5Zjg0NTM5ODYzMGM2NmMzNzU5NDI5MWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVx
dWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJN
YXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEhUVFBSZXF1ZXN0PiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBS
ZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBWZXJzaW9uIHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0TWV0aG9kLCB1cmwsIHZlcnNpb24pKTsgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1
ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6SFRUUFZlcnNpb24g
dmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhUVFBSZXF1ZXN0KHJlcXVlc3RNZXRob2Qs
IHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHBh
cnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAgdmlydHVhbCB+SFRUUFJlcXVlc3QoKTsKIAog
ICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0TWV0aG9k
OyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKSB7IG1f
cmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQogCi0gICAgV2ViQ29yZTo6S1VSTCB1cmwoKSBjb25z
dCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCkgeyBtX3VybCA9IHVybDsgfQorICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSB7
IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHko
KSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtNjIsMTQgKzYyLDE0IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1ZXN0KCk7Ci0gICAgSFRUUFJlcXVlc3QoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgV2ViQ29yZTo6SFRU
UFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOwogCiAgICAgLy8gUGFy
c2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RMaW5lKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAgc2l6ZV90IHBh
cnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1
cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RCb2R5KGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3Jl
OjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6SFRUUFZlcnNpb24gbV9odHRwVmVyc2lvbjsKICAg
ICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9o
ZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggY2JiZDczZjY2
NjBjYmE3MzUyODg1NDMyMTUyY2JhZmI1MGMwYWQ2ZC4uY2U1MzY4NGFiMzQ4NDA4ZmI5ZjBjZTY0
NDI4NDVlODFkMDQwZjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2FnZU92ZXJDb25u
ZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sCiB2b2lkIFdlYkluc3BlY3RvclNl
cnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJlcXVlc3QpCiB7
CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMgb25seSB0aGUgcGF0aCBleHRyYWN0ZWQg
ZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAvLyBhbmQgS1VSTCBpcyBwb29yIGF0IHBh
cnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0IHRoZSBpbnRlcmVzdGluZyBwYXJ0cyBt
YW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQgcGFyc2luZyBpbmNvbXBsZXRlIFVS
THMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRzIG1hbnVhbGx5LgogICAgIFN0cmlu
ZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6ZV90IHBhdGhFbmQgPSBwYXRoLmZpbmQo
Jz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4IDg2Y2JiYWRi
ZGVjNzQzODk1ZjkzODZiMjQwMjIzOWM2MzJkMTE4YjAuLjUxY2ZlZTlkNmY4YWJkZmI0M2YyOWEx
ZTIzNmQxZDFlMmFmMDJlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTU4LDcgKzE1OCw3IEBAIFBsdWdpbk1v
ZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUluZm8oKTsKIH0KIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMg
aW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmlu
ZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6
OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKQogCiAjZW5kaWYK
IAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMg
YWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZp
bmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwsIFBsdWdpbkRhdGE6OkFs
bG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMpCiB7CiAgICAgbG9hZFBsdWdpbnNJ
Zk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDljZWE3YjlhYjFkODdiYWI3MWU2MzNhNTk4
ZmFiMWRlMTA0NmFlLi5jZWU3MTg0ZGQ2MDVlNGUxMzQ4YTM3MzA5MjE5NmM5NWQzOTg2NmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4g
TUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUgZXh0
ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAgIC8v
IHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBpbiB3
aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2lu
KFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpQbHVnaW5E
YXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxQbHVnaW5z
KTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVz
ID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CiAKICAgICAvLyBSZXR1cm5zIHRo
ZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllci4K
ICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5k
ZXggYWMzZGRhOGUyN2YxZWViNzI4Y2Y4MjMwNzAzOWRkZTM1MzdkNDQ4OC4uN2IwYzE0YjMwYTJk
M2Y1NzY1YWQzMTA4ZWM0NWNkZGE3YTg5OWNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1t
CkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNp
bXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lz
dGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8
Y3J0X2V4dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC00NjIsMTAgKzQ2Miwx
MCBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgYm9vbCYgcmVzdWx0LCBpbnQzMl90JgogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBD
RlVSTFJlZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJlZihLVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmdldCgpLCAmbGF1bmNoZWRV
UkwpOworICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAgIGlmIChs
YXVuY2hlZFVSTCkgewotICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IEtVUkwobGF1bmNoZWRV
UkwpLnN0cmluZygpOworICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVuY2hlZFVS
TCkuc3RyaW5nKCk7CiAgICAgICAgIENGUmVsZWFzZShsYXVuY2hlZFVSTCk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
ZjJiODEzNTc2MjY1Mzg1M2FlMzkxZDMwMjEwN2JjY2QwYWU1MWMyYS4uMmQyZjNiMzRmMmUxOTE2
M2JmMDRhNWI0MTQ0M2E0MjY2MjFlMTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMTYsOSArMzE2LDkgQEAgYm9vbCBXZWJJbnNw
ZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKIAogc3RhdGlj
IGJvb2wgaXNNYWluSW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5z
cGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIC8vIFVzZSBL
VVJMIHNvIHdlIGNhbiBjb21wYXJlIGp1c3QgdGhlIHBhdGhzLgotICAgIEtVUkwgaW5zcGVjdG9y
VVJMKEtVUkwoKSwgd2ViSW5zcGVjdG9yUHJveHktPmluc3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAg
S1VSTCByZXF1ZXN0VVJMKEtVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CisgICAg
Ly8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4KKyAgICBVUkwgaW5z
cGVjdG9yVVJMKFVSTCgpLCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yUGFnZVVSTCgpKTsK
KyAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CiAK
ICAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChpbnNwZWN0b3JVUkwucHJvdG9jb2woKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5j
cHAKaW5kZXggMjg4YTczNmZiMDMyNzQzMDI4MThmNzZjMzFhMmJjNzI5NDA3MjVhNC4uNTZkMjAx
YWYwM2VmZjc0OWFhMDFmYzE4Y2VlZTEyOGM5YWY1NTBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVVUkxzQXJyYXkp
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgV2ViVVJM
KiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5LT5hdDxXZWJVUkw+KGkpOwogICAgICAgICBpZiAod2Vi
VVJMKSB7Ci0gICAgICAgICAgICBLVVJMIHVybChLVVJMKCksIHdlYlVSTC0+c3RyaW5nKCkpOyAK
KyAgICAgICAgICAgIFVSTCB1cmwoVVJMKCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKICAgICAgICAg
ICAgIGZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApp
bmRleCAwY2RiZjgxN2RkZWMwOTU4YjYwM2FiZDdkY2I2NzA0MTA3ZTc4NDU5Li43NTUzZWVlMDNm
NzFiODQyZGQ1NjY4NTAwYmMzZTMwZmVlZTcxM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgV2ViUGFnZUdyb3Vw
OjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBi
YXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0ID0gV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5KCkgPyBXZWJDb3JlOjpibGFua1VSTCgp
IDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIGJhc2VVUkwpKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMs
IGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVTaGVldCA9IFdl
YkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJhc2VVUkwuaXNFbXB0eSgpID8gV2ViQ29y
ZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFzZVVSTCkpLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRhLnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQo
dXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3JvdXAoTWVzc2FnZXM6
OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVTaGVldCksIG1f
ZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBXZWJQYWdlR3JvdXA6
OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2ViQ29yZTo6VXNlclNjcmlwdChzb3Vy
Y2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpL
VVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3Qp
LCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1l
cyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2ViQ29yZTo6VXNlclNj
cmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hp
dGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0
ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3JpcHRzLmFwcGVuZCh1c2VyU2NyaXB0KTsK
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94
eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9kYXRhLnBhZ2VHcm91cElEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjA5MmYyOTNkMjk5ODAx
ZTU2NWNkODgxMjRlOTE2M2ZkZGE1ZGIwMC4uYjA2NjJlZGQyNGI0NDAyZTdiMTExZGMxMmM1MzA0
ZmI4ZjZkNGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29sIFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0
aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVybCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGlmICghdXJsLmlz
TG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3OSw3ICs2NzksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgQVBJT2JqZWN0KiB1
c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGJvb2wgY3JlYXRl
ZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoS1VSTChL
VVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRlZEV4
dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgp
LCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVuc2lv
bikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJv
eEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9h
ZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRleHRVc2VyTWVzc2FnZUVu
Y29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAtNzA2LDE1ICs3MDYsMTUgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRhY2hU
b1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVSTCA9IEtVUkwoS1VSTCgpLCBmaWxlVVJM
U3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAg
ICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtV
UkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJMOwog
ICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwoKSkKLSAgICAgICAgcmVz
b3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgQVNDSUlMaXRlcmFsKCJm
aWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoUGFyc2VkVVJM
U3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwogICAgIGVsc2UgewotICAgICAgICBy
ZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0
cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNvdXJj
ZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlVUkwu
aXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTcsNyArNzk3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4pCiAg
ICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKICAgICAgICAgLy8gV2UgbWF5
IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJkIGxpc3Qgd2FzIHJlaW5z
dGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3NlciByZWxhdW5jaAotICAg
ICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAg
ICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFj
cXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKICAgICB9CkBAIC05NTIs
NyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAg
ICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBw
bHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdp
bihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1f
cHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVU
eXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSAmJiBtX3BhZ2VHcm91
cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xNDI5LDcgKzE0Mjks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQbHVn
aW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlw
ZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zID8gUGx1
Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRhdGE6OkFsbFBsdWdpbnM7
Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1
Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJMKCksIHVybFN0
cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4g
PSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdN
aW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1Z2luVHlwZXMpOwogICAg
IGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vzc1Rva2VuID0gMDsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWls
YWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247CiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0g
bWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJM
KCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0gbV9w
cm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5
cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5mb3JtYXRpb24g
PSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmlu
ZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5n
LCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAgLTMwMDcsNyArMzAwNyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxB
Y3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgbV9iYWNrRm9y
d2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4OSwxNSArMzI4OSwxNSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJ
dGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBD
b250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vz
cy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0
TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0
TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKICAgICAgICAgcmV0dXJu
OyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3du
bG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHRE
YXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93
bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51SGl0VGVzdFJlc3VsdERh
dGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0
ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewot
ICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgS1VSTChLVVJMKCks
IG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBVUkwoVVJMKCks
IG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4
dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CkBAIC00MTU3LDcgKzQxNTcs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlw
ZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5w
bHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgcGx1
Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJM
KFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0
ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1l
VHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1
cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNmY2RmMWU3MmVhMmM2ZTNiOTRkNmQ2YWNi
MzZkZjBkNTQ5Y2RmLi4zNzllYWRjOWE0OWM3MzVkMzg4NDljMzJmMTIzZDQ0YTY5NGUzNThkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE0LDcgKzEwMTQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCgpIHsgbV9w
ZW5kaW5nQVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRQZW5kaW5nQVBJ
UmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKSB7IG1fcGVuZGlu
Z0FQSVJlcXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCi0gICAgYm9vbCBtYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRpb25zUGFu
ZWxJc1Nob3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAzNDNhZjNjNzQ0M2Q0Y2E0ZTVjNmUyNzE3Njk2NmUzMWExYzIyMTlk
Li5kNmI2NmE3ZTM1OWI0M2EyODEwYjk5ZTUwZjBlYmJjNzg5ZTQ2Y2NmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDEsNyArNDEsNyBAQAog
I2luY2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5j
bHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9u
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSoKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jh
c2VVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCB1
cmxTdHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwu
aXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5j
ZSB0aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBH
ZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFj
Y2Vzcy4KLSAgICBLVVJMIGJhc2VVUkwoS1VSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOworICAg
IFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwogICAgIAogICAgIC8vIENs
aWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVy
c2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8g
aGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgpAQCAtMjQwLDEwICsy
NDAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VS
TFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAg
cmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhLVVJMKEtVUkwoKSwgdXJsU3Ry
aW5nKSk7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJM
KCksIHVybFN0cmluZykpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNl
aXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5
OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIGNoZWNraW5nIHRoYXQgdGhlIFVSTCBpcyB2YWxpZC4gQ3VycmVu
dGx5LCBXZWJQcm9jZXNzIHNlbmRzIGludmFsaWQgVVJMcyBpbiBtYW55IGNhc2VzLCBidXQgaXQg
cHJvYmFibHkgZG9lc24ndCBoYXZlIGdvb2QgcmVhc29ucyB0byBkbyB0aGF0LgogCkBAIC0yNTYs
NyArMjU2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2Vi
UHJvY2Vzcyhjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
SWYgd2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9yZSwgbG9hZGlu
ZyByZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgotICAgIC8vIFRoZXJl
IGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBX
ZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBLVVJMLCB3aGljaCByZW1vdmVzIHRob3NlLgorICAg
IC8vIFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2
ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBVUkwsIHdoaWNoIHJlbW92ZXMgdGhv
c2UuCiAgICAgU3RyaW5nIHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBmb3IgKEhh
c2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbG9jYWxQYXRoc1dpdGhBc3N1
bWVkUmVhZEFjY2Vzcy5iZWdpbigpOyBpdGVyICE9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVh
ZEFjY2Vzcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoKml0
ZXIpKQpAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIEl0ZW1zIGluIGJh
Y2svZm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCiAgICAgLy8gT25lIGNh
c2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBp
biBiL2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVlbiByZWluc3RhdGVkIGFmdGVyIGEgY3Jh
c2ggb3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9yIChXZWJCYWNrRm9yd2FyZExpc3RJdGVt
TWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJlZ2luKCksIGVu
ZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikg
ewotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT51cmwoKSkuZmlsZVN5c3Rl
bVBhdGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJs
KCkpLmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxl
U3lzdGVtUGF0aCgpID09IHBhdGgpCisgICAgICAgIGlmIChVUkwoVVJMKCksIGl0ZXItPnZhbHVl
LT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaAppbmRleCAwNWQ4ODM5YWE1ZTBmYWU4ZDFhYjY5ODdhMGNkYmNiNzEyYzkzNjFhLi4x
Zjg0OTczOWVjZDk3MTBhYTE3NGI5MmY4ZmUwMGNhYzYzNDU4ZGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBQ
bHVnaW5JbmZvOwogfTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIGNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGNoZWNr
VVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9v
bCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAK
ICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCAwZWI1Yjc3NDdi
MjcwMjhmM2U5YzA0OTJiYjdiODAyNGI2YWE2Y2FlLi43MzUwNzk2NDA4ZWNjZTZjYjJhYWJlYjYx
OTMwOGQxNTlmYWYxNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWFjLm1tCkBAIC02MDAsNyArNjAwLDcgQEAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiBib29sIFdlYkNvbnRleHQ6OmlzVVJMS25v
d25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKSBjb25zdAogewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA5MAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gS1VSTChLVVJMKCksIHVybFN0cmlu
ZykuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwo
KSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpOwogCiAgICAgcmV0dXJuIF9DRk5ldHdvcmtJc0tu
b3duSFNUU0hvc3RXaXRoU2Vzc2lvbih1cmwuZ2V0KCksIHByaXZhdGVCcm93c2luZ0VuYWJsZWQg
PyBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgOiBudWxscHRyKTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNw
cAppbmRleCBkNWY4Y2Y1YmJkOTkwOWQ4ODRlZDYzMTE5ZWE0YzlkMjZjODE3MTI4Li45M2ZjMDEw
MGQzZjYyMmRlZjJlYzBjNzZmYThiOTEyN2RlYzQ0NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM5
LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQordm9pZCBCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRh
PiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgQmxvYlJlZ2lzdHJhdGlvbkRhdGEoYmxvYkRh
dGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJv
eHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7
CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
IAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lz
dGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBCbG9iUmVn
aXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNT
RVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
aAppbmRleCA2M2QwZGE0MDA4NTJkZTQwZDcyNzVlNzJmMDc0MzViOTMyZWJmNDI2Li5jMTUxYzEx
ODUzNTUzNDViZTVkMzBiZDA3MWQ4ZWQ5NzUzYmM2ZTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzQsOSAr
MzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6
OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc093blB0cjxXZWJD
b3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpOworICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDAyNDk2NGE2YzU2NzE3NGNiNzJjZTE1
MTViODg0OTE1N2JkNGUzNWIuLjBlMDQwMmI1MTViMWM2MzllZDI4ZDJlYTNkY2FkMDc5MDZkNmNi
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBA
IFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmso
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6OktVUkwoV2Vi
Q29yZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAgcmV0dXJuIHRvSW1wbChm
cmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgp
LCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUhhbmRsZXNQ
YWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0yMDQsMTIgKzIw
NCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJh
bWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0
b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXZWJD
b3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JS
ZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1
cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9y
UmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJl
ZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVG
b3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIHRvV1RGU3Ry
aW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZikt
Pm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
dG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lQ29udGFpbnNB
bnlGb3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAppbmRleCA2OTE1ZDkwMDAyNmQ0ZmEzNjkyNGE5NTE0MWEzOWYyOGNhNjJl
Nzk4Li45MTlmZmM3ZTZiMGUzN2MwN2Q4NWU5NDAyN2Y4MmEwYmNlNGYyNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0
b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6
OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJl
ZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RG
U3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0
KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBj
OGMwNzdlMjlhNmU0MjE4YTc5YWE3NWI0MmIzZmNiYjI2NGUwNGEyLi4xOTI1ZjQ4NzQ5ZjdhZDhl
YzhkNTRjN2E0YWM4MWRmNjY0ZTg5NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDky
LDI2ICs0OTIsMjYgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0
YWJsZUFycmF5KiBwYXR0ZXJucykKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlw
dChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
KiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJ
bW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJD
b3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2Vy
Q29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIC8vIHVybCBpcyBu
b3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJz
ZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3Rv
ciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAg
ICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJT
Y3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKEtVUkwo
KSwgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIC8vIHVybCBpcyBub3Qg
ZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBi
eSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9y
IFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdl
R3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRU
b1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCks
IHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGlu
amVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25z
dCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkq
IGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZy
YW1lcykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20gS1VSTDo6c3RyaW5nKCksIGkuZS4gaXQg
aGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IEtVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRo
ZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIEtVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2Vk
VVJMU3RyaW5nVGFnIHZlcnNpb24uCi0gICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3Vw
LT5pZGVudGlmaWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNv
cmVXb3JsZCgpLCBzb3VyY2UsIEtVUkwoS1VSTCgpLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CisgICAg
Ly8gdXJsIGlzIG5vdCBmcm9tIFVSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5
IGJlZW4gcGFyc2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBj
b25zdHJ1Y3RvciBmb3IgVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJz
aW9uLgorICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+
YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNl
LCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVj
dG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0g
ICAgLy8gdXJsIGlzIG5vdCBmcm9tIEtVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxy
ZWFkeSBiZWVuIHBhcnNlZCBieSBLVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUg
VVJMIGNvbnN0cnVjdG9yIGZvciBLVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1Rh
ZyB2ZXJzaW9uLgotICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmll
cigpKS0+cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCks
IEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmco
KSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZl
IHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0
aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAo
cGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlw
dFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91
cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYg
dXJsKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBo
YXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhl
IHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRV
UkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAt
PmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxk
LT5jb3JlV29ybGQoKSwgS1VSTChLVVJMKCksIHVybCkpOworICAgIC8vIHVybCBpcyBub3QgZnJv
bSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBV
UkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVS
TCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsK
IH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3Vw
UHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQp
CkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBjb24KIHsKICAgICBjb25z
dCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAt
PmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0
b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKLSAg
ICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwo
S1VSTCgpLCBsb2NhdGlvbikpOworICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBsb2NhdGlvbikpOwogfQogCiB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNv
bnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMTdlMmU5NjRmZmExMjYzODhkMGNh
MzVlYzMxOWY0ZDY4YzgyZjFkNS4uZWY5MmQ5YjY4ZDc3ZmUzZTkyNTgxOGM3NGQyYmZlN2RhZTU5
YzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCAx
ZjgwYjIwZmNlNDgzYjZlMmIyYzczMmE0M2I4YmJlMzJjNWUxZDcxLi4zYzk3MDBkYTQ2MTQ5N2Qy
MzM0YzU2MTIxNzVhYWQ5MjE1Njk5YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAg
c3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJl
ZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWRE
YXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmpl
Y3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElP
YmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVz
dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZTM3ZTFjMmY4NjVhMmZlZmNmYzYxMGU5NTQwMTZhMzcz
MC4uYzUzODY4MjNlMWQ3MjI2NTMwZjY1Nzc0ZmI2ZjhlZWEzMTBiMzg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBE
T01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQs
IGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVibGljOgogICAg
IHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2Vi
UGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFn
ZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiwgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMTJhZTIzYmVlMGY3MGU4NGQzYTA0ZTNi
YmI3NGZhZjg0ZmU5YzJiYi4uNDUxNjNlMGNjYmE3Y2YyODg3ZTZiZDdkMzQ2NjM5ZDYxODAzYzYx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
Ojpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwm
KQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmlnaW4gcmVkaXJlY3RzIGVudGlyZWx5IHdp
dGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8gV2Ugb3ZlcnJpZGUgdGhpcyBjYWxsIGlu
IHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCA1NWY2ZTMxN2QzYWQ0OTIxNjBmYjMwOGFlMWE5MzhlNDkzZWJjMThkLi43ZWUyYTdl
ZDEzYjEyMzJkZTAwZGY5MjdmYjZiZjZjODQ5ODEyZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9h
ZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xp
ZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVSTCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIE9WRVJS
SURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eVZlcnlMb3cpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cAppbmRleCAyMDU0ZGY5MjJlZmQxNTYxMWIzNzYyN2VmMjYzYmIxNzA3ZmEyNjgxLi5jNGJhODM1
NGEyMTg2MDFhZmU5NmE5OWY0YjI1ZWU4ODE3N2MxYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTc5MCw3ICs3OTAsNyBA
QCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdHJpbmcmIHJlcwogICAgICAgICBwbHVnaW5TdHJlYW0tPnNlbmRKYXZh
U2NyaXB0U3RyZWFtKHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dl
c3RlZEZpbGVOYW1lICovKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CkBAIC04MjMsNyAr
ODIzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJl
YW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkRmFpbCh3
YXNDYW5jZWxsZWQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2Vz
dGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKaW5kZXggNjUxZGM0ZDBlMjFkYWExYTFlMGMwMWFkOTYwMDFhM2MyMzQ1YzFiMS4u
NGMxMzdhYTU3MTAzMjE2NzJlYjJhZDhlYWNiODhlZGQ1MzEwNGVlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKQEAgLTE5MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwg
dm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMGFlNDRjM2NiNDc4OGNmMTY0
OTEyY2I2YmZiODc3NWU0ZjZiNjMwYS4uYjE5YzEyYjZhZjgyM2Y1ZmRlYzg0MzNiNmE1MmJhYTM5
NTdlM2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC02Myw3
ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp+TmV0c2NhcGVQbHVnaW5TdHJlYW0oKQog
ICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9
CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBL
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMp
Cit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7
CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0cmVhbSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJl
YW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVm
PE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmgKaW5kZXggZmZhNTVjYjI1ZDhjZDg3NDQ2YmE4MzdmZDM5MGU4M2I4YzRh
N2I3Mi4uYjM1MDE4NjM1NmU0OTU2MDNmNGNlMDJmMTk5NGU4Yjk5MzkxYzE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYsNyBAQCBwdWJs
aWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25zdCB7IHJldHVybiBtX3N0cmVhbUlEOyB9
CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gJm1fbnBTdHJl
YW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycyk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBiMjliZWM2MjYyODAwODYwZWYyNjNk
ZDI2ZjY1NDBlMTRmNTUwZGU4Li41NDExOTc0NzY5ZTdjMGE3ZjMzMzViZTAzZjFiOGU0OTNlNTcx
YjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0Nh
bmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFt
SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJM
LCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5n
dGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2Fk
aW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9v
bCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAK
ICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OktVUkwgbV9zb3Vy
Y2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1fc3Vn
Z2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
bW0KaW5kZXggN2MzNDU0YmQ0ZGVjNDAwODEyOWIwNjg5ZDIyYzA2NGUwYzE0YTBiYS4uZmEzNjE3
Mzg1ODc3NjFhMzRjMzFiNGQ5NmM5YWY4NTE3OTQ5N2NiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkxNyw3ICs5MTcs
NyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAgICAgY3JlYXRl
UGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYsIHVpbnQzMl90LCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9
PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQp
CiAgICAgbV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIG1fc3VnZ2VzdGVkRmls
ZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXggMWQ5ZTk3YzBh
ZGZmNjg1Yzk1NTNiZDg0MThkNjI2OTEyMzgyMTBiZS4uZjdmMGQzYzliOWM2MDYxNDI5OTJjMjk2
YTI4ODI0ZDU0ZDM2MTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xMTMsMTEgKzExMywxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVx
dWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRl
SmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmlu
aXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURp
ZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOwog
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdmly
dHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAot
ICAgIFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNl
VVJMOwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggZDc5NGYwMjlhN2Iy
NDg2MDk3NDJlNDZmMjNmMmEzYzA3NmZjOTNjMS4uZDkzMGZiODU4MTk5OWY2ZDllMzExZDZiY2U4
OTVjODhmMWU2OTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lk
IFNpbXBsZVBERlBsdWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogICAgIG1f
ZGF0YSA9IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKG1fZGF0YSk7CiB9CiAKLXZvaWQgU2lt
cGxlUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IEtVUkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNp
bXBsZVBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQp
OwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46OnN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fZGF0YS5jbGVh
cigpOwogfQogCi12b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNp
bXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1l
ID0gc3VnZ2VzdGVkRmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAKaW5kZXggOTBlNWU3NmNkMTNlY2VhNTljZjNiOGUzNzc5NTEzNWQ5YmE3
ZTQ0MC4uZTg5ZjkxMTk4MjI3NjJjNzM4YTFhYzM2Nzc1MTQwZjkyODk3YjZiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgYm9vbCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybFN0
cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYXNz
dW1lIHRoYXQgdGhlIHVybCBwYXNzZWQgaW4gaGVyZSBpcyB2YWxpZC4KLSAgICBwYXJhbWV0ZXJz
LnVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHBhcmFtZXRlcnMu
dXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIAogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBmOGRlNWE3OTA3MjI3
YTI5YzM5ZDBjMmNhNjJlYWVhM2EwYzIxOWU4Li5kOThkYTZjOTIxNzk2YjZjYzM0ODdiMmQ3OWJh
ZWIxOTk1YTFmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xs
ZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7
CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewotICAgICAgICBXZWJDb3JlOjpLVVJM
IHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
bmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAgU3RyaW5nIG1p
bWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1
bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIHJl
Y2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBz
dHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2Fu
Y2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwg
c3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQg
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFs
IHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggMjlkYWNiMzNkYzFiNzU4NzQy
NGUwMzc4YzIxYWU0NGJiNDdlNDk2ZS4uMTUxZDNmYzRlNjUyYWNmOTU3N2IyNTc3MTAyNTVhNzUw
ZTMxZWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHR5cGVkZWYgdm9pZCogTlBJZGVu
dGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAg
ICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBj
bGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGE4ZGU4YjI5NTBlMGU4MzJhNmU0ZjRm
NTlkYzJhNjc2YjVlNWRmZjYuLjhhOGYyNzIzNDVmYjQ5OGFiMDFmNjcxZWIxOTMzOTg5YThmNmU1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRpZEV2YWx1YXRl
SmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdURjo6U3RyaW5nJiByCiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJlcXVlc3RJRCwgcmVzdWx0KSwgbV9wbHVn
aW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVu
Z3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFu
Y2VJRCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlk
RmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
U3RyZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2VsbGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlE
KTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICov
KQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0
cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJz
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIzOTUyMzE1OGFjMzVkZGU0NDhiY2NmOWJk
NzQ2MTY1ZTMzZGU0Zi4uMDY2N2Q0OWQ0MzllNzM5OWE4ZmJkYTU2Y2QyM2FlMGRmNGI3NmU2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTg4LDExICs4OCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVE
aWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBX
VEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAg
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBkMzY4M2U3NDEzYmQxNTNmOWQ1NjZmYWQ4MjYwZTQ5ZTRhOTQ3YTVj
Li5kYWQxZDA2YjA2NTJlZjM1NmRkYjIwYjRkOWQyOWY5NDQyMGE3ZjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yMTIsNyAr
MjEyLDcgQEAgc3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgc3RyZWFtIHJlbGF0ZWQgZGF0YSBm
cm9tIHRoZSByZXNvdXJjZSByZXNwb25zZS4KLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9
IHJlc3BvbnNlLnVybCgpOworICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51
cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsK
ICAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCk7CiAgICAgCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogICAgIH0KIAogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxhdGVkIGRhdGEg
ZnJvbSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UuCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwg
PSByZXNwb25zZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9uc2Uu
dXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7
CiAgICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpOwogICAgIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgU3RyaW5nIFBsdWdp
blZpZXc6OnVzZXJBZ2VudCgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgIAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlckFnZW50
KEtVUkwoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51c2VyQWdlbnQo
VVJMKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCAKQEAgLTE0ODksMTggKzE0ODksMTggQEAgU3RyaW5nIFBsdWdpblZpZXc6
OnByb3hpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgY29uc3QgRnJh
bWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7
CiAgICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxvYWRlciA/IGZy
YW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChLVVJMKEtVUkwoKSwgdXJsU3Ry
aW5nKSwgY29udGV4dCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBw
cm94eVNlcnZlcnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKICAgICBy
ZXR1cm4gdG9TdHJpbmcocHJveHlTZXJ2ZXJzKTsKIH0KIAogU3RyaW5nIFBsdWdpblZpZXc6OmNv
b2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNvb2tp
ZXMoJm1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgS1VSTChLVVJMKCksIHVybFN0cmluZykp
OworICAgIHJldHVybiBjb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChV
UkwoKSwgdXJsU3RyaW5nKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Q29va2llc0ZvclVS
TChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7
Ci0gICAgc2V0Q29va2llcygmbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBLVVJMKEtVUkwo
KSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKKyAgICBzZXRDb29raWVzKCZtX3BsdWdpbkVs
ZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsK
IH0KIAogYm9vbCBQbHVnaW5WaWV3OjpnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFz
c3dvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNmFiYmNkNjUzY2U3YWUwMzIxYTZj
NzBkMjBhMDUzMTllYmI1MDM2OC4uN2FiZDc5NjEyMjUwYjE1Yjc1YzMyZTI0OTU2NmQwNDRiMmM2
MjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTM0LDkgKzUzNCw5IEBAIHZvaWQg
V2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCog
ZWxlbWVudCwgUmVuZGVyRW1iCiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gcGx1Z2luRWxl
bWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZVVSTCgpLnN0cmluZygpOwogICAgIFN0cmluZyBwYWdlVVJMU3RyaW5nID0gbV9wYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJp
bmcoKTsKICAgICBTdHJpbmcgcGx1Z2luVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChwbHVnaW5FbGVtZW50LT51cmwoKSkuc3RyaW5nKCk7Ci0gICAgS1VS
TCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTCA9IGVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpbkVsZW1lbnQtPmdldEF0
dHJpYnV0ZShwbHVnaW5zcGFnZUF0dHIpKSk7CisgICAgVVJMIHBsdWdpbnNwYWdlQXR0cmlidXRl
VVJMID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMocGx1Z2luRWxlbWVudC0+Z2V0QXR0cmlidXRlKHBsdWdpbnNwYWdlQXR0
cikpKTsKICAgICBpZiAoIXBsdWdpbnNwYWdlQXR0cmlidXRlVVJMLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkKLSAgICAgICAgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkwgPSBLVVJMKCk7CisgICAg
ICAgIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gVVJMKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChwbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgcGx1Z2luRWxlbWVudC0+c2VydmljZVR5cGUoKSwgcGx1
Z2luVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTC5zdHJpbmcoKSwgZnJhbWVVUkxT
dHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcAppbmRleCBlZWM4MTY4YTRhMmE1NTAzYjJjODQ1NjhkYmM2OWE0Yjk1NmY1MTA2Li5lMTBi
MzIwNmFjOTI3YjQ3NjI3MDgyZmU3NzE3MGQ3MTMzYjUzNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xp
ZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250
ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6
OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93
bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICAvLyBUaGlzIGlzIGhhbmRsZWQgaW4gdGhlIFVJ
IHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04Niw3ICs4Niw3IEBAIHZv
aWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZy
YW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygpLCAwLCBmYWxzZSwgZmFsc2UsIE1heWJl
U2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2Vs
ZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxz
ZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYwMTJkYTFjYjI2YWRhN2Q0MjM4ZGQzZmY5ZjljN2Q4
YTQuLmJkNDNlY2IwM2M5ZjdiNzBjZDk4MGQ0YzlkZmRkMGRiZGQ1YTdmYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShX
ZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1YzZkMDlmMGFlY2YxYzE5ZWQ3MWNlMDgzM2U4
YjAzZGNkLi5kMjdhMGY5NjNlYmY1NjBkNTA4MGExMGMwNjBjM2RiYzBmMTI4ODYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3Jz
LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgV2ViRXJyb3JzX2gKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291
cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CkBAIC00Miw3ICs0Miw3IEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlCiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RF
eGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9y
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5YjYwOTBlNzlkZGU3MmE5ZWIyMDJiZjVi
YWZmNWQ4MTMyMjY5MDVkLi42MjcwYWI0MzAwNzkyNGQxYTZlNjE3MjM5ZGY5OGFmYzc5OWE5MjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3QoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IEtVUkwmIHVybCwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpCit2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3Qg
VVJMJiB1cmwsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKQogewogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtOTg1
LDcgKzk4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biosIGNvbnN0IEtVUkwmKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTk5OCw3ICs5
OTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZy
YW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBL
VVJMJiwgYm9vbCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25z
dCBVUkwmLCBib29sKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc28KICAgICByZXR1cm4gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBkYXRh
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwog
ICAgIGlmICghd2ViUGFnZSB8fCAhd2ViUGFnZS0+cGFnZUdyb3VwKCktPmlzVmlzaWJsZVRvSGlz
dG9yeUNsaWVudCgpKQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtV
UkwKICAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJ
RCgpKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNv
bnN0IEtVUkwmKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3Qg
VVJMJikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghd2ViUGFnZSkKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciAqZG9j
CiAgICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50
TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitQYXNzUmVmUHRy
PEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJn
aW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW4KICAgICByZXR1cm4gY29yZVN1YmZyYW1lOwogfQogCi1QYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAg
ICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFyYW1WYWx1ZXMuc2l6ZSgpKTsKICAgICBB
U1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKQEAgLTEzNDYsOSArMTM0Niw5IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0
KQogICAgICAgICBtX3BsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4ocGx1Z2lu
V2lkZ2V0KTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBs
ZXRFbGVtZW50KiBhcHBsZXRFbGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NS
ZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdl
dChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0RWxl
bWVudCwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKLSAgICBSZWZQdHI8V2lkZ2V0PiBwbHVn
aW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgS1VSTCgpLCBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUoKSwgZmFsc2Up
OworICAgIFJlZlB0cjxXaWRnZXQ+IHBsdWdpbiA9IGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBh
cHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIGFwcGxldEVsZW1l
bnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKICAgICBpZiAoIXBsdWdpbikgewogICAgICAgICBp
ZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICAgICAgU3Ry
aW5nIGZyYW1lVVJMU3RyaW5nID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CkBAIC0xMzYwLDcgKzEzNjAsNyBA
QCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcAogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQq
LCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYpCitQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRp
YUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiAwOwpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgc3RhdGljIGJvb2wgcGx1Z2luU3VwcG9y
dHNFeHRlbnNpb24oY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSwgY29uc3QgU3RyaW5nJgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCitPYmplY3RDb250
ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlIHdoZW4gdGhlIHBs
dWdpbiBjb2RlCiAgICAgLy8gaXMgY29uc29saWRhdGVkLgpAQCAtMTU3NSw3ICsxNTc1LDcgQEAg
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0
dGluZ3MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQxY2E1OGI1ZTZmMjY2ZjZhMGQzNmIwMzUzODY1
OGQwYTJiY2Y2NTYuLjcwMjI2ODFjOWIwOGMzY2NlMDU5MjhlOGJjMTRkNTM0Y2U5MzEzNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
YW5jZWxDbGllbnRSZWRpcmVjdCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRvdWJsZSBp
bnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJs
ZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURF
OwpAQCAtMTMzLDggKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29u
dGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkBAIC0x
NjEsOSArMTYxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChj
b25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVk
RnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKQEAgLTE3NywyMiArMTc3LDIy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJS
SURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
LCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxv
YWRNYW51YWxseSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdl
YkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAgICAgCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CiAgICAg
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4o
V2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBs
YXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogI2VuZGlmCiAKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2Jq
ZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHQoYm9vbCBlbmFi
bGVkUGVyU2V0dGluZ3MpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4
IDQ0ZDU5ZjI3ZTEyNGUwM2U1NWNjMjljNTEyMGJkNDcwYWFhNGM5YmYuLjQ0YzE4MGI2OTg4ZWZk
YmIyOTcxNGJkMjk5NjY3ZGRiNzk0Yjc1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdD
b250ZXh0Lmg+CkBAIC0xMjYsNyArMTI2LDcgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKIAogLy8gQ29va2ll
c1N0cmF0ZWd5CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewpAQCAtMTQwLDcgKzE0MCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uCiAgICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0xNTIs
NyArMTUyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2kKICAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE2Niw3ICsx
NjYsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLAogICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewpAQCAtMTgwLDcgKzE4MCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlCiAgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sCiAgICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKQEAgLTM3MSw3ICszNzEsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZQogCiAvLyBWaXNp
dGVkTGlua1N0cmF0ZWd5CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNp
dGVkKFBhZ2UqLCBMaW5rSGFzaCBsaW5rSGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0
cmluZyYpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiwg
TGlua0hhc2ggbGlua0hhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlzTGlua1Zpc2l0ZWQobGlua0hhc2gpOwog
fQpAQCAtNDQ4LDEyICs0NDgsMTIgQEAgQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb2xv
cihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJldHVybiBjb2xvcjsKIH0KIAot
S1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViQ29u
dGV4dDo6R2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkTmFtZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29udGV4dDo6R2V0
UGFzdGVib2FyZFVSTDo6UmVwbHkodXJsU3RyaW5nKSwgMCk7Ci0gICAgcmV0dXJuIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmxTdHJpbmcpOwogfQogCiBsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6YWRkVHlwZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IDM5MzQ2MDYw
MTM2YTQ1Y2U2MjhiMzZmMDZmOGQxMjMxODZhNWRkYTIuLmNiMmYxODU1NTlkYmRlMzU4ODc1YzBk
OWU4NjQ1MTUzOGJiNmQxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
NTYsMTIgKzU2LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7CiAKICAgICAv
LyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC05MCw3ICs5MCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UqKSBPVkVSUklERTsKIAogICAg
IC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5r
VmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKSBPVkVSUklE
RTsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OktVUkwgdXJsKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6VVJMIHVybChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgbG9u
ZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGxvbmcgc2V0VHlw
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAppbmRleCAz
NDVkOWMwNWRlM2ZjZDNjN2U3YjAxYTkwNTI4NDk5NzRhYWJkYTU2Li44MjYwNDdjMjc4N2IxZWZk
YjZhNjYwYjFjODczYTc2NjBkNDQ4OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKQEAg
LTcyLDcgKzcyLDcgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBXZWJDb3JlOjpwbHVn
aW5XaWxsSGFuZGxlTG9hZEVycm9yKHJlc3BvbnNlKTsKIH0KIAotV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1dlYkNvcmU6OlJl
c291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dL
RXJyb3JJbnRlcm5hbCwgdXJsLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGVycm9y
IikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKaW5kZXggYTgyZTdkZWUwZTk1ODZkOTE4
NmYwZWU4MzY2YTY1NDU4OWFkZmMzZS4uMWI1MjVjMDU0MmI0YjFjZGU4MzQ0M2RkY2FhYTZlZTI5
OTFkNjRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gV2ViQ29yZTo6cGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihyZXNwb25zZSk7CiB9CiAKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJv
cihjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVy
bmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50ZXJuYWwsIHVy
bC5zdHJpbmcoKSwgXygiSW50ZXJuYWwgZXJyb3IiKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMu
bW0KaW5kZXggNzFmYTVlM2ZkY2QyOTFhZGVjNmUwMzNmN2I2NzYwMTg1MDIyMTdjOC4uNzEzN2Fj
YzcyYWE5NzBjNGM1ZjM1OWE1YmQyY2I4ZDM1ZTUyM2M4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01h
Yy5tbQpAQCAtODcsNyArODcsNyBAQCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9yQ29kZVBsdWdJ
bldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBo
YW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlv
biIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IEtVUkwmIHVybCkK
K1Jlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwga1dLRXJyb3JJ
bnRlcm5hbCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQgYW4gaW50ZXJu
YWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDc4NTdm
OGFiNTdjZmFkMDMxYzk2YzQ1YzNjMTI2M2U2MmI2MmZmMWYuLjgwMWVkZTdkNGY1YTg3YjgwZTk0
NjY5MDU4NDM5NWQ1ODRkOTg5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHVuc2lnbmVkIFdlYkZyYW1l
OjpwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQog
Ci1ib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCkgY29uc3QKK2Jvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC02NzksNyArNjc5LDcgQEAgU3RyaW5nIFdlYkZyYW1lOjpwcm92aXNp
b25hbFVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnVy
bCgpLnN0cmluZygpOwogfQogCi1TdHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9y
UmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJGcmFtZTo6
c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
NzAwLDcgKzcwMCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNv
dXJjZVdpdGhVUkwoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiBwYWdlKCktPmNh
Y2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKHVybCk7CiB9CiAKLVN0cmluZyBXZWJGcmFtZTo6
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorU3RyaW5n
IFdlYkZyYW1lOjptaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDc5ZmE1
Y2JhOWVjOTA2OGNjMGQzMTk5MmEwNzQ4MzA3YjliOGE1ZDEuLjY4NzYyZmYyYmIzNzQ5YTU1ZDNj
NzIwYzllYjg5NTE5MzE2YzU3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRN
TEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTYsMTEg
KzExNiwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1VubG9hZENvdW50
KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OktVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwoKSBjb25zdDsK
LSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIGNvbnN0OwotICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291cmNlV2l0aFVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVu
YW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OworICAgIFN0
cmluZyBtaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg5OGQwODQ1
NWEzZDRhNThjZjczODQzMzUyYWIzZmZiZmY0ZDk0ODEuLmFhNzgxZjRiYTgwZDRiMWJhZGE0NTcz
NGEwMzkzMGEzNGUwZDgzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDbG9z
ZSgpCiAKIHZvaWQgV2ViUGFnZTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBsb2FkVVJMUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QoS1VSTChLVVJMKCksIHVybCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBkZWNvZGVy
KTsKKyAgICBsb2FkVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgpLCB1cmwpKSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9h
ZFVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgV2ViUGFnZTo6bG9h
ZFVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTYW5kYm94
RXh0ZW5zCiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1l
TG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0KSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRC
dWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbChQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBVUkwmIHVucmVhY2hhYmxlVVJMLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikK
IHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlzKTsKIApAQCAt
OTUzLDM1ICs5NTMsMzUgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlOjps
b2FkRGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBiYXNl
VVJMU3RyaW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKTsKLSAg
ICBLVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBL
VVJMKEtVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZl
ciwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgS1VSTCgpLCBkZWNvZGVyKTsKKyAg
ICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwg
TUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGRlY29kZXIpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihodG1sU3RyaW5nLmNoYXJh
Y3RlcnMoKSksIGh0bWxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKLSAgICBLVVJM
IGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBLVVJMKEtV
UkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRl
eHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCBLVVJMKCksIGRlY29kZXIpOworICAgIFVSTCBi
YXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgp
LCBiYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9o
dG1sIiwgInV0Zi0xNiIsIGJhc2VVUkwsIFVSTCgpLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTFN0
cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJzKCkpLCBodG1sU3RyaW5n
Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0
cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcp
OwotICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5
KCkgPyBLVVJMKCkgOiBLVVJMKEtVUkwoKSwgdW5yZWFjaGFibGVVUkxTdHJpbmcpOworICAgIFVS
TCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVS
TCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJs
ZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgdW5yZWFjaGFibGVVUkxT
dHJpbmcpOwogICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRm
LTE2IiwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENvcmVJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJl
ZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIp
KTsKLSAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9wbGFpbiIsICJ1dGYtMTYi
LCBibGFua1VSTCgpLCBLVVJMKCksIGRlY29kZXIpOworICAgIGxvYWREYXRhSW1wbChzaGFyZWRC
dWZmZXIsICJ0ZXh0L3BsYWluIiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIFVSTCgpLCBkZWNvZGVy
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3QgQ29yZUlQQzo6
RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBk
ZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdlYkFyY2hpdmVE
YXRhLmRhdGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50OF90KSk7Ci0g
ICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIs
ICJ1dGYtMTYiLCBibGFua1VSTCgpLCBLVVJMKCksIGRlY29kZXIpOworICAgIGxvYWREYXRhSW1w
bChzaGFyZWRCdWZmZXIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiLCAidXRmLTE2IiwgYmxh
bmtVUkwoKSwgVVJMKCksIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxpbmtDbGlja2Vk
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKQEAgLTIzNTMs
NyArMjM1Myw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFja0lEKSk7CiB9
CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAgLTIzNjksNyAr
MjM2OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9y
RnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiByCiB2b2lkIFdlYlBhZ2U6OmdldFJlc291
cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHJlc291cmNl
VVJMU3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIENvcmVJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBLVVJMIHJlc291cmNlVVJMKEtVUkwoKSwgcmVzb3Vy
Y2VVUkxTdHJpbmcpOworICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJp
bmcpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkgewpAQCAt
MzMwOSw3ICszMzA5LDcgQEAgdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9uVHJhY2tlcjo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgLy8gYmVjYXVzZSBp
dCBkb2VzIG5vdCBwZXJ0YWluIHRvIHRoZSBmYWlsZWQgbG9hZCwgYW5kIHdpbGwgYmUgbmVlZGVk
LgogfQogCi1ib29sIFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJiB1cmwp
Citib29sIFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjNhYmNhNWJmODJlMzkx
NThmMjI3ZGI0M2U0OWFkN2Y1ODc0NDAzZS4uYjBiNjczZjMyMGRhNWFmMWYyOGVmNWM0NGZjMDMy
ODA5ODBkMGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4dE1lbnUqIGNv
bnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAjZW5k
aWYKICAgICAKLSAgICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJM
Jik7Ci0gICAgU3RyaW5nIGNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIFN0cmluZyBjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9v
bCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgU3RyaW5nIGNh
Y2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgU3Ry
aW5nIGNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjYWNoZWRSZXNwb25zZURhdGFG
b3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC02ODYsOSArNjg2
LDkgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFtZSopOwog
Ci0gICAgdm9pZCBsb2FkRGF0YUltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmFpbGluZ1VS
TCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsK
IAotICAgIGJvb2wgcGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIGJvb2wgcGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6
VVJMJik7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKaW5k
ZXggODQyNGM2YjRiMmFlYmMwZDhhMjJhY2M1NTcyMjY5ZThlOGQzMzU3NC4uYzllNGRjNThiYzZj
MjBmOTllODJjMjllM2EzOWNhZTQ3YTFhODQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC0xMjYsMTMgKzEyNiwx
MyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQorYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJQYWdl
OjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNDQsMTMgKzE0NCwxMyBAQCBi
b29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2Vz
dGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3Vn
Z2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdl
YlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKK1Bhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgVVJM
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKaW5kZXgg
NjZmZDMyZjFiN2QzMTI2NzM3N2M0YjI4MWJhZjczYjE2ZTI3ZmE3Ny4uMjc4NWEyNjNiZmM5M2Fk
Zjk1MzYwZGQ2Zjg1NTFjMmM5NjZmYjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0xMjYsMTMgKzEyNiwxMyBA
QCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFdl
YlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQorYm9vbCBXZWJQ
YWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2Fj
aGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJQYWdlOjpj
YWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNDQsMTMgKzE0NCwxMyBAQCBib29s
IFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVk
RmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2Vz
dGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKK1Bhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgVVJMJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDI3MjJm
N2U4MTUxYmUxYTM3OWM2ZTA5ZGZiOTk5N2UwMDRkNjE2NmQuLmNlMWQ5NTI0ZDAxYTE0MzFiZjY2
NzMzMDAzYjA4ZWUxNzc1ZWNjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTcxNyw3ICs3MTcsNyBAQCBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9CiAgICAg
ICAgICAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsKQorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0KiBy
ZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdOwog
ICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0cmluZyopdXNlckFnZW50KCkgZm9ySFRUUEhlYWRl
ckZpZWxkOkAiVXNlci1BZ2VudCJdOwpAQCAtNzMxLDcgKzczMSw3IEBAIGJvb2wgV2ViUGFnZTo6
cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQogICAg
IHJldHVybiBjYWNoZWRSZXNwb25zZTsKIH0KIAotc3RhdGljIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IEtVUkwmIHVybCkK
K3N0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVSTChXZWJQYWdl
KiB3ZWJQYWdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJM
UmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBp
bml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVxdWVzdC5nZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcg
Kil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07
CkBAIC03NDIsMTcgKzc0MiwxNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVk
UmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgS1VSTCYgdQogICAgIHJldHVy
biBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpy
ZXF1ZXN0LmdldCgpXTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVu
YW1lRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0
ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gW1tjYWNoZWRS
ZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxlbmFtZV07CiB9
CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IEtV
UkwmIHVybCkKK1N0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBbW2NhY2hlZFJlc3BvbnNlRm9yVVJMKHRoaXMs
IHVybCkgcmVzcG9uc2VdIE1JTUVUeXBlXTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoW2Nh
Y2hlZFJlc3BvbnNlRm9yVVJMKHRoaXMsIHVybCkgZGF0YV0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAppbmRleCA4ZmViMTM2
MGQ5NTQ4ZGU4ODM1NTJhZThjOTljMDdkYzYwNmMyOTM0Li42ZWU4YTFkMTI0Yzk0N2YwNDZlYjJk
YzIyNzFlNDJiZTIzMTYzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcApAQCAtMjY4LDEzICsyNjgsMTMgQEAgYm9vbCBXZWJQ
YWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFnZTo6cGxhdGZv
cm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNl
TUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjg2LDEzICsyODYsMTMgQEAgYm9vbCBXZWJQYWdlOjpw
bGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9y
VVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRS
ZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDgwZGI0MzEwN2IzMDA1MTcxMGE5NGEyMTRi
OTE5YjljOTE0ZGNiN2QuLmI4NzA2ZWUzYmI2NTQzY2JhODg5MWFlNGZlMmMwMzk5NDFmYTlhNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQpA
QCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZlUGFnZXMoKQog
ICAgICAgICBpZiAoIW1haW5GcmFtZU9yaWdpbi0+aXNVbmlxdWUoKSkKICAgICAgICAgICAgIG1h
aW5GcmFtZU9yaWdpblN0cmluZyA9IG1haW5GcmFtZU9yaWdpbi0+dG9SYXdTdHJpbmcoKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbWFpbkZyYW1lT3JpZ2luU3RyaW5nID0gS1VSTChLVVJM
KCksIG1haW5GcmFtZS0+dXJsKCkpLnByb3RvY29sKCkgKyAnOic7IC8vIHRvUmF3U3RyaW5nKCkg
aXMgbm90IHN1cHBvc2VkIHRvIHdvcmsgd2l0aCB1bmlxdWUgb3JpZ2lucywgYW5kIHdvdWxkIGp1
c3QgcmV0dXJuICI6Ly8iLgorICAgICAgICAgICAgbWFpbkZyYW1lT3JpZ2luU3RyaW5nID0gVVJM
KFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKS5wcm90b2NvbCgpICsgJzonOyAvLyB0b1Jhd1N0cmlu
ZygpIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggdW5pcXVlIG9yaWdpbnMsIGFuZCB3b3Vs
ZCBqdXN0IHJldHVybiAiOi8vIi4KIAogICAgICAgICBOU1VSTCAqb3JpZ2luQXNOU1VSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOm1haW5GcmFtZU9yaWdpblN0cmluZ107CiAgICAgICAgIC8vICtb
TlNVUkwgVVJMV2l0aFN0cmluZzpdIHJldHVybnMgbmlsIHdoZW4gaXRzIGFyZ3VtZW50IGlzIG1h
bGZvcm1lZC4gSXQncyB1bmNsZWFyIGhvdyB3ZSBjYW4gcG9zc2libHkgaGF2ZSBhIG1hbGZvcm1l
ZCBVUkwgaGVyZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCAzYzU2YTFkYTRhNTc4ZDY2NWY1OWJiYWEzNmZhYmUwMjczMWEyZTZmLi5kMDg2Nzc3
YmU1MWU0NTc2YzA5NWViYWI3ZmFmNjhkYzEyMTI3YmVhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRv
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1h
bnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNiAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIG1h
a2UgTWVkaWFTdHJlYW0gdGVzdGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMDRhMjE1ZTc1ZmRh
Yzg2M2MxMDY1OWM2ZmI0N2E1ODZjZWY2OTU4OS4uNjA4NDlkNDlkZjUzM2U5MjRiMjg2MTRkMDlj
NjRlYjQ4Mzc4MDE3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJK
U0VsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VHJlZUFzVGV4dC5oIgpAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVM
b2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogICAgIE93bkFycmF5UHRy
PGNoYXI+IHVybEFyciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbdXJsQXJyU2l6ZV0pOwogICAg
IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodXJsLCB1cmxBcnIuZ2V0KCksIHVybEFyclNpemUpOwog
Ci0gICAgV2ViQ29yZTo6S1VSTCBiYXNlID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKTsKLSAgICBXZWJDb3JlOjpLVVJMIGFic29sdXRlKGJh
c2UsIHVybEFyci5nZXQoKSk7CisgICAgV2ViQ29yZTo6VVJMIGJhc2UgPSBtYWluRnJhbWUtPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpOworICAgIFdlYkNvcmU6
OlVSTCBhYnNvbHV0ZShiYXNlLCB1cmxBcnIuZ2V0KCkpOwogCiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGFic29sdXRlVVJMKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZyhhYnNvbHV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgV29ya1F1ZXVlOjpzaGFy
ZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFic29sdXRlVVJMLmdldCgpLCB0YXJnZXQpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJs
YWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Xb3JrUXVldWVJ
dGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggODI3YjVlYmNlOTUzNzdkMTMzMmUxYjk3YWFiY2ZjMGY1
MjIzMTFkNy4uNWI0MWQ3ZTk0MTJlMWUxN2M3MmM3MjVkN2I1NzI3MGY3ZjYyYzQ4ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Xb3JrUXVldWVJdGVtQmxhY2tC
ZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Xb3JrUXVldWVJ
dGVtQmxhY2tCZXJyeS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVy
VHJlZUJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZFJlcXVlc3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCkBAIC00Niw3ICs0
Niw3IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCBrdXJsID0gS1VSTChLVVJMKCksIHVybC5n
ZXQoKSk7CisgICAgVVJMIGt1cmwgPSBVUkwoVVJMKCksIHVybC5nZXQoKSk7CiAgICAgZnJhbWUt
PmxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUsIFJlc291cmNlUmVxdWVzdChr
dXJsKSkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggZDIyNTU5NDUyYTNiMzNlMTA5ZDIw
ZTc0MGI5MWExMjk2NWIwZTBkZi4uNWY4YjRkYzllZTFmMGI5MWY5YzEzNDdkMDVlMDlkZGE2ZDBj
OTk0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVl
Q2hyb21lLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiRWRpdGluZ0NhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIlRleHRJbnB1dENvbnRy
b2xsZXIuaCIKQEAgLTMzNywxNCArMzM3LDE0IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6
OnJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogCiBzdGF0aWMgU3RyaW5nIHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIEtVUkwg
dXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CisgICAgVVJMIHVyaSA9IFVS
TChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CiAgICAgaWYgKHVyaS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAiKG51bGwpIjsKIAogICAgIGlmICghdXJpLmlzTG9jYWxGaWxlKCkpCiAg
ICAgICAgIHJldHVybiB1cmkuc3RyaW5nKCk7CiAKLSAgICBLVVJMIG1haW5GcmFtZVVSTCA9IEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCBld2tfZnJhbWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUo
KSkpOworICAgIFVSTCBtYWluRnJhbWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBld2tfZnJh
bWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpOwogICAgIGlmIChtYWluRnJhbWVVUkwu
aXNFbXB0eSgpKQogICAgICAgICBtYWluRnJhbWVVUkwgPSBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnByb3Zpc2lvbmFsVVJMKGJyb3dzZXItPm1haW5GcmFtZSgpKTsKIApAQCAtNTU1LDcgKzU1
NSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1ZXN0KHZvaWQq
LCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtZXNzYWdlcy0+cmVxdWVzdC0+
dXJsKTsKKyAgICBVUkwgdXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbWVzc2FnZXMtPnJlcXVl
c3QtPnVybCk7CiAKICAgICBpZiAodXJsLmlzVmFsaWQoKQogICAgICAgICAmJiB1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpCkBAIC04MDAsNyArODAwLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVkKHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2
ZW50SW4KIAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFJlc291cmNlUmVzcG9u
c2VNSU1FVHlwZXMoKSkgewogICAgICAgICBwcmludGYoIiVzIGhhcyBNSU1FIHR5cGUgJXNcbiIs
Ci0gICAgICAgICAgICAgICBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2UtPnVybCkubGFz
dFBhdGhDb21wb25lbnQoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgVVJMKFBhcnNl
ZFVSTFN0cmluZywgcmVzcG9uc2UtPnVybCkubGFzdFBhdGhDb21wb25lbnQoKS51dGY4KCkuZGF0
YSgpLAogICAgICAgICAgICAgICAgcmVzcG9uc2UtPm1pbWVfdHlwZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDlmNjZlOTVlOWMz
Mzg0MmZjZGIwZmE1OThiOTE1NzJiYmM4ZTQ1N2UuLjA3NDZlNTIwZjAyOWExNWMyM2MzNWNhMTI3
OWYyZWYwOGZhNjc1OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0
UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVm
bC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxLVVJMLmg+Cisj
aW5jbHVkZSA8VVJMLmg+CiAjaW5jbHVkZSA8ZWRpdGluZy9GaW5kT3B0aW9ucy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNTcsOCAr
MTU3LDggQEAgSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdXIKIAogdm9pZCBUZXN0UnVubmVyOjpxdWV1
ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCiB7Ci0gICAgV2ViQ29y
ZTo6S1VSTCBiYXNlVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChld2tfZnJh
bWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpKTsKLSAgICBXZWJDb3JlOjpLVVJMIGFi
c29sdXRlVVJMKGJhc2VVUkwsIHVybC0+c3RyaW5nKCkpOworICAgIFdlYkNvcmU6OlVSTCBiYXNl
VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGV3a19mcmFtZV91cmlfZ2V0KGJy
b3dzZXItPm1haW5GcmFtZSgpKSkpOworICAgIFdlYkNvcmU6OlVSTCBhYnNvbHV0ZVVSTChiYXNl
VVJMLCB1cmwtPnN0cmluZygpKTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc0Fi
c29sdXRlVVJMKAogICAgICAgICBBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
YWJzb2x1dGVVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtMTk2LDcgKzE5Niw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2Nyb2xsYmFyUG9saWN5KEpTU3RyaW5nUmVmLCBKU1N0cmlu
Z1JlZikKIAogdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShK
U1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIHByb3RvY29sLCBKU1N0cmluZ1Jl
ZiBob3N0LCBib29sIGluY2x1ZGVTdWJkb21haW5zKQogewotICAgIFdlYkNvcmU6OktVUkwga3Vy
bDsKKyAgICBXZWJDb3JlOjpVUkwga3VybDsKICAgICBrdXJsLnNldFByb3RvY29sKFN0cmluZyhw
cm90b2NvbC0+Y2hhcmFjdGVycygpLCBwcm90b2NvbC0+bGVuZ3RoKCkpKTsKICAgICBrdXJsLnNl
dEhvc3QoU3RyaW5nKGhvc3QtPmNoYXJhY3RlcnMoKSwgaG9zdC0+bGVuZ3RoKCkpKTsKIApAQCAt
MjA1LDcgKzIwNSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluCiAKIHZvaWQgVGVzdFJ1bm5l
cjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3Jp
Z2luLCBKU1N0cmluZ1JlZiBwcm90b2NvbCwgSlNTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRl
U3ViZG9tYWlucykKIHsKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmw7CisgICAgV2ViQ29yZTo6VVJM
IGt1cmw7CiAgICAga3VybC5zZXRQcm90b2NvbChTdHJpbmcocHJvdG9jb2wtPmNoYXJhY3RlcnMo
KSwgcHJvdG9jb2wtPmxlbmd0aCgpKSk7CiAgICAga3VybC5zZXRIb3N0KFN0cmluZyhob3N0LT5j
aGFyYWN0ZXJzKCksIGhvc3QtPmxlbmd0aCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvZG8td2ViY29yZS1yZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCmlu
ZGV4IDZiZGZkZGVhZjQ3OGU2NzRlMTc5OTM0MmUwODg5OTFmZWFhNGI3OTYuLmFiNTUyMmYwNjM3
ZjAxMDU5NDdmNDE3ZGI3ZjU2NjUzMDkwYjcxYWIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
ZG8td2ViY29yZS1yZW5hbWUKKysrIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQpA
QCAtNzQsNiArNzQsNyBAQCBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYkNvcmUiKTsKIGZpbmQo
XCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0Iik7CiBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYktp
dDIiKTsKIGZpbmQoXCZ3YW50ZWQsICJUb29scy9EdW1wUmVuZGVyVHJlZSIpOworZmluZChcJndh
bnRlZCwgIlRvb2xzL1Rlc3RXZWJLaXRBUEkiKTsKIAogc3ViIHdhbnRlZAogewpAQCAtOTMsMTEg
Kzk0LDE1IEBAIHN1YiB3YW50ZWQKIAogIyBTZXR0aW5nIGlzRE9NVHlwZVJlbmFtZSB0byAxIHJh
dGhlciB0aGFuIDAgZXhwYW5kcyB0aGUgcmVnZXhwcyB1c2VkCiAjIGJlbG93IHRvIGhhbmRsZSBj
dXN0b20gSmF2YVNjcmlwdCBiaW5kaW5ncy4KLW15ICRpc0RPTVR5cGVSZW5hbWUgPSAxOworbXkg
JGlzRE9NVHlwZVJlbmFtZSA9IDA7CiBteSAlcmVuYW1lcyA9ICgKICAgICAjIFJlbmFtZXMgZ28g
aGVyZSBpbiB0aGUgZm9ybSBvZjoKLSAgICAiaXNUcmFuc2Zvcm1JbnZlcnRpYmxlIiA9PiAiaGFz
SW52ZXJ0aWJsZVRyYW5zZm9ybSIsCi0gICAgIm1faW52ZXJ0aWJsZUNUTSIgPT4gIm1faGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybSIsCisgICAgIldLVVJMIiA9PiAiV0tVUkwiLAorICAgICJLVVJMIiA9
PiAiVVJMIiwKKyAgICAiS1VSTENGTmV0IiA9PiAiVVJMQ0YiLAorICAgICJLVVJMSGFzaCIgPT4g
IlVSTEhhc2giLAorICAgICJLVVJMTWFjIiA9PiAiVVJMTWFjIiwKKyAgICAiS1VSTF9oIiA9PiAi
VVJMX2giLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JUaGVGdXR1cmUgPSAoCkBA
IC0xMDgsMTIgKzExMyw2IEBAIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0g
KAogICAgICJEYXRlSW5zdGFuY2UiID0+ICJKU0RhdGUiLAogICAgICJFcnJvckluc3RhbmNlIiA9
PiAiSlNFcnJvciIsCiAKLSAgICAiS1VSTCIgPT4gIlVSTCIsCi0gICAgIktVUkxDRk5ldCIgPT4g
IlVSTENGIiwKLSAgICAiS1VSTEhhc2giID0+ICJVUkxIYXNoIiwKLSAgICAiS1VSTE1hYyIgPT4g
IlVSTE1hYyIsCi0gICAgIktVUkxfaCIgPT4gIlVSTF9oIiwKLQogICAgICJUcmVlU2hhcmVkIiA9
PiAiVHJlZVJlZkNvdW50ZWQiLAogCiAgICAgIlN0cmluZ0ltcGwiID0+ICJTaGFyZWRTdHJpbmci
LApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggM2ZiMmQ2ZWE0ZmNjNmU2MjcxOTQ4
YTJiZjgwNTQ1MWU3YmU4MDU4MS4uZjAzM2E3NGY1MGI1NDE5NmVkMmVkNzQzZWVkODdmMTdhNWVk
OTdjYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjYsNyArMTY2LDcgQEAg
UHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9MREZMQUdTID0gXAogCS1uby1mYXN0
LWluc3RhbGwKIAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9TT1VSQ0VTID0g
XAotCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBcCisJVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJ
X1Rlc3RHdGtfQ1BQRkxBR1MgPSBcCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCBlMmU1NmZhNDAwNWNhNTdiNzZmNzkzMDQ4OTU2ZWZkOTJkNDhlMzczLi42NWEzNzdhNzBm
MmI1NDI1Y2ZmMmUyZTgwNWMwZTliODg3NjNiNzcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTQ5LDcgKzQ5LDcgQEAgc2V0KHdlYmtpdDJfYXBpX2hhcm5lc3NfU09V
UkNFUwogCiBzZXQodGVzdF93ZWJjb3JlX0JJTkFSSUVTCiAgICAgTGF5b3V0VW5pdAotICAgIEtV
UkwKKyAgICBVUkwKICkKIAogIyBJbiBoZXJlIHdlIGxpc3QgdGhlIGJ1bmRsZXMgdGhhdCBhcmUg
dXNlZCBieSBvdXIgc3BlY2lmaWMgV0syIEFQSSBUZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggMGEwYjI2YzU2M2Q4NjI1MGNiYzUwMTRiM2M5YjI3NDhlMjkzZWFk
NC4uYjNkODFjNTRiYjYyMmY5NzQ0NTNiMzA3MGEwZmJhZDg5M2IyYWRjMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02NCw3ICs2NCw3IEBAIGxpc3QoQVBQRU5EIHRl
c3Rfd2ViY29yZV9MSUJSQVJJRVMKIAogc2V0KHRlc3Rfd2ViY29yZV9CSU5BUklFUwogICAgIExh
eW91dFVuaXQKLSAgICBLVVJMCisgICAgVVJMCiApCiAKIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJ
TkFSSUVTCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4NDBjYmU2MWFlNzcwNDM1MGU0ZDBk
ZjMwOTNjOWMwMWRhNTBiZTAuLjZkNzljOTE5YTllNjc3YTNmZjY2YzhmOGIxYTQwYTA1ZmYwNmJk
NmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NSw3ICs3NSw3IEBACiAJCTM3RTEwNjRD
MTY5NzY4MTgwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3
RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92
ZS5odG1sICovOyB9OwogCQkzN0UxMDY0RDE2OTc2Qzg1MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxl
Q2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsQ2VsbEFi
b3ZlLm1tICovOyB9OwogCQkzN0UzOEMzNDE2OUI3RDAxMDA4NEMyOEMgLyogV2ViVmlld0RpZFJl
bW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovOyB9OwotCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2
RjIgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi87IH07CisJCTQ0MEEx
RDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAg
Ki87IH07CiAJCTRCQjQxNjAyMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5X
ZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5t
bSAqLzsgfTsKIAkJNEJCNDE2MDQxNjgxNUY5MTAwODI0MjM4IC8qIEVsZW1lbnRBdFBvaW50SW5X
ZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRCQjQxNjAzMTY4MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0g
Ki87IH07CiAJCTRCRkRGRkE3MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhh
bmRsZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxl
X0J1bmRsZS5jcHAgKi87IH07CkBAIC0zODAsNyArMzgwLDcgQEAKIAkJMzdFMTA2NEExNjk3Njc2
NDAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyog
RE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3
RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIEtV
UkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1VSTC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBV
UkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdU
RlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZT
dHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEJCNDE2MDEx
NjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJh
bWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQjQxNjAzMTY4MTVGOTEwMDgy
NDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDYsNyArNjQ2LDcgQEAKIAkJNDQwQTFEMzYxNEEwMTAw
MDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLywKKwkJ
CQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLywKIAkJCQkxNDQ2NDAxMjE2
N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFdl
YkNvcmU7CkBAIC0xMTQyLDcgKzExNDIsNyBAQAogCQkJCUMwQURCRTdDMTJGQ0E0RDAwMEQyQzEy
OSAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDgxMjI0MjEzRkMx
NzI0MDBEQzM5QUUgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0
QkI0MTYwMjE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0g
aW4gU291cmNlcyAqLywKLQkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0NDY0MDEzMTY3QTgzMDUwMDBCRDIxOCAvKiBMYXlvdXRVbml0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENjQwQjU1MTc4NzVERkYwMEJGQUY5OSAvKiBTY3Jv
bGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MzAwQjE4MTY3NTVD
RDkwMDY2ODg2RCAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmVhZGU1NTg2MWU3NTkxOGI4NjYxZDZmZDQ3NzU2NDEyMjc4ZjM5Mi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldURlN0cmlu
Z1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7Ci0KLWNsYXNzIEtVUkxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgfQotfTsKLQotVEVTVF9GKEtVUkxUZXN0LCBLVVJM
Q29uc3RydWN0b3JEZWZhdWx0KQotewotICAgIEtVUkwga3VybDsKLQotICAgIEVYUEVDVF9UUlVF
KGt1cmwuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmlzTnVsbCgpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uoa3VybC5pc1ZhbGlkKCkpOwotfQotCi1URVNUX0YoS1VSTFRlc3QsIEtVUkxD
b25zdHJ1Y3RvckNvbnN0Q2hhcikKLXsKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/
dmFyPXZhbCNmcmFnbWVudCIpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5p
c1ZhbGlkKCkpOwotCi0gICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBrdXJsLnByb3RvY29s
KCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBrdXJsLmhvc3Qo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5oYXNQb3J0KCkpOwotICAgIEVYUEVDVF9FUSg4MDgw
LCBrdXJsLnBvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwga3VybC51
c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsK
LSAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7Ci0gICAg
RVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkp
OwotICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKLSAgICBF
WFBFQ1RfVFJVRShrdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJmcmFnbWVudCIpLCBrdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLX0KLQotVEVT
VF9GKEtVUkxUZXN0LCBLVVJMRGF0YVVSSVN0cmluZ1NoYXJpbmcpCi17Ci0gICAgS1VSTCBiYXNl
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKLSAgICBTdHJp
bmcgdGhyZWVBcHBsZXMgPSAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2
Ty83Nk8vNzZPLyI7Ci0KLSAgICBLVVJMIHVybChiYXNlVVJMLCB0aHJlZUFwcGxlcyk7Ci0gICAg
RVhQRUNUX0VRKHRocmVlQXBwbGVzLmltcGwoKSwgdXJsLnN0cmluZygpLmltcGwoKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZjUzOTc3NjczYzZkMDYwOThiODZmMDcyZTcx
ZjUyMDdhZjgwZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9VUkwuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBV
UkxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpCisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Cisg
ICAgfQorfTsKKworVEVTVF9GKFVSTFRlc3QsIFVSTENvbnN0cnVjdG9yRGVmYXVsdCkKK3sKKyAg
ICBVUkwga3VybDsKKworICAgIEVYUEVDVF9UUlVFKGt1cmwuaXNFbXB0eSgpKTsKKyAgICBFWFBF
Q1RfVFJVRShrdXJsLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc1ZhbGlkKCkp
OworfQorCitURVNUX0YoVVJMVGVzdCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCit7CisgICAg
VVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5l
eGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/dmFyPXZhbCNmcmFnbWVudCIpOworCisgICAgRVhQ
RUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwo
KSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5pc1ZhbGlkKCkpOworCisgICAgRVhQRUNUX0VRKFN0
cmluZygiaHR0cCIpLCBrdXJsLnByb3RvY29sKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoInd3
dy5leGFtcGxlLmNvbSIpLCBrdXJsLmhvc3QoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5oYXNQ
b3J0KCkpOworICAgIEVYUEVDVF9FUSg4MDgwLCBrdXJsLnBvcnQoKSk7CisgICAgRVhQRUNUX0VR
KFN0cmluZygidXNlcm5hbWUiKSwga3VybC51c2VyKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmco
InBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXgu
aHRtbCIpLCBrdXJsLnBhdGgoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIp
LCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12
YWwiKSwga3VybC5xdWVyeSgpKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJmcmFnbWVudCIpLCBrdXJsLmZyYWdt
ZW50SWRlbnRpZmllcigpKTsKK30KKworVEVTVF9GKFVSTFRlc3QsIFVSTERhdGFVUklTdHJpbmdT
aGFyaW5nKQoreworICAgIFVSTCBiYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cu
d2Via2l0Lm9yZy8iKTsKKyAgICBTdHJpbmcgdGhyZWVBcHBsZXMgPSAiZGF0YTp0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyI7CisKKyAgICBVUkwgdXJsKGJhc2VV
UkwsIHRocmVlQXBwbGVzKTsKKyAgICBFWFBFQ1RfRVEodGhyZWVBcHBsZXMuaW1wbCgpLCB1cmwu
c3RyaW5nKCkuaW1wbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="235033"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="235041"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212806</attachid>
            <date>2013-09-27 07:25:04 -0700</date>
            <delta_ts>2013-09-27 07:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>darin-16214.diff</filename>
            <type>text/plain</type>
            <size>1426570</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTE2MzAyMC4uNTRlYzRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAKLSAgICBwbGF0Zm9ybS9LVVJMLmNwcAorICAgIHBs
YXRmb3JtL1VSTC5jcHAKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwCiAgICAgcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFl
NGM1M2EuLjExNjIzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjcgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmV4cGVjdGVkIHdvcmQgd3JhcHBpbmcg
Zm9yIHdyYXBwZWQgY29udGVudCB0aGVuIHJhdyBjb250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggZjFmZjgzZi4uMGZhYmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC02MDU3LDkgKzYwNTcsOSBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxIYXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxI
YXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xhbmd1YWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggZGQ4ODFmNy4uMmZjMWY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcApA
QCAtNTUsNyArNTUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBzdGF0aWMKLVBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5j
RmlsZVN5c3RlbSkKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewogICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpKTsKICAgICBmaWxlU3lzdGVtLT5zdXNwZW5k
SWZOZWVkZWQoKTsKQEAgLTgzLDEwICs4MywxMCBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpbwog
ICAgIHJvb3RVUkwuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7CiAgICAgcm9vdFVSTC5hcHBlbmQoIi8i
KTsKIAotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3Rl
bU5hbWUudG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwor
ICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3RlbU5hbWUu
dG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgVVJMKFBhcnNlZFVSTFN0cmluZywg
cm9vdFVSTC50b1N0cmluZygpKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CiB9CiAKLURP
TUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorRE9N
RmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9v
dFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAgICA6
IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmls
ZVN5c3RlbSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogewpAQCAtMTUwLDcgKzE1
MCw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFNuYXBzaG90RmlsZUNhbGxiYWNrIDogcHVibGlj
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTbmFwc2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQ
dHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKKyAgICBzdGF0aWMgUGFzc093blB0cjxTbmFwc2hvdEZpbGVDYWxs
YmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTbmFwc2hvdEZpbGVDYWxsYmFjayhm
aWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwog
ICAgIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFNuYXBzaG90RmlsZUNhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCisgICAgU25hcHNob3RGaWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBjb25zdCBVUkwmIHVybCwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCiAgICAg
ICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiB2
b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnks
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBTbmFwc2hvdEZp
bGVDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJM
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKaW5kZXggYWU4MTEzZi4u
NzlhZmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsK
IAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVt
VHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwog
CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3IgdGhlIGdpdmVu
IGZpbGVzeXN0ZW1JZC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZmlsZXN5c3RlbUlkKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcAppbmRleCA3ZWZhYWNlLi5mNmE1MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKERPTUZpbGVTeXN0ZW0KIGNvbnN0IGNoYXIgRE9NRmlsZVN5c3Rl
bUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeFtdID0gImlzb2xhdGVkIjsKIGNvbnN0IHNpemVfdCBE
T01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9mKERPTUZp
bGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXgpIC0gMTsKIAotRE9NRmlsZVN5c3RlbUJh
c2U6OkRPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RPTUZpbGVT
eXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAg
ICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3R5cGUo
dHlwZSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6aXNWYWxpZFR5
cGUoRmlsZVN5c3RlbVR5cGUgdHlwZSkKIH0KIAogLy8gc3RhdGljCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlw
ZSYgdHlwZSwgU3RyaW5nJiBmaWxlUGF0aCkKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNr
RmlsZVN5c3RlbVVSTChjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiZmlsZXN5c3RlbSIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpzdXBwb3J0c1RvVVJMKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
S1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKSBjb25zdAorVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVt
VVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7Ci0gICAgS1VSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1S
b290VVJMOworICAgIFVSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1Sb290VVJMOwogICAgIC8vIFJlbW92
ZSB0aGUgZXh0cmEgbGVhZGluZyBzbGFzaC4KICAgICB1cmwuc2V0UGF0aCh1cmwucGF0aCgpICsg
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhmdWxsUGF0aC5zdWJzdHJpbmcoMSkpKTsKICAg
ICByZXR1cm4gdXJsOwpAQCAtMTIwLDcgKzEyMCw3IEBAIFNlY3VyaXR5T3JpZ2luKiBET01GaWxl
U3lzdGVtQmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLUtVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKK1VSTCBET01GaWxlU3lz
dGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqIGVudHJ5KSBjb25z
dAogewogICAgIHJldHVybiBjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5LT5mdWxsUGF0aCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW1CYXNlLmgKaW5kZXggM2I0MjQ2YS4uMjg3MjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtRmxhZ3MuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciBpc29sYXRlZFBh
dGhQcmVmaXhbXTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlzb2xhdGVkUGF0aFByZWZpeExl
bmd0aDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpOwogICAgIH0KQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIEtVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
KyAgICBVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
ICAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9CiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3Q7CiAKQEAgLTg1LDEwICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjbG9u
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvbmFibGU7IH0KIAogICAgIHN0YXRpYyBib29sIGlz
VmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjcmFja0ZpbGVTeXN0
ZW1VUkwoY29uc3QgS1VSTCYsIEZpbGVTeXN0ZW1UeXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7Cisg
ICAgc3RhdGljIGJvb2wgY3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYsIEZpbGVTeXN0ZW1U
eXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgYm9vbCBzdXBwb3J0c1RvVVJMKCkgY29uc3Q7
Ci0gICAgS1VSTCBjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFzZSopIGNvbnN0Owot
ICAgIEtVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKKyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsK
KyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKIAogICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuIEFsbCB0
aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZl
bC4KICAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRv
bid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1lIHZh
bGlkYXRpb24gZXJyb3JzKS4gT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBt
YXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCkBAIC0xMDMsMTMgKzEwMywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogcHJvdGVjdGVkOgotICAgIERPTUZpbGVT
eXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CiAgICAgZnJpZW5kIGNsYXNzIERPTUZpbGVTeXN0
ZW1TeW5jOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwotICAgIEtVUkwgbV9maWxl
c3lzdGVtUm9vdFVSTDsKKyAgICBVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKICAgICBib29sIG1f
Y2xvbmFibGU7CiAKICAgICBtdXRhYmxlIE93blB0cjxBc3luY0ZpbGVTeXN0ZW0+IG1fYXN5bmNG
aWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXggMGM2ZWFlOS4uZGQ4NjAyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IERP
TUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGUoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhmaWxlU3lzdGVtLT5tX2NvbnRleHQs
IGZpbGVTeXN0ZW0tPm5hbWUoKSwgZmlsZVN5c3RlbS0+dHlwZSgpLCBmaWxlU3lzdGVtLT5yb290
VVJMKCksIGZpbGVTeXN0ZW0tPm1fYXN5bmNGaWxlU3lzdGVtLnJlbGVhc2UoKSkpOwogfQogCi1E
T01GaWxlU3lzdGVtU3luYzo6RE9NRmlsZVN5c3RlbVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25z
dCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQorRE9NRmlsZVN5c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNG
aWxlU3lzdGVtKQogICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgdHlwZSwg
cm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQogewogfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD47
CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0
ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxl
SGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7CiAgICAgfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgQ3JlYXRlRmlsZUhl
bHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgQ3JlYXRlRmls
ZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICAgICAgOiBt
X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV91cmwo
dXJsKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q3JlYXRlRmls
ZVJlc3VsdD4gbV9yZXN1bHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7CiB9OwogCkBAIC0xNTUs
NyArMTU1LDcgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIFJlZlB0cjxDcmVhdGVGaWxlSGVscGVyOjpDcmVh
dGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdDo6
Y3JlYXRlKCkpOwogICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRS
ZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgQ3JlYXRlRmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3Vs
dCwgZmlsZUVudHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1VUkwsIHR5cGUoKSkpOwogICAgIGlmICgh
bV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5j
LmgKaW5kZXggMjRmYmQxNS4uMjYyOWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmMgOiBw
dWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0
eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3lu
Y0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVT
eXN0ZW1TeW5jKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkp
OwogICAgIH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RmlsZVdy
aXRlclN5bmM+IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1T
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKaW5kZXggMTc5ZWNlNi4uODIzYTVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dG
aWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIERPTVdpbmRvd0ZpbGVTeXN0ZW06
OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiB3aW5kb3csIGNvbgog
ICAgICAgICByZXR1cm47CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KSB8fCAhc2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlP
cmlnaW4tPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBET01GaWxlU3lzdGVt
OjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNy
ZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHAKaW5kZXggOWQ4MWEyMi4uNDJiNGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIEZpbGVTeXN0ZW1DYWxsYmFja3M6OkZpbGVTeXN0ZW1DYWxsYmFja3Mo
UGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDCiB7CiB9CiAKLXZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsK
ICAgICAgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7CkBAIC0yMTEsNyArMjExLDcgQEAgUmVz
b2x2ZVVSSUNhbGxiYWNrczo6UmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmEKIHsKIH0KIAotdm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkws
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCit2b2lkIFJlc29s
dmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQogewogICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwogICAgIFJlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gcm9vdCA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuZ2V0KCksIG5hbWUsIG1fdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKS0+cm9v
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMjVmZTM2OC4uMzk5YzU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIGNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3Mg
OiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0
ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW0+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKIGNsYXNzIFJlc29sdmVVUklDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc29sdmVVUklDYWxs
YmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOwogCiBwcml2YXRlOgogICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2QyYWVhNC4uNmQ5ODRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtU3luYz4gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXF1
ZXN0RmlsZVN5c3QKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgY29uc3Qg
U3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgS1VSTCBjb21w
bGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRlZFVS
TCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CiAgICAgICAgIERP
TUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TChXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2Vy
LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBs
ZXRlVVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9
IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OlNFQ1VSSVRZX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCmluZGV4IGRiNDc1MWUuLmZiYzRhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKIAotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZUJh
c2UuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3IEBAIE1lZGlhU291cmNlUmVnaXN0cnkm
IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKLXZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKK3ZvaWQgTWVk
aWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
IHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIEFTU0VSVCgmcmVnaXN0
cmFibGUtPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVnaXMKICAgICBtX21lZGlhU291
cmNlcy5zZXQodXJsLnN0cmluZygpLCBzb3VyY2UpOwogfQogCi12b2lkIE1lZGlhU291cmNlUmVn
aXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVNvdXJjZUJhc2U+
ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlhU291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oCmluZGV4IDQ2YzI0ZDQuLjc4ZDI3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIE1lZGlhU291cmNlQmFzZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdp
c3RyeSA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgTWVkaWFTb3VyY2VSZWdpc3RyeSYgcmVnaXN0cnkoKTsKIAogICAgIC8vIFJlZ2lz
dGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIG1lZGlhIHNvdXJjZS4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
clVSTChjb25zdCBLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJM
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCAzNmQyN2U2Li4yOTY3MTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00MSwx
NCArNDEsMTQgQEAgTWVkaWFTdHJlYW1SZWdpc3RyeSYgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVn
aXN0cmFibGUqIHN0cmVhbSkKK3ZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJVUkwo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHN0cmVhbSkK
IHsKICAgICBBU1NFUlQoJnN0cmVhbS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMuc2V0KHVybC5zdHJpbmco
KSwgc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihzdHJlYW0pLT5kZXNjcmlwdG9yKCkpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJs
KQordm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9zdHJlYW1EZXNjcmlwdG9y
cy5yZW1vdmUodXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKaW5kZXggZThiZTRjMS4uZTQ2
YzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CiAKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBNZWRpYVN0cmVhbVJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogCiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgc3RyZWFtIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VS
TCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVS
TChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAK
ICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIGxvb2t1cE1lZGlhU3RyZWFtRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggY2VkMDIzMy4uMDUxZTBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxSVENDb25m
aWd1cmF0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERp
Y3Rpb24KICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7
CisgICAgICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgICAgIGlmICghdXJsLmlz
VmFsaWQoKSB8fCAhKHVybC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJsLnByb3RvY29sSXMoInN0
dW4iKSkpIHsKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9y
Y29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCmlu
ZGV4IDk5Yjk2Y2YuLmYzYjFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzLmNwcApAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21IYW5k
bGVyVVJMKGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4YwogICAg
IFN0cmluZyBuZXdVUkwgPSB1cmw7CiAgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgV1RGX0FSUkFZ
X0xFTkdUSCh0b2tlbikgLSAxKTsKIAotICAgIEtVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJh
c2VVUkwpOwotICAgIEtVUkwga3VybChiYXNlLCBuZXdVUkwpOworICAgIFVSTCBiYXNlKFBhcnNl
ZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKIAogICAg
IGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBhYWI1NjQ5Li5mNjI5ZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pY29uID0gaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpOworICAgIG1faWNvbiA9
IGljb25VUkkuaXNFbXB0eSgpID8gVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bXBsZXRlVVJMKGljb25VUkkpOwogICAgIGlmICghbV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29u
LmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIGlmIChvcHRp
b25zLmdldCgiZGlyIiwgYXJndW1lbnQpKQogICAgICAgICBub3RpZmljYXRpb24tPnNldERpcihh
cmd1bWVudCk7CiAgICAgaWYgKG9wdGlvbnMuZ2V0KCJpY29uIiwgYXJndW1lbnQpKSB7Ci0gICAg
ICAgIEtVUkwgaWNvblVSSSA9IGFyZ3VtZW50LmlzRW1wdHkoKSA/IEtVUkwoKSA6IGNvbnRleHQt
PmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKKyAgICAgICAgVVJMIGljb25VUkkgPSBhcmd1bWVudC5p
c0VtcHR5KCkgPyBVUkwoKSA6IGNvbnRleHQtPmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKICAgICAg
ICAgaWYgKCFpY29uVVJJLmlzRW1wdHkoKSAmJiBpY29uVVJJLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIG5vdGlmaWNhdGlvbi0+c2V0SWNvblVSTChpY29uVVJJKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXgg
NTA3YTdmYS4uNzk2NzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0RGlyZWN0aW9uLmgiCkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbjsgfQotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBLVVJMJiB1cmwpIHsgbV9pY29uID0g
dXJsOyB9CisgICAgVVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9pY29uID0gdXJsOyB9CiAKICAgICBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgU3RyaW5nIGJvZHko
KSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX2ljb247Cisg
ICAgVVJMIG1faWNvbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5Owog
ICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAppbmRleCA5ZTkyODM2Li4y
MjgxNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNw
cAppbmRleCA1OWQ0MmY5Li5jZGMxZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNw
ZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hHcmFtbWFyKTsKIH0KIAotUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVl
Y2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQorUGFzc1Jl
ZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgVVJMJiBzcmMs
IGRvdWJsZSB3ZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFy
KHNyYywgd2VpZ2h0KSk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFNwZWVjaEdyYW1tYXI6OlNwZWVj
aEdyYW1tYXIoKQogewogfQogCi1TcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0IEtV
UkwmIHNyYywgZG91YmxlIHdlaWdodCkKK1NwZWVjaEdyYW1tYXI6OlNwZWVjaEdyYW1tYXIoY29u
c3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCiAgICAgOiBtX3NyYyhzcmMpCiAgICAgLCBtX3dl
aWdodCh3ZWlnaHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hHcmFtbWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmgKaW5kZXggNzRiMDBhZC4uNDk0MWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKFNDUklQVEVEX1NQRUVDSCkKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFNwZWVjaEdyYW1tYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hHcmFtbWFy
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRl
KCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBpcyBub3QgY2xlYXIgb24gd2hhdCB0aGUgY29uc3RydWN0
b3Igc2hvdWxkIGxvb2sgbGlrZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFy
PiBjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBjcmVhdGUoY29uc3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWln
aHQpOwogCi0gICAgY29uc3QgS1VSTCYgc3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25z
dCB7IHJldHVybiBtX3NyYzsgfQotICAgIGNvbnN0IEtVUkwmIHNyYygpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNv
bnN0IHsgcmV0dXJuIG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoKSBjb25zdCB7IHJldHVy
biBtX3NyYzsgfQogICAgIHZvaWQgc2V0U3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHNyYyk7CiAKICAgICBkb3VibGUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV93
ZWlnaHQ7IH0KQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNwZWVj
aEdyYW1tYXIoKTsKLSAgICBTcGVlY2hHcmFtbWFyKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdl
aWdodCk7CisgICAgU3BlZWNoR3JhbW1hcihjb25zdCBVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7
CiAKLSAgICBLVVJMIG1fc3JjOworICAgIFVSTCBtX3NyYzsKICAgICBkb3VibGUgbV93ZWlnaHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFt
bWFyTGlzdC5jcHAKaW5kZXggYzNkZGJlMS4uMmRhYTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRk
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIHdlaWdodCkKIHsKICAgICBT
dHJpbmcgdXJsU3RyaW5nID0gU3RyaW5nKCJkYXRhOmFwcGxpY2F0aW9uL3htbCwiKSArIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc3RyaW5nKTsKLSAgICBtX2dyYW1tYXJzLmFwcGVuZChT
cGVlY2hHcmFtbWFyOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybFN0cmluZyksIHdlaWdodCkpOwor
ICAgIG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdyYW1tYXI6OmNyZWF0ZShVUkwoVVJMKCksIHVy
bFN0cmluZyksIHdlaWdodCkpOwogfQogCiBTcGVlY2hHcmFtbWFyTGlzdDo6U3BlZWNoR3JhbW1h
ckxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBmZjcyODNkLi5kZWQzNGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
ICAgICBJbnZhbGlkTWVzc2FnZQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0
ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcg
ZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgp
IGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGQ5NjA2NDEuLmE0MmI5YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yMTMsNyArMjEz
LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0KCkg
dXJsPSclcyciLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV91cmwgPSBLVVJMKEtV
UkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKIAogICAgIGlmICghbV91
cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQg
dXJsIGZvciBXZWJTb2NrZXQgIiArIG1fdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgbV9jaGFu
bmVsLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi1jb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVy
bCgpIGNvbnN0Citjb25zdCBVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggZDY3YzU0Yy4uNDA0OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJiBlYykgeyBjbG9zZShXZWJTb2NrZXRDaGFubmVsOjpD
bG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCwgU3RyaW5nKCksIGVjKTsgfQogICAgIHZvaWQgY2xv
c2UoaW50IGNvZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNsb3NlKGNvZGUsIFN0cmluZygpLCBl
Yyk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBtX2NoYW5uZWw7CiAKICAg
ICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIHVu
c2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnRBZnRlckNsb3NlOwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IGU3ZjhkYmQuLmE5MzJiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQogewogfQogCi12b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjb25uZWN0KCkiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGYxNDhjZDkuLjM5NjQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggNTYzZDcxNC4uMWVjMTI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVySW5TZWNXZWJTb2NrZXRLZXlbXSA9ICIhXCIjJCUmJygp
KissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6e3x9fiI7CiAKLXN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0
IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKICAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsK
QEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgS1VSTCYg
dXJsKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29u
c3QgS1VSTCYgdXJsLCBib29sIHNlY3VyZSkKK3N0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgc2VjdXJlKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3Nz
IikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0xMjEsNyArMTIx
LDcgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2Nl
cHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXQKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhhc2guZGF0YSgpKSwgc2hhMUhhc2hTaXplKTsK
IH0KIAotV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3RvY29sKQog
ICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCkBAIC0xMzYsMTIgKzEzNiwx
MiBAQCBXZWJTb2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQogewogfQogCi1j
b25zdCBLVVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIFdl
YlNvY2tldEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV91cmw7CiB9CiAK
LXZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9
IHVybC5jb3B5KCk7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghbV9jbGllbnRQ
cm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQt
UHJvdG9jb2w6ICIgKyBtX2NsaWVudFByb3RvY29sKTsKIAotICAgIEtVUkwgdXJsID0gaHR0cFVS
TEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOworICAgIFVSTCB1cmwgPSBodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9jb250ZXh0
KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGRvY3VtZW50LCB1cmwpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIFJlc291cmNlUmVxdWVzdCBXZWJT
b2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogICAgIGlmICgh
bV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRl
ckZpZWxkKCJTZWMtV2ViU29ja2V0LVByb3RvY29sIiwgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAg
ICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICBV
UkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmICht
X2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTM4Niw5ICszODYsOSBAQCB2
b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8
V2ViU29ja2V0RXh0ZW5zaW9uUHJvYwogICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9j
ZXNzb3IocHJvY2Vzc29yKTsKIH0KIAotS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxG
b3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAorVVJMIFdlYlNvY2tldEhhbmRzaGFr
ZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiB7Ci0gICAgS1VS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgVVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKICAgICBi
b29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAiaHR0cHMi
IDogImh0dHAiKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxkU2V0
UHJvdG9jb2wpOwogICAgIHJldHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggYzg3YWM2Yi4uY2Nh
YjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCkBAIC01MSwx
MSArNTEsMTEgQEAgcHVibGljOgogICAgIGVudW0gTW9kZSB7CiAgICAgICAgIEluY29tcGxldGUs
IE5vcm1hbCwgRmFpbGVkLCBDb25uZWN0ZWQKICAgICB9OwotICAgIFdlYlNvY2tldEhhbmRzaGFr
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgfldlYlNvY2tldEhhbmRz
aGFrZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwo
Y29uc3QgS1VSTCYpOworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRV
UkwoY29uc3QgVVJMJik7CiAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3Qg
U3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpOwogCiBwcml2YXRlOgotICAgIEtVUkwgaHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OworICAgIFVSTCBodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CiAKICAgICBpbnQgcmVhZFN0YXR1c0xpbmUo
Y29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUs
IFN0cmluZyYgc3RhdHVzVGV4dCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7
CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9jbGllbnRQ
cm90b2NvbDsKICAgICBib29sIG1fc2VjdXJlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IGM5MzZlZTAuLmI2YmEyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6fldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkKICAgICAgICAgbV9icmlk
Z2UtPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIGlmIChtX2JyaWRnZSkKICAgICAg
ICAgbV9icmlkZ2UtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6On5QZWVyKCkKICAgICAgICAg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNv
Y2tldENoYW5uZWwpCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKICAgICAgICAgbV93b3JrZXJDbGll
bnRXcmFwcGVyLT5zZXRGYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGVlciogcGVlciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCoKICAgICBwZWVyLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIpOwog
ICAgIGlmICghbV9wZWVyKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0
aW9uCiAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcg
bG9uZyBzaXplKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA0MTlhYzQyLi5mZjk4OWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIH5QZWVyKCk7CiAKLSAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImKTsK
ICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIH5CcmlkZ2UoKTsKICAgICAgICAgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJik7CkBAIC0xNjks
MTAgKzE2OSwxMCBAQCBwcml2YXRlOgogCiAgICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoV29ya2VyR2xvYmFsU2NvcGUqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
OwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4gPik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRCbG9i
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5k
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRp
YyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA1MDRkOTJkLi5iNjgzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEw
MjYsNyArMTAyNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAot
ICAgIHBsYXRmb3JtL0tVUkwuY3BwIFwKKyAgICBwbGF0Zm9ybS9VUkwuY3BwIFwKICAgICBwbGF0
Zm9ybS9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAgXAogICAgIHBsYXRm
b3JtL0xlbmd0aEJveC5jcHAgXApAQCAtMjI0Myw3ICsyMjQzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggXAogICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmcuaCBcCi0gICAgcGxhdGZvcm0vS1VSTC5oIFwKKyAgICBwbGF0Zm9ybS9VUkwu
aCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXAogICAgIHBsYXRmb3JtL0xlbmd0aEJveC5oIFwK
ICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJDb21wYXJhdG9yLmggXApAQCAtMjkwNCw3ICsy
OTA0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR2x5cGhQYWdl
VHJlZU5vZGVRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRh
UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwIFwKLSAgICBwbGF0
Zm9ybS9xdC9LVVJMUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9VUkxRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1Bhc3Rl
Ym9hcmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGYwYWFiODYuLmIwYjY5N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC02Nyw3ICs2Nyw2IEBAIF9fWk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3Ry
aW5nRXYKIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBfX0NGU3RyaW5nCiBfX1pOM1dU
RjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwot
X19aTjdXZWJDb3JlOEdyYWRpZW50RDFFdgogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktO
U183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKQEAgLTg5LDYgKzg4LDggQEAgX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYgogX19aTjdXZWJDb3JlMTBT
Y3JvbGxWaWV3MjNzZXRQYWludHNFbnRpcmVDb250ZW50c0ViCiBfX1pON1dlYkNvcmUxMFNjcm9s
bFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdlZEV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0
aGlkZUV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hvd0V2CiBfX1pON1dlYkNvcmUxMFNj
cm9sbFZpZXc1cGFpbnRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNldpZGdl
dEVFRQogX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwMTByZW1vdmVJdGVtRVJLTjNXVEY2U3RyaW5n
RVJTMl8KQEAgLTk5LDExICsxMDAsMTEgQEAgX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwNmNyZWF0
ZUVqCiBfX1pON1dlYkNvcmUxMFN0b3JhZ2VNYXA3c2V0SXRlbUVSS04zV1RGNlN0cmluZ0VTNF9S
UzJfUmIKIF9fWk43V2ViQ29yZTEwZGVsZXRlRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTEwZmlsZUV4aXN0c0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTEwc2V0Q29va2ll
c0VQTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
MHNldENvb2tpZXNFUE5TXzhEb2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKK19fWk43V2ViQ29yZTExQml0bWFw
SW1hZ2UxM2dldENHSW1hZ2VSZWZFdgogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVA3Q0dJ
bWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJFCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUE5T
XzEzSW1hZ2VPYnNlcnZlckUKLV9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2UxM2dldENHSW1hZ2VS
ZWZFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
dgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
TjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQogX19aTjdX
ZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0cmluZ0UKQEAgLTExMSwx
NCArMTEyLDEzIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzCiBfX1pON1dlYkNvcmUxMUZpbGVD
aG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNo
b3VsZENsb3NlRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVjdGVkRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUViYk5TXzE4
U2hvdWxkU2VuZFJlZmVycmVyRQotX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyc2hvdWxkUmVs
b2FkRVJLTlNfNEtVUkxFUzNfCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3Rl
ZEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVi
Yk5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZGV0
YWNoQ2hpbGRyZW5FdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNF
TlNfMjZDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2Fk
ZXIxNmRldGFjaEZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE2bG9hZEZy
YW1lUmVxdWVzdEVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEViYk4zV1RGMTBQYXNzUmVmUHRySU5T
XzVFdmVudEVFRU5TNV9JTlNfOUZvcm1TdGF0ZUVFRU5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQog
X19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVzZXJDYW5jZWxFYgotX19aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjIxbG9hZFVSTEludG9DaGlsZEZyYW1lRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMWxvYWRVUkxJ
bnRvQ2hpbGRGcmFtZUVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFUE5TXzVGcmFtZUUKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXIyMmZpbmRGcmFtZUZvck5hdmlnYXRpb25FUktOM1dURjEyQXRv
bWljU3RyaW5nRVBOU184RG9jdW1lbnRFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjN0aW1l
T2ZMYXN0Q29tcGxldGVkTG9hZEV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjZyZWxvYWRX
aXRoT3ZlcnJpZGVFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKQEAgLTE0NiwxMyArMTQ2LDEyIEBA
IF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlF
UktOM1dURjZTdHJpbmdFUDExb2JqY19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0y
MWRlY29kZUJhY2tGb3J3YXJkVHJlZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9STlMxXzdEZWNvZGVy
RQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIybWVyZ2VBdXRvQ29tcGxldGVIaW50c0VQUzBf
Ci1fX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtNnNldFVSTEVSS05TXzRLVVJMRQogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTd2aXNpdGVkRVJLTjNXVEY2U3RyaW5nRWROU18xOFZpc2l0Q291bnRC
ZWhhdmlvckUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURhdGFFdgogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbThzZXRUaXRsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW1DMUVSS04zV1RGNlN0cmluZ0VTNF9TNF9kCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfZAotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMx
RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFUzdfUzdfCitfX1pON1dlYkNvcmUxMUhpc3RvcnlJ
dGVtQzFFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XwogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbUMxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUx
MUpTRE9NV2luZG93NnNfaW5mb0UKQEAgLTE2MCw3ICsxNTksNyBAQCBfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMTFzZXREaXNhYmxlZEViCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNnZXRT
dGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxM3NldENhcGFjaXRpZXNFampq
CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRldmljdFJlc291cmNlc0V2Ci1fX1pON1dlYkNv
cmUxMU1lbW9yeUNhY2hlMTRyZXNvdXJjZUZvclVSTEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3Jl
MTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU18zVVJMRQogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE4cmVzb3VyY2VGb3JSZXF1ZXN0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBf
X1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNo
U2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2lu
SGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUy
NXJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCkBAIC0xNjgs
OCArMTY3LDggQEAgX19aTjdXZWJDb3JlMTFQYWdlQ29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRp
b25zRXYKIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9u
c0ViCiBfX1pON1dlYkNvcmUxMVNRTFJlc3VsdE9rRQogX19aTjdXZWJDb3JlMTFVUkxXaXRoRGF0
YUVQNk5TRGF0YVA1TlNVUkwKLV9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJO
M1dURjdDU3RyaW5nRQogX19aTjdXZWJDb3JlMTFnZXRVUkxCeXRlc0VQSzdfX0NGVVJMUk4zV1RG
NlZlY3RvckljTG01MTJFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxMWdl
dFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExaUJlYW1D
dXJzb3JFdgogX19aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2CiBfX1pON1dlYkNvcmUxMXN0YXJ0
T2ZMaW5lRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCkBAIC0yMzQsNyArMjMzLDcgQEAgX19aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3JEMUV2CiBfX1pON1dlYkNvcmUxMlVURjhFbmNvZGluZ0V2CiBf
X1pON1dlYkNvcmUxMmNhY2hlU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQ
S05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFTlMzXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFTlNfMjNFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZUViTlNfMTNFQWJzb2x1dGVVUkxzRQot
X19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVS
S05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktO
U18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pON1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBf
X1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUxMHJvb3RPYmplY3RFdgpAQCAtMjYxLDYgKzI2MCw3
IEBAIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4c2V0QmFja2dyb3VuZENvbG9yRVJLTlNf
NUNvbG9yRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjBzZXRSZXBsaWNhdGVkQnlMYXll
ckVQUzBfCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI1NG5vdGVEZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50c0V2CiBfX1pON1dlYkNvcmUxM0dyYXBo
aWNzTGF5ZXI2Y3JlYXRlRVBOU18yMEdyYXBoaWNzTGF5ZXJGYWN0b3J5RVBOU18xOUdyYXBoaWNz
TGF5ZXJDbGllbnRFCitfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI3c2V0U2l6ZUVSS05TXzlG
bG9hdFNpemVFCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI4YWRkQ2hpbGRFUFMwXwogX19a
TjdXZWJDb3JlMTNHcmFwaGljc0xheWVyQzJFUE5TXzE5R3JhcGhpY3NMYXllckNsaWVudEUKIF9f
Wk43V2ViQ29yZTEzR3JhcGhpY3NMYXllckQyRXYKQEAgLTI4MiwxMSArMjgyLDEzIEBAIF9fWk43
V2ViQ29yZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMx
RVA3TlNFcnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKIF9f
Wk43V2ViQ29yZTEzU1FMUmVzdWx0RG9uZUUKK19fWk43V2ViQ29yZTEzU2NyaXB0R0NFdmVudDEx
Z2V0SGVhcFNpemVFUk5TXzhIZWFwSW5mb0UKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIy
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dURjZTdHJpbmdF
YgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVkTlNfMTdDU1NQcmltaXRpdmVWYWx1ZTlVbml0VHlwZXNFYgotX19a
TjdXZWJDb3JlMTNjb29raWVzRm9yRE9NRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U180S1VSTEVTNV8KK19fWk43V2ViQ29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUUKIF9fWk43
V2ViQ29yZTEzZGlyZWN0b3J5TmFtZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEzZ2V0
UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9STjNX
VEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlMTNsaXN0RGlyZWN0b3J5RVJLTjNXVEY2U3RyaW5nRVMzXwogX19aTjdXZWJDb3JlMTNw
b2ludGVyQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRvd0VOM0pTQzdKU1ZhbHVl
RQpAQCAtMzkwLDEwICszOTIsOSBAQCBfX1pON1dlYkNvcmUxNFNjcm9sbGJhclRoZW1lNXRoZW1l
RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjhjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfaQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRl
RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBv
bGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlQb2xpY3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZlcnJl
clBvbGljeUVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTZWN1cml0
eVBvbGljeTIyZ2VuZXJhdGVSZWZlcnJlckhlYWRlckVOU18xNFJlZmVycmVyUG9saWN5RVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5Mjlh
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFUzdfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTMycmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5n
RVM3X2IKQEAgLTQwNSw3ICs0MDYsNyBAQCBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJz
eW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3Jp
Z2luRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdl
VHJhY2tlcjd0cmFja2VyRXYKIF9fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93UGx1
Z2luc0VOU18yOFJlYXNvbkZvckNhbGxpbmdBbGxvd1BsdWdpbnNFCi1fX1pON1dlYkNvcmUxNGNv
b2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8K
K19fWk43V2ViQ29yZTE0Y29va2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcK
IF9fWk43V2ViQ29yZTE0ZW5jb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRl
bmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlRQpAQCAtNDE3LDcgKzQxOCwyMyBAQCBfX1pON1dlYkNvcmUxNUFmZmluZVRy
YW5zZm9ybThtdWx0aXBseUVSS1MwXwogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm05dHJh
bnNsYXRlRWRkCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybUMxRWRkZGRkZAogX19aTjdX
ZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2Ci1fX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJj
ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJM
RVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNv
cmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRC
dWZmZXJFRUVSS05TXzNVUkxFUktOUzFfNlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNw
b25zZUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhp
c3RvcnlJdGVtRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgor
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWN1cnJlbnRJdGVtRXYKK19fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0MTFmb3J3YXJkSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDExc2V0Q2FwYWNpdHlFaQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMmNv
bnRhaW5zSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhp
c3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82
UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgorX19aTjdXZWJDb3JlMTVCYWNr
Rm9yd2FyZExpc3Q2Z29CYWNrRXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJs
ZWRFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW50cmllc0V2CitfX1pON1dlYkNv
cmUxNUJhY2tGb3J3YXJkTGlzdDhiYWNrSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdDhjYXBhY2l0eUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRF
dgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3RDMUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNv
cmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdy
YXBwZXJXb3JsZEQxRXYKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXpl
RVJLTjNXVEY2U3RyaW5nRQpAQCAtNDM1LDkgKzQ1Miw5IEBAIF9fWk43V2ViQ29yZTE1RGF0YWJh
c2VNYW5hZ2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5
T3JpCiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjhzZXRRdW90YUVQTlNfMTRTZWN1cml0
eU9yaWdpbkV5CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjlzZXRDbGllbnRFUE5TXzIx
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxMHNl
dEZvY3VzZWRFYgotX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVt
ZW50RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3Vz
RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNldEZvY3VzZWRGcmFt
ZUVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250
cm9sbGVyMTVzZXRJbml0aWFsRm9jdXNFTlNfMTRGb2N1c0RpcmVjdGlvbkVQTlNfMTNLZXlib2Fy
ZEV2ZW50RQorX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVtZW50
RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3VzRGly
ZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIyOHNldENvbnRhaW5pbmdXaW5k
b3dJc1Zpc2libGVFYgogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXI5c2V0QWN0aXZlRWIK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTBzdHJva2VSZWN0RVJLTlNfOUZsb2F0UmVj
dEVmCkBAIC00OTcsNyArNTE0LDcgQEAgX19aTjdXZWJDb3JlMTVTdHJpbmdUcnVuY2F0b3I1d2lk
dGhFUktOM1dURjZTdHJpbmdFUktOU180Rm9udEVOUzBfMjRFbmFibGVSb3VuZGkKIF9fWk43V2Vi
Q29yZTE1VmlzaWJsZVBvc2l0aW9uQzFFUktOU184UG9zaXRpb25FTlNfOUVBZmZpbml0eUUKIF9f
Wk43V2ViQ29yZTE1ZGVmYXVsdExhbmd1YWdlRXYKIF9fWk43V2ViQ29yZTE1bG9jYWxpemVkU3Ry
aW5nRVBLYwotX19aTjdXZWJDb3JlMTVtaW1lVHlwZUZyb21VUkxFUktOU180S1VSTEUKK19fWk43
V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE1b3JpZ2lu
YWxVUkxEYXRhRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE1cGF0aEdldEZpbGVOYW1lRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTVyZXBvcnRFeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFUE5TXzEyQ2FjaGVkU2NyaXB0RQpAQCAtNTA3LDcgKzUyNCw3IEBAIF9fWk43
V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNr
VXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxp
Y2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQot
X19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhEb2N1bWVudEVSS05TXzRLVVJM
RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhE
b2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3kxN2dldERhdGFiYXNlU2VydmVyRXYKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9u
RGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90
aW9uRGF0YTEyUm90YXRpb25SYXRlNmNyZWF0ZUViZGJkYmQKQEAgLTU5Myw3ICs2MTAsNyBAQCBf
X1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENh
Y2hlZFJlc291cmNlRVJLTlNfMTVSZQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9F
CiBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRl
bXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zy
b21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVM1X1JLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3
dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNp
b25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKQEAgLTYxNiw0MCArNjMzLDIyIEBAIF9fWk43
V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzRDFFdgogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKIF9fWk43V2ViQ29yZTE4bWFrZUFsbERpcmVjdG9yaWVzRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTNKU0hUTUxFbGVtZW50RQotX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktOU180
S1VSTEVQS05TXzE3TmV0d29ya2luZ0NvbnRleHRFCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMTFpc1N1c3BlbmRlZEV2CitfX1pON1dlYkNvcmUxOHByb3h5U2VydmVyc0ZvclVS
TEVSS05TXzNVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQogX19aTjdXZWJDb3JlMTlBbmlt
YXRpb25Db250cm9sbGVyMTZyZXN1bWVBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0
aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlMTlBbmltYXRp
b25Db250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktO
M1dURjEyQXRvbWljU3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIx
cGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0Vk
CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzNnNldEFsbG93c05ld0FuaW1hdGlv
bnNXaGlsZVN1c3BlbmRlZEViCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNh
bGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3QxMHJlbW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDEwc2V0RW5hYmxlZEViCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlz
dDExY3VycmVudEl0ZW1FdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJ
dGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFzZXRDYXBhY2l0eUVpCi1fX1pO
N1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29udGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVt
RQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNX
VEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RX
aXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxt
MEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
NmNsb3NlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgotX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDdlbnRyaWVzRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGJhY2tJdGVt
RXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGNhcGFjaXR5RXYKLV9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0OWdvRm9yd2FyZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdEMxRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRW
YWx1ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjEw
aW52YWxpZGF0ZUV2CitfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXIyM3J1bkxvb3BP
YnNlcnZlckNhbGxiYWNrRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjZyZXN1
bWVFdgogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyN3N1c3BlbmRFdgogX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyOHNjaGVkdWxlRXYKK19fWk43V2ViQ29yZTE5TGF5
ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pO
N1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJDMkVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50RQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDFFdgogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDJFdgotX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyMjNydW5Mb29wT2JzZXJ2ZXJDYWxsYmFja0V2Ci1fX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTFzZXRIVFRQQm9keUVOM1dURjEwUGFzc1JlZlB0cklO
U184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTEzc2V0SFRU
UE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTE4c2V0SFRUUEhlYWRlckZpZWxkRVBLY1JLTjNXVEY2U3RyaW5nRQpAQCAtNjU4LDcgKzY1Nyw3
IEBAIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIyZGVmYXVsdFRpbWVvdXRJbnRl
cnZhbEV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNHNfZGVmYXVsdFRpbWVv
dXRJbnRlcnZhbEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTI1c2V0RGVmYXVs
dFRpbWVvdXRJbnRlcnZhbEVkCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U1MHNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RVJLTjNXVEY2
U3RyaW5nRVM0X1M0XwotX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVS
S05TXzRLVVJMRQorX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVSS05T
XzNVUkxFCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI1Zmx1c2hFdgogX19aTjdX
ZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNmRlY29kZUVQS2NtCiBfX1pON1dlYkNvcmUxOVRl
eHRSZXNvdXJjZURlY29kZXJDMUVSS04zV1RGNlN0cmluZ0VSS05TXzEyVGV4dEVuY29kaW5nRWIK
QEAgLTY3Miw3ICs2NzEsNiBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFF
dgogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb25FTlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCiBfX1pON1dlYkNv
cmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MzdzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklz
SGlkZGVuRWIKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3Q0NHNldFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uV2l0aERlc2NyaXB0aW9uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uRVJLTjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRP
YmplY3QyMWlzUmVwbGFjZW1lbnRPYnNjdXJlZEV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFu
ZGxlQ2xpZW50MTZkaWRSZWNlaXZlQnVmZmVyRVBOU18xNFJlc291cmNlSGFuZGxlRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFaQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhh
bmRsZUNsaWVudDIwd2lsbFNlbmRSZXF1ZXN0QXN5bmNFUE5TXzE0UmVzb3VyY2VIYW5kbGVFUktO
U18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29y
ZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQyMndpbGxDYWNoZVJlc3BvbnNlQXN5bmNFUE5TXzE0UmVz
b3VyY2VIYW5kbGVFUDE5TlNDYWNoZWRVUkxSZXNwb25zZQpAQCAtNjg4LDkgKzY4Niw4IEBAIF9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVSS04z
V1RGMTJBdG9taWNTdHJpbmdFUktOCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
MTlzZXRUZXh0RW5jb2RpbmdOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTIwc2V0U3VnZ2VzdGVkRmlsZW5hbWVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjRzZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGhFeAotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZzZXRVUkxFUktOU180S1VS
TEUKK19fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNfM1VSTEUK
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2VDMkV2Ci1fX1pON1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlQzJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0V4UzdfUzdfCiBf
X1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yN3Nfc3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yQzFFTlNfMjZQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZUUK
IF9fWk43V2ViQ29yZTIwVXNlckdlc3R1cmVJbmRpY2F0b3JEMUV2CkBAIC03MTEsNyArNzA4LDYg
QEAgX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMXJlc3VtZVBlbmRpbmdSZXF1
ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIyc3VzcGVuZFBlbmRp
bmdSZXF1ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIzc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWRFUE5TXzVGcmFtZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFUktOU18yMVJlc291cmNl
TG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQotX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyN2Nyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZEVQTlNfMTRSZXNv
dXJjZUxvYWRlckVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIzMm5vdGlmeURpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RVBOU18xNFJlc291cmNlTG9hZGVy
RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXI2cmVtb3ZlRVBOU18xNFJlc291
cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXJDMkV2CkBAIC04
MDMsMTMgKzc5OSwxMyBAQCBfX1pON1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZUMyRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI3RGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0
cklOU18yMURldmljZU9yaWVudGF0aW9uRGF0YUVFRQogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2tDMUV2Ci1fX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbEVSS05TXzRLVVJMRVMyXworX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWxFUktOU18zVVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhv
clNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCiBfX1pO
N1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29y
ZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkVSS05TXzRLVVJMRVM1XworX19aTjdXZWJDb3JlMjljb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43
V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9fWk43V2ViQ29yZTMw
aG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43
V2ViQ29yZTMwaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFu
Z2UKQEAgLTgxOSw2ICs4MTUsMTEgQEAgX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNFdgogX19aTjdXZWJDb3JlMzdX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVzX3dpZGdldEhpZXJhcmNoeVVw
ZGF0ZVN1c3BlbmRDb3VudEUKK19fWk43V2ViQ29yZTNVUkwxMGludmFsaWRhdGVFdgorX19aTjdX
ZWJDb3JlM1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlM1VSTEMxRVA1TlNVUkwKK19fWk43V2ViQ29yZTNVUkxDMUVQSzdfX0NGVVJMCitf
X1pON1dlYkNvcmUzVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTNtYWNF
UktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUUKIF9fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1Zp
ZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFZgpAQCAtODMz
LDExICs4MzQsNiBAQCBfX1pON1dlYkNvcmU0Rm9udEMxRXYKIF9fWk43V2ViQ29yZTRGb250YVNF
UktTMF8KIF9fWk43V2ViQ29yZTRJY29uMThjcmVhdGVJY29uRm9yRmlsZXNFUktOM1dURjZWZWN0
b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3Jl
NEljb25EMUV2Ci1fX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2Ci1fX1pON1dlYkNvcmU0
S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJD
b3JlNEtVUkxDMUVQNU5TVVJMCi1fX1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKLV9fWk43
V2ViQ29yZTRLVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTBy
ZW5kZXJSZWN0RVBiCiBfX1pON1dlYkNvcmU0Tm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NS
ZWZQdHJJUzBfRUVSaU5TXzE0QXR0YWNoQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU0Tm9kZTExcmVt
b3ZlQ2hpbGRFUFMwX1JpCkBAIC0xMDQxLDIyICsxMDM3LDIzIEBAIF9fWk43V2ViQ29yZTdSdW5M
b29wOVRpbWVyQmFzZUQyRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMTlhbGxvd3NSb3VuZGluZ0hh
Y2tzRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMjFzX2FsbG93c1JvdW5kaW5nSGFja3NFCiBfX1pO
N1dlYkNvcmU3VGV4dFJ1bjIyc2V0QWxsb3dzUm91bmRpbmdIYWNrc0ViCi1fX1pON1dlYkNvcmU3
Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3JlN2Nvb2tpZXNF
UEtOU184RG9jdW1lbnRFUktOU18zVVJMRQogX19aTjdXZWJDb3JlN2pzQXJyYXlFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dURjEwUGFzc1JlZlB0cklOU18xM0RP
TVN0cmluZ0xpc3RFRUUKIF9fWk43V2ViQ29yZTdtYWtlUkdCRWlpaQogX19aTjdXZWJDb3JlN3Jl
cGxhY2VFUk4zV1RGNlN0cmluZ0VSS05TXzE3UmVndWxhckV4cHJlc3Npb25FUktTMV8KIF9fWk43
V2ViQ29yZTd0b0ludDY0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVl
RU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQorX19aTjdXZWJDb3JlOEJsb2JE
YXRhMTBhcHBlbmRCbG9iRVJLTlNfM1VSTEV4eAogX19aTjdXZWJDb3JlOEJsb2JEYXRhMTRzZXRD
b250ZW50VHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThDU1NWYWx1ZTdkZXN0cm95
RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19aTjdXZWJDb3JlOERv
Y3VtZW50MTJ1cGRhdGVMYXlvdXRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTNjcmVhdGVFbGVt
ZW50RVJLTlNfMTNRdWFsaWZpZWROYW1lRWIKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0Y3JlYXRl
VGV4dE5vZGVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmU4RG9jdW1lbnQxN3NldEZvY3Vz
ZWRFbGVtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzdFbGVtZW50RUVFTlNfMTRGb2N1c0RpcmVj
dGlvbkUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCiBfX1pON1dl
YkNvcmU4RG9jdW1lbnQxNnNob3J0Y3V0SWNvblVSTHNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTdzZXRGb2N1c2VkRWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVFRU5TXzE0
Rm9jdXNEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyMHN0eWxlUmVzb2x2ZXJDaGFu
Z2VkRU5TXzIzU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWdFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQy
MmNyZWF0ZURvY3VtZW50RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MjNkaWRBZGRX
aGVlbEV2ZW50SGFuZGxlckV2CkBAIC0xMDc1LDggKzEwNzIsMTEgQEAgX19aTjdXZWJDb3JlOEZv
cm1EYXRhNmRlY29kZUVSTjNXVEY3RGVjb2RlckUKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYK
IF9fWk43V2ViQ29yZThHcmFkaWVudDEyYWRkQ29sb3JTdG9wRWZSS05TXzVDb2xvckUKIF9fWk43
V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXworX19aTjdXZWJDb3JlOEdy
YWRpZW50RDFFdgogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlwZUUKK19fWk43V2ViQ29yZThTZXR0aW5nczEzZ1FUS2l0
RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTVzZXRRVEtpdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgpAQCAtMTEw
NCw3ICsxMTA0LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNp
emFibGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCi1fX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSS05TXzNVUkxF
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsRXYKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI3c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI3c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5RWIKQEAgLTExNDIs
NyArMTE0Miw2IEBAIF9fWk43V2ViQ29yZTlGb250Q2FjaGUyOXB1cmdlSW5hY3RpdmVGb250RGF0
YUlmTmVlZGVkRXYKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWUxMWFwcGVuZENoaWxkRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWU5Y2xlYXJOYW1lRXYK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MTFmb3JjZUxheW91dEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJzZXRNZWRp
YVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJ0aWxlZEJhY2tp
bmdFdgpAQCAtMTE2MiwxMiArMTE2MSwxMiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRU
cmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTd3aWxsRW5kTGl2ZVJlc2l6
ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MThlbmFibGVBdXRvU2l6ZU1vZGVFYlJLTlNfN0lu
dFNpemVFUzNfCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVDb250cm9sVGludHNFdgot
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTlzY3JvbGxFbGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRS
ZWN0RQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9kZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJlcGFpbnRzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNo
RGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFyZXN1bWVBbmltYXRp
bmdJbWFnZXNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xv
ckVSS05TXzVDb2xvckUKQEAgLTExNzcsMTMgKzExNzYsMTQgQEAgX19aTjdXZWJDb3JlOUZyYW1l
VmlldzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdJbnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvckVO
U18yMVNjcm9sbFBpbm5pbmdCZWhhdmlvckUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVz
dFBhZ2VIZWlnaHREZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjZhZGp1
c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZUV2Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRBdXRv
U2l6ZUZpeGVkTWluaW11bUhlaWdodEVpCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRWaXN1
YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzlmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFt
ZXNFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUk5TXzVGcmFtZUUKIF9fWk43V2Vi
Q29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTF0ZXh0
YXJlYVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMnNlbGVjdGVkQXR0ckUKQEAgLTEyNTMs
MTQgKzEyNTMsMTQgQEAgX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE2c3luY0xvY2FsU3RvcmFnZUV2
CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19aTjdXZWJDb3JlOVBhZ2VHcm91
cDE4bnVtYmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJT
Y3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRL
VVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIz
VXNlclNjcmlwdEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQor
X19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwYWRkVXNlclNjcmlwdFRvV29ybGRFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVO
UzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5T
XzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMHJl
bW92ZUFsbFVzZXJDb250ZW50RXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMXJlbW92ZUFsbFZp
c2l0ZWRMaW5rc0V2Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjRhZGRVc2VyU3R5bGVTaGVldFRv
V29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEtVUkxFUktO
UzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjVVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzRU5TXzE0VXNlclN0eWxlTGV2ZWxFTlNfMjJVc2VyU3R5bGVJbmpl
Y3Rpb25UaW1lRQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNlclNjcmlwdEZyb21X
b3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTlQYWdl
R3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktO
M1dURjZTdHJpbmdFUktOU18zVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25P
dmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHls
ZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2ViQ29yZTlQYWdlR3Jv
dXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNf
M1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzRWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJT
dHlsZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQorX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDI5cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGRFUE5TXzE1
RE9NV3JhcHBlcldvcmxkRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAzMGNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlc0V2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzByZW1v
dmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdX
ZWJDb3JlOVBhZ2VHcm91cDlwYWdlR3JvdXBFUktOM1dURjZTdHJpbmdFCkBAIC0xMjg2LDcgKzEy
ODYsNiBAQCBfX1pON1dlYkNvcmU5cGFnZUNhY2hlRXYKIF9fWk43V2ViQ29yZTlwbGFpblRleHRF
UEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckViCiBfX1pON1dlYkNvcmU5dG9F
bGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5dW5pb25SZWN0RVJLTjNXVEY2VmVj
dG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQotX19aTjdXZWJD
b3JlMTNTY3JpcHRHQ0V2ZW50MTFnZXRIZWFwU2l6ZUVSTlNfOEhlYXBJbmZvRQogX19aTkszSlND
OEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0
Y3JlYXRlQ0ZTdHJpbmdFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExaGFzUGFzc3dvcmRF
dgpAQCAtMTMxNSw4ICsxMzE0LDYgQEAgX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVu
dHNUb1Jvb3RWaWV3RVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4
dmlzaWJsZUNvbnRlbnRSZWN0RU5TXzE0U2Nyb2xsYWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVj
dEluY2x1ZGVzU2Nyb2xsYmFyc0UKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RWaWV3
VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmll
dzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzRoaWRlRXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzRzaG93RXYKIF9fWk5LN1dlYkNv
cmUxMFN0b3JhZ2VNYXA2bGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA3Z2V0SXRl
bUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA4Y29udGFpbnNFUktO
M1dURjZTdHJpbmdFCkBAIC0xMzczLDcgKzEzNzAsNiBAQCBfX1pOSzdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I0bm9kZUV2CiBfX1pOSzdXZWJDb3JlMTJUZXh0SXRlcmF0b3I1cmFuZ2VFdgogX19aTks3
V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE0Y2hpbGROb2RlQ291bnRFdgogX19aTks3V2ViQ29yZTEz
Q29udGFpbmVyTm9kZTljaGlsZE5vZGVFagotX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyN3Nl
dFNpemVFUktOU185RmxvYXRTaXplRQogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4YWNj
dW11bGF0ZWRPcGFjaXR5RXYKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGdldERlYnVn
Qm9yZGVySW5mb0VSTlNfNUNvbG9yRVJmCiBfX1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjZi
YWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZUV2CkBAIC0xNDA2LDcgKzE0MDIsNyBAQCBfX1pOSzdX
ZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxMHJlcXVlc3RVUkxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMWZy
YW1lTG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFyZXNwb25zZVVSTEV2
Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3VyY2VFUktOU180S1VSTEUK
K19fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFzdWJyZXNvdXJjZUVSS05TXzNVUkxFCiBf
X1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEybWFpblJlc291cmNlRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTN1cmxGb3JIaXN0b3J5RXYKIF9fWk5LN1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTR1bnJlYWNoYWJsZVVSTEV2CkBAIC0xNDE3LDcgKzE0MTMsNiBAQCBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cGFyc2VkQXJjaGl2ZURhdGFFdgogX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxOG1haW5SZXNvdXJjZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjE5aXNMb2FkaW5nSW5BUElTZW5zZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjE5b3JpZ2luYWxSZXF1ZXN0Q29weUV2Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVu
dExvYWRlcjIxYXJjaGl2ZVJlc291cmNlRm9yVVJMRVJLTlNfNEtVUkxFCiBfX1pOSzdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjI4dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZUV2CiBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXI5aXNMb2FkaW5nRXYKQEAgLTE0MzAsNiArMTQyNSw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJ
TlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9y
RG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0Vi
CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pOSzdXZWJDb3Jl
MTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxp
c3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFF
dgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0xNDQzLDcgKzE0Mzks
NyBAQCBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIxbW91c2VFbnRlcmVkU2Nyb2xsYmFy
RVBOU185U2Nyb2xsYmFyRQogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMm1vdXNlRXhp
dGVkQ29udGVudEFyZWFFdgogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyM21vdXNlRW50
ZXJlZENvbnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZU1v
dmVkSW5Db250ZW50QXJlYUV2Ci1fX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEwY2FuRGlz
cGxheUVSS05TXzRLVVJMRQorX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3Bs
YXlFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMXRvUmF3U3RyaW5n
RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTJpc29sYXRlZENvcHlFdgogX19aTks3
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNhbkFjY2Vzc1N0b3JhZ2VFUEtTMF9OUzBfMjVTaG91
bGRBbGxvd0Zyb21UaGlyZFBhcnR5RQpAQCAtMTUwMywxMCArMTQ5OSwxMSBAQCBfX1pOSzdXZWJD
b3JlMTdSZXNvdXJjZUVycm9yQmFzZThsYXp5SW5pdEV2CiBfX1pOSzdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQxMWNoYW5nZUNvdW50RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFj
a2luZzExY29udGVudHNCb3hFdgogX19aTks3V2ViQ29yZTE4UmVuZGVyTGF5ZXJCYWNraW5nMjBj
b21wb3NpdGluZ0xheWVyVHlwZUV2CitfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVy
MTFpc1N1c3BlbmRlZEV2CiBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjRudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKK19fWk5LN1dlYkNvcmUxOUFuaW1h
dGlvbkNvbnRyb2xsZXIzM2FsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZEV2CiBfX1pO
SzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJnZXRIaWdobGlnaHRFUE5TXzlIaWdobGln
aHRFCiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhp
Z2hsaWdodGVkTm9kZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3Ry
aW5nRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBLYwog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIwZmlyc3RQYXJ0eUZvckNvb2tpZXNF
dgpAQCAtMTUxNiw2ICsxNTEzLDcgQEAgX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U4aHR0cEJvZHlF
dgogX19aTks3V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTIwSFRNTFRhYmxlQ2VsbEVsZW1lbnQ5Y2VsbEFib3Zl
RXYKK19fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MjFpc1JlcGxhY2VtZW50T2Jz
Y3VyZWRFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmlzQXR0YWNobWVu
dEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTEybGFzdE1vZGlmaWVkRXYK
IF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzQ29kZUV2CkBA
IC0xNTMzLDcgKzE1MzEsNyBAQCBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXI5
YmFja0NvdW50RXYKIF9fWk5LN1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjEzY29va2ll
U3RvcmFnZUV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxMXNjcm9sbExh
eWVyRXYKIF9fWk5LN1dlYkNvcmUyMVJlbmRlckxheWVyQ29tcG9zaXRvcjE1cm9vdFJlbmRlckxh
eWVyRXYKLV9fWk5LN1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjdtYXRjaGVzRVJLTlNf
NEtVUkxFCitfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzNVUkxFCiBfX1pOSzdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTExbWF4aW11bVNp
emVFdgogX19aTks3V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UyMGF1dGhlbnRpY2F0
aW9uQ2xpZW50RXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lMTVmaXJz
dExheW91dERvbmVFdgpAQCAtMTU0NywzMyArMTU0NSwyOSBAQCBfX1pOSzdXZWJDb3JlMjdBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UxOHByb3Bvc2VkQ3JlZGVudGlhbEV2CiBfX1pOSzdXZWJD
b3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UyMHByZXZpb3VzRmFpbHVyZUNvdW50RXYK
IF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTVlcnJvckV2CiBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U2aXNOdWxsRXYKK19fWk5LN1dl
YkNvcmUzVVJMMTBwcm90b2NvbElzRVBLYworX19aTks3V2ViQ29yZTNVUkwxMWNyZWF0ZUNGVVJM
RXYKK19fWk5LN1dlYkNvcmUzVVJMMTFpc0xvY2FsRmlsZUV2CitfX1pOSzdXZWJDb3JlM1VSTDEy
YmFzZUFzU3RyaW5nRXYKK19fWk5LN1dlYkNvcmUzVVJMMTRmaWxlU3lzdGVtUGF0aEV2CitfX1pO
SzdXZWJDb3JlM1VSTDE3bGFzdFBhdGhDb21wb25lbnRFdgorX19aTks3V2ViQ29yZTNVUkwxOGZy
YWdtZW50SWRlbnRpZmllckV2CitfX1pOSzdXZWJDb3JlM1VSTDIxaGFzRnJhZ21lbnRJZGVudGlm
aWVyRXYKK19fWk5LN1dlYkNvcmUzVVJMNGhvc3RFdgorX19aTks3V2ViQ29yZTNVUkw0cGFzc0V2
CitfX1pOSzdXZWJDb3JlM1VSTDRwYXRoRXYKK19fWk5LN1dlYkNvcmUzVVJMNHBvcnRFdgorX19a
Tks3V2ViQ29yZTNVUkw0dXNlckV2CitfX1pOSzdXZWJDb3JlM1VSTDVxdWVyeUV2CitfX1pOSzdX
ZWJDb3JlM1VSTDhwcm90b2NvbEV2CitfX1pOSzdXZWJDb3JlM1VSTGN2UDVOU1VSTEV2CiBfX1pO
SzdXZWJDb3JlNEZvbnQ1d2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0
U2ltcGxlRm9udERhdGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVF
UE5TXzEzR2x5cGhPdmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVH
cmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaU5TMF8yNEN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbkUKIF9fWk5LN1dlYkNvcmU0Rm9udGVxRVJLUzBfCi1fX1pO
SzdXZWJDb3JlNEtVUkwxMHByb3RvY29sSXNFUEtjCi1fX1pOSzdXZWJDb3JlNEtVUkwxMWNyZWF0
ZUNGVVJMRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDExaXNMb2NhbEZpbGVFdgotX19aTks3V2ViQ29y
ZTRLVVJMMTJiYXNlQXNTdHJpbmdFdgotX19aTks3V2ViQ29yZTRLVVJMMTRmaWxlU3lzdGVtUGF0
aEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDE4ZnJhZ21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDIxaGFzRnJh
Z21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRob3N0RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDRwYXNzRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRwYXRoRXYKLV9fWk5LN1dlYkNvcmU0
S1VSTDRwb3J0RXYKLV9fWk5LN1dlYkNvcmU0S1VSTDR1c2VyRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDVxdWVyeUV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw4cHJvdG9jb2xFdgotX19aTks3V2ViQ29yZTRL
VVJMY3ZQNU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTks3
V2ViQ29yZTROb2RlMTNvd25lckRvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNj
ZW5kYW50T2ZFUEtTMF8KLV9fWk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJO
M1dURjExTGlzdEhhc2hTZXRJTlNfNEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdX
ZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdgotI2lmIEVOQUJMRShT
VFlMRV9TQ09QRUQpCi1fX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgotI2VuZGlmCiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5L
N1dlYkNvcmU0Tm9kZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgpA
QCAtMTcyOCw5ICsxNzIyLDEyIEBAIF9oYXNDYXNlSW5zZW5zaXRpdmVTdWJzdHJpbmcKIF9oYXND
YXNlSW5zZW5zaXRpdmVTdWZmaXgKIF9zdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJp
bmcKIF9zdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZQorX3drQ0FMYXllckVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bldpdGhCbG9jaworX3drQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZwogX3drQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMKIF93a0NHQ29udGV4dElzUERGQ29u
dGV4dAogX3drQ0dDb250ZXh0UmVzZXRDbGlwCitfd2tDR1BhdGhBZGRSb3VuZGVkUmVjdAogX3dr
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtCiBfd2tDVFJ1bkdldEluaXRpYWxB
ZHZhbmNlCiBfd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lCkBAIC0xNzQxLDYgKzE3
MzgsNyBAQCBfd2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4KIF93a0NvcHlOU1VS
TFJlc3BvbnNlU3RhdHVzTGluZQogX3drQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24KIF93
a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIKK193a0NyZWF0ZUNUVHlwZXNldHRlcldp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zCiBfd2tDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0K
IF93a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbgogX3drRGVsZXRlQWxsSFRUUENvb2tpZXMK
QEAgLTE4NjUsOSArMTg2Myw4IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyN21vdXNlVXBF
UDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjhrZXlFdmVudEVQN05TRXZlbnQK
IF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyOW1vdXNlRG93bkVQN05TRXZlbnQKIF9fWk43V2Vi
Q29yZTEzdG9EZXZpY2VTcGFjZUVSS05TXzlGbG9hdFJlY3RFUDhOU1dpbmRvdwotX19aTjdXZWJD
b3JlMTNnZXRSYXdDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VS
TEVTNV9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VF
RQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxNWRyYXdOYXRpdmVJbWFnZUVQN0NHSW1hZ2VSS05TXzlGbG9h
dFNpemVFTlNfMTBDb2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVTOV9OU18xN0NvbXBvc2l0ZU9w
ZXJhdG9yRU5TXzlCbGVuZE1vZGVFTlNfMTZJbWFnZU9yaWVudGF0aW9uRQorX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJl
cXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keUVSS1MwXwogX19a
TjdXZWJDb3JlMTZGb250UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50
YXRpb25FTlNfMTZGb250V2lkdGhWYXJpYW50RQogX19aTjdXZWJDb3JlMTZGb250UGxhdGZvcm1E
YXRhQzJFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250V2lkdGhWYXJp
YW50RQpAQCAtMTg3Niw4ICsxODczLDggQEAgX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJbnRSZWN0
RVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1NhZmFyaUV2CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdO
U0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZlbnQKLV9fWk43V2ViQ29yZTIwYnVpbHRJblBE
RlBsdWdpbk5hbWVFdgogX19aTjdXZWJDb3JlMjBhcHBsaWNhdGlvbklzSFJCbG9ja0V2CitfX1pO
N1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVnaW5OYW1lRXYKIF9fWk43V2ViQ29yZTIxRGV2aWNlT3Jp
ZW50YXRpb25EYXRhNmNyZWF0ZUViZGJkYmRiYgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklz
QXBlcnR1cmVFdgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzVmVyc2lvbnNFdgpAQCAtMTky
NCw4ICsxOTIxLDggQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFr
aW5nRXYKIF9fWk43V2ViQ29yZTMyYXBwbGljYXRpb25Jc0FPTEluc3RhbnRNZXNzZW5nZXJFdgog
X19aTjdXZWJDb3JlMzJjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudEV2CiBfX1pON1dl
YkNvcmUzMmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlRXYKLV9fWk43V2ViQ29yZTMz
cG9zdFNjcmlwdERvY3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzY29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50RXYKK19fWk43V2ViQ29yZTMzcG9zdFNjcmlwdERv
Y3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVsdFRocmVhZFZp
b2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjBUaHJlYWRW
aW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM0Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERp
cmVjdGlvbkV2CiBfX1pON1dlYkNvcmUzNWNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsRWIKQEAgLTE5NTEsOCArMTk0OCw4IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyOHN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxhdGZvcm1X
aWRnZXRFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTZXaWRnZXRDMkVQNk5TVmlldwogX19aTjdXZWJD
b3JlN25zQ29sb3JFUktOU181Q29sb3JFCi1fX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQ
b2ludAogX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks3Q0dQb2ludAorX19aTjdXZWJDb3JlOElu
dFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzdfTlNSZWN0
CiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y4X05TUG9pbnRFdgogX19aTks3V2ViQ29yZTE0
U2Nyb2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMzZWaXNpYmxlQ29udGVudFJl
Y3RJbmNsdWRlc1Njcm9sbGJhcnNFCkBAIC0xOTYyLDEwICsxOTU5LDEyIEBAIF9fWk5LN1dlYkNv
cmU3SW50U2l6ZWN2NkNHU2l6ZUV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y4X05TUG9pbnRF
dgogX19aTks3V2ViQ29yZTlGbG9hdFJlY3RjdjdfTlNSZWN0RXYKIF9zdHJpbmdFbmNvZGluZ0Zv
clJlc291cmNlCitfd2tBVkFzc2V0UmVzb2x2ZWRVUkwKIF93a0FjY2Vzc2liaWxpdHlIYW5kbGVG
b2N1c0NoYW5nZWQKIF93a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24KIF93a0Nv
cHlBWFRleHRNYXJrZXJSYW5nZUVuZAogX3drQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQKK193
a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZQogX3drQ3JlYXRlQVhUZXh0TWFy
a2VyCiBfd2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZQogX3drQ3JlYXRlQVhVSUVsZW1lbnRSZWYK
QEAgLTE5NzMsNiArMTk3Miw4IEBAIF93a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldwogX3dr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wKIF93a0NyZWF0ZVVSTE5QYXN0ZWJvYXJkRmxhdm9yVHlwZU5h
bWUKIF93a0NyZWF0ZVVSTFBhc3RlYm9hcmRGbGF2b3JUeXBlTmFtZQorX3drQ3JlYXRlVk1QcmVz
c3VyZURpc3BhdGNoT25NYWluUXVldWUKK193a0N1cnNvcgogX3drRHJhd0JlemVsZWRUZXh0QXJl
YQogX3drRHJhd0JlemVsZWRUZXh0RmllbGRDZWxsCiBfd2tEcmF3Q2Fwc0xvY2tJbmRpY2F0b3IK
QEAgLTE5ODAsNiArMTk4MSw3IEBAIF93a0RyYXdGb2N1c1JpbmcKIF93a0RyYXdNZWRpYVNsaWRl
clRyYWNrCiBfd2tEcmF3TWVkaWFVSVBhcnQKIF93a0RyYXdUZXh0RmllbGRDZWxsRm9jdXNSaW5n
Citfd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkCiBfd2tHZXRBWFRl
eHRNYXJrZXJSYW5nZVR5cGVJRAogX3drR2V0QVhUZXh0TWFya2VyVHlwZUlECiBfd2tHZXRCeXRl
c0Zyb21BWFRleHRNYXJrZXIKQEAgLTIwMTMsNyArMjAxNSw5IEBAIF93a1FUTW92aWVSZXNvbHZl
ZFVSTAogX3drUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMKIF93a1FUTW92aWVTZXRT
aG93Q2xvc2VkQ2FwdGlvbnMKIF93a1FUTW92aWVWaWV3U2V0RHJhd1N5bmNocm9ub3VzbHkKK193
a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZQogX3drU2V0Q0dGb250UmVuZGVyaW5nTW9kZQorX3dr
U2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24KIF93a1NldERyYWdJ
bWFnZQogX3drU2V0TWV0YWRhdGFVUkwKIF93a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZwpAQCAtMjExMCwxMCArMjExNCw4IEBAIF9fWk43V2ViQ29yZTExSW1hZ2VTb3VyY2UyNnNf
YWNjZWxlcmF0ZWRJbWFnZURlY29kaW5nRQogX19aTjdXZWJDb3JlMTFJbWFnZVNvdXJjZTMzbWF4
aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5nRXYKIF9fWk43V2ViQ29yZTExSW1hZ2VTb3Vy
Y2UzNnNldE1heGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0VqCiBfX1pON1dlYkNvcmUx
MU1hdGhNTE5hbWVzNGluaXRFdgotX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE1YWRkSW1hZ2VU
b0NhY2hlRVA3Q0dJbWFnZVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMThw
cnVuZURlYWRSZXNvdXJjZXNFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE4cHJ1bmVMaXZl
UmVzb3VyY2VzRWIKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNh
Y2hlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMWlzRW5kT2ZMaW5lRVJLTlNfMTVWaXNpYmxl
UG9zaXRpb25FCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwbW91c2VNb3ZlZEVQOFdlYkV2
ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwd2hlZWxFdmVudEVQOFdlYkV2ZW50CkBA
IC0yMjAwLDcgKzIyMDIsNiBAQCBfX1pON1dlYkNvcmUyOGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNl
V2hpdGVFZmYKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckMx
RVBLdGkKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckQxRXYK
IF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc0RhaWppc2VuRGljdGlvbmFyeUV2Ci1fX1pON1dl
YkNvcmUzMmVuYWJsZUtVUkxTY2hlbWVDYW5vbmljYWxpemF0aW9uRWIKIF9fWk43V2ViQ29yZTMz
YXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBob25lRXYKIF9fWk43V2ViQ29yZTQxaW5pdGlh
bGl6ZUhUVFBDb25uZWN0aW9uU2V0dGluZ3NPblN0YXJ0dXBFdgogX19aTjdXZWJDb3JlNEZvbnRD
MUVSS05TXzE2Rm9udFBsYXRmb3JtRGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU18xMkZvbnRTZWxl
Y3RvckVFRQpAQCAtMjIxNCw3ICsyMjE1LDYgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjBkb2N1bWVu
dFNjYWxlQ2hhbmdlZEV2CiBfX1pON1dlYkNvcmU1RnJhbWUyMHNldFZpZXdwb3J0QXJndW1lbnRz
RVJLTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0UKIF9fWk43V2ViQ29yZTVGcmFtZTIxZGVlcGVzdE5v
ZGVBdExvY2F0aW9uRVA3Q0dQb2ludAogX19aTjdXZWJDb3JlNUZyYW1lMjF2aWV3cG9ydE9mZnNl
dENoYW5nZWRFdgotX19aTjdXZWJDb3JlNUZyYW1lMjZpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVu
dEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlNUZyYW1lMjdub2RlUmVz
cG9uZGluZ1RvQ2xpY2tFdmVudHNFUDdDR1BvaW50CiBfX1pON1dlYkNvcmU1RnJhbWUzMHNldFNp
bmdsZUxpbmVTZWxlY3Rpb25CZWhhdmlvckViCiBfX1pON1dlYkNvcmU1RnJhbWUzMmRpc3BhdGNo
UGFnZUhpZGVFdmVudEJlZm9yZVBhdXNlRXYKQEAgLTIyNTEsOSArMjI1MSw2IEBAIF9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcyNHJlbmRlcmVkQ2hhcmFjdGVyc0V4Y2VlZEVqCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXRFUDdXQUtWaWV3CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzJzZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM1c2V0VXNlQ3VzdG9tRml4ZWRQb3Np
dGlvbkxheW91dFJlY3RFYgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3cmVtb3ZlVmlzaXRlZExp
bmtFUktOU180S1VSTEUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dv
cmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMz
XzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIzVXNlclNjcmlw
dEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQotX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJX
b3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18x
NUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18x
NFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKIF9fWk43V2ViQ29y
ZTlUaWxlQ2FjaGUxNGRyYWluTGF5ZXJQb29sRXYKIF9fWk43V2ViQ29yZTlUaWxlQ2FjaGUyMHNl
dExheWVyUG9vbENhcGFjaXR5RWoKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjdDR1BvaW50
RXYKQEAgLTIzMTUsNTIgKzIzMTIsMzEgQEAgX19aTks3V2ViQ29yZTdFbGVtZW50MjZmYXN0QXR0
cmlidXRlTG9va3VwQWxsb3dlZEVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZTIw
TG9nTm90WWV0SW1wbGVtZW50ZWRFCiBfX1pON1dlYkNvcmUyOG5vdEltcGxlbWVudGVkTG9nZ2lu
Z0NoYW5uZWxFdgogX19aTjdXZWJDb3JlMzZpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNl
c3NhcnlFdgotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKKyNlbmRpZgogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogX19aTjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXJDMUVQS2Np
CiBfX1pON1dlYkNvcmUyN05vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlckQxRXYKLSNlbmRpZiAv
LyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYKIAogI2lmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKSAmJiAhUExBVEZPUk0oSU9TKQogX19aTjdXZWJD
b3JlN0ludFNpemVDMUVSSzdfTlNTaXplCiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXpl
RXYKICNlbmRpZgogCi1fd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2Nr
Ci1fd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nCi1fd2tDR1BhdGhBZGRSb3VuZGVk
UmVjdAotX3drQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMK
LQogI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0
ZQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlCiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCi1fd2tBVkFzc2V0UmVzb2x2ZWRVUkwKLV93a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlk
ZXJEaXNwbGF5TmFtZQotX3drU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3Jt
YXRpb24KLV93a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCi1fd2tDdXJzb3IK
LV93a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQKLV93a1JlY29tbWVu
ZGVkU2Nyb2xsZXJTdHlsZQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NyZWF0ZU1lbW9yeVN0YXR1c1By
ZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlCi0jZW5kaWYKLQotI2lmIFVTRShDT05U
RU5UX0ZJTFRFUklORykKLV93a0ZpbHRlckFkZERhdGEKLV93a0ZpbHRlckNyZWF0ZUluc3RhbmNl
Ci1fd2tGaWx0ZXJEYXRhQ29tcGxldGUKLV93a0ZpbHRlcklzQnVmZmVyaW5nCi1fd2tGaWx0ZXJJ
c01hbmFnZWRTZXNzaW9uCi1fd2tGaWx0ZXJXYXNCbG9ja2VkCi0jZW5kaWYKLQogI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorX19a
TjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2
ZXM4X05TUmFuZ2UKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVh
ZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRhaW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQor
X19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2
ZXNFUDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdF
CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE4cmVtb3ZlQWx0ZXJu
YXRpdmVzRXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMjJhbHRl
cm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5h
dGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUVMbTBFTlMyXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfd2tDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cwogX3drRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JC
ZWZvcmVMaW9uCiBfd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YQpAQCAtMjM2OCwyOCAr
MjM0NCwxOCBAQCBfd2tOU0VsYXN0aWNEZWx0YUZvclRpbWVEZWx0YQogX3drTlNSZWJvdW5kRGVs
dGFGb3JFbGFzdGljRGVsdGEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NURm9udFRyYW5zZm9ybUdseXBo
cworI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAorX3drQ3JlYXRlTWVtb3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3BhdGNoT25N
YWluUXVldWUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKLV9fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVhZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRh
aW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQotX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIyMmFsdGVybmF0aXZlc0ZvckNvbnRleHRFeQotX19aTjdXZWJDb3JlMjdB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI1Y2xlYXJFdgotX19aTjdXZWJDb3JlMjdBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5Ci1fX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE2c2hvd0FsdGVybmF0aXZlc0VQNk5TVmlld1JL
TlNfOUZsb2F0UmVjdEV5VTEzYmxvY2tfcG9pbnRlckZ2UDhOU1N0cmluZ0UKLV9fWk43V2ViQ29y
ZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1Jh
bmdlCi1fX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5T
QXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VFRQorI2lmIFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCitfd2tDVEZvbnRUcmFuc2Zvcm1H
bHlwaHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RS
ZW5kZXJpbmcKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotX19aTjdXZWJDb3Jl
MTZGaWx0ZXJPcGVyYXRpb25zYVNFUktTMF8KLSNlbmRpZgotCiAjaWYgVVNFKEFQUEtJVCkKIF9f
Wk43V2ViQ29yZTZFZGl0b3IxM2xvd2VyY2FzZVdvcmRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjEz
dXBwZXJjYXNlV29yZEV2CkBAIC0yNDAxLDkgKzIzNjcsMjIgQEAgX19aTjdXZWJDb3JlOFNldHRp
bmdzMjBnQVZGb3VuZGF0aW9uRW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0QVZG
b3VuZGF0aW9uRW5hYmxlZEViCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLV9fWk43V2Vi
Q29yZThTZXR0aW5nczEzZ1FUS2l0RW5hYmxlZEUKLV9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0
UVRLaXRFbmFibGVkRWIKKyNpZiBFTkFCTEUoQkxPQikKK19fWk43V2ViQ29yZTEyYmxvYlJlZ2lz
dHJ5RXYKK19fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2
CitfX1pON1dlYkNvcmU3UmF3RGF0YUMxRXYKK19fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5k
RGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU183UmF3RGF0YUVFRXh4CitfX1pON1dlYkNvcmU4Qmxv
YkRhdGExMGFwcGVuZEZpbGVFUktOM1dURjZTdHJpbmdFeHhkCitfX1pON1dlYkNvcmU4QmxvYkRh
dGE2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTEyQmxvYkRhdGFJdGVtMTF0b0VuZE9mRmlsZUUKK19f
Wk43V2ViQ29yZTEyQmxvYlJlZ2lzdHJ5RDJFdgorX19aVFZON1dlYkNvcmUxMkJsb2JSZWdpc3Ry
eUUKK19fWlRWTjdXZWJDb3JlMTZCbG9iUmVnaXN0cnlJbXBsRQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxM3Bh
cnRpdGlvbk5hbWVFUktOM1dURjZTdHJpbmdFCitfd2tDYWNoZVBhcnRpdGlvbktleQogI2VuZGlm
CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMjQyMSwxOCArMjQwMCwxMyBAQCBfd2tTZXRDRlVS
TFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQkxPQikKLV9fWk43V2ViQ29yZTEyYmxvYlJlZ2lzdHJ5RXYK
LV9fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2Ci1fX1pO
N1dlYkNvcmU3UmF3RGF0YUMxRXYKLV9fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kQmxvYkVS
S05TXzRLVVJMRXh4Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRG
aWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAotX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNyZWF0ZUV2Ci1f
X1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCi1fX1pON1dlYkNvcmUxMkJs
b2JSZWdpc3RyeUQyRXYKLV9fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCi1fX1pUVk43V2Vi
Q29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCitfd2tG
aWx0ZXJBZGREYXRhCitfd2tGaWx0ZXJDcmVhdGVJbnN0YW5jZQorX3drRmlsdGVyRGF0YUNvbXBs
ZXRlCitfd2tGaWx0ZXJJc0J1ZmZlcmluZworX3drRmlsdGVySXNNYW5hZ2VkU2Vzc2lvbgorX3dr
RmlsdGVyV2FzQmxvY2tlZAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAg
LTI0NTQsMTMgKzI0MjgsMTcgQEAgX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNXRpdGxl
RXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTZhY3Rpb25FdgogX19aTks3V2ViQ29y
ZTE1Q29udGV4dE1lbnVJdGVtN2NoZWNrZWRFdgogX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJ
dGVtN2VuYWJsZWRFdgotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitfX1pON1dlYkNvcmUxNkZpbHRlck9wZXJhdGlvbnNh
U0VSS1MwXworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTM19DT05ESVRJT05BTF9SVUxFUykKIC5v
YmpjX2NsYXNzX25hbWVfRE9NQ1NTU3VwcG9ydHNSdWxlCiBfX1pON1dlYkNvcmUxMkRPTVdpbmRv
d0NTUzZjcmVhdGVFdgogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfMTJET01XaW5kb3dDU1NFCi0jZW5kaWYgLy8gRU5BQkxFKENT
UzNfQ09ORElUSU9OQUxfUlVMRVMpCisjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZhbm5vdGF0ZWRSZWdpb25zRXYKQEAgLTI0NzksNiArMjQ1NywxMCBAQCBfX1pON1dlYkNvcmU4
RHJhZ0RhdGFDMUVQMTFvYmpjX29iamVjdFJLTlNfOEludFBvaW50RVM1X05TXzEzRHJhZ09wZXJh
dGlvbkVOU18yMAogX19aTjdXZWJDb3JlOERyYWdEYXRhQzFFUktOM1dURjZTdHJpbmdFUktOU184
SW50UG9pbnRFUzdfTlNfMTNEcmFnT3BlcmF0aW9uRU5TXzIwRHJhZ0FwcGxpY2F0aW9uRmxhZ3NF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitfX1pON1dlYkNvcmUz
Q0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZh
dGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMxXzZTdHJpbmdFRVBGYlNBX1NBX0UKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJ3ZWJr
aXRDYW5jZWxGdWxsU2NyZWVuRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKQEAgLTI1MjgsNyArMjUxMCw3IEBA
IF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlQzFFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFi
YXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRT
dG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxl
ZEV2Ci0jZW5kaWYgLy8gRU5BQkxFKElDT05EQVRBQkFTRSkKKyNlbmRpZgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiBfX1pON1dlYkNvcmU1Q29sb3JDMUVQN0NHQ29sb3IKQEAgLTI1
OTYsNiArMjU3OCwxOSBAQCBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEyY29udGFpbnNRdWFkRVJL
UzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29udGFpbnNQb2ludEVSS05TXzEwRmxvYXRQ
b2ludEUKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCitfX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDE5cmVzZXRUZXh0QXV0b3NpemluZ0V2CitfX1pON1dlYkNvcmU1
RnJhbWUyMnNldFRleHRBdXRvc2l6aW5nV2lkdGhFZgorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorX19aTjdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjJ1c2VyTWVkaWFBY2Nl
c3NHcmFudGVkRXYKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIxdXNlck1lZGlhQWNj
ZXNzRGVuaWVkRXYKK19fWk43V2ViQ29yZTE4cHJvdmlkZVVzZXJNZWRpYVRvRVBOU180UGFnZUVQ
TlNfMTVVc2VyTWVkaWFDbGllbnRFCitfX1pOSzdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MTRz
ZWN1cml0eU9yaWdpbkV2CitfX1pON1dlYkNvcmUyMU1vY2tNZWRpYVN0cmVhbUNlbnRlcjI5cmVn
aXN0ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKIF9fTlBOX0NvbnN0cnVjdAogX19OUE5fQ3JlYXRlT2JqZWN0CkBAIC0y
Njg5LDYgKzI2ODQsMTIgQEAgX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlMjBhdXRoZW50
aWNhdGlvblNjaGVtZUV2CiBfX1pON1dlYkNvcmU4Y3JlYXRlQ0ZFUktOU18xNVByb3RlY3Rpb25T
cGFjZUUKICNlbmRpZgogCisjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKK19fWk43V2Vi
Q29yZTE0aXNQdWJsaWNTdWZmaXhFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUyOHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5FUktOM1dURjZTdHJpbmdFCitfd2tJc1B1YmxpY1N1ZmZp
eAorI2VuZGlmCisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIF9fWk43V2ViQ29yZTI3cWxQcmV2aWV3
Q29udmVydGVyVVRJRm9yVVJMRVA1TlNVUkwKIF9fWk43V2ViQ29yZTMwcmVtb3ZlUUxQcmV2aWV3
Q29udmVydGVyRm9yVVJMRVA1TlNVUkwKQEAgLTI3MDAsMTggKzI3MDEsMzEgQEAgX19aTjdXZWJD
b3JlMzNRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRXYW50c0xheWVy
Rm9yVG9wT3ZlckhhbmdBcmVhRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzRzZXRXYW50c0xh
eWVyRm9yQm90dG9tT3ZlckhhbmdBcmVhRWIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorX19aTjdXZWJDb3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhl
c2l6ZXJFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVF
CitfX1pON1dlYkNvcmUyNERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lz
RVBOU185RE9NV2luZG93RQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
QzJFUE5TXzMxUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudEUKK19fWlRWTjdXZWJDb3Jl
MjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyRDJFdgorX19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9iYgorI2VuZGlmCisKICNpZiBFTkFCTEUo
U1ZHKQogX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQotX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4
dEF1dG9zaXppbmdFdgotX19aTjdXZWJDb3JlNUZyYW1lMjJzZXRUZXh0QXV0b3NpemluZ1dpZHRo
RWYKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRIUkVBREVE
X1NDUk9MTElORykKQEAgLTI3NjIsNDkgKzI3NzYsMTIgQEAgX19aTks3V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDZwYXVzZWRFdgogCiAjaWYgRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCiBf
X1pON1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3TW9kZUUKLSNlbmRpZiAvLyBF
TkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29ya2VyVGhyZWFkQ291bnRFdgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotX19aTjdXZWJDb3JlM0NETTE4cmVn
aXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJm
YWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJl
bmNlc0V2CiAjZW5kaWYKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotX19aTjdXZWJD
b3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhlc2l6ZXJFTjNXVEYxMFBhc3NP
d25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVFCi1fX1pON1dlYkNvcmUyNERP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lzRVBOU185RE9NV2luZG93RQot
X19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQzJFUE5TXzMxUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudEUKLV9fWlRWTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRQotX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgot
X19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0VTNF9TNF9iYgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi1f
X1pOSzdXZWJDb3JlOUZyYW1lVmlldzMxc2V0V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJlYUVi
Ci1fX1pOSzdXZWJDb3JlOUZyYW1lVmlldzM0c2V0V2FudHNMYXllckZvckJvdHRvbU92ZXJIYW5n
QXJlYUViCi0jZW5kaWYKLQotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1fX1pON1dl
YkNvcmUxNGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjh0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQotX3drSXNQdWJsaWNTdWZm
aXgKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLV9fWk43V2ViQ29y
ZTE1UmVzb3VyY2VSZXF1ZXN0MTNwYXJ0aXRpb25OYW1lRVJLTjNXVEY2U3RyaW5nRQotX3drQ2Fj
aGVQYXJ0aXRpb25LZXkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLV9fWk43
V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIydXNlck1lZGlhQWNjZXNzR3JhbnRlZEV2Ci1fX1pO
N1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2Ci1fX1pO
N1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1lZGlhQ2xp
ZW50RQotX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmlnaW5Fdgot
X19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyRXYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggZTNkZmViOS4uZDU4Njk5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDIwLDcgKzc0MjAsNyBA
QAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
SGlzdG9ncmFtU3VwcG9ydC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLaWxsUmluZ05vbmUuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cS1VSTC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxV
UkwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2Uu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiIC8+
CkBAIC03NjA0LDcgKzc2MDQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0YuY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFVSTENGLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1ZmZlckNGLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxDZXJ0aWZpY2F0ZUNGV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1h
cEltYWdlLmNwcCIgLz4KQEAgLTE5MDE1LDggKzE5MDE1LDggQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhvc3RXaW5kb3cuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxLVVJMLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLVVJMSGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVUkxIYXNoLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGF5b3V0VW5pdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggMWYwY2Q5NC4uZmEwMDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTEyNSw3ICsxMTI1LDcg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nTm9uZS5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5jcHAiPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxMYW5ndWFnZS5jcHAiPgpAQCAtNTEwOSw3ICs1MTA5LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEZpbGVTeXN0ZW1DRi5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCI+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxVUkxDRi5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cY2Zcd2luXENlcnRpZmljYXRlQ0ZXaW4uY3BwIj4KQEAgLTgxMTUsMTAg
KzgxMTUsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5n
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIj4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXEtVUkxIYXNoLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMSGFzaC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExhbmd1YWdlLmgiPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDBjNGZiNTQuLjBkMGFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1Miw3ICs2NTIsNyBAQAogCQkxQTkyN0ZEMjE0
MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOTI3RkQzMTQx
NkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTky
N0ZENDE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGRDExNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkx
QTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAv
KiBLVVJMQ0ZOZXQuY3BwICovOyB9OworCQkxQTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogVVJM
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5
ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLzsgfTsKIAkJMUFBMjEyNTAxNjNG
MERBODAwMDBFNjNGIC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9t
aWNTdHJpbmdDRi5jcHAgKi87IH07CiAJCTFBQTcxNjBBMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxl
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJvbGxlci5tbSAqLzsgfTsK
IAkJMUFBNzE2MEIxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwOTE0OUJDNERCMDAx
NkVDMTkgLyogVGlsZUNvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTE4OTAsOSArMTg5MCw5IEBACiAJ
CTY1N0VEQTA4MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3RURBMDYxMzg1
Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCTY1N0VE
QTBCMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdFREEwQTEzODVDQkQ4
MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tICovOyB9OwogCQk2NTg0MzY4
NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5QUU0MzQ2
MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAv
KiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjNBMDlBRTQzNUMwMDJDNTMxRiAvKiBL
VVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gKi87IH07CisJCTY1OTM5MjM3
MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi87
IH07CisJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8q
IFVSTE1hYy5tbSAqLzsgfTsKIAkJNjU5NkYyQjMwQjg3MzFERjAwMTMyNkJEIC8qIERPTUhUTUxJ
bnB1dEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNjQwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TUhUTUxJbnB1dEVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTk2RjJDMTBCODczMjVDMDAx
MzI2QkQgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE3RjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggKi87IH07
CiAJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5QTdEMTIwQjZEQjREOTAw
MTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNDAsNyArNTA0MCw3IEBACiAJCUJDQkI4QUI5MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
QjhBQkExM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjYxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1Ry
ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4
QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcw
RjIgLyogS1VSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDQkQyMUFCMEU0MTdBRDQw
MEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZCNTNDMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RP
TVdpbmRvd1NoZWxsLmNwcCAqLzsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpT
RE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMDY1N0Qw
RjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVu
dFJlY3QuY3BwICovOyB9OwpAQCAtNzExNCw3ICs3MTE0LDcgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1
QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
YXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNB
ODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBy
dW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIw
MDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
dHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAw
NUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gS1VSTENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5ODk1
NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9taWNTdHJpbmdDRi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9taWNTdHJpbmdDRi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRpbGVDb250
cm9sbGVyLm1tOyBwYXRoID0gY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUE3MTYwOTE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGlsZUNvbnRyb2xsZXIuaDsg
cGF0aCA9IGNhL21hYy9UaWxlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODQ4Nyw5ICs4NDg3LDkgQEAKIAkJNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1l
bW9yeVByZXNzdXJlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3
RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAw
RTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS1VSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkz
OTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gS1VSTE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUu
bGFuZy5vYmpjcHA7IH07CisJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBVUkxNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMg
LyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgwMDlF
MTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExOTM2LDcgKzExOTM2LDcgQEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRElu
dGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93U2hl
bGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAx
OUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTVdpbmRvd1NoZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM5NTUsNyArMTM5NTUsNyBAQAogCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0
ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZp
bGVTeXN0ZW1DRi5jcHAgKi8sCi0JCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxD
Rk5ldC5jcHAgKi8sCisJCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAq
LywKIAkJCQkyOUEzMDlBQjE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJ
CQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAogCQkJ
KTsKQEAgLTE1MTQ2LDcgKzE1MTQ2LDcgQEAKIAkJCQlDNTM5MkQzNDEzMjZBRDAxMDAwNDNEMzUg
LyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyog
S2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxS
aW5nTWFjLm1tICovLAotCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1t
ICovLAorCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8sCiAJCQkJ
OTM1MjA4NDQwOUJENDNCOTAwRjIwMzhEIC8qIExhbmd1YWdlLm1tICovLAogCQkJCTA2RTgxRUQ2
MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLywKIAkJ
CQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lm1tICovLApAQCAtMTk4NTYsOSArMTk4NTYsOSBAQAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgz
NTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8q
IEtpbGxSaW5nLmggKi8sCiAJCQkJNDMwNkU0RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5n
Tm9uZS5jcHAgKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICov
LAotCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCi0JCQkJQkNCRDIx
QUEwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggKi8sCisJCQkJNjU5MzkyMzUwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8sCisJCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8q
IFVSTC5oICovLAorCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8s
CiAJCQkJRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLywKIAkJCQk4
NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLywKIAkJCQkxNDFEQzA0NzE2
NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICovLApAQCAtMjM0MDcsOCArMjM0MDcsOCBA
QAogCQkJCTMxNkZFMTFBMEU2RTFEQTcwMEJGNjA4OCAvKiBLZXlmcmFtZUFuaW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUJBMTEwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIxRDQ2RjgxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxS
aW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxI
YXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJM
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVs
YWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTZGQTI3MTFBRDRBODMwMDIwQjQy
MCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcxQTJD
NjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Njk2LDkgKzI2Njk2
LDkgQEAKIAkJCQlCQzVFQkExMDBFODIzRTQ3MDBCMjU5NjUgLyogS2V5ZnJhbWVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyMUQ0NkY2MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxs
UmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFG
IC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVG
IC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NTkzOTIzQTA5QUU0MzVDMDAy
QzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjM3MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5ODk1NkIwQUE3OEY4MDAw
NUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjNBMDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NTBDRUJGMDE1MDczQkJF
MDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2
RkEyNjExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5jcHAKaW5kZXggMWNiMWM2OS4uNzkxYmYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCkBAIC04NywxMCArODcsMTAgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXJlYUVsZW1l
bnQuZ2V0KCk7CiB9CiAKLUtVUkwgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6dXJsKCkgY29u
c3QKK1VSTCBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjp1cmwoKSBjb25zdAogewogICAgIGlm
ICghbV9hcmVhRWxlbWVudC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAg
cmV0dXJuIFVSTCgpOwogICAgIAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50LT5ocmVmKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5oCmluZGV4IDdhM2VjMDguLjJmMWZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5o
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwg
dXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0gCiAgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDUyN2RkNGEuLmJi
YTE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC02NDIsNyArNjQyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsg
fQogICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4
dFJhbmdlKCkubGVuZ3RoOyB9CiAgICAgCi0gICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0IHsg
cmV0dXJuIEtVUkwoKTsgfQorICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVS
TCgpOyB9CiAgICAgdmlydHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVk
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IHsgcmV0dXJuIG51bGxBdG9tOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCBhNGVjMGEwLi4yZTQxODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTg5NiwxMyArODk2LDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4g
MDsKICAgICBIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0gdG9IVE1MQW5jaG9yRWxlbWVudChl
bGVtZW50KTsKICAgICAKLSAgICBLVVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKKyAgICBV
UkwgbGlua1VSTCA9IGFuY2hvci0+aHJlZigpOwogICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZp
ZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudElkZW50
aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBjaGVjayBp
ZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBLVVJMIGRvY3VtZW50VVJMID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IApAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UKICAgICAgICAg
UG9zaXRpb24obm9kZSwgcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgsIFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpLCBET1dOU1RSRUFNKSk7CiB9CiAKLUtVUkwgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29uc3QKK1VSTCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp1cmwoKSBjb25zdAogewogICAgIGlmIChpc0FuY2hvcigpICYmIGlzSFRNTEFuY2hvckVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgewogICAgICAgICBpZiAoSFRNTEFuY2hvckVsZW1l
bnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQoYW5jaG9yRWxlbWVudCgpKSkKQEAgLTE0
NjQsNyArMTQ2NCw3IEBAIEtVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29u
c3QKICAgICBpZiAoaXNJbnB1dEltYWdlKCkpCiAgICAgICAgIHJldHVybiB0b0hUTUxJbnB1dEVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKS0+c3JjKCk7CiAgICAgCi0gICAgcmV0dXJuIEtVUkwo
KTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNVbnZpc2l0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCBiMDlkMWNlLi4wZmUw
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBE
b2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJl
bEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRl
eHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgVmlzaWJsZVNl
bGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ZDViYTlkLi5iYjU0ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtOTc5LDcgKzk3OSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5T
TXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGlmICghW3NlbGYg
X3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgS1VSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fb2JqZWN0LT51
cmwoKTsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJl
dHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggMmQ4YmI4My4uOWRkNmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIxMzgsNyArMjEzOCw3IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICB9CiAgICAgCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmli
dXRlXSkgewotICAgICAgICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwoKTsKKyAgICAgICAgVVJM
IHVybCA9IG1fb2JqZWN0LT51cmwoKTsKICAgICAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAppbmRleCAwNWMz
MGRlLi43NGE1MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRD
b250cm9sbGVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29u
dHJvbGxlckJhc2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkK
ICAgICByZXR1cm4gZXZhbHVhdGUoc291cmNlQ29kZSk7CiB9CiAKLWJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1cmwsIFNob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3Jp
cHRVUkwpCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29u
c3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCiB7CiAgICAgaWYgKCFwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCAx
ODFmYzJhLi4xNGRmM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMiw3ICszMiw3IEBA
IGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJl
dHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRG
OFN0cmluZyhXZWJDb3JlOjpLVVJMIGNvbnN0JiBzKQorZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBnX3N0cmR1cChzLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBiYzIzNGNmLi5lNDk0MTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VU
RjhTdHJpbmcuaApAQCAtMjQsMTIgKzI0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogdHlw
ZWRlZiBjaGFyIGdjaGFyOwogCiBnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmlu
ZyBjb25zdCYgcyk7Ci1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpLVVJMIGNv
bnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYg
cyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGI1MDRhNGQuLjEwZWFmMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNzUsMTkg
Kzc1LDE5IEBAIEpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgcykKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcyk7CiB9
CiAKLUpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitK
U1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUpTVmFs
dWUganNTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkpOwogfQogCi1KU1ZhbHVlIGpz
U3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYWY4NTk1NS4u
MDA4NzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICBjbGFzcyBEb2N1bWVudDsK
ICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm9kZTsKIAogICAgIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CkBAIC0yNDMsMTcgKzI0MywxNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0Owog
ICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7
CiAKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmKTsKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBLVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBlbXB0eSBpZiB0
aGUgVVJMIGlzIG51bGwKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgeyAKICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMuc3RyaW5nKCkpOwogICAgIH0K
ICAgICAgICAgCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBpcyBudWxsCi0gICAgSlND
OjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAv
LyBudWxsIGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVs
bChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBudWxsIGlmIHRoZSBVUkwgaXMgbnVs
bAogCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAotICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
S1VSTCYpOyAvLyB1bmRlZmluZWQgaWYgdGhlIFVSTCBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gdW5k
ZWZpbmVkIGlmIHRoZSBVUkwgaXMgbnVsbAogCiAgICAgLy8gU2VlIEphdmFTY3JpcHRDb3JlIGZv
ciBleHBsYW5hdGlvbjogU2hvdWxkIGJlIHVzZWQgZm9yIGFueSBzdHJpbmcgdGhhdCBpcyBhbHJl
YWR5IG93bmVkIGJ5IGFub3RoZXIKICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtu
b3cgdGhhdCBjb2xsZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNh
dmUgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAzMGZjZjNlLi43MDQxNTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApA
QCAtODgsNyArODgsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGltcGwo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIFN0cmluZyBtZXRo
b2QgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAwMzE1MTZlLi45M2I4ZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNj
cmlwdCBVUkwuCi0gICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKKyAgICBi
b29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiwgU2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9
IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwg
aXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaAppbmRleCA1MTYzNTgxLi4yZDNjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgS1VSTCYgdXJsID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRp
b24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQorICAgIFNjcmlwdFNvdXJjZUNv
ZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsID0gVVJMKCksIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCkpCiAgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUoc291cmNlLCB1cmwuaXNOdWxsKCkgPyBTdHJpbmcoKSA6IHVybC5zdHJpbmcoKSwgc3RhcnRQ
b3NpdGlvbikpCiAgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9s
aW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkK
ICAgICAgICAgLCBtX3VybCh1cmwpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQu
Z2V0KCk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIAogcHJp
dmF0ZToKICAgICBSZWZQdHI8SlNDOjpTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
IAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggYjg1MzJkMy4uNDVkMzViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzgz
LDcgKzEzODMsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXJlYWRTdHJpbmdEYXRhKHR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0
KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgS1VSTChL
VVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSk7CisgICAgICAgICAgICBmaWxl
ID0gRmlsZTo6Y3JlYXRlKHBhdGgtPnN0cmluZygpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkp
LCB0eXBlLT5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTU3
Nyw3ICsxNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmNy
ZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpjcmVhdGUoVVJMKFVS
TCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUpLmdldCgpKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5n
UmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBjMzlhNzc0Li4yYmNhZDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBA
IC0yOTAsNyArMjkwLDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogCiAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ind0Zi90ZXh0L0F0b21pY1N0cmluZy5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJL
VVJMLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJXZWJET01TdHJpbmcuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTU3Myw3ICs1NzMsNyBAQCBzdWIgQWRkUmV0dXJuU3RhdGVtZW50CiAgICAgbXkg
JHR5cGVJbmZvID0gc2hpZnQ7CiAgICAgbXkgJHJldHVyblZhbHVlID0gc2hpZnQ7CiAKLSAgICAj
IFVzZWQgdG8gaW52b2tlIEtVUkxzICJjb25zdCBTdHJpbmcmIiBvcGVyYXRvcgorICAgICMgVXNl
ZCB0byBpbnZva2UgVVJMcyAiY29uc3QgU3RyaW5nJiIgb3BlcmF0b3IKICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZUluZm8tPnNpZ25hdHVyZS0+dHlwZSkpIHsKICAg
ICAgICAgcmV0dXJuICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4o
JHJldHVyblZhbHVlKTtcbiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4MWVkYTNkLi5iOWRiNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjUwMSw3ICsyNTAxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0ganNDYXN0
PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygp
KTtcbiIpOwogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50
eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgi
fSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKGV4
ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5pdGVtKGluZGV4KSk7XG4i
KTsKQEAgLTM0MzYsNyArMzQzNiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIktVUkwuaCIsICRjb25kaXRpb25hbCk7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIG15ICRjb252ID0gJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMi
fTsKICAgICAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKICAgICAgICAgICAgIHJldHVybiAianNT
dHJpbmdPck51bGwoZXhlYywgJHZhbHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5k
ZXggZWRmMTE5ZC4uNDg1YjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC02MTgsNyArNjE4LDcgQEAgc3ViIEFk
ZEluY2x1ZGVzRm9yVHlwZQogICAgIH0KIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJp
bmdUeXBlKCR0eXBlKSkgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBiOWI5
MmM2Li41M2FhOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAKQEAgLTIxLDkgKzIxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJE
T01UZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2su
Y3BwCmluZGV4IGZlMzVkMmIuLjRkYmE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5j
cHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2lu
Y2x1ZGUgIkZsb2F0MzJBcnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJXZWJE
T01TdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAppbmRleCA1M2QyNTViLi40YzBkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAKLSNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFu
ZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjc4MDZmMC4uMjNhM2FjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBmM2VhYzBiLi5hYzlkNmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMiw5ICsyMiw5IEBACiAjaW5jbHVk
ZSAiV2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNsdWRl
ICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MjM1YjNhLi5hYWNlMDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJET01UZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwOWFk
MzM3Li4xNjMyZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTI0LDEw
ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCi0jaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIldlYkRPTU5vZGUuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJFeGNlcHRpb25IYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCBmZTU1NDQ5Li5h
YjczMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJUZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RP
YmouaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJET01EaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RUeXBlZGVmcy5jcHAKaW5kZXggNzRmNzczYy4uYzE4ZjUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0VHlw
ZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdFR5cGVkZWZzLmNwcApAQCAtMjEsMTAgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdFR5cGVkZWZzLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1
ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAppbmRleCAwOTAyZTY5Li5lMTQ0ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oIgogCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDJlOTNlMWEu
LjFkNTlkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZjE0MDFhMC4uMjczZTliNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKICNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggNjlhNmMxOC4uY2I1OTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNp
bmNsdWRlICJKU2Jvb2wuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNWR1N0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRl
eCA0ZjQ2NmM1Li4wZGI5OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTMwLDEwICszMCwx
MCBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0K
aW5kZXggYWIyODY0MS4uNDAwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2Jq
ZWN0Lm1tCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgIkRPTVRlc3RBY3RpdmVET01PYmpl
Y3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiTm9kZS5o
IgogI2ltcG9ydCAiVGVzdEFjdGl2ZURPTU9iamVjdC5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBv
cnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDYWxsYmFjay5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFjay5tbQppbmRleCA5M2FkZjhjLi5mMDY0MmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2su
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dENhbGxiYWNrLm1tCkBAIC00NCwxMSArNDQsMTEgQEAKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAiVGVzdENhbGxiYWNrLmgiCiAjaW1wb3J0ICJUZXN0Tm9k
ZS5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAi
V2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIK
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdl
dHRlci5tbQppbmRleCAxMGE5MGE1Li5iZjdhMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2lt
cG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgor
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2
ZW50Q29uc3RydWN0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQppbmRleCA4MDlkNTUzLi5kOTE3ZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQpAQCAtMzQsOSArMzQsOSBA
QAogI2ltcG9ydCAiRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgot
I2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBv
cnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpD
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0KaW5kZXggZmEyNDQ3ZC4u
MDM4ZjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRhcmdldC5tbQpAQCAtMzYsMTEgKzM2LDEx
IEBACiAjaW1wb3J0ICJFdmVudExpc3RlbmVyLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJMLmgi
CiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9y
dCAiVGVzdEV2ZW50VGFyZ2V0LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNl
cHRpb24ubW0KaW5kZXggZDJiOTU0OC4uYThjZWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9u
Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlRlc3RFeGNlcHRpb24uaCIK
ICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNv
cmVPYmpDRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAyZTIxYmZk
Li4yYjliMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTM3LDEyICszNywxMiBA
QAogI2ltcG9ydCAiRE9NVGVzdE9iakludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJM
LmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJUZXN0T2JqLmgiCiAjaW1wb3J0ICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW1wb3J0ICJUaHJl
YWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMzMxYWM2Ni4uMWI4ZTY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
CkBAIC00OSw3ICs0OSw2IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9y
dCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBv
cnQgIktVUkwuaCIKICNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVy
LmgiCiAjaW1wb3J0ICJTVkdEb2N1bWVudC5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAi
VGVzdE9iamVjdENDb25zdHJ1Y3Rvci5oIgogI2ltcG9ydCAiVGVzdFN1Yk9iakNvbnN0cnVjdG9y
LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgog
I2ltcG9ydCAiYW55LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0KaW5kZXggN2UzZDgzOC4uZGU0
MWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdFR5cGVkZWZzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW1w
b3J0ICJET01UZXN0VHlwZWRlZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5o
IgogI2ltcG9ydCAiU1ZHUG9pbnQuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2ltcG9ydCAiVGVzdFR5cGVkZWZzLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDQ5NmZkOGMuLmQxMzdiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTE5MCw3
ICsxOTAsNyBAQCBib29sIENTU0N1cnNvckltYWdlVmFsdWU6OmlzU1ZHQ3Vyc29yKCkgY29uc3QK
IHsKICAgICBpZiAobV9pbWFnZVZhbHVlLT5pc0ltYWdlVmFsdWUoKSkgewogICAgICAgICBSZWZQ
dHI8Q1NTSW1hZ2VWYWx1ZT4gaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUq
PihtX2ltYWdlVmFsdWUuZ2V0KCkpOwotICAgICAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5n
LCBpbWFnZVZhbHVlLT51cmwoKSk7CisgICAgICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywg
aW1hZ2VWYWx1ZS0+dXJsKCkpOwogICAgICAgICByZXR1cm4ga3VybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDQwMzc0MmQuLjZlNjUzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU3Ry
aW5nIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjphZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVT
aGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NGb250RmFjZVNyY1ZhbHVl
OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzLCBjb25zdCBT
dHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0xvY2Fs
KCkpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQtPmNvbXBsZXRl
VVJMKG1fcmVzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
CmluZGV4IDQyOWJiYjQuLjk5YTExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxl
U2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzI2OGVl
MC4uMzRhNjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkKICAgICBy
ZXR1cm4gc3RyaWN0Q29udGV4dDsKIH0KIAotQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29u
dGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCitDU1NQYXJzZXJD
b250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUgbW9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMKQogICAgIDogYmFzZVVSTChiYXNlVVJMKQogICAgICwgbW9kZShtb2RlKQogICAgICwg
aXNIVE1MRG9jdW1lbnQoZmFsc2UpCkBAIC0yNzIsNyArMjcyLDcgQEAgQ1NTUGFyc2VyQ29udGV4
dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VV
UkwpCiB7CiB9CiAKLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitD
U1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiAgICAgOiBiYXNlVVJMKGJh
c2VVUkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBiYXNlVVJMKQogICAgICwgY2hh
cnNldChjaGFyc2V0KQogICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSA/IENTU1F1
aXJrc01vZGUgOiBDU1NTdHJpY3RNb2RlKQpAQCAtMTYxNSwxNiArMTYxNSwxNiBAQCB2b2lkIENT
U1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9
IGZhbHNlOwogfQogCi1LVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCitVUkwgQ1NTUGFyc2VyOjpjb21w
bGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAg
ICAgICByZXR1cm4gVVJMKCk7CiAgICAgaWYgKGNvbnRleHQuY2hhcnNldC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKLSAgICByZXR1cm4gS1VS
TChjb250ZXh0LmJhc2VVUkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKKyAgICAgICAgcmV0dXJu
IFVSTChjb250ZXh0LmJhc2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChjb250ZXh0LmJhc2VV
UkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKIH0KIAotS1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKG1fY29u
dGV4dCwgdXJsKTsKIH0KQEAgLTg3ODQsNyArODc4NCw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZU1peEZ1bmN0aW9uKENTU1BhcnNlclZh
bHVlCiAgICAgICAgIHVuc2lnbmVkIGFyZ051bWJlciA9IGFyZ3NMaXN0LT5jdXJyZW50SW5kZXgo
KTsKICAgICAgICAgaWYgKCFhcmdOdW1iZXIpIHsKICAgICAgICAgICAgIGlmIChhcmctPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHNo
YWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgICAgICBVUkwg
c2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcpOwogICAgICAgICAgICAgICAgIHZh
bHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJVUkwuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGFyZ051bWJlciA9PSAxIHx8IGFyZ051
bWJlciA9PSAyKSB7CkBAIC04OTc0LDcgKzg5NzQsNyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU0Zp
bHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ3VzdG9tRmlsdGVyRnVuY3Rpb25XaXRoSW5saW5l
UwogICAgICAgICBpZiAoYXJnLT5pZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWx1
ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwog
ICAgICAgICBlbHNlIGlmIChhcmctPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
IHsKLSAgICAgICAgICAgIEtVUkwgc2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcp
OworICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsK
ICAgICAgICAgICAgIHZhbHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJV
Ukwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaGFkQXRMZWFzdE9uZUN1c3RvbVNoYWRlciA9IHRy
dWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYXJnc0xpc3QtPmN1cnJlbnRJbmRleCgpID09IDEgJiYg
YXJnLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IGZmZDFkOWUuLjZjYzE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTQy
Miw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICNlbmRp
ZgogCi0gICAgc3RhdGljIEtVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENT
U1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBMb2NhdGlvbiBjdXJy
ZW50TG9jYXRpb24oKTsKIApAQCAtNTAyLDcgKzUwMiw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5l
IGJvb2wgaW5TdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUgPT0gQ1NT
U3RyaWN0TW9kZSB8fCBtX2NvbnRleHQubW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOyB9CiAgICAg
aW5saW5lIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUg
PT0gQ1NTUXVpcmtzTW9kZTsgfQogICAgIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3Q7CiAKICAgICB2b2lkIHJlY2hlY2tBdEtleXdvcmQoY29uc3QgVUNoYXIqIHN0ciwgaW50
IGxlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCmluZGV4IDU3MzU3ZjUuLmI0N2Mw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBDU1NQYXJzZXJNb2RlX2gKICNkZWZpbmUgQ1NTUGFyc2VyTW9kZV9oCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTcsMTAgKzU3LDEwIEBAIGlubGluZSBib29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMID0gS1VSTCgpKTsKLSAgICBDU1NQYXJzZXJDb250
ZXh0KERvY3VtZW50JiwgY29uc3QgS1VSTCYgYmFzZVVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4
dChEb2N1bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQgPSBlbXB0eVN0cmluZygpKTsKIAotICAgIEtVUkwgYmFzZVVSTDsKKyAgICBVUkwgYmFz
ZVVSTDsKICAgICBTdHJpbmcgY2hhcnNldDsKICAgICBDU1NQYXJzZXJNb2RlIG1vZGU7CiAgICAg
Ym9vbCBpc0hUTUxEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IGJmMjIwY2YuLmI1OWU4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcApAQCAtMTIwMyw3ICsxMjAzLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1
ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgQ1NTUHJp
bWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENT
U1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1VSSSkKICAgICAgICAgYWRkU3VicmVz
b3VyY2VVUkwodXJscywgc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZS5zdHJpbmcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNjQyMDZmOC4uNjQ5YTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMzMCw3ICszMzAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUXVpcmtWYWx1ZSgpIHsgcmV0dXJuIG1faXNRdWly
a1ZhbHVlOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBMZW5ndGggdmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IGNm
NzE0OTUuLjE1YWU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFN0cmluZyBDU1NSZWZsZWN0VmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0CiB9CiAjZW5kaWYKIAotdm9p
ZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2
b2lkIENTU1JlZmxlY3RWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAog
ewogICAgIGlmIChtX21hc2spCiAgICAgICAgIG1fbWFzay0+YWRkU3VicmVzb3VyY2VTdHlsZVVS
THModXJscywgc3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5k
ZXggMGVmMTFjZS4uODFmYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0
OwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0VmFsdWUm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRjZDU2YmEu
LmU4Y2NmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUGFz
c1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U1N0eWxlU2hlZXQoc2hlZXQsIG93bmVyTm9kZSwgZmFsc2UpKTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQorUGFzc1JlZlB0
cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJO
b2RlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAg
Q1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNl
VVJMLCBlbmNvZGluZyk7CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0
KTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVz
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIEtVUkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKKyAgICBV
UkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKICAgICBpZiAoYmFzZVVSTC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93
bmVyRG9jdW1lbnQoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBTdHJpbmcgQ1NTU3R5bGVTaGVldDo6
aHJlZigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMtPm9yaWdpbmFsVVJMKCk7CiB9CiAK
LUtVUkwgQ1NTU3R5bGVTaGVldDo6YmFzZVVSTCgpIGNvbnN0CitVUkwgQ1NTU3R5bGVTaGVldDo6
YmFzZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMtPmJhc2VVUkwoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGIzMDhiZDEuLjMyYjVjZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDU1NTdHls
ZVNoZWV0IEZJTkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250
ZW50cz4sIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4s
IE5vZGUqIG93bmVyTm9kZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Y3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyA9
IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJ
bmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmco
KSk7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CiAKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX293bmVyUnVsZTsgfQotICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICB2b2lkIGNs
ZWFyT3duZXJSdWxlKCkgeyBtX293bmVyUnVsZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IGIzNjk5MGQuLjc1MTc1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIENTU1ZhbHVlOjpUeXBlIENTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUoKSBjb25z
dAogICAgIHJldHVybiBDU1NfQ1VTVE9NOwogfQogCi12b2lkIENTU1ZhbHVlOjphZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRz
KiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9y
IGludGVybmFsIGluc3RhbmNlcyBvbmx5LgogICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDdlNDgwMjcuLjUwNmUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIENTU1ZhbHVlX2gKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3Qg
U3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7
CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAppbmRleCA0OWY1YzdjLi43NzNlNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyBD
U1NWYWx1ZUxpc3Q6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluCiB9CiAjZW5kaWYKIAotdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0
Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0gbV92YWx1ZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCmluZGV4IDllZTFhZmEuLjJiZGQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggNzExZGFmZC4uYjJhMGZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMTk5OCw3ICsx
OTk4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VVJJKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgS1VSTCB1cmwgPSBzdHlsZVJl
c29sdmVyLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VSTFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NV
UkxWYWx1ZSk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgd29yayB3aXRo
IGZvcndhcmQgb3IgZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMgKHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MDUpCiAgICAgICAgICAgICAgICAgc2V0VmFsdWUo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZShjc3NVUkxWYWx1ZSwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNWY3MTAzMi4uMWY1
YzE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEs
NyArMTA0MSw3IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJp
ZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFBy
b3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9DU1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBT
dHlsZVByb3BlcnR5U2V0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3Zv
aWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aAppbmRleCA0ZWFiYjNiYy4uMjIxNmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsKIGNsYXNzIEltbXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBTdHlsZWRFbGVtZW50OwpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
U1NQYXJzZXJNb2RlPihtX2Nzc1BhcnNlck1vZGUpOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250
ZXh0U3R5bGVTaGVldCkgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkg
Y29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBtdXRhYmxl
Q29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4g
aW1tdXRhYmxlQ29weUlmTmVlZGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggYzYwZGFlMi4uNTM3Nzc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzQyMCw4ICszNDIwLDggQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9n
cmFtPiBTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKFdlYktpdEMKICAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVz
aFR5cGUpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVy
ID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgS1VSTCB2
ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJM
KGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IEtVUkwoKTsKLSAgICBLVVJMIGZyYWdtZW50U2hhZGVy
VVJMID0gZnJhZ21lbnRTaGFkZXIgPyBmcmFnbWVudFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVk
UmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOworICAgIFVSTCB2ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0
ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVy
KSA6IFVSTCgpOworICAgIFVSTCBmcmFnbWVudFNoYWRlclVSTCA9IGZyYWdtZW50U2hhZGVyID8g
ZnJhZ21lbnRTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IFVSTCgp
OwogICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW07CiAgICAgaWYg
KG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKQogICAgICAgICBwcm9ncmFtID0gbV9jdXN0b21G
aWx0ZXJQcm9ncmFtQ2FjaGUtPmxvb2t1cChDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhT
aGFkZXJVUkwsIGZyYWdtZW50U2hhZGVyVVJMLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1l
c2hUeXBlKSk7CkBAIC0zNzg4LDcgKzM3ODgsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFdlYktpdENTU1NWR0RvY3Vt
ZW50VmFsdWUqIHN2Z0RvY3VtZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJLaXRDU1NTVkdEb2N1
bWVudFZhbHVlKj4oYXJndW1lbnQpOwotICAgICAgICAgICAgS1VSTCB1cmwgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOworICAgICAgICAg
ICAgVVJMIHVybCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdmdEb2N1bWVudFZh
bHVlLT51cmwoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHN2Z0RvY3Vt
ZW50VmFsdWUtPnVybCgpLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCksIG9wZXJhdGlvblR5cGUp
OwogICAgICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5j
ZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwgbV9zdGF0ZS5kb2N1bWVudCgpKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNmExNjE5Ni4uNjc1NGQ3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5
ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IDA5NTY2MDkuLjVmNDMwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0eWxlUnVsZUltcG9y
dDo6flN0eWxlUnVsZUltcG9ydCgpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVu
dCgmbV9zdHlsZVNoZWV0Q2xpZW50KTsKIH0KIAotdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxl
U2hlZXQpCit2b2lkIFN0eWxlUnVsZUltcG9ydDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHlsZVNoZWV0KQogewogICAgIGlmIChtX3N0
eWxlU2hlZXQpCiAgICAgICAgIG1fc3R5bGVTaGVldC0+Y2xlYXJPd25lclJ1bGUoKTsKQEAgLTEw
MCwxMCArMTAwLDEwIEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgp
CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
S1VSTCBhYnNVUkw7CisgICAgVVJMIGFic1VSTDsKICAgICBpZiAoIW1fcGFyZW50U3R5bGVTaGVl
dC0+YmFzZVVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdz
IFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzVVJMID0gS1VSTChtX3BhcmVudFN0eWxl
U2hlZXQtPmJhc2VVUkwoKSwgbV9zdHJIcmVmKTsKKyAgICAgICAgYWJzVVJMID0gVVJMKG1fcGFy
ZW50U3R5bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOwogICAgIGVsc2UKICAgICAgICAg
YWJzVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKG1fc3RySHJlZik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGVJbXBvcnQuaAppbmRleCBlZTU0ZGI5Li40NTIxMjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgcHVi
bGljOgogICAgICAgICBJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoU3R5bGVSdWxlSW1wb3J0KiBv
d25lclJ1bGUpIDogbV9vd25lclJ1bGUob3duZXJSdWxlKSB7IH0KICAgICAgICAgdmlydHVhbCB+
SW1wb3J0ZWRTdHlsZVNoZWV0Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NT
U3R5bGVTaGVldCogc2hlZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fb3duZXJSdWxlLT5z
ZXRDU1NTdHlsZVNoZWV0KGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQsIHNoZWV0KTsKICAgICAgICAg
fQpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHlsZVJ1bGVJbXBvcnQqIG1f
b3duZXJSdWxlOwogICAgIH07CiAKLSAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNv
bnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKKyAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwogICAgIGZyaWVuZCBjbGFzcyBJbXBvcnRl
ZFN0eWxlU2hlZXRDbGllbnQ7CiAKICAgICBTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBo
cmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmlu
ZGV4IDYwYmJiNWYuLjM4OTkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjIsNyAr
MjIsNyBAQAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUu
aCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgdm9pZCBjbGVhck93bmVyTm9kZSgpID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVS
TCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJMKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
Q1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGVmNWQ1MzkuLmY1NWY3NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC0zOTcsMTIgKzM5Nywx
MiBAQCBEb2N1bWVudCogU3R5bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25lckRvY3VtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gb3duZXJOb2RlID8gJm93bmVyTm9kZS0+ZG9jdW1lbnQoKSA6IDA7
CiB9CiAKLUtVUkwgU3R5bGVTaGVldENvbnRlbnRzOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
IHVybCkgY29uc3QKK1VSTCBTdHlsZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBDU1NQYXJzZXI6OmNvbXBsZXRlVVJMKG1f
cGFyc2VyQ29udGV4dCwgdXJsKTsKIH0KIAotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKQordm9pZCBTdHlsZVNo
ZWV0Q29udGVudHM6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVy
bHMpCiB7CiAgICAgRGVxdWU8U3R5bGVTaGVldENvbnRlbnRzKj4gc3R5bGVTaGVldFF1ZXVlOwog
ICAgIHN0eWxlU2hlZXRRdWV1ZS5hcHBlbmQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKaW5kZXggNmI0OTc5Ni4uZjllNjk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTdHlsZVNo
ZWV0Q29udGVudHNfaAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04
MCw4ICs4MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRDb21wbGV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2xvYWRDb21wbGV0ZWQ7IH0KICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJy
ZXNvdXJjZXMoKSBjb25zdDsKIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0OwotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mKTsKKyAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpOwogCiAg
ICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQg
PSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Vz
ZXJTdHlsZVNoZWV0OyB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8vIHRoaXMg
c3R5bGUgc2hlZXQuIFRoaXMgcHJvcGVydHkgcHJvYmFibHkgaXNuJ3QgdXNlZnVsIGZvciBtdWNo
IGV4Y2VwdAogICAgIC8vIHRoZSBKYXZhU2NyaXB0IGJpbmRpbmcgKHdoaWNoIG5lZWRzIHRvIHVz
ZSB0aGlzIHZhbHVlIGZvciBzZWN1cml0eSkuCiAgICAgU3RyaW5nIG9yaWdpbmFsVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQotICAgIGNvbnN0IEtVUkwmIGJhc2VVUkwoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlckNvbnRleHQuYmFzZVVSTDsgfQorICAgIGNvbnN0IFVSTCYg
YmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CiAKICAg
ICB1bnNpZ25lZCBydWxlQ291bnQoKSBjb25zdDsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlQXQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFk
ZXJWYWx1ZS5jcHAKaW5kZXggMWQzYWQyOC4uNWM5NjJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQZW5kaW5nU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtNTUsNyArNTUsNyBAQCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6fldlYktpdENTU1No
YWRlclZhbHVlKCkKIHsKIH0KIAotS1VSTCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29tcGxldGVV
UkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QKK1VSTCBXZWJLaXRDU1NTaGFk
ZXJWYWx1ZTo6Y29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QK
IHsKICAgICByZXR1cm4gbG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCmluZGV4IGE2NTU1ZjIu
LjQwZWQ3YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTdHlsZUNhY2hlZFNo
YWRlcjsKIGNsYXNzIFN0eWxlU2hhZGVyOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAg
dm9pZCBzZXRGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpIHsgbV9mb3JtYXQgPSBmb3JtYXQ7
IH0KIAotICAgIEtVUkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsK
KyAgICBVUkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICAgICBT
dHlsZUNhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAg
ICAgU3R5bGVTaGFkZXIqIGNhY2hlZE9yUGVuZGluZ1NoYWRlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCA1YzU3NGFhLi44OGNkNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTIzMywxMyArMjMzLDEzIEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2M7CiAjaWYg
RU5BQkxFKFNWRykKICAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3Bh
Y2VVUkkpCi0gICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAg
ICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZWxzZQogI2Vu
ZGlmCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJ
KQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgS1VSTCgpKTsKKyAgICAg
ICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIFVSTCgpKTsKICAgICBlbHNlCi0gICAg
ICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0gRG9j
dW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAKICAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2luKG1f
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIERP
TUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
CiBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxE
b2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+
IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxIVE1MRG9j
dW1lbnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZC0+b3Blbigp
OwogICAgIGQtPndyaXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PiIpOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpCkBAIC0zMTksNyArMzE5LDcgQEAgUGFzc1Jl
ZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0aXQKICAgICByZXR1cm4gZC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGluVmlld1NvdXJj
ZU1vZGUpCitQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBi
b29sIGluVmlld1NvdXJjZU1vZGUpCiB7CiAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUpCiAgICAg
ICAgIHJldHVybiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgdHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IGY5YWM2ZmYuLmFi
YWZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRUeXBlOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVn
dWxhckV4cHJlc3Npb247CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERv
Y3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90
IHBhcnQgb2YgRE9NKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1
bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlu
Vmlld1NvdXJjZU1vZGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVE
b2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYsIGJvb2wg
aW5WaWV3U291cmNlTW9kZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpOwogICAgIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzIzMDU0OS4u
MGIxOWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzVmFsaWROYW1lUGFydChVQ2hhcjMyIGMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25l
cihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgYm9vbCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmln
aW5Gcm9tT3duZXIoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jb3JpZ2luLTAKICAgICAvLwpAQCAtMzc2
LDcgKzM3Niw3IEBAIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiBhY3RpdmVVUkwsIGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0YXRpYyB2b2lk
IHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0
aXZlVVJMLCBjb25zdCBjaGFyKiByZWFzb24pCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3
aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSArICInIGZyb20g
ZnJhbWUgd2l0aCBVUkwgJyIgKyBhY3RpdmVVUkwuc3RyaW5nKCkgKyAiJy4gIiArIHJlYXNvbiAr
ICJcbiI7CiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYgdmFsdWUpCiB9CiAjZW5kaWYK
IAotRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCB1bnNp
Z25lZCBkb2N1bWVudENsYXNzZXMpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgIDogQ29udGFpbmVy
Tm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9z
dHlsZVJlc29sdmVyVGhyb3dhd2F5VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlc29sdmVy
VGhyb3dhd2F5VGltZXJGaXJlZCwgdGltZUJlZm9yZVRocm93aW5nQXdheVN0eWxlUmVzb2x2ZXJB
ZnRlckxhc3RVc2VJblNlY29uZHMpCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCB2b2lkIERvY3VtZW50
OjpzZXREb2N1bWVudFVSSShjb25zdCBTdHJpbmcmIHVyaSkKICAgICB1cGRhdGVCYXNlVVJMKCk7
CiB9CiAKLUtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAorVVJMIERvY3VtZW50OjpiYXNl
VVJJKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQpAQCAtMjYyMyw5ICsyNjIz
LDkgQEAgdm9pZCBEb2N1bWVudDo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHMKICAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFVS
TChjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwp
CiB7Ci0gICAgY29uc3QgS1VSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiB1cmw7CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwo
KSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1cm47CiAKQEAg
LTI2MzYsNyArMjYzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBLVVJMJiB1cmwp
CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogewotICAgIEtVUkwgb2xkQmFzZVVS
TCA9IG1fYmFzZVVSTDsKKyAgICBVUkwgb2xkQmFzZVVSTCA9IG1fYmFzZVVSTDsKICAgICAvLyBE
T00gMyBDb3JlOiBXaGVuIHRoZSBEb2N1bWVudCBzdXBwb3J0cyB0aGUgZmVhdHVyZSAiSFRNTCIg
W0RPTSBMZXZlbCAyIEhUTUxdLCB0aGUgYmFzZSBVUkkgaXMgY29tcHV0ZWQgdXNpbmcKICAgICAv
LyBmaXJzdCB0aGUgdmFsdWUgb2YgdGhlIGhyZWYgYXR0cmlidXRlIG9mIHRoZSBIVE1MIEJBU0Ug
ZWxlbWVudCBpZiBhbnksIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0
ZQogICAgIC8vIGZyb20gdGhlIERvY3VtZW50IGludGVyZmFjZSBvdGhlcndpc2UuCkBAIC0yNjQ4
LDE0ICsyNjQ4LDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAgICAv
LyBUaGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIHJlYWQtb25seSBmcm9tIEphdmFTY3JpcHQs
IGJ1dCB3cml0YWJsZSBmcm9tIE9iamVjdGl2ZSBDLCBzbyB3ZSBuZWVkIHRvIHJldGFpbgogICAg
ICAgICAvLyB0aGlzIGZhbGxiYWNrIGJlaGF2aW9yLiBXZSB1c2UgYSBudWxsIGJhc2UgVVJMLCBz
aW5jZSB0aGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIGFuIGFyYml0cmFyeSBzdHJpbmcKICAg
ICAgICAgLy8gYW5kIERPTSAzIENvcmUgZG9lcyBub3Qgc3BlY2lmeSBob3cgaXQgc2hvdWxkIGJl
IHJlc29sdmVkLgotICAgICAgICBtX2Jhc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZG9j
dW1lbnRVUkkoKSk7CisgICAgICAgIG1fYmFzZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGRv
Y3VtZW50VVJJKCkpOwogICAgIH0KIAogICAgIGlmIChtX3NlbGVjdG9yUXVlcnlDYWNoZSkKICAg
ICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmludmFsaWRhdGUoKTsKIAogICAgIGlmICghbV9i
YXNlVVJMLmlzVmFsaWQoKSkKLSAgICAgICAgbV9iYXNlVVJMID0gS1VSTCgpOworICAgICAgICBt
X2Jhc2VVUkwgPSBVUkwoKTsKIAogICAgIGlmIChtX2VsZW1lbnRTaGVldCkgewogICAgICAgICAv
LyBFbGVtZW50IHNoZWV0IGlzIHNpbGx5LiBJdCBuZXZlciBjb250YWlucyBhbnl0aGluZy4KQEAg
LTI2NzUsNyArMjY3NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgIH0K
IH0KIAotdm9pZCBEb2N1bWVudDo6c2V0QmFzZVVSTE92ZXJyaWRlKGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgRG9jdW1lbnQ6OnNldEJhc2VVUkxPdmVycmlkZShjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBtX2Jhc2VVUkxPdmVycmlkZSA9IHVybDsKICAgICB1cGRhdGVCYXNlVVJMKCk7CkBAIC0yNzAx
LDExICsyNzAxLDExIEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgZG9lc24ndCBzaGFyZSBjb2RlIHdpdGggY29t
cGxldGVVUkwgaXQgbWF5IG5vdCBoYW5kbGUgZW5jb2RpbmdzIGNvcnJlY3RseS4KLSAgICBLVVJM
IGJhc2VFbGVtZW50VVJMOworICAgIFVSTCBiYXNlRWxlbWVudFVSTDsKICAgICBpZiAoaHJlZikg
ewogICAgICAgICBTdHJpbmcgc3RyaXBwZWRIcmVmID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKCpocmVmKTsKICAgICAgICAgaWYgKCFzdHJpcHBlZEhyZWYuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYmFzZUVsZW1lbnRVUkwgPSBLVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwor
ICAgICAgICAgICAgYmFzZUVsZW1lbnRVUkwgPSBVUkwodXJsKCksIHN0cmlwcGVkSHJlZik7CiAg
ICAgfQogICAgIGlmIChtX2Jhc2VFbGVtZW50VVJMICE9IGJhc2VFbGVtZW50VVJMICYmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Jhc2VVUkkoYmFzZUVsZW1lbnRVUkwpKSB7CiAgICAg
ICAgIG1fYmFzZUVsZW1lbnRVUkwgPSBiYXNlRWxlbWVudFVSTDsKQEAgLTI3MTUsNyArMjcxNSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgbV9iYXNlVGFyZ2V0
ID0gdGFyZ2V0ID8gKnRhcmdldCA6IG51bGxBdG9tOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OnVz
ZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OnVzZXJBZ2Vu
dChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSA/IGZyYW1lKCkt
PmxvYWRlcigpLnVzZXJBZ2VudCh1cmwpIDogU3RyaW5nKCk7CiB9CkBAIC0zNzI2LDcgKzM3MjYs
NyBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIEtVUkwgY29va2llVVJMID0gdGhp
cy0+Y29va2llVVJMKCk7CisgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwog
ICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
QEAgLTM3NDcsNyArMzc0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CisgICAgVVJMIGNvb2tpZVVS
TCA9IHRoaXMtPmNvb2tpZVVSTCgpOwogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM5NzEsMjAgKzM5NzEsMjAgQEAgdm9pZCBEb2N1bWVudDo6c2V0
RGVjb2RlcihQYXNzUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIpCiAgICAgbV9k
ZWNvZGVyID0gZGVjb2RlcjsKIH0KIAotS1VSTCBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IEtVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKK1VSTCBEb2N1
bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZVVSTE92
ZXJyaWRlKSBjb25zdAogewogICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxsIFVSTCB3aGVuIHBh
c3NlZCBhIG51bGwgc3RyaW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hhbmdlIHRoZSBL
VVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8K
ICAgICAvLyBTZWUgYWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYpCiAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKLSAgICBj
b25zdCBLVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VV
UkxPdmVycmlkZSA9PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVudERv
Y3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHko
KSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkg
PyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CiAgICAgaWYg
KCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAgcmV0
dXJuIEtVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOworICAgICAgICBy
ZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKSk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tcGxldGVVUkwodXJsLCBtX2Jhc2VV
UkwpOwogfQpAQCAtNDE5OSwyMSArNDE5OSwyMSBAQCBTdHJpbmcgRG9jdW1lbnQ6OnF1ZXJ5Q29t
bWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiAgICAgcmV0dXJuIGNvbW1hbmQo
dGhpcywgY29tbWFuZE5hbWUpLnZhbHVlKCk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFy
Y2hEZXNjcmlwdGlvblVSTCgpCitVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVS
TCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5TZWFyY2hNSU1FVHlwZSA9
ICJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIjsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qgb3BlblNlYXJjaFJlbGF0aW9uID0gInNlYXJjaCI7CiAKICAgICAvLyBG
SVhNRTogV2h5IGRvIG9ubHkgdG9wLWxldmVsIGZyYW1lcyBoYXZlIG9wZW5TZWFyY2hEZXNjcmlw
dGlvblVSTHM/CiAgICAgaWYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnRyZWUoKS5wYXJlbnQoKSkK
LSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8g
RklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRvIHdhaXQgZm9yIEZyYW1lU3RhdGVDb21wbGV0ZT8KICAg
ICBpZiAoZnJhbWUoKS0+bG9hZGVyKCkuc3RhdGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGUpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmICgh
aGVhZCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAK
ICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuID0gaGVhZCgpLT5jaGlsZHJlbigp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIGNoaWxkID0gY2hpbGRyZW4tPml0ZW0o
aSk7IGkrKykgewpAQCAtNDIyNyw3ICs0MjI3LDcgQEAgS1VSTCBEb2N1bWVudDo6b3BlblNlYXJj
aERlc2NyaXB0aW9uVVJMKCkKICAgICAgICAgcmV0dXJuIGxpbmtFbGVtZW50LT5ocmVmKCk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnB1c2hDdXJyZW50U2NyaXB0KFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+
IG5ld0N1cnJlbnRTY3JpcHQpCkBAIC00NTY2LDcgKzQ1NjYsNyBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8g
c291cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3Vy
IHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBt
X2Nvb2tpZVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKKyAgICAg
ICAgbV9jb29raWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKICAg
ICAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsK
ICAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGljeTo6
Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY1Miw3ICs0NjUyLDcgQEAgYm9v
bCBEb2N1bWVudDo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKICAgICByZXR1cm4gaXNNYWluVGhy
ZWFkKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0
ZShjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVVUkxGb3JQdXNoT3JSZXBs
YWNlU3RhdGUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAg
IGlmICghZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDEwYWZhZS4uNzNhNzg1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTIzNiwxMSArMjM2LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hh
ciBEb2N1bWVudENsYXNzRmxhZ3M7CiAKIGNsYXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIFhIVE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KQEAg
LTQxNCw3ICs0MTQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudFVSSTsgfQogICAgIHZvaWQgc2V0RG9jdW1lbnRVUkkoY29uc3Qg
U3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1
YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQogICAgIFN0cmluZyB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKQEAgLTU4NCwyMiArNTg0LDIy
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vs
bEZvcm1lZDsgfQogCi0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gbV91cmw7IH0KKyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFRvIHVu
ZGVyc3RhbmQgaG93IHRoZXNlIGNvbmNlcHRzIHJlbGF0ZSB0byBvbmUgYW5vdGhlciwgcGxlYXNl
IHNlZSB0aGUKICAgICAvLyBjb21tZW50cyBzdXJyb3VuZGluZyB0aGVpciBkZWNsYXJhdGlvbi4K
LSAgICBjb25zdCBLVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMOyB9Ci0g
ICAgdm9pZCBzZXRCYXNlVVJMT3ZlcnJpZGUoY29uc3QgS1VSTCYpOwotICAgIGNvbnN0IEtVUkwm
IGJhc2VVUkxPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTE92ZXJyaWRlOyB9Ci0g
ICAgY29uc3QgS1VSTCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VFbGVt
ZW50VVJMOyB9CisgICAgY29uc3QgVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNl
VVJMOyB9CisgICAgdm9pZCBzZXRCYXNlVVJMT3ZlcnJpZGUoY29uc3QgVVJMJik7CisgICAgY29u
c3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlk
ZTsgfQorICAgIGNvbnN0IFVSTCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jh
c2VFbGVtZW50VVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBiYXNlVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNlVGFyZ2V0OyB9CiAgICAgdm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAot
ICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwm
IGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIApAQCAtODE3LDggKzgxNyw4
IEBAIHB1YmxpYzoKICAgICAvLyAgICBkb2N1bWVudCBpbmhlcml0cyB0aGUgc2VjdXJpdHkgY29u
dGV4dCBvZiBhbm90aGVyIGRvY3VtZW50LCBpdAogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29r
aWVVUkwgYnV0IG5vdCBpdHMgVVJMLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYgY29va2llVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChj
b25zdCBLVVJMJiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGNv
b2tpZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llVVJMOyB9CisgICAgdm9pZCBzZXRDb29r
aWVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KIAogICAgIC8vIFRo
ZSBmaXJzdFBhcnR5Rm9yQ29va2llcyBpcyB1c2VkIHRvIGNvbXB1dGUgd2hldGhlciB0aGlzIGRv
Y3VtZW50CiAgICAgLy8gYXBwZWFycyBpbiBhICJ0aGlyZC1wYXJ0eSIgY29udGV4dCBmb3IgdGhl
IHB1cnBvc2Ugb2YgdGhpcmQtcGFydHkKQEAgLTgzMCw4ICs4MzAsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gICAgICAgZmlyc3RQYXJ0eUZvckNvb2tpZXMgaGF2ZSBhIGRpZmZlcmVudCByZWdpc3RyeS1j
b250cm9sbGVkCiAgICAgLy8gICAgICAgZG9tYWluLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOyB9Ci0gICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwp
IHsgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IHVybDsgfQorICAgIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9
CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkgeyBtX2Zp
cnN0UGFydHlGb3JDb29raWVzID0gdXJsOyB9CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBp
bXBsZW1lbnRzIHRoZSBydWxlIGZyb20gSFRNTCA0IGZvciB3aGF0IHZhbGlkIG5hbWVzIGFyZS4K
ICAgICAvLyBUbyBnZXQgdGhpcyByaWdodCBmb3IgYWxsIHRoZSBYTUwgY2FzZXMsIHdlIHByb2Jh
Ymx5IGhhdmUgdG8gaW1wcm92ZSB0aGlzIG9yIG1vdmUgaXQKQEAgLTg2Niw3ICs4NjYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21t
YW5kKTsKICAgICBTdHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBjb21tYW5k
KTsKIAotICAgIEtVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCk7CisgICAgVVJMIG9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTCgpOwogCiAgICAgLy8gZGVzaWduTW9kZSBzdXBwb3J0CiAgICAg
ZW51bSBJbmhlcml0ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0gdHJ1ZSwgaW5oZXJpdCB9OyAg
ICAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRTZWN1cml0eUNv
bnRleHQoKTsKICAgICB2b2lkIGluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAotICAgIHZv
aWQgdXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lk
IHVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0
YXRlUG9wcGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKICAgICBib29s
IHByb2Nlc3NpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdMb2FkRXZl
bnQ7IH0KQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc3VhbFVw
ZGF0ZXNBbGxvd2VkQnlDbGllbnQoYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAgICBEb2N1bWVudChG
cmFtZSosIGNvbnN0IEtVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKKyAg
ICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50
Q2xhc3MpOwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0
cmluZygpOyB9CiAKQEAgLTEyOTMsMTIgKzEyOTMsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
d2VsbEZvcm1lZDsKIAogICAgIC8vIERvY3VtZW50IFVSTHMuCi0gICAgS1VSTCBtX3VybDsgLy8g
RG9jdW1lbnQuVVJMOiBUaGUgVVJMIGZyb20gd2hpY2ggdGhpcyBkb2N1bWVudCB3YXMgcmV0cmll
dmVkLgotICAgIEtVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNl
IHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCi0gICAgS1VSTCBtX2Jhc2VVUkxPdmVycmlk
ZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIg
bV9iYXNlVVJMIChidXQgbm90IG1fYmFzZUVsZW1lbnRVUkwpLgotICAgIEtVUkwgbV9iYXNlRWxl
bWVudFVSTDsgLy8gVGhlIFVSTCBzZXQgYnkgdGhlIDxiYXNlPiBlbGVtZW50LgotICAgIEtVUkwg
bV9jb29raWVVUkw7IC8vIFRoZSBVUkwgdG8gdXNlIGZvciBjb29raWUgYWNjZXNzLgotICAgIEtV
UkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsgLy8gVGhlIHBvbGljeSBVUkwgZm9yIHRoaXJkLXBh
cnR5IGNvb2tpZSBibG9ja2luZy4KKyAgICBVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhl
IFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KKyAgICBVUkwgbV9i
YXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJl
bGF0aXZlIFVSTHMuCisgICAgVVJMIG1fYmFzZVVSTE92ZXJyaWRlOyAvLyBBbiBhbHRlcm5hdGl2
ZSBiYXNlIFVSTCB0aGF0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBtX2Jhc2VVUkwgKGJ1dCBub3Qg
bV9iYXNlRWxlbWVudFVSTCkuCisgICAgVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8vIFRoZSBVUkwg
c2V0IGJ5IHRoZSA8YmFzZT4gZWxlbWVudC4KKyAgICBVUkwgbV9jb29raWVVUkw7IC8vIFRoZSBV
UkwgdG8gdXNlIGZvciBjb29raWUgYWNjZXNzLgorICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOyAvLyBUaGUgcG9saWN5IFVSTCBmb3IgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nLgog
CiAgICAgLy8gRG9jdW1lbnQuZG9jdW1lbnRVUkk6CiAgICAgLy8gQWx0aG91Z2ggVVJMLWxpa2Us
IERvY3VtZW50LmRvY3VtZW50VVJJIGNhbiBhY3R1YWxseSBiZSBzZXQgdG8gYW55CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IGFjZWZhNjcuLjQ3MmY4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC0zNiw5ICszNiw5IEBAIERvY3VtZW50VHlwZTo6RG9j
dW1lbnRUeXBlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmCiB7CiB9CiAKLUtVUkwgRG9jdW1lbnRUeXBlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBE
b2N1bWVudFR5cGU6OmJhc2VVUkkoKSBjb25zdAogewotICAgIHJldHVybiBLVVJMKCk7CisgICAg
cmV0dXJuIFVSTCgpOwogfQogCiBTdHJpbmcgRG9jdW1lbnRUeXBlOjpub2RlTmFtZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKaW5kZXggMWRiNjMyNy4uNjUwMTgwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIERvY3VtZW50VHlwZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CiAKLSAgICB2aXJ0dWFs
IEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzY2MTBiNC4uMmUwMTE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI0NiwxMCArMTI0NiwxMCBAQCB2b2lkIEVs
ZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgbV90YWdOYW1lLnNldFByZWZpeChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWlj
U3RyaW5nKCkgOiBwcmVmaXgpOwogfQogCi1LVVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAor
VVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YmFzZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShiYXNlQXR0cik7Ci0gICAgS1VSTCBiYXNlKEtV
UkwoKSwgYmFzZUF0dHJpYnV0ZSk7CisgICAgVVJMIGJhc2UoVVJMKCksIGJhc2VBdHRyaWJ1dGUp
OwogICAgIGlmICghYmFzZS5wcm90b2NvbCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJh
c2U7CiAKQEAgLTEyNTcsMTEgKzEyNTcsMTEgQEAgS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29u
c3QKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGJhc2U7CiAKLSAgICBjb25zdCBL
VVJMJiBwYXJlbnRCYXNlID0gcGFyZW50LT5iYXNlVVJJKCk7CisgICAgY29uc3QgVVJMJiBwYXJl
bnRCYXNlID0gcGFyZW50LT5iYXNlVVJJKCk7CiAgICAgaWYgKHBhcmVudEJhc2UuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBiYXNlOwogCi0gICAgcmV0dXJuIEtVUkwocGFyZW50QmFzZSwgYmFz
ZUF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIFVSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRlKTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBET01TdHJpbmdNYXAqIEVsZW1lbnQ6OmRhdGFzZXQoKQog
ICAgIHJldHVybiBkYXRhLmRhdGFzZXQoKTsKIH0KIAotS1VSTCBFbGVtZW50OjpnZXRVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1VSTCBFbGVtZW50OjpnZXRV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgaWYgKGVsZW1lbnREYXRhKCkpIHsKQEAgLTI1MDEsNyArMjUwMSw3
IEBAIEtVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJpYnV0ZShuYW1lKSkpOwogfQogCi1LVVJMIEVs
ZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CitVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKGVs
ZW1lbnREYXRhKCkpIHsKQEAgLTI1MTEsNyArMjUxMSw3IEBAIEtVUkwgRWxlbWVudDo6Z2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICNlbmRp
ZgogICAgIFN0cmluZyB2YWx1ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhn
ZXRBdHRyaWJ1dGUobmFtZSkpOwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTCh2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY0MDJkNTIu
LjM0MjZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gbV90YWdOYW1lLnByZWZpeCgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IG1fdGFnTmFtZS5uYW1lc3BhY2VVUkkoKTsgfQogCi0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkko
KSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3Qg
T1ZFUlJJREUgRklOQUw7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0Owog
CkBAIC0zODQsOCArMzg0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7Ci0gICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJMIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKaW5kZXggMDNiYjNi
Zi4uNjQ2ZjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUljb25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29u
c3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorSWNvblVSTCBJY29uVVJMOjpkZWZhdWx0SWNv
blVSTChjb25zdCBVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBJY29uVVJMIHJlc3Vs
dCh1cmwsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIHR5cGUpOwogICAgIHJlc3VsdC5t
X2lzRGVmYXVsdEljb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKaW5kZXggMWZiMzU3OC4uNzkx
NmFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIEljb25V
UkxfaAogI2RlZmluZSBJY29uVVJMX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBJ
Y29uVVJMIHsKICAgICBJY29uVHlwZSBtX2ljb25UeXBlOwogICAgIFN0cmluZyBtX3NpemVzOwog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwotICAgIEtVUkwgbV9pY29uVVJMOworICAgIFVSTCBtX2lj
b25VUkw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKQEAgLTYx
LDcgKzYxLDcgQEAgc3RydWN0IEljb25VUkwgewogICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJM
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgSWNvblR5cGUgdHlwZSkKKyAgICBJY29uVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSB0eXBlKQogICAg
ICAgICA6IG1faWNvblR5cGUodHlwZSkKICAgICAgICAgLCBtX3NpemVzKHNpemVzKQogICAgICAg
ICAsIG1fbWltZVR5cGUobWltZVR5cGUpCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBJY29uVVJM
IHsKICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJM
KGNvbnN0IEtVUkwmLCBJY29uVHlwZSk7CisgICAgc3RhdGljIEljb25VUkwgZGVmYXVsdEljb25V
UkwoY29uc3QgVVJMJiwgSWNvblR5cGUpOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IElj
b25VUkwmLCBjb25zdCBJY29uVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCmluZGV4IDQxODkzYTEuLjcxMzJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgdGV4dCkKIAogICAgIG1fbG9hZGluZyA9IHRydWU7CiAKLSAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGVsZW1lbnQsIEtVUkwoKSwgZG9jdW1lbnQu
aW5wdXRFbmNvZGluZygpKTsKKyAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKGVsZW1lbnQsIFVSTCgpLCBkb2N1bWVudC5pbnB1dEVuY29kaW5nKCkpOwogICAgIG1fc2hl
ZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZSgpKTsKICAgICBtX3NoZWV0
LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogICAgIG1fc2hlZXQtPmNvbnRlbnRzKCktPnBh
cnNlU3RyaW5nQXRMaW5lKHRleHQsIG1fc3RhcnRMaW5lTnVtYmVyLnplcm9CYXNlZEludCgpLCBt
X2lzUGFyc2luZ0NoaWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiODllN2QzLi5hYTIxOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTM4LDkgKzExMzgsOSBAQCBEb2N1bWVudCAqTm9kZTo6
b3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvYyA9PSB0aGlzID8gMCA6IGRvYzsK
IH0KIAotS1VSTCBOb2RlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBOb2RlOjpiYXNlVVJJKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpLT5iYXNlVVJJKCkg
OiBLVVJMKCk7CisgICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVS
SSgpIDogVVJMKCk7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNv
bnN0CkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlk
YXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQogICAgICAgICBpdC0+dmFs
dWUtPmludmFsaWRhdGVDYWNoZSgpOwogfQogCi12b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgTm9kZTo6Z2V0U3VicmVzb3Vy
Y2VVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggY2YxNTA3Mi4uNTEzZDZi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91
bmRhcnkuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgi
CisjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
QEAgLTE5MSw5ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogcHNldWRvQXdhcmVGaXJzdENo
aWxkKCkgY29uc3Q7CiAgICAgTm9kZSogcHNldWRvQXdhcmVMYXN0Q2hpbGQoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgYmFzZVVS
SSgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JikgY29uc3Q7CisgICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0OwogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIGFsbCBhY3R1YWxseSByZXR1cm4g
YSBub2RlLCBidXQgdGhpcyBpcyBvbmx5IGltcG9ydGFudCBmb3IgbGFuZ3VhZ2UgYmluZGluZ3Ms
CiAgICAgLy8gd2hpY2ggd2lsbCBhbHJlYWR5IGtub3cgYW5kIGhvbGQgYSByZWYgb24gdGhlIHJp
Z2h0IG5vZGUgdG8gcmV0dXJuLiBSZXR1cm5pbmcgYm9vbCBhbGxvd3MKQEAgLTY2NCw3ICs2NjQs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQqIG9sZERvY3VtZW50KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3QgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3QgeyB9CiAKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhIYXNSYXJlRGF0YUZsYWcpOyB9CiAKQEAgLTczNyw3ICs3MzcsNyBAQCBwcm90ZWN0ZWQ6CiB9
OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFuZCBp
biBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCi1pbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVS
TChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQoraW5saW5lIHZvaWQg
YWRkU3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpCiAgICAgICAgIHVybHMuYWRkKHVybCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGUyODgyNTku
LjUxMDg5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNr
U3R5bGVTaGVldCgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBzeW50aGV0aWMg
WFNMU3R5bGVTaGVldCB0aGF0IGlzIGVtYmVkZGVkLiAgSXQgbmVlZHMgdG8gYmUgYWJsZQogICAg
ICAgICAgICAgLy8gdG8ga2ljayBvZmYgaW1wb3J0L2luY2x1ZGUgbG9hZHMgdGhhdCBjYW4gaGFu
ZyBvZmYgc29tZSBwYXJlbnQgc2hlZXQuCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkgewotICAg
ICAgICAgICAgICAgIEtVUkwgZmluYWxVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2xvY2FsSHJlZik7
CisgICAgICAgICAgICAgICAgVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhy
ZWYpOwogICAgICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJl
ZGRlZCh0aGlzLCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7
CiAgICAgICAgICAgICB9CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb246OnNoZWV0TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NT
dHlsZVNoZWV0KiBzaGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIGlm
ICghaW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CkBAIC0yMTQsNyAr
MjE0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXMKIH0KIAogI2lmIEVOQUJMRShYU0xUKQot
dm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KQordm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAgQVNTRVJU
KG1faXNYU0wpOwogICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUodGhpcywgaHJl
ZiwgYmFzZVVSTCk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCkKICAg
ICBzaGVldC0+c2V0RGlzYWJsZWQobV9hbHRlcm5hdGUpOwogfQogCi12b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdAordm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGlmICgh
c2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCmluZGV4IGRiMjk0NTIuLjQ3MTk2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIGNoZWNrU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CisgICAgdmlydHVhbCB2
b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwog
I2lmIEVOQUJMRShYU0xUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogI2VuZGlmCiAKICAgICBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdm9pZCBwYXJzZVN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzaGVldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5MDAyMGViLi5mNzQ4YWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yODAsNyArMjgwLDcg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjbG9zZU1lc3NhZ2VQb3J0cygpIHsKIAog
Ym9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzYW5pdGl6ZVNjcmlwdEVycm9yKFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQmIGxpbmVOdW1iZXIsIGludCYgY29sdW1uTnVtYmVyLCBTdHJpbmcm
IHNvdXJjZVVSTCwgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgS1VSTCB0YXJn
ZXRVUkwgPSBjb21wbGV0ZVVSTChzb3VyY2VVUkwpOworICAgIFVSTCB0YXJnZXRVUkwgPSBjb21w
bGV0ZVVSTChzb3VyY2VVUkwpOwogICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KHRhcmdldFVSTCkgfHwgKGNhY2hlZFNjcmlwdCAmJiBjYWNoZWRTY3JpcHQtPnBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhzZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBlcnJvck1lc3NhZ2UgPSAiU2NyaXB0IGVycm9yLiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhOWU5ZTNiLi4xYzNlY2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBl
cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1
cml0eUNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VS
TCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1
cml0eUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAK
aW5kZXggNzRkM2UzYi4uZDgzZmRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4
dC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShQYXNzT3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4KICAgICBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKIH0KIAotYm9vbCBT
ZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICAvLyBJZiB3ZSBoYXZlbid0IGluaXRpYWxpemVkIG91ciBzZWN1
cml0eSBvcmlnaW4gYnkgbm93LCB0aGlzIGlzIHByb2JhYmx5CiAgICAgLy8gYSBuZXcgd2luZG93
IGNyZWF0ZWQgdmlhIHRoZSBBUEkgKGkuZS4sIHRoYXQgbGFja3MgYW4gb3JpZ2luIGFuZCBsYWNr
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCmluZGV4IDMyYWUwZGYuLjJkYjVkMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIENvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZs
YWcgewogICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNhdHRyLWlmcmFtZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3gg
ZmxhZ3MuCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTYW5kYm94RmxhZ3Mgc2FuZGJv
eEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7IH0KICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIHsgcmV0dXJuIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5LmdldCgpOyB9CiAKLSAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IFVS
TCYpIGNvbnN0OwogCiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBt
YXNrKTsKICAgICBib29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNrKSBjb25zdCB7IHJl
dHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmNwcAppbmRleCBlNDVmYjgwLi45Y2MzZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVBbGxJ
bmxpbmVTdHlsZVByb3BlcnRpZXMoKQogICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogfQogCi12
b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgaWYgKGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gZWxlbWVudERhdGEoKSA/IGVsZW1l
bnREYXRhKCktPmlubGluZVN0eWxlKCkgOiAwKQogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHModXJscywgZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDBjYzBiOTIuLjE4YzZlOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlYjZmODY0Li5hMzA0YjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMTc0LDEyICsxMTc0LDEyIEBAIHZvaWQgRWRpdG9yOjpz
aW1wbGlmeU1hcmt1cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpCiAgICAgYXBwbHlD
b21tYW5kKFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9k
ZSwgKGVuZE5vZGUpID8gTm9kZVRyYXZlcnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKIH0KIAot
dm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCkpOwogfQogCi12b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCit2b2lkIEVkaXRv
cjo6Y29weVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkw7CiAgICAg
cGFzdGVib2FyZFVSTC51cmwgPSB1cmw7CkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIEVkaXRv
cjo6Y29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gcmVzdWx0LmFic29sdXRlTGlu
a1VSTCgpOworICAgIFVSTCB1cmwgPSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGFiMDllYmIuLmI1YWY3NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtMTI2LDggKzEyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
c3RlQXNQbGFpblRleHQoKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGUoKTsKIAotICAgIHZvaWQg
Y29weVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBjb3B5
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CisgICAg
dm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQg
Y29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CiAg
ICAgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCiAgICAgU3RyaW5nIHJl
YWRQbGFpblRleHRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CkBAIC00MTMsNyArNDEzLDcg
QEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9p
ZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7Ci0gICAgdm9pZCB3cml0
ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggOWRmNTk1Mi4uNWU4YWJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCmluZGV4IGZjNzgxYzIuLmYzNTA5ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcApAQCAtMzcsNyArMzcsNyBA
QCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikK
K3ZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGZkN2YwYWMuLjQ0
YWI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTMzNiw3
ICszMzYsNyBAQCBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVsZW1lbnQsIFJl
ZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomCiAgICAgY2FjaGVkSW1hZ2UgPSB0ZW50
YXRpdmVDYWNoZWRJbWFnZTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFz
dGVib2FyZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggYmZiNmE0Ni4uZGQ0NDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMzg2LDcgKzM4Niw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgU3RyaW5nIHN0cmlu
ZyA9IHRleHQudGV4dDsKIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGlzIDEw
MCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpdIGRvZXMgbm90
IGhhbmRsZQotICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUg
S1VSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICAvLyBhbGwgdGhlIHNhbWUgY2Fz
ZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4K
ICAgICBpZiAodGV4dC5pc1VSTCkKICAgICAgICAgc3RyaW5nID0gY2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCkBAIC0zOTQsNyArMzk0
LDcgQEAgU3RyaW5nIEVkaXRvcjo6cGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVj
b21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAotdm9pZCBFZGl0b3I6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVt
ZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIFBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2U7CiAKQEAgLTQzNyw3ICs0Mzcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgRWRpdG9y
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyKQogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoS1VSTCgpLCBidWZmZXIuZ2V0KCkpOworICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZm
ZXIuZ2V0KCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC01MzUsMTMgKzUzNSwxMyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZElt
YWdlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0CiAgICAgQVNTRVJUKHR5
cGUuY29udGFpbnMoJy8nKSk7CiAgICAgU3RyaW5nIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lv
biA9IHR5cGU7CiAgICAgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uLnJlcGxhY2UoJy8nLCAn
LicpOwotICAgIEtVUkwgaW1hZ2VVUkwgPSBLVVJMKEtVUkwoKSwgIndlYmtpdC1mYWtlLXVybDov
LyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxlbmFtZVdp
dGhFeHRlbnNpb24pOworICAgIFVSTCBpbWFnZVVSTCA9IFVSTChVUkwoKSwgIndlYmtpdC1mYWtl
LXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxl
bmFtZVdpdGhFeHRlbnNpb24pOwogCiAgICAgZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS5jcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShidWZmZXIsIGltYWdlVVJMLCB0eXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmlu
ZygpKSk7CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiti
b29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLnN0cmluZygpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGQyZmZm
OGMuLjUxZWYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVh
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxh
dG9yLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAt
MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50
KiBmcmFnbWVudCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogewogICAgIFZlY3RvcjxBdHRyaWJ1
dGVDaGFuZ2U+IGNoYW5nZXM7CiAKLSAgICBLVVJMIHBhcnNlZEJhc2VVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBiYXNlVVJMKTsKKyAgICBVUkwgcGFyc2VkQmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsIGJh
c2VVUkwpOwogCiAgICAgZm9yIChhdXRvIGVsZW1lbnQgPSBlbGVtZW50RGVzY2VuZGFudHMoZnJh
Z21lbnQpLmJlZ2luKCksIGVuZCA9IGVsZW1lbnREZXNjZW5kYW50cyhmcmFnbWVudCkuZW5kKCk7
IGVsZW1lbnQgIT0gZW5kOyArK2VsZW1lbnQpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNB
dHRyaWJ1dGVzKCkpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxz
KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVBdChpKTsKICAg
ICAgICAgICAgIGlmIChlbGVtZW50LT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmICFhdHRy
aWJ1dGUudmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQo
QXR0cmlidXRlQ2hhbmdlKCYqZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgS1VSTChwYXJzZWRC
YXNlVVJMLCBhdHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBj
aGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFuZ2UoJiplbGVtZW50LCBhdHRyaWJ1dGUubmFtZSgp
LCBVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmluZygpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50KiBkb2N1
bQogICAgIHRhZ2dlZE1hcmt1cC5hcHBlbmQobWFya3VwLnN1YnN0cmluZyhmcmFnbWVudEVuZCkp
OwogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHRhZ2dlZEZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50LCB0YWdnZWRNYXJrdXAudG9TdHJpbmcoKSwgYmFz
ZVVSTCwgcGFyc2VyQ29udGVudFBvbGljeSk7Ci0gICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWRE
b2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICBSZWZQdHI8RG9jdW1l
bnQ+IHRhZ2dlZERvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgdGFn
Z2VkRG9jdW1lbnQtPnRha2VBbGxDaGlsZHJlbkZyb20odGFnZ2VkRnJhZ21lbnQuZ2V0KCkpOwog
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVCZWZvcmVDb250ZXh0OwpAQCAtOTUyLDcgKzk1Miw3IEBA
IFN0cmluZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4g
ZG9jdW1lbnRUeXBlU3RyaW5nKG5vZGUtPmRvY3VtZW50KCkpICsgY3JlYXRlTWFya3VwKHJhbmdl
LCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKIH0KIAotU3RyaW5nIHVybFRvTWFya3VwKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyB1cmxUb01hcmt1cChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmdCdWlsZGVy
IG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5kKCI8YSBocmVmPVwiIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaAppbmRleCBjYTEyMGE0Li4xNTY1YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgUmFuZ2U7CkBA
IC03MCw3ICs3MCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJl
bk9ubHkgPSBJbmNsdWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwCiBTdHJpbmcgY3JlYXRlRnVs
bE1hcmt1cChjb25zdCBOb2RlKik7CiBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBSYW5n
ZSopOwogCi1TdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUpOworU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogCiBTdHJpbmcgZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERvY3VtZW50Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA2NDI1MjY3Li5jNmI0
OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0y
MDMsMTIgKzIwMywxMiBAQCBzdGF0aWMgdm9pZCBkaWRXcml0ZShBc3luY0ZpbGVTdHJlYW0qIHBy
b3h5LCBpbnQgYnl0ZXNXcml0dGVuKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZFdyaXRl
KGJ5dGVzV3JpdHRlbik7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjp3cml0ZShjb25zdCBL
VVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpCit2b2lkIEFzeW5j
RmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpCiB7CiAgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhy
ZWFkVGFzayh0aGlzLCAmQXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZCwgYmxvYlVS
TCwgcG9zaXRpb24sIGxlbmd0aCkpOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGVP
bkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKQordm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFVS
TCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogewogICAgIGludCBi
eXRlc1dyaXR0ZW4gPSBtX3N0cmVhbS0+d3JpdGUoYmxvYlVSTCwgcG9zaXRpb24sIGxlbmd0aCk7
CiAgICAgY2FsbE9uTWFpblRocmVhZChkaWRXcml0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgYnl0ZXNXcml0dGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oCmluZGV4IDY4ZjIzZTkuLjg0OWVhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIAogY2xhc3MgQXN5bmNGaWxlU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8QXN5
bmNGaWxlU3RyZWFtPiB7CiBwdWJsaWM6CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG9wZW5Gb3JXcml0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xvc2UoKTsK
ICAgICB2b2lkIHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIHdyaXRl
KGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7Cisg
ICAgdm9pZCB3cml0ZShjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50
IGxlbmd0aCk7CiAgICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pOwogCiAgICAg
Ly8gU3RvcHMgdGhlIHByb3h5IGFuZCBzY2hlZHVsZXMgaXQgdG8gYmUgZGVzdHJ1Y3RlZC4gQWxs
IHRoZSBwZW5kaW5nIHRhc2tzIHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIGZpbGUgc3RyZWFtIHdp
bGwgYmUgY2xvc2VkLgpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkZv
cldyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBjbG9zZU9u
RmlsZVRocmVhZCgpOwogICAgIHZvaWQgcmVhZE9uRmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGlu
dCBsZW5ndGgpOwotICAgIHZvaWQgd3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVS
TCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIHdyaXRlT25GaWxl
VGhyZWFkKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KTsKICAgICB2b2lkIHRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbik7CiAK
ICAgICBSZWZQdHI8RmlsZVN0cmVhbT4gbV9zdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApp
bmRleCBjMDM3ODRmLi40NTQ3MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTU0LDIw
ICs1NCwyMCBAQCBlbnVtIFNsaWNlSGlzdG9ncmFtRW51bSB7CiAKIGNsYXNzIEJsb2JVUkxSZWdp
c3RyeSA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0
cnkmIHJlZ2lzdHJ5KCk7CiB9OwogCiAKLXZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVS
TChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lz
dHJhYmxlKiBibG9iKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgcHVibGljVVJMLCBVUkxSZWdpc3RyYWJsZSogYmxv
YikKIHsKICAgICBBU1NFUlQoJmJsb2ItPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbiwgcHVibGljVVJMLCBzdGF0
aWNfY2FzdDxCbG9iKj4oYmxvYiktPnVybCgpKTsKIH0KIAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6
OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVu
cmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBCbG9iOjpC
bG9iKFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhLCBsb25nIGxvbmcgc2l6ZSkKICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYmxv
YkRhdGEpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKK0Jsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgOiBtX3R5cGUoQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oCmluZGV4IDIxYjMxYjQuLjAzNTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBA
IC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEJsb2JfaAogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRm9yIGRl
c2VyaWFsaXphdGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3Qg
S1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChCbG9iOjpp
c05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmxvYihzcmNVUkwsIHR5cGUsIHNpemUpKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QmxvYigpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlcm5hbFVSTDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcm5hbFVSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9zaXplKTsgfQpA
QCAtOTEsMTIgKzkxLDEyIEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFBhc3NPd25QdHI8QmxvYkRh
dGE+LCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgotICAg
IEJsb2IoY29uc3QgS1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBz
aXplKTsKKyAgICBCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxv
bmcgbG9uZyBzaXplKTsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmlu
ZyB0byB0aGUgYmxvYiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVz
CiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJM
IGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8g
YW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNl
ZCBmb3IgdGhvc2UgcHVycG9zZXMuCi0gICAgS1VSTCBtX2ludGVybmFsVVJMOworICAgIFVSTCBt
X2ludGVybmFsVVJMOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggNjU5MDA3Yi4uM2RlYmYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRl
ICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxOCArNDEsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBjaGFyIEJsb2JVUkw6OmtCbG9iUHJvdG9jb2xbXSA9ICJibG9iIjsKIAotS1VS
TCBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
KQorVVJMIEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4pCiB7CiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAgICByZXR1cm4gY3JlYXRl
QmxvYlVSTChzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CiB9CiAKLUtVUkwgQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKQorVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKIHsK
ICAgICByZXR1cm4gY3JlYXRlQmxvYlVSTCgiYmxvYmludGVybmFsOi8vIik7CiB9CiAKLVN0cmlu
ZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEJsb2JVUkw6Omdl
dE9yaWdpbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Js
b2JQcm90b2NvbCkpOwogCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBCbG9iVVJMOjpnZXRPcmln
aW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0
YXJ0SW5kZXgsIGVuZEluZGV4IC0gc3RhcnRJbmRleCAtIDEpOwogfQogCi1TdHJpbmcgQmxvYlVS
TDo6Z2V0SWRlbnRpZmllcihjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgQmxvYlVSTDo6Z2V0SWRl
bnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Js
b2JQcm90b2NvbCkpOwogCkBAIC02OSwxMSArNjksMTEgQEAgU3RyaW5nIEJsb2JVUkw6OmdldElk
ZW50aWZpZXIoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3Ry
aW5nKHN0YXJ0SW5kZXgpOwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUJsb2JVUkwoY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcpCitVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICBBU1NFUlQoIW9yaWdpblN0cmluZy5pc0VtcHR5
KCkpOwogICAgIFN0cmluZyB1cmxTdHJpbmcgPSAiYmxvYjoiICsgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhvcmlnaW5TdHJpbmcpICsgJy8nICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICBy
ZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAyY2FlYzI5Li5jN2ZhNGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBC
bG9iVVJMX2gKICNkZWZpbmUgQmxvYlVSTF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsMTQgKzQ4LDE0IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogLy8gYmUgdXNlZCB3aXRoIFJlc291cmNlSGFuZGxlIG9yIEZp
bGVSZWFkZXIuCiBjbGFzcyBCbG9iVVJMIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgS1VSTCBjcmVh
dGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qKTsKLSAgICBzdGF0aWMgS1VSTCBjcmVhdGVJbnRl
cm5hbFVSTCgpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IEtVUkwmKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIGdldElkZW50aWZpZXIoY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBV
UkwgY3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIFVSTCBjcmVh
dGVJbnRlcm5hbFVSTCgpOworICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IFVSTCYp
OworICAgIHN0YXRpYyBTdHJpbmcgZ2V0SWRlbnRpZmllcihjb25zdCBVUkwmKTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogYmxvYlByb3RvY29sKCkgeyByZXR1cm4ga0Jsb2JQcm90b2NvbDsgfQog
CiBwcml2YXRlOgotICAgIHN0YXRpYyBLVVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcpOworICAgIHN0YXRpYyBVUkwgY3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcm
IG9yaWdpblN0cmluZyk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIga0Jsb2JQcm90b2NvbFtdOwog
ICAgIEJsb2JVUkwoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA1NGU1YTkw
Li43NGIwMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3Rh
dGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhNZXRhZGF0
YShjb25zdCBTdHJpbmcmIGZpbGUKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFzZSgpOwogfQog
Ci1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVt
VVJMKGNvbnN0IEtVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRh
dGEpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lz
dGVtVVJMKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKIHsKICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0
ZSgpOwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50VHlwZUZyb21GaWxl
TmFtZShmaWxlU3lzdGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtub3duQ29udGVudFR5cGVzKSk7
CkBAIC0xMDcsNyArMTA3LDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRl
bnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkKIHsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQorRmlsZTo6Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgOiBCbG9iKHVybCwgdHlwZSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKICNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCkBAIC0xNDIsNyArMTQyLDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiB9CiAKLUZpbGU6OkZp
bGUoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0
YSkKK0ZpbGU6OkZpbGUoY29uc3QgVVJMJiBmaWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRh
dGEmIG1ldGFkYXRhKQogICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1VUkwo
ZmlsZVN5c3RlbVVSTCwgbWV0YWRhdGEpLCBtZXRhZGF0YS5sZW5ndGgpCiAgICAgLCBtX2ZpbGVT
eXN0ZW1VUkwoZmlsZVN5c3RlbVVSTCkKICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggYWJlNTU0NC4uNWViNmY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEZpbGVNZXRhZGF0YTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIEZpbGUg
OiBwdWJsaWMgQmxvYiB7CiBwdWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgc3JjVVJMLCB0eXBlKSk7
CiAgICAgfQpAQCAtNjgsMTIgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlKG5hbWUsIG1ldGFkYXRhKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZT4gY3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNy
ZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHVybCwg
bWV0YWRhdGEpKTsKICAgICB9CiAKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGVTeXN0ZW1VUkw7IH0KKyAgICBVUkwgZmlsZVN5c3RlbVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZVN5c3RlbVVSTDsgfQogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUgYSBmaWxl
IHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNz
b2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRl
ZCBpbiB0aGUgcGF0aC4KQEAgLTEwNSwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAgICAgRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsKIAogICAgIC8vIEZv
ciBkZXNlcmlhbGl6YXRpb24uCi0gICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29udGVudFR5cGVMb29rdXBQ
b2xpY3kpOwogCiAjIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgRmlsZU1ldGFkYXRhJik7Ci0gICAgRmlsZShjb25zdCBLVVJMJiBmaWxl
U3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmKTsKKyAgICBGaWxlKGNvbnN0IFVSTCYgZmls
ZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBoYXMgYSB2YWxpZCBzbmFwc2hvdCBtZXRhZGF0YSAoaS5lLiBtX3NuYXBzaG90U2l6
ZSA+PSAwKS4KICAgICBib29sIGhhc1ZhbGlkU25hcHNob3RNZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc25hcHNob3RTaXplID49IDA7IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX25hbWU7CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgS1VSTCBt
X2ZpbGVTeXN0ZW1VUkw7CisgICAgVVJMIG1fZmlsZVN5c3RlbVVSTDsKIAogICAgIC8vIElmIG1f
c25hcHNob3RTaXplIGlzIG5lZ2F0aXZlIChpbml0aWFsaXplZCB0byAtMSBieSBkZWZhdWx0KSwg
dGhlIHNuYXBzaG90IG1ldGFkYXRhIGlzIGludmFsaWQgYW5kIHdlIHJldHJpZXZlIHRoZSBsYXRl
c3QgbWV0YWRhdGEgc3luY2hyb25vdXNseSBpbiBzaXplKCksIGxhc3RNb2RpZmllZFRpbWUoKSBh
bmQgc2xpY2UoKS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBhcmUg
dXNlZCBkaXJlY3RseSBpbiB0aG9zZSBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCAyNGYxZTdmLi44MGUxMzQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJM
RShCTE9CKQogCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTA2LDcg
KzEwNiw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgU3Ry
aW5nIG1fZGF0YVR5cGU7CiAKLSAgICBLVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBVUkwgbV91
cmxGb3JSZWFkaW5nOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKIAog
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxMGJmYjJlLi4y
MGRjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKQEAgLTQ5LDI2ICs0OSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgQmxvYlJlZ2lzdHJ5Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJM
JiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogICAgICAgICA6IHVybCh1cmwu
Y29weSgpKQogICAgICAgICAsIGJsb2JEYXRhKGJsb2JEYXRhKQogICAgIHsKICAgICAgICAgdGhp
cy0+YmxvYkRhdGEtPmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CiAgICAgfQogCi0gICAgQmxv
YlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKKyAg
ICBCbG9iUmVnaXN0cnlDb250ZXh0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkK
ICAgICAgICAgOiB1cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBzcmNVUkwoc3JjVVJMLmNvcHko
KSkKICAgICB7CiAgICAgfQogCi0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1
cmwpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCkKICAgICAgICAgOiB1
cmwodXJsLmNvcHkoKSkKICAgICB7CiAgICAgfQogCi0gICAgS1VSTCB1cmw7Ci0gICAgS1VSTCBz
cmNVUkw7CisgICAgVVJMIHVybDsKKyAgICBVUkwgc3JjVVJMOwogICAgIE93blB0cjxCbG9iRGF0
YT4gYmxvYkRhdGE7CiB9OwogCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTFRhc2sodm9pZCogY29udGV4dCkKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5ibG9i
RGF0YS5yZWxlYXNlKCkpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRh
KQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewogICAgIGlmIChpc01haW5U
aHJlYWQoKSkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxv
YkRhdGEpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZy
b21UYXNrKHZvaWQqIGNvbnRleHQpCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgLy8g
SWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29udGV4dCB3
aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1hcHBpbmcg
YmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJldHJpdmVk
IHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4gJiYgQmxv
YlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CiB9CiAK
LXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VS
TCYgdXJsKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51
bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7CkBAIC0xMzYs
MjYgKzEzNiwyNiBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1
cmwpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpn
ZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG9yaWdpbk1hcCgp
LT5nZXQodXJsLnN0cmluZygpKTsKIH0KIAogI2Vsc2UKIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+
KQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgUGFzc093blB0cjxCbG9iRGF0YT4pCiB7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQogewogfQogCi12b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKQordm9pZCBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKQogewog
fQogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpn
ZXRDYWNoZWRPcmlnaW4oY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJikKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgKaW5kZXggZjY2YmQxMC4uODNlNTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTM3LDE4ICszNywxOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iRGF0YTsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPik7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCk7Ci0g
ICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPik7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUgZ2l2
ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQgdGhl
IHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTAogICAgIC8v
IGluIHRoZSBibG9iIFVSTC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCBj
NTI4Y2ExLi5iODUzMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQ2FjaGVkRnJhbWU6OmNsZWFyKCkKICAgICBtX2RvY3Vt
ZW50ID0gMDsKICAgICBtX3ZpZXcgPSAwOwogICAgIG1fbW91c2VQcmVzc05vZGUgPSAwOwotICAg
IG1fdXJsID0gS1VSTCgpOworICAgIG1fdXJsID0gVVJMKCk7CiAKICAgICBtX2NhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmNsZWFyKCk7CiAgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAppbmRleCA5ODM4ZjczLi4zODY0Y2E0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAj
ZGVmaW5lIENhY2hlZEZyYW1lX2gKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURh
dGEuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIGJvb2wgaXNNYWluRnJhbWUoKSB7IHJldHVybiBtX2lzTWFpbkZyYW1l
OyB9CiAKIHByb3RlY3RlZDoKQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAgICBSZWZQdHI8RnJhbWVWaWV3
PiBtX3ZpZXc7CiAgICAgUmVmUHRyPE5vZGU+IG1fbW91c2VQcmVzc05vZGU7Ci0gICAgS1VSTCBt
X3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgT3duUHRyPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4g
bV9jYWNoZWRGcmFtZVNjcmlwdERhdGE7CiAgICAgT3duUHRyPENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPiBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOwogICAgIGJvb2wgbV9pc01haW5GcmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggMWNiNTZiZi4uYjRmMDVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cgogICAgIGljb25EYXRhYmFzZSgpLnJldGFpbklj
b25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKIH0KIAotSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFy
ZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgOiBtX3VybFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAg
LCBtX29yaWdpbmFsVVJMU3RyaW5nKHVybC5zdHJpbmcoKSkKICAgICAsIG1fdGFyZ2V0KHRhcmdl
dCkKQEAgLTI0MCwxNCArMjQwLDE0IEBAIGRvdWJsZSBIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWRU
aW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0VmlzaXRlZFRpbWU7CiB9CiAKLUtVUkwgSGlz
dG9yeUl0ZW06OnVybCgpIGNvbnN0CitVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CisgICAgcmV0dXJu
IFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsU3RyaW5nKTsKIH0KIAotS1VSTCBIaXN0b3J5SXRl
bTo6b3JpZ2luYWxVUkwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX29yaWdpbmFsVVJMU3Ry
aW5nKTsKKyAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmlu
Zyk7CiB9CiAKIGNvbnN0IFN0cmluZyYgSGlzdG9yeUl0ZW06OnJlZmVycmVyKCkgY29uc3QKQEAg
LTI4Miw3ICsyODIsNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiAgICAgbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKHRoaXMpOwogfQog
Ci12b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBIaXN0b3J5
SXRlbTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
dGhpcyk7CiAgICAgc2V0VVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKaW5kZXggNTczYzFiMS4uMGMzNDg4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKQEAgLTgxLDcgKzgxLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSh1
cmxTdHJpbmcsIHRpdGxlLCBhbHRlcm5hdGVUaXRsZSwgbGFzdFZpc2l0ZWQpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhp
c3RvcnlJdGVtKHVybCwgdGFyZ2V0LCBwYXJlbnQsIHRpdGxlKSk7CiAgICAgfQpAQCAtMTA5LDgg
KzEwOSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKCkgY29u
c3Q7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiBwYXJlbnQoKSBjb25zdDsKLSAgICBLVVJMIHVy
bCgpIGNvbnN0OwotICAgIEtVUkwgb3JpZ2luYWxVUkwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkg
Y29uc3Q7CisgICAgVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1RhcmdldEl0ZW0oKSBjb25zdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXREb2N1bWVudFN0YXRlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9p
ZCBjbGVhckRvY3VtZW50U3RhdGUoKTsKIAotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsK
KyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHNldFVSTFN0cmluZyhjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc2V0UmVmZXJyZXIoY29uc3QgU3RyaW5nJik7CkBAIC0yMjIsNyArMjIyLDcg
QEAgcHJpdmF0ZToKICAgICBIaXN0b3J5SXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQp
OwogICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQp
OwotICAgIEhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBIaXN0
b3J5SXRlbShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0
cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGV4cGxpY2l0IEhpc3Rv
cnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcAppbmRleCBjNzE2NGNmLi4zMTA2MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuY3BwCkBAIC05NSw4ICs5NSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIHJldHVybiAx
IDw8IE5vRG9jdW1lbnRMb2FkZXI7CiAgICAgfQogCi0gICAgS1VSTCBjdXJyZW50VVJMID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwotICAgIEtVUkwgbmV3VVJMID0g
ZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2Fk
ZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpIDogS1VSTCgpOworICAgIFVS
TCBjdXJyZW50VVJMID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwor
ICAgIFVSTCBuZXdVUkwgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpID8gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkg
OiBVUkwoKTsKICAgICBpZiAoIW5ld1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIFBDTE9HKCIgRGV0
ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCIsIGN1cnJl
bnRVUkwuc3RyaW5nKCksICIpIHRvICgiLCBuZXdVUkwuc3RyaW5nKCksICIpOiIpOwogICAgIGVs
c2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lv
bihQYWdlKiBwYWdlKQogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVz
IHRoYXQgaGF2ZSBhY3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAocGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgY3VycmVudFVSTCA9IHBh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBwYWdlLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKKyAgICBVUkwg
Y3VycmVudFVSTCA9IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkg
PyBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IFVS
TCgpOwogICAgIGlmIChjdXJyZW50VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGFlMzY5MzguLmFjOWU3NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAg
LTUyLDcgKzUyLDcgQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEIKIAogU3RyaW5nIERPTVVSTDo6
Y3JlYXRlUHVibGljVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKIHsKLSAgICBLVVJMIHB1YmxpY1VS
TCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGlj
VVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChw
dWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb24KICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3Ry
aW5nKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KHVybCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICByZXF1
ZXN0LnNldENhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigp
LT5jYWNoZVBhcnRpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCmluZGV4IGIzNTgyNjMuLjdkMjE0
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBET01VUkxf
aAogI2RlZmluZSBET01VUkxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA1YmFhNGM4Li45NDIxMzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNDI1LDcgKzQyNSw3IEBA
IHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgSFRNTERvY3Vt
ZW50UGFyc2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVj
dG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorRlRQRGlyZWN0b3J5
RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggZTdlNTJm
Ny4uMGQ5MTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
aApAQCAtMzMsMTMgKzMzLDEzIEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogICAgIAogY2xh
c3MgRlRQRGlyZWN0b3J5RG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVj
dG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUs
IHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFt
ZSosIGNvbnN0IEtVUkwmKTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0
IFVSTCYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCk7CiB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRl
eCAyNGEzNzM4Li5lMjE1Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRGb3JtU3RydWN0
dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nQnVpbGRlCiAKIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGZvcm1TaWduYXR1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtKQog
ewotICAgIEtVUkwgYWN0aW9uVVJMID0gZm9ybS5nZXRVUkxBdHRyaWJ1dGUoYWN0aW9uQXR0cik7
CisgICAgVVJMIGFjdGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0dHIpOwog
ICAgIC8vIFJlbW92ZSB0aGUgcXVlcnkgcGFydCBiZWNhdXNlIGl0IG1pZ2h0IGNvbnRhaW4gdm9s
YXRpbGUgcGFyYW1ldGVycyBzdWNoCiAgICAgLy8gYXMgYSBzZXNzaW9uIGtleS4KICAgICBhY3Rp
b25VUkwuc2V0UXVlcnkoU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAppbmRleCA3ODRiYjBlLi4xOWQ2NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgSFRNTEFuY2hv
ckVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShocmVm
QXR0cik7CiB9CiAKLUtVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25zdAorVVJMIEhU
TUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRl
KGhyZWZBdHRyKSkpOwogfQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxl
bWVudDo6aGFzaCgpIGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJs
ID0gaHJlZigpOwogICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCiAgICAgICAgIHVybC5zZXRGcmFn
bWVudElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKICAgICBlbHNlCkBAIC0zNTEsNyAr
MzUxLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZh
bHVlKQogCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhvc3QoKSBjb25zdAogewotICAgIGNv
bnN0IEtVUkwmIHVybCA9IGhyZWYoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGhyZWYoKTsKICAg
ICBpZiAodXJsLmhvc3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCiAgICAgICAgIHJldHVybiB1
cmwuaG9zdCgpOwogICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKSwg
dXJsLnByb3RvY29sKCkpKQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVy
bCA9IGhyZWYoKTsKICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhv
c3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhy
ZWYoKTsKICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDIzLDcgKzQyMyw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cGF0aG5hbWUo
KSBjb25zdAogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQYXRobmFtZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVm
KCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC00NDUsNyArNDQ1LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwb3J0KCkgY29uc3QK
IAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYg
KCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ2OCw3ICs0
NjgsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIAogdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwogICAgIHVybC5z
ZXRQcm90b2NvbCh2YWx1ZSk7CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtNDg3
LDcgKzQ4Nyw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6b3JpZ2luKCkgY29uc3QKIAog
dm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBTdHJp
bmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2
YWx1ZTsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxl
YWsgdG8gdGhlIGhhc2guCiAgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExp
dGVyYWwoJyMnLCAiJTIzIikpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgSFRNTEFuY2hvckVs
ZW1lbnQ6OmlzTGl2ZUxpbmsoKSBjb25zdAogICAgIHJldHVybiBpc0xpbmsoKSAmJiB0cmVhdExp
bmtBc0xpdmVGb3JFdmVudFR5cGUobV93YXNTaGlmdEtleURvd25Pbk1vdXNlRG93biA/IE1vdXNl
RXZlbnRXaXRoU2hpZnRLZXkgOiBNb3VzZUV2ZW50V2l0aG91dFNoaWZ0S2V5KTsKIH0KIAotdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJM
KQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRp
b25VUkwpCiB7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUocGluZ0F0dHIpIHx8ICFkb2N1bWVudCgp
LnNldHRpbmdzKCkgfHwgIWRvY3VtZW50KCkuc2V0dGluZ3MoKS0+aHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIEhUTUxB
bmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCogZXZlbnQpCiAgICAgU3RyaW5nQnVpbGRl
ciB1cmw7CiAgICAgdXJsLmFwcGVuZChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
ZmFzdEdldEF0dHJpYnV0ZShocmVmQXR0cikpKTsKICAgICBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBv
c2l0aW9uKHVybCwgZXZlbnQpOwotICAgIEtVUkwga3VybCA9IGRvY3VtZW50KCkuY29tcGxldGVV
UkwodXJsLnRvU3RyaW5nKCkpOworICAgIFVSTCBrdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TCh1cmwudG9TdHJpbmcoKSk7CiAKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAg
IGlmIChoYXNBdHRyaWJ1dGUoZG93bmxvYWRBdHRyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCmluZGV4IGY4MmY0MGYuLmY2Yjc5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+SFRNTEFuY2hvckVsZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0Owor
ICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CkBAIC0xMjAsNyAr
MTIwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZF
UlJJREUgRklOQUw7CiAgICAgdmlydHVhbCBib29sIGRyYWdnYWJsZSgpIGNvbnN0OwogCi0gICAg
dm9pZCBzZW5kUGluZ3MoY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2Vu
ZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCiAgICAgdm9pZCBoYW5kbGVDbGlj
ayhFdmVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXgg
MWZjOGQ2My4uODQyYjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFz
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNw
cApAQCAtNzcsNyArNzcsNyBAQCBTdHJpbmcgSFRNTEJhc2VFbGVtZW50Ojp0YXJnZXQoKSBjb25z
dAogICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCi1LVVJMIEhU
TUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CitVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkg
Y29uc3QKIHsKICAgICAvLyBUaGlzIGRvZXMgbm90IHVzZSB0aGUgZ2V0VVJMQXR0cmlidXRlIGZ1
bmN0aW9uIGJlY2F1c2UgdGhhdCB3aWxsIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50
J3MgYmFzZSBVUkw7CiAgICAgLy8gYmFzZSBlbGVtZW50cyBsaWtlIHRoaXMgb25lIGNhbiBiZSB1
c2VkIHRvIHNldCB0aGF0IGJhc2UgVVJMLiBUaHVzIHdlIG5lZWQgdG8gcmVzb2x2ZSByZWxhdGl2
ZSB0byB0aGUgZG9jdW1lbnQncwpAQCAtODcsMTIgKzg3LDEyIEBAIEtVUkwgSFRNTEJhc2VFbGVt
ZW50OjpocmVmKCkgY29uc3QKICAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBkb2N1bWVudCgpLnVybCgpOwogCi0gICAgS1VSTCB1cmwgPSAhZG9jdW1lbnQo
KS5kZWNvZGVyKCkgPwotICAgICAgICBLVVJMKGRvY3VtZW50KCkudXJsKCksIHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSkpIDoKLSAgICAgICAgS1VSTChk
b2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmli
dXRlVmFsdWUpLCBkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgVVJMIHVy
bCA9ICFkb2N1bWVudCgpLmRlY29kZXIoKSA/CisgICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgp
LCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpKSA6Cisg
ICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYXR0cmlidXRlVmFsdWUpLCBkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7
CiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAg
ICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiB1cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQmFzZUVsZW1lbnQuaAppbmRleCBiYzYzZDRmLi4wY2RlOWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJhc2VFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgSFRNTEJhc2VFbGVt
ZW50IEZJTkFMIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IDM5Y2IwN2IuLjJmM2VhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTMyNyw3ICszMjcs
NyBAQCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxXaWR0aCgpCiAgICAgcmV0dXJuIGFkanVz
dEZvclpvb20odmlldy0+Y29udGVudHNXaWR0aCgpLCAqZnJhbWUpOwogfQogCi12b2lkIEhUTUxC
b2R5RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdAordm9pZCBIVE1MQm9keUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oCmluZGV4IDgzMGY5MTYuLmJlYTQyMzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwLi4zMzhmNDZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAjaW5j
bHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50
OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFz
c2VzKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaAppbmRleCAyNWM0YjU4Li4wNDc5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
VE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAg
ICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5z
aXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
SFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IDAp
OworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFn
cyA9IDApOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzU0N2U0Ni4uZWY2
M2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNv
dXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAot
dm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAg
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCAyZTk5ZTJjLi43
Zjg2NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5D
cmVhdGlvbk9wdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2
b2lkIHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCAzMDAxOTJkLi5iODFhYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6aXNVUkxBbGxvd2VkKCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChtX1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9
IGRvY3VtZW50KCkuY29tcGxldGVVUkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZh
U2NyaXB0KGNvbXBsZXRlVVJMKSkgeyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0
aGlzLT5jb250ZW50RG9jdW1lbnQoKTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OmxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNk
b2NBdHRyKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3Jj
ZG9jIik7CisgICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9j
Iik7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0
dHIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmlu
ZGV4IDMxYTU0ZjcuLjIzMDMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MRnJhbWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewog
cHVibGljOgotICAgIEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBj
b25zdDsKICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVh
bCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGlu
ZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5
OC4uMjVmNTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBA
IC0zMDksNyArMzA5LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZh
bHVlKQogICAgIHNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkp
OwogfQogCi1LVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTEltYWdl
RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgSFRN
TEltYWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LmltYWdlQ29tcGxldGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5k
ZXggNzQ3OGNlNC4uN2ZjN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsK
IAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxlKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNTRkOTFm
MC4uZjVmZTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWdu
ZWQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldFNpemUoc2l6ZSk7CiB9CiAK
LUtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBIVE1MSW5wdXRFbGVtZW50
OjpzcmMoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGZhc3RH
ZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQp
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggZGE4ZThlNS4uOWEzMGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xh
c3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBJY29uOwogY2xhc3MgSW5wdXRUeXBlOwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsK
IHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwogCkBAIC0yMTQsNyArMjE0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2l6ZSh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRTaXplKHVu
c2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVS
TCBzcmMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50IG1heExlbmd0aCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdl
Q2FjaGUoKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0
OwogCiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0
ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCmluZGV4IGIzMzk4NjguLmM5MDhkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cHJvY2VzcygpCiAgICAgfQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93
ZXIoKTsKLSAgICBLVVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsK
KyAgICBVUkwgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAg
aWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMt
PnRvU3RyaW5nKCksIHVybCwgJmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
CiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhU
TUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5
bGVTaGVldCogY2FjaGVkU3R5bGVTaGVldCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hl
ZXQpCiB7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0
KTsKQEAgLTM5NSw3ICszOTUsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0
ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29u
c3QKK1VSTCBIVE1MTGlua0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcg
KzQyNSw3IEBAIFN0cmluZyBIVE1MTGlua0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fc2l6ZXMtPnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0
Cit2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKaW5kZXggMGJhMzUwZi4uZGNjMDgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxMaW5rRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0Vs
ZW1lbnQ+IExpbmtFdmVudFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1M
TGlua0VsZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFy
Z2V0KCkgY29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQp
OwogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNp
bmdDaGlsZHJlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBiNTlhMjllLi41OWFjNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVuc2ln
bmVkJiB2YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAot
c3RhdGljIFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3RhdGlj
IFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBAIC03
NDAsNyArNzQwLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRpYUVs
ZW1lbnQ6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOwog
fQogCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
K1N0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzVHlwZShDb250ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsKICAg
ICBTdHJpbmcgY2FuUGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdG
cm9tU3JjQXR0cjsKIAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlz
IHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cK
LSAgICAgICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIp
OworICAgICAgICBVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRy
KTsKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3Jj
JyIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRT
b3VyY2VDaGlsZCgpCiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygpKSk7
CiAgICAgU3RyaW5nIGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4dFNv
dXJjZUNoaWxkKCZjb250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVSTCBt
ZWRpYVVSTCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0ZW0s
IENvbXBsYWluKTsKICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3YWl0
Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAsMTgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBsb2Fk
UmVzb3VyY2UobWVkaWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0aWMg
S1VSTCBjcmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3N0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBhIGZ1
bmN0aW9uIHRvIGNyZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBUaGlz
IGZ1bmN0aW9uCi0gICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0aCB1
c2VzIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAgLy8g
VVJMIHNob3VsZCBoYXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRoLCBi
dXQgaXQgZG9lcyBub3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUgYmVj
YXVzZSBVUkw6OnNldFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3aGlj
aCBpdCBub3RlcwogICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAnPycu
IFRoaXMgZnVuY3Rpb24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8gYXBw
IGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZpbGVO
YW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBMQVRG
T1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtD
RlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkp
OworICAgIFVSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAgICBV
UkwgdXJsOwogCiAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKICAg
ICB1cmwuc2V0UGF0aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJMIGNy
ZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHJldHVybiB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291
cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJj
ZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFs
VVJMLCBDb21wbGFpbikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYg
Y29udGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0aWFs
VVJMOworICAgIFVSTCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigp
LndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFp
bGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1Mjcs
NyArMTUyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRl
eHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRV
UkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVU
b0xvYWRVUkwoY29uc3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlk
KQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlz
IGludmFsaWQiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE5
ODMsNyArMTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlFcnJv
cihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJM
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5
ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0
IFVSTCYgZGVmYXVsdFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsK
ICAgICBpbml0aWFsaXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMxODks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tF
bGVtZW50KiB0cmFja0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRyYWNr
RWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFj
a0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBVUkwg
dXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAg
ICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAnc3Jj
JyBpcyAlcyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0K
ICNlbmRpZgpAQCAtMzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZl
UG90ZW50aWFsU291cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3Vy
cmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBu
ZXh0Tm9kZSA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRVUkwg
PSBzZWxlY3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4dFVS
TCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9jdXJy
ZW50U291cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9kZVRv
Q29uc2lkZXIgPSBuZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVSTC5p
c1ZhbGlkKCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNo
aWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRV
UkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5l
eHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lzdGVt
LCBJbnZhbGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlm
IHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICszNDQ2
LDEwIEBAIEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRl
bnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cpCiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNl
Q2hpbGQgLT4gMHgwMDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsK
KyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7CisgICAg
VVJMIG1lZGlhVVJMOwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAgIFN0
cmluZyB0eXBlOwogICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBjaGVj
a19hZ2FpbjoKICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50U291
cmNlTm9kZS5nZXQoKSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRpYSht
ZWRpYVVSTCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5Vc2VT
b3VyY2VFbGVtZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNvdXJj
ZUVsZW1lbnQgPyBtZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcgKzM1
NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VF
bGVtZW50KiBzb3VyY2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFz
VGFnTmFtZShzb3VyY2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25F
bXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+Z2V0
Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5n
TWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyArMzYw
MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNl
RWxlbWVudCogc291cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhh
c1RhZ05hbWUoc291cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UtPmdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dn
aW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEsNyAr
NDMxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShXZWJN
ZWRpYVBsYXllclByb3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94
eShwcm94eSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJh
bXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1
ZXMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYgdXJs
LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAgICAg
UmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291cmNl
Q2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KIApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywg
VmUKIAogICAgIGlmIChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8gPSB0b0hUTUxWaWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0g
dmlkZW8tPnBvc3RlckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRlby0+
cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZy
YW1lICYmIGZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwp
KSB7CiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVu
dF9wb3N0ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5n
KCkpOwpAQCAtNDM1NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVN
ZWRpYVBsYXllclByb3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZU1lZGlhUGxheWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZh
bHVlczsKIApAQCAtNDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1O
YW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTogUmVu
YW1lIGt1cmwgdG8gc29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOworICAg
IFVSTCBrdXJsOwogCiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJs
LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9jdW1l
bnQoKS5mcmFtZSgpIGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGNmNmU4OTYuLmQ1NWMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVHJhY2tF
bGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsK
IGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAtMTM4LDcgKzEzOCw3
IEBAIHB1YmxpYzoKIAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0
cmluZyYpOwotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRTcmM7IH0KKyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRTcmM7IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwg
TkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAg
TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1
YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKICAg
ICB2b2lkIGxvYWQoKTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29uc3QgS1VSTCYgPSBL
VVJMKCkpIGNvbnN0OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0gVVJM
KCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0OwpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRXaWRn
ZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9IG5l
ZWRXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5
ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1lZGlh
UGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAgIHZvaWQgZ2V0UGx1
Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxT
dHJpbmc+JiB2YWx1ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1cmws
IFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAgdm9p
ZCBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2lu
Q3JlYXRpb25PcHRpb24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07
Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVUkxBY3Rpb24p
OworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFsaWRVUkxBY3Rpb24p
OwogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRN
ZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5
RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWdu
ZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQg
Y2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0
VVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVk
aWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0
aCkgT1ZFUlJJREU7CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgLy8gbG9hZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotICAgIHZv
aWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50VHlw
ZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVkdWxlTmV4dFNvdXJj
ZUNoaWxkKCk7CiAgICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCB1c2Vy
Q2FuY2VsbGVkTG9hZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAgICBL
VVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmluZyoga2V5U3lzdGVt
LCBJbnZhbGlkVVJMQWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRl
bnRUeXBlKiwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAgdm9p
ZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKQEAgLTYz
NCw3ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsK
ICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZU1heGltdW07Ci0gICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1fY3VycmVudFNyYzsK
IAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGIzYzA0N2EuLjJmZDM4YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgYm9v
bCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oCmluZGV4IDQ0MTUzNTUuLmNjZTNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVu
ZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBs
dWdpbkNyZWF0aW9uT3B0aW9uKTsKICAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5kZXggNjk4YmExMi4uZDEwZjQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShhdHRyaWJ1dGUpOwogfQogCi12b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRN
TFBhcmFtRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFy
YW1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRl
eCBlNjJmODRhLi4zMmM2MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhbUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
aApAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0OwogfTsKIAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCA0Y2FmNGM5Li5hNmZkYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBl
RnJvbURhdGFVUkwobV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwobV91cmwpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChtX3VybCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
b2JqZWN0Q29udGVudFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBl
KCkKIC8vIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAg
IEtVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJM
IGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNv
bnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAg
ICAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2lu
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFT
U0VSVChkb2N1bWVudCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVS
TCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0
ZWRVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMSw3ICs0MzEsNyBA
QCBzdGF0aWMgdm9pZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQq
IHBsdWdJbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAg
aWYgKHBsdWdJbkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAg
ICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9h
ZGVkVVJMID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBVUkwmIGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1l
bnQtPmxvYWRlZE1pbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9
PSBsb2FkZWRVUkwuaG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01
NzEsNyArNTcxLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFu
Z2VGb3JTbmFwc2hvdHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJl
Z2luU25hcHNob3R0aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBs
dWdJbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJM
OiAlcyIsIHRoaXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAg
QWN0dWFsIFVSTDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWMuLjcxYmEw
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2FkZWRVcmwoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5nIGxvYWRlZE1p
bWVUeXBlKCkgY29uc3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBVUkwgbWlnaHQg
bm90IGJlIHRoZSBzYW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0ZXJzLgotICAg
IHZvaWQgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHBsdWdJblVS
TCk7CisgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiBw
bHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3Qg
V2lkZ2V0Kik7CiAKICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRNTEltYWdlTG9h
ZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwogICAgIFN0cmlu
ZyBtX3VybDsKLSAgICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRlZFVybDsKIAog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNpZ25lZCA9IDAp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRlMmQuLjY2MWUz
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xMDUs
MTIgKzEwNSwxMiBAQCBib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3luYygpIGNvbnN0CiAgICAg
cmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoYXN5bmNBdHRyKSB8fCBmb3JjZUFzeW5jKCk7CiB9CiAK
LUtVUkwgSFRNTFNjcmlwdEVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNyYygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc291
cmNlQXR0cmlidXRlVmFsdWUoKSk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuaAppbmRleCBhZTVjYTFiLi42NzIyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25z
dCBTdHJpbmcmKTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRBc3luYyhib29sKTsKICAgICBib29sIGFzeW5jKCkgY29uc3Q7CkBA
IC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMTgyODRjOC4u
YTk4YmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0y
NjksNyArMjY5LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFu
ZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2MKICAgICBtX2ZpcmVkTG9hZCA9
IHRydWU7CiB9CiAKLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykg
Y29uc3QKIHsgICAgCiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCA4Zjk0
Mzg4Li5mYmEwYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVl
dEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgbV9zdHlsZVNoZWV0T3duZXIu
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KGRvY3VtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxVUkw+JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgIHZvaWQgc2Nv
cGVkQXR0cmlidXRlQ2hhbmdlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKaW5kZXggN2ZiMmRhZS4uZjM1NzI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBT
dHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNjb3BlKCkgY29uc3QKICAgICByZXR1cm4gZ2V0
QXR0cmlidXRlKHNjb3BlQXR0cik7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QK
K3ZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCA5ODI3MGUzLi5mZTAxNjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiB9
OwogCiBIVE1MVGFibGVDZWxsRWxlbWVudCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChOb2RlKiBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGEwMjli
NTAuLjk3YjNiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApA
QCAtNTcwLDcgKzU3MCw3IEBAIFN0cmluZyBIVE1MVGFibGVFbGVtZW50OjpzdW1tYXJ5KCkgY29u
c3QKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKIH0KIAotdm9pZCBIVE1M
VGFibGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgKaW5kZXggMDhkMjNlMy4uZWNlNTE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBVc2VkIHRvIG9idGFpbiBlaXRoZXIgYSBzb2xpZCBvciBvdXRzZXQgYm9yZGVyIGRlY2wg
YW5kIHRvIGRlYWwgd2l0aCB0aGUgZnJhbWUgYW5kIHJ1bGVzIGF0dHJpYnV0ZXMuCiAgICAgdmly
dHVhbCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAog
ICAgIGVudW0gVGFibGVSdWxlcyB7IFVuc2V0UnVsZXMsIE5vbmVSdWxlcywgR3JvdXBzUnVsZXMs
IFJvd3NSdWxlcywgQ29sc1J1bGVzLCBBbGxSdWxlcyB9OwogICAgIGVudW0gQ2VsbEJvcmRlcnMg
eyBOb0JvcmRlcnMsIFNvbGlkQm9yZGVycywgSW5zZXRCb3JkZXJzLCBTb2xpZEJvcmRlcnNDb2xz
T25seSwgU29saWRCb3JkZXJzUm93c09ubHkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCmluZGV4IDg1N2UyMGYuLmRiMzFlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgIUxPR19ESVNBQkxFRAotc3Rh
dGljIFN0cmluZyB1cmxGb3JMb2dnaW5nVHJhY2soY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0
cmluZyB1cmxGb3JMb2dnaW5nVHJhY2soY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogICAgIApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgSFRNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotS1VSTCBIVE1MVHJhY2tFbGVtZW50
OjpzcmMoKSBjb25zdAorVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0K
QEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+KikKICAgICBzZXRSZWFkeVN0YXRlKEhUTUxUcmFja0Vs
ZW1lbnQ6OkxPQURJTkcpOwogCiAgICAgLy8gNy4gTGV0IFVSTCBiZSB0aGUgdHJhY2sgVVJMIG9m
IHRoZSB0cmFjayBlbGVtZW50LgotICAgIEtVUkwgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1
dGUoc3JjQXR0cik7CisgICAgVVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0
dHIpOwogCiAgICAgLy8gOC4gSWYgdGhlIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgaXMgYSBtZWRp
YSBlbGVtZW50IHRoZW4gbGV0IENPUlMgbW9kZSBiZSB0aGUgc3RhdGUgb2YgdGhlIHBhcmVudCBt
ZWRpYQogICAgIC8vIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZS4gT3Ro
ZXJ3aXNlLCBsZXQgQ09SUyBtb2RlIGJlIE5vIENPUlMuCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MVHJhY2tFbGVtZW50
PiopCiAgICAgZW5zdXJlVHJhY2soKS5zY2hlZHVsZUxvYWQodXJsKTsKIH0KIAotYm9vbCBIVE1M
VHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgSFRNTFRyYWNr
RWxlbWVudDo6Y2FuTG9hZFVybChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuaAppbmRleCAzYjljNGY3Li5iNzYxNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50IEZJTkFM
IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVS
TCBzcmMoKSBjb25zdDsKICAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0
cmluZyBraW5kKCk7CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
OwogCiAgICAgTG9hZGFibGVUZXh0VHJhY2smIGVuc3VyZVRyYWNrKCk7Ci0gICAgdmlydHVhbCBi
b29sIGNhbkxvYWRVcmwoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJs
KGNvbnN0IFVSTCYpOwogCiAgICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3RyYWNrOwog
ICAgIFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+IG1fbG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTEwMzY4My4uZWQ2N2M2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUp
CiB7CiAgICAgRGlzcGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAgS1VSTCBw
b3N0ZXIgPSBwb3N0ZXJJbWFnZVVSTCgpOworICAgIFVSTCBwb3N0ZXIgPSBwb3N0ZXJJbWFnZVVS
TCgpOwogCiAgICAgaWYgKCFwb3N0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUg
YSBwb3N0ZXIgcGF0aCwgYnV0IG9ubHkgc2hvdyBpdCB1bnRpbCB0aGUgdXNlciB0cmlnZ2VycyBk
aXNwbGF5IGJ5IHBsYXlpbmcgb3Igc2Vla2luZyBhbmQgdGhlCkBAIC0zMTUsMTEgKzMxNSwxMSBA
QCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREcm9wcGVkRnJhbWVDb3VudCgpIGNv
bnN0CiB9CiAjZW5kaWYKIAotS1VSTCBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgp
IGNvbnN0CitVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwoKSBjb25zdAogewog
ICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VT
b3VyY2VVUkwoKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJM
KCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IDhlZTIwMmUuLmJhMGY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxh
eU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAotICAgIEtVUkwgcG9zdGVySW1h
Z2VVUkwoKSBjb25zdDsKKyAgICBVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKaW5kZXggNzYyNGZlOS4uZGIzNTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTFZpZXdTb3VyY2VEb2N1
bWVudDo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK0hUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhUTUxW
aWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogICAgICwgbV90
eXBlKG1pbWVUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9j
dW1lbnQuaAppbmRleCBjZWQ1OWRmLi5jNGVmNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBIVE1MVG9r
ZW47CiAKIGNsYXNzIEhUTUxWaWV3U291cmNlRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERv
Y3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlld1NvdXJjZURv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNl
RG9jdW1lbnQoZnJhbWUsIHVybCwgbWltZVR5cGUpKTsKICAgICB9CkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFNvdXJjZShjb25zdCBTdHJpbmcmLCBIVE1MVG9rZW4mKTsK
IAogcHJpdmF0ZToKLSAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIFJl
dHVybnMgSFRNTFZpZXdTb3VyY2VQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9u
IG1fdHlwZS4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZGFlYTAxZS4u
YWNiNjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIAogLy8gLS0t
LS0tLS0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKK0ltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBJbWFnZURvY3Vt
ZW50Q2xhc3MpCiAgICAgLCBtX2ltYWdlRWxlbWVudCgwKQogICAgICwgbV9pbWFnZVNpemVJc0tu
b3duKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRleCAzMjA0ZDAxLi5l
ZDUzMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBJbWFnZURvY3VtZW50RWxlbWVudDsKIAogY2xhc3MgSW1hZ2VEb2N1bWVudCBGSU5B
TCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VE
b2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbWFnZUNsaWNrZWQoaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToKLSAgICBJbWFn
ZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIEltYWdlRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlUGFyc2VyKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApp
bmRleCBkOGRjNWY5Li43ZjBlZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKICAgICBmaW5pc2goKTsK
IH0KICAgICAKLU1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCitNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1
bWVudENsYXNzKQogICAgICwgbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXIodGhpcywgJk1lZGlh
RG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaAppbmRleCAzYWY1NTBlLi41ZjYxMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFFbGVtZW50U2F3VW5zdXBwb3J0
ZWRUcmFja3MoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3Qg
S1VSTCYpOworICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IDM5NTlk
ZGEuLjI1YWFiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBkb3VibGUgTWVkaWFGcmFnbWVudFVSSVBhcnNl
cjo6aW52YWxpZFRpbWVWYWx1ZSgpCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGlt
ZSgpOwogfQogCi1NZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
KGNvbnN0IEtVUkwmIHVybCkKK01lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRV
UklQYXJzZXIoY29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3RpbWVG
b3JtYXQoTm9uZSkKICAgICAsIG1fc3RhcnRUaW1lKE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaAppbmRleCAx
N2RmYzNmLi45MzJjNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRV
UklQYXJzZXIuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNs
YXNzIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIgRklOQUwgewogcHVibGljOgogICAgIAotICAgIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXIoY29uc3QgS1VSTCYpOworICAgIE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXIoY29uc3QgVVJMJik7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKCk7CiAgICAgZG91Ymxl
IGVuZFRpbWUoKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlTlBU
RnJhZ21lbnQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGRvdWJsZSYgc3RhcnRUaW1l
LCBkb3VibGUmIGVuZFRpbWUpOwogICAgIGJvb2wgcGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgb2Zmc2V0LCBkb3VibGUmIHRpbWUpOwogCi0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgVGltZUZvcm1hdCBtX3RpbWVGb3JtYXQ7
CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBtX2VuZFRpbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IDUyOTNkY2QuLjJjM2I0YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9p
ZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25z
dCBjaGFyKiwgc2l6ZV90KQogICAgIH0KIH0KIAotUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3Vt
ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorUGx1Z2luRG9jdW1lbnQ6OlBsdWdp
bkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIHVybCwgUGx1Z2luRG9jdW1lbnRDbGFzcykKICAgICAsIG1fc2hvdWxkTG9hZFBs
dWdpbk1hbnVhbGx5KHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKaW5k
ZXggZTBiYmQ5Ni4uMjBlNGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBXaWRnZXQ7CiAKIGNsYXNzIFBsdWdpbkRvY3VtZW50IEZJ
TkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBs
dWdpbkRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIHsgcmV0dXJuIG1fc2hvdWxk
TG9hZFBsdWdpbk1hbnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luRG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBLVVJMJik7CisgICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2Vy
KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJM
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmlu
ZGV4IDVhZDhmYzYuLjJiZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5h
Z2VyLmNwcApAQCAtMjksMjAgKzI5LDIwIEBACiAKICNpZiBFTkFCTEUoQkxPQikKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQordm9pZCBQ
dWJsaWNVUkxNYW5hZ2VyOjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIFJlZ2lzdHJ5
VVJMTWFwOjppdGVyYXRvciBmb3VuZCA9IG1fcmVnaXN0cnlUb1VSTC5hZGQoJnJlZ2lzdHJhYmxl
LT5yZWdpc3RyeSgpLCBVUkxTZXQoKSkuaXRlcmF0b3I7CiAgICAgZm91bmQtPmtleS0+cmVnaXN0
ZXJVUkwob3JpZ2luLCB1cmwsIHJlZ2lzdHJhYmxlKTsKICAgICBmb3VuZC0+dmFsdWUuYWRkKHVy
bC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IEtV
UkwmIHVybCkKK3ZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGZvciAoUmVnaXN0cnlVUkxNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwu
YmVnaW4oKTsgaSAhPSBtX3JlZ2lzdHJ5VG9VUkwuZW5kKCk7ICsraSkgewogICAgICAgICBpZiAo
aS0+dmFsdWUuY29udGFpbnModXJsLnN0cmluZygpKSkgewpAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IFB1YmxpY1VSTE1hbmFnZXI6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIGZvciAoUmVnaXN0
cnlVUkxNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwuYmVnaW4oKTsgaSAhPSBtX3Jl
Z2lzdHJ5VG9VUkwuZW5kKCk7ICsraSkgewogICAgICAgICBmb3IgKFVSTFNldDo6aXRlcmF0b3Ig
aiA9IGktPnZhbHVlLmJlZ2luKCk7IGogIT0gaS0+dmFsdWUuZW5kKCk7ICsraikKLSAgICAgICAg
ICAgIGktPmtleS0+dW5yZWdpc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKmopKTsKKyAg
ICAgICAgICAgIGktPmtleS0+dW5yZWdpc3RlclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikp
OwogICAgIH0KIAogICAgIG1fcmVnaXN0cnlUb1VSTC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1B1YmxpY1VSTE1hbmFnZXIuaAppbmRleCBhMTA5MTExLi45YWQwMWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKQEAg
LTQ2LDggKzQ2LDggQEAgY2xhc3MgUHVibGljVVJMTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgUHVibGljVVJMTWFuYWdlcik7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJiwgVVJMUmVnaXN0cmFibGUqKTsKLSAgICB2b2lkIHJldm9rZShj
b25zdCBLVVJMJik7CisgICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKik7CisgICAgdm9pZCByZXZva2UoY29uc3QgVVJMJik7CiAg
ICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHREb2N1bWVudC5jcHAKaW5kZXggOTMzNGEzOS4uODNlZjEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dERvY3VtZW50LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQorVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogewogICAgIHNldENvbXBhdGli
aWxpdHlNb2RlKFF1aXJrc01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKaW5kZXgg
ZWViNjAxMC4uZjRhODMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCkBAIC0zMSwx
MyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0RG9jdW1lbnQgRklO
QUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0RG9j
dW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBUZXh0RG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgVGV4dERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJM
Jik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQ
YXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKaW5kZXggZWI1YTk3
Yi4uMWI1NWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5
cGVOYW1lcy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNyArNTcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFVS
TElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogYm9vbCBVUkxJbnB1dFR5cGU6
OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVy
biAhdmFsdWUuaXNFbXB0eSgpICYmICFLVVJMKEtVUkwoKSwgdmFsdWUpLmlzVmFsaWQoKTsKKyAg
ICByZXR1cm4gIXZhbHVlLmlzRW1wdHkoKSAmJiAhVVJMKFVSTCgpLCB2YWx1ZSkuaXNWYWxpZCgp
OwogfQogCiBib29sIFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMUmVnaXN0cnkuaAppbmRleCA2Njg3YzljLi42ZWU1N2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxSZWdpc3RyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJM
UmVnaXN0cnk7CiAKQEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgVVJMUmVnaXN0cnkgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVSTFJlZ2lzdHJ5
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyVVJMKGNvbnN0IEtVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgLy8gVGhpcyBp
cyBhbiBvcHRpb25hbCBBUEkKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29u
c3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggMjZiYzRlYi4uZGZhOTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpIHx8IG1f
Y2xlYW5VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFp
bnRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpjaGVja09yaWdpbihjb25zdCBLVVJMJiB1cmwpCit2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKHVybCkpCiAgICAgICAgIGNhbnZhcygpLT5zZXRPcmln
aW5UYWludGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOGU4NDliZC4uYjViMjc4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBDYW52YXNQYXR0ZXJuOwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBXZWJHTE9iamVjdDsKIAogY2xhc3MgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewpAQCAtNjcsMTQgKzY3LDE0
IEBAIHByb3RlY3RlZDoKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZh
c0VsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxl
bWVudCopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9FbGVtZW50
Kik7Ci0gICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHdv
dWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lk
IGNoZWNrT3JpZ2luKGNvbnN0IFQqIGFyZykKICAgICB7CiAgICAgICAgIGlmICh3b3VsZFRhaW50
T3JpZ2luKGFyZykpCiAgICAgICAgICAgICBjYW52YXMoKS0+c2V0T3JpZ2luVGFpbnRlZCgpOwog
ICAgIH0KLSAgICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGNoZWNr
T3JpZ2luKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50KiBt
X2NhbnZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDZkMDQwZDQuLmMwZjI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTU1
OSw3ICs1NTU5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSFRNTElt
YWdlRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEgKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
Im5vIGltYWdlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY29uc3QgS1VS
TCYgdXJsID0gaW1hZ2UtPmNhY2hlZEltYWdlKCktPnJlc3BvbnNlKCkudXJsKCk7CisgICAgY29u
c3QgVVJMJiB1cmwgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKICAg
ICBpZiAodXJsLmlzTnVsbCgpIHx8IHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW1hZ2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3Bw
CmluZGV4IDY3ZjZiY2IuLjNlNzBiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIENTU1By
ZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgaWYgKHJ1bGVFcXVhbElnbm9yaW5nQ2FzZSht
X3J1bGUsICJpbXBvcnQiKSkgewogICAgICAgICBTdHJpbmcgdXJsID0gcGFyc2VDU1NTdHJpbmdP
clVSTChtX3J1bGVWYWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNpemUoKSk7CiAgICAgICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgS1VSTCBiYXNlRWxlbWVudFVSTDsgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5l
ciB2aWEgc2NhbigpIQorICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2NhbmVyIHZpYSBz
Y2FuKCkhCiAgICAgICAgICAgICBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IHJlcXVlc3QgPSBQcmVs
b2FkUmVxdWVzdDo6Y3JlYXRlKCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNv
dXJjZTo6Q1NTU3R5bGVTaGVldCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
YmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/CiAgICAgICAg
ICAgICBtX3JlcXVlc3RzLT5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBhN2NiNzJlLi43
OGQxZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1
ZGUgIkhUTUxJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDQxZWUyMDEuLjY0MjM1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIE93blB0cjxQcmVsb2Fk
UmVxdWVzdD4gY3JlYXRlUHJlbG9hZFJlcXVlc3QoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZVVS
TCkKKyAgICBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZVByZWxvYWRSZXF1ZXN0KGNvbnN0
IFVSTCYgcHJlZGljdGVkQmFzZVVSTCkKICAgICB7CiAgICAgICAgIGlmICghc2hvdWxkUHJlbG9h
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogfTsKIAotVG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6VG9rZW5QcmVsb2FkU2Nhbm5lcihjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpCitUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRT
Y2FubmVyKGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ICAgIDogbV9kb2N1bWVudFVSTChkb2N1bWVudFVSTCkKICAgICAsIG1faW5TdHlsZShmYWxzZSkK
ICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpCkBAIC0zODEsMTAg
KzM4MSwxMCBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VV
UkwoY29uc3QgVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3ByZWRpY3RlZEJhc2VFbGVt
ZW50VVJMLmlzRW1wdHkoKSk7CiAgICAgaWYgKGNvbnN0IHR5cGVuYW1lIFRva2VuOjpBdHRyaWJ1
dGUqIGhyZWZBdHRyaWJ1dGUgPSB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGhyZWZBdHRyKSkKLSAg
ICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IEtVUkwobV9kb2N1bWVudFVSTCwgc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29w
eSgpOworICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0gVVJMKG1fZG9jdW1lbnRV
UkwsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmQXR0cmlidXRlLT52YWx1
ZSkpLmNvcHkoKTsKIH0KIAotSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIo
Y29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJM
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0hUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxv
YWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBVUkwmIGRv
Y3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IG1fc2Nhbm5lcihkb2N1
bWVudFVSTCwgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5p
emVyOjpjcmVhdGUob3B0aW9ucykpCiB7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBIVE1MUHJl
bG9hZFNjYW5uZXI6OmFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQog
ICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqIHByZWxvYWRlciwgY29uc3QgS1VSTCYgc3Rh
cnRpbmdCYXNlRWxlbWVudFVSTCkKK3ZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxS
ZXNvdXJjZVByZWxvYWRlciogcHJlbG9hZGVyLCBjb25zdCBVUkwmIHN0YXJ0aW5nQmFzZUVsZW1l
bnRVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSFRNTFRva2VuaXplcjo6
dXBkYXRlU3RhdGVGb3Igb25seSB3b3JrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggN2MzZjUz
NS4uNGZhZjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU2VnbWVudGVkU3RyaW5nOwogY2xh
c3MgVG9rZW5QcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5Q
cmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4
cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKKyAgICBleHBsaWNpdCBUb2tlblByZWxvYWRTY2Fu
bmVyKGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4w
KTsKICAgICB+VG9rZW5QcmVsb2FkU2Nhbm5lcigpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhU
TUxUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjYW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYsIFByZWxv
YWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UHJlZGlj
dGVkQmFzZUVsZW1lbnRVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1fcHJlZGljdGVkQmFzZUVsZW1l
bnRVUkwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFByZWRpY3RlZEJhc2VFbGVtZW50VVJMKGNvbnN0
IFVSTCYgdXJsKSB7IG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSB1cmw7IH0KIAogICAgIC8v
IEEgVG9rZW5QcmVsb2FkU2Nhbm5lckNoZWNrcG9pbnQgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQg
Y2FsbCB0byByZXdpbmRUbywKICAgICAvLyBhdCB3aGljaCBwb2ludCBhbGwgb3V0c3RhbmRpbmcg
Y2hlY2twb2ludHMgYXJlIGludmFsaWRhdGVkLgpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYpOwogCiAgICAgc3Ry
dWN0IENoZWNrcG9pbnQgewotICAgICAgICBDaGVja3BvaW50KGNvbnN0IEtVUkwmIHByZWRpY3Rl
ZEJhc2VFbGVtZW50VVJMLCBib29sIGluU3R5bGUKKyAgICAgICAgQ2hlY2twb2ludChjb25zdCBV
UkwmIHByZWRpY3RlZEJhc2VFbGVtZW50VVJMLCBib29sIGluU3R5bGUKICNpZiBFTkFCTEUoVEVN
UExBVEVfRUxFTUVOVCkKICAgICAgICAgICAgICwgc2l6ZV90IHRlbXBsYXRlQ291bnQKICNlbmRp
ZgpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIEtVUkwgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkw7CisgICAgICAgIFVSTCBwcmVkaWN0
ZWRCYXNlRWxlbWVudFVSTDsKICAgICAgICAgYm9vbCBpblN0eWxlOwogI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQogICAgICAgICBzaXplX3QgdGVtcGxhdGVDb3VudDsKQEAgLTExNSw4ICsx
MTUsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBDU1NQcmVsb2FkU2Nhbm5lciBtX2Nzc1Nj
YW5uZXI7Ci0gICAgY29uc3QgS1VSTCBtX2RvY3VtZW50VVJMOwotICAgIEtVUkwgbV9wcmVkaWN0
ZWRCYXNlRWxlbWVudFVSTDsKKyAgICBjb25zdCBVUkwgbV9kb2N1bWVudFVSTDsKKyAgICBVUkwg
bV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTDsKICAgICBib29sIG1faW5TdHlsZTsKICAgICBmbG9h
dCBtX2RldmljZVNjYWxlRmFjdG9yOwogCkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBwcml2YXRlOgog
Y2xhc3MgSFRNTFByZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1M
UHJlbG9hZFNjYW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBI
VE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBjb25zdCBLVVJMJiBk
b2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOworICAgIEhUTUxQcmVs
b2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKICAgICB+SFRNTFByZWxvYWRTY2Fu
bmVyKCk7CiAKICAgICB2b2lkIGFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwot
ICAgIHZvaWQgc2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBLVVJMJiBkb2N1bWVu
dEJhc2VFbGVtZW50VVJMKTsKKyAgICB2b2lkIHNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiwg
Y29uc3QgVVJMJiBkb2N1bWVudEJhc2VFbGVtZW50VVJMKTsKIAogcHJpdmF0ZToKICAgICBUb2tl
blByZWxvYWRTY2FubmVyIG1fc2Nhbm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmluZGV4IDM2MzM0MWEuLmIxMDA5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJl
bG9hZGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIFByZWxvYWRSZXF1ZXN0Ojppc1NhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogICAgICAgICAmJiBtX2Jhc2VVUkwuaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7CiB9CiAKLUtVUkwgUHJlbG9hZFJlcXVlc3Q6OmNvbXBs
ZXRlVVJMKERvY3VtZW50KiBkb2N1bWVudCkKK1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVV
UkwoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBkb2N1bWVudC0+Y29tcGxldGVV
UkwobV9yZXNvdXJjZVVSTCwgbV9iYXNlVVJMLmlzRW1wdHkoKSA/IGRvY3VtZW50LT51cmwoKSA6
IG1fYmFzZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxS
ZXNvdXJjZVByZWxvYWRlci5oCmluZGV4IGVmOTMzOTUuLmFhYTg3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC0zMywx
MiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmVsb2FkUmVxdWVzdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFBdHRyaWJ1dGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBj
b25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29u
c3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCByZXNvdXJjZVVSTCwgYmFzZVVSTCwgcmVz
b3VyY2VUeXBlLCBtZWRpYUF0dHJpYnV0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBPd25QdHI8
UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgcmVzb3VyY2VUeXBlKQorICAgIHN0YXRpYyBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByZWxvYWRSZXF1ZXN0KGluaXRpYXRvciwg
cmVzb3VyY2VVUkwsIGJhc2VVUkwsIHJlc291cmNlVHlwZSwgU3RyaW5nKCkpKTsKICAgICB9CkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVHlwZTsgfQogCiBwcml2YXRlOgotICAg
IFByZWxvYWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNv
dXJjZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUpCisgICAgUHJlbG9hZFJlcXVl
c3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25z
dCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlKQogICAgICAgICA6IG1faW5pdGlhdG9yKGluaXRpYXRv
cikKICAgICAgICAgLCBtX3Jlc291cmNlVVJMKHJlc291cmNlVVJMLmlzb2xhdGVkQ29weSgpKQog
ICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMLmNvcHkoKSkKQEAgLTY0LDExICs2NCwxMSBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Kik7
CisgICAgVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Kik7CiAKICAgICBTdHJpbmcgbV9pbml0aWF0
b3I7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VVUkw7Ci0gICAgS1VSTCBtX2Jhc2VVUkw7CisgICAg
VVJMIG1fYmFzZVVSTDsKICAgICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIENhY2hlZFJlc291cmNl
OjpUeXBlIG1fcmVzb3VyY2VUeXBlOwogICAgIFN0cmluZyBtX21lZGlhQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0
OTFkYmQzOC4uNWU0ZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFNjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHAKQEAgLTc0LDEwICs3NCwxMCBAQCB2b2lkIEhUTUxTY3JpcHRSdW5u
ZXI6OmRldGFjaCgpCiAgICAgbV9kb2N1bWVudCA9IDA7CiB9CiAKLXN0YXRpYyBLVVJMIGRvY3Vt
ZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKK3N0YXRpYyBVUkwg
ZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gS1VS
TCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICAvLyBVc2UgdGhlIFVSTCBvZiB0aGUg
Y3VycmVudGx5IGFjdGl2ZSBkb2N1bWVudCBmb3IgdGhpcyBmcmFtZS4KICAgICByZXR1cm4gZG9j
dW1lbnQtPmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCAzZTM5MzM0Li44NGVhYzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtMTU2LDggKzE1Niw4IEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIGRlY29kZTE2Qml0VW5pY29kZUVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogc3RhdGljIGlubGluZSBTdHJpbmcgZGVjb2RlU3RhbmRhcmRV
UkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcpCiB7Ci0gICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNlcygpIGlu
c3RlYWQgb2YgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIEtVUkwuaCkg
dG8KLSAgICAvLyBhdm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBVUkwgZGVjb2RpbmcgZGlmZmVyZW5j
ZXMgKGUuZy4gS1VSTEdvb2dsZSkuCisgICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNl
cygpIGluc3RlYWQgb2YgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIFVS
TC5oKSB0bworICAgIC8vIGF2b2lkIHBsYXRmb3JtLXNwZWNpZmljIFVSTCBkZWNvZGluZyBkaWZm
ZXJlbmNlcyAoZS5nLiBVUkxHb29nbGUpLgogICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2RpbmcpOwogfQogCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVk
aXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgIFN0cmluZyBlcnJvckRldGFp
bHM7CiAgICAgICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwogICAgICAgICBTdHJpbmcg
cmVwb3J0VVJMOwotICAgICAgICBLVVJMIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkw7CisgICAgICAg
IFVSTCB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMOwogCiAgICAgICAgIC8vIFByb2Nlc3MgdGhlIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVyLCB0aGVuIG1peCBpbiB0aGUgQ1NQIGhlYWRlcidzIHZhbHVl
LgogICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9u
IHhzc1Byb3RlY3Rpb25IZWFkZXIgPSBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoaGVhZGVyVmFs
dWUsIGVycm9yRGV0YWlscywgZXJyb3JQb3NpdGlvbiwgcmVwb3J0VVJMKTsKQEAgLTI4OCw3ICsy
ODgsNyBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoRG9jdW1lbnQqIGRvY3VtZW50LCBYU1NBdWRp
dG9yRGVsZWdhdGUqIGF1ZGl0b3JEZWxlZ2F0ZSkKICAgICAgICAgICAgIGlmIChNaXhlZENvbnRl
bnRDaGVja2VyOjppc01peGVkQ29udGVudChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgeHNz
UHJvdGVjdGlvblJlcG9ydFVSTCkpIHsKICAgICAgICAgICAgICAgICBlcnJvckRldGFpbHMgPSAi
aW5zZWN1cmUgcmVwb3J0aW5nIFVSTCBmb3Igc2VjdXJlIHBhZ2UiOwogICAgICAgICAgICAgICAg
IHhzc1Byb3RlY3Rpb25IZWFkZXIgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhT
U0ludmFsaWQ7Ci0gICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IEtVUkwo
KTsKKyAgICAgICAgICAgICAgICB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMID0gVVJMKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHhzc1Byb3RlY3Rpb25IZWFkZXIgPT0g
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NJbnZhbGlkKQpAQCAtNzIwLDcgKzcy
MCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgaWYgKG1fZG9jdW1lbnRVUkwuaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCByZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwp
OworICAgIFVSTCByZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwpOwogICAgIHJldHVybiAo
bV9kb2N1bWVudFVSTC5ob3N0KCkgPT0gcmVzb3VyY2VVUkwuaG9zdCgpICYmIHJlc291cmNlVVJM
LnF1ZXJ5KCkuaXNFbXB0eSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oCmluZGV4IDA2OTBiZTkuLjMyMWU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rpbmcu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmKTsKICAgICBi
b29sIGlzTGlrZWx5U2FmZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgIEtVUkwg
bV9kb2N1bWVudFVSTDsKKyAgICBVUkwgbV9kb2N1bWVudFVSTDsKICAgICBib29sIG1faXNFbmFi
bGVkOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlv
biBtX3hzc1Byb3RlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDFkOGM3ZDguLjY1MWM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaWZuZGVmIFhTU0F1ZGl0b3JEZWxlZ2F0ZV9oCiAjZGVmaW5lIFhTU0F1ZGl0b3JEZWxlZ2F0
ZV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBYU1NBdWRp
dG9yRGVsZWdhdGUoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgZGlkQmxvY2tTY3JpcHQoY29uc3Qg
WFNTSW5mbyYpOwotICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX3Jl
cG9ydFVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IFVSTCYgdXJsKSB7
IG1fcmVwb3J0VVJMID0gdXJsOyB9CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZ2VuZXJhdGVWaW9sYXRpb25SZXBvcnQoKTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50
OwogICAgIGJvb2wgbV9kaWRTZW5kTm90aWZpY2F0aW9uczsKLSAgICBLVVJMIG1fcmVwb3J0VVJM
OworICAgIFVSTCBtX3JlcG9ydFVSTDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPE93blB0cjxYU1NJ
bmZvPiA+IFhTU0luZm9TdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IGNlNTFmNjUuLmNlZDZjODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCkKICAgICBUZXh0VHJhY2s6
OmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9h
ZChjb25zdCBLVVJMJiB1cmwpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4
IDE4OGVhZDEuLmFiYmM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTG9hZGFibGVUZXh0VHJhY2tD
bGllbnQgOiBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5M
b2FkYWJsZVRleHRUcmFja0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5M
b2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBV
UkwmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVk
KExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KIH07CiAK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRl
eHRUcmFjaygpOwogCi0gICAgdm9pZCBzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYpOworICAgIHZv
aWQgc2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xp
ZW50KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50
KiBtX3RyYWNrRWxlbWVudDsKICAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9sb2FkVGlt
ZXI7CiAgICAgT3duUHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgS1VSTCBtX3Vy
bDsKKyAgICBVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIH07CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCmluZGV4IGMxYzI4OGQuLjJlZWQ3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBET01QYXRjaFN1
cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBuZXdEb2N1bWVudDsKICAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJM
KCkpOworICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgp
KTsKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
bmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwoKSk7CisgICAg
ICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CiAj
aWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkp
Ci0gICAgICAgIG5ld0RvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAg
ICAgICBuZXdEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogI2VuZGlmCiAK
ICAgICBBU1NFUlQobmV3RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKaW5kZXggMGNlMWU5Ni4uZmI1YjY5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQogICAgIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJJbnNwZWN0ZWRPYmpl
Y3RzKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwpCitib29sIEluc3Bl
Y3RvckFnZW50Ojppc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBVUkwmIHJlcXVlc3RVcmwpCiB7CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+ZnJh
bWVJc01haW5GcmFtZShsb2FkZXItPmZyYW1lKCkpICYmIHJlcXVlc3RVcmwgPT0gbG9hZGVyLT5y
ZXF1ZXN0VVJMKCk7CiB9CkBAIC0xNjksMTQgKzE2OSwxNCBAQCB2b2lkIEluc3BlY3RvckFnZW50
OjppbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
b2JqZQogICAgIG1fcGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCA9IGhpbnRzOwogfQogCi1LVVJM
IEluc3BlY3RvckFnZW50OjppbnNwZWN0ZWRVUkwoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50
OjppbnNwZWN0ZWRVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPnVybCgpOwogfQogCi1LVVJMIEluc3BlY3RvckFnZW50Ojpp
bnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50Ojpp
bnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gaW5z
cGVjdGVkVVJMKCk7CisgICAgVVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOwogICAgIHVybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICByZXR1cm4gdXJsOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBhMGVlMGY3Li43NzJjOTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCi0gICAgS1VSTCBpbnNw
ZWN0ZWRVUkwoKSBjb25zdDsKLSAgICBLVVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgp
IGNvbnN0OworICAgIFVSTCBpbnNwZWN0ZWRVUkwoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVk
VVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3Q7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CiAKQEAgLTk4LDcgKzk4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICNlbmRpZgogCi0g
ICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwm
IHJlcXVlc3RVcmwpOworICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBVUkwmIHJlcXVlc3RVcmwpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdl
OwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGEyOWU1NGIu
LjUwZjdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQog
CiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBh
Z2VBZ2VudCgpKSB7Ci0gICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdl
QWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UgPSBwYWdlQWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCks
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKICAgICAgICAgICAgIGlmIChyZXNv
dXJjZSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7CiAgICAg
ICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRl
eCA2ZTI4OGFkLi40MGFkMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKQEAgLTIxNyw3ICsyMTcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsKIAogICAgIFJlZlB0
cjxSZXF1ZXN0RGlyZWN0b3J5Q29udGVudENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxk
ZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+IG1fZW50cmllczsKICAgICBSZWZQdHI8RGlyZWN0b3J5
UmVhZGVyPiBtX2RpcmVjdG9yeVJlYWRlcjsKIH07CkBAIC0zNDIsNyArMzQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CiAKICAgICBSZWZQ
dHI8UmVxdWVzdE1ldGFkYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwg
bV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX2lz
RGlyZWN0b3J5OwogfTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1f
Y2hhcnNldChjaGFyc2V0KSB7IH0KIAogICAgIFJlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxs
YmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7
CiAgICAgYm9vbCBtX3JlYWRBc1RleHQ7CiAgICAgaW50IG1fc3RhcnQ7CiAgICAgbG9uZyBsb25n
IG1fZW5kOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRS
ZWFkKCkKIAogY2xhc3MgRGVsZXRlRW50cnlSZXF1ZXN0IDogcHVibGljIFZvaWRDYWxsYmFjayB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVh
dGUoUGFzc1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVFbnRyeVJlcXVlc3Q+IGNy
ZWF0ZShQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29u
c3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZUVu
dHJ5UmVxdWVzdChyZXF1ZXN0Q2FsbGJhY2ssIHVybCkpOwogICAgIH0KQEAgLTU1NCwxMiArNTU0
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vzcyhz
dGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSkpOwogICAgIH0KIAotICAgIERlbGV0ZUVudHJ5UmVx
dWVzdChQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29u
c3QgS1VSTCYgdXJsKQorICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVmUHRyPERlbGV0ZUVu
dHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDog
bV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fdXJsKHVybCkg
eyB9CiAKICAgICBSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7
Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiB9OwogCiB2b2lkIERlbGV0ZUVudHJ5
UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
ZGVsZXRlRW50cnkoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybAogICAgIGlm
ICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJs
KFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmlu
ZywgdXJsU3RyaW5nKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9y
LCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpOwogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMDNiNjQxNS4uNGZlNjgzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTMyMiw3
ICszMjIsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVtb3ZlRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1QYXRoKQogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6Omlzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZp
bGVTeXN0ZW1OYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RVUkwpCiB7CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpOwotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3Rl
bU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290
VVJMKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIERPTUZpbGVTeXN0
ZW06OmNyZWF0ZShjb250ZXh0LCBmaWxlU3lzdGVtTmFtZSwgRmlsZVN5c3RlbVR5cGVJc29sYXRl
ZCwgVVJMKFBhcnNlZFVSTFN0cmluZywgcm9vdFVSTCksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRl
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDU1MzJjMC4uY2ZmYjczZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbQogICAgICAg
ICByZXNvdXJjZUFnZW50LT5kb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0Zv
ckNsaWVudChpZGVudGlmaWVyLCBjbGllbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9v
bCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsTG9hZFhI
UihjbGllbnQsIG1ldGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVD
cmVkZW50aWFscyk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBib29sIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50
aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3Bl
UHJveHksIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRTdGFydFdvcmtlckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVBy
b3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdv
cmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yV29ya2VyQWdlbnQoKSkK
ICAgICAgICAgd29ya2VyQWdlbnQtPmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xv
YmFsU2NvcGVQcm94eSwgdXJsKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQWdlbnQoKTsKICAgICBpZiAoIWluc3BlY3RvckFnZW50IHx8ICFpbnNwZWN0b3JB
Z2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRmNmZhMWUuLmRmM2Vh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVy
czsKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmVuZGVyTGF5
ZXI7CkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJT
dGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgc3RhdGljIHZv
aWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxs
TG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBj
b25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbFhIUkxv
YWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKTsKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShXT1JLRVJTKQogICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2Nv
cGVQcm94eSosIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5
KiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVUZXJtaW5h
dGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlV29ya2VyU2NyaXB0KFdvcmtlckdsb2JhbFNjb3Bl
KiwgaW50IHdvcmtlclRocmVhZFN0YXJ0TW9kZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0KERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChEb2N1
bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC00MDYsNyArNDA2LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAg
ICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC00NjMsMTIgKzQ2MywxMiBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUGF1c2VE
ZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZv
aWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFdv
cmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCB3b3Jr
ZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJH
bG9iYWxTY29wZVByb3h5Kik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IEtVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwor
ICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1bWVudCopOwogICAg
IHN0YXRpYyB2b2lkIGRpZENsb3NlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudCopOwpAQCAtMTUwNCw3ICsxNTA0LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckMKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhI
UihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKQEAgLTE4MDYsNyArMTgwNiw3IEBA
IGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0
ZWRXb3JrZXJPblN0YXJ0KFNjcmlwdEV4CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSog
cHJveHksIGNvbnN0IEtVUkwmIHVybCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQp
KQpAQCAtMTgzMyw3ICsxODMzLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW8KIAogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJM
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVu
dFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggODIwMjhkZC4uMzNkYWM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTI0OSw3ICsyNDksNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVj
dG9yUGFnZUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaQogfQogCiAvLyBzdGF0
aWMKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1
bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGFzc2VydERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBm
cmFtZSk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0yOTgsNyArMjk4LDcgQEAgU3RyaW5nIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmMKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQorQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKSB7CkBAIC01
NjEsOSArNTYxLDkgQEAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291
cmNlc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0
aWMgVmVjdG9yPEtVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCitz
dGF0aWMgVmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBWZWN0b3I8S1VSTD4gcmVzdWx0OworICAgIFZlY3RvcjxVUkw+IHJlc3VsdDsKIAog
ICAgIHJlc3VsdC5hcHBlbmQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgp
KTsKIApAQCAtNTg5LDEwICs1ODksMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENv
b2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKIAogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSgpKSkgewogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgVmVjdG9yPEtVUkw+IGFsbFVSTHMg
PSBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpOwotICAgICAgICBmb3IgKFZlY3RvcjxL
VVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxVUkxzLmJlZ2luKCk7IGl0ICE9IGFsbFVSTHMu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgVmVjdG9yPFVSTD4gYWxsVVJMcyA9IGFsbFJlc291cmNl
c1VSTHNGb3JGcmFtZShmcmFtZSk7CisgICAgICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gYWxsVVJMcy5iZWdpbigpOyBpdCAhPSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7
CiAgICAgICAgICAgICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAg
IHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAqaXQpLCBkb2NDb29raWVzTGlzdCk7CisgICAgICAgICAgICByYXdDb29r
aWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAqaXQpLCBkb2NDb29raWVzTGlzdCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0
aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCiAg
ICAgICAgICAgICAgICAgLy8KQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBL
VVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHBhcnNlZFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1f
cGFnZS0+bWFpbkZyYW1lKCkpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUt
PmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CkBAIC02MzcsNyArNjM3LDcg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICByZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBLVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CisgICAgcmVzb3VyY2VD
b250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgY29u
dGVudCwgYmFzZTY0RW5jb2RlZCk7CiB9CiAKIHN0YXRpYyBib29sIHRleHRDb250ZW50Rm9yQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3Vs
dCkKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5S
ZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpOworICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKIAogICAgIFN0cmlu
ZyBjb250ZW50OwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGRkMDE4NzQuLjJiMDJlYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYw
LDcgKzYwLDcgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3Zlcmxh
eTsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVndWxhckV4cHJlc3Np
b247CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC04NiwxMSArODYsMTEgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwot
ICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwgY29u
c3QgS1VSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKKyAgICBzdGF0
aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IFVSTCYs
IFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5n
IHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSosIGNvbnN0IEtVUkwm
LCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcq
IHRleHRFbmNvZGluZ05hbWUpOworICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlwZSk7CiAgICAg
c3RhdGljIFJlc291cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKTsKICAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBj
YWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
ZmQ4ODk0ZS4uYjA5NTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzczY2E1ZC4uOThi
YTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5z
CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgeGhyUmVw
bGF5RGF0YSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRYSFIo
VGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwg
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29s
IGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCiB7CiAgICAgUmVmUHRyPFhIUlJl
cGxheURhdGE+IHhoclJlcGxheURhdGEgPSBYSFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCB1
cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxzKTsKICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJzLmVuZCgpOwpAQCAtNDgwLDcgKzQ4MCw3
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAK
LXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCkKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKQogewogICAgIG1fZnJvbnRlbmQtPndlYlNvY2tldENy
ZWF0ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHJlcXVlc3RV
Ukwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggM2Q3YTY3ZC4uNTdhMjFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC02MCw3ICs2
MCw3IEBAIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
IGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OwogCiAgICAgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNs
aWVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
LSAgICB2b2lkIHdpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50
aWFscyk7CisgICAgdm9pZCB3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNy
ZW5kZW50aWFscyk7CiAgICAgdm9pZCBkaWRGYWlsWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50Kik7CiAgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50
Kik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9pZCBkaWRDcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKTsKKyAg
ICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCk7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZENs
b3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggN2NjMTBmNS4uMTM5
MGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpy
ZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiAgICAgU3RyaW5n
IGVycm9yOwogICAgIGJvb2wgYmFzZTY0RW5jb2RlZDsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlc291cmNlQ29udGVudCgmZXJyb3IsIG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIG1fcGFnZVN0eWxlU2hlZXQtPmhyZWYoKSksIHJlc3VsdCwgJmJhc2U2
NEVuY29kZWQpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KCZlcnJv
ciwgb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2VT
dHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKTsKICAgICByZXR1cm4g
ZXJyb3IuaXNFbXB0eSgpICYmICFiYXNlNjRFbmNvZGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMjY1MTRl
Ni4uN2FmYWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCkKIH0KIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YShpZGVu
dGlmaWVyLCB1cmwsIHByb3RvY29sKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVh
dGUsIHRydWUsIGZyYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGJiZTAwYjYuLjQ1OTJjYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0
ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RmlyZUFuaW1hdGlvbkZyYW1lKCk7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIEZyYW1lKik7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRnJhbWUqKTsKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOGFhYTdjNi4uNmI3ZmRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEluc3BlY3RvcldvcmtlckFnZW50OjpzaG91bGRQ
YXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoKQogICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29s
ZWFuKFdvcmtlckFnZW50U3RhdGU6OmF1dG9jb25uZWN0VG9Xb3JrZXJzKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9i
YWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBLVVJMJiB1cmwpCit2
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fZGVkaWNhdGVkV29ya2Vycy5zZXQod29ya2VyR2xvYmFsU2NvcGVQcm94eSwg
dXJsLnN0cmluZygpKTsKICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZCAmJiBtX3N0YXRlLT5n
ZXRCb29sZWFuKFdvcmtlckFnZW50U3RhdGU6Ondvcmtlckluc3BlY3Rpb25FbmFibGVkKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXgg
NTFmOTA2ZS4uODk3ZGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlckFnZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbgogICAgIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCk7
Ci0gICAgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkqLCBjb25zdCBLVVJMJik7CisgICAgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdv
cmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdvcmtlckdsb2Jh
bFNjb3BlVGVybWluYXRlZChXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAKICAgICAvLyBDYWxs
ZWQgZnJvbSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggM2ZjMzUwMi4uOTY5ZDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291
cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAKLVBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0
IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKK1Bhc3NSZWZQdHI8
WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9k
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURh
dGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
WEhSUmVwbGF5RGF0YShtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBpbmNsdWRlQ3JlZGVu
dGlhbHMpKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBYSFJSZXBsYXlEYXRhOjphZGRIZWFk
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9o
ZWFkZXJzLnNldChrZXksIHZhbHVlKTsKIH0KIAotWEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0
YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitYSFJS
ZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBVUkwm
IHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV91cmwodXJs
KQogICAgICwgbV9hc3luYyhhc3luYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNDE2ZDUzZC4uMWE0Mjk0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01MSwyMCArNTEsMjAgQEAgY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIAogY2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFhIUlJl
cGxheURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRh
PiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwg
Y29uc3QgVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVk
ZUNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgYWRkSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBjb25zdCBTdHJpbmcmIG1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgYm9vbCBhc3luYygpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmM7IH0KICAgICBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybURhdGE7IH0K
ICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oZWFk
ZXJzOyB9CiAgICAgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1ZGVDcmVkZW50aWFsczsgfQogcHJpdmF0ZToKLSAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0
cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0
YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0
cmluZyAmbWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOwogCiAgICAgU3RyaW5nIG1fbWV0aG9kOwotICAg
IEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9hc3luYzsKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7CiAgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5k
ZXggMjg3MmYyNi4uY2EzMzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBUaW1lbGlu
ZVJlY29yZEZhY3RvcnlfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IGFwcGVuZExheW91dFJvb3QoSW5zcGVjdG9yT2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQm
KTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKKyAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCA5Y2IxZGNlLi5lOTNkMWNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIGlubGluZSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGNvbnN0IERvY3VtZW50KiBkb2N1
bWVudCkKICNkZWZpbmUgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uIHNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpKTsKICNlbmRpZgogCi1TdHJp
bmcgY29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRm9yRE9NKHNlc3Npb24sIGRvY3VtZW50
LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi12b2lkIHNldENvb2tpZXMoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQordm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1l
bnQpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJs
LCBjb29raWVTdHJpbmcpOwpAQCAtNzcsMTkgKzc3LDE5IEBAIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGRvY3VtZW50LT5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOwogfQogCi1TdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0NBTF9T
RVNTSU9OKGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2ll
c1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGRvY3Vt
ZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi1ib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiBjb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKQogewogICAgIExPQ0FM
X1NFU1NJT04oZG9jdW1lbnQpCiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29r
aWVzU3RyYXRlZ3koKS0+Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29u
c3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBMT0NBTF9TRVNT
SU9OKGRvY3VtZW50KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3ko
KS0+ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggNjBkZWQxNC4uYTk2YWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuaApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiAKIC8v
IEZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgdGFrZSBhIERvY3VtZW50IHBvaW50ZXIgdG8gZGV0ZXJt
aW5lIHdoaWNoIGNvb2tpZSBzdG9yYWdlIHRvIHVzZS4gV2Ugc2hvdWxkIG1lcmdlIHRoYXQgaW50
byBjYWxsIHNpdGVzLCBhbmQgdXNlIFBsYXRmb3JtQ29va2llSmFyIGRpcmVjdGx5LgogCiAvLyBU
aGVzZSB0d28gZnVuY3Rpb25zIGltcGxlbWVudCBkb2N1bWVudC5jb29raWUgQVBJLCB3aXRoIHNw
ZWNpYWwgcnVsZXMgZm9yIEh0dHBPbmx5IGNvb2tpZXMuCi1TdHJpbmcgY29va2llcyhjb25zdCBE
b2N1bWVudCosIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CitTdHJpbmcgY29va2llcyhjb25z
dCBEb2N1bWVudCosIGNvbnN0IFVSTCYpOwordm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IERvY3VtZW50Kik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSk7CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1l
bnQqLCBjb25zdCBVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNv
bnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7Cit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuY3BwCmluZGV4IDRhMTdkZmQuLjM1ODBhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAK
QEAgLTE1NCwxMyArMTU0LDEzIEBAIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpCiAgICAgcmV0dXJuIGNhY2hl
OwogfQogCi12b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8Q3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+IHByZWZsaWdodFJlc3VsdCkKK3ZvaWQgQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtPiBwcmVmbGlnaHRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBtX3ByZWZsaWdodEhhc2hNYXAuc2V0KG1ha2VfcGFpcihvcmlnaW4sIHVybCks
IHByZWZsaWdodFJlc3VsdCk7CiB9CiAKLWJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYg
dXJsLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKK2Jvb2wgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50
aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RI
ZWFkZXJzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRIYXNoTWFwOjppdGVyYXRvciBjYWNoZUl0ID0gbV9wcmVmbGlnaHRIYXNo
TWFwLmZpbmQobWFrZV9wYWlyKG9yaWdpbiwgdXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAppbmRleCAwZDY0
MzM4Li5kNGM0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZV9oCiAjZGVmaW5lIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGVfaAogCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTcwLDE1ICs3MCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSYgc2hhcmVkKCk7CiAKLSAgICAgICAgdm9pZCBhcHBl
bmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8Q3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KTsKLSAgICAgICAgYm9vbCBjYW5Ta2lw
UHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgU3RvcmVkQ3JlZGVu
dGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0
SGVhZGVycyk7CisgICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0
ZW0+KTsKKyAgICAgICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICB2b2lkIGVtcHR5
KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlKCkgeyB9CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtV
Ukw+LCBPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+ID4gQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRIYXNoTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8c3Rk
OjpwYWlyPFN0cmluZywgVVJMPiwgT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGVJdGVtPiA+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDsKIAogICAgICAgICBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXAgbV9wcmVmbGlnaHRIYXNoTWFwOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCmluZGV4
IDRiMjJmNzIuLjNhMDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRUaW1pbmcuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjpz
ZXROYXZpZ2F0aW9uU3RhcnQoZG91YmxlIG5hdmlnYXRpb25TdGFydCkKICAgICBtX25hdmlnYXRp
b25TdGFydCA9IG5hdmlnYXRpb25TdGFydDsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRUaW1pbmc6
OmFkZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRp
cmVjdGVkVXJsKQordm9pZCBEb2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0KGNvbnN0IFVS
TCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJlY3RlZFVybCkKIHsKICAgICBtX3Jl
ZGlyZWN0Q291bnQrKzsKICAgICBpZiAoIW1fcmVkaXJlY3RTdGFydCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAppbmRleCA2NDQ5NDMzLi44NTQwOTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIAogY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nIHsKIHB1YmxpYzoKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrTmF2aWdhdGlvblN0YXJ0KCk7CiAgICAg
dm9pZCBzZXROYXZpZ2F0aW9uU3RhcnQoZG91YmxlKTsKLSAgICB2b2lkIGFkZFJlZGlyZWN0KGNv
bnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRpcmVjdGVkVXJsKTsKKyAg
ICB2b2lkIGFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYg
cmVkaXJlY3RlZFVybCk7CiAKICAgICB2b2lkIG1hcmtVbmxvYWRFdmVudFN0YXJ0KCkgeyBtX3Vu
bG9hZEV2ZW50U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQogICAgIHZv
aWQgbWFya1VubG9hZEV2ZW50RW5kKCkgeyBtX3VubG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGYyOGIwZDUuLmJiZmJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcApAQCAtMTgzLDEyICsxODMsMTIgQEAgUmVzb3VyY2VSZXF1ZXN0JiBEb2N1
bWVudExvYWRlcjo6cmVxdWVzdCgpCiAgICAgcmV0dXJuIG1fcmVxdWVzdDsKIH0KIAotY29uc3Qg
S1VSTCYgRG9jdW1lbnRMb2FkZXI6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9h
ZGVyOjp1cmwoKSBjb25zdAogewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVz
dFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9v
cmlnaW5hbFJlcXVlc3RDb3B5LnNldFVSTCh1cmwpOwogICAgIG1fcmVxdWVzdC5zZXRVUkwodXJs
KTsKQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc1Bvc3RPclJlZGly
ZWN0QWZ0ZXJQb3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdAogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coRG9jdW1lbnRMb2FkZXJU
aW1lciopCiB7Ci0gICAgS1VSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7
CisgICAgVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURhdGEucmVzcG9uc2VVUkwoKTsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVu
Y29kaW5nKCksICIiKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmIChp
c1N0b3BwaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gbV9yZXF1ZXN0
LnVybCgpOworICAgIFVSTCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSA9IG1fcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICAKICAgICBzd2l0Y2ggKHBv
bGljeSkgewpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGluCiAjaWYg
VVNFKENGTkVUV09SSykgfHwgUExBVEZPUk0oTUFDKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxy
ZGFyOi8vcHJvYmxlbS82MDYwNzgyPgogICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQotICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAw
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZShVUkwoKSwgInRleHQvaHRtbCIsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAjZW5kaWYK
IAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2Fu
IGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEwMTIsNyAr
MTAxMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UpCiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLT5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4g
RG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxBcmNoaXZlPiBEb2N1bWVudExvYWRl
cjo6cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID8gbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5wb3BTdWJmcmFtZUFyY2hpdmUoZnJhbWVOYW1lLCB1
cmwpIDogUGFzc1JlZlB0cjxBcmNoaXZlPigwKTsKIH0KQEAgLTEwMjksNyArMTAyOSw3IEBAIFNo
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKIAotQXJjaGl2
ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK0FyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVS
ZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDUxLDcgKzEwNTEs
NyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHIu
dXJsKCksIHIubWltZVR5cGUoKSwgci50ZXh0RW5jb2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUo
KS51bmlxdWVOYW1lKCkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1l
bnRMb2FkZXI6OnN1YnJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1Bhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNl
cyhWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mIHN1YnJlCiAgICAgY29uc3Qg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBhbGxSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1
YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT52
YWx1ZS0+dXJsKCkpKTsKKyAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3Vy
Y2UgPSB0aGlzLT5zdWJyZXNvdXJjZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+dmFsdWUtPnVy
bCgpKSk7CiAgICAgICAgIGlmIChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIHN1YnJlc291cmNl
cy5hcHBlbmQoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMjEwLDcgKzEyMTAs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiB0aXRsZSkKICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VUaXRsZSh0aGlzKTsKIH0K
IAotS1VSTCBEb2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CitVUkwgRG9jdW1l
bnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJM
IHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0LgogICAgIC8vIFJldHVybnMgbmls
IGZvciBXZWJEYXRhUHJvdG9jb2wgVVJMcyB0aGF0IGFyZW4ndCBhbHRlcm5hdGVzCkBAIC0xMjI2
LDI0ICsxMjI2LDI0IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnlSZWZsZWN0
c0ZhaWx1cmUoKSBjb25zdAogICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSB8
fCBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogfQogCi1jb25zdCBLVVJMJiBE
b2N1bWVudExvYWRlcjo6b3JpZ2luYWxVUkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVudExv
YWRlcjo6b3JpZ2luYWxVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWdpbmFsUmVxdWVz
dENvcHkudXJsKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjpyZXF1ZXN0VVJM
KCkgY29uc3QKK2NvbnN0IFVSTCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3RVUkwoKSBjb25zdAog
ewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50
TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVzcG9uc2UudXJsKCk7CiB9CiAK
LUtVUkwgRG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKK1VSTCBEb2N1bWVudExv
YWRlcjo6ZG9jdW1lbnRVUkwoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gc3Vic3RpdHV0ZURh
dGEoKS5yZXNwb25zZVVSTCgpOworICAgIFVSTCB1cmwgPSBzdWJzdGl0dXRlRGF0YSgpLnJlc3Bv
bnNlVVJMKCk7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKQogICAgIGlmICh1cmwuaXNFbXB0eSgp
ICYmIG1fYXJjaGl2ZSAmJiBtX2FyY2hpdmUtPnR5cGUoKSA9PSBBcmNoaXZlOjpXZWJBcmNoaXZl
KQogICAgICAgICB1cmwgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpLT51cmwoKTsKQEAgLTEy
NjAsNyArMTI2MCw3IEBAIGNvbnN0IFN0cmluZyYgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlTUlN
RVR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiB9CiAKLWNv
bnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0Citjb25zdCBV
UkwmIERvY3VtZW50TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCA0YmQyYzdhLi5lMjdlZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMTA5LDE1ICsxMDksMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgdGhlIHNhbWUgYXMgcmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVt
LgotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgS1VSTCYg
dW5yZWFjaGFibGVVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsK
KyAgICAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCi0gICAgICAgIGNv
bnN0IEtVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsK
KyAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0OworICAgICAgICBjb25zdCBV
UkwmIHJlcXVlc3RVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgp
IGNvbnN0OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdDsK
IAotICAgICAgICB2b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlv
bihjb25zdCBLVVJMJik7CisgICAgICAgIHZvaWQgcmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYpOwogICAgICAgICBib29sIGlzU3RvcHBpbmcoKSBj
b25zdCB7IHJldHVybiBtX2lzU3RvcHBpbmc7IH0KICAgICAgICAgdm9pZCBzdG9wTG9hZGluZygp
OwogICAgICAgICB2b2lkIHNldENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRl
ZCA9IGNvbW1pdHRlZDsgfQpAQCAtMTQyLDIwICsxNDIsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7CiAgICAgICAg
IHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7CiAgICAgICAgIHZvaWQgYWRk
QXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7Ci0gICAgICAgIFBh
c3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBLVVJMJik7CisgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJj
aGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogCiAgICAgICAgIC8vIFJldHVybiB0aGUgQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMIG9u
bHkgd2hlbiBsb2FkaW5nIGFuIEFyY2hpdmUKLSAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNo
aXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBBcmNoaXZlUmVz
b3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgICAg
ICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlKCkgY29uc3Q7CiAKICAg
ICAgICAgLy8gUmV0dXJuIGFuIEFyY2hpdmVSZXNvdXJjZSBmb3IgdGhlIFVSTCwgZWl0aGVyIGNy
ZWF0aW5nIGZyb20gbGl2ZSBkYXRhIG9yCiAgICAgICAgIC8vIHB1bGxpbmcgZnJvbSB0aGUgQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbgotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gc3VicmVzb3VyY2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgICAgIHZv
aWQgZ2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYp
IGNvbnN0OwogCiAKQEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAKLSAg
ICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CisgICAgICAgIFVSTCB1cmxGb3JIaXN0
b3J5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgp
IGNvbnN0OwogCiAgICAgICAgIC8vIFRoZXNlIGFjY2Vzc29ycyBhY2NvbW1vZGF0ZSBXZWJDb3Jl
J3Mgc29tZXdoYXQgZmlja2xlIGN1c3RvbSBvZiBjcmVhdGluZyBoaXN0b3J5CkBAIC0yNTcsNyAr
MjU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAKICAgICAgICAgLy8g
VGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgcmVzdWx0aW5nIGZyb20gdGhpcyBEb2N1bWVudExvYWRl
ci4KLSAgICAgICAgS1VSTCBkb2N1bWVudFVSTCgpIGNvbnN0OworICAgICAgICBVUkwgZG9jdW1l
bnRVUkwoKSBjb25zdDsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICAg
ICAgICAgdm9pZCBzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAz
ZmU1NmYzLi5iMGQ4NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlD
aGVjaykKIHsKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KLSAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
ID0gcmVxdWVzdC51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsKICAgICBB
U1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlz
RW1wdHkoKSk7CkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAg
ICBkaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKLWJvb2wgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCitib29s
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxs
b3dDcm9zc09yaWdpblJlcXVlc3RzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAwY2U5OTdh
Li5iZjMxYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCkBAIC00NSw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiAgICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3Mg
S1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQ7CkBA
IC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwcmVmbGln
aHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7CiAKICAgICAgICAgdm9pZCBsb2FkUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5KTsKLSAgICAgICAg
Ym9vbCBpc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJik7CisgICAgICAgIGJvb2wgaXNBbGxv
d2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CiAKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwCmluZGV4IDFhYzE0NzQuLjNlNjE0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcApAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6
Y2xlYXIoKQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbigpCiB7Ci0gICAgYmVnaW4oS1VS
TCgpKTsKKyAgICBiZWdpbihVUkwoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3Vt
ZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPERv
Y3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS0+aXNEaXNwbGF5aW5n
SW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91
bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChtX21pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFBs
dWdpbkRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsKQEAgLTExMiwxMiArMTEyLDEyIEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25z
dCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPmluVmlld1NvdXJjZU1vZGUoKSk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5j
ZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCit2b2lkIERvY3VtZW50
V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9j
dW1lbnQqIG93bmVyRG9jdW1lbnQpCiB7CiAgICAgLy8gV2UgZ3JhYiBhIGxvY2FsIGNvcHkgb2Yg
dGhlIFVSTCBiZWNhdXNlIGl0J3MgZWFzeSBmb3IgY2FsbGVycyB0byBzdXBwbHkKICAgICAvLyBh
IFVSTCB0aGF0IHdpbGwgYmUgZGVhbGxvY2F0ZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhp
cyBmdW5jdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjA+LgotICAgIEtVUkwgdXJsID0gdXJsUmVmZXJlbmNl
OworICAgIFVSTCB1cmwgPSB1cmxSZWZlcmVuY2U7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgZG9j
dW1lbnQgYmVmb3JlIGNsZWFyaW5nIHRoZSBmcmFtZSwgYmVjYXVzZSBpdCBtYXkgbmVlZCB0bwog
ICAgIC8vIGluaGVyaXQgYW4gYWxpYXNlZCBzZWN1cml0eSBjb250ZXh0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAzZDkwYjlkLi44MWQwZjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBE
b2N1bWVudFdyaXRlcl9oCiAjZGVmaW5lIERvY3VtZW50V3JpdGVyX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXBsYWNlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCiAgICAgdm9pZCBiZWdpbigpOwotICAgIHZvaWQgYmVnaW4oY29uc3QgS1VSTCYsIGJvb2wg
ZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCA9IDApOworICAgIHZvaWQgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRv
d09iamVjdEF2YWlsYWJsZSA9IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7CiAg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2
b2lkIGVuZCgpOwogICAgIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b2N1bWVudFdhc0xvYWRlZEFzUGFydE9mTmF2aWdhdGlvbigpOwogCiBwcml2YXRlOgotICAgIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IEtVUkwmKTsKKyAgICBQYXNz
UmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBVUkwmKTsKICAgICB2b2lkIGNs
ZWFyKCk7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggMGY4OGVlYi4uZWY2MDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTEzNSwxMiArMTM1LDEyIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlCiAgICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpCitQYXNzUmVmUHRyPEZyYW1lPiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGlu
dCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1l
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQogewogICAgIHJldHVybiAwOwogfQpAQCAtMTQ5
LDEzICsxNDksMTMgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdp
bihXaWRnZXQqKQogewogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVs
ZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
IHsKICAgICByZXR1cm4gMDsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlh
UGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDkxOWNhODQuLjMzYjJiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KSB7IH0KQEAgLTMxMiwxNCArMzEyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJh
bWVMb2FkQ29tcGxldGVkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVWaWV3U3RhdGUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxB
c1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBV
UkwmKSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyBy
ZXR1cm4gIiI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgeyBy
ZXR1cm4gIiI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShDYWNoZWRGcmFtZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KQEAgLTMzOCwxOSArMzM4LDE5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5
SXRlbSopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biosIGNvbnN0IEtVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IEtVUkwmLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgeyB9CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQs
IGludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0Kikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1l
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxN
ZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSB7IH0KICNlbmRpZgogCi0gICAg
dmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQorICAg
IHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSB7
IH0KQEAgLTUxNyw3ICs1MTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1l
bnUqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjb3B5SW1hZ2VUb0NsaXBib2FyZChjb25zdCBIaXRUZXN0UmVzdWx0JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCA5YmY0NDJhLi4zYzQxZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3Rh
dGljIGludDY0X3QgZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25l
eHRJZGVudGlmaWVyOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFU
b1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nVHlwZSkKK3N0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVSTCYg
dXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCiB7
CiAgICAgU3RyaW5nIGJvZHkgPSBkYXRhLmZsYXR0ZW5Ub1N0cmluZygpOwogCkBAIC04NCw3ICs4
NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKEtVUkwmIHVy
bCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0
dHJpYnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0cmluZyYgYWN0aW9uKQogewotICAgIC8vIEZJ
WE1FOiBDYW4gd2UgcGFyc2UgaW50byBhIEtVUkw/CisgICAgLy8gRklYTUU6IENhbiB3ZSBwYXJz
ZSBpbnRvIGEgVVJMPwogICAgIG1fYWN0aW9uID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGFjdGlvbik7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEZvcm1TdWJtaXNz
aW9uOjpBdHRyaWJ1dGVzOjpjb3B5RnJvbShjb25zdCBBdHRyaWJ1dGVzJiBvdGhlcikKICAgICBt
X2FjY2VwdENoYXJzZXQgPSBvdGhlci5tX2FjY2VwdENoYXJzZXQ7CiB9CiAKLWlubGluZSBGb3Jt
U3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3QgS1VSTCYgYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25z
dCBTdHJpbmcmIGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKK2lubGluZSBGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhv
ZCwgY29uc3QgVVJMJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGRhdGEsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV9h
Y3Rpb24oYWN0aW9uKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQpAQCAtMTY2LDcgKzE2Niw3IEBA
IFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBjb25zdCBBCiAgICAgfQogICAgIAogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGZvcm0tPmRvY3VtZW50KCk7Ci0gICAgS1VSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5j
b21wbGV0ZVVSTChjb3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50
LnVybCgpLnN0cmluZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CisgICAgVVJMIGFj
dGlvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKGNvcGllZEF0dHJpYnV0ZXMuYWN0aW9uKCku
aXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkgOiBjb3BpZWRBdHRyaWJ1dGVzLmFj
dGlvbigpKTsKICAgICBib29sIGlzTWFpbHRvRm9ybSA9IGFjdGlvblVSTC5wcm90b2NvbElzKCJt
YWlsdG8iKTsKICAgICBib29sIGlzTXVsdGlQYXJ0Rm9ybSA9IGZhbHNlOwogICAgIFN0cmluZyBl
bmNvZGluZ1R5cGUgPSBjb3BpZWRBdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOwpAQCAtMjIyLDEy
ICsyMjIsMTIgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNy
ZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwg
dGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGluZ1R5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGZv
cm1EYXRhLnJlbGVhc2UoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCkpOwogfQogCi1L
VVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJMKCkgY29uc3QKK1VSTCBGb3JtU3VibWlzc2lv
bjo6cmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNz
aW9uOjpQb3N0TWV0aG9kKQogICAgICAgICByZXR1cm4gbV9hY3Rpb247CiAKLSAgICBLVVJMIHJl
cXVlc3RVUkwobV9hY3Rpb24pOworICAgIFVSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKICAgICBy
ZXF1ZXN0VVJMLnNldFF1ZXJ5KG1fZm9ybURhdGEtPmZsYXR0ZW5Ub1N0cmluZygpKTsgICAgCiAg
ICAgcmV0dXJuIHJlcXVlc3RVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5oCmluZGV4IDRkMzU5M2IuLmMyZjgzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gKIAog
I2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYpOwog
ICAgIAotICAgIEtVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFVSTCByZXF1ZXN0VVJMKCkg
Y29uc3Q7CiAKICAgICBNZXRob2QgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0K
LSAgICBjb25zdCBLVVJMJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorICAg
IGNvbnN0IFVSTCYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KICAgICBjb25z
dCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CiAgICAgdm9pZCBj
bGVhclRhcmdldCgpIHsgbV90YXJnZXQgPSBTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CkBAIC0xMTEsMTEg
KzExMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBGb3JtU3VibWlzc2lv
bihNZXRob2QsIGNvbnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFzc1JlZlB0cjxG
b3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNvbnN0IFVSTCYgYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBi
b3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAgLy8g
RklYTUU6IEhvbGQgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlcyBpbnN0ZWFkIG9mIGluZGl2aWR1
YWwgbWVtYmVycy4KICAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgS1VSTCBtX2FjdGlvbjsKKyAg
ICBVUkwgbV9hY3Rpb247CiAgICAgU3RyaW5nIG1fdGFyZ2V0OwogICAgIFN0cmluZyBtX2NvbnRl
bnRUeXBlOwogICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGI3OGU0YS4uMTkxNGNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgRnJhbWVMb2FkZXI6
On5GcmFtZUxvYWRlcigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlz
IHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1w
dHkgZG9jdW1lbnQuCi0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRl
RG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKKyAgICBzZXRQb2xpY3lEb2N1
bWVudExvYWRlcihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3Qo
VVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5n
ZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50
TG9hZGVyLmdldCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSgpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2lu
ZygpOwpAQCAtMjg3LDEzICsyODcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9h
ZGluZyhib29sIGRlZmVycykKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxv
Y2F0aW9uKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIGJvb2wgcmVmcmVzaCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9u
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgYm9vbCByZWZyZXNoKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qoc2Vj
dXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgIl9zZWxmIiks
CiAgICAgICAgIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNlbmRS
ZWZlcnJlciwgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3Nl
ZFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dlcmluZ0V2ZW50LCBib29sIGxvY2tIaXN0
b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRT
ZW5kUmVmZXJyZXIpCit2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJp
bmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91
bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyKQogewogICAgIHVybFNlbGVjdGVkKEZy
YW1lTG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNv
dXJjZVJlcXVlc3QodXJsKSwgcGFzc2VkVGFyZ2V0KSwKICAgICAgICAgdHJpZ2dlcmluZ0V2ZW50
LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBE
b05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBz
dWJtaXNzaW9uKQogICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNz
aW9uLT5hY3Rpb24oKSkpIHsKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oS1VSTChzdWJtaXNzaW9uLT5hY3Rp
b24oKSkpKQorICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbihVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0
aW9uID0gdHJ1ZTsKICAgICAgICAgbV9mcmFtZS5zY3JpcHQoKS5leGVjdXRlSWZKYXZhU2NyaXB0
VVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJz
dERhdGEoKQogICAgIG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJl
Y3QoZGVsYXksIHVybCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJy
ZXIoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJl
cihjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCk7CiB9CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tDYWxsSW1wbGljaXRDbG9zZSgpCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5p
bXBsaWNpdENsb3NlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRG
cmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxk
RnJhbWUpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJhbWUpCiB7CiAgICAg
QVNTRVJUKGNoaWxkRnJhbWUpOwogCkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogICAgIGlmICghbWFp
blJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIFN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1pbWVU
eXBlKCksIG1haW5SZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIEtVUkwoKSk7CisgICAgU3Vic3Rp
dHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEobWFpblJlc291cmNlLT5kYXRhKCksIG1haW5SZXNvdXJj
ZS0+bWltZVR5cGUoKSwgbWFpblJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSwgVVJMKCkpOwogICAg
IAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1haW5SZXNvdXJjZS0+dXJsKCkpOwogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
QXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCiB9CiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1l
TG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09i
amVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQ
bHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAK
QEAgLTk1Myw3ICs5NTMsNyBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nT3JpZ2luKCkg
Y29uc3QKICAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpjaGVja0lmRm9ybUFjdGlvbkFsbG93
ZWRCeUNTUChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpjaGVja0lm
Rm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdWJtaXR0ZWRGb3JtVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MDAwLDcgKzEwMDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcm92aXNpb25hbExvYWRTdGFydGVk
KCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9uUHJvdGVj
dGlvbigpCiB7Ci0gICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgIG1fc3VibWl0
dGVkRm9ybVVSTCA9IFVSTCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVGaXJzdFBh
cnR5Rm9yQ29va2llcygpCkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVGaXJzdFBhcnR5Rm9yQ29va2llcygpCiAgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29r
aWVzKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpz
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVy
OjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgmbV9mcmFtZSkpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyh1cmwpOwpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCiAKIC8vIFRoaXMg
ZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMsIGV4Y2VwdCBp
dCByZWxpZXMgb24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVj
a2VkIHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRo
aW5nIHRvIGRvLgotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtV
UkwmIHVybCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LCBi
b29sIGlzTmV3TmF2aWdhdGlvbikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVu
dChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LCBib29sIGlzTmV3TmF2aWdhdGlvbikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Rh
dGUgb2JqZWN0LCB3ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VS
VCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAog
ICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2UncyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwg
dG8gZmFrZSB0aGUgVVJMIGNoYW5nZQotICAgIEtVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVu
dCgpLT51cmwoKTsKKyAgICBVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsK
ICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnNldFVSTCh1cmwpOwogICAgIHNldE91dGdvaW5nUmVm
ZXJyZXIodXJsKTsKICAgICBkb2N1bWVudExvYWRlcigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNh
bWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBsb2NrSGlzCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24g
YXdheSBpbnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExv
YWRlci4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKLSAgICBLVVJMIHVybCA9
IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgp
KTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyKCktPmNhbkRpc3BsYXkodXJsKSkgewpAQCAt
MTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICB9CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJh
bWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3Qg
VVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLAogICAgIFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRl
KQogewogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMpCkBAIC0xMjcyLDE0ICsxMjcyLDE0IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBjb25zdCBTdHJpCiAgICAgfQogfQogCi1TdWJzdGl0dXRlRGF0YSBGcmFt
ZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1N1
YnN0aXR1dGVEYXRhIEZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQo
dXJsKSkKICAgICAgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKCk7CiAgICAgU3RyaW5nIHNyY2Rv
YyA9IG1fZnJhbWUub3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3JjZG9jQXR0cik7
CiAgICAgQVNTRVJUKCFzcmNkb2MuaXNOdWxsKCkpOwogICAgIENTdHJpbmcgZW5jb2RlZFNyY2Rv
YyA9IHNyY2RvYy51dGY4KCk7Ci0gICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwg
InRleHQvaHRtbCIsICJVVEYtOCIsIEtVUkwoKSk7CisgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRh
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9j
Lmxlbmd0aCgpKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFVSTCgpKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQpAQCAt
MTM4Niw3ICsxMzg2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3RhdGU7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uID0gZm9ybVN0YXRlOwogCi0gICAgY29uc3QgS1VSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1
ZXN0KCkudXJsKCk7CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSBsb2FkZXItPnJlcXVlc3QoKS51
cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QgPSBsb2FkZXItPnJlcXVlc3QoKS5o
dHRwTWV0aG9kKCk7CiAKICAgICBpZiAoc2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihp
c0Zvcm1TdWJtaXNzaW9uLCBodHRwTWV0aG9kLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwg
bmV3VVJMKSkgewpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBG
cmFtZUxvYWRlcjo6aW5pdGlhbFJlcXVlc3QoKSBjb25zdAogICAgIHJldHVybiBhY3RpdmVEb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6
d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6d2ls
bExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1cmwpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QodXJsKTsKIApAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2ls
bExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogCiBib29sIEZyYW1lTG9hZGVyOjpzaG91
bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIp
CiB7Ci0gICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwo
KTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7
CiAKICAgICBpZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNDgyLDcgKzE0ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3Zl
cnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgICAgICByZXR1cm47CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3Qo
KTsKLSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFi
bGVVUkwoKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJl
YWNoYWJsZVVSTCgpOwogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXF1ZXN0LnNldFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE0OTgsNyArMTQ5OCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcpCiAgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZy
YW1lTG9hZFR5cGVSZWxvYWQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
T3ZlcnJpZGVVUkwoY29uc3QgS1VSTCYgb3ZlcnJpZGVVcmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQp
Cit2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVVUkwoY29uc3QgVVJMJiBvdmVy
cmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gUmVwbGFjZSBlcnJvci1w
YWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8gcmVhY2guCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOwot
ICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVS
TCgpOworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hh
YmxlVVJMKCk7CiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGlu
aXRpYWxSZXF1ZXN0LnNldFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE5MTcsNyArMTkxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChi
b29sIGNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzCiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRp
b24gPSBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25z
dCBLVVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3Qg
VVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCkKIHsKICAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QodXJsLCBzZWNvbmRzLCBmaXJlRGF0ZSk7CiAgICAgCkBAIC0xOTMyLDcgKzE5MzIsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmIHVybCwgZG91
YmxlIHNlY29uZHMsIGRvdWJsZSBmaXJlRAogICAgIG1fcXVpY2tSZWRpcmVjdENvbWluZyA9IChs
b2NrQmFja0ZvcndhcmRMaXN0IHx8IGhpc3RvcnkoKS5jdXJyZW50SXRlbVNob3VsZEJlUmVwbGFj
ZWQoKSkgJiYgbV9kb2N1bWVudExvYWRlciAmJiAhbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3Jt
QWN0aW9uOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYg
Y3VycmVudFVSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpCitib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRSZWxvYWQoY29uc3QgVVJMJiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0
aW9uVVJMKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcnVsZTogIkRv
bid0IHJlbG9hZCBpZiBuYXZpZ2F0aW5nIGJ5IGZyYWdtZW50IHdpdGhpbgogICAgIC8vIHRoZSBz
YW1lIFVSTCwgYnV0IGRvIHJlbG9hZCBpZiBnb2luZyB0byBhIG5ldyBVUkwgb3IgdG8gdGhlIHNh
bWUgVVJMIHdpdGggbm8KQEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9w
ZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICAvLyBEb24ndCByZS1lbWl0IHRo
ZSBsb2FkIGV2ZW50LgogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCi0gICAg
S1VSTCB1cmwgPSBjYWNoZWRGcmFtZS51cmwoKTsKKyAgICBVUkwgdXJsID0gY2FjaGVkRnJhbWUu
dXJsKCk7CiAKICAgICAvLyBGSVhNRTogSSBzdXNwZWN0IHRoaXMgYmxvY2sgb2YgY29kZSBkb2Vz
bid0IGRvIGFueXRoaW5nLgogICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYm
ICF1cmwuaG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmlzRW1wdHkoKSkKQEAgLTIxNDIs
NyArMjE0Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgICAgICBpZiAocGRsID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKICAgICAgICAgICAgICAgICAgICAgY2xlYXJQcm92aXNpb25hbExvYWQoKTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT51
bnJlYWNoYWJsZVVSTCgpOworICAgICAgICAgICAgICAgICAgICBVUkwgdW5yZWFjaGFibGVVUkwg
PSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSAmJiB1bnJlYWNoYWJsZVVSTCA9
PSBwZGwtPnJlcXVlc3QoKS51cmwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJl
c2V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjIzMCwxMiArMjIzMCwxMiBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwog
fQogCi1zdGF0aWMgS1VSTCBvcmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSog
cGFnZSkKK3N0YXRpYyBVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2Uq
IHBhZ2UpCiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGxvZ2ljIGJlIHJlcGxhY2VkIHdpdGgg
bV9mcmFtZS5kb2N1bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29va2llcygpPwogICAgIC8vIEl0IGhh
cyB0aGUgc2FtZSBtZWFuaW5nIG9mICJwYWdlIGEgdXNlciB0aGlua3MgaXMgdGhlIGN1cnJlbnQg
b25lIi4KIAotICAgIEtVUkwgb3JpZ2luYWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAg
IGludCBiYWNrQ291bnQgPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmJhY2tDb3VudCgpOwogICAgIGZv
ciAoaW50IGJhY2tJbmRleCA9IDA7IGJhY2tJbmRleCA8PSBiYWNrQ291bnQ7IGJhY2tJbmRleCsr
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBBdCBvbmUgcG9pbnQgd2UgaGFkIGNvZGUgaGVyZSB0byBj
aGVjayBhICJ3YXMgdXNlciBnZXN0dXJlIiBmbGFnLgpAQCAtMjI0OSwxMiArMjI0OSwxMiBAQCBz
dGF0aWMgS1VSTCBvcmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSogcGFnZSkK
ICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFVSTDsKICAgICB9CiAKLSAgICByZXR1cm4gS1VS
TCgpOworICAgIHJldHVybiBVUkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2lu
YWxVUkxGb3JEb3dubG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IEtVUkwgb3JpZ2luYWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAgIAogICAgIC8vIElm
IHRoZXJlIGlzIG5vIHJlZmVycmVyLCBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIGluaXRp
YXRlZCBkaXJlY3RseSwgc28gY3VycmVudCBkb2N1bWVudCBpcwogICAgIC8vIGNvbXBsZXRlbHkg
dW5yZWxhdGVkIHRvIGl0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUyOTQ2OTE+LgpAQCAtMjI4MCw3
ICsyMjgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICAgICAgaG9zdE9ubHlVUkxT
dHJpbmcgPSBtYWtlU3RyaW5nKG9yaWdpbmFsVVJMLnByb3RvY29sKCksICI6Ly8iLCBvcmlnaW5h
bFVSTC5ob3N0KCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZmlyc3RQYXJ0eUZvckNv
b2tpZXMgYmFjayB0byBtYWluRG9jdW1lbnRVUkwuIEl0IHdhcyBhIG1pc3Rha2UgdG8gdGhpbmsg
dGhhdCBpdCB3YXMgb25seSB1c2VkIGZvciBjb29raWVzLgotICAgICAgICByZXF1ZXN0LnNldEZp
cnN0UGFydHlGb3JDb29raWVzKEtVUkwoS1VSTCgpLCBob3N0T25seVVSTFN0cmluZykpOworICAg
ICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFVSTChVUkwoKSwgaG9zdE9ubHlV
UkxTdHJpbmcpKTsKICAgICB9CiB9CiAKQEAgLTIzNzIsNyArMjM3Miw3IEBAIGludCBGcmFtZUxv
YWRlcjo6bnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29uc3QKICAg
ICByZXR1cm4gY291bnQ7CiB9CiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2NsaWVudC51c2VyQWdl
bnQodXJsKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5VXNlckFnZW50T3Zl
cnJpZGUoJm1fZnJhbWUsICZ1c2VyQWdlbnQpOwpAQCAtMjUzOSw3ICsyNTM5LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1
ZXN0LCBjb25zdCBTdHJpbmcKICAgICAvLyBidW5jaCBvZiBwYXJhbWV0ZXJzIHRoYXQgd291bGQg
Y29tZSBpbiBoZXJlIGFuZCB0aGVuIGJlIGJ1aWx0IGJhY2sgdXAgdG8gYSBSZXNvdXJjZVJlcXVl
c3QuICBJbiBjYXNlCiAgICAgLy8gYW55IGNhbGxlciBkZXBlbmRzIG9uIHRoZSBpbW11dGFiaWxp
dHkgb2YgdGhlIG9yaWdpbmFsIFJlc291cmNlUmVxdWVzdCwgSSdtIHJlYnVpbGRpbmcgYSBSZXNv
dXJjZVJlcXVlc3QKICAgICAvLyBmcm9tIHNjcmF0Y2ggYXMgaXQgZGlkIGFsbCBhbG9uZy4KLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBpblJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSBpblJlcXVlc3QudXJsKCk7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGluUmVx
dWVzdC5odHRwQm9keSgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBpblJlcXVl
c3QuaHR0cENvbnRlbnRUeXBlKCk7CiAgICAgU3RyaW5nIG9yaWdpbiA9IGluUmVxdWVzdC5odHRw
T3JpZ2luKCk7CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZl
ZE1haW5SZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiAgICAgaWYg
KG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLnVybCgpKQotICAgICAgICAg
ICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICAgICAgbV9zdWJtaXR0ZWRG
b3JtVVJMID0gVVJMKCk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBt
YWRlIGEgcGFnZSBjYWNoZSBpdGVtLCBidXQgbm93IHdlJ3JlIGJhaWxpbmcgb3V0IGR1ZSB0byBh
biBlcnJvciBiZWZvcmUgd2UgZXZlcgogICAgICAgICAvLyB0cmFuc2l0aW9uZWQgdG8gdGhlIG5l
dyBwYWdlIChiZWZvcmUgV2ViRnJhbWVTdGF0ZSA9PSBjb21taXQpLiAgVGhlIGdvYWwgaGVyZSBp
cyB0byByZXN0b3JlIGFueSBzdGF0ZQpAQCAtMjY3MSw3ICsyNjcxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBS
ZXNvdXJjZVJlcXUKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQocmVxdWVzdC51cmwoKSwgMCwgIWlz
UmVkaXJlY3QpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnRO
YXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9k
LCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBjb25zdCBLVVJMJiB1cmwpCitib29sIEZyYW1lTG9h
ZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lv
biwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGlmIHdlIGFyZSBzdWJtaXR0
aW5nIGEgZm9ybSB3aXRoIG1ldGhvZCBvdGhlciB0aGFuICJHRVQiLCBleHBsaWNpdGx5IHJlbG9h
ZGluZywKICAgICAvLyBjdXJyZW50bHkgZGlzcGxheWluZyBhIGZyYW1lc2V0LCBvciBpZiB0aGUg
VVJMIGRvZXMgbm90IGhhdmUgYSBmcmFnbWVudC4KQEAgLTI2ODksNyArMjY4OSw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBjb25zdCBTCiAgICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPmlzRnJh
bWVTZXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJl
bnRCb3VuZGFyeShjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0Zy
YWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTI3NDUsNyArMjc0
NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKICAgICB9CiAKICAgICBpZiAo
IXNob3VsZENsb3NlKQotICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBLVVJMKCk7CisgICAg
ICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IFVSTCgpOwogCiAgICAgbV9jdXJyZW50TmF2aWdhdGlv
bkhhc1Nob3duQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZmFsc2U7CiAgICAgcmV0dXJuIHNo
b3VsZENsb3NlOwpAQCAtMjk3Nyw3ICsyOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlV
c2VyQWdlbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJlcXVlc3Quc2V0SFRUUFVz
ZXJBZ2VudCh1c2VyQWdlbnQpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IEtVUkwm
IHVybCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK2Jvb2wgRnJhbWVMb2FkZXI6
OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAg
ICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZnJhbWUuZG9jdW1lbnQoKSwgRmVhdHVyZU9i
c2VydmVyOjpYRnJhbWVPcHRpb25zKTsKIApAQCAtMzAzNSwxNCArMzAzNSwxNCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAgIGNvbW1p
dFByb3Zpc2lvbmFsTG9hZCgpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAoIWhpc3RvcnkoKS5jdXJyZW50SXRlbSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHVybCA9PSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKS0+dXJsKCkgfHwgdXJs
ID09IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpLT5vcmlnaW5hbFVSTCgpOwogfQogCi1ib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJs
KSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodXJs
LnN0cmluZygpLCAiYWJvdXQ6c3JjZG9jIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMx
MzEsOSArMzEzMSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBLVVJMIGl0ZW1VUkwgPSBpdGVtLT51cmwoKTsKLSAgICBLVVJMIGl0ZW1P
cmlnaW5hbFVSTCA9IGl0ZW0tPm9yaWdpbmFsVVJMKCk7Ci0gICAgS1VSTCBjdXJyZW50VVJMOwor
ICAgIFVSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7CisgICAgVVJMIGl0ZW1PcmlnaW5hbFVSTCA9
IGl0ZW0tPm9yaWdpbmFsVVJMKCk7CisgICAgVVJMIGN1cnJlbnRVUkw7CiAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCkpCiAgICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT51cmwo
KTsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaXRlbS0+Zm9ybURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZjU3ZTVlZi4uODY0ZGI2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxs
IGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICB2b2lk
IGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVy
LCBGcmFtZSopOworICAgIHZvaWQgbG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqKTsKICAgICB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVl
c3QgYW5kIGxvYWRVUkwuCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4sIFNob3VsZFNlbmRSZWZlcnJlcik7CiAKQEAgLTExNCwxMyArMTE0LDEzIEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hh
cj4mIGRhdGEpOwogCi0gICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1
ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCByZWZyZXNoID0gZmFsc2Up
OwotICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOworICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxv
Y2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCBy
ZWZyZXNoID0gZmFsc2UpOworICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlcik7CiAgICAgdm9pZCBzdWJt
aXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAogICAgIHZvaWQgcmVsb2FkKGJv
b2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAgICAgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVF
bmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwotICAgIHZvaWQgcmVsb2Fk
V2l0aE92ZXJyaWRlVVJMKGNvbnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVs
b2FkID0gZmFsc2UpOworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYg
b3ZlcnJpZGVVcmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAKICAgICB2b2lkIG9w
ZW4oQ2FjaGVkRnJhbWVCYXNlJik7CiAgICAgdm9pZCBsb2FkSXRlbShIaXN0b3J5SXRlbSosIEZy
YW1lTG9hZFR5cGUpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0KCkgY29uc3Q7CiAgICAgdm9pZCByZWNlaXZlZE1h
aW5SZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgd2lsbExv
YWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYpOworICAgIGJvb2wgd2lsbExvYWRNZWRpYUVsZW1lbnRV
UkwoVVJMJik7CiAKICAgICB2b2lkIGhhbmRsZUZhbGxiYWNrQ29udGVudCgpOwogCkBAIC0xNzUs
NyArMTc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2Fk
ZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAotICAgIGJvb2wgc2hv
dWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29s
IHNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAg
IEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlY2VpdmVkRmlyc3REYXRhKCk7CiAKICAgICB2b2lkIGhhbmRsZWRP
bmxvYWRFdmVudHMoKTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKQEAgLTIxOSw3
ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JjZVNhbmRib3hGbGFncyhTYW5kYm94Rmxh
Z3MgZmxhZ3MpIHsgbV9mb3JjZWRTYW5kYm94RmxhZ3MgfD0gZmxhZ3M7IH0KICAgICBTYW5kYm94
RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrSWZG
b3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNoZWNr
SWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgRnJhbWUq
IG9wZW5lcigpOwogICAgIHZvaWQgc2V0T3BlbmVyKEZyYW1lKik7CkBAIC0yMzAsNyArMjMwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICB2b2lkIHNldE91
dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJl
cihjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgbG9hZERvbmUoKTsKICAgICB2b2lkIGZpbmlzaGVk
UGFyc2luZygpOwpAQCAtMjQ4LDExICsyNDgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eVVzZXJBZ2VudChSZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0
TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgdW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNvbXBsZXRlZCgpOwogICAgIGJvb2wgYWxs
QW5jZXN0b3JzQXJlQ29tcGxldGUoKSBjb25zdDsgLy8gaW5jbHVkaW5nIHRoaXMKLSAgICB2b2lk
IGNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVE
YXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOworICAgIHZvaWQgY2xpZW50UmVkaXJlY3Rl
ZChjb25zdCBVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hl
ZChib29sIGNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzcyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBwdWJsaWMgYmVjYXVzZSB0aGlzIGFzeW5jaHJvbm91cyBjYWxsYmFjayBmcm9tIHRoZSBGcmFt
ZUxvYWRlckNsaWVudApAQCAtMjY0LDcgKzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3Vw
cHJlc3NPcGVuZXJJbk5ld0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc09wZW5lcklu
TmV3RnJhbWU7IH0KIAotICAgIHN0YXRpYyBPYmplY3RDb250ZW50VHlwZSBkZWZhdWx0T2JqZWN0
Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgc3RhdGljIE9iamVjdENvbnRlbnRUeXBl
IGRlZmF1bHRPYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgYm9vbCBxdWlj
a1JlZGlyZWN0Q29taW5nKCkgY29uc3QgeyByZXR1cm4gbV9xdWlja1JlZGlyZWN0Q29taW5nOyB9
CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQcm9ncmVzc2lu
Z1N0YXR1c0NoYW5nZWQoKTsKIAotICAgIGNvbnN0IEtVUkwmIHByZXZpb3VzVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91c1VSTDsgfQorICAgIGNvbnN0IFVSTCYgcHJldmlvdXNVUkwoKSBj
b25zdCB7IHJldHVybiBtX3ByZXZpb3VzVVJMOyB9CiAKICAgICB2b2lkIGZvcmNlUGFnZVRyYW5z
aXRpb25JZk5lZWRlZCgpOwogCkBAIC0zMDQsNyArMzA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwogCiAgICAgdm9pZCB1cGRhdGVG
aXJzdFBhcnR5Rm9yQ29va2llcygpOwotICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
Y29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJM
Jik7CiAgICAgCiAgICAgdm9pZCBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzTWFpblJlc291cmNlKTsKIApAQCAtMzEyLDcgKzMx
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFn
ZSopOwogICAgIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CiAKLSAgICBTdWJzdGl0dXRlRGF0
YSBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpOworICAgIFN1YnN0aXR1
dGVEYXRhIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0
YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRD
b250aW51ZSk7CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9v
bCBzaG91bGRDb250aW51ZSk7CkBAIC0zMjQsOCArMzI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICB2b2lkIGNvbnRpbnVl
RnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKLSAgICBib29sIHNob3VsZFBlcmZvcm1GcmFnbWVu
dE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRo
b2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IEtVUkwmKTsKLSAgICB2b2lkIHNjcm9sbFRvRnJhZ21l
bnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgS1VSTCYpOworICAgIGJvb2wgc2hvdWxkUGVyZm9y
bUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYg
aHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlwZSwgY29uc3QgVVJMJik7CisgICAgdm9pZCBzY3JvbGxU
b0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBjaGVj
a0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpOwogCkBAIC0zNTIsMTkgKzM1MiwxOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBsb2FkUG9zdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgICAgICAgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRG
cmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbgogICAgICAgICBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgUGFz
c1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7Ci0gICAgdm9pZCBsb2FkVVJM
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbiBvciBkaXNwYXRjaGVzIHRvIG5hdmlnYXRpb24gcG9saWN5IGRl
bGVnYXRlCisgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCAgICAgICAgICAvLyBDYWxsZWQgYnkgbG9hZEZy
YW1lUmVxdWVzdCwgY2FsbHMgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uIG9yIGRpc3BhdGNoZXMg
dG8gbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwg
RnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAKICAgICB2b2lkIHJlbG9hZFdpdGhSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZW5kVG9FbmRSZWxvYWQpOwogCi0gICAgYm9vbCBzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYg
Y3VycmVudFVSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIGJvb2wgc2hvdWxk
UmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7
CiAKICAgICB2b2lkIHJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiwgdW5zaWdu
ZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBkZXRhY2hD
aGlsZHJlbigpOwogICAgIHZvaWQgY2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSopOwogCi0gICAg
dm9pZCBsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOworICAgIHZv
aWQgbG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOwogCiAgICAgdm9p
ZCBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVk
KCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2hlY2tM
b2FkQ29tcGxldGUoKTsKICAgICB2b2lkIHN0YXJ0Q2hlY2tDb21wbGV0ZVRpbWVyKCk7CiAKLSAg
ICBib29sIHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICBib29sIHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0
OwogCiAgICAgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7
CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX25lZWRzQ2xlYXI7
CiAKLSAgICBLVVJMIG1fc3VibWl0dGVkRm9ybVVSTDsKKyAgICBVUkwgbV9zdWJtaXR0ZWRGb3Jt
VVJMOwogCiAgICAgVGltZXI8RnJhbWVMb2FkZXI+IG1fY2hlY2tUaW1lcjsKICAgICBib29sIG1f
c2hvdWxkQ2FsbENoZWNrQ29tcGxldGVkOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsK
IAotICAgIEtVUkwgbV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBS
ZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcmVxdWVzdGVkSGlzdG9yeUl0ZW07CiAgICAgT3duUHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYWY3NmJiNC4uZGM3ZDll
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc2LDcg
Kzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJ
bkVsZW1lbnQ7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNz
IFVSTDsKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKICAgICBjbGFzcyBQYWdlOwpAQCAtMTQwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUgaW50ZXJ2
YWwsIGRvdWJsZSBmaXJlRGF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91
YmxlIGZpcmVEYXRlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmln
YXRlV2l0aGluUGFnZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSA9IDA7CkBAIC0yMTQsOCArMjE0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdpbiBo
YXMgcnVuIGFjdGl2ZSBjb250ZW50IChzdWNoIGFzIGEKICAgICAgICAgLy8gc2NyaXB0KSBmcm9t
IGFuIGluc2VjdXJlIHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4K
ICAgICAgICAgLy8gc3ByZWFkIHRvIG90aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9
IDA7CkBAIC0yNDIsOSArMjQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IEtVUkwmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgVVJMJikgPSAwOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKikgPSAwOwpAQCAtMjU4LDIxICsyNTgsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKLSAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyopIGNvbnN0IHsgfQog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3Qg
SW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0Kikg
PSAwOwogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RD
b250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqKSA9IDA7CkBAIC0yOTQsMTYgKzI5NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IEtVUkwm
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2Fk
TWVkaWFFbGVtZW50VVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkgeyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVy
biBlbmFibGVkUGVyU2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0
RnJvbVNvdXJjZShib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgS1VSTCYpIHsgcmV0dXJu
IGVuYWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRG
cm9tU291cmNlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwmKSB7IHJldHVybiBl
bmFibGVkUGVyU2V0dGluZ3M7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBj
b25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkUGVyU2V0
dGluZ3MsIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dSdW5uaW5nSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwm
KSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFs
bG93SW1hZ2UoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVu
YWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5n
SW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgYWxsb3dSdW5uaW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBlclNldHRp
bmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0
aW5nczsgfQogCiAgICAgICAgIC8vIFRoaXMgY2FsbGJhY2sgbm90aWZpZXMgdGhlIGNsaWVudCB0
aGF0IHRoZSBmcmFtZSB3YXMgYWJvdXQgdG8gcnVuCiAgICAgICAgIC8vIEphdmFTY3JpcHQgYnV0
IGRpZCBub3QgYmVjYXVzZSBhbGxvd1NjcmlwdCByZXR1cm5lZCBmYWxzZS4gV2UKQEAgLTMxNSwx
MSArMzE1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZE5vdEFsbG93UGx1Z2lucygpIHsgfQogCiAgICAgICAgIC8vIENsaWVudHMgdGhhdCBnZW5lcmFs
bHkgZGlzYWxsb3cgdW5pdmVyc2FsIGFjY2VzcyBjYW4gbWFrZSBleGNlcHRpb25zIGZvciBwYXJ0
aWN1bGFyIFVSTHMuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFj
Y2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBLVVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0
IFVSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGVtYmVkZGVyIGludGVyY2VwdGVkIHRoZSBwb3N0TWVzc2Fn
ZSBjYWxsCiAgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudChTZWN1cml0eU9yaWdpbiogLyp0YXJnZXQqLywgTWVzc2FnZUV2ZW50KikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGY5OGMzOGMuLjcxNTYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRlZExpbmsoUGFnZSogcGFn
ZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnZpc2l0ZWRM
aW5rU3RyYXRlZ3koKS0+YWRkVmlzaXRlZExpbmsocGFnZSwgdmlzaXRlZExpbmtIYXNoKHVybC5z
dHJpbmcoKSkpOwogfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAg
IEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKICAgICBib29s
IG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKLSAgICBjb25zdCBLVVJMJiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IGZyYW1l
TG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghZnJh
bWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAg
IGlmICghaGlzdG9yeVVSTC5pc0VtcHR5KCkpIHsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExp
c3QoKQogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVS
TCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwor
ICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAgIGlmICghbV9jdXJyZW50
SXRlbSAmJiAhbV9mcmFtZS50cmVlKCkucGFyZW50KCkpIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgfQog
CiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlz
dG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9y
eSgpOwogCiAgICAgaWYgKCFoaXN0b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsK
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTYwMywxMCArNjAz
LDEwIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwogCi0g
ICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVS
TCgpOwogCi0gICAgS1VSTCB1cmw7Ci0gICAgS1VSTCBvcmlnaW5hbFVSTDsKKyAgICBVUkwgdXJs
OworICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHVybCA9IHVucmVhY2hhYmxlVVJMOwpAQCAtODUyLDcgKzg1Miw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZFZpc2l0ZWRM
aW5rKHBhZ2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNp
dGVkTGluayhwYWdlLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIAogfQpAQCAtODcz
LDcgKzg3Myw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKSk7Ci0gICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5w
YWdlKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNpdGVk
TGluayhtX2ZyYW1lLnBhZ2UoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CiAg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBiOWJjY2Q5Li4wZDkzZDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04NSw4ICs4NSw3IEBAIHZvaWQg
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAg
IG1fY2FjaGVkTGlua1Jlc291cmNlID0gMDsKIH0KIAotYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGlu
ayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3Qg
S1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGlu
ayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBp
ZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFo
cmVmLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggZTI1MTM1
Ny4uMjc3ZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC00Miw3ICs0Miw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIHN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOwogCiAvLyBUaGUgTGlua0xvYWRl
ciBjYW4gbG9hZCBsaW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNl
IGFuZCBwcmVmZXRjaC4KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgdm9pZCByZWxlYXNlZCgp
OwotICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50Kik7Cisg
ICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBVUkwmLCBEb2N1bWVudCopOwogCiBwcml2
YXRlOgogICAgIHZvaWQgbGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2FkZXI+Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggY2Uw
YThkYy4uNTZhMjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBGcmFtZUxvYWRlckNsaWVudCYgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6Y2xpZW50KCkgY29uc3QKIH0KIAogLy8gc3RhdGljCi1ib29sIE1peGVkQ29u
dGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjppc01peGVkQ29u
dGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmIChzZWN1cml0eU9yaWdpbi0+cHJvdG9jb2woKSAhPSAiaHR0cHMiKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIFdlIG9ubHkgY2FyZSBhYm91dCBIVFRQUyBzZWN1cml0eSBvcmlnaW5z
LgpAQCAtNjMsNyArNjMsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgSwogICAgIHJldHVybiAh
U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKHVybCk7CiB9CiAKLWJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6
Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJp
dHlPcmlnaW4sIHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzcsNyArNzcsNyBAQCBi
b29sIE1peGVkQ29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZwogICAgIHJldHVybiBhbGxvd2VkOwogfQogCi1ib29sIE1p
eGVkQ29udGVudENoZWNrZXI6OmNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVudChz
ZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3
IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9p
ZCBNaXhlZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IEtVUkwmIHRhcmdldCkgY29uc3QKK3ZvaWQgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBj
b25zdCBVUkwmIHRhcmdldCkgY29uc3QKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiAi
LCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZl
bCwgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
aAppbmRleCBkMGQ3YjFlLi44ZTRmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBNaXhlZENvbnRlbnRDaGVj
a2VyIHsKQEAgLTQ2LDE1ICs0NiwxNSBAQCBjbGFzcyBNaXhlZENvbnRlbnRDaGVja2VyIHsKIHB1
YmxpYzoKICAgICBNaXhlZENvbnRlbnRDaGVja2VyKEZyYW1lKik7CiAKLSAgICBib29sIGNhbkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgY29uc3Q7
Ci0gICAgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJik7CisgICAgYm9vbCBjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBjYW5SdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOwogCiBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBoYXZlIGEgc2VwYXJhdGUg
Y2xpZW50IGZyb20gRnJhbWVMb2FkZXIuCiAgICAgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgp
IGNvbnN0OwogCi0gICAgdm9pZCBsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5n
JiBhY3Rpb24sIGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBh
bGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBG
cmFtZSogbV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aAppbmRleCBjMzZiMTcwLi41ZTIxZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5pc0Vt
cHR5KCk7IH0KIAotICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VS
ZXF1ZXN0LnVybCgpOyB9CisgICAgICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlUmVxdWVzdC51cmwoKTsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAKICAgICAg
ICAgTmF2aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDIyZDEzZmEu
LjlhYjk1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBm
cmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9j
a0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBt
X3VybCksIG1fcmVmZXJyZXIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwg
ZmFsc2UpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lKiBm
cmFtZSwgVGltZXI8TmF2aWdhdGlvblNjaGVkdWxlcj4qIHRpbWVyKQpAQCAtMTE5LDcgKzExOSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9oYXZlVG9sZENsaWVudCA9IHRydWU7CiAKICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgp
ID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50UmVkaXJlY3Rl
ZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsg
dGltZXItPm5leHRGaXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICAg
ICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudFJlZGlyZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXItPm5leHRGaXJlSW50ZXJ2YWwo
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RvcFRpbWVyKEZyYW1lKiBmcmFtZSwgYm9vbCBuZXdMb2FkSW5Qcm9ncmVzcykKQEAgLTE2MCw4
ICsxNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQog
ICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNV
c2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRl
bHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBib29sIHJlZnJlc2ggPSBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbigpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkp
LCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHJlZnJl
c2gpOworICAgICAgICBib29sIHJlZnJlc2ggPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkp
KTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2lu
KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3Rvcnko
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCByZWZyZXNoKTsKICAgICB9CiB9OwogCkBAIC0xODEs
NyArMTgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkK
ICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2Fz
VXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0
ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNo
YW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwo
KSksIHJlZmVycmVyKCksIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgdHJ1
ZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdp
bigpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCksIGxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgdHJ1ZSk7CiAgICAgfQogfTsKIApAQCAtMzUwLDcg
KzM1MCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sCiAKICAgICAvLyBJZiB0aGUgVVJMIHdl
J3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwg
ZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNj
aGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCi0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwog
ICAgIGlmIChwYXJzZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgcGFyc2VkVVJM
KSkgewogICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4sIG1fZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4OCw3ICszODgsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCgpCiB7CiAgICAgaWYg
KCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0
IEtVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIGNvbnN0IFVSTCYg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bp
bmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4
IDMxMGVjYWYuLjRiMjQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBpbmdMb2FkZXI6
OmxvYWRJbWFnZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGluZ0xvYWRl
cjo6bG9hZEltYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUsIHVybCk7CkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGlu
Zwotdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBp
bmdVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
UGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29uc3QgVVJMJiBkZXN0aW5h
dGlvblVSTCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChwaW5nVVJMKTsKICNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6
c2VuZFBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBk
ZXN0aW5hCiAgICAgVU5VU0VEX1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCi12b2lkIFBp
bmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBy
ZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKK3ZvaWQgUGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QocmVwb3J0VVJMKTsKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmgKaW5kZXggNGZlMTdhZC4uNjkzOWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGlu
Z0xvYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwpAQCAtNTQsOSArNTQsOSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUGlu
Z0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBpbmdMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBLVVJMJiB1cmwpOwotICAg
IHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25VUkwpOwotICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnQoRnJhbWUqLCBjb25zdCBLVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJl
cG9ydCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEltYWdlKEZyYW1lKiwgY29uc3QgVVJMJiB1cmwp
OworICAgIHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgVVJMJiBwaW5nVVJMLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kVmlvbGF0aW9u
UmVwb3J0KEZyYW1lKiwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IHJlcG9ydCk7CiAKICAgICB2aXJ0dWFsIH5QaW5nTG9hZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oCmluZGV4IGQzYWI3NDEuLmNlMjMyNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYWNlaG9sZGVyRG9jdW1lbnQg
RklOQUwgOiBwdWJsaWMgRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYWNlaG9sZGVyRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhY2Vob2xkZXJEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVSZW5kZXJU
cmVlKCkgT1ZFUlJJREU7CiAKLSAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CmluZGV4IDFkMjQzYjUuLmE4ZDIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIgpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodEZvck5vbkhUVFBQcm90b2NvbHMgPSAyMDsK
IC8vIE1hdGNoIHRoZSBwYXJhbGxlbCBjb25uZWN0aW9uIGNvdW50IHVzZWQgYnkgdGhlIG5ldHdv
cmtpbmcgbGF5ZXIuCiBzdGF0aWMgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7
CiAKLVJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBDcmVhdGVIb3N0UG9saWN5IGNy
ZWF0ZUhvc3RQb2xpY3kpCitSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbiog
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBDcmVhdGVI
b3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0OwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogICAgIHNjaGVkdWxlU2VydmVQZW5kaW5nUmVxdWVz
dHMoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IEtVUkwmIHJl
ZGlyZWN0VVJMKQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFVSTCYgcmVk
aXJlY3RVUkwpCiB7CiAgICAgSG9zdEluZm9ybWF0aW9uKiBvbGRIb3N0ID0gaG9zdEZvclVSTChy
ZXNvdXJjZUxvYWRlci0+dXJsKCkpOwogICAgIEFTU0VSVChvbGRIb3N0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCAyYTFlNDEzLi4yZGJm
NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVz
b3VyY2U7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVz
b3VyY2VMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZpcnR1
YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2VydmVQZW5kaW5n
UmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gUmVzb3VyY2VM
b2FkUHJpb3JpdHlWZXJ5TG93KTsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1
ZXN0cygpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmRPbmx5CiAg
ICAgfTsKICAgICAKLSAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgS1VSTCYs
IENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0
Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlv
cml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBT
dHJpbmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBkODJhYTgyLi5jMzFmMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFJlc291
cmNlSGFuZGxlOwogCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfSAKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfSAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KICAgICBib29sIHNob3VsZFNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0U2VuZENhbGxiYWNrUG9saWN5
KFNlbmRDYWxsYmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcykgeyBtX29wdGlvbnMuc2VuZExv
YWRDYWxsYmFja3MgPSBzZW5kTG9hZENhbGxiYWNrczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmNwcAppbmRleCA0ODRkMjM4Li42MDUxZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3Qp
IHsgfQogfTsKIAotU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCitTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0
Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3Vt
ZW50LmgKaW5kZXggNzZkOWE4My4uMjQ2Njg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuaApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U2lua0RvY3VtZW50IEZJTkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2lua0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgU2lua0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFNpbmtEb2N1bWVudChG
cmFtZSosIGNvbnN0IFVSTCYpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFt
ZUxvYWRlci5jcHAKaW5kZXggOGY4YmMzMy4uOGM5ZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgU3ViZnJhbWVMb2Fk
ZXI6OmNsZWFyKCkKIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7CiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlw
dDpzdHJpbmciPgotICAgIEtVUkwgc2NyaXB0VVJMOwotICAgIEtVUkwgdXJsOworICAgIFVSTCBz
Y3JpcHRVUkw7CisgICAgVVJMIHVybDsKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJs
U3RyaW5nKSkgewogICAgICAgICBzY3JpcHRVUkwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOyAv
LyBjb21wbGV0ZVVSTCgpIGVuY29kZXMgdGhlIFVSTC4KICAgICAgICAgdXJsID0gYmxhbmtVUkwo
KTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAKIGJvb2wg
U3ViZnJhbWVMb2FkZXI6OnJlc291cmNlV2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
KQogewotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAg
aWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1
cmwpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VX
aWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWUKICAgICBy
ZXR1cm4gc2hvdWxkVXNlUGx1Z2luKGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMsIGZhbHNlLCB1c2VGYWxsYmFjayk7CiB9CiAKLWJvb2wgU3ViZnJh
bWVMb2FkZXI6OnBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2lu
RWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorYm9vbCBT
dWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUp
KSB7CiAgICAgICAgIGlmICghbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCkBA
IC0xNDEsNyArMTQxLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJhbWVMb2Fk
ZXI6OnJlcXVlc3RQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1
c2VGYWxsYmFjaykKIHsKICAgICAvLyBBcHBsaWNhdGlvbiBwbHVnLWlucyBhcmUgcGx1Zy1pbnMg
aW1wbGVtZW50ZWQgYnkgdGhlIHVzZXIgYWdlbnQsIGZvciBleGFtcGxlIFF0IHBsdWctaW5zLAog
ICAgIC8vIGFzIG9wcG9zZWQgdG8gdGhpcmQtcGFydHkgY29kZSBzdWNoIGFzIEZsYXNoLiBUaGUg
dXNlciBhZ2VudCBkZWNpZGVzIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlCkBAIC0yMTksNyArMjE5
LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFMKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBVUkwgY29tcGxl
dGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxldGVkVVJMID0g
Y29tcGxldGVVUkwodXJsKTsKIApAQCAtMjM3LDEyICsyMzcsMTIgQEAgYm9vbCBTdWJmcmFtZUxv
YWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1Jl
ZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpsb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihO
b2RlKiBub2RlLCBjb25zdCBLVVJMJiB1cmwsCitQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVM
b2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYg
dXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUodmlk
ZW9UYWcpIHx8IGlzSFRNTEF1ZGlvRWxlbWVudChub2RlKSk7CiAKLSAgICBLVVJMIGNvbXBsZXRl
ZFVSTDsKKyAgICBVUkwgY29tcGxldGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKIApAQCAtMjkyLDcgKzI5Miw3
IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBzaXplLCBICiAgICAgfQogCiAgICAgaWYgKCFjb2RlQmFzZVVS
TFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgS1VSTCBjb2RlQmFzZVVSTCA9IGNvbXBsZXRl
VVJMKGNvZGVCYXNlVVJMU3RyaW5nKTsKKyAgICAgICAgVVJMIGNvZGVCYXNlVVJMID0gY29tcGxl
dGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIWVsZW1lbnQtPmRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShjb2RlQmFzZVVSTCkpIHsKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgY29kZUJhc2VV
Ukwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMDYsNyArMzA2LDcgQEAg
UGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmIHNpemUsIEgKIAogICAgIGlmIChiYXNlVVJMU3RyaW5nLmlzRW1wdHko
KSkKICAgICAgICAgYmFzZVVSTFN0cmluZyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwo
KS5zdHJpbmcoKTsKLSAgICBLVVJMIGJhc2VVUkwgPSBjb21wbGV0ZVVSTChiYXNlVVJMU3RyaW5n
KTsKKyAgICBVUkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJpbmcpOwogCiAgICAg
UmVmUHRyPFdpZGdldD4gd2lkZ2V0OwogICAgIGlmIChhbGxvd1BsdWdpbnMoQWJvdXRUb0luc3Rh
bnRpYXRlUGx1Z2luKSkKQEAgLTMyNiw3ICszMjYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3Vi
ZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SAogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9y
UmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlz
dG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjps
b2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9j
a0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBvd25lckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBGcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbgogICAgIHJldHVybiBvd25lckVsZW1l
bnQtPmNvbnRlbnRGcmFtZSgpOwogfQogCi1GcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJm
cmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitGcmFtZSogU3Vi
ZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKIHsKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKQEAgLTQw
Myw3ICs0MDMsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjphbGxvd1BsdWdpbnMoUmVhc29uRm9y
Q2FsbGluZ0FsbG93UGx1Z2lucyByZWFzb24pCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKLWJv
b2wgU3ViZnJhbWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9v
bCBoYXNGYWxsYmFjaywgYm9vbCYgdXNlRmFsbGJhY2spCitib29sIFN1YmZyYW1lTG9hZGVyOjpz
aG91bGRVc2VQbHVnaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYg
dXNlRmFsbGJhY2spCiB7CiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KG1pbWVUeXBlKSkgewogICAgICAgICB1c2VGYWxsYmFj
ayA9IGZhbHNlOwpAQCAtNDMwLDcgKzQzMCw3IEBAIERvY3VtZW50KiBTdWJmcmFtZUxvYWRlcjo6
ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpOwogfQogCi1i
b29sIFN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKK2Jv
b2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1
Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKIHsKICAgICBSZW5kZXJFbWJlZGRlZE9iamVj
dCogcmVuZGVyZXIgPSBwbHVnaW5FbGVtZW50LT5yZW5kZXJFbWJlZGRlZE9iamVjdCgpOwpAQCAt
NDYyLDcgKzQ2Miw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgS1VSCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUtVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdAorVVJMIFN1YmZyYW1lTG9hZGVyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJu
IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5oCmluZGV4IGQ4ZTAzYzEuLjJlODQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEhUTUxBcHBs
ZXRFbGVtZW50OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgTm9kZTsKICNlbmRpZgpA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgRWxlbWVudCogaW5zdGVhZCBvZiBO
b2RlKiwgb3IgYmV0dGVyIHlldCB0aGUKICAgICAvLyBzcGVjaWZpYyB0eXBlIG9mIEVsZW1lbnQg
d2hpY2ggdGhpcyBjb2RlIGRlcGVuZHMgb24uCi0gICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRN
ZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Cisg
ICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcyk7CkBAIC04MCwyMSArODAsMjEgQEAgcHVibGljOgogICAgIGJvb2wgcmVz
b3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiBwcml2YXRlOgotICAg
IGJvb2wgcmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2sp
OwotICAgIEZyYW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKLSAgICBGcmFtZSogbG9hZFN1YmZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotICAgIGJvb2wgbG9hZFBsdWdpbihIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCisg
ICAgYm9vbCByZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNr
KTsKKyAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZFN1YmZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgYm9vbCBsb2FkUGx1Z2luKEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKIAotICAgIGJvb2wgc2hvdWxkVXNl
UGx1Z2luKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNr
KTsKLSAgICBib29sIHBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBib29sIHNob3VsZFVzZVBs
dWdpbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsK
KyAgICBib29sIHBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKICAgICBib29sIG1fY29udGFpbnNQbHVnaW5zOwogICAgIEZyYW1lKiBtX2Zy
YW1lOwogCi0gICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBV
UkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCBlMDc3YmZhLi5mYTU5ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIFN1YnJlc291cmNlTG9hZGVy
Ojppc1N1YnJlc291cmNlTG9hZGVyKCkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBi
ZWNhdXNlIHRoZSBjYWxsIHRvIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBt
b2RpZnkgaXQuCi0gICAgS1VSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKKyAgICBV
UkwgcHJldmlvdXNVUkwgPSByZXF1ZXN0KCkudXJsKCk7CiAgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IDUyMGVmNTguLjI5NTlk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIFN1YnN0aXR1dGVEYXRhX2gKICNkZWZpbmUgU3Vic3RpdHV0ZURhdGFfaAog
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAog
ICAgICAgICBTdWJzdGl0dXRlRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMID0gS1VSTCgpLCBib29sIHNob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkgPSBmYWxzZSkKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZywgY29uc3QgVVJMJiBmYWlsaW5nVVJMLAorICAgICAgICAgICAgICAg
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSBVUkwoKSwgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5ID0gZmFsc2UpCiAgICAgICAgICAgICA6IG1fY29udGVudChjb250ZW50KQogICAg
ICAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICAgICAgICAgLCBtX3RleHRFbmNv
ZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC02MCwxNSArNjAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZzsgfQotICAgICAgICBjb25zdCBLVVJM
JiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9Ci0gICAgICAgIGNv
bnN0IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQor
ICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdV
Ukw7IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2VVUkw7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAg
ICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwotICAgICAgICBLVVJMIG1fZmFpbGluZ1VSTDsKLSAg
ICAgICAgS1VSTCBtX3Jlc3BvbnNlVVJMOworICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOworICAg
ICAgICBVUkwgbV9yZXNwb25zZVVSTDsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJldmVhbFRvU2Vz
c2lvbkhpc3Rvcnk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCmluZGV4IDE1Y2JjNmYuLjk4Yzg3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
CkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3Vic3RpdHV0ZVJlc291cmNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3Vi
c3RpdHV0ZVJlc291cmNlKCkgeyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSkKICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICwgbV9yZXNwb25zZShy
ZXNwb25zZSkKICAgICAgICAgLCBtX2RhdGEoZGF0YSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVj
dGVkOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwCmluZGV4IGY2ZWM2ZWQuLjRmYTA3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBjYW5jZWxMb2Fk
KCk7CiB9CiAKLWJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCitib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiB7CiAgICAgY2Fu
Y2VsTG9hZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKaW5kZXgg
MzZmM2VmMC4uOTM1N2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFj
a0xvYWRlcigpOwogICAgIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbk1vZGUpOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNyb3NzT3JpZ2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBn
ZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICNp
ZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNjE4MjliMi4uODUyODliMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCi1zdGF0aWMg
aW5saW5lIGJvb2wgZmFsbGJhY2tVUkxMb25nZXJUaGFuKGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBL
VVJMPiYgbGhzLCBjb25zdCBzdGQ6OnBhaXI8S1VSTCwgS1VSTD4mIHJocykKK3N0YXRpYyBpbmxp
bmUgYm9vbCBmYWxsYmFja1VSTExvbmdlclRoYW4oY29uc3Qgc3RkOjpwYWlyPFVSTCwgVVJMPiYg
bGhzLCBjb25zdCBzdGQ6OnBhaXI8VVJMLCBVUkw+JiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy5m
aXJzdC5zdHJpbmcoKS5sZW5ndGgoKSA+IHJocy5maXJzdC5zdHJpbmcoKS5sZW5ndGgoKTsKIH0K
QEAgLTExNyw3ICsxMTcsNyBAQCB1bnNpZ25lZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCkKICAgICAKIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
QXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0g
ICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKICAgICByZXR1cm4gbV9yZXNvdXJjZXMuZ2V0KHVybCk7CiB9ICAgIAog
CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0
aW9uQ2FjaGU6OnJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcQogICAgIGlmICgh
cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgS1VSTCB1cmwocmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsK
ICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKICAgICByZXR1cm4gcmVzb3VyY2VGb3JVUkwodXJsKTsK
IH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVj
dG9yPEtVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9u
bGluZVdoaXRlbGlzdChjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0KQogewogICAg
IEFTU0VSVChtX29ubGluZVdoaXRlbGlzdC5pc0VtcHR5KCkpOwogICAgIG1fb25saW5lV2hpdGVs
aXN0ID0gb25saW5lV2hpdGVsaXN0OyAKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VS
TEluT25saW5lV2hpdGVsaXN0KGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQXBwbGljYXRpb25DYWNo
ZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBVUkwmIHVybCkKIHsKICAgICBzaXplX3Qg
d2hpdGVsaXN0U2l6ZSA9IG1fb25saW5lV2hpdGVsaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZTo6c2V0RmFsbGJhY2tVUkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVj
dG9yJiBmYWxsYmFja1VSTHMpCiAgICAgc3RkOjpzdGFibGVfc29ydChtX2ZhbGxiYWNrVVJMcy5i
ZWdpbigpLCBtX2ZhbGxiYWNrVVJMcy5lbmQoKSwgZmFsbGJhY2tVUkxMb25nZXJUaGFuKTsKIH0K
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29u
c3QgS1VSTCYgdXJsLCBLVVJMKiBmYWxsYmFja1VSTCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZTo6
dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYgdXJsLCBVUkwqIGZhbGxiYWNr
VVJMKQogewogICAgIHNpemVfdCBmYWxsYmFja0NvdW50ID0gbV9mYWxsYmFja1VSTHMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmFsbGJhY2tDb3VudDsgKytpKSB7CkBAIC0x
OTMsMTMgKzE5MywxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFnZUlEKCkK
ICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKKyAgICBWZWN0b3I8
VVJMPiB1cmxzOwogICAgIGlmICghY2FjaGVTdG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hl
IG1hbmlmZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEtVUkwgb3Jp
Z2luVVJMKEtVUkwoKSwgb3JpZ2luLT50b1N0cmluZygpKTsKKyAgICBVUkwgb3JpZ2luVVJMKFVS
TCgpLCBvcmlnaW4tPnRvU3RyaW5nKCkpOwogCiAgICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCAyNTFi
ZWEzLi5mZmU0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmgKQEAgLTM4LDExICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAotdHlwZWRlZiBW
ZWN0b3I8c3RkOjpwYWlyPEtVUkwsIEtVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7Cit0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlPiB7
CiBwdWJsaWM6CkBAIC02OCwxMyArNjgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBbGxv
d3NBbGxOZXR3b3JrUmVxdWVzdHMoYm9vbCB2YWx1ZSkgeyBtX2FsbG93QWxsTmV0d29ya1JlcXVl
c3RzID0gdmFsdWU7IH0KICAgICBib29sIGFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7IH0KLSAgICB2b2lkIHNldE9ubGlu
ZVdoaXRlbGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29u
c3QgVmVjdG9yPEtVUkw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGlu
ZVdoaXRlbGlzdDsgfQotICAgIGJvb2wgaXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBLVVJM
Jik7IC8vIFRoZXJlIGlzIGFuIGVudHJ5IGluIG9ubGluZSB3aGl0ZWxpc3QgdGhhdCBoYXMgdGhl
IHNhbWUgb3JpZ2luIGFzIHRoZSByZXNvdXJjZSdzIFVSTCBhbmQgdGhhdCBpcyBhIHByZWZpeCBt
YXRjaCBmb3IgdGhlIHJlc291cmNlJ3MgVVJMLgorICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0
KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpOworICAgIGNvbnN0IFZlY3RvcjxV
Ukw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGluZVdoaXRlbGlzdDsg
fQorICAgIGJvb2wgaXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBVUkwmKTsgLy8gVGhlcmUg
aXMgYW4gZW50cnkgaW4gb25saW5lIHdoaXRlbGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4g
YXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUg
cmVzb3VyY2UncyBVUkwuCiAKICAgICB2b2lkIHNldEZhbGxiYWNrVVJMcyhjb25zdCBGYWxsYmFj
a1VSTFZlY3RvciYpOwogICAgIGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJiBmYWxsYmFja1VSTHMo
KSBjb25zdCB7IHJldHVybiBtX2ZhbGxiYWNrVVJMczsgfQotICAgIGJvb2wgdXJsTWF0Y2hlc0Zh
bGxiYWNrTmFtZXNwYWNlKGNvbnN0IEtVUkwmLCBLVVJMKiBmYWxsYmFja1VSTCA9IDApOworICAg
IGJvb2wgdXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYsIFVSTCogZmFsbGJh
Y2tVUkwgPSAwKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCk7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG1f
bWFuaWZlc3Q7CiAKICAgICBib29sIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7Ci0gICAgVmVj
dG9yPEtVUkw+IG1fb25saW5lV2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IG1fb25saW5lV2hp
dGVsaXN0OwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIG1fZmFsbGJhY2tVUkxzOwogCiAgICAgLy8g
VGhlIHRvdGFsIHNpemUgb2YgdGhlIHJlc291cmNlcyBiZWxvbmdpbmcgdG8gdGhpcyBBcHBsaWNh
dGlvbiBDYWNoZSBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDZiZjk4Ny4uNTliM2Jk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25z
dCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29w
eSkKICAgICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX29yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG1hbmlmZXN0VVJMKSkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElk
bGUpCkBAIC0xMDEsNyArMTAxLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpjYWNoZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAo
IUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEtVUkwgdXJsKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1
cmwocmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkK
ICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xMjAsNyArMTIw
LDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0Nh
Y2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3UKICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6
OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEtVUkwgdXJsKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwocmVxdWVzdC51cmwoKSk7
CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgQXBwbGljYXRpb25D
YWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3Qo
Y29uc3QgUmVzb3UKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3RV
UkwpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VVJMKQogewogICAgIEFTU0VSVChmcmFtZSAmJiBm
cmFtZS0+cGFnZSgpKTsKICAgICAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRN
YW5pZmVzdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCBtYW5pZmVzdFVSTChw
YXNzZWRNYW5pZmVzdFVSTCk7CisgICAgVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJM
KTsKICAgICBpZiAobWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAg
IG1hbmlmZXN0VVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUNh
Y2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJv
d3NpbmdDb250ZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBtYWlu
IHJlc291cmNlIHdhcyBsb2FkZWQgZnJvbSBjYWNoZSwgc28gdGhlIGNhY2hlIG11c3QgaGF2ZSBh
biBlbnRyeSBmb3IgaXQuIE1hcmsgaXQgYXMgZm9yZWlnbi4KLSAgICAgICAgICAgIEtVUkwgcmVz
b3VyY2VVUkwoZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlVVJMKCkpOworICAgICAgICAgICAgVVJM
IHJlc291cmNlVVJMKGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICAgICAgICAg
IGlmIChyZXNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICByZXNvdXJjZVVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBtYWluUmVzb3VyY2VDYWNoZS0+cmVz
b3VyY2VGb3JVUkwocmVzb3VyY2VVUkwpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKIHsKICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGxvYWRlcikpOwogICAgIEFTU0VSVChtX2NvbXBsZXRpb25UeXBlID09IE5vbmUg
fHwgbV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwotICAgIEtVUkwgdXJsID0gbG9hZGVyLT51
cmwoKTsKKyAgICBVUkwgdXJsID0gbG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQo
RnJhbWUqIGZyYW1lKQogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5k
bGUoY29uc3QgS1VSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hl
ZFJlc291cmNlKQorUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwmIHVybCwgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCh1cmwpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmFwcGx5VXNlckFnZW50KHJlcXVl
c3QpOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAgICAgCiAg
ICAgQVNTRVJUKGhhbmRsZSA9PSBtX2N1cnJlbnRIYW5kbGUpOwogCi0gICAgS1VSTCB1cmwoaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAg
ICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgCkBAIC02NzAsNyArNjcw
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3Vy
cmVudEhhbmRsZSk7CiAKICAgICB1bnNpZ25lZCB0eXBlID0gbV9jdXJyZW50UmVzb3VyY2UgPyBt
X2N1cnJlbnRSZXNvdXJjZS0+dHlwZSgpIDogbV9wZW5kaW5nRW50cmllcy5nZXQoaGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKSk7Ci0gICAgS1VSTCB1cmwoaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKSk7CisgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAg
ICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzdGFydExvYWRpbmdFbnRyeSgpCiAKICAgICBBU1NFUlQoIW1fY3VycmVu
dEhhbmRsZSk7CiAgICAgCi0gICAgbV9jdXJyZW50SGFuZGxlID0gY3JlYXRlUmVzb3VyY2VIYW5k
bGUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdl
c3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKKyAgICBtX2N1cnJlbnRIYW5k
bGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+a2V5KSwg
bV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKGl0LT5rZXkpIDog
MCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkZWxpdmVyRGVsYXllZE1haW5S
ZXNvdXJjZXMoKQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6YWRkRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiB7CiAgICAg
QVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwotICAgIEFTU0VSVCghS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgCiAgICAg
Ly8gRG9uJ3QgYWRkIHRoZSBVUkwgaWYgd2UgYWxyZWFkeSBoYXZlIGFuIG1hc3RlciByZXNvdXJj
ZSBpbiB0aGUgY2FjaGUKICAgICAvLyAoaS5lLiwgdGhlIG1haW4gcmVzb3VyY2UgZmluaXNoZWQg
bG9hZGluZyBiZWZvcmUgdGhlIG1hbmlmZXN0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCAxYTRhZjg2Li4z
MjcwODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cF9oCiAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC01Myw3ICs1Myw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9w
dGlvbiB7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgOiBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUdyb3VwKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29weSA9IGZhbHNlKTsgICAgCisgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5
ID0gZmFsc2UpOyAgICAKICAgICB+QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CiAgICAgCiAgICAg
ZW51bSBVcGRhdGVTdGF0dXMgeyBJZGxlLCBDaGVja2luZywgRG93bmxvYWRpbmcgfTsKQEAgLTYx
LDEwICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hl
Rm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqKTsK
ICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogZmFsbGJhY2tDYWNoZUZvck1haW5SZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKik7CiAgICAgCi0gICAgc3Rh
dGljIHZvaWQgc2VsZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Cisg
ICAgc3RhdGljIHZvaWQgc2VsZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBVUkwmIG1hbmlmZXN0VVJM
KTsKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSop
OwogICAgIAotICAgIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9t
YW5pZmVzdFVSTDsgfQorICAgIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVy
biBtX21hbmlmZXN0VVJMOyB9CiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAgICAgVXBkYXRlU3RhdHVzIHVwZGF0ZVN0
YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlU3RhdHVzOyB9CiAgICAgdm9pZCBzZXRVcGRh
dGVTdGF0dXMoVXBkYXRlU3RhdHVzIHN0YXR1cyk7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsK
IAotICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNv
bnN0IEtVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KTsKKyAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShj
b25zdCBVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KTsKIAogICAgIC8vIEZvciBub3JtYWwgcmVzb3VyY2UgbG9hZGluZywgV2ViS2l0IGNsaWVudCBp
cyBhc2tlZCBhYm91dCBlYWNoIHJlc291cmNlIGluZGl2aWR1YWxseS4gU2luY2UgYXBwbGljYXRp
b24gY2FjaGUgZG9lcyBub3QgYmVsb25nIHRvIGFueSBwYXJ0aWN1bGFyIGRvY3VtZW50LAogICAg
IC8vIHRoZSBleGlzdGluZyBjbGllbnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3Vt
ZSB0aGF0IGFueSBjbGllbnQgdGhhdCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2Fu
dHMgaXQgdG8gdXNlIGNyZWRlbnRpYWwgc3RvcmFnZS4KQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2
YXRlOgogICAgIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAKLSAgICBLVVJMIG1fbWFu
aWZlc3RVUkw7CisgICAgVVJMIG1fbWFuaWZlc3RVUkw7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBtX29yaWdpbjsKICAgICBVcGRhdGVTdGF0dXMgbV91cGRhdGVTdGF0dXM7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAppbmRleCA0YzY5ODA5Li40MzNiZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRob3V0
TWFuaWZlc3QoKQogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0
TWFuaWZlc3RVUkwobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlm
ZXN0VVJMKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZl
c3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnNlbGVjdENhY2hlKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCksIG1hbmlmZXN0VVJMKTsKIH0K
QEAgLTg2LDggKzg2LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkTWFp
blJlc291cmNlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3Vic3QKICAgICAgICAgICAgIHN1
YnN0aXR1dGVEYXRhID0gU3Vic3RpdHV0ZURhdGEocmVzb3VyY2UtPmRhdGEoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVVJMKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVSTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdWJzdGl0dXRlRGF0YTo6U2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgZ3JvdXAtPmZp
bmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZShtX2RvY3VtZW50TG9hZGVyKTsKIH0KIAotYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFJlc291cmNlKFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiBvcmlnaW5h
bFVSTCkKIHsKICAgICBpZiAoIWlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzAzLDcgKzMwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpD
YWNoZUluZm8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCkKIHsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBp
ZiAoIWNhY2hlIHx8ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gQ2FjaGVJ
bmZvKEtVUkwoKSwgMCwgMCwgMCk7CisgICAgICAgIHJldHVybiBDYWNoZUluZm8oVVJMKCksIDAs
IDAsIDApOwogICAKICAgICAvLyBGSVhNRTogQWRkICJDcmVhdGlvbiBUaW1lIiBhbmQgIlVwZGF0
ZSBUaW1lIiB0byBBcHBsaWNhdGlvbiBDYWNoZXMuCiAgICAgcmV0dXJuIENhY2hlSW5mbyhjYWNo
ZS0+bWFuaWZlc3RSZXNvdXJjZSgpLT51cmwoKSwgMCwgMCwgY2FjaGUtPmVzdGltYXRlZFNpemVJ
blN0b3JhZ2UoKSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXEK
ICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVl
c3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGZhbGxiYWNrVVJMOworICAg
IFVSTCBmYWxsYmFja1VSTDsKICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3Qo
cmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhY2hlLT51
cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSwgJmZhbGxiYWNrVVJMKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKaW5kZXggNjUyMGNjYy4uZjZlMGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgQXBwbGljYXRpb25DYWNoZUhvc3RfaAogI2RlZmluZSBBcHBsaWNhdGlv
bkNhY2hlSG9zdF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC03OCwxOSArNzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgc3RydWN0IENhY2hlSW5mbyB7Ci0gICAg
ICAgICAgICBDYWNoZUluZm8oY29uc3QgS1VSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRp
bWUsIGRvdWJsZSB1cGRhdGVUaW1lLCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIENhY2hl
SW5mbyhjb25zdCBVUkwmIG1hbmlmZXN0LCBkb3VibGUgY3JlYXRpb25UaW1lLCBkb3VibGUgdXBk
YXRlVGltZSwgbG9uZyBsb25nIHNpemUpCiAgICAgICAgICAgICAgICAgOiBtX21hbmlmZXN0KG1h
bmlmZXN0KQogICAgICAgICAgICAgICAgICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQog
ICAgICAgICAgICAgICAgICwgbV91cGRhdGVUaW1lKHVwZGF0ZVRpbWUpCiAgICAgICAgICAgICAg
ICAgLCBtX3NpemUoc2l6ZSkgeyB9Ci0gICAgICAgICAgICBLVVJMIG1fbWFuaWZlc3Q7CisgICAg
ICAgICAgICBVUkwgbV9tYW5pZmVzdDsKICAgICAgICAgICAgIGRvdWJsZSBtX2NyZWF0aW9uVGlt
ZTsKICAgICAgICAgICAgIGRvdWJsZSBtX3VwZGF0ZVRpbWU7CiAgICAgICAgICAgICBsb25nIGxv
bmcgbV9zaXplOwogICAgICAgICB9OwogCiAgICAgICAgIHN0cnVjdCBSZXNvdXJjZUluZm8gewot
ICAgICAgICAgICAgUmVzb3VyY2VJbmZvKGNvbnN0IEtVUkwmIHJlc291cmNlLCBib29sIGlzTWFz
dGVyLCBib29sIGlzTWFuaWZlc3QsIGJvb2wgaXNGYWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJv
b2wgaXNFeHBsaWNpdCwgbG9uZyBsb25nIHNpemUpCisgICAgICAgICAgICBSZXNvdXJjZUluZm8o
Y29uc3QgVVJMJiByZXNvdXJjZSwgYm9vbCBpc01hc3RlciwgYm9vbCBpc01hbmlmZXN0LCBib29s
IGlzRmFsbGJhY2ssIGJvb2wgaXNGb3JlaWduLCBib29sIGlzRXhwbGljaXQsIGxvbmcgbG9uZyBz
aXplKQogICAgICAgICAgICAgICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKICAgICAgICAgICAg
ICAgICAsIG1faXNNYXN0ZXIoaXNNYXN0ZXIpCiAgICAgICAgICAgICAgICAgLCBtX2lzTWFuaWZl
c3QoaXNNYW5pZmVzdCkKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICwgbV9pc0ZvcmVpZ24oaXNGb3JlaWduKQogICAgICAgICAgICAgICAgICwg
bV9pc0V4cGxpY2l0KGlzRXhwbGljaXQpCiAgICAgICAgICAgICAgICAgLCBtX3NpemUoc2l6ZSkg
eyB9Ci0gICAgICAgICAgICBLVVJMIG1fcmVzb3VyY2U7CisgICAgICAgICAgICBVUkwgbV9yZXNv
dXJjZTsKICAgICAgICAgICAgIGJvb2wgbV9pc01hc3RlcjsKICAgICAgICAgICAgIGJvb2wgbV9p
c01hbmlmZXN0OwogICAgICAgICAgICAgYm9vbCBtX2lzRmFsbGJhY2s7CkBAIC0xMTQsNyArMTE0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+QXBwbGljYXRpb25DYWNoZUhvc3Qo
KTsKIAogICAgICAgICB2b2lkIHNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCk7Ci0gICAgICAg
IHZvaWQgc2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOwor
ICAgICAgICB2b2lkIHNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpOwogCiAgICAgICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVz
dCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNl
Rm9yUmVkaXJlY3QoUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJj
ZSgpOwogCi0gICAgICAgIGJvb2wgbWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCk7CisgICAgICAgIGJvb2wg
bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJl
ZGlyZWN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggOTk3NjZlMy4uNGZjYjhmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
KQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0
eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIGRhdGEpCiAgICAgLCBtX3R5
cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggZDFk
ZmVhNC4uZDhkM2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKICAgICAgICAgCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0
aCA9IFN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSh1cmwsIHJlc3BvbnNlLCB0eXBlLCBidWZmZXIsIHBhdGgpKTsKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShjb25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVk
IHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAg
ICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICB1bnNpZ25lZCBtX3N0b3Jh
Z2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQzYzczMTIuLjNjNjI0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgog
I2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFJlY29yZD4gbV9yZWNvcmRzOwogfTsKIAotc3RhdGljIHVuc2lnbmVkIHVy
bEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyB1bnNpZ25lZCB1cmxIb3N0SGFzaChj
b25zdCBVUkwmIHVybCkKIHsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQgPSB1cmwuaG9zdFN0YXJ0
KCk7CiAgICAgdW5zaWduZWQgaG9zdEVuZCA9IHVybC5ob3N0RW5kKCk7CkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKICAgICBy
ZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUoU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh1cmxTdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBob3N0U3Rh
cnQsIGhvc3RFbmQgLSBob3N0U3RhcnQpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZl
c3RVUkwpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjps
b2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIG9wZW5EYXRhYmFz
ZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMTM1LDcgKzEzNSw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmCiAgICAgcmV0dXJuIGdyb3VwOwogfSAgICAKIAot
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3Jl
YXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBBU1NFUlQoIW1hbmlmZXN0VVJMLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKTsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29u
c3QgS1VSCiAgICAgcmV0dXJuIGdyb3VwOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwm
IG1hbmlmZXN0VVJMKSBjb25zdAorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
KSBjb25zdAogewogICAgIHJldHVybiBtX2NhY2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7
CiB9CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZE1hbmlmZXN0SG9zdEhhc2hlcygpCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiB9ICAgIAogCi1B
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3Vw
Rm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
QVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIApAQCAtMjI5LDcgKzIy
OSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNh
Y2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsCiAgICAgCiAgICAgaW50IHJlc3VsdDsKICAg
ICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewot
ICAgICAgICBLVVJMIG1hbmlmZXN0VVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKFBhcnNl
ZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAgIGlmICht
X2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjY2LDcgKzI2Niw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsCiAgICAgcmV0
dXJuIDA7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwpCitBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBG
b3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpOwogCkBAIC0yNzgsNyArMjc4LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEsK
ICAgICAgICAgQVNTRVJUKCFncm91cC0+aXNPYnNvbGV0ZSgpKTsKIAogICAgICAgICBpZiAoQXBw
bGljYXRpb25DYWNoZSogY2FjaGUgPSBncm91cC0+bmV3ZXN0Q2FjaGUoKSkgewotICAgICAgICAg
ICAgS1VSTCBmYWxsYmFja1VSTDsKKyAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAg
ICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxi
YWNrTmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkKQEAgLTI5OSw3ICsyOTksNyBAQCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hl
R3JvdXBGb3JVUkwoY29uc3QgSwogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChy
ZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgS1VS
TCBtYW5pZmVzdFVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1u
VGV4dCgxKSk7CisgICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1l
bW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMx
Myw3ICszMTMsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICB1bnNpZ25lZCBu
ZXdlc3RDYWNoZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5J
bnQ2NCgyKSk7CiAgICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IGxvYWRD
YWNoZShuZXdlc3RDYWNoZUlEKTsKIAotICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgICAg
ICBVUkwgZmFsbGJhY2tVUkw7CiAgICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRl
bGlzdCh1cmwpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY2FjaGUtPnVy
bE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZSh1cmwsICZmYWxsYmFja1VSTCkpCkBAIC03MjksNyAr
NzI5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZSogY2FjaGUsIFJlc291cmNlU3RvcmFnZUlESm8KICAgICB9CiAgICAgCiAgICAgLy8gU3Rv
cmUgdGhlIG9ubGluZSB3aGl0ZWxpc3QKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdo
aXRlbGlzdCA9IGNhY2hlLT5vbmxpbmVXaGl0ZWxpc3QoKTsKKyAgICBjb25zdCBWZWN0b3I8VVJM
PiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgpOwogICAgIHsKICAg
ICAgICAgc2l6ZV90IHdoaXRlbGlzdFNpemUgPSBvbmxpbmVXaGl0ZWxpc3Quc2l6ZSgpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTEx
MCw3ICsxMTEwLDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKIAogICAgIGludCByZXN1bHQ7
CiAgICAgd2hpbGUgKChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3Vs
dFJvdykgewotICAgICAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIGNhY2hlU3RhdGVtZW50
LmdldENvbHVtblRleHQoMCkpOworICAgICAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgY2Fj
aGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgaHR0
cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSk7CiAKQEAgLTExNTYs
OSArMTE1Niw5IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHdoaXRlbGlzdFN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKLSAg
ICBWZWN0b3I8S1VSTD4gd2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IHdoaXRlbGlzdDsKICAg
ICB3aGlsZSAoKHJlc3VsdCA9IHdoaXRlbGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3Vs
dFJvdykgCi0gICAgICAgIHdoaXRlbGlzdC5hcHBlbmQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHdo
aXRlbGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHdoaXRlbGlzdC5h
cHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJvciBcIiVz
XCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTExODgsNyArMTE4OCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgCiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJh
Y2tVUkxzOwogICAgIHdoaWxlICgocmVzdWx0ID0gZmFsbGJhY2tTdGF0ZW1lbnQuc3RlcCgpKSA9
PSBTUUxSZXN1bHRSb3cpIAotICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihL
VVJMKFBhcnNlZFVSTFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSks
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEp
KSkpOworICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihVUkwoUGFyc2VkVVJM
U3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSwgVVJMKFBhcnNlZFVS
TFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSkpKTsKIAogICAgIGlm
IChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
bG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKQEAgLTEzMzcsNyArMTMzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAg
cmV0dXJuIGNvcHlTdG9yYWdlLnN0b3JlTmV3ZXN0Q2FjaGUoZ3JvdXBDb3B5LmdldCgpKTsKIH0K
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJM
PiogdXJscykKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcyhWZWN0
b3I8VVJMPiogdXJscykKIHsKICAgICBBU1NFUlQodXJscyk7CiAgICAgb3BlbkRhdGFiYXNlKGZh
bHNlKTsKQEAgLTEzNTAsNyArMTM1MCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
Om1hbmlmZXN0VVJMcyhWZWN0b3I8S1VSTD4qIHVybHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHdoaWxlIChzZWxlY3RVUkxzLnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCi0gICAgICAg
IHVybHMtPmFwcGVuZChLVVJMKFBhcnNlZFVSTFN0cmluZywgc2VsZWN0VVJMcy5nZXRDb2x1bW5U
ZXh0KDApKSk7CisgICAgICAgIHVybHMtPmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBzZWxl
Y3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUx
NCw3ICsxNTE0LDcgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0Rmls
ZUFyZWFTaXplKCkKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2luc1dp
dGhDYWNoZShIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgb3JpZ2lucykKIHsKLSAg
ICBWZWN0b3I8S1VSTD4gdXJsczsKKyAgICBWZWN0b3I8VVJMPiB1cmxzOwogICAgIGlmICghbWFu
aWZlc3RVUkxzKCZ1cmxzKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2
ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaAppbmRleCBhZjY0MzdlLi5lNGIzMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAt
MzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgU3Rv
cmFnZUlESm91cm5hbDsKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdG9y
ZVVwZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QgcXVv
dGEpOwogICAgIGJvb2wgY2hlY2tPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBB
cHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgQXBwbGljYXRpb25DYWNoZSogbmV3Q2FjaGUsIGlu
dDY0X3QmIHRvdGFsU3BhY2VOZWVkZWQpOwogCi0gICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVz
b3VyY2UgZnJvbS4KLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91
cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkg
dG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KKyAg
ICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8v
IENhY2hlIHRvIGxvYWQgYSBtYWluIHJlc291cmNlIGZyb20uCisgICAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRo
YXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBu
b3JtYWwgbG9hZGluZyBmYWlscy4KIAotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9y
Q3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Ci0gICAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKSBjb25zdDsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hl
R3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0Owog
ICAgIHZvaWQgY2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAg
ICB2b2lkIGNhY2hlR3JvdXBNYWRlT2Jzb2xldGUoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAg
ICAgICAgIApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wg
c3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHBsaWNhdGlv
bkNhY2hlSG9zdCopOwogCi0gICAgYm9vbCBtYW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxz
KTsKKyAgICBib29sIG1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiogdXJscyk7CiAgICAgYm9vbCBj
YWNoZUdyb3VwU2l6ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKTsK
ICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAg
ICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgUGFzc1JlZlB0
cjxBcHBsaWNhdGlvbkNhY2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKLSAgICBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwpOwogICAgIAogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91cm5hbDxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IFJlc291cmNlU3RvcmFnZUlESm91cm5hbDsKICAgICB0eXBl
ZGVmIFN0b3JhZ2VJREpvdXJuYWw8QXBwbGljYXRpb25DYWNoZUdyb3VwPiBHcm91cFN0b3JhZ2VJ
REpvdXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9N
QXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaAppbmRleCA5NTg3MTBjLi5iMDU0Y2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQx
LDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogCiAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2Vk
IEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KIGNsYXNz
IERPTUFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxET01BcHBsaWNhdGlvbkNhY2hlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBjOTg1YTljLi5iYjFmMDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
YW5pZmVzdFBhcnNlci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywg
T25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07CiAgICAgCi1ib29sIHBhcnNlTWFuaWZlc3QoY29u
c3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlm
ZXN0JiBtYW5pZmVzdCkKK2Jvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCiB7CiAg
ICAgQVNTRVJUKG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCht
YW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuaXNFbXB0eSgpKTsKQEAgLTExNCw3ICsxMTQs
NyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBLVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5n
KGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgICAg
IFVSTCB1cmwobWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmNoYXJhY3RlcnMoKSwgcCAtIGxpbmUu
Y2hhcmFjdGVycygpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghdXJsLmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29s
IHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBLVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVz
dFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsK
KyAgICAgICAgICAgIFVSTCBuYW1lc3BhY2VVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmNo
YXJhY3RlcnMoKSwgcCAtIGxpbmUuY2hhcmFjdGVycygpKSk7CiAgICAgICAgICAgICBpZiAoIW5h
bWVzcGFjZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAobmFtZXNwYWNlVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICB3aGlsZSAocCA8
IGxpbmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAogICAgICAgICAgICAgICAgIHAr
KzsKIAotICAgICAgICAgICAgS1VSTCBmYWxsYmFja1VSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGZh
bGxiYWNrU3RhcnQsIHAgLSBmYWxsYmFja1N0YXJ0KSk7CisgICAgICAgICAgICBVUkwgZmFsbGJh
Y2tVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tTdGFy
dCkpOwogICAgICAgICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoZmFsbGJhY2tVUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5oCmluZGV4IDM5Yjc2MGQuLjI4MzE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCkBAIC0zMCwxNiArMzAsMTYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAK
ICAgICBzdHJ1Y3QgTWFuaWZlc3QgewotICAgICAgICBWZWN0b3I8S1VSTD4gb25saW5lV2hpdGVs
aXN0ZWRVUkxzOworICAgICAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CiAgICAgICAgIEZhbGxiYWNrVVJM
VmVjdG9yIGZhbGxiYWNrVVJMczsKICAgICAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
czsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgogICAgIH07CiAKLSAgICBi
b29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgsIE1hbmlmZXN0Jik7CisgICAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0
Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuY3BwCmluZGV4IDE0YzgxZmQuLmQ3NzViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdE
YXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7Cit0eXBlZGVm
IFBhc3NSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyKik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhl
IGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUGFzc1JlZlB0
ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFr
ZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVG
YWN0b3J5Q3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlPiBh
cmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVmZmVyKTsKIH0KQEAg
LTgyLDcgKzgyLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTWltZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBh
cmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCi1QYXNzUmVmUHRyPEFy
Y2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFy
Y2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiog
ZnVuY3Rpb24gPSBtaW1lVHlwZS5pc0VtcHR5KCkgPyAwIDogYXJjaGl2ZU1JTUVUeXBlcygpLmdl
dChtaW1lVHlwZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uID8gZnVuY3Rpb24odXJsLCBkYXRhKSA6
IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCBkMDQwNWNhLi41NGI2NGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVU
eXBlcygpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZS5jcHAKaW5kZXggN2RlZGM5My4uMjEwMDBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJj
aGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKHVy
bCwgcmVzcG9uc2UsIGRhdGEpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90
ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2
ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGNvbnN0IEtVUgogewogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1Bhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXQKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLCB1
cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAot
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZShkYXRhLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggOTdkNmUzMi4uOWI0YjAxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAg
LTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4s
IGNvbnN0IEtVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBj
b25zdCBLVVJMJiwKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uLmNwcAppbmRleCBhYTRhODcwLi42NGVjMjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uLmNwcApAQCAtNjgsMTEgKzY4LDExIEBAIHZvaWQgQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjo6YWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNl
CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gcmVzb3VyY2UtPnVybCgpOyAvLyBnZXQgYmVmb3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAo
d2hpY2ggc2V0cyBpdCB0byAwKQorICAgIGNvbnN0IFVSTCYgdXJsID0gcmVzb3VyY2UtPnVybCgp
OyAvLyBnZXQgYmVmb3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAod2hpY2ggc2V0cyBpdCB0byAwKQog
ICAgIG1fc3VicmVzb3VyY2VzLnNldCh1cmwsIHJlc291cmNlKTsKIH0KIAotQXJjaGl2ZVJlc291
cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29u
c3QgS1VSTCYgdXJsKQorQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQXJjaGl2ZVJl
c291cmNlKiByZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwpOwogICAgIGlmICghcmVz
b3VyY2UpCkBAIC04MSw3ICs4MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgcmV0
dXJuIHJlc291cmNlOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb246OnBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlID0gbV9zdWJmcmFtZXMudGFr
ZShmcmFtZU5hbWUpOwogICAgIGlmIChhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCmluZGV4IDE1
ZWY4YmMuLjVhZTRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFyY2hpdmUuaCIKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDcsOCArNDcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4pOwog
ICAgIHZvaWQgYWRkQWxsUmVzb3VyY2VzKEFyY2hpdmUqKTsKICAgICAKLSAgICBBcmNoaXZlUmVz
b3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7Ci0gICAgUGFzc1JlZlB0
cjxBcmNoaXZlPiBwb3BTdWJmcmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IEtVUkwmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChj
b25zdCBVUkwmKTsKKyAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgCiBwcml2YXRlOiAgICAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBtX3N1YnJlc291
cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKaW5kZXggNDEwMWFkYy4uZmJlOWUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9u
YXJ5UmVmIGRpYwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9t
UHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZl
cnNpb24pOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKHJlc291cmNlRGF0YSksIEtVUkwoS1VSTCgpLCB1cmwp
LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKKyAgICByZXR1
cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKHJlc291
cmNlRGF0YSksIFVSTChVUkwoKSwgdXJsKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVO
YW1lLCByZXNwb25zZSk7CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIFBhc3NSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlCiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwo
KSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IEtVUkwm
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRh
dGEiKTsKICAgICAKQEAgLTUwMSwxOCArNTAxLDE4IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwot
ICAgIEtVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAgICBVUkwgcmVzcG9uc2VV
UkwgPSByZXNwb25zZS51cmwoKTsKICAgICAKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUg
YSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1
NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIHJlc3BvbnNlVVJM
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXNwb25z
ZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAKICAg
ICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5t
aW1lVHlwZSgpLCAiVVRGLTgiLCBmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiAKICAgICBW
ZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+IHN1YmZyYW1lQXJjaGl2ZXM7CiAg
ICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IHN1YnJlc291cmNlczsKLSAg
ICBIYXNoU2V0PEtVUkw+IHVuaXF1ZVN1YnJlc291cmNlczsKKyAgICBIYXNoU2V0PFVSTD4gdW5p
cXVlU3VicmVzb3VyY2VzOwogCiAgICAgc2l6ZV90IG5vZGVzU2l6ZSA9IG5vZGVzLnNpemUoKTsg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2Rlc1NpemU7ICsraSkgewpAQCAtNTMw
LDEzICs1MzAsMTMgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gYXJjaGl2ZSBzdWJmcmFtZSAl
cyIsIGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMaXN0SGFzaFNldDxLVVJMPiBzdWJy
ZXNvdXJjZVVSTHM7CisgICAgICAgICAgICBMaXN0SGFzaFNldDxVUkw+IHN1YnJlc291cmNlVVJM
czsKICAgICAgICAgICAgIG5vZGUtPmdldFN1YnJlc291cmNlVVJMcyhzdWJyZXNvdXJjZVVSTHMp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgICAgIExpc3RI
YXNoU2V0PEtVUkw+OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgpOwot
ICAgICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxLVVJMPjo6aXRlcmF0b3IgaXRlciA9IHN1YnJl
c291cmNlVVJMcy5iZWdpbigpOyBpdGVyICE9IGl0ZXJFbmQ7ICsraXRlcikgewotICAgICAgICAg
ICAgICAgIGNvbnN0IEtVUkwmIHN1YnJlc291cmNlVVJMID0gKml0ZXI7CisgICAgICAgICAgICBM
aXN0SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgp
OworICAgICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gc3Vi
cmVzb3VyY2VVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytpdGVyKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgVVJMJiBzdWJyZXNvdXJjZVVSTCA9ICppdGVyOwogICAgICAgICAgICAg
ICAgIGlmICh1bmlxdWVTdWJyZXNvdXJjZXMuY29udGFpbnMoc3VicmVzb3VyY2VVUkwpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTczLDcgKzU3Myw3IEBAIFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nCiAgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocmVzcG9uc2VVUkwpOwogICAgICAg
ICBpZiAoIWljb25VUkwuaXNFbXB0eSgpICYmIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoaWNvblVSTCkpIHsKICAgICAgICAgICAgIGlmIChJbWFnZSog
aWNvbkltYWdlID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChyZXNw
b25zZVVSTCwgSW50U2l6ZSgxNiwgMTYpKSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25J
bWFnZS0+ZGF0YSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWlj
b24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25JbWFnZS0+ZGF0YSgpLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCBpY29uVVJMKSwgImltYWdlL3gtaWNvbiIsICIiLCAiIikpCiAg
ICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGNlMWI3MTIuLmRiYWU5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSA6IHB1Ymxp
YyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoU2hhcmVkQnVmZmVyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiA+JiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSosIEZyYW1lRmlsdGVyKiA9IDApOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
aW5kZXggZjgzMTVjOS4uNmVjMjBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFz
c1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0
YSkKK1Bhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFz
b25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmgKaW5kZXggZGQxNGQ5OS4uMTRjZDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gTUhUTUw7IH0KIAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZl
ciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIFNoYXJlZEJ1ZmZlciopOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAgICAgLy8gQmluYXJ5IGVuY29kaW5nIHJlc3Vs
dHMgaW4gc21hbGxlciBNSFRNTCBmaWxlcyBidXQgdGhleSBtaWdodCBub3Qgd29yayBpbiBvdGhl
ciBicm93c2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcAppbmRleCAyZDcyYTEyLi5kODc2MGY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0yMTcs
NyArMjE3LDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAgICAvLyBGSVhNRTogdGhlIFVS
TCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZl
IGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2
ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAg
ICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0
ZSBVUkxzLgotICAgIEtVUkwgbG9jYXRpb24gPSBLVVJMKEtVUkwoKSwgbWltZUhlYWRlci5jb250
ZW50TG9jYXRpb24oKSk7CisgICAgVVJMIGxvY2F0aW9uID0gVVJMKFVSTCgpLCBtaW1lSGVhZGVy
LmNvbnRlbnRMb2NhdGlvbigpKTsKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
Y29udGVudEJ1ZmZlciwgbG9jYXRpb24sIG1pbWVIZWFkZXIuY29udGVudFR5cGUoKSwgbWltZUhl
YWRlci5jaGFyc2V0KCksIFN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDcyNzNiMDQuLjhjNTVkZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBGb250
UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGZsb2F0
IHNpemUsIGJvb2wgYm9sZCwgYgogYm9vbCBDYWNoZWRGb250OjplbnN1cmVTVkdGb250RGF0YSgp
CiB7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgbV9leHRlcm5hbFNW
R0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAKICAgICAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBTdHJpbmcgc3ZnU291cmNlID0gZGVj
b2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBmMzYxYWZmLi44
MzlkZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCkBAIC0yMzAsNyArMjMwLDcgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQogCiAgICAgaWYgKCFt
X3Jlc291cmNlUmVxdWVzdC51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIEtVUkwgdXJsRm9yQ2FjaGUgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVySWZOZWVkZWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1
cmxGb3JDYWNoZSA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRl
ZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVybEZvckNhY2hlLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcmFnbWVudElkZW50aWZp
ZXJGb3JSZXF1ZXN0ID0gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc28KICAgICAvLyBX
ZSBzaG91bGQgbG9vayBpbnRvIHJlbW92aW5nIHRoZSBleHBlY3RhdGlvbiBvZiB0aGF0IGtub3ds
ZWRnZSBmcm9tIHRoZSBwbGF0Zm9ybSBuZXR3b3JrIHN0YWNrcy4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCk7CiAgICAgaWYgKCFtX2ZyYWdtZW50SWRlbnRp
ZmllckZvclJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVy
bCgpOworICAgICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAgdXJsLnNldEZy
YWdtZW50SWRlbnRpZmllcihtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QpOwogICAgICAg
ICByZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgICAgICBtX2ZyYWdtZW50SWRlbnRpZmllckZvclJl
cXVlc3QgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggOGVmZTk0OS4uMDY2MzI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKICAgICBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKTsgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAppbmRleCAzNDYzNzg2Li5lNGNiMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0MiwxMyAr
MTQyLDEzIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKQog
CiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpIGNvbnN0IAogewotICAgIEtVUkwgdXJsID0gbV9kb2N1
bWVudC0+Y29tcGxldGVVUkwocmVzb3VyY2VVUkwpOworICAgIFVSTCB1cmwgPSBtX2RvY3VtZW50
LT5jb21wbGV0ZVVSTChyZXNvdXJjZVVSTCk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlKHVy
bCk7IAogfQogCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJl
c291cmNlKGNvbnN0IEtVUkwmIHJlc291cmNlVVJMKSBjb25zdAorQ2FjaGVkUmVzb3VyY2UqIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYWNoZWRSZXNvdXJjZShjb25zdCBVUkwmIHJlc291cmNlVVJM
KSBjb25zdAogewotICAgIEtVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKKyAgICBVUkwgdXJsID0gTWVtb3J5Q2FjaGU6
OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKICAgICByZXR1
cm4gbV9kb2N1bWVudFJlc291cmNlcy5nZXQodXJsKS5nZXQoKTsgCiB9CiAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdQogewogICAgIGlmIChGcmFtZSogZiA9IGZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGYtPmxvYWRlcigpLnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5n
RGlzcGF0Y2hlZCgpICE9IEZyYW1lTG9hZGVyOjpOb0Rpc21pc3NhbCkgewotICAgICAgICAgICAg
S1VSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICAg
ICAgICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsK
ICAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwg
cmVxdWVzdC5mb3JQcmVsb2FkKCkpKQogICAgICAgICAgICAgICAgIFBpbmdMb2FkZXI6OmxvYWRJ
bWFnZShmLCByZXF1ZXN0VVJMKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTCiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0
eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEtVUkwgdXJs
ID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSk7CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIHJlcXVlc3QubXV0
YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldENhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9y
aWdpbigpLT5jYWNoZVBhcnRpdGlvbigpKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RNYWluUmVzb3VyYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlLCByZXF1ZXN0KS5n
ZXQoKSk7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250
ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jv
b2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKQEAgLTMwNCw3ICszMDQsNyBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBi
b29sIGZvclByZWxvYWQpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKIHsKICAgICBpZiAoZG9jdW1l
bnQoKSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7
CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1l
bW9yeUNhY2hlKENhYwogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywg
cHJpb3JpdHk9JWQsIGZvclByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LmNoYXJzZXQoKS5sYXRpbjEoKS5kYXRh
KCksIHJlcXVlc3QucHJpb3JpdHkoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpOwogICAgIApAQCAt
NjYwLDcgKzY2MCw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgcmV0dXJuIFVzZTsK
IH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdl
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50
QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAodXJs
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC03MDMsMTIgKzcwMywxMiBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIHJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZyYW1lKCkgJiYgIWZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmFsbG93
SW1hZ2UobV9pbWFnZXNFbmFibGVkLCB1cmwpOwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50RGVmZXJzSW1hZ2UodXJsKSB8fCAhbV9hdXRvTG9h
ZEltYWdlczsKIH0KQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdQog
CiBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjppc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3QKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2RvY3VtZW50LT5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9kb2N1bWVudC0+Y29t
cGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgIGlmIChtX3ByZWxvYWRzKSB7CiAgICAgICAgIExp
c3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGVuZCA9IG1fcHJlbG9hZHMtPmVu
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA0NzYwODMyLi45Yzk1OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFz
cyBJbWFnZUxvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlciBwcm92aWRlcyBhIHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVt
b3J5Q2FjaGUKIC8vIGFuZCBlbmZvcmNlcyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQg
cnVsZXMgZm9yIHJlc291cmNlIHJldmFsaWRhdGlvbi4KQEAgLTk3LDEwICs5NywxMCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRo
ZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KLSAgICB2b2lkIHByaW50QWNjZXNzRGVu
aWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0OworICAgIHZvaWQgcHJpbnRBY2Nlc3NE
ZW5pZWRNZXNzYWdlKGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKIAogICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7Ci0gICAgQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CisgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKICAgICAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gPiBEb2N1bWVudFJlc291cmNlTWFwOwogICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VN
YXAmIGFsbENhY2hlZFJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJj
ZXM7IH0KQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEltYWdlc0Vu
YWJsZWQoYm9vbCk7CiAKLSAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwm
KSBjb25zdDsKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IFVSTCYpIGNvbnN0
OwogICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBl
KSBjb25zdDsKICAgICAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVs
b2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpOwogICAgIHZvaWQgY2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKTsKICAg
ICB2b2lkIHByaW50UHJlbG9hZFN0YXRzKCk7Ci0gICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwg
Ym9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOworICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9v
bCBmb3JQcmVsb2FkID0gZmFsc2UpOwogCiAgICAgc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogCkBAIC0xNTIsMTIgKzE1
MiwxMiBAQCBwcml2YXRlOgogICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Zm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIENhY2hlZFJlc291
cmNlUmVxdWVzdDo6RGVmZXJPcHRpb24pIGNvbnN0OwogICAgIAogICAgIGJvb2wgc2hvdWxkQ29u
dGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSop
OwotICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJl
c291cmNlOjpUeXBlLCBjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+
Kik7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CiAKLSAgICBib29sIGNsaWVu
dERlZmVyc0ltYWdlKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNsaWVudERlZmVyc0lt
YWdlKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJl
ZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaApp
bmRleCBhNDg4YWYwLi4wMGNjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKQEAgLTMyLDE1ICszMiwxNSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5bGVT
aGVldENsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhw
ZWN0ZWRUeXBlKCkgeyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KICAgICB2aXJ0dWFsIENhY2hl
ZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBl
eHBlY3RlZFR5cGUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3Ry
aW5nJiAvKiBjaGFyc2V0ICovLCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBj
b25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYg
Ki8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICov
LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBVUkwmIC8qIGJhc2VV
UkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
aW5kZXggYjY3MjMzOC4uMzdjNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNo
ZSgpCiB7CiB9CiAKLUtVUkwgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklm
TmVlZGVkKGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKQorVVJMIE1lbW9yeUNhY2hlOjpyZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKQogewogICAg
IGlmICghb3JpZ2luYWxVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVy
biBvcmlnaW5hbFVSTDsKQEAgLTgzLDcgKzgzLDcgQEAgS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQoY29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCiAgICAg
Ly8gdG8gYmUgdW5pcXVlIGV2ZW4gd2hlbiB0aGV5IGRpZmZlciBieSB0aGUgZnJhZ21lbnQgaWRl
bnRpZmllciBvbmx5LgogICAgIGlmICghb3JpZ2luYWxVUkwucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKQogICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCB1cmwgPSBvcmlnaW5h
bFVSTDsKKyAgICBVUkwgdXJsID0gb3JpZ2luYWxVUkw7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwogICAgIHJldHVybiB1cmw7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlk
YXRpbmdSZXNvdXJjZSkKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpOwogfQogCi1DYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNl
Rm9yVVJMKGNvbnN0IEtVUkwmIHJlc291cmNlVVJMKQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNh
Y2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIHJldHVy
biByZXNvdXJjZUZvclJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc291cmNlVVJMKSk7CiB9CkBA
IC0xNzEsNyArMTcxLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZv
clVSTChjb25zdCBLVVJMJiByZXNvdXJjZVVSTCkKIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNo
ZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7Ci0gICAgS1VSTCB1cmwgPSByZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsID0g
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAjaWYgRU5B
QkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSBt
X3Jlc291cmNlcy5nZXQodXJsKTsKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCAyYmEzYWRiLi43
ODVjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSAgewogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVT
aGVldDsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC0xMTIs
MTMgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVTdGF0aXN0aWMgZm9udHM7CiAgICAg
fTsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7Cisg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYpOwogICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgCiAgICAgYm9vbCBhZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKTsKICAgICB2b2lkIHJl
bW92ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIHsgZXZpY3QocmVzb3VyY2UpOyB9CiAKLSAg
ICBzdGF0aWMgS1VSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJM
JiBvcmlnaW5hbFVSTCk7CisgICAgc3RhdGljIFVSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJ
Zk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAKICAgICB2b2lkIHJldmFsaWRh
dGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRS
ZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGJjN2I5YzUuLmFmZTY3YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTYwLDEwICs2
MCwxMCBAQCBJY29uQ29udHJvbGxlcjo6fkljb25Db250cm9sbGVyKCkKIHsKIH0KIAotS1VSTCBJ
Y29uQ29udHJvbGxlcjo6dXJsKCkKK1VSTCBJY29uQ29udHJvbGxlcjo6dXJsKCkKIHsKICAgICBJ
Y29uVVJMcyBpY29uVVJMcyA9IHVybHNGb3JUeXBlcyhGYXZpY29uKTsKLSAgICByZXR1cm4gaWNv
blVSTHMuaXNFbXB0eSgpID8gS1VSTCgpIDogaWNvblVSTHNbMF0ubV9pY29uVVJMOworICAgIHJl
dHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBVUkwoKSA6IGljb25VUkxzWzBdLm1faWNvblVSTDsK
IH0KIAogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkg
Y29uc3QKQEAgLTExOSw3ICsxMTksNyBAQCBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6dXJsc0Zv
clR5cGVzKGludCBpY29uVHlwZXNNYXNrKQogICAgIHJldHVybiBpY29uVVJMczsKIH0KIAotdm9p
ZCBJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBLVVJMJiBpY29uKQordm9p
ZCBJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBVUkwmIGljb24pCiB7CiAg
ICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBm
b3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fZnJhbWUt
PmxvYWRlcigpLmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwogICAgIGljb25EYXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCks
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIEljb25Db250cm9sbGVyOjpzdGFydExvYWRlcigpCiAgICAgaWYgKCFkb2N1bWVudENh
bkhhdmVJY29uKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgS1VSTCBpY29uVVJMKHVybCgpKTsKKyAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAg
U3RyaW5nIHVybFN0cmluZyhpY29uVVJMLnN0cmluZygpKTsKICAgICBpZiAodXJsU3RyaW5nLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSWNvbkNv
bnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25M
b2FkRGVjaXNpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9hZERlY2lzaW9u
ID09IEljb25Mb2FkTm8pIHsKLSAgICAgICAgS1VSTCBpY29uVVJMKHVybCgpKTsKKyAgICAgICAg
VVJMIGljb25VUkwodXJsKCkpOwogICAgICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3Ry
aW5nKCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI1MywxMSArMjUzLDExIEBAIGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFwcGVuZFRv
SWNvblVSTHMoSWNvblR5cGUgaWNvblR5cGUsIEljb25VUkxzKiBpY29uVVJMcykKIEljb25VUkwg
SWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRVUkwoSWNvblR5cGUgaWNvblR5cGUpCiB7CiAgICAgLy8g
RG9uJ3QgcmV0dXJuIGEgZmF2aWNvbiBpY29uVVJMIHVubGVzcyB3ZSdyZSBodHRwIG9yIGh0dHBz
Ci0gICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAg
IFVSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICgh
ZG9jdW1lbnRVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gSWNv
blVSTCgpOwogCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0
UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKICAgICB1
cmwuc2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Db250cm9sbGVyLmgKaW5kZXggNjFkZmE3Ni4uY2E5YzE0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uQ29udHJvbGxlcihG
cmFtZSopOwogICAgIH5JY29uQ29udHJvbGxlcigpOwogCi0gICAgS1VSTCB1cmwoKTsKKyAgICBV
UkwgdXJsKCk7CiAgICAgSWNvblVSTHMgdXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXNNYXNrKTsK
ICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0OwogCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWREZWNpc2lvblJlY2VpdmVkKEljb25Mb2FkRGVjaXNpb24p
OwogICAgIHZvaWQgY29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24pOwog
Ci0gICAgdm9pZCBjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pOworICAgIHZvaWQg
Y29tbWl0VG9EYXRhYmFzZShjb25zdCBVUkwmIGljb24pOwogCiBwcml2YXRlOgogICAgIGJvb2wg
YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSwgSWNvblVSTHMqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggYTYyMjZkZC4uYzc3N2RkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudDsKIGNsYXNzIEljb25SZWNvcmQ7
CiBjbGFzcyBJY29uU25hcHNob3Q7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFn
ZVVSTFJlY29yZDsKIGNsYXNzIFBhZ2VVUkxTbmFwc2hvdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAKaW5k
ZXggOWYxMTYwYy4uNTFjY2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJY29uRGF0
YWJhc2VCYXNlLmgiCiAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9h
ZGVyTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJM
RXh0cmFzLm1tCmluZGV4IDA4M2IxZTYuLmQ1Y2I5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCAi
S1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRy
YXMuaCIKQEAgLTU4LDcgKzU4LDcgQEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKE5TVVJMICp1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKICAgICBpZiAoW2Zp
bGVuYW1lIGxlbmd0aF0gPT0gMCB8fCBbbGFzdFBhdGhDb21wb25lbnQgaXNFcXVhbFRvU3RyaW5n
OkAiLyJdKSB7CiAgICAgICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50IGlzIG5vIGdvb2QsIHRyeSB0
aGUgaG9zdC4KLSAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBLVVJMKHVybCkuaG9zdCgpOworICAg
ICAgICBOU1N0cmluZyAqaG9zdCA9IFVSTCh1cmwpLmhvc3QoKTsKICAgICAgICAgZmlsZW5hbWUg
PSBmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoaG9zdCk7CiAgICAgICAgIGlmIChb
ZmlsZW5hbWUgbGVuZ3RoXSA9PSAwKSB7CiAgICAgICAgICAgICAvLyBDYW4ndCBtYWtlIGEgZmls
ZW5hbWUgdXNpbmcgdGhpcyBVUkwsIHVzZSAidW5rbm93biIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRleCAyMzc1ZWQzLi41MWFhMzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAg
LTIzNiw3ICsyMzYsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQogewogICAgIC8v
IElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEg
bmV3IHNjaGVtZSBhbmQgYSBVVUlELgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2Fw
dGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVy
cmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmlu
ZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAy
MzREQzIzIikpOwogCiAgICAgcGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdv
cmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCmluZGV4IDUxYjM2YzIuLmMyN2RhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU29mdExpbmtp
bmcuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
aW5kZXggMTUxYzkwNC4uOGM1NTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cisg
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFzY2hlbWVNYXRjaGVzKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTAs
NyArMjUwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIHNjaGVtZU1h
dGNoZXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25z
dCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3NjaGVtZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIFN0cmluZyBwcm90ZWN0ZWRSZXNvdXJjZVNjaGVtZShtX3BvbGljeS0+
c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHVybC5wcm90b2NvbCgpLCBtX3Nj
aGVtZSk7CiAgICAgfQogCi0gICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNv
bnN0CisgICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9IHVybC5ob3N0KCk7CiAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShob3N0LCBtX2hvc3QpKQpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6
CiAKICAgICB9CiAKLSAgICBib29sIHBhdGhNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
KyAgICBib29sIHBhdGhNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4
NSw3ICsyODUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcGF0aCA9PSBtX3BhdGg7CiAg
ICAgfQogCi0gICAgYm9vbCBwb3J0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAg
Ym9vbCBwb3J0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGlm
IChtX3BvcnRIYXNXaWxkY2FyZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzIxLDcg
KzMyMSw3IEBAIHB1YmxpYzoKICAgICBDU1BTb3VyY2VMaXN0KENvbnRlbnRTZWN1cml0eVBvbGlj
eSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSk7CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0
IFN0cmluZyYpOwotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJik7CisgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFVSTCYpOwogICAgIGJvb2wgYWxsb3dJbmxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2FsbG93SW5saW5lOyB9CiAgICAgYm9vbCBhbGxvd0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93RXZhbDsgfQogCkBAIC0zNjQsMTIgKzM2NCwxMiBAQCB2b2lkIENTUFNvdXJjZUxpc3Q6OnBh
cnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcGFyc2UodmFsdWUuY2hhcmFjdGVycygpLCB2
YWx1ZS5jaGFyYWN0ZXJzKCkgKyB2YWx1ZS5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgQ1NQU291cmNl
TGlzdDo6bWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpCitib29sIENTUFNvdXJjZUxpc3Q6Om1hdGNo
ZXMoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKG1fYWxsb3dTdGFyKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIEtVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3Vs
ZFVzZUlubmVyVVJMKHVybCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkg
OiB1cmw7CisgICAgVVJMIGVmZmVjdGl2ZVVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJ
bm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJs
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fbGlzdFtpXS5tYXRjaGVzKGVmZmVjdGl2ZVVSTCkpCkBAIC04MTQsNyArODE0
LDcgQEAgcHVibGljOgogICAgICAgICBtX3NvdXJjZUxpc3QucGFyc2UodmFsdWUpOwogICAgIH0K
IAotICAgIGJvb2wgYWxsb3dzKGNvbnN0IEtVUkwmIHVybCkKKyAgICBib29sIGFsbG93cyhjb25z
dCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZUxpc3QubWF0Y2hlcyh1
cmwuaXNFbXB0eSgpID8gcG9saWN5KCktPnVybCgpIDogdXJsKTsKICAgICB9CkBAIC04MzksMjUg
KzgzOSwyNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKICAgICBib29sIGFs
bG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGlu
YWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1Nj
cmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2Uo
Y29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25z
dDsKLSAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGls
ZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAg
ICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291
cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dD
b25uZWN0VG9Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0
IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKwor
ICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93T2JqZWN0RnJv
bVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYs
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29s
IGFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNv
bnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsK
KyAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dNZWRpYUZyb21T
b3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dG
b3JtQWN0aW9uKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CiAKICAgICB2b2lkIGdhdGhlclJl
cG9ydFVSSXMoRE9NU3RyaW5nTGlzdCYpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRGlzYWJsZWRFcnJvck1l
c3NhZ2U7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0
aW9uIHJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZsZWN0ZWRY
U1NEaXNwb3NpdGlvbjsgfQogICAgIGJvb2wgaXNSZXBvcnRPbmx5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXBvcnRPbmx5OyB9Ci0gICAgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklzKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBvcnRVUklzOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9y
dFVSSXMoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydFVSSXM7IH0KIAogcHJpdmF0ZToKICAgICBD
U1BEaXJlY3RpdmVMaXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSosIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSk7CkBAIC04NzYsMTIgKzg3NiwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgT3duUHRyPENTUERpcmVjdGl2ZVR5cGU+Jik7CiAKICAgICBTb3VyY2VMaXN0RGlyZWN0aXZl
KiBvcGVyYXRpdmVEaXJlY3RpdmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwotICAgIHZv
aWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3Ry
aW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNv
bnN0IEtVUkwmIGJsb2NrZWRVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9
IFN0cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsK
KyAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNv
bnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBX
VEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNv
bnN0OwogCiAgICAgYm9vbCBjaGVja0V2YWwoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0Owog
ICAgIGJvb2wgY2hlY2tJbmxpbmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwogICAgIGJv
b2wgY2hlY2tOb25jZShOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAg
IGJvb2wgY2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmKSBjb25z
dDsKKyAgICBib29sIGNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBVUkwm
KSBjb25zdDsKICAgICBib29sIGNoZWNrTWVkaWFUeXBlKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSB7IG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOyB9CkBA
IC04OTAsNyArODkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5saW5lQW5kUmVwb3J0
VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGJvb2wgaXNTY3JpcHQpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tOb25jZUFu
ZFJlcG9ydFZpb2xhdGlvbihOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgbm9uY2UsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSkgY29uc3Q7CiAKLSAgICBib29sIGNo
ZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OworICAgIGJvb2wg
Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdDsKICAgICBib29s
IGNoZWNrTWVkaWFUeXBlQW5kUmVwb3J0VmlvbGF0aW9uKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdDsKIAogICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9CkBAIC05MTgsNyArOTE4LDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zY3JpcHRTcmM7CiAg
ICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fc3R5bGVTcmM7CiAKLSAgICBWZWN0b3I8
S1VSTD4gbV9yZXBvcnRVUklzOworICAgIFZlY3RvcjxVUkw+IG1fcmVwb3J0VVJJczsKIAogICAg
IFN0cmluZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKIH07CkBAIC05NDksNyArOTQ5LDcg
QEAgUGFzc093blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUo
Q29udGVudFNlY3VyaXR5UG9saWN5KiBwb2wKICAgICByZXR1cm4gZGlyZWN0aXZlcy5yZWxlYXNl
KCk7CiB9CiAKLXZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDU1BEaXJlY3RpdmVMaXN0Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcm
IGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3Qg
VVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsK
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1fcmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHldICIgKyBj
b25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNzYWdlOwogICAgIG1fcG9saWN5LT5yZXBvcnRWaW9s
YXRpb24oZGlyZWN0aXZlVGV4dCwgZWZmZWN0aXZlRGlyZWN0aXZlLCBtZXNzYWdlLCBibG9ja2Vk
VVJMLCBtX3JlcG9ydFVSSXMsIG1faGVhZGVyLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3Rh
dGUpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tOb25j
ZShOb25jZURpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIG5vbmNlCiAgICAgcmV0
dXJuICFkaXJlY3RpdmUgfHwgZGlyZWN0aXZlLT5hbGxvd3Mobm9uY2UpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2
ZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1Nv
dXJjZShTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIHJldHVybiAhZGlyZWN0aXZlIHx8IGRpcmVjdGl2ZS0+YWxsb3dzKHVybCk7CiB9
CkBAIC05OTgsNyArOTk4LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRS
ZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXYKICAgICBpZiAoZGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYykKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJ3Nj
cmlwdC1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNl
ZCBhcyBhIGZhbGxiYWNrLiI7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0
KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkg
KyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUs
IHN0YXRlKTsKKyAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNy
YywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1
ZmZpeCArICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwogICAg
IGlmICghbV9yZXBvcnRPbmx5KSB7CiAgICAgICAgIG1fcG9saWN5LT5yZXBvcnRCbG9ja2VkU2Ny
aXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IoZGlyZWN0aXZlLT50ZXh0KCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNo
ZWNrTm9uY2VBbmRSZXBvcnRWaW9sYXRpb24oTm9uY2VEaXJlY3RpdmUqIGRpcmVjdGl2ZSwgYwog
ewogICAgIGlmIChjaGVja05vbmNlKGRpcmVjdGl2ZSwgbm9uY2UpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdE5vbmNl
LCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi5cbiIsIEtV
UkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmUtPnRleHQoKSwgc2NyaXB0Tm9uY2UsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVj
dGl2ZS0+dGV4dCgpICsgIlwiLlxuIiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsK
ICAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMjMsNyArMTAy
Myw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tNZWRpYVR5cGVBbmRSZXBvcnRWaW9s
YXRpb24oTWVkaWFMaXN0RGlyZWN0aXZlKiBkaXJlCiAgICAgaWYgKHR5cGVBdHRyaWJ1dGUuaXNF
bXB0eSgpKQogICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArICIgV2hlbiBlbmZvcmNpbmcgdGhl
ICdwbHVnaW4tdHlwZXMnIGRpcmVjdGl2ZSwgdGhlIHBsdWdpbidzIG1lZGlhIHR5cGUgbXVzdCBi
ZSBleHBsaWNpdGx5IGRlY2xhcmVkIHdpdGggYSAndHlwZScgYXR0cmlidXRlIG9uIHRoZSBjb250
YWluaW5nIGVsZW1lbnQgKGUuZy4gJzxvYmplY3QgdHlwZT1cIltUWVBFIEdPRVMgSEVSRV1cIiAu
Li4+JykuIjsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgcGx1Z2lu
VHlwZXMsIG1lc3NhZ2UgKyAiXG4iLCBLVVJMKCkpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmUtPnRleHQoKSwgcGx1Z2luVHlwZXMsIG1lc3NhZ2UgKyAiXG4iLCBVUkwoKSk7CiAgICAg
cmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMDM2LDcgKzEwMzYsNyBA
QCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNv
dXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogICAgIGlmIChkaXJlY3RpdmUgPT0gbV9kZWZhdWx0
U3JjKQogICAgICAgICBzdWZmaXggPSBtYWtlU3RyaW5nKCIgTm90ZSB0aGF0ICciLCAoaXNTY3Jp
cHQgPyAic2NyaXB0IiA6ICJzdHlsZSIpLCAiLXNyYycgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwg
c28gJ2RlZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFsbGJhY2suIik7CiAKLSAgICByZXBvcnRW
aW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5bGVT
cmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBz
dWZmaXggKyAiXG4iLCBLVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKKyAgICByZXBv
cnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5
bGVTcmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIg
KyBzdWZmaXggKyAiXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogCiAgICAg
aWYgKCFtX3JlcG9ydE9ubHkpIHsKICAgICAgICAgaWYgKGlzU2NyaXB0KQpAQCAtMTA0Niw3ICsx
MDQ2LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcG9ydFZpb2xh
dGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihTb3Vy
Y2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
U291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdAog
ewogICAgIGlmIChjaGVja1NvdXJjZShkaXJlY3RpdmUsIHVybCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2
YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlIKICAgICAg
ICAgY2hlY2tFdmFsKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBu
b25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBV
UkwmIHVybCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29s
ZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBzY3JpcHQgYmVjYXVz
ZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZTogIikpKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKQEAgLTExMzcsMjEgKzExMzcsMjEg
QEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGUKICAgICByZXR1cm4gY2hlY2tOb25jZUFuZFJlcG9y
dFZpb2xhdGlvbihtX3NjcmlwdE5vbmNlLmdldCgpLCBub25jZSwgIlJlZnVzZWQgdG8gbG9hZCAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVB
dHRyaWJ1dGUsIGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0Ojph
bGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRy
aWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1
cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja01l
ZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBl
QXR0cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpICsgIicgKE1JTUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERp
cmVjdGl2ZTogIikgOgogICAgICAgICBjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgp
LCB0eXBlLCB0eXBlQXR0cmlidXRlKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2
ZUxpc3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAg
IHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVw
b3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGly
ZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgdXJsLCBzY3JpcHRTcmMpIDoKICAgICAgICAgY2hl
Y2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgdXJsKTsKIH0K
IAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJj
ZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMg
cmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9sCiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNy
Yy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZy
YW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAg
IGlmICh1cmwuaXNCbGFua1VSTCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjksMzUg
KzExNjksMzUgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXQKICAgICAgICAgY2hlY2tTb3VyY2Uo
b3BlcmF0aXZlRGlyZWN0aXZlKG1fZnJhbWVTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25z
dAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9s
YXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsLCBpbWdTcmMpIDoK
ICAgICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwg
dXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShj
b25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3Rh
dHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNr
U291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdl
dCgpKSwgdXJsLCBzdHlsZVNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJl
Y3RpdmUobV9zdHlsZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGly
ZWN0aXZlTGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5k
UmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZl
RGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSksIHVybCwgZm9udFNyYykgOgogICAgICAgICBjaGVj
a1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9mb250U3JjLmdldCgpKSwgdXJsKTsKIH0KIAot
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRl
bnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVw
b3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKSwgdXJsLCBt
ZWRpYVNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9tZWRp
YVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25u
ZWN0VG9Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwog
ICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9jb25uZWN0U3JjLmdldCgpKSwgdXJsLCBjb25uZWN0U3JjKSA6CkBAIC0xMjEwLDE0ICsxMjEw
LDE0IEBAIHZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6Z2F0aGVyUmVwb3J0VVJJcyhET01TdHJpbmdM
aXN0JiBsaXN0KSBjb25zdAogICAgICAgICBsaXN0LmFwcGVuZChtX3JlcG9ydFVSSXNbaV0uc3Ry
aW5nKCkpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbihjb25z
dCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9u
KGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFu
ZFJlcG9ydFZpb2xhdGlvbihtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCwgZm9ybUFjdGlvbikgOgog
ICAgICAgICBjaGVja1NvdXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCk7CiB9CiAKLWJvb2wg
Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2Vu
ZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fYmFzZVVS
SS5nZXQoKSwgdXJsLCBiYXNlVVJJKSA6CkBAIC0xNTM3LDggKzE1MzcsOCBAQCBib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aENvbnRleHQoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNp
ZXMsIGNvbnN0IFN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BE
aXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiwgY29uc3QgS1VSTCYpIGNvbnN0PgotYm9vbCBpc0FsbG93
ZWRCeUFsbFdpdGhOb25jZShjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywg
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpCit0ZW1wbGF0ZTxi
b29sIChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiwgY29uc3QgVVJMJikgY29uc3Q+Citib29s
IGlzQWxsb3dlZEJ5QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBv
bGljaWVzLCBjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9saWNpZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKCEocG9saWNpZXNbaV0uZ2V0KCktPiphbGxvd2VkKShub25jZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIHVybCkpCkBAIC0xNTQ3LDggKzE1NDcsOCBAQCBib29sIGlzQWxsb3dlZEJ5
QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25z
dCBTdHJpbgogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BEaXJlY3Rp
dmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhVUkwoY29u
c3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKQordGVt
cGxhdGU8Ym9vbCAoQ1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVSTCkoY29uc3QgVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgorYm9vbCBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMs
IGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpCiB7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRC
eXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE1OTYsMTIgKzE1OTYsMTIgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdE5vbmNlKGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25j
ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNv
bnRleHRMaW5lLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2Vk
QnlBbGxXaXRoTm9uY2U8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2U+KG1fcG9s
aWNpZXMsIG5vbmNlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgdXJsKTsKIH0KIAotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb2xpY2llcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAoIW1fcG9saWNpZXNbaV0tPmFsbG93UGx1Z2luVHlwZSh0eXBlLCB0eXBlQXR0cmli
dXRlLCB1cmwsIHJlcG9ydGluZ1N0YXR1cykpCkBAIC0xNjEwLDUyICsxNjEwLDUyIEBAIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHR5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJl
cG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09i
amVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dP
YmplY3RGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hp
bGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNB
bGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9t
U291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8
JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmws
IHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93
U3R5bGVGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtV
UkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5n
U3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21T
b3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxX
aXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlPihtX3BvbGljaWVz
LCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25z
dAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93TWVkaWFGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7
CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZShj
b25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nv
bm5lY3RUb1NvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93
ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlPiht
X3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dGb3JtQWN0aW9uPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJs
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJKGNvbnN0IFVS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGly
ZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1
cyk7CiB9CkBAIC0xNjg2LDEyICsxNjg2LDEyIEBAIFNlY3VyaXR5T3JpZ2luKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1jb25zdCBLVVJMJiBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT51cmwoKTsKIH0KIAotS1VSTCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKIH0KQEAgLTE3MDEsNyArMTcwMSw3
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjplbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBtYXNrKSBjb25zdAogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZW5mb3Jj
ZVNhbmRib3hGbGFncyhtYXNrKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUlu
UmVwb3J0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmlu
ZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CkBAIC0xNzExLDcgKzE3MTEsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCiB9CiAKICNpZiBFTkFCTEUo
Q1NQX05FWFQpCi1zdGF0aWMgdm9pZCBnYXRoZXJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
RGF0YShTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50SW5pdCYgaW5pdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0
aXZlRGlyZWN0aXZlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRl
cikKK3N0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJl
Y3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAg
ICAgaW5pdC5kb2N1bWVudFVSSSA9IGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKTsKICAgICBpbml0
LnJlZmVycmVyID0gZG9jdW1lbnQtPnJlZmVycmVyKCk7CkBAIC0xNzI5LDE0ICsxNzI5LDE0IEBA
IHN0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBjYWxs
RnJhbWUgPSBnZXRGaXJzdE5vbk5hdGl2ZUZyYW1lKHN0YWNrKTsKIAogICAgIGlmIChjYWxsRnJh
bWUubGluZU51bWJlcigpKSB7Ci0gICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxT
dHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CisgICAgICAgIFVSTCBzb3VyY2UgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCBjYWxsRnJhbWUuc291cmNlVVJMKCkpOwogICAgICAgICBpbml0LnNv
dXJjZUZpbGUgPSBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3VtZW50LCBzb3VyY2UpOwogICAg
ICAgICBpbml0LmxpbmVOdW1iZXIgPSBjYWxsRnJhbWUubGluZU51bWJlcigpOwogICAgIH0KIH0K
ICNlbmRpZgogCi12b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3Rp
dmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkws
IGNvbnN0IFZlY3RvcjxLVVJMPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiByZXBvcnRVUklzLCBj
b25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0
CiB7CiAgICAgbG9nVG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBjb250ZXh0
TGluZSwgc3RhdGUpOwogCkBAIC0xNzg5LDcgKzE3ODksNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29u
c3QgUwogICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdldEZpcnN0
Tm9uTmF0aXZlRnJhbWUoc3RhY2spOwogCiAgICAgICAgIGlmIChjYWxsRnJhbWUubGluZU51bWJl
cigpKSB7Ci0gICAgICAgICAgICBLVVJMIHNvdXJjZSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBj
YWxsRnJhbWUuc291cmNlVVJMKCkpOworICAgICAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgICAgICBjc3BSZXBv
cnQtPnNldFN0cmluZygic291cmNlLWZpbGUiLCBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3Vt
ZW50LCBzb3VyY2UpKTsKICAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0TnVtYmVyKCJsaW5lLW51
bWJlciIsIGNhbGxGcmFtZS5saW5lTnVtYmVyKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA5Y2RhYTc4Li4yZWE4OGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgQ29udGVudFNlY3VyaXR5UG9saWN5X2gKICNkZWZpbmUgQ29udGVu
dFNlY3VyaXR5UG9saWN5X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTkyLDE5ICs5MiwxOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRS
ZXBvcnQpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGlu
Z1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6RXhl
Y1N0YXRlKiA9IDAsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJv
b2wgYWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtV
UkwmID0gS1VSTCgpKSBjb25zdDsKLSAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYsIFJlcG9y
dGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZy
b21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21T
b3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0Owot
ICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1
cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29u
c3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJl
cG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwg
UmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5l
Y3RUb1NvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1
cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93U2Ny
aXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBVUkwmID0gVVJMKCkp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBT
ZW5kUmVwb3J0KSBjb25zdDsKKworICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBv
cnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93SW1h
Z2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNv
bnN0OworICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5n
U3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNl
KGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJv
b2wgYWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2Vu
ZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9y
bUFjdGlvbihjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsK
KyAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5k
UmVwb3J0KSBjb25zdDsKIAogICAgIFJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHJlZmxlY3RlZFhT
U0Rpc3Bvc2l0aW9uKCkgY29uc3Q7CiAKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlcG9ydEludmFsaWRSZWZsZWN0ZWRYU1MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgdm9pZCByZXBvcnRNaXNzaW5nUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZvaWQgcmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0g
ICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25z
dCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2Fn
ZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklz
LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5n
KCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OworICAgIHZv
aWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3Ry
aW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNv
bnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CiAKICAgICB2b2lkIHJl
cG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQpIGNvbnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgS1VS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2b2lkIGVuZm9yY2VT
YW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKSBjb25zdDsKICAgICBTdHJpbmcgZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmgKaW5kZXggMTI4NmVjZi4uMjNkM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQ29udGV4dE1lbnVJdGVtOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAgICBjbGFzcyBDb250
ZXh0TWVudUNsaWVudCB7CiAgICAgcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTcGVha2luZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAppbmRleCA0NDgyOTgyLi5kYTIxN2ZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQp
CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG9wZW5O
ZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCitzdGF0aWMgdm9p
ZCBvcGVuTmV3V2luZG93KGNvbnN0IFVSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSkpOwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSgpCiAKICAgICBpZiAoIW1faGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CiAgICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAg
IEtVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICAg
ICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIuY2xp
ZW50KCkuY2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0
ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKENvcHlMaW5rSXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBLVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICAgICAgVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKQEAg
LTg0OCw3ICs4NDgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
I2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBLVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlTWVkaWFVUkwoKTsKKyAgICAgICAgVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKTsKICAgICAgICAgaWYgKCFtZWRpYVVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgfHwgIWltYWdlVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBGcmFtZUxvYWRlciYg
bG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgICAgICBLVVJMIGxpbmtVUkwgPSBtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5rVVJMID0gbV9oaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIWxpbmtVUkwuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBpZiAobG9hZGVyLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0KGxpbmtVUkwpKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
T3BlbkxpbmtJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMDBjNzZlZS4uN2EyNjRlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAKQEAgLTQ4LDIyICs0OCwyMiBAQCBib29s
IGlzUG9saWN5QWN0aXZlSW5Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgcmV0dXJuIGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5pc0FjdGl2ZSgp
OwogfQogCi10ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhU
eXBlKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgordGVtcGxhdGU8Ym9vbCAoQ29u
dGVudFNlY3VyaXR5UG9saWN5OjoqYWxsb3dXaXRoVHlwZSkoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0PgogYm9vbCBpc0FsbG93ZWRXaXRoVHlwZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFpc1BvbGljeUFjdGl2
ZUluQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4g
KGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlwZSkodHlwZSwg
dHlwZSwgS1VSTCgpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHByZXNzUmVwb3J0KTsKKyAg
ICByZXR1cm4gKGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlw
ZSkodHlwZSwgdHlwZSwgVVJMKCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6U3VwcHJlc3NSZXBv
cnQpOwogfQogCi10ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dp
dGhVUkwpKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q+Cit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dp
dGhVUkwpKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
KSBjb25zdD4KIGJvb2wgaXNBbGxvd2VkV2l0aFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5D
b250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEtVUkwgcGFyc2Vk
VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgcGFyc2VkVVJMID0gY29u
dGV4dC0+Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIXBhcnNlZFVSTC5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHRocm93IGEg
SmF2YVNjcmlwdCBlcnJvci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDM2YmYy
YmUuLmI2OWM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcwLDcgKzcwLDcg
QEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgpAQCAtMTc2
OSw3ICsxNzY5LDcgQEAgdm9pZCBET01XaW5kb3c6OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE8KICAgICBpZiAoIWZpcnN0RnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFt
ZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVk
VVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAg
ICBpZiAoY29tcGxldGVkVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OTQs
NyArMTc5NCw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAKIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKERPTVdpbmRvdyogYWN0aXZlV2luZG93KQogewotICAgIGNvbnN0IEtVUkwmIGFjdGl2
ZVdpbmRvd1VSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3Qg
VVJMJiBhY3RpdmVXaW5kb3dVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIGlmIChhY3RpdmVXaW5kb3dVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIApAQCAtMTgwNiw4ICsxODA2LDggQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5B
Y2Nlc3NFcnJvck1lc3NhZ2UoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiArIGFjdGl2ZU9yaWdpbi0+
dG9TdHJpbmcoKSArICJcIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiAr
IHRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKSArICJcIi4gIjsKIAogICAgIC8vIFNhbmRib3ggZXJy
b3JzOiBVc2UgdGhlIG9yaWdpbiBvZiB0aGUgZnJhbWVzJyBsb2NhdGlvbiwgcmF0aGVyIHRoYW4g
dGhlaXIgYWN0dWFsIG9yaWdpbiAoc2luY2Ugd2Uga25vdyB0aGF0IGF0IGxlYXN0IG9uZSB3aWxs
IGJlICJudWxsIikuCi0gICAgS1VSTCBhY3RpdmVVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50
KCktPnVybCgpOwotICAgIEtVUkwgdGFyZ2V0VVJMID0gZG9jdW1lbnQoKS0+dXJsKCk7CisgICAg
VVJMIGFjdGl2ZVVSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJM
IHRhcmdldFVSTCA9IGRvY3VtZW50KCktPnVybCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc1Nh
bmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPmlzU2Fu
ZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CiAgICAgICAgIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZy
YW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoYWN0aXZlVVJMKS0+dG9TdHJpbmco
KSArICJcIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodGFyZ2V0VVJMKS0+dG9TdHJpbmcoKSArICJcIi4gIjsKICAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pICYmIGFjdGl2ZVdpbmRvdy0+ZG9jdW1l
bnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCkBAIC0xODYyLDcgKzE4NjIsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgQXRvbWljUwogewogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2
ZVdpbmRvdy0+ZnJhbWUoKTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRl
ZFVSTCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0
cmluZygpKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7
CiAgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICFjb21wbGV0ZWRVUkwuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIC8vIERvbid0IGV4cG9zZSBjbGllbnQgY29kZSB0byBpbnZhbGlkIFVS
THMuCiAgICAgICAgIGFjdGl2ZVdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0byBv
cGVuIGEgd2luZG93IHdpdGggaW52YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5nKCkg
KyAiJy5cbiIpOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERP
TVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4K
ICAgICAgICAgaWYgKCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUodGFyZ2V0RnJhbWUpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJz
dEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworICAgICAgICBVUkwg
Y29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3Ry
aW5nKTsKIAogICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKICAg
ICAgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0ZGVhMTk5Li44ODNlYmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYzk3ZmY0ZC4uMTgxODQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc0MiwxMiArNzQyLDEy
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBv
dXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0
YXJ0IGEgZHJhZyBvbgogICAgICAgICAvLyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhY3R1YWxseSB1
bmRlciB0aGUgZHJhZyBvcmlnaW4uCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBLVVJMIGxp
bmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VV
UkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICBVUkwgbGlua1VSTCA9
IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgVVJMIGltYWdlVVJMID0gaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdn
ZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlv
bigpKTsKIAotICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKKyAgICBtX2RyYWdnaW5n
SW1hZ2VVUkwgPSBVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKIAog
ICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5oCmluZGV4IDI4MDM4OWYuLjNjNjkxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDcg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERpZEluaXRpYXRl
RHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRlZDsgfSAK
ICAgICAgICAgYm9vbCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRp
YXRlRHJhZzsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KLSAgICAgICAgY29uc3QgS1VS
TCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsg
fQorICAgICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBt
X2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgICAgIGNvbnN0
IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CiAg
ICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50KiwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRSZWN0JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBJbnRQb2ludCYpOwogICAgICAg
ICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3Qg
SW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wgZm9yTGluayk7CiAgICAgICAgIHZv
aWQgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwotICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpOworICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9h
cmQqLCBFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICAgICAg
ICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kaWRJbml0aWF0
ZURyYWc7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBT
ZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRo
aW4gV2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKLSAgICAgICAgS1VSTCBt
X2RyYWdnaW5nSW1hZ2VVUkw7CisgICAgICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAg
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBhZGU1ZmM2Li41OTI4
YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBFdmVudFNvdXJj
ZTo6ZGVmYXVsdFJlY29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5lIEV2ZW50U291cmNlOjpF
dmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKK2lubGluZSBFdmVudFNvdXJj
ZTo6RXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwgbV93aXRoQ3JlZGVudGlh
bHMoZmFsc2UpCkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50
U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEtVUkwgZnVsbFVSTCA9IGNvbnRleHQtPmNvbXBs
ZXRlVVJMKHVybCk7CisgICAgVVJMIGZ1bGxVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OwogICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCA5N2U3
YzEwLi5hNDFmMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw5ICszNCw5
IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgotICAgIEV2ZW50U291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgRGljdGlvbmFyeSYp
OworICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBj
b25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zLCBpbnQgZmll
bGRMZW5ndGgsIGludCBsaW5lTGVuZ3RoKTsKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4g
Y3JlYXRlTWVzc2FnZUV2ZW50KCk7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
ICAgICBib29sIG1fd2l0aENyZWRlbnRpYWxzOwogICAgIFN0YXRlIG1fc3RhdGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggZTgyMTRlNC4uN2FmYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKQogfQogI2VuZGlmCiAKLWJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJM
JiB1cmwpIGNvbnN0Citib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgLy8gV2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1
c2Ugc29tZSBzaXRlcyBkZXBlbmQgb24gdGhhdCwKICAgICAvLyBidXQgd2UgZG9uJ3QgYWxsb3cg
bW9yZSB0aGFuIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA3MDMwNmQ5Li4wMDJlMDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgICAg
IGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9
CiAKLSAgICAgICAgYm9vbCBpc1VSTEFsbG93ZWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAg
ICBib29sIGlzVVJMQWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIC8vID09PT09PT09
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0ZmJmMTQyLi4zZTJmOTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAgICAgc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoZmFs
c2UpOwogfQogCi1ib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBLVVJMJiB1
cmwpCitib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRoZW4gd2UgaGF2ZSBubyBwbGFjZSB3ZSBu
ZWVkIHRvIGp1bXAgdG8uCiAgICAgLy8gT1RPSCBJZiBDU1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlv
dXNseSwgd2Ugd2FudCB0byBzZXQgaXQgdG8gMCwgcmVjYWxjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAppbmRleCAwM2ZjMjIyLi40Y2M3ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gTk8gT1RIRVIgUExBVEZPUk0gQkVTSURFUyBNQUMgU0hPVUxE
IFVTRSBUSElTIE1FVEhPRC4KICAgICB2b2lkIGFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZs
b2F0KiBuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9hdCBib3R0
b21MaW1pdCk7CiAKLSAgICBib29sIHNjcm9sbFRvRnJhZ21lbnQoY29uc3QgS1VSTCYpOworICAg
IGJvb2wgc2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmKTsKICAgICBib29sIHNjcm9sbFRvQW5j
aG9yKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5j
aG9yKE5vZGUqKTsKICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGNvbnN0
IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDI1YzFmZTQuLmQzZTMxNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgdm9pZCBIaXN0
b3J5OjpnbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFuY2UpCiAg
ICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRp
b24oZGlzdGFuY2UpOwogfQogCi1LVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQorVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQogewotICAgIEtVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VV
UkwoKTsKKyAgICBVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsK
ICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2VVUkw7CiAK
LSAgICByZXR1cm4gS1VSTChiYXNlVVJMLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoYmFz
ZVVSTCwgdXJsU3RyaW5nKTsKIH0KIAogdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2JqZWN0VHlw
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBIaXN0b3J5Ojpz
dGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHIKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIEtVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7
CisgICAgVVJMIGZ1bGxVUkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwogICAgIGlmICghZnVs
bFVSTC5pc1ZhbGlkKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoZnVsbFVSTCkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggY2E5NzZhOS4uODBiNjhkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmgKQEAgLTI3LDkgKzI3LDkgQEAKICNkZWZpbmUgSGlzdG9yeV9oCiAK
ICNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIaXN0b3J5KEZyYW1lKik7
CiAKLSAgICBLVVJMIHVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBVUkwgdXJs
Rm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHN0YXRlSW50ZXJuYWwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAppbmRleCBkODQzNDc4Li5iNzViMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ0LDExICs0NCwxMSBAQCBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUqIGZy
YW1lKQogewogfQogCi1pbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0Citp
bmxpbmUgY29uc3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKKyAgICBjb25zdCBVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAg
IGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVzZSAi
YWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3ZSBo
YXZlIGEgZnJhbWUpLgogCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9zdCgp
IGNvbnN0CiAKICAgICAvLyBOb3RlOiB0aGlzIGlzIHRoZSBJRSBzcGVjLiBUaGUgTlMgc3BlYyBz
d2FwcyB0aGUgdHdvLCBpdCBzYXlzCiAgICAgLy8gIlRoZSBob3N0bmFtZSBwcm9wZXJ0eSBpcyB0
aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgaG9zdCBhbmQgcG9ydCBwcm9wZXJ0aWVzLCBzZXBhcmF0
ZWQgYnkgYSBjb2xvbi4iCi0gICAgY29uc3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7CisgICAg
Y29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQoKSA/
IHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6IHVybC5ob3N0
KCk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QK
ICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGNvbnN0
IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJs
KCk7CiAgICAgcmV0dXJuIHVybC5oYXNQb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgp
KSA6ICIiOwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwYXRobmFt
ZSgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucGF0aCgpLmlzRW1wdHkoKSA/ICIvIiA6IHVy
bC5wYXRoKCk7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBTdHJpbmcgTG9jYXRpb246OnNlYXJj
aCgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0
cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lk
IExvY2F0aW9uOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sLCBET01XaW5kb3cq
IGFjdGl2ZVdpbmRvdywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVy
bCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29s
KHByb3RvY29sKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZgogewogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5n
KCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgTG9jYXRpb246OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIERPTVdpbmRv
dyogYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5h
bWUpOwogICAgIHNldExvY2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdp
bmRvdyk7CiB9CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0UG9ydChjb25z
dCBTdHJpbmcmIHBvcnRTdHJpbmcsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW4KIHsK
ICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKICAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAocG9y
dCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAg
dXJsLnJlbW92ZVBvcnQoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQ
YXRobmFtZShjb25zdCBTdHJpbmcmIHBhdGhuYW1lLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywg
RE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJs
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKICAgICBzZXRMb2Nh
dGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgTG9jYXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHNlYXJj
aCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJs
LnNldFF1ZXJ5KHNlYXJjaCk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIExvY2F0aW9u
OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgaGFzaCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyogZgogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZpZXIg
PSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRlbnRp
ZmllciA9IGhhc2g7CiAgICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5o
CmluZGV4IGI0ZjlhNGMuLjk1YjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBG
cmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TG9jYXRpb24o
Y29uc3QgU3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RX
aW5kb3cpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDdjMThhYjkuLmYwMTljNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTYxLDcgKzk2
MSw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogewogICAg
IC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1vZGVsIG9mIGp1c3QgYmVp
bmcgaGFuZGVkIHRoZSBzaGVldAogICAgIC8vIHRleHQgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZSBV
Ukwgb3Vyc2VsdmVzLgotICAgIEtVUkwgdXJsID0gbV9zZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRM
b2NhdGlvbigpOworICAgIFVSTCB1cmwgPSBtX3NldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0
aW9uKCk7CiAgICAgCiAgICAgLy8gQWxsb3cgYW55IGxvY2FsIGZpbGUgVVJMIHNjaGVtZSB0byBi
ZSBsb2FkZWQuCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDFh
ZDFhNTYuLjE1NWYyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTIxNSw3ICsy
MTUsNyBAQCBpbmxpbmUgdm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIGhh
c2gpCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygp
OwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoY29uc3QgS1VSTCYgdXJsKQor
dm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Myw3ICsy
NzMsNyBAQCBTdG9yYWdlTmFtZXNwYWNlKiBQYWdlR3JvdXA6OnRyYW5zaWVudExvY2FsU3RvcmFn
ZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwm
IHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRl
bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewpAQCAtMjg4LDcg
KzI4OCw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgc2NyaXB0c0luV29ybGQtPmFw
cGVuZCh1c2VyU2NyaXB0LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVl
dFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFVSTCYgdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCwKQEAgLTMwOCw3ICszMDgs
NyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3Zl
VXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1
cmwpCit2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxkLCB3
b3JsZCk7CiAKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNj
cmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cgogICAg
ICAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUoaXQpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVt
b3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxk
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVF9B
Ukcod29ybGQsIHdvcmxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXggMDM0MjE2My4u
OWExZGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXI7CiAgICAgY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczsKICNlbmRpZgotICAgIGNsYXNz
IEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIEdyb3VwU2V0dGluZ3M7CiAgICAgY2xh
c3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiAgICAgY2xhc3MgUGFnZTsKQEAgLTczLDcg
KzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNMaW5rVmlzaXRl
ZChMaW5rSGFzaCk7CiAKLSAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25zdCBLVVJMJik7
CisgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgVVJMJik7CiAgICAgICAgIHZvaWQg
YWRkVmlzaXRlZExpbmsoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogICAgICAgICB2b2lkIGFkZFZp
c2l0ZWRMaW5rSGFzaChMaW5rSGFzaCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtz
KCk7CkBAIC04OSwxNiArODksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0
b3JhZ2VOYW1lc3BhY2UqIHRyYW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9w
T3JpZ2luKTsKIAotICAgICAgICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJX
b3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiwKKyAgICAgICAgdm9pZCBh
ZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhZGRVc2VyU3R5
bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IEtVUkwmLAorICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFw
cGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlz
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwgPSBVc2VyU3R5
bGVVc2VyTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJT
dHlsZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSA9IEluamVjdEluRXhpc3RpbmdEb2N1bWVu
dHMpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKiwgY29uc3QgS1VSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZW1v
dmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOworICAg
ICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCos
IGNvbnN0IFVSTCYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQo
RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAppbmRleCA5YjkwZmNiLi5kMWFkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3Vt
dWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSAmJiAhdXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNzUsNyArMTc1LDcgQEAgUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpS
ZXNvdXJjZSgpCiB7CiB9CiAKLVBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSkKK1BhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhKQogICAgIDogdXJsKHVybCkKICAgICAsIG1pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgZGF0
YShkYXRhKQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZShQYWdlKiBwYWdlKQogdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUq
IGZyYW1lKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwot
ICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPnVybCgpOworICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+
dXJsKCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0JsYW5rVVJMKCkpIHsKICAg
ICAgICAgLy8gRm9yIGJsYW5rIGZyYW1lcyB3ZSBnZW5lcmF0ZSBhIGZha2UgVVJMIHNvIHRoZXkg
Y2FuIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgY29udGFpbmluZyBmcmFtZS4KICAgICAgICAgdXJs
ID0gdXJsRm9yQmxhbmtGcmFtZShmcmFtZSk7CkBAIC0yMzQsMTkgKzIzNCwxOSBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAKICAgICAgICAgaWYg
KGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTEltYWdlRWxl
bWVudCogaW1hZ2VFbGVtZW50ID0gdG9IVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwotICAgICAg
ICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAgICAgICBVUkwgdXJsID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3JjQXR0cikpOwogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhj
YWNoZWRJbWFnZSwgaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCB1cmwpOwogICAgICAgICB9IGVs
c2UgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpsaW5rVGFnKSkgewogICAgICAg
ICAgICAgSFRNTExpbmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxMaW5r
RWxlbWVudCo+KGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0
ID0gbGlua0VsZW1lbnQtPnNoZWV0KCkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHVybCA9IGRv
Y3VtZW50LT5jb21wbGV0ZVVSTChsaW5rRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
aHJlZkF0dHIpKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRl
VVJMKGxpbmtFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpOwogICAg
ICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIHVybCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gdG9IVE1MU3R5bGVFbGVtZW50
KGVsZW1lbnQpLT5zaGVldCgpKQotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoc2hlZXQsIEtVUkwoKSk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChzaGVldCwgVVJMKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAg
ICBzZXJpYWxpemVGcmFtZShjaGlsZEZyYW1lKTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBL
VVJMJiB1cmwpCit2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZ0J1
aWxkZXIgY3NzVGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldC0+
bGVuZ3RoKCk7ICsraSkgewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3Qg
S1VSCiAgICAgICAgIC8vIFNvbWUgcnVsZXMgaGF2ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZW0gdGhhdCB3ZSBuZWVkIHRvIHJldHJpZXZlLgogICAgICAgICBpZiAocnVsZS0+dHlwZSgp
ID09IENTU1J1bGU6OklNUE9SVF9SVUxFKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBp
bXBvcnRSdWxlID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KHJ1bGUpOwotICAgICAgICAg
ICAgS1VSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVsZS0+aHJl
ZigpKTsKKyAgICAgICAgICAgIFVSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwo
aW1wb3J0UnVsZS0+aHJlZigpKTsKICAgICAgICAgICAgIGlmIChtX3Jlc291cmNlVVJMcy5jb250
YWlucyhpbXBvcnRVUkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCksIGltcG9ydFVS
TCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NT
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICB9CiB9
CiAKLXZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2Uq
IGltYWdlLCBSZW5kZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IEtVUkwmIHVybCkKK3Zv
aWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdl
LCBSZW5kZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAg
ICByZXR1cm47CkBAIC0zNDAsMTggKzM0MCwxOCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bAog
CiAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2UqPihzdHlsZUltYWdlKS0+Y2FjaGVkSW1hZ2UoKTsKIAotICAgICAgICBLVVJMIHVybCA9IGRv
Y3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlLT51cmwoKSk7CiAgICAgICAgIGFkZEltYWdlVG9SZXNv
dXJjZXMoaW1hZ2UsIDAsIHVybCk7CiAgICAgfQogfQogCi1LVVJMIFBhZ2VTZXJpYWxpemVyOjp1
cmxGb3JCbGFua0ZyYW1lKEZyYW1lKiBmcmFtZSkKK1VSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9y
QmxhbmtGcmFtZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+Ojpp
dGVyYXRvciBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKKyAgICBIYXNoTWFw
PEZyYW1lKiwgVVJMPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFt
ZSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuIGl0ZXItPnZhbHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2ZyYW1lLyIgKyBT
dHJpbmc6Om51bWJlcihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIEtVUkwgZmFrZVVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIGZha2VVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpOwogICAgIG1fYmxhbmtGcmFtZVVSTHMuYWRkKGZyYW1lLCBmYWtlVVJMKTsKIAogICAgIHJl
dHVybiBmYWtlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDRlODE1
NzkuLjE3MzFkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMxLDgg
KzMxLDggQEAKICNpZm5kZWYgUGFnZVNlcmlhbGl6ZXJfaAogI2RlZmluZSBQYWdlU2VyaWFsaXpl
cl9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTU0LDExICs1NCwxMSBAQCBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBQYWdlU2VyaWFsaXpl
ciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKLSAgICAgICAgS1VSTCB1cmw7Cisg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVzb3VyY2UoKTsKLSAgICAgICAgUmVzb3Vy
Y2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhKTsKKyAgICAgICAgUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIH07CiAKICAg
ICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Kik7CkBAIC02OCwyMiAr
NjgsMjIgQEAgcHVibGljOgogICAgIC8vIHZlY3RvciBpcyB0aGUgdG9wIGZyYW1lIHNlcmlhbGl6
ZWQgY29udGVudC4KICAgICB2b2lkIHNlcmlhbGl6ZShQYWdlKik7CiAKLSAgICBLVVJMIHVybEZv
ckJsYW5rRnJhbWUoRnJhbWUqKTsKKyAgICBVUkwgdXJsRm9yQmxhbmtGcmFtZShGcmFtZSopOwog
CiBwcml2YXRlOgogICAgIHZvaWQgc2VyaWFsaXplRnJhbWUoRnJhbWUqKTsKIAogICAgIC8vIFNl
cmlhbGl6ZXMgdGhlIHN0eWxlc2hlZXQgYmFjayB0byB0ZXh0IGFuZCBhZGRzIGl0IHRvIHRoZSBy
ZXNvdXJjZXMgaWYgVVJMIGlzIG5vdC1lbXB0eS4KICAgICAvLyBJdCBhbHNvIGFkZHMgYW55IHJl
c291cmNlcyBpbmNsdWRlZCBpbiB0aGF0IHN0eWxlc2hlZXQgKGluY2x1ZGluZyBhbnkgaW1wb3J0
ZWQgc3R5bGVzaGVldHMgYW5kIHRoZWlyIG93biByZXNvdXJjZXMpLgotICAgIHZvaWQgc2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOworICAgIHZvaWQg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgVVJMJik7CiAKLSAg
ICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBSZW5kZXJPYmplY3QqLCBj
b25zdCBLVVJMJik7CisgICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwg
UmVuZGVyT2JqZWN0KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0Zv
clByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIERvY3VtZW50Kik7CiAgICAgdm9p
ZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKIAogICAg
IFZlY3RvcjxSZXNvdXJjZT4qIG1fcmVzb3VyY2VzOwotICAgIExpc3RIYXNoU2V0PEtVUkw+IG1f
cmVzb3VyY2VVUkxzOwotICAgIEhhc2hNYXA8RnJhbWUqLCBLVVJMPiBtX2JsYW5rRnJhbWVVUkxz
OworICAgIExpc3RIYXNoU2V0PFVSTD4gbV9yZXNvdXJjZVVSTHM7CisgICAgSGFzaE1hcDxGcmFt
ZSosIFVSTD4gbV9ibGFua0ZyYW1lVVJMczsKICAgICB1bnNpZ25lZCBtX2JsYW5rRnJhbWVDb3Vu
dGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZy5jcHAKaW5kZXggNTM5ODc4Zi4uZjhmZmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggZWQyNDQ5Mi4uNjI3
Njk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNl
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5n
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggY2ViYzg5Ni4uY2MxY2FkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBJ
bnZhbGlkUG9ydCA9IDA7CiBjb25zdCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotc3Rh
dGljIGJvb2wgc2NoZW1lUmVxdWlyZXNIb3N0KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29s
IHNjaGVtZVJlcXVpcmVzSG9zdChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBXZSBleHBlY3Qg
VVJMcyB3aXRoIHRoZXNlIHNjaGVtZXMgdG8gaGF2ZSBhdXRob3JpdHkgY29tcG9uZW50cy4gSWYg
dGhlCiAgICAgLy8gVVJMIGxhY2tzIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHdlIGdldCBjb25j
ZXJuZWQgYW5kIG1hcmsgdGhlIG9yaWdpbgpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBz
Y2hlbWVSZXF1aXJlc0hvc3QoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKIH0KIAotYm9vbCBT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYg
RU5BQkxFKEJMT0IpCiAgICAgLy8gRklYTUU6IEJsb2IgVVJMcyBkb24ndCBoYXZlIGlubmVyIFVS
THMuIFRoZWlyIGZvcm0gaXMgImJsb2I6PGlubmVyLW9yaWdpbj4vPFVVSUQ+Iiwgc28gdHJlYXRp
bmcgdGhlIHBhcnQgYWZ0ZXIgImJsb2I6IiBhcyBhIFVSTCBpcyBpbmNvcnJlY3QuCkBAIC03MCwx
NiArNzAsMTYgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3Qg
S1VSTCYgdXJsKQogLy8gSW4gZ2VuZXJhbCwgZXh0cmFjdGluZyB0aGUgaW5uZXIgVVJMIHZhcmll
cyBieSBzY2hlbWUuIEl0IGp1c3Qgc28gaGFwcGVucwogLy8gdGhhdCBhbGwgdGhlIFVSTCBzY2hl
bWVzIHdlIGN1cnJlbnRseSBzdXBwb3J0IHRoYXQgdXNlIGlubmVyIFVSTHMgZm9yIHRoZWlyCiAv
LyBzZWN1cml0eSBvcmlnaW4gY2FuIGJlIHBhcnNlZCB1c2luZyB0aGlzIGFsZ29yaXRobS4KLUtV
UkwgU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCitVUkwg
U2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBp
ZiAodXJsLmlubmVyVVJMKCkpCiAgICAgICAgIHJldHVybiAqdXJsLmlubmVyVVJMKCk7CiAgICAg
Ly8gRklYTUU6IFVwZGF0ZSB0aGlzIGNhbGxzaXRlIHRvIHVzZSB0aGUgaW5uZXJVUkwgbWVtYmVy
IGZ1bmN0aW9uIHdoZW4KICAgICAvLyB3ZSBmaW5pc2ggaW1wbGVtZW50aW5nIGl0LgotICAgIHJl
dHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5w
YXRoKCkpKTsKKyAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogI2lm
IEVOQUJMRShCTE9CKQogICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQpAQCAtOTAsMTgg
KzkwLDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmln
aW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgYm9vbCBzaG91
bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3Vs
ZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIHVud3JhcCB0aGUgVVJMIGZ1cnRoZXI/Ci0gICAgS1VSTCBpbm5lclVSTCA9IFNlY3VyaXR5
T3JpZ2luOjpzaG91bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJ
bm5lclVSTCh1cmwpIDogdXJsOworICAgIFVSTCBpbm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpz
aG91bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1
cmwpIDogdXJsOwogCiAgICAgLy8gRklYTUU6IENoZWNrIHdoZXRoZXIgaW5uZXJVUkwgaXMgdmFs
aWQuCiAKICAgICAvLyBGb3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHByb2JhYmx5IG1pc3Bh
cnNlZCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCi0gICAgLy8gVGhpcyBp
cyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIEtVUkwgcGFyc2luZywg
YW5kIGZvciBuZXR3b3JrIGJhY2stZW5kcyB0aGF0IHBhcnNlIFVSTHMgZGlmZmVyZW50bHksCisg
ICAgLy8gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIFVS
TCBwYXJzaW5nLCBhbmQgZm9yIG5ldHdvcmsgYmFjay1lbmRzIHRoYXQgcGFyc2UgVVJMcyBkaWZm
ZXJlbnRseSwKICAgICAvLyBhbmQgY291bGQgbWlzaW50ZXJwcmV0IGFub3RoZXIgY29tcG9uZW50
IGZvciBob3N0bmFtZS4KICAgICBpZiAoc2NoZW1lUmVxdWlyZXNIb3N0KGlubmVyVVJMKSAmJiBp
bm5lclVSTC5ob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNyw3
ICsxMTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
Y29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgp
ID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCku
aXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9y
dCgpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkK
IHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNhY2hlZE9yaWdpbiA9IGdldENhY2hlZE9y
aWdpbih1cmwpOwogICAgIGlmIChjYWNoZWRPcmlnaW4uZ2V0KCkpCkBAIC0yMTYsNyArMjE2LDcg
QEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5l
d0RvbWFpbikKICAgICBtX2RvbWFpbiA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQogCi1ib29sIFNl
Y3VyaXR5T3JpZ2luOjppc1NlY3VyZShjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3Jp
Z2luOjppc1NlY3VyZShjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJbnZhbGlkIFVSTHMgYXJl
IHNlY3VyZSwgYXMgYXJlIFVSTHMgd2hpY2ggaGF2ZSBhIHNlY3VyZSBwcm90b2NvbC4KICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUodXJsLnByb3RvY29sKCkpKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OnBhc3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIChtX2ZpbGVQYXRoID09IG90aGVyLT5tX2ZpbGVQYXRoKTsKIH0KIAot
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewog
ICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTQs
NyArMzE0LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1
cmwpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjp0
YWludHNDYW52YXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6
dGFpbnRzQ2FudmFzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChjYW5SZXF1ZXN0
KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGRy
YWdJbml0aWF0b3IpIGNvbgogLy8gaHR0cCBvciBodHRwcywgb3RoZXJ3aXNlIHdlIGlnbm9yZSB0
aGUgbmVzdGluZyBmb3IgdGhlIHB1cnBvc2Ugb2YgYSBzZWN1cml0eSBjaGVjay4gV2UgbmVlZAog
Ly8gYSBmYWNpbGl0eSBmb3IgcmVnaXN0ZXJpbmcgbmVzdGluZyBzY2hlbWVzLCBhbmQgc29tZSBn
ZW5lcmFsaXplZCBsb2dpYyBmb3IgdGhlbS4KIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJl
bW92ZWQgYXMgYW4gb3V0Y29tZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxOTYKLXN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZh
bWlseShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9j
b2xJbkhUVFBGYW1pbHkoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAgICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVl
ZCIsIGZhbHNlKSkKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVz
dGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB8fCB1cmxT
dHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcu
c3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoiLCBmYWxzZSk7CiB9CiAKLWJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0
eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAobV91
bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDk2LDcgKzQ5Niw3IEBA
IFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogCiBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShLVVJMKEtVUkwoKSwgb3JpZ2luU3RyaW5nKSk7CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoVVJMKFVSTCgpLCBvcmlnaW5TdHJpbmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIgc2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwpAQCAtNTA2LDM0ICs1MDYsMzQgQEAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3QKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFy
YXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2Vw
YXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsK
ICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAg
ICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2Vw
YXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsK
ICAgICAgICAgCiAgICAgLy8gRW5zdXJlIHRoZXJlIHdlcmUgYXQgbGVhc3QgMiBzZXBhcmF0b3Ig
Y2hhcmFjdGVycy4gU29tZSBob3N0bmFtZXMgb24gaW50cmFuZXRzIGhhdmUKICAgICAvLyB1bmRl
cnNjb3JlcyBpbiB0aGVtLCBzbyB3ZSdsbCBhc3N1bWUgdGhhdCBhbnkgYWRkaXRpb25hbCB1bmRl
cnNjb3JlcyBhcmUgcGFydCBvZiB0aGUgaG9zdC4KICAgICBpZiAoc2VwYXJhdG9yMSA9PSBzZXBh
cmF0b3IyKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlv
biBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRP
a2F5OwogICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRl
bnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwogICAg
IGJvb2wgcG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5n
dGgoKSAtIDEpOwogICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAg
IAogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJl
dHVybiBjcmVhdGUoS1VSTCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAg
ICAgIAogICAgIC8vIFNwbGl0IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCiAgICAgU3RyaW5n
IHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsK
ICAgICBTdHJpbmcgaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9y
MSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwoS1VS
TCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQp
ICsgIi8iKSk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIg
KyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KQpAQCAtNTQxLDcgKzU0MSw3
IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QKICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1h
eEFsbG93ZWRQb3J0KQogICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlKCk7CiAgICAgU3RyaW5n
IGRlY29kZWRIb3N0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwotICAgIHJldHVy
biBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3Ry
aW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwg
cHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIv
IikpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNv
bnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDg1NzJmNGMuLmQxMTg2
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9y
aWdpbj4gewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJsb2Nr
QWxsU3RvcmFnZQogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gY3JlYXRlKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBjcmVhdGVVbmlxdWUoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAt
NjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gR2VuZXJhbGx5LCB3ZSBhZGQgVVJMIHNjaGVt
ZXMgdG8gdGhpcyBsaXN0IHdoZW4gV2ViS2l0IHN1cHBvcnQgdGhlbS4gRm9yCiAgICAgLy8gZXhh
bXBsZSwgd2UgZG9uJ3QgaW5jbHVkZSB0aGUgImphciIgc2NoZW1lLCBldmVuIHRob3VnaCBGaXJl
Zm94CiAgICAgLy8gdW5kZXJzdGFuZHMgdGhhdCAiamFyIiB1c2VzIGFuIGlubmVyIFVSTCBmb3Ig
aXQncyBzZWN1cml0eSBvcmlnaW4uCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwo
Y29uc3QgS1VSTCYpOwotICAgIHN0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJM
Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJik7CisgICAg
c3RhdGljIFVSTCBleHRyYWN0SW5uZXJVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBDcmVhdGUg
YSBkZWVwIGNvcHkgb2YgdGhpcyBTZWN1cml0eU9yaWdpbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVs
CiAgICAgLy8gd2hlbiBtYXJzaGFsbGluZyBhIFNlY3VyaXR5T3JpZ2luIHRvIGFub3RoZXIgdGhy
ZWFkLgpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEg
Z2l2ZW4gVVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8v
IG93biBwcm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMg
ImlubmVyIFVSTCIKICAgICAvLyBQcm90b2NvbHMgbGlrZSBibG9iOiBhbmQgZmlsZXN5c3RlbTog
ZmFsbCBpbnRvIHRoaXMgbGF0dGVyIGNhdGVnb3J5LgotICAgIHN0YXRpYyBib29sIGlzU2VjdXJl
KGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1NlY3VyZShjb25zdCBVUkwmKTsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBzY3JpcHQgb2Jq
ZWN0cyBpbiB0aGUgZ2l2ZW4KICAgICAvLyBTZWN1cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNh
bGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxsb3dpbmcKQEAgLTk5LDEyICs5OSwxMiBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHJlYWQg
Y29udGVudCByZXRyaWV2ZWQgZnJvbQogICAgIC8vIHRoZSBnaXZlbiBVUkwuIEZvciBleGFtcGxl
LCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGlzc3VpbmcKICAgICAvLyBYTUxIdHRwUmVxdWVz
dHMuCi0gICAgYm9vbCBjYW5SZXF1ZXN0KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNh
blJlcXVlc3QoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgZHJh
d2luZyBhbiBpbWFnZSBmcm9tIHRoaXMgVVJMIHRhaW50cyBhIGNhbnZhcyBmcm9tCiAgICAgLy8g
dGhpcyBzZWN1cml0eSBvcmlnaW4uIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlCiAgICAgLy8gZHJhd2luZyBhbiBpbWFnZSBvbnRvIGFuIEhUTUwgY2FudmFzIGVsZW1lbnQg
d2l0aCB0aGUgZHJhd0ltYWdlIEFQSS4KLSAgICBib29sIHRhaW50c0NhbnZhcyhjb25zdCBLVVJM
JikgY29uc3Q7CisgICAgYm9vbCB0YWludHNDYW52YXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFn
IGNvbnRlbnQgZnJvbSB0aGUKICAgICAvLyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRo
aXMgZnVuY3Rpb24gYmVmb3JlIGFsbG93aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3Bs
YXkgY29udGVudCBmcm9tIHRoZSBnaXZlbiBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1l
IG9yIGFzIGFuIGltYWdlKS4gRm9yIGV4YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90
CiAgICAgLy8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0g
ICAgYm9vbCBjYW5EaXNwbGF5KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhbkRpc3Bs
YXkoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1
cml0eU9yaWdpbiBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMsIHN1Y2gKICAgICAvLyBhcyBpbWFn
ZXMsIGlmcmFtZXMsIGFuZCBzdHlsZSBzaGVldHMsIGFuZCBjYW4gbGluayB0byBsb2NhbCBVUkxz
LgpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTZWN1cml0eU9y
aWdpbigpOwotICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBl
eHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmKTsKICAgICBleHBsaWNpdCBTZWN1cml0
eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0
aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggNDU0Y2Y4My4uOTZiODc1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZu
ZGVmIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eVBvbGljeS5jcHAKaW5kZXggNWIzNmY0Zi4uYjI0Y2E5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSAiT3Jp
Z2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogICAgIHJl
dHVybiBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhp
ZGVSZWZlcnJlcihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitib29s
IFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJv
dG9jb2xJcyhyZWZlcnJlciwgImh0dHBzIik7CiAgICAgYm9vbCByZWZlcnJlcklzV2ViVVJMID0g
cmVmZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cCIpOwpAQCAt
NjYsNyArNjYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNT
ZWN1cmVVUkw7CiB9CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVy
cmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBTZWN1cml0
eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZl
T3JpZ2luLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6
OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3Jp
Z2luLCBjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJM
V2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQo
YWN0aXZlT3JpZ2luLCB0YXJnZXRPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCmluZGV4IDMzN2VlYzIuLmIyNjljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFNl
Y3VyaXR5UG9saWN5IHsKQEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVHJ1ZSBp
ZiB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIHRoZQogICAgIC8v
IFJlZmVycmVyUG9saWN5RGVmYXVsdC4gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVmZXJyZXIg
aGVhZGVyLCB5b3UKICAgICAvLyBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIgaW5z
dGVhZC4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJl
cihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIC8vIFJldHVybnMg
dGhlIHJlZmVycmVyIG1vZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcmVmZXJyZXIgcG9saWN5IGZv
ciBhCiAgICAgLy8gbmF2aWdhdGlvbiB0byBhIGdpdmVuIFVSTC4gSWYgdGhlIHJlZmVycmVyIHJl
dHVybmVkIGlzIGVtcHR5LCB0aGUKICAgICAvLyByZWZlcnJlciBoZWFkZXIgc2hvdWxkIGJlIG9t
aXR0ZWQuCi0gICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVy
UG9saWN5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVudW0gTG9jYWxMb2FkUG9saWN5IHsK
ICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlvbiBvbiBsb2Nh
bCBsb2Fkcy4KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0
ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hp
dGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzA0MzJkMC4uMDRmYmIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFNldHRp
bmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKICAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lk
IFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IEtVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pCit2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
KGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKIHsKICAgICBpZiAobV91c2VyU3R5
bGVTaGVldExvY2F0aW9uID09IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkOGI3Y2E2Li5lZGY2OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9y
VHlwZXMuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5nc01hY3Jvcy5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCkBAIC0xNTAsOCArMTUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCBkbnNQcmVm
ZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsg
fQogCi0gICAgICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJik7
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KKyAgICAgICAgdm9pZCBzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOworICAgICAgICBjb25zdCBVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247
IH0KIAogICAgICAgICB2b2lkIHNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wp
OwogICAgICAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrOyB9CkBAIC0yNzMsNyArMjcz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICAg
ICAgU3RyaW5nIG1fbWVkaWFUeXBlT3ZlcnJpZGU7Ci0gICAgICAgIEtVUkwgbV91c2VyU3R5bGVT
aGVldExvY2F0aW9uOworICAgICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogICAg
ICAgICBSZWZQdHI8Rm9udEdlbmVyaWNGYW1pbGllcz4gbV9mb250R2VuZXJpY0ZhbWlsaWVzOwog
ICAgICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYzdkODE5Yi4uZmRhZWQx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApA
QCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxhY2tsaXN0KQorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJu
cyhjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCkKIHsKICAgICAvLyBJbiBvcmRlciBmb3IgYSBVUkwg
dG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8gYmUgcHJlc2VudCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBu
b3QgcHJlc2VudCBpbiB0aGUgYmxhY2tsaXN0LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHdoaXRl
bGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIHdoaXRl
bGlzdC4KQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFy
c2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVz
ZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9v
bCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXMoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAog
ewogICAgIGlmIChtX2ludmFsaWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0
ZXN0KSBjb25zdAogICAgIHJldHVybiBtYXRjaGVzUGF0aCh0ZXN0KTsKIH0KIAotYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0KGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citi
b29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBj
b25zdAogewogICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9IHRlc3QuaG9zdCgpOwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShob3N0LCBtX2hvc3QpKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0cnVj
dCBNYXRjaFRlc3RlcgogICAgIH0KIH07CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0aChjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVudFVSTFBh
dHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKIHsKICAgICBNYXRjaFRl
c3RlciBtYXRjaChtX3BhdGgsIHRlc3QucGF0aCgpKTsKICAgICByZXR1cm4gbWF0Y2gudGVzdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKaW5kZXggMGRl
MDU1ZS4uYTg2ODkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsKIHB1Ymxp
YzoKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gIW1faW52YWxpZDsgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKSBj
b25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBjb25zdCBT
dHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CkBAIC01MywxMyArNTMsMTMgQEAg
cHVibGljOgogCiAgICAgYm9vbCBtYXRjaFN1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX21h
dGNoU3ViZG9tYWluczsgfQogICAgIAotICAgIHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsYWNrbGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibGFja2xpc3QpOwogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2UoY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKTsKIAotICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29uc3QgS1VSTCYpIGNvbnN0
OwotICAgIGJvb2wgbWF0Y2hlc1BhdGgoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgbWF0
Y2hlc0hvc3QoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUGF0aChjb25zdCBV
UkwmKSBjb25zdDsKIAogICAgIGJvb2wgbV9pbnZhbGlkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlw
dC5oCmluZGV4IDhiYmZhNDkuLjhhMmI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlclNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCkBA
IC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFVzZXJTY3JpcHRfaAogI2RlZmluZSBVc2VyU2NyaXB0
X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2Vy
Q29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNr
bGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAgICBVc2VyU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlz
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cykKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAg
ICAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlzdCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2U7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFj
a2xpc3Q7IH0KICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9pbmplY3Rpb25UaW1lOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCmluZGV4IGZjNjdkN2EuLjcy
MzQ0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNpZm5kZWYgVXNlclN0eWxlU2hlZXRfaAogI2RlZmluZSBVc2VyU3R5bGVTaGVldF9oCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
YWNrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0
eWxlTGV2ZWwgbGV2ZWwpCisgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCkKICAgICAgICAgOiBtX3NvdXJjZShzb3Vy
Y2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlz
dCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYg
c291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29u
c3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZy
YW1lczsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fc291cmNlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFZlY3RvcjxT
dHJpbmc+IG1fd2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0OwogICAg
IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAyNzUwZTJlLi5hN2Ez
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3Rl
bURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoQ2xpcGJvYXJkKiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQor
dm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCos
IEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRkZTI3ZS4uMTcw
ZTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cApAQCAtNjksNyArNjksNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0
ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIGNsaXBib2FyZC0+
cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDY5ZWJkNmIuLmU3
YjhiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1t
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3Rl
bURyYWcoKQogICAgICAgICBkcmFnRW5kZWQoKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdD
b250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQs
IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewogICAgIG1fY2xpZW50LmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjbGlwYm9hcmQtPnBhc3Rl
Ym9hcmQoKS5uYW1lKCksIGtpdChlbGVtZW50KSwgdXJsLCBsYWJlbCwgZWxlbWVudC0+ZG9jdW1l
bnQoKS5mcmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJh
Z0NvbnRyb2xsZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVy
UXQuY3BwCmluZGV4IGNkOTYzMTAuLjUxMGQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9x
dC9EcmFnQ29udHJvbGxlclF0LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERy
YWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVs
KQogewogICAgIGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJs
LCBsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldp
bi5jcHAKaW5kZXggYjdiZmVhMS4uZGYyZjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0RyYWdDb250cm9sbGVyV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIERyYWdDb250
cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lk
IERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxh
YmVsKQogewogICAgIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQgPSBjbGlwYm9hcmQtPnBhc3RlYm9h
cmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lz
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBh
ZjVjNTEyLi4zYjE2ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3lu
Y0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDU4ICs3Miw1OCBAQCBwdWJsaWM6CiAg
ICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGgu
CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0g
ICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVz
dFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBDb3Bp
ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGguCiAgICAgLy8g
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhl
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVzdFBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBEZWxldGVzIGEgZmls
ZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRv
IHRyeSB0byByZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWN1
cnNpdmVseSBkZWxldGVzIGEgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KSA9IDA7CiAKICAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRo
ZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0
aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAg
IC8vIENyZWF0ZXMgYSBmaWxlIGF0IGEgZ2l2ZW4gcGF0aC4gIElmIGV4Y2x1c2l2ZSBmbGFnIGlz
IHRydWUsIGl0IGZhaWxzIGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLgogICAgIC8vIEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQg
YSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhl
IHBhdGggYWxyZWFkeSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlz
IGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25z
dCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGEgZ2l2ZW4g
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBj
YWxsZWQgaWYgdGhlIGZpbGUgZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVF
eGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNr
cyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5
IGV4aXN0cy4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBj
YWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gUmVhZHMgZGlyZWN0
b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgcGF0aC4KICAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyeSgpIGlzIGNhbGxlZCB3aGVu
IGVhY2ggZGlyZWN0b3J5IGVudHJ5IGlzIGNhbGxlZC4gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcygpIGlzIGNhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRp
cmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCi0gICAgdmlydHVh
bCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rvcnko
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0g
MDsKIAogICAgIC8vIENyZWF0ZXMgYW4gQXN5bmNGaWxlV3JpdGVyIGZvciBhIGdpdmVuIGZpbGUg
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0
ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0ZXIgaXMgY3JlYXRlZCBzdWNjZXNz
ZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2Fs
bGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxlIGFuZCBy
ZWFkIGl0cyBtZXRhZGF0YSBmb3IgYSBuZXcgRmlsZSBvYmplY3QuCiAgICAgLy8gSW4gbG9jYWwg
ZmlsZXN5c3RlbSBjYXNlcyB0aGUgYmFja2VuZCBtYXkgc2ltcGx5IHJldHVybiB0aGUgbWV0YWRh
dGEgb2YgdGhlIGZpbGUgaXRzZWxmIChhcyB3ZWxsIGFzIHJlYWRNZXRhZGF0YSBkb2VzKSwKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICAvLwogICAgIC8vIE5vdGU6IHRo
ZSByZXR1cm5lZCBtZXRhZGF0YSBpbmZvIGlzIGNhY2hlZCBpbiB0aGUgRmlsZSBvYmplY3QgZm9y
IG5vbi1yZWd1bGFyIGZpbGVzeXN0ZW0gdHlwZXMgKG5laXRoZXIgVGVtcG9yYXJ5IG5vciBQZXJz
aXN0ZW50KS4gVGhlIHBvcnQgY291bGQgcmV0dXJuIHZhbGlkIG1ldGFkYXRhIGlmIGl0IHdhbnRz
IEZpbGUgb2JqZWN0IHRvIGNhY2hlIG1ldGFkYXRhIChlLmcuIGlmIHRoZSBmaWxlIGJvZHkgaXMg
b24gYSByZW1vdGUgc2VydmVyKSwgYnV0IG90aGVyd2lzZSBzaG91bGQgTk9UIHJldHVybiB2YWxp
ZCBtZXRhZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRl
eCAwMWJlZTg5Li41MTk0ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICAvLyBDYWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBmaWxlIHN5c3RlbSBpcyBvcGVuZWQuCi0gICAg
dmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywg
Y29uc3QgS1VSTCYgLyogcm9vdFVSTCAqLywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywgY29uc3QgVVJMJiAvKiByb290VVJMICovLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIC8vIENhbGxlZCB3aGVuIGEgZmlsZSBtZXRhZGF0YSBpcyByZWFkIHN1Y2Nlc3NmdWxseS4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0
cmF0ZWd5LmgKaW5kZXggYzBlNmVmMi4uNjU0MDU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDE4ICszMywxOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNl
c3Npb247CiBzdHJ1Y3QgQ29va2llOwogCiBjbGFzcyBDb29raWVzU3RyYXRlZ3kgewogcHVibGlj
OgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwg
VmVjdG9yPENvb2tpZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYs
IFZlY3RvcjxDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Db29raWVzU3RyYXRlZ3ko
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApp
bmRleCBjMmRiNjNjLi4yZTg2MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDcm9zc1Ro
cmVhZENvcGllci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46
OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46OmNvcHkoY29u
c3QgS1VSTCYgdXJsKQorQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVVJMPjo6
VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+Ojpjb3B5KGNvbnN0
IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYjFjMTRlYi4uYWUyZWYyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xh
c3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwpAQCAtMTIwLDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBLVVJMPiB7Ci0gICAgICAgIHR5cGVkZWYgS1VSTCBUeXBlOwot
ICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IEtVUkwmKTsKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+IHsKKyAgICAgICAg
dHlwZWRlZiBVUkwgVHlwZTsKKyAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBVUkwmKTsK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZh
bHNlLCBmYWxzZSwgU3RyaW5nPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAy
N2RkZDZlLi41ZTcxMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTY5LDcg
KzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmFuZ2U7CiAKIGVu
dW0gRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKaW5kZXggMWNhNTEyZC4uYjgxYWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNp
emUoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiB9CiAKICNp
ZiAhUExBVEZPUk0oTUFDKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZvbnRS
ZW5kZXJpbmdNb2RlKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwg
Y29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IDdjMjI4NWUuLmZhYjk3NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgc3Ry
dWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFn
ZVJlZjsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9y
Q2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRl
cmluZ01vZGUpOworICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKICAgICB2b2lkIGRlbGV0
ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uY3BwCmluZGV4IDVjODE3ZWQuLmFkMTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgaW50IEZpbGVTdHJlYW06OnJlYWQo
Y2hhciogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKICAgICByZXR1cm4gYnl0ZXNSZWFkOwogfQog
Ci1pbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYsIGxvbmcgbG9uZywgaW50KQoraW50
IEZpbGVTdHJlYW06OndyaXRlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZywgaW50KQogewogICAgIC8v
IEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggYmFhMzk0OC4uZWVlYWEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIEFsbCBtZXRob2RzIGFyZSBzeW5j
aHJvbm91cy4KIGNsYXNzIEZpbGVTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3RyZWFt
PiB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdyaXRlcyBhIGJsb2IgdG8g
dGhlIGZpbGUuCiAgICAgLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYmVpbmcgd3JpdHRlbiBv
biBzdWNjZXNzLiAtMSBvdGhlcndpc2UuCi0gICAgaW50IHdyaXRlKGNvbnN0IEtVUkwmIGJsb2JV
UkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgaW50IHdyaXRlKGNvbnN0
IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8v
IFRydW5jYXRlcyB0aGUgZmlsZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAgIC8vIFJl
dHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTAwYWMzLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTkzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVkZSAiRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgotCi0jaWYgVVNFKElDVV9VTklDT0RFKQotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNl
bmRpZgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBv
cGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9w
ZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3Ig
Y2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10
eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hh
ciwgNTEyPiBVQ2hhckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxp
ZFBvcnROdW1iZXIgPSAweEZGRkU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnRO
dW1iZXIgPSAweEZGRkY7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKFVDaGFyIGNoYXJhY3RlciwgY2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17Ci0gICAgQVNT
RVJUKGlzQVNDSUlMb3dlcihsb3dlcmNhc2VMZXR0ZXIpKTsKLSAgICByZXR1cm4gKGNoYXJhY3Rl
ciB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgd3NT
Y2hlbWVbXSA9IHsndycsICdzJ307Ci1zdGF0aWMgY29uc3QgY2hhciBmdHBTY2hlbWVbXSA9IHsn
ZicsICd0JywgJ3AnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGZ0cFBvcnRbXSA9IHsnMicsICcxJ307
Ci1zdGF0aWMgY29uc3QgY2hhciB3c3NTY2hlbWVbXSA9IHsndycsICdzJywgJ3MnfTsKLXN0YXRp
YyBjb25zdCBjaGFyIGZpbGVTY2hlbWVbXSA9IHsnZicsICdpJywgJ2wnLCAnZSd9Owotc3RhdGlj
IGNvbnN0IGNoYXIgaHR0cFNjaGVtZVtdID0geydoJywgJ3QnLCAndCcsICdwJ307Ci1zdGF0aWMg
Y29uc3QgY2hhciBodHRwUG9ydFtdID0geyc4JywgJzAnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0
dHBzU2NoZW1lW10gPSB7J2gnLCAndCcsICd0JywgJ3AnLCAncyd9Owotc3RhdGljIGNvbnN0IGNo
YXIgaHR0cHNQb3J0W10gPSB7JzQnLCAnNCcsICczJ307Ci1zdGF0aWMgY29uc3QgY2hhciBnb3Bo
ZXJTY2hlbWVbXSA9IHsnZycsICdvJywgJ3AnLCAnaCcsICdlJywgJ3InfTsKLXN0YXRpYyBjb25z
dCBjaGFyIGdvcGhlclBvcnRbXSA9IHsnNycsICcwJ307Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c0xldHRlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxl
dHRlcikKLXsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOwotICAg
IHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCi1lbnVt
IFVSTENoYXJhY3RlckNsYXNzZXMgewotICAgIC8vIGFscGhhIAotICAgIFNjaGVtZUZpcnN0Q2hh
ciA9IDEgPDwgMCwKLQotICAgIC8vICggYWxwaGEgfCBkaWdpdCB8ICIrIiB8ICItIiB8ICIuIiAp
Ci0gICAgU2NoZW1lQ2hhciA9IDEgPDwgMSwKLQotICAgIC8vIG1hcmsgICAgICAgID0gIi0iIHwg
Il8iIHwgIi4iIHwgIiEiIHwgIn4iIHwgIioiIHwgIiciIHwgIigiIHwgIikiCi0gICAgLy8gdW5y
ZXNlcnZlZCAgPSBhbHBoYW51bSB8IG1hcmsKLSAgICAvLyAoIHVucmVzZXJ2ZWQgfCBlc2NhcGVk
IHwgIjsiIHwgIjoiIHwgIiYiIHwgIj0iIHwgIisiIHwgIiQiIHwgIiwiICkKLSAgICBVc2VySW5m
b0NoYXIgPSAxIDw8IDIsCi0KLSAgICAvLyBhbG51bSB8ICIuIiB8ICItIiB8ICIlIgotICAgIC8v
IFRoZSBhYm92ZSBpcyB3aGF0IHRoZSBzcGVjaWZpY2F0aW9uIHNheXMsIGJ1dCB3ZSBhcmUgbGVu
aWVudCB0bwotICAgIC8vIG1hdGNoIGV4aXN0aW5nIHByYWN0aWNlIGFuZCBhbHNvIGFsbG93Ogot
ICAgIC8vICJfIgotICAgIEhvc3RuYW1lQ2hhciA9IDEgPDwgMywKLQotICAgIC8vIGhleGRpZ2l0
IHwgIjoiIHwgIiUiCi0gICAgSVB2NkNoYXIgPSAxIDw8IDQsCi0KLSAgICAvLyAiIyIgfCAiPyIg
fCAiLyIgfCBudWwKLSAgICBQYXRoU2VnbWVudEVuZENoYXIgPSAxIDw8IDUsCi0KLSAgICAvLyBu
b3QgYWxsb3dlZCBpbiBwYXRoCi0gICAgQmFkQ2hhciA9IDEgPDwgNgotfTsKLQotc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewotICAgIC8qIDAg
bnVsICovIFBhdGhTZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKLSAgICAv
KiAyIHN0eCAqLyBCYWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLAotICAgIC8qIDQgZW90
ICovIEJhZENoYXIsICAgIC8qIDUgZW5xICovIEJhZENoYXIsICAgIC8qIDYgYWNrICovIEJhZENo
YXIsICAgIC8qIDcgYmVsICovIEJhZENoYXIsCi0gICAgLyogOCBicyAqLyBCYWRDaGFyLCAgICAg
LyogOSBodCAqLyBCYWRDaGFyLCAgICAgLyogMTAgbmwgKi8gQmFkQ2hhciwgICAgLyogMTEgdnQg
Ki8gQmFkQ2hhciwKLSAgICAvKiAxMiBucCAqLyBCYWRDaGFyLCAgICAvKiAxMyBjciAqLyBCYWRD
aGFyLCAgICAvKiAxNCBzbyAqLyBCYWRDaGFyLCAgICAvKiAxNSBzaSAqLyBCYWRDaGFyLAotICAg
IC8qIDE2IGRsZSAqLyBCYWRDaGFyLCAgIC8qIDE3IGRjMSAqLyBCYWRDaGFyLCAgIC8qIDE4IGRj
MiAqLyBCYWRDaGFyLCAgIC8qIDE5IGRjMyAqLyBCYWRDaGFyLAotICAgIC8qIDIwIGRjNCAqLyBC
YWRDaGFyLCAgIC8qIDIxIG5hayAqLyBCYWRDaGFyLCAgIC8qIDIyIHN5biAqLyBCYWRDaGFyLCAg
IC8qIDIzIGV0YiAqLyBCYWRDaGFyLAotICAgIC8qIDI0IGNhbiAqLyBCYWRDaGFyLCAgIC8qIDI1
IGVtICovIEJhZENoYXIsICAgIC8qIDI2IHN1YiAqLyBCYWRDaGFyLCAgIC8qIDI3IGVzYyAqLyBC
YWRDaGFyLAotICAgIC8qIDI4IGZzICovIEJhZENoYXIsICAgIC8qIDI5IGdzICovIEJhZENoYXIs
ICAgIC8qIDMwIHJzICovIEJhZENoYXIsICAgIC8qIDMxIHVzICovIEJhZENoYXIsCi0gICAgLyog
MzIgc3AgKi8gQmFkQ2hhciwgICAgLyogMzMgICEgKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDM0
ICAiICovIEJhZENoYXIsICAgIC8qIDM1ICAjICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENo
YXIsCi0gICAgLyogMzYgICQgKi8gVXNlckluZm9DaGFyLCAgICAvKiAzNyAgJSAqLyBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciB8IEJhZENoYXIsCi0gICAgLyogMzggICYg
Ki8gVXNlckluZm9DaGFyLCAgICAvKiAzOSAgJyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDAg
ICggKi8gVXNlckluZm9DaGFyLCAgICAvKiA0MSAgKSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyog
NDIgICogKi8gVXNlckluZm9DaGFyLCAgICAvKiA0MyAgKyAqLyBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyLAotICAgIC8qIDQ0ICAsICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0NSAgLSAqLyBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDQ2ICAuICov
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAg
ICAvKiA0NyAgLyAqLyBQYXRoU2VnbWVudEVuZENoYXIsCi0gICAgLyogNDggIDAgKi8gU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA0
OSAgMSAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNo
YXIsICAgIAotICAgIC8qIDUwICAyICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTEgIDMgKi8gU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDUyICA0ICovIFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyog
NTMgIDUgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDU0ICA2ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTUgIDcgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU2ICA4ICovIFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTcg
IDkgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFy
LAotICAgIC8qIDU4ICA6ICovIFVzZXJJbmZvQ2hhciB8IElQdjZDaGFyLCAgICAvKiA1OSAgOyAq
LyBVc2VySW5mb0NoYXIsCi0gICAgLyogNjAgIDwgKi8gQmFkQ2hhciwgICAgLyogNjEgID0gKi8g
VXNlckluZm9DaGFyLAotICAgIC8qIDYyICA+ICovIEJhZENoYXIsICAgIC8qIDYzICA/ICovIFBh
dGhTZWdtZW50RW5kQ2hhciB8IEJhZENoYXIsCi0gICAgLyogNjQgIEAgKi8gMCwKLSAgICAvKiA2
NSAgQSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsICAgIAotICAgIC8qIDY2ICBCICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
LSAgICAvKiA2NyAgQyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjggIEQgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDY5ICBFICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA3MCAgRiAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsCi0gICAgLyogNzEgIEcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3MiAgSCAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8q
IDczICBJICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIsCi0gICAgLyogNzQgIEogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NSAgSyAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAg
IC8qIDc2ICBMICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzcgIE0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3OCAgTiAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAot
ICAgIC8qIDc5ICBPICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODAgIFAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4MSAgUSAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LAotICAgIC8qIDgyICBSICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODMgIFMgKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NCAgVCAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyLAotICAgIC8qIDg1ICBVICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODYgIFYgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NyAg
VyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAotICAgIC8qIDg4ICBYICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDg5ICBZICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyog
OTAgIFogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwKLSAgICAvKiA5MSAgWyAqLyAwLAotICAgIC8qIDkyICBcICovIDAsICAgIC8q
IDkzICBdICovIDAsCi0gICAgLyogOTQgIF4gKi8gMCwKLSAgICAvKiA5NSAgXyAqLyBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogOTYgIGAgKi8gMCwKLSAgICAvKiA5NyAgYSAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyIHwgSVB2NkNoYXIsCi0gICAgLyogOTggIGIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA5
OSAgYyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogMTAwICBkICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0g
ICAgLyogMTAxICBlICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiAxMDIgIGYgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLCAKLSAgICAvKiAxMDMgIGcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDQgIGggKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyog
MTA1ICBpICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIsCi0gICAgLyogMTA2ICBqICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDEwNyAgayAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAot
ICAgIC8qIDEwOCAgbCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMDkgIG0gKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTAgIG4g
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciwgCi0gICAgLyogMTExICBvICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTEyICBwICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8q
IDExMyAgcSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAotICAgIC8qIDExNCAgciAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMTUgIHMgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiAxMTYgIHQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTE3ICB1ICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE4ICB2
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsIAotICAgIC8qIDExOSAgdyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEyMCAgeCAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAv
KiAxMjEgIHkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMjIgIHogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTIzICB7ICovIDAs
Ci0gICAgLyogMTI0ICB8ICovIDAsICAgLyogMTI1ICB9ICovIDAsICAgLyogMTI2ICB+ICovIFVz
ZXJJbmZvQ2hhciwgICAvKiAxMjcgZGVsICovIEJhZENoYXIsCi0gICAgLyogMTI4ICovIEJhZENo
YXIsIC8qIDEyOSAqLyBCYWRDaGFyLCAvKiAxMzAgKi8gQmFkQ2hhciwgLyogMTMxICovIEJhZENo
YXIsCi0gICAgLyogMTMyICovIEJhZENoYXIsIC8qIDEzMyAqLyBCYWRDaGFyLCAvKiAxMzQgKi8g
QmFkQ2hhciwgLyogMTM1ICovIEJhZENoYXIsCi0gICAgLyogMTM2ICovIEJhZENoYXIsIC8qIDEz
NyAqLyBCYWRDaGFyLCAvKiAxMzggKi8gQmFkQ2hhciwgLyogMTM5ICovIEJhZENoYXIsCi0gICAg
LyogMTQwICovIEJhZENoYXIsIC8qIDE0MSAqLyBCYWRDaGFyLCAvKiAxNDIgKi8gQmFkQ2hhciwg
LyogMTQzICovIEJhZENoYXIsCi0gICAgLyogMTQ0ICovIEJhZENoYXIsIC8qIDE0NSAqLyBCYWRD
aGFyLCAvKiAxNDYgKi8gQmFkQ2hhciwgLyogMTQ3ICovIEJhZENoYXIsCi0gICAgLyogMTQ4ICov
IEJhZENoYXIsIC8qIDE0OSAqLyBCYWRDaGFyLCAvKiAxNTAgKi8gQmFkQ2hhciwgLyogMTUxICov
IEJhZENoYXIsCi0gICAgLyogMTUyICovIEJhZENoYXIsIC8qIDE1MyAqLyBCYWRDaGFyLCAvKiAx
NTQgKi8gQmFkQ2hhciwgLyogMTU1ICovIEJhZENoYXIsCi0gICAgLyogMTU2ICovIEJhZENoYXIs
IC8qIDE1NyAqLyBCYWRDaGFyLCAvKiAxNTggKi8gQmFkQ2hhciwgLyogMTU5ICovIEJhZENoYXIs
Ci0gICAgLyogMTYwICovIEJhZENoYXIsIC8qIDE2MSAqLyBCYWRDaGFyLCAvKiAxNjIgKi8gQmFk
Q2hhciwgLyogMTYzICovIEJhZENoYXIsCi0gICAgLyogMTY0ICovIEJhZENoYXIsIC8qIDE2NSAq
LyBCYWRDaGFyLCAvKiAxNjYgKi8gQmFkQ2hhciwgLyogMTY3ICovIEJhZENoYXIsCi0gICAgLyog
MTY4ICovIEJhZENoYXIsIC8qIDE2OSAqLyBCYWRDaGFyLCAvKiAxNzAgKi8gQmFkQ2hhciwgLyog
MTcxICovIEJhZENoYXIsCi0gICAgLyogMTcyICovIEJhZENoYXIsIC8qIDE3MyAqLyBCYWRDaGFy
LCAvKiAxNzQgKi8gQmFkQ2hhciwgLyogMTc1ICovIEJhZENoYXIsCi0gICAgLyogMTc2ICovIEJh
ZENoYXIsIC8qIDE3NyAqLyBCYWRDaGFyLCAvKiAxNzggKi8gQmFkQ2hhciwgLyogMTc5ICovIEJh
ZENoYXIsCi0gICAgLyogMTgwICovIEJhZENoYXIsIC8qIDE4MSAqLyBCYWRDaGFyLCAvKiAxODIg
Ki8gQmFkQ2hhciwgLyogMTgzICovIEJhZENoYXIsCi0gICAgLyogMTg0ICovIEJhZENoYXIsIC8q
IDE4NSAqLyBCYWRDaGFyLCAvKiAxODYgKi8gQmFkQ2hhciwgLyogMTg3ICovIEJhZENoYXIsCi0g
ICAgLyogMTg4ICovIEJhZENoYXIsIC8qIDE4OSAqLyBCYWRDaGFyLCAvKiAxOTAgKi8gQmFkQ2hh
ciwgLyogMTkxICovIEJhZENoYXIsCi0gICAgLyogMTkyICovIEJhZENoYXIsIC8qIDE5MyAqLyBC
YWRDaGFyLCAvKiAxOTQgKi8gQmFkQ2hhciwgLyogMTk1ICovIEJhZENoYXIsCi0gICAgLyogMTk2
ICovIEJhZENoYXIsIC8qIDE5NyAqLyBCYWRDaGFyLCAvKiAxOTggKi8gQmFkQ2hhciwgLyogMTk5
ICovIEJhZENoYXIsCi0gICAgLyogMjAwICovIEJhZENoYXIsIC8qIDIwMSAqLyBCYWRDaGFyLCAv
KiAyMDIgKi8gQmFkQ2hhciwgLyogMjAzICovIEJhZENoYXIsCi0gICAgLyogMjA0ICovIEJhZENo
YXIsIC8qIDIwNSAqLyBCYWRDaGFyLCAvKiAyMDYgKi8gQmFkQ2hhciwgLyogMjA3ICovIEJhZENo
YXIsCi0gICAgLyogMjA4ICovIEJhZENoYXIsIC8qIDIwOSAqLyBCYWRDaGFyLCAvKiAyMTAgKi8g
QmFkQ2hhciwgLyogMjExICovIEJhZENoYXIsCi0gICAgLyogMjEyICovIEJhZENoYXIsIC8qIDIx
MyAqLyBCYWRDaGFyLCAvKiAyMTQgKi8gQmFkQ2hhciwgLyogMjE1ICovIEJhZENoYXIsCi0gICAg
LyogMjE2ICovIEJhZENoYXIsIC8qIDIxNyAqLyBCYWRDaGFyLCAvKiAyMTggKi8gQmFkQ2hhciwg
LyogMjE5ICovIEJhZENoYXIsCi0gICAgLyogMjIwICovIEJhZENoYXIsIC8qIDIyMSAqLyBCYWRD
aGFyLCAvKiAyMjIgKi8gQmFkQ2hhciwgLyogMjIzICovIEJhZENoYXIsCi0gICAgLyogMjI0ICov
IEJhZENoYXIsIC8qIDIyNSAqLyBCYWRDaGFyLCAvKiAyMjYgKi8gQmFkQ2hhciwgLyogMjI3ICov
IEJhZENoYXIsCi0gICAgLyogMjI4ICovIEJhZENoYXIsIC8qIDIyOSAqLyBCYWRDaGFyLCAvKiAy
MzAgKi8gQmFkQ2hhciwgLyogMjMxICovIEJhZENoYXIsCi0gICAgLyogMjMyICovIEJhZENoYXIs
IC8qIDIzMyAqLyBCYWRDaGFyLCAvKiAyMzQgKi8gQmFkQ2hhciwgLyogMjM1ICovIEJhZENoYXIs
Ci0gICAgLyogMjM2ICovIEJhZENoYXIsIC8qIDIzNyAqLyBCYWRDaGFyLCAvKiAyMzggKi8gQmFk
Q2hhciwgLyogMjM5ICovIEJhZENoYXIsCi0gICAgLyogMjQwICovIEJhZENoYXIsIC8qIDI0MSAq
LyBCYWRDaGFyLCAvKiAyNDIgKi8gQmFkQ2hhciwgLyogMjQzICovIEJhZENoYXIsCi0gICAgLyog
MjQ0ICovIEJhZENoYXIsIC8qIDI0NSAqLyBCYWRDaGFyLCAvKiAyNDYgKi8gQmFkQ2hhciwgLyog
MjQ3ICovIEJhZENoYXIsCi0gICAgLyogMjQ4ICovIEJhZENoYXIsIC8qIDI0OSAqLyBCYWRDaGFy
LCAvKiAyNTAgKi8gQmFkQ2hhciwgLyogMjUxICovIEJhZENoYXIsCi0gICAgLyogMjUyICovIEJh
ZENoYXIsIC8qIDI1MyAqLyBCYWRDaGFyLCAvKiAyNTQgKi8gQmFkQ2hhciwgLyogMjU1ICovIEJh
ZENoYXIKLX07Ci0KLXN0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBj
b25zdCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCk7Ci1zdGF0aWMgdm9pZCBl
bmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5n
JiwgQ2hhckJ1ZmZlciYgb3VwdXQpOwotc3RhdGljIFN0cmluZyBzdWJzdGl0dXRlQmFja3NsYXNo
ZXMoY29uc3QgU3RyaW5nJik7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hh
cihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oYyldICYgU2NoZW1lRmlyc3RDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNT
Y2hlbWVGaXJzdENoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJD
bGFzc1RhYmxlW2NdICYgU2NoZW1lRmlyc3RDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlz
U2NoZW1lQ2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oYyldICYgU2NoZW1lQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29s
IGlzU2NoZW1lQ2hhcihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNs
YXNzVGFibGVbY10gJiBTY2hlbWVDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzVXNlcklu
Zm9DaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAm
IFVzZXJJbmZvQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzSG9zdG5hbWVDaGFyKHVuc2ln
bmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIEhvc3RuYW1lQ2hh
cjsgfQotc3RhdGljIGlubGluZSBib29sIGlzSVB2NkNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJl
dHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgSVB2NkNoYXI7IH0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1BhdGhTZWdtZW50RW5kQ2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNz
VGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYgUGF0aFNlZ21lbnRFbmRDaGFy
OyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNQYXRoU2VnbWVudEVuZENoYXIoVUNoYXIgYykgeyBy
ZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgUGF0aFNlZ21lbnRF
bmRDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzQmFkQ2hhcih1bnNpZ25lZCBjaGFyIGMp
IHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBCYWRDaGFyOyB9Ci0gICAgCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNo
YXJhY3RlciwgY2hhciBzY2hlbWVDaGFyYWN0ZXIpCi17Ci0gICAgQVNTRVJUKGlzU2NoZW1lQ2hh
cihjaGFyYWN0ZXIpKTsKLSAgICBBU1NFUlQoc2NoZW1lQ2hhcmFjdGVyICYgMHgyMCk7Ci0gICAg
QVNTRVJUKGlzQVNDSUlMb3dlcihzY2hlbWVDaGFyYWN0ZXIpIHx8ICghaXNBU0NJSVVwcGVyKHNj
aGVtZUNoYXJhY3RlcikgJiYgaXNTY2hlbWVDaGFyKHNjaGVtZUNoYXJhY3RlcikpKTsKLSAgICBy
ZXR1cm4gKGNoYXJhY3RlciB8IDB4MjApID09IHNjaGVtZUNoYXJhY3RlcjsKLX0KLQotLy8gQ29w
aWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJj
ZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBi
ZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4gdGhlIHNv
dXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhl
IHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hh
ciogZGVzdCkKLXsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICBjb25z
dCBVQ2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tp
XSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRBU0NJSShjb25zdCBTdHJpbmcmIGJh
c2UsIGNvbnN0IGNoYXIqIHJlbCwgc2l6ZV90IGxlbiwgQ2hhckJ1ZmZlciYgYnVmZmVyKQotewot
ICAgIGJ1ZmZlci5yZXNpemUoYmFzZS5sZW5ndGgoKSArIGxlbiArIDEpOwotICAgIGNvcHlBU0NJ
SShiYXNlLCBidWZmZXIuZGF0YSgpKTsKLSAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSArIGJhc2Uu
bGVuZ3RoKCksIHJlbCwgbGVuKTsKLSAgICBidWZmZXJbYnVmZmVyLnNpemUoKSAtIDFdID0gJ1ww
JzsKLX0KLQotLy8gRklYTUU6IE1vdmUgdG8gV1RGU3RyaW5nLmggZXZlbnR1YWxseS4KLS8vIFJl
dHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpbmRleCBpbiBzdHJpbmcgfHN8IG9mIGFueSBv
ZiB0aGUgY2hhcmFjdGVycwotLy8gaW4gfHRvRmluZHwuIHx0b0ZpbmR8IHNob3VsZCBiZSBhIG51
bGwtdGVybWluYXRlZCBzdHJpbmcsIGFsbCBjaGFyYWN0ZXJzIHVwCi0vLyB0byB0aGUgbnVsbCB3
aWxsIGJlIHNlYXJjaGVkLiBSZXR1cm5zIGludCBpZiBub3QgZm91bmQuCi1zdGF0aWMgaW50IGZp
bmRGaXJzdE9mKGNvbnN0IFVDaGFyKiBzLCBpbnQgc0xlbiwgaW50IHN0YXJ0UG9zLCBjb25zdCBj
aGFyKiB0b0ZpbmQpCi17Ci0gICAgZm9yIChpbnQgaSA9IHN0YXJ0UG9zOyBpIDwgc0xlbjsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGN1ciA9IHRvRmluZDsKLSAgICAgICAgd2hpbGUgKCpj
dXIpIHsKLSAgICAgICAgICAgIGlmIChzW2ldID09ICooY3VyKyspKQotICAgICAgICAgICAgICAg
IHJldHVybiBpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGlj
IGlubGluZSB2b2lkIGNoZWNrRW5jb2RlZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHVybCwgdXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOwotICAgIEFTU0VS
VF9VTlVTRUQodXJsLCB1cmwuaXNFbXB0eSgpIHx8IGlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkp
OwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJ
cyhzdHJpbmcsIHByb3RvY29sKTsKLX0KLQotdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKLXsKLSAg
ICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxz
ZTsKLSAgICBtX3NjaGVtZUVuZCA9IDA7Ci0gICAgbV91c2VyU3RhcnQgPSAwOwotICAgIG1fdXNl
ckVuZCA9IDA7Ci0gICAgbV9wYXNzd29yZEVuZCA9IDA7Ci0gICAgbV9ob3N0RW5kID0gMDsKLSAg
ICBtX3BvcnRFbmQgPSAwOwotICAgIG1fcGF0aEVuZCA9IDA7Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSAwOwotICAgIG1fcXVlcnlFbmQgPSAwOwotICAgIG1fZnJhZ21lbnRFbmQgPSAwOwot
fQotCi1LVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17
Ci0gICAgcGFyc2UodXJsKTsKLSAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKLX0KLQotS1VS
TDo6S1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQotewotICAg
IGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6S1VSTChj
b25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nKQotewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVz
ZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0
aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMgY29udGVu
dHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQotICAg
IC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2Rpbmcu
ZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJp
bUZyb21VUkwodW5zaWduZWQgY2hhciBjKQotewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFk
aW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZy
b20gVVJMcy4gIE5vdGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8g
c28gdGhpcyBjb21wYXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4K
LSAgICByZXR1cm4gYyA8PSAnICc7Ci19Ci0KLXZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
KQotewotICAgIC8vIEFsbG93IHJlc29sdXRpb25zIHdpdGggYSBudWxsIG9yIGVtcHR5IGJhc2Ug
VVJMLCBidXQgbm90IHdpdGggYW55IG90aGVyIGludmFsaWQgb25lLgotICAgIC8vIEZJWE1FOiBJ
cyB0aGlzIGEgZ29vZCBydWxlPwotICAgIGlmICghYmFzZS5tX2lzVmFsaWQgJiYgIWJhc2UuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7Ci0gICAgICAgIGludmFsaWRh
dGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5
IHdpdGggV2luIElFLCB0cmVhdCBiYWNrc2xhc2hlcyBhcyBpZiB0aGV5IHdlcmUgc2xhc2hlcywK
LSAgICAvLyBhcyBsb25nIGFzIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggamF2YXNjcmlwdDogb3Ig
ZGF0YTogVVJMcy4KLSAgICBTdHJpbmcgcmVsID0gcmVsYXRpdmU7Ci0gICAgaWYgKHJlbC5jb250
YWlucygnXFwnKSAmJiAhKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkgfHwgcHJvdG9jb2xJcyhy
ZWwsICJkYXRhIikpKQotICAgICAgICByZWwgPSBzdWJzdGl0dXRlQmFja3NsYXNoZXMocmVsKTsK
LQotICAgIGJvb2wgYWxsQVNDSUkgPSByZWwuY29udGFpbnNPbmx5QVNDSUkoKTsKLSAgICBDaGFy
QnVmZmVyIHN0ckJ1ZmZlcjsKLSAgICBjaGFyKiBzdHI7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBp
ZiAoYWxsQVNDSUkpIHsKLSAgICAgICAgbGVuID0gcmVsLmxlbmd0aCgpOwotICAgICAgICBzdHJC
dWZmZXIucmVzaXplKGxlbiArIDEpOwotICAgICAgICBjb3B5QVNDSUkocmVsLCBzdHJCdWZmZXIu
ZGF0YSgpKTsKLSAgICAgICAgc3RyQnVmZmVyW2xlbl0gPSAwOwotICAgICAgICBzdHIgPSBzdHJC
dWZmZXIuZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuY29kZVJlbGF0aXZlU3RyaW5n
KHJlbCwgZW5jb2RpbmcsIHN0ckJ1ZmZlcik7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRh
KCk7Ci0gICAgICAgIGxlbiA9IHN0cmxlbihzdHIpOwotICAgIH0KLQotICAgIC8vIEdldCByaWQg
b2YgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUg
KGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTCgqc3RyKSkgewotICAgICAgICBzdHIrKzsKLSAgICAg
ICAgLS1sZW47Ci0gICAgfQotCi0gICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNl
IGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJv
bVVSTChzdHJbbGVuIC0gMV0pKQotICAgICAgICBzdHJbLS1sZW5dID0gJ1wwJzsKLQotICAgIC8v
IEFjY29yZGluZyB0byB0aGUgUkZDLCB0aGUgcmVmZXJlbmNlIHNob3VsZCBiZSBpbnRlcnByZXRl
ZCBhcyBhbgotICAgIC8vIGFic29sdXRlIFVSSSBpZiBwb3NzaWJsZSwgdXNpbmcgdGhlICJsZWZ0
bW9zdCwgbG9uZ2VzdCIKLSAgICAvLyBhbGdvcml0aG0uIElmIHRoZSBVUkkgcmVmZXJlbmNlIGlz
IGFic29sdXRlIGl0IHdpbGwgaGF2ZSBhCi0gICAgLy8gc2NoZW1lLCBtZWFuaW5nIHRoYXQgaXQg
d2lsbCBoYXZlIGEgY29sb24gYmVmb3JlIHRoZSBmaXJzdAotICAgIC8vIG5vbi1zY2hlbWUgZWxl
bWVudC4KLSAgICBib29sIGFic29sdXRlID0gZmFsc2U7Ci0gICAgY2hhciogcCA9IHN0cjsKLSAg
ICBpZiAoaXNTY2hlbWVGaXJzdENoYXIoKnApKSB7Ci0gICAgICAgICsrcDsKLSAgICAgICAgd2hp
bGUgKGlzU2NoZW1lQ2hhcigqcCkpIHsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoKnAgPT0gJzonKSB7Ci0gICAgICAgICAgICBpZiAocFsxXSAhPSAnLycgJiYgZXF1
YWxJZ25vcmluZ0Nhc2UoYmFzZS5wcm90b2NvbCgpLCBTdHJpbmcoc3RyLCBwIC0gc3RyKSkgJiYg
YmFzZS5pc0hpZXJhcmNoaWNhbCgpKQotICAgICAgICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7Ci0KLSAgICBpZiAoYWJzb2x1
dGUpIHsKLSAgICAgICAgcGFyc2Uoc3RyLCAmcmVsYXRpdmUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIElmIHRoZSBiYXNlIGlzIGVtcHR5IG9yIG9wYXF1ZSAoZS5nLiBkYXRhOiBvciBqYXZh
c2NyaXB0OiksIHRoZW4gdGhlIFVSTCBpcyBpbnZhbGlkCi0gICAgICAgIC8vIHVubGVzcyB0aGUg
cmVsYXRpdmUgVVJMIGlzIGEgc2luZ2xlIGZyYWdtZW50LgotICAgICAgICBpZiAoIWJhc2UuaXNI
aWVyYXJjaGljYWwoKSkgewotICAgICAgICAgICAgaWYgKHN0clswXSA9PSAnIycpIHsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5k
KSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1
ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoIChzdHJbMF0pIHsKLSAgICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLy8g
VGhlIHJlZmVyZW5jZSBpcyBlbXB0eSwgc28gdGhpcyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Ft
ZSBkb2N1bWVudCB3aXRoIGFueSBmcmFnbWVudCBpZGVudGlmaWVyIHJlbW92ZWQuCi0gICAgICAg
ICAgICAqdGhpcyA9IGJhc2U7Ci0gICAgICAgICAgICByZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcjJzogewotICAgICAgICAgICAg
Ly8gbXVzdCBiZSBmcmFnbWVudC1vbmx5IHJlZmVyZW5jZQotICAgICAgICAgICAgYXBwZW5kQVND
SUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1
ZmZlcik7Ci0gICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlICc/JzogewotICAg
ICAgICAgICAgLy8gcXVlcnktb25seSByZWZlcmVuY2UsIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9y
IG5vbi1VUkwgcmVzdWx0cwotICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5s
ZWZ0KGJhc2UubV9wYXRoRW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAg
IHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgLy8gbXVzdCBiZSBu
ZXQtcGF0aCBvciBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZQotICAgICAgICAgICAgaWYgKHN0clsx
XSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAvLyBuZXQtcGF0aAotICAgICAgICAgICAgICAg
IGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fc2NoZW1lRW5kICsgMSksIHN0
ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIu
ZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAvLyBhYnMtcGF0aAotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcu
bGVmdChiYXNlLm1fcG9ydEVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgLy8gbXVzdCBiZSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZQotCi0gICAg
ICAgICAgICAgICAgLy8gQmFzZSBwYXJ0IHBsdXMgcmVsYXRpdmUgcGFydCBwbHVzIG9uZSBwb3Nz
aWJsZSBzbGFzaCBhZGRlZCBpbiBiZXR3ZWVuIHBsdXMgdGVybWluYXRpbmcgXDAgYnl0ZS4KLSAg
ICAgICAgICAgICAgICBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IGJhc2UubV9wYXRoRW5kICsg
MSArIGxlbiArIDE7Ci0gICAgICAgICAgICAgICAgcGFyc2VCdWZmZXIucmVzaXplKGJ1ZmZlclNp
emUpOwotCi0gICAgICAgICAgICAgICAgY2hhciogYnVmZmVyUG9zID0gcGFyc2VCdWZmZXIuZGF0
YSgpOwotICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyUG9zOwotCi0g
ICAgICAgICAgICAgICAgLy8gZmlyc3QgY29weSBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGF0aCBm
cm9tIHRoZSBiYXNlCi0gICAgICAgICAgICAgICAgQ2hhckJ1ZmZlciBiYXNlU3RyaW5nQnVmZmVy
KGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIGNvcHlBU0NJSShiYXNl
Lm1fc3RyaW5nLCBiYXNlU3RyaW5nQnVmZmVyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYmFzZVN0cmluZyA9IGJhc2VTdHJpbmdCdWZmZXIuZGF0YSgpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IGJhc2VTdHJpbmc7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcGF0aFN0YXJ0ID0gYmFzZVN0cmluZ1N0YXJ0ICsgYmFzZS5t
X3BvcnRFbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGJhc2VTdHJpbmdTdGFydCA8IHBhdGhT
dGFydCkKLSAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gKmJhc2VTdHJpbmdTdGFy
dCsrOwotICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlclBhdGhTdGFydCA9IGJ1ZmZlclBvczsK
LQotICAgICAgICAgICAgICAgIC8vIG5vdyBjb3B5IHRoZSBiYXNlIHBhdGgKLSAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gYmFzZVN0cmluZyArIGJhc2UubV9wYXRo
RW5kOwotCi0gICAgICAgICAgICAgICAgLy8gZ28gYmFjayB0byB0aGUgbGFzdCBzbGFzaAotICAg
ICAgICAgICAgICAgIHdoaWxlIChiYXNlU3RyaW5nRW5kID4gYmFzZVN0cmluZ1N0YXJ0ICYmIGJh
c2VTdHJpbmdFbmRbLTFdICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ0Vu
ZC0tOwotCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VTdHJpbmdFbmQgPT0gYmFzZVN0cmluZ1N0
YXJ0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5vIHBhdGggaW4gYmFzZSwgYWRkIGEgcGF0
aCBzZXBhcmF0b3IgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLm1f
c2NoZW1lRW5kICsgMSAhPSBiYXNlLm1fcGF0aEVuZCAmJiAqc3RyICYmICpzdHIgIT0gJz8nICYm
ICpzdHIgIT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gJy8n
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBv
cyArPSBjb3B5UGF0aFJlbW92aW5nRG90cyhidWZmZXJQb3MsIGJhc2VTdHJpbmdTdGFydCwgMCwg
YmFzZVN0cmluZ0VuZCAtIGJhc2VTdHJpbmdTdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVsU3RyaW5nU3RhcnQgPSBzdHI7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmVsU3RyaW5nUG9zID0gcmVsU3RyaW5nU3RhcnQ7Ci0KLSAg
ICAgICAgICAgICAgICB3aGlsZSAoKnJlbFN0cmluZ1BvcyAmJiAqcmVsU3RyaW5nUG9zICE9ICc/
JyAmJiAqcmVsU3RyaW5nUG9zICE9ICcjJykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVs
U3RyaW5nUG9zWzBdID09ICcuJyAmJiBidWZmZXJQb3NbLTFdID09ICcvJykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1sxXSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4iIHNlZ21lbnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MgKz0gMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHJlbFN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgaXNQYXRoU2VnbWVudEVuZENoYXIocmVsU3RyaW5n
UG9zWzJdKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4i
IHNlZ21lbnQgYW5kIHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhlIFJGQyBsZWF2ZXMgaXQgdXAgdG8gdGhlIGFwcCB0byBkZWNpZGUgd2hh
dCB0byBkbyB3aXRoIGV4Y2VzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIuLiIg
c2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MgKz0gMjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJ1ZmZlclBvcyA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlclBvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChidWZmZXJQb3MgPiBidWZmZXJQYXRoU3RhcnQgKyAxICAmJiBidWZmZXJQb3NbLTFd
ICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zLS07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAqYnVm
ZmVyUG9zID0gKnJlbFN0cmluZ1BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9z
Kys7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcysrOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIC8vIGFsbCBkb25lIHdpdGggdGhlIHBhdGggd29yaywgbm93IGNv
cHkgYW55IHJlbWFpbmRlcgotICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZl
cmVuY2U7IHRoaXMgd2lsbCBhbHNvIGFkZCBhIG51bGwgdGVybWluYXRvcgotICAgICAgICAgICAg
ICAgIHN0cm5jcHkoYnVmZmVyUG9zLCByZWxTdHJpbmdQb3MsIGJ1ZmZlclNpemUgLSAoYnVmZmVy
UG9zIC0gYnVmZmVyU3RhcnQpKTsKLQotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVy
LmRhdGEoKSwgJnJlbGF0aXZlKTsKLQotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4ocGFy
c2VCdWZmZXIuZGF0YSgpKSArIDEgPD0gcGFyc2VCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotS1VSTCBL
VVJMOjpjb3B5KCkgY29uc3QKLXsKLSAgICBLVVJMIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3Vs
dC5tX3N0cmluZyA9IHJlc3VsdC5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1TdHJpbmcgS1VSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAotewot
ICAgIGlmICghaGFzUGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICB1bnNp
Z25lZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykK
LSAgICAgICAgLS1lbmQ7Ci0KLSAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmlu
ZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9y
dEVuZCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICArK3N0YXJ0OwotCi0gICAgcmV0
dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKLX0KLQotU3Ry
aW5nIEtVUkw6OnByb3RvY29sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdCht
X3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmluZyBLVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICBpbnQg
c3RhcnQgPSBob3N0U3RhcnQoKTsKLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpKTsKLX0KLQotdW5z
aWduZWQgc2hvcnQgS1VSTDo6cG9ydCgpIGNvbnN0Ci17Ci0gICAgLy8gV2UgcmV0dXJuIGEgcG9y
dCBvZiAwIGlmIHRoZXJlIGlzIG5vIHBvcnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4g
dHdvIHNpdHVhdGlvbnM6Ci0gICAgLy8gMSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRl
ciB0aGUgaG9zdCBuYW1lIGFuZCBiZWZvcmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwu
Ci0gICAgLy8gMikgVGhlIFVSTCBjb250YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQg
bnVtYmVyIGJlZm9yZSB0aGUgcGF0aCBjb21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCi0gICAg
aWYgKG1faG9zdEVuZCA9PSBtX3BvcnRFbmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0
cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51
bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydEVuZCAtIG1faG9zdEVuZCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIg
PiBtYXhpbXVtVmFsaWRQb3J0TnVtYmVyKQotICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1i
ZXI7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIEtVUkw6OnBhc3MoKSBjb25zdAot
ewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5z
dWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsg
Ci19Ci0KLVN0cmluZyBLVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5k
IC0gbV91c2VyU3RhcnQpKTsKLX0KLQotU3RyaW5nIEtVUkw6OmZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fZnJhZ21lbnRFbmQgPT0gbV9xdWVyeUVuZCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5
RW5kICsgMSwgbV9mcmFnbWVudEVuZCAtIChtX3F1ZXJ5RW5kICsgMSkpOwotfQotCi1ib29sIEtV
Ukw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhZ21l
bnRFbmQgIT0gbV9xdWVyeUVuZDsKLX0KLQotU3RyaW5nIEtVUkw6OmJhc2VBc1N0cmluZygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwot
fQotCi0jaWYgIVBMQVRGT1JNKFFUKSAmJiAhVVNFKENGKQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhwYXRoKCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBOREVCVUcKLQotc3RhdGljIGlu
bGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKGNvbnN0IGNoYXIqKQotewotfQotCi0jZWxz
ZQotCi1zdGF0aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChjb25zdCBjaGFyKiBwcm90b2Nv
bCkKLXsKLSAgICBjb25zdCBjaGFyKiBwID0gcHJvdG9jb2w7Ci0gICAgd2hpbGUgKCpwKSB7Ci0g
ICAgICAgIEFTU0VSVCgqcCA+ICcgJyAmJiAqcCA8IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAg
PD0gJ1onKSk7Ci0gICAgICAgICsrcDsKLSAgICB9Ci19Ci0KLSNlbmRpZgotCi1ib29sIEtVUkw6
OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QocHJvdG9jb2wpOwotCi0gICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFs
aWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBLVVJMIGRlY2lkZXMgdGhleSBhcmUg
aW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgp
IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0Nhc2Uo
cHJvdG9jb2wsIFN0cmluZygiamF2YXNjcmlwdCIpKSk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91
dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
c2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNTY2hlbWVD
aGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gIXByb3RvY29sW21fc2No
ZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhl
IGFyZ3VtZW50LgotfQotCi1TdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAotewotICAgIGlmICht
X3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1f
cGF0aEVuZCArIDEpKTsgCi19Ci0KLVN0cmluZyBLVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCwgbV9wYXRoRW5kIC0gbV9wb3J0RW5k
KTsKLX0KLQotYm9vbCBLVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAg
Ly8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4K
LSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcg
bmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0KLSAgICBp
ZiAoIWlzVmFsaWRQcm90b2NvbChuZXdQcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzon
ICsgbV9zdHJpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwYXJzZShu
ZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgaG9zdC4KLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0
ID09IG1fc2NoZW1lRW5kICsgMTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX2hvc3RFbmQpKTsKLX0KLQotdm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAgICBp
ZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsK
LX0KLQotdm9pZCBLVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFt
X2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3Bv
cnRFbmQgPT0gbV9ob3N0RW5kOwotICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9y
dFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3RB
bmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBt
dXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMs
Ci0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IGhvc3QgYW5kIHBv
cnQuCi0KLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVt
ZUVuZCArIDE7Ci0KLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFz
aFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiKSArIGhvc3RBbmRQb3J0ICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1
c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2lu
ZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIGludCBlbmQgPSBtX3VzZXJF
bmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHVzZXI7
Ci0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCi0gICAgICAgICAg
ICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25l
IGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3
b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdA
Jyk7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0An
IGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmICht
X3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5n
W2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUg
bm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBl
bmQpCi0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UGFzcyhjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVk
IGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0
byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBwYXNzd29yZC4KLQotICAg
IGludCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFN0cmluZyBwID0gIjoiICsgcGFzc3dvcmQgKyAiQCI7Ci0gICAgICAgIGlmICht
X3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQgKyAxKQotICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwot
ICAgICAgICAvLyBFYXQgdGhlIGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRk
IG91ciBvd24uCi0gICAgICAgIGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0g
PT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxl
ZnQobV91c2VyRW5kKSArIHAgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9y
IHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAh
PSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0g
MTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNv
bW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAg
ICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpCi0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0
KG1fdXNlckVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfQotfQotCi12b2lk
IEtVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBl
eHBlY3RhdGlvbnMuCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiAr
IHMpOwotfQotCi12b2lkIEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0
KG1fcXVlcnlFbmQpKTsKLX0KLSAgICAKLXZvaWQgS1VSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5n
JiBxdWVyeSkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFu
ZCBlc2NhcGVkLgotICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRv
Y3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0gICAgLy8gYWNj
ZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGlmICgocXVlcnkuaXNF
bXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKQotICAgICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyAiPyIgKyBxdWVyeSArIG1fc3RyaW5nLnN1
YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0gICAgZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5s
ZWZ0KG1fcGF0aEVuZCkgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7
Ci0KLX0KLQotdm9pZCBLVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAo
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IGVuY29kZVdpdGhV
UkxFc2NhcGVTZXF1ZW5jZXMgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSAnIycgYW5kICc/Jywg
c28gZnJhZ21lbnQgYW5kIHF1ZXJ5IHBhcnRzCi0gICAgLy8gbWF5IGJlIGluYWR2ZXJ0ZW50bHkg
YWZmZWN0ZWQuCi0gICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8
fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2Vz
KHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOwotfQotCi1TdHJpbmcgZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVy
biBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgVVRGOEVu
Y29kaW5nKCkpOwotfQotCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIHJldHVy
biBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2Rp
bmcpOwotfQotCi0vLyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJvdW5kcyBjaGVj
ay4KLXN0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZmZXIsIHVuc2lnbmVk
IGNoYXIgYykKLXsKLSAgICAqYnVmZmVyKysgPSAnJSc7Ci0gICAgcGxhY2VCeXRlQXNIZXgoYywg
YnVmZmVyKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhjaGFyKiYg
YnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFy
KiBwID0gYnVmZmVyOwotCi0gICAgY29uc3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29u
c3QgY2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0
ckVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChp
c0JhZENoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBjID09ICc/JykKLSAg
ICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgIT0gMHgwOSAm
JiBjICE9IDB4MGEgJiYgYyAhPSAweDBkKQotICAgICAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRD
aGFyKHAsIGMpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0K
LQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0KLXN0YXRpYyB2b2lkIGVzY2FwZUFuZEFwcGVuZE5vbkhp
ZXJhcmNoaWNhbFBhcnQoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgY2hhciogcCA9IGJ1ZmZlcjsKLQotICAgIGNvbnN0IGNoYXIqIHN0
ciA9IHN0clN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0YXJ0ICsgbGVuZ3Ro
OwotICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0g
KnN0cisrOwotICAgICAgICAvLyBTdHJpcCBDUiwgTEYgYW5kIFRhYiBmcm9tIGZyYWdtZW50cywg
cGVyOgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc3MAotICAgICAgICBpZiAoYyA9PSAweDA5IHx8IGMgPT0gMHgwYSB8fCBjID09IDB4MGQpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBDaHJvbWUgYW5kIElFIGFsbG93IG5v
bi1hc2NpaSBjaGFyYWN0ZXJzIGluIGZyYWdtZW50cywgaG93ZXZlciBkb2luZwotICAgICAgICAv
LyBzbyB3b3VsZCBoaXQgYW4gQVNTRVJUIGluIGNoZWNrRW5jb2RlZFN0cmluZywgc28gZm9yIG5v
dyB3ZSBkb24ndC4KLSAgICAgICAgaWYgKGMgPCAweDIwIHx8IGMgPj0gMTI3KSB7Ci0gICAgICAg
ICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0K
LS8vIGNvcHkgYSBwYXRoLCBhY2NvdW50aW5nIGZvciAiLiIgYW5kICIuLiIgc2VnbWVudHMKLXN0
YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMs
IGludCBzcmNTdGFydCwgaW50IHNyY0VuZCkKLXsKLSAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQg
PSBkc3Q7Ci0KLSAgICAvLyBlbXB0eSBwYXRoIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbmVlZCBu
b3QgaGF2ZSBhIGxlYWRpbmcgc2xhc2gKLSAgICBpZiAoc3JjU3RhcnQgIT0gc3JjRW5kKSB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IHNyYyArIHNyY1N0YXJ0OwotICAg
ICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gc3JjICsgc3JjRW5kOwotICAgICAgICBj
b25zdCBjaGFyKiBiYXNlU3RyaW5nUG9zID0gYmFzZVN0cmluZ1N0YXJ0OwotCi0gICAgICAgIC8v
IHRoaXMgY29kZSBpcyB1bnByZXBhcmVkIGZvciBwYXRocyB0aGF0IGRvIG5vdCBiZWdpbiB3aXRo
IGEKLSAgICAgICAgLy8gc2xhc2ggYW5kIHdlIHNob3VsZCBhbHdheXMgaGF2ZSBvbmUgaW4gdGhl
IHNvdXJjZSBzdHJpbmcKLSAgICAgICAgQVNTRVJUKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy8nKTsK
LQotICAgICAgICAvLyBjb3B5IHRoZSBsZWFkaW5nIHNsYXNoIGludG8gdGhlIGRlc3RpbmF0aW9u
Ci0gICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgYmFzZVN0cmluZ1Bvcysr
OwotICAgICAgICBkc3QrKzsKLQotICAgICAgICB3aGlsZSAoYmFzZVN0cmluZ1BvcyA8IGJhc2VT
dHJpbmdFbmQpIHsKLSAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzBdID09ICcuJyAmJiBk
c3RbLTFdID09ICcvJykgewotICAgICAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzFdID09
ICcvJyB8fCBiYXNlU3RyaW5nUG9zICsgMSA9PSBiYXNlU3RyaW5nRW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICBi
YXNlU3RyaW5nUG9zICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgKGJhc2VTdHJp
bmdQb3NbMl0gPT0gJy8nIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlU3RyaW5nUG9zICsgMiA9PSBiYXNlU3RyaW5nRW5kKSkgewotICAgICAgICAgICAgICAg
ICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhlIGxhc3Qgc2VnbWVu
dAotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZlcyBpdCB1cCB0byB0aGUgYXBw
IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCi0gICAgICAgICAgICAgICAgICAgIC8v
ICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNv
bnRlbnQKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMuCi0gICAgICAgICAg
ICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRz
dCA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBkc3QtLTsK
LSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCAmJiBkc3Rb
LTFdICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgICAgIGJhc2VTdHJpbmdQ
b3MrKzsKLSAgICAgICAgICAgIGRzdCsrOwotICAgICAgICB9Ci0gICAgfQotICAgICpkc3QgPSAn
XDAnOwotICAgIHJldHVybiBkc3QgLSBidWZmZXJQYXRoU3RhcnQ7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGNvbnN0IGNoYXIqIHN0cikKLXsKLSAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oc3RyKTsKLSAgICBpZiAoISpwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWdu
ZWQgY2hhciBwYyA9ICpwOwotICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMgPSAqKytwKSB7Ci0g
ICAgICAgIGlmIChjID09ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcuJykpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcGMgPSBjOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAg
Y2hlY2tFbmNvZGVkU3RyaW5nKHN0cmluZyk7Ci0KLSAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJp
bmcubGVuZ3RoKCkgKyAxKTsKLSAgICBjb3B5QVNDSUkoc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsK
LSAgICBidWZmZXJbc3RyaW5nLmxlbmd0aCgpXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnVmZmVyLmRh
dGEoKSwgJnN0cmluZyk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBsZW5ndGg+Ci1zdGF0aWMgaW5s
aW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciAoJmIpW2xlbmd0aF0pCi17
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAo
YVtpXSAhPSBiW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGxlbmd0aEI+Ci1zdGF0aWMgaW5saW5lIGJv
b2wgZXF1YWwoY29uc3QgY2hhciogc3RyaW5nQSwgc2l6ZV90IGxlbmd0aEEsIGNvbnN0IGNoYXIg
KCZzdHJpbmdCKVtsZW5ndGhCXSkKLXsKLSAgICByZXR1cm4gbGVuZ3RoQSA9PSBsZW5ndGhCICYm
IGVxdWFsKHN0cmluZ0EsIHN0cmluZ0IpOwotfQotCi0vLyBMaXN0IG9mIGRlZmF1bHQgc2NoZW1l
cyBpcyB0YWtlbiBmcm9tIGdvb2dsZS11cmw6Ci0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXVybC9zb3VyY2UvYnJvd3NlL3RydW5rL3NyYy91cmxfY2Fub25fc3RkdXJsLmNjIzEy
MAotc3RhdGljIGlubGluZSBib29sIGlzRGVmYXVsdFBvcnRGb3JTY2hlbWUoY29uc3QgY2hhciog
cG9ydCwgc2l6ZV90IHBvcnRMZW5ndGgsIGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVt
ZUxlbmd0aCkKLXsKLSAgICAvLyBUaGlzIHN3aXRjaCBpcyB0aGVvcmV0aWNhbGx5IGEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uLiAgSXQgY2FtZSBvdmVyIHdoZW4KLSAgICAvLyB0aGUgY29kZSB3
YXMgbW92ZWQgZnJvbSBnb29nbGUtdXJsLCBidXQgbWF5IGJlIHJlbW92ZWQgbGF0ZXIuCi0gICAg
c3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVh
bChzY2hlbWUsIHdzU2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7
Ci0gICAgY2FzZSAzOgotICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpKQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGZ0cFBvcnQpOwotICAgICAg
ICBpZiAoZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFs
KHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBzUG9ydCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
NDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVtZSkgJiYgZXF1YWwocG9y
dCwgcG9ydExlbmd0aCwgaHR0cFBvcnQpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBz
UG9ydCk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJT
Y2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBvcnQpOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBob3N0UG9ydElzRW1wdHlC
dXRDcmVkZW50aWFsc0FyZVByZXNlbnQoaW50IGhvc3RTdGFydCwgaW50IHBvcnRFbmQsIGNoYXIg
dXNlcmluZm9FbmRDaGFyKQotewotICAgIHJldHVybiB1c2VyaW5mb0VuZENoYXIgPT0gJ0AnICYm
IGhvc3RTdGFydCA9PSBwb3J0RW5kOwotfQotCi1zdGF0aWMgYm9vbCBpc05vbkZpbGVIaWVyYXJj
aGljYWxTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewot
ICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3RoKSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4g
ZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBj
YXNlIDQ6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpOwotICAgIGNh
c2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNh
c2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBpc0Nhbm9uaWNhbEhvc3RuYW1l
TG93ZXJjYXNlRm9yU2NoZW1lKGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0
aCkKLXsKLSAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewotICAgIGNhc2UgMjoKLSAgICAgICAg
cmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpOwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0
dXJuIGVxdWFsKHNjaGVtZSwgZnRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSk7
Ci0gICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8
fCBlcXVhbChzY2hlbWUsIGZpbGVTY2hlbWUpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJu
IGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJu
IGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmln
aW5hbFN0cmluZykKLXsKLSAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewotICAgICAg
ICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmln
aW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcih1
cmxbMF0pKSB7Ci0gICAgICAgIC8vIHNjaGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4gYWxwaGFiZXRp
YyBjaGFyYWN0ZXIKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5h
bFN0cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaW50IHNjaGVtZUVuZCA9IDA7Ci0gICAgd2hpbGUgKGlzU2NoZW1lQ2hhcih1
cmxbc2NoZW1lRW5kXSkpCi0gICAgICAgIHNjaGVtZUVuZCsrOwotCi0gICAgaWYgKHVybFtzY2hl
bWVFbmRdICE9ICc6JykgewotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9y
aWdpbmFsU3RyaW5nIDogdXJsOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpbnQgdXNlclN0YXJ0ID0gc2NoZW1lRW5kICsgMTsKLSAgICBpbnQg
dXNlckVuZDsKLSAgICBpbnQgcGFzc3dvcmRTdGFydDsKLSAgICBpbnQgcGFzc3dvcmRFbmQ7Ci0g
ICAgaW50IGhvc3RTdGFydDsKLSAgICBpbnQgaG9zdEVuZDsKLSAgICBpbnQgcG9ydFN0YXJ0Owot
ICAgIGludCBwb3J0RW5kOwotCi0gICAgYm9vbCBoaWVyYXJjaGljYWwgPSB1cmxbc2NoZW1lRW5k
ICsgMV0gPT0gJy8nOwotICAgIGJvb2wgaGFzU2Vjb25kU2xhc2ggPSBoaWVyYXJjaGljYWwgJiYg
dXJsW3NjaGVtZUVuZCArIDJdID09ICcvJzsKLQotICAgIGJvb2wgaXNGaWxlID0gc2NoZW1lRW5k
ID09IDQKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdmJykK
LSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdpJykKLSAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICdsJykKLSAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdlJyk7Ci0KLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKQotICAgIC8vIFBhcnNlIGxvY2FsOiB1cmxzIHRoZSBzYW1lIGFzIGZpbGU6IHVy
bHMuCi0gICAgaWYgKCFpc0ZpbGUpCi0gICAgICAgIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA1Ci0g
ICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2wnKQotICAg
ICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdvJykKLSAgICAg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnYycpCi0gICAgICAg
ICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwgJ2EnKQotICAgICAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbNF0sICdsJyk7Ci0jZW5kaWYKLQot
ICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
dXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFd
LCAndCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAndCcp
Ci0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAncCcpCi0gICAg
ICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFs0
XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzonKSk7Ci0KLSAgICBpZiAoKGhpZXJhcmNoaWNhbCAmJiBo
YXNTZWNvbmRTbGFzaCkgfHwgaXNOb25GaWxlSGllcmFyY2hpY2FsU2NoZW1lKHVybCwgc2NoZW1l
RW5kKSkgewotICAgICAgICAvLyBUaGUgcGFydCBhZnRlciB0aGUgc2NoZW1lIGlzIGVpdGhlciBh
IG5ldF9wYXRoIG9yIGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHBhdGggc2VnbWVudCBpcyBlbXB0
eS4KLSAgICAgICAgLy8gQXR0ZW1wdCB0byBmaW5kIGFuIGF1dGhvcml0eS4KLSAgICAgICAgLy8g
RklYTUU6IEF1dGhvcml0eSBjaGFyYWN0ZXJzIG1heSBiZSBzY2FubmVkIHR3aWNlLCBhbmQgaXQg
d291bGQgYmUgbmljZSB0byBiZSBmYXN0ZXIuCi0KLSAgICAgICAgaWYgKGhpZXJhcmNoaWNhbCkK
LSAgICAgICAgICAgIHVzZXJTdGFydCsrOwotICAgICAgICBpZiAoaGFzU2Vjb25kU2xhc2gpCi0g
ICAgICAgICAgICB1c2VyU3RhcnQrKzsKLSAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLQot
ICAgICAgICBpbnQgY29sb25Qb3MgPSAwOwotICAgICAgICB3aGlsZSAoaXNVc2VySW5mb0NoYXIo
dXJsW3VzZXJFbmRdKSkgewotICAgICAgICAgICAgaWYgKHVybFt1c2VyRW5kXSA9PSAnOicgJiYg
Y29sb25Qb3MgPT0gMCkKLSAgICAgICAgICAgICAgICBjb2xvblBvcyA9IHVzZXJFbmQ7Ci0gICAg
ICAgICAgICB1c2VyRW5kKys7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXJsW3VzZXJFbmRd
ID09ICdAJykgewotICAgICAgICAgICAgLy8gYWN0dWFsIGVuZCBvZiB0aGUgdXNlcmluZm8sIHN0
YXJ0IG9uIHRoZSBob3N0Ci0gICAgICAgICAgICBpZiAoY29sb25Qb3MgIT0gMCkgewotICAgICAg
ICAgICAgICAgIHBhc3N3b3JkRW5kID0gdXNlckVuZDsKLSAgICAgICAgICAgICAgICB1c2VyRW5k
ID0gY29sb25Qb3M7Ci0gICAgICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IGNvbG9uUG9zICsg
MTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBw
YXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0KLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3Jk
RW5kICsgMTsKLSAgICAgICAgfSBlbHNlIGlmICh1cmxbdXNlckVuZF0gPT0gJ1snIHx8IGlzUGF0
aFNlZ21lbnRFbmRDaGFyKHVybFt1c2VyRW5kXSkpIHsKLSAgICAgICAgICAgIC8vIGhpdCB0aGUg
ZW5kIG9mIHRoZSBhdXRob3JpdHksIG11c3QgaGF2ZSBiZWVuIG5vIHVzZXIKLSAgICAgICAgICAg
IC8vIG9yIGxvb2tzIGxpa2UgYW4gSVB2NiBob3N0bmFtZQotICAgICAgICAgICAgLy8gZWl0aGVy
IHdheSwgdHJ5IHRvIHBhcnNlIGl0IGFzIGEgaG9zdG5hbWUKLSAgICAgICAgICAgIHVzZXJFbmQg
PSB1c2VyU3RhcnQ7Ci0gICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1
c2VyRW5kOwotICAgICAgICAgICAgaG9zdFN0YXJ0ID0gdXNlclN0YXJ0OwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAg
ICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBob3N0RW5kID0gaG9zdFN0YXJ0OwotCi0gICAgICAgIC8vIElQVjYgSVAgYWRkcmVzcwotICAg
ICAgICBpZiAodXJsW2hvc3RFbmRdID09ICdbJykgewotICAgICAgICAgICAgaG9zdEVuZCsrOwot
ICAgICAgICAgICAgd2hpbGUgKGlzSVB2NkNoYXIodXJsW2hvc3RFbmRdKSkKLSAgICAgICAgICAg
ICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09ICddJykKLSAg
ICAgICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gb3Jp
Z2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICAgICAgaW52
YWxpZGF0ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdoaWxlIChpc0hvc3RuYW1lQ2hhcih1cmxbaG9zdEVu
ZF0pKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKHVybFtob3N0RW5kXSA9PSAnOicpIHsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9
IHBvcnRFbmQgPSBob3N0RW5kICsgMTsKLSAKLSAgICAgICAgICAgIC8vIHBvc3NpYmxlIHN0YXJ0
IG9mIHBvcnQKLSAgICAgICAgICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0gICAgICAgICAgICB3
aGlsZSAoaXNBU0NJSURpZ2l0KHVybFtwb3J0RW5kXSkpCi0gICAgICAgICAgICAgICAgcG9ydEVu
ZCsrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBo
b3N0RW5kOwotCi0gICAgICAgIGlmICghaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRd
KSkgewotICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAg
ICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoaG9zdFBvcnRJc0VtcHR5QnV0Q3JlZGVudGlhbHNBcmVQcmVzZW50KGhvc3RTdGFydCwg
cG9ydEVuZCwgdXJsW3Bhc3N3b3JkRW5kXSkpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3Jp
Z2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlk
YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNl
clN0YXJ0ID09IHBvcnRFbmQgJiYgIW1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiAhaXNGaWxl
KSB7Ci0gICAgICAgICAgICAvLyBObyBhdXRob3JpdHkgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQg
dGhpcyBpcyBub3QgYSBuZXRfcGF0aCwgYnV0IHJhdGhlciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJz
dCB0d28KLSAgICAgICAgICAgIC8vIHBhdGggc2VnbWVudHMgYXJlIGVtcHR5LiBGb3IgZmlsZSwg
aHR0cCBhbmQgaHR0cHMgb25seSwgYW4gZW1wdHkgYXV0aG9yaXR5IGlzIGFsbG93ZWQuCi0gICAg
ICAgICAgICB1c2VyU3RhcnQgLT0gMjsKLSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7
Ci0gICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0gdXNlckVuZDsKLSAgICAgICAgICAgIHBhc3N3
b3JkRW5kID0gcGFzc3dvcmRTdGFydDsKLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3Jk
RW5kOwotICAgICAgICAgICAgaG9zdEVuZCA9IGhvc3RTdGFydDsKLSAgICAgICAgICAgIHBvcnRT
dGFydCA9IGhvc3RFbmQ7Ci0gICAgICAgICAgICBwb3J0RW5kID0gaG9zdEVuZDsKLSAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHRoZSBwYXJ0IGFmdGVyIHRoZSBzY2hlbWUgbXVz
dCBiZSBhbiBvcGFxdWVfcGFydCBvciBhbiBhYnNfcGF0aAotICAgICAgICB1c2VyRW5kID0gdXNl
clN0YXJ0OwotICAgICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwot
ICAgICAgICBob3N0U3RhcnQgPSBob3N0RW5kID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgIHBvcnRT
dGFydCA9IHBvcnRFbmQgPSBob3N0RW5kOwotICAgIH0KLQotICAgIGludCBwYXRoU3RhcnQgPSBw
b3J0RW5kOwotICAgIGludCBwYXRoRW5kID0gcGF0aFN0YXJ0OwotICAgIHdoaWxlICh1cmxbcGF0
aEVuZF0gJiYgdXJsW3BhdGhFbmRdICE9ICc/JyAmJiB1cmxbcGF0aEVuZF0gIT0gJyMnKQotICAg
ICAgICBwYXRoRW5kKys7Ci0KLSAgICBpbnQgcXVlcnlTdGFydCA9IHBhdGhFbmQ7Ci0gICAgaW50
IHF1ZXJ5RW5kID0gcXVlcnlTdGFydDsKLSAgICBpZiAodXJsW3F1ZXJ5U3RhcnRdID09ICc/Jykg
ewotICAgICAgICB3aGlsZSAodXJsW3F1ZXJ5RW5kXSAmJiB1cmxbcXVlcnlFbmRdICE9ICcjJykK
LSAgICAgICAgICAgIHF1ZXJ5RW5kKys7Ci0gICAgfQotCi0gICAgaW50IGZyYWdtZW50U3RhcnQg
PSBxdWVyeUVuZDsKLSAgICBpbnQgZnJhZ21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgIGlm
ICh1cmxbZnJhZ21lbnRTdGFydF0gPT0gJyMnKSB7Ci0gICAgICAgIGZyYWdtZW50U3RhcnQrKzsK
LSAgICAgICAgZnJhZ21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgICAgICB3aGlsZSAodXJs
W2ZyYWdtZW50RW5kXSkKLSAgICAgICAgICAgIGZyYWdtZW50RW5kKys7Ci0gICAgfQotCi0gICAg
Ly8gYXNzZW1ibGUgaXQgYWxsLCByZW1lbWJlcmluZyB0aGUgcmVhbCByYW5nZXMKLQotICAgIFZl
Y3RvcjxjaGFyLCA0MDk2PiBidWZmZXIoZnJhZ21lbnRFbmQgKiAzICsgMSk7Ci0KLSAgICBjaGFy
ICpwID0gYnVmZmVyLmRhdGEoKTsKLSAgICBjb25zdCBjaGFyICpzdHJQdHIgPSB1cmw7Ci0KLSAg
ICAvLyBjb3B5IGluIHRoZSBzY2hlbWUKLSAgICBjb25zdCBjaGFyICpzY2hlbWVFbmRQdHIgPSB1
cmwgKyBzY2hlbWVFbmQ7Ci0gICAgd2hpbGUgKHN0clB0ciA8IHNjaGVtZUVuZFB0cikKLSAgICAg
ICAgKnArKyA9IHRvQVNDSUlMb3dlcigqc3RyUHRyKyspOwotICAgIG1fc2NoZW1lRW5kID0gcCAt
IGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICBib29sIGhvc3RJc0xvY2FsSG9zdCA9IHBvcnRFbmQgLSB1
c2VyU3RhcnQgPT0gOQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1
c2VyU3RhcnRdLCAnbCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
W3VzZXJTdGFydCsxXSwgJ28nKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFt1c2VyU3RhcnQrMl0sICdjJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbdXNlclN0YXJ0KzNdLCAnYScpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UodXJsW3VzZXJTdGFydCs0XSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNV0sICdoJykKLSAgICAgICAgJiYgaXNMZXR0ZXJN
YXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzZdLCAnbycpCi0gICAgICAgICYmIGlzTGV0
dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs3XSwgJ3MnKQotICAgICAgICAmJiBp
c0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrOF0sICd0Jyk7Ci0KLSAgICAv
LyBGaWxlIFVSTHMgbmVlZCBhIGhvc3QgcGFydCB1bmxlc3MgaXQgaXMganVzdCBmaWxlOi8vIG9y
IGZpbGU6Ly9sb2NhbGhvc3QKLSAgICBib29sIGRlZ2VuZXJhdGVGaWxlUGF0aCA9IHBhdGhTdGFy
dCA9PSBwYXRoRW5kICYmIChob3N0U3RhcnQgPT0gaG9zdEVuZCB8fCBob3N0SXNMb2NhbEhvc3Qp
OwotCi0gICAgLy8gV2UgZHJvcCBlbXB0eSBjcmVkZW50aWFscywgYnV0IGtlZXAgYSBjb2xvbiBp
biBhbiBlbXB0eSBob3N0L3BvcnQgcGFpci4KLSAgICAvLyBSZW1vdmluZyBob3N0bmFtZSBjb21w
bGV0ZWx5IHdvdWxkIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBVUkwgb24gcmUtcGFyc2lu
Zy4KLSAgICBib29sIGhhdmVOb25Ib3N0QXV0aG9yaXR5UGFydCA9IHVzZXJTdGFydCAhPSB1c2Vy
RW5kIHx8IHBhc3N3b3JkU3RhcnQgIT0gcGFzc3dvcmRFbmQgfHwgaG9zdEVuZCAhPSBwb3J0RW5k
OwotCi0gICAgLy8gYWRkICI6IiBhZnRlciBzY2hlbWUKLSAgICAqcCsrID0gJzonOwotCi0gICAg
Ly8gaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgYXV0aG9yaXR5IHBhcnQgb3IgYSBmaWxlIFVSTCAt
IGFkZCAiLy8iIGFuZCBhdXRob3JpdHkKLSAgICBpZiAoaXNGaWxlID8gIWRlZ2VuZXJhdGVGaWxl
UGF0aCA6IChoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQgfHwgaG9zdFN0YXJ0ICE9IGhvc3RFbmQp
KSB7Ci0gICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICpwKysgPSAnLyc7Ci0KLSAgICAgICAg
bV91c2VyU3RhcnQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRo
ZSB1c2VyCi0gICAgICAgIHN0clB0ciA9IHVybCArIHVzZXJTdGFydDsKLSAgICAgICAgY29uc3Qg
Y2hhciogdXNlckVuZFB0ciA9IHVybCArIHVzZXJFbmQ7Ci0gICAgICAgIHdoaWxlIChzdHJQdHIg
PCB1c2VyRW5kUHRyKSB7Ci0gICAgICAgICAgICBjaGFyIGMgPSAqc3RyUHRyKys7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAgKnArKyA9IGM7Ci0g
ICAgICAgIH0KLSAgICAgICAgbV91c2VyRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAg
ICAgLy8gY29weSBpbiB0aGUgcGFzc3dvcmQKLSAgICAgICAgaWYgKHBhc3N3b3JkRW5kICE9IHBh
c3N3b3JkU3RhcnQpIHsKLSAgICAgICAgICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICBzdHJQ
dHIgPSB1cmwgKyBwYXNzd29yZFN0YXJ0OwotICAgICAgICAgICAgY29uc3QgY2hhciogcGFzc3dv
cmRFbmRQdHIgPSB1cmwgKyBwYXNzd29yZEVuZDsKLSAgICAgICAgICAgIHdoaWxlIChzdHJQdHIg
PCBwYXNzd29yZEVuZFB0cikgewotICAgICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoaXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAg
ICAgICpwKysgPSBjOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fcGFzc3dv
cmRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBJZiB3ZSBoYWQgYW55IHVz
ZXIgaW5mbywgYWRkICJAIgotICAgICAgICBpZiAocCAtIGJ1ZmZlci5kYXRhKCkgIT0gbV91c2Vy
U3RhcnQpCi0gICAgICAgICAgICAqcCsrID0gJ0AnOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhl
IGhvc3QsIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIGZpbGUgVVJMIHdpdGggYXV0aG9yaXR5PSJs
b2NhbGhvc3QiCi0gICAgICAgIGlmICghKGlzRmlsZSAmJiBob3N0SXNMb2NhbEhvc3QgJiYgIWhh
dmVOb25Ib3N0QXV0aG9yaXR5UGFydCkpIHsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIGhv
c3RTdGFydDsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGhvc3RFbmRQdHIgPSB1cmwgKyBob3N0
RW5kOwotICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hl
bWUoYnVmZmVyLmRhdGEoKSwgbV9zY2hlbWVFbmQpKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUg
KHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdG9B
U0NJSUxvd2VyKCpzdHJQdHIrKyk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3Ru
YW1lQ2hhcihjKSB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAg
ICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaXNIb3N0bmFtZUNoYXIoYykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9
PSAnOicpOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9ob3N0RW5kID0gcCAtIGJ1ZmZl
ci5kYXRhKCk7Ci0KLSAgICAgICAgLy8gQ29weSBpbiB0aGUgcG9ydCBpZiB0aGUgVVJMIGhhcyBv
bmUgKGFuZCBpdCdzIG5vdCBkZWZhdWx0KS4gQWxzbywgY29weSBpdCBpZiB0aGVyZSB3YXMgbm8g
aG9zdG5hbWUsIHNvIHRoYXQgdGhlcmUgaXMgc3RpbGwgc29tZXRoaW5nIGluIGF1dGhvcml0eSBj
b21wb25lbnQuCi0gICAgICAgIGlmIChob3N0RW5kICE9IHBvcnRTdGFydCkgewotICAgICAgICAg
ICAgY29uc3QgY2hhciogcG9ydFN0ciA9IHVybCArIHBvcnRTdGFydDsKLSAgICAgICAgICAgIHNp
emVfdCBwb3J0TGVuZ3RoID0gcG9ydEVuZCAtIHBvcnRTdGFydDsKLSAgICAgICAgICAgIGlmICgo
cG9ydExlbmd0aCAmJiAhaXNEZWZhdWx0UG9ydEZvclNjaGVtZShwb3J0U3RyLCBwb3J0TGVuZ3Ro
LCBidWZmZXIuZGF0YSgpLCBtX3NjaGVtZUVuZCkpCi0gICAgICAgICAgICAgICAgfHwgKGhvc3RT
dGFydCA9PSBob3N0RW5kICYmIGhvc3RFbmQgIT0gcG9ydFN0YXJ0KSkgewotICAgICAgICAgICAg
ICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydEVuZFB0ciA9
IHVybCArIHBvcnRFbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBvcnRTdHIgPCBwb3J0RW5k
UHRyKQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnBvcnRTdHIrKzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBtX3BvcnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoaXNGaWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVn
ZW5lcmF0ZUZpbGVQYXRoKTsKLSAgICAgICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICAgICAq
cCsrID0gJy8nOwotICAgICAgICB9Ci0gICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0g
bV9wYXNzd29yZEVuZCA9IG1faG9zdEVuZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotICAgIH0KLQotICAgIC8vIEZvciBjYW5vbmljYWxpemF0aW9uLCBlbnN1cmUgd2UgaGF2ZSBh
ICcvJyBmb3Igbm8gcGF0aC4KLSAgICAvLyBEbyB0aGlzIG9ubHkgZm9yIFVSTCB3aXRoIHByb3Rv
Y29sIGZpbGUsIGh0dHAgb3IgaHR0cHMuCi0gICAgaWYgKChtX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgfHwgaXNGaWxlKSAmJiBwYXRoRW5kID09IHBhdGhTdGFydCkKLSAgICAgICAgKnArKyA9ICcv
JzsKLQotICAgIC8vIGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmICgh
aGllcmFyY2hpY2FsKQotICAgICAgICBlc2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0
KHAsIHVybCArIHBhdGhTdGFydCwgcGF0aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSBpZiAo
IWhhc1NsYXNoRG90T3JEb3REb3QodXJsKSkKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFy
cyhwLCB1cmwgKyBwYXRoU3RhcnQsIHBhdGhFbmQgLSBwYXRoU3RhcnQpOwotICAgIGVsc2Ugewot
ICAgICAgICBDaGFyQnVmZmVyIHBhdGhCdWZmZXIocGF0aEVuZCAtIHBhdGhTdGFydCArIDEpOwot
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gY29weVBhdGhSZW1vdmluZ0RvdHMocGF0aEJ1ZmZlci5k
YXRhKCksIHVybCwgcGF0aFN0YXJ0LCBwYXRoRW5kKTsKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdC
YWRDaGFycyhwLCBwYXRoQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBtX3Bh
dGhFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIGFm
dGVyIHRoZSBsYXN0IHNsYXNoIGluIHRoZSBwYXRoLCBvcgotICAgIC8vIHRoZSBwb3NpdGlvbiBi
ZWZvcmUgdGhlIHBhdGggaWYgdGhlcmUgYXJlIG5vIHNsYXNoZXMgaW4gaXQuCi0gICAgaW50IGk7
Ci0gICAgZm9yIChpID0gbV9wYXRoRW5kOyBpID4gbV9wb3J0RW5kOyAtLWkpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcltpIC0gMV0gPT0gJy8nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IG1fcGF0aEFmdGVyTGFzdFNsYXNoID0gaTsKLQotICAgIC8vIGFkZCBxdWVyeSwgZXNjYXBpbmcg
YmFkIGNoYXJhY3RlcnMKLSAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHF1ZXJ5
U3RhcnQsIHF1ZXJ5RW5kIC0gcXVlcnlTdGFydCk7Ci0gICAgbV9xdWVyeUVuZCA9IHAgLSBidWZm
ZXIuZGF0YSgpOwotCi0gICAgLy8gYWRkIGZyYWdtZW50LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVy
cwotICAgIGlmIChmcmFnbWVudEVuZCAhPSBxdWVyeUVuZCkgewotICAgICAgICAqcCsrID0gJyMn
OwotICAgICAgICBlc2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIGZy
YWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCk7Ci0gICAgfQotICAgIG1f
ZnJhZ21lbnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIEFTU0VSVChwIC0gYnVmZmVy
LmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLSAgICBBU1NFUlQo
YnVmZmVyLnNpemUoKSA+IDApOwotCi0gICAgLy8gSWYgd2UgZGlkbid0IGVuZCB1cCBhY3R1YWxs
eSBjaGFuZ2luZyB0aGUgb3JpZ2luYWwgc3RyaW5nIGFuZAotICAgIC8vIGl0IHdhcyBhbHJlYWR5
IGluIGEgU3RyaW5nLCByZXVzZSBpdCB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLgotICAgIGlm
IChvcmlnaW5hbFN0cmluZyAmJiBlcXVhbChvcmlnaW5hbFN0cmluZy0+aW1wbCgpLCBidWZmZXIu
ZGF0YSgpLCBtX2ZyYWdtZW50RW5kKSkKLSAgICAgICAgbV9zdHJpbmcgPSAqb3JpZ2luYWxTdHJp
bmc7Ci0gICAgZWxzZQotICAgICAgICBtX3N0cmluZyA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBt
X2ZyYWdtZW50RW5kKTsKLQotICAgIG1faXNWYWxpZCA9IHRydWU7Ci19Ci0KLWJvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQot
ewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0
cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgaWYgKGEubV9zY2hlbWVFbmQgIT0g
Yi5tX3NjaGVtZUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGhvc3RTdGFy
dEEgPSBhLmhvc3RTdGFydCgpOwotICAgIGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVuZCgpIC0g
aG9zdFN0YXJ0QTsKLSAgICBpbnQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgaW50
IGhvc3RMZW5ndGhCID0gYi5ob3N0RW5kKCkgLSBiLmhvc3RTdGFydCgpOwotICAgIGlmIChob3N0
TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
Q2hlY2sgdGhlIHNjaGVtZQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsg
KytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0
U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCi17Ci0gICAg
Q1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKLQotICAgIENoYXJCdWZm
ZXIgYnVmZmVyKGFzVVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKLSAgICBjaGFyKiBwID0gYnVmZmVy
LmRhdGEoKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Ci0gICAgY29u
c3QgY2hhciogc3RyRW5kID0gc3RyICsgYXNVVEY4Lmxlbmd0aCgpOwotICAgIHdoaWxlIChzdHIg
PCBzdHJFbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwotICAgICAgICBp
ZiAoaXNCYWRDaGFyKGMpKQotICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIEFTU0VSVChw
IC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLQot
ICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQot
Ci0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2
ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0
IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLXN0YXRpYyB2b2lkIGFwcGVuZEVuY29kZWRI
b3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNpZ25lZCBz
dHJMZW4pCi17Ci0gICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1l
bmNvZGVkIG5hbWUuCi0gICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ug
d29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgotICAg
IGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKLQotICAgIGlmIChz
dHJMZW4gPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3Ry
LCBzdHJMZW4pKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgIFVDaGFyIGhvc3Ru
YW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5h
X0lETlRvQVNDSUkoc3RyLCBzdHJMZW4sIGhvc3RuYW1lQnVmZmVyLAotICAgICAgICBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCwgVUlETkFfQUxMT1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsKLSAgICBp
ZiAoZXJyb3IgPT0gVV9aRVJPX0VSUk9SKQotICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1l
QnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9p
ZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxlbiwg
VmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4mIG5hbWVSYW5nZXMpCi17Ci0gICAgLy8gSW4gYSBtYWls
dG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdp
dGggYSAnPicgb3IgJywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4KLSAgICAv
LyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNv
bmZ1c2UgdXMuCi0gICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBh
c3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCi0KLSAgICBu
YW1lUmFuZ2VzLmNsZWFyKCk7Ci0KLSAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKDEpIHsKLSAg
ICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAg
ICAgICAgaW50IGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVu
LCBwLCAiXCJAPyIpOwotICAgICAgICBpZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09IC0xKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1lT3JTdHJp
bmdTdGFydF07Ci0gICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwotCi0gICAg
ICAgIGlmIChjID09ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYyA9
PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAgICAg
ICAgIGludCBob3N0bmFtZVN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGludCBob3N0bmFtZUVuZCA9
IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiPiw/Iik7Ci0gICAgICAgICAgICBib29sIGRv
bmU7Ci0gICAgICAgICAgICBpZiAoaG9zdG5hbWVFbmQgPT0gLTEpIHsKLSAgICAgICAgICAgICAg
ICBob3N0bmFtZUVuZCA9IHN0ckxlbjsKLSAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5kOwotICAg
ICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
bmFtZVJhbmdlcy5hcHBlbmQobWFrZV9wYWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1lRW5kKSk7
Ci0KLSAgICAgICAgICAgIGlmIChkb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAg
ICAgIEFTU0VSVChjID09ICciJyk7Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAg
ICAgICAgIGludCBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RPZihzdHIs
IHN0ckxlbiwgcCwgIlwiXFwiKTsKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rl
ck9yU3RyaW5nRW5kID09IC0xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICBjID0gc3RyW2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Ci0gICAgICAg
ICAgICAgICAgcCA9IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZy
b20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAgICAg
ICAgICAgIGlmIChjID09ICciJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFT
U0VSVChjID09ICdcXCcpOwotICAgICAgICAgICAgICAgIGlmIChwID09IHN0ckxlbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgKytwOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBmaW5kSG9zdG5hbWVJbkhp
ZXJhcmNoaWNhbFVSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCkKLXsKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBo
aWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2Us
IHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLCBhbmQKLSAgICAvLyB0aGlzIHNob3Vs
ZCBiZSB0aGUgZmlyc3QgY29sb24gaW4gdGhlIHN0cmluZy4KLSAgICAvLyBJdCBlbmRzIHdpdGgg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVuZGluZyBj
aGFyYWN0ZXIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBw
YXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBpbnQgc2VwYXJhdG9yID0g
ZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIDAsICI6Iik7Ci0gICAgaWYgKHNlcGFyYXRvciA9PSAt
MSB8fCBzZXBhcmF0b3IgKyAyID49IHN0ckxlbiB8fAotICAgICAgICBzdHJbc2VwYXJhdG9yICsg
MV0gIT0gJy8nIHx8IHN0cltzZXBhcmF0b3IgKyAyXSAhPSAnLycpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8g
YXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgotICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIo
c3RyWzBdKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwg
c2VwYXJhdG9yOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ldKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTdGFydCBhZnRlciB0aGUg
c2VwYXJhdG9yLgotICAgIGludCBhdXRob3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7Ci0KLSAg
ICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLSAgICBpbnQgaG9zdG5hbWVFbmQgPSBz
dHJMZW47Ci0gICAgZm9yIChpbnQgaSA9IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVuOyArK2kp
IHsKLSAgICAgICAgVUNoYXIgYyA9IHN0cltpXTsKLSAgICAgICAgaWYgKGMgPT0gJzonIHx8IChp
c1BhdGhTZWdtZW50RW5kQ2hhcihjKSAmJiBjICE9IDApKSB7Ci0gICAgICAgICAgICBob3N0bmFt
ZUVuZCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KLSAgICBpbnQgdXNlcklu
Zm9UZXJtaW5hdG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0YXJ0LCAi
QCIpOwotICAgIGludCBob3N0bmFtZVN0YXJ0OwotICAgIGlmICh1c2VySW5mb1Rlcm1pbmF0b3Ig
PT0gLTEgfHwgdXNlckluZm9UZXJtaW5hdG9yID4gaG9zdG5hbWVFbmQpCi0gICAgICAgIGhvc3Ru
YW1lU3RhcnQgPSBhdXRob3JpdHlTdGFydDsKLSAgICBlbHNlCi0gICAgICAgIGhvc3RuYW1lU3Rh
cnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IgKyAxOwotCi0gICAgc3RhcnRPZmZzZXQgPSBob3N0bmFt
ZVN0YXJ0OwotICAgIGVuZE9mZnNldCA9IGhvc3RuYW1lRW5kOwotICAgIHJldHVybiB0cnVlOwot
fQotCi0vLyBDb252ZXJ0cyBhbGwgaG9zdG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBpbnB1dCB0
byBwdW55Y29kZSwgcHJlc2VydmluZyB0aGUKLS8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNoYW5nZWQu
IFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUgbnVsbC10ZXJtaW5hdGVkLgotc3RhdGljIHZvaWQgZW5j
b2RlSG9zdG5hbWVzKGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0KQotewot
ICAgIG91dHB1dC5jbGVhcigpOwotCi0gICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFpbHRvIikp
IHsKLSAgICAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7Ci0gICAg
ICAgIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3Ro
KCksIGhvc3RuYW1lUmFuZ2VzKTsKLSAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdlcy5zaXpl
KCk7Ci0gICAgICAgIGludCBwID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5hbWVSYW5n
ZXNbaV07Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBy
LmZpcnN0IC0gcCk7Ci0gICAgICAgICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0cHV0LCAm
c3RyLmNoYXJhY3RlcnMoKVtyLmZpcnN0XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKLSAgICAgICAg
ICAgIHAgPSByLnNlY29uZDsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGlzIHdpbGwgY29weSBl
aXRoZXIgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCi0gICAgICAg
IC8vIHdob2xlIHRoaW5nIGlmIHRoZXJlIGlzIG5vIGhvc3RuYW1lLgotICAgICAgICBvdXRwdXQu
YXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBpbnQgaG9zdFN0YXJ0LCBob3N0RW5kOwotICAgICAgICBpZiAoZmluZEhv
c3RuYW1lSW5IaWVyYXJjaGljYWxVUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBo
b3N0U3RhcnQsIGhvc3RFbmQpKSB7Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFy
YWN0ZXJzKCksIGhvc3RTdGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KLSAgICAgICAgICAgIGFw
cGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RTdGFydF0s
IGhvc3RFbmQgLSBob3N0U3RhcnQpOwotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgmc3RyLmNo
YXJhY3RlcnMoKVtob3N0RW5kXSwgc3RyLmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFmdGVyIGhv
c3RuYW1lLgotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm8gaG9zdG5hbWUgdG8g
ZW5jb2RlLCByZXR1cm4gdGhlIGlucHV0LgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHIu
Y2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbmNvZGluZywgQ2hhckJ1ZmZlciYgb3V0cHV0KQotewotICAgIFVDaGFyQnVm
ZmVyIHM7Ci0gICAgZW5jb2RlSG9zdG5hbWVzKHJlbCwgcyk7Ci0KLSAgICBUZXh0RW5jb2Rpbmcg
cGF0aEVuY29kaW5nKFVURjhFbmNvZGluZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5jb2RlZCBh
cyBVVEYtODsgb3RoZXIgcGFydHMgbWF5IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgotCi0gICAgaW50
IHBhdGhFbmQgPSAtMTsKLSAgICBpZiAoZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYmIGVuY29k
aW5nLmlzVmFsaWQoKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJvdG9jb2xJ
cyhyZWwsICJkYXRhIikgJiYgIXByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKLSAgICAgICAg
Ly8gRmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBwYXRoRW5k
IGF0IC0xIG90aGVyd2lzZS4KLSAgICAgICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMuZGF0YSgp
LCBzLnNpemUoKSwgMCwgIiM/Iik7Ci0gICAgfQotCi0gICAgaWYgKHBhdGhFbmQgPT0gLTEpIHsK
LSAgICAgICAgQ1N0cmluZyBkZWNvZGVkID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwg
cy5zaXplKCksIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIG91
dHB1dC5yZXNpemUoZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweShvdXRwdXQuZGF0
YSgpLCBkZWNvZGVkLmRhdGEoKSwgZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgQ1N0cmluZyBwYXRoRGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5kYXRhKCks
IHBhdGhFbmQsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIC8v
IFVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgaW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkgY29udmVy
dGluZwotICAgICAgICAvLyB0aGVtIHRvIFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcgbm9uLWFs
cGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgotICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2RlZCA9IGVu
Y29kaW5nLmVuY29kZShzLmRhdGEoKSArIHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVuZCwgVVJM
RW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLQotICAgICAgICBvdXRwdXQucmVzaXpl
KHBhdGhEZWNvZGVkLmxlbmd0aCgpICsgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKLSAgICAgICAg
bWVtY3B5KG91dHB1dC5kYXRhKCksIHBhdGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29kZWQubGVu
Z3RoKCkpOwotICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVkLmxlbmd0
aCgpLCBvdGhlckRlY29kZWQuZGF0YSgpLCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgIH0K
LSAgICBvdXRwdXQuYXBwZW5kKCdcMCcpOyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0cHV0Lgot
fQotCi1zdGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmIHN0
cmluZykKLXsKLSAgICBzaXplX3QgcXVlc3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycpOwotICAg
IHNpemVfdCBoYXNoUG9zID0gc3RyaW5nLmZpbmQoJyMnKTsKLSAgICB1bnNpZ25lZCBwYXRoRW5k
OwotCi0gICAgaWYgKGhhc2hQb3MgIT0gbm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09IG5vdEZv
dW5kIHx8IHF1ZXN0aW9uUG9zID4gaGFzaFBvcykpCi0gICAgICAgIHBhdGhFbmQgPSBoYXNoUG9z
OwotICAgIGVsc2UgaWYgKHF1ZXN0aW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAgICBwYXRoRW5k
ID0gcXVlc3Rpb25Qb3M7Ci0gICAgZWxzZQotICAgICAgICBwYXRoRW5kID0gc3RyaW5nLmxlbmd0
aCgpOwotCi0gICAgcmV0dXJuIHN0cmluZy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xcJywnLycp
ICsgc3RyaW5nLnN1YnN0cmluZyhwYXRoRW5kKTsKLX0KLQotYm9vbCBLVVJMOjppc0hpZXJhcmNo
aWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBBU1NFUlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0gICAgcmV0dXJu
IG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwotfQotCi12b2lkIEtVUkw6OmNvcHlU
b0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1F
OiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBp
biB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2gg
aXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6
ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0
YSgpKTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsK
LSAgICBmb3IgKGludCBpID0gMDsgOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSkK
LSAgICAgICAgICAgIHJldHVybiB1cmxbaV0gPT0gJzonOwotICAgICAgICBpZiAoIWlzTGV0dGVy
TWF0Y2hJZ25vcmluZ0Nhc2UodXJsW2ldLCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotfQotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHByb3RvY29sKQotewotICAgIC8vIFJGQzM5ODY6IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyAi
KyIgLyAiLSIgLyAiLiIgKQotICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9j
b2wubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIocHJvdG9jb2xbaV0pKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmbmRl
ZiBOREVCVUcKLXZvaWQgS1VSTDo6cHJpbnQoKSBjb25zdAotewotICAgIHByaW50ZigiJXNcbiIs
IG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpzdHJp
cHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIEtVUkwgcmVmZXJyZXIoKnRoaXMp
OwotICAgIHJlZmVycmVyLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3Mo
U3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAg
IHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsKLX0KLQotYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgp
IGNvbnN0Ci17Ci0gICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVh
IHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGlu
ZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxv
ZwotICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBl
dmVuIHdpdGhvdXQgYSBkcm9wLgotICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJv
dG9jb2xJcygiZmlsZSIpOwotfQotCi1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKQotewotICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsK
LX0KLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
S1VSTCwgc3RhdGljQmxhbmtVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpKTsK
LSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgS1VSTDo6aXNCbGFua1VSTCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Ci19Ci0KLWJvb2wgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCi17Ci0gICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xk
aW5nSGFzaD4gRGVmYXVsdFBvcnRzTWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVs
dFBvcnRzTWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKLSAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1w
dHkoKSkgewotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBk
ZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQo
ImZ0cCIsIDIxKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7Ci0gICAg
fQotICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwotfQotCi1i
b29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBw
b3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEg
cG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3Qg
bWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAv
LyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcu
aHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgYmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAg
ICA3LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAg
Ly8gc3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0
c3RhdAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAg
ICAgICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAg
ICAgICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwg
ICAvLyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQot
ICAgICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAg
ICA3NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcs
ICAgLy8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8g
aG9zdHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdw
cGl0bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgot
ICAgICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAx
MTMsICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVj
cC1wYXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAg
ICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0g
ICAgICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODks
ICAvLyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHBy
aW50IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVs
bAotICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAg
ICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIs
ICAvLyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTU2LCAgLy8gcmVt
b3RlZnMKLSAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wKLSAgICAgICAgNTg3LCAgLy8gRVNNVFAK
LSAgICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KLSAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wK
LSAgICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKLSAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKLSAg
ICAgICAgMjA0OSwgLy8gTkZTCi0gICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29y
ZFNlcnZlciBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDQwNDUsIC8vIGxvY2tkCi0gICAgICAg
IDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0g
ICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2
NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBB
bHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIs
IC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLSAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCogY29uc3QgYmxvY2tlZFBvcnRMaXN0RW5kID0gYmxvY2tlZFBv
cnRMaXN0ICsgV1RGX0FSUkFZX0xFTkdUSChibG9ja2VkUG9ydExpc3QpOwotCi0jaWZuZGVmIE5E
RUJVRwotICAgIC8vIFRoZSBwb3J0IGxpc3QgbXVzdCBiZSBzb3J0ZWQgZm9yIGJpbmFyeV9zZWFy
Y2ggdG8gd29yay4KLSAgICBzdGF0aWMgYm9vbCBjaGVja2VkUG9ydExpc3QgPSBmYWxzZTsKLSAg
ICBpZiAoIWNoZWNrZWRQb3J0TGlzdCkgewotICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNo
b3J0KiBwID0gYmxvY2tlZFBvcnRMaXN0OyBwICE9IGJsb2NrZWRQb3J0TGlzdEVuZCAtIDE7ICsr
cCkKLSAgICAgICAgICAgIEFTU0VSVCgqcCA8ICoocCArIDEpKTsKLSAgICAgICAgY2hlY2tlZFBv
cnRMaXN0ID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5v
dCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIGlmICghYmluYXJ5X3Nl
YXJjaChibG9ja2VkUG9ydExpc3QsIGJsb2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJM
cywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAm
JiB1cmwucHJvdG9jb2xJcygiZnRwIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJl
ciBpcyBpZ25vcmVkLgotICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKHVybC5wcm90
b2NvbElzKCJsb2NhbCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKLXsKLSAgICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJkYXRhIikpOwotICAgIHNpemVf
dCBpbmRleCA9IHVybC5maW5kKCc7Jyk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAg
ICAgICBpbmRleCA9IHVybC5maW5kKCcsJyk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7
Ci0gICAgICAgIGlmIChpbmRleCA+IDUpCi0gICAgICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmlu
Zyg1LCBpbmRleCAtIDUpLmxvd2VyKCk7Ci0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7IC8v
IERhdGEgVVJMcyB3aXRoIG5vIE1JTUUgdHlwZSBhcmUgY29uc2lkZXJlZCB0ZXh0L3BsYWluLgot
ICAgIH0KLSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3Qg
S1VSTCYgdXJsKQotewotICAgIFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwucGF0aCgpKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGgu
c3Vic3RyaW5nKGRlY29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKLQotICAgIC8vIFdl
IGRvbid0IHVzZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNl
IGl0IHJldHVybnMgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAg
cmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7Ci19Ci0KLWJvb2wgS1VSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Ci19
Ci0KLVN0cmluZyBLVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQg
bGVuZ3RoKSBjb25zdAotewotICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiBzdHJpbmcoKTsKLQotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0
aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBk
YTllNjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEtVUkxfaAotI2RlZmluZSBLVVJM
X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJl
ZjsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1VSTDsKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oUVQpCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFVcmw7Ci1R
VF9FTkRfTkFNRVNQQUNFCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBU
ZXh0RW5jb2Rpbmc7Ci1zdHJ1Y3QgS1VSTEhhc2g7Ci0KLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFn
IHsgUGFyc2VkVVJMU3RyaW5nIH07Ci0KLWNsYXNzIEtVUkwgewotcHVibGljOgotICAgIC8vIEdl
bmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIEtVUkwoKSB7
IGludmFsaWRhdGUoKTsgfQotCi0gICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRlIFVS
TCBzdHJpbmcuIFRoZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgS1VSTDo6c3Ry
aW5nKCkgY2FsbGVkIG9uIGEgdmFsaWQKLSAgICAvLyBLVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJu
aWJsZSBmcm9tIHN1Y2guCi0gICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVh
dGVkbHkgcGFyc2luZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhl
IHBvc3NpYmxlIHNsb3ctZG93bnMuCi0gICAgS1VSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0
IFN0cmluZyYpOwotICAgIGV4cGxpY2l0IEtVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVS
TCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFRleHRF
bmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBV
UkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRp
dmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBG
SVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4g
aW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0
byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJl
YXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBLVVJMKGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0KLSAgICBTdHJpbmcg
c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFi
b3ZlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAg
IC8vIGJhc2Ugb2YgbnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3Vs
dCBhcyB0aGUKLSAgICAvLyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCi0KLSAgICAvLyBN
YWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIEtVUkwg
b24gYW5vdGhlcgotICAgIC8vIHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0lt
cGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29u
IHRvIGV2ZXIgcHJlZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIEtV
UkwgY29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAg
ICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0g
ICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwo
KTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFy
Y2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25z
dCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBTdHJp
bmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQp
IGNvbnN0OwotCi0gICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3Qo
KSBjb25zdDsKLSAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQ
b3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygp
IGNvbnN0OwotICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29t
cG9uZW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZy
YWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJp
bmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KLSAgICAvLyB0
ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNl
LgotICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90
b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUo
KSBjb25zdDsKLSAgICBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLQotICAgIGJvb2wgc2V0UHJv
dG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwot
Ci0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0
KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgot
ICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVz
ZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0g
ICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0
aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgo
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVz
dGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3Uu
IFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBp
biB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBx
dWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgZnJpZW5kIGJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwot
Ci0gICAgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwm
LCBjb25zdCBLVVJMJik7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLSAgICB1
bnNpZ25lZCBob3N0RW5kKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25z
dDsKLSAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEFmdGVy
TGFzdFNsYXNoKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBLVVJMKENGVVJMUmVmKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBLVVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwq
KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5n
KigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFFU
KQotICAgIEtVUkwoY29uc3QgUVVybCYpOwotICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKLSNl
bmRpZgotCi0gICAgY29uc3QgS1VSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0K
LSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBi
b29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3Ry
aW5nJiwgY29uc3QgY2hhciopOwotICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0gICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9y
PGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhlIGdpdmVuIFVS
TC4gVGhlIG9yaWdpbmFsU3RyaW5nIHBhcmFtZXRlciBhbGxvd3MgZm9yIGFuCi0gICAgLy8gb3B0
aW1pemF0aW9uOiBXaGVuIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0
cmluZywKLSAgICAvLyBpdCB3aWxsIHVzZSB0aGUgcGFzc2VkLWluIHN0cmluZyBpbnN0ZWFkIG9m
IGFsbG9jYXRpbmcgYSBuZXcgb25lLgotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJp
bmcgPSAwKTsKLQotICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgU3RyaW5nIG1fc3Ry
aW5nOwotICAgIGJvb2wgbV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJc0luSFRU
UEZhbWlseSA6IDE7Ci0KLSAgICBpbnQgbV9zY2hlbWVFbmQ7Ci0gICAgaW50IG1fdXNlclN0YXJ0
OwotICAgIGludCBtX3VzZXJFbmQ7Ci0gICAgaW50IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaW50IG1f
aG9zdEVuZDsKLSAgICBpbnQgbV9wb3J0RW5kOwotICAgIGludCBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICBpbnQgbV9wYXRoRW5kOwotICAgIGludCBtX3F1ZXJ5RW5kOwotICAgIGludCBtX2Zy
YWdtZW50RW5kOwotfTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
Jik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0b3IhPShj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJM
Jik7Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYpOwotYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmKTsKLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKLQotLy8gRnVuY3Rp
b25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCi0vLyBUaGVzZSBhcmUgb3BlcmF0
aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFs
c28gZGlmZmVyZW50IGZyb20gdGhlIEtVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCBy
ZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhp
cyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBh
cmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KLQotYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1ib29sIHBy
b3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotYm9vbCBpc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCk7Ci1ib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRo
YXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLWJvb2wgaXNWYWxp
ZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChj
b25zdCBTdHJpbmcmIHVybCk7Ci1TdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNvbnN0IEtVUkwmKTsK
LQotLy8gVW5lc2NhcGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgVVJMIGVzY2FwaW5nIHJ1bGVz
LCBnaXZlbiBhbiBvcHRpb25hbAotLy8gZW5jb2RpbmcgKGRlZmF1bHRpbmcgdG8gVVRGLTggb3Ro
ZXJ3aXNlKS4gREFOR0VSOiBJZiB0aGUgVVJMIGhhcyAiJTAwIgotLy8gaW4gaXQsIHRoZSByZXN1
bHRpbmcgc3RyaW5nIHdpbGwgaGF2ZSBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMhCi1TdHJpbmcg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQot
U3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci0KLS8v
IElubGluZXMuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3Qg
S1VSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsK
LSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0
cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0
IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17
Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5z
dHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBm
dW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2
ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5l
IGJvb2wgS1VSTDo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxs
KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3N0cmluZy5pc0VtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzVmFsaWQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6Omhh
c1BhdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOwotfQot
Ci1pbmxpbmUgYm9vbCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ob3N0
RW5kIDwgbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Owot
fQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFz
c3dvcmRFbmQgKyAxOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdEVuZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1faG9zdEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6OnBh
dGhTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcG9ydEVuZDsKLX0KLQotaW5saW5lIHVu
c2lnbmVkIEtVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBLVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIC8vIEtVUkxIYXNoIGlzIHRoZSBkZWZhdWx0
IGhhc2ggZm9yIFN0cmluZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpLVVJMPiB7
Ci0gICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6S1VSTEhhc2ggSGFzaDsKLSAgICB9OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEtVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxI
YXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZGQxM2IuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaAorKysgL2Rldi9udWxsCkBAIC0x
LDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBLVVJMSGFzaF9oCi0jZGVmaW5lIEtVUkxIYXNoX2gKLQotI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHN0cnVjdCBLVVJM
SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtVUkwmIGtleSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtVUkwmIGEsIGNv
bnN0IEtVUkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjpl
cXVhbChhLnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4gOiBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4geyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2Vu
ZGlmIC8vIEtVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xp
bmtIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAppbmRleCAy
NTczZjYzLi4yYjJlZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBAIC0y
Miw3ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
QEAgLTIyNiwxMyArMjI2LDEzIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hh
ciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0
IEtVUkwmIGJhc2UsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgVmVjdG9yPENoYXJhY3RlclR5cGUsIDUxMj4mIGJ1ZmZlcikKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIHZvaWQgdmlzaXRlZFVSTElubGluZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPENoYXJhY3RlclR5
cGUsIDUxMj4mIGJ1ZmZlcikKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGhpcyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVVUkwuIEZhc3RlciB3aXRoIGxl
c3MgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBv
ZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdoYXQgS1VSTCBkb2VzLgorICAg
IC8vIEZJWE1FOiBJdCdzIG1pc3NpbmcgYSBsb3Qgb2Ygd2hhdCBjb21wbGV0ZVVSTCBkb2VzIGFu
ZCBhIGxvdCBvZiB3aGF0IFVSTCBkb2VzLgogICAgIC8vIEZvciBleGFtcGxlLCBpdCBkb2VzIG5v
dCBoYW5kbGUgaW50ZXJuYXRpb25hbCBkb21haW4gbmFtZXMgcHJvcGVybHkuCiAKICAgICAvLyBG
SVhNRTogSXQgaXMgd3JvbmcgdGhhdCB3ZSBkbyBub3QgZG8gZnVydGhlciBwcm9jZXNzaW5nIG9u
IHN0cmluZ3MgdGhhdCBoYXZlICI6Ly8iIGluIHRoZW06CkBAIC0yODQsMTIgKzI4NCwxMiBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29uc3QgS1VSTCYgYmFz
ZSwgY29uc3QgQ2hhcmFjdGVyVHlwZQogICAgIHJldHVybjsKIH0KIAotdm9pZCB2aXNpdGVkVVJM
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0
b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlcikKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gdmlzaXRlZFVSTElubGluZShiYXNlLCBhdHRyaWJ1dGVVUkwu
Y2hhcmFjdGVycygpLCBhdHRyaWJ1dGVVUkwubGVuZ3RoKCksIGJ1ZmZlcik7CiB9CiAKLUxpbmtI
YXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkKK0xpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKQogewogICAgIGlmIChhdHRyaWJ1dGVV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFz
aC5oCmluZGV4IDc4ZWFhM2EuLjI5YmNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xpbmtIYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2gu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTYxLDEyICs2
MSwxMiBAQCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIC8vIGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3Ry
aW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2aXNpdGVkCiAvLyBsaW5rIGNvbG9yaW5nLiBJdCB3
aWxsIHJldHVybiB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAwIGlmIGF0dHJpYnV0ZVVSTCBkb2VzIG5v
dAogLy8gbG9vayBsaWtlIGEgcmVsYXRpdmUgVVJMLgotTGlua0hhc2ggdmlzaXRlZExpbmtIYXNo
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKK0xp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKTsKIAogLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlhbGx5IHJlbGF0aXZl
IFVSTCAiYXR0cmlidXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KIC8vIGJhc2UgVVJMLCBh
bmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2
aXNpdGVkLgogLy8gSXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yIGluIGNhc2Ugb2YgZXJy
b3JzLgotdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKK3ZvaWQgdmlzaXRlZFVSTChj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8
VUNoYXIsIDUxMj4mKTsKIAogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdlMjc3Y2UuLjg5MjExZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKIH07CiAKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMIHsKLSAg
ICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgU3RyaW5nIHVzZXJWaXNpYmxlRm9ybTsKQEAg
LTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
ID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYpID0gMDsKIH07CkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXSU4pCi0gICAgdm9pZCB3
cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7IC8vIEZJ
WE1FOiBMYXllcmluZyB2aW9sYXRpb24uCisgICAgdm9pZCB3cml0ZUltYWdlKE5vZGUqLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlv
bi4KICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZSwgRnJhbWUqLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPSBE
ZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSk7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAj
ZW5kaWYKIApAQCAtMjEwLDkgKzIxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgQ09NUHRyPElEYXRhT2JqZWN0PiBkYXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
T2JqZWN0OyB9CiAgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QqKTsK
LSAgICB2b2lkIHdyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiB3cml0YWJsZURh
dGFPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3dyaXRhYmxlRGF0YU9iamVjdDsgfQotICAgIHZv
aWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiwgY29uc3QgS1VSTCYpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChF
bGVtZW50KiwgY29uc3QgVVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5k
aWYKIAogcHJpdmF0ZToKQEAgLTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
aW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKICAgICB2b2lkIHdyaXRlUmFuZ2VUb0RhdGFPYmpl
Y3QoUmFuZ2UqLCBGcmFtZSopOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgotICAgIHZv
aWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCB3cml0ZVBsYWluVGV4dFRvRGF0YU9iamVjdChjb25zdCBTdHJpbmcmLCBTbWFydFJl
cGxhY2VPcHRpb24pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKaW5kZXggODE1YzNmOS4uYmZmMTZjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
ICAgIAogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsK
ICAgICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIAogICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggMjM2MjU1My4uZGQ2ODY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQzLDcg
KzQzLDcgQEAgT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbG9yOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgUGxhdGZvcm1Q
YXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIGxvbmcg
Y2hhbmdlQ291bnQoKSBjb25zdDsKICAgICBDb2xvciBjb2xvcigpOwotICAgIEtVUkwgdXJsKCk7
CisgICAgVVJMIHVybCgpOwogCiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9h
cmQsIGFuZCByZXR1cm4gbmV3IGNoYW5nZSBjb3VudC4KICAgICBsb25nIGFkZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TU0xLZXlHZW5lcmF0b3IuaAppbmRleCAwNjUxNTI2Li5kZjY4YmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAg
IC8vIFJldHVybnMgc3RyaW5ncyByZXByZXNlbnRpbmcga2V5IHNpemVzIHRoYXQgbWF5IGJlIHVz
ZWQKICAgICAvLyBmb3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmluZyBpcyBkaXNw
bGF5ZWQgYXMgdGhlIGRlZmF1bHQKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgPGtleWdlbj4gdGFnIGluIGZvcm0g
ZWxlbWVudHMuCiAgICAgLy8gUmV0dXJucyBhIHNpZ25lZCBjb3B5IG9mIHRoZSBjb21iaW5lZCBj
aGFsbGVuZ2Ugc3RyaW5nIGFuZCBwdWJsaWMKICAgICAvLyBrZXkgKGZyb20gYSBuZXdseSBnZW5l
cmF0ZWQga2V5IHBhaXIpLgotICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgS1VSTCYpOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgVVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCmluZGV4IDQ2OWY5ZGIuLjkyZDRm
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRl
Z3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgK
QEAgLTMwLDExICszMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgdWludDY0
X3QgTGlua0hhc2g7CiBjbGFzcyBQYWdlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xh
c3MgVmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzTGlu
a1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNp
dGVkKFBhZ2UqLCBMaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhQ
YWdlKiwgTGlua0hhc2gpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKaW5kZXggYzMwOTY0OS4uMjM4MmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBB
c3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNv
bnN0IFN0cmluZyYgc3RvcmEKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290
VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGlu
dCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0oY29uc3Qg
VVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBj
cmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6
b3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VD
bGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHNpemUsIGNyZWF0ZSwg
bmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCks
IHBsYXllcklkKTsKIH0KQEAgLTc4LDY3ICs3OCw2NyBAQCBBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojp+QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSgpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJM
JiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5
c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJM
VG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpj
b3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0
ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25Q
YXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9p
ZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0
YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEo
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0
ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRm
b3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNs
dXNpdmUsIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsK
IH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29u
c3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhj
bHVzaXZlLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7
CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRo
KHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7
CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVh
ZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFk
RGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVj
dG9yeShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgp
LCBmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotU3RyaW5nIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgS1VSTCYg
dXJsKQorU3RyaW5nIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1Bh
dGgoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBTdHJp
bmcgZnVsbFBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDhmMzZlZDIuLmY0
Y2ZjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ4LDI0ICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShwbGF0Zm9ybUZp
bGVTeXN0ZW0pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShjb25z
dCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBpbnQgcGxheWVySWQsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25z
dCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxl
U3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxheWVySWQsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+QXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeSgpOwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IEtVUkwm
IHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBLVVJM
JiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRh
dGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBh
dGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0
aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVE
aXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rv
cnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kiwg
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3Qg
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcm90
ZWN0ZWQ6CiAgICAgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAgIHN0
YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJik7CisgICAgc3RhdGlj
IFN0cmluZyBmaWxlU3lzdGVtVVJMVG9QYXRoKGNvbnN0IFVSTCYpOwogCiAgICAgT3duUHRyPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBtX3BsYXRmb3JtRmlsZVN5c3RlbTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKaW5kZXggOTkxMGE2
OC4uZWJjNzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApA
QCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
ci5oIgogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUg
IlByb3RlY3Rpb25TcGFjZS5oIgogCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHR5cGVkZWYgSGFzaE1hcDxQYWdlQ2xpZW50QmxhY2tCZXJyeSosIGJvb2w+IFBhZ2VWaXNp
YmlsaXR5TWFwOwogCiBzdHJ1Y3QgQ2hhbGxlbmdlSW5mbyB7Ci0gICAgQ2hhbGxlbmdlSW5mbyhj
b25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAg
ICBDaGFsbGVuZ2VJbmZvKGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRC
bGFja0JlcnJ5Kik7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFByb3RlY3Rp
b25TcGFjZSBzcGFjZTsKICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CiAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDbGllbnQqIGF1dGhDbGllbnQ7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVj
dCBDaGFsbGVuZ2VJbmZvIHsKICAgICBib29sIGJsb2NrZWQ7CiB9OwogCi1DaGFsbGVuZ2VJbmZv
OjpDaGFsbGVuZ2VJbmZvKGNvbnN0IEtVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
YVNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKK0NoYWxsZW5nZUluZm86OkNo
YWxsZW5nZUluZm8oY29uc3QgVVJMJiBhVXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGFTcGFj
ZSwgY29uc3QgQ3JlZGVudGlhbCYgYUNyZWRlbnRpYWwsCiAgICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQqIGFuQXV0aENsaWVudCwgUGFnZUNsaWVudEJsYWNrQmVycnkqIGFQYWdlQ2xp
ZW50KQogICAgIDogdXJsKGFVcmwpCiAgICAgLCBzcGFjZShhU3BhY2UpCkBAIC0xNTMsNyArMTUz
LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VWaXNpYmlsaXR5
Q2hhbmdlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSoKICAgICBkLT5yZXN1bWVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjbGllbnQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlcjo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6
OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHNwYWNlLAogICAgIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBhdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSog
cGFnZUNsaWVudCkKIHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChhdXRoQ2xpZW50KTsKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6Y2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpbwogICAgICAgICBkLT5zdGFydEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5leHQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlTWFuYWdlcjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFn
ZXI6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlLAogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBkLT5tX2FjdGl2ZUNoYWxsZW5nZSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaAppbmRleCAzYWZjOGU1Li44
NGQ3OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKQEAgLTI4LDcg
KzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXJQcml2YXRlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZXN1bHQgewpAQCAtMzgsNyArMzgsNyBAQCBlbnVtIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUmVzdWx0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQgewogcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VS
ZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKSA9IDA7CiB9OwogCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIgOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlRocmVhZFVuc2FmZVNpbmdsZXRvbjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI+IHsK
QEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZURlbGV0ZWQoUGFnZUNsaWVu
dEJsYWNrQmVycnkqKTsKICAgICB2b2lkIHBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSosIGJvb2wgdmlzaWJsZSk7CiAKLSAgICB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50
aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJy
eSopOworICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKICAgICB2b2lkIGNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Kik7Ci0gICAg
dm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7
CisgICAgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmKTsKIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCmluZGV4IDE3MjI2NTUuLjllYmY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTI0LDcgKzEyNCw3
IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVNjaGVtZShjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogICAgIHJldHVybiBwcm90b2NvbCA9PSAiZmlsZSIgfHwgcHJvdG9jb2wgPT0gImxvY2FsIjsK
IH0KIAotdm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyIGZpbHRlcikKK3ZvaWQgQ29va2llTWFuYWdl
cjo6c2V0Q29va2llcyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2ll
RmlsdGVyIGZpbHRlcikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3lu
Yy1lZCBhdCB0aGlzIHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRX
aXRoRGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgQ29va2llRmlsdGUKICAgICB9CiB9CiAKLXZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29v
a2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29r
aWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29va2llRmlsdGVyIGZpbHRl
cikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlz
IHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2Ug
JiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tp
ZXMsIEMKICAgICB9CiB9CiAKLVN0cmluZyBDb29raWVNYW5hZ2VyOjpnZXRDb29raWUoY29uc3Qg
S1VSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAorU3RyaW5nIENvb2tpZU1hbmFn
ZXI6OmdldENvb2tpZShjb25zdCBVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QK
IHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlzIHBv
aW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYg
IW1fcHJpdmF0ZU1vZGUpCkBAIC0yMjMsNyArMjIzLDcgQEAgU3RyaW5nIENvb2tpZU1hbmFnZXI6
OmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2llcygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+ICZzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2ll
RmlsdGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyhW
ZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKIHsKICAgICAvLyBGb3JjZSBh
IHN5bmMgbG9hZCBvZiB0aGUgZGF0YWJhc2UKICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNl
ICYmICFtX3ByaXZhdGVNb2RlKQpAQCAtNTg5LDEzICs1ODksMTMgQEAgQ29va2llTWFwKiBDb29r
aWVNYW5hZ2VyOjpmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwg
Y29uc3QgUGEKICAgICByZXR1cm4gY3VyTWFwOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnJl
bW92ZUNvb2tpZVdpdGhOYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBDb29raWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIC8vIERpc3BhdGNoIHRoZSBt
ZXNzYWdlIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGNvb2tpZXMgYXJlIG5vdCBsb2FkZWQgaW4gbWVt
b3J5IHlldC4KICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2Rl
KSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6KkZ1bmN0
aW9uVHlwZSkoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgICAgICB0eXBlZGVmIHZv
aWQgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OipGdW5jdGlvblR5cGUpKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpOwogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBlLCBDb29raWVN
YW5hZ2VyLCBjb25zdCBLVVJMLCBjb25zdCBTdHJpbmc+KAorICAgICAgICAgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlwZSwgQ29va2ll
TWFuYWdlciwgY29uc3QgVVJMLCBjb25zdCBTdHJpbmc+KAogICAgICAgICAgICAgICAgICZDb29r
aWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZSwgdGhpcywgdXJsLCBjb29raWVOYW1lKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCmluZGV4IDBkNjkwZmMuLmRhZjAxYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5o
CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogZW51bSBCYWNr
aW5nU3RvcmVSZW1vdmFsUG9saWN5IHsKICAgICBSZW1vdmVGcm9tQmFja2luZ1N0b3JlLApAQCAt
NzAsMTEgKzcwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGNhbkxvY2FsQWNjZXNzQWxsQ29va2ll
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEFsbENvb2tpZXM7IH0KICAgICB2b2lkIHNl
dENhbkxvY2FsQWNjZXNzQWxsQ29va2llcyhib29sIGVuYWJsZWQpIHsgbV9zaG91bGREdW1wQWxs
Q29va2llcyA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7
Ci0gICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llcywgQ29va2llRmlsdGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
b29raWVzLCBDb29raWVGaWx0ZXIpOwogCiAgICAgdm9pZCByZW1vdmVBbGxDb29raWVzKEJhY2tp
bmdTdG9yZVJlbW92YWxQb2xpY3kpOwotICAgIHZvaWQgcmVtb3ZlQ29va2llV2l0aE5hbWUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCByZW1vdmVDb29r
aWVXaXRoTmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAg
dW5zaWduZWQgc2hvcnQgY29va2llc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQog
CkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZU1vZGUoYm9v
bCk7CiAKICAgICBTdHJpbmcgZ2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCk7Ci0gICAg
U3RyaW5nIGdldENvb2tpZShjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIpIGNv
bnN0OworICAgIFN0cmluZyBnZXRDb29raWUoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVG
aWx0ZXIpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBhbGwgY29va2llcyB0aGF0IGFyZSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBVUkwgYXMgcmF3IGNvb2tpZXMuCi0gICAgdm9pZCBn
ZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2ll
cywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29v
a2llcykgY29uc3Q7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+JiBzdGFja09mQ29va2llcywgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVG
aWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgQ29va2llTWFuYWdlciYgY29va2llTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCmluZGV4IGVhOTBjYTguLjE3
MDBmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZVBhcnNlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTGln
aHR3ZWlnaHRTcGFjZShVQ2hhciBjKQogICAgIHJldHVybiAoYyA9PSAnICcgfHwgYyA9PSAnXHQn
KTsKIH0KIAotQ29va2llUGFyc2VyOjpDb29raWVQYXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENv
b2tpZVVSTCkKK0Nvb2tpZVBhcnNlcjo6Q29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENv
b2tpZVVSTCkKICAgICA6IG1fZGVmYXVsdENvb2tpZVVSTChkZWZhdWx0Q29va2llVVJMKQogewog
ICAgIG1fZGVmYXVsdENvb2tpZUhvc3QgPSBkZWZhdWx0Q29va2llVVJMLmhvc3QoKTsKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gQ29va2llUGFyc2VyOjpwYXJz
ZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5zaQogICAgICAgICBjYXNlICdQJzoK
ICAgICAgICAgY2FzZSAncCcgOiB7CiAgICAgICAgICAgICBpZiAobGVuZ3RoID49IDQgJiYgKChj
b29raWUuZmluZCgiYXRoIiwgdG9rZW5TdGFydFN2ZyArIDEsIGZhbHNlKSAtIHRva2VuU3RhcnRT
dmcpID09IDEpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcGF0aCB0byBiZSBk
ZWNvZGVkIHRvIG1hdGNoIHRob3NlIHJldHVybmVkIGZyb20gS1VSTDo6cGF0aCgpLgorICAgICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHBhdGggdG8gYmUgZGVjb2RlZCB0byBtYXRjaCB0aG9z
ZSByZXR1cm5lZCBmcm9tIFVSTDo6cGF0aCgpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRo
IGF0dHJpYnV0ZSBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0
ZXJzLiBGb3J0dW5hdGVseQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwZXJj
ZW50LWVuY29kZWQgY2hhcmFjdGVycywgZGVjb2RpbmcgdGhlIHVybCBpcyBhIG5vLW9wLgogICAg
ICAgICAgICAgICAgIHJlcy0+c2V0UGF0aChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGFyc2Vk
VmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZVBhcnNlci5oCmluZGV4IGM5NDRmODYuLjJiMGI1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaApAQCAtMjcsNyArMjcsNyBAQAog
I2lmbmRlZiBDb29raWVQYXJzZXJfaAogI2RlZmluZSBDb29raWVQYXJzZXJfaAogCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhcnNlZENvb2tpZTsKIAog
Y2xhc3MgQ29va2llUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBDb29raWVQYXJzZXIoY29uc3QgS1VS
TCYgZGVmYXVsdENvb2tpZVVSTCk7CisgICAgQ29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVs
dENvb2tpZVVSTCk7CiAgICAgfkNvb2tpZVBhcnNlcigpOwogCiAgICAgLy8gUGFyc2VzIGEgc2Vx
dWVuY2Ugb2YgIkNvb2tpZToiIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgY29va2llcy4K
QEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogY3VyVGltZSwgc3RhcnQs
IGVuZCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZW1vdmVkLiBBbmQgdGhpcyBtZXRob2QgY2FuIGJl
IHB1YmxpYy4KICAgICBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gcGFyc2VPbmVDb29raWUoY29u
c3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBj
dXJUaW1lKTsKIAotICAgIEtVUkwgbV9kZWZhdWx0Q29va2llVVJMOworICAgIFVSTCBtX2RlZmF1
bHRDb29raWVVUkw7CiAgICAgU3RyaW5nIG1fZGVmYXVsdENvb2tpZUhvc3Q7CiAgICAgYm9vbCBt
X2RlZmF1bHREb21haW5Jc0lQQWRkcmVzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0RPTUZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3Bw
CmluZGV4IGMyYTJiMjQuLmNmZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotS1VSTCBET01GaWxlU3lz
dGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dAorVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRl
KGZ1bGxQYXRoKSk7CiAKQEAgLTM4LDcgKzM4LDcgQEAgS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6
Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbnRleHQtPmNvbXBsZXRlVVJMKG1fZmlsZXN5c3RlbVJvb3RVUkwuc3RyaW5nKCkg
KyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRoKSk7CiB9CiAKLWJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiB1cmwsIEZpbGVT
eXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQorYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlw
ZSwgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJmaWxlc3lz
dGVtIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBET01G
aWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5
c3RlbVR5cGUmIHR5cGUKIAogICAgICAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwucGF0aCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBLVVJMIG9yaWdpblVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybC5wYXRoKCkpOworICAgICAgICBVUkwgb3JpZ2luVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsLnBhdGgoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoID0gZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKG9yaWdpblVSTC5wYXRoKCkpOwogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3Rl
bUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2Nh
bEZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBiZThkMWM4Li5kNGQxMmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9j
YWxGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJG
aWxlU3lzdGVtQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBiYXNlUGEKICAgICBpZiAodHlwZSA9PSBGaWxlU3lzdGVtVHlwZUlzb2xhdGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGNvbnRleHQtPnVybCgpOworICAg
IFVSTCB1cmwgPSBjb250ZXh0LT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJs
LnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBi
YXNlUGEKICAgICBidWlsZGVyLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsKICAgICBidWlsZGVyLmFw
cGVuZCh1cmwuc3RyaW5nKCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGZpbGVTeXN0ZW1UeXBlU3Ry
aW5nKHR5cGUpKTsKLSAgICBLVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIFVSTCByb290VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwo
YnVpbGRlci50b1N0cmluZygpKTsKICAgICBBU1NFUlQocm9vdFVSTC5pc1ZhbGlkKCkpOwogCiAg
ICAgLy8gVE9ETzogQXNrIHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBlcm1pc3Npb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0Jl
cnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFj
a0JlcnJ5LmgKaW5kZXggZDQwZWY4Yi4uNzM0ZGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnkuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDsKIGNsYXNz
IENyZWRlbnRpYWw7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
fQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlh
bG9nKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOwogICAg
IHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5vdGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25zdCBXZWJD
b3JlOjpDcmVkZW50aWFsJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcAppbmRleCBjZmE3NDM0Li44YzE4NjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tp
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29r
aWUuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiUGFyc2VkQ29va2llLmgiCiAKICNp
bmNsdWRlICJDb29raWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1BhcnNlZENvb2tpZS5oCmluZGV4IGJjYzc5MTYuLjU2YzUyOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBTdHJpbmc7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvb2tp
ZSBpbnRlcm5hbGx5CiAvLyBJdCBjYW4gZWl0aGVyIGJlIGNyZWF0ZWQgYnkgdGhlIENvb2tpZVBh
cnNlciB3aGljaCB3aWxsIHRoZW4gZmlsbCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcAppbmRleCAw
YjUzZTFlLi5mMjVlZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtMjEsNyArMjEsNyBA
QAogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNsaXBib2FyZDo6Y2xlYXJDbGlwYm9hcmQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqLCBLVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKK3ZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCmluZGV4IDFhZmI1ZjUuLjM0MDQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1X
ZWJGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBBc3luY0ZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3MgewogcHVibGljOgotICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0
IEtVUkwmIHJvb3RVUkwgPSBLVVJMKCkpCisgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgVVJMJiByb290VVJMID0gVVJMKCkpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tz
KQogICAgICAgICAsIG1fd3JpdGVyQ2xpZW50KDApCiAgICAgICAgICwgbV9yb290VVJMKHJvb3RV
UkwpCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBBc3luY0ZpbGVXcml0ZXJDbGll
bnQqIG1fd3JpdGVyQ2xpZW50OwogCiBwcml2YXRlOgotICAgIEtVUkwgbV9yb290VVJMOworICAg
IFVSTCBtX3Jvb3RVUkw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5l
cmF0b3JCbGFja0JlcnJ5LmNwcAppbmRleCAxYTMxOTg3Li5lMWQzMzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2Vu
ZXJhdG9yQmxhY2tCZXJyeS5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDcgKzMx
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgU3RyaW5nIGNvbnN0JiwgS1VSTCBjb25zdCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBTdHJpbmcgY29uc3QmLCBVUkwg
Y29uc3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggZGEzOTExNS4u
NTVmYTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBA
IC02OSw2NyArNjksNjcgQEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpk
ZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGkKICAgICBXZWJGaWxlU3lz
dGVtOjpkZWxldGVGaWxlU3lzdGVtKHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBh
dGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0
eXBlKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojptb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtV
UkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92
ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGlu
YXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRo
KHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNhbGxi
YWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5h
dGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5
c3RlbSwgY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAg
ICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRo
KSwgZmlsZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBjYWxsYmFja3MpOwogfQog
Ci12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lz
dGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpy
ZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3Rl
bS0+cmVtb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3Jt
RmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0s
IGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
IGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VS
TCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsK
ICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoZmlsZVN5c3RlbVVSTFRvUGF0aChw
YXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJM
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3Mp
CiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
S1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5maWxl
RXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZv
cm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwg
Y2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpy
ZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVXcml0
ZXJDbGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kiwg
Y29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQogewogICAgIFdlYkZpbGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9ybUZp
bGVTeXN0ZW0sIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5k
UmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVh
dGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwg
Y2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpv
cGVuRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgS1VSTCYgcm9v
dFVSTCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxl
U3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBVUkwmIHJvb3RVUkwsIGNv
bnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJv
b2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxl
U3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIHNp
emUsIGNyZWF0ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNh
bGxiYWNrcywgY29udGV4dCwgbW9kZSwgcm9vdFVSTCkpKTsKQEAgLTE0MSw2MiArMTQxLDYyIEBA
IHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbShX
b3JrZXJHbG9iYWxTY29wZSogY29udGV4CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxl
U3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIG5l
dyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNvbnRl
eHQsIG1vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRo
LCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5U
aHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlv
blBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0IFVS
TCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
Ojpjb3B5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgc291cmNlUGF0
aCwgZGVzdGluYXRpb25QYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1Rv
TWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OnJlbW92ZU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBh
dGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmls
ZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxl
KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVG
aWxlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVz
aXZlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tz
LCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5
T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZl
LCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBt
X2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Zmls
ZUV4aXN0c09uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5l
dyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29u
dGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQo
KSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVt
LmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAg
IHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmls
ZVN5c3RlbS5nZXQoKSwgY2xpZW50LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQsIG1fY29udGV4dCwgbV9tb2RlKSkpOwog
fQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25N
YWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21v
ZGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDE2
NTFhNWMuLjk0MWY3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5o
CkBAIC00MSwzOSArNDEsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoY29udGV4dCwgbW9kZSwgcGxhdGZvcm1G
aWxlU3lzdGVtKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV29y
a2VyR2xvYmFsU2NvcGUqLCBjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUs
IGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0
ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYg
bW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVG
aWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lz
dGVtVHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KCk7CiAgICAgdmlydHVhbCBib29s
IHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29u
c3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNv
bnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwot
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3Jp
dGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYg
c291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBz
b3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhp
c3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
ZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJD
bGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CiAKIHByaXZhdGU6CiAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShXb3JrZXJH
bG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKICAgICBzdGF0aWMg
dm9pZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVGaWxl
U3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlw
ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMg
dm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtV
UkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1cnNpdmVseU9uTWFp
blRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Oldl
YkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3J5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlz
dHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkRGlyZWN0b3J5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5
c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRl
U25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwm
IHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3Rh
dGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNv
bnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
U3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBB
c3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlU25hcHNob3RG
aWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBtX2NvbnRleHQ7CiAgICAgU3RyaW5nIG1fbW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCBiMzUwODJmLi5kZjExZDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC01NCwxMSArNTQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kj4gOgogCiB2b2lkIHBvc3RU
YXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OwogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczogcHVibGljIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzLCBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGU6Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBLVVJMJiByb290VVJMID0gS1VSTCgpKQorICAgIFdv
cmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFVSTCYgcm9vdFVSTCA9IFVSTCgpKQogICAgICAgICA6
IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCkKICAg
ICAgICAgLCBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIoY29udGV4dCkKICAgICAgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tVUkxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWI3Y2ZlLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VS
TChDRlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0
byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVS
TEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7Ci19Ci0K
LSNpZiAhUExBVEZPUk0oTUFDKQotUmV0YWluUHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVS
TCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBp
bnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5
dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8v
IHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAg
Y29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgS1VSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwg
PSBjcmVhdGVDRlVSTCgpOwotICAgIGlmICghY2ZVUkwpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBr
Q0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5
bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENG
VVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNmVVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5
c3RlbUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVt
RWZsLmNwcAppbmRleCBhNjYwOGJiLi44MGE1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcApAQCAtNjMsNjIgKzYzLDYyIEBA
IEFzeW5jRmlsZVN5c3RlbUVmbDo6fkFzeW5jRmlsZVN5c3RlbUVmbCgpCiB7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjptb3ZlKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6
Om1vdmUoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtRWZsOjpjb3B5KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNvcHkoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZs
OjpyZW1vdmUoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmUoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1FZmw6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVh
ZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVm
bDo6Y3JlYXRlRmlsZShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3Qg
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVE
aXJlY3RvcnkoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJlY3RvcnkoY29uc3Qg
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpmaWxlRXhp
c3RzKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OnJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkRGly
ZWN0b3J5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
Cit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFk
YXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5oCmluZGV4IDE5OWI3YzQuLjkzZTZiM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmgKQEAgLTQw
LDE4ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgQXN5bmNGaWxlU3lzdGVtRWZsKCk7CiAgICAgdmly
dHVhbCB+QXN5bmNGaWxlU3lzdGVtRWZsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25z
dCBLVVJMJiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRh
dGEoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVj
dG9yeShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5
RXhpc3RzKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0
ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmLCBjb25zdCBVUkwm
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVS
ZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmls
ZShjb25zdCBVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiwgYm9vbCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmls
ZUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29u
c3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3Jz
RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCmluZGV4
IDI2NDhmMWMuLmRhMmUyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9FcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNF
ZmwuY3BwCkBAIC05MCwyMSArOTAsMjEgQEAgUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0
IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGVycm9yTWUKIHsKICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCkt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1
bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckdlbmVyYWwsIGRvY3VtZW50
TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogVVJMKCksIGVycm9yTWVzc2FnZSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgUHJpbnRDb250ZXh0
KiBwcmludENvbnRleHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
cHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJO
b3RGb3VuZCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCks
IEFTQ0lJTGl0ZXJhbCgiUHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFsKCJQ
cmludGVyIG5vdCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdl
VG9QcmludChjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blByaW50LCBQcmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1
bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwYWdlIHJh
bmdlIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50
RXJyb3JJbnZhbGlkUGFnZVJhbmdlLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51
cmwoKSA6IFVSTCgpLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcGFnZSByYW5nZSIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCAxZjlkMGY1Li42YzJiNzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZUUERpcmVj
dG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01MSw3ICs1
MSw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLVN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQorU3RyaW5nIHNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJikKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBlYjUxMzYuLjk3
M2RiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbWFnZUJ1ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIFJvdW5kZWRS
ZWN0OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogICAgIGNsYXNzIFRleHRSdW47CiAgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CkBAIC00MDAsNyArNDAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7IH0KICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAKLSAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBVUkwmLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CiAgICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDRhNTE1NTQuLjNiYzhiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKIHN0YXRp
YyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRT
aXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5l
Q2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAKLXN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJl
c3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmLCBNZWRp
YVBsYXllckZhY3RvcnkqIGN1cnJlbnQgPSAwKTsKK3N0YXRpYyBNZWRpYVBsYXllckZhY3Rvcnkq
IGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYsIE1l
ZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9y
eSogbmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCk7CiAKIGVudW0g
UmVxdWVyeUVuZ2luZU9wdGlvbnMgeyBEb05vdFJlc2V0RW5naW5lcywgUmVzZXRFbmdpbmVzIH07
CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkK
ICAgICByZXR1cm4gY29kZWNzOwogfQogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0
TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIE1l
ZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKK3N0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJl
c3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTM1OSw3ICszNTksNyBAQCBNZWRpYVBsYXllcjo6fk1lZGlh
UGxheWVyKCkKICAgICBtX21lZGlhUGxheWVyQ2xpZW50ID0gMDsKIH0KIAotYm9vbCBNZWRpYVBs
YXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCitib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQogewogICAgIG1fY29udGVudE1JTUVUeXBlID0gY29udGVudFR5cGUudHlwZSgp
Lmxvd2VyKCk7CiAgICAgbV9jb250ZW50VHlwZUNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRl
cihjb2RlY3MoKSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3QK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi1ib29sIE1lZGlhUGxheWVyOjpsb2FkKGNv
bnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQor
Ym9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxIVE1MTWVk
aWFTb3VyY2U+IG1lZGlhU291cmNlKQogewogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJj
ZTsKICAgICBtX2NvbnRlbnRNSU1FVHlwZSA9ICIiOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgbGV2ZWwsIHR5cGUsIGludGVybmFs
Rm9ybWF0LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCitNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgU3RyaW5nIHR5
cGUgPSBjb250ZW50VHlwZS50eXBlKCkubG93ZXIoKTsKICAgICAvLyBUaGUgY29kZWNzIHN0cmlu
ZyBpcyBub3QgbG93ZXItY2FzZWQgYmVjYXVzZSBNUDQgdmFsdWVzIGFyZSBjYXNlIHNlbnNpdGl2
ZQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6a2V5RXJyb3IoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWQKICAgICAgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlFcnJvcih0aGlzLCBrZXlTeXN0ZW0s
IHNlc3Npb25JZCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
cjo6a2V5TWVzc2FnZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5n
dGgsIGNvbnN0IEtVUkwmIGRlZmF1bHRVUkwpCit2b2lkIE1lZGlhUGxheWVyOjprZXlNZXNzYWdl
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
dW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJM
JiBkZWZhdWx0VVJMKQogewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAgICBt
X21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleU1lc3NhZ2UodGhpcywga2V5U3lzdGVt
LCBzZXNzaW9uSWQsIG1lc3NhZ2UsIG1lc3NhZ2VMZW5ndGgsIGRlZmF1bHRVUkwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDJjY2M1
MTkuLmIzZDg4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZh
dGUuaCIKQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNZWRpYUtleUVycm9y
Q29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJyb3IsIE91dHB1
dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBr
ZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYg
Lyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywgTWVkaWFLZXlF
cnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IC8qIHN5c3RlbUNvZGUgKi8pIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
IC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8s
IGNvbnN0IEtVUkwmIC8qIGRlZmF1bHRVUkwgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3Rl
bSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNvbnN0IFVSTCYg
LyogZGVmYXVsdFVSTCAqLykgeyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVl
ZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0
cmluZyYgLyogc2Vzc2lvbklkICovLCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBpbml0RGF0YSAq
LywgdW5zaWduZWQgLyogaW5pdERhdGFMZW5ndGggKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlhIGVuZ2luZSBz
dXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9y
dGVkLCBNYXlCZVN1cHBvcnRlZCB9OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBLVVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsK
KyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiwgY29uc3Qg
TWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJs
ZSgpOwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+
Jik7CkBAIC0yODAsOSArMjgwLDkgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KTsKIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5cGUmLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IENv
bnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNv
dXJjZT4pOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNv
dXJjZT4pOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFk
ZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAg
ICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQg
c2hvcnQgc3lzdGVtQ29kZSk7Ci0gICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVz
c2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCk7Cisg
ICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2Fn
ZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKTsKICAgICBib29sIGtleU5lZWRlZChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIApA
QCAtNDk5LDcgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5ZXI+IG1fcmVs
b2FkVGltZXI7CiAgICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2
YXRlOwogICAgIE1lZGlhUGxheWVyRmFjdG9yeSogbV9jdXJyZW50TWVkaWFFbmdpbmU7Ci0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY29udGVudE1JTUVUeXBl
OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgIFN0cmluZyBtX2tleVN5c3Rl
bTsKQEAgLTUyNiw5ICs1MjYsOSBAQCBwcml2YXRlOgogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQ
bGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hT
ZXQ8U3RyaW5nPiYgdHlwZXMpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
KCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7Cit0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKTsKICNlbHNlCi10eXBlZGVmIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKK3R5cGVkZWYgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCk7CiAjZW5k
aWYKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUpKFZlY3Rv
cjxTdHJpbmc+Jik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKaW5kZXggODFmNWJhMC4uODc0MjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBjYWNkZGUzLi5iOTVlOTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKICNlbHNlCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0YuaCIKICNlbmRpZgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mIHN1cHBvcgogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAK
IAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpCiB7CiAgICAgLy8gT25seSByZXR1cm4gIklz
U3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhl
cmUgaXMgbm8gd2F5IHRvIGFzayBpZiBpdCBzdXBwb3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1J
TUUgdHlwZSB1bnRpbCByZGFyOi8vODcyMTcxNSBpcyBmaXhlZC4KQEAgLTEyOTgsNyArMTI5OCw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1
cmxSZWYgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVh
dGVDRlVSTCgpOwogCiAgICAgQVZDRlVSTEFzc2V0UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0
Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgp
LCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKICAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggZGM2MThkMS4uODU4YzUyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtV
UkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxM
b2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYjVkMzk0OS4uYWI0OGQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2lu
ZSBzdXBwb3J0CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGNvZGVjcywgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBVUkwmKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4
dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFVSTCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZmIwYzc4MC4uNGFiMGQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0zNyw3ICszNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdp
bi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJG
aWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKICNl
bmRpZgogCi0gICAgTlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7
CisgICAgTlNVUkwgKmNvY29hVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBt
X2F2QXNzZXQgPSBhZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FV
Ukwgb3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYg
c3VwcAogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNv
bnRhaW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwpAQCAtOTA1LDcgKzkwNSw3IEBAIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRl
ZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRnJvbTog
PGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8v
IEluIGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0
aGlzIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtMTExNyw3ICsxMTE3
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZB
c3NldC5nZXQoKSkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tBVkFzc2V0UmVzb2x2ZWRVUkwobV9hdkFz
c2V0LmdldCgpKSkpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSk7CiAgICAgcmV0
dXJuIHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4u
Z2V0KCkpOwogfQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhj
ZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmUK
IAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5n
dGhdKTsKICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdEFycmF5ID0gVWludDhBcnJh
eTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7Ci0gICAgcGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtl
eVJlcXVlc3RBcnJheS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgS1VS
TCgpKTsKKyAgICBwbGF5ZXIoKS0+a2V5TWVzc2FnZShrZXlTeXN0ZW0sIHNlc3Npb25JRCwga2V5
UmVxdWVzdEFycmF5LT5kYXRhKCksIGtleVJlcXVlc3RBcnJheS0+Ynl0ZUxlbmd0aCgpLCBVUkwo
KSk7CiAKICAgICAvLyBNb3ZlIG93bmVyc2hpcCBvZiB0aGUgQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3Rmcm9tIHRoZSBrZXlJRFRvUmVxdWVzdE1hcCB0byB0aGUgc2Vzc2lvbklEVG9SZXF1
ZXN0TWFwOgogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnNldChzZXNzaW9uSUQsIGF2UmVx
dWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggMjg3ZWU4MS4uNzU2MjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBpZiAobV9y
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0gW1ttX2F2
UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOworICAgIFVSTCByZXF1ZXN0VVJMID0gW1ttX2F2
UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRp
YWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBl
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA2YTRjZDcwLi4z
OTFmZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnkuY3BwCkBAIC0yMSw3ICsy
MSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGlj
c0NvbnRleHRCbGFja0JlcnJ5LmNwcAppbmRleCBlMmYxYzQzLi40YzAzNDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29u
dGV4dEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0QmxhY2tCZXJyeS5jcHAKQEAgLTIxLDEwICsyMSwx
MCBAQAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYWRpZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgpAQCAtMzg3LDcgKzM4Nyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRz
KCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChJTlRfTUlOIC8gMiwgSU5UX01J
TiAvIDIpLCBJbnRTaXplKElOVF9NQVgsIElOVF9NQVgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuY3BwCmluZGV4IGU0MWJlNmYuLjk2MDYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4m
IHR5cGVzKQogICAgICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5n
JiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJiB1cmwpCitNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNv
bnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICBib29sIGlzUlRTUCA9IHVybC5wcm90b2NvbElzKCJydHNwIik7CiAK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBX
VEY6OlN0cmluZyYgdXJsKQogICAgIFdURjo6U3RyaW5nIG1vZGlmaWVkVXJsKHVybCk7CiAKICAg
ICBpZiAobW9kaWZpZWRVcmwuc3RhcnRzV2l0aCgibG9jYWw6Ly8iKSkgewotICAgICAgICBLVVJM
IGt1cmwgPSBLVVJMKEtVUkwoKSwgbW9kaWZpZWRVcmwpOworICAgICAgICBVUkwga3VybCA9IFVS
TChVUkwoKSwgbW9kaWZpZWRVcmwpOwogICAgICAgICBrdXJsLnNldFByb3RvY29sKCJmaWxlIik7
CiAgICAgICAgIFdURjo6U3RyaW5nIHRlbXBQYXRoKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0
aW5nczo6aW5zdGFuY2UoKS0+YXBwbGljYXRpb25Mb2NhbERpcmVjdG9yeSgpLmNfc3RyKCkpOwog
ICAgICAgICB0ZW1wUGF0aC5hcHBlbmQoa3VybC5wYXRoKCkpOwpAQCAtMTU3LDggKzE1Nyw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCiAg
ICAgLy8gYWxyZWFkeSBkb25lIGEgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGZpbGVzeXN0ZW06IFVS
TCBhcyBwYXJ0IG9mIHRoZQogICAgIC8vIG1lZGlhIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0
aG0sIHdlIHNob3VsZCBiZSBPSyBoZXJlLgogICAgIGlmIChtb2RpZmllZFVybC5zdGFydHNXaXRo
KCJmaWxlc3lzdGVtOiIpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCBtb2Rp
ZmllZFVybCk7Ci0gICAgICAgIEtVUkwgbWVkaWFVUkw7CisgICAgICAgIFVSTCBrdXJsID0gVVJM
KFVSTCgpLCBtb2RpZmllZFVybCk7CisgICAgICAgIFVSTCBtZWRpYVVSTDsKICAgICAgICAgV1RG
OjpTdHJpbmcgZnNQYXRoOwogICAgICAgICBGaWxlU3lzdGVtVHlwZSBmc1R5cGU7CiAgICAgICAg
IFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQogCiAgICAgV1RGOjpT
dHJpbmcgY29va2llUGFpcnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICBjb29r
aWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgICAgICBjb29raWVQYWlycyA9IGNvb2tp
ZU1hbmFnZXIoKS5nZXRDb29raWUoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgV2l0aEh0dHBP
bmx5Q29va2llcyk7CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZp
ZWRVcmwsIG1fd2ViQ29yZVBsYXllci0+dXNlckFnZW50KCksIGNvb2tpZVBhaXJzKTsKIH0KIApA
QCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkJ1ZmZlcmluZyhi
b29sIGZsYWcpCiAKIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgZ2VuZXJhdGVQcm90ZWN0aW9uU3Bh
Y2VGcm9tTU1SQXV0aENoYWxsZW5nZShjb25zdCBNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxl
bmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENo
YWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdU
Rjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkpOwogICAgIEFTU0VSVCh1cmwu
aXNWYWxpZCgpKTsKIAogICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKSwgdXJs
LnBvcnQoKSwKQEAgLTczOSw3ICs3MzksNyBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIGdlbmVy
YXRlUHJvdGVjdGlvblNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2UoY29uc3QgTU1SQXV0aAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlvbk5lZWRlZChNTVJBdXRoQ2hh
bGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
V1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQ
YXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkp
OwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0aGVudGljYXRpb25OZWVkZWQo
TU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKICAgICAgICAgdGhpcywgbV93ZWJDb3Jl
UGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxh
dGZvcm1QYWdlQ2xpZW50KCkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQordm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5vdGlmeUNoYWxsZW5nZVJlc3Vs
dChjb25zdCBVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewog
ICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CiAKQEAgLTc2Nyw3ICs3
NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvbgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6b25BdXRoZW50aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhD
aGFsbGVuZ2UpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBXVEY6OlN0
cmluZyhhdXRoQ2hhbGxlbmdlLnVybCgpLmNfc3RyKCkpKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVS
TFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKaW5kZXggYjM0NjViYi4uNTQ3YjFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2
YXRlZEV2ZW50KGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25z
dCBXVEY6OlN0cmluZyYpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBvbkNyZWF0ZUhvbGVQdW5jaFJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0
cm95SG9sZVB1bmNoUmVjdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJl
c3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggYzdlYTc2ZC4uODQ5MDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9r
ZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVj
dCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0
NGJmMmQzLi5iMDgxNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBh
dHRlcm4uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBmbG9hdCB3aWR0aCwgYm9vbAogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxp
YXMocGxhdGZvcm1Db250ZXh0KCksIHRydWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCAxYjdjNTc5Li4wMTA3MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyQW5k
UmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1
cmwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgIFN0cmluZyBj
bGVhblVybCh1cmwpOwogCiAgICAgLy8gQ2xlYW4gb3V0IGV2ZXJ5dGhpbmcgYWZ0ZXIgZmlsZTov
LyB1cmwgcGF0aC4KQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIEFTU0VSVChtX3BsYXlCaW4p
OwogCi0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOworICAgIG1fdXJsID0gVVJM
KFVSTCgpLCBjbGVhblVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgInVy
aSIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgSU5GT19NRURJQV9NRVNT
QUdFKCJMb2FkICVzIiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDI4LDggKzE0Mjgs
OCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigp
CiAgICAgICAgIC8vIEZvdW5kIGEgY2FuZGlkYXRlLiBuZXctbG9jYXRpb24gaXMgbm90IGFsd2F5
cyBhbiBhYnNvbHV0ZSB1cmwKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhl
IGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVl
IG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KLSAgICAgICAgS1VSTCBiYXNlVXJsID0gZ3N0X3VyaV9p
c192YWxpZChuZXdMb2NhdGlvbikgPyBLVVJMKCkgOiBtX3VybDsKLSAgICAgICAgS1VSTCBuZXdV
cmwgPSBLVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIGJhc2VVcmwgPSBn
c3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7CisgICAgICAgIFVS
TCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogCiAgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsKTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsK
QEAgLTE2NTMsNyArMTY1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWlt
ZVR5cGVDYWNoZSgpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICh0eXBlLmlz
TnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGQ3ZjZlZDYuLjI1YzljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKIAogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRl
OgogICAgIGd1aW50IG1fcmVhZHlUaW1lckhhbmRsZXI7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVzOwotICAg
IEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQaXRjaDsK
ICAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
bV9hdXRvQXVkaW9TaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCBmOGM3OTA0Li43OTY0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIEFTU0VSVCghcHJpdi0+
Y2xpZW50KTsKIAotICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAg
VVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02ODgs
NyArNjg4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5k
bGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBpZiAoIXVyaSkKICAgICAg
ICAgcmV0dXJuIFRSVUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCksIHVyaSk7CisgICAgVVJMIHVy
bChVUkwoKSwgdXJpKTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR1NUX1VSSV9F
UlJPUiwgR1NUX1VSSV9FUlJPUl9CQURfVVJJLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CkBA
IC03MzksNyArNzM5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RV
UklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlmICghdXJpKQogICAg
ICAgICByZXR1cm4gVFJVRTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwg
dXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52
YWxpZCBVUkkgJyVzJyIsIHVyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDcy
YjIyNTQuLmYzMGQxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03NSw5ICs3
NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093
blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwog
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMp
OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAg
c3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJik7CiAjZW5kaWYKIAogICAgIHN0
YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZjcyMmJkMC4uMGM4NGY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIK
QEAgLTI2NSw3ICsyNjUsNyBAQCBOU011dGFibGVEaWN0aW9uYXJ5ICpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6Y29tbW9uTW92aWVBdHRyaWJ1dGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIGtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIFVSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKTsKICAgICBOU1VSTCAqY29jb2FVUkwgPSBrVVJMOwogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKm1vdmllQXR0cmlidXRlcyA9IGNvbW1vbk1vdmllQXR0cmlidXRlcygpOyAgICAKICAgICBb
bW92aWVBdHRyaWJ1dGVzIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpRVE1vdmllVVJMQXR0cmli
dXRlXTsKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAgICAg
Y29uY2F0ZW5hdGVIYXNoU2V0cyhzdXBwb3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2FjaGUo
KSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBLVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
Y29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIg
aWYgdGhlcmUgaXMgbm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdh
eSB0byBhc2sgUVQgaWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUg
eWV0LgpAQCAtMTQ4MCw3ICsxNDgwLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKIH0KIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
Ci1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1
cHBvcnQgYW55IGVuY3J5dHBlZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRo
ZSBrZXlTeXN0ZW0gaXMgbm9uLU5VTEw6CiAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwg
IWtleVN5c3RlbS5pc0VtcHR5KCkpCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYg
KCFtX3F0TW92aWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwod2tR
VE1vdmllUmVzb2x2ZWRVUkwobV9xdE1vdmllLmdldCgpKSkpOworICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FU
TW92aWVSZXNvbHZlZFVSTChtX3F0TW92aWUuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhtX21vdmllVVJMKTsKICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXgg
MTdkYzQxNC4uMWU2YmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCA3NWE2
ZjNlLi4yYzZlYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nPiAmc3VwcG9ydGVkKQogICAgIH0KIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29u
c3QgU3RyaW5nJiBjb2RlYywgY29uc3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiBtaW1lLCBj
b25zdCBTdHJpbmcmIGNvZGVjLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZS5zdGFydHNX
aXRoKCJhdWRpby8iKSAmJiAhbWltZS5zdGFydHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF0Ojpjb21taXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
ICAgICBtX3dlYkNvcmVQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCi0gICAg
S1VSTCBrVXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga1VybChQYXJzZWRVUkxT
dHJpbmcsIHVybCk7CiAgICAgY29uc3QgUVVybCByVXJsID0ga1VybDsKICAgICBjb25zdCBRU3Ry
aW5nIHNjaGVtZSA9IHJVcmwuc2NoZW1lKCkudG9Mb3dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
aAppbmRleCA3ZTM4OGM0Li4xM2U5MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsK
KyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNB
dmFpbGFibGUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAKaW5kZXggMGIzNTE4NC4uOWRkMjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZVRhc2tUaW1lci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJR
VENGRGljdGlvbmFyeS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNvZnRMaW5raW5n
LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8QXNzZXJ0TWFjcm9zLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4
dC5oPgpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dDo6c2V0VXBDb29raWVzRm9yUXVpY2tUaW1lKGNvbnN0IFN0CiAgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5j
b29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgbW92aWVVUkwgPSBL
VVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwgbW92aWVVUkwgPSBVUkwoVVJMKCksIHVybCk7CiAg
ICAgVmVjdG9yPENvb2tpZT4gZG9jdW1lbnRDb29raWVzOwogICAgIGlmICghZ2V0UmF3Q29va2ll
cyhmcmFtZS0+ZG9jdW1lbnQoKSwgbW92aWVVUkwsIGRvY3VtZW50Q29va2llcykpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAKLU1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3Ms
IGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICAvLyBvbmx5IHJldHVy
biAiSXNTdXBwb3J0ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBh
cyB0aGVyZSBpcyBubyB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gIGV4
dGVuZGVkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmgKaW5kZXggNjYzMzRmMi4uMzljY2JhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCkBAIC0x
MjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxh
eWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+
JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5MTFjM2FkLi42ZTUxMjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFw
aGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9r
ZVRoaWNrbmVzcykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGlu
aywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlh
UGxheWVyUHJpdmF0ZVdpbkNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCmluZGV4IDAwOWYwZDQuLjQyZjY3M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxh
eWVyUHJpdmF0ZVdpbkNFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5
ZXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcyk7Ci0gICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBLVVJMJik7CisgICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBV
UkwmKTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICB2aXJ0
dWFsIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJXaW5DRSI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5j
cHAKaW5kZXggNjZhZDY2Mi4uZmVhN2YzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTYyLDYzICs2Miw2MyBAQCBBc3lu
Y0ZpbGVTeXN0ZW1HdGs6On5Bc3luY0ZpbGVTeXN0ZW1HdGsoKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IEtVUkwmIHNvdXJj
ZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3Zl
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29uc3QgS1VS
TCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3Zl
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZW1vdmVSZWN1
cnNpdmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0
ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwg
Ym9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtR3RrOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxlRXhp
c3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmls
ZVN5c3RlbUd0azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUd0azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9p
ZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRl
cihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxl
U3lzdGVtR3RrOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUd0azo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3Rl
bUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5o
CmluZGV4IDM5ZjU3MzcuLmRhYTZlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKQEAgLTM0LDE3ICszNCwxNyBAQCBwdWJsaWM6CiAg
ICAgQXN5bmNGaWxlU3lzdGVtR3RrKCk7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3Rr
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURp
cmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwCmluZGV4IDBiZDMwNGIuLjE3OTAxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEYXRh
T2JqZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICAg
ICAgaWYgKGxpbmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
S1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwgPSBVUkwoVVJM
KCksIGxpbmUpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYg
KCFzZXRVUkwpIHsKICAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0
U3RyaW5nKQogICAgIH0KIH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91cmwgPSB1cmw7
CiAgICAgbV91cmlMaXN0ID0gdXJsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRGF0YU9iamVj
dEd0azo6Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKQogICAgIG1fdGV4dCA9ICIiOwogICAgIG1f
bWFya3VwID0gIiI7CiAgICAgbV91cmlMaXN0ID0gIiI7Ci0gICAgbV91cmwgPSBLVVJMKCk7Cisg
ICAgbV91cmwgPSBVUkwoKTsKICAgICBtX2ltYWdlID0gMDsKICAgICBtX3JhbmdlID0gMDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmluZGV4IDUyODFi
MWUuLmJjNTVjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRh
T2JqZWN0R3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RH
dGsuaApAQCAtMjAsNyArMjAsNyBAQAogI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gKIAogI2luY2x1
ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0zNiwxMyArMzYsMTMgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7CiAgICAgfQogCi0gICAgY29u
c3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmlMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV91cmlMaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVzOyB9CiAgICAgR2RrUGl4YnVmKiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJhbmdl
KFBhc3NSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlKSB7IG1fcmFuZ2UgPSBuZXdSYW5nZTsgfQogICAg
IHZvaWQgc2V0SW1hZ2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBtX2ltYWdlID0gbmV3SW1hZ2U7
IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBoYXNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV90ZXh0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wg
aGFzTWFya3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV9tYXJrdXAuaXNFbXB0eSgp
OyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgY29uc3QgeyByZXR1cm4gIW1fdXJpTGlzdC5pc0Vt
cHR5KCk7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsZW5hbWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5hbWVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgdm9pZCBjbGVhclVSSUxpc3Qo
KSB7IG1fdXJpTGlzdCA9ICIiOyB9Ci0gICAgdm9pZCBjbGVhclVSTCgpIHsgbV91cmwgPSBLVVJM
KCk7IH0KKyAgICB2b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IFVSTCgpOyB9CiAgICAgdm9pZCBj
bGVhckltYWdlKCkgeyBtX2ltYWdlID0gMDsgfQogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIFN0cmluZyBtX21hcmt1cDsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV91cmlMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAg
IEdSZWZQdHI8R2RrUGl4YnVmPiBtX2ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNzk3Yzc4Yi4uM2Y5ZGVhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0cmluZyoKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoZmlsZW5hbWVQb2xpY3kgIT0gQ29u
dmVydEZpbGVuYW1lcykgewotICAgICAgICBLVVJMIHVybChLVVJMKCksIG1fcGxhdGZvcm1EcmFn
RGF0YS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsKFVSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpKTsKICAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAKaW5kZXggYmE0N2UyYS4uM2NmNmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0Vycm9yc0d0ay5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCBSZXNvdXJjZUVycm9yIHByaW50
RXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4
dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtV
UkwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExv
YWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQog
CiBSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCog
cHJpbnRDb250ZXh0KQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHBy
aW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZv
dW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRM
b2FkZXItPnVybCgpIDogS1VSTCgpLCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6
IFVSTCgpLCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZh
bGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBL
VVJMKCksIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJJbnZh
bGlkIHBhZ2UgcmFuZ2UiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhY2E1MTMyLi44
OGVlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6
ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2d0a0Ns
aXBib2FyZCk7CiB9CiAKLXN0YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2Rl
KQorc3RhdGljIFVSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9kZSogbm9kZSkKIHsKICAgICAvLyBG
SVhNRTogTGF0ZXIgdGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgd2l0aCBDaHJvbWl1bSBzb21l
aG93LiBDaGFuY2VzIGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQgaXQuCiAgICAgQXRvbWljU3RyaW5n
IHVybFN0cmluZzsKQEAgLTIwMSwxMCArMjAxLDEwIEBAIHN0YXRpYyBLVVJMIGdldFVSTEZvcklt
YWdlTm9kZShOb2RlKiBub2RlKQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50
KG5vZGUpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwog
ICAgIH0KLSAgICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVy
bFN0cmluZykpOworICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBub2Rl
LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyh1cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAgS1VSTCB1cmwgPSBnZXRV
UkxGb3JJbWFnZU5vZGUobm9kZSk7CisgICAgVVJMIHVybCA9IGdldFVSTEZvckltYWdlTm9kZShu
b2RlKTsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9kYXRhT2JqZWN0LT5z
ZXRVUkwodXJsLCB0aXRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXggZTM0YzFiYi4uYTBiZjg4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQz
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmKQogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggZDExNWQ2MS4uNzBhZjE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4
LDcgQEAKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNp
bXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVS
TC5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5OGNiY2NkLi44NWU5NTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJDb2xvci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJJbWFnZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTb2Z0
TGlua2luZy5oIgpAQCAtOTksOSArOTksOSBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNv
bG9yKCkKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnVybCgpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewotICAgIHJldHVybiBLVVJM
KCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29w
eShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KaW5kZXggMTQ5M2FlNi4uMmUwNWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJGb250U2Vs
ZWN0b3IuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgi
CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50KE5TU3Ry
aW5nICpzdHJpbmcsIE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3AKICAgICAgICAgZHJh
d0F0UG9pbnQoc3RyaW5nLCB0ZXh0UG9pbnQsIGZvbnQsIHRvcENvbG9yKTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGb250UmVuZGVyaW5nTW9kZSkKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVuZGVyaW5nTW9kZSkKIHsK
ICAgICBOU1N0cmluZyAqbGFiZWwgPSBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpOwogICAgIE5T
VVJMICpjb2NvYVVSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzc1YzcuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJL
VVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvT2JqY1J1bnRp
bWVFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1LVVJMOjpLVVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVy
bEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCks
IHVybEJ5dGVzKTsKLSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwotfQotCi1LVVJMOjpvcGVy
YXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlk
Z2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9y
aWdpbmFsIHN0cmluZy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJp
cHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Y3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6
OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6QCIiXSkuZ2V0KCkpOwotICAgIH0KLQotICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwot
ICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci19Ci0KLQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGU3YWQ2YTEuLmYzMWY0
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgogI2ltcG9ydCAiSFRNTE5h
bWVzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJM
LmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMzgzLDcgKzM4Myw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
KQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNVUkxQYm9hcmRUeXBl
KSkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
ICAgIFN0cmluZyB0aXRsZSA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSAmJiBy
ZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IDQwYjQxZTguLjAzODc5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9yLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC05NCw3ICs5NCw3IEBAIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29s
b3IoKQogICAgICAgICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAy
NTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkp
OyAgICAKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitVUkwgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp1cmwoKQogewogICAgIHJldHVybiBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6
bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5kZXggZTU4ZDlhOS4uZGU4YjFiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTU0xLZXlH
ZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMpCiAg
ICAgc3VwcG9ydGVkS2V5U2l6ZXMuYXBwZW5kKGtleWdlbk1lbnVJdGVtNTEyKCkpOwogfQogCi1T
dHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUlu
ZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7ICAg
CiAgICAgLy8gVGhpcyBzd2l0Y2ggc3RhdGVtZW50IG11c3QgYWx3YXlzIGJlIHN5bmNlZCB3aXRo
IHRoZSBVSSBzdHJpbmdzIHJldHVybmVkIGJ5IGdldFN1cHBvcnRlZEtleVNpemVzLgogICAgIFVJ
bnQzMiBrZXlTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDllOGFkYjQuLjIzYWRiMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0
aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQzLDI1ICs0MywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0lj
ZVNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJpLCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0ljZVNlcnZlcih1cmksIGNyZWRlbnRpYWwsIHVz
ZXJuYW1lKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflJUQ0ljZVNlcnZlcigpIHsgfQogCi0gICAg
Y29uc3QgS1VSTCYgdXJpKCkgeyByZXR1cm4gbV91cmk7IH0KKyAgICBjb25zdCBVUkwmIHVyaSgp
IHsgcmV0dXJuIG1fdXJpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsKCkgeyByZXR1
cm4gbV9jcmVkZW50aWFsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1c2VybmFtZSgpIHsgcmV0dXJu
IG1fdXNlcm5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBSVENJY2VTZXJ2ZXIoY29uc3QgS1VSTCYg
dXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCisg
ICAgUlRDSWNlU2VydmVyKGNvbnN0IFVSTCYgdXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWws
IGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCiAgICAgICAgIDogbV91cmkodXJpKQogICAgICAgICAs
IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogICAgICAgICAsIG1fdXNlcm5hbWUodXNlcm5hbWUp
CiAgICAgewogICAgIH0KIAotICAgIEtVUkwgbV91cmk7CisgICAgVVJMIG1fdXJpOwogICAgIFN0
cmluZyBtX2NyZWRlbnRpYWw7CiAgICAgU3RyaW5nIG1fdXNlcm5hbWU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAppbmRleCBkZDQ5NmNhLi5iZjAx
NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcApA
QCAtOTQsMTMgKzk0LDEzIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoCiAgICAgbV9pdGVtcy5h
cHBlbmQoQmxvYkRhdGFJdGVtKHBhdGgsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpKTsKIH0KIAotdm9pZCBCbG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiB1
cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCit2b2lkIEJsb2JEYXRhOjph
cHBlbmRCbG9iKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVu
Z3RoKSk7CiB9CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIEJsb2JEYXRhOjphcHBl
bmRVUkwoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
LCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQordm9pZCBCbG9iRGF0YTo6YXBwZW5k
VVJMKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBk
b3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJs
b2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAppbmRleCBm
ZDk0ZjU5Li5mNjA1NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YS5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEJsb2JEYXRhX2gKIAogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0cnVj
dCBCbG9iRGF0YUl0ZW0gewogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdG9yIGZvciBCbG9iIHR5
cGUuCi0gICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCkKKyAgICBCbG9iRGF0YUl0ZW0oY29uc3QgVVJMJiB1cmwsIGxvbmcg
bG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiAgICAgICAgIDogdHlwZShCbG9iKQogICAg
ICAgICAsIHVybCh1cmwpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAg
ICAvLyBDb25zdHJ1Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxlcykuCi0g
ICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKKyAgICBCbG9iRGF0
YUl0ZW0oY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgs
IGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogdHlwZShVUkwpCiAg
ICAgICAgICwgdXJsKHVybCkKICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHN0cnVjdCBCbG9iRGF0YUl0ZW0gewogICAgIFN0cmluZyBwYXRoOwogCiAgICAgLy8g
Rm9yIEJsb2Igb3IgVVJMIHR5cGUuCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKIAogICAg
IGxvbmcgbG9uZyBvZmZzZXQ7CiAgICAgbG9uZyBsb25nIGxlbmd0aDsKQEAgLTE4NCw5ICsxODQs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmREYXRhKFBhc3NSZWZQdHI8UmF3RGF0YT4sIGxv
bmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwotICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0
IFVSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CisgICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQmxv
YkRhdGFIYW5kbGUoUGFzc093blB0cjxCbG9iRGF0YT4sIGxvbmcgbG9uZyBzaXplKTsKLSAgICBL
VVJMIG1faW50ZXJuYWxVUkw7CisgICAgVVJMIG1faW50ZXJuYWxVUkw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaAppbmRleCBlNzhiZTIzLi5kYjFjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGE7CiBjbGFzcyBCbG9iU3RvcmFnZURhdGE7CiBj
bGFzcyBCbG9iUmVnaXN0cnk7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBCbG9iUmVnaXN0
cnkmIGJsb2JSZWdpc3RyeSgpOwogCkBAIC00NiwxMiArNDYsMTIgQEAgQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnkoKTsKIGNsYXNzIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRhLgot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8
QmxvYkRhdGE+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBh
IG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRo
ZSBzcGVjaWZpZWQgc3JjVVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAKaW5kZXggMGJiNjVhYi4uODNjMTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRh
KiBibG9iU3RvcmFnZURhdGEsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4g
YmxvYkRhdGEpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICBtX2Js
b2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JTdG9yYWdlRGF0YSk7CiB9CiAKLXZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYg
c3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTc3LDEz
ICsxNzcsMTMgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmlu
ZygpLCBzcmMpOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBt
X2Jsb2JzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogfQogCi1CbG9iU3RvcmFnZURhdGEqIEJsb2JS
ZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitC
bG9iU3RvcmFnZURhdGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJl
dHVybiBtX2Jsb2JzLmdldCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBiMzRkYzc2Li5lMGMzMmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTAsNyArNTAsNyBAQCBj
bGFzcyBCbG9iUmVnaXN0cnlJbXBsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5SW1wbCgpOwogCi0gICAgQmxvYlN0b3JhZ2VEYXRhKiBn
ZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIEJsb2JTdG9yYWdlRGF0
YSogZ2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0
cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKIApAQCAtNTgsOSArNTgsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJs
b2JEYXRhSXRlbUxpc3QmKTsKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFn
ZURhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgc3JjVVJMKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0
cjxCbG9iRGF0YT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+ID4gbV9ibG9iczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAppbmRleCBkYjc1ZmJkLi4zNzY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5k
ZXggNTg4ZmY1Yi4uOTU5NTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVs
dFByb3RlY3Rpb25TcGFjZU1hcCYgcGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpCiAg
ICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJMKGNv
bnN0IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAodXJsLnBvcnQoKSkKICAgICAgICAgcmV0dXJuIHVybC5wcm90
b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIodXJsLnBv
cnQoKSkgKyAnLyc7CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5n
RnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjov
LyIgKyB1cmwuaG9zdCgpICsgJy8nOwogfQogCi1zdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFj
ZU1hcEtleUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwcm90ZWN0aW9u
U3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwuaXNW
YWxpZCgpKTsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFj
ZU1hcEtleUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBkaXJlY3RvcnlVUkw7
CiB9CiAKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgS1VS
TCYgdXJsKQordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlzUHJveHkoKSB8fCB1cmwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlz
UHJveHkoKSB8fCB1cmwuaXNWYWxpZCgpKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENyZWRl
bnRpYWxTdG9yYWdlOjpyZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiAgICAgcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkucmVtb3ZlKHByb3RlY3Rp
b25TcGFjZSk7CiB9CiAKLXN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwOjpp
dGVyYXRvciBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTChjb25zdCBLVVJMJiB1cmwp
CitzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgZmluZERl
ZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJU
KHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgp
KTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFj
ZU1hcDo6aXRlcmF0b3IgZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUgogICAgIH0KIH0K
IAotYm9vbCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwsIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJs
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkpOwpA
QCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUNyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBLVVJMJiB1cmwpCitD
cmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
UGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgaXRlciA9IGZpbmREZWZh
dWx0UHJvdGVjdGlvblNwYWNlRm9yVVJMKHVybCk7CiAgICAgaWYgKGl0ZXIgPT0gcGF0aFRvRGVm
YXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDQ5YWY0NTIuLmIzYmQx
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWxTdG9yYWdlLmgKQEAgLTI5LDEzICsyOSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDcmVkZW50aWFsOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKIAogY2xhc3MgQ3JlZGVudGlhbFN0b3JhZ2UgewogcHVibGljOgogICAgIC8vIFdl
YkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgc3RhdGljIHZvaWQgc2V0KGNv
bnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBLVVJMJik7Cisg
ICAgc3RhdGljIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgUHJvdGVj
dGlvblNwYWNlJik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOwogCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMg
d29yayBmb3IgYXV0aGVudGljYXRpb24gc2NoZW1lcyB0aGF0IHN1cHBvcnQgc2VuZGluZyBjcmVk
ZW50aWFscyB3aXRob3V0IHdhaXRpbmcgZm9yIGEgcmVxdWVzdC4gRS5nLiwgZm9yIEhUVFAgQmFz
aWMgYXV0aGVudGljYXRpb24gc2NoZW1lCiAgICAgLy8gYSBjbGllbnQgc2hvdWxkIGFzc3VtZSB0
aGF0IGFsbCBwYXRocyBhdCBvciBkZWVwZXIgdGhhbiB0aGUgZGVwdGggb2YgYSBrbm93biBwcm90
ZWN0ZWQgcmVzb3VyY2Ugc2hhcmUgYXJlIHdpdGhpbiB0aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNl
LgotICAgIHN0YXRpYyBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgS1VSTCYpOyAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rp
b24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCi0gICAgc3RhdGljIENy
ZWRlbnRpYWwgZ2V0KGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYsIGNvbnN0IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNw
b25kcyB0byBhIGtub3duIHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJl
IHVwZGF0ZWQuCisgICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOwogCiAgICAg
c3RhdGljIHZvaWQgc2V0UHJpdmF0ZU1vZGUoYm9vbCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA0OWJkY2ExLi5hNTEzMjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTc4LDE4
ICsxNzgsMTggQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb24KICAgICBtX2VsZW1lbnRzLmFwcGVu
ZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFw
cGVuZEJsb2IoY29uc3QgS1VSTCYgYmxvYlVSTCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEJsb2Io
Y29uc3QgVVJMJiBibG9iVVJMKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxl
bWVudChibG9iVVJMKSk7CiB9CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lk
IEZvcm1EYXRhOjphcHBlbmRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGb3JtRGF0YTo6YXBw
ZW5kVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRh
RWxlbWVudCh1cmwsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGlt
ZSgpKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKQordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiB1
cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQo
dXJsLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKIH0KQEAgLTMy
NiwxMyArMzI2LDEzIEBAIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QK
IH0KIAogI2lmIEVOQUJMRShCTE9CKQotc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZv
cm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxv
YlJlc29sdmVkKEZvcm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYg
KCFibG9iUmVnaXN0cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgewogICAgICAgICBMT0dfRVJS
T1IoIlRyaWVkIHRvIHJlc29sdmUgYSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0g
c3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0
YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIEJsb2JTdG9yYWdlRGF0
YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5
KCkpLmdldEJsb2JEYXRhRnJvbVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKICAgICBp
ZiAoIWJsb2JEYXRhKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdldCBibG9iIGRh
dGEgZnJvbSBhIHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTUyMSw3ICs1MjEsNyBA
QCBzdGF0aWMgYm9vbCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCkKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgaWYgKHR5
cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJMKQotICAgICAgICAgICAgZWxlbWVudC5t
X3VybCA9IEtVUkwoS1VSTCgpLCBmaWxlbmFtZU9yVVJMKTsKKyAgICAgICAgICAgIGVsZW1lbnQu
bV91cmwgPSBVUkwoVVJMKCksIGZpbGVuYW1lT3JVUkwpOwogICAgICAgICBlbHNlCiAjZW5kaWYK
ICAgICAgICAgZWxlbWVudC5tX2ZpbGVuYW1lID0gZmlsZW5hbWVPclVSTDsKQEAgLTU0MCw3ICs1
NDAsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1E
YXRhRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgU3RyaW5nIGJsb2JVUkxTdHJpbmc7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmluZykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgYmxv
YlVSTFN0cmluZyk7CisgICAgICAgIGVsZW1lbnQubV91cmwgPSBVUkwoVVJMKCksIGJsb2JVUkxT
dHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggN2NlNDZmYS4uOTdmNDRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMjAsNyArMjAsNyBA
QAogI2lmbmRlZiBGb3JtRGF0YV9oCiAjZGVmaW5lIEZvcm1EYXRhX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzksMTIg
KzM5LDEyIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIEZvcm1EYXRhRWxlbWVu
dChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcg
ZmlsZUxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5h
bWUpLCBtX2ZpbGVTdGFydChmaWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmlsZUxlbmd0aCksIG1f
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KLSAgICBleHBs
aWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVSTCkgOiBtX3R5cGUoZW5jb2Rl
ZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KKyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQo
Y29uc3QgVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJsKGJsb2JVUkwp
IHsgfQogI2Vsc2UKICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Ym9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFt
ZShmaWxlbmFtZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUg
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJs
KHVybCksIG1fZmlsZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9z
aG91bGRHZW5lcmF0ZUZpbGUoZmFsc2UpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBV
UkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJsKHVybCks
IG1fZmlsZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRH
ZW5lcmF0ZUZpbGUoZmFsc2UpIHsgfQogI2VuZGlmCiAKICAgICBlbnVtIFR5cGUgewpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKICAgICBTdHJpbmcg
bV9maWxlbmFtZTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICBLVVJMIG1fdXJsOyAvLyBGb3IgQmxv
YiBvciBVUkwuCisgICAgVVJMIG1fdXJsOyAvLyBGb3IgQmxvYiBvciBVUkwuCiAgICAgbG9uZyBs
b25nIG1fZmlsZVN0YXJ0OwogICAgIGxvbmcgbG9uZyBtX2ZpbGVMZW5ndGg7CiAgICAgZG91Ymxl
IG1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKQEAgLTEyNCwxMSArMTI0LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBz
aG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgdm9pZCBh
cHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNo
b3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgS1VS
TCYgYmxvYlVSTCk7CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdm9pZCBhcHBlbmRVUkwoY29uc3Qg
S1VSTCYpOwotICAgIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CisgICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgVVJMJik7CisgICAgdm9pZCBhcHBlbmRVUkxSYW5n
ZShjb25zdCBVUkwmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogI2VuZGlmCiAgICAgY2hhciogZXhwYW5kRGF0YVN0
b3JlKHNpemVfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUGxhdGZvcm1Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UGxhdGZvcm1Db29raWVKYXIuaAppbmRleCA5MWQ1MWZjLi41ZTEyMmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCkBAIC0z
MywxOCArMzMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAog
Ly8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
bWVtYmVyIGZ1bmN0aW9ucy4KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmKTsKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwor
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJik7Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwor
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7CiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKIHZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpOwogdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5oCmluZGV4IDhmNzYxMmUuLjdjMTkxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29y
a2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJuIGEgdmVjdG9yIG9mIHByb3h5
IHNlcnZlcnMgZm9yIHRoZSBnaXZlbiBVUkwuCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2Vy
dmVyc0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKTsKK1ZlY3Rv
cjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdv
cmtpbmdDb250ZXh0Kik7CiAKIC8vIENvbnZlcnRzIHRoZSBnaXZlbiB2ZWN0b3Igb2YgcHJveHkg
c2VydmVycyB0byBhIFBBQyBzdHJpbmcsIGFzIGRlc2NyaWJlZCBpbgogLy8gaHR0cDovL3dlYi5h
cmNoaXZlLm9yZy93ZWIvMjAwNjA0MjQwMDUwMzcvd3AubmV0c2NhcGUuY29tL2VuZy9tb3ppbGxh
LzIuMC9yZWxub3Rlcy9kZW1vL3Byb3h5LWxpdmUuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCBjZDc2OGYyLi4yOGNm
MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZENvbnRlbnRTbmlmZigpIGNvbnN0CiAgICAgcmV0dXJuIGQtPm1fc2hvdWxkQ29udGVudFNuaWZm
OwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3Qg
S1VSTCYgdXJsKQorYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2hvdWxkRm9yY2VD
b250ZW50U25pZmZpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKaW5kZXggZTk2YWU3OS4uOTE2Nzg0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODIsNyArODIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBi
b29sIHNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIHNob3VsZENv
bnRlbnRTbmlmZlVSTChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udGVu
dFNuaWZmVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIHZvaWQgZm9yY2VDb250ZW50U25p
ZmZpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGNlMTM0ODYuLmMwY2E4OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKQEAgLTQxLDcgKzQxLDcgQEAgT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAg
IGNsYXNzIENyZWRlbnRpYWw7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAg
Y2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNs
YXNzIFJlc291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGRlNTJkMDMuLjE1NDY4MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBlKFJlc291cmNlSGFuZGxlOjpO
b0ZhaWx1cmUpCiAgICAgICAgICAgICAsIG1fZmFpbHVyZVRpbWVyKGxvYWRlciwgJlJlc291cmNl
SGFuZGxlOjpmaXJlRmFpbHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgS1VSTCYg
dXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7CisgICAgICAgICAgICBjb25zdCBVUkwmIHVybCA9
IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsK
ICAgICAgICAgICAgIG1fcGFzcyA9IHVybC5wYXNzKCk7CiAgICAgICAgICAgICBtX2ZpcnN0UmVx
dWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggMTk1ZjRhZS4uNGVm
OWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xMTMsMTQgKzExMywxNCBAQCBib29sIFJlc291cmNl
UmVxdWVzdEJhc2U6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLmlzTnVsbCgpOwog
fQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25zdCAKK2NvbnN0
IFVSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCiB7CiAgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAogICAgIAogICAgIHJldHVybiBtX3VybDsKIH0KIAotdm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBSZXNvdXJjZVJl
cXVlc3RCYXNlOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7IAogICAgIHVwZGF0ZVJlc291cmNl
UmVxdWVzdCgpOyAKIApAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKICAgICAgICAg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CiB9CiAKLWNvbnN0IEtVUkwmIFJlc291
cmNlUmVxdWVzdEJhc2U6OmZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QKK2NvbnN0IFVSTCYg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdAogewogICAg
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKICAgICAKICAgICByZXR1cm4gbV9maXJzdFBhcnR5
Rm9yQ29va2llczsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK3ZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5Rm9yQ29va2llcykKIHsgCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCmluZGV4IDAxODQ1NzQuLjE0MDU3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
UHJpb3JpdHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDggKzY0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25z
dDsKLSAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOwog
CiAgICAgICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNzUsOCArNzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwoKSBjb25z
dDsgLy8gTWF5IHJldHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KICAgICAgICAg
dm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgICAg
IAotICAgICAgICBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0OwotICAg
ICAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzKTsKKyAgICAgICAgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNv
bnN0OworICAgICAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBodHRw
TWV0aG9kKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcm
IGh0dHBNZXRob2QpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZShjb25zdCBL
VVJMJiB1cmwsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKKyAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0QmFzZShjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgcG9saWN5KQogICAgICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICAgICAsIG1fY2Fj
aGVQb2xpY3kocG9saWN5KQogICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChzX2RlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwpCkBAIC0xODEsMTEgKzE4MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIFRoZSBSZXNvdXJjZVJlcXVlc3Qgc3ViY2xhc3MgbWF5ICJzaGFkb3ci
IHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgICAg
IHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgS1VSTCBtX3Vy
bDsKKyAgICAgICAgVVJMIG1fdXJsOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IG1fY2FjaGVQb2xpY3k7CiAgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsgLy8g
MCBpcyBhIG1hZ2ljIHZhbHVlIGZvciBwbGF0Zm9ybSBkZWZhdWx0IG9uIHBsYXRmb3JtcyB0aGF0
IGhhdmUgb25lLgotICAgICAgICBLVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAg
IFVSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9k
OwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheTsKQEAgLTIxNSwxMSArMjE1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSgpIHsgfQotICAgICAgICBLVVJMIG1fdXJsOworICAg
ICAgICBVUkwgbV91cmw7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgbV9j
YWNoZVBvbGljeTsKICAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOwotICAgICAgICBL
VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JD
b29raWVzOwogCiAgICAgICAgIFN0cmluZyBtX2h0dHBNZXRob2Q7CiAgICAgICAgIE93blB0cjxD
cm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAppbmRleCBlNGU2M2JjLi40MDUyMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogewogfQog
Ci1SZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jl
c291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgOiBt
X3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCkBAIC0xMzgsMTQgKzEzOCwxNCBAQCBib29sIFJl
c291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25zdAogICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2ws
ICJodHRwcyIpOwogfQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkg
Y29uc3QKK2NvbnN0IFVSTCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnVybCgpIGNvbnN0CiB7CiAg
ICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKICAgICByZXR1cm4gbV91cmw7IAogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGxh
enlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKaW5kZXggNDliZGM3MC4uMmNmYjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMjgsNyArMjgsNyBA
QAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKICNpbmNsdWRlICJIVFRQSGVhZGVy
TWFwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFRpbWluZy5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU1
LDggKzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9p
c051bGw7IH0KICAgICBib29sIGlzSFRUUCgpIGNvbnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJs
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYgdXJsKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1pbWVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAg
ICB9OwogCiAgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNl
QmFzZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAg
dm9pZCBsYXp5SW5pdChJbml0TGV2ZWwpIGNvbnN0OwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93
IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEtVUkwgbV91cmw7Cisg
ICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4
cGVjdGVkQ29udGVudExlbmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFz
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YUJhc2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSgpIHsgfQotICAgIEtVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVj
dGVkQ29udGVudExlbmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKaW5kZXggMmMwMjc0ZC4uZTdjMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQg
aW50IGJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKIAotU29ja2V0U3RyZWFtSGFuZGxl
QmFzZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBj
bGllbnQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3N0YXRlKENvbm5lY3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCmluZGV4IDdkZWQ0ZGMuLmY3OTQ3MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWZuZGVmIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2VfaAogI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9TdHJlYW1CdWZm
ZXIuaD4KIApAQCAtNTYsMTMgKzU2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0
IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgICAgIGJvb2wgc2VuZFBl
bmRpbmdEYXRhKCk7CiAgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNs
b3NlKCkgPSAwOwogCi0gICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFVSTCBtX3VybDsKICAg
ICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgU3RyZWFt
QnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICAgICAgU29ja2V0U3RyZWFt
U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCmluZGV4IGJmZjY2NzYuLjVhOGM0ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CiAgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5j
cHAKaW5kZXggNjYxYzBlZi4uNjE1OTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0Jl
cnJ5LmNwcApAQCAtMjQsMjggKzI0LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBjb29raWVNYW5hZ2VyKCkuc2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0
dHBPbmx5Q29va2llKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vICdIdHRw
T25seScgY29va2llcyBzaG91bGQgbm8gYmUgYWNjZXNzaWJsZSBmcm9tIHNjcmlwdHMsIHNvIHdl
IGZpbHRlciB0aGVtIG91dCBoZXJlLgogICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0Q29v
a2llKHVybCwgTm9IdHRwT25seUNvb2tpZSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVNYW5hZ2Vy
KCkuZ2V0Q29va2llKHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiB9CiAKLWJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IFVSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gIWNvb2tpZU1hbmFnZXIoKS5jb29raWVKYXIo
KS5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxQ
YXJzZWRDb29raWU+ID4gcmVzdWx0OwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdDb29raWVz
KHJlc3VsdCwgdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVD
b29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGNvb2tp
ZU1hbmFnZXIoKS5yZW1vdmVDb29raWVXaXRoTmFtZSh1cmwsIG5hbWUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwMzU4OTYuLjE2NjFiNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVk
ZW50aWFsQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpZiBFTkFCTEUoQkxBQ0tCRVJSWV9DUkVERU5USUFMX1BFUlNJU1QpCiAjaW5jbHVkZSAi
Q3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUhhc2gu
aCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1FbmNyeXB0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcAppbmRleCAxNmFlMjRhLi43MGYzYzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya0pvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L05ldHdvcmtKb2IuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJNSU1FU25pZmZpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiTmV0d29ya01hbmFnZXIuaCIKQEAgLTExNyw3ICsxMTcsNyBAQCBOZXR3b3JrSm9iOjp+
TmV0d29ya0pvYigpCiAKIHZvaWQgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVySWQs
CiAgICAgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAotICAgIGNvbnN0IEtVUkwmIHVybCwK
KyAgICBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0
d29ya1JlcXVlc3QmIHJlcXVlc3QsCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlLAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrU3RyZWFtRmFjdG9yeSogc3Ry
ZWFtRmFjdG9yeSwKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZU5v
dGlmeU11bHRpcGFydEhlYWRlclJlY2VpdmVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdAog
CiB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZVNldENvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIEtVUkwgdXJsID0gbV9yZXNwb25zZS51cmwoKTsKKyAgICBVUkwgdXJsID0g
bV9yZXNwb25zZS51cmwoKTsKICAgICBDb29raWVNYW5hZ2VyJiBtYW5hZ2VyID0gY29va2llTWFu
YWdlcigpOwogICAgIGlmICgobWFuYWdlci5jb29raWVQb2xpY3koKSA9PSBDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCiAgICAgICAgICYmIChtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSAhPSB1cmwpCkBAIC02
MTgsNyArNjE4LDcgQEAgYm9vbCBOZXR3b3JrSm9iOjpyZXRyeUFzRlRQRGlyZWN0b3J5KCkKIAog
ICAgIEFTU0VSVChtX2hhbmRsZSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBt
X2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7Ci0gICAgS1VSTCB1cmwgPSBuZXdSZXF1ZXN0LnVybCgp
OworICAgIFVSTCB1cmwgPSBuZXdSZXF1ZXN0LnVybCgpOwogICAgIHVybC5zZXRQYXRoKHVybC5w
YXRoKCkgKyAiLyIpOwogICAgIG5ld1JlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgbmV3UmVxdWVz
dC5zZXRNdXN0SGFuZGxlSW50ZXJuYWxseSh0cnVlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBib29s
IE5ldHdvcmtKb2I6OmhhbmRsZVJlZGlyZWN0KCkKICAgICBpZiAobG9jYXRpb24uaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJs
KCksIGxvY2F0aW9uKTsKKyAgICBVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJsKCksIGxvY2F0aW9u
KTsKICAgICBpZiAoIW5ld1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtODEzLDcgKzgxMyw3IEBAIE5ldHdvcmtKb2I6OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtK
b2I6OnNlbmRSZXF1ZXN0V2l0aENyZWRlbnRpYWxzKFByb3RlY3Rpb25TCiAgICAgaWYgKCFtX2hh
bmRsZSkKICAgICAgICAgcmV0dXJuIFNlbmRSZXF1ZXN0Q2FuY2VsbGVkOwogCi0gICAgS1VSTCBu
ZXdVUkwgPSBtX3Jlc3BvbnNlLnVybCgpOworICAgIFVSTCBuZXdVUkwgPSBtX3Jlc3BvbnNlLnVy
bCgpOwogICAgIGlmICghbmV3VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFNlbmRSZXF1
ZXN0Q2FuY2VsbGVkOwogCkBAIC04MzIsMTAgKzgzMiwxMCBAQCBOZXR3b3JrSm9iOjpTZW5kUmVx
dWVzdFJlc3VsdCBOZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFscyhQcm90ZWN0
aW9uUwogICAgICAgICAgICAgaG9zdCA9IG1fcmVzcG9uc2UudXJsKCkuaG9zdCgpOwogICAgICAg
ICAgICAgcG9ydCA9IG1fcmVzcG9uc2UudXJsKCkucG9ydCgpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gcHJveHlJbmZvIHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJv
dG9jb2wuIEtVUkwgY2FuJ3QgcGFyc2UgdGhpcywgc28gc3RpY2sgaHR0cAorICAgICAgICAgICAg
Ly8gcHJveHlJbmZvIHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJvdG9jb2wuIFVSTCBj
YW4ndCBwYXJzZSB0aGlzLCBzbyBzdGljayBodHRwCiAgICAgICAgICAgICAvLyBvbiB0aGUgZnJv
bnQuCiAgICAgICAgICAgICAvLyAoV2UgY291bGQgc3BsaXQgaW50byBob3N0IGFuZCBwb3J0IGJ5
IGhhbmQsIGJ1dCB0aGF0IGdldHMgaGFyZCB0byBwYXJzZSB3aXRoIElQdjYgdXJscywKLSAgICAg
ICAgICAgIC8vIHNvIGJldHRlciB0byByZXVzZSBLVVJMJ3MgcGFyc2luZy4pCisgICAgICAgICAg
ICAvLyBzbyBiZXR0ZXIgdG8gcmV1c2UgVVJMJ3MgcGFyc2luZy4pCiAgICAgICAgICAgICBTdHJp
bmdCdWlsZGVyIHByb3h5QWRkcmVzczsKICAgICAgICAgICAgIGlmICh0eXBlID09IFByb3RlY3Rp
b25TcGFjZVByb3h5SFRUUCkKICAgICAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKCJo
dHRwOi8vIik7CkBAIC04NDMsNyArODQzLDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1
bHQgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblMKICAg
ICAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKCJodHRwczovLyIpOwogICAgICAgICAg
ICAgcHJveHlBZGRyZXNzLmFwcGVuZChwcm94eUluZm8uYWRkcmVzcyk7CiAKLSAgICAgICAgICAg
IEtVUkwgcHJveHlVUkwoS1VSTCgpLCBwcm94eUFkZHJlc3MudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICBVUkwgcHJveHlVUkwoVVJMKCksIHByb3h5QWRkcmVzcy50b1N0cmluZygpKTsKICAgICAg
ICAgICAgIGhvc3QgPSBwcm94eVVSTC5ob3N0KCk7CiAgICAgICAgICAgICBwb3J0ID0gcHJveHlV
UkwucG9ydCgpOwogICAgICAgICB9CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCB2b2lkIE5ldHdvcmtK
b2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxOZXR3b3JrSm9iPiopCiAgICAgTmV0d29ya01h
bmFnZXI6Omluc3RhbmNlKCktPmRlbGV0ZUpvYih0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrSm9i
Ojpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVz
dWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3b3JrSm9iOjpub3Rp
ZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCByZXN1bHQsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkp
OwogICAgIEFTU0VSVCh1cmwgPT0gbV9yZXNwb25zZS51cmwoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaAppbmRl
eCAzZWNjYjFhLi5mYTM0ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZShpbnQgcGxheWVySWQsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwK
LSAgICAgICAgY29uc3QgS1VSTCYsCisgICAgICAgIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYsCiAgICAgICAgIFBhc3NSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+LAogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29y
a1N0cmVhbUZhY3RvcnkqLApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbmRlZFN0YXR1c0NvZGU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbWltZVR5cGUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3Vs
dChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiAgICAgLy8gSW1wbGVtZW50YXRpb24g
b2YgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHB1cmUgdmlydHVhbHMuCiAgICAgdmlydHVhbCB2
b2lkIGZyYW1lRGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcAppbmRleCA5MjMx
NGYwLi5lYWZkYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKQEAgLTE0MiwxMiArMTQy
LDEyIEBAIGludCBOZXR3b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBT
dHJpbmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBSZXNv
dXJjZUhhbmRsZSBkb2Vzbid0IGdvIG91dCBvZiBzY29wZSB3aGlsZSBjYWxsaW5nIGNhbGxiYWNr
cy4KICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGd1YXJkSm9iKGpvYik7CiAKLSAgICBLVVJM
IHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKICAg
ICAvLyBPbmx5IGxvYWQgdGhlIGluaXRpYWwgdXJsIG9uY2UuCiAgICAgYm9vbCBpc0luaXRpYWwg
PSAodXJsID09IG1faW5pdGlhbFVSTCk7CiAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgbV9p
bml0aWFsVVJMID0gS1VSTCgpOworICAgICAgICBtX2luaXRpYWxVUkwgPSBVUkwoKTsKIAogICAg
IC8vIEFsd2F5cyByZXJlYWQgY29va2llcyBvbiBhIHJlZGlyZWN0CiAgICAgaWYgKHJlZGlyZWN0
Q291bnQpCkBAIC0xNTYsOCArMTU2LDggQEAgaW50IE5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYihp
bnQgcGxheWVySWQsIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgUGFzc1JlZlAKICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3QgcGxhdGZvcm1SZXF1ZXN0OwogICAg
IHJlcXVlc3QuaW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChwbGF0Zm9ybVJlcXVlc3QsIGZyYW1l
LT5sb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpICYmIHN0YXRpY19jYXN0PEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT5j
b29raWVzRW5hYmxlZCgpLCBpc0luaXRpYWwsIHJlcmVhZENvb2tpZXMpOwogCi0gICAgLy8gR1VS
TCBhbmQgS1VSTCBjb25zaWRlciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBo
dHRwOi8vIGlzIHBhcnNlZCBhcwotICAgIC8vIGh0dHA6LyBieSBLVVJMIGFuZCBjb25zaWRlcmVk
IHZhbGlkLCB3aGlsZSBHVVJMIGNvbnNpZGVycyBpdCBpbnZhbGlkLgorICAgIC8vIEdVUkwgYW5k
IFVSTCBjb25zaWRlciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBodHRwOi8v
IGlzIHBhcnNlZCBhcworICAgIC8vIGh0dHA6LyBieSBVUkwgYW5kIGNvbnNpZGVyZWQgdmFsaWQs
IHdoaWxlIEdVUkwgY29uc2lkZXJzIGl0IGludmFsaWQuCiAgICAgaWYgKCFwbGF0Zm9ybVJlcXVl
c3QudXJsKCkuaXNfdmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpGaWx0ZXJTdHJlYW06OlN0YXR1c0Vycm9ySW52YWxpZFVybDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFn
ZXIuaAppbmRleCAxZDgzM2RhLi4yODZjYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaApAQCAt
MTksNyArMTksNyBAQAogI2lmbmRlZiBOZXR3b3JrTWFuYWdlcl9oCiAjZGVmaW5lIE5ldHdvcmtN
YW5hZ2VyX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2luZ2xl
dG9uLmg+CkBAIC00Myw4ICs0Myw4IEBAIHZvaWQgcHJvdGVjdGlvblNwYWNlVG9QbGF0Zm9ybUF1
dGgoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06CiBjbGFzcyBO
ZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGhyZWFkVW5zYWZl
U2luZ2xldG9uPE5ldHdvcmtNYW5hZ2VyPiB7CiAgICAgU0lOR0xFVE9OX0RFRklOSVRJT05fVEhS
RUFEVU5TQUZFKE5ldHdvcmtNYW5hZ2VyKQogcHVibGljOgotICAgIHZvaWQgc2V0SW5pdGlhbFVS
TChjb25zdCBLVVJMJiB1cmwpIHsgbV9pbml0aWFsVVJMID0gdXJsOyB9Ci0gICAgS1VSTCBpbml0
aWFsVVJMKCkgeyByZXR1cm4gbV9pbml0aWFsVVJMOyB9CisgICAgdm9pZCBzZXRJbml0aWFsVVJM
KGNvbnN0IFVSTCYgdXJsKSB7IG1faW5pdGlhbFVSTCA9IHVybDsgfQorICAgIFVSTCBpbml0aWFs
VVJMKCkgeyByZXR1cm4gbV9pbml0aWFsVVJMOyB9CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5
ZXJJZCwgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gam9iLCBGcmFtZSosIGJvb2wgZGVmZXJz
TG9hZGluZyk7CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgUGFzc1JlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gam9iLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZSosIGJvb2wgZGVm
ZXJzTG9hZGluZyk7CiAgICAgYm9vbCBzdG9wSm9iKFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+
KTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgc3RhcnRKb2IoaW50IHBsYXll
cklkLCBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5k
bGU+LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29y
a1N0cmVhbUZhY3RvcnkqLCBGcmFtZSosIGludCBkZWZlckxvYWRpbmdDb3VudCA9IDAsIGludCBy
ZWRpcmVjdENvdW50ID0gMCwgYm9vbCByZXJlYWRDb29raWVzID0gZmFsc2UpOwogCiAgICAgVmVj
dG9yPE5ldHdvcmtKb2IqPiBtX2pvYnM7Ci0gICAgS1VSTCBtX2luaXRpYWxVUkw7CisgICAgVVJM
IG1faW5pdGlhbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5
L1Byb3h5U2VydmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMzNiMjA2Mi4uYTcxYjkyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Byb3h5U2Vy
dmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L1Byb3h5U2VydmVyQmxhY2tCZXJyeS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFBy
b3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFZlY3RvcjxQ
cm94eVNlcnZlcj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MmFhMWQ4Li5iZDEz
YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVGFyZ2V0SXNVbnNwZWNpZmllZCwKICAgICB9OwogICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICA6
IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAg
ICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93
bmxvYWQoZmFsc2UpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQog
ICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
cG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3Qo
ZmFsc2UpCiAgICAgICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKQEAgLTc5LDcg
Kzc5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAgICAgICwgbV9tdXN0
SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93bmxvYWQoZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
UmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0YzFhZDY5Li5jYmYxN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwg
ZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1f
aXNNdWx0aXBhcnRQYXlsb2FkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5k
bGUuaAppbmRleCA4MGVjNDFiLi5jODIyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRs
ZS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAog
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFt
SGFuZGxlPiwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGaWx0ZXJTdHJlYW0sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZShncm91cE5hbWUsIHVybCwgY2xpZW50KSk7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKGdy
b3VwTmFtZSwgdXJsLCBjbGllbnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlKCk7CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25z
dCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgIE93blB0cjxCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFtPiBtX3NvY2tldFN0cmVhbTsKICAgICBpbnQgbV9z
dGF0dXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5j
cHAKaW5kZXggYjFhNGRlYi4uY2M5NTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRT
dHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNrQmVycnkuaCIKQEAgLTQ3
LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6
OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRs
ZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21Q
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jz
cy9SU1NBdG9tUGFyc2VyLmNwcAppbmRleCA1NWNlM2MzLi4yNDJjOTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9y
c3MvUlNTQXRvbVBhcnNlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUlNTQXRvbVBhcnNlcjo6UlNT
QXRvbVBhcnNlcigpCiAKIGJvb2wgUlNTQXRvbVBhcnNlcjo6cGFyc2VCdWZmZXIoY29uc3QgY2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoLCBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIGVuY29k
aW5nKQogewotICAgIG1fdXJsID0gS1VSTChibGFua1VSTCgpLCB1cmwpOworICAgIG1fdXJsID0g
VVJMKGJsYW5rVVJMKCksIHVybCk7CiAgICAgcmV0dXJuIHBhcnNlWG1sRG9jKHhtbFJlYWRNZW1v
cnkoYnVmZmVyLCBsZW5ndGgsIHVybCwgZW5jb2RpbmcsIFhNTF9QQVJTRV9OT0JMQU5LUyB8IFhN
TF9QQVJTRV9OT05FVCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCmluZGV4IDg2
NWY1MGYuLmM0ZDc5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCkBAIC0xOSw3ICsx
OSw3IEBACiAjaWZuZGVmIFJTU0F0b21QYXJzZXJfaAogI2RlZmluZSBSU1NBdG9tUGFyc2VyX2gK
IAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSU1NQYXJz
ZXJCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgcGFyc2VDb250ZW50KGNvbnN0IFN0cmluZyYgYmFzZSwgeG1sTm9kZSop
OwogICAgIFN0cmluZyBwYXJzZUF1dGhvcih4bWxOb2RlKik7CiAgICAgU3RyaW5nIHBhcnNlQ2F0
ZWdvcnkoeG1sTm9kZSopOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1MGY2OThiLi5mMzVjMTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNs
dWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTkzLDcgKzkzLDcg
QEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBmaWx0ZXJDb29raWVzKENGQXJyYXlSZWYg
dW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBDRkhUVFBD
b29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdoaWNoIHdvdWxkIGJlIHNlbnQg
YXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKQEAgLTExNyw3ICsxMTcs
NyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRD
b29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tp
ZXNDRi5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdl
dCgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGID0gdXJs
LmNyZWF0ZUNGVVJMKCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25z
dCBLVQogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVy
Q0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRiA9IHVybC5jcmVhdGVDRlVSTCgpOwogCkBAIC0xMzcsMTMgKzEzNywx
MyBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1ib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tp
ZUFjY2VwdFBvbGljeShzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJu
IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9j
dW1lbnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lB
bHdheXM7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nv
b2tpZXMuY2xlYXIoKTsKIApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAppbmRleCAxYmFmNTgxLi4wNzVhYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTUsOCArNTUs
OCBAQCBib29sIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVt
UHJlZmVyZW5jZXMoKQogICAgIGlmICghcHJveHlTZXR0aW5ncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBLVVJMKFBhcnNlZFVS
TFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6
Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
aHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5j
cmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0
d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQo
KSkpOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENG
KENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGlu
Z3MuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmluZGV4IDEyZjNiMTEuLjcxMTE4ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNG
TmV0LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQgcHJv
Y2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJy
YXlSZWYgcHIKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChW
ZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIGNvbnN0IEtVUkwmIHVybCkKK3N0YXRp
YyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNl
cnZlcnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwogICAgIGlmICghcHJveHlTZXR0aW5ncykKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMg
dm9pZCBhZGRQcm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2
ZXJzLCBjb25zdCBLVVJMJgogICAgIHByb2Nlc3NQcm94eVNlcnZlcnMocHJveHlTZXJ2ZXJzLCBw
cm94aWVzRm9yVVJMLmdldCgpLCBjZlVSTC5nZXQoKSk7CiB9CiAKLVZlY3RvcjxQcm94eVNlcnZl
cj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0Nv
bnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICBWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCBhMmE2ZmQ3Li5hZTFjMWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ0ZORVRXT1JLKQog
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NGRXJyb3IuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrRXJyb3JzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggNzFh
YWYxYTguLjI2ZTczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHko
KSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNh
biBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgICAgICBLVVJMIHVybFdpdGhD
cmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3Jl
ZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFz
cyhkLT5tX3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRl
bnRpYWxzKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwo
KQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewot
ICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9w
YXNzID0gdXJsLnBhc3MoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRw
TWV0aG9kKCk7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAg
ICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwg
dXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAg
ICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAg
ICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CkBAIC02MTMsNyArNjEzLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNy
ZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRl
bnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgCi0gICAg
ICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlm
IChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAg
ICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgp
OyAgICAgIAogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MzQ5
Y2U4Li42Y2YyNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVz
dEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsKSAKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVl
c3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYg
dXJsKSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAg
ICAgICB7CiAgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBlMGE1ZGQ0Li4x
M2E1ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwg
ZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1f
aW5pdExldmVsKENvbW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgICAgICAsIG1fcGxhdGZvcm1S
ZXNwb25zZUlzVXBUb0RhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCAyNTRiMDM0Li45OWJi
ZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRs
ZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgcGxhdGZv
cm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CiAKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMo
KTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggOTE0YTU3NTUuLmZjMmQyOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYgX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
S1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBj
bGllbnQpCiAgICAgLCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rp
b25UeXBlKFVua25vd24pCkBAIC02NSw3ICs2NSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
CiAKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndz
cyIpKTsKIAotICAgIEtVUkwgaHR0cHNVUkwoS1VSTCgpLCAiaHR0cHM6Ly8iICsgbV91cmwuaG9z
dCgpKTsKKyAgICBVUkwgaHR0cHNVUkwoVVJMKCksICJodHRwczovLyIgKyBtX3VybC5ob3N0KCkp
OwogICAgIG1faHR0cHNVUkwgPSBodHRwc1VSTC5jcmVhdGVDRlVSTCgpOwogCiAgICAgY3JlYXRl
U3RyZWFtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDhkMTgxZjMuLjljZDhhOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAj
aW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgogCiAjaW5jbHVkZSA8d3RmL0RhdGVN
YXRoLmg+CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgYWRkTWF0Y2hpbmdDdXJsQ29v
a2llKGNvbnN0IGNoYXIqIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnMKIAogfQog
Ci1zdGF0aWMgU3RyaW5nIGdldE5ldHNjYXBlQ29va2llRm9ybWF0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZ2V0TmV0c2NhcGVDb29raWVGb3Jt
YXQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQ29uc3Ry
dWN0cyBhIGNvb2tpZSBzdHJpbmcgaW4gTmV0c2NhcGUgQ29va2llIGZpbGUgZm9ybWF0LgogCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZXROZXRzY2FwZUNvb2tpZUZvcm1hdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGNvb2tpZVN0
ci50b1N0cmluZygpOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIENVUkwqIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogCkBAIC0yNDgsNyArMjQ4LDcg
QEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXIKICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsK
IH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGh0dHBvbmx5KQor
c3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwgYm9vbCBodHRwb25seSkKIHsKICAgICBT
dHJpbmcgY29va2llczsKICAgICBDVVJMKiBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKQEAgLTI4
NCwyOSArMjg0LDI5IEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0CiAgICAgcmV0dXJuIGNvb2tp
ZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKTsKIH0KIAotU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCB0cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykK
K2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1
cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNl
OyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
KQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcAppbmRleCBhZGMwM2ZkLi5mYjIwOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMjQ4
LDcgKzI0OCw3IEBAIEN1cmxEb3dubG9hZDo6fkN1cmxEb3dubG9hZCgpCiAgICAgbW92ZUZpbGVU
b0Rlc3RpbmF0aW9uKCk7CiB9CiAKLXZvaWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9h
ZExpc3RlbmVyKiBsaXN0ZW5lciwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBDdXJsRG93bmxvYWQ6
OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFIKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4
KTsKIAotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVxdWVzdC51cmwoKSk7CisgICAg
VVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3QudXJsKCkpOwogCiAgICAgaW5pdChsaXN0
ZW5lciwgdXJsKTsKIApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRS
ZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAgICBpZiAoaHR0cENvZGUg
Pj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwg
PSAwOwogICAgICAgICAgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxlLCBD
VVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2Uu
c2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwogCiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpKSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGY3NWFjOGYu
LmQ5MmI0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIEN1cmxEb3du
bG9hZCgpOwogICAgIH5DdXJsRG93bmxvYWQoKTsKIAotICAgIHZvaWQgaW5pdChDdXJsRG93bmxv
YWRMaXN0ZW5lciosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGluaXQoQ3VybERv
d25sb2FkTGlzdGVuZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGluaXQoQ3Vy
bERvd25sb2FkTGlzdGVuZXIqLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgc3RhcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVy
Q3VybC5jcHAKaW5kZXggMjEyNzY4YS4uMTE3MzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKQEAgLTI2
LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZl
cj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4
dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBj
b25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAg
ICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRl
eCA3ZjM0ZGIyLi5jOTE4ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMjMxLDcgKzIz
MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKSkgewogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7Ci0gICAgICAgICAgICBLVVJMIHVybFRvU3RvcmUg
PSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJs
VG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKICAgICAgICAgICAg
IENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLCB1cmxUb1N0b3JlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKaW5kZXggYTBmMmEyNC4uN2RkNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVS
ZXNwb25zZSAoQ1VSTCogaGFuZGxlLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdQogICAgICBj
b25zdCBjaGFyKiBoZHI7CiAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGhh
bmRsZSwgQ1VSTElORk9fRUZGRUNUSVZFX1VSTCwgJmhkcik7CiAgICAgIEFTU0VSVF9VTlVTRUQo
ZXJyLCBDVVJMRV9PSyA9PSBlcnIpOwotICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgaGRyKSk7CisgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VVJMKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIGhkcikpOwogICAgICBpZiAoZC0+Y2xpZW50KCkpCiAgICAgICAgICBkLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGpvYiwgZC0+bV9yZXNwb25zZSk7CiAgICAgIGQt
Pm1fcmVzcG9uc2Uuc2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCBz
dGF0aWMgYm9vbCBnZXRQcm90ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFByb3RlYwogICAgIGlmIChlcnIgIT0gQ1VSTEVfT0spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7Cisg
ICAgVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogCiAgICAgU3RyaW5nIGhvc3QgPSBr
dXJsLmhvc3QoKTsKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBrdXJsLnByb3RvY29sKCk7CkBAIC0z
OTMsNyArMzkzLDcgQEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNp
emVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICAgICAgY29uc3QgY2hh
ciogaGRyOwogICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5GT19FRkZFQ1RJVkVf
VVJMLCAmaGRyKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIGhkcikpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChVUkwoUGFyc2VkVVJM
U3RyaW5nLCBoZHIpKTsKIAogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KGh0dHBDb2RlKTsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50
LVR5cGUiKSkubG93ZXIoKSk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGljIHNpemVfdCBoZWFk
ZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRh
dGEpCiAgICAgICAgIGlmIChpc0h0dHBSZWRpcmVjdChodHRwQ29kZSkpIHsKICAgICAgICAgICAg
IFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlv
biIpOwogICAgICAgICAgICAgaWYgKCFsb2NhdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
ICAgICBLVVJMIG5ld1VSTCA9IEtVUkwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbG9jYXRp
b24pOworICAgICAgICAgICAgICAgIFVSTCBuZXdVUkwgPSBVUkwoam9iLT5maXJzdFJlcXVlc3Qo
KS51cmwoKSwgbG9jYXRpb24pOwogCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
ZGlyZWN0ZWRSZXF1ZXN0ID0gam9iLT5maXJzdFJlcXVlc3QoKTsKICAgICAgICAgICAgICAgICBy
ZWRpcmVjdGVkUmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCBib29s
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRTY2hlZHVsZWRKb2JzKCkKIAogdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUq
IGpvYikKIHsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOworICAg
IFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAogICAgIGlmIChrdXJsLnBy
b3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgaGFuZGxlRGF0YVVSTChqb2IpOwpAQCAtODE1LDcg
KzgxNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRjaFN5bmNocm9ub3Vz
Sm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
dGFydEpvYihSZXNvdXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3VybCA9IGpvYi0+Zmly
c3RSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVy
bCgpOwogCiAgICAgaWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBoYW5kbGVE
YXRhVVJMKGpvYik7CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwK
IHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFu
ZGxlKiBqb2IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBhbGxvd2VkUHJvdG9jb2xzID0gQ1VS
TFBST1RPX0ZJTEUgfCBDVVJMUFJPVE9fRlRQIHwgQ1VSTFBST1RPX0ZUUFMgfCBDVVJMUFJPVE9f
SFRUUCB8IENVUkxQUk9UT19IVFRQUzsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVz
dCgpLnVybCgpOworICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAog
ICAgIC8vIFJlbW92ZSBhbnkgZnJhZ21lbnQgcGFydCwgb3RoZXJ3aXNlIGN1cmwgd2lsbCBzZW5k
IGl0IGFzIHBhcnQgb2YgdGhlIHJlcXVlc3QuCiAgICAga3VybC5yZW1vdmVGcmFnbWVudElkZW50
aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MTQ3MmUwLi5hNzVhNzFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5o
CkBAIC0zNiwyMyArMzYsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291
cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQorICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBV
c2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBS
ZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qo
KQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNl
UHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
CmluZGV4IDQ5ODVlYjMuLmFlMDliODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
KyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmls
ZW5hbWUpLAogICAgICAgICAgIG1fcmVzcG9uc2VGaXJlZChmYWxzZSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlLmgKaW5kZXggNjQxMzllNS4uYTgyMzE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMg
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0
U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFu
ZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGUoKTsKIApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwor
ICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50Kik7CiAKICAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVy
IHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCiAgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKaW5kZXggODkxZTk2ZS4uNzlhZGMz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpp
bmRleCBiYzIyMzc1Li42NTM3NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2ll
U3RvcmFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKIApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNv
b2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29v
a2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
QEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1UKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggODMzMTViMC4u
Y2VmNmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJSZXNv
dXJjZUVycm9yLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRl
eCAwOTQwMGExLi5lNzNjNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogewogICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2Fu
IG9ubHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOiBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCiAgICAgaWYgKCgh
ZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVx
dWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBLVVJMIHVy
bFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxX
aXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3Jl
ZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0
aENyZWRlbnRpYWxzKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
cwogICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29s
SXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikgJiYgZC0+bV9jb250ZXh0LT5zaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCiAgICAgICAgIHJlcXVlc3Qu
Y2xlYXJIVFRQUmVmZXJyZXIoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJs
KCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9
IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKICAgICBkLT5tX2xhc3RI
VFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgLy8gdG8gaWdub3JlIGl0IGZvciBhIHBhcnRp
Y3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0b2dldGhlcikuCiAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS82ODY3NTk4PiBnYWxsZXJ5Lm1lLmNvbSBpcyB0ZW1wb3Jhcmls
eSB3aGl0ZWxpc3RlZCwgc28gdGhhdCBRdWlja1RpbWUgcGx1Zy1pbiBjb3VsZCBzZWUgdGhlIGNy
ZWRlbnRpYWxzLgogICAgICAgICBDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbCwg
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAg
ICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0g
Y2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFsU3Rv
cmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBw
cm90ZWN0aW9uU3BhY2VdKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDU1YWVhYzIuLjljMjQ2NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFy
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFy
UXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29va2llSmFyUXQuaCIKIAogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFy
LmgiCiAjaW5jbHVkZSAiVGhpcmRQYXJ0eUNvb2tpZXNRdC5oIgpAQCAtNDYsNyArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRD
b29raWVKYXJRdCA9IDA7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBRTmV0d29ya0Nvb2tp
ZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29y
a0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CiAgICAgaWYgKCFqYXIpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhCiAgICAgamFyLT5zZXRDb29raWVzRnJvbVVybChjb29raWVzLCB1cmxGb3JDb29raWVzKTsK
IH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUU5ldHdvcmtDb29raWVK
YXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgp
OwogICAgIGlmICghamFyKQpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBVUkwmIHVybCkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5j
b250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29v
a2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBA
IC0xMTEsMjAgKzExMSwyMCBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiBy
ZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIq
IGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nl
c3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwog
ICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNlcnZlclF0LmNwcAppbmRleCAwYmYzNjg3Mi4u
YWFlNjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Q
cm94eVNlcnZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Byb3h5U2VydmVyUXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8UU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyPgpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCitWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFByb3h5U2VydmVyPiBzZXJ2ZXJzOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCBhNmUwODQwLi44Yjc5MWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkKICAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgp
LnBhdGgoKSk7CiAgICAgfQogCi0gICAgS1VSTCB1cmwobV9yZXBseVdyYXBwZXItPnJlcGx5KCkt
PnVybCgpKTsKKyAgICBVUkwgdXJsKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKSk7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVUeXBlLmxvd2VyKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+aGVhZGVy
KFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseVdyYXBwZXItPmVuY29kaW5nKCksIFN0
cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlSGFuZGxlUXQuY3BwCmluZGV4IDg0YWJhNGUuLjk1NWI4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0
LmNwcApAQCAtOTksNyArOTksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAg
aWYgKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIElmIGNyZWRlbnRpYWxzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFk
ZCB0aGVtIHRvIHRoZSB1cmwsCiAgICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3Nl
ZCB0byBRTmV0d29ya1JlcXVlc3QuCi0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZp
cnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJz
dFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQt
Pm1fdXNlcik7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7
CiAgICAgICAgIGQtPm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpA
QCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgaWYgKCFkLT5t
X3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElm
IGNyZWRlbnRpYWxzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFkZCB0aGVtIHRv
IHRoZSB1cmwsCiAgICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3NlZCB0byBRTmV0
d29ya1JlcXVlc3QuCi0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGQtPm1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhkLT5tX2ZpcnN0
UmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1f
dXNlcik7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAg
ICAgICAgIGQtPm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0
LmgKaW5kZXggYzhhOTkwOC4uZWI3Yjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zOSwyMyArMzksMjMgQEAg
Y2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVi
bGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
KyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpIAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KHVybCwgcG9saWN5KQogICAgICAgICB7CiAgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVm
ZXJyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDQ3ZTU2NmIu
LjdkZWZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9u
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUs
IGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICB7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRT
dHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0
U3RyZWFtSGFuZGxlLmgKaW5kZXggOWU2ZWFjMC4uODcwMDg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBA
IC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2Nr
ZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1I
YW5kbGUodXJsLCBjbGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRT
dHJlYW1IYW5kbGU+IGNyZWF0ZShRVGNwU29ja2V0KiBzb2NrZXQsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxl
KHNvY2tldCwgY2xpZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGUoKTsKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAg
ICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCopOwogICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCosIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBz
dHJlYW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5k
bGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUuaAppbmRleCBmNDQ3Y2MyLi5jMTU2MGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVQcml2YXRlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSA6IHB1YmxpYyBRT2Jq
ZWN0IHsKICAgICBRX09CSkVDVAogcHVibGljOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZh
dGUoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgIFNvY2tldFN0cmVhbUhh
bmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgVVJMJik7CiAgICAgU29ja2V0
U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBRVGNwU29ja2V0Kik7CiAg
ICAgflNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApp
bmRleCAxMDNkYzFmLi45NjE4YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUVycm9yLmgiCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2Nr
ZXRTdHJlYW1IYW5kbGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgS1VSTCYgdXJsKQorU29ja2V0U3Ry
ZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1I
YW5kbGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9zdHJlYW1IYW5k
bGUgPSBzdHJlYW1IYW5kbGU7CiAgICAgbV9zb2NrZXQgPSAwOwpAQCAtMTgzLDcgKzE4Myw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6c29ja2V0U3NsRXJyb3JzKGNvbnN0IFFM
aXN0PFFTc2xFcnJvcj4mIGVycm9yKQogfQogI2VuZGlmCiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6
U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CkBAIC0x
OTEsNyArMTkxLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKIH0KIAogU29ja2V0U3RyZWFt
SGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkKLSAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoS1VS
TCgpLCBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKFVSTCgpLCBjbGllbnQp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAl
cCIsIHRoaXMsIG1fY2xpZW50KTsKICAgICBtX3AgPSBuZXcgU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZSh0aGlzLCBzb2NrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGViNmZjYzguLmRkNWRiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db29r
aWVKYXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtODMsNyArODMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGEKICAgICBzb3VwX2Nvb2tpZXNfZnJlZShleGlzdGluZ0Nvb2tpZXMpOwogfQog
Ci1zdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0
aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKIHsKICAgICBTb3Vw
Q29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICgh
amFyKQpAQCAtMTI4LDIyICsxMjgsMjIgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwKICAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVzLmdldCgpKTsKIH0KIAotU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCB0
cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsK
ICAgICByZXR1cm4gISFjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAg
U291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKQEAgLTE2
Niw3ICsxNjYsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUph
ckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmluZGV4
IDUwYjMyZGUuLmM4NWZlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZl
Y3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBO
ZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVS
TChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudC4KICAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAppbmRleCBmNjYwZTkwLi44NDZlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1Jl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLy8gV2Ug
YWx3YXlzIHB1dCB0aGUgY3JlZGVudGlhbHMgaW50byB0aGUgVVJMLiBJbiB0aGUgQ0ZOZXR3b3Jr
LXBvcnQgSFRUUCBmYW1pbHkgY3JlZGVudGlhbHMgYXJlIGFwcGxpZWQgaW4KICAgICAvLyB0aGUg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNhbGxiYWNrLCBidXQgbGlic291cCBy
ZXF1aXJlcyB1cyB0byB1c2UgdGhpcyBtZXRob2QgdG8gb3ZlcnJpZGUKICAgICAvLyBhbnkgcHJl
dmlvdXNseSByZW1lbWJlcmVkIGNyZWRlbnRpYWxzLiBJdCBoYXMgaXRzIG93biBwZXItc2Vzc2lv
biBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMocmVxdWVz
dC51cmwoKSk7CisgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhyZXF1ZXN0LnVybCgpKTsKICAg
ICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0UGFzcyhwYXNzd29yZCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRp
YWxzKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdChSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBz
aG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBLVVJMJiBuZXdVUkwsIGJv
b2wgY3Jvc3NPcmlnaW4pCitzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBVUkwmIG5ld1VSTCwgYm9vbCBjcm9zc09yaWdpbikKIHsKICAgICBpZiAo
bWVzc2FnZS0+bWV0aG9kID09IFNPVVBfTUVUSE9EX0dFVCB8fCBtZXNzYWdlLT5tZXRob2QgPT0g
U09VUF9NRVRIT0RfSEVBRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYwLDcgKzQ2MCw3
IEBAIHN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICBS
ZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7CiAgICAg
U291cE1lc3NhZ2UqIG1lc3NhZ2UgPSBkLT5tX3NvdXBNZXNzYWdlLmdldCgpOwogICAgIGNvbnN0
IGNoYXIqIGxvY2F0aW9uID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShtZXNzYWdlLT5y
ZXNwb25zZV9oZWFkZXJzLCAiTG9jYXRpb24iKTsKLSAgICBLVVJMIG5ld1VSTCA9IEtVUkwoc291
cFVSSVRvS1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIGxvY2F0aW9uKTsKKyAg
ICBVUkwgbmV3VVJMID0gVVJMKHNvdXBVUklUb0tVUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVz
c2FnZSkpLCBsb2NhdGlvbik7CiAgICAgYm9vbCBjcm9zc09yaWdpbiA9ICFwcm90b2NvbEhvc3RB
bmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbmV3VVJMKTsKICAg
ICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMobmV3VVJMKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCBhZGRF
bmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QgQmxvYgogCiBzdGF0aWMgdm9pZCBhZGRFbmNvZGVkQmxvYlRvU291cE1lc3NhZ2VCb2R5KFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQsIHVuc2ln
bmVkIGxvbmcmIHRvdGFsQm9keVNpemUpCiB7Ci0gICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4g
YmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkp
LmdldEJsb2JEYXRhRnJvbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkp
OworICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8Qmxv
YlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBh
cnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkpOwogICAgIGlmICghYmxvYkRhdGEpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IGEwZDBiNGMuLmNmMjI2YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0LmgKQEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIHB1Ymxp
YzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQ
cm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0
RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291
cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisg
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKQEAgLTU3LDE0ICs1Nywx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwo
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGlu
Zyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2Fn
ZUZsYWdzPigwKSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcAppbmRleCBiNWE0YTBkLi40MzA3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgU291cFVSSSogUmVzb3VyY2VSZXF1ZXN0Ojpzb3VwVVJJ
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHNvdXBfdXJpX25ldyh1cmxTdHJpbmcudXRmOCgpLmRh
dGEoKSk7CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBtX3VybDsKKyAgICBVUkwgdXJsID0gbV91
cmw7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIFNvdXBVUkkqIHVy
aSA9IHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25z
ZS5oCmluZGV4IDM3MGY0MzAuLjQ4OTFmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwg
ZmlsZW5hbWUpCiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VG
bGFncz4oMCkpCiAgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmlj
YXRlRmxhZ3M+KDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IGE2YTUxNDUuLjg0OGZmY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0
U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKEdTb2NrZXRDb25uZWN0aW9u
KiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXRDb25uZWN0aW9uLCBj
bGllbnQpKTsgfQogCiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwpAQCAt
NjcsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fcmVhZEJ1
ZmZlcjsKICAgICAgICAgdm9pZCogbV9pZDsKIAotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAgICAg
ICAgIFNvY2tldFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiosIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCopOwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1z
IHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZVNvdXAuY3BwCmluZGV4IGJjZGQ5NGIuLjU1MDhmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgpAQCAtODAsNyArODAsNyBAQCBz
dGF0aWMgdm9pZCogYWN0aXZhdGVIYW5kbGUoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAg
ICAgcmV0dXJuIGlkOwogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSh1cmwsIGNsaWVudCkKICAgICAsIG1fcmVhZEJ1ZmZlcigwKQogewpAQCAtOTYsNyArOTYsNyBA
QCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogfQogCiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tl
dFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29ubmVjdGlvbiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KEtVUkwoKSwgY2xpZW50KQorICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShVUkwoKSwgY2xp
ZW50KQogICAgICwgbV9yZWFkQnVmZmVyKDApCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAK
aW5kZXggZjA3YWQ3Zi4uNTUzYmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFuZCB0aHVzIHRoZSBy
ZXF1ZXN0cyBhcmUgbm90IHByb3Blcmx5CiAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0
cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKIC8vIG5vdCB3YW50IHRvIGJy
ZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKLUtVUkwgc291
cFVSSVRvS1VSTChTb3VwVVJJKiBzb3VwVVJJKQorVVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSog
c291cFVSSSkKIHsKICAgICBHT3duUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3Ry
aW5nKHNvdXBVUkksIEZBTFNFKSk7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCBTdHJpbmc6OmZyb21V
VEY4KHVybFN0cmluZy5nZXQoKSkpOworICAgIFVSTCB1cmwoVVJMKCksIFN0cmluZzo6ZnJvbVVU
RjgodXJsU3RyaW5nLmdldCgpKSk7CiAKICAgICBpZiAoIXNvdXBVUkktPnBhc3N3b3JkKQogICAg
ICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBVUklVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBVUklVdGlscy5oCmluZGV4IDY5NzcyZTcuLjVmNmU4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmgKQEAg
LTI2LDEyICsyNiwxMiBAQAogI2lmbmRlZiBTb3VwVVJJVXRpbHNfaAogI2RlZmluZSBTb3VwVVJJ
VXRpbHNfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiB0eXBlZGVm
IHN0cnVjdCBfU291cFVSSSBTb3VwVVJJOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1LVVJMIHNv
dXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSk7CitVUkwgc291cFVSSVRvS1VSTChTb3VwVVJJ
KiBzb3VwVVJJKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAppbmRleCA3YjEyNmUwLi44Yzc5MDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUph
cldpbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5o
IgogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAgICAgU3RyaW5n
IHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXIKICAgICBJbnRlcm5ldFNldENvb2tpZShzdHIuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAg
LTY1LDI1ICs2NSwyNSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0
cE9ubHkgY29va2llCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250ZXh0KCks
IGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwm
IC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
ICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1
ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3Bw
CmluZGV4IGM2MTBlMjAuLjE0OTViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Byb3h5U2VydmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFBy
b3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3Rv
cjxQcm94eVNlcnZlcj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAppbmRleCAzMjBjNDVkLi4wZjY2Yjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZUhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
UmVzb3VyY2VIYW5kbGVXaW4uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJuZXRIYW5kbGUsIERX
T1JEX1BUUgogdm9pZCBSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCgpCiB7CiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKTsKLSAgICBuZXdSZXF1ZXN0LnNl
dFVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOworICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmlu
ZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDEwYjk1MjQuLmQx
ZWI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zMywyMyArMzMsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2Ugewog
cHVibGljOgogICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICB7CiAgICAgfQog
Ci0gICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVl
c3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgewogICAgICAgICBz
ZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgp
Ci0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCisgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMzgyNjY4My4uYmVj
MGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVz
b3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBl
eHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCiAgICAgewogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0
cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0
U3RyZWFtSGFuZGxlLmgKaW5kZXggNjI4MDhlYy4uMDMzNTBhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5k
bGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNv
Y2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFu
ZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgp
OwogCkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DbG9zZSgpOwogCiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgLy8gTm8gYXV0aGVu
dGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVu
dGlhbHMuCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3BwCmluZGV4
IGIyYjU0MGYuLjE2YWM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlV2luLmNwcApAQCAtMzIsMTQg
KzMyLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFu
ZGxlLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFt
SGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkK
ICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJk
Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcApp
bmRleCAzNGVjMWMwLi4wNzdiNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvUGFzdGVib2FyZE5peC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4
L1Bhc3RlYm9hcmROaXguY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0tVUkxRdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkY2E0ZWUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAicXVybC5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKGNv
bnN0IFFVcmwmIHVybCkKLXsKLSAgICAqdGhpcyA9IEtVUkwoS1VSTCgpLCB1cmwudG9FbmNvZGVk
KCkuY29uc3REYXRhKCksIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6b3BlcmF0b3IgUVVy
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFFVcmwobV9zdHJpbmcpOwotfQotCi1TdHJpbmcgS1VS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFFVcmw+KCp0aGlzKS50b0xvY2FsRmlsZSgpOwotCi0gICAgLy8gQSB2
YWxpZCBxcmMgcmVzb3VyY2UgcGF0aCBiZWdpbnMgd2l0aCBhIGNvbG9uLgotICAgIGlmIChwcm90
b2NvbElzKCJxcmMiKSkKLSAgICAgICAgcmV0dXJuICI6IiArIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhwYXRoKCkpOwotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlYjhlZGZkLi5jNTUzNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwm
IHBhc3RlYm9hcmRVUkwpCiAjZW5kaWYKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgQVNTRVJUKG5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
U3VwcG9ydC5oCmluZGV4IDQyODFjZDYuLmUyZDA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFBs
YXRmb3JtU3VwcG9ydF9oCiAjZGVmaW5lIFBsYXRmb3JtU3VwcG9ydF9oCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAKaW5kZXggZTkzYTc2My4uNTk5NWRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJz
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVi
c1F0LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmKQogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9CU3RyaW5nLmNwcAppbmRleCBmZTBmZTQ2Li5hMDFjZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQlN0cmluZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY4LDcgKzY4
LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIG1fYnN0ciA9
IFN5c0FsbG9jU3RyaW5nTGVuKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKIH0KIAotQlN0
cmluZzo6QlN0cmluZyhjb25zdCBLVVJMJiB1cmwpCitCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCBkYzFjMjdkLi40NTc2NzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlw
ZWRlZiB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBL
VVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIGNsYXNzIEJTdHJpbmcgewogICAgIHB1YmxpYzoK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCU3RyaW5nKGNv
bnN0IHdjaGFyX3QqLCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBTdHJp
bmcmKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgQlN0
cmluZyhjb25zdCBLVVJMJik7CisgICAgICAgIEJTdHJpbmcoY29uc3QgVVJMJik7CiAjaWYgVVNF
KENGKQogICAgICAgICBCU3RyaW5nKENGU3RyaW5nUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRl
eCBiZmEwYjY3Li4yNTAzNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1
ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxzaGxvYmouaD4KICNp
bmNsdWRlIDx3aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSApAQCAtMTcz
LDcgKzE3Myw3IEBAIHN0YXRpYyBGT1JNQVRFVEMqIHRleHRodG1sRm9ybWF0KCkKICAgICByZXR1
cm4gJnRleHRodG1sRm9ybWF0OwogfQogCi1IR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRh
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRh
YmxlVVJMKHVybC5zdHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmgKaW5kZXggZThkNDc1NS4uMmE1ZWUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsMTEgKzMzLDExIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotSEdMT0JBTCBjcmVhdGVH
bG9iYWxEYXRhKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CitIR0xPQkFM
IGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
CiBGT1JNQVRFVEMqIHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGMwOGRhNzQu
LjMxYTMyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4u
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKQEAgLTEyMSw3ICsx
MjEsNyBAQCBzdGF0aWMgRm9udCBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZv
bnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKQorRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5M
YWJlbCwgRm9udFJlbmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgLy8gVGhp
cyBpcyBtb3JlIG9yIGxlc3MgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBNYWMgT1MgWCBjb2RlLgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXgg
ZWFhYzE1MC4uODE2YTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhXbmREQy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtMzQ0LDcgKzM0NCw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQogI2VuZGlmCiB9CiAKLXN0
YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBT
dHJpbmcgdGl0bGUsIGJvb2wgd2l0aFBsYWluVGV4dCwgYm9vbCB3aXRoSFRNTCkKK3N0YXRpYyBi
b29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0
aXRsZSwgYm9vbCB3aXRoUGxhaW5UZXh0LCBib29sIHdpdGhIVE1MKQogewogICAgIEFTU0VSVChk
YXRhKTsKIApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgQ2xpcGJvYXJkRGF0
YVR5cGUgd2luVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAKICAgICBp
ZiAod2luVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKLSAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBLVVJMKEtVUkwoKSwgZGF0
YSksIFN0cmluZygpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjp3cml0
ZVVSTChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgVVJMKFVSTCgpLCBkYXRhKSwgU3RyaW5n
KCksIGZhbHNlLCB0cnVlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBl
VGV4dCkgewogICAgICAgICBTVEdNRURJVU0gbWVkaXVtID0gezB9OwpAQCAtNTY1LDcgKzU2NSw3
IEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgfQogCiAgICAgaWYgKCFsc3RybGVuKGZz
UGF0aEJ1ZmZlcikpIHsKLSAgICAgICAgS1VSTCBrdXJsKEtVUkwoKSwgdXJsKTsKKyAgICAgICAg
VVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwgPSB0cnVlOwogICAgICAgICAv
LyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRyYWcgb3IgZmlsZSB1cmwgc2hv
dWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCiAgICAgICAgIC8vIHRoZSBwYXRoLiBJZiB3ZSBj
YW4ndCBmaW5kIGl0LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUgbmFtZSBmb3IgYSBsaW5r
CkBAIC02NDAsMTQgKzY0MCwxNCBAQCBleGl0OgogICAgIHJldHVybiBocjsKIH0KIAotdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJMJiBrdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlU3RyKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChj
b25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiB7CiAgICAgaWYgKCFtX3dy
aXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkNvcmU6OndyaXRlVVJM
KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBrdXJsLCB0aXRsZVN0ciwgdHJ1ZSwgdHJ1ZSk7
CiAKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKLSAgICBBU1NFUlQodXJsLmNvbnRh
aW5zT25seUFTQ0lJKCkpOyAvLyBLVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KKyAgICBB
U1NFUlQodXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBl
bmNvZGVkLgogCiAgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0
bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CiAgICAgU3RyaW5nIGNvbnRlbnRTdHJp
bmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiArIHVybCArICJcclxuIik7CkBAIC03MjUs
NyArNzI1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBw
YXN0ZWJvYXJkVVJMKQogICAgIHdyaXRlVVJMVG9EYXRhT2JqZWN0KHBhc3RlYm9hcmRVUkwudXJs
LCBwYXN0ZWJvYXJkVVJMLnRpdGxlKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgQVNTRVJUKG5vZGUpOwogCkBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJu
IG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNv
bnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlz
RW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDAxLDcgKzEwMDEsNyBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgS1VSTCYgdXJs
LCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU2hvdmUgaW1hZ2UgZGF0
YSBpbnRvIGEgRGF0YU9iamVjdCBmb3IgdXNlIGFzIGEgZmlsZQogICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOwpAQCAtMTAzMiw3ICsxMDMyLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEtVUkwmIHVybCkKICAgICB3cml0ZUZpbGVUb0RhdGFPYmplY3QobV93cml0YWJs
ZURhdGFPYmplY3QuZ2V0KCksIGltYWdlRmlsZURlc2NyaXB0b3IsIGltYWdlRmlsZUNvbnRlbnQs
IGhEcm9wQ29udGVudCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxl
RGF0YU9iamVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURh
dGFPYmplY3QuZ2V0KCksIHVybCwgdGl0bGUsIHRydWUsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKaW5kZXggYmQ0
MGYyMC4uNDhkZTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NT
TEtleUdlbmVyYXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NT
TEtleUdlbmVyYXRvcldpbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBXZWJDb3JlOjpnZXRT
dXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgdikKICAgICB2LmFwcGVuZCgiTWVkaXVt
IEdyYWRlIik7CiB9CiAKLVN0cmluZyBXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgU3RyaW5nIGtleVN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCA4NTZjZWE5Li40MDU2ZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8a2V5
Z2VuPgotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0
cmluZygpOyB9CitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2ln
bmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBTdHJpbmcoKTsgfQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCiAjaWYgIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGY4Y2MwMTMuLmNjNjJjOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw3
IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTI4MSw3ICsyODEsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJh
c2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAog
ICAgIHJldHVybiBtaW1lVHlwZUZvclBsdWdpbi5nZXQocGx1Z2luQ2hvaWNlc1swXSk7CiB9CiAK
LVBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVy
bCwgU3RyaW5nJiBtaW1lVHlwZSkKK1BsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5k
UGx1Z2luKGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDZmYWU1ZjAu
LjhkN2VkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVn
aW5QYWNrYWdlOwogCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpOwogICAgICAgICBzdGF0aWMgaW50IHByZWZlcnJlZFBsdWdpbkNvbXBhcmUoY29u
c3Qgdm9pZCosIGNvbnN0IHZvaWQqKTsKIAotICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5kUGx1
Z2luKGNvbnN0IEtVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICAgICAgUGx1Z2luUGFja2Fn
ZSogZmluZFBsdWdpbihjb25zdCBVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1
Z2luUGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAg
ICAgICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwCmluZGV4IDUwNTlhZGIuLjhiM2JkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFBsdWdpblN0
cmVhbTo6c3RhcnRTdHJlYW0oKQogewogICAgIEFTU0VSVChtX3N0cmVhbVN0YXRlID09IFN0cmVh
bUJlZm9yZVN0YXJ0ZWQpOwogCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSBtX3Jlc291
cmNlUmVzcG9uc2UudXJsKCk7CisgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IG1fcmVzb3Vy
Y2VSZXNwb25zZS51cmwoKTsKIAogICAgIC8vIFNvbWUgcGx1Z2lucyAoRmxhc2gpIGV4cGVjdCB0
aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUgcGFzc2VkIGJhY2sgZGVjb2RlZCBhcyB0aGlzIGlzIHRo
ZQogICAgIC8vIGZvcm1hdCB1c2VkIHdoZW4gcmVxdWVzdGluZyB0aGUgVVJMLgpAQCAtMzg2LDcg
KzM4Niw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAgfSAKIH0KIAot
dm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IENTdHJpbmcmIHJlc3VsdFN0cmluZykKK3ZvaWQgUGx1Z2luU3RyZWFtOjpz
ZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IENTdHJpbmcm
IHJlc3VsdFN0cmluZykKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgUmVzb3VyY2VSZXNw
b25zZShyZXF1ZXN0VVJMLCAidGV4dC9wbGFpbiIsIHJlc3VsdFN0cmluZy5sZW5ndGgoKSwgIiIs
ICIiKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IDU1ZDE3MDIu
LjdjMDQ4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjgsNyAr
MjgsNyBAQAogI2RlZmluZSBQbHVnaW5TdHJlYW1faAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIHNldExvYWRNYW51YWxseShib29sIGxvYWRNYW51YWxseSkg
eyBtX2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsgfQogCi0gICAgICAgIHZvaWQgc2VuZEph
dmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5n
JiByZXN1bHRTdHJpbmcpOworICAgICAgICB2b2lkIHNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5nJiByZXN1bHRTdHJpbmcpOwogICAg
ICAgICB2b2lkIGNhbmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwogCiAgICAgICAgIHN0
YXRpYyBOUFAgb3duZXJGb3JTdHJlYW0oTlBTdHJlYW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGFmYzBhYWIuLjBiMmY4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBJbnN0YW5jZU1hcCYg
aW5zdGFuY2VNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc2NyaXB0
U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgc2Ny
aXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghcHJv
dG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDI2
LDcgKzQyNiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVz
dCogcmVxdWVzdCkKICAgICBpZiAobV9wYXJlbnRGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSAhPSBtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpICYm
ICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgfHwgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLmZpbmQo
dGFyZ2V0RnJhbWVOYW1lKSAhPSBtX3BhcmVudEZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgS1VSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNl
UmVxdWVzdCgpLnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2Fk
UmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIFN0cmluZyBqc1N0cmluZyA9
IHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJMKTsKIAogICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMo
KSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7CkBAIC01MTIsNyArNTEyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2Fk
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkK
IHsKICAgICBBU1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0
aG9kKCkgPT0gIkdFVCIgfHwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRw
TWV0aG9kKCkgPT0gIlBPU1QiKTsKIAotICAgIEtVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIE5QRVJSX0lOVkFMSURfVVJMOwpAQCAtNTQxLDcgKzU0MSw3IEBAIE5QRXJy
b3IgUGx1Z2luVmlldzo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1
ZXN0LCBib29sIHNlbmROb3RpCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1zdGF0
aWMgS1VSTCBtYWtlVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IGNoYXIqIHJlbGF0aXZl
VVJMU3RyaW5nKQorc3RhdGljIFVSTCBtYWtlVVJMKGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
Y2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHJlbGF0
aXZlVVJMU3RyaW5nOwogCkBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIEtVUkwgbWFrZVVSTChj
b25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKICAgICB1
cmxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICIiKTsKICAgICB1cmxTdHJpbmcucmVw
bGFjZVdpdGhMaXRlcmFsKCdccicsICIiKTsKIAotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVy
bFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmxTdHJpbmcpOwogfQogCiBOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFVSTE5vdGlmeShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIq
IHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSkKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdAogICAgIG1fcGFyYW1Db3VudCA9IHBhcmFtQ291bnQ7CiB9CiAKLVBsdWdp
blZpZXc6OlBsdWdpblZpZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4sIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KQorUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbiwgSFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKICAgICA6IG1fcGFyZW50RnJhbWUocGFyZW50RnJh
bWUpCiAgICAgLCBtX3BsdWdpbihwbHVnaW4pCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKQEAg
LTk0OCw3ICs5NDgsNyBAQCBib29sIFBsdWdpblZpZXc6OmlzQ2FsbGluZ1BsdWdpbigpCiAgICAg
cmV0dXJuIHNfY2FsbGluZ1BsdWdpbiA+IDA7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luVmlldz4g
UGx1Z2luVmlldzo6Y3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRy
PFBsdWdpblZpZXc+IFBsdWdpblZpZXc6OmNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0
IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
CiB7CiAgICAgLy8gaWYgd2UgZmFpbCB0byBmaW5kIGEgcGx1Z2luIGZvciB0aGlzIE1JTUUgdHlw
ZSwgZmluZFBsdWdpbiB3aWxsIHNlYXJjaCBmb3IKICAgICAvLyBhIHBsdWdpbiBieSB0aGUgZmls
ZSBleHRlbnNpb24gYW5kIHVwZGF0ZSB0aGUgTUlNRSB0eXBlLCBzbyBwYXNzIGEgbXV0YWJsZSBT
dHJpbmcKQEAgLTEzODIsNyArMTM4Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVG
b3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIqIHVybCwgY2hhCiAKICAg
ICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAgICAgY2FzZSBOUE5VUkxWQ29va2llOiB7Ci0gICAgICAg
IEtVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7CisgICAg
ICAgIFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKICAg
ICAgICAgaWYgKHUuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBnZXRG
cmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGZyYW1lKSB7
CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJM
KE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNoYQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBOUE5VUkxWUHJveHk6IHsKLSAgICAgICAgS1VSTCB1KG1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAo
dS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVu
dEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+bG9hZGVyKCkgOiAwOwpAQCAtMTQ0Myw3ICsxNDQz
LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2
YXJpYWJsZSwgY29uc3QgY2hhciogdXJsLCBjb24KIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsK
ICAgICBjYXNlIE5QTlVSTFZDb29raWU6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUt
PmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyBjb29raWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4
KHZhbHVlLCBsZW4pOwogICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZ2V0RnJhbWUocGFyZW50
RnJhbWUoKSwgbV9lbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
YzI0NWQzMS4uMTY2YTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc5
LDcgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OwogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgTW91c2VFdmVudDsKLSAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2lu
OwogI2VuZGlmCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgICAgICAgICAgLCBwdWJsaWMgUGx1Z2luTWFudWFsTG9hZGVyCiAgICAgICAgICAgICAg
ICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50
RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50
RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAg
ICAgICAgdmlydHVhbCB+UGx1Z2luVmlldygpOwogCiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBs
dWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luLmdldCgpOyB9CkBAIC0yMTcsNyArMjE3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luc1Bh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnNQYWdlOyB9CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9Ci0gICAgICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogI2lmIGRlZmluZWQoWFBfTUFDT1NYKSAm
JiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgYm9vbCBwb3BVcENvbnRleHRN
ZW51KE5QTWVudSopOwpAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJh
bWUsIGNvbnN0IEludFNpemUmLCBQbHVnaW5QYWNrYWdlKiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpOworICAgICAgICBQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3Qg
SW50U2l6ZSYsIFBsdWdpblBhY2thZ2UqLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
IAogICAgICAgICB2b2lkIHNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIGJvb2wg
c3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCgpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IG1fcGx1Z2luOwogICAg
ICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9lbGVtZW50OwogICAgICAgICBib29sIG1faXNTdGFy
dGVkOwotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFBs
dWdpblN0YXR1cyBtX3N0YXR1czsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG1faW52YWxpZFJl
Y3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRh
YmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKaW5kZXggZmJmZjJlOS4uMzY2MGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5j
bHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RMb2NhdGlvbi5oCmluZGV4IDVlZmU1ZjcuLmUxMjE5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgU2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CmluZGV4IGIzOWEzODAuLjg2OTJjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTMxMCwxMyArMzEwLDEzIEBAIEludFJlY3QgSGl0VGVzdFJlc3Vs
dDo6aW1hZ2VSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJl
bmRlckJveCgpLT5hYnNvbHV0ZUNvbnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
IH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKK1VSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5u
ZXJOb25TaGFyZWROb2RlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4g
VVJMKCk7CiAKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBt
X2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgQXRvbWljU3RyaW5nIHVy
bFN0cmluZzsKICAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoZW1iZWRU
YWcpCkBAIC0zMzAsMzcgKzMzMCwzNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1h
Z2VVUkwoKSBjb25zdAogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG1faW5u
ZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1h
Z2VTb3VyY2VVUkwoKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxT
dHJpbmcpKTsKIH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25zdAogewogICAgIGlmICgh
bV9pbm5lck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJl
dHVybiBVUkwoKTsKIAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUo
ZW1iZWRUYWcpICYmICFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcp
KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICBLVVJMIHVybCA9IG1faW5uZXJOb25T
aGFyZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhlbGVtZW50LT51cmwoKSkpOworICAgIFVSTCB1cmwgPSBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZWxlbWVudC0+dXJsKCkpKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmIChlbGVt
ZW50LT5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LT5zZXJ2
aWNlVHlwZSgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmxvd2VyKCkuZW5kc1dpdGgoIi5wZGYi
KSkpCiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4g
VVJMKCk7CiB9CiAKLUtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsdCA9IG1lZGlhRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gbWVkaWFFbHQtPmN1cnJlbnRTcmMoKTsKLSAgICByZXR1
cm4gS1VSTCgpOworICAgIHJldHVybiBVUkwoKTsKICNlbHNlCi0gICAgcmV0dXJuIEtVUkwoKTsK
KyAgICByZXR1cm4gVVJMKCk7CiAjZW5kaWYKIH0KIApAQCAtNTEwLDEwICs1MTAsMTAgQEAgdm9p
ZCBIaXRUZXN0UmVzdWx0Ojp0b2dnbGVNZWRpYU11dGVTdGF0ZSgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAorVVJMIEhpdFRl
c3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyVVJM
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVu
dChtX2lubmVyVVJMRWxlbWVudC5nZXQoKSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQobV9pbm5lclVS
TEVsZW1lbnQuZ2V0KCkpIHx8IG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGxpbmtUYWcp
KQpAQCAtNTIzLDcgKzUyMyw3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJM
KCkgY29uc3QKICAgICAgICAgdXJsU3RyaW5nID0gbV9pbm5lclVSTEVsZW1lbnQtPmdldEF0dHJp
YnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiAjZW5kaWYKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiBtX2lubmVy
VVJMRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaAppbmRleCBlYzUyMGY4Li5mNWQwOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xs
YmFyOwpAQCAtMTAzLDEwICsxMDMsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZURpc3Bs
YXlTdHJpbmcoKSBjb25zdDsKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKICAgICBJbnRSZWN0
IGltYWdlUmVjdCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0Owot
ICAgIEtVUkwgYWJzb2x1dGVQREZVUkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTWVkaWFV
UkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworICAgIFVSTCBh
YnNvbHV0ZUltYWdlVVJMKCkgY29uc3Q7CisgICAgVVJMIGFic29sdXRlUERGVVJMKCkgY29uc3Q7
CisgICAgVVJMIGFic29sdXRlTWVkaWFVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVMaW5r
VVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAgICAgYm9vbCBp
c0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJMaW5rKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtLmgKaW5kZXggZmM3MWEwOC4uZjhjYmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHlsZVNoYWRlci5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTQ4LDggKzQ4LDggQEAgY2xhc3Mg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU7CiBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShLVVJMIHZlcnRl
eFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCAKLSAgICAg
ICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21l
bnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKFVSTCB2ZXJ0ZXhT
aGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgCisgICAgICAg
IFVSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRT
aGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAogICAgICAgICBjb25z
dCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0
ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyLCBm
cmFnbWVudFNoYWRlclVSTCwgZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5n
cywgbWVzaFR5cGUpKTsKQEAgLTE0MywxMSArMTQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhY2hlKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKiBjYWNoZSkgeyBtX2NhY2hlID0g
Y2FjaGU7IH0KICAgICBib29sIGluQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlOyB9CiAg
ICAgCi0gICAgS1VSTCB2ZXJ0ZXhTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNo
YWRlclVSTDsgfQotICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBt
X2ZyYWdtZW50U2hhZGVyVVJMOyB9CisgICAgVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmVydGV4U2hhZGVyVVJMOyB9CisgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQogCiBwcml2YXRlOgotICAgIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKFVSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRl
eFNoYWRlciwgVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBm
cmFnbWVudFNoYWRlciwgCiAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1U
eXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBD
dXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9n
cmFtKHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpCiAgICAgICAgICwgbV92ZXJ0
ZXhTaGFkZXIodmVydGV4U2hhZGVyKQpAQCAtMTcwLDggKzE3MCw4IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBUaGUgVVJMcyBmb3JtIHRoZSBrZXkgb2YgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSBpbiB0aGUgY2FjaGUgYW5kIGFyZSB1c2VkCiAgICAgLy8gdG8gbG9va3VwIHRoZSBTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0gd2hlbiBpdCdzIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAg
S1VSTCBtX3ZlcnRleFNoYWRlclVSTDsKLSAgICBLVVJMIG1fZnJhZ21lbnRTaGFkZXJVUkw7Cisg
ICAgVVJMIG1fdmVydGV4U2hhZGVyVVJMOworICAgIFVSTCBtX2ZyYWdtZW50U2hhZGVyVVJMOwog
CiAgICAgLy8gVGhlIENhY2hlIGlzIHJlc3BvbnNpYmxlIG9mIGludmFsaWRhdGluZyB0aGlzIHJl
ZmVyZW5jZS4KICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogbV9jYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA3MGY5OWFhLi4xYzYyZWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogfQogCi12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNv
bnN0CiB7CiAgICAgU1ZHRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAppbmRleCAxMzI4MWQ0Li40ZmM4
MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdDsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdDdXJzb3JFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKaW5kZXggMDllZmM2Ni4uNjJhNTZkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBTVkdEb2N1bWVudENsYXNzKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCBkYzBkMzQyLi42NTNmYTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogCiBjbGFzcyBTVkdEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBw
b3MpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VS
TCYpOworICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRiMTc1NTQuLjFjMWI0
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA5LDcg
KzIwOSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsCiAgICAgcmV0dXJuIEZFSW1hZ2U6OmNy
ZWF0ZVdpdGhJUklSZWZlcmVuY2UoZmlsdGVyLCBkb2N1bWVudCgpLCBocmVmKCksIHByZXNlcnZl
QXNwZWN0UmF0aW8oKSk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZH
RkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDFkZTZhODMuLjY5NjZkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHZvaWQg
Y2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAKaW5kZXggOTg5NGVjNC4uOGJiYmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0lt
YWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAor
dm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKaW5kZXggYmE1NGI5Ny4uNDRkNjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyRWxl
bWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhh
dmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcAppbmRleCA3NGZmNmUxLi5mNjVmNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogCiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBLVVJMIGJhc2UgPSBlbGVtZW50
KCktPmJhc2VVUkkoKTsKKyAgICBVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwogICAg
IGlmIChiYXNlLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOworICAgICAgICBy
ZXR1cm4gVVJMKGJhc2UsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1
dGUpKS5zdHJpbmcoKTsKICAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLmNvbXBsZXRl
VVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDdkOTExZjAuLjA5NGEy
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9p
ZCBTVkdTY3JpcHRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IGQ1Yzk0NmQuLjM3OTNiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgeyByZXR1
cm4gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3Vy
Y2VzKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAzMGU4
NDk5Li5hNjY3ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDkgKzUyLDkgQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVy
RnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICBpZiAoc3RhcnQgPT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgS1VSTCBiYXNl
ID0gc3RhcnQgPyBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZygwLCBzdGFy
dCkpIDogZG9jdW1lbnQuYmFzZVVSSSgpOworICAgIFVSTCBiYXNlID0gc3RhcnQgPyBVUkwoZG9j
dW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0KSkgOiBkb2N1bWVudC5iYXNl
VVJJKCk7CiAgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3Rh
cnQpOwotICAgIEtVUkwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOworICAgIFVSTCBr
dXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoa3VybCwgZG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm4gZnJh
Z21lbnRJZGVudGlmaWVyLnN1YnN0cmluZygxKTsKIApAQCAtNjIsMjggKzYyLDI4IEBAIFN0cmlu
ZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3Qg
U3RyaW5nJiB1cmwsIERvY3VtCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgS1VSTCB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIHVybCwgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmIGZyYWdtZW50SWRlbnRp
ZmllcikKK3N0YXRpYyBpbmxpbmUgVVJMIHVybEZyb21JUklTdHJpbmdXaXRoRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYgZnJh
Z21lbnRJZGVudGlmaWVyKQogewogICAgIHNpemVfdCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVy
ID0gdXJsLmZpbmQoJyMnKTsKICAgICBpZiAoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllciA9PSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgLy8gRXhjbHVkZSB0aGUgJyMnIGNoYXJhY3RlciB3aGVuIGRldGVybWluaW5nIHRoZSBm
cmFnbWVudElkZW50aWZpZXIuCiAgICAgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1YnN0cmlu
ZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyICsgMSk7CiAgICAgaWYgKHN0YXJ0T2ZGcmFnbWVu
dElkZW50aWZpZXIpIHsKLSAgICAgICAgS1VSTCBiYXNlKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJs
LnN1YnN0cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7Ci0gICAgICAgIHJldHVy
biBLVVJMKGJhc2UsIHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwor
ICAgICAgICBVUkwgYmFzZShkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoMCwgc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gVVJMKGJhc2UsIHVybC5z
dWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIHJldHVy
biBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJ
ZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFVSTChkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJz
dHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogfQogCiBFbGVtZW50KiBTVkdVUklS
ZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgaXJpLCBE
b2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyogZnJhZ21lbnRJZGVudGlmaWVyLCBEb2N1bWVudCog
ZXh0ZXJuYWxEb2N1bWVudCkKIHsKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZyYWdtZW50IGlkZW50
aWZpZXIgY29udGFpbmVkIHdpdGhpbiB0aGUgSVJJIHN0cmluZywgd2UgY2FuJ3QgbG9va3VwIGFu
IGVsZW1lbnQuCiAgICAgU3RyaW5nIGlkOwotICAgIEtVUkwgdXJsID0gdXJsRnJvbUlSSVN0cmlu
Z1dpdGhGcmFnbWVudElkZW50aWZpZXIoaXJpLCBkb2N1bWVudCwgaWQpOwotICAgIGlmICh1cmwg
PT0gS1VSTCgpKQorICAgIFVSTCB1cmwgPSB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRl
bnRpZmllcihpcmksIGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHVybCA9PSBVUkwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5oCmluZGV4IDM2ZTAxMTcuLmRkOTU2YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIElmIHRoZSBVUkkgbWF0Y2hlcyBvdXIgZG9j
dW1lbnRzIFVSTCwgd2UncmUgZGVhbGluZyB3aXRoIGEgbG9jYWwgcmVmZXJlbmNlLgotICAgICAg
ICBLVVJMIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVyaSk7CisgICAgICAgIFVSTCB1cmwg
PSBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmkpOwogICAgICAgICByZXR1cm4gIWVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC51cmwoKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNGIxMTBiMC4uNGNlYTY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBib29sIGlzRXh0ZXJuYWxSZWZlcmVuY2UgPSBpc0V4dGVybmFsVVJJUmVm
ZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc0V4dGVybmFsUmVmZXJl
bmNlKSB7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJl
ZigpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYo
KSk7CiAgICAgICAgICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAg
ICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHVybC5zdHJpbmcoKSkpOwogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNzVlMTJi
ZC4uZmFhMTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBA
IC0zNzIsNyArMzcyLDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
KTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5p
bml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLT5iZWdpbihLVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5
IGRvY3VtZW50CisgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS0+YmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGxv
YWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShkYXRhKCktPmRh
dGEoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+d3JpdGVyKCktPmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuY3BwCmluZGV4IDY0NzJlZDkuLjhhMWQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC02MCwyOCArNjAsMjggQEAgdm9pZCBBYnN0cmFjdFdv
cmtlcjo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVz
dHJveWVkKCk7IAogfQogCi1LVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2
ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4g
S1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSB0aGUgZHluYW1pYyBnbG9iYWwgc2NvcGUgKGJ1ZyAjMjc4ODcpCi0gICAg
S1VSTCBzY3JpcHRVUkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVy
bCk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxl
dGVVUkwodXJsKTsKICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJM
KCk7CiAgICAgfQogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhblJlcXVlc3Qoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAg
IH0KIAogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd1NjcmlwdEZyb21Tb3VyY2Uoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgp
OwogICAgIH0KIAogICAgIHJldHVybiBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmgKaW5kZXggNGVhYzMyMi4uNWRjNjY0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0aGUgcmVz
dWx0IGZvciB2YWxpZGl0eS4KLSAgICAgICAgS1VSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFVSTCByZXNvbHZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIGludHB0cl90IGFzSUQoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAg
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggM2VhZmQxMy4uOTI0MTkzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTQwLDE0ICs0MCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVh
dGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luKQorUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZT4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3Ms
IERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKIHsK
ICAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJl
ZihuZXcgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdz
LCB0aHJlYWQsIHRvcE9yaWdpbikpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5
UG9saWN5RnJvbVN0cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogICAg
IDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRv
cE9yaWdpbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBmNDY5NDMyLi40M2E1YjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIERl
ZGljYXRlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICAgICAgdmly
dHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQq
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAKaW5kZXggZGMyMjAzOC4uOTI5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+
IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94
eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdv
cmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2Vy
TG9hZGVyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyVGhyZWFkKHNjcmlwdFVSTCwgdXNlckFnZW50
LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHksIHdvcmtlck9iamVjdFBy
b3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9s
aWN5VHlwZSwgdG9wT3JpZ2luKSk7CiB9CiAKLURlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNh
dGVkV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVh
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0
dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFBy
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAg
ICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3
b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pCiAgICAg
LCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQogewpAQCAtNTUsNyArNTUs
NyBAQCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6On5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKQogewog
fQogCi1QYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6
OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
dG9wT3JpZ2luKQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2Vy
VGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gdG9wT3JpZ2luKQogewogICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKaW5kZXggYTcwYmU2
Yy4uMTk5OGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
clRocmVhZC5oCkBAIC00MSwxNiArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVj
dFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtl
ck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogICAg
ICAgICB2aXJ0dWFsIH5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKTsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NP
d25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
b3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3AoKSBPVkVSUklERTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pOworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pOwogCiAgICAgICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5Owog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IDk4NWFmMDAuLjVjMjZjOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCkBAIC02NCwxOSArNjQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
aGFyZWRXb3JrZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3Jr
ZXJQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlclJlcG9ydGlu
Z1Byb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94
eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJs
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRXb3JrZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CiAKICAgICB2b2lkIHNl
dFRocmVhZChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFk
ID0gdGhyZWFkOyB9CiAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBt
X3RocmVhZC5nZXQoKTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zaW5nOyB9Ci0gICAgS1VSTCB1cmwoKSBjb25zdAorICAgIFVSTCB1cmwoKSBjb25zdAogICAg
IHsKICAgICAgICAgLy8gRG9uJ3QgdXNlIG1fdXJsLmNvcHkoKSBiZWNhdXNlIGl0IGlzbid0IGEg
dGhyZWFkc2FmZSBtZXRob2QuCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICByZXR1cm4gVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIH0KIAogICAg
IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzb2xhdGVkQ29weSgpOyB9Ci0g
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luLCBjb25zdCBLVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKKyAgICBib29sIG1h
dGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eQogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwpAQCAtMTAzLDEyICsxMDMsMTIgQEAgcHVibGljOgog
ICAgIEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBjb25zdDsgLy8gUGFnZSBHcm91cFNl
dHRpbmdzIHVzZWQgYnkgd29ya2VyIHRocmVhZC4KIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3Jr
ZXJQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPik7CisgICAgU2hhcmVkV29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBVUkwmLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAgICAgdm9pZCBjbG9zZSgp
OwogCiAgICAgYm9vbCBtX2Nsb3Npbmc7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1f
dXJsOworICAgIFVSTCBtX3VybDsKICAgICAvLyBUaGUgdGhyZWFkIGlzIGZyZWVkIHdoZW4gdGhl
IHByb3h5IGlzIGRlc3Ryb3llZCwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHJv
eHkgc3RheXMgYXJvdW5kIHVudGlsIHRoZSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBleGl0cy4K
ICAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3RocmVhZDsKICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
TXV0ZXggbV93b3JrZXJEb2N1bWVudHNMb2NrOwogfTsKIAotU2hhcmVkV29ya2VyUHJveHk6OlNo
YXJlZFdvcmtlclByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCitTaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVk
V29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQogICAgIDogbV9jbG9zaW5nKGZhbHNlKQogICAgICwg
bV9uYW1lKG5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3VybCh1cmwuY29weSgpKQpAQCAt
MTI3LDcgKzEyNyw3IEBAIFNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlCiAgICAgQVNTRVJUKG1fb3Jp
Z2luLT5oYXNPbmVSZWYoKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNv
bnN0IEtVUkwmIHVybFRvTWF0Y2gpIGNvbnN0Citib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
LCBjb25zdCBVUkwmIHVybFRvTWF0Y2gpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIG9yaWdpbnMg
ZG9uJ3QgbWF0Y2gsIG9yIHRoZSBuYW1lcyBkb24ndCBtYXRjaCwgdGhlbiB0aGlzIGlzIG5vdCB0
aGUgcHJveHkgd2UgYXJlIGxvb2tpbmcgZm9yLgogICAgIGlmICghb3JpZ2luLT5lcXVhbChtX29y
aWdpbi5nZXQoKSkpCkBAIC0yODksNyArMjg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4sIHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+KTsK
LSAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgbG9hZChjb25zdCBVUkwmKTsK
IAogcHJpdmF0ZToKICAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgY2FsbGJhY2tzCkBA
IC0zMDksNyArMzA5LDcgQEAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmsKIHsKIH0KIAotdm9pZCBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU3Rh
eSBhbGl2ZSAoYW5kIGtlZXAgdGhlIFNoYXJlZFdvcmtlciBhbmQgSlMgd3JhcHBlciBhbGl2ZSkg
dW50aWwgdGhlIGxvYWQgZmluaXNoZXMuCiAgICAgdGhpcy0+cmVmKCk7CkBAIC00MDEsNyArNDAx
LDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6ZG9jdW1lbnREZXRhY2hl
ZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIG1fcHJveGllc1tpXS0+ZG9jdW1lbnREZXRh
Y2hlZChkb2N1bWVudCk7CiB9CiAKLXZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6
OmNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIs
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBNdXRleExvY2tlciBs
b2NrKG1fbG9jayk7CiAgICAgQVNTRVJUKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwp
LmdldCgpKSk7CkBAIC00MjYsMTIgKzQyNiwxMiBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5Ojpjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgog
fQogCiAvLyBDcmVhdGVzIGEgbmV3IFNoYXJlZFdvcmtlclByb3h5IG9yIHJldHVybnMgYW4gZXhp
c3Rpbmcgb25lIGZyb20gdGhlIHJlcG9zaXRvcnkuIE11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUg
dGhlIHJlcG9zaXRvcnkgbXV0ZXggaXMgaGVsZC4KLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJv
eHk+IERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIExvb2sgZm9yIGFuIGV4aXN0aW5nIHdvcmtlciwg
YW5kIGNyZWF0ZSBvbmUgaWYgaXQgZG9lc24ndCBleGlzdC4KICAgICAvLyBJdGVtcyBpbiB0aGUg
Y2FjaGUgYXJlIGZyZWVkIG9uIGFub3RoZXIgdGhyZWFkLCBzbyBkbyBhIHRocmVhZHNhZmUgY29w
eSBvZiB0aGUgVVJMIGJlZm9yZSBjcmVhdGluZyB0aGUgb3JpZ2luLAogICAgIC8vIHRvIG1ha2Ug
c3VyZSBubyByZWZlcmVuY2VzIHRvIGV4dGVybmFsIHN0cmluZ3MgbGluZ2VyLgotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3Byb3hpZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKCFt
X3Byb3hpZXNbaV0tPmlzQ2xvc2luZygpICYmIG1fcHJveGllc1tpXS0+bWF0Y2hlcyhuYW1lLCBv
cmlnaW4sIHVybCkpCiAgICAgICAgICAgICByZXR1cm4gbV9wcm94aWVzW2ldOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
CmluZGV4IDcwNWVmNDcuLjgyNjdjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtV
Ukw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKQEAg
LTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHdvcmtlclNj
cmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlKTsKIAogICAgICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBv
ZiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KCkKLSAgICAgICAgdm9pZCBjb25uZWN0
VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0
IGEgZG9jdW1lbnQgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHZvaWQgZG9jdW1lbnREZXRh
Y2hlZChEb2N1bWVudCopOwpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAgICAgICAgIH5EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeSgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkV29y
a2VyUHJveHk+IGdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYpOworICAg
ICAgICBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBnZXRQcm94eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFVSTCYpOwogICAgICAgICAvLyBNdXRleCB1c2VkIHRvIHByb3RlY3QgaW50
ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICBNdXRleCBtX2xvY2s7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCAyOGExZWVkLi5hYTUyNWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZlYXR1cmVPYnNlcnZlci5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAt
NjYsNyArNjYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgd29ya2VyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJM
KHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBl
Yyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGQ3MTY4NzIuLjFjZjVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MywxNCArNTMsMTQgQEAgUGFzc1Jl
ZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwcnBQb3J0KQogfQogCiAvLyBzdGF0aWMKLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU+IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRy
PEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFz
c093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJl
YWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKIHsKICAgICBSZWZQ
dHI8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUobmFtZSwgdXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQp
KTsKICAgICBjb250ZXh0LT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKICAgICByZXR1
cm4gY29udGV4dC5yZWxlYXNlKCk7CiB9CiAKLVNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGlu
Z3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQorU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6
OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNl
dHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKICAgICA6IFdvcmtlckdsb2JhbFNj
b3BlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCAwKQogICAgICwgbV9uYW1lKG5h
bWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmgKaW5kZXggN2NkOTliNy4uZTAxMzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMg
V29ya2VyR2xvYmFsU2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBXb3JrZXJH
bG9iYWxTY29wZSBCYXNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3Jr
ZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBh
c3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlKCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0
aHJlYWQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAg
ICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hh
cmVkV29ya2VyVGhyZWFkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0Nv
bnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KSBPVkVSUklERTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZGY0OTU5
Mi4uYTNjZGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
clJlcG9zaXRvcnkuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6aW5zdGFuY2UoKS5pc0F2YWlsYWJsZSgpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclJl
cG9zaXRvcnk6OmNvbm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6Y29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6Omluc3RhbmNlKCkuY29ubmVjdFRvV29ya2VyKHdvcmtlciwgcG9ydCwgdXJsLCBuYW1lLCBl
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJl
cG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9y
eS5oCmluZGV4IGMzZDg3ZWMuLjA0OWY4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiAgICAgY2xhc3MgU2hhcmVk
V29ya2VyOwogCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFz
c2VkIFNoYXJlZFdvcmtlciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQs
IGNyZWF0aW5nIGEgbmV3IHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4s
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGEgZG9j
dW1lbnQgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50RGV0
YWNoZWQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
VGhyZWFkLmNwcAppbmRleCBiYWIzOTU4Li4xYWMxNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVk
V29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2Vy
TG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2Vj
dXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdv
cmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5n
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9h
ZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyVGhy
ZWFkKG5hbWUsIHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29y
a2VyTG9hZGVyUHJveHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkpOwogfQogCi1TaGFyZWRX
b3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3Mq
IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3
b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRo
cmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBv
cnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBz
dGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKICAgICA6
IFdvcmtlclRocmVhZCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtl
ckxvYWRlclByb3h5LCB3b3JrZXJSZXBvcnRpbmdQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIDApCiAgICAgLCBtX25hbWUo
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKQEAgLTUzLDcgKzUzLDcgQEAgU2hhcmVkV29ya2VyVGhy
ZWFkOjp+U2hhcmVkV29ya2VyVGhyZWFkKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXJHbG9i
YWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29w
ZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4pCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGUobV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCBlODcwZDFmLi5jYTA1
YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgKQEAg
LTM5LDE0ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTaGFyZWRX
b3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91
cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJU
eXBlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclRocmVhZCgp
OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xv
YmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKKyAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91
cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9w
T3JpZ2luKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlclRo
cmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSk7CisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBH
cm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKaW5kZXggYzJmNjE5Ni4uYmE5MmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcApAQCAtODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogCiAgICAg
d29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2Vy
LT5yZXNvbHZlVVJMKHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29s
dmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGE4MzQ2ZGQuLmI3ZTZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVJ
bnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9Owog
Ci1Xb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5n
cywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9y
aWdpbikKK1dvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0
dGluZ3MsIFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW4pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQp
CiAgICAgLCBtX2dyb3VwU2V0dGluZ3Moc2V0dGluZ3MpCkBAIC0xMTcsMTcgKzExNywxNyBAQCB2
b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBwb2xpYwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRS
ZWNlaXZlSGVhZGVyKHBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CiAKLUtV
UkwgV29ya2VyR2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAorVVJMIFdvcmtlckdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3QKIHsKICAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBu
dWxsIHN0cmluZy4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25z
dHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBj
aGFuZ2UgdGhlIFVSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgaWYg
KHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOwogICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4gV29ya2Vycy4KLSAgICByZXR1cm4gS1VS
TChtX3VybCwgdXJsKTsKKyAgICByZXR1cm4gVVJMKG1fdXJsLCB1cmwpOwogfQogCi1TdHJpbmcg
V29ya2VyR2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3QKK1N0cmluZyBX
b3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdXNlckFnZW50OwogfQpAQCAtMjE3LDE4ICsyMTcsMTggQEAgdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0
aW9uQ29kZSYKICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGVjID0g
MDsKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdXJsc0VuZCA9IHVybHMuZW5k
KCk7Ci0gICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gY29t
cGxldGVkVVJMczsKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHVybHMuYmVnaW4oKTsgaXQgIT0gdXJsc0VuZDsgKytpdCkgewotICAgICAgICBjb25zdCBLVVJM
JiB1cmwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKCppdCk7CisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVS
TCgqaXQpOwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjb21w
bGV0ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgIH0KLSAgICBWZWN0b3I8S1VSTD46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7CisgICAgVmVjdG9yPFVSTD46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7CiAKLSAgICBmb3IgKFZlY3RvcjxL
VVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29t
cGxldGVkVVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPFdv
cmtlclNjcmlwdExvYWRlcj4gc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
KCkpOwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgICAgIHNjcmlwdExvYWRlci0+c2V0
VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU2NyaXB0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA3MjRiNDBlLi43OGFmNzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC02NSwxMSAr
NjUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICAgICAgdmlydHVh
bCBjb25zdCBVUkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOwogCiAgICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGlu
Z3MoKSB7IHJldHVybiBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZFUlJJREU7CiAKQEAgLTEz
OSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2VjdXJp
dHlPcmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdG9wT3JpZ2lu
LmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2lu
KTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtlclRocmVhZCosIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZvaWQgYXBwbHlDb250
ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsKQEAgLTE1OSw3ICsx
NTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJFdmVu
dFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKLSAgICAgICAgS1VS
TCBtX3VybDsKKyAgICAgICAgVVJMIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7
CiAgICAgICAgIE93blB0cjxHcm91cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggZDk3
YTA3Yy4uYTk1ZGM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgV29ya2VyOwogCiAg
ICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2Jh
bFNjb3BlUHJveHkoKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1p
bmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvY2F0aW9uLmgKaW5kZXggNGJkMzU5MS4uMTExMWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTG9jYXRpb24uaApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktF
UlMpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBXb3JrZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckxvY2F0aW9u
PiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlv
bj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29y
a2VyTG9jYXRpb24+IGNyZWF0ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJMb2NhdGlvbih1cmwpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogICAgICAgICBT
dHJpbmcgaHJlZigpIGNvbnN0OwogCkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigpOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBLVVJM
JiB1cmwpIDogbV91cmwodXJsKSB7IH0KKyAgICAgICAgZXhwbGljaXQgV29ya2VyTG9jYXRpb24o
Y29uc3QgVVJMJiB1cmwpIDogbV91cmwodXJsKSB7IH0KIAotICAgICAgICBLVVJMIG1fdXJsOwor
ICAgICAgICBVUkwgbV91cmw7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBi
NzRjZTQxLi4wMmViYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHN0
YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdl
dCgpKS0+dGhyZWFkKCktPnRocmVhZElEKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4g
d2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDhhN2VjOGQuLjE4OTZhODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDcgKzUzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9k
cyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUpIE9WRVJSSURFOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBPVkVSUklERTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+KSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IDkyMjcyMjYuLjhkYTRlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2Vy
U2NyaXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVybDsKIApAQCAtNzUsNyArNzUs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUq
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKIH0K
ICAgICAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJs
LCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09y
aWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewog
ICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVx
dWVzdCwgb3B0aW9ucyk7CiB9CiAKLWNvbnN0IEtVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVz
cG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNl
VVJMKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZhaWxlZCgpKTsKICAgICByZXR1cm4gbV9yZXNw
b25zZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmlu
ZGV4IGRjMWM1YmEuLjljYjRmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKQEAgLTU2LDE0ICs1NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclNjcmlwdExvYWRlcigp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOwot
ICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50Kik7CisgICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7CisgICAgICAg
IHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBV
UkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCop
OwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIAogICAgICAgICBTdHJpbmcgc2NyaXB0
KCk7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0g
ICAgICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNw
b25zZVVSTCgpIGNvbnN0OwogICAgICAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmFpbGVkOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCkBAIC05MSw4ICs5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsgICAgICAgIAogICAgICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTdHJpbmdCdWls
ZGVyIG1fc2NyaXB0OwotICAgICAgICBLVVJMIG1fdXJsOwotICAgICAgICBLVVJMIG1fcmVzcG9u
c2VVUkw7CisgICAgICAgIFVSTCBtX3VybDsKKyAgICAgICAgVVJMIG1fcmVzcG9uc2VVUkw7CiAg
ICAgICAgIGJvb2wgbV9mYWlsZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVy
OwogICAgICAgICBib29sIG1fZmluaXNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IDk4M2Y5OWQuLjVlNDkyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTY5LDEyICs2OSwxMiBAQCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6
OndvcmtlclRocmVhZENvdW50KCkKIHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRv
cE9yaWdpbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4g
Y3JlYXRlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRV
UkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKICAg
ICB9CiAKLSAgICBLVVJMIG1fc2NyaXB0VVJMOworICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBT
dHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1fZ3JvdXBTZXR0
aW5nczsKICAgICBTdHJpbmcgbV9zb3VyY2VDb2RlOwpAQCAtODMsMTAgKzgzLDEwIEBAIHB1Ymxp
YzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiBw
cml2YXRlOgotICAgIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVS
TCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBj
b250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50
U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIH07
CiAKLVdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25z
dCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNl
dHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWRTdGFydHVw
RGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCiAgICAgOiBtX3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQogICAgICwg
bV91c2VyQWdlbnQodXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zb3VyY2VDb2Rl
KHNvdXJjZUNvZGUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0xMDQsNyArMTA0LDcgQEAgV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3QKICAgICBtX2dyb3VwU2V0dGluZ3MtPnNldEluZGV4ZWREQkRhdGFiYXNl
UGF0aChzZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkuaXNvbGF0ZWRDb3B5KCkpOwog
fQogCi1Xb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJv
eHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQorV29ya2VyVGhyZWFkOjpX
b3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1By
b3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIDogbV90aHJlYWRJRCgwKQogICAgICwgbV93b3JrZXJM
b2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJv
eHkod29ya2VyUmVwb3J0aW5nUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aAppbmRleCBlYTM0OTQ4Li5kNWRiMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50Owog
ICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpA
QCAtNzEsMTAgKzcxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bik7CisgICAgICAgIFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwog
CiAgICAgICAgIC8vIEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29u
dGV4dCBmb3IgdGhlIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOworICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pID0gMDsKIAogICAgICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIHdv
cmtlciB0aHJlYWQuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBhY3Rp
b25zIGJlZm9yZS9hZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KICAgICAgICAgdmlydHVh
bCB2b2lkIHJ1bkV2ZW50TG9vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RP
TVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRleCAzODA2
NDNhLi4zZTIwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7CisgICAgUmVmUHRyPERvY3VtZW50PiBk
b2MgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIFVS
TCgpLCBmYWxzZSk7CiAgICAgZG9jLT5zZXRDb250ZW50KHN0cik7CiAgICAgcmV0dXJuIGRvYy5y
ZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxOWIx
OTk0Li5jMjc1YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ2
OSwxMiArNDY5LDEyIEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiAhbmFtZS5zdGFydHNXaXRoKHN0YXRpY0Rh
dGEtPm1fc2VjSGVhZGVyUHJlZml4LCBmYWxzZSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6
Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgb3BlbihtZXRob2QsIHVy
bCwgdHJ1ZSwgZWMpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
VVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGludGVybmFs
QWJvcnQoKTsKICAgICBTdGF0ZSBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTU1NCwxNyAr
NTU0LDE3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjCiAgICAgICAgIG1fc3RhdGUgPSBPUEVO
RUQ7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CisgICAg
VVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRV
c2VyKHVzZXIpOwogCiAgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMs
IGVjKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMs
IGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKKyAgICBVUkwgdXJs
V2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNl
cik7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDI0MWVhNDUuLmY4MDY0ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC04NiwxNiArODYsMTYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7
CiAgICAgaW50IHN0YXR1cyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhDcmVkZW50aWFscyhib29s
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBj
b25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVz
ZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IFVSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBh
c3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogCiAgICAgT3du
UHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBtX3VwbG9hZDsKIAotICAgIEtVUkwgbV91cmw7Cisg
ICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1f
cmVxdWVzdEhlYWRlcnM7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IDc4Nzg0NjIuLmRmODUzNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgWFNM
SW1wb3J0UnVsZTo6flhTTEltcG9ydFJ1bGUoKQogICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1v
dmVDbGllbnQodGhpcyk7CiB9CiAKLXZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
c2hlZXQpCit2b2lkIFhTTEltcG9ydFJ1bGU6OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAg
aWYgKG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNo
ZWV0KDApOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgp
CiAgICAgWFNMU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAg
ICAgaWYgKCFwYXJlbnRTaGVldC0+YmFzZVVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2Ug
cGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9
IEtVUkwocGFyZW50U2hlZXQtPmJhc2VVUkwoKSwgbV9zdHJIcmVmKS5zdHJpbmcoKTsKKyAgICAg
ICAgYWJzSHJlZiA9IFVSTChwYXJlbnRTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmlu
ZygpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4u
ICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFp
biB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuaAppbmRleCAzNTBjZGQ5Li43MmUwNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMSW1wb3J0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRS
dWxlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBYU0xJbXBvcnRS
dWxlKFhTTFN0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiBzaGVldCk7CiAgICAgCiAgICAgWFNMU3R5bGVTaGVldCogbV9wYXJlbnRT
dHlsZVNoZWV0OwogICAgIFN0cmluZyBtX3N0ckhyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuaAppbmRleCBkMzQ2YWFmLi5mZDFlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
LmgKQEAgLTQwLDIyICs0MCwyMiBAQCBjbGFzcyBYU0xJbXBvcnRSdWxlOwogICAgIAogY2xhc3Mg
WFNMU3R5bGVTaGVldCBGSU5BTCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFy
ZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVS
TCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0
UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwm
IGZpbmFsVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNo
ZWV0KHBhcmVudEltcG9ydCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZp
bmFsVVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBmYWxzZSkp
OwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGVFbWJl
ZGRlZChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IEtVUkwmIGZpbmFs
VVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVk
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgVVJMJiBmaW5hbFVSTCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnRO
b2RlLCBmaW5hbFVSTC5zdHJpbmcoKSwgZmluYWxVUkwsIHRydWUpKTsKICAgICB9CiAKICAgICAv
LyBUYWtpbmcgYW4gYXJiaXRyYXJ5IG5vZGUgaXMgdW5zYWZlLCBiZWNhdXNlIG93bmVyIG5vZGUg
cG9pbnRlciBjYW4gYmVjb21lIHN0YWxlLgogICAgIC8vIFhTTFRQcm9jZXNzb3IgZW5zdXJlcyB0
aGF0IHRoZSBzdHlsZXNoZWV0IGRvZXNuJ3Qgb3V0bGl2ZSBpdHMgcGFyZW50LCBpbiBwYXJ0IGJ5
IG5vdCBleHBvc2luZyBpdCB0byBKYXZhU2NyaXB0LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhT
TFN0eWxlU2hlZXQ+IGNyZWF0ZUZvclhTTFRQcm9jZXNzb3IoTm9kZSogcGFyZW50Tm9kZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBw
YXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJM
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVu
dE5vZGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCwgZmFsc2UpKTsKICAgICB9CkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNoZWNrTG9hZGVkKCk7CiAgICAgCi0gICAg
Y29uc3QgS1VSTCYgZmluYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsVVJMOyB9CisgICAg
Y29uc3QgVVJMJiBmaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KIAogICAg
IHZvaWQgbG9hZENoaWxkU2hlZXRzKCk7CiAgICAgdm9pZCBsb2FkQ2hpbGRTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYpOwpAQCAtOTQsMTggKzk0LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB0aXRsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFIHsgbV9vd25lck5vZGUg
PSAwOyB9Ci0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkwoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2ZpbmFsVVJMOyB9CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFhTTFN0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYg
ZmluYWxVUkwsIGJvb2wgZW1iZWRkZWQpOwotICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVs
ZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBm
aW5hbFVSTCk7CisgICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMLCBib29sIGVtYmVkZGVkKTsKKyAg
ICBYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCk7CiAgICAgCiAgICAgTm9kZSogbV9v
d25lck5vZGU7CiAgICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCBtX2ZpbmFsVVJM
OworICAgIFVSTCBtX2ZpbmFsVVJMOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogCiAgICAgVmVj
dG9yPE93blB0cjxYU0xJbXBvcnRSdWxlPiA+IG1fY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRleCA2N2ZmMWViLi5mZTc0ZTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgU09GVF9MSU5LKGxpYnhzbHQsIHhzbHRMb2FkU3R5bGVzaGVldFBJLCB4c2x0U3R5bGVz
aGVldFB0ciwgKHhtbERvY1B0ciBkb2MpLCAoZG8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Y
U0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorWFNMU3R5bGVT
aGVldDo6WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIDogbV9vd25lck5vZGUo
MCkKICAgICAsIG1fb3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpCiAgICAgLCBtX2ZpbmFsVVJMKGZp
bmFsVVJMKQpAQCAtNjcsNyArNjcsNyBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhT
TEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUgogewogfQog
Ci1YU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkK
K1hTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCwgIGJvb2wgZW1iZWRkZWQpCiAg
ICAgOiBtX293bmVyTm9kZShwYXJlbnROb2RlKQogICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5h
bFVSTCkKICAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggMGQwNzk1Mi4uYWViYTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yLmNwcApAQCAtNzYsMTAgKzc2LDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQ
cm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjCiAK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUgPT0g
InRleHQvcGxhaW4iKSB7Ci0gICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CisgICAg
ICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBv
d25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0cmlu
Z1RvWEhUTUxEb2N1bWVudFN0cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1F
VHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtV
UkwoKSwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJE
b2N1bWVudC0+dXJsKCkgOiBVUkwoKSwgZmFsc2UpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcs
IHdlIG5lZWQgdG8gc2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5l
dyBkb2N1bWVudAogICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3
ZSdyZSByZW5kZXJpbmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDZmMDg0OWQuLmU5NTI0YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAg
ICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRl
eHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OwogICAgICAgICB4
bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29u
dGV4dC0+bm9kZSk7Ci0gICAgICAgIEtVUkwgdXJsKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHVyaSkpOworICAgICAgICBVUkwgdXJsKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4odXJpKSk7CiAgICAgICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
aW5kZXggMzM4NzA5MS4uYjE4NjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBA
IHN0YXRpYyB2b2lkIHN3aXRjaFRvVVRGMTYoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KQogICAgIHht
bFN3aXRjaEVuY29kaW5nKGN0eHQsIEJPTUhpZ2hCeXRlID09IDB4RkYgPyBYTUxfQ0hBUl9FTkNP
RElOR19VVEYxNkxFIDogWE1MX0NIQVJfRU5DT0RJTkdfVVRGMTZCRSk7CiB9CiAKLXN0YXRpYyBi
b29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29s
IHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1
cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgdm9p
ZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIEFTU0VSVChYTUxEb2N1bWVudFBhcnNl
clNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwg
dXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCFzaG91bGRBbGxvd0V4
dGVybmFsTG9hZCh1cmwpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDRlN2E2ZjQuLmRkNmMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBL
VVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
ICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluOgorICAgICAgICBMZXQgdGhlIHNjcmlwdCB0byB0cnkgdG8gcmVuYW1lIGhlcmUuCisKIDIw
MTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRF
eHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0
R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDgzYjM4YzQuLmMxYzdmZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHBy
b2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0zOTMsNyAr
MzkzLDcgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkQXV0aG9yU2hl
ZXRARG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0
ckBWU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkQXV0aG9yU2hlZXRA
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRRUFBWFY/JFBhc3NSZWZQdHJA
VlN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3BhcnNlU3RyaW5nQFN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVfTkFC
VlN0cmluZ0BXVEZAQEBaLCA/cGFyc2VTdHJpbmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVA
QFFFQUFfTkFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Vt
cHR5U3RyaW5nQFdURkBAWUFBQlZTdHJpbmdAMUBYWiwgP2VtcHR5U3RyaW5nQFdURkBAWUFBRUJW
U3RyaW5nQDFAWFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEtVUkxA
V2ViQ29yZUBAQUFFWFhaLCA/aW52YWxpZGF0ZUBLVVJMQFdlYkNvcmVAQEFFQUFYWFopCisgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBQUVYWFosID9p
bnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/PzBTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAQUFFQFBBVlN0eWxlUnVsZUltcG9ydEAx
QEFCVlN0cmluZ0BXVEZAQEFCVUNTU1BhcnNlckNvbnRleHRAMUBAWiwgPz8wU3R5bGVTaGVldENv
bnRlbnRzQFdlYkNvcmVAQEFFQUFAUEVBVlN0eWxlUnVsZUltcG9ydEAxQEFFQlZTdHJpbmdAV1RG
QEBBRUJVQ1NTUGFyc2VyQ29udGV4dEAxQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
YWRkVXNlclNoZWV0QERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUFFWFY/
JFBhc3NSZWZQdHJAVlN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWiwgP2FkZFVz
ZXJTaGVldEBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFz
c1JlZlB0ckBWU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUFFQFhaLCA/
PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUVBQUBYWikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcAppbmRleCBiM2JhOGYzLi4xOTQ2ODg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwCkBAIC0y
MSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29r
aWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTM1LDcgKzM1LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogCiBzdGQ6
OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiBXZWJDb29raWVKYXI6OmNvb2tp
ZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdXJsKQogewotICAgIEtVUkwg
a3VybCA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1cmwp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICBj
b29raWVNYW5hZ2VyKCkuZ2V0UmF3Q29va2llcyhyYXdDb29raWVzLCBrdXJsLCBXaXRoSHR0cE9u
bHlDb29raWVzKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZz4gV2ViQ29va2llSmFyOjpjb29raWVzKGNvbnN0IEJsYWNrQmVycnkKIAog
dm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyYgdXJsLCBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nPiYgY29va2llcykKIHsKLSAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAg
ICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JlQ29v
a2llczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIGNvcmVDb29raWVzLmFwcGVuZChjb29raWVzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAppbmRleCAyZTYzOGU2Li44NzIy
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRD
b2RlYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29k
ZWMuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGV4dENvZGVjLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggMDBlNjg0MC4uNDk5ZWQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBjb25zdCBk
b3VibGUgbWF4aW11bUltYWdlRG9jdW1lbnRab29tVG9GaXRTY2FsZSA9IDI7CiBjb25zdCBkb3Vi
bGUgem9vbUZhY3RvckVwc2lsb24gPSAwLjAwMDE7CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB0byBw
YXJzZSBhIFVSTCBhbmQgZmlsbCBpbiBtaXNzaW5nIHBhcnRzLgotc3RhdGljIEtVUkwgcGFyc2VV
cmwoY29uc3QgU3RyaW5nJiB1cmwpCitzdGF0aWMgVVJMIHBhcnNlVXJsKGNvbnN0IFN0cmluZyYg
dXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcodXJsKTsKLSAgICBLVVJMIGt1cmwgPSBLVVJM
KEtVUkwoKSwgdXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5n
KTsKICAgICBpZiAoa3VybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkgewogICAgICAgICB1cmxTdHJp
bmcuaW5zZXJ0KCJodHRwOi8vIiwgMCk7Ci0gICAgICAgIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJs
U3RyaW5nKTsKKyAgICAgICAga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKTsKICAgICB9CiAK
ICAgICByZXR1cm4ga3VybDsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojppbml0KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhZ2VHcm91cE5hbWUp
CiAKIGNsYXNzIERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQ6IHB1YmxpYyBEZWZlcnJlZFRh
c2s8JldlYlBhZ2VQcml2YXRlOjptX3dvdWxkTG9hZE1hbnVhbFNjcmlwdD4gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQoV2ViUGFnZVByaXZhdGUq
IHdlYlBhZ2VQcml2YXRlLCBjb25zdCBLVVJMJiB1cmwpCisgICAgZXhwbGljaXQgRGVmZXJyZWRU
YXNrTG9hZE1hbnVhbFNjcmlwdChXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZVByaXZhdGUsIGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICA6IERlZmVycmVkVGFza1R5cGUod2ViUGFnZVByaXZhdGUpCiAg
ICAgewogICAgICAgICB3ZWJQYWdlUHJpdmF0ZS0+bV9jYWNoZWRNYW51YWxTY3JpcHQgPSB1cmw7
CkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBQbGF0
Zm9ybTo6TmV0d29ya1JlcXVlc3QmIG5ldFJlcSwgYm9vbCBuZWVkUmVmZXIKICAgICB9IGVsc2UK
ICAgICAgICAgbV9tYWluRnJhbWUtPnNldEluVmlld1NvdXJjZU1vZGUoZmFsc2UpOwogCi0gICAg
S1VSTCBrdXJsID0gcGFyc2VVcmwodXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IHBhcnNlVXJs
KHVybFN0cmluZyk7CiAgICAgaWYgKHByb3RvY29sSXMoa3VybCwgImphdmFzY3JpcHQiKSkgewog
ICAgICAgICAvLyBOZXZlciBydW4gamF2YXNjcmlwdCB3aGlsZSBsb2FkaW5nIGlzIGRlZmVycmVk
LgogICAgICAgICBpZiAobV9wYWdlLT5kZWZlcnNMb2FkaW5nKCkpCkBAIC03MzksMTQgKzczOSwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmxvYWQoY29uc3QgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIG5lZWRSZWZlcmVyKQogCiB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkU3Ry
aW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHN0cmluZywgY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmIGZhaWxpbmdVUkwpCiB7Ci0gICAgS1VSTCBrdXJsID0gcGFyc2VVcmwoYmFzZVVSTCk7
CisgICAgVVJMIGt1cmwgPSBwYXJzZVVybChiYXNlVVJMKTsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcgogICAg
ICAgICA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0cmluZy5jX3N0cigpLCBzdHJpbmcubGVuZ3Ro
KCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwKICAgICAgICAg
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCiAgICAgICAgIGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCi0gICAgICAgICFmYWlsaW5nVVJM
LmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IEtVUkwoKSk7CisgICAgICAgICFmYWls
aW5nVVJMLmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IFVSTCgpKTsKICAgICBtX21h
aW5GcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLCByZXF1
ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBib29sIFdl
YlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IHN0ZDo6d3N0cmlu
ZyYgc2NyaXB0LCBKYXZhUwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIFN0cmlu
ZyBzdHIgPSBTdHJpbmcoZGF0YSwgbGVuZ3RoQ29waWVkKTsKLSAgICBTY3JpcHRTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUoc3RyLCBLVVJMKCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29k
ZShzdHIsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVk
V29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFsdWUpOwogfQogCiBib29sIFdl
YlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpTdHJpbmcmIHNjcmlwdFVURjgsIEphdmFTY3JpcHREYXRhVHlwZSYgcmV0dXJu
VHlwZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcmV0dXJuVmFsdWUpCiB7CiAgICAg
QkxBQ0tCRVJSWV9BU1NFUlQoc2NyaXB0VVRGOC5pc1V0ZjgoKSk7Ci0gICAgU2NyaXB0U291cmNl
Q29kZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIEtVUkwoKSk7CisgICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUph
dmFTY3JpcHRJbklzb2xhdGVkV29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFs
dWUpOwogfQogCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlMKICAg
ICBpZiAoc291cmNlLT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRl
c3RpbmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlv
bihVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBk
ZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAt
MTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm0KICAgICBpZiAoc291cmNl
LT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRlc3RpbmF0aW9uKEtV
UkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVz
dGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlv
bi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAtMjA2NCw3ICsy
MDY0LDcgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6aXNBY3RpdmUoKSBjb25zdAogICAgIHJldHVy
biBtX2NsaWVudC0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgaW5wdXRDcmVkZW50aWFsKQordm9p
ZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFs
JiBpbnB1dENyZWRlbnRpYWwpCiB7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2Vy
KiBhdXRobWdyID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpOwog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgdXNlcm5hbWU7CkBAIC0yMTU2LDcgKzIx
NTYsNyBAQCBQbGF0Zm9ybTo6V2ViQ29udGV4dCBXZWJQYWdlUHJpdmF0ZTo6d2ViQ29udGV4dChU
YXJnZXREZXRlY3Rpb25TdHJhdGVneSBzdHJhdGVneQogICAgIE5vZGUqIGxpbmtOb2RlID0gbm9k
ZS0+ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAgICAgLy8gU2V0IGxpbmsgdXJs
IG9ubHkgd2hlbiB0aGUgbm9kZSBpcyBsaW5rZWQgaW1hZ2UsIG9yIHRleHQgaW5zaWRlIGFuY2hv
ci4gUHJldmVudCBDQ00gcG9wdXAgd2hlbiBsb25nIHByZXNzIG5vbi1saW5rIGVsZW1lbnQoZWcu
IGJ1dHRvbikgaW5zaWRlIGFuIGFuY2hvci4KICAgICBpZiAobGlua05vZGUgJiYgKG5vZGUgPT0g
bGlua05vZGUgfHwgbm9kZS0+aXNUZXh0Tm9kZSgpIHx8IG5vZGVJc0ltYWdlKSkgewotICAgICAg
ICBLVVJMIGhyZWY7CisgICAgICAgIFVSTCBocmVmOwogICAgICAgICBpZiAobGlua05vZGUtPmlz
TGluaygpICYmIGxpbmtOb2RlLT5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRvRWxlbWVudChsaW5rTm9kZSktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUoSFRNTE5hbWVzOjpocmVmQXR0cikpCiAgICAgICAgICAgICAgICAgaHJlZiA9
IGxpbmtOb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlLT52YWx1ZSgpKSk7CkBAIC00ODk3LDcgKzQ4OTcsNyBAQCB2
b2lkIFdlYlBhZ2U6OmluaXRQb3B1cFdlYlZpZXcoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIGQtPm1fcGFnZVBvcHVwLT5pbml0aWFsaXplKHdlYlBhZ2UpOwogfQog
Ci1TdHJpbmcgV2ViUGFnZVByaXZhdGU6OmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRlcm5TdHJpbmdG
b3JVcmwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKChtX3dlYlNldHRpbmdzLT5z
aG91bGRIYW5kbGVQYXR0ZXJuVXJscygpICYmIHByb3RvY29sSXModXJsLCAicGF0dGVybiIpKQog
ICAgICAgICB8fCBwcm90b2NvbElzKHVybCwgInRlbCIpCkBAIC01ODQxLDcgKzU4NDEsNyBAQCB2
b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyhXZWJTZXR0aW5ncyogd2ViU2V0
dGluZ3MpCiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIHN0eWxlc2hlZXRVUkwg
PSB3ZWJTZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwogICAgIGlmICghc3R5bGVz
aGVldFVSTC5lbXB0eSgpKQotICAgICAgICBjb3JlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oS1VSTChLVVJMKCksIHN0eWxlc2hlZXRVUkwpKTsKKyAgICAgICAgY29yZVNldHRp
bmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwoKSwgc3R5bGVzaGVldFVSTCkp
OwogCiAgICAgY29yZVNldHRpbmdzLT5zZXRGaXJzdFNjaGVkdWxlZExheW91dERlbGF5KHdlYlNl
dHRpbmdzLT5maXJzdFNjaGVkdWxlZExheW91dERlbGF5KCkpOwogICAgIGNvcmVTZXR0aW5ncy0+
c2V0VXNlQ2FjaGUod2ViU2V0dGluZ3MtPnVzZVdlYktpdENhY2hlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYTdlODNmMS4uNDdjZDhlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiTGF5ZXJSZW5kZXJlci5oIgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNlbmRpZgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBzaG93QWxlcnREaWFsb2coV2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlIGF0eXBl
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CisgICAg
dmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRp
YWwmKTsKICAgICB2aXJ0dWFsIFNhdmVDcmVkZW50aWFsVHlwZSBub3RpZnlTaG91bGRTYXZlQ3Jl
ZGVudGlhbChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJZiB0aGlzIHVybCBzaG91bGQgYmUgaGFuZGxlZCBhcyBhIHBhdHRlcm4sIHJldHVy
bnMgdGhlIHBhdHRlcm4KICAgICAvLyBvdGhlcndpc2UsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5n
LgotICAgIFN0cmluZyBmaW5kUGF0dGVyblN0cmluZ0ZvclVybChjb25zdCBXZWJDb3JlOjpLVVJM
JikgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBzdXNwZW5kQmFja2luZ1N0b3JlKCk7CiAgICAg
dm9pZCByZXN1bWVCYWNraW5nU3RvcmUoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBwdWJsaWM6CiAg
ICAgaW50IG1fY2FjaGVkUG9wdXBMaXN0U2VsZWN0ZWRJbmRleDsKICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkRGF0ZVRpbWVJbnB1dDsKICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkQ29sb3JJbnB1dDsKLSAgICBXZWJDb3JlOjpLVVJMIG1f
Y2FjaGVkTWFudWFsU2NyaXB0OworICAgIFdlYkNvcmU6OlVSTCBtX2NhY2hlZE1hbnVhbFNjcmlw
dDsKIAogICAgIGNsYXNzIERlZmVycmVkVGFza0Jhc2UgewogICAgIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGM4NmQwOTguLjQ4MGQzNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJl
bmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
IGFzIGEgU2luZ2xldG9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4
IDMyMzkzYTcuLmE1MjI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAK
QEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SWNvbi5oIgogI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZFBvaW50ZXIuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQYWdlQ2xpZW50LmgiCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFn
ZSogQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYKICAgICAvLyBCYWlsIG91dCBlYXJseSB3aGVuIHdlIGFyZW4n
dCBhbGxvd2VkIHRvIGRpc3BsYXkgdGhlIHRhcmdldCBvcmlnaW4sIG90aGVyd2lzZSwKICAgICAv
LyBpdCB3b3VsZCBiZSBoYXJtZnVsIGFuZCB0aGUgd2luZG93IHdvdWxkIGJlIHVzZWxlc3MuIFRo
aXMgaXMgdGhlIHNhbWUgY2hlY2sKICAgICAvLyBhcyB0aGUgb25lIGluIEZyYW1lTG9hZGVyOjps
b2FkRnJhbWVSZXF1ZXN0KCkuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5
KHVybCkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlcG9ydExvY2FsTG9hZEZhaWxlZChm
cmFtZSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmNwcAppbmRleCA0MTY5MGJkLi43YTAwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5j
cHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKaW5kZXggNTFkMTgxNy4uZDUwNzlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuY3BwCmluZGV4IDhlM2RmNDAuLjYwYjdkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRp
YWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxUcmFuc2Zvcm1EYXRhLmgiCiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2Ugewogc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhQYXNzd29yZHMgPSAzOwogCiAvLyBIZWxwZXIgbWV0aG9kIHRv
IGNsZWFyIHVybCBvZiB1bm5lZWRlZCBwYXJ0cy4KLUtVUkwgc3RyaXBVUkwoY29uc3QgS1VSTCYg
dXJsKQorVVJMIHN0cmlwVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIEtVUkwgc3RyaXBwZWRV
UkwgPSB1cmw7CisgICAgVVJMIHN0cmlwcGVkVVJMID0gdXJsOwogICAgIHN0cmlwcGVkVVJMLnNl
dFVzZXIoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFBhc3MoU3RyaW5nKCkpOwogICAg
IHN0cmlwcGVkVVJMLnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTc4LDEzICs3OCwxMyBAQCBDcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEoSFRNTEZvcm1FbGVt
ZW50KiBmb3JtLCBib29sIGlzRgogICAgIEFTU0VSVChmb3JtKTsKIAogICAgIC8vIEdldCB0aGUg
ZG9jdW1lbnQgVVJMCi0gICAgS1VSTCBmdWxsT3JpZ2luKFBhcnNlZFVSTFN0cmluZywgZm9ybS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKSk7CisgICAgVVJMIGZ1bGxPcmlnaW4oUGFyc2VkVVJM
U3RyaW5nLCBmb3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpKTsKIAogICAgIC8vIENhbGN1
bGF0ZSB0aGUgY2Fub25pY2FsIGFjdGlvbiBVUkwKICAgICBTdHJpbmcgYWN0aW9uID0gZm9ybS0+
YWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKICAgICAgICAgYWN0aW9uID0gIiI7
IC8vIG1pc3NpbmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMgY3VycmVudCBVUkwKLSAgICBL
VVJMIGZ1bGxBY3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhY3Rpb24pOwor
ICAgIFVSTCBmdWxsQWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWN0aW9u
KTsKICAgICBpZiAoIWZ1bGxBY3Rpb24uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTk1LDcgKzk1LDcgQEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YKICAgICBpZiAoIWlzRm9yU2F2
aW5nICYmIG1fb2xkUGFzc3dvcmRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJM
IHVybCA9IHN0cmlwVVJMKGZ1bGxPcmlnaW4pOworICAgIFVSTCB1cmwgPSBzdHJpcFVSTChmdWxs
T3JpZ2luKTsKICAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxBY3Rpb24pOwogICAgIG1fcHJv
dGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCksIHVybC5wb3J0KCksIFBy
b3RlY3Rpb25TcGFjZVNlcnZlckhUVFAsICJGb3JtIiwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVIVE1MRm9ybSk7CiAgICAgbV9jcmVkZW50aWFsID0gQ3JlZGVudGlhbChtX3Vz
ZXJOYW1lRWxlbWVudC0+dmFsdWUoKSwgbV9wYXNzd29yZEVsZW1lbnQtPnZhbHVlKCksIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0
YS5oCmluZGV4IDZkZWU3ZWQuLjIwYWY1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBmaW5kUGFzc3dvcmRGb3JtRmllbGRzKGNvbnN0IEhUTUxGb3JtRWxlbWVu
dCopOwogICAgIGJvb2wgbG9jYXRlU3BlY2lmaWNQYXNzd29yZHMoY29uc3QgVmVjdG9yPEhUTUxJ
bnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRzKTsKIAotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJM
IG1fYWN0aW9uOwogICAgIFByb3RlY3Rpb25TcGFjZSBtX3Byb3RlY3Rpb25TcGFjZTsKICAgICBt
dXRhYmxlIENyZWRlbnRpYWwgbV9jcmVkZW50aWFsOwogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVt
ZW50PiBtX3VzZXJOYW1lRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAKaW5kZXggODM4NTg4MC4uZGJjYmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgp
CiAgICAgbV9jbGllbnRSZWRpcmVjdElzUGVuZGluZyA9IGZhbHNlOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRy
ZWUpCiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZERpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCgpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVAKIHsKICAgICBQb2xpY3lBY3Rpb24gZGVjaXNpb24gPSBQb2xp
Y3lJZ25vcmU7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewog
ICAgICAgICAvLyBGcmFnbWVudCBzY3JvbGxzIG9uIHRoZSBzYW1lIHBhZ2Ugc2hvdWxkIGFsd2F5
cyBiZSBoYW5kbGVkIGludGVybmFsbHkuCiAgICAgICAgIC8vIChPbmx5IGNvdW50IGFzIGEgZnJh
Z21lbnQgc2Nyb2xsIGlmIHdlIGFyZSBzY3JvbGxpbmcgdG8gYSAjZnJhZ21lbnQgdXJsLCBub3Qg
YmFjayB0byB0aGUgdG9wLCBhbmQgcmVsb2FkaW5nCiAgICAgICAgIC8vIHRoZSBzYW1lIHVybCBp
cyBub3QgYSBmcmFnbWVudCBzY3JvbGwgZXZlbiBpZiBpdCBoYXMgYSAjZnJhZ21lbnQuKQotICAg
ICAgICBjb25zdCBLVVJMJiBjdXJyZW50VXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CisgICAgICAgIGNvbnN0IFVSTCYgY3VycmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOwogICAgICAgICBib29sIGlzRnJhZ21lbnRTY3JvbGwgPSB1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgJiYgdXJsICE9IGN1cnJlbnRVcmwgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjdXJyZW50VXJsLCB1cmwpOwogICAgICAgICBkZWNpc2lvbiA9IGRlY2lkZVBvbGlj
eUZvckV4dGVybmFsTG9hZChyZXF1ZXN0LCBpc0ZyYWdtZW50U2Nyb2xsKTsKIApAQCAtMzEyLDcg
KzMxMiw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBbHdheXNV
c2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIG1pCiB9CiAKIFBhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLAotICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLAorICAgIEhUTUxQbHVnSW5F
bGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIFN0cmluZyBtaW1l
VHlwZShtaW1lVHlwZUluKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbgogICAgICAgICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEFs
d2F5cyBpZ25vcmUgZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KICAgICAgICAgICAg
IFdURjo6UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c291cmNlLmlzOEJpdCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNo
YXJhY3RlcnM4KCkpIDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsK
LSAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIs
ICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVE
YXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwg
VVJMKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KQogICAgIH0KIH0KIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFn
ZW50KGNvbnN0IEtVUkwmKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNl
ckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2Vi
U2V0dGluZ3MtPnVzZXJBZ2VudFN0cmluZygpOwogfQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0CiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRl
clRyZWUtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIC8qdGl0bGUqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiAvKnRpdGxlKi8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICAvLyBVc2VkIGJ5
IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3Rvcnkg
aXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5
IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yUGFnZSA9IG1f
d2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5nZXRFcnJvclBhZ2UoZXJyb3IuZXJyb3JDb2RlKCks
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAg
U3Vic3RpdHV0ZURhdGEgZXJyb3JEYXRhKHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRt
bCIsICJ1dGYtOCIsIEtVUkwoS1VSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKKyAgICBTdWJz
dGl0dXRlRGF0YSBlcnJvckRhdGEodXRmOEJ1ZmZlcihlcnJvclBhZ2UpLCAidGV4dC9odG1sIiwg
InV0Zi04IiwgVVJMKFVSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKIAogICAgIC8vIExvYWRp
bmcgdXNpbmcgU3Vic3RpdHV0ZURhdGEgd2lsbCByZXBsYWNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0
IHdpdGggb3VyCiAgICAgLy8gZXJyb3IgZGF0YS4gVGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCwKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBh
c3NSZWZQdHI8Rm9ybVN0YQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZQorUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByaXZhdGUpCkBAIC04MTUsNyArODE1LDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnMKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9
CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1h
Z2VzKQogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKQEAgLTExMzksNyArMTEzOSw3IEBAIFBvbGljeUFjdGlvbiBGcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnk6OmRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChjb25zdCBS
ZXNvCiAgICAgLy8gYW5kIGV4cG9zZWQgdG8gY2xpZW50LiBCZWZvcmUgdGhhdCwgZG9uJ3QgcmV0
dXJuIFBvbGljeUlnbm9yZSBzbyB3ZSBjYW4gY29udGludWUgdG8KICAgICAvLyBjcmVhdGUgbmV3
IHdpbmRvdyBhbmQgZ2V0IHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bigpIHdoZXJlIHRoZSBjbGllbnQKICAgICAvLyBpcyBnaXZlbiBhIGNoYW5jZSB0byBkZWNpZGUg
aG93IHRvIGhhbmRsZSBwYXR0ZXJucyBzdWNoIGFzICdtYWlsdG86Jy4KLSAgICBjb25zdCBLVVJM
JiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKICAgICBTdHJpbmcgcGF0dGVybiA9IG1fd2ViUGFnZVByaXZhdGUtPmZpbmRQYXR0ZXJuU3Ry
aW5nRm9yVXJsKHVybCk7CiAgICAgaWYgKCFwYXR0ZXJuLmlzRW1wdHkoKSkgewogICAgICAgICBt
X3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+aGFuZGxlU3RyaW5nUGF0dGVybihwYXR0ZXJuLmNo
YXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSk7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRMb2FkRnJvbUFwcGxpY2F0
aW9uQ2FjaGUoY29uc3QgUmVzbwogICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3Rp
ZnlEaWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzZWN1cml0eU9yaWdpbkZvck5l
d0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChj
b25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBXaGF0IHdlIGFyZSB0cnlpbmcgdG8gZG8gaGVyZSBp
cyB0byBrZWVwIHVzaW5nIHRoZSBvbGQgcGF0aCBhcyBvcmlnaW4gd2hlbiBhIGZpbGUtYmFzZWQg
aHRtbCBwYWdlCiAgICAgLy8gY2hhbmdlcyBpdHMgbG9jYXRpb24gdG8gc29tZSBodG1sIGluIGEg
c3ViZm9sZGVyLiBUaGlzIHdpbGwgYWxsb3cgc29tZSBmaWxlLWJhc2VkIGh0bWwgcGFja2FnZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAzZWFhYWIzLi5i
ZmRhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRv
dWJsZSwgZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
LCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsVXBkYXRlQXBwbGljYXRpb25D
YWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IG5v
dEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRG
b3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVu
dGVkKCk7IHJldHVybiBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJu
IFJlc291cmNlRXJyb3IoZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJp
bmcoKSk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KQEAgLTEz
Myw4ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJv
bUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKQEAgLTE0MywxMyAr
MTQzLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2Fj
aGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0
ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVu
dCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRh
VG9QbHVnaW4oV2lkZ2V0Kik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
bm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE9i
amVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZp
cnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgbm90SW1wbGVt
ZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwg
dm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KQEAg
LTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRJY29u
RXh0ZXJuYWxseSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29u
RXh0ZXJuYWxseShjb25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBm
aW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKEljb25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRm9y
TmV3RG9jdW1lbnQoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgcmVhZHlUb1JlbmRlcihib29sIHBhZ2VJc1Zpc3VhbGx5Tm9uRW1wdHkpOwogCkBAIC0y
MDMsOCArMjAzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRGcmFtZUNyZWF0aW9uU3Vw
cHJlc3NlZDsKIAogICAgIC8vIFRoaXMgc2V0IGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBhbmQgZmlu
YWwgdXJscyBmb3Igc2VydmVyIHJlZGlyZWN0cy4KLSAgICBIYXNoU2V0PEtVUkw+IG1faGlzdG9y
eU5hdmlnYXRpb25Tb3VyY2VVUkxzOwotICAgIEhhc2hTZXQ8S1VSTD4gbV9yZWRpcmVjdFVSTHNU
b1NraXBEdWVUb0hpc3RvcnlOYXZpZ2F0aW9uOworICAgIEhhc2hTZXQ8VVJMPiBtX2hpc3RvcnlO
YXZpZ2F0aW9uU291cmNlVVJMczsKKyAgICBIYXNoU2V0PFVSTD4gbV9yZWRpcmVjdFVSTHNUb1Nr
aXBEdWVUb0hpc3RvcnlOYXZpZ2F0aW9uOwogCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJl
Y3QgZGF0YSB0by4KICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5jcHAKaW5kZXggZGNmZWY2MC4uNGE2MTJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtODEs
MzIgKzgxLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNr
QmVycnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRl
Z3kKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5h
YmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJu
IFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29r
aWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8o
Y29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPgogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0
ZWd5Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFn
ZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSog
cGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsK
ICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKaW5kZXggYzUxNTY0NS4uZDI0NWZh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCkBAIC00Nywx
MiArNDcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjIsNyArNjIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNv
cmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChX
ZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJh
c2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCmluZGV4IDZjOGVmOGEuLjk0MDU3
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1Bh
Z2VQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
UGFnZVBvcHVwLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFz
ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZV9wLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaD4KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBQYWdlUG9wdXA6OndyaXRlRG9jdW1l
bnQoRG9jdW1lbnRXcml0ZXIqIHdyaXRlcikKIHsKICAgICBBU1NFUlQod3JpdGVyKTsKICAgICB3
cml0ZXItPnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3cml0ZXItPmJlZ2luKEtVUkwo
KSk7CisgICAgd3JpdGVyLT5iZWdpbihVUkwoKSk7CiAKICAgICAvLyBBbGwgdGhlIHBvcHVwcyBo
YXZlIHRoZSBzYW1lIGh0bWwgaGVhZCBhbmQgdGhlIHBhZ2UgY29udGVudCBzaG91bGQgYmUgbm9u
LXpvb21hYmxlLgogICAgIFN0cmluZ0J1aWxkZXIgc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IDI3ODM0NDMuLmY5MTNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
My0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1l
IEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDA4NjczMmEx
Li4xNTY0ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
Ik5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBvcHVwTWVudUVmbC5oIgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50
RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVu
c2lnbmVkCiAgICAgLy8gRklYTUUsIGNvbXBhcmUgd2l0aCBvbGQgbGluaywgbG9vayBhdCBRdCBp
bXBsLgogICAgIGJvb2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAgICBpZiAoaXNMaW5r
KSB7Ci0gICAgICAgIEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOworICAgICAgICBV
UkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5
KCkgJiYgdXJsICE9IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGxpbmtbMl07CiAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcjsKQEAgLTM3Niw3ICszNzYs
NyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNpZ25lZAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICgh
aXNMaW5rICYmICFtX2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX291dChtX3ZpZXcpOwotICAgICAgICBtX2hvdmVyZWRMaW5rVVJM
ID0gS1VSTCgpOworICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gVVJMKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCmluZGV4IDZlZGJlMzcuLjg0YTMxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAjZGVm
aW5lIENocm9tZUNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0gICAgS1VSTCBtX2hvdmVyZWRM
aW5rVVJMOworICAgIFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVudDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRFZmwuY3BwCmluZGV4IGNkZWEzZTQuLjk0YmU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGUKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpkb3dubG9hZFVSTChj
b25zdCBLVVJMJikKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0
IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oCmluZGV4IDcw
ODM3N2YuLjViZWYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NP
d25QdHI8Q29udGV4dE1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkVVJMKGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnko
RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIGlzU3BlYWtpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IGRj
MGMyNDMuLjllYTUxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIxLDEzICsy
MjEsMTMgQEAgU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFibGVEUlRGcmFt
ZU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW0KICAgICByZXR1cm4gU3RyaW5nKCJmcmFt
ZSAoYW5vbnltb3VzKSIpOwogfQogCi1jb25zdCBXZWJDb3JlOjpLVVJMIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQor
Y29uc3QgV2ViQ29yZTo6VVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxV
UkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIERSVF9TVVBQT1JUX0ZSQU1F
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpLVVJMKCkpOworICAgIERS
VF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpV
UkwoKSk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6S1VSTCgpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJMKCk7CiAKICAgICByZXR1cm4g
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFMKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRv
V29ybGQoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNv
cmU6OktVUkwoKSwKKyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKFdlYkNv
cmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIHJ1bkF0U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50
U3RhcnQgOiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxl
U2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2Rl
LCBXZWJDb3JlOjpLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFs
bEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkpOworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpV
UkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhclVzZXJTdHlsZVNoZWV0
cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXgg
Y2VmNzZkYy4uNThjZDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTIyLDcgKzIyLDcg
QEAKICNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKICNkZWZpbmUgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxJ
bnRSZWN0Lmg+CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHJl
c3BvbnNlTWltZVR5cGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMg
V2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktVUkwgcHJv
dmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKyAgICBzdGF0aWMgY29u
c3QgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7CiAgICAgc3RhdGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA5MTEzMjIxLi43NzdiMjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IFN0cmluZyYgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VzdG9tVXNlckFnZW50
OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25zdCBLVVJM
JikKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7
CiAgICAgaWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBt
X2N1c3RvbVVzZXJBZ2VudDsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1
bnNpZwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3Vy
Y2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7CiAKICAgICBpZiAocmVxdWVzdC51cmwg
IT0gb3JpZy51cmwpIHsKLSAgICAgICAgY29yZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCBy
ZXF1ZXN0LnVybCkpOworICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCByZXF1
ZXN0LnVybCkpOwogCiAgICAgICAgIC8vIENhbGxpbmcgY2xpZW50IG1pZ2h0IGhhdmUgY2hhbmdl
ZCBvdXIgdXJsIHBvaW50ZXIuCiAgICAgICAgIC8vIEZyZWUgdGhlIG5ldyBhbGxvY2F0ZWQgc3Ry
aW5nLgpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgY2Fs
bFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBwb2xpY3kpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdl
dD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVn
aW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NS
ZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX3ZpZXcpOwpAQCAtMzY2
LDcgKzM2Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKLVBhc3NSZWZQdHI8
RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8q
bWFyZ2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCitQYXNzUmVmUHRyPEZyYW1lPiBG
cmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lk
dGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAg
IEFTU0VSVChtX3ZpZXcpOwpAQCAtNDA2LDE0ICs0MDYsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAg
ICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxX
aWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLAorUGFzc1JlZlB0cjxX
aWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIC8qcGFyYW1OYW1lcyovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypw
YXJhbVZhbHVlcyovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50
VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIEZJ
WE1FOiBvbmNlIHBsdWdpbiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoaXMgbWV0aG9kIG5lZWRzIHRv
IGNvcnJlY3RseSBoYW5kbGUgdGhlICdzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzJyBmbGFn
LiBTZWUKICAgICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRU
eXBlKCkgZm9yIGFuIGV4YW1wbGUuCkBAIC01NzUsMTIgKzU3NSwxMiBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBld2tfZnJhbWVf
bWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgZXdrX2ZyYW1lX21p
eGVkX2NvbnRlbnRfcnVuX3NldChtX2ZyYW1lLCB0cnVlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERldGVjdFhT
Uyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKIHsKICAg
ICBDU3RyaW5nIGNzID0gaW5zZWN1cmVVUkwuc3RyaW5nKCkudXRmOCgpOwogICAgIEV3a19GcmFt
ZV9Yc3NfTm90aWZpY2F0aW9uIHhzc0luZm8gPSB7IGNzLmRhdGEoKSwgZGlkQmxvY2tFbnRpcmVQ
YWdlIH07CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgZXdrX2ZyYW1lX3JlZGlyZWN0X2Nh
bmNlbGxlZChtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3Vi
bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGV3a19mcmFt
ZV9yZWRpcmVjdF9yZXF1ZXN0ZWQobV9mcmFtZSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQpAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQogewogICAgIC8vIG5vIG5l
ZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCmluZGV4IDIyNzEyOTQuLjg0NzA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAt
OTQsNyArOTQsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUs
IGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKQEAgLTEyOCwxMyArMTI4LDEzIEBA
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9u
KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY3Jl
YXRlUGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1l
bnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIApAQCAtMTQy
LDcgKzE0Miw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9h
ZGVyQ2xpZW50IHsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRp
b24oYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRnJh
bWVEb2N1bWVudFJlYWR5KGJvb2wpOwogCkBAIC0xNTksOCArMTU5LDggQEAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CkBAIC0xODcsOSArMTg3LDkgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVS
TCYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmNwcAppbmRleCA0OWFhMzU3Li42YmU0NDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5jcHAKQEAgLTg3LDMyICs4NywzMiBAQCBTdG9yYWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0
ZWd5Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CiB9CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYg
b3V0UGwKIH0KIAogLy8gVmlzaXRlZExpbmtTdHJhdGVneQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VS
TCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNM
aW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBB
dG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQo
aGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCmluZGV4IDc0NzBjMmMuLjMxYmFlYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5oCkBAIC00OCwxMiArNDgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJD
b3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVn
aW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
KTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRl
ZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZmZhNzI4OS4uMjIzZTA2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgpAQCAtMzM2LDcgKzMzNiw3IEBAIEV2YXNf
T2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIG5hbWUpCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OktVUkwga3VybChX
ZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICBXZWJDb3Jl
OjpVUkwga3VybChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgc21hcnREYXRhLT5m
cmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+
ZnJhbWUsIHJlcSkpOwogCkBAIC00MDIsMTIgKzQwMiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzbWFy
dERhdAogICAgIGlmICghYmFzZVVyaSkKICAgICAgICAgYmFzZVVyaSA9ICJhYm91dDpibGFuayI7
CiAKLSAgICBXZWJDb3JlOjpLVVJMIGJhc2VLVVJMKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJp
bmc6OmZyb21VVEY4KGJhc2VVcmkpKTsKLSAgICBXZWJDb3JlOjpLVVJMIHVucmVhY2hhYmxlS1VS
TDsKKyAgICBXZWJDb3JlOjpVUkwgYmFzZUtVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChiYXNlVXJpKSk7CisgICAgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlS1VSTDsK
ICAgICBpZiAodW5yZWFjaGFibGVVcmkpCi0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNv
cmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFi
bGVVcmkpKTsKKyAgICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKICAgICBlbHNl
Ci0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoKTsKKyAgICAgICAgdW5y
ZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKCk7CiAKICAgICBXVEY6OlJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnRlbnRzLCBjb250ZW50c1NpemUpOwogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0
aXR1dGVEYXRhCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBFd2tfQ2VydGlmaWNhdGVfU3RhdHVzIGV3
a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAog
ICAgIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPmxvYWRlcigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgY29uc3QgV2Vi
Q29yZTo6S1VSTCBkb2N1bWVudFVSTCA9IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0VVJMKCk7Cisg
ICAgY29uc3QgV2ViQ29yZTo6VVJMIGRvY3VtZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVl
c3RVUkwoKTsKIAogICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJcygiaHR0cHMiKSkKICAg
ICAgICAgcmV0dXJuIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfTk9fQ0VSVElGSUNBVEU7CkBAIC0x
NzYzLDcgKzE3NjMsNyBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQogICoKICAqIENyZWF0ZXMgcGx1Z2luLgogICovCi1XVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdr
RnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFt
ZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgREJHKCJld2tGcmFtZT0lcCwgc2l6ZT0lZHgl
ZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCmluZGV4IGExNDQ2ZGYuLjdkNDE3NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBIVE1MUGx1
Z0luRWxlbWVudDsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXaWRnZXQ7CkBA
IC03Niw3ICs3Niw3IEBAIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUp
OwogCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2Ny
ZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KTsKIAogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFu
Z2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50
X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAKaW5kZXggZGQzYmE5Zi4uOWU0ZDVh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcApA
QCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19zZWN1
cml0eV9wb2xpY3kuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAK
QEAgLTI5LDcgKzI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIGV3a19zZWN1
cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9hZGQoY29uc3QgY2hhciogc291cmNlVXJsLCBj
b25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsK
ICAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlv
bihLVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJM
KCksIGRlc3RpbmF0aW9uVXJsKTsKIAogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5h
dGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7CiB9CkBAIC0zNyw3ICszNyw3IEBAIHZvaWQg
ZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3Vy
Y2VVcmwsIGNvbnN0IGNoYXIqCiB2b2lkIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29y
aWdpbl9kZWwoY29uc3QgY2hhciogc291cmNlVXJsLCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvblVy
bCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsKICAgICBjb25zdCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlvbihLVVJMKCksIGRlc3RpbmF0aW9uVXJs
KTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKIAog
ICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291
cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93U3Vi
ZG9tYWlucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDRh
YjBhZTcuLmQ1ZDMxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBl
d2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5fY2xlYXIoY29uc3QgY2hh
ciogdXJsKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHVybCk7CiAKLSAgICBj
b25zdCBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodXJsKSk7CisgICAgY29uc3QgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCks
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGt1cmwpLmdldCgpKTsKIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBAIGNhaXJvX3N1cmZhY2VfdCog
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25zdCBjaGFyKiB1
cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CiAKLSAg
ICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29uID0g
V2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChr
dXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikK
ICAgICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwpAQCAtMjI3LDcgKzIyNyw3
IEBAIEV2YXNfT2JqZWN0KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9n
ZXQoY29uc3QgY2hhciogdXJsLCBFdmFzKiBjCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHVybCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZh
cywgMCk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJ
Y29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwog
CiAgICAgaWYgKCFzdXJmYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBh
MGVmOWM1Li43OTk2ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY3MCw3
ICs2NzAsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGE7CiAgICAgbWVtc2V0KHByaXYs
IDAsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKICAgICBBdG9taWNTdHJpbmcgc3Ry
aW5nOwotICAgIFdlYkNvcmU6OktVUkwgdXJsOworICAgIFdlYkNvcmU6OlVSTCB1cmw7CiAKICAg
ICBXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50
cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsKHNtYXJ0RGF0YS0+
c2VsZik7CkBAIC0xNzI4LDcgKzE3MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaXRlZF9s
aW5rX2FkZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdmlzaXRlZFVybAogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wYWdlLCBmYWxzZSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBhZ2UtPmdyb3VwUHRyKCksIGZh
bHNlKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29y
ZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CiAgICAgcHJpdi0+
cGFnZS0+Z3JvdXBQdHIoKS0+YWRkVmlzaXRlZExpbmsoa3VybCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2Vy
X3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKgogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAg
IGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJTdHlsZXNo
ZWV0LCB1cmkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CisgICAgICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNv
cmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgICAgICBwcml2LT5wYWdlU2V0
dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oa3VybCk7CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwpAQCAtMzY2Miw3ICszNjYyLDcgQEAgdm9pZCBld2tfdmlld19mcmFtZV9yZWN0X2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
c21hcnREYXRhKTsKIH0KIAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3Zp
ZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVn
aW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5
KQogewogICAgIERCRygiZXdrVmlldz0lcCwgZnJhbWU9JXAsIHNpemU9JWR4JWQsIGVsZW1lbnQ9
JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAogICAgICAgICBld2tWaWV3LCBmcmFtZSwgcGx1Z2lu
U2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVtZW50LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMzEzZWY3Yy4uNDQ1YzFkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAg
V2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldyk7CiAKIHZvaWQgZXdrX3ZpZXdfZnJhbWVfcmVjdF9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKIAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFu
dWFsbHkpOworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2lu
X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIHZvaWQgZXdrX3ZpZXdfY29sb3JfY2hv
b3Nlcl9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVu
dCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBhNDIxYjVlLi5hMjU2MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEz
LTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTIGIvU291cmNlL1dlYktpdC9ndGsvTkVXUwppbmRleCBl
ZjNmMzE0Li4yZmNjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL05FV1MKQEAgLTM0NCw3ICszNDQsNyBAQCBXaGF0J3MgbmV3IGlu
IFdlYktpdEdUSysgMS45LjM/CiAgIC0gRml4IGN1cnNvciB1c2VkIGZvciBuZS1yZXNpemUuCiAg
IC0gRml4IGNvbnRyYWN0aW9ucyByZWNvZ25pdGlvbiBieSB0aGUgc3BlbGwgY2hlY2tlci4KICAg
LSBGaXggYSBjcmFzaCByZW5kZXJpbmcgc2Nyb2xsYmFycyBvbiBHVEsgd3hXZWJraXQuCi0gIC0g
Rml4IEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgaW1wbGVtZW50YXRpb24gdG8gc3RyaXAgdGhlIHF1
ZXJ5IHBhcnQKKyAgLSBGaXggVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGltcGxlbWVudGF0aW9uIHRv
IHN0cmlwIHRoZSBxdWVyeSBwYXJ0CiAgICAgb2YgdGhlIHVyaS4KICAgLSBDaGVjayBmb3IgR1RL
Mi9HVEszIHN5bWJvbCBtaXNtYXRjaCBlYXJsaWVyIHRvIGZpeCBwbHVnaW5zIHJ1bgogICAgIHdp
dGggbnNwbHVnaW53cmFwcGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMWMwOTg1YS4uZDQwOWU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgpAQCAt
Nzk4LDcgKzc5OCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkIG1vCiAgICAgLy8gY2hlY2sgaWYg
dGhlIGVsZW1lbnQgaXMgYSBsaW5rLi4uCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGlu
aygpOwogICAgIGlmIChpc0xpbmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVM
aW5rVVJMKCk7CisgICAgICAgIFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAg
ICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXI7CiAgICAgICAgICAgICBDU3RyaW5nIHRpdGxlU3Ry
aW5nID0gaGl0LnRpdGxlKGRpcikudXRmOCgpOwpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgQ2hy
b21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXQsIHVuc2lnbmVkIG1vCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFpc0xpbmsgJiYgIW1f
aG92ZXJlZExpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShtX3dlYlZpZXcsICJob3ZlcmluZy1vdmVyLWxpbmsiLCAwLCAwKTsKLSAgICAgICAgbV9ob3Zl
cmVkTGlua1VSTCA9IEtVUkwoKTsKKyAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IFVSTCgpOwog
ICAgIH0KIAogICAgIGlmIChOb2RlKiBub2RlID0gaGl0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCmluZGV4IGQxYjBhNTkuLjJhNGE3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5j
bHVkZSAiR3RrQWRqdXN0bWVudFdhdGNoZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFy
Y2hQb3B1cE1lbnUuaCIKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAgIEd0
a0FkanVzdG1lbnRXYXRjaGVyIG1fYWRqdXN0bWVudFdhdGNoZXI7Ci0gICAgICAgIEtVUkwgbV9o
b3ZlcmVkTGlua1VSTDsKKyAgICAgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAgICAgICAgIHVu
c2lnbmVkIGludCBtX2Nsb3NlU29vblRpbWVyOwogCiAgICAgICAgIFRpbWVyIDxDaHJvbWVDbGll
bnQ+IG1fZGlzcGxheVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCmluZGV4IDQxNzBmNzcuLjllYjc1
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudEd0ay5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJDb250
ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
bGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENv
bnRleHRNCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBDb250ZXh0TWVudUNsaWVudDo6
ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3Qq
IG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaAppbmRleCBkNjc3NGI1Li40NTZiODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50R3RrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZ2V0Q3VzdG9tTWVu
dUZyb21EZWZhdWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSos
IGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRv
d25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBjb3B5SW1hZ2VUb0NsaXBib2FyZChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGRkZWQ4YzQuLjAzNmU2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjphZGRVc2VyU2NyaXB0KFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgY2hhcioKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJv
bUZyYW1lKGZyYW1lKTsKICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKLSAgICBwYWdl
LT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBz
b3VyY2VDb2RlLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksCisg
ICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgc291cmNlQ29kZSwgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksCiAgICAgICAgIHJ1bkF0U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RB
dERvY3VtZW50RW5kLCBhbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9w
RnJhbWVPbmx5KTsKIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjphZGRVc2VyU3R5bGVTaGVldChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IGNoCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFt
ZSk7CiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Z3JvdXAoKS5h
ZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNv
ZGUsIEtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAorICAgIHBhZ2Ut
Pmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBzb3VyY2VDb2RlLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwg
YWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAog
fQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAxZGMyMDc2Li40MjU5NDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFt
ZUxvYWRlckNsaWVudCgpCiB9CiAKIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsKICAg
ICBHT3duUHRyPGdjaGFyPiB1c2VyQWdlbnRTdHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdl
bnRGb3JVUkkoc2V0dGluZ3MsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICAvLyBGZWVkIGFueSBjaGFu
Z2VzIGJhY2sgaW50byB0aGUgUmVzb3VyY2VSZXF1ZXN0IG9iamVjdC4KICAgICBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X21lc3NhZ2UobmV0d29ya1Jl
cXVlc3QuZ2V0KCkpOwogICAgIGlmICghbWVzc2FnZSkgewotICAgICAgICByZXF1ZXN0LnNldFVS
TChLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dl
dF91cmkobmV0d29ya1JlcXVlc3QuZ2V0KCkpKSkpOworICAgICAgICByZXF1ZXN0LnNldFVSTChV
UkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJp
KG5ldHdvcmtSZXF1ZXN0LmdldCgpKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDg2LDcgKzQ4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0CiAgICAgICAgIHdlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotUGFzc1JlZlB0
cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQ
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVh
bGx5KQogewogICAgIC8qIENoZWNrIGlmIHdlIHdhbnQgdG8gZW1iZWQgYSBHdGtXaWRnZXQsIGZh
bGxiYWNrIHRvIHBsdWdpbnMgbGF0ZXIgKi8KICAgICBDU3RyaW5nIHVybFN0cmluZyA9IHVybC5z
dHJpbmcoKS51dGY4KCk7CkBAIC01MTYsNyArNTE2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFQKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAgLTU1OCwxMiArNTU4LDEyIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0
KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKLVBhc3NS
ZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5T
aXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewogICAgIHJldHVybiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKHBs
dWdpblNpemUsIGVsZW1lbnQsIGJhc2VVUkwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBw
bGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUg
RnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQor
T2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0
Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7
CiB9CkBAIC02NzMsMTIgKzY3MywxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJh
bWVMb2FkRXZlbnRDYWxsYmFjayhtX2ZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4sIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiogY29yZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJpbnNlY3VyZS1jb250ZW50LXJ1biIsIGtpdChj
b3JlT3JpZ2luKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICBpZiAo
IUR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpIHx8
ICFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2FkRXZlbnRDYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6c19mcmFtZUxvYWRFdmVudENhbGxiYWNrKG1fZnJhbWUsIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QsIDApOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VS
TCYgdXJsLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUp
CiB7CiAgICAgaWYgKCFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9k
ZUVuYWJsZWQoKSB8fCAhRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50
Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRh
ID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUoZnJhbWVEYXRhLT50aXRsZSk7CkBAIC0xMDA1
LDcgKzEwMDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcgogICAgICAgICByZXR1cm47CiAK
ICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVz
b3VyY2UpOwotICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVSZXNvdXJjZShsb2FkZXIt
PnN1YnJlc291cmNlKEtVUkwoS1VSTCgpLCB1cmkpKSk7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gY29yZVJlc291cmNlKGxvYWRlci0+c3VicmVzb3VyY2UoVVJMKFVSTCgpLCB1cmkpKSk7
CiAKICAgICAvLyBJZiBjb3JlUmVzb3VyY2UgaXMgTlVMTCBoZXJlLCB0aGUgcmVzb3VyY2UgZmFp
bGVkIHRvIGxvYWQsCiAgICAgLy8gdW5sZXNzIGl0J3MgdGhlIG1haW4gcmVzb3VyY2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAppbmRleCBjNzgyOTJmLi43YjgyZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTc3LDcg
Kzc3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSwgZG91
YmxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGlu
UGFnZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5Q
YWdlKCk7CkBAIC0xMTUsMTIgKzExNSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKTsK
IAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdl
dChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1l
ZGlhVHlwZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTEyOCw3ICsxMjgsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJ
Y29uTm90aWZpY2F0aW9uKGJvb2wpOwogCi0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
KTsKKyAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250
ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE0Niw4ICsxNDYsOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAKICAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwpAQCAtMTc0LDkgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1
YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAotICAgICAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpD
YWNoZWRGcmFtZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNw
cAppbmRleCBmOWVkNWFkLi5jNmQxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKQEAgLTgxLDMy
ICs4MSwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNy
ZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmlu
ZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mCiB9CiAK
IC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xp
bmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBB
dG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmlzTGlua1Zpc2l0ZWQo
UGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5n
JikKIHsKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNHdGsuaAppbmRleCBiNWYwNzYyLi43Zjk4Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaApA
QCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25z
dCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAv
LyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9n
dGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCAyYzMyZjJjLi4zN2I5NzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmgKQEAg
LTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgQ29udmVydFRvR0NoYXJQcml2YXRlX2gKICNkZWZpbmUg
Q29udmVydFRvR0NoYXJQcml2YXRlX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMCw3
ICszMCw3IEBAIGlubGluZSBnY2hhciogY29weUFzR2NoYXIoV1RGOjpTdHJpbmcgY29uc3QmIHMp
CiAgICAgcmV0dXJuIGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWlubGluZSBnY2hh
ciogY29weUFzR2NoYXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2lubGluZSBnY2hhciogY29w
eUFzR2NoYXIoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBjb3B5QXNHY2hh
cihzLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxv
YWQuY3BwCmluZGV4IGQyZDU1OTdhLi5jNzQ4YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBjb25zdCBnY2hhciog
d2Via2l0X2Rvd25sb2FkX2dldF9zdWdnZXN0ZWRfZmlsZW5hbWUoV2ViS2l0RG93bmxvYWQqIGRv
d25sb2FkKQogICAgIGlmIChwcml2LT5zdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJu
IHByaXYtPnN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwg
d2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtSZXF1ZXN0KSk7Cisg
ICAgVVJMIHVybCA9IFVSTChVUkwoKSwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHBy
aXYtPm5ldHdvcmtSZXF1ZXN0KSk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKICAgICB1
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcHJpdi0+c3VnZ2VzdGVkRmlsZW5h
bWUgPSBnX3N0cmR1cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IDc5NDM3OWUuLmNiNDFlZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI0LDcg
KzI0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRl
bnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAppbmRleCA0OTk2ZGQ5Li4z
NmUyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29y
a3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3Jr
cmVxdWVzdC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
Y29yZShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAoc291cE1lc3NhZ2Up
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qoc291cE1lc3NhZ2UpOwog
Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmwgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwg
U3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkp
KTsKKyAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkp
OwogICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCmluZGV4IDA3
OTIyYjAuLmQyNzI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJkYXRhc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViZGF0YXNvdXJjZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExv
YWRlckd0ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJLaXRXZWJEYXRh
U291cmNlKiB3ZWJraXRfd2ViX2RhdGFfc291cmNlX25ld193aXRoX3JlcXVlc3QoV2ViS2l0TmV0
d29ya1JlcXVlcwogCiAgICAgY29uc3QgZ2NoYXIqIHVyaSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVl
c3RfZ2V0X3VyaShyZXF1ZXN0KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7
CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJM
KFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJj
ZSogZGF0YXNvdXJjZSA9IGtpdE5ldyhXZWJLaXQ6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVz
b3VyY2VSZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpKSk7CiAKICAgICBXZWJLaXRXZWJEYXRhU291
cmNlUHJpdmF0ZSogcHJpdiA9IGRhdGFzb3VyY2UtPnByaXY7CkBAIC0zOTYsNyArMzk2LDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X3VucmVhY2hhYmxlX3VyaShX
ZWJLaXRXZWJEYXRhU291cmNlKiB3ZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0RBVEFfU09VUkNFKHdlYkRhdGFTb3VyY2UpLCBOVUxMKTsKIAogICAgIFdlYktpdFdl
YkRhdGFTb3VyY2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YVNvdXJjZS0+cHJpdjsKLSAgICBjb25z
dCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHByaXYtPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
KyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJs
ZVVSTCgpOwogCiAgICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcApp
bmRleCA2ZDFmOTQ0Li43MzU3M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVf
bG9hZF91cmkoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlm
ICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigp
LmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChLVVJMKEtV
UkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRlcigp
LmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNv
bnRlbnQsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBjb25z
dCBnY2hhciogYmFzZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQpAQCAtNjg0LDcg
KzY4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwogCi0gICAgS1VSTCBiYXNlS1VS
TCA9IGJhc2VVUkwgPyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSkgOiBi
bGFua1VSTCgpOworICAgIFVSTCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBVUkwoVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgoYmFzZVVSTCkpIDogYmxhbmtVUkwoKTsKIAogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KGJhc2VLVVJMKTsKIApAQCAtNjkyLDggKzY5Miw4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2No
YXIqIGNvbnRlCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVy
LnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSA/
IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1s
IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJpbmc6
OmZyb21VVEY4KGVuY29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
dW5yZWFjaGFibGVVUkwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJM
KEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFj
aGFibGVVUkwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSk7CiAKICAgICBjb3JlRnJhbWUtPmxv
YWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmNwcAppbmRleCA1YjdkYjIyLi4yZjI1MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiAjaW5jbHVkZSAiSGlzdG9y
eUl0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbXBy
aXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0yOTgsNyArMjk4LDcgQEAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEoY29uc3Qg
Z2NoYXIqIHVyaSwgY28KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0g
PSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0hJ
U1RPUllfSVRFTSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJp
diA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgV2ViQ29yZTo6S1VSTCBoaXN0b3J5VXJp
KFdlYkNvcmU6OktVUkwoKSwgdXJpKTsKKyAgICBXZWJDb3JlOjpVUkwgaGlzdG9yeVVyaShXZWJD
b3JlOjpVUkwoKSwgdXJpKTsKICAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0bGUgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4g
aXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVyaSwgaGlzdG9yeVRp
dGxlLCAwKTsKICAgICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFzZSgpLmxlYWtSZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuY3BwCmlu
ZGV4IDZmYWMzN2IuLjQ1Zjg3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnJlc291cmNlLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdl
YnJlc291cmNlLmgiCiAKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAid2Via2l0ZW51bXR5cGVzLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUu
aCIKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0X3dlYl9yZXNv
dXJjZV9uZXcoY29uc3QgZ2NoYXIqIGRhdGEsCiAgICAgICAgIHNpemUgPSBzdHJsZW4oZGF0YSk7
CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBzaXplKTsKLSAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJr
aXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoYnVmZmVyLCBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgU3RyaW5n
Ojpmcm9tVVRGOChtaW1lVHlwZSksIFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpLCBTdHJpbmc6
OmZyb21VVEY4KGZyYW1lTmFtZSkpKTsKKyAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3Vy
Y2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoYnVmZmVyLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSks
IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpLCBTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSwg
U3RyaW5nOjpmcm9tVVRGOChmcmFtZU5hbWUpKSk7CiAKICAgICByZXR1cm4gd2ViUmVzb3VyY2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApp
bmRleCAyMmNlNmJiLi5hZWVhM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRp
bmdCZWhhdmlvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJVc2VyQWdlbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKQEAgLTE1OTcs
NyArMTU5Nyw3IEBAIHN0YXRpYyBib29sIGlzR29vZ2xlRG9tYWluKFN0cmluZyBob3N0KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3Qg
S1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgLy8gRm9yIEdvb2dsZSBkb21haW5zLCBkcm9wIHRoZSBicm93c2VyJ3MgY3VzdG9t
IFVzZXIgQWdlbnQgc3RyaW5nLCBhbmQgdXNlIHRoZQogICAgIC8vIHN0YW5kYXJkIENocm9tZSBv
bmUsIHNvIHRoZXkgZG9uJ3QgZ2l2ZSB1cyBhIGJyb2tlbiBleHBlcmllbmNlLgpAQCAtMTYzNSw3
ICsxNjM1LDcgQEAgc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJs
KQogY2hhciogd2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoV2ViS2l0V2ViU2V0dGlu
Z3MqIHdlYlNldHRpbmdzLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgaWYgKHdlYlNldHRpbmdz
LT5wcml2LT5lbmFibGVTaXRlU3BlY2lmaWNRdWlya3MpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJB
Z2VudFN0cmluZyA9IHVzZXJBZ2VudEZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwo
KSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7CisgICAgICAgIFN0cmluZyB1c2VyQWdlbnRTdHJp
bmcgPSB1c2VyQWdlbnRGb3JVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVyaSkpKTsKICAgICAgICAgaWYgKCF1c2VyQWdlbnRTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIGdfc3RyZHVwKHVzZXJBZ2VudFN0cmluZy51dGY4KCkuZGF0
YSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
aW5kZXggYzcxMmM5YS4uOWY4OTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtMzUzOCw3ICszNTM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVT
ZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlU2NyaXB0cyk7
CiAgICAgY29yZVNldHRpbmdzLnNldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5h
YmxlUGx1Z2lucyk7CiAgICAgY29yZVNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShz
ZXR0aW5nc1ByaXZhdGUtPnJlc2l6YWJsZVRleHRBcmVhcyk7Ci0gICAgY29yZVNldHRpbmdzLnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTChLVVJMKCksIHNldHRpbmdzUHJpdmF0ZS0+dXNl
clN0eWxlc2hlZXRVUkkuZGF0YSgpKSk7CisgICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBzZXR0aW5nc1ByaXZhdGUtPnVzZXJTdHlsZXNoZWV0VVJJ
LmRhdGEoKSkpOwogICAgIGNvcmVTZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHNl
dHRpbmdzUHJpdmF0ZS0+ZW5hYmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBjb3JlU2V0dGluZ3Mu
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVByaXZhdGVC
cm93c2luZyk7CiAgICAgY29yZVNldHRpbmdzLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHNldHRp
bmdzUHJpdmF0ZS0+ZW5hYmxlQ2FyZXRCcm93c2luZyk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRp
bmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3Ry
aW5nKCJyZXNpemFibGUtdGV4dC1hcmVhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXRUZXh0QXJl
YXNBcmVSZXNpemFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IGdfaW50ZXJuX3N0cmluZygidXNlci1zdHlsZXNoZWV0LXVyaSIpKQotICAgICAg
ICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBnX3ZhbHVl
X2dldF9zdHJpbmcoJnZhbHVlKSkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKFVSTChVUkwoKSwgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMi
KSkKICAgICAgICAgc2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dl
dF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5n
KCJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiMTBjMDQu
LmQ1OTQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtl
IE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbQppbmRleCBjY2ViYTBiLi44MjJhZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBvcnQgIldl
YlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KQEAgLTUz
NSw3ICs1MzUsNyBAQCBXZWJIaXN0b3J5SXRlbSAqa2l0KEhpc3RvcnlJdGVtKiBpdGVtKQogLSAo
TlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBjb25zdCBLVVJM
JiB1cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBjb3Jl
KF9wcml2YXRlKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJMRXh0
cmFzLm1tCmluZGV4IDBlYjNlYTMuLjA3NzEwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiV2ViTlNEYXRhRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPEZvdW5kYXRp
b24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CkBAIC0xMjcsOSArMTI3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKICAg
ICAgICAgcmV0dXJuIHNlbGY7CiAgICAgfQogICAgIAotICAgIC8vIFRoaXMgYXBwbGllcyBOU1VS
TCdzIGNvbmNlcHQgb2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBLVVJMJ3MgY29uY2VwdC4g
SXQgd291bGQKKyAgICAvLyBUaGlzIGFwcGxpZXMgTlNVUkwncyBjb25jZXB0IG9mIGNhbm9uaWNh
bGl6YXRpb24sIGJ1dCBub3QgVVJMJ3MgY29uY2VwdC4gSXQgd291bGQKICAgICAvLyBtYWtlIHNl
bnNlIHRvIGFwcGx5IGJvdGgsIGJ1dCB3aGVuIHdlIHRyaWVkIHRoYXQgaXQgY2F1c2VkIGEgcGVy
Zm9ybWFuY2UgZGVncmFkYXRpb24KLSAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtl
IHNlbnNlIHRvIGFwcGx5IG9ubHkgdGhlIEtVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBOU1VSTAor
ICAgIC8vIChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0
aGUgVVJMIGNvbmNlcHQgYW5kIG5vdCB0aGUgTlNVUkwKICAgICAvLyBjb25jZXB0LCBidXQgaXQn
cyB0b28gcmlza3kgdG8gbWFrZSB0aGF0IGNoYW5nZSBmb3IgV2ViS2l0IDMuMC4KICAgICBOU1VS
TFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbY29uY3JldGVDbGFzcyBjYW5vbmljYWxSZXF1ZXN0Rm9y
UmVxdWVzdDpyZXF1ZXN0XTsKICAgICBOU1VSTCAqbmV3VVJMID0gW25ld1JlcXVlc3QgVVJMXTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lm1tCmluZGV4IDg4M2YyZTYuLmU5ZWQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAKICNp
bXBvcnQgIldlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0tV
UkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCBjZjllYzdiLi5hYjQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC01Myw3ICs1Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lVHJlZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW0KaW5kZXggNWRiODQ1Ny4uNzQyNDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtODQ3LDcg
Kzg0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICghZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgIAotICAg
IEtVUkwgYWJzb2x1dGVVUkwgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
cmVsYXRpdmVVUkxTdHJpbmcpOworICAgIFVSTCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTFN0cmluZyk7CiAgICAgcmV0dXJuIGFi
c29sdXRlVVJMLnN0cmluZygpLnV0ZjgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDIwYmVlZTIuLjY4YTI5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxM
b2FkQW5kRGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCi0gICAgdm9pZCBzZXRS
ZXF1ZXN0VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJM
ID0gcmVxdWVzdFVSTDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJMID0gcmVxdWVzdFVSTDsgfQogCiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdDsKIAogICAgIFJldGFpblB0cjxOU011
dGFibGVEYXRhPiBtX2RlbGl2ZXJ5RGF0YTsKLSAgICBXZWJDb3JlOjpLVVJMIG1fcmVxdWVzdFVS
TDsKKyAgICBXZWJDb3JlOjpVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4g
bV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmlu
ZGV4IGU1MzZmM2MuLjAxNTNhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBOU011dGFibGVBcnJheSogZ2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtKiwgY29u
c3QgV2ViQ29yZTo6Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQppbmRleCBjNGNjNmM2Li5iODMyZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAt
NDMsNyArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiBpdGVtLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgW21fd2ViVmlldyBfZG93bmxv
YWRVUkw6dXJsXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmZmYzMDYuLjQyOWYyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmly
ZURhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xNTIsOCArMTUyLDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQ
YWdlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJS
SURFOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRh
VG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2Fj
aGVkRnJhbWUqKSBPVkVSUklERTsKQEAgLTE5MSwyNiArMTkxLDI2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9v
bCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsK
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGJhc2VVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNv
cmU6OldpZGdldCopIE9WRVJSSURFOwogI2VuZGlmCiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3Jl
OjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVS
UklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OwogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDIyMGI0ZDguLmFmYWJmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CkBAIC00MTMsNyArNDEzLDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlcioKIH0KICNlbmRpZgog
Ci1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0
IEtVUkwmIGltYWdlVVJMKSBjb25zdAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
UGFpbnRCcm9rZW5JbWFnZShjb25zdCBVUkwmIGltYWdlVVJMKSBjb25zdAogewogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYlJlc291
cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC01MzAs
NyArNTMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxD
bGllbnRSZWRpcmVjdCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiksIG1fd2ViRnJh
bWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJs
ZSBmaXJlRGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmly
ZURhdGUpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSk7CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBs
ZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMo
d2ViVmlldyk7CkBAIC05OTIsNyArOTkyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jLCB3ZWJWaWV3
LCBAc2VsZWN0b3Iod2ViVmlld0RpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KSk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBVUkwmIGluc2VjdXJlVVJMKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGNvbnN0IEsKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0VudGly
ZVBhZ2UpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJM
JiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCiB7CiAgICAgV2ViVmlldyAq
d2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC0xMTkyLDcg
KzExOTIsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlZpZXcqIHZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOwogICAgIApAQCAtMTMyMCw3ICsxMzIwLDcgQEAgUmV0YWluUHRyPFdlYkZy
YW1lUG9saWN5TGlzdGVuZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3Rl
bmVyKEZyYW0KICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lcjsKIH0KIAotU3RyaW5nIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQVNTRVJUKHdl
YlZpZXcpOwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQg
aGVyZSB3aXRoIG5pbCBmb3IgdGhlIFdlYlZpZXcgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIHNvbWV3
aGVyZSBlbHNlLgogICAgIC8vIEJ1dCBpZiB3ZSBkbywgaXQncyBiZXR0ZXIgdG8gcmV0dXJuIHRo
ZSBlbXB0eSBzdHJpbmcgdGhhbiBqdXN0IGNyYXNoaW5nIG9uIHRoZSBzcG90LgogICAgIC8vIE1v
c3Qgb3RoZXIgY2FsbCBzaXRlcyBhcmUgdG9sZXJhbnQgb2YgbmlsIGJlY2F1c2Ugb2YgT2JqZWN0
aXZlLUMgYmVoYXZpb3IsIGJ1dCB0aGlzIG9uZQotICAgIC8vIGlzIG5vdCBiZWNhdXNlIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgX3VzZXJBZ2VudEZvclVSTCBpcyBhIGNvbnN0IEtVUkwmLgorICAgIC8v
IGlzIG5vdCBiZWNhdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgX3VzZXJBZ2VudEZvclVSTCBpcyBh
IGNvbnN0IFVSTCYuCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIApAQCAtMTM4OSw3ICsxMzg5LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y2FuQ2FjaGVQYWdlKCkgY29uc3QKICAgICByZXR1cm4gW1tbbV93ZWJGcmFtZS5nZXQoKSBfZGF0
YVNvdXJjZV0gcmVwcmVzZW50YXRpb25dIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBjbGFzc11dOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAt
MTQyMyw3ICsxNDIzLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gMDsK
IH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBwcml2YXRl
OgogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsCitQYXNz
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmws
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTc0Niw5ICsxNzQ2
LDkgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFAKICAgICBpZiAoZXJyb3JDb2RlICYmIG1fd2Vi
RnJhbWUpIHsKICAgICAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUq
IGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVu
dGF0aW9ucyh3ZWJWaWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFp
bGVkV2l0aEVycm9yRnVuYykgewotICAgICAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJh
bWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKKyAg
ICAgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKICAgICAgICAgICAgIGlmICghcGx1Z2luUGFn
ZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgICAgICAgICAgcGx1Z2luUGFn
ZVVSTCA9IEtVUkwoKTsKKyAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gVVJMKCk7CiAg
ICAgICAgICAgICBOU1N0cmluZyAqcGx1Z2luTmFtZSA9IHBsdWdpblBhY2thZ2UgPyAoTlNTdHJp
bmcgKilbcGx1Z2luUGFja2FnZSBwbHVnaW5JbmZvXS5uYW1lIDogbmlsOwogCiAgICAgICAgICAg
ICBOU0Vycm9yICplcnJvciA9IFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JD
b2RlOmVycm9yQ29kZQpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KICAgICAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBz
aXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgCitQ
YXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkBAIC0xODU1LDcgKzE4NTUsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgcwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVn
aW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
S1VSTCYgdXJsLAorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxNZWRpYUVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCAyYTY2YzI5Li4yMmYyMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
NTcsMTIgKzU3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7CiAKICAgICAv
LyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTc4
LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24uCiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmli
dXRlVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFz
aCkgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBsb25nIGNoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IHVuaXF1ZU5hbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6S1VSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCBkODExNDQxLi44ZWVjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC05MiwzMiArOTIsMzIgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsK
ICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZv
PiYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25z
dCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNv
bnN0IEF0b21pY1N0cmluZyYpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlz
aXRlZChoYXNoKTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBDb2xvciBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CiAKLUtVUkwg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVy
bCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpbi5tbQppbmRleCBiODNiZTE2Li5hMTgwMDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAt
MzEsNyArMzEsNyBAQAogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5o
IgogI2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlF1b3Rh
TWFuYWdlci5oIgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTChb
dXJsIGFic29sdXRlVVJMXSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKICAgICBvcmln
aW4tPnJlZigpOwogICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9y
aWdpblByaXZhdGUgKj4ob3JpZ2luLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCmluZGV4IGM1ZjJjMjcuLjg0ZmFhMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
ZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KQEAgLTMxMiw3ICszMTIsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAq
YWxsVHlwZXMsIENsYXNzIG9iakNDbAogLy8gTWF5IHJldHVybiBuaWwgaWYgbm90IGluaXRpYWxp
emVkIHdpdGggYSBVUkwuCiAtIChOU1VSTCAqKV9VUkwKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwg
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gdXJsOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0
aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAKIC0gKE5TVVJMICopdW5yZWFjaGFibGVV
UkwKIHsKLSAgICBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShfcHJpdmF0
ZSktPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogICAg
IGlmICh1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIHVucmVhY2hhYmxlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggOGFkOWRkYS4uODU0NDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwoKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3Nl
bGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1J
TUVUeXBlIHRleHRFbmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJl
YWNoYWJsZVVSTDp1bnJlYWNoYWJsZVVSTF07CiAgICAgCi0gICAgS1VSTCByZXNwb25zZVVSTDsK
KyAgICBVUkwgcmVzcG9uc2VVUkw7CiAgICAgaWYgKCFiYXNlVVJMKSB7CiAgICAgICAgIGJhc2VV
UkwgPSBibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDBi
MmE2MmQuLmU3NmE1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzY3Myw3ICszNjczLDcgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1
aXZhbGVudChOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24KICAgICAgICAg
aWYgKCFwYWdlKSAKICAgICAgICAgICAgIHJldHVybiBuaWw7IAogICAgICAgICAKLSAgICAgICAg
Y29uc3QgS1VSTCYgaW1hZ2VVUkwgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdnaW5nSW1h
Z2VVUkwoKTsKKyAgICAgICAgY29uc3QgVVJMJiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ2dpbmdJbWFnZVVSTCgpOwogICAgICAgICBBU1NFUlQoIWltYWdlVVJMLmlzRW1w
dHkoKSk7CiAgICAgICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwY2E4NWYuLjFjOTU3NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU2LDcgKzU2LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1F
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGJiMTFjZmMuLjE5
NjA0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtMzksNyArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpA
QCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQog
ewogICAgIGlmIChzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHMpOworICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBzKTsKIH0KIAogc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWE5NmUw
My4uOGNmZTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjgyLDcg
KzY4Miw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29u
dGVudHMoKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRl
bnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKICAgICBjb3JlKHNl
bGYpLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdv
cmxkXSksCi0gICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBWZWN0
b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmpl
Y3RJbkFsbEZyYW1lcyk7CisgICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJM
KCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluQWxsRnJhbWVzKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmVzcGVjdFBy
aW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMyNzA4MjkuLmNkNTRmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVt
OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCmlu
ZGV4IDlkM2YzYWMuLmE3YmM4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJoaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlIDxRV2ViUGFnZUFkYXB0ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2Ny
aXB0d29ybGQuY3BwCmluZGV4IGFmZWI1YmIuLmM1YTVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnNjcmlwdHdvcmxkLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgInF3ZWJz
Y3JpcHR3b3JsZC5oIgogI2luY2x1ZGUgInF3ZWJzY3JpcHR3b3JsZF9wLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmNwcAppbmRleCA1OGZlNzk1Li42ZTkzNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgpAQCAtMjczLDcgKzI3Myw3IEBAIFFTdHJpbmdMaXN0IFFXZWJTZWN1
cml0eU9yaWdpbjo6bG9jYWxTY2hlbWVzKCkKICovCiBRV2ViU2VjdXJpdHlPcmlnaW46OlFXZWJT
ZWN1cml0eU9yaWdpbihjb25zdCBRVXJsJiB1cmwpCiB7Ci0gICAgZCA9IG5ldyBRV2ViU2VjdXJp
dHlPcmlnaW5Qcml2YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCh1cmwpKSk7CisgICAg
ZCA9IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
VVJMKHVybCkpKTsKIH0KIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApp
bmRleCBlNzk2MzNiLi43MDdiMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZp
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBRV2ViU2V0
dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKHZhbHVlKTsKIAogICAgICAgICBRVXJsIGxvY2F0aW9uID0gIXVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24uaXNFbXB0eSgpID8gdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA6IGdsb2JhbC0+
dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKLSAgICAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oV2ViQ29yZTo6S1VSTChsb2NhdGlvbikpOworICAgICAgICBzZXR0aW5ncy0+
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJDb3JlOjpVUkwobG9jYXRpb24pKTsKIAogICAg
ICAgICBRU3RyaW5nIGVuY29kaW5nID0gIWRlZmF1bHRUZXh0RW5jb2RpbmcuaXNFbXB0eSgpID8g
ZGVmYXVsdFRleHRFbmNvZGluZzogZ2xvYmFsLT5kZWZhdWx0VGV4dEVuY29kaW5nOwogICAgICAg
ICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcpOwpAQCAtNzQ5
LDcgKzc0OSw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiBRSWNv
biBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIFdlYkNv
cmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKLSAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29yZTo6
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpL
VVJMKHVybCkuc3RyaW5nKCksCisgICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6VVJMKHVybCku
c3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkludFNp
emUoMTYsIDE2KSk7CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm4gUUljb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggZTQ2Y2YxOS4uN2Y1Y2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIw
MTMtMDktMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+
CiAKICAgICAgICAgW1F0XSBGaXggZm9yY2Vfc3RhdGljX2xpYnNfYXNfc2hhcmVkIGluIFdlYktp
dDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aAppbmRleCA5ZDViYWFjLi4yNTQ5ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIq
IGNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKIAogICAgIFFXZWJQYWdlQWRhcHRlciog
bV93ZWJQYWdlOwotICAgIEtVUkwgbGFzdEhvdmVyVVJMOworICAgIFVSTCBsYXN0SG92ZXJVUkw7
CiAgICAgU3RyaW5nIGxhc3RIb3ZlclRpdGxlOwogICAgIFN0cmluZyBsYXN0SG92ZXJDb250ZW50
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudFF0LmNwcAppbmRleCA3MmEzZGJiLi4wODk3NWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
QEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXgKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OmRvd25sb2FkVVJMKGNvbnN0
IEtVUkwmKQordm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpkb3dubG9hZFVSTChjb25zdCBVUkwm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oCmluZGV4IGU4ZWZkMjguLjIx
OTIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRRdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0
TWVudT4pOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBDb250ZXh0TWVudSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkVVJMKGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
VVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
cGVha2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA5NjAwOTIyLi4yOWY1ZGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIFFVcmwgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6Om1lZGlhQ29udGVudFVybEJ5RWxlbWVudElkKFFXZWJGcmFtZUFkYXB0
ZXIqIGFkYXB0CiAvLyBBUEkgQ2FuZGlkYXRlPwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0QWx0ZXJuYXRlSHRtbChRV2ViRnJhbWVBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3Ry
aW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsLCBjb25zdCBRVXJsJiBmYWlsaW5nVXJsKQog
ewotICAgIEtVUkwga3VybChiYXNlVXJsKTsKKyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBX
ZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVBcnJheSB1dGY4
ID0gaHRtbC50b1V0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDE5ODFmZDEuLjM0ZmFlYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBRU3RyaW5nIGRydFByaW50
RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJu
IFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJTFcIiIpLmFy
ZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKIH0KIAotc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYga3VybCkKK3N0
YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdl
YkNvcmU6OlVSTCYga3VybCkKIHsKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGt1cmwuc3RyaW5nKCk7CkBAIC0zNjQsNyArMzY0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0KCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkw6ICVzIFxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQodXJsKSkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IC8vIFVzZWQgYnkgQXBwbGUgV2ViS2l0IHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgYW4gZXhpc3Rp
bmcgaGlzdG9yeSBpdGVtLgogICAgIC8vIFF0V2ViS2l0IGRvZXNuJ3QgYWNjb21vZGF0ZSB0aGlz
IG9uIGhpc3RvcnkgaXRlbXMuIElmIGl0IGV2ZXIgZG9lcywKQEAgLTcwMCw3ICs3MDAsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJgogfQogCiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0
Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV93ZWJGcmFtZSkKICAgICAg
ICAgcmV0dXJuIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51c2VyQWdlbnRGb3JVcmwodXJsKS5y
ZW1vdmUoUUxhdGluMUNoYXIoJ1xuJykpLnJlbW92ZShRTGF0aW4xQ2hhcignXHInKSk7CkBAIC04
MzUsNyArODM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKQogewogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiZGlkUnVuSW5zZWN1cmVD
b250ZW50XG4iKTsKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRE
ZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
ZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJD
YWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiZGlkRGV0ZWN0WFNTXG4iKTsKQEAgLTExNTMsOCAr
MTE1Myw4IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCFwYWdlLT5lcnJvclBh
Z2VFeHRlbnNpb24oJm9wdGlvbiwgJm91dHB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEtVUkwgYmFzZVVybChvdXRwdXQuYmFzZVVybCk7Ci0gICAgS1VSTCBmYWlsaW5nVXJsKG9w
dGlvbi51cmwpOworICAgIFVSTCBiYXNlVXJsKG91dHB1dC5iYXNlVXJsKTsKKyAgICBVUkwgZmFp
bGluZ1VybChvcHRpb24udXJsKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KGJhc2VVcmwpOwogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUob3V0cHV0LmNvbnRlbnQuY29uc3RE
YXRhKCksIG91dHB1dC5jb250ZW50Lmxlbmd0aCgpKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPmVtaXRE
b3dubG9hZFJlcXVlc3RlZChyZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QobV9mcmFtZS0+bG9hZGVy
KCkubmV0d29ya2luZ0NvbnRleHQoKSkpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVG
cmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBpZiAo
IW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcKIAogICAgIC8vIEZJWE1FOiBTZXQgb3ZlcnJpZGUgZW5jb2Rp
bmcgaWYgd2UgaGF2ZSBvbmUuCiAKLSAgICBLVVJMIHVybFRvTG9hZCA9IHVybDsKKyAgICBVUkwg
dXJsVG9Mb2FkID0gdXJsOwogICAgIGlmICh1cmxUb0xvYWQuaXNFbXB0eSgpKQogICAgICAgICB1
cmxUb0xvYWQgPSBibGFua1VSTCgpOwogCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQog
Ci1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGll
bnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIHFE
ZWJ1ZygpPDwiICsrKysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWlt
ZSA9ICI8PG1pbWVUeXBlSW47CiAgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOwpAQCAtMTQ2
MCw3ICsxNDYwLDcgQEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBI
VE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQdHI8V2lk
Z2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAg
ICAvLyBxRGVidWcoKTw8Ii0tLS0tLSBDcmVhdGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlUGx1Z2luIGZvciAiPDx1cmwuc3RyaW5nKCkgPDwgbWltZVR5cGU7CiAgICAg
Ly8gcURlYnVnKCk8PCItLS0tLS1cdCB1cmwgPSAiPDx1cmwuc3RyaW5nKCk7CkBAIC0xNTYzLDcg
KzE1NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2lu
ID0gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBs
ZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVBsdWdpbihwbHVn
aW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRp
b24veC1qYXZhLWFwcGxldCIsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAzZWRiMzY1Li40ZTU2
Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRp
cmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYs
IGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xNjIsOCArMTYyLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0q
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGly
ZVBhZ2UpOwogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xOTAsOSArMTkwLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAg
ICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdl
YkNvcmU6OkNhY2hlZEZyYW1lKik7CkBAIC0yMDYsMTQgKzIwNiwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lk
dGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBi
YXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRl
bnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmlydHVhbCBP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAgICAg
dmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQq
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAg
IGNvbnN0IEtVUkwmIGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSZXF1
ZXN0ZWRVcmw7IH0KKyAgICBjb25zdCBVUkwmIGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RSZXF1ZXN0ZWRVcmw7IH0KIAogICAgIFFXZWJGcmFtZUFkYXB0ZXIqIHdlYkZy
YW1lKCkgY29uc3Q7CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW47CiAKLSAgICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKKyAgICBVUkwgbV9sYXN0UmVx
dWVzdGVkVXJsOwogICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdC5jcHAKaW5kZXggZTg5YTE0My4uNGQwZDljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViRnJh
bWVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUXRQ
bGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuY3BwCmluZGV4IGFmYjFhZGIuLmI0MWQyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0x
MDAsMzIgKzEwMCwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0
cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
RW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9
CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
ICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0K
QEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5J
bmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDbwogCiAvLyBWaXNpdGVk
TGlua1N0cmF0ZWd5CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQo
UGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppc0xp
bmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgQVNTRVJUKGhhc2gpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmgKaW5kZXggZGFhYjI1OS4uOTc5MWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaApAQCAtNTks
MTIgKzU5LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAgICAgCiAgICAgLy8gV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8g
V2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNp
dGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAg
dmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtI
YXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggNzYzM2JmNy4u
ZmY2OWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
RnJhbWVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJGcmFtZUFkYXB0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5nIFFX
ZWJGcmFtZUFkYXB0ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVBZGFw
dGVyOjpzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcgJm1p
bWVUeXBlLCBjb25zdCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJsKTsK
KyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRhdGEu
bGVuZ3RoKCkpOwogICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3Nywx
NyBAQCB2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAm
ZGF0YSwgY29uc3QgUVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9IGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGluZyA9
IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmcoYWN0
dWFsTWltZVR5cGUpLCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSBzdWJzdGl0dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBlKSwg
ZW5jb2RpbmcsIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2b2lk
IFFXZWJGcmFtZUFkYXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVy
bCAmYmFzZVVybCkKIHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwoYmFz
ZVVybCk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAg
Y29uc3QgUUJ5dGVBcnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh1dGY4LmNvbnN0RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiksIFdU
Rjo6U3RyaW5nKCJ1dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJp
bmcoInV0Zi04IiksIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBA
IC0zNzYsOCArMzc2LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6a2l0
KGNvbnN0IEZyYW1lKiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1
dGVVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNl
IGlmIHdlIGNvdWxkIGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJMIGFu
ZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xl
IHNsYXNoIGluICdodHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwpOwor
ICAgIC8vIENvbnZlcnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZp
b3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwgdmFs
aWRhdGVkVXJsID0gVVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlkKCkg
fHwgIXZhbGlkYXRlZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRV
cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdl
QWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAKaW5kZXggZDI2NjUyNi4uNWFhOWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMTA2OCw3ICsxMDY4
LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVy
OjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9h
ZEZyYW1lUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsICZm
cmFtZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFs
c2UsIC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzogewotICAgICAgICBL
VVJMIHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJM
KCk7CisgICAgICAgIFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICBv
cGVuTmV3V2luZG93KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0ZmM1Y2ZmLi5h
MDAwNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVS
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBm
aWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBSb2dlciBGb25nICA8
cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEF0dGVtcHRpbmcgdG8g
c2Nyb2xsIGZyb20gYSBub24tc2Nyb2xsYWJsZSBsYXllciByZXN1bHRzIHRoZSBtYWluIGRvY3Vt
ZW50IGdldHRpbmcgc2Nyb2xsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmNwcAppbmRleCAzNjBmN2MyLi40MmY2ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxs
aW5nSGVscGVycy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
S1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRo
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTM5LDEyICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENG
QXJyYXlDYWxsQmFja3MgTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNr
cyA9IHswLCBJVW5rbm93blJldGFpbkNhbGxiYWNrLCBJVW5rbm93blJlbGVhc2VDYWxsYmFjaywg
MCwgMH07CiBDRkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJ
VW5rbm93bkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyA9IHswLCBJVW5rbm93blJldGFpbkNhbGxi
YWNrLCBJVW5rbm93blJlbGVhc2VDYWxsYmFjaywgMCwgMH07CiAKLUtVUkwgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3RyKQorVVJMIE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTChCU1RSIHVybFN0cikKIHsKLSAgICByZXR1cm4gS1VSTChLVVJMKCksIFN0cmlu
Zyh1cmxTdHIsIFN5c1N0cmluZ0xlbih1cmxTdHIpKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwg
U3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKIH0KIAotQlNUUiBNYXJzaGFs
bGluZ0hlbHBlcnM6OktVUkxUb0JTVFIoY29uc3QgS1VSTCYgdXJsKQorQlNUUiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OlVSTFRvQlNUUihjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gQlN0cmlu
Zyh1cmwuc3RyaW5nKCkpLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKaW5kZXggYjIxM2ZiOS4uNTBlMmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmgKQEAgLTMxLDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIH0K
IAogY2xhc3MgTWFyc2hhbGxpbmdIZWxwZXJzCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkNv
cmU6OktVUkwgQlNUUlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNUUiBLVVJMVG9CU1RSKGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIEJTVFJUb0tVUkwo
QlNUUik7CisgICAgc3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwog
ICAgIHN0YXRpYyBDRlVSTFJlZiBQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpT
dHJpbmcmKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5n
KENGVVJMUmVmIGZpbGVVUkwpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJlZihC
U1RSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBjNzMzNzc1Li5hMmMzZjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtLCBjb25zdAogICAg
IHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKG1fd2ViVmlldywgJnNlbGVjdGVk
SXRlbSwgcHJvcGVydHlCYWcuZ2V0KCkpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3dlYlZpZXctPmRvd25sb2Fk
VVJMKHVybCk7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5t
YWluRnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAg
ICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBTdHJpbmcoKSwgMCwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBlZDQxYzU5Li4yMWUyNjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0
cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6
OkNvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmluZGV4IGE1NjQ2ZjIuLjhkZGZkZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvCiB7CiB9CiAKLU5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYgdXJs
KQorTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBpbnQgb3V0
ID0gMDsKICAgICBCU3RyaW5nIG9yZyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCktPnRvU3Ry
aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IGI2ZjljMjEu
LmQ3MGZiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiB9CiAKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNo
ZWNrUGVybWlzc2lvbihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGhhc05vdGlm
aWNhdGlvbkRlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYWJhNzRlYy4uMGNkZmQ4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgICAgICBm
cmFtZUxvYWREZWxlZ2F0ZS0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJWaWV3
LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBk
b3VibGUgZmlyZURhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91Ymxl
IGZpcmVEYXRlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7
CkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCgpCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2Mi0+ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtV
UkwmIGluc2VjdXJlVVJMKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwp
CiB7CiAgICAgQ09NUHRyPElXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4gPSBX
ZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2Uob3JpZ2luKTsKIApAQCAtODYxLDcgKzg2
MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2
Mi0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KHdlYlZpZXcsIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtV
UkwmLCBib29sKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0
IFVSTCYsIGJvb2wpCiB7CiAgICAgLy8gRklYTUU6IHByb3BvZ2F0ZSBjYWxsIGludG8gdGhlIHBy
aXZhdGUgZGVsZWdhdGUuCiB9CkBAIC05NzksNyArOTc5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJW
aWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViSGlz
dG9yeURlbGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiB7
CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBtX3dlYkZyYW1lLT53ZWJWaWV3KCktPnVzZXJBZ2VudEZvcktV
UkwodXJsKTsKIH0KQEAgLTEwNjYsNyArMTA2Niw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCov
LCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBSZWZQdHI8RnJhbWU+IHJlc3VsdCA9IGNy
ZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCByZWZlcnJlcik7CkBAIC0xMDc1LDcg
KzEwNzUsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwpAQCAtMTA5Nyw3ICsxMDk3
LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxl
YXNlKCk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewog
ICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBl
KHVybCwgbWltZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogfQpAQCAtMTEx
Niw3ICsxMTE2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
VG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICBBU1NFUlQoZnJhbWUg
PT0gcGx1Z2luVmlldy0+cGFyZW50RnJhbWUoKSk7CiAKICAgICBpZiAoIXBsdWdpblZpZXctPnBs
dWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAgICAgIFVSTCBwbHVnaW5QYWdl
VVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChw
bHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0
cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29u
c3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5T
aXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQ
dHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
CiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAt
MTIxNyw5ICsxMjE3LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRh
VG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1fbWFudWFsTG9hZGVyID0g
c3RhdGljX2Nhc3Q8RW1iZWRkZWRXaWRnZXQqPihwbHVnaW5XaWRnZXQpOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IEtVUkwmIC8qYmFzZVVSTCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFz
ZVVSTCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQogewotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3
ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1l
bnQsIEtVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEt
YXBwbGV0IiwgZmFsc2UpOworICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1
Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1lbnQsIFVS
TCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQi
LCBmYWxzZSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBsb2FkZWQgc3Vj
Y2Vzc2Z1bGx5CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdpblZpZXctPnBs
dWdpbigpLT5sb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0OTkxOGRjLi5hZTQyOGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmly
ZURhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xMzUsOCArMTM1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBh
Z2UoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVS
TCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJ
REU7CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7CkBAIC0xNzcsMTUgKzE3
NywxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29s
IGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxs
eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRN
YW51YWxseSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNv
cmU6OldpZGdldCopIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3Vs
ZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQqKSBPVkVSUklERTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3du
UHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0
ZTsKIAogcHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CiAgICAgV2ViSGlzdG9yeSogd2Vi
SGlzdG9yeSgpIGNvbnN0OwogCiAgICAgV2ViRnJhbWUqIG1fd2ViRnJhbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCAwMWJiOGIwLi5hZGMzN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTg4LDMyICs4OCwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlzOwogfQogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFi
bGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nv
b2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29v
a2llTmFtZSk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjoK
ICAgICB9CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcm
KQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICBy
ZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCBhYjE0YWZiOS4uMDlhODFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUzLDEyICs1
MywxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
ICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC02OCw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6
UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6
VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApp
bmRleCBmZmNhYTg1Li4zYWFlODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApA
QCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTI1NCw3ICsyNTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3Vy
Y2U6OnBhZ2VUaXRsZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6
dW5yZWFjaGFibGVVUkwoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogdXJsKQogewot
ICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAg
ICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKICAgICBC
U3RyaW5nIHVybFN0cmluZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuY2hhcmFj
dGVycygpLCB1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5sZW5ndGgoKSk7CiAKICAgICAqdXJsID0g
dXJsU3RyaW5nLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBiOGZh
YmUyLi4zZDFiMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1X
ZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEtVUkwmIHVybCwg
SVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQorV2ViRG93bmxvYWQqIFdlYkRvd25sb2Fk
OjpjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmIHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRl
bGVnYXRlKQogewogICAgIFdlYkRvd25sb2FkKiBpbnN0YW5jZSA9IG5ldyBXZWJEb3dubG9hZCgp
OwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCmluZGV4IDdh
NjZkZjEuLjIyNTRkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaApAQCAtMzgsNyArMzgsNyBA
QAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTUyLDEzICs1MiwxMyBAQCBj
bGFzcyBXZWJEb3dubG9hZAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgSVdlYkRvd25sb2FkRGVs
ZWdhdGUqKTsKKyAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5z
dGFuY2UoKTsKIHByaXZhdGU6CiAgICAgV2ViRG93bmxvYWQoKTsKICAgICB2b2lkIGluaXQoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
LSAgICB2b2lkIGluaXQoY29uc3QgV2ViQ29yZTo6S1VSTCYsIElXZWJEb3dubG9hZERlbGVnYXRl
Kik7CisgICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVn
YXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNGQ1OWY4OC4uMDA4MjZhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYwogICAgIENGUmVsZWFzZShjb25uZWN0aW9uKTsKIH0K
IAotdm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIElXZWJEb3dubG9hZERl
bGVnYXRlKiBkZWxlZ2F0ZSkKK3ZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgVVJMJiB1cmws
IElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBtX2RlbGVnYXRlID0gZGVs
ZWdhdGUgPyBkZWxlZ2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5j
ZSgpOwogICAgIExPR19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IGQxOWY0MjAuLjk4ZTg1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgYwogICAgIHN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViRG93bmxv
YWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUp
Cit2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxl
Z2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA1YzBkZmExLi42MTk1
ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYWI3MTk0NS4uMmExYzA4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcApAQCAtNTY3LDExICs1NjcsMTEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUsIEIK
ICAgICBTdHJpbmcgZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVu
KHRleHRFbmNvZGluZ05hbWUpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGJl
IHVzaW5nIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCBoZXJlLAotICAgIC8vIGJ1dCB0
aGF0IHdvdWxkIHR1cm4gYSBudWxsIEJTVFIgaW50byBhIG51bGwgS1VSTCwgYW5kIHdlIGNyYXNo
IGluc2lkZSBvZgotICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEgbnVsbCBLVVJMIGluIGNvbnN0
cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgotICAgIEtVUkwgYmFzZUtVUkwgPSBLVVJMKEtV
UkwoKSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFzZVVS
TCkpKTsKKyAgICAvLyBidXQgdGhhdCB3b3VsZCB0dXJuIGEgbnVsbCBCU1RSIGludG8gYSBudWxs
IFVSTCwgYW5kIHdlIGNyYXNoIGluc2lkZSBvZgorICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEg
bnVsbCBVUkwgaW4gY29uc3RydWN0aW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCisgICAgVVJMIGJh
c2VLVVJMID0gVVJMKFVSTCgpLCBTdHJpbmcoYmFzZVVSTCA/IGJhc2VVUkwgOiBMIiIsIFN5c1N0
cmluZ0xlbihiYXNlVVJMKSkpOwogCi0gICAgS1VSTCBmYWlsaW5nS1VSTCA9IE1hcnNoYWxsaW5n
SGVscGVyczo6QlNUUlRvS1VSTChmYWlsaW5nVVJMKTsKKyAgICBVUkwgZmFpbGluZ0tVUkwgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwoZmFpbGluZ1VSTCk7CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChiYXNlS1VSTCk7CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEoZGF0YSwgbWltZVR5cGVTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCBmYWlsaW5nS1VSTCk7
CkBAIC03MDEsMTEgKzcwMSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
Ojpwcm92aXNpb25hbERhdGFTb3VyY2UoCiAgICAgcmV0dXJuICpzb3VyY2UgPyBTX09LIDogRV9G
QUlMOwogfQogCi1LVVJMIFdlYkZyYW1lOjp1cmwoKSBjb25zdAorVVJMIFdlYkZyYW1lOjp1cmwo
KSBjb25zdAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICgh
Y29yZUZyYW1lKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7
CiAKICAgICByZXR1cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCmluZGV4IDYyNzBkNzguLjMzNjRjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQWRqdXN0Vmlld1NpemVPck5vdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogCiAjaW5jbHVk
ZSA8V1RGL1JlZlB0ci5oPgpAQCAtMzE4LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAgICBIUkVTVUxU
IG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVs
cywgSURPTUVsZW1lbnQqIGFnYWluc3RFbGVtZW50LCBCU1RSKiByZXN1bHQpOwogICAgIEhSRVNV
TFQgY2FuUHJvdmlkZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCk7CiAKLSAgICBXZWJDb3Jl
OjpLVVJMIHVybCgpIGNvbnN0OworICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdDsKIAogICAg
IFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyop
OwpAQCAtMzQxLDcgKzM0MSw3IEBAIHByb3RlY3RlZDoKICAgICBjbGFzcyBXZWJGcmFtZVByaXZh
dGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiAgICBkOwogICAgIGJvb2wgICAgICAgICAgICAgICAg
bV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIFdlYkNvcmU6OktVUkwgICAgICAgbV9vcmlnaW5h
bFJlcXVlc3RVUkw7CisgICAgV2ViQ29yZTo6VVJMICAgICAgIG1fb3JpZ2luYWxSZXF1ZXN0VVJM
OwogICAgIGJvb2wgICAgICAgICAgICAgICAgbV9pblByaW50aW5nTW9kZTsKICAgICBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CiAgICAgaW50IG1fcGFnZUhlaWdodDsgICAv
LyBoZWlnaHQgb2YgdGhlIHBhZ2UgYWRqdXN0ZWQgYnkgbWFyZ2lucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5LmNwcAppbmRleCA1M2UxZDU0Li43ZTYzNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNw
cApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC01MzAsNyArNTMw
LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnks
IGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoKICAgICByZXR1cm4gaHI7CiB9CiAKLXZvaWQg
V2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3Jl
YXNlVmlzaXRDb3VudCkKK3ZvaWQgV2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdh
c0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KQogewogICAgIElXZWJIaXN0b3J5SXRl
bSogZW50cnkgPSBtX2VudHJpZXNCeVVSTC5nZXQodXJsLnN0cmluZygpKS5nZXQoKTsKICAgICBp
ZiAoZW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaAppbmRleCAzYzc1YTE4Li5mZjc3N2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBj
bGFzcyBVUkw7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAg
cHVibGljOgogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFy
ZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBi
b29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKKyAgICB2b2lkIHZpc2l0
ZWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25z
dCBXVEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNl
VmlzaXRDb3VudCk7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cChXZWJDb3Jl
OjpQYWdlR3JvdXAmKTsKIAogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW1Gb3JVUkxT
dHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAppbmRleCA4YmZlOWJkLi40NTA4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJ
dGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggOTY0MmU2OC4uN2RjYWJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmluaXRXaXRoVVJM
KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bWFpbkRv
Y3VtZW50VVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAg
ICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpLVVJMVG9CU1RSKG1fcmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpKTsKKyAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpV
UkxUb0JTVFIobV9yZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgIHJldHVybiBT
X09LOwogfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6dGltZW91dEludGVydmFsKAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6VVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpL
VVJMVG9CU1RSKG1fcmVxdWVzdC51cmwoKSk7CisgICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6VVJMVG9CU1RSKG1fcmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCBjY2ZkOTVkLi5lNDY5OTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAvLyBXZWJSZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUmVzb3VyY2U6Oldl
YlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKK1dlYlJlc291cmNlOjpXZWJSZXNvdXJj
ZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAsIG1fZGF0
YShkYXRhKQogICAgICwgbV91cmwodXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKaW5kZXggZDhm
YjQzMy4uMDhhNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYlJlc291cmNlIDogcHVi
bGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVh
dGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwogcHJvdGVjdGVkOgotICAgIFdl
YlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVh
bSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291cmNlKCk7CiAKIHB1YmxpYzoKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50OwogICAgIENPTVB0
cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3Jl
OjpVUkwgbV91cmw7CiAgICAgV1RGOjpTdHJpbmcgbV9taW1lVHlwZTsKICAgICBXVEY6OlN0cmlu
ZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgV1RGOjpTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggZjBjNDMwMi4uZmUzMzJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiAjaW5jbHVk
ZSA8d3RmL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlLmg+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0yMjYsNyArMjI2LDcgQEAgV2ViVVJMUmVz
cG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVz
cG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBo
dHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFj
ZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKFBhcnNl
ZFVSTFN0cmluZywgImh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7
CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3Ry
aW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRl
eCAxYzhjNTY5Li4wNzljNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwu
aCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDEyNDI5Y2EuLjU2MzcxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCkBAIC0yMjQsOSArMjI0LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJp
bmcoQlNUUiBic3RyKQogICAgIHJldHVybiBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIp
KTsKIH0KIAotc3RhdGljIGlubGluZSBLVVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5s
aW5lIFVSTCB0b1VSTChCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0
cmluZyhic3RyKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQog
CiBjbGFzcyBQcmVmZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2Vi
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIgewpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmlu
ZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7
CiB9CiAKLWNvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJM
JikKK2NvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQog
ewogICAgIGlmIChtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJB
Z2VudEN1c3RvbTsKQEAgLTQ4NTUsNyArNDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAg
ICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAg
ICBzdHIuY2xlYXIoKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihLVVJMKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKFVSTCgpKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFj
a2dyb3VuZHMoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYw
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJj
ZSksIHRvVVJMKHVybCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3RDb3VudCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0Q291bnQsIGJsYWNrbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0
RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhz
b3VyY2UpLCB0b1VSTCh1cmwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3RDb3VudCwgYmxhY2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3Vw
TmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQod29ybGQtPndvcmxkKCksIHRvS1VSTCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVz
ZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC02NDI3LDcgKzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQq
CiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdl
R3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tV
UkwodXJsKSk7CisgICAgcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3
b3JsZC0+d29ybGQoKSwgdG9VUkwodXJsKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1
NDksNyArNjU0OSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZp
c2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLXZvaWQgV2ViVmlldzo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJW
aWV3Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxl
Z2F0ZSdzIGpvYiB0byByZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhl
cndpc2UgaXQgd2lsbCBiZQogICAgIC8vIGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0
dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCBhYjI3MTg3Li5jYWQ4NWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCkBAIC05MDgsNyArOTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVuaWVudCB0byBi
ZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50
IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktV
UkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNl
ckFnZW50Rm9yS1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9v
bCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBA
IC05NDcsNyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBM
UEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2li
bGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBw
cE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXll
ckNoYW5nZXNTb29uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGU1OGJkOGYuLjc5NTAwNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBmaWxl
czogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTE2ICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBFZGl0b3JDbGllbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudFdpbkNFLmNwcAppbmRleCBkZGE0ZDI3Li43YjVkNjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRXaW5DRS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFdpbkNF
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb24KICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50V2luQ0U6OmRv
d25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRXaW5DRTo6
ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudFdpbkNFLmgKaW5kZXggOGNkMTk1MS4uZGI3NTZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNF
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudFdpbkNFLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093
blB0cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNv
cmU6OkNvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51
Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNv
cmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3Jl
OjpGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggODUzYjFiYi4uNmQwMGIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6On5GcmFtZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2Miwx
MiArMTYyLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi1Q
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2luKGNv
bnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkK
K1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
CiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpCiB7CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJsLCBu
YW1lLCBvd25lckVsZW1lbnQsIHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRo
LCBtYXJnaW5IZWlnaHQpOwpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAg
ICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRy
PFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4g
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiAwOwogfQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUo
dXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0yNjIs
MTIgKzI2MiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcsNyAr
MzE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBL
VVJMJiwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyArNjMx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZyYW1l
c2V0KGJvb2wpCiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4g
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewotICAg
IHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1c2Vy
QWdlbnQoS1VSTCgpKSk7CisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5DRTo6
Y3JlYXRlKG1fZnJhbWUsIHVzZXJBZ2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggOTdkYzk1MC4uYjEwZjAyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlLCBkb3VibGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0x
MDUsMTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0Vz
dGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jl
c3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9p
ZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlw
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2Jq
ZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7
CiAKQEAgLTEzNiw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQsOSArMTYzLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCBXVEY6OlN0
cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAg
ICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJD
b3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCA3MzNh
NGVlLi4yZGM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtODQsMzIgKzg0
LDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpz
ZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmlu
ZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShz
ZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQ
bHVnaW5JbmZvPiYgb3V0CiAgICAgfQogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBj
b25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6aXNMaW5r
VmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFz
aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKaW5kZXggMTIwODgxMS4uOTI1ZjBlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0
cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0g
ICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6Okxp
bmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6
TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3Jl
OjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAppbmRleCAzNjUwZDgzLi5m
NTUzMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lk
IFdlYlZpZXc6OmNsZWFudXAoKQogICAgIFVucmVnaXN0ZXJDbGFzcyhrV2ViVmlld1dpbmRvd0Ns
YXNzTmFtZSwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0
aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9m
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdC93aW5jZS9XZWJWaWV3LmgKaW5kZXggYjQ0MDI1MS4uOGI2MDY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJWaWV3LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZyYW1lUmVjdChSRUNUKiByZWN0KSBjb25zdDsKIAot
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpOworICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sLCBpbnQsIGludCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IERpYWxvZwogICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBlNDk5ZjU5Li5kODY4ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJl
bmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisg
ICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI3
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAg
ICAgIFtRdF0gRml4IGZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxZTYwZDQwLi44NTA3NjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6TmV0
d29ya0Jsb2JSZWdpc3RyeSgpCiB7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBj
b25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGRhdGEsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBuZXdTYW5kYm94RXh0ZW5zaW9ucykKK3ZvaWQgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4g
ZGF0YSwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mIG5ld1NhbmRib3hF
eHRlbnNpb25zKQogewogICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9ucy5jb250YWlucyh1
cmwuc3RyaW5nKCkpKTsKIApAQCAtNjcsMTEgKzY3LDExIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZWN0CiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29u
dGFpbnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKICAgICBpZiAobWFw
SXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCi0gICAgICAgIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8S1VSTD4o
KSkuaXRlcmF0b3I7CisgICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24u
YWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8VVJMPigpKS5pdGVyYXRvcjsKICAgICBtYXBJdGVyYXRv
ci0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1VSTCkKK3ZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KHVybCwgc3JjVVJMKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uTWFwOjppdGVyYXRvciBpdGVyID0g
bV9zYW5kYm94RXh0ZW5zaW9ucy5maW5kKHNyY1VSTC5zdHJpbmcoKSk7CkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmlu
ZChjb25uZWN0aW9uKS0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGJsb2JSZWdpc3RyeSgp
LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9ucy5yZW1vdmUo
dXJsLnN0cmluZygpKTsKQEAgLTk4LDggKzk4LDggQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5
Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAK
ICAgICBpZiAoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PEtVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKLSAgICBmb3IgKEhh
c2hTZXQ8S1VSTD46Oml0ZXJhdG9yIGl0ZXIgPSBibG9ic0ZvckNvbm5lY3Rpb24uYmVnaW4oKSwg
ZW5kID0gYmxvYnNGb3JDb25uZWN0aW9uLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgSGFzaFNldDxVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKKyAgICBmb3IgKEhhc2hTZXQ8VVJMPjo6aXRlcmF0
b3IgaXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0ZvckNvbm5l
Y3Rpb24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwoKml0ZXIpOwogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb25z
LnJlbW92ZSgqaXRlcik7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgTmV0d29ya0Js
b2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwog
fQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitjb25z
dCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpz
YW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
bV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmgKaW5kZXggNmQ3MWJiZi4uNzMzMDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCTE9CKSAmJiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIApAQCAtNDcsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQmxvYlJlZ2lz
dHJ5KCk7CiAgICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNoYXJlZCgpOwogCi0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+Jik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+Jik7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwog
CiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0ZW5zaW9ucyhjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgp
OwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+PiBTYW5kYm94RXh0ZW5zaW9uTWFwOwog
ICAgIFNhbmRib3hFeHRlbnNpb25NYXAgbV9zYW5kYm94RXh0ZW5zaW9uczsKIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29y
ZTo6S1VSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29yZTo6VVJMPj4gQmxvYkZv
ckNvbm5lY3Rpb25NYXA7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9ibG9ic0ZvckNvbm5l
Y3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODlkNGVhZi4u
MDNhZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTgyLDM3ICsxODIs
MzcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG0KICAgICBsb2FkZXItPmRpZENvbnZlcnRIYW5k
bGVUb0Rvd25sb2FkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNl
c3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFn
ZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQog
ewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdD
b29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByZXN1bHQpCiB7CiAgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNv
b2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VT
ZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4gZXh0ZW5zaW9uczsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBkYXRhLnNhbmRib3hFeHRlbnNpb25zKCkuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtMjIzLDEyICsyMjMsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQmxvYlIKICAgICBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBkYXRhLnJl
bGVhc2VEYXRhKCksIGV4dGVuc2lvbnMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
S1VSTCYgc3JjVVJMKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0
ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAg
ICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkucmVnaXN0ZXJCbG9iVVJMKHRoaXMsIHVy
bCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkudW5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGZiZmQ4MjMxLi5kMjJkZDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTczLDIyICs3MywyMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+KTsKIAogICAgIHZvaWQg
cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBj
cm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7
CiAgICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAg
IHZvaWQgY29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJl
c3VsdCk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVz
dWx0KTsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogCi0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNV
UkwpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JS
ZWdpc3RyYXRpb25EYXRhJik7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgUmVmUHRyPENvcmVJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhZmFlMWEyLi5hNWY3Y2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzUsMTYgKzM1LDE2IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFy
dHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIFNldENv
b2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llU3RyaW5nKQot
ICAgIENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAg
ICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6
OlN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChX
VEY6OlZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5n
IGNvb2tpZU5hbWUpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpT
dHJpbmcgcmVzdWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFdURjo6
U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAt
PiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OlVSTCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpVUkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAg
IERlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCB1
cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckJsb2JVUkwoV2ViQ29y
ZTo6S1VSTCB1cmwsIFdlYktpdDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKLSAgICBSZWdp
c3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJDb3JlOjpLVVJMIHNyY1VS
TCkKLSAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpLVVJMIHVybCkKKyAgICBSZWdpc3Rl
ckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpCbG9iUmVnaXN0cmF0aW9uRGF0YSBk
YXRhKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29y
ZTo6VVJMIHNyY1VSTCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKaW5kZXggOTE4Njk3YS4uZmY0Mjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZUxvYWRlcihQYXNzUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICBzY2hl
ZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLUhvc3RSZWNvcmQqIE5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBD
cmVhdGVIb3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCitIb3N0UmVjb3JkKiBOZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
cmVhdGVIb3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0
LmdldCgpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnJlbW92ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBzY2hl
ZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFNjaGVkdWxlcjo6cmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRl
ciwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nl
c3MpIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QgbG9hZGVy
IG9yaWdpbmFsbHkgZm9yICclcycgcmVkaXJlY3RlZCB0byAnJXMnIiwgbG9hZGVyLT5yZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RVUkwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggZmI0MTAyNy4uODQwYTI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gQ2FsbGVkIHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3Mgb24gYSBiYWNrZ3Jv
dW5kIHRocmVhZCB3aGVuIGEgcmVzb3VyY2UgbG9hZCBoYXMgZmluaXNoZWQuCiAgICAgdm9pZCBz
Y2hlZHVsZVJlbW92ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqKTsKIAotICAgIHZvaWQg
cmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9pZCByZWNlaXZlZFJlZGlyZWN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQg
c2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogCiAgICAgLy8gRm9yIE5ldHdvcmtQ
cm9jZXNzIHN0YXRpc3RpY3MgcmVwb3J0aW5nLgpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdFJlY29yZCogaG9zdEZvclVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKKyAg
ICBIb3N0UmVjb3JkKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQ
b2xpY3kgPSBGaW5kT25seSk7CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVNlcnZlUGVuZGluZ1Jl
cXVlc3RzKCk7CiAgICAgdm9pZCByZXF1ZXN0VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxOZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDA4ODQ1MmUuLmUx
OTdmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJp
ZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0
dHBzUHIKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcm94eVNldHRpbmdzID0gW05TTXV0YWJs
ZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAKICAgICBpZiAoIWh0dHBQcm94eS5pc051bGwoKSkg
ewotICAgICAgICBLVVJMIGh0dHBQcm94eVVSTChLVVJMKCksIGh0dHBQcm94eSk7CisgICAgICAg
IFVSTCBodHRwUHJveHlVUkwoVVJMKCksIGh0dHBQcm94eSk7CiAgICAgICAgIGlmIChodHRwUHJv
eHlVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6
bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwUHJveHlVUkwuaG9zdCgpKSBmb3JLZXk6KE5T
U3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQUHJveHldOwogICAgICAgICAgICAgaWYgKGh0
dHBQcm94eVVSTC5oYXNQb3J0KCkpIHsKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgb3Zl
cnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcm
IGh0dHBzUHIKICAgICB9CiAKICAgICBpZiAoIWh0dHBzUHJveHkuaXNOdWxsKCkpIHsKLSAgICAg
ICAgS1VSTCBodHRwc1Byb3h5VVJMKEtVUkwoKSwgaHR0cHNQcm94eSk7CisgICAgICAgIFVSTCBo
dHRwc1Byb3h5VVJMKFVSTCgpLCBodHRwc1Byb3h5KTsKICAgICAgICAgaWYgKGh0dHBzUHJveHlV
UkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNT
dHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwc1Byb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0
cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQcm94eV07CiAgICAgICAgICAgICBpZiAoaHR0
cHNQcm94eVVSTC5oYXNQb3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA1ZDM4ZjZlLi42YzA1M2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmkKIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7Ci0gICAgbV9wbHVnaW4tPnN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShzdHJlYW1JRCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJl
c3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlw
ZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2Uoc3RyZWFtSUQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwg
c3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5n
KCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBTdHJpbmcmIHJlc3BvbnMKICAgICBpZiAobV9w
bHVnaW5DYW5jZWxlZE1hbnVhbFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBt
aW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2VVUkxTdHJpbmcp
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzLCBTdHJp
bmcoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5k
ZXggZDVhODk4NS4uNWQxMWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0xODksMTEgKzE4OSwxMSBAQCBzdGF0
aWMgdm9pZCBjYXJib25XaW5kb3dIaWRkZW4oV2luZG93UmVmIHdpbmRvdykKIHN0YXRpYyBib29s
IG9wZW5DRlVSTFJlZihDRlVSTFJlZiB1cmwsIGludDMyX3QmIHN0YXR1cywgQ0ZVUkxSZWYqIGxh
dW5jaGVkVVJMKQogewogICAgIFN0cmluZyBsYXVuY2hlZFVSTFN0cmluZzsKLSAgICBpZiAoIVBs
dWdpblByb2Nlc3M6OnNoYXJlZCgpLm9wZW5VUkwoS1VSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMs
IGxhdW5jaGVkVVJMU3RyaW5nKSkKKyAgICBpZiAoIVBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLm9w
ZW5VUkwoVVJMKHVybCkuc3RyaW5nKCksIHN0YXR1cywgbGF1bmNoZWRVUkxTdHJpbmcpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWxhdW5jaGVkVVJMU3RyaW5nLmlzTnVsbCgp
ICYmIGxhdW5jaGVkVVJMKQotICAgICAgICAqbGF1bmNoZWRVUkwgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOworICAgICAg
ICAqbGF1bmNoZWRVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBsYXVuY2hlZFVSTFN0cmluZyku
Y3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI5Myw3
ICsyOTMsNyBAQCBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXb3Jrc3Bh
Y2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zXwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoS1VS
TCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNo
YXJlZCgpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50
cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1
ZXN0LmNwcAppbmRleCAxMTRjNzQxLi5mNjYxMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBl
SUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCkKIAogV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVz
dENyZWF0ZVdpdGhXS1VSTChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlVS
TFJlcXVlc3Q6OmNyZWF0ZShLVVJMKEtVUkwoKSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwo
KSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAogV0tVUkxSZWYgV0tV
UkxSZXF1ZXN0Q29weVVSTChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAppbmRleCBjNTQ5MTg0Li40N2Fm
Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJVUkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcAppbmRleCBmMDRlY2ZkLi40NzU2NGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCkBAIC01NCw4ICs1NCw4
IEBAIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwg
V0tVUkxSZWYgVVJMUmVmKQogICAgIC8vIFdlIGZpcnN0IGNyZWF0ZSBhIENTdHJpbmcgYW5kIHRo
ZW4gY3JlYXRlIHRoZSBDRlVSTCBmcm9tIGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIENG
VVJMIGlzIHN0b3JlZCBpbiAKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFu
ZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAotICAgIC8vIFRoaXMgcGF0
dGVybiBvZiB1c2luZyBVVEYtOCBhbmQgdGhlbiBmYWxsaW5nIGJhY2sgdG8gTGF0aW4xIG9uIGZh
aWx1cmUgbWF0Y2hlcyBLVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQotICAgIC8vIG1ham9y
IGRpZmZlcm5jZSBiZWluZyB0aGF0IEtVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9u
IGFuZCBpbnN0ZWFkIGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKKyAgICAv
LyBUaGlzIHBhdHRlcm4gb2YgdXNpbmcgVVRGLTggYW5kIHRoZW4gZmFsbGluZyBiYWNrIHRvIExh
dGluMSBvbiBmYWlsdXJlIG1hdGNoZXMgVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQorICAg
IC8vIG1ham9yIGRpZmZlcm5jZSBiZWluZyB0aGF0IFVSTCBkb2VzIG5vdCBkbyBhIFVURi04IGNv
bnZlcnNpb24gYW5kIGluc3RlYWQgY2hvcHMgb2ZmIHRoZSBoaWdoIGJpdHMgb2YgdGhlIFVURi0x
NgogICAgIC8vIGNoYXJhY3RlciBzZXF1ZW5jZS4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gdG9J
bXBsKFVSTFJlZiktPnN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4IGMzYjJlOGQu
LmYxNmIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvcXQv
UXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBRU3RyaW5nIFF0Rmls
ZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKIAogICAgIFFTdHJpbmcgZmlsZW5hbWVD
YW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZy
b21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKICAg
ICBpZiAoZmlsZW5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9
IG1fcmVwbHktPnVybCgpOworICAgICAgICBVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOwogICAg
ICAgICBmaWxlbmFtZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAppbmRleCAxMWUwYTQxLi5kMGVl
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAg
ICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgS1VS
TCB1cmwgPSByZXNwb25zZS51cmwoKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSByZXNwb25zZS51
cmwoKTsKICAgICAgICAgICAgIHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CiAgICAgICAgICAgICB1
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxl
bmFtZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0
aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0
aW9uRGF0YS5jcHAKaW5kZXggYTBkZDRkYy4uNDEzMGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIGJvb2wgQmxvYlJlZ2lzdHJhdGlvbkRhdGE6OmRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIEJsb2JSZWdpc3RyCiAgICAgICAgICAgICBTdHJpbmcg
dXJsOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEtPmFwcGVuZEJsb2Io
S1VSTChLVVJMKCksIHVybCksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJlc3VsdC5t
X2RhdGEtPmFwcGVuZEJsb2IoVVJMKFVSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQppbmRleCAyNzI2ZjFj
Li43OTgzYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29s
TWFuYWdlck1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5o
IgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZl
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5j
cHAKaW5kZXggZDg1NWUzZC4uMDgzYjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkFyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldlYkRh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ4LDcgKzQ4LDcgQEAg
UGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFBhc3NSZWZQdHI8QXJjaGl2ZVJlc28KIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNo
aXZlUmVzb3VyY2UoV2ViRGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZl
UmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgS1VSTChLVVJMKCksIFVSTCksIE1JTUVUeXBlLCB0
ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEt
PnNpemUoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRl
eHRFbmNvZGluZywgU3RyaW5nKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGFiNjlmZjYuLjc1ZDJiNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rp
b25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNDA3LDcg
KzQwNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyB1cmw7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOworICAgICAgICBy
ZXF1ZXN0LnNldFVSTChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIFN0cmluZyBodHRwTWV0
aG9kOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGh0dHBNZXRob2QpKQpAQCAtNDMyLDcg
KzQzMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyBmaXJzdFBh
cnR5Rm9yQ29va2llczsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaXJzdFBhcnR5Rm9y
Q29va2llcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoS1VSTChLVVJMKCksIGZpcnN0UGFydHlGb3JDb29raWVzKSk7
CisgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoVVJMKFVSTCgpLCBmaXJz
dFBhcnR5Rm9yQ29va2llcykpOwogCiAgICAgICAgIHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3Q7
CiAgICAgfQpAQCAtNTAzLDcgKzUwMyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSCiAgICAg
ICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgp
LCB1cmwpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKFVSTChVUkwoKSwgdXJsKSk7CiAKICAg
ICAgICAgaW50MzJfdCBodHRwU3RhdHVzQ29kZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCkBAIC0xMDMzLDE3ICsxMDMzLDE3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxEcmFnU2Vzc2lvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERyYWdT
ZXNzaW9uJiByCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxLVVJM
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgS1VSTCYgcmVzdWx0KQor
dm9pZCBBcmd1bWVudENvZGVyPFVSTD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFVSTCYgcmVzdWx0KQogewogICAgIGVuY29kZXIgPDwgcmVzdWx0LnN0cmluZygpOwog
fQogICAgIAotYm9vbCBBcmd1bWVudENvZGVyPEtVUkw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBLVVJMJiByZXN1bHQpCitib29sIEFyZ3VtZW50Q29kZXI8VVJMPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgVVJMJiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIHVy
bEFzU3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsQXNTdHJpbmcpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsIHVybEFzU3RyaW5nKTsKKyAgICByZXN1bHQgPSBVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3Ry
aW5nLCB1cmxBc1N0cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjMsNyArMTA2
Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
b3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwg
dXJsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNl
clNjcmlwdD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
S1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDYzMGI2YjYuLjNiMGJhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsK
ICAgICBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNz
IFVSTDsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CkBAIC0yNTUsOSArMjU1LDkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEcmFnU2Vzc2lvbj4gewogICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpEcmFnU2Vzc2lvbiYpOwog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6
S1VSTCYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVUkw+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OlVSTCYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDljMzUxNTAuLmM5ZDg0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hpdFRlc3RSZXN1bHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VVJMLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKaW5kZXggMjdhNzQ0ZS4uZDc2
MTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBX
ZWJVUkxfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJM
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVS
TD4gY3JlYXRlKGNvbnN0IFdlYlVSTCogYmFzZVVSTCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVS
TCkKICAgICB7Ci0gICAgICAgIHVzaW5nIFdlYkNvcmU6OktVUkw7CisgICAgICAgIHVzaW5nIFdl
YkNvcmU6OlVSTDsKIAogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwt
PnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgS1VSTCogYWJzb2x1dGVVUkwgPSBuZXcg
S1VSTCgqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAg
VVJMKiBhYnNvbHV0ZVVSTCA9IG5ldyBVUkwoKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCBy
ZWxhdGl2ZVVSTCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkwoYWRvcHRQ
dHIoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTC0+c3RyaW5nKCkpKTsKICAgICB9CkBAIC05MCw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFdlYlVSTChQYXNzT3duUHRy
PFdlYkNvcmU6OktVUkw+IHBhcnNlZFVSTCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgV2Vi
VVJMKFBhc3NPd25QdHI8V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKICAgICAgICAgLCBtX3BhcnNlZFVSTChw
YXJzZWRVUkwpCiAgICAgewpAQCAtMTAwLDExICsxMDAsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9w
YXJzZWRVUkwgPSBXVEY6OmFkb3B0UHRyKG5ldyBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwo
KSwgbV9zdHJpbmcpKTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBXVEY6OmFkb3B0UHRyKG5ldyBX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIG1fc3RyaW5nKSk7CiAgICAgfQogCiAgICAgU3Ry
aW5nIG1fc3RyaW5nOwotICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OktVUkw+IG1fcGFyc2Vk
VVJMOworICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OlVSTD4gbV9wYXJzZWRVUkw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0
LmNwcAppbmRleCA0OGFjZjM3Li4zMDcyZjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJV
UkxSZXF1ZXN0LmNwcApAQCAtMTYsNyArMTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJM
UmVxdWVzdDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8V2ViVVJMUmVxdWVz
dD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNGY4YWVmZi4uOWYyZjRmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJVUkxSZXF1ZXN0IDogcHVibGljIFR5cGVkQVBJT2Jq
ZWN0PEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJVUkxSZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDVjMDhiODAu
LmIzM2Y0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBo
b3N0KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmhvc3QoKTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBi
b29sIG1hdGNoZXNVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bi5tYXRjaGVzKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsg
fQorICAgIGJvb2wgbWF0Y2hlc1VSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywg
dXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm5T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggZjdlNzZlNy4uNmUw
MWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAg
ICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJs
KSwgU3RyaW5nKCkpOworICAgICAgICBkYXRhLT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJp
bmcoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAppbmRleCA3ZTZhOGMxLi4wMGJiMTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogc3RhdGljIENGRGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RI
ZWFkZXJGaWVsZHNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2Us
IENGVVJMUmVmIGluUmVxdWVzdFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAgICBLVVJM
IGZpcnN0UGFydHlGb3JDb29raWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VS
TDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0d29ya1Jl
cGx5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRh
LmNwcAppbmRleCA1MTY0MWVkLi5iODM1YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
IlF0TmV0d29ya1JlcGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNRdC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxRTmV0
d29ya0FjY2Vzc01hbmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWEuLjM4NGJkMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVl
c3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3Vy
aShXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiB1cmkpCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwodXJpKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJs
KFVSTCgpLCB1cmkpOwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1
ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGI4Y2EwMDIuLmFhMjU0ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cApAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NE
aWRDcmFzaCgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogCi0gICAgUVVybCB1cmwoS1VS
TChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHdlYlBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhp
dCgpKSk7CisgICAgUVVybCB1cmwoVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgd2ViUGFn
ZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkpKTsKICAgICBxV2FybmluZygiV0FSTklORzogVGhl
IHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJpbnRhYmxlKHVy
bC50b1N0cmluZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKIAogICAgIHBhZ2VFdmVudEhhbmRs
ZXItPnJlc2V0R2VzdHVyZVJlY29nbml6ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IDVkOWM0
YjIuLmMwMjZkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHNpemVfdCBI
VFRQUmVxdWVzdDo6cGFyc2VSZXF1ZXN0TGluZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBTdHJpbmcmIGZhCiB7CiAgICAgU3RyaW5nIHVybDsKICAgICBzaXplX3QgcmVzdWx0ID0g
cGFyc2VIVFRQUmVxdWVzdExpbmUoZGF0YSwgbGVuZ3RoLCBmYWlsdXJlUmVhc29uLCBtX3JlcXVl
c3RNZXRob2QsIHVybCwgbV9odHRwVmVyc2lvbik7Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwg
dXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xMTMsNyArMTEzLDcgQEAgSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KCkKIHsKIH0K
IAotSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwg
Y29uc3QgS1VSTCYgdXJsLCBIVFRQVmVyc2lvbiB2ZXJzaW9uKQorSFRUUFJlcXVlc3Q6OkhUVFBS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIEhUVFBW
ZXJzaW9uIHZlcnNpb24pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2h0dHBWZXJzaW9uKHZl
cnNpb24pCiAgICAgLCBtX3JlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaApp
bmRleCA3MTllMjQxLi5lY2RhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
VFBQYXJzZXJzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQs
MTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPEhUVFBSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRU
UFJlcXVlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBW
ZXJzaW9uIHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0
TWV0aG9kLCB1cmwsIHZlcnNpb24pKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1
ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgV2ViQ29yZTo6SFRUUFZlcnNpb24gdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUVFBSZXF1ZXN0KHJlcXVlc3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAg
ICAgdmlydHVhbCB+SFRUUFJlcXVlc3QoKTsKIAogICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0TWV0aG9kOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0
aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKSB7IG1fcmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQog
Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZv
aWQgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAg
IFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25z
dCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0K
IApAQCAtNjIsMTQgKzYyLDE0IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1
ZXN0KCk7Ci0gICAgSFRUUFJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6SFRUUFZlcnNpb24pOwogCiAgICAgLy8gUGFyc2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBw
YXJzZVJlcXVlc3RMaW5lKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbik7CiAgICAgc2l6ZV90IHBhcnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJz
ZVJlcXVlc3RCb2R5KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2Vi
Q29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6
SFRUUFZlcnNpb24gbV9odHRwVmVyc2lvbjsKICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwog
ICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3Bl
Y3RvclNlcnZlci5jcHAKaW5kZXggY2JiZDczZi4uY2U1MzY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVj
dG9yU2VydmVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVy
OjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24s
CiB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1
ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRU
UFJlcXVlc3Q+IHJlcXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMgb25s
eSB0aGUgcGF0aCBleHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAvLyBh
bmQgS1VSTCBpcyBwb29yIGF0IHBhcnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0IHRo
ZSBpbnRlcmVzdGluZyBwYXJ0cyBtYW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQg
cGFyc2luZyBpbmNvbXBsZXRlIFVSTHMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRz
IG1hbnVhbGx5LgogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6ZV90
IHBhdGhFbmQgPSBwYXRoLmZpbmQoJz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3VuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCmluZGV4IDg2Y2JiYWQuLjUxY2ZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9k
dWxlSW5mby5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTU4LDcgKzE1OCw3
IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUluZm8o
KTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBLVVJMJiB1
cmwpCitzdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFN0cmluZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVn
aW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KQogCiAjZW5kaWYKIAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVn
aW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5EYXRhOjpBbGxvd2Vk
UGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5J
bmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwsIFBs
dWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMpCiB7CiAgICAg
bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDljZWE3Li5jZWU3MTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2
ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUg
ZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAg
IC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBp
biB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpQbHVn
aW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxQbHVn
aW5zKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5
cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmll
ci4KICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggYWMzZGRhOC4uN2IwYzE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0z
NCw3ICszNCw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQg
IldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8Y3J0X2V4
dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC00NjIsMTAgKzQ2MiwxMCBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Ym9vbCYgcmVzdWx0LCBpbnQzMl90JgogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBDRlVSTFJl
ZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJlZihLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmdldCgpLCAmbGF1bmNoZWRVUkwpOwor
ICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
ZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAgIGlmIChsYXVuY2hl
ZFVSTCkgewotICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IEtVUkwobGF1bmNoZWRVUkwpLnN0
cmluZygpOworICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVuY2hlZFVSTCkuc3Ry
aW5nKCk7CiAgICAgICAgIENGUmVsZWFzZShsYXVuY2hlZFVSTCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjJiODEz
NS4uMmQyZjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCkBAIC0zMTYsOSArMzE2LDkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJ
bnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKIAogc3RhdGljIGJvb2wgaXNNYWluSW5z
cGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIC8vIFVzZSBLVVJMIHNvIHdlIGNhbiBj
b21wYXJlIGp1c3QgdGhlIHBhdGhzLgotICAgIEtVUkwgaW5zcGVjdG9yVVJMKEtVUkwoKSwgd2Vi
SW5zcGVjdG9yUHJveHktPmluc3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAgS1VSTCByZXF1ZXN0VVJM
KEtVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CisgICAgLy8gVXNlIFVSTCBzbyB3
ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4KKyAgICBVUkwgaW5zcGVjdG9yVVJMKFVSTCgp
LCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yUGFnZVVSTCgpKTsKKyAgICBVUkwgcmVxdWVz
dFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CiAKICAgICBBU1NFUlQoV2Vi
Q29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChpbnNwZWN0
b3JVUkwucHJvdG9jb2woKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggMjg4YTcz
Ni4uNTZkMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmls
ZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVVUkxzQXJyYXkpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgV2ViVVJMKiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5
LT5hdDxXZWJVUkw+KGkpOwogICAgICAgICBpZiAod2ViVVJMKSB7Ci0gICAgICAgICAgICBLVVJM
IHVybChLVVJMKCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKKyAgICAgICAgICAgIFVSTCB1cmwoVVJM
KCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKICAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRB
cHBlbmQodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCAwY2RiZjgxLi43NTUzZWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHls
ZVNoZWV0ID0gV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5
KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IGJhc2VVUkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJh
c2VVUkwuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRh
LnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQodXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFBy
b2Nlc3Nlc0luR3JvdXAoTWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBXZWJQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0g
V2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6
OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2Vy
U2NyaXB0ID0gV2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/
IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VV
UkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3Jp
cHRzLmFwcGVuZCh1c2VyU2NyaXB0KTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1l
c3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9k
YXRhLnBhZ2VHcm91cElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggYjA5MmYyOS4uYjA2NjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5
Q2xvc2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6Om1heWJl
SW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29sIFdlYlBhZ2VQ
cm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVy
bCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewog
ICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3
OSw3ICs2NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVy
bCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsK
IAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwot
ICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNp
b25IYW5kbGUoS1VSTChLVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
IGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUoVVJMKFVSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAo
Y3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNh
bEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAtNzA2LDE1ICs3
MDYsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVSTCA9IEtVUkwo
S1VSTCgpLCBmaWxlVVJMU3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmls
ZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJMIHJlc291cmNl
RGlyZWN0b3J5VVJMOwogICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwo
KSkKLSAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
QVNDSUlMaXRlcmFsKCJmaWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwg
PSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwogICAgIGVs
c2UgewotICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJj
ZURpcmVjdG9yeVVSTFN0cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJM
KFVSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC03OTcsNyArNzk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9h
ZEZyb21PcmlnaW4pCiAgICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKICAg
ICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJk
IGxpc3Qgd2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3Nl
ciByZWxhdW5jaAotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxp
emVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFs
aXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgICAgIG1f
cHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsK
ICAgICB9CkBAIC05NTIsNyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1
Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0
b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJ
bmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5k
UGx1Z2luKG5ld01pbWVUeXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwo
KSAmJiBtX3BhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC0xNDI5LDcgKzE0MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBsdWdpbkxv
YWRQb2xpY3kgPSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpB
bGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRp
b25QbHVnaW5zID8gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VS
TChLVVJMKCksIHVybFN0cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAgUGx1Z2luTW9k
dWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCku
ZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1
Z2luVHlwZXMpOwogICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vz
c1Rva2VuID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFx
dWVQbHVnaW5VbmF2YWlsYWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2lu
SW5mb3JtYXRpb247CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5n
IG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1l
VHlwZSwgS1VSTChLVVJMKCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUlu
Zm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQ
bHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1
Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2lu
LCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0
cmlidXRlVVJMU3RyaW5nLCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAgLTMwMDcsNyAr
MzAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90
IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlh
bGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBt
X3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7
CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4OSwxNSArMzI4
OSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwg
bV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsK
KyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwg
bV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsK
ICAgICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51
SGl0VGVzdFJlc3VsdERhdGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRN
ZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhp
cywgS1VSTChLVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNv
bHV0ZU1lZGlhVVJMKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0
aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNv
bHV0ZU1lZGlhVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0
aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CkBA
IC00MTU3LDcgKzQxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWlt
ZVR5cGUgPSBtaW1lVHlwZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vz
cy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBL
VVJMKEtVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVn
aW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihu
ZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZv
cm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1l
VVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCBy
ZXBsYWNlbWVudE9ic2N1cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNmY2RmLi4zNzll
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE0LDcg
KzEwMTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCgp
IHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRQZW5k
aW5nQVBJUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKSB7IG1f
cGVuZGluZ0FQSVJlcXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCi0gICAgYm9v
bCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRp
b25zUGFuZWxJc1Nob3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDNhZjNjLi5kNmI2NmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSoKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxT
dHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0
aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQg
dXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vz
cy4KLSAgICBLVVJMIGJhc2VVUkwoS1VSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOworICAgIFVS
TCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwogICAgIAogICAgIC8vIENsaWVu
dCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2Fs
IGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2
ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgpAQCAtMjQwLDEwICsyNDAs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhLVVJMKEtVUkwoKSwgdXJsU3RyaW5n
KSk7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJMKCks
IHVybFN0cmluZykpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZl
ZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpj
aGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IENvbnNpZGVyIGNoZWNraW5nIHRoYXQgdGhlIFVSTCBpcyB2YWxpZC4gQ3VycmVudGx5
LCBXZWJQcm9jZXNzIHNlbmRzIGludmFsaWQgVVJMcyBpbiBtYW55IGNhc2VzLCBidXQgaXQgcHJv
YmFibHkgZG9lc24ndCBoYXZlIGdvb2QgcmVhc29ucyB0byBkbyB0aGF0LgogCkBAIC0yNTYsNyAr
MjU2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJv
Y2Vzcyhjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYg
d2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyBy
ZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgotICAgIC8vIFRoZXJlIGFy
ZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQ
cm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBLVVJMLCB3aGljaCByZW1vdmVzIHRob3NlLgorICAgIC8v
IFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQg
ZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBVUkwsIHdoaWNoIHJlbW92ZXMgdGhvc2Uu
CiAgICAgU3RyaW5nIHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVk
UmVhZEFjY2Vzcy5iZWdpbigpOyBpdGVyICE9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFj
Y2Vzcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoKml0ZXIp
KQpAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2sv
Zm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ug
d2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBi
L2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVlbiByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2gg
b3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9yIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFw
OjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9
IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewot
ICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT51cmwoKSkuZmlsZVN5c3RlbVBh
dGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkp
LmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lz
dGVtUGF0aCgpID09IHBhdGgpCisgICAgICAgIGlmIChVUkwoVVJMKCksIGl0ZXItPnZhbHVlLT5v
cmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCAwNWQ4ODM5Li4xZjg0OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBQbHVnaW5JbmZvOwog
fTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRG
cm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRG
cm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCAwZWI1Yjc3Li43MzUwNzk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02MDAs
NyArNjAwLDcgQEAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpCiBib29sIFdlYkNvbnRleHQ6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSBjb25zdAogewogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gdXJsID0gS1VSTChLVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVD
RlVSTCgpOwogCiAgICAgcmV0dXJuIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lv
bih1cmwuZ2V0KCksIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkgOiBudWxscHRyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkNWY4Y2Y1Li45M2Zj
MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM5LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJs
b2JEYXRhKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2Vi
UHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwg
QmxvYlJlZ2lzdHJhdGlvbkRhdGEoYmxvYkRhdGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNy
Y1VSTCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwp
LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgS1VSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNO
ZXR3b3JrUHJvY2VzcygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCA2M2QwZGE0Li5jMTUxYzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxv
YlJlZ2lzdHJ5UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJM
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNV
UkwpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDAyNDk2
NGEuLjBlMDQwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTU5LDcg
KzE1OSw3IEBAIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxv
d2luZ0xpbmsoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewot
ICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6
OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAgcmV0dXJu
IHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFt
ZUhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0y
MDQsMTIgKzIwNCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRD
b2xvcihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdL
QnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0
aFVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkp
KTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmls
ZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dU
RlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1J
TUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChm
cmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1l
Q29udGFpbnNBbnlGb3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2OTE1ZDkwLi45MTlmZmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0
b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6
OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJl
ZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RG
U3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0
KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBj
OGMwNzdlLi4xOTI1ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDkyLDI2ICs0OTIs
MjYgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0YWJsZUFycmF5
KiBwYXR0ZXJucykKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdl
R3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRX
b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVB
cnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBL
VVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VS
TCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VS
TCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKEtVUkwoKSwgdXJsKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6
OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNv
IHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0
ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBh
Z2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNj
cmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUsIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0
eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlz
dCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsK
LSAgICAvLyB1cmwgaXMgbm90IGZyb20gS1VSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBh
bHJlYWR5IGJlZW4gcGFyc2VkIGJ5IEtVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2
ZSBVUkwgY29uc3RydWN0b3IgZm9yIEtVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5n
VGFnIHZlcnNpb24uCi0gICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlm
aWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgp
LCBzb3VyY2UsIEtVUkwoS1VSTCgpLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CisgICAgLy8gdXJsIGlz
IG5vdCBmcm9tIFVSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFy
c2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3Rv
ciBmb3IgVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgorICAg
IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+YWRkVXNlclN0
eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJM
KCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3Zl
VXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gdXJs
IGlzIG5vdCBmcm9tIEtVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVu
IHBhcnNlZCBieSBLVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0
cnVjdG9yIGZvciBLVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9u
LgotICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVt
b3ZlVXNlclNjcmlwdEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoS1VS
TCgpLCB1cmwpKTsKKyAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBp
dCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0
aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2Vk
VVJMU3RyaW5nVGFnIHZlcnNpb24uCisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3Vw
LT5pZGVudGlmaWVyKCkpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewot
ICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFs
cmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZl
IFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdU
YWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29y
bGQoKSwgS1VSTChLVVJMKCksIHVybCkpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0
cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdl
IGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFk
IG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VH
cm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCkBAIC01ODks
NyArNTg5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBjb24KIHsKICAgICBjb25zdCBIYXNoU2V0
PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9
IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCpp
dGVyKS0+c2V0dGluZ3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBs
b2NhdGlvbikpOworICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oVVJMKFVSTCgpLCBsb2NhdGlvbikpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMTdlMmU5Ni4uZWY5MmQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tV
UkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxZjgwYjIwLi4zYzk3MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0
IEtVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlm
ICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZS4u
YzUzODY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5k
b3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
VVJMOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVy
c2lvbj4gewogcHVibGljOgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdp
bGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMTJh
ZTIzYi4uNDUxNjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21Db3JlTG9hZGVyKCk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0
UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBVUkwmKQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmlnaW4gcmVkaXJlY3Rz
IGVudGlyZWx5IHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8gV2Ugb3ZlcnJpZGUg
dGhpcyBjYWxsIGluIHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1vcC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAppbmRleCA1NWY2ZTMxLi43ZWUyYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFt
TG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVSTCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIE9W
RVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCAyMDU0ZGY5Li5jNGJhODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlcwogICAgICAgICBwbHVnaW5TdHJlYW0tPnNlbmRKYXZhU2NyaXB0
U3RyZWFtKHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZp
bGVOYW1lICovKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CkBAIC04MjMsNyArODIzLDcg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwg
Ym9vbCB3YXNDYW5jZWxsZWQpCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkRmFpbCh3YXNDYW5j
ZWxsZWQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmls
ZU5hbWUgKi8pCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKaW5kZXggNjUxZGM0ZC4uNGMxMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5
MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZh
aWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMGFlNDRjMy4uYjE5YzEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjp+TmV0c2NhcGVQbHVnaW5TdHJlYW0oKQogICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0
cmVhbSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVw
IGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBw
cm90ZWN0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggZmZh
NTVjYi4uYjM1MDE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25z
dCB7IHJldHVybiBtX3N0cmVhbUlEOyB9CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkg
Y29uc3QgeyByZXR1cm4gJm1fbnBTdHJlYW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRl
eCBiMjliZWM2Li41NDExOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2
YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwo
dWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0
cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3LDcgKzI4Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNv
cmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAg
ICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURh
dGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KaW5kZXggN2MzNDU0Yi4uZmEzNjE3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkxNyw3
ICs5MTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAgICAg
Y3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYsIHVpbnQzMl90
LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJl
YW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lk
IFBERlBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5j
ZWxsZWQpCiAgICAgbV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIG1fc3VnZ2Vz
dGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXggMWQ5
ZTk3Yy4uZjdmMGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xMTMsMTEgKzExMywxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBy
ZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOwogICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdmlydHVh
bCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAg
IFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJM
OwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0
YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggZDc5NGYwMi4uZDkzMGZi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFNpbXBsZVBERlBs
dWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogICAgIG1fZGF0YSA9IGNvbnZl
cnRQb3N0U2NyaXB0RGF0YVRvUERGKG1fZGF0YSk7CiB9CiAKLXZvaWQgU2ltcGxlUERGUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IEtVUkwm
LCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdp
bjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
LCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCkBAIC02NTAs
NyArNjUwLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46OnN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fZGF0YS5jbGVhcigpOwogfQogCi12
b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVk
RmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5j
cHAKaW5kZXggOTBlNWU3Ni4uZTg5ZjkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBQbHVnaW46OlBhcmFt
ZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhcmFtZXRl
cnMmIHAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybFN0cmluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYXNzdW1lIHRoYXQgdGhlIHVybCBwYXNz
ZWQgaW4gaGVyZSBpcyB2YWxpZC4KLSAgICBwYXJhbWV0ZXJzLnVybCA9IEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsU3RyaW5nKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5u
YW1lcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCBmOGRlNWE3Li5kOThkYTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRl
cnMgewotICAgICAgICBXZWJDb3JlOjpLVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVy
bDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHZhbHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8v
IFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2
Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWlu
dDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCBy
ZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmgKaW5kZXggMjlkYWNiMy4uMTUxZDNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHR5
cGVkZWYgdm9pZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGE4ZGU4
YjIuLjhhOGYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRp
ZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdURjo6U3RyaW5n
JiByCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJlcXVlc3RJRCwgcmVzdWx0
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBLVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6c3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwg
c3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6U3RyZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2VsbGVkKSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZp
bGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUg
Ki8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBl
LCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIzOTUyMy4uMDY2N2Q0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTg4LDExICs4OCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVE
aWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBX
VEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAg
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBkMzY4M2U3Li5kYWQxZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
c3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgc3RyZWFtIHJlbGF0ZWQgZGF0YSBmcm9tIHRoZSBy
ZXNvdXJjZSByZXNwb25zZS4KLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOworICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAg
ICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICBsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCk7CiAgICAgCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIH0KIAogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UuCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25z
ZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExl
bmd0aCgpOwogICAgIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgU3RyaW5nIFBsdWdpblZpZXc6OnVz
ZXJBZ2VudCgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlckFnZW50KEtVUkwoKSk7
CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51c2VyQWdlbnQoVVJMKCkpOwog
fQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCAKQEAgLTE0ODksMTggKzE0ODksMTggQEAgU3RyaW5nIFBsdWdpblZpZXc6OnByb3hpZXNG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgY29uc3QgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7CiAgICAgY29u
c3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVy
LT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5
U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29u
dGV4dCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZl
cnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKICAgICByZXR1cm4gdG9T
dHJpbmcocHJveHlTZXJ2ZXJzKTsKIH0KIAogU3RyaW5nIFBsdWdpblZpZXc6OmNvb2tpZXNGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoJm1fcGx1
Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgS1VSTChLVVJMKCksIHVybFN0cmluZykpOworICAgIHJl
dHVybiBjb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJs
U3RyaW5nKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Q29va2llc0ZvclVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgc2V0
Q29va2llcygmbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBLVVJMKEtVUkwoKSwgdXJsU3Ry
aW5nKSwgY29va2llU3RyaW5nKTsKKyAgICBzZXRDb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRv
Y3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKIH0KIAogYm9v
bCBQbHVnaW5WaWV3OjpnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBwcm90ZWN0aW9uU3BhY2UsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNmFiYmNkNi4uN2FiZDc5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNTM0LDkgKzUzNCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRW1i
CiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygp
OwogICAgIFN0cmluZyBwYWdlVVJMU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcg
cGx1Z2luVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChw
bHVnaW5FbGVtZW50LT51cmwoKSkuc3RyaW5nKCk7Ci0gICAgS1VSTCBwbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTCA9IGVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpbkVsZW1lbnQtPmdldEF0dHJpYnV0ZShwbHVnaW5zcGFn
ZUF0dHIpKSk7CisgICAgVVJMIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gZWxlbWVudC0+ZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1
Z2luRWxlbWVudC0+Z2V0QXR0cmlidXRlKHBsdWdpbnNwYWdlQXR0cikpKTsKICAgICBpZiAoIXBs
dWdpbnNwYWdlQXR0cmlidXRlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAg
cGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkwgPSBLVVJMKCk7CisgICAgICAgIHBsdWdpbnNwYWdlQXR0
cmlidXRlVVJMID0gVVJMKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChwbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbiwgcGx1Z2luRWxlbWVudC0+c2VydmljZVR5cGUoKSwgcGx1Z2luVVJMU3RyaW5nLCBwbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJp
bmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBlZWM4MTY4
Li5lMTBiMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQor
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAg
ICAvLyBUaGlzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNl
YXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRv
cihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0
cmluZygpLCAwLCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAg
IH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYu
LmJkNDNlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVu
dSopIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRo
R29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWFraW5nKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1Li40MGJl
Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRXJyb3JzLmgKQEAgLTI3LDEwICsyNywxMCBAQAogI2RlZmluZSBXZWJFcnJvcnNfaAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBSZXNvdXJj
ZUVycm9yOwotICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOworY2xhc3MgVVJMOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDIsNyArNDIsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZQogV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOWI2MDkwZS4uNjI3MGFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUod2ViUGFnZSwgbV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJs
ZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgS1VSTCYpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsK
ICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFn
ZSkKQEAgLTExNTgsNyArMTE1OCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0
dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2Ug
fHwgIXdlYlBhZ2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0hpc3RvcnlDbGllbnQoKSkKQEAg
LTExNjksNyArMTE2OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMCiAgICAgICAgIHRpdGxl
LnN0cmluZygpLCB1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCi1T
dHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmlu
ZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC0x
MjU2LDcgKzEyNTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJl
c291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAgIG1fZnJhbWUtPmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwg
cmVzcG9uc2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8q
bWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0
dXJuIGNvcmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVt
ZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgQVNTRVJUKHBhcmFtTmFt
ZXMuc2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBh
Z2UoKSk7CkBAIC0xMzQ2LDkgKzEzNDYsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9wbHVn
aW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbldpZGdldCk7CiB9CiAKLVBh
c3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0
RWxlbWVudCwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQsIGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCiB7Ci0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2lu
KHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIEtVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKKyAgICBSZWZQdHI8V2lk
Z2V0PiBwbHVnaW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgVVJM
KCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBhcHBsZXRFbGVtZW50LT5zZXJ2aWNlVHlwZSgp
LCBmYWxzZSk7CiAgICAgaWYgKCFwbHVnaW4pIHsKICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBmcmFtZVVSTFN0cmlu
ZyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZVVSTCgpLnN0cmluZygpOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgUGFzc1JlZlB0cjxXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmIHAKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1Jl
ZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBs
YXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTEz
OTAsNyArMTM5MCw3IEBAIHN0YXRpYyBib29sIHBsdWdpblN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFBsdWdpbkRhdGEmIHBsdWdpbkRhdGEsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBz
aG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRlZmF1bHRPYmplY3RDb250ZW50VHlwZSB3aGVuIHRoZSBwbHVnaW4gY29kZQogICAgIC8v
IGlzIGNvbnNvbGlkYXRlZC4KQEAgLTE1NzUsNyArMTU3NSw3IEBAIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZl
cnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitib29sIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA0MWNhNThiLi43MDIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0
YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
cGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25z
dCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwpAQCAtMTYxLDkgKzE2MSw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+
IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBP
VkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1l
KikgT1ZFUlJJREU7CkBAIC0xNzcsMjIgKzE3NywyMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZF
UlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVy
UHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXZWJDb3JlOjpX
aWRnZXQqKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RD
b250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQqKSBPVkVSUklERTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NGQ1OWYyLi40NGMxODBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVn
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgpAQCAtMTI2LDcgKzEyNiw3IEBAIFZpc2l0
ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtT
dHJhdGVneSgpCiAKIC8vIENvb2tpZXNTdHJhdGVneQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbgogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE4MCw3ICsxODAsNyBAQCBTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZQogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLAogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgUGFzc1JlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UKIAogLy8gVmlzaXRlZExpbmtTdHJhdGVneQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiwgTGlua0hhc2ggbGlua0hhc2gsIGNvbnN0
IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoIGxpbmtIYXNoLCBjb25zdCBVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pc0xp
bmtWaXNpdGVkKGxpbmtIYXNoKTsKIH0KQEAgLTQ0OCwxMiArNDQ4LDEyIEBAIENvbG9yIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICByZXR1cm4gY29sb3I7CiB9CiAKLUtVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVy
bChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZE5h
bWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVz
c2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVybFN0cmluZyksIDAp
OwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1
cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogbG9uZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAppbmRleCAzOTM0NjA2Li5jYjJmMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpIE9WRVJS
SURFOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtOTAs
NyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlKikgT1ZF
UlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVh
bCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCkgT1ZFUlJJREU7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpLVVJMIHVybChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0Vm
bC5jcHAKaW5kZXggMzQ1ZDljMC4uODI2MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihyZXNwb25zZSk7CiB9CiAKLVdlYkNvcmU6OlJlc291
cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7
CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9ySW50ZXJuYWwsIHVybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGE4MmU3ZGUuLjFiNTI1
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkVycm9yc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZXNvdXJj
ZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
cmVzcG9uc2UpOwogfQogCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwuc3Ry
aW5nKCksIF8oIkludGVybmFsIGVycm9yIikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCmlu
ZGV4IDcxZmE1ZTMuLjcxMzdhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0KQEAgLTg3LDcg
Kzg3LDcgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVy
cm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9h
ZCwgcmVzcG9uc2UudXJsKCksIFdFQl9VSV9TVFJJTkcoIlBsdWctaW4gaGFuZGxlZCBsb2FkIiwg
IldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRpb24iKSk7CiB9CiAKLVJl
c291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBLVVJMJiB1cmwpCitSZXNvdXJjZUVycm9y
IGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50ZXJuYWwsIHVybCwg
V0VCX1VJX1NUUklORygiV2ViS2l0IGVuY291bnRlcmVkIGFuIGludGVybmFsIGVycm9yIiwgIldl
YktpdEVycm9ySW50ZXJuYWwgZGVzY3JpcHRpb24iKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3ODU3ZjhhLi44MDFlZGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTQ1MSw3ICs0NTEsNyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkg
Y29uc3QKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5w
ZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJGcmFtZTo6YWxsb3dz
Rm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpIGNvbnN0Citib29sIFdlYkZy
YW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAog
ewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjc5LDcg
KzY3OSw3IEBAIFN0cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdAogICAgIHJl
dHVybiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKS5zdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIFdlYkZyYW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBL
VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVz
b3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBTdHJpbmcg
V2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwm
IHVybCkgY29uc3QKICAgICByZXR1cm4gcGFnZSgpLT5jYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZv
clVSTCh1cmwpOwogfQogCi1TdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
VVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJGcmFtZTo6bWltZVR5cGVGb3JS
ZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA3OWZhNWNiLi42ODc2MmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBv
aW50OwogY2xhc3MgSW50UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE2LDExICsxMTYsMTEgQEAgcHVibGljOgogICAgIAogICAgIHVu
c2lnbmVkIHBlbmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dz
Rm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxv
d3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogCiAgICAgU3RyaW5n
IHByb3Zpc2lvbmFsVVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9y
UmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcg
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0Owor
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHREaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA4OThkMDg0Li5hYTc4MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZW5kQ2xvc2UoKQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRVUkwoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgbG9hZFVSTFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCB1cmwpKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgZGVjb2Rlcik7CisgICAgbG9hZFVSTFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KFVS
TChVUkwoKSwgdXJsKSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGRlY29kZXIpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTkzMCw3ICs5MzAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU2FuZGJveEV4dGVucwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVx
dWVzdCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbChQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgS1VSTCYgdW5yZWFj
aGFibGVVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YUltcGwoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXIodGhpcyk7CiAKQEAgLTk1MywzNSArOTUzLDM1IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJ
bXBsKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYK
IHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRh
SW1wbChzaGFyZWRCdWZmZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIEtVUkwo
KSwgZGVjb2Rlcik7CisgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGxvYWREYXRhSW1w
bChzaGFyZWRCdWZmZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBk
ZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcm
IGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aHRtbFN0cmluZy5jaGFyYWN0ZXJzKCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFu
a1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChz
aGFyZWRCdWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgS1VSTCgpLCBkZWNv
ZGVyKTsKKyAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtV
UkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBsKHNoYXJl
ZEJ1ZmZlciwgInRleHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCBVUkwoKSwgZGVjb2Rlcik7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5n
JiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dW5yZWFjaGFibGVVUkxTdHJpbmcsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVy
cygpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwotICAgIEtVUkwgYmFz
ZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgp
LCBiYXNlVVJMU3RyaW5nKTsKLSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVV
UkxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDogS1VSTChLVVJMKCksIHVucmVhY2hhYmxlVVJM
U3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxh
bmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgVVJMIHVucmVhY2hhYmxl
VVJMID0gdW5yZWFjaGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCks
IHVucmVhY2hhYmxlVVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAi
dGV4dC9odG1sIiwgInV0Zi0xNiIsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBkZWNvZGVyKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRleHQv
cGxhaW4iLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsKKyAgICBsb2Fk
RGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9wbGFpbiIsICJ1dGYtMTYiLCBibGFua1VSTCgp
LCBVUkwoKSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRh
KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRhLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPih3ZWJBcmNoaXZlRGF0YS5kYXRhKCkpLCB3ZWJBcmNoaXZlRGF0YS5zaXplKCkgKiBzaXpl
b2YodWludDhfdCkpOwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJhcHBsaWNhdGlv
bi94LXdlYmFyY2hpdmUiLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsK
KyAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZl
IiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIFVSTCgpLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2ViTW91c2VFdmVudCYg
ZXZlbnQpCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
Y2FsbGJhY2tJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciog
bG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2Fk
ZXIpCkBAIC0yMzY5LDcgKzIzNjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcgogdm9pZCBX
ZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgS1VSTCByZXNvdXJjZVVS
TChLVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCks
IHJlc291cmNlVVJMU3RyaW5nKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUo
ZnJhbWVJRCkpIHsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4
dGVuc2lvblRyYWNrZXI6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQog
ICAgIC8vIGJlY2F1c2UgaXQgZG9lcyBub3QgcGVydGFpbiB0byB0aGUgZmFpbGVkIGxvYWQsIGFu
ZCB3aWxsIGJlIG5lZWRlZC4KIH0KIAotYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwo
Y29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDIzYWJjYTUuLmIwYjY3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHRN
ZW51KiBjb250ZXh0TWVudUF0UG9pbnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIFN0cmluZyBjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JV
UkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFN0
cmluZyBjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIFN0cmluZyBjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY2FjaGVkUmVzcG9u
c2VEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtNjg2
LDkgKzY4Niw5IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJh
bWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05h
bWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZh
aWxpbmdVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBsb2FkRGF0YUlt
cGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CiAKLSAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKKyAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwu
Y3BwCmluZGV4IDg0MjRjNmIuLmM5ZTRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTI2LDEzICsxMjYsMTMg
QEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2Vi
UGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNh
Y2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9v
bCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3Rl
ZEZpbGVuYW1lRm9yVVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dl
c3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQ
YWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDY2
ZmQzMmYuLjI3ODVhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgYm9vbCBXZWJQ
YWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFnZTo6cGxhdGZv
cm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNl
TUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9vbCBXZWJQYWdlOjpw
bGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9y
VVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRS
ZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAyNzIyZjdlLi5jZTFkOTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCkBAIC03MTcsNyArNzE3LDcgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG1fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogICAgICAgICAgCi1ib29sIFdlYlBhZ2U6
OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2Jv
b2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCiB7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxl
VVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXTsKICAgICBbcmVxdWVzdCBzZXRWYWx1
ZTooTlNTdHJpbmcqKXVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQi
XTsKQEAgLTczMSw3ICs3MzEsNyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRh
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKICAgICByZXR1cm4gY2FjaGVkUmVzcG9u
c2U7CiB9CiAKLXN0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVS
TChXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgTlNDYWNoZWRVUkxS
ZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXSk7CiAg
ICAgW3JlcXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+dXNlckFnZW50
KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwpAQCAtNzQyLDE3ICs3NDIsMTcg
QEAgc3RhdGljIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBh
Z2UqIHdlYlBhZ2UsIGNvbnN0IEtVUkwmIHUKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJl
ZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiB9CiAK
LVN0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFtbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywg
dXJsKSByZXNwb25zZV0gc3VnZ2VzdGVkRmlsZW5hbWVdOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2Vi
UGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gW1tjYWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIHJlc3BvbnNlXSBNSU1F
VHlwZV07CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNw
b25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtjYWNoZWRSZXNwb25zZUZvclVSTCh0
aGlzLCB1cmwpIGRhdGFdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKaW5kZXggOGZlYjEzNi4uNmVlOGExZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKQEAg
LTI2OCwxMyArMjY4LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZv
cktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
S1VSTCYpCitib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVS
TCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IEtVUkwmKQor
U3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI4Niwx
MyArMjg2LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJQYWdl
OjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJQ
YWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtVUkwm
KQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZv
clVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRl
eCA4MGRiNDMxLi5iODcwNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NNYWMubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVw
ZGF0ZUFjdGl2ZVBhZ2VzKCkKICAgICAgICAgaWYgKCFtYWluRnJhbWVPcmlnaW4tPmlzVW5pcXVl
KCkpCiAgICAgICAgICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4t
PnRvUmF3U3RyaW5nKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1haW5GcmFtZU9yaWdp
blN0cmluZyA9IEtVUkwoS1VSTCgpLCBtYWluRnJhbWUtPnVybCgpKS5wcm90b2NvbCgpICsgJzon
OyAvLyB0b1Jhd1N0cmluZygpIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggdW5pcXVlIG9y
aWdpbnMsIGFuZCB3b3VsZCBqdXN0IHJldHVybiAiOi8vIi4KKyAgICAgICAgICAgIG1haW5GcmFt
ZU9yaWdpblN0cmluZyA9IFVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSkucHJvdG9jb2woKSAr
ICc6JzsgLy8gdG9SYXdTdHJpbmcoKSBpcyBub3Qgc3VwcG9zZWQgdG8gd29yayB3aXRoIHVuaXF1
ZSBvcmlnaW5zLCBhbmQgd291bGQganVzdCByZXR1cm4gIjovLyIuCiAKICAgICAgICAgTlNVUkwg
Km9yaWdpbkFzTlNVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzptYWluRnJhbWVPcmlnaW5TdHJp
bmddOwogICAgICAgICAvLyArW05TVVJMIFVSTFdpdGhTdHJpbmc6XSByZXR1cm5zIG5pbCB3aGVu
IGl0cyBhcmd1bWVudCBpcyBtYWxmb3JtZWQuIEl0J3MgdW5jbGVhciBob3cgd2UgY2FuIHBvc3Np
Ymx5IGhhdmUgYSBtYWxmb3JtZWQgVVJMIGhlcmUsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212807</attachid>
            <date>2013-09-27 07:30:12 -0700</date>
            <delta_ts>2013-09-27 07:40:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>darin-16214.diff</filename>
            <type>text/plain</type>
            <size>1442786</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTE2MzAyMC4uNTRlYzRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAKLSAgICBwbGF0Zm9ybS9LVVJMLmNwcAorICAgIHBs
YXRmb3JtL1VSTC5jcHAKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwCiAgICAgcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFl
NGM1M2EuLjExNjIzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjcgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbmV4cGVjdGVkIHdvcmQgd3JhcHBpbmcg
Zm9yIHdyYXBwZWQgY29udGVudCB0aGVuIHJhdyBjb250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggZjFmZjgzZi4uMGZhYmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC02MDU3LDkgKzYwNTcsOSBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxIYXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxI
YXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xhbmd1YWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggZGQ4ODFmNy4uMmZjMWY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcApA
QCAtNTUsNyArNTUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBzdGF0aWMKLVBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5j
RmlsZVN5c3RlbSkKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewogICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpKTsKICAgICBmaWxlU3lzdGVtLT5zdXNwZW5k
SWZOZWVkZWQoKTsKQEAgLTgzLDEwICs4MywxMCBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpbwog
ICAgIHJvb3RVUkwuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7CiAgICAgcm9vdFVSTC5hcHBlbmQoIi8i
KTsKIAotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3Rl
bU5hbWUudG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwor
ICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3RlbU5hbWUu
dG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgVVJMKFBhcnNlZFVSTFN0cmluZywg
cm9vdFVSTC50b1N0cmluZygpKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CiB9CiAKLURP
TUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorRE9N
RmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9v
dFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAgICA6
IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmls
ZVN5c3RlbSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogewpAQCAtMTUwLDcgKzE1
MCw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFNuYXBzaG90RmlsZUNhbGxiYWNrIDogcHVibGlj
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTbmFwc2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQ
dHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKKyAgICBzdGF0aWMgUGFzc093blB0cjxTbmFwc2hvdEZpbGVDYWxs
YmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTbmFwc2hvdEZpbGVDYWxsYmFjayhm
aWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwog
ICAgIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFNuYXBzaG90RmlsZUNhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCisgICAgU25hcHNob3RGaWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBjb25zdCBVUkwmIHVybCwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCiAgICAg
ICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiB2
b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnks
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBTbmFwc2hvdEZp
bGVDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJM
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKaW5kZXggYWU4MTEzZi4u
NzlhZmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsK
IAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVt
VHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwog
CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3IgdGhlIGdpdmVu
IGZpbGVzeXN0ZW1JZC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZmlsZXN5c3RlbUlkKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcAppbmRleCA3ZWZhYWNlLi5mNmE1MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKERPTUZpbGVTeXN0ZW0KIGNvbnN0IGNoYXIgRE9NRmlsZVN5c3Rl
bUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeFtdID0gImlzb2xhdGVkIjsKIGNvbnN0IHNpemVfdCBE
T01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9mKERPTUZp
bGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXgpIC0gMTsKIAotRE9NRmlsZVN5c3RlbUJh
c2U6OkRPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RPTUZpbGVT
eXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAg
ICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3R5cGUo
dHlwZSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6aXNWYWxpZFR5
cGUoRmlsZVN5c3RlbVR5cGUgdHlwZSkKIH0KIAogLy8gc3RhdGljCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlw
ZSYgdHlwZSwgU3RyaW5nJiBmaWxlUGF0aCkKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNr
RmlsZVN5c3RlbVVSTChjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiZmlsZXN5c3RlbSIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpzdXBwb3J0c1RvVVJMKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
S1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKSBjb25zdAorVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVt
VVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7Ci0gICAgS1VSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1S
b290VVJMOworICAgIFVSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1Sb290VVJMOwogICAgIC8vIFJlbW92
ZSB0aGUgZXh0cmEgbGVhZGluZyBzbGFzaC4KICAgICB1cmwuc2V0UGF0aCh1cmwucGF0aCgpICsg
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhmdWxsUGF0aC5zdWJzdHJpbmcoMSkpKTsKICAg
ICByZXR1cm4gdXJsOwpAQCAtMTIwLDcgKzEyMCw3IEBAIFNlY3VyaXR5T3JpZ2luKiBET01GaWxl
U3lzdGVtQmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLUtVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKK1VSTCBET01GaWxlU3lz
dGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqIGVudHJ5KSBjb25z
dAogewogICAgIHJldHVybiBjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5LT5mdWxsUGF0aCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW1CYXNlLmgKaW5kZXggM2I0MjQ2YS4uMjg3MjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtRmxhZ3MuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciBpc29sYXRlZFBh
dGhQcmVmaXhbXTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlzb2xhdGVkUGF0aFByZWZpeExl
bmd0aDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpOwogICAgIH0KQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIEtVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
KyAgICBVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
ICAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9CiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3Q7CiAKQEAgLTg1LDEwICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjbG9u
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvbmFibGU7IH0KIAogICAgIHN0YXRpYyBib29sIGlz
VmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjcmFja0ZpbGVTeXN0
ZW1VUkwoY29uc3QgS1VSTCYsIEZpbGVTeXN0ZW1UeXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7Cisg
ICAgc3RhdGljIGJvb2wgY3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYsIEZpbGVTeXN0ZW1U
eXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgYm9vbCBzdXBwb3J0c1RvVVJMKCkgY29uc3Q7
Ci0gICAgS1VSTCBjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFzZSopIGNvbnN0Owot
ICAgIEtVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKKyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsK
KyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKIAogICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuIEFsbCB0
aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZl
bC4KICAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRv
bid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1lIHZh
bGlkYXRpb24gZXJyb3JzKS4gT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBt
YXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCkBAIC0xMDMsMTMgKzEwMywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogcHJvdGVjdGVkOgotICAgIERPTUZpbGVT
eXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CiAgICAgZnJpZW5kIGNsYXNzIERPTUZpbGVTeXN0
ZW1TeW5jOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwotICAgIEtVUkwgbV9maWxl
c3lzdGVtUm9vdFVSTDsKKyAgICBVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKICAgICBib29sIG1f
Y2xvbmFibGU7CiAKICAgICBtdXRhYmxlIE93blB0cjxBc3luY0ZpbGVTeXN0ZW0+IG1fYXN5bmNG
aWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXggMGM2ZWFlOS4uZGQ4NjAyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IERP
TUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGUoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhmaWxlU3lzdGVtLT5tX2NvbnRleHQs
IGZpbGVTeXN0ZW0tPm5hbWUoKSwgZmlsZVN5c3RlbS0+dHlwZSgpLCBmaWxlU3lzdGVtLT5yb290
VVJMKCksIGZpbGVTeXN0ZW0tPm1fYXN5bmNGaWxlU3lzdGVtLnJlbGVhc2UoKSkpOwogfQogCi1E
T01GaWxlU3lzdGVtU3luYzo6RE9NRmlsZVN5c3RlbVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25z
dCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQorRE9NRmlsZVN5c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNG
aWxlU3lzdGVtKQogICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgdHlwZSwg
cm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQogewogfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD47
CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0
ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxl
SGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7CiAgICAgfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgQ3JlYXRlRmlsZUhl
bHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgQ3JlYXRlRmls
ZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICAgICAgOiBt
X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV91cmwo
dXJsKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q3JlYXRlRmls
ZVJlc3VsdD4gbV9yZXN1bHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7CiB9OwogCkBAIC0xNTUs
NyArMTU1LDcgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIFJlZlB0cjxDcmVhdGVGaWxlSGVscGVyOjpDcmVh
dGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdDo6
Y3JlYXRlKCkpOwogICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRS
ZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgQ3JlYXRlRmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3Vs
dCwgZmlsZUVudHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1VUkwsIHR5cGUoKSkpOwogICAgIGlmICgh
bV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5j
LmgKaW5kZXggMjRmYmQxNS4uMjYyOWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmMgOiBw
dWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0
eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3lu
Y0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVT
eXN0ZW1TeW5jKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkp
OwogICAgIH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RmlsZVdy
aXRlclN5bmM+IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1T
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKaW5kZXggMTc5ZWNlNi4uODIzYTVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dG
aWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIERPTVdpbmRvd0ZpbGVTeXN0ZW06
OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiB3aW5kb3csIGNvbgog
ICAgICAgICByZXR1cm47CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KSB8fCAhc2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlP
cmlnaW4tPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBET01GaWxlU3lzdGVt
OjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNy
ZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHAKaW5kZXggOWQ4MWEyMi4uNDJiNGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIEZpbGVTeXN0ZW1DYWxsYmFja3M6OkZpbGVTeXN0ZW1DYWxsYmFja3Mo
UGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDCiB7CiB9CiAKLXZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsK
ICAgICAgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7CkBAIC0yMTEsNyArMjExLDcgQEAgUmVz
b2x2ZVVSSUNhbGxiYWNrczo6UmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmEKIHsKIH0KIAotdm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkws
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCit2b2lkIFJlc29s
dmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQogewogICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwogICAgIFJlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gcm9vdCA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuZ2V0KCksIG5hbWUsIG1fdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKS0+cm9v
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMjVmZTM2OC4uMzk5YzU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIGNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3Mg
OiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0
ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW0+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKIGNsYXNzIFJlc29sdmVVUklDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc29sdmVVUklDYWxs
YmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOwogCiBwcml2YXRlOgogICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2QyYWVhNC4uNmQ5ODRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtU3luYz4gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXF1
ZXN0RmlsZVN5c3QKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgY29uc3Qg
U3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgS1VSTCBjb21w
bGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRlZFVS
TCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CiAgICAgICAgIERP
TUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TChXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2Vy
LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBs
ZXRlVVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9
IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OlNFQ1VSSVRZX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCmluZGV4IGRiNDc1MWUuLmZiYzRhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKIAotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZUJh
c2UuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3IEBAIE1lZGlhU291cmNlUmVnaXN0cnkm
IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKLXZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKK3ZvaWQgTWVk
aWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
IHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIEFTU0VSVCgmcmVnaXN0
cmFibGUtPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVnaXMKICAgICBtX21lZGlhU291
cmNlcy5zZXQodXJsLnN0cmluZygpLCBzb3VyY2UpOwogfQogCi12b2lkIE1lZGlhU291cmNlUmVn
aXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVNvdXJjZUJhc2U+
ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlhU291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oCmluZGV4IDQ2YzI0ZDQuLjc4ZDI3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIE1lZGlhU291cmNlQmFzZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdp
c3RyeSA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgTWVkaWFTb3VyY2VSZWdpc3RyeSYgcmVnaXN0cnkoKTsKIAogICAgIC8vIFJlZ2lz
dGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIG1lZGlhIHNvdXJjZS4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
clVSTChjb25zdCBLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJM
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCAzNmQyN2U2Li4yOTY3MTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00MSwx
NCArNDEsMTQgQEAgTWVkaWFTdHJlYW1SZWdpc3RyeSYgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVn
aXN0cmFibGUqIHN0cmVhbSkKK3ZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJVUkwo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHN0cmVhbSkK
IHsKICAgICBBU1NFUlQoJnN0cmVhbS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMuc2V0KHVybC5zdHJpbmco
KSwgc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihzdHJlYW0pLT5kZXNjcmlwdG9yKCkpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJs
KQordm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9zdHJlYW1EZXNjcmlwdG9y
cy5yZW1vdmUodXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKaW5kZXggZThiZTRjMS4uZTQ2
YzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CiAKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBNZWRpYVN0cmVhbVJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogCiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgc3RyZWFtIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VS
TCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVS
TChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAK
ICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIGxvb2t1cE1lZGlhU3RyZWFtRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggY2VkMDIzMy4uMDUxZTBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxSVENDb25m
aWd1cmF0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERp
Y3Rpb24KICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7
CisgICAgICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgICAgIGlmICghdXJsLmlz
VmFsaWQoKSB8fCAhKHVybC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJsLnByb3RvY29sSXMoInN0
dW4iKSkpIHsKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9y
Y29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCmlu
ZGV4IDk5Yjk2Y2YuLmYzYjFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzLmNwcApAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21IYW5k
bGVyVVJMKGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4YwogICAg
IFN0cmluZyBuZXdVUkwgPSB1cmw7CiAgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgV1RGX0FSUkFZ
X0xFTkdUSCh0b2tlbikgLSAxKTsKIAotICAgIEtVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJh
c2VVUkwpOwotICAgIEtVUkwga3VybChiYXNlLCBuZXdVUkwpOworICAgIFVSTCBiYXNlKFBhcnNl
ZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKIAogICAg
IGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBhYWI1NjQ5Li5mNjI5ZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pY29uID0gaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpOworICAgIG1faWNvbiA9
IGljb25VUkkuaXNFbXB0eSgpID8gVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bXBsZXRlVVJMKGljb25VUkkpOwogICAgIGlmICghbV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29u
LmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIGlmIChvcHRp
b25zLmdldCgiZGlyIiwgYXJndW1lbnQpKQogICAgICAgICBub3RpZmljYXRpb24tPnNldERpcihh
cmd1bWVudCk7CiAgICAgaWYgKG9wdGlvbnMuZ2V0KCJpY29uIiwgYXJndW1lbnQpKSB7Ci0gICAg
ICAgIEtVUkwgaWNvblVSSSA9IGFyZ3VtZW50LmlzRW1wdHkoKSA/IEtVUkwoKSA6IGNvbnRleHQt
PmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKKyAgICAgICAgVVJMIGljb25VUkkgPSBhcmd1bWVudC5p
c0VtcHR5KCkgPyBVUkwoKSA6IGNvbnRleHQtPmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKICAgICAg
ICAgaWYgKCFpY29uVVJJLmlzRW1wdHkoKSAmJiBpY29uVVJJLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIG5vdGlmaWNhdGlvbi0+c2V0SWNvblVSTChpY29uVVJJKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXgg
NTA3YTdmYS4uNzk2NzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0RGlyZWN0aW9uLmgiCkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbjsgfQotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBLVVJMJiB1cmwpIHsgbV9pY29uID0g
dXJsOyB9CisgICAgVVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9pY29uID0gdXJsOyB9CiAKICAgICBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgU3RyaW5nIGJvZHko
KSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX2ljb247Cisg
ICAgVVJMIG1faWNvbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5Owog
ICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAppbmRleCA5ZTkyODM2Li4y
MjgxNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNw
cAppbmRleCA1OWQ0MmY5Li5jZGMxZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNw
ZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hHcmFtbWFyKTsKIH0KIAotUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVl
Y2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQorUGFzc1Jl
ZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgVVJMJiBzcmMs
IGRvdWJsZSB3ZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFy
KHNyYywgd2VpZ2h0KSk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFNwZWVjaEdyYW1tYXI6OlNwZWVj
aEdyYW1tYXIoKQogewogfQogCi1TcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0IEtV
UkwmIHNyYywgZG91YmxlIHdlaWdodCkKK1NwZWVjaEdyYW1tYXI6OlNwZWVjaEdyYW1tYXIoY29u
c3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCiAgICAgOiBtX3NyYyhzcmMpCiAgICAgLCBtX3dl
aWdodCh3ZWlnaHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hHcmFtbWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmgKaW5kZXggNzRiMDBhZC4uNDk0MWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKFNDUklQVEVEX1NQRUVDSCkKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFNwZWVjaEdyYW1tYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hHcmFtbWFy
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRl
KCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBpcyBub3QgY2xlYXIgb24gd2hhdCB0aGUgY29uc3RydWN0
b3Igc2hvdWxkIGxvb2sgbGlrZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFy
PiBjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBjcmVhdGUoY29uc3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWln
aHQpOwogCi0gICAgY29uc3QgS1VSTCYgc3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25z
dCB7IHJldHVybiBtX3NyYzsgfQotICAgIGNvbnN0IEtVUkwmIHNyYygpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNv
bnN0IHsgcmV0dXJuIG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoKSBjb25zdCB7IHJldHVy
biBtX3NyYzsgfQogICAgIHZvaWQgc2V0U3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHNyYyk7CiAKICAgICBkb3VibGUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV93
ZWlnaHQ7IH0KQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNwZWVj
aEdyYW1tYXIoKTsKLSAgICBTcGVlY2hHcmFtbWFyKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdl
aWdodCk7CisgICAgU3BlZWNoR3JhbW1hcihjb25zdCBVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7
CiAKLSAgICBLVVJMIG1fc3JjOworICAgIFVSTCBtX3NyYzsKICAgICBkb3VibGUgbV93ZWlnaHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFt
bWFyTGlzdC5jcHAKaW5kZXggYzNkZGJlMS4uMmRhYTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRk
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIHdlaWdodCkKIHsKICAgICBT
dHJpbmcgdXJsU3RyaW5nID0gU3RyaW5nKCJkYXRhOmFwcGxpY2F0aW9uL3htbCwiKSArIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc3RyaW5nKTsKLSAgICBtX2dyYW1tYXJzLmFwcGVuZChT
cGVlY2hHcmFtbWFyOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybFN0cmluZyksIHdlaWdodCkpOwor
ICAgIG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdyYW1tYXI6OmNyZWF0ZShVUkwoVVJMKCksIHVy
bFN0cmluZyksIHdlaWdodCkpOwogfQogCiBTcGVlY2hHcmFtbWFyTGlzdDo6U3BlZWNoR3JhbW1h
ckxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBmZjcyODNkLi5kZWQzNGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
ICAgICBJbnZhbGlkTWVzc2FnZQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0
ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcg
ZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgp
IGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGQ5NjA2NDEuLmE0MmI5YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yMTMsNyArMjEz
LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0KCkg
dXJsPSclcyciLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV91cmwgPSBLVVJMKEtV
UkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKIAogICAgIGlmICghbV91
cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQg
dXJsIGZvciBXZWJTb2NrZXQgIiArIG1fdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgbV9jaGFu
bmVsLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi1jb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVy
bCgpIGNvbnN0Citjb25zdCBVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggZDY3YzU0Yy4uNDA0OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJiBlYykgeyBjbG9zZShXZWJTb2NrZXRDaGFubmVsOjpD
bG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCwgU3RyaW5nKCksIGVjKTsgfQogICAgIHZvaWQgY2xv
c2UoaW50IGNvZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNsb3NlKGNvZGUsIFN0cmluZygpLCBl
Yyk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBtX2NoYW5uZWw7CiAKICAg
ICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIHVu
c2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnRBZnRlckNsb3NlOwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IGU3ZjhkYmQuLmE5MzJiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQogewogfQogCi12b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjb25uZWN0KCkiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGYxNDhjZDkuLjM5NjQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggNTYzZDcxNC4uMWVjMTI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVySW5TZWNXZWJTb2NrZXRLZXlbXSA9ICIhXCIjJCUmJygp
KissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6e3x9fiI7CiAKLXN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0
IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKICAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsK
QEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgS1VSTCYg
dXJsKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29u
c3QgS1VSTCYgdXJsLCBib29sIHNlY3VyZSkKK3N0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgc2VjdXJlKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3Nz
IikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0xMjEsNyArMTIx
LDcgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2Nl
cHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXQKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhhc2guZGF0YSgpKSwgc2hhMUhhc2hTaXplKTsK
IH0KIAotV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3RvY29sKQog
ICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCkBAIC0xMzYsMTIgKzEzNiwx
MiBAQCBXZWJTb2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQogewogfQogCi1j
b25zdCBLVVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIFdl
YlNvY2tldEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV91cmw7CiB9CiAK
LXZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9
IHVybC5jb3B5KCk7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghbV9jbGllbnRQ
cm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQt
UHJvdG9jb2w6ICIgKyBtX2NsaWVudFByb3RvY29sKTsKIAotICAgIEtVUkwgdXJsID0gaHR0cFVS
TEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOworICAgIFVSTCB1cmwgPSBodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9jb250ZXh0
KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGRvY3VtZW50LCB1cmwpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIFJlc291cmNlUmVxdWVzdCBXZWJT
b2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogICAgIGlmICgh
bV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRl
ckZpZWxkKCJTZWMtV2ViU29ja2V0LVByb3RvY29sIiwgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAg
ICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICBV
UkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmICht
X2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTM4Niw5ICszODYsOSBAQCB2
b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8
V2ViU29ja2V0RXh0ZW5zaW9uUHJvYwogICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9j
ZXNzb3IocHJvY2Vzc29yKTsKIH0KIAotS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxG
b3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAorVVJMIFdlYlNvY2tldEhhbmRzaGFr
ZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiB7Ci0gICAgS1VS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgVVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKICAgICBi
b29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAiaHR0cHMi
IDogImh0dHAiKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxkU2V0
UHJvdG9jb2wpOwogICAgIHJldHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggYzg3YWM2Yi4uY2Nh
YjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCkBAIC01MSwx
MSArNTEsMTEgQEAgcHVibGljOgogICAgIGVudW0gTW9kZSB7CiAgICAgICAgIEluY29tcGxldGUs
IE5vcm1hbCwgRmFpbGVkLCBDb25uZWN0ZWQKICAgICB9OwotICAgIFdlYlNvY2tldEhhbmRzaGFr
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgfldlYlNvY2tldEhhbmRz
aGFrZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwo
Y29uc3QgS1VSTCYpOworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRV
UkwoY29uc3QgVVJMJik7CiAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3Qg
U3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpOwogCiBwcml2YXRlOgotICAgIEtVUkwgaHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OworICAgIFVSTCBodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CiAKICAgICBpbnQgcmVhZFN0YXR1c0xpbmUo
Y29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUs
IFN0cmluZyYgc3RhdHVzVGV4dCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7
CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9jbGllbnRQ
cm90b2NvbDsKICAgICBib29sIG1fc2VjdXJlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IGM5MzZlZTAuLmI2YmEyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6fldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkKICAgICAgICAgbV9icmlk
Z2UtPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIGlmIChtX2JyaWRnZSkKICAgICAg
ICAgbV9icmlkZ2UtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6On5QZWVyKCkKICAgICAgICAg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNv
Y2tldENoYW5uZWwpCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKICAgICAgICAgbV93b3JrZXJDbGll
bnRXcmFwcGVyLT5zZXRGYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGVlciogcGVlciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCoKICAgICBwZWVyLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIpOwog
ICAgIGlmICghbV9wZWVyKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0
aW9uCiAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcg
bG9uZyBzaXplKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA0MTlhYzQyLi5mZjk4OWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIH5QZWVyKCk7CiAKLSAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImKTsK
ICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIH5CcmlkZ2UoKTsKICAgICAgICAgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJik7CkBAIC0xNjks
MTAgKzE2OSwxMCBAQCBwcml2YXRlOgogCiAgICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoV29ya2VyR2xvYmFsU2NvcGUqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
OwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4gPik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRCbG9i
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5k
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRp
YyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA1MDRkOTJkLi5iNjgzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEw
MjYsNyArMTAyNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAot
ICAgIHBsYXRmb3JtL0tVUkwuY3BwIFwKKyAgICBwbGF0Zm9ybS9VUkwuY3BwIFwKICAgICBwbGF0
Zm9ybS9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAgXAogICAgIHBsYXRm
b3JtL0xlbmd0aEJveC5jcHAgXApAQCAtMjI0Myw3ICsyMjQzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggXAogICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmcuaCBcCi0gICAgcGxhdGZvcm0vS1VSTC5oIFwKKyAgICBwbGF0Zm9ybS9VUkwu
aCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXAogICAgIHBsYXRmb3JtL0xlbmd0aEJveC5oIFwK
ICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJDb21wYXJhdG9yLmggXApAQCAtMjkwNCw3ICsy
OTA0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR2x5cGhQYWdl
VHJlZU5vZGVRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRh
UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwIFwKLSAgICBwbGF0
Zm9ybS9xdC9LVVJMUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9VUkxRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1Bhc3Rl
Ym9hcmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGYwYWFiODYuLmIwYjY5N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC02Nyw3ICs2Nyw2IEBAIF9fWk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3Ry
aW5nRXYKIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBfX0NGU3RyaW5nCiBfX1pOM1dU
RjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwot
X19aTjdXZWJDb3JlOEdyYWRpZW50RDFFdgogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktO
U183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKQEAgLTg5LDYgKzg4LDggQEAgX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYgogX19aTjdXZWJDb3JlMTBT
Y3JvbGxWaWV3MjNzZXRQYWludHNFbnRpcmVDb250ZW50c0ViCiBfX1pON1dlYkNvcmUxMFNjcm9s
bFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdlZEV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0
aGlkZUV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hvd0V2CiBfX1pON1dlYkNvcmUxMFNj
cm9sbFZpZXc1cGFpbnRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNldpZGdl
dEVFRQogX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwMTByZW1vdmVJdGVtRVJLTjNXVEY2U3RyaW5n
RVJTMl8KQEAgLTk5LDExICsxMDAsMTEgQEAgX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwNmNyZWF0
ZUVqCiBfX1pON1dlYkNvcmUxMFN0b3JhZ2VNYXA3c2V0SXRlbUVSS04zV1RGNlN0cmluZ0VTNF9S
UzJfUmIKIF9fWk43V2ViQ29yZTEwZGVsZXRlRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTEwZmlsZUV4aXN0c0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTEwc2V0Q29va2ll
c0VQTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
MHNldENvb2tpZXNFUE5TXzhEb2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKK19fWk43V2ViQ29yZTExQml0bWFw
SW1hZ2UxM2dldENHSW1hZ2VSZWZFdgogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVA3Q0dJ
bWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJFCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUE5T
XzEzSW1hZ2VPYnNlcnZlckUKLV9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2UxM2dldENHSW1hZ2VS
ZWZFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
dgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
TjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQogX19aTjdX
ZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0cmluZ0UKQEAgLTExMSwx
NCArMTEyLDEzIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzCiBfX1pON1dlYkNvcmUxMUZpbGVD
aG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNo
b3VsZENsb3NlRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVjdGVkRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUViYk5TXzE4
U2hvdWxkU2VuZFJlZmVycmVyRQotX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyc2hvdWxkUmVs
b2FkRVJLTlNfNEtVUkxFUzNfCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3Rl
ZEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVi
Yk5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZGV0
YWNoQ2hpbGRyZW5FdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNF
TlNfMjZDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2Fk
ZXIxNmRldGFjaEZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE2bG9hZEZy
YW1lUmVxdWVzdEVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEViYk4zV1RGMTBQYXNzUmVmUHRySU5T
XzVFdmVudEVFRU5TNV9JTlNfOUZvcm1TdGF0ZUVFRU5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQog
X19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVzZXJDYW5jZWxFYgotX19aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjIxbG9hZFVSTEludG9DaGlsZEZyYW1lRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMWxvYWRVUkxJ
bnRvQ2hpbGRGcmFtZUVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFUE5TXzVGcmFtZUUKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXIyMmZpbmRGcmFtZUZvck5hdmlnYXRpb25FUktOM1dURjEyQXRv
bWljU3RyaW5nRVBOU184RG9jdW1lbnRFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjN0aW1l
T2ZMYXN0Q29tcGxldGVkTG9hZEV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjZyZWxvYWRX
aXRoT3ZlcnJpZGVFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKQEAgLTE0NiwxMyArMTQ2LDEyIEBA
IF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlF
UktOM1dURjZTdHJpbmdFUDExb2JqY19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0y
MWRlY29kZUJhY2tGb3J3YXJkVHJlZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9STlMxXzdEZWNvZGVy
RQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIybWVyZ2VBdXRvQ29tcGxldGVIaW50c0VQUzBf
Ci1fX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtNnNldFVSTEVSS05TXzRLVVJMRQogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTd2aXNpdGVkRVJLTjNXVEY2U3RyaW5nRWROU18xOFZpc2l0Q291bnRC
ZWhhdmlvckUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURhdGFFdgogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbThzZXRUaXRsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW1DMUVSS04zV1RGNlN0cmluZ0VTNF9TNF9kCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfZAotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMx
RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFUzdfUzdfCitfX1pON1dlYkNvcmUxMUhpc3RvcnlJ
dGVtQzFFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XwogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbUMxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUx
MUpTRE9NV2luZG93NnNfaW5mb0UKQEAgLTE2MCw3ICsxNTksNyBAQCBfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMTFzZXREaXNhYmxlZEViCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNnZXRT
dGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxM3NldENhcGFjaXRpZXNFampq
CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRldmljdFJlc291cmNlc0V2Ci1fX1pON1dlYkNv
cmUxMU1lbW9yeUNhY2hlMTRyZXNvdXJjZUZvclVSTEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3Jl
MTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU18zVVJMRQogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE4cmVzb3VyY2VGb3JSZXF1ZXN0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBf
X1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNo
U2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2lu
SGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUy
NXJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCkBAIC0xNjgs
OCArMTY3LDggQEAgX19aTjdXZWJDb3JlMTFQYWdlQ29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRp
b25zRXYKIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9u
c0ViCiBfX1pON1dlYkNvcmUxMVNRTFJlc3VsdE9rRQogX19aTjdXZWJDb3JlMTFVUkxXaXRoRGF0
YUVQNk5TRGF0YVA1TlNVUkwKLV9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJO
M1dURjdDU3RyaW5nRQogX19aTjdXZWJDb3JlMTFnZXRVUkxCeXRlc0VQSzdfX0NGVVJMUk4zV1RG
NlZlY3RvckljTG01MTJFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxMWdl
dFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExaUJlYW1D
dXJzb3JFdgogX19aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2CiBfX1pON1dlYkNvcmUxMXN0YXJ0
T2ZMaW5lRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCkBAIC0yMzQsNyArMjMzLDcgQEAgX19aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3JEMUV2CiBfX1pON1dlYkNvcmUxMlVURjhFbmNvZGluZ0V2CiBf
X1pON1dlYkNvcmUxMmNhY2hlU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQ
S05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFTlMzXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFTlNfMjNFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZUViTlNfMTNFQWJzb2x1dGVVUkxzRQot
X19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVS
S05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktO
U18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pON1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBf
X1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUxMHJvb3RPYmplY3RFdgpAQCAtMjYxLDYgKzI2MCw3
IEBAIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4c2V0QmFja2dyb3VuZENvbG9yRVJLTlNf
NUNvbG9yRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjBzZXRSZXBsaWNhdGVkQnlMYXll
ckVQUzBfCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI1NG5vdGVEZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50c0V2CiBfX1pON1dlYkNvcmUxM0dyYXBo
aWNzTGF5ZXI2Y3JlYXRlRVBOU18yMEdyYXBoaWNzTGF5ZXJGYWN0b3J5RVBOU18xOUdyYXBoaWNz
TGF5ZXJDbGllbnRFCitfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI3c2V0U2l6ZUVSS05TXzlG
bG9hdFNpemVFCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI4YWRkQ2hpbGRFUFMwXwogX19a
TjdXZWJDb3JlMTNHcmFwaGljc0xheWVyQzJFUE5TXzE5R3JhcGhpY3NMYXllckNsaWVudEUKIF9f
Wk43V2ViQ29yZTEzR3JhcGhpY3NMYXllckQyRXYKQEAgLTI4MiwxMSArMjgyLDEzIEBAIF9fWk43
V2ViQ29yZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMx
RVA3TlNFcnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKIF9f
Wk43V2ViQ29yZTEzU1FMUmVzdWx0RG9uZUUKK19fWk43V2ViQ29yZTEzU2NyaXB0R0NFdmVudDEx
Z2V0SGVhcFNpemVFUk5TXzhIZWFwSW5mb0UKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIy
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dURjZTdHJpbmdF
YgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVkTlNfMTdDU1NQcmltaXRpdmVWYWx1ZTlVbml0VHlwZXNFYgotX19a
TjdXZWJDb3JlMTNjb29raWVzRm9yRE9NRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U180S1VSTEVTNV8KK19fWk43V2ViQ29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUUKIF9fWk43
V2ViQ29yZTEzZGlyZWN0b3J5TmFtZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEzZ2V0
UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9STjNX
VEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlMTNsaXN0RGlyZWN0b3J5RVJLTjNXVEY2U3RyaW5nRVMzXwogX19aTjdXZWJDb3JlMTNw
b2ludGVyQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRvd0VOM0pTQzdKU1ZhbHVl
RQpAQCAtMzkwLDEwICszOTIsOSBAQCBfX1pON1dlYkNvcmUxNFNjcm9sbGJhclRoZW1lNXRoZW1l
RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjhjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfaQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRl
RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBv
bGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlQb2xpY3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZlcnJl
clBvbGljeUVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTZWN1cml0
eVBvbGljeTIyZ2VuZXJhdGVSZWZlcnJlckhlYWRlckVOU18xNFJlZmVycmVyUG9saWN5RVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5Mjlh
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFUzdfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTMycmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5n
RVM3X2IKQEAgLTQwNSw3ICs0MDYsNyBAQCBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJz
eW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3Jp
Z2luRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdl
VHJhY2tlcjd0cmFja2VyRXYKIF9fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93UGx1
Z2luc0VOU18yOFJlYXNvbkZvckNhbGxpbmdBbGxvd1BsdWdpbnNFCi1fX1pON1dlYkNvcmUxNGNv
b2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8K
K19fWk43V2ViQ29yZTE0Y29va2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcK
IF9fWk43V2ViQ29yZTE0ZW5jb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRl
bmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlRQpAQCAtNDE3LDcgKzQxOCwyMyBAQCBfX1pON1dlYkNvcmUxNUFmZmluZVRy
YW5zZm9ybThtdWx0aXBseUVSS1MwXwogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm05dHJh
bnNsYXRlRWRkCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybUMxRWRkZGRkZAogX19aTjdX
ZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2Ci1fX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJj
ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJM
RVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNv
cmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRC
dWZmZXJFRUVSS05TXzNVUkxFUktOUzFfNlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNw
b25zZUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhp
c3RvcnlJdGVtRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgor
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWN1cnJlbnRJdGVtRXYKK19fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0MTFmb3J3YXJkSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDExc2V0Q2FwYWNpdHlFaQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMmNv
bnRhaW5zSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhp
c3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82
UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgorX19aTjdXZWJDb3JlMTVCYWNr
Rm9yd2FyZExpc3Q2Z29CYWNrRXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJs
ZWRFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW50cmllc0V2CitfX1pON1dlYkNv
cmUxNUJhY2tGb3J3YXJkTGlzdDhiYWNrSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdDhjYXBhY2l0eUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRF
dgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3RDMUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNv
cmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdy
YXBwZXJXb3JsZEQxRXYKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXpl
RVJLTjNXVEY2U3RyaW5nRQpAQCAtNDM1LDkgKzQ1Miw5IEBAIF9fWk43V2ViQ29yZTE1RGF0YWJh
c2VNYW5hZ2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5
T3JpCiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjhzZXRRdW90YUVQTlNfMTRTZWN1cml0
eU9yaWdpbkV5CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjlzZXRDbGllbnRFUE5TXzIx
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxMHNl
dEZvY3VzZWRFYgotX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVt
ZW50RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3Vz
RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNldEZvY3VzZWRGcmFt
ZUVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250
cm9sbGVyMTVzZXRJbml0aWFsRm9jdXNFTlNfMTRGb2N1c0RpcmVjdGlvbkVQTlNfMTNLZXlib2Fy
ZEV2ZW50RQorX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVtZW50
RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3VzRGly
ZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIyOHNldENvbnRhaW5pbmdXaW5k
b3dJc1Zpc2libGVFYgogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXI5c2V0QWN0aXZlRWIK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTBzdHJva2VSZWN0RVJLTlNfOUZsb2F0UmVj
dEVmCkBAIC00OTcsNyArNTE0LDcgQEAgX19aTjdXZWJDb3JlMTVTdHJpbmdUcnVuY2F0b3I1d2lk
dGhFUktOM1dURjZTdHJpbmdFUktOU180Rm9udEVOUzBfMjRFbmFibGVSb3VuZGkKIF9fWk43V2Vi
Q29yZTE1VmlzaWJsZVBvc2l0aW9uQzFFUktOU184UG9zaXRpb25FTlNfOUVBZmZpbml0eUUKIF9f
Wk43V2ViQ29yZTE1ZGVmYXVsdExhbmd1YWdlRXYKIF9fWk43V2ViQ29yZTE1bG9jYWxpemVkU3Ry
aW5nRVBLYwotX19aTjdXZWJDb3JlMTVtaW1lVHlwZUZyb21VUkxFUktOU180S1VSTEUKK19fWk43
V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE1b3JpZ2lu
YWxVUkxEYXRhRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE1cGF0aEdldEZpbGVOYW1lRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTVyZXBvcnRFeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFUE5TXzEyQ2FjaGVkU2NyaXB0RQpAQCAtNTA3LDcgKzUyNCw3IEBAIF9fWk43
V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNr
VXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxp
Y2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQot
X19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhEb2N1bWVudEVSS05TXzRLVVJM
RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhE
b2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3kxN2dldERhdGFiYXNlU2VydmVyRXYKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9u
RGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90
aW9uRGF0YTEyUm90YXRpb25SYXRlNmNyZWF0ZUViZGJkYmQKQEAgLTU5Myw3ICs2MTAsNyBAQCBf
X1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENh
Y2hlZFJlc291cmNlRVJLTlNfMTVSZQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9F
CiBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRl
bXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zy
b21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVM1X1JLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3
dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNp
b25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKQEAgLTYxNiw0MCArNjMzLDIyIEBAIF9fWk43
V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzRDFFdgogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKIF9fWk43V2ViQ29yZTE4bWFrZUFsbERpcmVjdG9yaWVzRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTNKU0hUTUxFbGVtZW50RQotX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktOU180
S1VSTEVQS05TXzE3TmV0d29ya2luZ0NvbnRleHRFCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMTFpc1N1c3BlbmRlZEV2CitfX1pON1dlYkNvcmUxOHByb3h5U2VydmVyc0ZvclVS
TEVSS05TXzNVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQogX19aTjdXZWJDb3JlMTlBbmlt
YXRpb25Db250cm9sbGVyMTZyZXN1bWVBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0
aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlMTlBbmltYXRp
b25Db250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktO
M1dURjEyQXRvbWljU3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIx
cGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0Vk
CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzNnNldEFsbG93c05ld0FuaW1hdGlv
bnNXaGlsZVN1c3BlbmRlZEViCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNh
bGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3QxMHJlbW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDEwc2V0RW5hYmxlZEViCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlz
dDExY3VycmVudEl0ZW1FdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJ
dGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFzZXRDYXBhY2l0eUVpCi1fX1pO
N1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29udGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVt
RQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNX
VEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RX
aXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxt
MEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
NmNsb3NlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgotX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDdlbnRyaWVzRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGJhY2tJdGVt
RXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGNhcGFjaXR5RXYKLV9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0OWdvRm9yd2FyZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdEMxRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRW
YWx1ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjEw
aW52YWxpZGF0ZUV2CitfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXIyM3J1bkxvb3BP
YnNlcnZlckNhbGxiYWNrRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjZyZXN1
bWVFdgogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyN3N1c3BlbmRFdgogX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyOHNjaGVkdWxlRXYKK19fWk43V2ViQ29yZTE5TGF5
ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pO
N1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJDMkVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50RQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDFFdgogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDJFdgotX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyMjNydW5Mb29wT2JzZXJ2ZXJDYWxsYmFja0V2Ci1fX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTFzZXRIVFRQQm9keUVOM1dURjEwUGFzc1JlZlB0cklO
U184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTEzc2V0SFRU
UE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTE4c2V0SFRUUEhlYWRlckZpZWxkRVBLY1JLTjNXVEY2U3RyaW5nRQpAQCAtNjU4LDcgKzY1Nyw3
IEBAIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIyZGVmYXVsdFRpbWVvdXRJbnRl
cnZhbEV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNHNfZGVmYXVsdFRpbWVv
dXRJbnRlcnZhbEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTI1c2V0RGVmYXVs
dFRpbWVvdXRJbnRlcnZhbEVkCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U1MHNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RVJLTjNXVEY2
U3RyaW5nRVM0X1M0XwotX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVS
S05TXzRLVVJMRQorX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVSS05T
XzNVUkxFCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI1Zmx1c2hFdgogX19aTjdX
ZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNmRlY29kZUVQS2NtCiBfX1pON1dlYkNvcmUxOVRl
eHRSZXNvdXJjZURlY29kZXJDMUVSS04zV1RGNlN0cmluZ0VSS05TXzEyVGV4dEVuY29kaW5nRWIK
QEAgLTY3Miw3ICs2NzEsNiBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFF
dgogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb25FTlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCiBfX1pON1dlYkNv
cmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MzdzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklz
SGlkZGVuRWIKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3Q0NHNldFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uV2l0aERlc2NyaXB0aW9uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uRVJLTjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRP
YmplY3QyMWlzUmVwbGFjZW1lbnRPYnNjdXJlZEV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFu
ZGxlQ2xpZW50MTZkaWRSZWNlaXZlQnVmZmVyRVBOU18xNFJlc291cmNlSGFuZGxlRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFaQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhh
bmRsZUNsaWVudDIwd2lsbFNlbmRSZXF1ZXN0QXN5bmNFUE5TXzE0UmVzb3VyY2VIYW5kbGVFUktO
U18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29y
ZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQyMndpbGxDYWNoZVJlc3BvbnNlQXN5bmNFUE5TXzE0UmVz
b3VyY2VIYW5kbGVFUDE5TlNDYWNoZWRVUkxSZXNwb25zZQpAQCAtNjg4LDkgKzY4Niw4IEBAIF9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVSS04z
V1RGMTJBdG9taWNTdHJpbmdFUktOCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
MTlzZXRUZXh0RW5jb2RpbmdOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTIwc2V0U3VnZ2VzdGVkRmlsZW5hbWVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjRzZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGhFeAotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZzZXRVUkxFUktOU180S1VS
TEUKK19fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNfM1VSTEUK
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2VDMkV2Ci1fX1pON1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlQzJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0V4UzdfUzdfCiBf
X1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yN3Nfc3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yQzFFTlNfMjZQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZUUK
IF9fWk43V2ViQ29yZTIwVXNlckdlc3R1cmVJbmRpY2F0b3JEMUV2CkBAIC03MTEsNyArNzA4LDYg
QEAgX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMXJlc3VtZVBlbmRpbmdSZXF1
ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIyc3VzcGVuZFBlbmRp
bmdSZXF1ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIzc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWRFUE5TXzVGcmFtZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFUktOU18yMVJlc291cmNl
TG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQotX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyN2Nyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZEVQTlNfMTRSZXNv
dXJjZUxvYWRlckVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIzMm5vdGlmeURpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RVBOU18xNFJlc291cmNlTG9hZGVy
RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXI2cmVtb3ZlRVBOU18xNFJlc291
cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXJDMkV2CkBAIC04
MDMsMTMgKzc5OSwxMyBAQCBfX1pON1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZUMyRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI3RGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0
cklOU18yMURldmljZU9yaWVudGF0aW9uRGF0YUVFRQogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2tDMUV2Ci1fX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbEVSS05TXzRLVVJMRVMyXworX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWxFUktOU18zVVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhv
clNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCiBfX1pO
N1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29y
ZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkVSS05TXzRLVVJMRVM1XworX19aTjdXZWJDb3JlMjljb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43
V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9fWk43V2ViQ29yZTMw
aG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43
V2ViQ29yZTMwaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFu
Z2UKQEAgLTgxOSw2ICs4MTUsMTEgQEAgX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNFdgogX19aTjdXZWJDb3JlMzdX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVzX3dpZGdldEhpZXJhcmNoeVVw
ZGF0ZVN1c3BlbmRDb3VudEUKK19fWk43V2ViQ29yZTNVUkwxMGludmFsaWRhdGVFdgorX19aTjdX
ZWJDb3JlM1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlM1VSTEMxRVA1TlNVUkwKK19fWk43V2ViQ29yZTNVUkxDMUVQSzdfX0NGVVJMCitf
X1pON1dlYkNvcmUzVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTNtYWNF
UktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUUKIF9fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1Zp
ZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFZgpAQCAtODMz
LDExICs4MzQsNiBAQCBfX1pON1dlYkNvcmU0Rm9udEMxRXYKIF9fWk43V2ViQ29yZTRGb250YVNF
UktTMF8KIF9fWk43V2ViQ29yZTRJY29uMThjcmVhdGVJY29uRm9yRmlsZXNFUktOM1dURjZWZWN0
b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3Jl
NEljb25EMUV2Ci1fX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2Ci1fX1pON1dlYkNvcmU0
S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJD
b3JlNEtVUkxDMUVQNU5TVVJMCi1fX1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKLV9fWk43
V2ViQ29yZTRLVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTBy
ZW5kZXJSZWN0RVBiCiBfX1pON1dlYkNvcmU0Tm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NS
ZWZQdHJJUzBfRUVSaU5TXzE0QXR0YWNoQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU0Tm9kZTExcmVt
b3ZlQ2hpbGRFUFMwX1JpCkBAIC0xMDQxLDIyICsxMDM3LDIzIEBAIF9fWk43V2ViQ29yZTdSdW5M
b29wOVRpbWVyQmFzZUQyRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMTlhbGxvd3NSb3VuZGluZ0hh
Y2tzRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMjFzX2FsbG93c1JvdW5kaW5nSGFja3NFCiBfX1pO
N1dlYkNvcmU3VGV4dFJ1bjIyc2V0QWxsb3dzUm91bmRpbmdIYWNrc0ViCi1fX1pON1dlYkNvcmU3
Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3JlN2Nvb2tpZXNF
UEtOU184RG9jdW1lbnRFUktOU18zVVJMRQogX19aTjdXZWJDb3JlN2pzQXJyYXlFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dURjEwUGFzc1JlZlB0cklOU18xM0RP
TVN0cmluZ0xpc3RFRUUKIF9fWk43V2ViQ29yZTdtYWtlUkdCRWlpaQogX19aTjdXZWJDb3JlN3Jl
cGxhY2VFUk4zV1RGNlN0cmluZ0VSS05TXzE3UmVndWxhckV4cHJlc3Npb25FUktTMV8KIF9fWk43
V2ViQ29yZTd0b0ludDY0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVl
RU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQorX19aTjdXZWJDb3JlOEJsb2JE
YXRhMTBhcHBlbmRCbG9iRVJLTlNfM1VSTEV4eAogX19aTjdXZWJDb3JlOEJsb2JEYXRhMTRzZXRD
b250ZW50VHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThDU1NWYWx1ZTdkZXN0cm95
RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19aTjdXZWJDb3JlOERv
Y3VtZW50MTJ1cGRhdGVMYXlvdXRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTNjcmVhdGVFbGVt
ZW50RVJLTlNfMTNRdWFsaWZpZWROYW1lRWIKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0Y3JlYXRl
VGV4dE5vZGVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmU4RG9jdW1lbnQxN3NldEZvY3Vz
ZWRFbGVtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzdFbGVtZW50RUVFTlNfMTRGb2N1c0RpcmVj
dGlvbkUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCiBfX1pON1dl
YkNvcmU4RG9jdW1lbnQxNnNob3J0Y3V0SWNvblVSTHNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTdzZXRGb2N1c2VkRWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVFRU5TXzE0
Rm9jdXNEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyMHN0eWxlUmVzb2x2ZXJDaGFu
Z2VkRU5TXzIzU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWdFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQy
MmNyZWF0ZURvY3VtZW50RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MjNkaWRBZGRX
aGVlbEV2ZW50SGFuZGxlckV2CkBAIC0xMDc1LDggKzEwNzIsMTEgQEAgX19aTjdXZWJDb3JlOEZv
cm1EYXRhNmRlY29kZUVSTjNXVEY3RGVjb2RlckUKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYK
IF9fWk43V2ViQ29yZThHcmFkaWVudDEyYWRkQ29sb3JTdG9wRWZSS05TXzVDb2xvckUKIF9fWk43
V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXworX19aTjdXZWJDb3JlOEdy
YWRpZW50RDFFdgogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlwZUUKK19fWk43V2ViQ29yZThTZXR0aW5nczEzZ1FUS2l0
RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTVzZXRRVEtpdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgpAQCAtMTEw
NCw3ICsxMTA0LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNp
emFibGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCi1fX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSS05TXzNVUkxF
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsRXYKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI3c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI3c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5RWIKQEAgLTExNDIs
NyArMTE0Miw2IEBAIF9fWk43V2ViQ29yZTlGb250Q2FjaGUyOXB1cmdlSW5hY3RpdmVGb250RGF0
YUlmTmVlZGVkRXYKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWUxMWFwcGVuZENoaWxkRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWU5Y2xlYXJOYW1lRXYK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MTFmb3JjZUxheW91dEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJzZXRNZWRp
YVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJ0aWxlZEJhY2tp
bmdFdgpAQCAtMTE2MiwxMiArMTE2MSwxMiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRU
cmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTd3aWxsRW5kTGl2ZVJlc2l6
ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MThlbmFibGVBdXRvU2l6ZU1vZGVFYlJLTlNfN0lu
dFNpemVFUzNfCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVDb250cm9sVGludHNFdgot
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTlzY3JvbGxFbGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRS
ZWN0RQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9kZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJlcGFpbnRzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNo
RGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFyZXN1bWVBbmltYXRp
bmdJbWFnZXNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xv
ckVSS05TXzVDb2xvckUKQEAgLTExNzcsMTMgKzExNzYsMTQgQEAgX19aTjdXZWJDb3JlOUZyYW1l
VmlldzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdJbnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvckVO
U18yMVNjcm9sbFBpbm5pbmdCZWhhdmlvckUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVz
dFBhZ2VIZWlnaHREZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjZhZGp1
c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZUV2Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRBdXRv
U2l6ZUZpeGVkTWluaW11bUhlaWdodEVpCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRWaXN1
YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzlmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFt
ZXNFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUk5TXzVGcmFtZUUKIF9fWk43V2Vi
Q29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTF0ZXh0
YXJlYVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMnNlbGVjdGVkQXR0ckUKQEAgLTEyNTMs
MTQgKzEyNTMsMTQgQEAgX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE2c3luY0xvY2FsU3RvcmFnZUV2
CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19aTjdXZWJDb3JlOVBhZ2VHcm91
cDE4bnVtYmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJT
Y3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRL
VVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIz
VXNlclNjcmlwdEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQor
X19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwYWRkVXNlclNjcmlwdFRvV29ybGRFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVO
UzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5T
XzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMHJl
bW92ZUFsbFVzZXJDb250ZW50RXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMXJlbW92ZUFsbFZp
c2l0ZWRMaW5rc0V2Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjRhZGRVc2VyU3R5bGVTaGVldFRv
V29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEtVUkxFUktO
UzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjVVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzRU5TXzE0VXNlclN0eWxlTGV2ZWxFTlNfMjJVc2VyU3R5bGVJbmpl
Y3Rpb25UaW1lRQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNlclNjcmlwdEZyb21X
b3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTlQYWdl
R3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktO
M1dURjZTdHJpbmdFUktOU18zVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25P
dmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHls
ZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2ViQ29yZTlQYWdlR3Jv
dXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNf
M1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzRWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJT
dHlsZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQorX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDI5cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGRFUE5TXzE1
RE9NV3JhcHBlcldvcmxkRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAzMGNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlc0V2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzByZW1v
dmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdX
ZWJDb3JlOVBhZ2VHcm91cDlwYWdlR3JvdXBFUktOM1dURjZTdHJpbmdFCkBAIC0xMjg2LDcgKzEy
ODYsNiBAQCBfX1pON1dlYkNvcmU5cGFnZUNhY2hlRXYKIF9fWk43V2ViQ29yZTlwbGFpblRleHRF
UEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckViCiBfX1pON1dlYkNvcmU5dG9F
bGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5dW5pb25SZWN0RVJLTjNXVEY2VmVj
dG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQotX19aTjdXZWJD
b3JlMTNTY3JpcHRHQ0V2ZW50MTFnZXRIZWFwU2l6ZUVSTlNfOEhlYXBJbmZvRQogX19aTkszSlND
OEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0
Y3JlYXRlQ0ZTdHJpbmdFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExaGFzUGFzc3dvcmRF
dgpAQCAtMTMxNSw4ICsxMzE0LDYgQEAgX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVu
dHNUb1Jvb3RWaWV3RVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4
dmlzaWJsZUNvbnRlbnRSZWN0RU5TXzE0U2Nyb2xsYWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVj
dEluY2x1ZGVzU2Nyb2xsYmFyc0UKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RWaWV3
VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmll
dzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzRoaWRlRXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzRzaG93RXYKIF9fWk5LN1dlYkNv
cmUxMFN0b3JhZ2VNYXA2bGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA3Z2V0SXRl
bUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA4Y29udGFpbnNFUktO
M1dURjZTdHJpbmdFCkBAIC0xMzczLDcgKzEzNzAsNiBAQCBfX1pOSzdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I0bm9kZUV2CiBfX1pOSzdXZWJDb3JlMTJUZXh0SXRlcmF0b3I1cmFuZ2VFdgogX19aTks3
V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE0Y2hpbGROb2RlQ291bnRFdgogX19aTks3V2ViQ29yZTEz
Q29udGFpbmVyTm9kZTljaGlsZE5vZGVFagotX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyN3Nl
dFNpemVFUktOU185RmxvYXRTaXplRQogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4YWNj
dW11bGF0ZWRPcGFjaXR5RXYKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGdldERlYnVn
Qm9yZGVySW5mb0VSTlNfNUNvbG9yRVJmCiBfX1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjZi
YWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZUV2CkBAIC0xNDA2LDcgKzE0MDIsNyBAQCBfX1pOSzdX
ZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxMHJlcXVlc3RVUkxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMWZy
YW1lTG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFyZXNwb25zZVVSTEV2
Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3VyY2VFUktOU180S1VSTEUK
K19fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFzdWJyZXNvdXJjZUVSS05TXzNVUkxFCiBf
X1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEybWFpblJlc291cmNlRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTN1cmxGb3JIaXN0b3J5RXYKIF9fWk5LN1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTR1bnJlYWNoYWJsZVVSTEV2CkBAIC0xNDE3LDcgKzE0MTMsNiBAQCBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cGFyc2VkQXJjaGl2ZURhdGFFdgogX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxOG1haW5SZXNvdXJjZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjE5aXNMb2FkaW5nSW5BUElTZW5zZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjE5b3JpZ2luYWxSZXF1ZXN0Q29weUV2Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVu
dExvYWRlcjIxYXJjaGl2ZVJlc291cmNlRm9yVVJMRVJLTlNfNEtVUkxFCiBfX1pOSzdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjI4dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZUV2CiBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXI5aXNMb2FkaW5nRXYKQEAgLTE0MzAsNiArMTQyNSw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJ
TlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9y
RG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0Vi
CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pOSzdXZWJDb3Jl
MTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxp
c3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFF
dgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0xNDQzLDcgKzE0Mzks
NyBAQCBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIxbW91c2VFbnRlcmVkU2Nyb2xsYmFy
RVBOU185U2Nyb2xsYmFyRQogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMm1vdXNlRXhp
dGVkQ29udGVudEFyZWFFdgogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyM21vdXNlRW50
ZXJlZENvbnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZU1v
dmVkSW5Db250ZW50QXJlYUV2Ci1fX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEwY2FuRGlz
cGxheUVSS05TXzRLVVJMRQorX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3Bs
YXlFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMXRvUmF3U3RyaW5n
RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTJpc29sYXRlZENvcHlFdgogX19aTks3
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNhbkFjY2Vzc1N0b3JhZ2VFUEtTMF9OUzBfMjVTaG91
bGRBbGxvd0Zyb21UaGlyZFBhcnR5RQpAQCAtMTUwMywxMCArMTQ5OSwxMSBAQCBfX1pOSzdXZWJD
b3JlMTdSZXNvdXJjZUVycm9yQmFzZThsYXp5SW5pdEV2CiBfX1pOSzdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQxMWNoYW5nZUNvdW50RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFj
a2luZzExY29udGVudHNCb3hFdgogX19aTks3V2ViQ29yZTE4UmVuZGVyTGF5ZXJCYWNraW5nMjBj
b21wb3NpdGluZ0xheWVyVHlwZUV2CitfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVy
MTFpc1N1c3BlbmRlZEV2CiBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjRudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKK19fWk5LN1dlYkNvcmUxOUFuaW1h
dGlvbkNvbnRyb2xsZXIzM2FsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZEV2CiBfX1pO
SzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJnZXRIaWdobGlnaHRFUE5TXzlIaWdobGln
aHRFCiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhp
Z2hsaWdodGVkTm9kZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3Ry
aW5nRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBLYwog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIwZmlyc3RQYXJ0eUZvckNvb2tpZXNF
dgpAQCAtMTUxNiw2ICsxNTEzLDcgQEAgX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U4aHR0cEJvZHlF
dgogX19aTks3V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTIwSFRNTFRhYmxlQ2VsbEVsZW1lbnQ5Y2VsbEFib3Zl
RXYKK19fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MjFpc1JlcGxhY2VtZW50T2Jz
Y3VyZWRFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmlzQXR0YWNobWVu
dEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTEybGFzdE1vZGlmaWVkRXYK
IF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzQ29kZUV2CkBA
IC0xNTMzLDcgKzE1MzEsNyBAQCBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXI5
YmFja0NvdW50RXYKIF9fWk5LN1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjEzY29va2ll
U3RvcmFnZUV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxMXNjcm9sbExh
eWVyRXYKIF9fWk5LN1dlYkNvcmUyMVJlbmRlckxheWVyQ29tcG9zaXRvcjE1cm9vdFJlbmRlckxh
eWVyRXYKLV9fWk5LN1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjdtYXRjaGVzRVJLTlNf
NEtVUkxFCitfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzNVUkxFCiBfX1pOSzdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTExbWF4aW11bVNp
emVFdgogX19aTks3V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UyMGF1dGhlbnRpY2F0
aW9uQ2xpZW50RXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lMTVmaXJz
dExheW91dERvbmVFdgpAQCAtMTU0NywzMyArMTU0NSwyOSBAQCBfX1pOSzdXZWJDb3JlMjdBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UxOHByb3Bvc2VkQ3JlZGVudGlhbEV2CiBfX1pOSzdXZWJD
b3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UyMHByZXZpb3VzRmFpbHVyZUNvdW50RXYK
IF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTVlcnJvckV2CiBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U2aXNOdWxsRXYKK19fWk5LN1dl
YkNvcmUzVVJMMTBwcm90b2NvbElzRVBLYworX19aTks3V2ViQ29yZTNVUkwxMWNyZWF0ZUNGVVJM
RXYKK19fWk5LN1dlYkNvcmUzVVJMMTFpc0xvY2FsRmlsZUV2CitfX1pOSzdXZWJDb3JlM1VSTDEy
YmFzZUFzU3RyaW5nRXYKK19fWk5LN1dlYkNvcmUzVVJMMTRmaWxlU3lzdGVtUGF0aEV2CitfX1pO
SzdXZWJDb3JlM1VSTDE3bGFzdFBhdGhDb21wb25lbnRFdgorX19aTks3V2ViQ29yZTNVUkwxOGZy
YWdtZW50SWRlbnRpZmllckV2CitfX1pOSzdXZWJDb3JlM1VSTDIxaGFzRnJhZ21lbnRJZGVudGlm
aWVyRXYKK19fWk5LN1dlYkNvcmUzVVJMNGhvc3RFdgorX19aTks3V2ViQ29yZTNVUkw0cGFzc0V2
CitfX1pOSzdXZWJDb3JlM1VSTDRwYXRoRXYKK19fWk5LN1dlYkNvcmUzVVJMNHBvcnRFdgorX19a
Tks3V2ViQ29yZTNVUkw0dXNlckV2CitfX1pOSzdXZWJDb3JlM1VSTDVxdWVyeUV2CitfX1pOSzdX
ZWJDb3JlM1VSTDhwcm90b2NvbEV2CitfX1pOSzdXZWJDb3JlM1VSTGN2UDVOU1VSTEV2CiBfX1pO
SzdXZWJDb3JlNEZvbnQ1d2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0
U2ltcGxlRm9udERhdGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVF
UE5TXzEzR2x5cGhPdmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVH
cmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaU5TMF8yNEN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbkUKIF9fWk5LN1dlYkNvcmU0Rm9udGVxRVJLUzBfCi1fX1pO
SzdXZWJDb3JlNEtVUkwxMHByb3RvY29sSXNFUEtjCi1fX1pOSzdXZWJDb3JlNEtVUkwxMWNyZWF0
ZUNGVVJMRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDExaXNMb2NhbEZpbGVFdgotX19aTks3V2ViQ29y
ZTRLVVJMMTJiYXNlQXNTdHJpbmdFdgotX19aTks3V2ViQ29yZTRLVVJMMTRmaWxlU3lzdGVtUGF0
aEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDE4ZnJhZ21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDIxaGFzRnJh
Z21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRob3N0RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDRwYXNzRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRwYXRoRXYKLV9fWk5LN1dlYkNvcmU0
S1VSTDRwb3J0RXYKLV9fWk5LN1dlYkNvcmU0S1VSTDR1c2VyRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDVxdWVyeUV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw4cHJvdG9jb2xFdgotX19aTks3V2ViQ29yZTRL
VVJMY3ZQNU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTks3
V2ViQ29yZTROb2RlMTNvd25lckRvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNj
ZW5kYW50T2ZFUEtTMF8KLV9fWk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJO
M1dURjExTGlzdEhhc2hTZXRJTlNfNEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdX
ZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdgotI2lmIEVOQUJMRShT
VFlMRV9TQ09QRUQpCi1fX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgotI2VuZGlmCiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5L
N1dlYkNvcmU0Tm9kZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgpA
QCAtMTcyOCw5ICsxNzIyLDEyIEBAIF9oYXNDYXNlSW5zZW5zaXRpdmVTdWJzdHJpbmcKIF9oYXND
YXNlSW5zZW5zaXRpdmVTdWZmaXgKIF9zdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJp
bmcKIF9zdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZQorX3drQ0FMYXllckVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bldpdGhCbG9jaworX3drQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZwogX3drQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMKIF93a0NHQ29udGV4dElzUERGQ29u
dGV4dAogX3drQ0dDb250ZXh0UmVzZXRDbGlwCitfd2tDR1BhdGhBZGRSb3VuZGVkUmVjdAogX3dr
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtCiBfd2tDVFJ1bkdldEluaXRpYWxB
ZHZhbmNlCiBfd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lCkBAIC0xNzQxLDYgKzE3
MzgsNyBAQCBfd2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4KIF93a0NvcHlOU1VS
TFJlc3BvbnNlU3RhdHVzTGluZQogX3drQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24KIF93
a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIKK193a0NyZWF0ZUNUVHlwZXNldHRlcldp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zCiBfd2tDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0K
IF93a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbgogX3drRGVsZXRlQWxsSFRUUENvb2tpZXMK
QEAgLTE4NjUsOSArMTg2Myw4IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyN21vdXNlVXBF
UDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjhrZXlFdmVudEVQN05TRXZlbnQK
IF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyOW1vdXNlRG93bkVQN05TRXZlbnQKIF9fWk43V2Vi
Q29yZTEzdG9EZXZpY2VTcGFjZUVSS05TXzlGbG9hdFJlY3RFUDhOU1dpbmRvdwotX19aTjdXZWJD
b3JlMTNnZXRSYXdDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VS
TEVTNV9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VF
RQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxNWRyYXdOYXRpdmVJbWFnZUVQN0NHSW1hZ2VSS05TXzlGbG9h
dFNpemVFTlNfMTBDb2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVTOV9OU18xN0NvbXBvc2l0ZU9w
ZXJhdG9yRU5TXzlCbGVuZE1vZGVFTlNfMTZJbWFnZU9yaWVudGF0aW9uRQorX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJl
cXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keUVSS1MwXwogX19a
TjdXZWJDb3JlMTZGb250UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50
YXRpb25FTlNfMTZGb250V2lkdGhWYXJpYW50RQogX19aTjdXZWJDb3JlMTZGb250UGxhdGZvcm1E
YXRhQzJFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250V2lkdGhWYXJp
YW50RQpAQCAtMTg3Niw4ICsxODczLDggQEAgX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJbnRSZWN0
RVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1NhZmFyaUV2CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdO
U0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZlbnQKLV9fWk43V2ViQ29yZTIwYnVpbHRJblBE
RlBsdWdpbk5hbWVFdgogX19aTjdXZWJDb3JlMjBhcHBsaWNhdGlvbklzSFJCbG9ja0V2CitfX1pO
N1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVnaW5OYW1lRXYKIF9fWk43V2ViQ29yZTIxRGV2aWNlT3Jp
ZW50YXRpb25EYXRhNmNyZWF0ZUViZGJkYmRiYgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklz
QXBlcnR1cmVFdgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzVmVyc2lvbnNFdgpAQCAtMTky
NCw4ICsxOTIxLDggQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFr
aW5nRXYKIF9fWk43V2ViQ29yZTMyYXBwbGljYXRpb25Jc0FPTEluc3RhbnRNZXNzZW5nZXJFdgog
X19aTjdXZWJDb3JlMzJjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudEV2CiBfX1pON1dl
YkNvcmUzMmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlRXYKLV9fWk43V2ViQ29yZTMz
cG9zdFNjcmlwdERvY3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzY29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50RXYKK19fWk43V2ViQ29yZTMzcG9zdFNjcmlwdERv
Y3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVsdFRocmVhZFZp
b2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjBUaHJlYWRW
aW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM0Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERp
cmVjdGlvbkV2CiBfX1pON1dlYkNvcmUzNWNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsRWIKQEAgLTE5NTEsOCArMTk0OCw4IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyOHN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxhdGZvcm1X
aWRnZXRFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTZXaWRnZXRDMkVQNk5TVmlldwogX19aTjdXZWJD
b3JlN25zQ29sb3JFUktOU181Q29sb3JFCi1fX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQ
b2ludAogX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks3Q0dQb2ludAorX19aTjdXZWJDb3JlOElu
dFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzdfTlNSZWN0
CiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y4X05TUG9pbnRFdgogX19aTks3V2ViQ29yZTE0
U2Nyb2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMzZWaXNpYmxlQ29udGVudFJl
Y3RJbmNsdWRlc1Njcm9sbGJhcnNFCkBAIC0xOTYyLDEwICsxOTU5LDEyIEBAIF9fWk5LN1dlYkNv
cmU3SW50U2l6ZWN2NkNHU2l6ZUV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y4X05TUG9pbnRF
dgogX19aTks3V2ViQ29yZTlGbG9hdFJlY3RjdjdfTlNSZWN0RXYKIF9zdHJpbmdFbmNvZGluZ0Zv
clJlc291cmNlCitfd2tBVkFzc2V0UmVzb2x2ZWRVUkwKIF93a0FjY2Vzc2liaWxpdHlIYW5kbGVG
b2N1c0NoYW5nZWQKIF93a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24KIF93a0Nv
cHlBWFRleHRNYXJrZXJSYW5nZUVuZAogX3drQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQKK193
a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZQogX3drQ3JlYXRlQVhUZXh0TWFy
a2VyCiBfd2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZQogX3drQ3JlYXRlQVhVSUVsZW1lbnRSZWYK
QEAgLTE5NzMsNiArMTk3Miw4IEBAIF93a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldwogX3dr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wKIF93a0NyZWF0ZVVSTE5QYXN0ZWJvYXJkRmxhdm9yVHlwZU5h
bWUKIF93a0NyZWF0ZVVSTFBhc3RlYm9hcmRGbGF2b3JUeXBlTmFtZQorX3drQ3JlYXRlVk1QcmVz
c3VyZURpc3BhdGNoT25NYWluUXVldWUKK193a0N1cnNvcgogX3drRHJhd0JlemVsZWRUZXh0QXJl
YQogX3drRHJhd0JlemVsZWRUZXh0RmllbGRDZWxsCiBfd2tEcmF3Q2Fwc0xvY2tJbmRpY2F0b3IK
QEAgLTE5ODAsNiArMTk4MSw3IEBAIF93a0RyYXdGb2N1c1JpbmcKIF93a0RyYXdNZWRpYVNsaWRl
clRyYWNrCiBfd2tEcmF3TWVkaWFVSVBhcnQKIF93a0RyYXdUZXh0RmllbGRDZWxsRm9jdXNSaW5n
Citfd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkCiBfd2tHZXRBWFRl
eHRNYXJrZXJSYW5nZVR5cGVJRAogX3drR2V0QVhUZXh0TWFya2VyVHlwZUlECiBfd2tHZXRCeXRl
c0Zyb21BWFRleHRNYXJrZXIKQEAgLTIwMTMsNyArMjAxNSw5IEBAIF93a1FUTW92aWVSZXNvbHZl
ZFVSTAogX3drUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMKIF93a1FUTW92aWVTZXRT
aG93Q2xvc2VkQ2FwdGlvbnMKIF93a1FUTW92aWVWaWV3U2V0RHJhd1N5bmNocm9ub3VzbHkKK193
a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZQogX3drU2V0Q0dGb250UmVuZGVyaW5nTW9kZQorX3dr
U2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24KIF93a1NldERyYWdJ
bWFnZQogX3drU2V0TWV0YWRhdGFVUkwKIF93a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZwpAQCAtMjExMCwxMCArMjExNCw4IEBAIF9fWk43V2ViQ29yZTExSW1hZ2VTb3VyY2UyNnNf
YWNjZWxlcmF0ZWRJbWFnZURlY29kaW5nRQogX19aTjdXZWJDb3JlMTFJbWFnZVNvdXJjZTMzbWF4
aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5nRXYKIF9fWk43V2ViQ29yZTExSW1hZ2VTb3Vy
Y2UzNnNldE1heGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0VqCiBfX1pON1dlYkNvcmUx
MU1hdGhNTE5hbWVzNGluaXRFdgotX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE1YWRkSW1hZ2VU
b0NhY2hlRVA3Q0dJbWFnZVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMThw
cnVuZURlYWRSZXNvdXJjZXNFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE4cHJ1bmVMaXZl
UmVzb3VyY2VzRWIKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNh
Y2hlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMWlzRW5kT2ZMaW5lRVJLTlNfMTVWaXNpYmxl
UG9zaXRpb25FCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwbW91c2VNb3ZlZEVQOFdlYkV2
ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwd2hlZWxFdmVudEVQOFdlYkV2ZW50CkBA
IC0yMjAwLDcgKzIyMDIsNiBAQCBfX1pON1dlYkNvcmUyOGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNl
V2hpdGVFZmYKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckMx
RVBLdGkKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckQxRXYK
IF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc0RhaWppc2VuRGljdGlvbmFyeUV2Ci1fX1pON1dl
YkNvcmUzMmVuYWJsZUtVUkxTY2hlbWVDYW5vbmljYWxpemF0aW9uRWIKIF9fWk43V2ViQ29yZTMz
YXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBob25lRXYKIF9fWk43V2ViQ29yZTQxaW5pdGlh
bGl6ZUhUVFBDb25uZWN0aW9uU2V0dGluZ3NPblN0YXJ0dXBFdgogX19aTjdXZWJDb3JlNEZvbnRD
MUVSS05TXzE2Rm9udFBsYXRmb3JtRGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU18xMkZvbnRTZWxl
Y3RvckVFRQpAQCAtMjIxNCw3ICsyMjE1LDYgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjBkb2N1bWVu
dFNjYWxlQ2hhbmdlZEV2CiBfX1pON1dlYkNvcmU1RnJhbWUyMHNldFZpZXdwb3J0QXJndW1lbnRz
RVJLTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0UKIF9fWk43V2ViQ29yZTVGcmFtZTIxZGVlcGVzdE5v
ZGVBdExvY2F0aW9uRVA3Q0dQb2ludAogX19aTjdXZWJDb3JlNUZyYW1lMjF2aWV3cG9ydE9mZnNl
dENoYW5nZWRFdgotX19aTjdXZWJDb3JlNUZyYW1lMjZpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVu
dEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlNUZyYW1lMjdub2RlUmVz
cG9uZGluZ1RvQ2xpY2tFdmVudHNFUDdDR1BvaW50CiBfX1pON1dlYkNvcmU1RnJhbWUzMHNldFNp
bmdsZUxpbmVTZWxlY3Rpb25CZWhhdmlvckViCiBfX1pON1dlYkNvcmU1RnJhbWUzMmRpc3BhdGNo
UGFnZUhpZGVFdmVudEJlZm9yZVBhdXNlRXYKQEAgLTIyNTEsOSArMjI1MSw2IEBAIF9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcyNHJlbmRlcmVkQ2hhcmFjdGVyc0V4Y2VlZEVqCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXRFUDdXQUtWaWV3CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzJzZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM1c2V0VXNlQ3VzdG9tRml4ZWRQb3Np
dGlvbkxheW91dFJlY3RFYgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3cmVtb3ZlVmlzaXRlZExp
bmtFUktOU180S1VSTEUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dv
cmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMz
XzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIzVXNlclNjcmlw
dEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQotX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJX
b3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18x
NUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18x
NFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKIF9fWk43V2ViQ29y
ZTlUaWxlQ2FjaGUxNGRyYWluTGF5ZXJQb29sRXYKIF9fWk43V2ViQ29yZTlUaWxlQ2FjaGUyMHNl
dExheWVyUG9vbENhcGFjaXR5RWoKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjdDR1BvaW50
RXYKQEAgLTIzMTUsNTIgKzIzMTIsMzEgQEAgX19aTks3V2ViQ29yZTdFbGVtZW50MjZmYXN0QXR0
cmlidXRlTG9va3VwQWxsb3dlZEVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZTIw
TG9nTm90WWV0SW1wbGVtZW50ZWRFCiBfX1pON1dlYkNvcmUyOG5vdEltcGxlbWVudGVkTG9nZ2lu
Z0NoYW5uZWxFdgogX19aTjdXZWJDb3JlMzZpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNl
c3NhcnlFdgotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKKyNlbmRpZgogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogX19aTjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXJDMUVQS2Np
CiBfX1pON1dlYkNvcmUyN05vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlckQxRXYKLSNlbmRpZiAv
LyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYKIAogI2lmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKSAmJiAhUExBVEZPUk0oSU9TKQogX19aTjdXZWJD
b3JlN0ludFNpemVDMUVSSzdfTlNTaXplCiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXpl
RXYKICNlbmRpZgogCi1fd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2Nr
Ci1fd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nCi1fd2tDR1BhdGhBZGRSb3VuZGVk
UmVjdAotX3drQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMK
LQogI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0
ZQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlCiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCi1fd2tBVkFzc2V0UmVzb2x2ZWRVUkwKLV93a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlk
ZXJEaXNwbGF5TmFtZQotX3drU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3Jt
YXRpb24KLV93a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCi1fd2tDdXJzb3IK
LV93a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQKLV93a1JlY29tbWVu
ZGVkU2Nyb2xsZXJTdHlsZQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NyZWF0ZU1lbW9yeVN0YXR1c1By
ZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlCi0jZW5kaWYKLQotI2lmIFVTRShDT05U
RU5UX0ZJTFRFUklORykKLV93a0ZpbHRlckFkZERhdGEKLV93a0ZpbHRlckNyZWF0ZUluc3RhbmNl
Ci1fd2tGaWx0ZXJEYXRhQ29tcGxldGUKLV93a0ZpbHRlcklzQnVmZmVyaW5nCi1fd2tGaWx0ZXJJ
c01hbmFnZWRTZXNzaW9uCi1fd2tGaWx0ZXJXYXNCbG9ja2VkCi0jZW5kaWYKLQogI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorX19a
TjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2
ZXM4X05TUmFuZ2UKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVh
ZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRhaW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQor
X19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2
ZXNFUDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdF
CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE4cmVtb3ZlQWx0ZXJu
YXRpdmVzRXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMjJhbHRl
cm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5h
dGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUVMbTBFTlMyXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfd2tDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cwogX3drRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JC
ZWZvcmVMaW9uCiBfd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YQpAQCAtMjM2OCwyOCAr
MjM0NCwxOCBAQCBfd2tOU0VsYXN0aWNEZWx0YUZvclRpbWVEZWx0YQogX3drTlNSZWJvdW5kRGVs
dGFGb3JFbGFzdGljRGVsdGEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NURm9udFRyYW5zZm9ybUdseXBo
cworI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAorX3drQ3JlYXRlTWVtb3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3BhdGNoT25N
YWluUXVldWUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKLV9fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVhZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRh
aW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQotX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIyMmFsdGVybmF0aXZlc0ZvckNvbnRleHRFeQotX19aTjdXZWJDb3JlMjdB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI1Y2xlYXJFdgotX19aTjdXZWJDb3JlMjdBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5Ci1fX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE2c2hvd0FsdGVybmF0aXZlc0VQNk5TVmlld1JL
TlNfOUZsb2F0UmVjdEV5VTEzYmxvY2tfcG9pbnRlckZ2UDhOU1N0cmluZ0UKLV9fWk43V2ViQ29y
ZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1Jh
bmdlCi1fX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5T
QXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VFRQorI2lmIFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCitfd2tDVEZvbnRUcmFuc2Zvcm1H
bHlwaHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RS
ZW5kZXJpbmcKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotX19aTjdXZWJDb3Jl
MTZGaWx0ZXJPcGVyYXRpb25zYVNFUktTMF8KLSNlbmRpZgotCiAjaWYgVVNFKEFQUEtJVCkKIF9f
Wk43V2ViQ29yZTZFZGl0b3IxM2xvd2VyY2FzZVdvcmRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjEz
dXBwZXJjYXNlV29yZEV2CkBAIC0yNDAxLDkgKzIzNjcsMjIgQEAgX19aTjdXZWJDb3JlOFNldHRp
bmdzMjBnQVZGb3VuZGF0aW9uRW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0QVZG
b3VuZGF0aW9uRW5hYmxlZEViCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLV9fWk43V2Vi
Q29yZThTZXR0aW5nczEzZ1FUS2l0RW5hYmxlZEUKLV9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0
UVRLaXRFbmFibGVkRWIKKyNpZiBFTkFCTEUoQkxPQikKK19fWk43V2ViQ29yZTEyYmxvYlJlZ2lz
dHJ5RXYKK19fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2
CitfX1pON1dlYkNvcmU3UmF3RGF0YUMxRXYKK19fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5k
RGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU183UmF3RGF0YUVFRXh4CitfX1pON1dlYkNvcmU4Qmxv
YkRhdGExMGFwcGVuZEZpbGVFUktOM1dURjZTdHJpbmdFeHhkCitfX1pON1dlYkNvcmU4QmxvYkRh
dGE2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTEyQmxvYkRhdGFJdGVtMTF0b0VuZE9mRmlsZUUKK19f
Wk43V2ViQ29yZTEyQmxvYlJlZ2lzdHJ5RDJFdgorX19aVFZON1dlYkNvcmUxMkJsb2JSZWdpc3Ry
eUUKK19fWlRWTjdXZWJDb3JlMTZCbG9iUmVnaXN0cnlJbXBsRQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxM3Bh
cnRpdGlvbk5hbWVFUktOM1dURjZTdHJpbmdFCitfd2tDYWNoZVBhcnRpdGlvbktleQogI2VuZGlm
CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMjQyMSwxOCArMjQwMCwxMyBAQCBfd2tTZXRDRlVS
TFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQkxPQikKLV9fWk43V2ViQ29yZTEyYmxvYlJlZ2lzdHJ5RXYK
LV9fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2Ci1fX1pO
N1dlYkNvcmU3UmF3RGF0YUMxRXYKLV9fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kQmxvYkVS
S05TXzRLVVJMRXh4Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRG
aWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAotX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNyZWF0ZUV2Ci1f
X1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCi1fX1pON1dlYkNvcmUxMkJs
b2JSZWdpc3RyeUQyRXYKLV9fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCi1fX1pUVk43V2Vi
Q29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCitfd2tG
aWx0ZXJBZGREYXRhCitfd2tGaWx0ZXJDcmVhdGVJbnN0YW5jZQorX3drRmlsdGVyRGF0YUNvbXBs
ZXRlCitfd2tGaWx0ZXJJc0J1ZmZlcmluZworX3drRmlsdGVySXNNYW5hZ2VkU2Vzc2lvbgorX3dr
RmlsdGVyV2FzQmxvY2tlZAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAg
LTI0NTQsMTMgKzI0MjgsMTcgQEAgX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNXRpdGxl
RXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTZhY3Rpb25FdgogX19aTks3V2ViQ29y
ZTE1Q29udGV4dE1lbnVJdGVtN2NoZWNrZWRFdgogX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJ
dGVtN2VuYWJsZWRFdgotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitfX1pON1dlYkNvcmUxNkZpbHRlck9wZXJhdGlvbnNh
U0VSS1MwXworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTM19DT05ESVRJT05BTF9SVUxFUykKIC5v
YmpjX2NsYXNzX25hbWVfRE9NQ1NTU3VwcG9ydHNSdWxlCiBfX1pON1dlYkNvcmUxMkRPTVdpbmRv
d0NTUzZjcmVhdGVFdgogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfMTJET01XaW5kb3dDU1NFCi0jZW5kaWYgLy8gRU5BQkxFKENT
UzNfQ09ORElUSU9OQUxfUlVMRVMpCisjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZhbm5vdGF0ZWRSZWdpb25zRXYKQEAgLTI0NzksNiArMjQ1NywxMCBAQCBfX1pON1dlYkNvcmU4
RHJhZ0RhdGFDMUVQMTFvYmpjX29iamVjdFJLTlNfOEludFBvaW50RVM1X05TXzEzRHJhZ09wZXJh
dGlvbkVOU18yMAogX19aTjdXZWJDb3JlOERyYWdEYXRhQzFFUktOM1dURjZTdHJpbmdFUktOU184
SW50UG9pbnRFUzdfTlNfMTNEcmFnT3BlcmF0aW9uRU5TXzIwRHJhZ0FwcGxpY2F0aW9uRmxhZ3NF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitfX1pON1dlYkNvcmUz
Q0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZh
dGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMxXzZTdHJpbmdFRVBGYlNBX1NBX0UKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJ3ZWJr
aXRDYW5jZWxGdWxsU2NyZWVuRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKQEAgLTI1MjgsNyArMjUxMCw3IEBA
IF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlQzFFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFi
YXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRT
dG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxl
ZEV2Ci0jZW5kaWYgLy8gRU5BQkxFKElDT05EQVRBQkFTRSkKKyNlbmRpZgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiBfX1pON1dlYkNvcmU1Q29sb3JDMUVQN0NHQ29sb3IKQEAgLTI1
OTYsNiArMjU3OCwxOSBAQCBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEyY29udGFpbnNRdWFkRVJL
UzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29udGFpbnNQb2ludEVSS05TXzEwRmxvYXRQ
b2ludEUKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCitfX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDE5cmVzZXRUZXh0QXV0b3NpemluZ0V2CitfX1pON1dlYkNvcmU1
RnJhbWUyMnNldFRleHRBdXRvc2l6aW5nV2lkdGhFZgorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorX19aTjdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjJ1c2VyTWVkaWFBY2Nl
c3NHcmFudGVkRXYKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIxdXNlck1lZGlhQWNj
ZXNzRGVuaWVkRXYKK19fWk43V2ViQ29yZTE4cHJvdmlkZVVzZXJNZWRpYVRvRVBOU180UGFnZUVQ
TlNfMTVVc2VyTWVkaWFDbGllbnRFCitfX1pOSzdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MTRz
ZWN1cml0eU9yaWdpbkV2CitfX1pON1dlYkNvcmUyMU1vY2tNZWRpYVN0cmVhbUNlbnRlcjI5cmVn
aXN0ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKIF9fTlBOX0NvbnN0cnVjdAogX19OUE5fQ3JlYXRlT2JqZWN0CkBAIC0y
Njg5LDYgKzI2ODQsMTIgQEAgX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlMjBhdXRoZW50
aWNhdGlvblNjaGVtZUV2CiBfX1pON1dlYkNvcmU4Y3JlYXRlQ0ZFUktOU18xNVByb3RlY3Rpb25T
cGFjZUUKICNlbmRpZgogCisjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKK19fWk43V2Vi
Q29yZTE0aXNQdWJsaWNTdWZmaXhFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUyOHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5FUktOM1dURjZTdHJpbmdFCitfd2tJc1B1YmxpY1N1ZmZp
eAorI2VuZGlmCisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIF9fWk43V2ViQ29yZTI3cWxQcmV2aWV3
Q29udmVydGVyVVRJRm9yVVJMRVA1TlNVUkwKIF9fWk43V2ViQ29yZTMwcmVtb3ZlUUxQcmV2aWV3
Q29udmVydGVyRm9yVVJMRVA1TlNVUkwKQEAgLTI3MDAsMTggKzI3MDEsMzEgQEAgX19aTjdXZWJD
b3JlMzNRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRXYW50c0xheWVy
Rm9yVG9wT3ZlckhhbmdBcmVhRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzRzZXRXYW50c0xh
eWVyRm9yQm90dG9tT3ZlckhhbmdBcmVhRWIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorX19aTjdXZWJDb3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhl
c2l6ZXJFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVF
CitfX1pON1dlYkNvcmUyNERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lz
RVBOU185RE9NV2luZG93RQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
QzJFUE5TXzMxUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudEUKK19fWlRWTjdXZWJDb3Jl
MjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyRDJFdgorX19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9iYgorI2VuZGlmCisKICNpZiBFTkFCTEUo
U1ZHKQogX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQotX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4
dEF1dG9zaXppbmdFdgotX19aTjdXZWJDb3JlNUZyYW1lMjJzZXRUZXh0QXV0b3NpemluZ1dpZHRo
RWYKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRIUkVBREVE
X1NDUk9MTElORykKQEAgLTI3NjIsNDkgKzI3NzYsMTIgQEAgX19aTks3V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDZwYXVzZWRFdgogCiAjaWYgRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCiBf
X1pON1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3TW9kZUUKLSNlbmRpZiAvLyBF
TkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29ya2VyVGhyZWFkQ291bnRFdgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotX19aTjdXZWJDb3JlM0NETTE4cmVn
aXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJm
YWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJl
bmNlc0V2CiAjZW5kaWYKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotX19aTjdXZWJD
b3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhlc2l6ZXJFTjNXVEYxMFBhc3NP
d25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVFCi1fX1pON1dlYkNvcmUyNERP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lzRVBOU185RE9NV2luZG93RQot
X19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQzJFUE5TXzMxUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudEUKLV9fWlRWTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRQotX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgot
X19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0VTNF9TNF9iYgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi1f
X1pOSzdXZWJDb3JlOUZyYW1lVmlldzMxc2V0V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJlYUVi
Ci1fX1pOSzdXZWJDb3JlOUZyYW1lVmlldzM0c2V0V2FudHNMYXllckZvckJvdHRvbU92ZXJIYW5n
QXJlYUViCi0jZW5kaWYKLQotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1fX1pON1dl
YkNvcmUxNGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjh0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQotX3drSXNQdWJsaWNTdWZm
aXgKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLV9fWk43V2ViQ29y
ZTE1UmVzb3VyY2VSZXF1ZXN0MTNwYXJ0aXRpb25OYW1lRVJLTjNXVEY2U3RyaW5nRQotX3drQ2Fj
aGVQYXJ0aXRpb25LZXkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLV9fWk43
V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIydXNlck1lZGlhQWNjZXNzR3JhbnRlZEV2Ci1fX1pO
N1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2Ci1fX1pO
N1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1lZGlhQ2xp
ZW50RQotX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmlnaW5Fdgot
X19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyRXYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggZTNkZmViOS4uZDU4Njk5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDIwLDcgKzc0MjAsNyBA
QAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
SGlzdG9ncmFtU3VwcG9ydC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLaWxsUmluZ05vbmUuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cS1VSTC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxV
UkwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2Uu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiIC8+
CkBAIC03NjA0LDcgKzc2MDQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0YuY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFVSTENGLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1ZmZlckNGLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxDZXJ0aWZpY2F0ZUNGV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1h
cEltYWdlLmNwcCIgLz4KQEAgLTE5MDE1LDggKzE5MDE1LDggQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhvc3RXaW5kb3cuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxLVVJMLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLVVJMSGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVUkxIYXNoLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGF5b3V0VW5pdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggMWYwY2Q5NC4uZmEwMDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTEyNSw3ICsxMTI1LDcg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nTm9uZS5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5jcHAiPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxMYW5ndWFnZS5jcHAiPgpAQCAtNTEwOSw3ICs1MTA5LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEZpbGVTeXN0ZW1DRi5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCI+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxVUkxDRi5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cY2Zcd2luXENlcnRpZmljYXRlQ0ZXaW4uY3BwIj4KQEAgLTgxMTUsMTAg
KzgxMTUsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5n
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIj4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXEtVUkxIYXNoLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMSGFzaC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExhbmd1YWdlLmgiPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDBjNGZiNTQuLjBkMGFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1Miw3ICs2NTIsNyBAQAogCQkxQTkyN0ZEMjE0
MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOTI3RkQzMTQx
NkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTky
N0ZENDE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGRDExNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkx
QTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAv
KiBLVVJMQ0ZOZXQuY3BwICovOyB9OworCQkxQTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogVVJM
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5
ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLzsgfTsKIAkJMUFBMjEyNTAxNjNG
MERBODAwMDBFNjNGIC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9t
aWNTdHJpbmdDRi5jcHAgKi87IH07CiAJCTFBQTcxNjBBMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxl
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJvbGxlci5tbSAqLzsgfTsK
IAkJMUFBNzE2MEIxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwOTE0OUJDNERCMDAx
NkVDMTkgLyogVGlsZUNvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTE4OTAsOSArMTg5MCw5IEBACiAJ
CTY1N0VEQTA4MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3RURBMDYxMzg1
Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCTY1N0VE
QTBCMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdFREEwQTEzODVDQkQ4
MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tICovOyB9OwogCQk2NTg0MzY4
NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5QUU0MzQ2
MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAv
KiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjNBMDlBRTQzNUMwMDJDNTMxRiAvKiBL
VVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gKi87IH07CisJCTY1OTM5MjM3
MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi87
IH07CisJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8q
IFVSTE1hYy5tbSAqLzsgfTsKIAkJNjU5NkYyQjMwQjg3MzFERjAwMTMyNkJEIC8qIERPTUhUTUxJ
bnB1dEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNjQwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TUhUTUxJbnB1dEVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTk2RjJDMTBCODczMjVDMDAx
MzI2QkQgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE3RjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggKi87IH07
CiAJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5QTdEMTIwQjZEQjREOTAw
MTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNDAsNyArNTA0MCw3IEBACiAJCUJDQkI4QUI5MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
QjhBQkExM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjYxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1Ry
ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4
QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcw
RjIgLyogS1VSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDQkQyMUFCMEU0MTdBRDQw
MEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZCNTNDMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RP
TVdpbmRvd1NoZWxsLmNwcCAqLzsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpT
RE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMDY1N0Qw
RjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVu
dFJlY3QuY3BwICovOyB9OwpAQCAtNzExNCw3ICs3MTE0LDcgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1
QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
YXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNB
ODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBy
dW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIw
MDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
dHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAw
NUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gS1VSTENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5ODk1
NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9taWNTdHJpbmdDRi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9taWNTdHJpbmdDRi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRpbGVDb250
cm9sbGVyLm1tOyBwYXRoID0gY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUE3MTYwOTE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGlsZUNvbnRyb2xsZXIuaDsg
cGF0aCA9IGNhL21hYy9UaWxlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODQ4Nyw5ICs4NDg3LDkgQEAKIAkJNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1l
bW9yeVByZXNzdXJlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3
RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAw
RTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS1VSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkz
OTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gS1VSTE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUu
bGFuZy5vYmpjcHA7IH07CisJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBVUkxNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMg
LyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgwMDlF
MTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExOTM2LDcgKzExOTM2LDcgQEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRElu
dGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93U2hl
bGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAx
OUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTVdpbmRvd1NoZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM5NTUsNyArMTM5NTUsNyBAQAogCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0
ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZp
bGVTeXN0ZW1DRi5jcHAgKi8sCi0JCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxD
Rk5ldC5jcHAgKi8sCisJCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAq
LywKIAkJCQkyOUEzMDlBQjE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJ
CQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAogCQkJ
KTsKQEAgLTE1MTQ2LDcgKzE1MTQ2LDcgQEAKIAkJCQlDNTM5MkQzNDEzMjZBRDAxMDAwNDNEMzUg
LyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyog
S2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxS
aW5nTWFjLm1tICovLAotCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1t
ICovLAorCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8sCiAJCQkJ
OTM1MjA4NDQwOUJENDNCOTAwRjIwMzhEIC8qIExhbmd1YWdlLm1tICovLAogCQkJCTA2RTgxRUQ2
MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLywKIAkJ
CQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lm1tICovLApAQCAtMTk4NTYsOSArMTk4NTYsOSBAQAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgz
NTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8q
IEtpbGxSaW5nLmggKi8sCiAJCQkJNDMwNkU0RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5n
Tm9uZS5jcHAgKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICov
LAotCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCi0JCQkJQkNCRDIx
QUEwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggKi8sCisJCQkJNjU5MzkyMzUwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8sCisJCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8q
IFVSTC5oICovLAorCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8s
CiAJCQkJRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLywKIAkJCQk4
NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLywKIAkJCQkxNDFEQzA0NzE2
NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICovLApAQCAtMjM0MDcsOCArMjM0MDcsOCBA
QAogCQkJCTMxNkZFMTFBMEU2RTFEQTcwMEJGNjA4OCAvKiBLZXlmcmFtZUFuaW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUJBMTEwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIxRDQ2RjgxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxS
aW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxI
YXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJM
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVs
YWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTZGQTI3MTFBRDRBODMwMDIwQjQy
MCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcxQTJD
NjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Njk2LDkgKzI2Njk2
LDkgQEAKIAkJCQlCQzVFQkExMDBFODIzRTQ3MDBCMjU5NjUgLyogS2V5ZnJhbWVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyMUQ0NkY2MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxs
UmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFG
IC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVG
IC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NTkzOTIzQTA5QUU0MzVDMDAy
QzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjM3MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5ODk1NkIwQUE3OEY4MDAw
NUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjNBMDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NTBDRUJGMDE1MDczQkJF
MDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2
RkEyNjExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5jcHAKaW5kZXggMWNiMWM2OS4uNzkxYmYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCkBAIC04NywxMCArODcsMTAgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXJlYUVsZW1l
bnQuZ2V0KCk7CiB9CiAKLUtVUkwgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6dXJsKCkgY29u
c3QKK1VSTCBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjp1cmwoKSBjb25zdAogewogICAgIGlm
ICghbV9hcmVhRWxlbWVudC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAg
cmV0dXJuIFVSTCgpOwogICAgIAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50LT5ocmVmKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5oCmluZGV4IDdhM2VjMDguLjJmMWZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5o
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwg
dXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0gCiAgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDUyN2RkNGEuLmJi
YTE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC02NDIsNyArNjQyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsg
fQogICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4
dFJhbmdlKCkubGVuZ3RoOyB9CiAgICAgCi0gICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0IHsg
cmV0dXJuIEtVUkwoKTsgfQorICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVS
TCgpOyB9CiAgICAgdmlydHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVk
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IHsgcmV0dXJuIG51bGxBdG9tOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCBhNGVjMGEwLi4yZTQxODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTg5NiwxMyArODk2LDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4g
MDsKICAgICBIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0gdG9IVE1MQW5jaG9yRWxlbWVudChl
bGVtZW50KTsKICAgICAKLSAgICBLVVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKKyAgICBV
UkwgbGlua1VSTCA9IGFuY2hvci0+aHJlZigpOwogICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZp
ZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudElkZW50
aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBjaGVjayBp
ZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBLVVJMIGRvY3VtZW50VVJMID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IApAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UKICAgICAgICAg
UG9zaXRpb24obm9kZSwgcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgsIFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpLCBET1dOU1RSRUFNKSk7CiB9CiAKLUtVUkwgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29uc3QKK1VSTCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp1cmwoKSBjb25zdAogewogICAgIGlmIChpc0FuY2hvcigpICYmIGlzSFRNTEFuY2hvckVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgewogICAgICAgICBpZiAoSFRNTEFuY2hvckVsZW1l
bnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQoYW5jaG9yRWxlbWVudCgpKSkKQEAgLTE0
NjQsNyArMTQ2NCw3IEBAIEtVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29u
c3QKICAgICBpZiAoaXNJbnB1dEltYWdlKCkpCiAgICAgICAgIHJldHVybiB0b0hUTUxJbnB1dEVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKS0+c3JjKCk7CiAgICAgCi0gICAgcmV0dXJuIEtVUkwo
KTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNVbnZpc2l0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCBiMDlkMWNlLi4wZmUw
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBE
b2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJl
bEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRl
eHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgVmlzaWJsZVNl
bGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ZDViYTlkLi5iYjU0ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtOTc5LDcgKzk3OSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5T
TXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGlmICghW3NlbGYg
X3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgS1VSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fb2JqZWN0LT51
cmwoKTsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJl
dHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggMmQ4YmI4My4uOWRkNmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIxMzgsNyArMjEzOCw3IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICB9CiAgICAgCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmli
dXRlXSkgewotICAgICAgICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwoKTsKKyAgICAgICAgVVJM
IHVybCA9IG1fb2JqZWN0LT51cmwoKTsKICAgICAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAppbmRleCAwNWMz
MGRlLi43NGE1MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRD
b250cm9sbGVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29u
dHJvbGxlckJhc2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkK
ICAgICByZXR1cm4gZXZhbHVhdGUoc291cmNlQ29kZSk7CiB9CiAKLWJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1cmwsIFNob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3Jp
cHRVUkwpCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29u
c3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCiB7CiAgICAgaWYgKCFwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCAx
ODFmYzJhLi4xNGRmM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMiw3ICszMiw3IEBA
IGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJl
dHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRG
OFN0cmluZyhXZWJDb3JlOjpLVVJMIGNvbnN0JiBzKQorZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBnX3N0cmR1cChzLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBiYzIzNGNmLi5lNDk0MTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VU
RjhTdHJpbmcuaApAQCAtMjQsMTIgKzI0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogdHlw
ZWRlZiBjaGFyIGdjaGFyOwogCiBnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmlu
ZyBjb25zdCYgcyk7Ci1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpLVVJMIGNv
bnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYg
cyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGI1MDRhNGQuLjEwZWFmMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNzUsMTkg
Kzc1LDE5IEBAIEpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgcykKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcyk7CiB9
CiAKLUpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitK
U1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUpTVmFs
dWUganNTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkpOwogfQogCi1KU1ZhbHVlIGpz
U3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYWY4NTk1NS4u
MDA4NzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICBjbGFzcyBEb2N1bWVudDsK
ICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm9kZTsKIAogICAgIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CkBAIC0yNDMsMTcgKzI0MywxNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0Owog
ICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7
CiAKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmKTsKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBLVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBlbXB0eSBpZiB0
aGUgVVJMIGlzIG51bGwKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgeyAKICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMuc3RyaW5nKCkpOwogICAgIH0K
ICAgICAgICAgCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBpcyBudWxsCi0gICAgSlND
OjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAv
LyBudWxsIGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVs
bChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBudWxsIGlmIHRoZSBVUkwgaXMgbnVs
bAogCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAotICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
S1VSTCYpOyAvLyB1bmRlZmluZWQgaWYgdGhlIFVSTCBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gdW5k
ZWZpbmVkIGlmIHRoZSBVUkwgaXMgbnVsbAogCiAgICAgLy8gU2VlIEphdmFTY3JpcHRDb3JlIGZv
ciBleHBsYW5hdGlvbjogU2hvdWxkIGJlIHVzZWQgZm9yIGFueSBzdHJpbmcgdGhhdCBpcyBhbHJl
YWR5IG93bmVkIGJ5IGFub3RoZXIKICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtu
b3cgdGhhdCBjb2xsZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNh
dmUgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAzMGZjZjNlLi43MDQxNTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApA
QCAtODgsNyArODgsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGltcGwo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIFN0cmluZyBtZXRo
b2QgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAwMzE1MTZlLi45M2I4ZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNj
cmlwdCBVUkwuCi0gICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKKyAgICBi
b29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiwgU2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9
IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwg
aXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaAppbmRleCA1MTYzNTgxLi4yZDNjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgS1VSTCYgdXJsID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRp
b24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQorICAgIFNjcmlwdFNvdXJjZUNv
ZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsID0gVVJMKCksIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCkpCiAgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUoc291cmNlLCB1cmwuaXNOdWxsKCkgPyBTdHJpbmcoKSA6IHVybC5zdHJpbmcoKSwgc3RhcnRQ
b3NpdGlvbikpCiAgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9s
aW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkK
ICAgICAgICAgLCBtX3VybCh1cmwpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQu
Z2V0KCk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIAogcHJp
dmF0ZToKICAgICBSZWZQdHI8SlNDOjpTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
IAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggYjg1MzJkMy4uNDVkMzViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzgz
LDcgKzEzODMsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXJlYWRTdHJpbmdEYXRhKHR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0
KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgS1VSTChL
VVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSk7CisgICAgICAgICAgICBmaWxl
ID0gRmlsZTo6Y3JlYXRlKHBhdGgtPnN0cmluZygpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkp
LCB0eXBlLT5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTU3
Nyw3ICsxNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmNy
ZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpjcmVhdGUoVVJMKFVS
TCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUpLmdldCgpKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5n
UmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBjMzlhNzc0Li4yYmNhZDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBA
IC0yOTAsNyArMjkwLDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogCiAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ind0Zi90ZXh0L0F0b21pY1N0cmluZy5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJL
VVJMLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJXZWJET01TdHJpbmcuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTU3Myw3ICs1NzMsNyBAQCBzdWIgQWRkUmV0dXJuU3RhdGVtZW50CiAgICAgbXkg
JHR5cGVJbmZvID0gc2hpZnQ7CiAgICAgbXkgJHJldHVyblZhbHVlID0gc2hpZnQ7CiAKLSAgICAj
IFVzZWQgdG8gaW52b2tlIEtVUkxzICJjb25zdCBTdHJpbmcmIiBvcGVyYXRvcgorICAgICMgVXNl
ZCB0byBpbnZva2UgVVJMcyAiY29uc3QgU3RyaW5nJiIgb3BlcmF0b3IKICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZUluZm8tPnNpZ25hdHVyZS0+dHlwZSkpIHsKICAg
ICAgICAgcmV0dXJuICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4o
JHJldHVyblZhbHVlKTtcbiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4MWVkYTNkLi5iOWRiNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjUwMSw3ICsyNTAxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0ganNDYXN0
PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygp
KTtcbiIpOwogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50
eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgi
fSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKGV4
ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5pdGVtKGluZGV4KSk7XG4i
KTsKQEAgLTM0MzYsNyArMzQzNiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIktVUkwuaCIsICRjb25kaXRpb25hbCk7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIG15ICRjb252ID0gJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMi
fTsKICAgICAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKICAgICAgICAgICAgIHJldHVybiAianNT
dHJpbmdPck51bGwoZXhlYywgJHZhbHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5k
ZXggZWRmMTE5ZC4uNDg1YjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC02MTgsNyArNjE4LDcgQEAgc3ViIEFk
ZEluY2x1ZGVzRm9yVHlwZQogICAgIH0KIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJp
bmdUeXBlKCR0eXBlKSkgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBiOWI5
MmM2Li41M2FhOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAKQEAgLTIxLDkgKzIxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJE
T01UZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2su
Y3BwCmluZGV4IGZlMzVkMmIuLjRkYmE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5j
cHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2lu
Y2x1ZGUgIkZsb2F0MzJBcnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJXZWJE
T01TdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAppbmRleCA1M2QyNTViLi40YzBkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAKLSNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFu
ZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjc4MDZmMC4uMjNhM2FjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBmM2VhYzBiLi5hYzlkNmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMiw5ICsyMiw5IEBACiAjaW5jbHVk
ZSAiV2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNsdWRl
ICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MjM1YjNhLi5hYWNlMDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJET01UZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwOWFk
MzM3Li4xNjMyZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTI0LDEw
ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCi0jaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIldlYkRPTU5vZGUuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJFeGNlcHRpb25IYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCBmZTU1NDQ5Li5h
YjczMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJUZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RP
YmouaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJET01EaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RUeXBlZGVmcy5jcHAKaW5kZXggNzRmNzczYy4uYzE4ZjUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0VHlw
ZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdFR5cGVkZWZzLmNwcApAQCAtMjEsMTAgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdFR5cGVkZWZzLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1
ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAppbmRleCAwOTAyZTY5Li5lMTQ0ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oIgogCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDJlOTNlMWEu
LjFkNTlkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZjE0MDFhMC4uMjczZTliNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKICNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggNjlhNmMxOC4uY2I1OTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNp
bmNsdWRlICJKU2Jvb2wuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNWR1N0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRl
eCA0ZjQ2NmM1Li4wZGI5OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTMwLDEwICszMCwx
MCBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0K
aW5kZXggYWIyODY0MS4uNDAwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2Jq
ZWN0Lm1tCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgIkRPTVRlc3RBY3RpdmVET01PYmpl
Y3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiTm9kZS5o
IgogI2ltcG9ydCAiVGVzdEFjdGl2ZURPTU9iamVjdC5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBv
cnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDYWxsYmFjay5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFjay5tbQppbmRleCA5M2FkZjhjLi5mMDY0MmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2su
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dENhbGxiYWNrLm1tCkBAIC00NCwxMSArNDQsMTEgQEAKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAiVGVzdENhbGxiYWNrLmgiCiAjaW1wb3J0ICJUZXN0Tm9k
ZS5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAi
V2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIK
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdl
dHRlci5tbQppbmRleCAxMGE5MGE1Li5iZjdhMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2lt
cG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgor
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2
ZW50Q29uc3RydWN0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQppbmRleCA4MDlkNTUzLi5kOTE3ZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQpAQCAtMzQsOSArMzQsOSBA
QAogI2ltcG9ydCAiRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgot
I2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBv
cnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpD
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0KaW5kZXggZmEyNDQ3ZC4u
MDM4ZjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRhcmdldC5tbQpAQCAtMzYsMTEgKzM2LDEx
IEBACiAjaW1wb3J0ICJFdmVudExpc3RlbmVyLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJMLmgi
CiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9y
dCAiVGVzdEV2ZW50VGFyZ2V0LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNl
cHRpb24ubW0KaW5kZXggZDJiOTU0OC4uYThjZWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9u
Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlRlc3RFeGNlcHRpb24uaCIK
ICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNv
cmVPYmpDRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAyZTIxYmZk
Li4yYjliMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTM3LDEyICszNywxMiBA
QAogI2ltcG9ydCAiRE9NVGVzdE9iakludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJM
LmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJUZXN0T2JqLmgiCiAjaW1wb3J0ICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW1wb3J0ICJUaHJl
YWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMzMxYWM2Ni4uMWI4ZTY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
CkBAIC00OSw3ICs0OSw2IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9y
dCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBv
cnQgIktVUkwuaCIKICNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVy
LmgiCiAjaW1wb3J0ICJTVkdEb2N1bWVudC5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAi
VGVzdE9iamVjdENDb25zdHJ1Y3Rvci5oIgogI2ltcG9ydCAiVGVzdFN1Yk9iakNvbnN0cnVjdG9y
LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgog
I2ltcG9ydCAiYW55LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0KaW5kZXggN2UzZDgzOC4uZGU0
MWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdFR5cGVkZWZzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW1w
b3J0ICJET01UZXN0VHlwZWRlZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5o
IgogI2ltcG9ydCAiU1ZHUG9pbnQuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2ltcG9ydCAiVGVzdFR5cGVkZWZzLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDQ5NmZkOGMuLmQxMzdiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTE5MCw3
ICsxOTAsNyBAQCBib29sIENTU0N1cnNvckltYWdlVmFsdWU6OmlzU1ZHQ3Vyc29yKCkgY29uc3QK
IHsKICAgICBpZiAobV9pbWFnZVZhbHVlLT5pc0ltYWdlVmFsdWUoKSkgewogICAgICAgICBSZWZQ
dHI8Q1NTSW1hZ2VWYWx1ZT4gaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUq
PihtX2ltYWdlVmFsdWUuZ2V0KCkpOwotICAgICAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5n
LCBpbWFnZVZhbHVlLT51cmwoKSk7CisgICAgICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywg
aW1hZ2VWYWx1ZS0+dXJsKCkpOwogICAgICAgICByZXR1cm4ga3VybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDQwMzc0MmQuLjZlNjUzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU3Ry
aW5nIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjphZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVT
aGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NGb250RmFjZVNyY1ZhbHVl
OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzLCBjb25zdCBT
dHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0xvY2Fs
KCkpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQtPmNvbXBsZXRl
VVJMKG1fcmVzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
CmluZGV4IDQyOWJiYjQuLjk5YTExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxl
U2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzI2OGVl
MC4uMzRhNjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkKICAgICBy
ZXR1cm4gc3RyaWN0Q29udGV4dDsKIH0KIAotQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29u
dGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCitDU1NQYXJzZXJD
b250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUgbW9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMKQogICAgIDogYmFzZVVSTChiYXNlVVJMKQogICAgICwgbW9kZShtb2RlKQogICAgICwg
aXNIVE1MRG9jdW1lbnQoZmFsc2UpCkBAIC0yNzIsNyArMjcyLDcgQEAgQ1NTUGFyc2VyQ29udGV4
dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VV
UkwpCiB7CiB9CiAKLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitD
U1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiAgICAgOiBiYXNlVVJMKGJh
c2VVUkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBiYXNlVVJMKQogICAgICwgY2hh
cnNldChjaGFyc2V0KQogICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSA/IENTU1F1
aXJrc01vZGUgOiBDU1NTdHJpY3RNb2RlKQpAQCAtMTYxNSwxNiArMTYxNSwxNiBAQCB2b2lkIENT
U1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9
IGZhbHNlOwogfQogCi1LVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCitVUkwgQ1NTUGFyc2VyOjpjb21w
bGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAg
ICAgICByZXR1cm4gVVJMKCk7CiAgICAgaWYgKGNvbnRleHQuY2hhcnNldC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKLSAgICByZXR1cm4gS1VS
TChjb250ZXh0LmJhc2VVUkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKKyAgICAgICAgcmV0dXJu
IFVSTChjb250ZXh0LmJhc2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChjb250ZXh0LmJhc2VV
UkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKIH0KIAotS1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKG1fY29u
dGV4dCwgdXJsKTsKIH0KQEAgLTg3ODQsNyArODc4NCw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZU1peEZ1bmN0aW9uKENTU1BhcnNlclZh
bHVlCiAgICAgICAgIHVuc2lnbmVkIGFyZ051bWJlciA9IGFyZ3NMaXN0LT5jdXJyZW50SW5kZXgo
KTsKICAgICAgICAgaWYgKCFhcmdOdW1iZXIpIHsKICAgICAgICAgICAgIGlmIChhcmctPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHNo
YWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgICAgICBVUkwg
c2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcpOwogICAgICAgICAgICAgICAgIHZh
bHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJVUkwuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGFyZ051bWJlciA9PSAxIHx8IGFyZ051
bWJlciA9PSAyKSB7CkBAIC04OTc0LDcgKzg5NzQsNyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU0Zp
bHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ3VzdG9tRmlsdGVyRnVuY3Rpb25XaXRoSW5saW5l
UwogICAgICAgICBpZiAoYXJnLT5pZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWx1
ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwog
ICAgICAgICBlbHNlIGlmIChhcmctPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
IHsKLSAgICAgICAgICAgIEtVUkwgc2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcp
OworICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsK
ICAgICAgICAgICAgIHZhbHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJV
Ukwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaGFkQXRMZWFzdE9uZUN1c3RvbVNoYWRlciA9IHRy
dWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYXJnc0xpc3QtPmN1cnJlbnRJbmRleCgpID09IDEgJiYg
YXJnLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IGZmZDFkOWUuLjZjYzE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTQy
Miw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICNlbmRp
ZgogCi0gICAgc3RhdGljIEtVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENT
U1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBMb2NhdGlvbiBjdXJy
ZW50TG9jYXRpb24oKTsKIApAQCAtNTAyLDcgKzUwMiw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5l
IGJvb2wgaW5TdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUgPT0gQ1NT
U3RyaWN0TW9kZSB8fCBtX2NvbnRleHQubW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOyB9CiAgICAg
aW5saW5lIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUg
PT0gQ1NTUXVpcmtzTW9kZTsgfQogICAgIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3Q7CiAKICAgICB2b2lkIHJlY2hlY2tBdEtleXdvcmQoY29uc3QgVUNoYXIqIHN0ciwgaW50
IGxlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCmluZGV4IDU3MzU3ZjUuLmI0N2Mw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBDU1NQYXJzZXJNb2RlX2gKICNkZWZpbmUgQ1NTUGFyc2VyTW9kZV9oCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTcsMTAgKzU3LDEwIEBAIGlubGluZSBib29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMID0gS1VSTCgpKTsKLSAgICBDU1NQYXJzZXJDb250
ZXh0KERvY3VtZW50JiwgY29uc3QgS1VSTCYgYmFzZVVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4
dChEb2N1bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQgPSBlbXB0eVN0cmluZygpKTsKIAotICAgIEtVUkwgYmFzZVVSTDsKKyAgICBVUkwgYmFz
ZVVSTDsKICAgICBTdHJpbmcgY2hhcnNldDsKICAgICBDU1NQYXJzZXJNb2RlIG1vZGU7CiAgICAg
Ym9vbCBpc0hUTUxEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IGJmMjIwY2YuLmI1OWU4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcApAQCAtMTIwMyw3ICsxMjAzLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1
ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgQ1NTUHJp
bWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENT
U1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1VSSSkKICAgICAgICAgYWRkU3VicmVz
b3VyY2VVUkwodXJscywgc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZS5zdHJpbmcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNjQyMDZmOC4uNjQ5YTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMzMCw3ICszMzAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUXVpcmtWYWx1ZSgpIHsgcmV0dXJuIG1faXNRdWly
a1ZhbHVlOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBMZW5ndGggdmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IGNm
NzE0OTUuLjE1YWU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFN0cmluZyBDU1NSZWZsZWN0VmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0CiB9CiAjZW5kaWYKIAotdm9p
ZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2
b2lkIENTU1JlZmxlY3RWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAog
ewogICAgIGlmIChtX21hc2spCiAgICAgICAgIG1fbWFzay0+YWRkU3VicmVzb3VyY2VTdHlsZVVS
THModXJscywgc3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5k
ZXggMGVmMTFjZS4uODFmYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0
OwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0VmFsdWUm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRjZDU2YmEu
LmU4Y2NmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUGFz
c1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U1N0eWxlU2hlZXQoc2hlZXQsIG93bmVyTm9kZSwgZmFsc2UpKTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQorUGFzc1JlZlB0
cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJO
b2RlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAg
Q1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNl
VVJMLCBlbmNvZGluZyk7CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0
KTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVz
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIEtVUkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKKyAgICBV
UkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKICAgICBpZiAoYmFzZVVSTC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93
bmVyRG9jdW1lbnQoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBTdHJpbmcgQ1NTU3R5bGVTaGVldDo6
aHJlZigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMtPm9yaWdpbmFsVVJMKCk7CiB9CiAK
LUtVUkwgQ1NTU3R5bGVTaGVldDo6YmFzZVVSTCgpIGNvbnN0CitVUkwgQ1NTU3R5bGVTaGVldDo6
YmFzZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMtPmJhc2VVUkwoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGIzMDhiZDEuLjMyYjVjZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDU1NTdHls
ZVNoZWV0IEZJTkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250
ZW50cz4sIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4s
IE5vZGUqIG93bmVyTm9kZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Y3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyA9
IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJ
bmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmco
KSk7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CiAKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX293bmVyUnVsZTsgfQotICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICB2b2lkIGNs
ZWFyT3duZXJSdWxlKCkgeyBtX293bmVyUnVsZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IGIzNjk5MGQuLjc1MTc1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIENTU1ZhbHVlOjpUeXBlIENTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUoKSBjb25z
dAogICAgIHJldHVybiBDU1NfQ1VTVE9NOwogfQogCi12b2lkIENTU1ZhbHVlOjphZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRz
KiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9y
IGludGVybmFsIGluc3RhbmNlcyBvbmx5LgogICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDdlNDgwMjcuLjUwNmUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIENTU1ZhbHVlX2gKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3Qg
U3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7
CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAppbmRleCA0OWY1YzdjLi43NzNlNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyBD
U1NWYWx1ZUxpc3Q6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluCiB9CiAjZW5kaWYKIAotdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0
Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0gbV92YWx1ZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCmluZGV4IDllZTFhZmEuLjJiZGQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggNzExZGFmZC4uYjJhMGZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMTk5OCw3ICsx
OTk4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VVJJKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgS1VSTCB1cmwgPSBzdHlsZVJl
c29sdmVyLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VSTFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NV
UkxWYWx1ZSk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgd29yayB3aXRo
IGZvcndhcmQgb3IgZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMgKHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MDUpCiAgICAgICAgICAgICAgICAgc2V0VmFsdWUo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZShjc3NVUkxWYWx1ZSwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNWY3MTAzMi4uMWY1
YzE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEs
NyArMTA0MSw3IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJp
ZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFBy
b3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9DU1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBT
dHlsZVByb3BlcnR5U2V0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3Zv
aWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aAppbmRleCA0ZWFiYjNiYy4uMjIxNmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsKIGNsYXNzIEltbXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBTdHlsZWRFbGVtZW50OwpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
U1NQYXJzZXJNb2RlPihtX2Nzc1BhcnNlck1vZGUpOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250
ZXh0U3R5bGVTaGVldCkgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkg
Y29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBtdXRhYmxl
Q29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4g
aW1tdXRhYmxlQ29weUlmTmVlZGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggYzYwZGFlMi4uNTM3Nzc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzQyMCw4ICszNDIwLDggQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9n
cmFtPiBTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKFdlYktpdEMKICAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVz
aFR5cGUpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVy
ID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgS1VSTCB2
ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJM
KGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IEtVUkwoKTsKLSAgICBLVVJMIGZyYWdtZW50U2hhZGVy
VVJMID0gZnJhZ21lbnRTaGFkZXIgPyBmcmFnbWVudFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVk
UmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOworICAgIFVSTCB2ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0
ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVy
KSA6IFVSTCgpOworICAgIFVSTCBmcmFnbWVudFNoYWRlclVSTCA9IGZyYWdtZW50U2hhZGVyID8g
ZnJhZ21lbnRTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IFVSTCgp
OwogICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW07CiAgICAgaWYg
KG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKQogICAgICAgICBwcm9ncmFtID0gbV9jdXN0b21G
aWx0ZXJQcm9ncmFtQ2FjaGUtPmxvb2t1cChDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhT
aGFkZXJVUkwsIGZyYWdtZW50U2hhZGVyVVJMLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1l
c2hUeXBlKSk7CkBAIC0zNzg4LDcgKzM3ODgsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFdlYktpdENTU1NWR0RvY3Vt
ZW50VmFsdWUqIHN2Z0RvY3VtZW50VmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJLaXRDU1NTVkdEb2N1
bWVudFZhbHVlKj4oYXJndW1lbnQpOwotICAgICAgICAgICAgS1VSTCB1cmwgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOworICAgICAgICAg
ICAgVVJMIHVybCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdmdEb2N1bWVudFZh
bHVlLT51cmwoKSk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHN2Z0RvY3Vt
ZW50VmFsdWUtPnVybCgpLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCksIG9wZXJhdGlvblR5cGUp
OwogICAgICAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5j
ZShzdmdEb2N1bWVudFZhbHVlLT51cmwoKSwgbV9zdGF0ZS5kb2N1bWVudCgpKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNmExNjE5Ni4uNjc1NGQ3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIERlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5
ZnJhbWVWYWx1ZTsKIGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGVJbXBvcnQuY3BwCmluZGV4IDA5NTY2MDkuLjVmNDMwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0eWxlUnVsZUltcG9y
dDo6flN0eWxlUnVsZUltcG9ydCgpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVu
dCgmbV9zdHlsZVNoZWV0Q2xpZW50KTsKIH0KIAotdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnNldENT
U1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxl
U2hlZXQpCit2b2lkIFN0eWxlUnVsZUltcG9ydDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25z
dCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBjYWNoZWRTdHlsZVNoZWV0KQogewogICAgIGlmIChtX3N0
eWxlU2hlZXQpCiAgICAgICAgIG1fc3R5bGVTaGVldC0+Y2xlYXJPd25lclJ1bGUoKTsKQEAgLTEw
MCwxMCArMTAwLDEwIEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgp
CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
S1VSTCBhYnNVUkw7CisgICAgVVJMIGFic1VSTDsKICAgICBpZiAoIW1fcGFyZW50U3R5bGVTaGVl
dC0+YmFzZVVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdz
IFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzVVJMID0gS1VSTChtX3BhcmVudFN0eWxl
U2hlZXQtPmJhc2VVUkwoKSwgbV9zdHJIcmVmKTsKKyAgICAgICAgYWJzVVJMID0gVVJMKG1fcGFy
ZW50U3R5bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOwogICAgIGVsc2UKICAgICAgICAg
YWJzVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKG1fc3RySHJlZik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJ1bGVJbXBvcnQuaAppbmRleCBlZTU0ZGI5Li40NTIxMjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgcHVi
bGljOgogICAgICAgICBJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoU3R5bGVSdWxlSW1wb3J0KiBv
d25lclJ1bGUpIDogbV9vd25lclJ1bGUob3duZXJSdWxlKSB7IH0KICAgICAgICAgdmlydHVhbCB+
SW1wb3J0ZWRTdHlsZVNoZWV0Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NT
U3R5bGVTaGVldCogc2hlZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fb3duZXJSdWxlLT5z
ZXRDU1NTdHlsZVNoZWV0KGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQsIHNoZWV0KTsKICAgICAgICAg
fQpAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHlsZVJ1bGVJbXBvcnQqIG1f
b3duZXJSdWxlOwogICAgIH07CiAKLSAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNv
bnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKKyAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwogICAgIGZyaWVuZCBjbGFzcyBJbXBvcnRl
ZFN0eWxlU2hlZXRDbGllbnQ7CiAKICAgICBTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBo
cmVmLCBQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmlu
ZGV4IDYwYmJiNWYuLjM4OTkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjIsNyAr
MjIsNyBAQAogI2RlZmluZSBTdHlsZVNoZWV0X2gKIAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUu
aCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgdm9pZCBjbGVhck93bmVyTm9kZSgpID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVS
TCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJMKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
Q1NTU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGVmNWQ1MzkuLmY1NWY3NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC0zOTcsMTIgKzM5Nywx
MiBAQCBEb2N1bWVudCogU3R5bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25lckRvY3VtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gb3duZXJOb2RlID8gJm93bmVyTm9kZS0+ZG9jdW1lbnQoKSA6IDA7
CiB9CiAKLUtVUkwgU3R5bGVTaGVldENvbnRlbnRzOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
IHVybCkgY29uc3QKK1VSTCBTdHlsZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBDU1NQYXJzZXI6OmNvbXBsZXRlVVJMKG1f
cGFyc2VyQ29udGV4dCwgdXJsKTsKIH0KIAotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKQordm9pZCBTdHlsZVNo
ZWV0Q29udGVudHM6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVy
bHMpCiB7CiAgICAgRGVxdWU8U3R5bGVTaGVldENvbnRlbnRzKj4gc3R5bGVTaGVldFF1ZXVlOwog
ICAgIHN0eWxlU2hlZXRRdWV1ZS5hcHBlbmQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmgKaW5kZXggNmI0OTc5Ni4uZjllNjk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTdHlsZVNo
ZWV0Q29udGVudHNfaAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04
MCw4ICs4MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGxvYWRDb21wbGV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2xvYWRDb21wbGV0ZWQ7IH0KICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJy
ZXNvdXJjZXMoKSBjb25zdDsKIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0OwotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mKTsKKyAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpOwogCiAg
ICAgdm9pZCBzZXRJc1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQg
PSBiOyB9CiAgICAgYm9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Vz
ZXJTdHlsZVNoZWV0OyB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8vIHRoaXMg
c3R5bGUgc2hlZXQuIFRoaXMgcHJvcGVydHkgcHJvYmFibHkgaXNuJ3QgdXNlZnVsIGZvciBtdWNo
IGV4Y2VwdAogICAgIC8vIHRoZSBKYXZhU2NyaXB0IGJpbmRpbmcgKHdoaWNoIG5lZWRzIHRvIHVz
ZSB0aGlzIHZhbHVlIGZvciBzZWN1cml0eSkuCiAgICAgU3RyaW5nIG9yaWdpbmFsVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQotICAgIGNvbnN0IEtVUkwmIGJhc2VVUkwoKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlckNvbnRleHQuYmFzZVVSTDsgfQorICAgIGNvbnN0IFVSTCYg
YmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CiAKICAg
ICB1bnNpZ25lZCBydWxlQ291bnQoKSBjb25zdDsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlQXQo
dW5zaWduZWQgaW5kZXgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFk
ZXJWYWx1ZS5jcHAKaW5kZXggMWQzYWQyOC4uNWM5NjJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQZW5kaW5nU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtNTUsNyArNTUsNyBAQCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6fldlYktpdENTU1No
YWRlclZhbHVlKCkKIHsKIH0KIAotS1VSTCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29tcGxldGVV
UkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QKK1VSTCBXZWJLaXRDU1NTaGFk
ZXJWYWx1ZTo6Y29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QK
IHsKICAgICByZXR1cm4gbG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCmluZGV4IGE2NTU1ZjIu
LjQwZWQ3YjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVy
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTdHlsZUNhY2hlZFNo
YWRlcjsKIGNsYXNzIFN0eWxlU2hhZGVyOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAg
dm9pZCBzZXRGb3JtYXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpIHsgbV9mb3JtYXQgPSBmb3JtYXQ7
IH0KIAotICAgIEtVUkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsK
KyAgICBVUkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICAgICBT
dHlsZUNhY2hlZFNoYWRlciogY2FjaGVkU2hhZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAg
ICAgU3R5bGVTaGFkZXIqIGNhY2hlZE9yUGVuZGluZ1NoYWRlcigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCA1YzU3NGFhLi44OGNkNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTIzMywxMyArMjMzLDEzIEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2M7CiAjaWYg
RU5BQkxFKFNWRykKICAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3Bh
Y2VVUkkpCi0gICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAg
ICAgICAgZG9jID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZWxzZQogI2Vu
ZGlmCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJ
KQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgS1VSTCgpKTsKKyAgICAg
ICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIFVSTCgpKTsKICAgICBlbHNlCi0gICAg
ICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0gRG9j
dW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAKICAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2luKG1f
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSk7CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIERP
TUltcGxlbWVudGF0aW9uOjppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
CiBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxE
b2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+
IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxIVE1MRG9j
dW1lbnQ+IGQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZC0+b3Blbigp
OwogICAgIGQtPndyaXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PiIpOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpCkBAIC0zMTksNyArMzE5LDcgQEAgUGFzc1Jl
ZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0aXQKICAgICByZXR1cm4gZC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJp
bmcmIHR5cGUsIEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGluVmlld1NvdXJj
ZU1vZGUpCitQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBi
b29sIGluVmlld1NvdXJjZU1vZGUpCiB7CiAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUpCiAgICAg
ICAgIHJldHVybiBIVE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgdHlw
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IGY5YWM2ZmYuLmFi
YWZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0zNyw3ICsz
Nyw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRUeXBlOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVn
dWxhckV4cHJlc3Npb247CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERv
Y3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90
IHBhcnQgb2YgRE9NKQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1
bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGlu
Vmlld1NvdXJjZU1vZGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVE
b2N1bWVudChjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYsIGJvb2wg
aW5WaWV3U291cmNlTW9kZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpOwogICAgIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzIzMDU0OS4u
MGIxOWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzVmFsaWROYW1lUGFydChVQ2hhcjMyIGMpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25l
cihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgYm9vbCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmln
aW5Gcm9tT3duZXIoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jb3JpZ2luLTAKICAgICAvLwpAQCAtMzc2
LDcgKzM3Niw3IEBAIHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiBhY3RpdmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiBhY3RpdmVVUkwsIGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0YXRpYyB2b2lk
IHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0
aXZlVVJMLCBjb25zdCBjaGFyKiByZWFzb24pCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3
aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSArICInIGZyb20g
ZnJhbWUgd2l0aCBVUkwgJyIgKyBhY3RpdmVVUkwuc3RyaW5nKCkgKyAiJy4gIiArIHJlYXNvbiAr
ICJcbiI7CiAKQEAgLTQwMCw3ICs0MDAsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVHJhaXRzOjpp
c0RlbGV0ZWRWYWx1ZShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYgdmFsdWUpCiB9CiAjZW5kaWYK
IAotRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCB1bnNp
Z25lZCBkb2N1bWVudENsYXNzZXMpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgIDogQ29udGFpbmVy
Tm9kZSgwLCBDcmVhdGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9z
dHlsZVJlc29sdmVyVGhyb3dhd2F5VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlc29sdmVy
VGhyb3dhd2F5VGltZXJGaXJlZCwgdGltZUJlZm9yZVRocm93aW5nQXdheVN0eWxlUmVzb2x2ZXJB
ZnRlckxhc3RVc2VJblNlY29uZHMpCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCB2b2lkIERvY3VtZW50
OjpzZXREb2N1bWVudFVSSShjb25zdCBTdHJpbmcmIHVyaSkKICAgICB1cGRhdGVCYXNlVVJMKCk7
CiB9CiAKLUtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAorVVJMIERvY3VtZW50OjpiYXNl
VVJJKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQpAQCAtMjYyMyw5ICsyNjIz
LDkgQEAgdm9pZCBEb2N1bWVudDo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHMKICAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFVS
TChjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwp
CiB7Ci0gICAgY29uc3QgS1VSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiB1cmw7CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwo
KSA6IHVybDsKICAgICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1cm47CiAKQEAg
LTI2MzYsNyArMjYzNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBLVVJMJiB1cmwp
CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogewotICAgIEtVUkwgb2xkQmFzZVVS
TCA9IG1fYmFzZVVSTDsKKyAgICBVUkwgb2xkQmFzZVVSTCA9IG1fYmFzZVVSTDsKICAgICAvLyBE
T00gMyBDb3JlOiBXaGVuIHRoZSBEb2N1bWVudCBzdXBwb3J0cyB0aGUgZmVhdHVyZSAiSFRNTCIg
W0RPTSBMZXZlbCAyIEhUTUxdLCB0aGUgYmFzZSBVUkkgaXMgY29tcHV0ZWQgdXNpbmcKICAgICAv
LyBmaXJzdCB0aGUgdmFsdWUgb2YgdGhlIGhyZWYgYXR0cmlidXRlIG9mIHRoZSBIVE1MIEJBU0Ug
ZWxlbWVudCBpZiBhbnksIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0
ZQogICAgIC8vIGZyb20gdGhlIERvY3VtZW50IGludGVyZmFjZSBvdGhlcndpc2UuCkBAIC0yNjQ4
LDE0ICsyNjQ4LDE0IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAgICAv
LyBUaGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIHJlYWQtb25seSBmcm9tIEphdmFTY3JpcHQs
IGJ1dCB3cml0YWJsZSBmcm9tIE9iamVjdGl2ZSBDLCBzbyB3ZSBuZWVkIHRvIHJldGFpbgogICAg
ICAgICAvLyB0aGlzIGZhbGxiYWNrIGJlaGF2aW9yLiBXZSB1c2UgYSBudWxsIGJhc2UgVVJMLCBz
aW5jZSB0aGUgZG9jdW1lbnRVUkkgYXR0cmlidXRlIGlzIGFuIGFyYml0cmFyeSBzdHJpbmcKICAg
ICAgICAgLy8gYW5kIERPTSAzIENvcmUgZG9lcyBub3Qgc3BlY2lmeSBob3cgaXQgc2hvdWxkIGJl
IHJlc29sdmVkLgotICAgICAgICBtX2Jhc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZG9j
dW1lbnRVUkkoKSk7CisgICAgICAgIG1fYmFzZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGRv
Y3VtZW50VVJJKCkpOwogICAgIH0KIAogICAgIGlmIChtX3NlbGVjdG9yUXVlcnlDYWNoZSkKICAg
ICAgICAgbV9zZWxlY3RvclF1ZXJ5Q2FjaGUtPmludmFsaWRhdGUoKTsKIAogICAgIGlmICghbV9i
YXNlVVJMLmlzVmFsaWQoKSkKLSAgICAgICAgbV9iYXNlVVJMID0gS1VSTCgpOworICAgICAgICBt
X2Jhc2VVUkwgPSBVUkwoKTsKIAogICAgIGlmIChtX2VsZW1lbnRTaGVldCkgewogICAgICAgICAv
LyBFbGVtZW50IHNoZWV0IGlzIHNpbGx5LiBJdCBuZXZlciBjb250YWlucyBhbnl0aGluZy4KQEAg
LTI2NzUsNyArMjY3NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgIH0K
IH0KIAotdm9pZCBEb2N1bWVudDo6c2V0QmFzZVVSTE92ZXJyaWRlKGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgRG9jdW1lbnQ6OnNldEJhc2VVUkxPdmVycmlkZShjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBtX2Jhc2VVUkxPdmVycmlkZSA9IHVybDsKICAgICB1cGRhdGVCYXNlVVJMKCk7CkBAIC0yNzAx
LDExICsyNzAxLDExIEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFNpbmNlIHRoaXMgZG9lc24ndCBzaGFyZSBjb2RlIHdpdGggY29t
cGxldGVVUkwgaXQgbWF5IG5vdCBoYW5kbGUgZW5jb2RpbmdzIGNvcnJlY3RseS4KLSAgICBLVVJM
IGJhc2VFbGVtZW50VVJMOworICAgIFVSTCBiYXNlRWxlbWVudFVSTDsKICAgICBpZiAoaHJlZikg
ewogICAgICAgICBTdHJpbmcgc3RyaXBwZWRIcmVmID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKCpocmVmKTsKICAgICAgICAgaWYgKCFzdHJpcHBlZEhyZWYuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgYmFzZUVsZW1lbnRVUkwgPSBLVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwor
ICAgICAgICAgICAgYmFzZUVsZW1lbnRVUkwgPSBVUkwodXJsKCksIHN0cmlwcGVkSHJlZik7CiAg
ICAgfQogICAgIGlmIChtX2Jhc2VFbGVtZW50VVJMICE9IGJhc2VFbGVtZW50VVJMICYmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Jhc2VVUkkoYmFzZUVsZW1lbnRVUkwpKSB7CiAgICAg
ICAgIG1fYmFzZUVsZW1lbnRVUkwgPSBiYXNlRWxlbWVudFVSTDsKQEAgLTI3MTUsNyArMjcxNSw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgbV9iYXNlVGFyZ2V0
ID0gdGFyZ2V0ID8gKnRhcmdldCA6IG51bGxBdG9tOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OnVz
ZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OnVzZXJBZ2Vu
dChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSA/IGZyYW1lKCkt
PmxvYWRlcigpLnVzZXJBZ2VudCh1cmwpIDogU3RyaW5nKCk7CiB9CkBAIC0zNzI2LDcgKzM3MjYs
NyBAQCBTdHJpbmcgRG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIEtVUkwgY29va2llVVJMID0gdGhp
cy0+Y29va2llVVJMKCk7CisgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwog
ICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
QEAgLTM3NDcsNyArMzc0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJp
bmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CisgICAgVVJMIGNvb2tpZVVS
TCA9IHRoaXMtPmNvb2tpZVVSTCgpOwogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTM5NzEsMjAgKzM5NzEsMjAgQEAgdm9pZCBEb2N1bWVudDo6c2V0
RGVjb2RlcihQYXNzUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIpCiAgICAgbV9k
ZWNvZGVyID0gZGVjb2RlcjsKIH0KIAotS1VSTCBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IEtVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKK1VSTCBEb2N1
bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZVVSTE92
ZXJyaWRlKSBjb25zdAogewogICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxsIFVSTCB3aGVuIHBh
c3NlZCBhIG51bGwgc3RyaW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hhbmdlIHRoZSBL
VVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICAvLyBGSVhNRTogU2hv
dWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8K
ICAgICAvLyBTZWUgYWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYpCiAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKLSAgICBj
b25zdCBLVVJMJiBiYXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VV
UkxPdmVycmlkZSA9PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVudERv
Y3VtZW50KCktPmJhc2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHko
KSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkg
PyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CiAgICAgaWYg
KCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAgcmV0
dXJuIEtVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOworICAgICAgICBy
ZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1f
ZGVjb2Rlci0+ZW5jb2RpbmcoKSk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gY29tcGxldGVVUkwodXJsLCBtX2Jhc2VV
UkwpOwogfQpAQCAtNDE5OSwyMSArNDE5OSwyMSBAQCBTdHJpbmcgRG9jdW1lbnQ6OnF1ZXJ5Q29t
bWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiAgICAgcmV0dXJuIGNvbW1hbmQo
dGhpcywgY29tbWFuZE5hbWUpLnZhbHVlKCk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFy
Y2hEZXNjcmlwdGlvblVSTCgpCitVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVS
TCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5TZWFyY2hNSU1FVHlwZSA9
ICJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIjsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qgb3BlblNlYXJjaFJlbGF0aW9uID0gInNlYXJjaCI7CiAKICAgICAvLyBG
SVhNRTogV2h5IGRvIG9ubHkgdG9wLWxldmVsIGZyYW1lcyBoYXZlIG9wZW5TZWFyY2hEZXNjcmlw
dGlvblVSTHM/CiAgICAgaWYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnRyZWUoKS5wYXJlbnQoKSkK
LSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8g
RklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRvIHdhaXQgZm9yIEZyYW1lU3RhdGVDb21wbGV0ZT8KICAg
ICBpZiAoZnJhbWUoKS0+bG9hZGVyKCkuc3RhdGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGUpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmICgh
aGVhZCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAK
ICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuID0gaGVhZCgpLT5jaGlsZHJlbigp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIGNoaWxkID0gY2hpbGRyZW4tPml0ZW0o
aSk7IGkrKykgewpAQCAtNDIyNyw3ICs0MjI3LDcgQEAgS1VSTCBEb2N1bWVudDo6b3BlblNlYXJj
aERlc2NyaXB0aW9uVVJMKCkKICAgICAgICAgcmV0dXJuIGxpbmtFbGVtZW50LT5ocmVmKCk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnB1c2hDdXJyZW50U2NyaXB0KFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+
IG5ld0N1cnJlbnRTY3JpcHQpCkBAIC00NTY2LDcgKzQ1NjYsNyBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8g
c291cmNlIGZvciBhIHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3Vy
IHZpYSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBt
X2Nvb2tpZVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKKyAgICAg
ICAgbV9jb29raWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKICAg
ICAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsK
ICAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGljeTo6
Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY1Miw3ICs0NjUyLDcgQEAgYm9v
bCBEb2N1bWVudDo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKICAgICByZXR1cm4gaXNNYWluVGhy
ZWFkKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0
ZShjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVVUkxGb3JQdXNoT3JSZXBs
YWNlU3RhdGUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAg
IGlmICghZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDEwYWZhZS4uNzNhNzg1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTIzNiwxMSArMjM2LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hh
ciBEb2N1bWVudENsYXNzRmxhZ3M7CiAKIGNsYXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5l
ck5vZGUsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERvY3VtZW50KGZyYW1lLCB1cmwsIFhIVE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KQEAg
LTQxNCw3ICs0MTQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2N1bWVudFVSSTsgfQogICAgIHZvaWQgc2V0RG9jdW1lbnRVUkkoY29uc3Qg
U3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1
YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJ
KQogICAgIFN0cmluZyB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKQEAgLTU4NCwyMiArNTg0LDIy
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vs
bEZvcm1lZDsgfQogCi0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsK
KyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gbV91cmw7IH0KKyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFRvIHVu
ZGVyc3RhbmQgaG93IHRoZXNlIGNvbmNlcHRzIHJlbGF0ZSB0byBvbmUgYW5vdGhlciwgcGxlYXNl
IHNlZSB0aGUKICAgICAvLyBjb21tZW50cyBzdXJyb3VuZGluZyB0aGVpciBkZWNsYXJhdGlvbi4K
LSAgICBjb25zdCBLVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMOyB9Ci0g
ICAgdm9pZCBzZXRCYXNlVVJMT3ZlcnJpZGUoY29uc3QgS1VSTCYpOwotICAgIGNvbnN0IEtVUkwm
IGJhc2VVUkxPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTE92ZXJyaWRlOyB9Ci0g
ICAgY29uc3QgS1VSTCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VFbGVt
ZW50VVJMOyB9CisgICAgY29uc3QgVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNl
VVJMOyB9CisgICAgdm9pZCBzZXRCYXNlVVJMT3ZlcnJpZGUoY29uc3QgVVJMJik7CisgICAgY29u
c3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlk
ZTsgfQorICAgIGNvbnN0IFVSTCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jh
c2VFbGVtZW50VVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBiYXNlVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNlVGFyZ2V0OyB9CiAgICAgdm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAot
ICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwm
IGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIApAQCAtODE3LDggKzgxNyw4
IEBAIHB1YmxpYzoKICAgICAvLyAgICBkb2N1bWVudCBpbmhlcml0cyB0aGUgc2VjdXJpdHkgY29u
dGV4dCBvZiBhbm90aGVyIGRvY3VtZW50LCBpdAogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29r
aWVVUkwgYnV0IG5vdCBpdHMgVVJMLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYgY29va2llVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChj
b25zdCBLVVJMJiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGNv
b2tpZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2llVVJMOyB9CisgICAgdm9pZCBzZXRDb29r
aWVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KIAogICAgIC8vIFRo
ZSBmaXJzdFBhcnR5Rm9yQ29va2llcyBpcyB1c2VkIHRvIGNvbXB1dGUgd2hldGhlciB0aGlzIGRv
Y3VtZW50CiAgICAgLy8gYXBwZWFycyBpbiBhICJ0aGlyZC1wYXJ0eSIgY29udGV4dCBmb3IgdGhl
IHB1cnBvc2Ugb2YgdGhpcmQtcGFydHkKQEAgLTgzMCw4ICs4MzAsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gICAgICAgZmlyc3RQYXJ0eUZvckNvb2tpZXMgaGF2ZSBhIGRpZmZlcmVudCByZWdpc3RyeS1j
b250cm9sbGVkCiAgICAgLy8gICAgICAgZG9tYWluLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOyB9Ci0gICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwp
IHsgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9IHVybDsgfQorICAgIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9
CisgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkgeyBtX2Zp
cnN0UGFydHlGb3JDb29raWVzID0gdXJsOyB9CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBp
bXBsZW1lbnRzIHRoZSBydWxlIGZyb20gSFRNTCA0IGZvciB3aGF0IHZhbGlkIG5hbWVzIGFyZS4K
ICAgICAvLyBUbyBnZXQgdGhpcyByaWdodCBmb3IgYWxsIHRoZSBYTUwgY2FzZXMsIHdlIHByb2Jh
Ymx5IGhhdmUgdG8gaW1wcm92ZSB0aGlzIG9yIG1vdmUgaXQKQEAgLTg2Niw3ICs4NjYsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21t
YW5kKTsKICAgICBTdHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBjb21tYW5k
KTsKIAotICAgIEtVUkwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCk7CisgICAgVVJMIG9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTCgpOwogCiAgICAgLy8gZGVzaWduTW9kZSBzdXBwb3J0CiAgICAg
ZW51bSBJbmhlcml0ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0gdHJ1ZSwgaW5oZXJpdCB9OyAg
ICAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRTZWN1cml0eUNv
bnRleHQoKTsKICAgICB2b2lkIGluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAotICAgIHZv
aWQgdXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lk
IHVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0
YXRlUG9wcGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKICAgICBib29s
IHByb2Nlc3NpbmdMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdMb2FkRXZl
bnQ7IH0KQEAgLTExODcsNyArMTE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc3VhbFVw
ZGF0ZXNBbGxvd2VkQnlDbGllbnQoYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAgICBEb2N1bWVudChG
cmFtZSosIGNvbnN0IEtVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKKyAg
ICBEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50
Q2xhc3MpOwogCiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0
cmluZygpOyB9CiAKQEAgLTEyOTMsMTIgKzEyOTMsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
d2VsbEZvcm1lZDsKIAogICAgIC8vIERvY3VtZW50IFVSTHMuCi0gICAgS1VSTCBtX3VybDsgLy8g
RG9jdW1lbnQuVVJMOiBUaGUgVVJMIGZyb20gd2hpY2ggdGhpcyBkb2N1bWVudCB3YXMgcmV0cmll
dmVkLgotICAgIEtVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNl
IHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCi0gICAgS1VSTCBtX2Jhc2VVUkxPdmVycmlk
ZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIg
bV9iYXNlVVJMIChidXQgbm90IG1fYmFzZUVsZW1lbnRVUkwpLgotICAgIEtVUkwgbV9iYXNlRWxl
bWVudFVSTDsgLy8gVGhlIFVSTCBzZXQgYnkgdGhlIDxiYXNlPiBlbGVtZW50LgotICAgIEtVUkwg
bV9jb29raWVVUkw7IC8vIFRoZSBVUkwgdG8gdXNlIGZvciBjb29raWUgYWNjZXNzLgotICAgIEtV
UkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsgLy8gVGhlIHBvbGljeSBVUkwgZm9yIHRoaXJkLXBh
cnR5IGNvb2tpZSBibG9ja2luZy4KKyAgICBVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhl
IFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KKyAgICBVUkwgbV9i
YXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJl
bGF0aXZlIFVSTHMuCisgICAgVVJMIG1fYmFzZVVSTE92ZXJyaWRlOyAvLyBBbiBhbHRlcm5hdGl2
ZSBiYXNlIFVSTCB0aGF0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBtX2Jhc2VVUkwgKGJ1dCBub3Qg
bV9iYXNlRWxlbWVudFVSTCkuCisgICAgVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8vIFRoZSBVUkwg
c2V0IGJ5IHRoZSA8YmFzZT4gZWxlbWVudC4KKyAgICBVUkwgbV9jb29raWVVUkw7IC8vIFRoZSBV
UkwgdG8gdXNlIGZvciBjb29raWUgYWNjZXNzLgorICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOyAvLyBUaGUgcG9saWN5IFVSTCBmb3IgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nLgog
CiAgICAgLy8gRG9jdW1lbnQuZG9jdW1lbnRVUkk6CiAgICAgLy8gQWx0aG91Z2ggVVJMLWxpa2Us
IERvY3VtZW50LmRvY3VtZW50VVJJIGNhbiBhY3R1YWxseSBiZSBzZXQgdG8gYW55CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuY3BwCmluZGV4IGFjZWZhNjcuLjQ3MmY4NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFR5cGUuY3BwCkBAIC0zNiw5ICszNiw5IEBAIERvY3VtZW50VHlwZTo6RG9j
dW1lbnRUeXBlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmCiB7CiB9CiAKLUtVUkwgRG9jdW1lbnRUeXBlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBE
b2N1bWVudFR5cGU6OmJhc2VVUkkoKSBjb25zdAogewotICAgIHJldHVybiBLVVJMKCk7CisgICAg
cmV0dXJuIFVSTCgpOwogfQogCiBTdHJpbmcgRG9jdW1lbnRUeXBlOjpub2RlTmFtZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKaW5kZXggMWRiNjMyNy4uNjUwMTgwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFR5cGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIERvY3VtZW50VHlwZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CiAKLSAgICB2aXJ0dWFs
IEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzY2MTBiNC4uMmUwMTE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTI0NiwxMCArMTI0NiwxMCBAQCB2b2lkIEVs
ZW1lbnQ6OnNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgbV90YWdOYW1lLnNldFByZWZpeChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWlj
U3RyaW5nKCkgOiBwcmVmaXgpOwogfQogCi1LVVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAor
VVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
YmFzZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZShiYXNlQXR0cik7Ci0gICAgS1VSTCBiYXNlKEtV
UkwoKSwgYmFzZUF0dHJpYnV0ZSk7CisgICAgVVJMIGJhc2UoVVJMKCksIGJhc2VBdHRyaWJ1dGUp
OwogICAgIGlmICghYmFzZS5wcm90b2NvbCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJh
c2U7CiAKQEAgLTEyNTcsMTEgKzEyNTcsMTEgQEAgS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29u
c3QKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuIGJhc2U7CiAKLSAgICBjb25zdCBL
VVJMJiBwYXJlbnRCYXNlID0gcGFyZW50LT5iYXNlVVJJKCk7CisgICAgY29uc3QgVVJMJiBwYXJl
bnRCYXNlID0gcGFyZW50LT5iYXNlVVJJKCk7CiAgICAgaWYgKHBhcmVudEJhc2UuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBiYXNlOwogCi0gICAgcmV0dXJuIEtVUkwocGFyZW50QmFzZSwgYmFz
ZUF0dHJpYnV0ZSk7CisgICAgcmV0dXJuIFVSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRlKTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBET01TdHJpbmdNYXAqIEVsZW1lbnQ6OmRhdGFzZXQoKQog
ICAgIHJldHVybiBkYXRhLmRhdGFzZXQoKTsKIH0KIAotS1VSTCBFbGVtZW50OjpnZXRVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1VSTCBFbGVtZW50OjpnZXRV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgaWYgKGVsZW1lbnREYXRhKCkpIHsKQEAgLTI1MDEsNyArMjUwMSw3
IEBAIEtVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJpYnV0ZShuYW1lKSkpOwogfQogCi1LVVJMIEVs
ZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CitVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKGVs
ZW1lbnREYXRhKCkpIHsKQEAgLTI1MTEsNyArMjUxMSw3IEBAIEtVUkwgRWxlbWVudDo6Z2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICNlbmRp
ZgogICAgIFN0cmluZyB2YWx1ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhn
ZXRBdHRyaWJ1dGUobmFtZSkpOwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTCh2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY0MDJkNTIu
LjM0MjZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgT1ZFUlJJREUg
RklOQUwgeyByZXR1cm4gbV90YWdOYW1lLnByZWZpeCgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IG1fdGFnTmFtZS5uYW1lc3BhY2VVUkkoKTsgfQogCi0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkko
KSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3Qg
T1ZFUlJJREUgRklOQUw7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0Owog
CkBAIC0zODQsOCArMzg0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7Ci0gICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJMIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKaW5kZXggMDNiYjNi
Zi4uNjQ2ZjZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUljb25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29u
c3QgS1VSTCYgdXJsLCBJY29uVHlwZSB0eXBlKQorSWNvblVSTCBJY29uVVJMOjpkZWZhdWx0SWNv
blVSTChjb25zdCBVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBJY29uVVJMIHJlc3Vs
dCh1cmwsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIHR5cGUpOwogICAgIHJlc3VsdC5t
X2lzRGVmYXVsdEljb24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lj
b25VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKaW5kZXggMWZiMzU3OC4uNzkx
NmFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWNvblVSTC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIEljb25V
UkxfaAogI2RlZmluZSBJY29uVVJMX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBJ
Y29uVVJMIHsKICAgICBJY29uVHlwZSBtX2ljb25UeXBlOwogICAgIFN0cmluZyBtX3NpemVzOwog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwotICAgIEtVUkwgbV9pY29uVVJMOworICAgIFVSTCBtX2lj
b25VUkw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKQEAgLTYx
LDcgKzYxLDcgQEAgc3RydWN0IEljb25VUkwgewogICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJM
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgSWNvblR5cGUgdHlwZSkKKyAgICBJY29uVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSB0eXBlKQogICAg
ICAgICA6IG1faWNvblR5cGUodHlwZSkKICAgICAgICAgLCBtX3NpemVzKHNpemVzKQogICAgICAg
ICAsIG1fbWltZVR5cGUobWltZVR5cGUpCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBJY29uVVJM
IHsKICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJM
KGNvbnN0IEtVUkwmLCBJY29uVHlwZSk7CisgICAgc3RhdGljIEljb25VUkwgZGVmYXVsdEljb25V
UkwoY29uc3QgVVJMJiwgSWNvblR5cGUpOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IElj
b25VUkwmLCBjb25zdCBJY29uVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHls
ZVNoZWV0T3duZXIuY3BwCmluZGV4IDQxODkzYTEuLjcxMzJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9p
ZCBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgdGV4dCkKIAogICAgIG1fbG9hZGluZyA9IHRydWU7CiAKLSAgICBtX3NoZWV0
ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGVsZW1lbnQsIEtVUkwoKSwgZG9jdW1lbnQu
aW5wdXRFbmNvZGluZygpKTsKKyAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5s
aW5lKGVsZW1lbnQsIFVSTCgpLCBkb2N1bWVudC5pbnB1dEVuY29kaW5nKCkpOwogICAgIG1fc2hl
ZXQtPnNldE1lZGlhUXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZSgpKTsKICAgICBtX3NoZWV0
LT5zZXRUaXRsZShlbGVtZW50LnRpdGxlKCkpOwogICAgIG1fc2hlZXQtPmNvbnRlbnRzKCktPnBh
cnNlU3RyaW5nQXRMaW5lKHRleHQsIG1fc3RhcnRMaW5lTnVtYmVyLnplcm9CYXNlZEludCgpLCBt
X2lzUGFyc2luZ0NoaWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiODllN2QzLi5hYTIxOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMTM4LDkgKzExMzgsOSBAQCBEb2N1bWVudCAqTm9kZTo6
b3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvYyA9PSB0aGlzID8gMCA6IGRvYzsK
IH0KIAotS1VSTCBOb2RlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBOb2RlOjpiYXNlVVJJKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpLT5iYXNlVVJJKCkg
OiBLVVJMKCk7CisgICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVS
SSgpIDogVVJMKCk7CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNv
bnN0CkBAIC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlk
YXRlQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQogICAgICAgICBpdC0+dmFs
dWUtPmludmFsaWRhdGVDYWNoZSgpOwogfQogCi12b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgTm9kZTo6Z2V0U3VicmVzb3Vy
Y2VVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggY2YxNTA3Mi4uNTEzZDZi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91
bmRhcnkuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgi
CisjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIK
QEAgLTE5MSw5ICsxOTEsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogcHNldWRvQXdhcmVGaXJzdENo
aWxkKCkgY29uc3Q7CiAgICAgTm9kZSogcHNldWRvQXdhcmVMYXN0Q2hpbGQoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgYmFzZVVS
SSgpIGNvbnN0OwogICAgIAotICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JikgY29uc3Q7CisgICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0OwogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIGFsbCBhY3R1YWxseSByZXR1cm4g
YSBub2RlLCBidXQgdGhpcyBpcyBvbmx5IGltcG9ydGFudCBmb3IgbGFuZ3VhZ2UgYmluZGluZ3Ms
CiAgICAgLy8gd2hpY2ggd2lsbCBhbHJlYWR5IGtub3cgYW5kIGhvbGQgYSByZWYgb24gdGhlIHJp
Z2h0IG5vZGUgdG8gcmV0dXJuLiBSZXR1cm5pbmcgYm9vbCBhbGxvd3MKQEAgLTY2NCw3ICs2NjQs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQqIG9sZERvY3VtZW50KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3QgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3QgeyB9CiAKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhIYXNSYXJlRGF0YUZsYWcpOyB9CiAKQEAgLTczNyw3ICs3MzcsNyBAQCBwcm90ZWN0ZWQ6CiB9
OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFuZCBp
biBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCi1pbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVS
TChMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQoraW5saW5lIHZvaWQg
YWRkU3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpCiAgICAgICAgIHVybHMuYWRkKHVybCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGUyODgyNTku
LjUxMDg5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNr
U3R5bGVTaGVldCgpCiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBzeW50aGV0aWMg
WFNMU3R5bGVTaGVldCB0aGF0IGlzIGVtYmVkZGVkLiAgSXQgbmVlZHMgdG8gYmUgYWJsZQogICAg
ICAgICAgICAgLy8gdG8ga2ljayBvZmYgaW1wb3J0L2luY2x1ZGUgbG9hZHMgdGhhdCBjYW4gaGFu
ZyBvZmYgc29tZSBwYXJlbnQgc2hlZXQuCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkgewotICAg
ICAgICAgICAgICAgIEtVUkwgZmluYWxVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2xvY2FsSHJlZik7
CisgICAgICAgICAgICAgICAgVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhy
ZWYpOwogICAgICAgICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJl
ZGRlZCh0aGlzLCBmaW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7
CiAgICAgICAgICAgICB9CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb246OnNoZWV0TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NT
dHlsZVNoZWV0KiBzaGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIGlm
ICghaW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CkBAIC0yMTQsNyAr
MjE0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXMKIH0KIAogI2lmIEVOQUJMRShYU0xUKQot
dm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KQordm9pZCBQ
cm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVm
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAgQVNTRVJU
KG1faXNYU0wpOwogICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUodGhpcywgaHJl
ZiwgYmFzZVVSTCk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b246OnNldENTU1N0eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCkKICAg
ICBzaGVldC0+c2V0RGlzYWJsZWQobV9hbHRlcm5hdGUpOwogfQogCi12b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdAordm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGlmICgh
c2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oCmluZGV4IGRiMjk0NTIuLjQ3MTk2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAK
ICAgICB2b2lkIGNoZWNrU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CisgICAgdmlydHVhbCB2
b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwog
I2lmIEVOQUJMRShYU0xUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogI2VuZGlmCiAKICAgICBi
b29sIGlzTG9hZGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdm9pZCBwYXJzZVN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBzaGVldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5MDAyMGViLi5mNzQ4YWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yODAsNyArMjgwLDcg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjbG9zZU1lc3NhZ2VQb3J0cygpIHsKIAog
Ym9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzYW5pdGl6ZVNjcmlwdEVycm9yKFN0cmluZyYg
ZXJyb3JNZXNzYWdlLCBpbnQmIGxpbmVOdW1iZXIsIGludCYgY29sdW1uTnVtYmVyLCBTdHJpbmcm
IHNvdXJjZVVSTCwgQ2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgS1VSTCB0YXJn
ZXRVUkwgPSBjb21wbGV0ZVVSTChzb3VyY2VVUkwpOworICAgIFVSTCB0YXJnZXRVUkwgPSBjb21w
bGV0ZVVSTChzb3VyY2VVUkwpOwogICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0
KHRhcmdldFVSTCkgfHwgKGNhY2hlZFNjcmlwdCAmJiBjYWNoZWRTY3JpcHQtPnBhc3Nlc0FjY2Vz
c0NvbnRyb2xDaGVjayhzZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBlcnJvck1lc3NhZ2UgPSAiU2NyaXB0IGVycm9yLiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhOWU5ZTNiLi4xYzNlY2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBl
cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1
cml0eUNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VS
TCYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1
cml0eUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAK
aW5kZXggNzRkM2UzYi4uZDgzZmRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4
dC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShQYXNzT3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4KICAgICBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKIH0KIAotYm9vbCBT
ZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICAvLyBJZiB3ZSBoYXZlbid0IGluaXRpYWxpemVkIG91ciBzZWN1
cml0eSBvcmlnaW4gYnkgbm93LCB0aGlzIGlzIHByb2JhYmx5CiAgICAgLy8gYSBuZXcgd2luZG93
IGNyZWF0ZWQgdmlhIHRoZSBBUEkgKGkuZS4sIHRoYXQgbGFja3MgYW4gb3JpZ2luIGFuZCBsYWNr
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCmluZGV4IDMyYWUwZGYuLjJkYjVkMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIENvbnRlbnRT
ZWN1cml0eVBvbGljeTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZs
YWcgewogICAgIC8vIFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrLyNhdHRyLWlmcmFtZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3gg
ZmxhZ3MuCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTYW5kYm94RmxhZ3Mgc2FuZGJv
eEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7IH0KICAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIHsgcmV0dXJuIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5LmdldCgpOyB9CiAKLSAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IFVS
TCYpIGNvbnN0OwogCiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBt
YXNrKTsKICAgICBib29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNrKSBjb25zdCB7IHJl
dHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmNwcAppbmRleCBlNDVmYjgwLi45Y2MzZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1l
bnQuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVBbGxJ
bmxpbmVTdHlsZVByb3BlcnRpZXMoKQogICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogfQogCi12
b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgaWYgKGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gZWxlbWVudERhdGEoKSA/IGVsZW1l
bnREYXRhKCktPmlubGluZVN0eWxlKCkgOiAwKQogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHModXJscywgZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDBjYzBiOTIuLjE4YzZlOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0
YWJsZVN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdTdHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBlYjZmODY0Li5hMzA0YjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMTc0LDEyICsxMTc0LDEyIEBAIHZvaWQgRWRpdG9yOjpz
aW1wbGlmeU1hcmt1cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpCiAgICAgYXBwbHlD
b21tYW5kKFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9k
ZSwgKGVuZE5vZGUpID8gTm9kZVRyYXZlcnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKIH0KIAot
dm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgY29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29w
eUFuZFBhc3RlKCkpOwogfQogCi12b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCit2b2lkIEVkaXRv
cjo6Y29weVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkw7CiAgICAg
cGFzdGVib2FyZFVSTC51cmwgPSB1cmw7CkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIEVkaXRv
cjo6Y29weUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gcmVzdWx0LmFic29sdXRlTGlu
a1VSTCgpOworICAgIFVSTCB1cmwgPSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGFiMDllYmIuLmI1YWY3NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaApAQCAtMTI2LDggKzEyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
c3RlQXNQbGFpblRleHQoKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGUoKTsKIAotICAgIHZvaWQg
Y29weVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBjb3B5
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CisgICAg
dm9pZCBjb3B5VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQg
Y29weVVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CiAg
ICAgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCiAgICAgU3RyaW5nIHJl
YWRQbGFpblRleHRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CkBAIC00MTMsNyArNDEzLDcg
QEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9p
ZCB3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7Ci0gICAgdm9pZCB3cml0
ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggOWRmNTk1Mi4uNWU4YWJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAj
aW5jbHVkZSAiWExpbmtOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCmluZGV4IGZjNzgxYzIuLmYzNTA5ZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcApAQCAtMzcsNyArMzcsNyBA
QCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYsIEVsZW1lbnQmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikK
K3ZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGZkN2YwYWMuLjQ0
YWI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTMzNiw3
ICszMzYsNyBAQCBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVsZW1lbnQsIFJl
ZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomCiAgICAgY2FjaGVkSW1hZ2UgPSB0ZW50
YXRpdmVDYWNoZWRJbWFnZTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFz
dGVib2FyZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggYmZiNmE0Ni4uZGQ0NDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1h
Yy5tbQpAQCAtMzg2LDcgKzM4Niw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0
ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgU3RyaW5nIHN0cmlu
ZyA9IHRleHQudGV4dDsKIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGlzIDEw
MCUgY29ycmVjdCBzaW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpdIGRvZXMgbm90
IGhhbmRsZQotICAgIC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUg
S1VSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICAvLyBhbGwgdGhlIHNhbWUgY2Fz
ZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4K
ICAgICBpZiAodGV4dC5pc1VSTCkKICAgICAgICAgc3RyaW5nID0gY2xpZW50KCktPnVzZXJWaXNp
YmxlU3RyaW5nKFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCkBAIC0zOTQsNyArMzk0
LDcgQEAgU3RyaW5nIEVkaXRvcjo6cGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFzdGVi
b2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVj
b21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAotdm9pZCBFZGl0b3I6Ondy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1h
Z2VFbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVk
aXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVt
ZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ewogICAgIFBhc3RlYm9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2U7CiAKQEAgLTQzNyw3ICs0Mzcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogfTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgRWRpdG9y
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyKQogICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoS1VSTCgpLCBidWZmZXIuZ2V0KCkpOworICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZm
ZXIuZ2V0KCkpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC01MzUsMTMgKzUzNSwxMyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZElt
YWdlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0CiAgICAgQVNTRVJUKHR5
cGUuY29udGFpbnMoJy8nKSk7CiAgICAgU3RyaW5nIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lv
biA9IHR5cGU7CiAgICAgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uLnJlcGxhY2UoJy8nLCAn
LicpOwotICAgIEtVUkwgaW1hZ2VVUkwgPSBLVVJMKEtVUkwoKSwgIndlYmtpdC1mYWtlLXVybDov
LyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxlbmFtZVdp
dGhFeHRlbnNpb24pOworICAgIFVSTCBpbWFnZVVSTCA9IFVSTChVUkwoKSwgIndlYmtpdC1mYWtl
LXVybDovLyIgKyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxl
bmFtZVdpdGhFeHRlbnNpb24pOwogCiAgICAgZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS5jcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShidWZmZXIsIGltYWdlVVJMLCB0eXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmlu
ZygpKSk7CiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVu
dFJlYWRlcjo6cmVhZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiti
b29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAodXJsLnN0cmluZygpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGQyZmZm
OGMuLjUxZWYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVh
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxh
dG9yLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAt
MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50
KiBmcmFnbWVudCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogewogICAgIFZlY3RvcjxBdHRyaWJ1
dGVDaGFuZ2U+IGNoYW5nZXM7CiAKLSAgICBLVVJMIHBhcnNlZEJhc2VVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBiYXNlVVJMKTsKKyAgICBVUkwgcGFyc2VkQmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsIGJh
c2VVUkwpOwogCiAgICAgZm9yIChhdXRvIGVsZW1lbnQgPSBlbGVtZW50RGVzY2VuZGFudHMoZnJh
Z21lbnQpLmJlZ2luKCksIGVuZCA9IGVsZW1lbnREZXNjZW5kYW50cyhmcmFnbWVudCkuZW5kKCk7
IGVsZW1lbnQgIT0gZW5kOyArK2VsZW1lbnQpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNB
dHRyaWJ1dGVzKCkpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxz
KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVBdChpKTsKICAg
ICAgICAgICAgIGlmIChlbGVtZW50LT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmICFhdHRy
aWJ1dGUudmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQo
QXR0cmlidXRlQ2hhbmdlKCYqZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgS1VSTChwYXJzZWRC
YXNlVVJMLCBhdHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBj
aGFuZ2VzLmFwcGVuZChBdHRyaWJ1dGVDaGFuZ2UoJiplbGVtZW50LCBhdHRyaWJ1dGUubmFtZSgp
LCBVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmluZygpKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50KiBkb2N1
bQogICAgIHRhZ2dlZE1hcmt1cC5hcHBlbmQobWFya3VwLnN1YnN0cmluZyhmcmFnbWVudEVuZCkp
OwogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHRhZ2dlZEZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwKGRvY3VtZW50LCB0YWdnZWRNYXJrdXAudG9TdHJpbmcoKSwgYmFz
ZVVSTCwgcGFyc2VyQ29udGVudFBvbGljeSk7Ci0gICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWRE
b2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICBSZWZQdHI8RG9jdW1l
bnQ+IHRhZ2dlZERvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgdGFn
Z2VkRG9jdW1lbnQtPnRha2VBbGxDaGlsZHJlbkZyb20odGFnZ2VkRnJhZ21lbnQuZ2V0KCkpOwog
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGVCZWZvcmVDb250ZXh0OwpAQCAtOTUyLDcgKzk1Miw3IEBA
IFN0cmluZyBjcmVhdGVGdWxsTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4g
ZG9jdW1lbnRUeXBlU3RyaW5nKG5vZGUtPmRvY3VtZW50KCkpICsgY3JlYXRlTWFya3VwKHJhbmdl
LCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlKTsKIH0KIAotU3RyaW5nIHVybFRvTWFya3VwKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyB1cmxUb01hcmt1cChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmdCdWlsZGVy
IG1hcmt1cDsKICAgICBtYXJrdXAuYXBwZW5kKCI8YSBocmVmPVwiIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaAppbmRleCBjYTEyMGE0Li4xNTY1YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgK
QEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50
OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgUmFuZ2U7CkBA
IC03MCw3ICs3MCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJl
bk9ubHkgPSBJbmNsdWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwCiBTdHJpbmcgY3JlYXRlRnVs
bE1hcmt1cChjb25zdCBOb2RlKik7CiBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBSYW5n
ZSopOwogCi1TdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0
bGUpOworU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogCiBTdHJpbmcgZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERvY3VtZW50Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA2NDI1MjY3Li5jNmI0
OGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0y
MDMsMTIgKzIwMywxMiBAQCBzdGF0aWMgdm9pZCBkaWRXcml0ZShBc3luY0ZpbGVTdHJlYW0qIHBy
b3h5LCBpbnQgYnl0ZXNXcml0dGVuKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZFdyaXRl
KGJ5dGVzV3JpdHRlbik7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjp3cml0ZShjb25zdCBL
VVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpCit2b2lkIEFzeW5j
RmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpCiB7CiAgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhy
ZWFkVGFzayh0aGlzLCAmQXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZCwgYmxvYlVS
TCwgcG9zaXRpb24sIGxlbmd0aCkpOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGVP
bkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKQordm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFVS
TCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogewogICAgIGludCBi
eXRlc1dyaXR0ZW4gPSBtX3N0cmVhbS0+d3JpdGUoYmxvYlVSTCwgcG9zaXRpb24sIGxlbmd0aCk7
CiAgICAgY2FsbE9uTWFpblRocmVhZChkaWRXcml0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgYnl0ZXNXcml0dGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oCmluZGV4IDY4ZjIzZTkuLjg0OWVhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3lu
Y0ZpbGVTdHJlYW0uaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEZpbGVTdHJlYW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIAogY2xhc3MgQXN5bmNGaWxlU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8QXN5
bmNGaWxlU3RyZWFtPiB7CiBwdWJsaWM6CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG9wZW5Gb3JXcml0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xvc2UoKTsK
ICAgICB2b2lkIHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIHdyaXRl
KGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7Cisg
ICAgdm9pZCB3cml0ZShjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50
IGxlbmd0aCk7CiAgICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pOwogCiAgICAg
Ly8gU3RvcHMgdGhlIHByb3h5IGFuZCBzY2hlZHVsZXMgaXQgdG8gYmUgZGVzdHJ1Y3RlZC4gQWxs
IHRoZSBwZW5kaW5nIHRhc2tzIHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIGZpbGUgc3RyZWFtIHdp
bGwgYmUgY2xvc2VkLgpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkZv
cldyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBjbG9zZU9u
RmlsZVRocmVhZCgpOwogICAgIHZvaWQgcmVhZE9uRmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGlu
dCBsZW5ndGgpOwotICAgIHZvaWQgd3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVS
TCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIHdyaXRlT25GaWxl
VGhyZWFkKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KTsKICAgICB2b2lkIHRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbik7CiAK
ICAgICBSZWZQdHI8RmlsZVN0cmVhbT4gbV9zdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApp
bmRleCBjMDM3ODRmLi40NTQ3MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTU0LDIw
ICs1NCwyMCBAQCBlbnVtIFNsaWNlSGlzdG9ncmFtRW51bSB7CiAKIGNsYXNzIEJsb2JVUkxSZWdp
c3RyeSA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0
cnkmIHJlZ2lzdHJ5KCk7CiB9OwogCiAKLXZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVS
TChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lz
dHJhYmxlKiBibG9iKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgcHVibGljVVJMLCBVUkxSZWdpc3RyYWJsZSogYmxv
YikKIHsKICAgICBBU1NFUlQoJmJsb2ItPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbiwgcHVibGljVVJMLCBzdGF0
aWNfY2FzdDxCbG9iKj4oYmxvYiktPnVybCgpKTsKIH0KIAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6
OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVu
cmVnaXN0ZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eTo6dW5yZWdpc3RlckJsb2JVUkwodXJsKTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBCbG9iOjpC
bG9iKFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhLCBsb25nIGxvbmcgc2l6ZSkKICAgICBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYmxv
YkRhdGEpOwogfQogCi1CbG9iOjpCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5n
JiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKK0Jsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGNv
bnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgOiBtX3R5cGUoQmxvYjo6bm9y
bWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oCmluZGV4IDIxYjMxYjQuLjAzNTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBA
IC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEJsb2JfaAogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRm9yIGRl
c2VyaWFsaXphdGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3Qg
S1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEJsb2I+IGNyZWF0ZShjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChCbG9iOjpp
c05vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmxvYihzcmNVUkwsIHR5cGUsIHNpemUpKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB+QmxvYigpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlcm5hbFVSTDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcm5hbFVSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9zaXplKTsgfQpA
QCAtOTEsMTIgKzkxLDEyIEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFBhc3NPd25QdHI8QmxvYkRh
dGE+LCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgotICAg
IEJsb2IoY29uc3QgS1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBz
aXplKTsKKyAgICBCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxv
bmcgbG9uZyBzaXplKTsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmlu
ZyB0byB0aGUgYmxvYiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVz
CiAgICAgLy8gYXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJM
IGlzIG5ldmVyIHVzZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8g
YW4gSFRNTCBvciBmb3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNl
ZCBmb3IgdGhvc2UgcHVycG9zZXMuCi0gICAgS1VSTCBtX2ludGVybmFsVVJMOworICAgIFVSTCBt
X2ludGVybmFsVVJMOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggNjU5MDA3Yi4uM2RlYmYzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRl
ICJCbG9iVVJMLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00MSwxOCArNDEsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjb25zdCBjaGFyIEJsb2JVUkw6OmtCbG9iUHJvdG9jb2xbXSA9ICJibG9iIjsKIAotS1VS
TCBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2lu
KQorVVJMIEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4pCiB7CiAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAgICByZXR1cm4gY3JlYXRl
QmxvYlVSTChzZWN1cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CiB9CiAKLUtVUkwgQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKQorVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKIHsK
ICAgICByZXR1cm4gY3JlYXRlQmxvYlVSTCgiYmxvYmludGVybmFsOi8vIik7CiB9CiAKLVN0cmlu
ZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEJsb2JVUkw6Omdl
dE9yaWdpbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Js
b2JQcm90b2NvbCkpOwogCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBCbG9iVVJMOjpnZXRPcmln
aW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0
YXJ0SW5kZXgsIGVuZEluZGV4IC0gc3RhcnRJbmRleCAtIDEpOwogfQogCi1TdHJpbmcgQmxvYlVS
TDo6Z2V0SWRlbnRpZmllcihjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgQmxvYlVSTDo6Z2V0SWRl
bnRpZmllcihjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Js
b2JQcm90b2NvbCkpOwogCkBAIC02OSwxMSArNjksMTEgQEAgU3RyaW5nIEJsb2JVUkw6OmdldElk
ZW50aWZpZXIoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3Ry
aW5nKHN0YXJ0SW5kZXgpOwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUJsb2JVUkwoY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcpCitVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKICAgICBBU1NFUlQoIW9yaWdpblN0cmluZy5pc0VtcHR5
KCkpOwogICAgIFN0cmluZyB1cmxTdHJpbmcgPSAiYmxvYjoiICsgZW5jb2RlV2l0aFVSTEVzY2Fw
ZVNlcXVlbmNlcyhvcmlnaW5TdHJpbmcpICsgJy8nICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICBy
ZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAyY2FlYzI5Li5jN2ZhNGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBC
bG9iVVJMX2gKICNkZWZpbmUgQmxvYlVSTF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsMTQgKzQ4LDE0IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogLy8gYmUgdXNlZCB3aXRoIFJlc291cmNlSGFuZGxlIG9yIEZp
bGVSZWFkZXIuCiBjbGFzcyBCbG9iVVJMIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgS1VSTCBjcmVh
dGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qKTsKLSAgICBzdGF0aWMgS1VSTCBjcmVhdGVJbnRl
cm5hbFVSTCgpOwotICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IEtVUkwmKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIGdldElkZW50aWZpZXIoY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBV
UkwgY3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIFVSTCBjcmVh
dGVJbnRlcm5hbFVSTCgpOworICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IFVSTCYp
OworICAgIHN0YXRpYyBTdHJpbmcgZ2V0SWRlbnRpZmllcihjb25zdCBVUkwmKTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogYmxvYlByb3RvY29sKCkgeyByZXR1cm4ga0Jsb2JQcm90b2NvbDsgfQog
CiBwcml2YXRlOgotICAgIHN0YXRpYyBLVVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcpOworICAgIHN0YXRpYyBVUkwgY3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcm
IG9yaWdpblN0cmluZyk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIga0Jsb2JQcm90b2NvbFtdOwog
ICAgIEJsb2JVUkwoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA1NGU1YTkw
Li43NGIwMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3Rh
dGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhNZXRhZGF0
YShjb25zdCBTdHJpbmcmIGZpbGUKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFzZSgpOwogfQog
Ci1zdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVt
VVJMKGNvbnN0IEtVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRh
dGEpCitzdGF0aWMgUGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lz
dGVtVVJMKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKIHsKICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0
ZSgpOwogICAgIGJsb2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50VHlwZUZyb21GaWxl
TmFtZShmaWxlU3lzdGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtub3duQ29udGVudFR5cGVzKSk7
CkBAIC0xMDcsNyArMTA3LDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRl
bnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkKIHsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQorRmlsZTo6Rmls
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUp
CiAgICAgOiBCbG9iKHVybCwgdHlwZSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKICNpZiBFTkFC
TEUoRklMRV9TWVNURU0pCkBAIC0xNDIsNyArMTQyLDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiB9CiAKLUZpbGU6OkZp
bGUoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0
YSkKK0ZpbGU6OkZpbGUoY29uc3QgVVJMJiBmaWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRh
dGEmIG1ldGFkYXRhKQogICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1VUkwo
ZmlsZVN5c3RlbVVSTCwgbWV0YWRhdGEpLCBtZXRhZGF0YS5sZW5ndGgpCiAgICAgLCBtX2ZpbGVT
eXN0ZW1VUkwoZmlsZVN5c3RlbVVSTCkKICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggYWJlNTU0NC4uNWViNmY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEZpbGVNZXRhZGF0YTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIEZpbGUg
OiBwdWJsaWMgQmxvYiB7CiBwdWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3Qg
U3RyaW5nJiB0eXBlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgc3JjVVJMLCB0eXBlKSk7
CiAgICAgfQpAQCAtNjgsMTIgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBGaWxlKG5hbWUsIG1ldGFkYXRhKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZT4gY3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNy
ZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGaWxlTWV0YWRhdGEm
IG1ldGFkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHVybCwg
bWV0YWRhdGEpKTsKICAgICB9CiAKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJl
dHVybiBtX2ZpbGVTeXN0ZW1VUkw7IH0KKyAgICBVUkwgZmlsZVN5c3RlbVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZVN5c3RlbVVSTDsgfQogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUgYSBmaWxl
IHdpdGggYSBuYW1lIGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNz
b2NpYXRlZCBET00gcHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRl
ZCBpbiB0aGUgcGF0aC4KQEAgLTEwNSwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAgICAgRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsKIAogICAgIC8vIEZv
ciBkZXNlcmlhbGl6YXRpb24uCi0gICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtV
UkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29udGVudFR5cGVMb29rdXBQ
b2xpY3kpOwogCiAjIGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgRmlsZU1ldGFkYXRhJik7Ci0gICAgRmlsZShjb25zdCBLVVJMJiBmaWxl
U3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmKTsKKyAgICBGaWxlKGNvbnN0IFVSTCYgZmls
ZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBoYXMgYSB2YWxpZCBzbmFwc2hvdCBtZXRhZGF0YSAoaS5lLiBtX3NuYXBzaG90U2l6
ZSA+PSAwKS4KICAgICBib29sIGhhc1ZhbGlkU25hcHNob3RNZXRhZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc25hcHNob3RTaXplID49IDA7IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX25hbWU7CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgS1VSTCBt
X2ZpbGVTeXN0ZW1VUkw7CisgICAgVVJMIG1fZmlsZVN5c3RlbVVSTDsKIAogICAgIC8vIElmIG1f
c25hcHNob3RTaXplIGlzIG5lZ2F0aXZlIChpbml0aWFsaXplZCB0byAtMSBieSBkZWZhdWx0KSwg
dGhlIHNuYXBzaG90IG1ldGFkYXRhIGlzIGludmFsaWQgYW5kIHdlIHJldHJpZXZlIHRoZSBsYXRl
c3QgbWV0YWRhdGEgc3luY2hyb25vdXNseSBpbiBzaXplKCksIGxhc3RNb2RpZmllZFRpbWUoKSBh
bmQgc2xpY2UoKS4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBhcmUg
dXNlZCBkaXJlY3RseSBpbiB0aG9zZSBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaAppbmRleCAyNGYxZTdmLi44MGUxMzQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJM
RShCTE9CKQogCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTA2LDcg
KzEwNiw3IEBAIHByaXZhdGU6CiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgU3Ry
aW5nIG1fZGF0YVR5cGU7CiAKLSAgICBLVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBVUkwgbV91
cmxGb3JSZWFkaW5nOwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKIAog
ICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxMGJmYjJlLi4y
MGRjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9i
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5jcHAKQEAgLTQ5LDI2ICs0OSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgQmxvYlJlZ2lzdHJ5Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJM
JiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogICAgICAgICA6IHVybCh1cmwu
Y29weSgpKQogICAgICAgICAsIGJsb2JEYXRhKGJsb2JEYXRhKQogICAgIHsKICAgICAgICAgdGhp
cy0+YmxvYkRhdGEtPmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CiAgICAgfQogCi0gICAgQmxv
YlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKKyAg
ICBCbG9iUmVnaXN0cnlDb250ZXh0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkK
ICAgICAgICAgOiB1cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBzcmNVUkwoc3JjVVJMLmNvcHko
KSkKICAgICB7CiAgICAgfQogCi0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1
cmwpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCkKICAgICAgICAgOiB1
cmwodXJsLmNvcHkoKSkKICAgICB7CiAgICAgfQogCi0gICAgS1VSTCB1cmw7Ci0gICAgS1VSTCBz
cmNVUkw7CisgICAgVVJMIHVybDsKKyAgICBVUkwgc3JjVVJMOwogICAgIE93blB0cjxCbG9iRGF0
YT4gYmxvYkRhdGE7CiB9OwogCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVy
QmxvYlVSTFRhc2sodm9pZCogY29udGV4dCkKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJs
b2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5ibG9i
RGF0YS5yZWxlYXNlKCkpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRh
KQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewogICAgIGlmIChpc01haW5U
aHJlYWQoKSkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxv
YkRhdGEpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZy
b21UYXNrKHZvaWQqIGNvbnRleHQpCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCit2
b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgLy8g
SWYgdGhlIGJsb2IgVVJMIGNvbnRhaW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29udGV4dCB3
aXRoIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1hcHBpbmcg
YmV0d2VlbiB1cmwgYW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJldHJpdmVk
IHdoZW4gZG9pbmcgc2VjdXJpdHkgb3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4gJiYgQmxv
YlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRp
YyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdp
c3RyeSgpLnVucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CiB9CiAK
LXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VS
TCYgdXJsKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51
bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7CkBAIC0xMzYs
MjYgKzEzNiwyNiBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1
cmwpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpn
ZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG9yaWdpbk1hcCgp
LT5nZXQodXJsLnN0cmluZygpKTsKIH0KIAogI2Vsc2UKIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+
KQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiwgUGFzc093blB0cjxCbG9iRGF0YT4pCiB7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQogewogfQogCi12b2lkIFRocmVh
ZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKQordm9pZCBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKQogewog
fQogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpn
ZXRDYWNoZWRPcmlnaW4oY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJikKIHsKICAg
ICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmgKaW5kZXggZjY2YmQxMC4uODNlNTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTM3LDE4ICszNywxOCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iRGF0YTsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPik7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9i
VVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCk7Ci0g
ICAgc3RhdGljIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpOworICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPik7
CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUgZ2l2
ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQgdGhl
IHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTAogICAgIC8v
IGluIHRoZSBibG9iIFVSTC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCBj
NTI4Y2ExLi5iODUzMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQ2FjaGVkRnJhbWU6OmNsZWFyKCkKICAgICBtX2RvY3Vt
ZW50ID0gMDsKICAgICBtX3ZpZXcgPSAwOwogICAgIG1fbW91c2VQcmVzc05vZGUgPSAwOwotICAg
IG1fdXJsID0gS1VSTCgpOworICAgIG1fdXJsID0gVVJMKCk7CiAKICAgICBtX2NhY2hlZEZyYW1l
UGxhdGZvcm1EYXRhLmNsZWFyKCk7CiAgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEuY2xlYXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAppbmRleCA5ODM4ZjczLi4zODY0Y2E0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAj
ZGVmaW5lIENhY2hlZEZyYW1lX2gKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURh
dGEuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygp
IGNvbnN0IHsgcmV0dXJuIG1fdmlldy5nZXQoKTsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogICAgIGJvb2wgaXNNYWluRnJhbWUoKSB7IHJldHVybiBtX2lzTWFpbkZyYW1l
OyB9CiAKIHByb3RlY3RlZDoKQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAgICBSZWZQdHI8RnJhbWVWaWV3
PiBtX3ZpZXc7CiAgICAgUmVmUHRyPE5vZGU+IG1fbW91c2VQcmVzc05vZGU7Ci0gICAgS1VSTCBt
X3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgT3duUHRyPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4g
bV9jYWNoZWRGcmFtZVNjcmlwdERhdGE7CiAgICAgT3duUHRyPENhY2hlZEZyYW1lUGxhdGZvcm1E
YXRhPiBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhOwogICAgIGJvb2wgbV9pc01haW5GcmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggMWNiNTZiZi4uYjRmMDVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCBIaXN0b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cgogICAgIGljb25EYXRhYmFzZSgpLnJldGFpbklj
b25Gb3JQYWdlVVJMKG1fdXJsU3RyaW5nKTsKIH0KIAotSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVt
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFy
ZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgOiBtX3VybFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAg
LCBtX29yaWdpbmFsVVJMU3RyaW5nKHVybC5zdHJpbmcoKSkKICAgICAsIG1fdGFyZ2V0KHRhcmdl
dCkKQEAgLTI0MCwxNCArMjQwLDE0IEBAIGRvdWJsZSBIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWRU
aW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0VmlzaXRlZFRpbWU7CiB9CiAKLUtVUkwgSGlz
dG9yeUl0ZW06OnVybCgpIGNvbnN0CitVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CisgICAgcmV0dXJu
IFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsU3RyaW5nKTsKIH0KIAotS1VSTCBIaXN0b3J5SXRl
bTo6b3JpZ2luYWxVUkwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX29yaWdpbmFsVVJMU3Ry
aW5nKTsKKyAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmlu
Zyk7CiB9CiAKIGNvbnN0IFN0cmluZyYgSGlzdG9yeUl0ZW06OnJlZmVycmVyKCkgY29uc3QKQEAg
LTI4Miw3ICsyODIsNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiAgICAgbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKHRoaXMpOwogfQog
Ci12b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBIaXN0b3J5
SXRlbTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUo
dGhpcyk7CiAgICAgc2V0VVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKaW5kZXggNTczYzFiMS4uMGMzNDg4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvSGlzdG9yeUl0ZW0uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEZvcm1EYXRhOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKQEAgLTgxLDcgKzgxLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSh1
cmxTdHJpbmcsIHRpdGxlLCBhbHRlcm5hdGVUaXRsZSwgbGFzdFZpc2l0ZWQpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5n
JiB0aXRsZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhp
c3RvcnlJdGVtKHVybCwgdGFyZ2V0LCBwYXJlbnQsIHRpdGxlKSk7CiAgICAgfQpAQCAtMTA5LDgg
KzEwOSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKCkgY29u
c3Q7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiBwYXJlbnQoKSBjb25zdDsKLSAgICBLVVJMIHVy
bCgpIGNvbnN0OwotICAgIEtVUkwgb3JpZ2luYWxVUkwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkg
Y29uc3Q7CisgICAgVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcigpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1RhcmdldEl0ZW0oKSBjb25zdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXREb2N1bWVudFN0YXRlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9p
ZCBjbGVhckRvY3VtZW50U3RhdGUoKTsKIAotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsK
KyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHNldFVSTFN0cmluZyhjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgc2V0UmVmZXJyZXIoY29uc3QgU3RyaW5nJik7CkBAIC0yMjIsNyArMjIyLDcg
QEAgcHJpdmF0ZToKICAgICBIaXN0b3J5SXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQp
OwogICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQp
OwotICAgIEhpc3RvcnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBIaXN0
b3J5SXRlbShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0
cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGV4cGxpY2l0IEhpc3Rv
cnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcAppbmRleCBjNzE2NGNmLi4zMTA2MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2Fj
aGUuY3BwCkBAIC05NSw4ICs5NSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1l
RGVjaXNpb24oRnJhbWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIHJldHVybiAx
IDw8IE5vRG9jdW1lbnRMb2FkZXI7CiAgICAgfQogCi0gICAgS1VSTCBjdXJyZW50VVJMID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwotICAgIEtVUkwgbmV3VVJMID0g
ZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2Fk
ZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpIDogS1VSTCgpOworICAgIFVS
TCBjdXJyZW50VVJMID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwor
ICAgIFVSTCBuZXdVUkwgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRl
cigpID8gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkg
OiBVUkwoKTsKICAgICBpZiAoIW5ld1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIFBDTE9HKCIgRGV0
ZXJtaW5pbmcgaWYgZnJhbWUgY2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCIsIGN1cnJl
bnRVUkwuc3RyaW5nKCksICIpIHRvICgiLCBuZXdVUkwuc3RyaW5nKCksICIpOiIpOwogICAgIGVs
c2UKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lv
bihQYWdlKiBwYWdlKQogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVz
IHRoYXQgaGF2ZSBhY3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAocGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVt
cHR5RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgY3VycmVudFVSTCA9IHBh
Z2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBwYWdlLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKKyAgICBVUkwg
Y3VycmVudFVSTCA9IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkg
PyBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IFVS
TCgpOwogICAgIGlmIChjdXJyZW50VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGFlMzY5MzguLmFjOWU3NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAg
LTUyLDcgKzUyLDcgQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEIKIAogU3RyaW5nIERPTVVSTDo6
Y3JlYXRlUHVibGljVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKIHsKLSAgICBLVVJMIHB1YmxpY1VS
TCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGlj
VVJMKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChw
dWJsaWNVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb24KICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3Ry
aW5nKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KHVybCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICByZXF1
ZXN0LnNldENhY2hlUGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigp
LT5jYWNoZVBhcnRpdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
VVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCmluZGV4IGIzNTgyNjMuLjdkMjE0
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9ET01VUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBET01VUkxf
aAogI2RlZmluZSBET01VUkxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA1YmFhNGM4Li45NDIxMzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNDI1LDcgKzQyNSw3IEBA
IHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgSFRNTERvY3Vt
ZW50UGFyc2VyOjpmaW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVj
dG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorRlRQRGlyZWN0b3J5
RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggZTdlNTJm
Ny4uMGQ5MTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQu
aApAQCAtMzMsMTMgKzMzLDEzIEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogICAgIAogY2xh
c3MgRlRQRGlyZWN0b3J5RG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVj
dG9yeURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUs
IHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFt
ZSosIGNvbnN0IEtVUkwmKTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0
IFVSTCYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFy
c2VyKCk7CiB9OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRl
eCAyNGEzNzM4Li5lMjE1Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1D
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cApAQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRGb3JtU3RydWN0
dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nQnVpbGRlCiAKIHN0YXRpYyBp
bmxpbmUgU3RyaW5nIGZvcm1TaWduYXR1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtKQog
ewotICAgIEtVUkwgYWN0aW9uVVJMID0gZm9ybS5nZXRVUkxBdHRyaWJ1dGUoYWN0aW9uQXR0cik7
CisgICAgVVJMIGFjdGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0dHIpOwog
ICAgIC8vIFJlbW92ZSB0aGUgcXVlcnkgcGFydCBiZWNhdXNlIGl0IG1pZ2h0IGNvbnRhaW4gdm9s
YXRpbGUgcGFyYW1ldGVycyBzdWNoCiAgICAgLy8gYXMgYSBzZXNzaW9uIGtleS4KICAgICBhY3Rp
b25VUkwuc2V0UXVlcnkoU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcAppbmRleCA3ODRiYjBlLi4xOWQ2NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgSFRNTEFuY2hv
ckVsZW1lbnQ6OmRyYWdnYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShocmVm
QXR0cik7CiB9CiAKLUtVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25zdAorVVJMIEhU
TUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRl
KGhyZWZBdHRyKSkpOwogfQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxl
bWVudDo6aGFzaCgpIGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJs
ID0gaHJlZigpOwogICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCiAgICAgICAgIHVybC5zZXRGcmFn
bWVudElkZW50aWZpZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKICAgICBlbHNlCkBAIC0zNTEsNyAr
MzUxLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZh
bHVlKQogCiBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhvc3QoKSBjb25zdAogewotICAgIGNv
bnN0IEtVUkwmIHVybCA9IGhyZWYoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGhyZWYoKTsKICAg
ICBpZiAodXJsLmhvc3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCiAgICAgICAgIHJldHVybiB1
cmwuaG9zdCgpOwogICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKSwg
dXJsLnByb3RvY29sKCkpKQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1l
bnQ6OnNldEhvc3QoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVy
bCA9IGhyZWYoKTsKICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhv
c3RuYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhy
ZWYoKTsKICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDIzLDcgKzQyMyw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cGF0aG5hbWUo
KSBjb25zdAogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQYXRobmFtZShjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVm
KCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC00NDUsNyArNDQ1LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwb3J0KCkgY29uc3QK
IAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYg
KCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ2OCw3ICs0
NjgsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIAogdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwogICAgIHVybC5z
ZXRQcm90b2NvbCh2YWx1ZSk7CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtNDg3
LDcgKzQ4Nyw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6b3JpZ2luKCkgY29uc3QKIAog
dm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7
Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBTdHJp
bmcgbmV3U2VhcmNoID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2
YWx1ZTsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxl
YWsgdG8gdGhlIGhhc2guCiAgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExp
dGVyYWwoJyMnLCAiJTIzIikpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgSFRNTEFuY2hvckVs
ZW1lbnQ6OmlzTGl2ZUxpbmsoKSBjb25zdAogICAgIHJldHVybiBpc0xpbmsoKSAmJiB0cmVhdExp
bmtBc0xpdmVGb3JFdmVudFR5cGUobV93YXNTaGlmdEtleURvd25Pbk1vdXNlRG93biA/IE1vdXNl
RXZlbnRXaXRoU2hpZnRLZXkgOiBNb3VzZUV2ZW50V2l0aG91dFNoaWZ0S2V5KTsKIH0KIAotdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJM
KQordm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRp
b25VUkwpCiB7CiAgICAgaWYgKCFoYXNBdHRyaWJ1dGUocGluZ0F0dHIpIHx8ICFkb2N1bWVudCgp
LnNldHRpbmdzKCkgfHwgIWRvY3VtZW50KCkuc2V0dGluZ3MoKS0+aHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIEhUTUxB
bmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCogZXZlbnQpCiAgICAgU3RyaW5nQnVpbGRl
ciB1cmw7CiAgICAgdXJsLmFwcGVuZChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
ZmFzdEdldEF0dHJpYnV0ZShocmVmQXR0cikpKTsKICAgICBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBv
c2l0aW9uKHVybCwgZXZlbnQpOwotICAgIEtVUkwga3VybCA9IGRvY3VtZW50KCkuY29tcGxldGVV
UkwodXJsLnRvU3RyaW5nKCkpOworICAgIFVSTCBrdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TCh1cmwudG9TdHJpbmcoKSk7CiAKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAg
IGlmIChoYXNBdHRyaWJ1dGUoZG93bmxvYWRBdHRyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QW5jaG9yRWxlbWVudC5oCmluZGV4IGY4MmY0MGYuLmY2Yjc5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+SFRNTEFuY2hvckVsZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0Owor
ICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmlu
ZyYpOwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CkBAIC0xMjAsNyAr
MTIwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZF
UlJJREUgRklOQUw7CiAgICAgdmlydHVhbCBib29sIGRyYWdnYWJsZSgpIGNvbnN0OwogCi0gICAg
dm9pZCBzZW5kUGluZ3MoY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2Vu
ZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCiAgICAgdm9pZCBoYW5kbGVDbGlj
ayhFdmVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXgg
MWZjOGQ2My4uODQyYjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFz
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNw
cApAQCAtNzcsNyArNzcsNyBAQCBTdHJpbmcgSFRNTEJhc2VFbGVtZW50Ojp0YXJnZXQoKSBjb25z
dAogICAgIHJldHVybiBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCi1LVVJMIEhU
TUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CitVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkg
Y29uc3QKIHsKICAgICAvLyBUaGlzIGRvZXMgbm90IHVzZSB0aGUgZ2V0VVJMQXR0cmlidXRlIGZ1
bmN0aW9uIGJlY2F1c2UgdGhhdCB3aWxsIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50
J3MgYmFzZSBVUkw7CiAgICAgLy8gYmFzZSBlbGVtZW50cyBsaWtlIHRoaXMgb25lIGNhbiBiZSB1
c2VkIHRvIHNldCB0aGF0IGJhc2UgVVJMLiBUaHVzIHdlIG5lZWQgdG8gcmVzb2x2ZSByZWxhdGl2
ZSB0byB0aGUgZG9jdW1lbnQncwpAQCAtODcsMTIgKzg3LDEyIEBAIEtVUkwgSFRNTEJhc2VFbGVt
ZW50OjpocmVmKCkgY29uc3QKICAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBkb2N1bWVudCgpLnVybCgpOwogCi0gICAgS1VSTCB1cmwgPSAhZG9jdW1lbnQo
KS5kZWNvZGVyKCkgPwotICAgICAgICBLVVJMKGRvY3VtZW50KCkudXJsKCksIHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSkpIDoKLSAgICAgICAgS1VSTChk
b2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmli
dXRlVmFsdWUpLCBkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgVVJMIHVy
bCA9ICFkb2N1bWVudCgpLmRlY29kZXIoKSA/CisgICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgp
LCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpKSA6Cisg
ICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoYXR0cmlidXRlVmFsdWUpLCBkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7
CiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAg
ICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiB1cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQmFzZUVsZW1lbnQuaAppbmRleCBiYzYzZDRmLi4wY2RlOWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJhc2VFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgSFRNTEJhc2VFbGVt
ZW50IEZJTkFMIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MQmFzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IDM5Y2IwN2IuLjJmM2VhYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTMyNyw3ICszMjcs
NyBAQCBpbnQgSFRNTEJvZHlFbGVtZW50OjpzY3JvbGxXaWR0aCgpCiAgICAgcmV0dXJuIGFkanVz
dEZvclpvb20odmlldy0+Y29udGVudHNXaWR0aCgpLCAqZnJhbWUpOwogfQogCi12b2lkIEhUTUxC
b2R5RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdAordm9pZCBIVE1MQm9keUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oCmluZGV4IDgzMGY5MTYuLmJlYTQyMzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwLi4zMzhmNDZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAjaW5j
bHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50
OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFz
c2VzKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaAppbmRleCAyNWM0YjU4Li4wNDc5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
VE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAg
ICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5z
aXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
SFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IDAp
OworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFn
cyA9IDApOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzU0N2U0Ni4uZWY2
M2FlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yMTEs
NyArMjExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNv
dXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAot
dm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAg
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCAyZTk5ZTJjLi43
Zjg2NTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5D
cmVhdGlvbk9wdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2
b2lkIHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCAzMDAxOTJkLi5iODFhYWQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6aXNVUkxBbGxvd2VkKCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChtX1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9
IGRvY3VtZW50KCkuY29tcGxldGVVUkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZh
U2NyaXB0KGNvbXBsZXRlVVJMKSkgeyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0
aGlzLT5jb250ZW50RG9jdW1lbnQoKTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZy
YW1lRWxlbWVudEJhc2U6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OmxvY2F0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNk
b2NBdHRyKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3Jj
ZG9jIik7CisgICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9j
Iik7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0
dHIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmlu
ZGV4IDMxYTU0ZjcuLjIzMDMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBIVE1MRnJhbWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewog
cHVibGljOgotICAgIEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBj
b25zdDsKICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVh
bCBTY3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGlu
ZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5
OC4uMjVmNTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBA
IC0zMDksNyArMzA5LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZh
bHVlKQogICAgIHNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkp
OwogfQogCi1LVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTEltYWdl
RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgSFRN
TEltYWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LmltYWdlQ29tcGxldGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5k
ZXggNzQ3OGNlNC4uN2ZjN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsK
IAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwpAQCAtMTA0
LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxlKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJS
SURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNTRkOTFm
MC4uZjVmZTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBA
IC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWdu
ZWQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldFNpemUoc2l6ZSk7CiB9CiAK
LUtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBIVE1MSW5wdXRFbGVtZW50
OjpzcmMoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGZhc3RH
ZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQp
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9s
ZERvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggZGE4ZThlNS4uOWEzMGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xh
c3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBJY29uOwogY2xhc3MgSW5wdXRUeXBlOwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsK
IHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzOwogCkBAIC0yMTQsNyArMjE0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2l6ZSh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRTaXplKHVu
c2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVS
TCBzcmMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50IG1heExlbmd0aCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdl
Q2FjaGUoKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0
OwogCiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0
ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCmluZGV4IGIzMzk4NjguLmM5MDhkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5r
RWxlbWVudDo6cHJvY2VzcygpCiAgICAgfQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93
ZXIoKTsKLSAgICBLVVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsK
KyAgICBVUkwgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAg
aWYgKCFtX2xpbmtMb2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMt
PnRvU3RyaW5nKCksIHVybCwgJmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
CiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhU
TUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0
IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5
bGVTaGVldCogY2FjaGVkU3R5bGVTaGVldCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hl
ZXQpCiB7CiAgICAgaWYgKCFpbkRvY3VtZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0
KTsKQEAgLTM5NSw3ICszOTUsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0
ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0
cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAKLUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29u
c3QKK1VSTCBIVE1MTGlua0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcg
KzQyNSw3IEBAIFN0cmluZyBIVE1MTGlua0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAg
cmV0dXJuIG1fc2l6ZXMtPnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0
Cit2b2lkIEhUTUxMaW5rRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKaW5kZXggMGJhMzUwZi4uZGNjMDgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhU
TUxMaW5rRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIEV2ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0Vs
ZW1lbnQ+IExpbmtFdmVudFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1M
TGlua0VsZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkg
Y29uc3Q7CiAgICAgU3RyaW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFy
Z2V0KCkgY29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2Fj
aGVkUmVzb3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQp
OwogICAgIHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3
ICsxMDAsNyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNp
bmdDaGlsZHJlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBiNTlhMjllLi41OWFjNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVuc2ln
bmVkJiB2YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAot
c3RhdGljIFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3RhdGlj
IFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBAIC03
NDAsNyArNzQwLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRpYUVs
ZW1lbnQ6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOwog
fQogCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
K1N0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1cHBv
cnRzVHlwZShDb250ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsKICAg
ICBTdHJpbmcgY2FuUGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdG
cm9tU3JjQXR0cjsKIAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlz
IHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cK
LSAgICAgICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIp
OworICAgICAgICBVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRy
KTsKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVkaWFM
b2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3Jj
JyIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRT
b3VyY2VDaGlsZCgpCiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygpKSk7
CiAgICAgU3RyaW5nIGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4dFNv
dXJjZUNoaWxkKCZjb250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVSTCBt
ZWRpYVVSTCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0ZW0s
IENvbXBsYWluKTsKICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3YWl0
Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAsMTgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBsb2Fk
UmVzb3VyY2UobWVkaWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0aWMg
S1VSTCBjcmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3N0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBhIGZ1
bmN0aW9uIHRvIGNyZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBUaGlz
IGZ1bmN0aW9uCi0gICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0aCB1
c2VzIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAgLy8g
VVJMIHNob3VsZCBoYXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRoLCBi
dXQgaXQgZG9lcyBub3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUgYmVj
YXVzZSBVUkw6OnNldFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3aGlj
aCBpdCBub3RlcwogICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAnPycu
IFRoaXMgZnVuY3Rpb24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8gYXBw
IGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZpbGVO
YW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBMQVRG
T1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtD
RlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkp
OworICAgIFVSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAgICBV
UkwgdXJsOwogCiAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKICAg
ICB1cmwuc2V0UGF0aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJMIGNy
ZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRo
KQogICAgIHJldHVybiB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291
cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJj
ZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFs
VVJMLCBDb21wbGFpbikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYg
Y29udGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0aWFs
VVJMOworICAgIFVSTCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigp
LndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFp
bGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1Mjcs
NyArMTUyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRl
eHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29sIEhU
TUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRV
UkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVU
b0xvYWRVUkwoY29uc3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlk
KQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlz
IGludmFsaWQiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE5
ODMsNyArMTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlFcnJv
cihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFy
KiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJM
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5
ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0
IFVSTCYgZGVmYXVsdFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsK
ICAgICBpbml0aWFsaXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMxODks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tF
bGVtZW50KiB0cmFja0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRyYWNr
RWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFj
a0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBVUkwg
dXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAg
ICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAnc3Jj
JyBpcyAlcyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0K
ICNlbmRpZgpAQCAtMzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZl
UG90ZW50aWFsU291cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3Vy
cmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBu
ZXh0Tm9kZSA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRVUkwg
PSBzZWxlY3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4dFVS
TCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9jdXJy
ZW50U291cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9kZVRv
Q29uc2lkZXIgPSBuZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVSTC5p
c1ZhbGlkKCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNo
aWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRV
UkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5l
eHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lzdGVt
LCBJbnZhbGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlm
IHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICszNDQ2
LDEwIEBAIEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRl
bnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cpCiAg
ICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNl
Q2hpbGQgLT4gMHgwMDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsK
KyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7CisgICAg
VVJMIG1lZGlhVVJMOwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAgIFN0
cmluZyB0eXBlOwogICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBjaGVj
a19hZ2FpbjoKICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50U291
cmNlTm9kZS5nZXQoKSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRpYSht
ZWRpYVVSTCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5Vc2VT
b3VyY2VFbGVtZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNvdXJj
ZUVsZW1lbnQgPyBtZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcgKzM1
NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VF
bGVtZW50KiBzb3VyY2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFz
VGFnTmFtZShzb3VyY2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25F
bXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+Z2V0
Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5n
TWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyArMzYw
MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNl
RWxlbWVudCogc291cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhh
c1RhZ05hbWUoc291cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UtPmdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dn
aW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEsNyAr
NDMxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShXZWJN
ZWRpYVBsYXllclByb3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94
eShwcm94eSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJh
bXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1
ZXMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYgdXJs
LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAgICAg
UmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291cmNl
Q2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9N
IG11dGF0aW9ucy4KIApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywg
VmUKIAogICAgIGlmIChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlk
ZW8gPSB0b0hUTUxWaWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0g
dmlkZW8tPnBvc3RlckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRlby0+
cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZy
YW1lICYmIGZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwp
KSB7CiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVu
dF9wb3N0ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5n
KCkpOwpAQCAtNDM1NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVN
ZWRpYVBsYXllclByb3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZU1lZGlhUGxheWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAg
ICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZh
bHVlczsKIApAQCAtNDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1O
YW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTogUmVu
YW1lIGt1cmwgdG8gc29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOworICAg
IFVSTCBrdXJsOwogCiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJs
LCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9jdW1l
bnQoKS5mcmFtZSgpIGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IGNmNmU4OTYuLmQ1NWMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsK
IGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVHJhY2tF
bGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsK
IGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAtMTM4LDcgKzEzOCw3
IEBAIHB1YmxpYzoKIAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0
cmluZyYpOwotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRTcmM7IH0KKyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRTcmM7IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwg
TkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAg
TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1
YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKICAg
ICB2b2lkIGxvYWQoKTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29uc3QgS1VSTCYgPSBL
VVJMKCkpIGNvbnN0OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0gVVJM
KCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0OwpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRXaWRn
ZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9IG5l
ZWRXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5
ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1lZGlh
UGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAgIHZvaWQgZ2V0UGx1
Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxT
dHJpbmc+JiB2YWx1ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1cmws
IFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAgdm9p
ZCBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2lu
Q3JlYXRpb25PcHRpb24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07
Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVUkxBY3Rpb24p
OworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFsaWRVUkxBY3Rpb24p
OwogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRN
ZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJL
ZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5
RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWdu
ZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxh
eWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQg
Y2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0
VVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVk
aWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0
aCkgT1ZFUlJJREU7CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHByaXZhdGU6CiAgICAg
CiAgICAgLy8gbG9hZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotICAgIHZv
aWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50VHlw
ZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVkdWxlTmV4dFNvdXJj
ZUNoaWxkKCk7CiAgICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCB1c2Vy
Q2FuY2VsbGVkTG9hZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAgICBL
VVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmluZyoga2V5U3lzdGVt
LCBJbnZhbGlkVVJMQWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRl
bnRUeXBlKiwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAgdm9p
ZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKQEAgLTYz
NCw3ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsK
ICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0
ZU1heGltdW07Ci0gICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1fY3VycmVudFNyYzsK
IAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGIzYzA0N2EuLjJmZDM4YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgYm9v
bCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTE9iamVj
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oCmluZGV4IDQ0MTUzNTUuLmNjZTNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVu
ZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+Jikg
Y29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBs
dWdpbkNyZWF0aW9uT3B0aW9uKTsKICAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5kZXggNjk4YmExMi4uZDEwZjQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIGJvb2wgSFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShhdHRyaWJ1dGUpOwogfQogCi12b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRN
TFBhcmFtRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFy
YW1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRl
eCBlNjJmODRhLi4zMmM2MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
YXJhbUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
aApAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0OwogfTsKIAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCA0Y2FmNGM5Li5hNmZkYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBl
RnJvbURhdGFVUkwobV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwobV91cmwpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChtX3VybCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
b2JqZWN0Q29udGVudFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAg
LTE3MCw3ICsxNzAsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBl
KCkKIC8vIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAg
IEtVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJM
IGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNv
bnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAg
ICAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2lu
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFT
U0VSVChkb2N1bWVudCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVS
TCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0
ZWRVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMSw3ICs0MzEsNyBA
QCBzdGF0aWMgdm9pZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQq
IHBsdWdJbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAg
aWYgKHBsdWdJbkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAg
ICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9h
ZGVkVVJMID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBVUkwmIGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1l
bnQtPmxvYWRlZE1pbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9
PSBsb2FkZWRVUkwuaG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01
NzEsNyArNTcxLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFu
Z2VGb3JTbmFwc2hvdHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJl
Z2luU25hcHNob3R0aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBs
dWdJbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJM
OiAlcyIsIHRoaXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAg
QWN0dWFsIFVSTDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWMuLjcxYmEw
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2FkZWRVcmwoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5nIGxvYWRlZE1p
bWVUeXBlKCkgY29uc3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBVUkwgbWlnaHQg
bm90IGJlIHRoZSBzYW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0ZXJzLgotICAg
IHZvaWQgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHBsdWdJblVS
TCk7CisgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiBw
bHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3Qg
V2lkZ2V0Kik7CiAKICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRNTEltYWdlTG9h
ZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwogICAgIFN0cmlu
ZyBtX3VybDsKLSAgICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRlZFVybDsKIAog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNpZ25lZCA9IDAp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRlMmQuLjY2MWUz
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xMDUs
MTIgKzEwNSwxMiBAQCBib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3luYygpIGNvbnN0CiAgICAg
cmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoYXN5bmNBdHRyKSB8fCBmb3JjZUFzeW5jKCk7CiB9CiAK
LUtVUkwgSFRNTFNjcmlwdEVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFNjcmlwdEVsZW1l
bnQ6OnNyYygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc291
cmNlQXR0cmlidXRlVmFsdWUoKSk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNjcmlwdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuaAppbmRleCBhZTVjYTFiLi42NzIyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgp
IGNvbnN0IHsgcmV0dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25z
dCBTdHJpbmcmKTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0
OwogCiAgICAgdm9pZCBzZXRBc3luYyhib29sKTsKICAgICBib29sIGFzeW5jKCkgY29uc3Q7CkBA
IC01MCw3ICs1MCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMTgyODRjOC4u
YTk4YmYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0y
NjksNyArMjY5LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFu
ZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2MKICAgICBtX2ZpcmVkTG9hZCA9
IHRydWU7CiB9CiAKLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykg
Y29uc3QKIHsgICAgCiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCA4Zjk0
Mzg4Li5mYmEwYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAt
NzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVl
dEFuZEFsbENyaXRpY2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgbV9zdHlsZVNoZWV0T3duZXIu
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KGRvY3VtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxVUkw+JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgIHZvaWQgc2Nv
cGVkQXR0cmlidXRlQ2hhbmdlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVDZWxsRWxlbWVudC5jcHAKaW5kZXggN2ZiMmRhZS4uZjM1NzI2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBT
dHJpbmcgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnNjb3BlKCkgY29uc3QKICAgICByZXR1cm4gZ2V0
QXR0cmlidXRlKHNjb3BlQXR0cik7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QK
K3ZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAppbmRleCA5ODI3MGUzLi5mZTAxNjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiB9
OwogCiBIVE1MVGFibGVDZWxsRWxlbWVudCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChOb2RlKiBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGEwMjli
NTAuLjk3YjNiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApA
QCAtNTcwLDcgKzU3MCw3IEBAIFN0cmluZyBIVE1MVGFibGVFbGVtZW50OjpzdW1tYXJ5KCkgY29u
c3QKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKIH0KIAotdm9pZCBIVE1M
VGFibGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmgKaW5kZXggMDhkMjNlMy4uZWNlNTE1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBVc2VkIHRvIG9idGFpbiBlaXRoZXIgYSBzb2xpZCBvciBvdXRzZXQgYm9yZGVyIGRlY2wg
YW5kIHRvIGRlYWwgd2l0aCB0aGUgZnJhbWUgYW5kIHJ1bGVzIGF0dHJpYnV0ZXMuCiAgICAgdmly
dHVhbCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmli
dXRlU3R5bGUoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAog
ICAgIGVudW0gVGFibGVSdWxlcyB7IFVuc2V0UnVsZXMsIE5vbmVSdWxlcywgR3JvdXBzUnVsZXMs
IFJvd3NSdWxlcywgQ29sc1J1bGVzLCBBbGxSdWxlcyB9OwogICAgIGVudW0gQ2VsbEJvcmRlcnMg
eyBOb0JvcmRlcnMsIFNvbGlkQm9yZGVycywgSW5zZXRCb3JkZXJzLCBTb2xpZEJvcmRlcnNDb2xz
T25seSwgU29saWRCb3JkZXJzUm93c09ubHkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCmluZGV4IDg1N2UyMGYuLmRiMzFlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgIUxPR19ESVNBQkxFRAotc3Rh
dGljIFN0cmluZyB1cmxGb3JMb2dnaW5nVHJhY2soY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0
cmluZyB1cmxGb3JMb2dnaW5nVHJhY2soY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogICAgIApAQCAt
MTE1LDcgKzExNSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgSFRNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotS1VSTCBIVE1MVHJhY2tFbGVtZW50
OjpzcmMoKSBjb25zdAorVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0K
QEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+KikKICAgICBzZXRSZWFkeVN0YXRlKEhUTUxUcmFja0Vs
ZW1lbnQ6OkxPQURJTkcpOwogCiAgICAgLy8gNy4gTGV0IFVSTCBiZSB0aGUgdHJhY2sgVVJMIG9m
IHRoZSB0cmFjayBlbGVtZW50LgotICAgIEtVUkwgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1
dGUoc3JjQXR0cik7CisgICAgVVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0
dHIpOwogCiAgICAgLy8gOC4gSWYgdGhlIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgaXMgYSBtZWRp
YSBlbGVtZW50IHRoZW4gbGV0IENPUlMgbW9kZSBiZSB0aGUgc3RhdGUgb2YgdGhlIHBhcmVudCBt
ZWRpYQogICAgIC8vIGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZS4gT3Ro
ZXJ3aXNlLCBsZXQgQ09SUyBtb2RlIGJlIE5vIENPUlMuCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MVHJhY2tFbGVtZW50
PiopCiAgICAgZW5zdXJlVHJhY2soKS5zY2hlZHVsZUxvYWQodXJsKTsKIH0KIAotYm9vbCBIVE1M
VHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgSFRNTFRyYWNr
RWxlbWVudDo6Y2FuTG9hZFVybChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuaAppbmRleCAzYjljNGY3Li5iNzYxNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50IEZJTkFM
IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVS
TCBzcmMoKSBjb25zdDsKICAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0
cmluZyBraW5kKCk7CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4p
OwogCiAgICAgTG9hZGFibGVUZXh0VHJhY2smIGVuc3VyZVRyYWNrKCk7Ci0gICAgdmlydHVhbCBi
b29sIGNhbkxvYWRVcmwoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJs
KGNvbnN0IFVSTCYpOwogCiAgICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3RyYWNrOwog
ICAgIFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+IG1fbG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggYTEwMzY4My4uZWQ2N2M2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CiB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUp
CiB7CiAgICAgRGlzcGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAgS1VSTCBw
b3N0ZXIgPSBwb3N0ZXJJbWFnZVVSTCgpOworICAgIFVSTCBwb3N0ZXIgPSBwb3N0ZXJJbWFnZVVS
TCgpOwogCiAgICAgaWYgKCFwb3N0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUg
YSBwb3N0ZXIgcGF0aCwgYnV0IG9ubHkgc2hvdyBpdCB1bnRpbCB0aGUgdXNlciB0cmlnZ2VycyBk
aXNwbGF5IGJ5IHBsYXlpbmcgb3Igc2Vla2luZyBhbmQgdGhlCkBAIC0zMTUsMTEgKzMxNSwxMSBA
QCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREcm9wcGVkRnJhbWVDb3VudCgpIGNv
bnN0CiB9CiAjZW5kaWYKIAotS1VSTCBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgp
IGNvbnN0CitVUkwgSFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwoKSBjb25zdAogewog
ICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VT
b3VyY2VVUkwoKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJM
KCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IDhlZTIwMmUuLmJhMGY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3Rl
ckltYWdlKCkgY29uc3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxh
eU1vZGUoKSA9PSBQb3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAotICAgIEtVUkwgcG9zdGVySW1h
Z2VVUkwoKSBjb25zdDsKKyAgICBVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5j
cHAKaW5kZXggNzYyNGZlOS4uZGIzNTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTFZpZXdTb3VyY2VEb2N1
bWVudDo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK0hUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhUTUxW
aWV3U291cmNlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogICAgICwgbV90
eXBlKG1pbWVUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmll
d1NvdXJjZURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9j
dW1lbnQuaAppbmRleCBjZWQ1OWRmLi5jNGVmNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBIVE1MVG9r
ZW47CiAKIGNsYXNzIEhUTUxWaWV3U291cmNlRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERv
Y3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlld1NvdXJjZURv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNl
RG9jdW1lbnQoZnJhbWUsIHVybCwgbWltZVR5cGUpKTsKICAgICB9CkBAIC00Myw3ICs0Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFNvdXJjZShjb25zdCBTdHJpbmcmLCBIVE1MVG9rZW4mKTsK
IAogcHJpdmF0ZToKLSAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIFJl
dHVybnMgSFRNTFZpZXdTb3VyY2VQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9u
IG1fdHlwZS4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBh
cnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZGFlYTAxZS4u
YWNiNjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNzcsNyAr
MTc3LDcgQEAgdm9pZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIAogLy8gLS0t
LS0tLS0KIAotSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKK0ltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBJbWFnZURvY3Vt
ZW50Q2xhc3MpCiAgICAgLCBtX2ltYWdlRWxlbWVudCgwKQogICAgICwgbV9pbWFnZVNpemVJc0tu
b3duKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRleCAzMjA0ZDAxLi5l
ZDUzMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBJbWFnZURvY3VtZW50RWxlbWVudDsKIAogY2xhc3MgSW1hZ2VEb2N1bWVudCBGSU5B
TCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VE
b2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbWFnZUNsaWNrZWQoaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToKLSAgICBJbWFn
ZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIEltYWdlRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4g
Y3JlYXRlUGFyc2VyKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApp
bmRleCBkOGRjNWY5Li43ZjBlZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5j
cHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKICAgICBmaW5pc2goKTsK
IH0KICAgICAKLU1lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCitNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1
bWVudENsYXNzKQogICAgICwgbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXIodGhpcywgJk1lZGlh
RG9jdW1lbnQ6OnJlcGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaAppbmRleCAzYWY1NTBlLi41ZjYxMWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE1lZGlhRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVu
dD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFFbGVtZW50U2F3VW5zdXBwb3J0
ZWRUcmFja3MoKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3Qg
S1VSTCYpOworICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IDM5NTlk
ZGEuLjI1YWFiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVu
dFVSSVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJ
UGFyc2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCBkb3VibGUgTWVkaWFGcmFnbWVudFVSSVBhcnNl
cjo6aW52YWxpZFRpbWVWYWx1ZSgpCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGlt
ZSgpOwogfQogCi1NZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
KGNvbnN0IEtVUkwmIHVybCkKK01lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRV
UklQYXJzZXIoY29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3RpbWVG
b3JtYXQoTm9uZSkKICAgICAsIG1fc3RhcnRUaW1lKE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaAppbmRleCAx
N2RmYzNmLi45MzJjNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRV
UklQYXJzZXIuaApAQCAtMjgsMTcgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNs
YXNzIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIgRklOQUwgewogcHVibGljOgogICAgIAotICAgIE1l
ZGlhRnJhZ21lbnRVUklQYXJzZXIoY29uc3QgS1VSTCYpOworICAgIE1lZGlhRnJhZ21lbnRVUklQ
YXJzZXIoY29uc3QgVVJMJik7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKCk7CiAgICAgZG91Ymxl
IGVuZFRpbWUoKTsKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlTlBU
RnJhZ21lbnQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGRvdWJsZSYgc3RhcnRUaW1l
LCBkb3VibGUmIGVuZFRpbWUpOwogICAgIGJvb2wgcGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiwg
dW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgb2Zmc2V0LCBkb3VibGUmIHRpbWUpOwogCi0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgVGltZUZvcm1hdCBtX3RpbWVGb3JtYXQ7
CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBtX2VuZFRpbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCmluZGV4IDUyOTNkY2QuLjJjM2I0YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9p
ZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25z
dCBjaGFyKiwgc2l6ZV90KQogICAgIH0KIH0KIAotUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3Vt
ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorUGx1Z2luRG9jdW1lbnQ6OlBsdWdp
bkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1l
bnQoZnJhbWUsIHVybCwgUGx1Z2luRG9jdW1lbnRDbGFzcykKICAgICAsIG1fc2hvdWxkTG9hZFBs
dWdpbk1hbnVhbGx5KHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKaW5k
ZXggZTBiYmQ5Ni4uMjBlNGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBXaWRnZXQ7CiAKIGNsYXNzIFBsdWdpbkRvY3VtZW50IEZJ
TkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8UGx1Z2luRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBs
dWdpbkRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICBib29sIHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIHsgcmV0dXJuIG1fc2hvdWxk
TG9hZFBsdWdpbk1hbnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luRG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBLVVJMJik7CisgICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2Vy
KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJM
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmlu
ZGV4IDVhZDhmYzYuLjJiZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVi
bGljVVJMTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5h
Z2VyLmNwcApAQCAtMjksMjAgKzI5LDIwIEBACiAKICNpZiBFTkFCTEUoQkxPQikKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQordm9pZCBQ
dWJsaWNVUkxNYW5hZ2VyOjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIFJlZ2lzdHJ5
VVJMTWFwOjppdGVyYXRvciBmb3VuZCA9IG1fcmVnaXN0cnlUb1VSTC5hZGQoJnJlZ2lzdHJhYmxl
LT5yZWdpc3RyeSgpLCBVUkxTZXQoKSkuaXRlcmF0b3I7CiAgICAgZm91bmQtPmtleS0+cmVnaXN0
ZXJVUkwob3JpZ2luLCB1cmwsIHJlZ2lzdHJhYmxlKTsKICAgICBmb3VuZC0+dmFsdWUuYWRkKHVy
bC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IEtV
UkwmIHVybCkKK3ZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGZvciAoUmVnaXN0cnlVUkxNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwu
YmVnaW4oKTsgaSAhPSBtX3JlZ2lzdHJ5VG9VUkwuZW5kKCk7ICsraSkgewogICAgICAgICBpZiAo
aS0+dmFsdWUuY29udGFpbnModXJsLnN0cmluZygpKSkgewpAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IFB1YmxpY1VSTE1hbmFnZXI6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIGZvciAoUmVnaXN0
cnlVUkxNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwuYmVnaW4oKTsgaSAhPSBtX3Jl
Z2lzdHJ5VG9VUkwuZW5kKCk7ICsraSkgewogICAgICAgICBmb3IgKFVSTFNldDo6aXRlcmF0b3Ig
aiA9IGktPnZhbHVlLmJlZ2luKCk7IGogIT0gaS0+dmFsdWUuZW5kKCk7ICsraikKLSAgICAgICAg
ICAgIGktPmtleS0+dW5yZWdpc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKmopKTsKKyAg
ICAgICAgICAgIGktPmtleS0+dW5yZWdpc3RlclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikp
OwogICAgIH0KIAogICAgIG1fcmVnaXN0cnlUb1VSTC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1B1YmxpY1VSTE1hbmFnZXIuaAppbmRleCBhMTA5MTExLi45YWQwMWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKQEAg
LTQ2LDggKzQ2LDggQEAgY2xhc3MgUHVibGljVVJMTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIE93blB0cjxQdWJsaWNVUkxNYW5hZ2VyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihu
ZXcgUHVibGljVVJMTWFuYWdlcik7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJiwgVVJMUmVnaXN0cmFibGUqKTsKLSAgICB2b2lkIHJldm9rZShj
b25zdCBLVVJMJik7CisgICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKik7CisgICAgdm9pZCByZXZva2UoY29uc3QgVVJMJik7CiAg
ICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHREb2N1bWVudC5jcHAKaW5kZXggOTMzNGEzOS4uODNlZjEzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dERvY3VtZW50LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVRleHREb2N1bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQorVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogewogICAgIHNldENvbXBhdGli
aWxpdHlNb2RlKFF1aXJrc01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKaW5kZXgg
ZWViNjAxMC4uZjRhODMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9j
dW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCkBAIC0zMSwx
MyArMzEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0RG9jdW1lbnQgRklO
QUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0RG9j
dW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBUZXh0RG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgVGV4dERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJM
Jik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQ
YXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKaW5kZXggZWI1YTk3
Yi4uMWI1NWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5
cGVOYW1lcy5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNyArNTcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFVS
TElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogYm9vbCBVUkxJbnB1dFR5cGU6
OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVy
biAhdmFsdWUuaXNFbXB0eSgpICYmICFLVVJMKEtVUkwoKSwgdmFsdWUpLmlzVmFsaWQoKTsKKyAg
ICByZXR1cm4gIXZhbHVlLmlzRW1wdHkoKSAmJiAhVVJMKFVSTCgpLCB2YWx1ZSkuaXNWYWxpZCgp
OwogfQogCiBib29sIFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMUmVnaXN0cnkuaAppbmRleCA2Njg3YzljLi42ZWU1N2UyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9V
UkxSZWdpc3RyeS5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJM
UmVnaXN0cnk7CiAKQEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgVVJMUmVnaXN0cnkgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVSTFJlZ2lzdHJ5
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyVVJMKGNvbnN0IEtVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgLy8gVGhpcyBp
cyBhbiBvcHRpb25hbCBBUEkKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29u
c3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggMjZiYzRlYi4uZGZhOTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTkxLDcgKzkxLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpIHx8IG1f
Y2xlYW5VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFp
bnRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpjaGVja09yaWdpbihjb25zdCBLVVJMJiB1cmwpCit2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKHVybCkpCiAgICAgICAgIGNhbnZhcygpLT5zZXRPcmln
aW5UYWludGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOGU4NDliZC4uYjViMjc4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBDYW52YXNQYXR0ZXJuOwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7
CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBXZWJHTE9iamVjdDsKIAogY2xhc3MgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewpAQCAtNjcsMTQgKzY3LDE0
IEBAIHByb3RlY3RlZDoKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZh
c0VsZW1lbnQqKTsKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxl
bWVudCopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9FbGVtZW50
Kik7Ci0gICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHdv
dWxkVGFpbnRPcmlnaW4oY29uc3QgVVJMJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lk
IGNoZWNrT3JpZ2luKGNvbnN0IFQqIGFyZykKICAgICB7CiAgICAgICAgIGlmICh3b3VsZFRhaW50
T3JpZ2luKGFyZykpCiAgICAgICAgICAgICBjYW52YXMoKS0+c2V0T3JpZ2luVGFpbnRlZCgpOwog
ICAgIH0KLSAgICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGNoZWNr
T3JpZ2luKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50KiBt
X2NhbnZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDZkMDQwZDQuLmMwZjI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTU1
OSw3ICs1NTU5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSFRNTElt
YWdlRWxlbWVudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEgKICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwg
Im5vIGltYWdlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY29uc3QgS1VS
TCYgdXJsID0gaW1hZ2UtPmNhY2hlZEltYWdlKCktPnJlc3BvbnNlKCkudXJsKCk7CisgICAgY29u
c3QgVVJMJiB1cmwgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKICAg
ICBpZiAodXJsLmlzTnVsbCgpIHx8IHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgaW1hZ2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5u
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3Bw
CmluZGV4IDY3ZjZiY2IuLjNlNzBiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIENTU1By
ZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgaWYgKHJ1bGVFcXVhbElnbm9yaW5nQ2FzZSht
X3J1bGUsICJpbXBvcnQiKSkgewogICAgICAgICBTdHJpbmcgdXJsID0gcGFyc2VDU1NTdHJpbmdP
clVSTChtX3J1bGVWYWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNpemUoKSk7CiAgICAgICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgS1VSTCBiYXNlRWxlbWVudFVSTDsgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5l
ciB2aWEgc2NhbigpIQorICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2NhbmVyIHZpYSBz
Y2FuKCkhCiAgICAgICAgICAgICBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IHJlcXVlc3QgPSBQcmVs
b2FkUmVxdWVzdDo6Y3JlYXRlKCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNv
dXJjZTo6Q1NTU3R5bGVTaGVldCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
YmUgaW5jbHVkaW5nIHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/CiAgICAgICAg
ICAgICBtX3JlcXVlc3RzLT5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBhN2NiNzJlLi43
OGQxZjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmNwcApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1
ZGUgIkhUTUxJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDQxZWUyMDEuLjY0MjM1OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTQy
LDcgKzE0Miw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIE93blB0cjxQcmVsb2Fk
UmVxdWVzdD4gY3JlYXRlUHJlbG9hZFJlcXVlc3QoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZVVS
TCkKKyAgICBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZVByZWxvYWRSZXF1ZXN0KGNvbnN0
IFVSTCYgcHJlZGljdGVkQmFzZVVSTCkKICAgICB7CiAgICAgICAgIGlmICghc2hvdWxkUHJlbG9h
ZCgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogfTsKIAotVG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6VG9rZW5QcmVsb2FkU2Nhbm5lcihjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxv
YXQgZGV2aWNlU2NhbGVGYWN0b3IpCitUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRT
Y2FubmVyKGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ICAgIDogbV9kb2N1bWVudFVSTChkb2N1bWVudFVSTCkKICAgICAsIG1faW5TdHlsZShmYWxzZSkK
ICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpCkBAIC0zODEsMTAg
KzM4MSwxMCBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VV
UkwoY29uc3QgVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3ByZWRpY3RlZEJhc2VFbGVt
ZW50VVJMLmlzRW1wdHkoKSk7CiAgICAgaWYgKGNvbnN0IHR5cGVuYW1lIFRva2VuOjpBdHRyaWJ1
dGUqIGhyZWZBdHRyaWJ1dGUgPSB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGhyZWZBdHRyKSkKLSAg
ICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IEtVUkwobV9kb2N1bWVudFVSTCwgc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29w
eSgpOworICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0gVVJMKG1fZG9jdW1lbnRV
UkwsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmQXR0cmlidXRlLT52YWx1
ZSkpLmNvcHkoKTsKIH0KIAotSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIo
Y29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJM
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK0hUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxv
YWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBVUkwmIGRv
Y3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IG1fc2Nhbm5lcihkb2N1
bWVudFVSTCwgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5p
emVyOjpjcmVhdGUob3B0aW9ucykpCiB7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBIVE1MUHJl
bG9hZFNjYW5uZXI6OmFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQog
ICAgIG1fc291cmNlLmFwcGVuZChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxQcmVsb2FkU2Nhbm5l
cjo6c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqIHByZWxvYWRlciwgY29uc3QgS1VSTCYgc3Rh
cnRpbmdCYXNlRWxlbWVudFVSTCkKK3ZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxS
ZXNvdXJjZVByZWxvYWRlciogcHJlbG9hZGVyLCBjb25zdCBVUkwmIHN0YXJ0aW5nQmFzZUVsZW1l
bnRVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSFRNTFRva2VuaXplcjo6
dXBkYXRlU3RhdGVGb3Igb25seSB3b3JrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggN2MzZjUz
NS4uNGZhZjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU2VnbWVudGVkU3RyaW5nOwogY2xh
c3MgVG9rZW5QcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5Q
cmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4
cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKKyAgICBleHBsaWNpdCBUb2tlblByZWxvYWRTY2Fu
bmVyKGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4w
KTsKICAgICB+VG9rZW5QcmVsb2FkU2Nhbm5lcigpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhU
TUxUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CkBAIC01Miw3ICs1Miw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjYW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYsIFByZWxv
YWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UHJlZGlj
dGVkQmFzZUVsZW1lbnRVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1fcHJlZGljdGVkQmFzZUVsZW1l
bnRVUkwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFByZWRpY3RlZEJhc2VFbGVtZW50VVJMKGNvbnN0
IFVSTCYgdXJsKSB7IG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSB1cmw7IH0KIAogICAgIC8v
IEEgVG9rZW5QcmVsb2FkU2Nhbm5lckNoZWNrcG9pbnQgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQg
Y2FsbCB0byByZXdpbmRUbywKICAgICAvLyBhdCB3aGljaCBwb2ludCBhbGwgb3V0c3RhbmRpbmcg
Y2hlY2twb2ludHMgYXJlIGludmFsaWRhdGVkLgpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYpOwogCiAgICAgc3Ry
dWN0IENoZWNrcG9pbnQgewotICAgICAgICBDaGVja3BvaW50KGNvbnN0IEtVUkwmIHByZWRpY3Rl
ZEJhc2VFbGVtZW50VVJMLCBib29sIGluU3R5bGUKKyAgICAgICAgQ2hlY2twb2ludChjb25zdCBV
UkwmIHByZWRpY3RlZEJhc2VFbGVtZW50VVJMLCBib29sIGluU3R5bGUKICNpZiBFTkFCTEUoVEVN
UExBVEVfRUxFTUVOVCkKICAgICAgICAgICAgICwgc2l6ZV90IHRlbXBsYXRlQ291bnQKICNlbmRp
ZgpAQCAtMTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIEtVUkwgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkw7CisgICAgICAgIFVSTCBwcmVkaWN0
ZWRCYXNlRWxlbWVudFVSTDsKICAgICAgICAgYm9vbCBpblN0eWxlOwogI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQogICAgICAgICBzaXplX3QgdGVtcGxhdGVDb3VudDsKQEAgLTExNSw4ICsx
MTUsOCBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBDU1NQcmVsb2FkU2Nhbm5lciBtX2Nzc1Nj
YW5uZXI7Ci0gICAgY29uc3QgS1VSTCBtX2RvY3VtZW50VVJMOwotICAgIEtVUkwgbV9wcmVkaWN0
ZWRCYXNlRWxlbWVudFVSTDsKKyAgICBjb25zdCBVUkwgbV9kb2N1bWVudFVSTDsKKyAgICBVUkwg
bV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTDsKICAgICBib29sIG1faW5TdHlsZTsKICAgICBmbG9h
dCBtX2RldmljZVNjYWxlRmFjdG9yOwogCkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBwcml2YXRlOgog
Y2xhc3MgSFRNTFByZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1M
UHJlbG9hZFNjYW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBI
VE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBjb25zdCBLVVJMJiBk
b2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOworICAgIEhUTUxQcmVs
b2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNvbnN0IFVSTCYgZG9jdW1lbnRV
UkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKICAgICB+SFRNTFByZWxvYWRTY2Fu
bmVyKCk7CiAKICAgICB2b2lkIGFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwot
ICAgIHZvaWQgc2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBLVVJMJiBkb2N1bWVu
dEJhc2VFbGVtZW50VVJMKTsKKyAgICB2b2lkIHNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiwg
Y29uc3QgVVJMJiBkb2N1bWVudEJhc2VFbGVtZW50VVJMKTsKIAogcHJpdmF0ZToKICAgICBUb2tl
blByZWxvYWRTY2FubmVyIG1fc2Nhbm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCmluZGV4IDM2MzM0MWEuLmIxMDA5OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJl
bG9hZGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIFByZWxvYWRSZXF1ZXN0Ojppc1NhZmVU
b1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAogICAgICAgICAmJiBtX2Jhc2VVUkwuaXNTYWZl
VG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7CiB9CiAKLUtVUkwgUHJlbG9hZFJlcXVlc3Q6OmNvbXBs
ZXRlVVJMKERvY3VtZW50KiBkb2N1bWVudCkKK1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVV
UkwoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIHJldHVybiBkb2N1bWVudC0+Y29tcGxldGVV
UkwobV9yZXNvdXJjZVVSTCwgbV9iYXNlVVJMLmlzRW1wdHkoKSA/IGRvY3VtZW50LT51cmwoKSA6
IG1fYmFzZVVSTCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxS
ZXNvdXJjZVByZWxvYWRlci5oCmluZGV4IGVmOTMzOTUuLmFhYTg3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC0zMywx
MiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmVsb2FkUmVxdWVzdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFBdHRyaWJ1dGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBj
b25zdCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29u
c3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCByZXNvdXJjZVVSTCwgYmFzZVVSTCwgcmVz
b3VyY2VUeXBlLCBtZWRpYUF0dHJpYnV0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBPd25QdHI8
UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5
cGUgcmVzb3VyY2VUeXBlKQorICAgIHN0YXRpYyBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFByZWxvYWRSZXF1ZXN0KGluaXRpYXRvciwg
cmVzb3VyY2VVUkwsIGJhc2VVUkwsIHJlc291cmNlVHlwZSwgU3RyaW5nKCkpKTsKICAgICB9CkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlVHlwZTsgfQogCiBwcml2YXRlOgotICAg
IFByZWxvYWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNv
dXJjZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUpCisgICAgUHJlbG9hZFJlcXVl
c3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25z
dCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlKQogICAgICAgICA6IG1faW5pdGlhdG9yKGluaXRpYXRv
cikKICAgICAgICAgLCBtX3Jlc291cmNlVVJMKHJlc291cmNlVVJMLmlzb2xhdGVkQ29weSgpKQog
ICAgICAgICAsIG1fYmFzZVVSTChiYXNlVVJMLmNvcHkoKSkKQEAgLTY0LDExICs2NCwxMSBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Kik7
CisgICAgVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Kik7CiAKICAgICBTdHJpbmcgbV9pbml0aWF0
b3I7CiAgICAgU3RyaW5nIG1fcmVzb3VyY2VVUkw7Ci0gICAgS1VSTCBtX2Jhc2VVUkw7CisgICAg
VVJMIG1fYmFzZVVSTDsKICAgICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIENhY2hlZFJlc291cmNl
OjpUeXBlIG1fcmVzb3VyY2VUeXBlOwogICAgIFN0cmluZyBtX21lZGlhQXR0cmlidXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0
OTFkYmQzOC4uNWU0ZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFNjcmlwdFJ1bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFNjcmlwdFJ1bm5lci5jcHAKQEAgLTc0LDEwICs3NCwxMCBAQCB2b2lkIEhUTUxTY3JpcHRSdW5u
ZXI6OmRldGFjaCgpCiAgICAgbV9kb2N1bWVudCA9IDA7CiB9CiAKLXN0YXRpYyBLVVJMIGRvY3Vt
ZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKK3N0YXRpYyBVUkwg
ZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gS1VS
TCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICAvLyBVc2UgdGhlIFVSTCBvZiB0aGUg
Y3VycmVudGx5IGFjdGl2ZSBkb2N1bWVudCBmb3IgdGhpcyBmcmFtZS4KICAgICByZXR1cm4gZG9j
dW1lbnQtPmZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCAzZTM5MzM0Li44NGVhYzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgIkhUTUxQYXJhbUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtMTU2LDggKzE1Niw4IEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIGRlY29kZTE2Qml0VW5pY29kZUVzY2FwZVNlcXVlbmNlcyhjb25z
dCBTdHJpbmcmIHN0cmluZykKIAogc3RhdGljIGlubGluZSBTdHJpbmcgZGVjb2RlU3RhbmRhcmRV
UkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGlu
ZyYgZW5jb2RpbmcpCiB7Ci0gICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNlcygpIGlu
c3RlYWQgb2YgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIEtVUkwuaCkg
dG8KLSAgICAvLyBhdm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBVUkwgZGVjb2RpbmcgZGlmZmVyZW5j
ZXMgKGUuZy4gS1VSTEdvb2dsZSkuCisgICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNl
cygpIGluc3RlYWQgb2YgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIFVS
TC5oKSB0bworICAgIC8vIGF2b2lkIHBsYXRmb3JtLXNwZWNpZmljIFVSTCBkZWNvZGluZyBkaWZm
ZXJlbmNlcyAoZS5nLiBVUkxHb29nbGUpLgogICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2RpbmcpOwogfQogCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVk
aXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgIFN0cmluZyBlcnJvckRldGFp
bHM7CiAgICAgICAgIHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwogICAgICAgICBTdHJpbmcg
cmVwb3J0VVJMOwotICAgICAgICBLVVJMIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkw7CisgICAgICAg
IFVSTCB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMOwogCiAgICAgICAgIC8vIFByb2Nlc3MgdGhlIFgt
WFNTLVByb3RlY3Rpb24gaGVhZGVyLCB0aGVuIG1peCBpbiB0aGUgQ1NQIGhlYWRlcidzIHZhbHVl
LgogICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9u
IHhzc1Byb3RlY3Rpb25IZWFkZXIgPSBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoaGVhZGVyVmFs
dWUsIGVycm9yRGV0YWlscywgZXJyb3JQb3NpdGlvbiwgcmVwb3J0VVJMKTsKQEAgLTI4OCw3ICsy
ODgsNyBAQCB2b2lkIFhTU0F1ZGl0b3I6OmluaXQoRG9jdW1lbnQqIGRvY3VtZW50LCBYU1NBdWRp
dG9yRGVsZWdhdGUqIGF1ZGl0b3JEZWxlZ2F0ZSkKICAgICAgICAgICAgIGlmIChNaXhlZENvbnRl
bnRDaGVja2VyOjppc01peGVkQ29udGVudChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgeHNz
UHJvdGVjdGlvblJlcG9ydFVSTCkpIHsKICAgICAgICAgICAgICAgICBlcnJvckRldGFpbHMgPSAi
aW5zZWN1cmUgcmVwb3J0aW5nIFVSTCBmb3Igc2VjdXJlIHBhZ2UiOwogICAgICAgICAgICAgICAg
IHhzc1Byb3RlY3Rpb25IZWFkZXIgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhT
U0ludmFsaWQ7Ci0gICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IEtVUkwo
KTsKKyAgICAgICAgICAgICAgICB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMID0gVVJMKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKHhzc1Byb3RlY3Rpb25IZWFkZXIgPT0g
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NJbnZhbGlkKQpAQCAtNzIwLDcgKzcy
MCw3IEBAIGJvb2wgWFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgaWYgKG1fZG9jdW1lbnRVUkwuaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCByZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwp
OworICAgIFVSTCByZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwpOwogICAgIHJldHVybiAo
bV9kb2N1bWVudFVSTC5ob3N0KCkgPT0gcmVzb3VyY2VVUkwuaG9zdCgpICYmIHJlc291cmNlVVJM
LnF1ZXJ5KCkuaXNFbXB0eSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oCmluZGV4IDA2OTBiZTkuLjMyMWU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5o
IgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rpbmcu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmKTsKICAgICBi
b29sIGlzTGlrZWx5U2FmZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgIEtVUkwg
bV9kb2N1bWVudFVSTDsKKyAgICBVUkwgbV9kb2N1bWVudFVSTDsKICAgICBib29sIG1faXNFbmFi
bGVkOwogCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlv
biBtX3hzc1Byb3RlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3JEZWxlZ2F0ZS5oCmluZGV4IDFkOGM3ZDguLjY1MWM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaWZuZGVmIFhTU0F1ZGl0b3JEZWxlZ2F0ZV9oCiAjZGVmaW5lIFhTU0F1ZGl0b3JEZWxlZ2F0
ZV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBYU1NBdWRp
dG9yRGVsZWdhdGUoRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgZGlkQmxvY2tTY3JpcHQoY29uc3Qg
WFNTSW5mbyYpOwotICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX3Jl
cG9ydFVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IFVSTCYgdXJsKSB7
IG1fcmVwb3J0VVJMID0gdXJsOyB9CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZ2VuZXJhdGVWaW9sYXRpb25SZXBvcnQoKTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50
OwogICAgIGJvb2wgbV9kaWRTZW5kTm90aWZpY2F0aW9uczsKLSAgICBLVVJMIG1fcmVwb3J0VVJM
OworICAgIFVSTCBtX3JlcG9ydFVSTDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPE93blB0cjxYU1NJ
bmZvPiA+IFhTU0luZm9TdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwCmluZGV4IGNlNTFmNjUuLmNlZDZjODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCkKICAgICBUZXh0VHJhY2s6
OmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9h
ZChjb25zdCBLVVJMJiB1cmwpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4
IDE4OGVhZDEuLmFiYmM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
TG9hZGFibGVUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTG9hZGFibGVUZXh0VHJhY2tD
bGllbnQgOiBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5M
b2FkYWJsZVRleHRUcmFja0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5M
b2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBV
UkwmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVk
KExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KIH07CiAK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRl
eHRUcmFjaygpOwogCi0gICAgdm9pZCBzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYpOworICAgIHZv
aWQgc2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xp
ZW50KCk7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50
KiBtX3RyYWNrRWxlbWVudDsKICAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9sb2FkVGlt
ZXI7CiAgICAgT3duUHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgS1VSTCBtX3Vy
bDsKKyAgICBVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIH07CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
Y3BwCmluZGV4IGMxYzI4OGQuLjJlZWQ3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBET01QYXRjaFN1
cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgUmVmUHRy
PERvY3VtZW50PiBuZXdEb2N1bWVudDsKICAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1l
bnQoKSkKLSAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJM
KCkpOworICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgp
KTsKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAg
bmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwoKSk7CisgICAg
ICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CiAj
aWYgRU5BQkxFKFNWRykKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkp
Ci0gICAgICAgIG5ld0RvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAg
ICAgICBuZXdEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogI2VuZGlmCiAK
ICAgICBBU1NFUlQobmV3RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKaW5kZXggMGNlMWU5Ni4uZmI1YjY5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQogICAgIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJJbnNwZWN0ZWRPYmpl
Y3RzKCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwpCitib29sIEluc3Bl
Y3RvckFnZW50Ojppc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBVUkwmIHJlcXVlc3RVcmwpCiB7CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+ZnJh
bWVJc01haW5GcmFtZShsb2FkZXItPmZyYW1lKCkpICYmIHJlcXVlc3RVcmwgPT0gbG9hZGVyLT5y
ZXF1ZXN0VVJMKCk7CiB9CkBAIC0xNjksMTQgKzE2OSwxNCBAQCB2b2lkIEluc3BlY3RvckFnZW50
OjppbnNwZWN0KFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4g
b2JqZQogICAgIG1fcGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCA9IGhpbnRzOwogfQogCi1LVVJM
IEluc3BlY3RvckFnZW50OjppbnNwZWN0ZWRVUkwoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50
OjppbnNwZWN0ZWRVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLmRvY3VtZW50KCktPnVybCgpOwogfQogCi1LVVJMIEluc3BlY3RvckFnZW50Ojpp
bnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50Ojpp
bnNwZWN0ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gaW5z
cGVjdGVkVVJMKCk7CisgICAgVVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOwogICAgIHVybC5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICByZXR1cm4gdXJsOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAppbmRleCBhMGVlMGY3Li43NzJjOTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNDYsNyArNDYsNyBA
QCBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsK
IGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0
cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCi0gICAgS1VSTCBpbnNw
ZWN0ZWRVUkwoKSBjb25zdDsKLSAgICBLVVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgp
IGNvbnN0OworICAgIFVSTCBpbnNwZWN0ZWRVUkwoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVk
VVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3Q7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZCogZnJv
bnRlbmQoKSBjb25zdCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CiAKQEAgLTk4LDcgKzk4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICNlbmRpZgogCi0g
ICAgYm9vbCBpc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwm
IHJlcXVlc3RVcmwpOworICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBVUkwmIHJlcXVlc3RVcmwpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdl
OwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGEyOWU1NGIu
LjUwZjdkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQog
CiAgICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBh
Z2VBZ2VudCgpKSB7Ci0gICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdl
QWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7CisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UgPSBwYWdlQWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCks
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKICAgICAgICAgICAgIGlmIChyZXNv
dXJjZSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJj
ZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7CiAgICAg
ICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRl
eCA2ZTI4OGFkLi40MGFkMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKQEAgLTIxNyw3ICsyMTcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsKIAogICAgIFJlZlB0
cjxSZXF1ZXN0RGlyZWN0b3J5Q29udGVudENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxk
ZXI6OkZpbGVTeXN0ZW06OkVudHJ5PiA+IG1fZW50cmllczsKICAgICBSZWZQdHI8RGlyZWN0b3J5
UmVhZGVyPiBtX2RpcmVjdG9yeVJlYWRlcjsKIH07CkBAIC0zNDIsNyArMzQyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgLCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CiAKICAgICBSZWZQ
dHI8UmVxdWVzdE1ldGFkYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwg
bV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX2lz
RGlyZWN0b3J5OwogfTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1f
Y2hhcnNldChjaGFyc2V0KSB7IH0KIAogICAgIFJlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxs
YmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7
CiAgICAgYm9vbCBtX3JlYWRBc1RleHQ7CiAgICAgaW50IG1fc3RhcnQ7CiAgICAgbG9uZyBsb25n
IG1fZW5kOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRS
ZWFkKCkKIAogY2xhc3MgRGVsZXRlRW50cnlSZXF1ZXN0IDogcHVibGljIFZvaWRDYWxsYmFjayB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVh
dGUoUGFzc1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVFbnRyeVJlcXVlc3Q+IGNy
ZWF0ZShQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29u
c3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZUVu
dHJ5UmVxdWVzdChyZXF1ZXN0Q2FsbGJhY2ssIHVybCkpOwogICAgIH0KQEAgLTU1NCwxMiArNTU0
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2Vzcyhz
dGF0aWNfY2FzdDxpbnQ+KGVycm9yQ29kZSkpOwogICAgIH0KIAotICAgIERlbGV0ZUVudHJ5UmVx
dWVzdChQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29u
c3QgS1VSTCYgdXJsKQorICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVmUHRyPERlbGV0ZUVu
dHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDog
bV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fdXJsKHVybCkg
eyB9CiAKICAgICBSZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7
Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiB9OwogCiB2b2lkIERlbGV0ZUVudHJ5
UmVxdWVzdDo6c3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKQEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6
ZGVsZXRlRW50cnkoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybAogICAgIGlm
ICghYXNzZXJ0RW5hYmxlZChlcnJvcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJs
KFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmlu
ZywgdXJsU3RyaW5nKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQgPSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9y
LCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpOwogICAgIGlmICghc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kSG9zdC5jcHAKaW5kZXggMDNiNjQxNS4uNGZlNjgzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTMyMiw3
ICszMjIsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVtb3ZlRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1QYXRoKQogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6Omlzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZp
bGVTeXN0ZW1OYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RVUkwpCiB7CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpOwotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3Rl
bU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290
VVJMKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIERPTUZpbGVTeXN0
ZW06OmNyZWF0ZShjb250ZXh0LCBmaWxlU3lzdGVtTmFtZSwgRmlsZVN5c3RlbVR5cGVJc29sYXRl
ZCwgVVJMKFBhcnNlZFVSTFN0cmluZywgcm9vdFVSTCksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRl
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZDU1MzJjMC4uY2ZmYjczZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbQogICAgICAg
ICByZXNvdXJjZUFnZW50LT5kb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0Zv
ckNsaWVudChpZGVudGlmaWVyLCBjbGllbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9v
bCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsTG9hZFhI
UihjbGllbnQsIG1ldGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVD
cmVkZW50aWFscyk7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBib29sIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50
aQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3Bl
UHJveHksIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRTdGFydFdvcmtlckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVBy
b3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdv
cmtlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yV29ya2VyQWdlbnQoKSkK
ICAgICAgICAgd29ya2VyQWdlbnQtPmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xv
YmFsU2NvcGVQcm94eSwgdXJsKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1l
bnRpbmdBZ2VuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IERvY3VtZW50KiBkb2N1bWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAg
ICAgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQWdlbnQoKTsKICAgICBpZiAoIWluc3BlY3RvckFnZW50IHx8ICFpbnNwZWN0b3JB
Z2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRmNmZhMWUuLmRmM2Vh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVy
czsKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmVuZGVyTGF5
ZXI7CkBAIC0yMDIsNyArMjAyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZy
YW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJT
dGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgc3RhdGljIHZv
aWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxs
TG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBj
b25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbFhIUkxv
YWRpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKTsKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShXT1JLRVJTKQogICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25T
dGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2Nv
cGVQcm94eSosIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5
KiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVUZXJtaW5h
dGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlV29ya2VyU2NyaXB0KFdvcmtlckdsb2JhbFNjb3Bl
KiwgaW50IHdvcmtlclRocmVhZFN0YXJ0TW9kZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0KERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChEb2N1
bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC00MDYsNyArNDA2LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJs
ZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAg
ICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC00NjMsMTIgKzQ2MywxMiBAQCBwcml2
YXRlOgogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUGF1c2VE
ZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZv
aWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFdv
cmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCB3b3Jr
ZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJH
bG9iYWxTY29wZVByb3h5Kik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IEtVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwor
ICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1bWVudCopOwogICAg
IHN0YXRpYyB2b2lkIGRpZENsb3NlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudCopOwpAQCAtMTUwNCw3ICsxNTA0LDcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckMKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhI
UihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKQEAgLTE4MDYsNyArMTgwNiw3IEBA
IGlubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0
ZWRXb3JrZXJPblN0YXJ0KFNjcmlwdEV4CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSog
cHJveHksIGNvbnN0IEtVUkwmIHVybCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQp
KQpAQCAtMTgzMyw3ICsxODMzLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW8KIAogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJM
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVu
dFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggODIwMjhkZC4uMzNkYWM0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAK
QEAgLTI0OSw3ICsyNDksNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVj
dG9yUGFnZUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaQogfQogCiAvLyBzdGF0
aWMKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1
bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGFzc2VydERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBm
cmFtZSk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0yOTgsNyArMjk4LDcgQEAgU3RyaW5nIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmMKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQorQ2FjaGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKSB7CkBAIC01
NjEsOSArNTYxLDkgQEAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291
cmNlc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0
aWMgVmVjdG9yPEtVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCitz
dGF0aWMgVmVjdG9yPFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkK
IHsKLSAgICBWZWN0b3I8S1VSTD4gcmVzdWx0OworICAgIFZlY3RvcjxVUkw+IHJlc3VsdDsKIAog
ICAgIHJlc3VsdC5hcHBlbmQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgp
KTsKIApAQCAtNTg5LDEwICs1ODksMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENv
b2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKIAogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSgpKSkgewogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgVmVjdG9yPEtVUkw+IGFsbFVSTHMg
PSBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpOwotICAgICAgICBmb3IgKFZlY3RvcjxL
VVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxVUkxzLmJlZ2luKCk7IGl0ICE9IGFsbFVSTHMu
ZW5kKCk7ICsraXQpIHsKKyAgICAgICAgVmVjdG9yPFVSTD4gYWxsVVJMcyA9IGFsbFJlc291cmNl
c1VSTHNGb3JGcmFtZShmcmFtZSk7CisgICAgICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gYWxsVVJMcy5iZWdpbigpOyBpdCAhPSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7
CiAgICAgICAgICAgICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAg
IHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAqaXQpLCBkb2NDb29raWVzTGlzdCk7CisgICAgICAgICAgICByYXdDb29r
aWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCAqaXQpLCBkb2NDb29raWVzTGlzdCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0
aW9uIGNoZWNraW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCiAg
ICAgICAgICAgICAgICAgLy8KQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6Z2V0Q29va2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBL
VVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHBhcnNlZFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1f
cGFnZS0+bWFpbkZyYW1lKCkpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUt
PmRvY3VtZW50KCksIHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CkBAIC02MzcsNyArNjM3LDcg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICByZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBLVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CisgICAgcmVzb3VyY2VD
b250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgY29u
dGVudCwgYmFzZTY0RW5jb2RlZCk7CiB9CiAKIHN0YXRpYyBib29sIHRleHRDb250ZW50Rm9yQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3Vs
dCkKQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5S
ZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIGlmICgh
bG9hZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpOworICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKIAogICAgIFN0cmlu
ZyBjb250ZW50OwogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGRkMDE4NzQuLjJiMDJlYzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYw
LDcgKzYwLDcgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3Zlcmxh
eTsKIGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVndWxhckV4cHJlc3Np
b247CiBjbGFzcyBTaGFyZWRCdWZmZXI7CkBAIC04NiwxMSArODYsMTEgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGJvb2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBib29sIHNoYXJl
ZEJ1ZmZlckNvbnRlbnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwot
ICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwgY29u
c3QgS1VSTCYsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKKyAgICBzdGF0
aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IFVSTCYs
IFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5n
IHNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSosIGNvbnN0IEtVUkwm
LCBTdHJpbmcqIHRleHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcq
IHRleHRFbmNvZGluZ05hbWUpOworICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlwZSk7CiAgICAg
c3RhdGljIFJlc291cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3Vy
Y2UmKTsKICAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBj
YWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
ZmQ4ODk0ZS4uYjA5NTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0SGVhcFNuYXBzaG90LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzczY2E1ZC4uOThi
YTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5z
CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgeGhyUmVw
bGF5RGF0YSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRYSFIo
VGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwg
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29s
IGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCiB7CiAgICAgUmVmUHRyPFhIUlJl
cGxheURhdGE+IHhoclJlcGxheURhdGEgPSBYSFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCB1
cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxzKTsKICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFkZXJzLmVuZCgpOwpAQCAtNDgwLDcgKzQ4MCw3
IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6YnVpbGRJbml0aWF0CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAK
LXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCkKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKQogewogICAgIG1fZnJvbnRlbmQtPndlYlNvY2tldENy
ZWF0ZWQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHJlcXVlc3RV
Ukwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggM2Q3YTY3ZC4uNTdhMjFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC02MCw3ICs2
MCw3IEBAIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsK
IGNsYXNzIEluc3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKIGNsYXNzIFBh
Z2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OwogCiAgICAgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNs
aWVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
LSAgICB2b2lkIHdpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50
aWFscyk7CisgICAgdm9pZCB3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNy
ZW5kZW50aWFscyk7CiAgICAgdm9pZCBkaWRGYWlsWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50Kik7CiAgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3Ry
aW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50
Kik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9pZCBkaWRDcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKTsKKyAg
ICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCk7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZENs
b3NlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggN2NjMTBmNS4uMTM5
MGEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcApAQCAtMTM4Miw3ICsxMzgyLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpy
ZXNvdXJjZVN0eWxlU2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiAgICAgU3RyaW5n
IGVycm9yOwogICAgIGJvb2wgYmFzZTY0RW5jb2RlZDsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnJlc291cmNlQ29udGVudCgmZXJyb3IsIG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIG1fcGFnZVN0eWxlU2hlZXQtPmhyZWYoKSksIHJlc3VsdCwgJmJhc2U2
NEVuY29kZWQpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KCZlcnJv
ciwgb3duZXJEb2N1bWVudCgpLT5mcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2VT
dHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKTsKICAgICByZXR1cm4g
ZXJyb3IuaXNFbXB0eSgpICYmICFiYXNlNjRFbmNvZGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMjY1MTRl
Ni4uN2FmYWZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCkKIH0KIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YShpZGVu
dGlmaWVyLCB1cmwsIHByb3RvY29sKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVh
dGUsIHRydWUsIGZyYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGJiZTAwYjYuLjQ1OTJjYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0
ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RmlyZUFuaW1hdGlvbkZyYW1lKCk7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wsIEZyYW1lKik7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRnJhbWUqKTsKICAgICB2b2lkIGRpZERlc3Ryb3lXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggOGFhYTdjNi4uNmI3ZmRlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJv
eHkuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEluc3BlY3RvcldvcmtlckFnZW50OjpzaG91bGRQ
YXVzZURlZGljYXRlZFdvcmtlck9uU3RhcnQoKQogICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29s
ZWFuKFdvcmtlckFnZW50U3RhdGU6OmF1dG9jb25uZWN0VG9Xb3JrZXJzKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9i
YWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBLVVJMJiB1cmwpCit2
b2lkIEluc3BlY3RvcldvcmtlckFnZW50OjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fZGVkaWNhdGVkV29ya2Vycy5zZXQod29ya2VyR2xvYmFsU2NvcGVQcm94eSwg
dXJsLnN0cmluZygpKTsKICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZCAmJiBtX3N0YXRlLT5n
ZXRCb29sZWFuKFdvcmtlckFnZW50U3RhdGU6Ondvcmtlckluc3BlY3Rpb25FbmFibGVkKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXgg
NTFmOTA2ZS4uODk3ZGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlckFnZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNz
IEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgV29y
a2VyR2xvYmFsU2NvcGVQcm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC01
OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbgogICAgIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCk7
Ci0gICAgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJv
eHkqLCBjb25zdCBLVVJMJik7CisgICAgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdv
cmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdvcmtlckdsb2Jh
bFNjb3BlVGVybWluYXRlZChXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAKICAgICAvLyBDYWxs
ZWQgZnJvbSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggM2ZjMzUwMi4uOTY5ZDMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291
cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAKLVBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0
IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKK1Bhc3NSZWZQdHI8
WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9k
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURh
dGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
WEhSUmVwbGF5RGF0YShtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBpbmNsdWRlQ3JlZGVu
dGlhbHMpKTsKIH0KQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBYSFJSZXBsYXlEYXRhOjphZGRIZWFk
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9o
ZWFkZXJzLnNldChrZXksIHZhbHVlKTsKIH0KIAotWEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0
YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitYSFJS
ZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBVUkwm
IHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV91cmwodXJs
KQogICAgICwgbV9hc3luYyhhc3luYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5kZXggNDE2ZDUzZC4uMWE0Mjk0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQ
YWdlQWdlbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC01MSwyMCArNTEsMjAgQEAgY2xhc3MgVGV4dFJlc291cmNl
RGVjb2RlcjsKIAogY2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFhIUlJl
cGxheURhdGE+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRh
PiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwg
Y29uc3QgVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVk
ZUNyZWRlbnRpYWxzKTsKIAogICAgIHZvaWQgYWRkSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICBjb25zdCBTdHJpbmcmIG1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CiAgICAgYm9vbCBhc3luYygpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmM7IH0KICAgICBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybURhdGE7IH0K
ICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oZWFk
ZXJzOyB9CiAgICAgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2lu
Y2x1ZGVDcmVkZW50aWFsczsgfQogcHJpdmF0ZToKLSAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0
cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0
YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0
cmluZyAmbWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOwogCiAgICAgU3RyaW5nIG1fbWV0aG9kOwotICAg
IEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9hc3luYzsKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7CiAgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5k
ZXggMjg3MmYyNi4uY2EzMzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBUaW1lbGlu
ZVJlY29yZEZhY3RvcnlfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpA
QCAtOTcsNyArOTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IGFwcGVuZExheW91dFJvb3QoSW5zcGVjdG9yT2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQm
KTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNz
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKKyAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3Jl
YXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7CiAgICAgICAgICAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICAgICAgICAgIGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCA5Y2IxZGNlLi5lOTNkMWNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIGlubGluZSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGNvbnN0IERvY3VtZW50KiBkb2N1
bWVudCkKICNkZWZpbmUgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uIHNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpKTsKICNlbmRpZgogCi1TdHJp
bmcgY29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRm9yRE9NKHNlc3Npb24sIGRvY3VtZW50
LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi12b2lkIHNldENvb2tpZXMoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQordm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1l
bnQpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJs
LCBjb29raWVTdHJpbmcpOwpAQCAtNzcsMTkgKzc3LDE5IEBAIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGRvY3VtZW50LT5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOwogfQogCi1TdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0NBTF9T
RVNTSU9OKGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2ll
c1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGRvY3Vt
ZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi1ib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiBjb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKQogewogICAgIExPQ0FM
X1NFU1NJT04oZG9jdW1lbnQpCiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29r
aWVzU3RyYXRlZ3koKS0+Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29u
c3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBMT0NBTF9TRVNT
SU9OKGRvY3VtZW50KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3ko
KS0+ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggNjBkZWQxNC4uYTk2YWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29r
aWVKYXIuaApAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiAKIC8v
IEZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgdGFrZSBhIERvY3VtZW50IHBvaW50ZXIgdG8gZGV0ZXJt
aW5lIHdoaWNoIGNvb2tpZSBzdG9yYWdlIHRvIHVzZS4gV2Ugc2hvdWxkIG1lcmdlIHRoYXQgaW50
byBjYWxsIHNpdGVzLCBhbmQgdXNlIFBsYXRmb3JtQ29va2llSmFyIGRpcmVjdGx5LgogCiAvLyBU
aGVzZSB0d28gZnVuY3Rpb25zIGltcGxlbWVudCBkb2N1bWVudC5jb29raWUgQVBJLCB3aXRoIHNw
ZWNpYWwgcnVsZXMgZm9yIEh0dHBPbmx5IGNvb2tpZXMuCi1TdHJpbmcgY29va2llcyhjb25zdCBE
b2N1bWVudCosIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CitTdHJpbmcgY29va2llcyhjb25z
dCBEb2N1bWVudCosIGNvbnN0IFVSTCYpOwordm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IERvY3VtZW50Kik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSk7CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1l
bnQqLCBjb25zdCBVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNv
bnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7Cit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuY3BwCmluZGV4IDRhMTdkZmQuLjM1ODBhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAK
QEAgLTE1NCwxMyArMTU0LDEzIEBAIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpCiAgICAgcmV0dXJuIGNhY2hl
OwogfQogCi12b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5
KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8Q3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+IHByZWZsaWdodFJlc3VsdCkKK3ZvaWQgQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtPiBwcmVmbGlnaHRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBtX3ByZWZsaWdodEhhc2hNYXAuc2V0KG1ha2VfcGFpcihvcmlnaW4sIHVybCks
IHByZWZsaWdodFJlc3VsdCk7CiB9CiAKLWJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYg
dXJsLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKK2Jvb2wgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50
aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RI
ZWFkZXJzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRIYXNoTWFwOjppdGVyYXRvciBjYWNoZUl0ID0gbV9wcmVmbGlnaHRIYXNo
TWFwLmZpbmQobWFrZV9wYWlyKG9yaWdpbiwgdXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAppbmRleCAwZDY0
MzM4Li5kNGM0ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYg
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZV9oCiAjZGVmaW5lIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGVfaAogCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJV
UkxIYXNoLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTcwLDE1ICs3MCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSYgc2hhcmVkKCk7CiAKLSAgICAgICAgdm9pZCBhcHBl
bmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8Q3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KTsKLSAgICAgICAgYm9vbCBjYW5Ta2lw
UHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgU3RvcmVkQ3JlZGVu
dGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0
SGVhZGVycyk7CisgICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0
ZW0+KTsKKyAgICAgICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBVUkwmLCBTdG9yZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICB2b2lkIGVtcHR5
KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlKCkgeyB9CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtV
Ukw+LCBPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+ID4gQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRIYXNoTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8c3Rk
OjpwYWlyPFN0cmluZywgVVJMPiwgT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGVJdGVtPiA+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDsKIAogICAgICAgICBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXAgbV9wcmVmbGlnaHRIYXNoTWFwOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCmluZGV4
IDRiMjJmNzIuLjNhMDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRUaW1pbmcuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjpz
ZXROYXZpZ2F0aW9uU3RhcnQoZG91YmxlIG5hdmlnYXRpb25TdGFydCkKICAgICBtX25hdmlnYXRp
b25TdGFydCA9IG5hdmlnYXRpb25TdGFydDsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRUaW1pbmc6
OmFkZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRp
cmVjdGVkVXJsKQordm9pZCBEb2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0KGNvbnN0IFVS
TCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJlY3RlZFVybCkKIHsKICAgICBtX3Jl
ZGlyZWN0Q291bnQrKzsKICAgICBpZiAoIW1fcmVkaXJlY3RTdGFydCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAppbmRleCA2NDQ5NDMzLi44NTQwOTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIAogY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nIHsKIHB1YmxpYzoKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJrTmF2aWdhdGlvblN0YXJ0KCk7CiAgICAg
dm9pZCBzZXROYXZpZ2F0aW9uU3RhcnQoZG91YmxlKTsKLSAgICB2b2lkIGFkZFJlZGlyZWN0KGNv
bnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRpcmVjdGVkVXJsKTsKKyAg
ICB2b2lkIGFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYg
cmVkaXJlY3RlZFVybCk7CiAKICAgICB2b2lkIG1hcmtVbmxvYWRFdmVudFN0YXJ0KCkgeyBtX3Vu
bG9hZEV2ZW50U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQogICAgIHZv
aWQgbWFya1VubG9hZEV2ZW50RW5kKCkgeyBtX3VubG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IGYyOGIwZDUuLmJiZmJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcApAQCAtMTgzLDEyICsxODMsMTIgQEAgUmVzb3VyY2VSZXF1ZXN0JiBEb2N1
bWVudExvYWRlcjo6cmVxdWVzdCgpCiAgICAgcmV0dXJuIG1fcmVxdWVzdDsKIH0KIAotY29uc3Qg
S1VSTCYgRG9jdW1lbnRMb2FkZXI6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9h
ZGVyOjp1cmwoKSBjb25zdAogewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRMb2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVz
dFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9v
cmlnaW5hbFJlcXVlc3RDb3B5LnNldFVSTCh1cmwpOwogICAgIG1fcmVxdWVzdC5zZXRVUkwodXJs
KTsKQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc1Bvc3RPclJlZGly
ZWN0QWZ0ZXJQb3N0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdAogCiB2b2lkIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coRG9jdW1lbnRMb2FkZXJU
aW1lciopCiB7Ci0gICAgS1VSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7
CisgICAgVVJMIHVybCA9IG1fc3Vic3RpdHV0ZURhdGEucmVzcG9uc2VVUkwoKTsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKICAgICAgICAgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIFJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVu
Y29kaW5nKCksICIiKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmIChp
c1N0b3BwaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gbV9yZXF1ZXN0
LnVybCgpOworICAgIFVSTCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSA9IG1fcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICAKICAgICBzd2l0Y2ggKHBv
bGljeSkgewpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGluCiAjaWYg
VVNFKENGTkVUV09SSykgfHwgUExBVEZPUk0oTUFDKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxy
ZGFyOi8vcHJvYmxlbS82MDYwNzgyPgogICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQotICAg
ICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAw
LCBTdHJpbmcoKSwgU3RyaW5nKCkpOworICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZShVUkwoKSwgInRleHQvaHRtbCIsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAjZW5kaWYK
IAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2Fu
IGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEwMTIsNyAr
MTAxMiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UpCiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLT5hZGRSZXNvdXJjZShyZXNvdXJjZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4g
RG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxBcmNoaXZlPiBEb2N1bWVudExvYWRl
cjo6cG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID8gbV9h
cmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5wb3BTdWJmcmFtZUFyY2hpdmUoZnJhbWVOYW1lLCB1
cmwpIDogUGFzc1JlZlB0cjxBcmNoaXZlPigwKTsKIH0KQEAgLTEwMjksNyArMTAyOSw3IEBAIFNo
YXJlZEJ1ZmZlciogRG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKIAotQXJjaGl2
ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK0FyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVS
ZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXJjaGl2
ZVJlc291cmNlQ29sbGVjdGlvbikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDUxLDcgKzEwNTEs
NyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNv
dXJjZSgpIGNvbnN0CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHIu
dXJsKCksIHIubWltZVR5cGUoKSwgci50ZXh0RW5jb2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUo
KS51bmlxdWVOYW1lKCkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1l
bnRMb2FkZXI6OnN1YnJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1Bhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gMDsK
QEAgLTEwODMsNyArMTA4Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNl
cyhWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mIHN1YnJlCiAgICAgY29uc3Qg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBhbGxSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1
YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT52
YWx1ZS0+dXJsKCkpKTsKKyAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3Vy
Y2UgPSB0aGlzLT5zdWJyZXNvdXJjZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+dmFsdWUtPnVy
bCgpKSk7CiAgICAgICAgIGlmIChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIHN1YnJlc291cmNl
cy5hcHBlbmQoc3VicmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMjEwLDcgKzEyMTAs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiB0aXRsZSkKICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VUaXRsZSh0aGlzKTsKIH0K
IAotS1VSTCBEb2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CitVUkwgRG9jdW1l
bnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJM
IHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0LgogICAgIC8vIFJldHVybnMgbmls
IGZvciBXZWJEYXRhUHJvdG9jb2wgVVJMcyB0aGF0IGFyZW4ndCBhbHRlcm5hdGVzCkBAIC0xMjI2
LDI0ICsxMjI2LDI0IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnlSZWZsZWN0
c0ZhaWx1cmUoKSBjb25zdAogICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSB8
fCBtX3Jlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogfQogCi1jb25zdCBLVVJMJiBE
b2N1bWVudExvYWRlcjo6b3JpZ2luYWxVUkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVudExv
YWRlcjo6b3JpZ2luYWxVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWdpbmFsUmVxdWVz
dENvcHkudXJsKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjpyZXF1ZXN0VVJM
KCkgY29uc3QKK2NvbnN0IFVSTCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3RVUkwoKSBjb25zdAog
ewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50
TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVzcG9uc2UudXJsKCk7CiB9CiAK
LUtVUkwgRG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKK1VSTCBEb2N1bWVudExv
YWRlcjo6ZG9jdW1lbnRVUkwoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gc3Vic3RpdHV0ZURh
dGEoKS5yZXNwb25zZVVSTCgpOworICAgIFVSTCB1cmwgPSBzdWJzdGl0dXRlRGF0YSgpLnJlc3Bv
bnNlVVJMKCk7CiAjaWYgRU5BQkxFKFdFQl9BUkNISVZFKQogICAgIGlmICh1cmwuaXNFbXB0eSgp
ICYmIG1fYXJjaGl2ZSAmJiBtX2FyY2hpdmUtPnR5cGUoKSA9PSBBcmNoaXZlOjpXZWJBcmNoaXZl
KQogICAgICAgICB1cmwgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpLT51cmwoKTsKQEAgLTEy
NjAsNyArMTI2MCw3IEBAIGNvbnN0IFN0cmluZyYgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlTUlN
RVR5cGUoKSBjb25zdAogICAgIHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiB9CiAKLWNv
bnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0Citjb25zdCBV
UkwmIERvY3VtZW50TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAppbmRleCA0YmQyYzdhLi5lMjdlZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaApAQCAtMTA5LDE1ICsxMDksMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25z
dCB7IHJldHVybiBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
aXMgdGhlIHNhbWUgYXMgcmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVt
LgotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgS1VSTCYg
dW5yZWFjaGFibGVVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsK
KyAgICAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCi0gICAgICAgIGNv
bnN0IEtVUkwmIG9yaWdpbmFsVVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsK
KyAgICAgICAgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0OworICAgICAgICBjb25zdCBV
UkwmIHJlcXVlc3RVUkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgp
IGNvbnN0OwogICAgICAgICBjb25zdCBTdHJpbmcmIHJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdDsK
IAotICAgICAgICB2b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlv
bihjb25zdCBLVVJMJik7CisgICAgICAgIHZvaWQgcmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYpOwogICAgICAgICBib29sIGlzU3RvcHBpbmcoKSBj
b25zdCB7IHJldHVybiBtX2lzU3RvcHBpbmc7IH0KICAgICAgICAgdm9pZCBzdG9wTG9hZGluZygp
OwogICAgICAgICB2b2lkIHNldENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRl
ZCA9IGNvbW1pdHRlZDsgfQpAQCAtMTQyLDIwICsxNDIsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7CiAgICAgICAg
IHZvaWQgYWRkQWxsQXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7CiAgICAgICAgIHZvaWQgYWRk
QXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7Ci0gICAgICAgIFBh
c3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBLVVJMJik7CisgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJj
aGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAg
ICAgICAgU2hhcmVkQnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgICAg
IGJvb2wgc2NoZWR1bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1M
KQogCiAgICAgICAgIC8vIFJldHVybiB0aGUgQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMIG9u
bHkgd2hlbiBsb2FkaW5nIGFuIEFyY2hpdmUKLSAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNo
aXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBBcmNoaXZlUmVz
b3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgICAg
ICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlKCkgY29uc3Q7CiAKICAg
ICAgICAgLy8gUmV0dXJuIGFuIEFyY2hpdmVSZXNvdXJjZSBmb3IgdGhlIFVSTCwgZWl0aGVyIGNy
ZWF0aW5nIGZyb20gbGl2ZSBkYXRhIG9yCiAgICAgICAgIC8vIHB1bGxpbmcgZnJvbSB0aGUgQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbgotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gc3VicmVzb3VyY2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgICAgIHZv
aWQgZ2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYp
IGNvbnN0OwogCiAKQEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAKLSAg
ICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CisgICAgICAgIFVSTCB1cmxGb3JIaXN0
b3J5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgp
IGNvbnN0OwogCiAgICAgICAgIC8vIFRoZXNlIGFjY2Vzc29ycyBhY2NvbW1vZGF0ZSBXZWJDb3Jl
J3Mgc29tZXdoYXQgZmlja2xlIGN1c3RvbSBvZiBjcmVhdGluZyBoaXN0b3J5CkBAIC0yNTcsNyAr
MjU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAKICAgICAgICAgLy8g
VGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgcmVzdWx0aW5nIGZyb20gdGhpcyBEb2N1bWVudExvYWRl
ci4KLSAgICAgICAgS1VSTCBkb2N1bWVudFVSTCgpIGNvbnN0OworICAgICAgICBVUkwgZG9jdW1l
bnRVUkwoKSBjb25zdDsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICAg
ICAgICAgdm9pZCBzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAz
ZmU1NmYzLi5iMGQ4NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlD
aGVjaykKIHsKICAgICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQg
ZnJvbSB0aGUgY3Jvc3Mtc2l0ZSByZXF1ZXN0cy4KLSAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
ID0gcmVxdWVzdC51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsKICAgICBB
U1NFUlQobV9zYW1lT3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkp
OwogICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlz
RW1wdHkoKSk7CkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAg
ICBkaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKLWJvb2wgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCitib29s
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxs
b3dDcm9zc09yaWdpblJlcXVlc3RzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAwY2U5OTdh
Li5iZjMxYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCkBAIC00NSw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgQ2FjaGVkUmF3UmVzb3VyY2U7CiAgICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3Mg
S1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQ7CkBA
IC05NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwcmVmbGln
aHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbik7CiAKICAgICAgICAgdm9pZCBsb2FkUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5KTsKLSAgICAgICAg
Ym9vbCBpc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJik7CisgICAgICAgIGJvb2wgaXNBbGxv
d2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CiAKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIu
Y3BwCmluZGV4IDFhYzE0NzQuLjNlNjE0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmNwcApAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6
Y2xlYXIoKQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbigpCiB7Ci0gICAgYmVnaW4oS1VS
TCgpKTsKKyAgICBiZWdpbihVUkwoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3Vt
ZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPERv
Y3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS0+aXNEaXNwbGF5aW5n
SW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91
bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChtX21pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFBs
dWdpbkRvY3VtZW50OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsKQEAgLTExMiwxMiArMTEyLDEyIEBA
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25z
dCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChtX21pbWVUeXBlLCBtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPmluVmlld1NvdXJjZU1vZGUoKSk7
CiB9CiAKLXZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5j
ZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCit2b2lkIERvY3VtZW50
V3JpdGVyOjpiZWdpbihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9j
dW1lbnQqIG93bmVyRG9jdW1lbnQpCiB7CiAgICAgLy8gV2UgZ3JhYiBhIGxvY2FsIGNvcHkgb2Yg
dGhlIFVSTCBiZWNhdXNlIGl0J3MgZWFzeSBmb3IgY2FsbGVycyB0byBzdXBwbHkKICAgICAvLyBh
IFVSTCB0aGF0IHdpbGwgYmUgZGVhbGxvY2F0ZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhp
cyBmdW5jdGlvbi4KICAgICAvLyBGb3IgZXhhbXBsZSwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNjA+LgotICAgIEtVUkwgdXJsID0gdXJsUmVmZXJlbmNl
OworICAgIFVSTCB1cmwgPSB1cmxSZWZlcmVuY2U7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgZG9j
dW1lbnQgYmVmb3JlIGNsZWFyaW5nIHRoZSBmcmFtZSwgYmVjYXVzZSBpdCBtYXkgbmVlZCB0bwog
ICAgIC8vIGluaGVyaXQgYW4gYWxpYXNlZCBzZWN1cml0eSBjb250ZXh0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAzZDkwYjlkLi44MWQwZjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBE
b2N1bWVudFdyaXRlcl9oCiAjZGVmaW5lIERvY3VtZW50V3JpdGVyX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXBsYWNlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQp
OwogCiAgICAgdm9pZCBiZWdpbigpOwotICAgIHZvaWQgYmVnaW4oY29uc3QgS1VSTCYsIGJvb2wg
ZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1
bWVudCA9IDApOworICAgIHZvaWQgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRv
d09iamVjdEF2YWlsYWJsZSA9IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7CiAg
ICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2
b2lkIGVuZCgpOwogICAgIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b2N1bWVudFdhc0xvYWRlZEFzUGFydE9mTmF2aWdhdGlvbigpOwogCiBwcml2YXRlOgotICAgIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IEtVUkwmKTsKKyAgICBQYXNz
UmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBVUkwmKTsKICAgICB2b2lkIGNs
ZWFyKCk7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5jcHAKaW5kZXggMGY4OGVlYi4uZWY2MDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKQEAgLTEzNSwxMiArMTM1LDEyIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlCiAgICAgcmV0dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpCitQYXNzUmVmUHRyPEZyYW1lPiBF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGlu
dCkKIHsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1l
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQogewogICAgIHJldHVybiAwOwogfQpAQCAtMTQ5
LDEzICsxNDksMTMgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdp
bihXaWRnZXQqKQogewogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVs
ZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
IHsKICAgICByZXR1cm4gMDsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlh
UGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFN0cmluZyYpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDkxOWNhODQuLjMzYjJiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KSB7IH0KQEAgLTMxMiwxNCArMzEyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJh
bWVMb2FkQ29tcGxldGVkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVWaWV3U3RhdGUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxB
c1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBV
UkwmKSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyBy
ZXR1cm4gIiI7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgeyBy
ZXR1cm4gIiI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShDYWNoZWRGcmFtZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21t
aXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KQEAgLTMzOCwxOSArMzM4LDE5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5
SXRlbSopIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biosIGNvbnN0IEtVUkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IEtVUkwmLCBib29sKSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgeyB9CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQs
IGludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0Kikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1l
bnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxN
ZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSB7IH0KICNlbmRpZgogCi0gICAg
dmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQorICAg
IHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQogICAg
IHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSB7
IH0KQEAgLTUxNyw3ICs1MTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1l
bnUqKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBjb3B5SW1hZ2VUb0NsaXBib2FyZChjb25zdCBIaXRUZXN0UmVzdWx0JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCA5YmY0NDJhLi4zYzQxZWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3Rh
dGljIGludDY0X3QgZ2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25l
eHRJZGVudGlmaWVyOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFU
b1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nVHlwZSkKK3N0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVSTCYg
dXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCiB7
CiAgICAgU3RyaW5nIGJvZHkgPSBkYXRhLmZsYXR0ZW5Ub1N0cmluZygpOwogCkBAIC04NCw3ICs4
NCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKEtVUkwmIHVy
bCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0
dHJpYnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0cmluZyYgYWN0aW9uKQogewotICAgIC8vIEZJ
WE1FOiBDYW4gd2UgcGFyc2UgaW50byBhIEtVUkw/CisgICAgLy8gRklYTUU6IENhbiB3ZSBwYXJz
ZSBpbnRvIGEgVVJMPwogICAgIG1fYWN0aW9uID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGFjdGlvbik7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEZvcm1TdWJtaXNz
aW9uOjpBdHRyaWJ1dGVzOjpjb3B5RnJvbShjb25zdCBBdHRyaWJ1dGVzJiBvdGhlcikKICAgICBt
X2FjY2VwdENoYXJzZXQgPSBvdGhlci5tX2FjY2VwdENoYXJzZXQ7CiB9CiAKLWlubGluZSBGb3Jt
U3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3QgS1VSTCYgYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25z
dCBTdHJpbmcmIGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBl
dmVudCkKK2lubGluZSBGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhv
ZCwgY29uc3QgVVJMJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGRhdGEsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV9h
Y3Rpb24oYWN0aW9uKQogICAgICwgbV90YXJnZXQodGFyZ2V0KQpAQCAtMTY2LDcgKzE2Niw3IEBA
IFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZv
cm1FbGVtZW50KiBmb3JtLCBjb25zdCBBCiAgICAgfQogICAgIAogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGZvcm0tPmRvY3VtZW50KCk7Ci0gICAgS1VSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5j
b21wbGV0ZVVSTChjb3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50
LnVybCgpLnN0cmluZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CisgICAgVVJMIGFj
dGlvblVSTCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKGNvcGllZEF0dHJpYnV0ZXMuYWN0aW9uKCku
aXNFbXB0eSgpID8gZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkgOiBjb3BpZWRBdHRyaWJ1dGVzLmFj
dGlvbigpKTsKICAgICBib29sIGlzTWFpbHRvRm9ybSA9IGFjdGlvblVSTC5wcm90b2NvbElzKCJt
YWlsdG8iKTsKICAgICBib29sIGlzTXVsdGlQYXJ0Rm9ybSA9IGZhbHNlOwogICAgIFN0cmluZyBl
bmNvZGluZ1R5cGUgPSBjb3BpZWRBdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOwpAQCAtMjIyLDEy
ICsyMjIsMTIgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNy
ZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZvcm1TdWJtaXNzaW9uKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwg
dGFyZ2V0T3JCYXNlVGFyZ2V0LCBlbmNvZGluZ1R5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGZv
cm1EYXRhLnJlbGVhc2UoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCkpOwogfQogCi1L
VVJMIEZvcm1TdWJtaXNzaW9uOjpyZXF1ZXN0VVJMKCkgY29uc3QKK1VSTCBGb3JtU3VibWlzc2lv
bjo6cmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNz
aW9uOjpQb3N0TWV0aG9kKQogICAgICAgICByZXR1cm4gbV9hY3Rpb247CiAKLSAgICBLVVJMIHJl
cXVlc3RVUkwobV9hY3Rpb24pOworICAgIFVSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKICAgICBy
ZXF1ZXN0VVJMLnNldFF1ZXJ5KG1fZm9ybURhdGEtPmZsYXR0ZW5Ub1N0cmluZygpKTsgICAgCiAg
ICAgcmV0dXJuIHJlcXVlc3RVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lv
bi5oCmluZGV4IDRkMzU5M2IuLmMyZjgzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gKIAog
I2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBwb3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYpOwog
ICAgIAotICAgIEtVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFVSTCByZXF1ZXN0VVJMKCkg
Y29uc3Q7CiAKICAgICBNZXRob2QgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0K
LSAgICBjb25zdCBLVVJMJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorICAg
IGNvbnN0IFVSTCYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KICAgICBjb25z
dCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CiAgICAgdm9pZCBj
bGVhclRhcmdldCgpIHsgbV90YXJnZXQgPSBTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CkBAIC0xMTEsMTEg
KzExMSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBGb3JtU3VibWlzc2lv
bihNZXRob2QsIGNvbnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFzc1JlZlB0cjxG
b3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NS
ZWZQdHI8RXZlbnQ+KTsKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNvbnN0IFVSTCYgYWN0
aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBi
b3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAgLy8g
RklYTUU6IEhvbGQgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlcyBpbnN0ZWFkIG9mIGluZGl2aWR1
YWwgbWVtYmVycy4KICAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgS1VSTCBtX2FjdGlvbjsKKyAg
ICBVUkwgbV9hY3Rpb247CiAgICAgU3RyaW5nIG1fdGFyZ2V0OwogICAgIFN0cmluZyBtX2NvbnRl
bnRUeXBlOwogICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNGI3OGU0YS4uMTkxNGNiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgRnJhbWVMb2FkZXI6
On5GcmFtZUxvYWRlcigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlz
IHNvbWV3aGF0IG9kZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1w
dHkgZG9jdW1lbnQuCi0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRl
RG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0
eVN0cmluZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKKyAgICBzZXRQb2xpY3lEb2N1
bWVudExvYWRlcihtX2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3Qo
VVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5n
ZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50
TG9hZGVyLmdldCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9h
ZGluZ01haW5SZXNvdXJjZSgpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2lu
ZygpOwpAQCAtMjg3LDEzICsyODcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9h
ZGluZyhib29sIGRlZmVycykKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxv
Y2F0aW9uKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIGJvb2wgcmVmcmVzaCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9u
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgYm9vbCByZWZyZXNoKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qoc2Vj
dXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgIl9zZWxmIiks
CiAgICAgICAgIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNlbmRS
ZWZlcnJlciwgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3Nl
ZFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dlcmluZ0V2ZW50LCBib29sIGxvY2tIaXN0
b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRT
ZW5kUmVmZXJyZXIpCit2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJp
bmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91
bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyKQogewogICAgIHVybFNlbGVjdGVkKEZy
YW1lTG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNv
dXJjZVJlcXVlc3QodXJsKSwgcGFzc2VkVGFyZ2V0KSwKICAgICAgICAgdHJpZ2dlcmluZ0V2ZW50
LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBE
b05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBz
dWJtaXNzaW9uKQogICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNz
aW9uLT5hY3Rpb24oKSkpIHsKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oS1VSTChzdWJtaXNzaW9uLT5hY3Rp
b24oKSkpKQorICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbihVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0
aW9uID0gdHJ1ZTsKICAgICAgICAgbV9mcmFtZS5zY3JpcHQoKS5leGVjdXRlSWZKYXZhU2NyaXB0
VVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlw
dFVSTCk7CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJz
dERhdGEoKQogICAgIG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJl
Y3QoZGVsYXksIHVybCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJy
ZXIoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJl
cihjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaXBw
ZWRGb3JVc2VBc1JlZmVycmVyKCk7CiB9CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tDYWxsSW1wbGljaXRDbG9zZSgpCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5p
bXBsaWNpdENsb3NlKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRG
cmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxk
RnJhbWUpCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJhbWUpCiB7CiAgICAg
QVNTRVJUKGNoaWxkRnJhbWUpOwogCkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogICAgIGlmICghbWFp
blJlc291cmNlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIFN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1pbWVU
eXBlKCksIG1haW5SZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIEtVUkwoKSk7CisgICAgU3Vic3Rp
dHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEobWFpblJlc291cmNlLT5kYXRhKCksIG1haW5SZXNvdXJj
ZS0+bWltZVR5cGUoKSwgbWFpblJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSwgVVJMKCkpOwogICAg
IAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1haW5SZXNvdXJjZS0+dXJsKCkpOwogI2lm
IFBMQVRGT1JNKE1BQykKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
QXJjaGl2ZShQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCiB9CiAjZW5kaWYgLy8gRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1l
TG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09i
amVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQ
bHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAK
QEAgLTk1Myw3ICs5NTMsNyBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nT3JpZ2luKCkg
Y29uc3QKICAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpjaGVja0lmRm9ybUFjdGlvbkFsbG93
ZWRCeUNTUChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpjaGVja0lm
Rm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAo
bV9zdWJtaXR0ZWRGb3JtVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MDAwLDcgKzEwMDAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcm92aXNpb25hbExvYWRTdGFydGVk
KCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6cmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9uUHJvdGVj
dGlvbigpCiB7Ci0gICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgIG1fc3VibWl0
dGVkRm9ybVVSTCA9IFVSTCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVGaXJzdFBh
cnR5Rm9yQ29va2llcygpCkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1
cGRhdGVGaXJzdFBhcnR5Rm9yQ29va2llcygpCiAgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29r
aWVzKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpz
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVy
OjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBmb3IgKEZy
YW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgmbV9mcmFtZSkpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyh1cmwpOwpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCiAKIC8vIFRoaXMg
ZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMsIGV4Y2VwdCBp
dCByZWxpZXMgb24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVj
a2VkIHRoYXQgdGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRo
aW5nIHRvIGRvLgotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtV
UkwmIHVybCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LCBi
b29sIGlzTmV3TmF2aWdhdGlvbikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVu
dChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LCBib29sIGlzTmV3TmF2aWdhdGlvbikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3Rh
dGUgb2JqZWN0LCB3ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VS
VCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAog
ICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2UncyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwg
dG8gZmFrZSB0aGUgVVJMIGNoYW5nZQotICAgIEtVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVu
dCgpLT51cmwoKTsKKyAgICBVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsK
ICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnNldFVSTCh1cmwpOwogICAgIHNldE91dGdvaW5nUmVm
ZXJyZXIodXJsKTsKICAgICBkb2N1bWVudExvYWRlcigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNh
bWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBsb2NrSGlzCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24g
YXdheSBpbnNpZGUgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExv
YWRlci4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKLSAgICBLVVJMIHVybCA9
IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgp
KTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyKCktPmNhbkRpc3BsYXkodXJsKSkgewpAQCAt
MTE5OSw3ICsxMTk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICB9CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJh
bWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3Qg
VVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLAogICAgIFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRl
KQogewogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMpCkBAIC0xMjcyLDE0ICsxMjcyLDE0IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBjb25zdCBTdHJpCiAgICAgfQogfQogCi1TdWJzdGl0dXRlRGF0YSBGcmFt
ZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1N1
YnN0aXR1dGVEYXRhIEZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQo
dXJsKSkKICAgICAgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKCk7CiAgICAgU3RyaW5nIHNyY2Rv
YyA9IG1fZnJhbWUub3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3JjZG9jQXR0cik7
CiAgICAgQVNTRVJUKCFzcmNkb2MuaXNOdWxsKCkpOwogICAgIENTdHJpbmcgZW5jb2RlZFNyY2Rv
YyA9IHNyY2RvYy51dGY4KCk7Ci0gICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwg
InRleHQvaHRtbCIsICJVVEYtOCIsIEtVUkwoKSk7CisgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRh
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9j
Lmxlbmd0aCgpKSwgInRleHQvaHRtbCIsICJVVEYtOCIsIFVSTCgpKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQpAQCAt
MTM4Niw3ICsxMzg2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3RhdGU7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNz
aW9uID0gZm9ybVN0YXRlOwogCi0gICAgY29uc3QgS1VSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1
ZXN0KCkudXJsKCk7CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSBsb2FkZXItPnJlcXVlc3QoKS51
cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QgPSBsb2FkZXItPnJlcXVlc3QoKS5o
dHRwTWV0aG9kKCk7CiAKICAgICBpZiAoc2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihp
c0Zvcm1TdWJtaXNzaW9uLCBodHRwTWV0aG9kLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwg
bmV3VVJMKSkgewpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBG
cmFtZUxvYWRlcjo6aW5pdGlhbFJlcXVlc3QoKSBjb25zdAogICAgIHJldHVybiBhY3RpdmVEb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6
d2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6d2ls
bExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJiB1cmwpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QodXJsKTsKIApAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2ls
bExvYWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYgdXJsKQogCiBib29sIEZyYW1lTG9hZGVyOjpzaG91
bGRSZWxvYWRUb0hhbmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIp
CiB7Ci0gICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwo
KTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7
CiAKICAgICBpZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xNDgyLDcgKzE0ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3Zl
cnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgICAgICByZXR1cm47CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3Qo
KTsKLSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFi
bGVVUkwoKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJl
YWNoYWJsZVVSTCgpOwogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXF1ZXN0LnNldFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE0OTgsNyArMTQ5OCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcpCiAgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZy
YW1lTG9hZFR5cGVSZWxvYWQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRo
T3ZlcnJpZGVVUkwoY29uc3QgS1VSTCYgb3ZlcnJpZGVVcmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQp
Cit2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVVUkwoY29uc3QgVVJMJiBvdmVy
cmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2Fk
ZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gUmVwbGFjZSBlcnJvci1w
YWdlIFVSTCB3aXRoIHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8gcmVhY2guCiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOwot
ICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVS
TCgpOworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hh
YmxlVVJMKCk7CiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGlu
aXRpYWxSZXF1ZXN0LnNldFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE5MTcsNyArMTkxNyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChi
b29sIGNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzCiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRp
b24gPSBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25z
dCBLVVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3Qg
VVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCkKIHsKICAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QodXJsLCBzZWNvbmRzLCBmaXJlRGF0ZSk7CiAgICAgCkBAIC0xOTMyLDcgKzE5MzIsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmIHVybCwgZG91
YmxlIHNlY29uZHMsIGRvdWJsZSBmaXJlRAogICAgIG1fcXVpY2tSZWRpcmVjdENvbWluZyA9IChs
b2NrQmFja0ZvcndhcmRMaXN0IHx8IGhpc3RvcnkoKS5jdXJyZW50SXRlbVNob3VsZEJlUmVwbGFj
ZWQoKSkgJiYgbV9kb2N1bWVudExvYWRlciAmJiAhbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3Jt
QWN0aW9uOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYg
Y3VycmVudFVSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpCitib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRSZWxvYWQoY29uc3QgVVJMJiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0
aW9uVVJMKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcnVsZTogIkRv
bid0IHJlbG9hZCBpZiBuYXZpZ2F0aW5nIGJ5IGZyYWdtZW50IHdpdGhpbgogICAgIC8vIHRoZSBz
YW1lIFVSTCwgYnV0IGRvIHJlbG9hZCBpZiBnb2luZyB0byBhIG5ldyBVUkwgb3IgdG8gdGhlIHNh
bWUgVVJMIHdpdGggbm8KQEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9w
ZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICAvLyBEb24ndCByZS1lbWl0IHRo
ZSBsb2FkIGV2ZW50LgogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCi0gICAg
S1VSTCB1cmwgPSBjYWNoZWRGcmFtZS51cmwoKTsKKyAgICBVUkwgdXJsID0gY2FjaGVkRnJhbWUu
dXJsKCk7CiAKICAgICAvLyBGSVhNRTogSSBzdXNwZWN0IHRoaXMgYmxvY2sgb2YgY29kZSBkb2Vz
bid0IGRvIGFueXRoaW5nLgogICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYm
ICF1cmwuaG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmlzRW1wdHkoKSkKQEAgLTIxNDIs
NyArMjE0Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgICAgICBpZiAocGRsID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKICAgICAgICAgICAgICAgICAgICAgY2xlYXJQcm92aXNpb25hbExvYWQoKTsKICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT51
bnJlYWNoYWJsZVVSTCgpOworICAgICAgICAgICAgICAgICAgICBVUkwgdW5yZWFjaGFibGVVUkwg
PSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSAmJiB1bnJlYWNoYWJsZVVSTCA9
PSBwZGwtPnJlcXVlc3QoKS51cmwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJl
c2V0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjIzMCwxMiArMjIzMCwxMiBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAgICBt
X3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwog
fQogCi1zdGF0aWMgS1VSTCBvcmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSog
cGFnZSkKK3N0YXRpYyBVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2Uq
IHBhZ2UpCiB7CiAgICAgLy8gRklYTUU6IENhbiB0aGlzIGxvZ2ljIGJlIHJlcGxhY2VkIHdpdGgg
bV9mcmFtZS5kb2N1bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29va2llcygpPwogICAgIC8vIEl0IGhh
cyB0aGUgc2FtZSBtZWFuaW5nIG9mICJwYWdlIGEgdXNlciB0aGlua3MgaXMgdGhlIGN1cnJlbnQg
b25lIi4KIAotICAgIEtVUkwgb3JpZ2luYWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAg
IGludCBiYWNrQ291bnQgPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmJhY2tDb3VudCgpOwogICAgIGZv
ciAoaW50IGJhY2tJbmRleCA9IDA7IGJhY2tJbmRleCA8PSBiYWNrQ291bnQ7IGJhY2tJbmRleCsr
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBBdCBvbmUgcG9pbnQgd2UgaGFkIGNvZGUgaGVyZSB0byBj
aGVjayBhICJ3YXMgdXNlciBnZXN0dXJlIiBmbGFnLgpAQCAtMjI0OSwxMiArMjI0OSwxMiBAQCBz
dGF0aWMgS1VSTCBvcmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSogcGFnZSkK
ICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFVSTDsKICAgICB9CiAKLSAgICByZXR1cm4gS1VS
TCgpOworICAgIHJldHVybiBVUkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2lu
YWxVUkxGb3JEb3dubG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAg
IEtVUkwgb3JpZ2luYWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAgIAogICAgIC8vIElm
IHRoZXJlIGlzIG5vIHJlZmVycmVyLCBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIGluaXRp
YXRlZCBkaXJlY3RseSwgc28gY3VycmVudCBkb2N1bWVudCBpcwogICAgIC8vIGNvbXBsZXRlbHkg
dW5yZWxhdGVkIHRvIGl0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUyOTQ2OTE+LgpAQCAtMjI4MCw3
ICsyMjgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICAgICAgaG9zdE9ubHlVUkxT
dHJpbmcgPSBtYWtlU3RyaW5nKG9yaWdpbmFsVVJMLnByb3RvY29sKCksICI6Ly8iLCBvcmlnaW5h
bFVSTC5ob3N0KCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZmlyc3RQYXJ0eUZvckNv
b2tpZXMgYmFjayB0byBtYWluRG9jdW1lbnRVUkwuIEl0IHdhcyBhIG1pc3Rha2UgdG8gdGhpbmsg
dGhhdCBpdCB3YXMgb25seSB1c2VkIGZvciBjb29raWVzLgotICAgICAgICByZXF1ZXN0LnNldEZp
cnN0UGFydHlGb3JDb29raWVzKEtVUkwoS1VSTCgpLCBob3N0T25seVVSTFN0cmluZykpOworICAg
ICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFVSTChVUkwoKSwgaG9zdE9ubHlV
UkxTdHJpbmcpKTsKICAgICB9CiB9CiAKQEAgLTIzNzIsNyArMjM3Miw3IEBAIGludCBGcmFtZUxv
YWRlcjo6bnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29uc3QKICAg
ICByZXR1cm4gY291bnQ7CiB9CiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2NsaWVudC51c2VyQWdl
bnQodXJsKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5VXNlckFnZW50T3Zl
cnJpZGUoJm1fZnJhbWUsICZ1c2VyQWdlbnQpOwpAQCAtMjUzOSw3ICsyNTM5LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1
ZXN0LCBjb25zdCBTdHJpbmcKICAgICAvLyBidW5jaCBvZiBwYXJhbWV0ZXJzIHRoYXQgd291bGQg
Y29tZSBpbiBoZXJlIGFuZCB0aGVuIGJlIGJ1aWx0IGJhY2sgdXAgdG8gYSBSZXNvdXJjZVJlcXVl
c3QuICBJbiBjYXNlCiAgICAgLy8gYW55IGNhbGxlciBkZXBlbmRzIG9uIHRoZSBpbW11dGFiaWxp
dHkgb2YgdGhlIG9yaWdpbmFsIFJlc291cmNlUmVxdWVzdCwgSSdtIHJlYnVpbGRpbmcgYSBSZXNv
dXJjZVJlcXVlc3QKICAgICAvLyBmcm9tIHNjcmF0Y2ggYXMgaXQgZGlkIGFsbCBhbG9uZy4KLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBpblJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSBpblJlcXVlc3QudXJsKCk7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGluUmVx
dWVzdC5odHRwQm9keSgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBpblJlcXVl
c3QuaHR0cENvbnRlbnRUeXBlKCk7CiAgICAgU3RyaW5nIG9yaWdpbiA9IGluUmVxdWVzdC5odHRw
T3JpZ2luKCk7CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZl
ZE1haW5SZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiAgICAgaWYg
KG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLnVybCgpKQotICAgICAgICAg
ICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICAgICAgbV9zdWJtaXR0ZWRG
b3JtVVJMID0gVVJMKCk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBt
YWRlIGEgcGFnZSBjYWNoZSBpdGVtLCBidXQgbm93IHdlJ3JlIGJhaWxpbmcgb3V0IGR1ZSB0byBh
biBlcnJvciBiZWZvcmUgd2UgZXZlcgogICAgICAgICAvLyB0cmFuc2l0aW9uZWQgdG8gdGhlIG5l
dyBwYWdlIChiZWZvcmUgV2ViRnJhbWVTdGF0ZSA9PSBjb21taXQpLiAgVGhlIGdvYWwgaGVyZSBp
cyB0byByZXN0b3JlIGFueSBzdGF0ZQpAQCAtMjY3MSw3ICsyNjcxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y29udGludWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBS
ZXNvdXJjZVJlcXUKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQocmVxdWVzdC51cmwoKSwgMCwgIWlz
UmVkaXJlY3QpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnRO
YXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9k
LCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBjb25zdCBLVVJMJiB1cmwpCitib29sIEZyYW1lTG9h
ZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lv
biwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGlmIHdlIGFyZSBzdWJtaXR0
aW5nIGEgZm9ybSB3aXRoIG1ldGhvZCBvdGhlciB0aGFuICJHRVQiLCBleHBsaWNpdGx5IHJlbG9h
ZGluZywKICAgICAvLyBjdXJyZW50bHkgZGlzcGxheWluZyBhIGZyYW1lc2V0LCBvciBpZiB0aGUg
VVJMIGRvZXMgbm90IGhhdmUgYSBmcmFnbWVudC4KQEAgLTI2ODksNyArMjY4OSw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1T
dWJtaXNzaW9uLCBjb25zdCBTCiAgICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPmlzRnJh
bWVTZXQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJl
bnRCb3VuZGFyeShjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0Zy
YWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEZyYW1lVmll
dyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTI3NDUsNyArMjc0
NSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKICAgICB9CiAKICAgICBpZiAo
IXNob3VsZENsb3NlKQotICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBLVVJMKCk7CisgICAg
ICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IFVSTCgpOwogCiAgICAgbV9jdXJyZW50TmF2aWdhdGlv
bkhhc1Nob3duQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZmFsc2U7CiAgICAgcmV0dXJuIHNo
b3VsZENsb3NlOwpAQCAtMjk3Nyw3ICsyOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlV
c2VyQWdlbnQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJlcXVlc3Quc2V0SFRUUFVz
ZXJBZ2VudCh1c2VyQWdlbnQpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IEtVUkwm
IHVybCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK2Jvb2wgRnJhbWVMb2FkZXI6
OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAg
ICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKG1fZnJhbWUuZG9jdW1lbnQoKSwgRmVhdHVyZU9i
c2VydmVyOjpYRnJhbWVPcHRpb25zKTsKIApAQCAtMzAzNSwxNCArMzAzNSwxNCBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAgIGNvbW1p
dFByb3Zpc2lvbmFsTG9hZCgpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVy
OjpzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAoIWhpc3RvcnkoKS5jdXJyZW50SXRlbSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHVybCA9PSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKS0+dXJsKCkgfHwgdXJs
ID09IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpLT5vcmlnaW5hbFVSTCgpOwogfQogCi1ib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJs
KSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodXJs
LnN0cmluZygpLCAiYWJvdXQ6c3JjZG9jIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMx
MzEsOSArMzEzMSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0
ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBLVVJMIGl0ZW1VUkwgPSBpdGVtLT51cmwoKTsKLSAgICBLVVJMIGl0ZW1P
cmlnaW5hbFVSTCA9IGl0ZW0tPm9yaWdpbmFsVVJMKCk7Ci0gICAgS1VSTCBjdXJyZW50VVJMOwor
ICAgIFVSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7CisgICAgVVJMIGl0ZW1PcmlnaW5hbFVSTCA9
IGl0ZW0tPm9yaWdpbmFsVVJMKCk7CisgICAgVVJMIGN1cnJlbnRVUkw7CiAgICAgaWYgKGRvY3Vt
ZW50TG9hZGVyKCkpCiAgICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT51cmwo
KTsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaXRlbS0+Zm9ybURhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggZjU3ZTVlZi4uODY0ZGI2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxs
IGZ1bmN0aW9ucyB3aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICB2b2lk
IGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVy
LCBGcmFtZSopOworICAgIHZvaWQgbG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqKTsKICAgICB2b2lkIGxvYWRGcmFtZVJlcXVlc3Qo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVl
c3QgYW5kIGxvYWRVUkwuCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZv
cm1TdGF0ZT4sIFNob3VsZFNlbmRSZWZlcnJlcik7CiAKQEAgLTExNCwxMyArMTE0LDEzIEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hh
cj4mIGRhdGEpOwogCi0gICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1
ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCByZWZyZXNoID0gZmFsc2Up
OwotICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOworICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxv
Y2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCBy
ZWZyZXNoID0gZmFsc2UpOworICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0YXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlcik7CiAgICAgdm9pZCBzdWJt
aXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAogICAgIHZvaWQgcmVsb2FkKGJv
b2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAgICAgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVF
bmNvZGluZyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwotICAgIHZvaWQgcmVsb2Fk
V2l0aE92ZXJyaWRlVVJMKGNvbnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVs
b2FkID0gZmFsc2UpOworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYg
b3ZlcnJpZGVVcmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAKICAgICB2b2lkIG9w
ZW4oQ2FjaGVkRnJhbWVCYXNlJik7CiAgICAgdm9pZCBsb2FkSXRlbShIaXN0b3J5SXRlbSosIEZy
YW1lTG9hZFR5cGUpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGluaXRpYWxSZXF1ZXN0KCkgY29uc3Q7CiAgICAgdm9pZCByZWNlaXZlZE1h
aW5SZXNvdXJjZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgd2lsbExv
YWRNZWRpYUVsZW1lbnRVUkwoS1VSTCYpOworICAgIGJvb2wgd2lsbExvYWRNZWRpYUVsZW1lbnRV
UkwoVVJMJik7CiAKICAgICB2b2lkIGhhbmRsZUZhbGxiYWNrQ29udGVudCgpOwogCkBAIC0xNzUs
NyArMTc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2Fk
ZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAotICAgIGJvb2wgc2hv
dWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29s
IHNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAg
IEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlY2VpdmVkRmlyc3REYXRhKCk7CiAKICAgICB2b2lkIGhhbmRsZWRP
bmxvYWRFdmVudHMoKTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKQEAgLTIxOSw3
ICsyMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JjZVNhbmRib3hGbGFncyhTYW5kYm94Rmxh
Z3MgZmxhZ3MpIHsgbV9mb3JjZWRTYW5kYm94RmxhZ3MgfD0gZmxhZ3M7IH0KICAgICBTYW5kYm94
RmxhZ3MgZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrSWZG
b3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNoZWNr
SWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgRnJhbWUq
IG9wZW5lcigpOwogICAgIHZvaWQgc2V0T3BlbmVyKEZyYW1lKik7CkBAIC0yMzAsNyArMjMwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICB2b2lkIHNldE91
dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJl
cihjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgbG9hZERvbmUoKTsKICAgICB2b2lkIGZpbmlzaGVk
UGFyc2luZygpOwpAQCAtMjQ4LDExICsyNDgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBs
eVVzZXJBZ2VudChSZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0
TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgdW5zaWduZWQgbG9uZyBy
ZXF1ZXN0SWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNvbXBsZXRlZCgpOwogICAgIGJvb2wgYWxs
QW5jZXN0b3JzQXJlQ29tcGxldGUoKSBjb25zdDsgLy8gaW5jbHVkaW5nIHRoaXMKLSAgICB2b2lk
IGNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVE
YXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOworICAgIHZvaWQgY2xpZW50UmVkaXJlY3Rl
ZChjb25zdCBVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKICAgICB2b2lkIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hl
ZChib29sIGNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVzcyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBp
cyBwdWJsaWMgYmVjYXVzZSB0aGlzIGFzeW5jaHJvbm91cyBjYWxsYmFjayBmcm9tIHRoZSBGcmFt
ZUxvYWRlckNsaWVudApAQCAtMjY0LDcgKzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3Vw
cHJlc3NPcGVuZXJJbk5ld0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc09wZW5lcklu
TmV3RnJhbWU7IH0KIAotICAgIHN0YXRpYyBPYmplY3RDb250ZW50VHlwZSBkZWZhdWx0T2JqZWN0
Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgc3RhdGljIE9iamVjdENvbnRlbnRUeXBl
IGRlZmF1bHRPYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgYm9vbCBxdWlj
a1JlZGlyZWN0Q29taW5nKCkgY29uc3QgeyByZXR1cm4gbV9xdWlja1JlZGlyZWN0Q29taW5nOyB9
CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQcm9ncmVzc2lu
Z1N0YXR1c0NoYW5nZWQoKTsKIAotICAgIGNvbnN0IEtVUkwmIHByZXZpb3VzVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91c1VSTDsgfQorICAgIGNvbnN0IFVSTCYgcHJldmlvdXNVUkwoKSBj
b25zdCB7IHJldHVybiBtX3ByZXZpb3VzVVJMOyB9CiAKICAgICB2b2lkIGZvcmNlUGFnZVRyYW5z
aXRpb25JZk5lZWRlZCgpOwogCkBAIC0zMDQsNyArMzA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGxvYWRQcm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwogCiAgICAgdm9pZCB1cGRhdGVG
aXJzdFBhcnR5Rm9yQ29va2llcygpOwotICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
Y29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJM
Jik7CiAgICAgCiAgICAgdm9pZCBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBGcmFtZUxvYWRUeXBlLCBib29sIGlzTWFpblJlc291cmNlKTsKIApAQCAtMzEyLDcgKzMx
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFn
ZSopOwogICAgIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CiAKLSAgICBTdWJzdGl0dXRlRGF0
YSBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpOworICAgIFN1YnN0aXR1
dGVEYXRhIGRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0
YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRD
b250aW51ZSk7CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93
UG9saWN5KHZvaWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9v
bCBzaG91bGRDb250aW51ZSk7CkBAIC0zMjQsOCArMzI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICB2b2lkIGNvbnRpbnVl
RnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAKLSAgICBib29sIHNob3VsZFBlcmZvcm1GcmFnbWVu
dE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRo
b2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IEtVUkwmKTsKLSAgICB2b2lkIHNjcm9sbFRvRnJhZ21l
bnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgS1VSTCYpOworICAgIGJvb2wgc2hvdWxkUGVyZm9y
bUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYg
aHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlwZSwgY29uc3QgVVJMJik7CisgICAgdm9pZCBzY3JvbGxU
b0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBjaGVj
a0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpOwogCkBAIC0zNTIsMTkgKzM1MiwxOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBsb2FkUG9zdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgICAgICAgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRG
cmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbgogICAgICAgICBjb25z
dCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgUGFz
c1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7Ci0gICAgdm9pZCBsb2FkVVJM
KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbiBvciBkaXNwYXRjaGVzIHRvIG5hdmlnYXRpb24gcG9saWN5IGRl
bGVnYXRlCisgICAgdm9pZCBsb2FkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCAgICAgICAgICAvLyBDYWxsZWQgYnkgbG9hZEZy
YW1lUmVxdWVzdCwgY2FsbHMgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uIG9yIGRpc3BhdGNoZXMg
dG8gbmF2aWdhdGlvbiBwb2xpY3kgZGVsZWdhdGUKICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwg
RnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAKICAgICB2b2lkIHJlbG9hZFdpdGhSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZW5kVG9FbmRSZWxvYWQpOwogCi0gICAgYm9vbCBzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYg
Y3VycmVudFVSTCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIGJvb2wgc2hvdWxk
UmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7
CiAKICAgICB2b2lkIHJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiwgdW5zaWdu
ZWQgbG9uZyYgaWRlbnRpZmllciwgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBkZXRhY2hD
aGlsZHJlbigpOwogICAgIHZvaWQgY2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSopOwogCi0gICAg
dm9pZCBsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOworICAgIHZv
aWQgbG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOwogCiAgICAgdm9p
ZCBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVk
KCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2hlY2tM
b2FkQ29tcGxldGUoKTsKICAgICB2b2lkIHN0YXJ0Q2hlY2tDb21wbGV0ZVRpbWVyKCk7CiAKLSAg
ICBib29sIHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICBib29sIHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0
OwogCiAgICAgdm9pZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7
CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX25lZWRzQ2xlYXI7
CiAKLSAgICBLVVJMIG1fc3VibWl0dGVkRm9ybVVSTDsKKyAgICBVUkwgbV9zdWJtaXR0ZWRGb3Jt
VVJMOwogCiAgICAgVGltZXI8RnJhbWVMb2FkZXI+IG1fY2hlY2tUaW1lcjsKICAgICBib29sIG1f
c2hvdWxkQ2FsbENoZWNrQ29tcGxldGVkOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsK
IAotICAgIEtVUkwgbV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBS
ZWZQdHI8SGlzdG9yeUl0ZW0+IG1fcmVxdWVzdGVkSGlzdG9yeUl0ZW07CiAgICAgT3duUHRyPFBh
Z2VBY3Rpdml0eUFzc2VydGlvblRva2VuPiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYWY3NmJiNC4uZGM3ZDll
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc2LDcg
Kzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJ
bkVsZW1lbnQ7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNz
IFVSTDsKICAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKICAgICBjbGFzcyBQYWdlOwpAQCAtMTQwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUgaW50ZXJ2
YWwsIGRvdWJsZSBmaXJlRGF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91
YmxlIGZpcmVEYXRlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmln
YXRlV2l0aGluUGFnZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSA9IDA7CkBAIC0yMTQsOCArMjE0LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdpbiBo
YXMgcnVuIGFjdGl2ZSBjb250ZW50IChzdWNoIGFzIGEKICAgICAgICAgLy8gc2NyaXB0KSBmcm9t
IGFuIGluc2VjdXJlIHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4K
ICAgICAgICAgLy8gc3ByZWFkIHRvIG90aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9
IDA7CkBAIC0yNDIsOSArMjQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IEtVUkwmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgVVJMJikgPSAwOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hl
ZEZyYW1lKikgPSAwOwpAQCAtMjU4LDIxICsyNTgsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKIAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcs
IGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdp
bldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKLSAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyopIGNvbnN0IHsgfQog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3Qg
SW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0Kikg
PSAwOwogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RD
b250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqKSA9IDA7CkBAIC0yOTQsMTYgKzI5NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
ZW5kaWYKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1l
bnQoY29uc3QgU3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IEtVUkwm
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2Fk
TWVkaWFFbGVtZW50VVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkgeyB9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVy
biBlbmFibGVkUGVyU2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0
RnJvbVNvdXJjZShib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgS1VSTCYpIHsgcmV0dXJu
IGVuYWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRG
cm9tU291cmNlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwmKSB7IHJldHVybiBl
bmFibGVkUGVyU2V0dGluZ3M7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBj
b25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkUGVyU2V0
dGluZ3MsIFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dSdW5uaW5nSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwm
KSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFs
bG93SW1hZ2UoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVu
YWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5n
SW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0
dWFsIGJvb2wgYWxsb3dSdW5uaW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBlclNldHRp
bmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0
aW5nczsgfQogCiAgICAgICAgIC8vIFRoaXMgY2FsbGJhY2sgbm90aWZpZXMgdGhlIGNsaWVudCB0
aGF0IHRoZSBmcmFtZSB3YXMgYWJvdXQgdG8gcnVuCiAgICAgICAgIC8vIEphdmFTY3JpcHQgYnV0
IGRpZCBub3QgYmVjYXVzZSBhbGxvd1NjcmlwdCByZXR1cm5lZCBmYWxzZS4gV2UKQEAgLTMxNSwx
MSArMzE1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZE5vdEFsbG93UGx1Z2lucygpIHsgfQogCiAgICAgICAgIC8vIENsaWVudHMgdGhhdCBnZW5lcmFs
bHkgZGlzYWxsb3cgdW5pdmVyc2FsIGFjY2VzcyBjYW4gbWFrZSBleGNlcHRpb25zIGZvciBwYXJ0
aWN1bGFyIFVSTHMuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFj
Y2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBLVVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0
IFVSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIGVtYmVkZGVyIGludGVyY2VwdGVkIHRoZSBwb3N0TWVzc2Fn
ZSBjYWxsCiAgICAgICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudChTZWN1cml0eU9yaWdpbiogLyp0YXJnZXQqLywgTWVzc2FnZUV2ZW50KikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGY5OGMzOGMuLjcxNTYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRlZExpbmsoUGFnZSogcGFn
ZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnZpc2l0ZWRM
aW5rU3RyYXRlZ3koKS0+YWRkVmlzaXRlZExpbmsocGFnZSwgdmlzaXRlZExpbmtIYXNoKHVybC5z
dHJpbmcoKSkpOwogfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAg
IEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKICAgICBib29s
IG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKLSAgICBjb25zdCBLVVJMJiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IGZyYW1l
TG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghZnJh
bWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAg
IGlmICghaGlzdG9yeVVSTC5pc0VtcHR5KCkpIHsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExp
c3QoKQogI2VuZGlmCiAgICAgCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVS
TCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwor
ICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAgIGlmICghbV9jdXJyZW50
SXRlbSAmJiAhbV9mcmFtZS50cmVlKCkucGFyZW50KCkpIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgfQog
CiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlz
dG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9y
eSgpOwogCiAgICAgaWYgKCFoaXN0b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsK
ICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTYwMywxMCArNjAz
LDEwIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwogCi0g
ICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OworICAgIFVSTCB1bnJlYWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVS
TCgpOwogCi0gICAgS1VSTCB1cmw7Ci0gICAgS1VSTCBvcmlnaW5hbFVSTDsKKyAgICBVUkwgdXJs
OworICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0
eSgpKSB7CiAgICAgICAgIHVybCA9IHVucmVhY2hhYmxlVVJMOwpAQCAtODUyLDcgKzg1Miw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZFZpc2l0ZWRM
aW5rKHBhZ2UsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNp
dGVkTGluayhwYWdlLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIAogfQpAQCAtODcz
LDcgKzg3Myw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgICAgIHJldHVybjsKIAog
ICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKSk7Ci0gICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5w
YWdlKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNpdGVk
TGluayhtX2ZyYW1lLnBhZ2UoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CiAg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBiOWJjY2Q5Li4wZDkzZDhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04NSw4ICs4NSw3IEBAIHZvaWQg
TGlua0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAg
IG1fY2FjaGVkTGlua1Jlc291cmNlID0gMDsKIH0KIAotYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGlu
ayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3Qg
S1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGlu
ayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgLy8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBp
ZiB3ZSBsYXRlciBvbmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0
dHJpYnV0ZS5tX2ljb25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFo
cmVmLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggZTI1MTM1
Ny4uMjc3ZWM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC00Miw3ICs0Miw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIHN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOwogCiAvLyBUaGUgTGlua0xvYWRl
ciBjYW4gbG9hZCBsaW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNl
IGFuZCBwcmVmZXRjaC4KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgdm9pZCByZWxlYXNlZCgp
OwotICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50Kik7Cisg
ICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBVUkwmLCBEb2N1bWVudCopOwogCiBwcml2
YXRlOgogICAgIHZvaWQgbGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2FkZXI+Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggY2Uw
YThkYy4uNTZhMjQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29u
dGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRD
aGVja2VyLmNwcApAQCAtNTQsNyArNTQsNyBAQCBGcmFtZUxvYWRlckNsaWVudCYgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6Y2xpZW50KCkgY29uc3QKIH0KIAogLy8gc3RhdGljCi1ib29sIE1peGVkQ29u
dGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjppc01peGVkQ29u
dGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmIChzZWN1cml0eU9yaWdpbi0+cHJvdG9jb2woKSAhPSAiaHR0cHMiKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7IC8vIFdlIG9ubHkgY2FyZSBhYm91dCBIVFRQUyBzZWN1cml0eSBvcmlnaW5z
LgpAQCAtNjMsNyArNjMsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgSwogICAgIHJldHVybiAh
U2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKHVybCk7CiB9CiAKLWJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6
Y2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4s
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJp
dHlPcmlnaW4sIHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzcsNyArNzcsNyBAQCBi
b29sIE1peGVkQ29udGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZwogICAgIHJldHVybiBhbGxvd2VkOwogfQogCi1ib29sIE1p
eGVkQ29udGVudENoZWNrZXI6OmNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbiwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVudChz
ZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3
IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9p
ZCBNaXhlZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3Ry
aW5nJiBhY3Rpb24sIGNvbnN0IEtVUkwmIHRhcmdldCkgY29uc3QKK3ZvaWQgTWl4ZWRDb250ZW50
Q2hlY2tlcjo6bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBj
b25zdCBVUkwmIHRhcmdldCkgY29uc3QKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJp
bmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiAi
LCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZl
bCwgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
aAppbmRleCBkMGQ3YjFlLi44ZTRmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBNaXhlZENvbnRlbnRDaGVj
a2VyIHsKQEAgLTQ2LDE1ICs0NiwxNSBAQCBjbGFzcyBNaXhlZENvbnRlbnRDaGVja2VyIHsKIHB1
YmxpYzoKICAgICBNaXhlZENvbnRlbnRDaGVja2VyKEZyYW1lKik7CiAKLSAgICBib29sIGNhbkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgY29uc3Q7
Ci0gICAgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJik7CisgICAgYm9vbCBjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBjYW5SdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBzdGF0aWMg
Ym9vbCBpc01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOwogCiBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBoYXZlIGEgc2VwYXJhdGUg
Y2xpZW50IGZyb20gRnJhbWVMb2FkZXIuCiAgICAgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgp
IGNvbnN0OwogCi0gICAgdm9pZCBsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5n
JiBhY3Rpb24sIGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBh
bGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBG
cmFtZSogbV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24u
aAppbmRleCBjMzZiMTcwLi41ZTIxZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5pc0Vt
cHR5KCk7IH0KIAotICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VS
ZXF1ZXN0LnVybCgpOyB9CisgICAgICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlUmVxdWVzdC51cmwoKTsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAKICAgICAg
ICAgTmF2aWdhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDIyZDEzZmEu
LjlhYjk1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxl
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBm
cmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9j
a0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBt
X3VybCksIG1fcmVmZXJyZXIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwg
ZmFsc2UpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lKiBm
cmFtZSwgVGltZXI8TmF2aWdhdGlvblNjaGVkdWxlcj4qIHRpbWVyKQpAQCAtMTE5LDcgKzExOSw3
IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9oYXZlVG9sZENsaWVudCA9IHRydWU7CiAKICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgp
ID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50UmVkaXJlY3Rl
ZChLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsg
dGltZXItPm5leHRGaXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICAg
ICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudFJlZGlyZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXItPm5leHRGaXJlSW50ZXJ2YWwo
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3RvcFRpbWVyKEZyYW1lKiBmcmFtZSwgYm9vbCBuZXdMb2FkSW5Qcm9ncmVzcykKQEAgLTE2MCw4
ICsxNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQog
ICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNV
c2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRl
bHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBib29sIHJlZnJlc2ggPSBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbigpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkp
LCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHJlZnJl
c2gpOworICAgICAgICBib29sIHJlZnJlc2ggPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkp
KTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2lu
KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3Rvcnko
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCByZWZyZXNoKTsKICAgICB9CiB9OwogCkBAIC0xODEs
NyArMTgxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkK
ICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2Fz
VXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0
ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNo
YW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwo
KSksIHJlZmVycmVyKCksIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgdHJ1
ZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdp
bigpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCksIGxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgdHJ1ZSk7CiAgICAgfQogfTsKIApAQCAtMzUwLDcg
KzM1MCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sCiAKICAgICAvLyBJZiB0aGUgVVJMIHdl
J3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwg
ZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNj
aGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCi0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwog
ICAgIGlmIChwYXJzZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgcGFyc2VkVVJM
KSkgewogICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4sIG1fZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwg
bG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4OCw3ICszODgsNyBA
QCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCgpCiB7CiAgICAgaWYg
KCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0
IEtVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIGNvbnN0IFVSTCYg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bp
bmdMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4
IDMxMGVjYWYuLjRiMjQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5n
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBpbmdMb2FkZXI6
OmxvYWRJbWFnZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGluZ0xvYWRl
cjo6bG9hZEltYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFm
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUsIHVybCk7CkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2Vi
LWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGlu
Zwotdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBp
bmdVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
UGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29uc3QgVVJMJiBkZXN0aW5h
dGlvblVSTCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChwaW5nVVJMKTsKICNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6
c2VuZFBpbmcoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBk
ZXN0aW5hCiAgICAgVU5VU0VEX1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCi12b2lkIFBp
bmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBy
ZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKK3ZvaWQgUGluZ0xvYWRlcjo6
c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QocmVwb3J0VVJMKTsKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmgKaW5kZXggNGZlMTdhZC4uNjkzOWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGlu
Z0xvYWRlci5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Rm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOwpAQCAtNTQsOSArNTQsOSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUGlu
Z0xvYWRlciA6IHByaXZhdGUgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFBpbmdMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBLVVJMJiB1cmwpOwotICAg
IHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25VUkwpOwotICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnQoRnJhbWUqLCBjb25zdCBLVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJl
cG9ydCk7CisgICAgc3RhdGljIHZvaWQgbG9hZEltYWdlKEZyYW1lKiwgY29uc3QgVVJMJiB1cmwp
OworICAgIHN0YXRpYyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgVVJMJiBwaW5nVVJMLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kVmlvbGF0aW9u
UmVwb3J0KEZyYW1lKiwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IHJlcG9ydCk7CiAKICAgICB2aXJ0dWFsIH5QaW5nTG9hZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oCmluZGV4IGQzYWI3NDEuLmNlMjMyNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaApAQCAtMzIsNyAr
MzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYWNlaG9sZGVyRG9jdW1lbnQg
RklOQUwgOiBwdWJsaWMgRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYWNlaG9sZGVyRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUGxhY2Vob2xkZXJEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVSZW5kZXJU
cmVlKCkgT1ZFUlJJREU7CiAKLSAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CmluZGV4IDFkMjQzYjUuLmE4ZDIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIgpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodEZvck5vbkhUVFBQcm90b2NvbHMgPSAyMDsK
IC8vIE1hdGNoIHRoZSBwYXJhbGxlbCBjb25uZWN0aW9uIGNvdW50IHVzZWQgYnkgdGhlIG5ldHdv
cmtpbmcgbGF5ZXIuCiBzdGF0aWMgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7
CiAKLVJlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBDcmVhdGVIb3N0UG9saWN5IGNy
ZWF0ZUhvc3RQb2xpY3kpCitSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbiog
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBDcmVhdGVI
b3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0OwpAQCAt
MTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogICAgIHNjaGVkdWxlU2VydmVQZW5kaW5nUmVxdWVz
dHMoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IEtVUkwmIHJl
ZGlyZWN0VVJMKQordm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFVSTCYgcmVk
aXJlY3RVUkwpCiB7CiAgICAgSG9zdEluZm9ybWF0aW9uKiBvbGRIb3N0ID0gaG9zdEZvclVSTChy
ZXNvdXJjZUxvYWRlci0+dXJsKCkpOwogICAgIEFTU0VSVChvbGRIb3N0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCAyYTFlNDEzLi4yZGJm
NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVz
b3VyY2U7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Q2xpZW50OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVz
b3VyY2VMb2FkKEZyYW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVs
ZVBsdWdpblN0cmVhbUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVz
b3VyY2VMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2Vp
dmVkKFJlc291cmNlTG9hZGVyKiwgY29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZpcnR1
YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2VydmVQZW5kaW5n
UmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gUmVzb3VyY2VM
b2FkUHJpb3JpdHlWZXJ5TG93KTsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1
ZXN0cygpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmRPbmx5CiAg
ICAgfTsKICAgICAKLSAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgS1VSTCYs
IENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0
Rm9yVVJMKGNvbnN0IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9p
ZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlv
cml0eSk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBT
dHJpbmdIYXNoPiBIb3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApp
bmRleCBkODJhYTgyLi5jMzFmMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFJlc291
cmNlSGFuZGxlOwogCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfSAKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdC51cmwoKTsgfSAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYW5kbGUuZ2V0KCk7IH0KICAgICBib29sIHNob3VsZFNlbmRSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0U2VuZENhbGxiYWNrUG9saWN5
KFNlbmRDYWxsYmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcykgeyBtX29wdGlvbnMuc2VuZExv
YWRDYWxsYmFja3MgPSBzZW5kTG9hZENhbGxiYWNrczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmNwcAppbmRleCA0ODRkMjM4Li42MDUxZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3Qp
IHsgfQogfTsKIAotU2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCitTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0
Q29tcGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3Vt
ZW50LmgKaW5kZXggNzZkOWE4My4uMjQ2Njg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1NpbmtEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuaApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U2lua0RvY3VtZW50IEZJTkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2lua0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgU2lua0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFNpbmtEb2N1bWVudChG
cmFtZSosIGNvbnN0IFVSTCYpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFt
ZUxvYWRlci5jcHAKaW5kZXggOGY4YmMzMy4uOGM5ZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgU3ViZnJhbWVMb2Fk
ZXI6OmNsZWFyKCkKIGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7CiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlw
dDpzdHJpbmciPgotICAgIEtVUkwgc2NyaXB0VVJMOwotICAgIEtVUkwgdXJsOworICAgIFVSTCBz
Y3JpcHRVUkw7CisgICAgVVJMIHVybDsKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJs
U3RyaW5nKSkgewogICAgICAgICBzY3JpcHRVUkwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOyAv
LyBjb21wbGV0ZVVSTCgpIGVuY29kZXMgdGhlIFVSTC4KICAgICAgICAgdXJsID0gYmxhbmtVUkwo
KTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAKIGJvb2wg
U3ViZnJhbWVMb2FkZXI6OnJlc291cmNlV2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
KQogewotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAg
aWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1
cmwpOwogCkBAIC0xMDYsNyArMTA2LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VX
aWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWUKICAgICBy
ZXR1cm4gc2hvdWxkVXNlUGx1Z2luKGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMsIGZhbHNlLCB1c2VGYWxsYmFjayk7CiB9CiAKLWJvb2wgU3ViZnJh
bWVMb2FkZXI6OnBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2lu
RWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorYm9vbCBT
dWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsK
ICAgICBpZiAoTUlNRVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUp
KSB7CiAgICAgICAgIGlmICghbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCkBA
IC0xNDEsNyArMTQxLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJhbWVMb2Fk
ZXI6OnJlcXVlc3RQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1
c2VGYWxsYmFjaykKIHsKICAgICAvLyBBcHBsaWNhdGlvbiBwbHVnLWlucyBhcmUgcGx1Zy1pbnMg
aW1wbGVtZW50ZWQgYnkgdGhlIHVzZXIgYWdlbnQsIGZvciBleGFtcGxlIFF0IHBsdWctaW5zLAog
ICAgIC8vIGFzIG9wcG9zZWQgdG8gdGhpcmQtcGFydHkgY29kZSBzdWNoIGFzIEZsYXNoLiBUaGUg
dXNlciBhZ2VudCBkZWNpZGVzIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlCkBAIC0yMTksNyArMjE5
LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFMKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBVUkwgY29tcGxl
dGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxldGVkVVJMID0g
Y29tcGxldGVVUkwodXJsKTsKIApAQCAtMjM3LDEyICsyMzcsMTIgQEAgYm9vbCBTdWJmcmFtZUxv
YWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFMKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1Jl
ZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpsb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihO
b2RlKiBub2RlLCBjb25zdCBLVVJMJiB1cmwsCitQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVM
b2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYg
dXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUodmlk
ZW9UYWcpIHx8IGlzSFRNTEF1ZGlvRWxlbWVudChub2RlKSk7CiAKLSAgICBLVVJMIGNvbXBsZXRl
ZFVSTDsKKyAgICBVUkwgY29tcGxldGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKIApAQCAtMjkyLDcgKzI5Miw3
IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBzaXplLCBICiAgICAgfQogCiAgICAgaWYgKCFjb2RlQmFzZVVS
TFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgS1VSTCBjb2RlQmFzZVVSTCA9IGNvbXBsZXRl
VVJMKGNvZGVCYXNlVVJMU3RyaW5nKTsKKyAgICAgICAgVVJMIGNvZGVCYXNlVVJMID0gY29tcGxl
dGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIWVsZW1lbnQtPmRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShjb2RlQmFzZVVSTCkpIHsKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgY29kZUJhc2VV
Ukwuc3RyaW5nKCkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMDYsNyArMzA2LDcgQEAg
UGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmIHNpemUsIEgKIAogICAgIGlmIChiYXNlVVJMU3RyaW5nLmlzRW1wdHko
KSkKICAgICAgICAgYmFzZVVSTFN0cmluZyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwo
KS5zdHJpbmcoKTsKLSAgICBLVVJMIGJhc2VVUkwgPSBjb21wbGV0ZVVSTChiYXNlVVJMU3RyaW5n
KTsKKyAgICBVUkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJpbmcpOwogCiAgICAg
UmVmUHRyPFdpZGdldD4gd2lkZ2V0OwogICAgIGlmIChhbGxvd1BsdWdpbnMoQWJvdXRUb0luc3Rh
bnRpYXRlUGx1Z2luKSkKQEAgLTMyNiw3ICszMjYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3Vi
ZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
SAogICAgIHJldHVybiB3aWRnZXQ7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9y
UmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlz
dG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjps
b2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9j
a0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKICAgICBGcmFtZSogZnJhbWUg
PSBvd25lckVsZW1lbnQtPmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBGcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbgogICAgIHJldHVybiBvd25lckVsZW1l
bnQtPmNvbnRlbnRGcmFtZSgpOwogfQogCi1GcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJm
cmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitGcmFtZSogU3Vi
ZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKIHsKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKQEAgLTQw
Myw3ICs0MDMsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjphbGxvd1BsdWdpbnMoUmVhc29uRm9y
Q2FsbGluZ0FsbG93UGx1Z2lucyByZWFzb24pCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKLWJv
b2wgU3ViZnJhbWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9v
bCBoYXNGYWxsYmFjaywgYm9vbCYgdXNlRmFsbGJhY2spCitib29sIFN1YmZyYW1lTG9hZGVyOjpz
aG91bGRVc2VQbHVnaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYg
dXNlRmFsbGJhY2spCiB7CiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KG1pbWVUeXBlKSkgewogICAgICAgICB1c2VGYWxsYmFj
ayA9IGZhbHNlOwpAQCAtNDMwLDcgKzQzMCw3IEBAIERvY3VtZW50KiBTdWJmcmFtZUxvYWRlcjo6
ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpOwogfQogCi1i
b29sIFN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBs
dWdpbkVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKK2Jv
b2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1
Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKIHsKICAgICBSZW5kZXJFbWJlZGRlZE9iamVj
dCogcmVuZGVyZXIgPSBwbHVnaW5FbGVtZW50LT5yZW5kZXJFbWJlZGRlZE9iamVjdCgpOwpAQCAt
NDYyLDcgKzQ2Miw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgS1VSCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLUtVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdAorVVJMIFN1YmZyYW1lTG9hZGVyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJu
IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5oCmluZGV4IGQ4ZTAzYzEuLjJlODQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEhUTUxBcHBs
ZXRFbGVtZW50OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgTm9kZTsKICNlbmRpZgpA
QCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHRha2UgRWxlbWVudCogaW5zdGVhZCBvZiBO
b2RlKiwgb3IgYmV0dGVyIHlldCB0aGUKICAgICAvLyBzcGVjaWZpYyB0eXBlIG9mIEVsZW1lbnQg
d2hpY2ggdGhpcyBjb2RlIGRlcGVuZHMgb24uCi0gICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRN
ZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7Cisg
ICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcyk7CkBAIC04MCwyMSArODAsMjEgQEAgcHVibGljOgogICAgIGJvb2wgcmVz
b3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiBwcml2YXRlOgotICAg
IGJvb2wgcmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2sp
OwotICAgIEZyYW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKLSAgICBGcmFtZSogbG9hZFN1YmZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotICAgIGJvb2wgbG9hZFBsdWdpbihIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCisg
ICAgYm9vbCByZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNr
KTsKKyAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZFN1YmZy
YW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgYm9vbCBsb2FkUGx1Z2luKEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKIAotICAgIGJvb2wgc2hvdWxkVXNl
UGx1Z2luKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNr
KTsKLSAgICBib29sIHBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBib29sIHNob3VsZFVzZVBs
dWdpbihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsK
KyAgICBib29sIHBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3Q7CiAKICAgICBib29sIG1fY29udGFpbnNQbHVnaW5zOwogICAgIEZyYW1lKiBtX2Zy
YW1lOwogCi0gICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBV
UkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApp
bmRleCBlMDc3YmZhLi5mYTU5ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIFN1YnJlc291cmNlTG9hZGVy
Ojppc1N1YnJlc291cmNlTG9hZGVyKCkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBi
ZWNhdXNlIHRoZSBjYWxsIHRvIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBt
b2RpZnkgaXQuCi0gICAgS1VSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKKyAgICBV
UkwgcHJldmlvdXNVUkwgPSByZXF1ZXN0KCkudXJsKCk7CiAgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0KCp0aGlzKTsKIAogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IDUyMGVmNTguLjI5NTlk
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIFN1YnN0aXR1dGVEYXRhX2gKICNkZWZpbmUgU3Vic3RpdHV0ZURhdGFfaAog
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtNDEsOCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAog
ICAgICAgICBTdWJzdGl0dXRlRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMID0gS1VSTCgpLCBib29sIHNob3VsZFJl
dmVhbFRvU2Vzc2lvbkhpc3RvcnkgPSBmYWxzZSkKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZywgY29uc3QgVVJMJiBmYWlsaW5nVVJMLAorICAgICAgICAgICAgICAg
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSBVUkwoKSwgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Np
b25IaXN0b3J5ID0gZmFsc2UpCiAgICAgICAgICAgICA6IG1fY29udGVudChjb250ZW50KQogICAg
ICAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICAgICAgICAgLCBtX3RleHRFbmNv
ZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC02MCwxNSArNjAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnQuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX3RleHRFbmNvZGluZzsgfQotICAgICAgICBjb25zdCBLVVJM
JiBmYWlsaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9Ci0gICAgICAgIGNv
bnN0IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQor
ICAgICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdV
Ukw7IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzcG9uc2VVUkw7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gbV9jb250ZW50OwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAg
ICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwotICAgICAgICBLVVJMIG1fZmFpbGluZ1VSTDsKLSAg
ICAgICAgS1VSTCBtX3Jlc3BvbnNlVVJMOworICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOworICAg
ICAgICBVUkwgbV9yZXNwb25zZVVSTDsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJldmVhbFRvU2Vz
c2lvbkhpc3Rvcnk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oCmluZGV4IDE1Y2JjNmYuLjk4Yzg3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
CkBAIC00MCwxMiArNDAsMTIgQEAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3Vic3RpdHV0ZVJlc291cmNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3Vi
c3RpdHV0ZVJlc291cmNlKCkgeyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSkKICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICwgbV9yZXNwb25zZShy
ZXNwb25zZSkKICAgICAgICAgLCBtX2RhdGEoZGF0YSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVj
dGVkOgogICAgIH0KICAgICAKIHByaXZhdGU6Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwCmluZGV4IGY2ZWM2ZWQuLjRmYTA3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0
VHJhY2tMb2FkZXIuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBjYW5jZWxMb2Fk
KCk7CiB9CiAKLWJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCitib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiB7CiAgICAgY2Fu
Y2VsTG9hZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKaW5kZXgg
MzZmM2VmMC4uOTM1N2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
aApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFj
a0xvYWRlcigpOwogICAgIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiBjcm9zc09yaWdpbk1vZGUpOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNyb3NzT3JpZ2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBn
ZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICNp
ZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggNjE4MjliMi4uODUyODliMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
LmNwcApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCi1zdGF0aWMg
aW5saW5lIGJvb2wgZmFsbGJhY2tVUkxMb25nZXJUaGFuKGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBL
VVJMPiYgbGhzLCBjb25zdCBzdGQ6OnBhaXI8S1VSTCwgS1VSTD4mIHJocykKK3N0YXRpYyBpbmxp
bmUgYm9vbCBmYWxsYmFja1VSTExvbmdlclRoYW4oY29uc3Qgc3RkOjpwYWlyPFVSTCwgVVJMPiYg
bGhzLCBjb25zdCBzdGQ6OnBhaXI8VVJMLCBVUkw+JiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy5m
aXJzdC5zdHJpbmcoKS5sZW5ndGgoKSA+IHJocy5maXJzdC5zdHJpbmcoKS5sZW5ndGgoKTsKIH0K
QEAgLTExNyw3ICsxMTcsNyBAQCB1bnNpZ25lZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCkKICAgICAKIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
QXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0g
ICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKICAgICByZXR1cm4gbV9yZXNvdXJjZXMuZ2V0KHVybCk7CiB9ICAgIAog
CkBAIC0xMzgsMjAgKzEzOCwyMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0
aW9uQ2FjaGU6OnJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcQogICAgIGlmICgh
cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgS1VSTCB1cmwocmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsK
ICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKICAgICByZXR1cm4gcmVzb3VyY2VGb3JVUkwodXJsKTsK
IH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVj
dG9yPEtVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9u
bGluZVdoaXRlbGlzdChjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0KQogewogICAg
IEFTU0VSVChtX29ubGluZVdoaXRlbGlzdC5pc0VtcHR5KCkpOwogICAgIG1fb25saW5lV2hpdGVs
aXN0ID0gb25saW5lV2hpdGVsaXN0OyAKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VS
TEluT25saW5lV2hpdGVsaXN0KGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQXBwbGljYXRpb25DYWNo
ZTo6aXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBVUkwmIHVybCkKIHsKICAgICBzaXplX3Qg
d2hpdGVsaXN0U2l6ZSA9IG1fb25saW5lV2hpdGVsaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZTo6c2V0RmFsbGJhY2tVUkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVj
dG9yJiBmYWxsYmFja1VSTHMpCiAgICAgc3RkOjpzdGFibGVfc29ydChtX2ZhbGxiYWNrVVJMcy5i
ZWdpbigpLCBtX2ZhbGxiYWNrVVJMcy5lbmQoKSwgZmFsbGJhY2tVUkxMb25nZXJUaGFuKTsKIH0K
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29u
c3QgS1VSTCYgdXJsLCBLVVJMKiBmYWxsYmFja1VSTCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZTo6
dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYgdXJsLCBVUkwqIGZhbGxiYWNr
VVJMKQogewogICAgIHNpemVfdCBmYWxsYmFja0NvdW50ID0gbV9mYWxsYmFja1VSTHMuc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmFsbGJhY2tDb3VudDsgKytpKSB7CkBAIC0x
OTMsMTMgKzE5MywxMyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFnZUlEKCkK
ICAgICAKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKIHsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKKyAgICBWZWN0b3I8
VVJMPiB1cmxzOwogICAgIGlmICghY2FjaGVTdG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hl
IG1hbmlmZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEtVUkwgb3Jp
Z2luVVJMKEtVUkwoKSwgb3JpZ2luLT50b1N0cmluZygpKTsKKyAgICBVUkwgb3JpZ2luVVJMKFVS
TCgpLCBvcmlnaW4tPnRvU3RyaW5nKCkpOwogCiAgICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCAyNTFi
ZWEzLi5mZmU0ODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlLmgKQEAgLTM4LDExICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAotdHlwZWRlZiBW
ZWN0b3I8c3RkOjpwYWlyPEtVUkwsIEtVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7Cit0eXBlZGVm
IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7CiAKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlPiB7
CiBwdWJsaWM6CkBAIC02OCwxMyArNjgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBbGxv
d3NBbGxOZXR3b3JrUmVxdWVzdHMoYm9vbCB2YWx1ZSkgeyBtX2FsbG93QWxsTmV0d29ya1JlcXVl
c3RzID0gdmFsdWU7IH0KICAgICBib29sIGFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7IH0KLSAgICB2b2lkIHNldE9ubGlu
ZVdoaXRlbGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29u
c3QgVmVjdG9yPEtVUkw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGlu
ZVdoaXRlbGlzdDsgfQotICAgIGJvb2wgaXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBLVVJM
Jik7IC8vIFRoZXJlIGlzIGFuIGVudHJ5IGluIG9ubGluZSB3aGl0ZWxpc3QgdGhhdCBoYXMgdGhl
IHNhbWUgb3JpZ2luIGFzIHRoZSByZXNvdXJjZSdzIFVSTCBhbmQgdGhhdCBpcyBhIHByZWZpeCBt
YXRjaCBmb3IgdGhlIHJlc291cmNlJ3MgVVJMLgorICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0
KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpOworICAgIGNvbnN0IFZlY3RvcjxV
Ukw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGluZVdoaXRlbGlzdDsg
fQorICAgIGJvb2wgaXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBVUkwmKTsgLy8gVGhlcmUg
aXMgYW4gZW50cnkgaW4gb25saW5lIHdoaXRlbGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4g
YXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUg
cmVzb3VyY2UncyBVUkwuCiAKICAgICB2b2lkIHNldEZhbGxiYWNrVVJMcyhjb25zdCBGYWxsYmFj
a1VSTFZlY3RvciYpOwogICAgIGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJiBmYWxsYmFja1VSTHMo
KSBjb25zdCB7IHJldHVybiBtX2ZhbGxiYWNrVVJMczsgfQotICAgIGJvb2wgdXJsTWF0Y2hlc0Zh
bGxiYWNrTmFtZXNwYWNlKGNvbnN0IEtVUkwmLCBLVVJMKiBmYWxsYmFja1VSTCA9IDApOworICAg
IGJvb2wgdXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYsIFVSTCogZmFsbGJh
Y2tVUkwgPSAwKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCk7CkBAIC0x
MDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG1f
bWFuaWZlc3Q7CiAKICAgICBib29sIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7Ci0gICAgVmVj
dG9yPEtVUkw+IG1fb25saW5lV2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IG1fb25saW5lV2hp
dGVsaXN0OwogICAgIEZhbGxiYWNrVVJMVmVjdG9yIG1fZmFsbGJhY2tVUkxzOwogCiAgICAgLy8g
VGhlIHRvdGFsIHNpemUgb2YgdGhlIHJlc291cmNlcyBiZWxvbmdpbmcgdG8gdGhpcyBBcHBsaWNh
dGlvbiBDYWNoZSBpbnN0YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDZiZjk4Ny4uNTliM2Jk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25z
dCBLVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29w
eSkKICAgICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX29yaWdpbihTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKG1hbmlmZXN0VVJMKSkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElk
bGUpCkBAIC0xMDEsNyArMTAxLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpjYWNoZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAo
IUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIEtVUkwgdXJsKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1
cmwocmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkK
ICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xMjAsNyArMTIw
LDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0Nh
Y2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3UKICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6
OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIEtVUkwgdXJsKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwocmVxdWVzdC51cmwoKSk7
CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgQXBwbGljYXRpb25D
YWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3Qo
Y29uc3QgUmVzb3UKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3RV
UkwpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VVJMKQogewogICAgIEFTU0VSVChmcmFtZSAmJiBm
cmFtZS0+cGFnZSgpKTsKICAgICAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRN
YW5pZmVzdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCBtYW5pZmVzdFVSTChw
YXNzZWRNYW5pZmVzdFVSTCk7CisgICAgVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJM
KTsKICAgICBpZiAobWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAg
IG1hbmlmZXN0VVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3QKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUNh
Y2hlLT5ncm91cCgpLT51cGRhdGUoZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJv
d3NpbmdDb250ZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBtYWlu
IHJlc291cmNlIHdhcyBsb2FkZWQgZnJvbSBjYWNoZSwgc28gdGhlIGNhY2hlIG11c3QgaGF2ZSBh
biBlbnRyeSBmb3IgaXQuIE1hcmsgaXQgYXMgZm9yZWlnbi4KLSAgICAgICAgICAgIEtVUkwgcmVz
b3VyY2VVUkwoZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlVVJMKCkpOworICAgICAgICAgICAgVVJM
IHJlc291cmNlVVJMKGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICAgICAgICAg
IGlmIChyZXNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAg
ICByZXNvdXJjZVVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UgPSBtYWluUmVzb3VyY2VDYWNoZS0+cmVz
b3VyY2VGb3JVUkwocmVzb3VyY2VVUkwpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKIHsKICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGxvYWRlcikpOwogICAgIEFTU0VSVChtX2NvbXBsZXRpb25UeXBlID09IE5vbmUg
fHwgbV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwotICAgIEtVUkwgdXJsID0gbG9hZGVyLT51
cmwoKTsKKyAgICBVUkwgdXJsID0gbG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQo
RnJhbWUqIGZyYW1lKQogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5k
bGUoY29uc3QgS1VSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hl
ZFJlc291cmNlKQorUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwmIHVybCwgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCh1cmwpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmFwcGx5VXNlckFnZW50KHJlcXVl
c3QpOwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAgICAgCiAg
ICAgQVNTRVJUKGhhbmRsZSA9PSBtX2N1cnJlbnRIYW5kbGUpOwogCi0gICAgS1VSTCB1cmwoaGFu
ZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAg
ICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgCkBAIC02NzAsNyArNjcw
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUq
IGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3Vy
cmVudEhhbmRsZSk7CiAKICAgICB1bnNpZ25lZCB0eXBlID0gbV9jdXJyZW50UmVzb3VyY2UgPyBt
X2N1cnJlbnRSZXNvdXJjZS0+dHlwZSgpIDogbV9wZW5kaW5nRW50cmllcy5nZXQoaGFuZGxlLT5m
aXJzdFJlcXVlc3QoKS51cmwoKSk7Ci0gICAgS1VSTCB1cmwoaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKSk7CisgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAg
ICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzdGFydExvYWRpbmdFbnRyeSgpCiAKICAgICBBU1NFUlQoIW1fY3VycmVu
dEhhbmRsZSk7CiAgICAgCi0gICAgbV9jdXJyZW50SGFuZGxlID0gY3JlYXRlUmVzb3VyY2VIYW5k
bGUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdl
c3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKKyAgICBtX2N1cnJlbnRIYW5k
bGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+a2V5KSwg
bV9uZXdlc3RDYWNoZSA/IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKGl0LT5rZXkpIDog
MCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkZWxpdmVyRGVsYXllZE1haW5S
ZXNvdXJjZXMoKQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3Jv
dXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6YWRkRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiB7CiAgICAg
QVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwotICAgIEFTU0VSVCghS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgCiAgICAg
Ly8gRG9uJ3QgYWRkIHRoZSBVUkwgaWYgd2UgYWxyZWFkeSBoYXZlIGFuIG1hc3RlciByZXNvdXJj
ZSBpbiB0aGUgY2FjaGUKICAgICAvLyAoaS5lLiwgdGhlIG1haW4gcmVzb3VyY2UgZmluaXNoZWQg
bG9hZGluZyBiZWZvcmUgdGhlIG1hbmlmZXN0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCAxYTRhZjg2Li4z
MjcwODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cF9oCiAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC01Myw3ICs1Myw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9w
dGlvbiB7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgOiBSZXNvdXJjZUhhbmRsZUNsaWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUdyb3VwKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29weSA9IGZhbHNlKTsgICAgCisgICAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5
ID0gZmFsc2UpOyAgICAKICAgICB+QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CiAgICAgCiAgICAg
ZW51bSBVcGRhdGVTdGF0dXMgeyBJZGxlLCBDaGVja2luZywgRG93bmxvYWRpbmcgfTsKQEAgLTYx
LDEwICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hl
Rm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqKTsK
ICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogZmFsbGJhY2tDYWNoZUZvck1haW5SZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKik7CiAgICAgCi0gICAgc3Rh
dGljIHZvaWQgc2VsZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Cisg
ICAgc3RhdGljIHZvaWQgc2VsZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBVUkwmIG1hbmlmZXN0VVJM
KTsKICAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSop
OwogICAgIAotICAgIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9t
YW5pZmVzdFVSTDsgfQorICAgIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVy
biBtX21hbmlmZXN0VVJMOyB9CiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luLmdldCgpOyB9CiAgICAgVXBkYXRlU3RhdHVzIHVwZGF0ZVN0
YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlU3RhdHVzOyB9CiAgICAgdm9pZCBzZXRVcGRh
dGVTdGF0dXMoVXBkYXRlU3RhdHVzIHN0YXR1cyk7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsK
IAotICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNv
bnN0IEtVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KTsKKyAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShj
b25zdCBVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KTsKIAogICAgIC8vIEZvciBub3JtYWwgcmVzb3VyY2UgbG9hZGluZywgV2ViS2l0IGNsaWVudCBp
cyBhc2tlZCBhYm91dCBlYWNoIHJlc291cmNlIGluZGl2aWR1YWxseS4gU2luY2UgYXBwbGljYXRp
b24gY2FjaGUgZG9lcyBub3QgYmVsb25nIHRvIGFueSBwYXJ0aWN1bGFyIGRvY3VtZW50LAogICAg
IC8vIHRoZSBleGlzdGluZyBjbGllbnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3Vt
ZSB0aGF0IGFueSBjbGllbnQgdGhhdCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2Fu
dHMgaXQgdG8gdXNlIGNyZWRlbnRpYWwgc3RvcmFnZS4KQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2
YXRlOgogICAgIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAKLSAgICBLVVJMIG1fbWFu
aWZlc3RVUkw7CisgICAgVVJMIG1fbWFuaWZlc3RVUkw7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBtX29yaWdpbjsKICAgICBVcGRhdGVTdGF0dXMgbV91cGRhdGVTdGF0dXM7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAppbmRleCA0YzY5ODA5Li40MzNiZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRob3V0
TWFuaWZlc3QoKQogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0
TWFuaWZlc3RVUkwobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlm
ZXN0VVJMKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZl
c3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnNlbGVjdENhY2hlKG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCksIG1hbmlmZXN0VVJMKTsKIH0K
QEAgLTg2LDggKzg2LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkTWFp
blJlc291cmNlKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3Vic3QKICAgICAgICAgICAgIHN1
YnN0aXR1dGVEYXRhID0gU3Vic3RpdHV0ZURhdGEocmVzb3VyY2UtPmRhdGEoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlc3BvbnNlKCku
bWltZVR5cGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzb3VyY2UtPnJlc3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVVJMKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVSTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdWJzdGl0dXRlRGF0YTo6U2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgZ3JvdXAtPmZp
bmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZShtX2RvY3VtZW50TG9hZGVyKTsKIH0KIAotYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkK
K2Jvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFJlc291cmNlKFJlc291cmNlTG9h
ZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiBvcmlnaW5h
bFVSTCkKIHsKICAgICBpZiAoIWlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzAzLDcgKzMwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpD
YWNoZUluZm8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCkKIHsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBp
ZiAoIWNhY2hlIHx8ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gQ2FjaGVJ
bmZvKEtVUkwoKSwgMCwgMCwgMCk7CisgICAgICAgIHJldHVybiBDYWNoZUluZm8oVVJMKCksIDAs
IDAsIDApOwogICAKICAgICAvLyBGSVhNRTogQWRkICJDcmVhdGlvbiBUaW1lIiBhbmQgIlVwZGF0
ZSBUaW1lIiB0byBBcHBsaWNhdGlvbiBDYWNoZXMuCiAgICAgcmV0dXJuIENhY2hlSW5mbyhjYWNo
ZS0+bWFuaWZlc3RSZXNvdXJjZSgpLT51cmwoKSwgMCwgMCwgY2FjaGUtPmVzdGltYXRlZFNpemVJ
blN0b3JhZ2UoKSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6Z2V0QXBwbGljYXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXEK
ICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVl
c3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGZhbGxiYWNrVVJMOworICAg
IFVSTCBmYWxsYmFja1VSTDsKICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3Qo
cmVxdWVzdC51cmwoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhY2hlLT51
cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSwgJmZhbGxiYWNrVVJMKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKaW5kZXggNjUyMGNjYy4uZjZlMGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgQXBwbGljYXRpb25DYWNoZUhvc3RfaAogI2RlZmluZSBBcHBsaWNhdGlv
bkNhY2hlSG9zdF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CkBAIC03OCwxOSArNzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICAgICAgc3RydWN0IENhY2hlSW5mbyB7Ci0gICAg
ICAgICAgICBDYWNoZUluZm8oY29uc3QgS1VSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRp
bWUsIGRvdWJsZSB1cGRhdGVUaW1lLCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIENhY2hl
SW5mbyhjb25zdCBVUkwmIG1hbmlmZXN0LCBkb3VibGUgY3JlYXRpb25UaW1lLCBkb3VibGUgdXBk
YXRlVGltZSwgbG9uZyBsb25nIHNpemUpCiAgICAgICAgICAgICAgICAgOiBtX21hbmlmZXN0KG1h
bmlmZXN0KQogICAgICAgICAgICAgICAgICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQog
ICAgICAgICAgICAgICAgICwgbV91cGRhdGVUaW1lKHVwZGF0ZVRpbWUpCiAgICAgICAgICAgICAg
ICAgLCBtX3NpemUoc2l6ZSkgeyB9Ci0gICAgICAgICAgICBLVVJMIG1fbWFuaWZlc3Q7CisgICAg
ICAgICAgICBVUkwgbV9tYW5pZmVzdDsKICAgICAgICAgICAgIGRvdWJsZSBtX2NyZWF0aW9uVGlt
ZTsKICAgICAgICAgICAgIGRvdWJsZSBtX3VwZGF0ZVRpbWU7CiAgICAgICAgICAgICBsb25nIGxv
bmcgbV9zaXplOwogICAgICAgICB9OwogCiAgICAgICAgIHN0cnVjdCBSZXNvdXJjZUluZm8gewot
ICAgICAgICAgICAgUmVzb3VyY2VJbmZvKGNvbnN0IEtVUkwmIHJlc291cmNlLCBib29sIGlzTWFz
dGVyLCBib29sIGlzTWFuaWZlc3QsIGJvb2wgaXNGYWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJv
b2wgaXNFeHBsaWNpdCwgbG9uZyBsb25nIHNpemUpCisgICAgICAgICAgICBSZXNvdXJjZUluZm8o
Y29uc3QgVVJMJiByZXNvdXJjZSwgYm9vbCBpc01hc3RlciwgYm9vbCBpc01hbmlmZXN0LCBib29s
IGlzRmFsbGJhY2ssIGJvb2wgaXNGb3JlaWduLCBib29sIGlzRXhwbGljaXQsIGxvbmcgbG9uZyBz
aXplKQogICAgICAgICAgICAgICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKICAgICAgICAgICAg
ICAgICAsIG1faXNNYXN0ZXIoaXNNYXN0ZXIpCiAgICAgICAgICAgICAgICAgLCBtX2lzTWFuaWZl
c3QoaXNNYW5pZmVzdCkKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICwgbV9pc0ZvcmVpZ24oaXNGb3JlaWduKQogICAgICAgICAgICAgICAgICwg
bV9pc0V4cGxpY2l0KGlzRXhwbGljaXQpCiAgICAgICAgICAgICAgICAgLCBtX3NpemUoc2l6ZSkg
eyB9Ci0gICAgICAgICAgICBLVVJMIG1fcmVzb3VyY2U7CisgICAgICAgICAgICBVUkwgbV9yZXNv
dXJjZTsKICAgICAgICAgICAgIGJvb2wgbV9pc01hc3RlcjsKICAgICAgICAgICAgIGJvb2wgbV9p
c01hbmlmZXN0OwogICAgICAgICAgICAgYm9vbCBtX2lzRmFsbGJhY2s7CkBAIC0xMTQsNyArMTE0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB+QXBwbGljYXRpb25DYWNoZUhvc3Qo
KTsKIAogICAgICAgICB2b2lkIHNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCk7Ci0gICAgICAg
IHZvaWQgc2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOwor
ICAgICAgICB2b2lkIHNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpOwogCiAgICAgICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVz
dCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNl
Rm9yUmVkaXJlY3QoUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKQEAgLTEyMyw3
ICsxMjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJj
ZSgpOwogCi0gICAgICAgIGJvb2wgbWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCk7CisgICAgICAgIGJvb2wg
bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJl
ZGlyZWN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpOwogICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIGJvb2wgbWF5
YmVMb2FkRmFsbGJhY2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggOTk3NjZlMy4uNGZjYjhmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
KQorQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0
eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIGRhdGEpCiAgICAgLCBtX3R5
cGUodHlwZSkKICAgICAsIG1fc3RvcmFnZUlEKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggZDFk
ZmVhNC4uZDhkM2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKICAgICAgICAgCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCks
IGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0
aCA9IFN0cmluZygpKQogICAgIHsKICAgICAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSh1cmwsIHJlc3BvbnNlLCB0eXBlLCBidWZmZXIsIHBhdGgpKTsKQEAgLTYyLDcgKzYy
LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShjb25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVk
IHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAg
ICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIHVuc2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3Ry
aW5nJiBwYXRoKTsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICB1bnNpZ25lZCBtX3N0b3Jh
Z2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDQzYzczMTIuLjNjNjI0ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgog
I2luY2x1ZGUgIlNRTGl0ZVRyYW5zYWN0aW9uLmgiCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFJlY29yZD4gbV9yZWNvcmRzOwogfTsKIAotc3RhdGljIHVuc2lnbmVkIHVy
bEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyB1bnNpZ25lZCB1cmxIb3N0SGFzaChj
b25zdCBVUkwmIHVybCkKIHsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQgPSB1cmwuaG9zdFN0YXJ0
KCk7CiAgICAgdW5zaWduZWQgaG9zdEVuZCA9IHVybC5ob3N0RW5kKCk7CkBAIC0xMDAsNyArMTAw
LDcgQEAgc3RhdGljIHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKICAgICBy
ZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUoU3RyaW5nSGFzaGVyOjpjb21w
dXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh1cmxTdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBob3N0U3Rh
cnQsIGhvc3RFbmQgLSBob3N0U3RhcnQpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZl
c3RVUkwpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjps
b2FkQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIG9wZW5EYXRhYmFz
ZShmYWxzZSk7CiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMTM1LDcgKzEzNSw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmCiAgICAgcmV0dXJuIGdyb3VwOwogfSAgICAKIAot
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3Jl
YXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBBU1NFUlQoIW1hbmlmZXN0VVJMLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKTsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29u
c3QgS1VSCiAgICAgcmV0dXJuIGdyb3VwOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwm
IG1hbmlmZXN0VVJMKSBjb25zdAorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
KSBjb25zdAogewogICAgIHJldHVybiBtX2NhY2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7
CiB9CkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9h
ZE1hbmlmZXN0SG9zdEhhc2hlcygpCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiB9ICAgIAogCi1B
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3Vw
Rm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
QVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIApAQCAtMjI5LDcgKzIy
OSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNh
Y2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsCiAgICAgCiAgICAgaW50IHJlc3VsdDsKICAg
ICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewot
ICAgICAgICBLVVJMIG1hbmlmZXN0VVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKFBhcnNl
ZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAgIGlmICht
X2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMjY2LDcgKzI2Niw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsCiAgICAgcmV0
dXJuIDA7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwpCitBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBG
b3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpOwogCkBAIC0yNzgsNyArMjc4LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEsK
ICAgICAgICAgQVNTRVJUKCFncm91cC0+aXNPYnNvbGV0ZSgpKTsKIAogICAgICAgICBpZiAoQXBw
bGljYXRpb25DYWNoZSogY2FjaGUgPSBncm91cC0+bmV3ZXN0Q2FjaGUoKSkgewotICAgICAgICAg
ICAgS1VSTCBmYWxsYmFja1VSTDsKKyAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAg
ICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxi
YWNrTmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkKQEAgLTI5OSw3ICsyOTksNyBAQCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hl
R3JvdXBGb3JVUkwoY29uc3QgSwogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChy
ZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgS1VS
TCBtYW5pZmVzdFVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1u
VGV4dCgxKSk7CisgICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
IHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1l
bW9yeS5jb250YWlucyhtYW5pZmVzdFVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMx
Myw3ICszMTMsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICB1bnNpZ25lZCBu
ZXdlc3RDYWNoZUlEID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5J
bnQ2NCgyKSk7CiAgICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IGxvYWRD
YWNoZShuZXdlc3RDYWNoZUlEKTsKIAotICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgICAg
ICBVUkwgZmFsbGJhY2tVUkw7CiAgICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRl
bGlzdCh1cmwpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY2FjaGUtPnVy
bE1hdGNoZXNGYWxsYmFja05hbWVzcGFjZSh1cmwsICZmYWxsYmFja1VSTCkpCkBAIC03MjksNyAr
NzI5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZSogY2FjaGUsIFJlc291cmNlU3RvcmFnZUlESm8KICAgICB9CiAgICAgCiAgICAgLy8gU3Rv
cmUgdGhlIG9ubGluZSB3aGl0ZWxpc3QKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdo
aXRlbGlzdCA9IGNhY2hlLT5vbmxpbmVXaGl0ZWxpc3QoKTsKKyAgICBjb25zdCBWZWN0b3I8VVJM
PiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgpOwogICAgIHsKICAg
ICAgICAgc2l6ZV90IHdoaXRlbGlzdFNpemUgPSBvbmxpbmVXaGl0ZWxpc3Quc2l6ZSgpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTEx
MCw3ICsxMTEwLDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKIAogICAgIGludCByZXN1bHQ7
CiAgICAgd2hpbGUgKChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3Vs
dFJvdykgewotICAgICAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIGNhY2hlU3RhdGVtZW50
LmdldENvbHVtblRleHQoMCkpOworICAgICAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgY2Fj
aGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgaHR0
cFN0YXR1c0NvZGUgPSBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSk7CiAKQEAgLTExNTYs
OSArMTE1Niw5IEBAIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIHJldHVybiAwOwog
ICAgIHdoaXRlbGlzdFN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKLSAg
ICBWZWN0b3I8S1VSTD4gd2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IHdoaXRlbGlzdDsKICAg
ICB3aGlsZSAoKHJlc3VsdCA9IHdoaXRlbGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3Vs
dFJvdykgCi0gICAgICAgIHdoaXRlbGlzdC5hcHBlbmQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHdo
aXRlbGlzdFN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHdoaXRlbGlzdC5h
cHBlbmQoVVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpKTsKIAogICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJvciBcIiVz
XCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTExODgsNyArMTE4OCw3IEBAIFBh
c3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgCiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJh
Y2tVUkxzOwogICAgIHdoaWxlICgocmVzdWx0ID0gZmFsbGJhY2tTdGF0ZW1lbnQuc3RlcCgpKSA9
PSBTUUxSZXN1bHRSb3cpIAotICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihL
VVJMKFBhcnNlZFVSTFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSks
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEp
KSkpOworICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihVUkwoUGFyc2VkVVJM
U3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSwgVVJMKFBhcnNlZFVS
TFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSkpKTsKIAogICAgIGlm
IChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3Qg
bG9hZCBmYWxsYmFjayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKQEAgLTEzMzcsNyArMTMzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OnN0b3JlQ29weU9mQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAg
cmV0dXJuIGNvcHlTdG9yYWdlLnN0b3JlTmV3ZXN0Q2FjaGUoZ3JvdXBDb3B5LmdldCgpKTsKIH0K
IAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJM
PiogdXJscykKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcyhWZWN0
b3I8VVJMPiogdXJscykKIHsKICAgICBBU1NFUlQodXJscyk7CiAgICAgb3BlbkRhdGFiYXNlKGZh
bHNlKTsKQEAgLTEzNTAsNyArMTM1MCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
Om1hbmlmZXN0VVJMcyhWZWN0b3I8S1VSTD4qIHVybHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHdoaWxlIChzZWxlY3RVUkxzLnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCi0gICAgICAg
IHVybHMtPmFwcGVuZChLVVJMKFBhcnNlZFVSTFN0cmluZywgc2VsZWN0VVJMcy5nZXRDb2x1bW5U
ZXh0KDApKSk7CisgICAgICAgIHVybHMtPmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBzZWxl
Y3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUx
NCw3ICsxNTE0LDcgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0Rmls
ZUFyZWFTaXplKCkKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2luc1dp
dGhDYWNoZShIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgb3JpZ2lucykKIHsKLSAg
ICBWZWN0b3I8S1VSTD4gdXJsczsKKyAgICBWZWN0b3I8VVJMPiB1cmxzOwogICAgIGlmICghbWFu
aWZlc3RVUkxzKCZ1cmxzKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2
ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaAppbmRleCBhZjY0MzdlLi5lNGIzMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAt
MzksNyArMzksNyBAQCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25D
YWNoZUdyb3VwOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2U7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlP
cmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgU3Rv
cmFnZUlESm91cm5hbDsKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdG9y
ZVVwZGF0ZWRRdW90YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QgcXVv
dGEpOwogICAgIGJvb2wgY2hlY2tPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBB
cHBsaWNhdGlvbkNhY2hlKiBvbGRDYWNoZSwgQXBwbGljYXRpb25DYWNoZSogbmV3Q2FjaGUsIGlu
dDY0X3QmIHRvdGFsU3BhY2VOZWVkZWQpOwogCi0gICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBj
YWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVz
b3VyY2UgZnJvbS4KLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91
cEZvclVSTChjb25zdCBLVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkg
dG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KKyAg
ICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8v
IENhY2hlIHRvIGxvYWQgYSBtYWluIHJlc291cmNlIGZyb20uCisgICAgQXBwbGljYXRpb25DYWNo
ZUdyb3VwKiBmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRo
YXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBu
b3JtYWwgbG9hZGluZyBmYWlscy4KIAotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9y
Q3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Ci0gICAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKSBjb25zdDsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hl
R3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0Owog
ICAgIHZvaWQgY2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAg
ICB2b2lkIGNhY2hlR3JvdXBNYWRlT2Jzb2xldGUoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAg
ICAgICAgIApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wg
c3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHBsaWNhdGlv
bkNhY2hlSG9zdCopOwogCi0gICAgYm9vbCBtYW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxz
KTsKKyAgICBib29sIG1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiogdXJscyk7CiAgICAgYm9vbCBj
YWNoZUdyb3VwU2l6ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKTsK
ICAgICBib29sIGRlbGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAg
ICAgdm9pZCB2YWN1dW1EYXRhYmFzZUZpbGUoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgUGFzc1JlZlB0
cjxBcHBsaWNhdGlvbkNhY2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKLSAgICBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwpOwogICAgIAogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91cm5hbDxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+IFJlc291cmNlU3RvcmFnZUlESm91cm5hbDsKICAgICB0eXBl
ZGVmIFN0b3JhZ2VJREpvdXJuYWw8QXBwbGljYXRpb25DYWNoZUdyb3VwPiBHcm91cFN0b3JhZ2VJ
REpvdXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9N
QXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFw
cGxpY2F0aW9uQ2FjaGUuaAppbmRleCA5NTg3MTBjLi5iMDU0Y2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQx
LDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogCiAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2Vk
IEZJTkFMIG9uY2UgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KIGNsYXNz
IERPTUFwcGxpY2F0aW9uQ2FjaGUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxET01BcHBsaWNhdGlvbkNhY2hlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBET01XaW5kb3dQcm9wZXJ0eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBjOTg1YTljLi5iYjFmMDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNl
ci5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJN
YW5pZmVzdFBhcnNlci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRleHRSZXNv
dXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9D
aGFyYWN0ZXJOYW1lcy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywg
T25saW5lV2hpdGVsaXN0LCBVbmtub3duIH07CiAgICAgCi1ib29sIHBhcnNlTWFuaWZlc3QoY29u
c3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlm
ZXN0JiBtYW5pZmVzdCkKK2Jvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJM
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCiB7CiAg
ICAgQVNTRVJUKG1hbmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVCht
YW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuaXNFbXB0eSgpKTsKQEAgLTExNCw3ICsxMTQs
NyBAQCBib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBLVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5n
KGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgICAg
IFVSTCB1cmwobWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmNoYXJhY3RlcnMoKSwgcCAtIGxpbmUu
Y2hhcmFjdGVycygpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghdXJsLmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29s
IHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBLVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVz
dFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsK
KyAgICAgICAgICAgIFVSTCBuYW1lc3BhY2VVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmNo
YXJhY3RlcnMoKSwgcCAtIGxpbmUuY2hhcmFjdGVycygpKSk7CiAgICAgICAgICAgICBpZiAoIW5h
bWVzcGFjZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAobmFtZXNwYWNlVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQpAQCAtMTY0LDcg
KzE2NCw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICB3aGlsZSAocCA8
IGxpbmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAogICAgICAgICAgICAgICAgIHAr
KzsKIAotICAgICAgICAgICAgS1VSTCBmYWxsYmFja1VSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGZh
bGxiYWNrU3RhcnQsIHAgLSBmYWxsYmFja1N0YXJ0KSk7CisgICAgICAgICAgICBVUkwgZmFsbGJh
Y2tVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tTdGFy
dCkpOwogICAgICAgICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoZmFsbGJhY2tVUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5oCmluZGV4IDM5Yjc2MGQuLjI4MzE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCkBAIC0zMCwxNiArMzAsMTYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAK
ICAgICBzdHJ1Y3QgTWFuaWZlc3QgewotICAgICAgICBWZWN0b3I8S1VSTD4gb25saW5lV2hpdGVs
aXN0ZWRVUkxzOworICAgICAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7CiAg
ICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CiAgICAgICAgIEZhbGxiYWNrVVJM
VmVjdG9yIGZhbGxiYWNrVVJMczsKICAgICAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0
czsgLy8gV2lsZGNhcmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgogICAgIH07CiAKLSAgICBi
b29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgsIE1hbmlmZXN0Jik7CisgICAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0
IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0
Jik7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuY3BwCmluZGV4IDE0YzgxZmQuLmQ3NzViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdE
YXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7Cit0eXBlZGVm
IFBhc3NSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwg
U2hhcmVkQnVmZmVyKik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbiosIENhc2VGb2xkaW5nSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhl
IGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUGFzc1JlZlB0
ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFr
ZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlIDx0
eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVG
YWN0b3J5Q3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlPiBh
cmNoaXZlRmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIp
CiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVmZmVyKTsKIH0KQEAg
LTgyLDcgKzgyLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTWltZVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBh
cmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCi1QYXNzUmVmUHRyPEFy
Y2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFy
Y2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiog
ZnVuY3Rpb24gPSBtaW1lVHlwZS5pc0VtcHR5KCkgPyAwIDogYXJjaGl2ZU1JTUVUeXBlcygpLmdl
dChtaW1lVHlwZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uID8gZnVuY3Rpb24odXJsLCBkYXRhKSA6
IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCBkMDQwNWNhLi41NGI2NGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTQxLDcgKzQxLDcg
QEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgog
ICAgIHN0YXRpYyBib29sIGlzQXJjaGl2ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
cmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVU
eXBlcygpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZS5jcHAKaW5kZXggN2RlZGM5My4uMjEwMDBjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJj
aGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKHVy
bCwgcmVzcG9uc2UsIGRhdGEpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90
ZXh0RW5jb2RpbmcodGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2
ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEs
IGNvbnN0IEtVUgogewogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1Bhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXQKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLCB1
cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAot
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQorUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZShkYXRhLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggOTdkNmUzMi4uOWI0YjAxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAg
LTM1LDggKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3Vy
Y2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4s
IGNvbnN0IEtVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBj
b25zdCBLVVJMJiwKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0
ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3Bv
bnNlKCkpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9y
ZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uLmNwcAppbmRleCBhYTRhODcwLi42NGVjMjhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uLmNwcApAQCAtNjgsMTEgKzY4LDExIEBAIHZvaWQgQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjo6YWRkUmVzb3VyY2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNl
CiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gcmVzb3VyY2UtPnVybCgpOyAvLyBnZXQgYmVmb3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAo
d2hpY2ggc2V0cyBpdCB0byAwKQorICAgIGNvbnN0IFVSTCYgdXJsID0gcmVzb3VyY2UtPnVybCgp
OyAvLyBnZXQgYmVmb3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAod2hpY2ggc2V0cyBpdCB0byAwKQog
ICAgIG1fc3VicmVzb3VyY2VzLnNldCh1cmwsIHJlc291cmNlKTsKIH0KIAotQXJjaGl2ZVJlc291
cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29u
c3QgS1VSTCYgdXJsKQorQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQXJjaGl2ZVJl
c291cmNlKiByZXNvdXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwpOwogICAgIGlmICghcmVz
b3VyY2UpCkBAIC04MSw3ICs4MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgcmV0
dXJuIHJlc291cmNlOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb246OnBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uOjpwb3BTdWJmcmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlID0gbV9zdWJmcmFtZXMudGFr
ZShmcmFtZU5hbWUpOwogICAgIGlmIChhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCmluZGV4IDE1
ZWY4YmMuLjVhZTRiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkFyY2hpdmUuaCIKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDcsOCArNDcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4pOwog
ICAgIHZvaWQgYWRkQWxsUmVzb3VyY2VzKEFyY2hpdmUqKTsKICAgICAKLSAgICBBcmNoaXZlUmVz
b3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7Ci0gICAgUGFzc1JlZlB0
cjxBcmNoaXZlPiBwb3BTdWJmcmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IEtVUkwmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChj
b25zdCBVUkwmKTsKKyAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgCiBwcml2YXRlOiAgICAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBtX3N1YnJlc291
cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAKaW5kZXggNDEwMWFkYy4uZmJlOWUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQw
LDcgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9u
YXJ5UmVmIGRpYwogICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9t
UHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZl
cnNpb24pOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
U2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKHJlc291cmNlRGF0YSksIEtVUkwoS1VSTCgpLCB1cmwp
LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKKyAgICByZXR1
cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKHJlc291
cmNlRGF0YSksIFVSTChVUkwoKSwgdXJsKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVO
YW1lLCByZXNwb25zZSk7CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKCkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIFBhc3NSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlCiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwo
KSwgZGF0YSk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IEtVUkwm
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCitQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAg
ICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRh
dGEiKTsKICAgICAKQEAgLTUwMSwxOCArNTAxLDE4IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5n
CiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICAKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwot
ICAgIEtVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAgICBVUkwgcmVzcG9uc2VV
UkwgPSByZXNwb25zZS51cmwoKTsKICAgICAKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUg
YSByZXNwb25zZSB3aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1
NDkzNT4KICAgICBpZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIHJlc3BvbnNlVVJM
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXNwb25z
ZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAKICAg
ICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5t
aW1lVHlwZSgpLCAiVVRGLTgiLCBmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiAKICAgICBW
ZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+IHN1YmZyYW1lQXJjaGl2ZXM7CiAg
ICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IHN1YnJlc291cmNlczsKLSAg
ICBIYXNoU2V0PEtVUkw+IHVuaXF1ZVN1YnJlc291cmNlczsKKyAgICBIYXNoU2V0PFVSTD4gdW5p
cXVlU3VicmVzb3VyY2VzOwogCiAgICAgc2l6ZV90IG5vZGVzU2l6ZSA9IG5vZGVzLnNpemUoKTsg
ICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2Rlc1NpemU7ICsraSkgewpAQCAtNTMw
LDEzICs1MzAsMTMgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNo
aXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gYXJjaGl2ZSBzdWJmcmFtZSAl
cyIsIGNoaWxkRnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMaXN0SGFzaFNldDxLVVJMPiBzdWJy
ZXNvdXJjZVVSTHM7CisgICAgICAgICAgICBMaXN0SGFzaFNldDxVUkw+IHN1YnJlc291cmNlVVJM
czsKICAgICAgICAgICAgIG5vZGUtPmdldFN1YnJlc291cmNlVVJMcyhzdWJyZXNvdXJjZVVSTHMp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgICAgIExpc3RI
YXNoU2V0PEtVUkw+OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgpOwot
ICAgICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxLVVJMPjo6aXRlcmF0b3IgaXRlciA9IHN1YnJl
c291cmNlVVJMcy5iZWdpbigpOyBpdGVyICE9IGl0ZXJFbmQ7ICsraXRlcikgewotICAgICAgICAg
ICAgICAgIGNvbnN0IEtVUkwmIHN1YnJlc291cmNlVVJMID0gKml0ZXI7CisgICAgICAgICAgICBM
aXN0SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgp
OworICAgICAgICAgICAgZm9yIChMaXN0SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gc3Vi
cmVzb3VyY2VVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytpdGVyKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgVVJMJiBzdWJyZXNvdXJjZVVSTCA9ICppdGVyOwogICAgICAgICAgICAg
ICAgIGlmICh1bmlxdWVTdWJyZXNvdXJjZXMuY29udGFpbnMoc3VicmVzb3VyY2VVUkwpKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTczLDcgKzU3Myw3IEBAIFBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbWFya3VwU3RyaW5nCiAgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCA9IGljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocmVzcG9uc2VVUkwpOwogICAgICAg
ICBpZiAoIWljb25VUkwuaXNFbXB0eSgpICYmIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNv
bkRhdGFLbm93bkZvckljb25VUkwoaWNvblVSTCkpIHsKICAgICAgICAgICAgIGlmIChJbWFnZSog
aWNvbkltYWdlID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChyZXNw
b25zZVVSTCwgSW50U2l6ZSgxNiwgMTYpKSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25J
bWFnZS0+ZGF0YSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWlj
b24iLCAiIiwgIiIpKQorICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25JbWFnZS0+ZGF0YSgpLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCBpY29uVVJMKSwgImltYWdlL3gtaWNvbiIsICIiLCAiIikpCiAg
ICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZSgp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGNlMWI3MTIuLmRiYWU5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSA6IHB1Ymxp
YyBBcmNoaXZlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBj
cmVhdGUoU2hhcmVkQnVmZmVyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJj
aGl2ZT4gY3JlYXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiA+JiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSosIEZyYW1lRmlsdGVyKiA9IDApOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
aW5kZXggZjgzMTVjOS4uNmVjMjBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFz
c1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0
YSkKK1Bhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBV
UkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFz
b25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNo
aXZlLmgKaW5kZXggZGQxNGQ5OS4uMTRjZDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gTUhUTUw7IH0KIAog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZl
ciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVS
TCYsIFNoYXJlZEJ1ZmZlciopOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBnZW5lcmF0ZU1IVE1MRGF0YShQYWdlKik7CiAgICAgLy8gQmluYXJ5IGVuY29kaW5nIHJlc3Vs
dHMgaW4gc21hbGxlciBNSFRNTCBmaWxlcyBidXQgdGhleSBtaWdodCBub3Qgd29yayBpbiBvdGhl
ciBicm93c2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1s
L01IVE1MUGFyc2VyLmNwcAppbmRleCAyZDcyYTEyLi5kODc2MGY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0yMTcs
NyArMjE3LDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAgICAvLyBGSVhNRTogdGhlIFVS
TCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZl
IGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2
ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAg
ICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0
ZSBVUkxzLgotICAgIEtVUkwgbG9jYXRpb24gPSBLVVJMKEtVUkwoKSwgbWltZUhlYWRlci5jb250
ZW50TG9jYXRpb24oKSk7CisgICAgVVJMIGxvY2F0aW9uID0gVVJMKFVSTCgpLCBtaW1lSGVhZGVy
LmNvbnRlbnRMb2NhdGlvbigpKTsKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
Y29udGVudEJ1ZmZlciwgbG9jYXRpb24sIG1pbWVIZWFkZXIuY29udGVudFR5cGUoKSwgbWltZUhl
YWRlci5jaGFyc2V0KCksIFN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IDcyNzNiMDQuLjhjNTVkZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBGb250
UGxhdGZvcm1EYXRhIENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGZsb2F0
IHNpemUsIGJvb2wgYm9sZCwgYgogYm9vbCBDYWNoZWRGb250OjplbnN1cmVTVkdGb250RGF0YSgp
CiB7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYgIWVycm9yT2NjdXJyZWQoKSAm
JiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVu
dCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgbV9leHRlcm5hbFNW
R0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAKICAgICAgICAgUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpj
cmVhdGUoImFwcGxpY2F0aW9uL3htbCIpOwogICAgICAgICBTdHJpbmcgc3ZnU291cmNlID0gZGVj
b2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBmMzYxYWZmLi44
MzlkZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxv
YWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCkBAIC0yMzAsNyArMjMwLDcgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQogCiAgICAgaWYgKCFt
X3Jlc291cmNlUmVxdWVzdC51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIEtVUkwgdXJsRm9yQ2FjaGUgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVySWZOZWVkZWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1
cmxGb3JDYWNoZSA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRl
ZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVybEZvckNhY2hlLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcmFnbWVudElkZW50aWZp
ZXJGb3JSZXF1ZXN0ID0gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVy
KCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc28KICAgICAvLyBX
ZSBzaG91bGQgbG9vayBpbnRvIHJlbW92aW5nIHRoZSBleHBlY3RhdGlvbiBvZiB0aGF0IGtub3ds
ZWRnZSBmcm9tIHRoZSBwbGF0Zm9ybSBuZXR3b3JrIHN0YWNrcy4KICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChtX3Jlc291cmNlUmVxdWVzdCk7CiAgICAgaWYgKCFtX2ZyYWdtZW50SWRlbnRp
ZmllckZvclJlcXVlc3QuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVy
bCgpOworICAgICAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAgdXJsLnNldEZy
YWdtZW50SWRlbnRpZmllcihtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QpOwogICAgICAg
ICByZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgICAgICBtX2ZyYWdtZW50SWRlbnRpZmllckZvclJl
cXVlc3QgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgKaW5kZXggOGVmZTk0OS4uMDY2MzI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0
KCkgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKICAgICBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKTsgfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAppbmRleCAzNDYzNzg2Li5lNGNiMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0MiwxMyAr
MTQyLDEzIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKQog
CiBDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VVUkwpIGNvbnN0IAogewotICAgIEtVUkwgdXJsID0gbV9kb2N1
bWVudC0+Y29tcGxldGVVUkwocmVzb3VyY2VVUkwpOworICAgIFVSTCB1cmwgPSBtX2RvY3VtZW50
LT5jb21wbGV0ZVVSTChyZXNvdXJjZVVSTCk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlKHVy
bCk7IAogfQogCi1DYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJl
c291cmNlKGNvbnN0IEtVUkwmIHJlc291cmNlVVJMKSBjb25zdAorQ2FjaGVkUmVzb3VyY2UqIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYWNoZWRSZXNvdXJjZShjb25zdCBVUkwmIHJlc291cmNlVVJM
KSBjb25zdAogewotICAgIEtVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKKyAgICBVUkwgdXJsID0gTWVtb3J5Q2FjaGU6
OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKICAgICByZXR1
cm4gbV9kb2N1bWVudFJlc291cmNlcy5nZXQodXJsKS5nZXQoKTsgCiB9CiAKQEAgLTE2MSw3ICsx
NjEsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RJbWFnZShDYWNoZWRSZXNvdQogewogICAgIGlmIChGcmFtZSogZiA9IGZy
YW1lKCkpIHsKICAgICAgICAgaWYgKGYtPmxvYWRlcigpLnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5n
RGlzcGF0Y2hlZCgpICE9IEZyYW1lTG9hZGVyOjpOb0Rpc21pc3NhbCkgewotICAgICAgICAgICAg
S1VSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICAg
ICAgICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsK
ICAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwg
cmVxdWVzdC5mb3JQcmVsb2FkKCkpKQogICAgICAgICAgICAgICAgIFBpbmdMb2FkZXI6OmxvYWRJ
bWFnZShmLCByZXF1ZXN0VVJMKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0Q1NTU3R5bGVTCiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0
eWxlU2hlZXQoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEtVUkwgdXJs
ID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSk7CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIHJlcXVlc3QubXV0
YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldENhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9y
aWdpbigpLT5jYWNoZVBhcnRpdGlvbigpKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RNYWluUmVzb3VyYwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+
KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlLCByZXF1ZXN0KS5n
ZXQoKSk7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250
ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jv
b2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291
cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHN3aXRjaCAodHlw
ZSkgewogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKQEAgLTMwNCw3ICszMDQsNyBA
QCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRS
ZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBi
b29sIGZvclByZWxvYWQpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENh
Y2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKIHsKICAgICBpZiAoZG9jdW1l
bnQoKSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7
CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1l
bW9yeUNhY2hlKENhYwogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywg
cHJpb3JpdHk9JWQsIGZvclByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LmNoYXJzZXQoKS5sYXRpbjEoKS5kYXRh
KCksIHJlcXVlc3QucHJpb3JpdHkoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpOwogICAgIApAQCAt
NjYwLDcgKzY2MCw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgcmV0dXJuIFVzZTsK
IH0KIAotdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdl
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50
QWNjZXNzRGVuaWVkTWVzc2FnZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAodXJs
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC03MDMsMTIgKzcwMywxMiBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIHJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZyYW1lKCkgJiYgIWZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmFsbG93
SW1hZ2UobV9pbWFnZXNFbmFibGVkLCB1cmwpOwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50RGVmZXJzSW1hZ2UodXJsKSB8fCAhbV9hdXRvTG9h
ZEltYWdlczsKIH0KQEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdQog
CiBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjppc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVy
bFN0cmluZykgY29uc3QKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2RvY3VtZW50LT5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9kb2N1bWVudC0+Y29t
cGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgIGlmIChtX3ByZWxvYWRzKSB7CiAgICAgICAgIExp
c3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGVuZCA9IG1fcHJlbG9hZHMtPmVu
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA0NzYwODMyLi45Yzk1OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtNTMsNyArNTMsNyBAQCBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFz
cyBJbWFnZUxvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoZSBDYWNoZWRS
ZXNvdXJjZUxvYWRlciBwcm92aWRlcyBhIHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVt
b3J5Q2FjaGUKIC8vIGFuZCBlbmZvcmNlcyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQg
cnVsZXMgZm9yIHJlc291cmNlIHJldmFsaWRhdGlvbi4KQEAgLTk3LDEwICs5NywxMCBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRo
ZSBjb25zb2xlIGZvciB0aGUgc3BlY2lmaWVkIFVSTC4KLSAgICB2b2lkIHByaW50QWNjZXNzRGVu
aWVkTWVzc2FnZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0OworICAgIHZvaWQgcHJpbnRBY2Nlc3NE
ZW5pZWRNZXNzYWdlKGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKIAogICAgIENhY2hlZFJlc291cmNl
KiBjYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7Ci0gICAgQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CisgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKICAgICAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNv
dXJjZT4gPiBEb2N1bWVudFJlc291cmNlTWFwOwogICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VN
YXAmIGFsbENhY2hlZFJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJj
ZXM7IH0KQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEltYWdlc0Vu
YWJsZWQoYm9vbCk7CiAKLSAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwm
KSBjb25zdDsKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IFVSTCYpIGNvbnN0
OwogICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBl
KSBjb25zdDsKICAgICAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVs
b2FkKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQpOwogICAgIHZvaWQgY2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKTsKICAg
ICB2b2lkIHByaW50UHJlbG9hZFN0YXRzKCk7Ci0gICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwg
Ym9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOworICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNv
dXJjZTo6VHlwZSwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9v
bCBmb3JQcmVsb2FkID0gZmFsc2UpOwogCiAgICAgc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyYgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogCkBAIC0xNTIsMTIgKzE1
MiwxMiBAQCBwcml2YXRlOgogICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Zm9yUHJlbG9hZCwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIENhY2hlZFJlc291
cmNlUmVxdWVzdDo6RGVmZXJPcHRpb24pIGNvbnN0OwogICAgIAogICAgIGJvb2wgc2hvdWxkQ29u
dGludWVBZnRlck5vdGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSop
OwotICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJl
c291cmNlOjpUeXBlLCBjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+
Kik7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CiAKLSAgICBib29sIGNsaWVu
dERlZmVyc0ltYWdlKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNsaWVudERlZmVyc0lt
YWdlKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJl
ZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaApp
bmRleCBhNDg4YWYwLi4wMGNjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKQEAgLTMyLDE1ICszMiwxNSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5bGVT
aGVldENsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhw
ZWN0ZWRUeXBlKCkgeyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KICAgICB2aXJ0dWFsIENhY2hl
ZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBl
eHBlY3RlZFR5cGUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3Ry
aW5nJiAvKiBjaGFyc2V0ICovLCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBj
b25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYg
Ki8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICov
LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBVUkwmIC8qIGJhc2VV
UkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
aW5kZXggYjY3MjMzOC4uMzdjNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCkBAIC03NCw3ICs3NCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNo
ZSgpCiB7CiB9CiAKLUtVUkwgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklm
TmVlZGVkKGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKQorVVJMIE1lbW9yeUNhY2hlOjpyZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKQogewogICAg
IGlmICghb3JpZ2luYWxVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVy
biBvcmlnaW5hbFVSTDsKQEAgLTgzLDcgKzgzLDcgQEAgS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQoY29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCiAgICAg
Ly8gdG8gYmUgdW5pcXVlIGV2ZW4gd2hlbiB0aGV5IGRpZmZlciBieSB0aGUgZnJhZ21lbnQgaWRl
bnRpZmllciBvbmx5LgogICAgIGlmICghb3JpZ2luYWxVUkwucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKQogICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCB1cmwgPSBvcmlnaW5h
bFVSTDsKKyAgICBVUkwgdXJsID0gb3JpZ2luYWxVUkw7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwogICAgIHJldHVybiB1cmw7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlk
YXRpbmdSZXNvdXJjZSkKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpOwogfQogCi1DYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNl
Rm9yVVJMKGNvbnN0IEtVUkwmIHJlc291cmNlVVJMKQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNh
Y2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIHJldHVy
biByZXNvdXJjZUZvclJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc291cmNlVVJMKSk7CiB9CkBA
IC0xNzEsNyArMTcxLDcgQEAgQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZv
clVSTChjb25zdCBLVVJMJiByZXNvdXJjZVVSTCkKIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNo
ZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsK
ICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7Ci0gICAgS1VSTCB1cmwgPSByZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsID0g
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAjaWYgRU5B
QkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSBt
X3Jlc291cmNlcy5nZXQodXJsKTsKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCAyYmEzYWRiLi43
ODVjZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSAgewogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVT
aGVldDsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC0xMTIs
MTMgKzExMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVTdGF0aXN0aWMgZm9udHM7CiAgICAg
fTsKIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7Cisg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYpOwogICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgCiAgICAgYm9vbCBhZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKTsKICAgICB2b2lkIHJl
bW92ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpIHsgZXZpY3QocmVzb3VyY2UpOyB9CiAKLSAg
ICBzdGF0aWMgS1VSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJM
JiBvcmlnaW5hbFVSTCk7CisgICAgc3RhdGljIFVSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJ
Zk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAKICAgICB2b2lkIHJldmFsaWRh
dGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRS
ZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGJjN2I5YzUuLmFmZTY3YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTYwLDEwICs2
MCwxMCBAQCBJY29uQ29udHJvbGxlcjo6fkljb25Db250cm9sbGVyKCkKIHsKIH0KIAotS1VSTCBJ
Y29uQ29udHJvbGxlcjo6dXJsKCkKK1VSTCBJY29uQ29udHJvbGxlcjo6dXJsKCkKIHsKICAgICBJ
Y29uVVJMcyBpY29uVVJMcyA9IHVybHNGb3JUeXBlcyhGYXZpY29uKTsKLSAgICByZXR1cm4gaWNv
blVSTHMuaXNFbXB0eSgpID8gS1VSTCgpIDogaWNvblVSTHNbMF0ubV9pY29uVVJMOworICAgIHJl
dHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBVUkwoKSA6IGljb25VUkxzWzBdLm1faWNvblVSTDsK
IH0KIAogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkg
Y29uc3QKQEAgLTExOSw3ICsxMTksNyBAQCBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6dXJsc0Zv
clR5cGVzKGludCBpY29uVHlwZXNNYXNrKQogICAgIHJldHVybiBpY29uVVJMczsKIH0KIAotdm9p
ZCBJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBLVVJMJiBpY29uKQordm9p
ZCBJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBVUkwmIGljb24pCiB7CiAg
ICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBm
b3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fZnJhbWUt
PmxvYWRlcigpLmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwogICAgIGljb25EYXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCks
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIEljb25Db250cm9sbGVyOjpzdGFydExvYWRlcigpCiAgICAgaWYgKCFkb2N1bWVudENh
bkhhdmVJY29uKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgS1VSTCBpY29uVVJMKHVybCgpKTsKKyAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAg
U3RyaW5nIHVybFN0cmluZyhpY29uVVJMLnN0cmluZygpKTsKICAgICBpZiAodXJsU3RyaW5nLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSWNvbkNv
bnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25M
b2FkRGVjaXNpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9hZERlY2lzaW9u
ID09IEljb25Mb2FkTm8pIHsKLSAgICAgICAgS1VSTCBpY29uVVJMKHVybCgpKTsKKyAgICAgICAg
VVJMIGljb25VUkwodXJsKCkpOwogICAgICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3Ry
aW5nKCkpOwogICAgICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI1MywxMSArMjUzLDExIEBAIGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFwcGVuZFRv
SWNvblVSTHMoSWNvblR5cGUgaWNvblR5cGUsIEljb25VUkxzKiBpY29uVVJMcykKIEljb25VUkwg
SWNvbkNvbnRyb2xsZXI6OmRlZmF1bHRVUkwoSWNvblR5cGUgaWNvblR5cGUpCiB7CiAgICAgLy8g
RG9uJ3QgcmV0dXJuIGEgZmF2aWNvbiBpY29uVVJMIHVubGVzcyB3ZSdyZSBodHRwIG9yIGh0dHBz
Ci0gICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAg
IFVSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICgh
ZG9jdW1lbnRVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gSWNv
blVSTCgpOwogCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0
UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKICAgICB1
cmwuc2V0SG9zdChkb2N1bWVudFVSTC5ob3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Db250cm9sbGVyLmgKaW5kZXggNjFkZmE3Ni4uY2E5YzE0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uQ29udHJvbGxlcihG
cmFtZSopOwogICAgIH5JY29uQ29udHJvbGxlcigpOwogCi0gICAgS1VSTCB1cmwoKTsKKyAgICBV
UkwgdXJsKCk7CiAgICAgSWNvblVSTHMgdXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXNNYXNrKTsK
ICAgICBJY29uVVJMIGljb25VUkwoSWNvblR5cGUpIGNvbnN0OwogCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGxvYWREZWNpc2lvblJlY2VpdmVkKEljb25Mb2FkRGVjaXNpb24p
OwogICAgIHZvaWQgY29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24pOwog
Ci0gICAgdm9pZCBjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pOworICAgIHZvaWQg
Y29tbWl0VG9EYXRhYmFzZShjb25zdCBVUkwmIGljb24pOwogCiBwcml2YXRlOgogICAgIGJvb2wg
YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSwgSWNvblVSTHMqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggYTYyMjZkZC4uYzc3N2RkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xh
c3MgSW50U2l6ZTsKIGNsYXNzIEljb25EYXRhYmFzZUNsaWVudDsKIGNsYXNzIEljb25SZWNvcmQ7
CiBjbGFzcyBJY29uU25hcHNob3Q7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFn
ZVVSTFJlY29yZDsKIGNsYXNzIFBhZ2VVUkxTbmFwc2hvdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAKaW5k
ZXggOWYxMTYwYy4uNTFjY2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkRhdGFiYXNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlQmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJY29uRGF0
YWJhc2VCYXNlLmgiCiAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9h
ZGVyTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJM
RXh0cmFzLm1tCmluZGV4IDA4M2IxZTYuLmQ1Y2I5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCAi
S1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRy
YXMuaCIKQEAgLTU4LDcgKzU4LDcgQEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1J
TUVUeXBlKE5TVVJMICp1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKICAgICBpZiAoW2Zp
bGVuYW1lIGxlbmd0aF0gPT0gMCB8fCBbbGFzdFBhdGhDb21wb25lbnQgaXNFcXVhbFRvU3RyaW5n
OkAiLyJdKSB7CiAgICAgICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50IGlzIG5vIGdvb2QsIHRyeSB0
aGUgaG9zdC4KLSAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBLVVJMKHVybCkuaG9zdCgpOworICAg
ICAgICBOU1N0cmluZyAqaG9zdCA9IFVSTCh1cmwpLmhvc3QoKTsKICAgICAgICAgZmlsZW5hbWUg
PSBmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoaG9zdCk7CiAgICAgICAgIGlmIChb
ZmlsZW5hbWUgbGVuZ3RoXSA9PSAwKSB7CiAgICAgICAgICAgICAvLyBDYW4ndCBtYWtlIGEgZmls
ZW5hbWUgdXNpbmcgdGhpcyBVUkwsIHVzZSAidW5rbm93biIuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRleCAyMzc1ZWQzLi41MWFhMzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAg
LTIzNiw3ICsyMzYsNyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQogewogICAgIC8v
IElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEg
bmV3IHNjaGVtZSBhbmQgYSBVVUlELgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2Fw
dGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVy
cmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmlu
ZywgInVzZXItY2FwdGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAy
MzREQzIzIikpOwogCiAgICAgcGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdv
cmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwCmluZGV4IDUxYjM2YzIuLmMyN2RhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC0zNSw3ICszNSw2
IEBACiAjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU29mdExpbmtp
bmcuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
aW5kZXggMTUxYzkwNC4uOGM1NTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVu
dFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAj
aW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cisg
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KCFzY2hlbWVNYXRjaGVzKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTAs
NyArMjUwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIHNjaGVtZU1h
dGNoZXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25z
dCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3NjaGVtZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIFN0cmluZyBwcm90ZWN0ZWRSZXNvdXJjZVNjaGVtZShtX3BvbGljeS0+
c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHVybC5wcm90b2NvbCgpLCBtX3Nj
aGVtZSk7CiAgICAgfQogCi0gICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNv
bnN0CisgICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9IHVybC5ob3N0KCk7CiAgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShob3N0LCBtX2hvc3QpKQpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6
CiAKICAgICB9CiAKLSAgICBib29sIHBhdGhNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
KyAgICBib29sIHBhdGhNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4
NSw3ICsyODUsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcGF0aCA9PSBtX3BhdGg7CiAg
ICAgfQogCi0gICAgYm9vbCBwb3J0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAg
Ym9vbCBwb3J0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGlm
IChtX3BvcnRIYXNXaWxkY2FyZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzIxLDcg
KzMyMSw3IEBAIHB1YmxpYzoKICAgICBDU1BTb3VyY2VMaXN0KENvbnRlbnRTZWN1cml0eVBvbGlj
eSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlTmFtZSk7CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0
IFN0cmluZyYpOwotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJik7CisgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFVSTCYpOwogICAgIGJvb2wgYWxsb3dJbmxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2FsbG93SW5saW5lOyB9CiAgICAgYm9vbCBhbGxvd0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2Fs
bG93RXZhbDsgfQogCkBAIC0zNjQsMTIgKzM2NCwxMiBAQCB2b2lkIENTUFNvdXJjZUxpc3Q6OnBh
cnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcGFyc2UodmFsdWUuY2hhcmFjdGVycygpLCB2
YWx1ZS5jaGFyYWN0ZXJzKCkgKyB2YWx1ZS5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgQ1NQU291cmNl
TGlzdDo6bWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpCitib29sIENTUFNvdXJjZUxpc3Q6Om1hdGNo
ZXMoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKG1fYWxsb3dTdGFyKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIEtVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3Vs
ZFVzZUlubmVyVVJMKHVybCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkg
OiB1cmw7CisgICAgVVJMIGVmZmVjdGl2ZVVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJ
bm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJs
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fbGlzdFtpXS5tYXRjaGVzKGVmZmVjdGl2ZVVSTCkpCkBAIC04MTQsNyArODE0
LDcgQEAgcHVibGljOgogICAgICAgICBtX3NvdXJjZUxpc3QucGFyc2UodmFsdWUpOwogICAgIH0K
IAotICAgIGJvb2wgYWxsb3dzKGNvbnN0IEtVUkwmIHVybCkKKyAgICBib29sIGFsbG93cyhjb25z
dCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZUxpc3QubWF0Y2hlcyh1
cmwuaXNFbXB0eSgpID8gcG9saWN5KCktPnVybCgpIDogdXJsKTsKICAgICB9CkBAIC04MzksMjUg
KzgzOSwyNSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJp
bmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKICAgICBib29sIGFs
bG93SW5saW5lU3R5bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGlu
YWxOdW1iZXImIGNvbnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1Nj
cmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwg
Y29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2Uo
Y29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25z
dDsKLSAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGls
ZEZyYW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAg
ICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291
cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dD
b25uZWN0VG9Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0
IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKwor
ICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93T2JqZWN0RnJv
bVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYs
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29s
IGFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNv
bnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsK
KyAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dNZWRpYUZyb21T
b3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dG
b3JtQWN0aW9uKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CiAKICAgICB2b2lkIGdhdGhlclJl
cG9ydFVSSXMoRE9NU3RyaW5nTGlzdCYpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRGlzYWJsZWRFcnJvck1l
c3NhZ2U7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0
aW9uIHJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZsZWN0ZWRY
U1NEaXNwb3NpdGlvbjsgfQogICAgIGJvb2wgaXNSZXBvcnRPbmx5KCkgY29uc3QgeyByZXR1cm4g
bV9yZXBvcnRPbmx5OyB9Ci0gICAgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklzKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBvcnRVUklzOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9y
dFVSSXMoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydFVSSXM7IH0KIAogcHJpdmF0ZToKICAgICBD
U1BEaXJlY3RpdmVMaXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSosIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSk7CkBAIC04NzYsMTIgKzg3NiwxMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0Q1NQRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgT3duUHRyPENTUERpcmVjdGl2ZVR5cGU+Jik7CiAKICAgICBTb3VyY2VMaXN0RGlyZWN0aXZl
KiBvcGVyYXRpdmVEaXJlY3RpdmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwotICAgIHZv
aWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3Ry
aW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNv
bnN0IEtVUkwmIGJsb2NrZWRVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9
IFN0cmluZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpP
cmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsK
KyAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNv
bnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBVUkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0
VVJMID0gU3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBX
VEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNv
bnN0OwogCiAgICAgYm9vbCBjaGVja0V2YWwoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0Owog
ICAgIGJvb2wgY2hlY2tJbmxpbmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwogICAgIGJv
b2wgY2hlY2tOb25jZShOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAg
IGJvb2wgY2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmKSBjb25z
dDsKKyAgICBib29sIGNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBVUkwm
KSBjb25zdDsKICAgICBib29sIGNoZWNrTWVkaWFUeXBlKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlKSBjb25zdDsKIAog
ICAgIHZvaWQgc2V0RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSB7IG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOyB9CkBA
IC04OTAsNyArODkwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5saW5lQW5kUmVwb3J0
VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGJvb2wgaXNTY3JpcHQpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tOb25jZUFu
ZFJlcG9ydFZpb2xhdGlvbihOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgbm9uY2UsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSkgY29uc3Q7CiAKLSAgICBib29sIGNo
ZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OworICAgIGJvb2wg
Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdDsKICAgICBib29s
IGNoZWNrTWVkaWFUeXBlQW5kUmVwb3J0VmlvbGF0aW9uKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBTdHJp
bmcmIGNvbnNvbGVNZXNzYWdlKSBjb25zdDsKIAogICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9CkBAIC05MTgsNyArOTE4LDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zY3JpcHRTcmM7CiAg
ICAgT3duUHRyPFNvdXJjZUxpc3REaXJlY3RpdmU+IG1fc3R5bGVTcmM7CiAKLSAgICBWZWN0b3I8
S1VSTD4gbV9yZXBvcnRVUklzOworICAgIFZlY3RvcjxVUkw+IG1fcmVwb3J0VVJJczsKIAogICAg
IFN0cmluZyBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKIH07CkBAIC05NDksNyArOTQ5LDcg
QEAgUGFzc093blB0cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUo
Q29udGVudFNlY3VyaXR5UG9saWN5KiBwb2wKICAgICByZXR1cm4gZGlyZWN0aXZlcy5yZWxlYXNl
KCk7CiB9CiAKLXZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNv
bnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDU1BEaXJlY3RpdmVMaXN0Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcm
IGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3Qg
VVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsK
ICAgICBTdHJpbmcgbWVzc2FnZSA9IG1fcmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHldICIgKyBj
b25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNzYWdlOwogICAgIG1fcG9saWN5LT5yZXBvcnRWaW9s
YXRpb24oZGlyZWN0aXZlVGV4dCwgZWZmZWN0aXZlRGlyZWN0aXZlLCBtZXNzYWdlLCBibG9ja2Vk
VVJMLCBtX3JlcG9ydFVSSXMsIG1faGVhZGVyLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3Rh
dGUpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tOb25j
ZShOb25jZURpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIG5vbmNlCiAgICAgcmV0
dXJuICFkaXJlY3RpdmUgfHwgZGlyZWN0aXZlLT5hbGxvd3Mobm9uY2UpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2
ZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1Nv
dXJjZShTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIHJldHVybiAhZGlyZWN0aXZlIHx8IGRpcmVjdGl2ZS0+YWxsb3dzKHVybCk7CiB9
CkBAIC05OTgsNyArOTk4LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRS
ZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXYKICAgICBpZiAoZGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYykKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJ3Nj
cmlwdC1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNl
ZCBhcyBhIGZhbGxiYWNrLiI7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0
KCksIHNjcmlwdFNyYywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkg
KyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUs
IHN0YXRlKTsKKyAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNy
YywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1
ZmZpeCArICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwogICAg
IGlmICghbV9yZXBvcnRPbmx5KSB7CiAgICAgICAgIG1fcG9saWN5LT5yZXBvcnRCbG9ja2VkU2Ny
aXB0RXhlY3V0aW9uVG9JbnNwZWN0b3IoZGlyZWN0aXZlLT50ZXh0KCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNo
ZWNrTm9uY2VBbmRSZXBvcnRWaW9sYXRpb24oTm9uY2VEaXJlY3RpdmUqIGRpcmVjdGl2ZSwgYwog
ewogICAgIGlmIChjaGVja05vbmNlKGRpcmVjdGl2ZSwgbm9uY2UpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdE5vbmNl
LCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi5cbiIsIEtV
UkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmUtPnRleHQoKSwgc2NyaXB0Tm9uY2UsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVj
dGl2ZS0+dGV4dCgpICsgIlwiLlxuIiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsK
ICAgICByZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMjMsNyArMTAy
Myw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tNZWRpYVR5cGVBbmRSZXBvcnRWaW9s
YXRpb24oTWVkaWFMaXN0RGlyZWN0aXZlKiBkaXJlCiAgICAgaWYgKHR5cGVBdHRyaWJ1dGUuaXNF
bXB0eSgpKQogICAgICAgICBtZXNzYWdlID0gbWVzc2FnZSArICIgV2hlbiBlbmZvcmNpbmcgdGhl
ICdwbHVnaW4tdHlwZXMnIGRpcmVjdGl2ZSwgdGhlIHBsdWdpbidzIG1lZGlhIHR5cGUgbXVzdCBi
ZSBleHBsaWNpdGx5IGRlY2xhcmVkIHdpdGggYSAndHlwZScgYXR0cmlidXRlIG9uIHRoZSBjb250
YWluaW5nIGVsZW1lbnQgKGUuZy4gJzxvYmplY3QgdHlwZT1cIltUWVBFIEdPRVMgSEVSRV1cIiAu
Li4+JykuIjsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgcGx1Z2lu
VHlwZXMsIG1lc3NhZ2UgKyAiXG4iLCBLVVJMKCkpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmUtPnRleHQoKSwgcGx1Z2luVHlwZXMsIG1lc3NhZ2UgKyAiXG4iLCBVUkwoKSk7CiAgICAg
cmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMDM2LDcgKzEwMzYsNyBA
QCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNv
dXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogICAgIGlmIChkaXJlY3RpdmUgPT0gbV9kZWZhdWx0
U3JjKQogICAgICAgICBzdWZmaXggPSBtYWtlU3RyaW5nKCIgTm90ZSB0aGF0ICciLCAoaXNTY3Jp
cHQgPyAic2NyaXB0IiA6ICJzdHlsZSIpLCAiLXNyYycgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwg
c28gJ2RlZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFsbGJhY2suIik7CiAKLSAgICByZXBvcnRW
aW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5bGVT
cmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBz
dWZmaXggKyAiXG4iLCBLVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKKyAgICByZXBv
cnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5
bGVTcmMsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIg
KyBzdWZmaXggKyAiXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogCiAgICAg
aWYgKCFtX3JlcG9ydE9ubHkpIHsKICAgICAgICAgaWYgKGlzU2NyaXB0KQpAQCAtMTA0Niw3ICsx
MDQ2LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcG9ydFZpb2xh
dGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihTb3Vy
Y2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNr
U291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdAog
ewogICAgIGlmIChjaGVja1NvdXJjZShkaXJlY3RpdmUsIHVybCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2
YWwoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlIKICAgICAg
ICAgY2hlY2tFdmFsKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBu
b25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBV
UkwmIHVybCkgY29uc3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29s
ZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBzY3JpcHQgYmVjYXVz
ZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZTogIikpKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKQEAgLTExMzcsMjEgKzExMzcsMjEg
QEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGUKICAgICByZXR1cm4gY2hlY2tOb25jZUFuZFJlcG9y
dFZpb2xhdGlvbihtX3NjcmlwdE5vbmNlLmdldCgpLCBub25jZSwgIlJlZnVzZWQgdG8gbG9hZCAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQg
dmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6
ICIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVB
dHRyaWJ1dGUsIGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0Ojph
bGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRy
aWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1
cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja01l
ZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBl
QXR0cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpICsgIicgKE1JTUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERp
cmVjdGl2ZTogIikgOgogICAgICAgICBjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgp
LCB0eXBlLCB0eXBlQXR0cmlidXRlKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2
ZUxpc3Q6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAg
IHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVw
b3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGly
ZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgdXJsLCBzY3JpcHRTcmMpIDoKICAgICAgICAgY2hl
Y2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgdXJsKTsKIH0K
IAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJj
ZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMg
cmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9sCiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNy
Yy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZy
YW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAg
IGlmICh1cmwuaXNCbGFua1VSTCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjksMzUg
KzExNjksMzUgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXQKICAgICAgICAgY2hlY2tTb3VyY2Uo
b3BlcmF0aXZlRGlyZWN0aXZlKG1fZnJhbWVTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25z
dAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9s
YXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsLCBpbWdTcmMpIDoK
ICAgICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwg
dXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShj
b25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZy
b21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3Rh
dHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNr
U291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdl
dCgpKSwgdXJsLCBzdHlsZVNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJl
Y3RpdmUobV9zdHlsZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGly
ZWN0aXZlTGlzdDo6YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5k
UmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZl
RGlyZWN0aXZlKG1fZm9udFNyYy5nZXQoKSksIHVybCwgZm9udFNyYykgOgogICAgICAgICBjaGVj
a1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9mb250U3JjLmdldCgpKSwgdXJsKTsKIH0KIAot
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRl
bnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVw
b3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKSwgdXJsLCBt
ZWRpYVNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9tZWRp
YVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25u
ZWN0VG9Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwog
ICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9jb25uZWN0U3JjLmdldCgpKSwgdXJsLCBjb25uZWN0U3JjKSA6CkBAIC0xMjEwLDE0ICsxMjEw
LDE0IEBAIHZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6Z2F0aGVyUmVwb3J0VVJJcyhET01TdHJpbmdM
aXN0JiBsaXN0KSBjb25zdAogICAgICAgICBsaXN0LmFwcGVuZChtX3JlcG9ydFVSSXNbaV0uc3Ry
aW5nKCkpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbihjb25z
dCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9u
KGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFu
ZFJlcG9ydFZpb2xhdGlvbihtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCwgZm9ybUFjdGlvbikgOgog
ICAgICAgICBjaGVja1NvdXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCk7CiB9CiAKLWJvb2wg
Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsK
ICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2Vu
ZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fYmFzZVVS
SS5nZXQoKSwgdXJsLCBiYXNlVVJJKSA6CkBAIC0xNTM3LDggKzE1MzcsOCBAQCBib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aENvbnRleHQoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNp
ZXMsIGNvbnN0IFN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BE
aXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiwgY29uc3QgS1VSTCYpIGNvbnN0PgotYm9vbCBpc0FsbG93
ZWRCeUFsbFdpdGhOb25jZShjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywg
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpCit0ZW1wbGF0ZTxi
b29sIChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiwgY29uc3QgVVJMJikgY29uc3Q+Citib29s
IGlzQWxsb3dlZEJ5QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBv
bGljaWVzLCBjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9saWNpZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKCEocG9saWNpZXNbaV0uZ2V0KCktPiphbGxvd2VkKShub25jZSwgY29udGV4dFVSTCwg
Y29udGV4dExpbmUsIHVybCkpCkBAIC0xNTQ3LDggKzE1NDcsOCBAQCBib29sIGlzQWxsb3dlZEJ5
QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25z
dCBTdHJpbgogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BEaXJlY3Rp
dmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhVUkwoY29u
c3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKQordGVt
cGxhdGU8Ym9vbCAoQ1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVSTCkoY29uc3QgVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgorYm9vbCBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMs
IGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpCiB7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRC
eXBhc3NDb250ZW50U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTE1OTYsMTIgKzE1OTYsMTIgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdE5vbmNlKGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25j
ZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNv
bnRleHRMaW5lLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2Vk
QnlBbGxXaXRoTm9uY2U8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2U+KG1fcG9s
aWNpZXMsIG5vbmNlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgdXJsKTsKIH0KIAotYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb2xpY2llcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAoIW1fcG9saWNpZXNbaV0tPmFsbG93UGx1Z2luVHlwZSh0eXBlLCB0eXBlQXR0cmli
dXRlLCB1cmwsIHJlcG9ydGluZ1N0YXR1cykpCkBAIC0xNjEwLDUyICsxNjEwLDUyIEBAIGJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHR5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJl
cG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09i
amVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dP
YmplY3RGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hp
bGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNB
bGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9t
U291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8
JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmws
IHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxv
d1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93
U3R5bGVGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtV
UkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5n
U3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21T
b3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxX
aXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlPihtX3BvbGljaWVz
LCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25z
dAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93TWVkaWFGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7
CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZShj
b25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nv
bm5lY3RUb1NvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93
ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlPiht
X3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dGb3JtQWN0aW9uPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAK
LWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJs
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMp
IGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJKGNvbnN0IFVS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGly
ZWN0aXZlTGlzdDo6YWxsb3dCYXNlVVJJPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1
cyk7CiB9CkBAIC0xNjg2LDEyICsxNjg2LDEyIEBAIFNlY3VyaXR5T3JpZ2luKiBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1jb25zdCBLVVJMJiBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT51cmwoKTsKIH0KIAotS1VSTCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKIH0KQEAgLTE3MDEsNyArMTcwMSw3
IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjplbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRi
b3hGbGFncyBtYXNrKSBjb25zdAogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZW5mb3Jj
ZVNhbmRib3hGbGFncyhtYXNrKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUlu
UmVwb3J0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmlu
ZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CkBAIC0xNzExLDcgKzE3MTEsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBv
cnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCiB9CiAKICNpZiBFTkFCTEUo
Q1NQX05FWFQpCi1zdGF0aWMgdm9pZCBnYXRoZXJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
RGF0YShTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50SW5pdCYgaW5pdCwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0
aXZlRGlyZWN0aXZlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRl
cikKK3N0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJl
Y3RpdmUsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAg
ICAgaW5pdC5kb2N1bWVudFVSSSA9IGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKTsKICAgICBpbml0
LnJlZmVycmVyID0gZG9jdW1lbnQtPnJlZmVycmVyKCk7CkBAIC0xNzI5LDE0ICsxNzI5LDE0IEBA
IHN0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBjYWxs
RnJhbWUgPSBnZXRGaXJzdE5vbk5hdGl2ZUZyYW1lKHN0YWNrKTsKIAogICAgIGlmIChjYWxsRnJh
bWUubGluZU51bWJlcigpKSB7Ci0gICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxT
dHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CisgICAgICAgIFVSTCBzb3VyY2UgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCBjYWxsRnJhbWUuc291cmNlVVJMKCkpOwogICAgICAgICBpbml0LnNv
dXJjZUZpbGUgPSBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3VtZW50LCBzb3VyY2UpOwogICAg
ICAgICBpbml0LmxpbmVOdW1iZXIgPSBjYWxsRnJhbWUubGluZU51bWJlcigpOwogICAgIH0KIH0K
ICNlbmRpZgogCi12b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3Rp
dmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkws
IGNvbnN0IFZlY3RvcjxLVVJMPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNv
bnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0
TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiByZXBvcnRVUklzLCBj
b25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0
CiB7CiAgICAgbG9nVG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBjb250ZXh0
TGluZSwgc3RhdGUpOwogCkBAIC0xNzg5LDcgKzE3ODksNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29u
c3QgUwogICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdldEZpcnN0
Tm9uTmF0aXZlRnJhbWUoc3RhY2spOwogCiAgICAgICAgIGlmIChjYWxsRnJhbWUubGluZU51bWJl
cigpKSB7Ci0gICAgICAgICAgICBLVVJMIHNvdXJjZSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBj
YWxsRnJhbWUuc291cmNlVVJMKCkpOworICAgICAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQYXJz
ZWRVUkxTdHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgICAgICBjc3BSZXBv
cnQtPnNldFN0cmluZygic291cmNlLWZpbGUiLCBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3Vt
ZW50LCBzb3VyY2UpKTsKICAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0TnVtYmVyKCJsaW5lLW51
bWJlciIsIGNhbGxGcmFtZS5saW5lTnVtYmVyKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA5Y2RhYTc4Li4yZWE4OGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgQ29udGVudFNlY3VyaXR5UG9saWN5X2gKICNkZWZpbmUgQ29udGVu
dFNlY3VyaXR5UG9saWN5X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTkyLDE5ICs5MiwxOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0
IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRS
ZXBvcnQpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGlu
Z1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6RXhl
Y1N0YXRlKiA9IDAsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJv
b2wgYWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtV
UkwmID0gS1VSTCgpKSBjb25zdDsKLSAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYsIFJlcG9y
dGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZy
b21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21T
b3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0Owot
ICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1
cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29u
c3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJl
cG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwg
UmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5l
Y3RUb1NvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29u
c3Q7Ci0gICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1
cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93U2Ny
aXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBVUkwmID0gVVJMKCkp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBT
ZW5kUmVwb3J0KSBjb25zdDsKKworICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0
IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxs
b3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBv
cnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93SW1h
Z2VGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNv
bnN0OworICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5n
U3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNl
KGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJv
b2wgYWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2Vu
ZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwm
LCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9y
bUFjdGlvbihjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsK
KyAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5k
UmVwb3J0KSBjb25zdDsKIAogICAgIFJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHJlZmxlY3RlZFhT
U0Rpc3Bvc2l0aW9uKCkgY29uc3Q7CiAKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlcG9ydEludmFsaWRSZWZsZWN0ZWRYU1MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgdm9pZCByZXBvcnRNaXNzaW5nUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IHZvaWQgcmVwb3J0VW5zdXBwb3J0ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0g
ICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25z
dCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2Fn
ZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklz
LCBjb25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5n
KCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OworICAgIHZv
aWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3Ry
aW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNv
bnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNvbnN0
IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CiAKICAgICB2b2lkIHJl
cG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVj
dGl2ZVRleHQpIGNvbnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgS1VS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2b2lkIGVuZm9yY2VT
YW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzKSBjb25zdDsKICAgICBTdHJpbmcgZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50
LmgKaW5kZXggMTI4NmVjZi4uMjNkM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQ29udGV4dE1lbnVJdGVtOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAgICBjbGFzcyBDb250
ZXh0TWVudUNsaWVudCB7CiAgICAgcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTcGVha2luZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAppbmRleCA0NDgyOTgyLi5kYTIxN2ZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQp
CiAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG9wZW5O
ZXdXaW5kb3coY29uc3QgS1VSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCitzdGF0aWMgdm9p
ZCBvcGVuTmV3V2luZG93KGNvbnN0IFVSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCiB7CiAg
ICAgaWYgKFBhZ2UqIG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSkpOwpAQCAtODIwLDcgKzgyMCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1
bGF0ZSgpCiAKICAgICBpZiAoIW1faGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CiAgICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAg
IEtVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICAg
ICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIuY2xp
ZW50KCkuY2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAgICAg
ICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkp
OwpAQCAtODM0LDcgKzgzNCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0
ZSgpCiAgICAgICAgICAgICBhcHBlbmRJdGVtKENvcHlMaW5rSXRlbSwgbV9jb250ZXh0TWVudS5n
ZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBLVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICAgICAgVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgYXBwZW5kSXRlbSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKQEAg
LTg0OCw3ICs4NDgsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQog
I2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBLVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0UmVz
dWx0LmFic29sdXRlTWVkaWFVUkwoKTsKKyAgICAgICAgVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0
UmVzdWx0LmFic29sdXRlTWVkaWFVUkwoKTsKICAgICAgICAgaWYgKCFtZWRpYVVSTC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgfHwgIWltYWdlVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1f
Y29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBGcmFtZUxvYWRlciYg
bG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwotICAgICAgICBLVVJMIGxpbmtVUkwgPSBtX2hpdFRl
c3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5rVVJMID0gbV9oaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIWxpbmtVUkwuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBpZiAobG9hZGVyLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0KGxpbmtVUkwpKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0o
T3BlbkxpbmtJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMDBjNzZlZS4uN2EyNjRlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAKQEAgLTQ4LDIyICs0OCwyMiBAQCBib29s
IGlzUG9saWN5QWN0aXZlSW5Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgcmV0dXJuIGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5pc0FjdGl2ZSgp
OwogfQogCi10ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhU
eXBlKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgordGVtcGxhdGU8Ym9vbCAoQ29u
dGVudFNlY3VyaXR5UG9saWN5OjoqYWxsb3dXaXRoVHlwZSkoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0PgogYm9vbCBpc0FsbG93ZWRXaXRoVHlwZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFpc1BvbGljeUFjdGl2
ZUluQ29udGV4dChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4g
KGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlwZSkodHlwZSwg
dHlwZSwgS1VSTCgpLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHByZXNzUmVwb3J0KTsKKyAg
ICByZXR1cm4gKGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlw
ZSkodHlwZSwgdHlwZSwgVVJMKCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6U3VwcHJlc3NSZXBv
cnQpOwogfQogCi10ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dp
dGhVUkwpKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q+Cit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dp
dGhVUkwpKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
KSBjb25zdD4KIGJvb2wgaXNBbGxvd2VkV2l0aFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5D
b250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEtVUkwgcGFyc2Vk
VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgcGFyc2VkVVJMID0gY29u
dGV4dC0+Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIXBhcnNlZFVSTC5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHRocm93IGEg
SmF2YVNjcmlwdCBlcnJvci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDM2YmYy
YmUuLmI2OWM5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcwLDcgKzcwLDcg
QEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
TWVkaWFRdWVyeUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgpAQCAtMTc2
OSw3ICsxNzY5LDcgQEAgdm9pZCBET01XaW5kb3c6OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE8KICAgICBpZiAoIWZpcnN0RnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFt
ZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVk
VVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAg
ICBpZiAoY29tcGxldGVkVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OTQs
NyArMTc5NCw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAKIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JN
ZXNzYWdlKERPTVdpbmRvdyogYWN0aXZlV2luZG93KQogewotICAgIGNvbnN0IEtVUkwmIGFjdGl2
ZVdpbmRvd1VSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3Qg
VVJMJiBhY3RpdmVXaW5kb3dVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIGlmIChhY3RpdmVXaW5kb3dVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIApAQCAtMTgwNiw4ICsxODA2LDggQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5B
Y2Nlc3NFcnJvck1lc3NhZ2UoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgU3RyaW5nIG1l
c3NhZ2UgPSAiQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiArIGFjdGl2ZU9yaWdpbi0+
dG9TdHJpbmcoKSArICJcIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiAr
IHRhcmdldE9yaWdpbi0+dG9TdHJpbmcoKSArICJcIi4gIjsKIAogICAgIC8vIFNhbmRib3ggZXJy
b3JzOiBVc2UgdGhlIG9yaWdpbiBvZiB0aGUgZnJhbWVzJyBsb2NhdGlvbiwgcmF0aGVyIHRoYW4g
dGhlaXIgYWN0dWFsIG9yaWdpbiAoc2luY2Ugd2Uga25vdyB0aGF0IGF0IGxlYXN0IG9uZSB3aWxs
IGJlICJudWxsIikuCi0gICAgS1VSTCBhY3RpdmVVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50
KCktPnVybCgpOwotICAgIEtVUkwgdGFyZ2V0VVJMID0gZG9jdW1lbnQoKS0+dXJsKCk7CisgICAg
VVJMIGFjdGl2ZVVSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJM
IHRhcmdldFVSTCA9IGRvY3VtZW50KCktPnVybCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc1Nh
bmRib3hlZChTYW5kYm94T3JpZ2luKSB8fCBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPmlzU2Fu
ZGJveGVkKFNhbmRib3hPcmlnaW4pKSB7CiAgICAgICAgIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZy
YW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoYWN0aXZlVVJMKS0+dG9TdHJpbmco
KSArICJcIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodGFyZ2V0VVJMKS0+dG9TdHJpbmcoKSArICJcIi4gIjsKICAgICAgICAgaWYgKGRvY3Vt
ZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pICYmIGFjdGl2ZVdpbmRvdy0+ZG9jdW1l
bnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpCkBAIC0xODYyLDcgKzE4NjIsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgQXRvbWljUwogewogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2
ZVdpbmRvdy0+ZnJhbWUoKTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlz
RW1wdHkoKSA/IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRl
ZFVSTCA9IHVybFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0
cmluZygpKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7
CiAgICAgaWYgKCFjb21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICFjb21wbGV0ZWRVUkwuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIC8vIERvbid0IGV4cG9zZSBjbGllbnQgY29kZSB0byBpbnZhbGlkIFVS
THMuCiAgICAgICAgIGFjdGl2ZVdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0byBv
cGVuIGEgd2luZG93IHdpdGggaW52YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5nKCkg
KyAiJy5cbiIpOwpAQCAtMTk0MCw3ICsxOTQwLDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERP
TVdpbmRvdzo6b3Blbihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4K
ICAgICAgICAgaWYgKCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUodGFyZ2V0RnJhbWUpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJz
dEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworICAgICAgICBVUkwg
Y29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3Ry
aW5nKTsKIAogICAgICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKICAg
ICAgICAgICAgIHJldHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCA0ZGVhMTk5Li44ODNlYmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmgKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRnJhbWVE
ZXN0cnVjdGlvbk9ic2VydmVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYzk3ZmY0ZC4uMTgxODQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc0MiwxMiArNzQyLDEy
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBv
dXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0
YXJ0IGEgZHJhZyBvbgogICAgICAgICAvLyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhY3R1YWxseSB1
bmRlciB0aGUgZHJhZyBvcmlnaW4uCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBLVVJMIGxp
bmtVUkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VV
UkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICBVUkwgbGlua1VSTCA9
IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgVVJMIGltYWdlVVJMID0gaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdn
ZWRQb2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlv
bigpKTsKIAotICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKKyAgICBtX2RyYWdnaW5n
SW1hZ2VVUkwgPSBVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKIAog
ICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5oCmluZGV4IDI4MDM4OWYuLjNjNjkxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDcg
KzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERpZEluaXRpYXRl
RHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRlZDsgfSAK
ICAgICAgICAgYm9vbCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRp
YXRlRHJhZzsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KLSAgICAgICAgY29uc3QgS1VS
TCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsg
fQorICAgICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBt
X2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgICAgIGNvbnN0
IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CiAg
ICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50KiwgY29uc3QgSW50UG9pbnQm
LCBjb25zdCBJbnRSZWN0JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBJbnRQb2ludCYpOwogICAgICAg
ICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3Qg
SW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wgZm9yTGluayk7CiAgICAgICAgIHZv
aWQgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwotICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0
ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpOworICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9h
cmQqLCBFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICAgICAg
ICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kaWRJbml0aWF0
ZURyYWc7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBT
ZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRo
aW4gV2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKLSAgICAgICAgS1VSTCBt
X2RyYWdnaW5nSW1hZ2VVUkw7CisgICAgICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAg
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBhZGU1ZmM2Li41OTI4
YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBFdmVudFNvdXJj
ZTo6ZGVmYXVsdFJlY29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5lIEV2ZW50U291cmNlOjpF
dmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKK2lubGluZSBFdmVudFNvdXJj
ZTo6RXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKICAgICA6IEFjdGl2ZURP
TU9iamVjdChjb250ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwgbV93aXRoQ3JlZGVudGlh
bHMoZmFsc2UpCkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50
U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEtVUkwgZnVsbFVSTCA9IGNvbnRleHQtPmNvbXBs
ZXRlVVJMKHVybCk7CisgICAgVVJMIGZ1bGxVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OwogICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCA5N2U3
YzEwLi5hNDFmMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw5ICszNCw5
IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdl
dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgotICAgIEV2ZW50U291cmNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgRGljdGlvbmFyeSYp
OworICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBj
b25zdCBEaWN0aW9uYXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBP
VkVSUklERSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zLCBpbnQgZmll
bGRMZW5ndGgsIGludCBsaW5lTGVuZ3RoKTsKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4g
Y3JlYXRlTWVzc2FnZUV2ZW50KCk7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
ICAgICBib29sIG1fd2l0aENyZWRlbnRpYWxzOwogICAgIFN0YXRlIG1fc3RhdGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggZTgyMTRlNC4uN2FmYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKQogfQogI2VuZGlmCiAKLWJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJM
JiB1cmwpIGNvbnN0Citib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgLy8gV2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1
c2Ugc29tZSBzaXRlcyBkZXBlbmQgb24gdGhhdCwKICAgICAvLyBidXQgd2UgZG9uJ3QgYWxsb3cg
bW9yZSB0aGFuIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA3MDMwNmQ5Li4wMDJlMDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgICAg
IGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9
CiAKLSAgICAgICAgYm9vbCBpc1VSTEFsbG93ZWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAg
ICBib29sIGlzVVJMQWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIC8vID09PT09PT09
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA0ZmJmMTQyLi4zZTJmOTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAgICAgc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoZmFs
c2UpOwogfQogCi1ib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBLVVJMJiB1
cmwpCitib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRoZW4gd2UgaGF2ZSBubyBwbGFjZSB3ZSBu
ZWVkIHRvIGp1bXAgdG8uCiAgICAgLy8gT1RPSCBJZiBDU1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlv
dXNseSwgd2Ugd2FudCB0byBzZXQgaXQgdG8gMCwgcmVjYWxjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAppbmRleCAwM2ZjMjIyLi40Y2M3ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKQEAgLTMyNSw3ICszMjUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gTk8gT1RIRVIgUExBVEZPUk0gQkVTSURFUyBNQUMgU0hPVUxE
IFVTRSBUSElTIE1FVEhPRC4KICAgICB2b2lkIGFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZs
b2F0KiBuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9hdCBib3R0
b21MaW1pdCk7CiAKLSAgICBib29sIHNjcm9sbFRvRnJhZ21lbnQoY29uc3QgS1VSTCYpOworICAg
IGJvb2wgc2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmKTsKICAgICBib29sIHNjcm9sbFRvQW5j
aG9yKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5j
aG9yKE5vZGUqKTsKICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGNvbnN0
IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDI1YzFmZTQuLmQzZTMxNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgdm9pZCBIaXN0
b3J5OjpnbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFuY2UpCiAg
ICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRp
b24oZGlzdGFuY2UpOwogfQogCi1LVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQorVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQogewotICAgIEtVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VV
UkwoKTsKKyAgICBVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsK
ICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2VVUkw7CiAK
LSAgICByZXR1cm4gS1VSTChiYXNlVVJMLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoYmFz
ZVVSTCwgdXJsU3RyaW5nKTsKIH0KIAogdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2JqZWN0VHlw
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBIaXN0b3J5Ojpz
dGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBj
b25zdCBTdHIKICAgICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIEtVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7
CisgICAgVVJMIGZ1bGxVUkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwogICAgIGlmICghZnVs
bFVSTC5pc1ZhbGlkKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoZnVsbFVSTCkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggY2E5NzZhOS4uODBiNjhkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmgKQEAgLTI3LDkgKzI3LDkgQEAKICNkZWZpbmUgSGlzdG9yeV9oCiAK
ICNpbmNsdWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY2LDcg
KzY2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIaXN0b3J5KEZyYW1lKik7
CiAKLSAgICBLVVJMIHVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBVUkwgdXJs
Rm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHN0YXRlSW50ZXJuYWwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAppbmRleCBkODQzNDc4Li5iNzViMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ0LDExICs0NCwxMSBAQCBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUqIGZy
YW1lKQogewogfQogCi1pbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0Citp
bmxpbmUgY29uc3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKKyAgICBjb25zdCBVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAg
IGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVzZSAi
YWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3ZSBo
YXZlIGEgZnJhbWUpLgogCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9zdCgp
IGNvbnN0CiAKICAgICAvLyBOb3RlOiB0aGlzIGlzIHRoZSBJRSBzcGVjLiBUaGUgTlMgc3BlYyBz
d2FwcyB0aGUgdHdvLCBpdCBzYXlzCiAgICAgLy8gIlRoZSBob3N0bmFtZSBwcm9wZXJ0eSBpcyB0
aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgaG9zdCBhbmQgcG9ydCBwcm9wZXJ0aWVzLCBzZXBhcmF0
ZWQgYnkgYSBjb2xvbi4iCi0gICAgY29uc3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7CisgICAg
Y29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQoKSA/
IHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6IHVybC5ob3N0
KCk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QK
ICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGNvbnN0
IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJs
KCk7CiAgICAgcmV0dXJuIHVybC5oYXNQb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgp
KSA6ICIiOwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwYXRobmFt
ZSgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucGF0aCgpLmlzRW1wdHkoKSA/ICIvIiA6IHVy
bC5wYXRoKCk7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBTdHJpbmcgTG9jYXRpb246OnNlYXJj
aCgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9
IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0
cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lk
IExvY2F0aW9uOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sLCBET01XaW5kb3cq
IGFjdGl2ZVdpbmRvdywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJu
OwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVy
bCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29s
KHByb3RvY29sKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYg
aG9zdCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZgogewogICAgIGlmICgh
bV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5n
KCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgTG9jYXRpb246OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIERPTVdpbmRv
dyogYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5h
bWUpOwogICAgIHNldExvY2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdp
bmRvdyk7CiB9CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0UG9ydChjb25z
dCBTdHJpbmcmIHBvcnRTdHJpbmcsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW4KIHsK
ICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKICAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAocG9y
dCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAg
dXJsLnJlbW92ZVBvcnQoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQ
YXRobmFtZShjb25zdCBTdHJpbmcmIHBhdGhuYW1lLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywg
RE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJs
ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKICAgICBzZXRMb2Nh
dGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjA2
LDcgKzIwNiw3IEBAIHZvaWQgTG9jYXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHNlYXJj
aCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJs
LnNldFF1ZXJ5KHNlYXJjaCk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVX
aW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIExvY2F0aW9u
OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgaGFzaCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERP
TVdpbmRvdyogZgogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZpZXIg
PSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRlbnRp
ZmllciA9IGhhc2g7CiAgICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5o
CmluZGV4IGI0ZjlhNGMuLjk1YjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKQEAgLTQwLDcg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBG
cmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TG9jYXRpb24o
Y29uc3QgU3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RX
aW5kb3cpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgY29uc3QgVVJMJiB1
cmwoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDdjMThhYjkuLmYwMTljNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTYxLDcgKzk2
MSw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogewogICAg
IC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1vZGVsIG9mIGp1c3QgYmVp
bmcgaGFuZGVkIHRoZSBzaGVldAogICAgIC8vIHRleHQgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZSBV
Ukwgb3Vyc2VsdmVzLgotICAgIEtVUkwgdXJsID0gbV9zZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRM
b2NhdGlvbigpOworICAgIFVSTCB1cmwgPSBtX3NldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0
aW9uKCk7CiAgICAgCiAgICAgLy8gQWxsb3cgYW55IGxvY2FsIGZpbGUgVVJMIHNjaGVtZSB0byBi
ZSBsb2FkZWQuCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFz
TG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDFh
ZDFhNTYuLjE1NWYyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTIxNSw3ICsy
MTUsNyBAQCBpbmxpbmUgdm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIGhh
c2gpCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygp
OwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoY29uc3QgS1VSTCYgdXJsKQor
dm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Myw3ICsy
NzMsNyBAQCBTdG9yYWdlTmFtZXNwYWNlKiBQYWdlR3JvdXA6OnRyYW5zaWVudExvY2FsU3RvcmFn
ZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwm
IHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRl
bGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1l
LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewpAQCAtMjg4LDcg
KzI4OCw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgc2NyaXB0c0luV29ybGQtPmFw
cGVuZCh1c2VyU2NyaXB0LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVl
dFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFVSTCYgdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCwKQEAgLTMwOCw3ICszMDgs
NyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3Zl
VXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1
cmwpCit2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxkLCB3
b3JsZCk7CiAKQEAgLTMyOSw3ICszMjksNyBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNj
cmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cgogICAg
ICAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUoaXQpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVt
b3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxk
KERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVF9B
Ukcod29ybGQsIHdvcmxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXggMDM0MjE2My4u
OWExZGE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVu
ZXI7CiAgICAgY2xhc3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczsKICNlbmRpZgotICAgIGNsYXNz
IEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIEdyb3VwU2V0dGluZ3M7CiAgICAgY2xh
c3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiAgICAgY2xhc3MgUGFnZTsKQEAgLTczLDcg
KzczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNMaW5rVmlzaXRl
ZChMaW5rSGFzaCk7CiAKLSAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25zdCBLVVJMJik7
CisgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgVVJMJik7CiAgICAgICAgIHZvaWQg
YWRkVmlzaXRlZExpbmsoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogICAgICAgICB2b2lkIGFkZFZp
c2l0ZWRMaW5rSGFzaChMaW5rSGFzaCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtz
KCk7CkBAIC04OSwxNiArODksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0
b3JhZ2VOYW1lc3BhY2UqIHRyYW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9w
T3JpZ2luKTsKIAotICAgICAgICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJX
b3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiwKKyAgICAgICAgdm9pZCBh
ZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhZGRVc2VyU3R5
bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IEtVUkwmLAorICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFw
cGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlz
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwgPSBVc2VyU3R5
bGVVc2VyTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJT
dHlsZUluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSA9IEluamVjdEluRXhpc3RpbmdEb2N1bWVu
dHMpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKiwgY29uc3QgS1VSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZW1v
dmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOworICAg
ICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCos
IGNvbnN0IFVSTCYpOwogCiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQo
RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJv
bVdvcmxkKERPTVdyYXBwZXJXb3JsZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVy
LmNwcAppbmRleCA5YjkwZmNiLi5kMWFkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3Vt
dWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICBpZiAodXJsLmlzVmFsaWQoKSAmJiAhdXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNzUsNyArMTc1LDcgQEAgUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpS
ZXNvdXJjZSgpCiB7CiB9CiAKLVBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSkKK1BhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBk
YXRhKQogICAgIDogdXJsKHVybCkKICAgICAsIG1pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgZGF0
YShkYXRhKQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZShQYWdlKiBwYWdlKQogdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUq
IGZyYW1lKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwot
ICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPnVybCgpOworICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+
dXJsKCk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0JsYW5rVVJMKCkpIHsKICAg
ICAgICAgLy8gRm9yIGJsYW5rIGZyYW1lcyB3ZSBnZW5lcmF0ZSBhIGZha2UgVVJMIHNvIHRoZXkg
Y2FuIGJlIHJlZmVyZW5jZWQgYnkgdGhlaXIgY29udGFpbmluZyBmcmFtZS4KICAgICAgICAgdXJs
ID0gdXJsRm9yQmxhbmtGcmFtZShmcmFtZSk7CkBAIC0yMzQsMTkgKzIzNCwxOSBAQCB2b2lkIFBh
Z2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAKICAgICAgICAgaWYg
KGlzSFRNTEltYWdlRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTEltYWdlRWxl
bWVudCogaW1hZ2VFbGVtZW50ID0gdG9IVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwotICAgICAg
ICAgICAgS1VSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAgICAgICBVUkwgdXJsID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
c3JjQXR0cikpOwogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhj
YWNoZWRJbWFnZSwgaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCB1cmwpOwogICAgICAgICB9IGVs
c2UgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpsaW5rVGFnKSkgewogICAgICAg
ICAgICAgSFRNTExpbmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxMaW5r
RWxlbWVudCo+KGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0
ID0gbGlua0VsZW1lbnQtPnNoZWV0KCkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHVybCA9IGRv
Y3VtZW50LT5jb21wbGV0ZVVSTChsaW5rRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6
aHJlZkF0dHIpKTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRl
VVJMKGxpbmtFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpOwogICAg
ICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIHVybCk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSkgewog
ICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gdG9IVE1MU3R5bGVFbGVtZW50
KGVsZW1lbnQpLT5zaGVldCgpKQotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hl
ZXQoc2hlZXQsIEtVUkwoKSk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChzaGVldCwgVVJMKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAg
dm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAg
ICBzZXJpYWxpemVGcmFtZShjaGlsZEZyYW1lKTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBL
VVJMJiB1cmwpCit2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZ0J1
aWxkZXIgY3NzVGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldC0+
bGVuZ3RoKCk7ICsraSkgewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6
OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3Qg
S1VSCiAgICAgICAgIC8vIFNvbWUgcnVsZXMgaGF2ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZW0gdGhhdCB3ZSBuZWVkIHRvIHJldHJpZXZlLgogICAgICAgICBpZiAocnVsZS0+dHlwZSgp
ID09IENTU1J1bGU6OklNUE9SVF9SVUxFKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBp
bXBvcnRSdWxlID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KHJ1bGUpOwotICAgICAgICAg
ICAgS1VSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVsZS0+aHJl
ZigpKTsKKyAgICAgICAgICAgIFVSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwo
aW1wb3J0UnVsZS0+aHJlZigpKTsKICAgICAgICAgICAgIGlmIChtX3Jlc291cmNlVVJMcy5jb250
YWlucyhpbXBvcnRVUkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCksIGltcG9ydFVS
TCk7CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NT
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICB9CiB9
CiAKLXZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2Uq
IGltYWdlLCBSZW5kZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IEtVUkwmIHVybCkKK3Zv
aWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdl
LCBSZW5kZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghdXJsLmlzVmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAg
ICByZXR1cm47CkBAIC0zNDAsMTggKzM0MCwxOCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bAog
CiAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1h
Z2UqPihzdHlsZUltYWdlKS0+Y2FjaGVkSW1hZ2UoKTsKIAotICAgICAgICBLVVJMIHVybCA9IGRv
Y3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKGltYWdlLT51cmwoKSk7CiAgICAgICAgIGFkZEltYWdlVG9SZXNv
dXJjZXMoaW1hZ2UsIDAsIHVybCk7CiAgICAgfQogfQogCi1LVVJMIFBhZ2VTZXJpYWxpemVyOjp1
cmxGb3JCbGFua0ZyYW1lKEZyYW1lKiBmcmFtZSkKK1VSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9y
QmxhbmtGcmFtZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+Ojpp
dGVyYXRvciBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKKyAgICBIYXNoTWFw
PEZyYW1lKiwgVVJMPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFt
ZSk7CiAgICAgaWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAgICAgICAgcmV0
dXJuIGl0ZXItPnZhbHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2ZyYW1lLyIgKyBT
dHJpbmc6Om51bWJlcihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIEtVUkwgZmFrZVVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIGZha2VVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpOwogICAgIG1fYmxhbmtGcmFtZVVSTHMuYWRkKGZyYW1lLCBmYWtlVVJMKTsKIAogICAgIHJl
dHVybiBmYWtlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDRlODE1
NzkuLjE3MzFkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMxLDgg
KzMxLDggQEAKICNpZm5kZWYgUGFnZVNlcmlhbGl6ZXJfaAogI2RlZmluZSBQYWdlU2VyaWFsaXpl
cl9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTU0LDExICs1NCwxMSBAQCBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBQYWdlU2VyaWFsaXpl
ciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKLSAgICAgICAgS1VSTCB1cmw7Cisg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVzb3VyY2UoKTsKLSAgICAgICAgUmVzb3Vy
Y2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhKTsKKyAgICAgICAgUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIH07CiAKICAg
ICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Kik7CkBAIC02OCwyMiAr
NjgsMjIgQEAgcHVibGljOgogICAgIC8vIHZlY3RvciBpcyB0aGUgdG9wIGZyYW1lIHNlcmlhbGl6
ZWQgY29udGVudC4KICAgICB2b2lkIHNlcmlhbGl6ZShQYWdlKik7CiAKLSAgICBLVVJMIHVybEZv
ckJsYW5rRnJhbWUoRnJhbWUqKTsKKyAgICBVUkwgdXJsRm9yQmxhbmtGcmFtZShGcmFtZSopOwog
CiBwcml2YXRlOgogICAgIHZvaWQgc2VyaWFsaXplRnJhbWUoRnJhbWUqKTsKIAogICAgIC8vIFNl
cmlhbGl6ZXMgdGhlIHN0eWxlc2hlZXQgYmFjayB0byB0ZXh0IGFuZCBhZGRzIGl0IHRvIHRoZSBy
ZXNvdXJjZXMgaWYgVVJMIGlzIG5vdC1lbXB0eS4KICAgICAvLyBJdCBhbHNvIGFkZHMgYW55IHJl
c291cmNlcyBpbmNsdWRlZCBpbiB0aGF0IHN0eWxlc2hlZXQgKGluY2x1ZGluZyBhbnkgaW1wb3J0
ZWQgc3R5bGVzaGVldHMgYW5kIHRoZWlyIG93biByZXNvdXJjZXMpLgotICAgIHZvaWQgc2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOworICAgIHZvaWQg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgVVJMJik7CiAKLSAg
ICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBSZW5kZXJPYmplY3QqLCBj
b25zdCBLVVJMJik7CisgICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwg
UmVuZGVyT2JqZWN0KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0Zv
clByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIERvY3VtZW50Kik7CiAgICAgdm9p
ZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKIAogICAg
IFZlY3RvcjxSZXNvdXJjZT4qIG1fcmVzb3VyY2VzOwotICAgIExpc3RIYXNoU2V0PEtVUkw+IG1f
cmVzb3VyY2VVUkxzOwotICAgIEhhc2hNYXA8RnJhbWUqLCBLVVJMPiBtX2JsYW5rRnJhbWVVUkxz
OworICAgIExpc3RIYXNoU2V0PFVSTD4gbV9yZXNvdXJjZVVSTHM7CisgICAgSGFzaE1hcDxGcmFt
ZSosIFVSTD4gbV9ibGFua0ZyYW1lVVJMczsKICAgICB1bnNpZ25lZCBtX2JsYW5rRnJhbWVDb3Vu
dGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZy5jcHAKaW5kZXggNTM5ODc4Zi4uZjhmZmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggZWQyNDQ5Mi4uNjI3
Njk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNl
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGlt
aW5nLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9j
dW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5n
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggY2ViYzg5Ni4uY2MxY2FkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAog
I2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5LmgiCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBJ
bnZhbGlkUG9ydCA9IDA7CiBjb25zdCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotc3Rh
dGljIGJvb2wgc2NoZW1lUmVxdWlyZXNIb3N0KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29s
IHNjaGVtZVJlcXVpcmVzSG9zdChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBXZSBleHBlY3Qg
VVJMcyB3aXRoIHRoZXNlIHNjaGVtZXMgdG8gaGF2ZSBhdXRob3JpdHkgY29tcG9uZW50cy4gSWYg
dGhlCiAgICAgLy8gVVJMIGxhY2tzIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHdlIGdldCBjb25j
ZXJuZWQgYW5kIG1hcmsgdGhlIG9yaWdpbgpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBz
Y2hlbWVSZXF1aXJlc0hvc3QoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKIH0KIAotYm9vbCBT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYg
RU5BQkxFKEJMT0IpCiAgICAgLy8gRklYTUU6IEJsb2IgVVJMcyBkb24ndCBoYXZlIGlubmVyIFVS
THMuIFRoZWlyIGZvcm0gaXMgImJsb2I6PGlubmVyLW9yaWdpbj4vPFVVSUQ+Iiwgc28gdHJlYXRp
bmcgdGhlIHBhcnQgYWZ0ZXIgImJsb2I6IiBhcyBhIFVSTCBpcyBpbmNvcnJlY3QuCkBAIC03MCwx
NiArNzAsMTYgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3Qg
S1VSTCYgdXJsKQogLy8gSW4gZ2VuZXJhbCwgZXh0cmFjdGluZyB0aGUgaW5uZXIgVVJMIHZhcmll
cyBieSBzY2hlbWUuIEl0IGp1c3Qgc28gaGFwcGVucwogLy8gdGhhdCBhbGwgdGhlIFVSTCBzY2hl
bWVzIHdlIGN1cnJlbnRseSBzdXBwb3J0IHRoYXQgdXNlIGlubmVyIFVSTHMgZm9yIHRoZWlyCiAv
LyBzZWN1cml0eSBvcmlnaW4gY2FuIGJlIHBhcnNlZCB1c2luZyB0aGlzIGFsZ29yaXRobS4KLUtV
UkwgU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCitVUkwg
U2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBp
ZiAodXJsLmlubmVyVVJMKCkpCiAgICAgICAgIHJldHVybiAqdXJsLmlubmVyVVJMKCk7CiAgICAg
Ly8gRklYTUU6IFVwZGF0ZSB0aGlzIGNhbGxzaXRlIHRvIHVzZSB0aGUgaW5uZXJVUkwgbWVtYmVy
IGZ1bmN0aW9uIHdoZW4KICAgICAvLyB3ZSBmaW5pc2ggaW1wbGVtZW50aW5nIGl0LgotICAgIHJl
dHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5w
YXRoKCkpKTsKKyAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogI2lm
IEVOQUJMRShCTE9CKQogICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQpAQCAtOTAsMTgg
KzkwLDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmln
aW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgYm9vbCBzaG91
bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3Vs
ZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIHVud3JhcCB0aGUgVVJMIGZ1cnRoZXI/Ci0gICAgS1VSTCBpbm5lclVSTCA9IFNlY3VyaXR5
T3JpZ2luOjpzaG91bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJ
bm5lclVSTCh1cmwpIDogdXJsOworICAgIFVSTCBpbm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpz
aG91bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1
cmwpIDogdXJsOwogCiAgICAgLy8gRklYTUU6IENoZWNrIHdoZXRoZXIgaW5uZXJVUkwgaXMgdmFs
aWQuCiAKICAgICAvLyBGb3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHByb2JhYmx5IG1pc3Bh
cnNlZCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCi0gICAgLy8gVGhpcyBp
cyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIEtVUkwgcGFyc2luZywg
YW5kIGZvciBuZXR3b3JrIGJhY2stZW5kcyB0aGF0IHBhcnNlIFVSTHMgZGlmZmVyZW50bHksCisg
ICAgLy8gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIFVS
TCBwYXJzaW5nLCBhbmQgZm9yIG5ldHdvcmsgYmFjay1lbmRzIHRoYXQgcGFyc2UgVVJMcyBkaWZm
ZXJlbnRseSwKICAgICAvLyBhbmQgY291bGQgbWlzaW50ZXJwcmV0IGFub3RoZXIgY29tcG9uZW50
IGZvciBob3N0bmFtZS4KICAgICBpZiAoc2NoZW1lUmVxdWlyZXNIb3N0KGlubmVyVVJMKSAmJiBp
bm5lclVSTC5ob3N0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNyw3
ICsxMTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4o
Y29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgp
ID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCku
aXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9y
dCgpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkK
IHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNhY2hlZE9yaWdpbiA9IGdldENhY2hlZE9y
aWdpbih1cmwpOwogICAgIGlmIChjYWNoZWRPcmlnaW4uZ2V0KCkpCkBAIC0yMTYsNyArMjE2LDcg
QEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5l
d0RvbWFpbikKICAgICBtX2RvbWFpbiA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQogCi1ib29sIFNl
Y3VyaXR5T3JpZ2luOjppc1NlY3VyZShjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3Jp
Z2luOjppc1NlY3VyZShjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJbnZhbGlkIFVSTHMgYXJl
IHNlY3VyZSwgYXMgYXJlIFVSTHMgd2hpY2ggaGF2ZSBhIHNlY3VyZSBwcm90b2NvbC4KICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNTZWN1cmUodXJsLnByb3RvY29sKCkpKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2VjdXJp
dHlPcmlnaW46OnBhc3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIChtX2ZpbGVQYXRoID09IG90aGVyLT5tX2ZpbGVQYXRoKTsKIH0KIAot
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewog
ICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTQs
NyArMzE0LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1
cmwpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjp0
YWludHNDYW52YXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6
dGFpbnRzQ2FudmFzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChjYW5SZXF1ZXN0
KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGRy
YWdJbml0aWF0b3IpIGNvbgogLy8gaHR0cCBvciBodHRwcywgb3RoZXJ3aXNlIHdlIGlnbm9yZSB0
aGUgbmVzdGluZyBmb3IgdGhlIHB1cnBvc2Ugb2YgYSBzZWN1cml0eSBjaGVjay4gV2UgbmVlZAog
Ly8gYSBmYWNpbGl0eSBmb3IgcmVnaXN0ZXJpbmcgbmVzdGluZyBzY2hlbWVzLCBhbmQgc29tZSBn
ZW5lcmFsaXplZCBsb2dpYyBmb3IgdGhlbS4KIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJl
bW92ZWQgYXMgYW4gb3V0Y29tZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjkxOTYKLXN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZh
bWlseShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9j
b2xJbkhUVFBGYW1pbHkoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAgICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVl
ZCIsIGZhbHNlKSkKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVz
dGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB8fCB1cmxT
dHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcu
c3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoiLCBmYWxzZSk7CiB9CiAKLWJvb2wgU2VjdXJp
dHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0
eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAobV91
bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDk2LDcgKzQ5Niw3IEBA
IFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogCiBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShLVVJMKEtVUkwoKSwgb3JpZ2luU3RyaW5nKSk7CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoVVJMKFVSTCgpLCBvcmlnaW5TdHJpbmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNo
YXIgc2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwpAQCAtNTA2LDM0ICs1MDYsMzQgQEAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3QKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFy
YXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2Vw
YXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsK
ICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAg
ICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2Vw
YXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsK
ICAgICAgICAgCiAgICAgLy8gRW5zdXJlIHRoZXJlIHdlcmUgYXQgbGVhc3QgMiBzZXBhcmF0b3Ig
Y2hhcmFjdGVycy4gU29tZSBob3N0bmFtZXMgb24gaW50cmFuZXRzIGhhdmUKICAgICAvLyB1bmRl
cnNjb3JlcyBpbiB0aGVtLCBzbyB3ZSdsbCBhc3N1bWUgdGhhdCBhbnkgYWRkaXRpb25hbCB1bmRl
cnNjb3JlcyBhcmUgcGFydCBvZiB0aGUgaG9zdC4KICAgICBpZiAoc2VwYXJhdG9yMSA9PSBzZXBh
cmF0b3IyKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlv
biBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRP
a2F5OwogICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRl
bnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwogICAg
IGJvb2wgcG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5n
dGgoKSAtIDEpOwogICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAg
IAogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJl
dHVybiBjcmVhdGUoS1VSTCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAg
ICAgIAogICAgIC8vIFNwbGl0IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCiAgICAgU3RyaW5n
IHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsK
ICAgICBTdHJpbmcgaG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9y
MSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwoS1VS
TCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQp
ICsgIi8iKSk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIg
KyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KQpAQCAtNTQxLDcgKzU0MSw3
IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QKICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1h
eEFsbG93ZWRQb3J0KQogICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlKCk7CiAgICAgU3RyaW5n
IGRlY29kZWRIb3N0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwotICAgIHJldHVy
biBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3Ry
aW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwg
cHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIv
IikpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNv
bnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDg1NzJmNGMuLmQxMTg2
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9y
aWdpbj4gewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJsb2Nr
QWxsU3RvcmFnZQogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gY3JlYXRlKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gY3JlYXRlKGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBjcmVhdGVVbmlxdWUoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAt
NjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgLy8gR2VuZXJhbGx5LCB3ZSBhZGQgVVJMIHNjaGVt
ZXMgdG8gdGhpcyBsaXN0IHdoZW4gV2ViS2l0IHN1cHBvcnQgdGhlbS4gRm9yCiAgICAgLy8gZXhh
bXBsZSwgd2UgZG9uJ3QgaW5jbHVkZSB0aGUgImphciIgc2NoZW1lLCBldmVuIHRob3VnaCBGaXJl
Zm94CiAgICAgLy8gdW5kZXJzdGFuZHMgdGhhdCAiamFyIiB1c2VzIGFuIGlubmVyIFVSTCBmb3Ig
aXQncyBzZWN1cml0eSBvcmlnaW4uCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwo
Y29uc3QgS1VSTCYpOwotICAgIHN0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJM
Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJik7CisgICAg
c3RhdGljIFVSTCBleHRyYWN0SW5uZXJVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBDcmVhdGUg
YSBkZWVwIGNvcHkgb2YgdGhpcyBTZWN1cml0eU9yaWdpbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVs
CiAgICAgLy8gd2hlbiBtYXJzaGFsbGluZyBhIFNlY3VyaXR5T3JpZ2luIHRvIGFub3RoZXIgdGhy
ZWFkLgpAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEg
Z2l2ZW4gVVJMIGlzIHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8v
IG93biBwcm90b2NvbCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMg
ImlubmVyIFVSTCIKICAgICAvLyBQcm90b2NvbHMgbGlrZSBibG9iOiBhbmQgZmlsZXN5c3RlbTog
ZmFsbCBpbnRvIHRoaXMgbGF0dGVyIGNhdGVnb3J5LgotICAgIHN0YXRpYyBib29sIGlzU2VjdXJl
KGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBpc1NlY3VyZShjb25zdCBVUkwmKTsKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBzY3JpcHQgb2Jq
ZWN0cyBpbiB0aGUgZ2l2ZW4KICAgICAvLyBTZWN1cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNh
bGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxsb3dpbmcKQEAgLTk5LDEyICs5OSwxMiBAQCBwdWJs
aWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHJlYWQg
Y29udGVudCByZXRyaWV2ZWQgZnJvbQogICAgIC8vIHRoZSBnaXZlbiBVUkwuIEZvciBleGFtcGxl
LCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGlzc3VpbmcKICAgICAvLyBYTUxIdHRwUmVxdWVz
dHMuCi0gICAgYm9vbCBjYW5SZXF1ZXN0KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNh
blJlcXVlc3QoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgZHJh
d2luZyBhbiBpbWFnZSBmcm9tIHRoaXMgVVJMIHRhaW50cyBhIGNhbnZhcyBmcm9tCiAgICAgLy8g
dGhpcyBzZWN1cml0eSBvcmlnaW4uIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVm
b3JlCiAgICAgLy8gZHJhd2luZyBhbiBpbWFnZSBvbnRvIGFuIEhUTUwgY2FudmFzIGVsZW1lbnQg
d2l0aCB0aGUgZHJhd0ltYWdlIEFQSS4KLSAgICBib29sIHRhaW50c0NhbnZhcyhjb25zdCBLVVJM
JikgY29uc3Q7CisgICAgYm9vbCB0YWludHNDYW52YXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFn
IGNvbnRlbnQgZnJvbSB0aGUKICAgICAvLyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRo
aXMgZnVuY3Rpb24gYmVmb3JlIGFsbG93aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExNCw3ICsxMTQs
NyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3Bs
YXkgY29udGVudCBmcm9tIHRoZSBnaXZlbiBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1l
IG9yIGFzIGFuIGltYWdlKS4gRm9yIGV4YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90
CiAgICAgLy8gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0g
ICAgYm9vbCBjYW5EaXNwbGF5KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhbkRpc3Bs
YXkoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1
cml0eU9yaWdpbiBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMsIHN1Y2gKICAgICAvLyBhcyBpbWFn
ZXMsIGlmcmFtZXMsIGFuZCBzdHlsZSBzaGVldHMsIGFuZCBjYW4gbGluayB0byBsb2NhbCBVUkxz
LgpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTZWN1cml0eU9y
aWdpbigpOwotICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBl
eHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmKTsKICAgICBleHBsaWNpdCBTZWN1cml0
eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0
aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKaW5kZXggNDU0Y2Y4My4uOTZiODc1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZu
ZGVmIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eVBvbGljeS5jcHAKaW5kZXggNWIzNmY0Zi4uYjI0Y2E5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSAiT3Jp
Z2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNyAr
NTAsNyBAQCBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogICAgIHJl
dHVybiBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhp
ZGVSZWZlcnJlcihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitib29s
IFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJv
dG9jb2xJcyhyZWZlcnJlciwgImh0dHBzIik7CiAgICAgYm9vbCByZWZlcnJlcklzV2ViVVJMID0g
cmVmZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cCIpOwpAQCAt
NjYsNyArNjYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNT
ZWN1cmVVUkw7CiB9CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVy
cmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBTZWN1cml0
eVBvbGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZl
T3JpZ2luLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6
OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3Jp
Z2luLCBjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJM
V2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQo
YWN0aXZlT3JpZ2luLCB0YXJnZXRPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5oCmluZGV4IDMzN2VlYzIuLmIyNjljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFNl
Y3VyaXR5UG9saWN5IHsKQEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVHJ1ZSBp
ZiB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIHRoZQogICAgIC8v
IFJlZmVycmVyUG9saWN5RGVmYXVsdC4gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVmZXJyZXIg
aGVhZGVyLCB5b3UKICAgICAvLyBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIgaW5z
dGVhZC4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJl
cihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIC8vIFJldHVybnMg
dGhlIHJlZmVycmVyIG1vZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcmVmZXJyZXIgcG9saWN5IGZv
ciBhCiAgICAgLy8gbmF2aWdhdGlvbiB0byBhIGdpdmVuIFVSTC4gSWYgdGhlIHJlZmVycmVyIHJl
dHVybmVkIGlzIGVtcHR5LCB0aGUKICAgICAvLyByZWZlcnJlciBoZWFkZXIgc2hvdWxkIGJlIG9t
aXR0ZWQuCi0gICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVy
UG9saWN5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgc3RhdGlj
IFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVudW0gTG9jYWxMb2FkUG9saWN5IHsK
ICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlvbiBvbiBsb2Nh
bCBsb2Fkcy4KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0
ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hp
dGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzA0MzJkMC4uMDRmYmIzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFNldHRp
bmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKICAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lk
IFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IEtVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pCit2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
KGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKIHsKICAgICBpZiAobV91c2VyU3R5
bGVTaGVldExvY2F0aW9uID09IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkOGI3Y2E2Li5lZGY2OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9y
VHlwZXMuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5nc01hY3Jvcy5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCkBAIC0xNTAsOCArMTUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCBkbnNQcmVm
ZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsg
fQogCi0gICAgICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJik7
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KKyAgICAgICAgdm9pZCBzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOworICAgICAgICBjb25zdCBVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247
IH0KIAogICAgICAgICB2b2lkIHNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wp
OwogICAgICAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7
IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrOyB9CkBAIC0yNzMsNyArMjcz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICAg
ICAgU3RyaW5nIG1fbWVkaWFUeXBlT3ZlcnJpZGU7Ci0gICAgICAgIEtVUkwgbV91c2VyU3R5bGVT
aGVldExvY2F0aW9uOworICAgICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogICAg
ICAgICBSZWZQdHI8Rm9udEdlbmVyaWNGYW1pbGllcz4gbV9mb250R2VuZXJpY0ZhbWlsaWVzOwog
ICAgICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJs
b2NraW5nUG9saWN5OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYzdkODE5Yi4uZmRhZWQx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApA
QCAtMjYsMTIgKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxhY2tsaXN0KQorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJu
cyhjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCkKIHsKICAgICAvLyBJbiBvcmRlciBmb3IgYSBVUkwg
dG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8gYmUgcHJlc2VudCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBu
b3QgcHJlc2VudCBpbiB0aGUgYmxhY2tsaXN0LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHdoaXRl
bGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVSTHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIHdoaXRl
bGlzdC4KQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFy
c2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVz
ZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9v
bCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXMoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAog
ewogICAgIGlmIChtX2ludmFsaWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0
ZXN0KSBjb25zdAogICAgIHJldHVybiBtYXRjaGVzUGF0aCh0ZXN0KTsKIH0KIAotYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNIb3N0KGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citi
b29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBj
b25zdAogewogICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9IHRlc3QuaG9zdCgpOwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShob3N0LCBtX2hvc3QpKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0cnVj
dCBNYXRjaFRlc3RlcgogICAgIH0KIH07CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpt
YXRjaGVzUGF0aChjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVudFVSTFBh
dHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKIHsKICAgICBNYXRjaFRl
c3RlciBtYXRjaChtX3BhdGgsIHRlc3QucGF0aCgpKTsKICAgICByZXR1cm4gbWF0Y2gudGVzdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKaW5kZXggMGRl
MDU1ZS4uYTg2ODkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0
dGVybi5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsKIHB1Ymxp
YzoKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gIW1faW52YWxpZDsgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKSBj
b25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBjb25zdCBT
dHJpbmcmIHNjaGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CkBAIC01MywxMyArNTMsMTMgQEAg
cHVibGljOgogCiAgICAgYm9vbCBtYXRjaFN1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX21h
dGNoU3ViZG9tYWluczsgfQogICAgIAotICAgIHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGJsYWNrbGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNv
bnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibGFja2xpc3QpOwogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2UoY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKTsKIAotICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29uc3QgS1VSTCYpIGNvbnN0
OwotICAgIGJvb2wgbWF0Y2hlc1BhdGgoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgbWF0
Y2hlc0hvc3QoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUGF0aChjb25zdCBV
UkwmKSBjb25zdDsKIAogICAgIGJvb2wgbV9pbnZhbGlkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlw
dC5oCmluZGV4IDhiYmZhNDkuLjhhMmI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlclNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCkBA
IC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFVzZXJTY3JpcHRfaAogI2RlZmluZSBVc2VyU2NyaXB0
X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2Vy
Q29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNr
bGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAgICBVc2VyU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlz
dCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRp
bWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1l
cykKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAg
ICAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlzdCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2U7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAg
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFj
a2xpc3Q7IH0KICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29u
c3QgeyByZXR1cm4gbV9pbmplY3Rpb25UaW1lOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9ibGFja2xpc3Q7CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rp
b25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCmluZGV4IGZjNjdkN2EuLjcy
MzQ0NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI2LDcgKzI2LDcg
QEAKICNpZm5kZWYgVXNlclN0eWxlU2hlZXRfaAogI2RlZmluZSBVc2VyU3R5bGVTaGVldF9oCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
YWNrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0
eWxlTGV2ZWwgbGV2ZWwpCisgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVj
dGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCkKICAgICAgICAgOiBtX3NvdXJjZShzb3Vy
Y2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlz
dCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYg
c291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyBy
ZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29u
c3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxh
Y2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZy
YW1lczsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fc291cmNlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFZlY3RvcjxT
dHJpbmc+IG1fd2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0OwogICAg
IFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAyNzUwZTJlLi5hN2Ez
NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVm
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3Bw
CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3Rl
bURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoQ2xpcGJvYXJkKiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQor
dm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCos
IEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRkZTI3ZS4uMTcw
ZTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cApAQCAtNjksNyArNjksNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0
ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIGNsaXBib2FyZC0+
cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDY5ZWJkNmIuLmU3
YjhiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1t
CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3Rl
bURyYWcoKQogICAgICAgICBkcmFnRW5kZWQoKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6
ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdD
b250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQs
IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewogICAgIG1fY2xpZW50LmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjbGlwYm9hcmQtPnBhc3Rl
Ym9hcmQoKS5uYW1lKCksIGtpdChlbGVtZW50KSwgdXJsLCBsYWJlbCwgZWxlbWVudC0+ZG9jdW1l
bnQoKS5mcmFtZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJh
Z0NvbnRyb2xsZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVy
UXQuY3BwCmluZGV4IGNkOTYzMTAuLjUxMGQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9x
dC9EcmFnQ29udHJvbGxlclF0LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERy
YWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVs
KQogewogICAgIGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJs
LCBsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldp
bi5jcHAKaW5kZXggYjdiZmVhMS4uZGYyZjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0RyYWdDb250cm9sbGVyV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIERyYWdDb250
cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJv
bGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lk
IERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlw
Ym9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxh
YmVsKQogewogICAgIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQgPSBjbGlwYm9hcmQtPnBhc3RlYm9h
cmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lz
dGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBh
ZjVjNTEyLi4zYjE2ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3lu
Y0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDU4ICs3Miw1OCBAQCBwdWJsaWM6CiAg
ICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGgu
CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0g
ICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVz
dFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBDb3Bp
ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGguCiAgICAgLy8g
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhl
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVzdFBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBEZWxldGVzIGEgZmls
ZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRv
IHRyeSB0byByZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWN1
cnNpdmVseSBkZWxldGVzIGEgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KSA9IDA7CiAKICAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRo
ZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0
aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAg
IC8vIENyZWF0ZXMgYSBmaWxlIGF0IGEgZ2l2ZW4gcGF0aC4gIElmIGV4Y2x1c2l2ZSBmbGFnIGlz
IHRydWUsIGl0IGZhaWxzIGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLgogICAgIC8vIEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQg
YSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhl
IHBhdGggYWxyZWFkeSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlz
IGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25z
dCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGEgZ2l2ZW4g
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBj
YWxsZWQgaWYgdGhlIGZpbGUgZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVF
eGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNr
cyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5
IGV4aXN0cy4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBj
YWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gUmVhZHMgZGlyZWN0
b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgcGF0aC4KICAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyeSgpIGlzIGNhbGxlZCB3aGVu
IGVhY2ggZGlyZWN0b3J5IGVudHJ5IGlzIGNhbGxlZC4gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcygpIGlzIGNhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRp
cmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCi0gICAgdmlydHVh
bCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rvcnko
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0g
MDsKIAogICAgIC8vIENyZWF0ZXMgYW4gQXN5bmNGaWxlV3JpdGVyIGZvciBhIGdpdmVuIGZpbGUg
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0
ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0ZXIgaXMgY3JlYXRlZCBzdWNjZXNz
ZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2Fs
bGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxlIGFuZCBy
ZWFkIGl0cyBtZXRhZGF0YSBmb3IgYSBuZXcgRmlsZSBvYmplY3QuCiAgICAgLy8gSW4gbG9jYWwg
ZmlsZXN5c3RlbSBjYXNlcyB0aGUgYmFja2VuZCBtYXkgc2ltcGx5IHJldHVybiB0aGUgbWV0YWRh
dGEgb2YgdGhlIGZpbGUgaXRzZWxmIChhcyB3ZWxsIGFzIHJlYWRNZXRhZGF0YSBkb2VzKSwKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICAvLwogICAgIC8vIE5vdGU6IHRo
ZSByZXR1cm5lZCBtZXRhZGF0YSBpbmZvIGlzIGNhY2hlZCBpbiB0aGUgRmlsZSBvYmplY3QgZm9y
IG5vbi1yZWd1bGFyIGZpbGVzeXN0ZW0gdHlwZXMgKG5laXRoZXIgVGVtcG9yYXJ5IG5vciBQZXJz
aXN0ZW50KS4gVGhlIHBvcnQgY291bGQgcmV0dXJuIHZhbGlkIG1ldGFkYXRhIGlmIGl0IHdhbnRz
IEZpbGUgb2JqZWN0IHRvIGNhY2hlIG1ldGFkYXRhIChlLmcuIGlmIHRoZSBmaWxlIGJvZHkgaXMg
b24gYSByZW1vdGUgc2VydmVyKSwgYnV0IG90aGVyd2lzZSBzaG91bGQgTk9UIHJldHVybiB2YWxp
ZCBtZXRhZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRl
eCAwMWJlZTg5Li41MTk0ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICAvLyBDYWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBmaWxlIHN5c3RlbSBpcyBvcGVuZWQuCi0gICAg
dmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywg
Y29uc3QgS1VSTCYgLyogcm9vdFVSTCAqLywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywgY29uc3QgVVJMJiAvKiByb290VVJMICovLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAog
ICAgIC8vIENhbGxlZCB3aGVuIGEgZmlsZSBtZXRhZGF0YSBpcyByZWFkIHN1Y2Nlc3NmdWxseS4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0
cmF0ZWd5LmgKaW5kZXggYzBlNmVmMi4uNjU0MDU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDE4ICszMywxOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNl
c3Npb247CiBzdHJ1Y3QgQ29va2llOwogCiBjbGFzcyBDb29raWVzU3RyYXRlZ3kgewogcHVibGlj
OgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
KSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwg
VmVjdG9yPENvb2tpZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYs
IFZlY3RvcjxDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Db29raWVzU3RyYXRlZ3ko
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcApp
bmRleCBjMmRiNjNjLi4yZTg2MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDcm9zc1Ro
cmVhZENvcGllci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46
OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46OmNvcHkoY29u
c3QgS1VSTCYgdXJsKQorQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVVJMPjo6
VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+Ojpjb3B5KGNvbnN0
IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYjFjMTRlYi4uYWUyZWYyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xh
c3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlOwpAQCAtMTIwLDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBLVVJMPiB7Ci0gICAgICAgIHR5cGVkZWYgS1VSTCBUeXBlOwot
ICAgICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IEtVUkwmKTsKKyAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+IHsKKyAgICAgICAg
dHlwZWRlZiBVUkwgVHlwZTsKKyAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBVUkwmKTsK
ICAgICB9OwogCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZh
bHNlLCBmYWxzZSwgU3RyaW5nPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAy
N2RkZDZlLi41ZTcxMDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTY5LDcg
KzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmFuZ2U7CiAKIGVu
dW0gRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKaW5kZXggMWNhNTEyZC4uYjgxYWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNp
emUoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiB9CiAKICNp
ZiAhUExBVEZPUk0oTUFDKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZvbnRS
ZW5kZXJpbmdNb2RlKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwg
Y29uc3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IDdjMjI4NWUuLmZhYjk3NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgc3Ry
dWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFn
ZVJlZjsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9y
Q2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRl
cmluZ01vZGUpOworICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKICAgICB2b2lkIGRlbGV0
ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uY3BwCmluZGV4IDVjODE3ZWQuLmFkMTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgaW50IEZpbGVTdHJlYW06OnJlYWQo
Y2hhciogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKICAgICByZXR1cm4gYnl0ZXNSZWFkOwogfQog
Ci1pbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYsIGxvbmcgbG9uZywgaW50KQoraW50
IEZpbGVTdHJlYW06OndyaXRlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZywgaW50KQogewogICAgIC8v
IEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggYmFhMzk0OC4uZWVlYWEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIEFsbCBtZXRob2RzIGFyZSBzeW5j
aHJvbm91cy4KIGNsYXNzIEZpbGVTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3RyZWFt
PiB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdyaXRlcyBhIGJsb2IgdG8g
dGhlIGZpbGUuCiAgICAgLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYmVpbmcgd3JpdHRlbiBv
biBzdWNjZXNzLiAtMSBvdGhlcndpc2UuCi0gICAgaW50IHdyaXRlKGNvbnN0IEtVUkwmIGJsb2JV
UkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgaW50IHdyaXRlKGNvbnN0
IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8v
IFRydW5jYXRlcyB0aGUgZmlsZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAgIC8vIFJl
dHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTAwYWMzLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTkzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVkZSAiRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZy5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgotCi0jaWYgVVNFKElDVV9VTklDT0RFKQotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNl
bmRpZgotCi0vLyBGSVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBv
cGVyYXRvciBvbiBTdHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9w
ZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3Ig
Y2hhbmdlIHRoaXMgdG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10
eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hh
ciwgNTEyPiBVQ2hhckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxp
ZFBvcnROdW1iZXIgPSAweEZGRkU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnRO
dW1iZXIgPSAweEZGRkY7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKFVDaGFyIGNoYXJhY3RlciwgY2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17Ci0gICAgQVNT
RVJUKGlzQVNDSUlMb3dlcihsb3dlcmNhc2VMZXR0ZXIpKTsKLSAgICByZXR1cm4gKGNoYXJhY3Rl
ciB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgd3NT
Y2hlbWVbXSA9IHsndycsICdzJ307Ci1zdGF0aWMgY29uc3QgY2hhciBmdHBTY2hlbWVbXSA9IHsn
ZicsICd0JywgJ3AnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGZ0cFBvcnRbXSA9IHsnMicsICcxJ307
Ci1zdGF0aWMgY29uc3QgY2hhciB3c3NTY2hlbWVbXSA9IHsndycsICdzJywgJ3MnfTsKLXN0YXRp
YyBjb25zdCBjaGFyIGZpbGVTY2hlbWVbXSA9IHsnZicsICdpJywgJ2wnLCAnZSd9Owotc3RhdGlj
IGNvbnN0IGNoYXIgaHR0cFNjaGVtZVtdID0geydoJywgJ3QnLCAndCcsICdwJ307Ci1zdGF0aWMg
Y29uc3QgY2hhciBodHRwUG9ydFtdID0geyc4JywgJzAnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0
dHBzU2NoZW1lW10gPSB7J2gnLCAndCcsICd0JywgJ3AnLCAncyd9Owotc3RhdGljIGNvbnN0IGNo
YXIgaHR0cHNQb3J0W10gPSB7JzQnLCAnNCcsICczJ307Ci1zdGF0aWMgY29uc3QgY2hhciBnb3Bo
ZXJTY2hlbWVbXSA9IHsnZycsICdvJywgJ3AnLCAnaCcsICdlJywgJ3InfTsKLXN0YXRpYyBjb25z
dCBjaGFyIGdvcGhlclBvcnRbXSA9IHsnNycsICcwJ307Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c0xldHRlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxl
dHRlcikKLXsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOwotICAg
IHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCi1lbnVt
IFVSTENoYXJhY3RlckNsYXNzZXMgewotICAgIC8vIGFscGhhIAotICAgIFNjaGVtZUZpcnN0Q2hh
ciA9IDEgPDwgMCwKLQotICAgIC8vICggYWxwaGEgfCBkaWdpdCB8ICIrIiB8ICItIiB8ICIuIiAp
Ci0gICAgU2NoZW1lQ2hhciA9IDEgPDwgMSwKLQotICAgIC8vIG1hcmsgICAgICAgID0gIi0iIHwg
Il8iIHwgIi4iIHwgIiEiIHwgIn4iIHwgIioiIHwgIiciIHwgIigiIHwgIikiCi0gICAgLy8gdW5y
ZXNlcnZlZCAgPSBhbHBoYW51bSB8IG1hcmsKLSAgICAvLyAoIHVucmVzZXJ2ZWQgfCBlc2NhcGVk
IHwgIjsiIHwgIjoiIHwgIiYiIHwgIj0iIHwgIisiIHwgIiQiIHwgIiwiICkKLSAgICBVc2VySW5m
b0NoYXIgPSAxIDw8IDIsCi0KLSAgICAvLyBhbG51bSB8ICIuIiB8ICItIiB8ICIlIgotICAgIC8v
IFRoZSBhYm92ZSBpcyB3aGF0IHRoZSBzcGVjaWZpY2F0aW9uIHNheXMsIGJ1dCB3ZSBhcmUgbGVu
aWVudCB0bwotICAgIC8vIG1hdGNoIGV4aXN0aW5nIHByYWN0aWNlIGFuZCBhbHNvIGFsbG93Ogot
ICAgIC8vICJfIgotICAgIEhvc3RuYW1lQ2hhciA9IDEgPDwgMywKLQotICAgIC8vIGhleGRpZ2l0
IHwgIjoiIHwgIiUiCi0gICAgSVB2NkNoYXIgPSAxIDw8IDQsCi0KLSAgICAvLyAiIyIgfCAiPyIg
fCAiLyIgfCBudWwKLSAgICBQYXRoU2VnbWVudEVuZENoYXIgPSAxIDw8IDUsCi0KLSAgICAvLyBu
b3QgYWxsb3dlZCBpbiBwYXRoCi0gICAgQmFkQ2hhciA9IDEgPDwgNgotfTsKLQotc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewotICAgIC8qIDAg
bnVsICovIFBhdGhTZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKLSAgICAv
KiAyIHN0eCAqLyBCYWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLAotICAgIC8qIDQgZW90
ICovIEJhZENoYXIsICAgIC8qIDUgZW5xICovIEJhZENoYXIsICAgIC8qIDYgYWNrICovIEJhZENo
YXIsICAgIC8qIDcgYmVsICovIEJhZENoYXIsCi0gICAgLyogOCBicyAqLyBCYWRDaGFyLCAgICAg
LyogOSBodCAqLyBCYWRDaGFyLCAgICAgLyogMTAgbmwgKi8gQmFkQ2hhciwgICAgLyogMTEgdnQg
Ki8gQmFkQ2hhciwKLSAgICAvKiAxMiBucCAqLyBCYWRDaGFyLCAgICAvKiAxMyBjciAqLyBCYWRD
aGFyLCAgICAvKiAxNCBzbyAqLyBCYWRDaGFyLCAgICAvKiAxNSBzaSAqLyBCYWRDaGFyLAotICAg
IC8qIDE2IGRsZSAqLyBCYWRDaGFyLCAgIC8qIDE3IGRjMSAqLyBCYWRDaGFyLCAgIC8qIDE4IGRj
MiAqLyBCYWRDaGFyLCAgIC8qIDE5IGRjMyAqLyBCYWRDaGFyLAotICAgIC8qIDIwIGRjNCAqLyBC
YWRDaGFyLCAgIC8qIDIxIG5hayAqLyBCYWRDaGFyLCAgIC8qIDIyIHN5biAqLyBCYWRDaGFyLCAg
IC8qIDIzIGV0YiAqLyBCYWRDaGFyLAotICAgIC8qIDI0IGNhbiAqLyBCYWRDaGFyLCAgIC8qIDI1
IGVtICovIEJhZENoYXIsICAgIC8qIDI2IHN1YiAqLyBCYWRDaGFyLCAgIC8qIDI3IGVzYyAqLyBC
YWRDaGFyLAotICAgIC8qIDI4IGZzICovIEJhZENoYXIsICAgIC8qIDI5IGdzICovIEJhZENoYXIs
ICAgIC8qIDMwIHJzICovIEJhZENoYXIsICAgIC8qIDMxIHVzICovIEJhZENoYXIsCi0gICAgLyog
MzIgc3AgKi8gQmFkQ2hhciwgICAgLyogMzMgICEgKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDM0
ICAiICovIEJhZENoYXIsICAgIC8qIDM1ICAjICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENo
YXIsCi0gICAgLyogMzYgICQgKi8gVXNlckluZm9DaGFyLCAgICAvKiAzNyAgJSAqLyBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciB8IEJhZENoYXIsCi0gICAgLyogMzggICYg
Ki8gVXNlckluZm9DaGFyLCAgICAvKiAzOSAgJyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDAg
ICggKi8gVXNlckluZm9DaGFyLCAgICAvKiA0MSAgKSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyog
NDIgICogKi8gVXNlckluZm9DaGFyLCAgICAvKiA0MyAgKyAqLyBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyLAotICAgIC8qIDQ0ICAsICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0NSAgLSAqLyBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDQ2ICAuICov
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAg
ICAvKiA0NyAgLyAqLyBQYXRoU2VnbWVudEVuZENoYXIsCi0gICAgLyogNDggIDAgKi8gU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA0
OSAgMSAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNo
YXIsICAgIAotICAgIC8qIDUwICAyICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTEgIDMgKi8gU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDUyICA0ICovIFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyog
NTMgIDUgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDU0ICA2ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTUgIDcgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU2ICA4ICovIFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTcg
IDkgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFy
LAotICAgIC8qIDU4ICA6ICovIFVzZXJJbmZvQ2hhciB8IElQdjZDaGFyLCAgICAvKiA1OSAgOyAq
LyBVc2VySW5mb0NoYXIsCi0gICAgLyogNjAgIDwgKi8gQmFkQ2hhciwgICAgLyogNjEgID0gKi8g
VXNlckluZm9DaGFyLAotICAgIC8qIDYyICA+ICovIEJhZENoYXIsICAgIC8qIDYzICA/ICovIFBh
dGhTZWdtZW50RW5kQ2hhciB8IEJhZENoYXIsCi0gICAgLyogNjQgIEAgKi8gMCwKLSAgICAvKiA2
NSAgQSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsICAgIAotICAgIC8qIDY2ICBCICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
LSAgICAvKiA2NyAgQyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjggIEQgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDY5ICBFICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA3MCAgRiAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsCi0gICAgLyogNzEgIEcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3MiAgSCAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8q
IDczICBJICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIsCi0gICAgLyogNzQgIEogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NSAgSyAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAg
IC8qIDc2ICBMICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzcgIE0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3OCAgTiAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAot
ICAgIC8qIDc5ICBPICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODAgIFAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4MSAgUSAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LAotICAgIC8qIDgyICBSICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODMgIFMgKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NCAgVCAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyLAotICAgIC8qIDg1ICBVICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODYgIFYgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NyAg
VyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAotICAgIC8qIDg4ICBYICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDg5ICBZICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyog
OTAgIFogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwKLSAgICAvKiA5MSAgWyAqLyAwLAotICAgIC8qIDkyICBcICovIDAsICAgIC8q
IDkzICBdICovIDAsCi0gICAgLyogOTQgIF4gKi8gMCwKLSAgICAvKiA5NSAgXyAqLyBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogOTYgIGAgKi8gMCwKLSAgICAvKiA5NyAgYSAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyIHwgSVB2NkNoYXIsCi0gICAgLyogOTggIGIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA5
OSAgYyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogMTAwICBkICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0g
ICAgLyogMTAxICBlICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiAxMDIgIGYgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLCAKLSAgICAvKiAxMDMgIGcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDQgIGggKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyog
MTA1ICBpICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIsCi0gICAgLyogMTA2ICBqICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDEwNyAgayAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAot
ICAgIC8qIDEwOCAgbCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMDkgIG0gKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTAgIG4g
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciwgCi0gICAgLyogMTExICBvICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTEyICBwICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8q
IDExMyAgcSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAotICAgIC8qIDExNCAgciAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMTUgIHMgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiAxMTYgIHQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTE3ICB1ICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE4ICB2
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsIAotICAgIC8qIDExOSAgdyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEyMCAgeCAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAv
KiAxMjEgIHkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMjIgIHogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTIzICB7ICovIDAs
Ci0gICAgLyogMTI0ICB8ICovIDAsICAgLyogMTI1ICB9ICovIDAsICAgLyogMTI2ICB+ICovIFVz
ZXJJbmZvQ2hhciwgICAvKiAxMjcgZGVsICovIEJhZENoYXIsCi0gICAgLyogMTI4ICovIEJhZENo
YXIsIC8qIDEyOSAqLyBCYWRDaGFyLCAvKiAxMzAgKi8gQmFkQ2hhciwgLyogMTMxICovIEJhZENo
YXIsCi0gICAgLyogMTMyICovIEJhZENoYXIsIC8qIDEzMyAqLyBCYWRDaGFyLCAvKiAxMzQgKi8g
QmFkQ2hhciwgLyogMTM1ICovIEJhZENoYXIsCi0gICAgLyogMTM2ICovIEJhZENoYXIsIC8qIDEz
NyAqLyBCYWRDaGFyLCAvKiAxMzggKi8gQmFkQ2hhciwgLyogMTM5ICovIEJhZENoYXIsCi0gICAg
LyogMTQwICovIEJhZENoYXIsIC8qIDE0MSAqLyBCYWRDaGFyLCAvKiAxNDIgKi8gQmFkQ2hhciwg
LyogMTQzICovIEJhZENoYXIsCi0gICAgLyogMTQ0ICovIEJhZENoYXIsIC8qIDE0NSAqLyBCYWRD
aGFyLCAvKiAxNDYgKi8gQmFkQ2hhciwgLyogMTQ3ICovIEJhZENoYXIsCi0gICAgLyogMTQ4ICov
IEJhZENoYXIsIC8qIDE0OSAqLyBCYWRDaGFyLCAvKiAxNTAgKi8gQmFkQ2hhciwgLyogMTUxICov
IEJhZENoYXIsCi0gICAgLyogMTUyICovIEJhZENoYXIsIC8qIDE1MyAqLyBCYWRDaGFyLCAvKiAx
NTQgKi8gQmFkQ2hhciwgLyogMTU1ICovIEJhZENoYXIsCi0gICAgLyogMTU2ICovIEJhZENoYXIs
IC8qIDE1NyAqLyBCYWRDaGFyLCAvKiAxNTggKi8gQmFkQ2hhciwgLyogMTU5ICovIEJhZENoYXIs
Ci0gICAgLyogMTYwICovIEJhZENoYXIsIC8qIDE2MSAqLyBCYWRDaGFyLCAvKiAxNjIgKi8gQmFk
Q2hhciwgLyogMTYzICovIEJhZENoYXIsCi0gICAgLyogMTY0ICovIEJhZENoYXIsIC8qIDE2NSAq
LyBCYWRDaGFyLCAvKiAxNjYgKi8gQmFkQ2hhciwgLyogMTY3ICovIEJhZENoYXIsCi0gICAgLyog
MTY4ICovIEJhZENoYXIsIC8qIDE2OSAqLyBCYWRDaGFyLCAvKiAxNzAgKi8gQmFkQ2hhciwgLyog
MTcxICovIEJhZENoYXIsCi0gICAgLyogMTcyICovIEJhZENoYXIsIC8qIDE3MyAqLyBCYWRDaGFy
LCAvKiAxNzQgKi8gQmFkQ2hhciwgLyogMTc1ICovIEJhZENoYXIsCi0gICAgLyogMTc2ICovIEJh
ZENoYXIsIC8qIDE3NyAqLyBCYWRDaGFyLCAvKiAxNzggKi8gQmFkQ2hhciwgLyogMTc5ICovIEJh
ZENoYXIsCi0gICAgLyogMTgwICovIEJhZENoYXIsIC8qIDE4MSAqLyBCYWRDaGFyLCAvKiAxODIg
Ki8gQmFkQ2hhciwgLyogMTgzICovIEJhZENoYXIsCi0gICAgLyogMTg0ICovIEJhZENoYXIsIC8q
IDE4NSAqLyBCYWRDaGFyLCAvKiAxODYgKi8gQmFkQ2hhciwgLyogMTg3ICovIEJhZENoYXIsCi0g
ICAgLyogMTg4ICovIEJhZENoYXIsIC8qIDE4OSAqLyBCYWRDaGFyLCAvKiAxOTAgKi8gQmFkQ2hh
ciwgLyogMTkxICovIEJhZENoYXIsCi0gICAgLyogMTkyICovIEJhZENoYXIsIC8qIDE5MyAqLyBC
YWRDaGFyLCAvKiAxOTQgKi8gQmFkQ2hhciwgLyogMTk1ICovIEJhZENoYXIsCi0gICAgLyogMTk2
ICovIEJhZENoYXIsIC8qIDE5NyAqLyBCYWRDaGFyLCAvKiAxOTggKi8gQmFkQ2hhciwgLyogMTk5
ICovIEJhZENoYXIsCi0gICAgLyogMjAwICovIEJhZENoYXIsIC8qIDIwMSAqLyBCYWRDaGFyLCAv
KiAyMDIgKi8gQmFkQ2hhciwgLyogMjAzICovIEJhZENoYXIsCi0gICAgLyogMjA0ICovIEJhZENo
YXIsIC8qIDIwNSAqLyBCYWRDaGFyLCAvKiAyMDYgKi8gQmFkQ2hhciwgLyogMjA3ICovIEJhZENo
YXIsCi0gICAgLyogMjA4ICovIEJhZENoYXIsIC8qIDIwOSAqLyBCYWRDaGFyLCAvKiAyMTAgKi8g
QmFkQ2hhciwgLyogMjExICovIEJhZENoYXIsCi0gICAgLyogMjEyICovIEJhZENoYXIsIC8qIDIx
MyAqLyBCYWRDaGFyLCAvKiAyMTQgKi8gQmFkQ2hhciwgLyogMjE1ICovIEJhZENoYXIsCi0gICAg
LyogMjE2ICovIEJhZENoYXIsIC8qIDIxNyAqLyBCYWRDaGFyLCAvKiAyMTggKi8gQmFkQ2hhciwg
LyogMjE5ICovIEJhZENoYXIsCi0gICAgLyogMjIwICovIEJhZENoYXIsIC8qIDIyMSAqLyBCYWRD
aGFyLCAvKiAyMjIgKi8gQmFkQ2hhciwgLyogMjIzICovIEJhZENoYXIsCi0gICAgLyogMjI0ICov
IEJhZENoYXIsIC8qIDIyNSAqLyBCYWRDaGFyLCAvKiAyMjYgKi8gQmFkQ2hhciwgLyogMjI3ICov
IEJhZENoYXIsCi0gICAgLyogMjI4ICovIEJhZENoYXIsIC8qIDIyOSAqLyBCYWRDaGFyLCAvKiAy
MzAgKi8gQmFkQ2hhciwgLyogMjMxICovIEJhZENoYXIsCi0gICAgLyogMjMyICovIEJhZENoYXIs
IC8qIDIzMyAqLyBCYWRDaGFyLCAvKiAyMzQgKi8gQmFkQ2hhciwgLyogMjM1ICovIEJhZENoYXIs
Ci0gICAgLyogMjM2ICovIEJhZENoYXIsIC8qIDIzNyAqLyBCYWRDaGFyLCAvKiAyMzggKi8gQmFk
Q2hhciwgLyogMjM5ICovIEJhZENoYXIsCi0gICAgLyogMjQwICovIEJhZENoYXIsIC8qIDI0MSAq
LyBCYWRDaGFyLCAvKiAyNDIgKi8gQmFkQ2hhciwgLyogMjQzICovIEJhZENoYXIsCi0gICAgLyog
MjQ0ICovIEJhZENoYXIsIC8qIDI0NSAqLyBCYWRDaGFyLCAvKiAyNDYgKi8gQmFkQ2hhciwgLyog
MjQ3ICovIEJhZENoYXIsCi0gICAgLyogMjQ4ICovIEJhZENoYXIsIC8qIDI0OSAqLyBCYWRDaGFy
LCAvKiAyNTAgKi8gQmFkQ2hhciwgLyogMjUxICovIEJhZENoYXIsCi0gICAgLyogMjUyICovIEJh
ZENoYXIsIC8qIDI1MyAqLyBCYWRDaGFyLCAvKiAyNTQgKi8gQmFkQ2hhciwgLyogMjU1ICovIEJh
ZENoYXIKLX07Ci0KLXN0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBj
b25zdCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCk7Ci1zdGF0aWMgdm9pZCBl
bmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5n
JiwgQ2hhckJ1ZmZlciYgb3VwdXQpOwotc3RhdGljIFN0cmluZyBzdWJzdGl0dXRlQmFja3NsYXNo
ZXMoY29uc3QgU3RyaW5nJik7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hh
cihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oYyldICYgU2NoZW1lRmlyc3RDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNT
Y2hlbWVGaXJzdENoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJD
bGFzc1RhYmxlW2NdICYgU2NoZW1lRmlyc3RDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlz
U2NoZW1lQ2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4oYyldICYgU2NoZW1lQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29s
IGlzU2NoZW1lQ2hhcihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNs
YXNzVGFibGVbY10gJiBTY2hlbWVDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzVXNlcklu
Zm9DaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAm
IFVzZXJJbmZvQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzSG9zdG5hbWVDaGFyKHVuc2ln
bmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIEhvc3RuYW1lQ2hh
cjsgfQotc3RhdGljIGlubGluZSBib29sIGlzSVB2NkNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJl
dHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgSVB2NkNoYXI7IH0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1BhdGhTZWdtZW50RW5kQ2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNz
VGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYgUGF0aFNlZ21lbnRFbmRDaGFy
OyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNQYXRoU2VnbWVudEVuZENoYXIoVUNoYXIgYykgeyBy
ZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgUGF0aFNlZ21lbnRF
bmRDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzQmFkQ2hhcih1bnNpZ25lZCBjaGFyIGMp
IHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBCYWRDaGFyOyB9Ci0gICAgCi1zdGF0
aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNo
YXJhY3RlciwgY2hhciBzY2hlbWVDaGFyYWN0ZXIpCi17Ci0gICAgQVNTRVJUKGlzU2NoZW1lQ2hh
cihjaGFyYWN0ZXIpKTsKLSAgICBBU1NFUlQoc2NoZW1lQ2hhcmFjdGVyICYgMHgyMCk7Ci0gICAg
QVNTRVJUKGlzQVNDSUlMb3dlcihzY2hlbWVDaGFyYWN0ZXIpIHx8ICghaXNBU0NJSVVwcGVyKHNj
aGVtZUNoYXJhY3RlcikgJiYgaXNTY2hlbWVDaGFyKHNjaGVtZUNoYXJhY3RlcikpKTsKLSAgICBy
ZXR1cm4gKGNoYXJhY3RlciB8IDB4MjApID09IHNjaGVtZUNoYXJhY3RlcjsKLX0KLQotLy8gQ29w
aWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJj
ZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBi
ZSBsYXJnZSBlbm91Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4gdGhlIHNv
dXJjZSBzdHJpbmcsIGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhl
IHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hh
ciogZGVzdCkKLXsKLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgaWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5j
aGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICBjb25z
dCBVQ2hhciogc3JjID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKQotICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tp
XSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhcHBlbmRBU0NJSShjb25zdCBTdHJpbmcmIGJh
c2UsIGNvbnN0IGNoYXIqIHJlbCwgc2l6ZV90IGxlbiwgQ2hhckJ1ZmZlciYgYnVmZmVyKQotewot
ICAgIGJ1ZmZlci5yZXNpemUoYmFzZS5sZW5ndGgoKSArIGxlbiArIDEpOwotICAgIGNvcHlBU0NJ
SShiYXNlLCBidWZmZXIuZGF0YSgpKTsKLSAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSArIGJhc2Uu
bGVuZ3RoKCksIHJlbCwgbGVuKTsKLSAgICBidWZmZXJbYnVmZmVyLnNpemUoKSAtIDFdID0gJ1ww
JzsKLX0KLQotLy8gRklYTUU6IE1vdmUgdG8gV1RGU3RyaW5nLmggZXZlbnR1YWxseS4KLS8vIFJl
dHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpbmRleCBpbiBzdHJpbmcgfHN8IG9mIGFueSBv
ZiB0aGUgY2hhcmFjdGVycwotLy8gaW4gfHRvRmluZHwuIHx0b0ZpbmR8IHNob3VsZCBiZSBhIG51
bGwtdGVybWluYXRlZCBzdHJpbmcsIGFsbCBjaGFyYWN0ZXJzIHVwCi0vLyB0byB0aGUgbnVsbCB3
aWxsIGJlIHNlYXJjaGVkLiBSZXR1cm5zIGludCBpZiBub3QgZm91bmQuCi1zdGF0aWMgaW50IGZp
bmRGaXJzdE9mKGNvbnN0IFVDaGFyKiBzLCBpbnQgc0xlbiwgaW50IHN0YXJ0UG9zLCBjb25zdCBj
aGFyKiB0b0ZpbmQpCi17Ci0gICAgZm9yIChpbnQgaSA9IHN0YXJ0UG9zOyBpIDwgc0xlbjsgaSsr
KSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGN1ciA9IHRvRmluZDsKLSAgICAgICAgd2hpbGUgKCpj
dXIpIHsKLSAgICAgICAgICAgIGlmIChzW2ldID09ICooY3VyKyspKQotICAgICAgICAgICAgICAg
IHJldHVybiBpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGlj
IGlubGluZSB2b2lkIGNoZWNrRW5jb2RlZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICBBU1NFUlRfVU5VU0VEKHVybCwgdXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOwotICAgIEFTU0VS
VF9VTlVTRUQodXJsLCB1cmwuaXNFbXB0eSgpIHx8IGlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkp
OwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJ
cyhzdHJpbmcsIHByb3RvY29sKTsKLX0KLQotdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKLXsKLSAg
ICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxz
ZTsKLSAgICBtX3NjaGVtZUVuZCA9IDA7Ci0gICAgbV91c2VyU3RhcnQgPSAwOwotICAgIG1fdXNl
ckVuZCA9IDA7Ci0gICAgbV9wYXNzd29yZEVuZCA9IDA7Ci0gICAgbV9ob3N0RW5kID0gMDsKLSAg
ICBtX3BvcnRFbmQgPSAwOwotICAgIG1fcGF0aEVuZCA9IDA7Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0
U2xhc2ggPSAwOwotICAgIG1fcXVlcnlFbmQgPSAwOwotICAgIG1fZnJhZ21lbnRFbmQgPSAwOwot
fQotCi1LVVJMOjpLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17
Ci0gICAgcGFyc2UodXJsKTsKLSAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKLX0KLQotS1VS
TDo6S1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQotewotICAg
IGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6S1VSTChj
b25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nKQotewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVz
ZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0
aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMgY29udGVu
dHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQotICAg
IC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2Rpbmcu
ZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJp
bUZyb21VUkwodW5zaWduZWQgY2hhciBjKQotewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFk
aW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZy
b20gVVJMcy4gIE5vdGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8g
c28gdGhpcyBjb21wYXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4K
LSAgICByZXR1cm4gYyA8PSAnICc7Ci19Ci0KLXZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
KQotewotICAgIC8vIEFsbG93IHJlc29sdXRpb25zIHdpdGggYSBudWxsIG9yIGVtcHR5IGJhc2Ug
VVJMLCBidXQgbm90IHdpdGggYW55IG90aGVyIGludmFsaWQgb25lLgotICAgIC8vIEZJWE1FOiBJ
cyB0aGlzIGEgZ29vZCBydWxlPwotICAgIGlmICghYmFzZS5tX2lzVmFsaWQgJiYgIWJhc2UuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7Ci0gICAgICAgIGludmFsaWRh
dGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5
IHdpdGggV2luIElFLCB0cmVhdCBiYWNrc2xhc2hlcyBhcyBpZiB0aGV5IHdlcmUgc2xhc2hlcywK
LSAgICAvLyBhcyBsb25nIGFzIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggamF2YXNjcmlwdDogb3Ig
ZGF0YTogVVJMcy4KLSAgICBTdHJpbmcgcmVsID0gcmVsYXRpdmU7Ci0gICAgaWYgKHJlbC5jb250
YWlucygnXFwnKSAmJiAhKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkgfHwgcHJvdG9jb2xJcyhy
ZWwsICJkYXRhIikpKQotICAgICAgICByZWwgPSBzdWJzdGl0dXRlQmFja3NsYXNoZXMocmVsKTsK
LQotICAgIGJvb2wgYWxsQVNDSUkgPSByZWwuY29udGFpbnNPbmx5QVNDSUkoKTsKLSAgICBDaGFy
QnVmZmVyIHN0ckJ1ZmZlcjsKLSAgICBjaGFyKiBzdHI7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBp
ZiAoYWxsQVNDSUkpIHsKLSAgICAgICAgbGVuID0gcmVsLmxlbmd0aCgpOwotICAgICAgICBzdHJC
dWZmZXIucmVzaXplKGxlbiArIDEpOwotICAgICAgICBjb3B5QVNDSUkocmVsLCBzdHJCdWZmZXIu
ZGF0YSgpKTsKLSAgICAgICAgc3RyQnVmZmVyW2xlbl0gPSAwOwotICAgICAgICBzdHIgPSBzdHJC
dWZmZXIuZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuY29kZVJlbGF0aXZlU3RyaW5n
KHJlbCwgZW5jb2RpbmcsIHN0ckJ1ZmZlcik7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRh
KCk7Ci0gICAgICAgIGxlbiA9IHN0cmxlbihzdHIpOwotICAgIH0KLQotICAgIC8vIEdldCByaWQg
b2YgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUg
KGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTCgqc3RyKSkgewotICAgICAgICBzdHIrKzsKLSAgICAg
ICAgLS1sZW47Ci0gICAgfQotCi0gICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNl
IGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJv
bVVSTChzdHJbbGVuIC0gMV0pKQotICAgICAgICBzdHJbLS1sZW5dID0gJ1wwJzsKLQotICAgIC8v
IEFjY29yZGluZyB0byB0aGUgUkZDLCB0aGUgcmVmZXJlbmNlIHNob3VsZCBiZSBpbnRlcnByZXRl
ZCBhcyBhbgotICAgIC8vIGFic29sdXRlIFVSSSBpZiBwb3NzaWJsZSwgdXNpbmcgdGhlICJsZWZ0
bW9zdCwgbG9uZ2VzdCIKLSAgICAvLyBhbGdvcml0aG0uIElmIHRoZSBVUkkgcmVmZXJlbmNlIGlz
IGFic29sdXRlIGl0IHdpbGwgaGF2ZSBhCi0gICAgLy8gc2NoZW1lLCBtZWFuaW5nIHRoYXQgaXQg
d2lsbCBoYXZlIGEgY29sb24gYmVmb3JlIHRoZSBmaXJzdAotICAgIC8vIG5vbi1zY2hlbWUgZWxl
bWVudC4KLSAgICBib29sIGFic29sdXRlID0gZmFsc2U7Ci0gICAgY2hhciogcCA9IHN0cjsKLSAg
ICBpZiAoaXNTY2hlbWVGaXJzdENoYXIoKnApKSB7Ci0gICAgICAgICsrcDsKLSAgICAgICAgd2hp
bGUgKGlzU2NoZW1lQ2hhcigqcCkpIHsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoKnAgPT0gJzonKSB7Ci0gICAgICAgICAgICBpZiAocFsxXSAhPSAnLycgJiYgZXF1
YWxJZ25vcmluZ0Nhc2UoYmFzZS5wcm90b2NvbCgpLCBTdHJpbmcoc3RyLCBwIC0gc3RyKSkgJiYg
YmFzZS5pc0hpZXJhcmNoaWNhbCgpKQotICAgICAgICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7Ci0KLSAgICBpZiAoYWJzb2x1
dGUpIHsKLSAgICAgICAgcGFyc2Uoc3RyLCAmcmVsYXRpdmUpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIC8vIElmIHRoZSBiYXNlIGlzIGVtcHR5IG9yIG9wYXF1ZSAoZS5nLiBkYXRhOiBvciBqYXZh
c2NyaXB0OiksIHRoZW4gdGhlIFVSTCBpcyBpbnZhbGlkCi0gICAgICAgIC8vIHVubGVzcyB0aGUg
cmVsYXRpdmUgVVJMIGlzIGEgc2luZ2xlIGZyYWdtZW50LgotICAgICAgICBpZiAoIWJhc2UuaXNI
aWVyYXJjaGljYWwoKSkgewotICAgICAgICAgICAgaWYgKHN0clswXSA9PSAnIycpIHsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5k
KSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1
ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc3dpdGNoIChzdHJbMF0pIHsKLSAgICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLy8g
VGhlIHJlZmVyZW5jZSBpcyBlbXB0eSwgc28gdGhpcyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2Ft
ZSBkb2N1bWVudCB3aXRoIGFueSBmcmFnbWVudCBpZGVudGlmaWVyIHJlbW92ZWQuCi0gICAgICAg
ICAgICAqdGhpcyA9IGJhc2U7Ci0gICAgICAgICAgICByZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICcjJzogewotICAgICAgICAgICAg
Ly8gbXVzdCBiZSBmcmFnbWVudC1vbmx5IHJlZmVyZW5jZQotICAgICAgICAgICAgYXBwZW5kQVND
SUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1
ZmZlcik7Ci0gICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlICc/JzogewotICAg
ICAgICAgICAgLy8gcXVlcnktb25seSByZWZlcmVuY2UsIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9y
IG5vbi1VUkwgcmVzdWx0cwotICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5s
ZWZ0KGJhc2UubV9wYXRoRW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAg
IHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgLy8gbXVzdCBiZSBu
ZXQtcGF0aCBvciBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZQotICAgICAgICAgICAgaWYgKHN0clsx
XSA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAvLyBuZXQtcGF0aAotICAgICAgICAgICAgICAg
IGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fc2NoZW1lRW5kICsgMSksIHN0
ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIu
ZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAvLyBhYnMtcGF0aAotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcu
bGVmdChiYXNlLm1fcG9ydEVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAg
ICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgLy8gbXVzdCBiZSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZQotCi0gICAg
ICAgICAgICAgICAgLy8gQmFzZSBwYXJ0IHBsdXMgcmVsYXRpdmUgcGFydCBwbHVzIG9uZSBwb3Nz
aWJsZSBzbGFzaCBhZGRlZCBpbiBiZXR3ZWVuIHBsdXMgdGVybWluYXRpbmcgXDAgYnl0ZS4KLSAg
ICAgICAgICAgICAgICBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IGJhc2UubV9wYXRoRW5kICsg
MSArIGxlbiArIDE7Ci0gICAgICAgICAgICAgICAgcGFyc2VCdWZmZXIucmVzaXplKGJ1ZmZlclNp
emUpOwotCi0gICAgICAgICAgICAgICAgY2hhciogYnVmZmVyUG9zID0gcGFyc2VCdWZmZXIuZGF0
YSgpOwotICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyUG9zOwotCi0g
ICAgICAgICAgICAgICAgLy8gZmlyc3QgY29weSBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGF0aCBm
cm9tIHRoZSBiYXNlCi0gICAgICAgICAgICAgICAgQ2hhckJ1ZmZlciBiYXNlU3RyaW5nQnVmZmVy
KGJhc2UubV9zdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIGNvcHlBU0NJSShiYXNl
Lm1fc3RyaW5nLCBiYXNlU3RyaW5nQnVmZmVyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhciogYmFzZVN0cmluZyA9IGJhc2VTdHJpbmdCdWZmZXIuZGF0YSgpOwotICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IGJhc2VTdHJpbmc7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcGF0aFN0YXJ0ID0gYmFzZVN0cmluZ1N0YXJ0ICsgYmFzZS5t
X3BvcnRFbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGJhc2VTdHJpbmdTdGFydCA8IHBhdGhT
dGFydCkKLSAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gKmJhc2VTdHJpbmdTdGFy
dCsrOwotICAgICAgICAgICAgICAgIGNoYXIqIGJ1ZmZlclBhdGhTdGFydCA9IGJ1ZmZlclBvczsK
LQotICAgICAgICAgICAgICAgIC8vIG5vdyBjb3B5IHRoZSBiYXNlIHBhdGgKLSAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gYmFzZVN0cmluZyArIGJhc2UubV9wYXRo
RW5kOwotCi0gICAgICAgICAgICAgICAgLy8gZ28gYmFjayB0byB0aGUgbGFzdCBzbGFzaAotICAg
ICAgICAgICAgICAgIHdoaWxlIChiYXNlU3RyaW5nRW5kID4gYmFzZVN0cmluZ1N0YXJ0ICYmIGJh
c2VTdHJpbmdFbmRbLTFdICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ0Vu
ZC0tOwotCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VTdHJpbmdFbmQgPT0gYmFzZVN0cmluZ1N0
YXJ0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5vIHBhdGggaW4gYmFzZSwgYWRkIGEgcGF0
aCBzZXBhcmF0b3IgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLm1f
c2NoZW1lRW5kICsgMSAhPSBiYXNlLm1fcGF0aEVuZCAmJiAqc3RyICYmICpzdHIgIT0gJz8nICYm
ICpzdHIgIT0gJyMnKQotICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gJy8n
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBv
cyArPSBjb3B5UGF0aFJlbW92aW5nRG90cyhidWZmZXJQb3MsIGJhc2VTdHJpbmdTdGFydCwgMCwg
YmFzZVN0cmluZ0VuZCAtIGJhc2VTdHJpbmdTdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVsU3RyaW5nU3RhcnQgPSBzdHI7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmVsU3RyaW5nUG9zID0gcmVsU3RyaW5nU3RhcnQ7Ci0KLSAg
ICAgICAgICAgICAgICB3aGlsZSAoKnJlbFN0cmluZ1BvcyAmJiAqcmVsU3RyaW5nUG9zICE9ICc/
JyAmJiAqcmVsU3RyaW5nUG9zICE9ICcjJykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVs
U3RyaW5nUG9zWzBdID09ICcuJyAmJiBidWZmZXJQb3NbLTFdID09ICcvJykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1sxXSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4iIHNlZ21lbnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MgKz0gMTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHJlbFN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgaXNQYXRoU2VnbWVudEVuZENoYXIocmVsU3RyaW5n
UG9zWzJdKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4i
IHNlZ21lbnQgYW5kIHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdGhlIFJGQyBsZWF2ZXMgaXQgdXAgdG8gdGhlIGFwcCB0byBkZWNpZGUgd2hh
dCB0byBkbyB3aXRoIGV4Y2VzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIuLiIg
c2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MgKz0gMjsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGJ1ZmZlclBvcyA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1ZmZlclBvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlIChidWZmZXJQb3MgPiBidWZmZXJQYXRoU3RhcnQgKyAxICAmJiBidWZmZXJQb3NbLTFd
ICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zLS07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAqYnVm
ZmVyUG9zID0gKnJlbFN0cmluZ1BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9z
Kys7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcysrOwotICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgIC8vIGFsbCBkb25lIHdpdGggdGhlIHBhdGggd29yaywgbm93IGNv
cHkgYW55IHJlbWFpbmRlcgotICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZl
cmVuY2U7IHRoaXMgd2lsbCBhbHNvIGFkZCBhIG51bGwgdGVybWluYXRvcgotICAgICAgICAgICAg
ICAgIHN0cm5jcHkoYnVmZmVyUG9zLCByZWxTdHJpbmdQb3MsIGJ1ZmZlclNpemUgLSAoYnVmZmVy
UG9zIC0gYnVmZmVyU3RhcnQpKTsKLQotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVy
LmRhdGEoKSwgJnJlbGF0aXZlKTsKLQotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4ocGFy
c2VCdWZmZXIuZGF0YSgpKSArIDEgPD0gcGFyc2VCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotS1VSTCBL
VVJMOjpjb3B5KCkgY29uc3QKLXsKLSAgICBLVVJMIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3Vs
dC5tX3N0cmluZyA9IHJlc3VsdC5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1TdHJpbmcgS1VSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAotewot
ICAgIGlmICghaGFzUGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICB1bnNp
Z25lZCBlbmQgPSBtX3BhdGhFbmQgLSAxOwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykK
LSAgICAgICAgLS1lbmQ7Ci0KLSAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmlu
ZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9y
dEVuZCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICArK3N0YXJ0OwotCi0gICAgcmV0
dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKLX0KLQotU3Ry
aW5nIEtVUkw6OnByb3RvY29sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdCht
X3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmluZyBLVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICBpbnQg
c3RhcnQgPSBob3N0U3RhcnQoKTsKLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpKTsKLX0KLQotdW5z
aWduZWQgc2hvcnQgS1VSTDo6cG9ydCgpIGNvbnN0Ci17Ci0gICAgLy8gV2UgcmV0dXJuIGEgcG9y
dCBvZiAwIGlmIHRoZXJlIGlzIG5vIHBvcnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4g
dHdvIHNpdHVhdGlvbnM6Ci0gICAgLy8gMSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRl
ciB0aGUgaG9zdCBuYW1lIGFuZCBiZWZvcmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwu
Ci0gICAgLy8gMikgVGhlIFVSTCBjb250YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQg
bnVtYmVyIGJlZm9yZSB0aGUgcGF0aCBjb21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCi0gICAg
aWYgKG1faG9zdEVuZCA9PSBtX3BvcnRFbmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0
cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51
bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEs
IG1fcG9ydEVuZCAtIG1faG9zdEVuZCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIg
PiBtYXhpbXVtVmFsaWRQb3J0TnVtYmVyKQotICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1i
ZXI7Ci0gICAgcmV0dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIEtVUkw6OnBhc3MoKSBjb25zdAot
ewotICAgIGlmIChtX3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5z
dWJzdHJpbmcobV91c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsg
Ci19Ci0KLVN0cmluZyBLVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5k
IC0gbV91c2VyU3RhcnQpKTsKLX0KLQotU3RyaW5nIEtVUkw6OmZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fZnJhZ21lbnRFbmQgPT0gbV9xdWVyeUVuZCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5
RW5kICsgMSwgbV9mcmFnbWVudEVuZCAtIChtX3F1ZXJ5RW5kICsgMSkpOwotfQotCi1ib29sIEtV
Ukw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhZ21l
bnRFbmQgIT0gbV9xdWVyeUVuZDsKLX0KLQotU3RyaW5nIEtVUkw6OmJhc2VBc1N0cmluZygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwot
fQotCi0jaWYgIVBMQVRGT1JNKFFUKSAmJiAhVVNFKENGKQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0
ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhwYXRoKCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBOREVCVUcKLQotc3RhdGljIGlu
bGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29kKGNvbnN0IGNoYXIqKQotewotfQotCi0jZWxz
ZQotCi1zdGF0aWMgdm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChjb25zdCBjaGFyKiBwcm90b2Nv
bCkKLXsKLSAgICBjb25zdCBjaGFyKiBwID0gcHJvdG9jb2w7Ci0gICAgd2hpbGUgKCpwKSB7Ci0g
ICAgICAgIEFTU0VSVCgqcCA+ICcgJyAmJiAqcCA8IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAg
PD0gJ1onKSk7Ci0gICAgICAgICsrcDsKLSAgICB9Ci19Ci0KLSNlbmRpZgotCi1ib29sIEtVUkw6
OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJv
dG9jb2xJc0dvb2QocHJvdG9jb2wpOwotCi0gICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFs
aWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBLVVJMIGRlY2lkZXMgdGhleSBhcmUg
aW52YWxpZC4KLSAgICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgp
IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0Nhc2Uo
cHJvdG9jb2wsIFN0cmluZygiamF2YXNjcmlwdCIpKSk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91
dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
c2NoZW1lRW5kOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNTY2hlbWVD
aGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gIXByb3RvY29sW21fc2No
ZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhl
IGFyZ3VtZW50LgotfQotCi1TdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAotewotICAgIGlmICht
X3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1f
cGF0aEVuZCArIDEpKTsgCi19Ci0KLVN0cmluZyBLVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCwgbV9wYXRoRW5kIC0gbV9wb3J0RW5k
KTsKLX0KLQotYm9vbCBLVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAg
Ly8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4K
LSAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcg
bmV3UHJvdG9jb2wgPSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0KLSAgICBp
ZiAoIWlzVmFsaWRQcm90b2NvbChuZXdQcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghbV9pc1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzon
ICsgbV9zdHJpbmcpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwYXJzZShu
ZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOwotICAgIHJldHVy
biB0cnVlOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgaG9zdC4KLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0
ID09IG1fc2NoZW1lRW5kICsgMTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0
KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX2hvc3RFbmQpKTsKLX0KLQotdm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAgICBp
ZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsK
LX0KLQotdm9pZCBLVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFt
X2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3Bv
cnRFbmQgPT0gbV9ob3N0RW5kOwotICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9y
dFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3RB
bmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBt
dXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMs
Ci0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IGhvc3QgYW5kIHBv
cnQuCi0KLSAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVt
ZUVuZCArIDE7Ci0KLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFz
aFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiKSArIGhvc3RBbmRQb3J0ICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1
c2VyKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2lu
ZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIGludCBlbmQgPSBtX3VzZXJF
bmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHVzZXI7
Ci0gICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCi0gICAgICAgICAg
ICB1ID0gIi8vIiArIHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25l
IGJlZm9yZS4KLSAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3
b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdA
Jyk7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0An
IGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmICht
X3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5n
W2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUg
bm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBl
bmQpCi0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UGFzcyhjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVk
IGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0
byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBwYXNzd29yZC4KLQotICAg
IGludCBlbmQgPSBtX3Bhc3N3b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFN0cmluZyBwID0gIjoiICsgcGFzc3dvcmQgKyAiQCI7Ci0gICAgICAgIGlmICht
X3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQgKyAxKQotICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwot
ICAgICAgICAvLyBFYXQgdGhlIGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRk
IG91ciBvd24uCi0gICAgICAgIGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0g
PT0gJ0AnKQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxl
ZnQobV91c2VyRW5kKSArIHAgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9y
IHBhc3N3b3JkLgotICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAh
PSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0g
MTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNv
bW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAg
ICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpCi0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0
KG1fdXNlckVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfQotfQotCi12b2lk
IEtVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkg
Y2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBl
eHBlY3RhdGlvbnMuCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiAr
IHMpOwotfQotCi12b2lkIEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAg
aWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0
KG1fcXVlcnlFbmQpKTsKLX0KLSAgICAKLXZvaWQgS1VSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5n
JiBxdWVyeSkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6ICcjJyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFu
ZCBlc2NhcGVkLgotICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRv
Y3VtZW50IGVuY29kaW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0gICAgLy8gYWNj
ZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGlmICgocXVlcnkuaXNF
bXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKQotICAgICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyAiPyIgKyBxdWVyeSArIG1fc3RyaW5nLnN1
YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0gICAgZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5s
ZWZ0KG1fcGF0aEVuZCkgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7
Ci0KLX0KLQotdm9pZCBLVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAo
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IGVuY29kZVdpdGhV
UkxFc2NhcGVTZXF1ZW5jZXMgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSAnIycgYW5kICc/Jywg
c28gZnJhZ21lbnQgYW5kIHF1ZXJ5IHBhcnRzCi0gICAgLy8gbWF5IGJlIGluYWR2ZXJ0ZW50bHkg
YWZmZWN0ZWQuCi0gICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8
fCBwYXRoWzBdICE9ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2Vz
KHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOwotfQotCi1TdHJpbmcgZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVy
biBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgVVRGOEVu
Y29kaW5nKCkpOwotfQotCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIHJldHVy
biBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2Rp
bmcpOwotfQotCi0vLyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJvdW5kcyBjaGVj
ay4KLXN0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZmZXIsIHVuc2lnbmVk
IGNoYXIgYykKLXsKLSAgICAqYnVmZmVyKysgPSAnJSc7Ci0gICAgcGxhY2VCeXRlQXNIZXgoYywg
YnVmZmVyKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhjaGFyKiYg
YnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFy
KiBwID0gYnVmZmVyOwotCi0gICAgY29uc3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29u
c3QgY2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0
ckVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChp
c0JhZENoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBjID09ICc/JykKLSAg
ICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgIT0gMHgwOSAm
JiBjICE9IDB4MGEgJiYgYyAhPSAweDBkKQotICAgICAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRD
aGFyKHAsIGMpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0K
LQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0KLXN0YXRpYyB2b2lkIGVzY2FwZUFuZEFwcGVuZE5vbkhp
ZXJhcmNoaWNhbFBhcnQoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgY2hhciogcCA9IGJ1ZmZlcjsKLQotICAgIGNvbnN0IGNoYXIqIHN0
ciA9IHN0clN0YXJ0OwotICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0YXJ0ICsgbGVuZ3Ro
OwotICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0g
KnN0cisrOwotICAgICAgICAvLyBTdHJpcCBDUiwgTEYgYW5kIFRhYiBmcm9tIGZyYWdtZW50cywg
cGVyOgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc3MAotICAgICAgICBpZiAoYyA9PSAweDA5IHx8IGMgPT0gMHgwYSB8fCBjID09IDB4MGQpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBDaHJvbWUgYW5kIElFIGFsbG93IG5v
bi1hc2NpaSBjaGFyYWN0ZXJzIGluIGZyYWdtZW50cywgaG93ZXZlciBkb2luZwotICAgICAgICAv
LyBzbyB3b3VsZCBoaXQgYW4gQVNTRVJUIGluIGNoZWNrRW5jb2RlZFN0cmluZywgc28gZm9yIG5v
dyB3ZSBkb24ndC4KLSAgICAgICAgaWYgKGMgPCAweDIwIHx8IGMgPj0gMTI3KSB7Ci0gICAgICAg
ICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0K
LS8vIGNvcHkgYSBwYXRoLCBhY2NvdW50aW5nIGZvciAiLiIgYW5kICIuLiIgc2VnbWVudHMKLXN0
YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMs
IGludCBzcmNTdGFydCwgaW50IHNyY0VuZCkKLXsKLSAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQg
PSBkc3Q7Ci0KLSAgICAvLyBlbXB0eSBwYXRoIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbmVlZCBu
b3QgaGF2ZSBhIGxlYWRpbmcgc2xhc2gKLSAgICBpZiAoc3JjU3RhcnQgIT0gc3JjRW5kKSB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IHNyYyArIHNyY1N0YXJ0OwotICAg
ICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gc3JjICsgc3JjRW5kOwotICAgICAgICBj
b25zdCBjaGFyKiBiYXNlU3RyaW5nUG9zID0gYmFzZVN0cmluZ1N0YXJ0OwotCi0gICAgICAgIC8v
IHRoaXMgY29kZSBpcyB1bnByZXBhcmVkIGZvciBwYXRocyB0aGF0IGRvIG5vdCBiZWdpbiB3aXRo
IGEKLSAgICAgICAgLy8gc2xhc2ggYW5kIHdlIHNob3VsZCBhbHdheXMgaGF2ZSBvbmUgaW4gdGhl
IHNvdXJjZSBzdHJpbmcKLSAgICAgICAgQVNTRVJUKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy8nKTsK
LQotICAgICAgICAvLyBjb3B5IHRoZSBsZWFkaW5nIHNsYXNoIGludG8gdGhlIGRlc3RpbmF0aW9u
Ci0gICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgYmFzZVN0cmluZ1Bvcysr
OwotICAgICAgICBkc3QrKzsKLQotICAgICAgICB3aGlsZSAoYmFzZVN0cmluZ1BvcyA8IGJhc2VT
dHJpbmdFbmQpIHsKLSAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzBdID09ICcuJyAmJiBk
c3RbLTFdID09ICcvJykgewotICAgICAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzFdID09
ICcvJyB8fCBiYXNlU3RyaW5nUG9zICsgMSA9PSBiYXNlU3RyaW5nRW5kKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICBi
YXNlU3RyaW5nUG9zICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgKGJhc2VTdHJp
bmdQb3NbMl0gPT0gJy8nIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlU3RyaW5nUG9zICsgMiA9PSBiYXNlU3RyaW5nRW5kKSkgewotICAgICAgICAgICAgICAg
ICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhlIGxhc3Qgc2VnbWVu
dAotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZlcyBpdCB1cCB0byB0aGUgYXBw
IHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCi0gICAgICAgICAgICAgICAgICAgIC8v
ICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNv
bnRlbnQKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMuCi0gICAgICAgICAg
ICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRz
dCA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBkc3QtLTsK
LSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCAmJiBkc3Rb
LTFdICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgICAgIGJhc2VTdHJpbmdQ
b3MrKzsKLSAgICAgICAgICAgIGRzdCsrOwotICAgICAgICB9Ci0gICAgfQotICAgICpkc3QgPSAn
XDAnOwotICAgIHJldHVybiBkc3QgLSBidWZmZXJQYXRoU3RhcnQ7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGNvbnN0IGNoYXIqIHN0cikKLXsKLSAgICBjb25z
dCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFy
Kj4oc3RyKTsKLSAgICBpZiAoISpwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWdu
ZWQgY2hhciBwYyA9ICpwOwotICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMgPSAqKytwKSB7Ci0g
ICAgICAgIGlmIChjID09ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcuJykpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcGMgPSBjOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXZvaWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAg
Y2hlY2tFbmNvZGVkU3RyaW5nKHN0cmluZyk7Ci0KLSAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJp
bmcubGVuZ3RoKCkgKyAxKTsKLSAgICBjb3B5QVNDSUkoc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsK
LSAgICBidWZmZXJbc3RyaW5nLmxlbmd0aCgpXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnVmZmVyLmRh
dGEoKSwgJnN0cmluZyk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBsZW5ndGg+Ci1zdGF0aWMgaW5s
aW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciAoJmIpW2xlbmd0aF0pCi17
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAo
YVtpXSAhPSBiW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IGxlbmd0aEI+Ci1zdGF0aWMgaW5saW5lIGJv
b2wgZXF1YWwoY29uc3QgY2hhciogc3RyaW5nQSwgc2l6ZV90IGxlbmd0aEEsIGNvbnN0IGNoYXIg
KCZzdHJpbmdCKVtsZW5ndGhCXSkKLXsKLSAgICByZXR1cm4gbGVuZ3RoQSA9PSBsZW5ndGhCICYm
IGVxdWFsKHN0cmluZ0EsIHN0cmluZ0IpOwotfQotCi0vLyBMaXN0IG9mIGRlZmF1bHQgc2NoZW1l
cyBpcyB0YWtlbiBmcm9tIGdvb2dsZS11cmw6Ci0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
Z29vZ2xlLXVybC9zb3VyY2UvYnJvd3NlL3RydW5rL3NyYy91cmxfY2Fub25fc3RkdXJsLmNjIzEy
MAotc3RhdGljIGlubGluZSBib29sIGlzRGVmYXVsdFBvcnRGb3JTY2hlbWUoY29uc3QgY2hhciog
cG9ydCwgc2l6ZV90IHBvcnRMZW5ndGgsIGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVt
ZUxlbmd0aCkKLXsKLSAgICAvLyBUaGlzIHN3aXRjaCBpcyB0aGVvcmV0aWNhbGx5IGEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uLiAgSXQgY2FtZSBvdmVyIHdoZW4KLSAgICAvLyB0aGUgY29kZSB3
YXMgbW92ZWQgZnJvbSBnb29nbGUtdXJsLCBidXQgbWF5IGJlIHJlbW92ZWQgbGF0ZXIuCi0gICAg
c3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVh
bChzY2hlbWUsIHdzU2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7
Ci0gICAgY2FzZSAzOgotICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpKQotICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGZ0cFBvcnQpOwotICAgICAg
ICBpZiAoZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFs
KHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBzUG9ydCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
NDoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVtZSkgJiYgZXF1YWwocG9y
dCwgcG9ydExlbmd0aCwgaHR0cFBvcnQpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBz
UG9ydCk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJT
Y2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBvcnQpOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBob3N0UG9ydElzRW1wdHlC
dXRDcmVkZW50aWFsc0FyZVByZXNlbnQoaW50IGhvc3RTdGFydCwgaW50IHBvcnRFbmQsIGNoYXIg
dXNlcmluZm9FbmRDaGFyKQotewotICAgIHJldHVybiB1c2VyaW5mb0VuZENoYXIgPT0gJ0AnICYm
IGhvc3RTdGFydCA9PSBwb3J0RW5kOwotfQotCi1zdGF0aWMgYm9vbCBpc05vbkZpbGVIaWVyYXJj
aGljYWxTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewot
ICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3RoKSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4g
ZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBj
YXNlIDQ6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpOwotICAgIGNh
c2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNh
c2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBpc0Nhbm9uaWNhbEhvc3RuYW1l
TG93ZXJjYXNlRm9yU2NoZW1lKGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0
aCkKLXsKLSAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewotICAgIGNhc2UgMjoKLSAgICAgICAg
cmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpOwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0
dXJuIGVxdWFsKHNjaGVtZSwgZnRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSk7
Ci0gICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8
fCBlcXVhbChzY2hlbWUsIGZpbGVTY2hlbWUpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJu
IGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJu
IGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi12b2lkIEtVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmln
aW5hbFN0cmluZykKLXsKLSAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewotICAgICAg
ICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmln
aW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcih1
cmxbMF0pKSB7Ci0gICAgICAgIC8vIHNjaGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4gYWxwaGFiZXRp
YyBjaGFyYWN0ZXIKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5h
bFN0cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaW50IHNjaGVtZUVuZCA9IDA7Ci0gICAgd2hpbGUgKGlzU2NoZW1lQ2hhcih1
cmxbc2NoZW1lRW5kXSkpCi0gICAgICAgIHNjaGVtZUVuZCsrOwotCi0gICAgaWYgKHVybFtzY2hl
bWVFbmRdICE9ICc6JykgewotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9y
aWdpbmFsU3RyaW5nIDogdXJsOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpbnQgdXNlclN0YXJ0ID0gc2NoZW1lRW5kICsgMTsKLSAgICBpbnQg
dXNlckVuZDsKLSAgICBpbnQgcGFzc3dvcmRTdGFydDsKLSAgICBpbnQgcGFzc3dvcmRFbmQ7Ci0g
ICAgaW50IGhvc3RTdGFydDsKLSAgICBpbnQgaG9zdEVuZDsKLSAgICBpbnQgcG9ydFN0YXJ0Owot
ICAgIGludCBwb3J0RW5kOwotCi0gICAgYm9vbCBoaWVyYXJjaGljYWwgPSB1cmxbc2NoZW1lRW5k
ICsgMV0gPT0gJy8nOwotICAgIGJvb2wgaGFzU2Vjb25kU2xhc2ggPSBoaWVyYXJjaGljYWwgJiYg
dXJsW3NjaGVtZUVuZCArIDJdID09ICcvJzsKLQotICAgIGJvb2wgaXNGaWxlID0gc2NoZW1lRW5k
ID09IDQKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdmJykK
LSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdpJykKLSAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICdsJykKLSAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdlJyk7Ci0KLSNpZiBQTEFURk9STShC
TEFDS0JFUlJZKQotICAgIC8vIFBhcnNlIGxvY2FsOiB1cmxzIHRoZSBzYW1lIGFzIGZpbGU6IHVy
bHMuCi0gICAgaWYgKCFpc0ZpbGUpCi0gICAgICAgIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA1Ci0g
ICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2wnKQotICAg
ICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdvJykKLSAgICAg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnYycpCi0gICAgICAg
ICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwgJ2EnKQotICAgICAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbNF0sICdsJyk7Ci0jZW5kaWYKLQot
ICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
dXJsWzBdLCAnaCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFd
LCAndCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAndCcp
Ci0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAncCcpCi0gICAg
ICAgICYmICh1cmxbNF0gPT0gJzonIHx8IChpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFs0
XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzonKSk7Ci0KLSAgICBpZiAoKGhpZXJhcmNoaWNhbCAmJiBo
YXNTZWNvbmRTbGFzaCkgfHwgaXNOb25GaWxlSGllcmFyY2hpY2FsU2NoZW1lKHVybCwgc2NoZW1l
RW5kKSkgewotICAgICAgICAvLyBUaGUgcGFydCBhZnRlciB0aGUgc2NoZW1lIGlzIGVpdGhlciBh
IG5ldF9wYXRoIG9yIGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHBhdGggc2VnbWVudCBpcyBlbXB0
eS4KLSAgICAgICAgLy8gQXR0ZW1wdCB0byBmaW5kIGFuIGF1dGhvcml0eS4KLSAgICAgICAgLy8g
RklYTUU6IEF1dGhvcml0eSBjaGFyYWN0ZXJzIG1heSBiZSBzY2FubmVkIHR3aWNlLCBhbmQgaXQg
d291bGQgYmUgbmljZSB0byBiZSBmYXN0ZXIuCi0KLSAgICAgICAgaWYgKGhpZXJhcmNoaWNhbCkK
LSAgICAgICAgICAgIHVzZXJTdGFydCsrOwotICAgICAgICBpZiAoaGFzU2Vjb25kU2xhc2gpCi0g
ICAgICAgICAgICB1c2VyU3RhcnQrKzsKLSAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLQot
ICAgICAgICBpbnQgY29sb25Qb3MgPSAwOwotICAgICAgICB3aGlsZSAoaXNVc2VySW5mb0NoYXIo
dXJsW3VzZXJFbmRdKSkgewotICAgICAgICAgICAgaWYgKHVybFt1c2VyRW5kXSA9PSAnOicgJiYg
Y29sb25Qb3MgPT0gMCkKLSAgICAgICAgICAgICAgICBjb2xvblBvcyA9IHVzZXJFbmQ7Ci0gICAg
ICAgICAgICB1c2VyRW5kKys7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXJsW3VzZXJFbmRd
ID09ICdAJykgewotICAgICAgICAgICAgLy8gYWN0dWFsIGVuZCBvZiB0aGUgdXNlcmluZm8sIHN0
YXJ0IG9uIHRoZSBob3N0Ci0gICAgICAgICAgICBpZiAoY29sb25Qb3MgIT0gMCkgewotICAgICAg
ICAgICAgICAgIHBhc3N3b3JkRW5kID0gdXNlckVuZDsKLSAgICAgICAgICAgICAgICB1c2VyRW5k
ID0gY29sb25Qb3M7Ci0gICAgICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IGNvbG9uUG9zICsg
MTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBw
YXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0KLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3Jk
RW5kICsgMTsKLSAgICAgICAgfSBlbHNlIGlmICh1cmxbdXNlckVuZF0gPT0gJ1snIHx8IGlzUGF0
aFNlZ21lbnRFbmRDaGFyKHVybFt1c2VyRW5kXSkpIHsKLSAgICAgICAgICAgIC8vIGhpdCB0aGUg
ZW5kIG9mIHRoZSBhdXRob3JpdHksIG11c3QgaGF2ZSBiZWVuIG5vIHVzZXIKLSAgICAgICAgICAg
IC8vIG9yIGxvb2tzIGxpa2UgYW4gSVB2NiBob3N0bmFtZQotICAgICAgICAgICAgLy8gZWl0aGVy
IHdheSwgdHJ5IHRvIHBhcnNlIGl0IGFzIGEgaG9zdG5hbWUKLSAgICAgICAgICAgIHVzZXJFbmQg
PSB1c2VyU3RhcnQ7Ci0gICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1
c2VyRW5kOwotICAgICAgICAgICAgaG9zdFN0YXJ0ID0gdXNlclN0YXJ0OwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAg
ICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBob3N0RW5kID0gaG9zdFN0YXJ0OwotCi0gICAgICAgIC8vIElQVjYgSVAgYWRkcmVzcwotICAg
ICAgICBpZiAodXJsW2hvc3RFbmRdID09ICdbJykgewotICAgICAgICAgICAgaG9zdEVuZCsrOwot
ICAgICAgICAgICAgd2hpbGUgKGlzSVB2NkNoYXIodXJsW2hvc3RFbmRdKSkKLSAgICAgICAgICAg
ICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09ICddJykKLSAg
ICAgICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gb3Jp
Z2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICAgICAgaW52
YWxpZGF0ZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdoaWxlIChpc0hvc3RuYW1lQ2hhcih1cmxbaG9zdEVu
ZF0pKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKHVybFtob3N0RW5kXSA9PSAnOicpIHsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9
IHBvcnRFbmQgPSBob3N0RW5kICsgMTsKLSAKLSAgICAgICAgICAgIC8vIHBvc3NpYmxlIHN0YXJ0
IG9mIHBvcnQKLSAgICAgICAgICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0gICAgICAgICAgICB3
aGlsZSAoaXNBU0NJSURpZ2l0KHVybFtwb3J0RW5kXSkpCi0gICAgICAgICAgICAgICAgcG9ydEVu
ZCsrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBo
b3N0RW5kOwotCi0gICAgICAgIGlmICghaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRd
KSkgewotICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAg
ICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoaG9zdFBvcnRJc0VtcHR5QnV0Q3JlZGVudGlhbHNBcmVQcmVzZW50KGhvc3RTdGFydCwg
cG9ydEVuZCwgdXJsW3Bhc3N3b3JkRW5kXSkpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3Jp
Z2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlk
YXRlKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNl
clN0YXJ0ID09IHBvcnRFbmQgJiYgIW1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiAhaXNGaWxl
KSB7Ci0gICAgICAgICAgICAvLyBObyBhdXRob3JpdHkgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQg
dGhpcyBpcyBub3QgYSBuZXRfcGF0aCwgYnV0IHJhdGhlciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJz
dCB0d28KLSAgICAgICAgICAgIC8vIHBhdGggc2VnbWVudHMgYXJlIGVtcHR5LiBGb3IgZmlsZSwg
aHR0cCBhbmQgaHR0cHMgb25seSwgYW4gZW1wdHkgYXV0aG9yaXR5IGlzIGFsbG93ZWQuCi0gICAg
ICAgICAgICB1c2VyU3RhcnQgLT0gMjsKLSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7
Ci0gICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0gdXNlckVuZDsKLSAgICAgICAgICAgIHBhc3N3
b3JkRW5kID0gcGFzc3dvcmRTdGFydDsKLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3Jk
RW5kOwotICAgICAgICAgICAgaG9zdEVuZCA9IGhvc3RTdGFydDsKLSAgICAgICAgICAgIHBvcnRT
dGFydCA9IGhvc3RFbmQ7Ci0gICAgICAgICAgICBwb3J0RW5kID0gaG9zdEVuZDsKLSAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIHRoZSBwYXJ0IGFmdGVyIHRoZSBzY2hlbWUgbXVz
dCBiZSBhbiBvcGFxdWVfcGFydCBvciBhbiBhYnNfcGF0aAotICAgICAgICB1c2VyRW5kID0gdXNl
clN0YXJ0OwotICAgICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwot
ICAgICAgICBob3N0U3RhcnQgPSBob3N0RW5kID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgIHBvcnRT
dGFydCA9IHBvcnRFbmQgPSBob3N0RW5kOwotICAgIH0KLQotICAgIGludCBwYXRoU3RhcnQgPSBw
b3J0RW5kOwotICAgIGludCBwYXRoRW5kID0gcGF0aFN0YXJ0OwotICAgIHdoaWxlICh1cmxbcGF0
aEVuZF0gJiYgdXJsW3BhdGhFbmRdICE9ICc/JyAmJiB1cmxbcGF0aEVuZF0gIT0gJyMnKQotICAg
ICAgICBwYXRoRW5kKys7Ci0KLSAgICBpbnQgcXVlcnlTdGFydCA9IHBhdGhFbmQ7Ci0gICAgaW50
IHF1ZXJ5RW5kID0gcXVlcnlTdGFydDsKLSAgICBpZiAodXJsW3F1ZXJ5U3RhcnRdID09ICc/Jykg
ewotICAgICAgICB3aGlsZSAodXJsW3F1ZXJ5RW5kXSAmJiB1cmxbcXVlcnlFbmRdICE9ICcjJykK
LSAgICAgICAgICAgIHF1ZXJ5RW5kKys7Ci0gICAgfQotCi0gICAgaW50IGZyYWdtZW50U3RhcnQg
PSBxdWVyeUVuZDsKLSAgICBpbnQgZnJhZ21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgIGlm
ICh1cmxbZnJhZ21lbnRTdGFydF0gPT0gJyMnKSB7Ci0gICAgICAgIGZyYWdtZW50U3RhcnQrKzsK
LSAgICAgICAgZnJhZ21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgICAgICB3aGlsZSAodXJs
W2ZyYWdtZW50RW5kXSkKLSAgICAgICAgICAgIGZyYWdtZW50RW5kKys7Ci0gICAgfQotCi0gICAg
Ly8gYXNzZW1ibGUgaXQgYWxsLCByZW1lbWJlcmluZyB0aGUgcmVhbCByYW5nZXMKLQotICAgIFZl
Y3RvcjxjaGFyLCA0MDk2PiBidWZmZXIoZnJhZ21lbnRFbmQgKiAzICsgMSk7Ci0KLSAgICBjaGFy
ICpwID0gYnVmZmVyLmRhdGEoKTsKLSAgICBjb25zdCBjaGFyICpzdHJQdHIgPSB1cmw7Ci0KLSAg
ICAvLyBjb3B5IGluIHRoZSBzY2hlbWUKLSAgICBjb25zdCBjaGFyICpzY2hlbWVFbmRQdHIgPSB1
cmwgKyBzY2hlbWVFbmQ7Ci0gICAgd2hpbGUgKHN0clB0ciA8IHNjaGVtZUVuZFB0cikKLSAgICAg
ICAgKnArKyA9IHRvQVNDSUlMb3dlcigqc3RyUHRyKyspOwotICAgIG1fc2NoZW1lRW5kID0gcCAt
IGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICBib29sIGhvc3RJc0xvY2FsSG9zdCA9IHBvcnRFbmQgLSB1
c2VyU3RhcnQgPT0gOQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1
c2VyU3RhcnRdLCAnbCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
W3VzZXJTdGFydCsxXSwgJ28nKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFt1c2VyU3RhcnQrMl0sICdjJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbdXNlclN0YXJ0KzNdLCAnYScpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UodXJsW3VzZXJTdGFydCs0XSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNV0sICdoJykKLSAgICAgICAgJiYgaXNMZXR0ZXJN
YXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzZdLCAnbycpCi0gICAgICAgICYmIGlzTGV0
dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs3XSwgJ3MnKQotICAgICAgICAmJiBp
c0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrOF0sICd0Jyk7Ci0KLSAgICAv
LyBGaWxlIFVSTHMgbmVlZCBhIGhvc3QgcGFydCB1bmxlc3MgaXQgaXMganVzdCBmaWxlOi8vIG9y
IGZpbGU6Ly9sb2NhbGhvc3QKLSAgICBib29sIGRlZ2VuZXJhdGVGaWxlUGF0aCA9IHBhdGhTdGFy
dCA9PSBwYXRoRW5kICYmIChob3N0U3RhcnQgPT0gaG9zdEVuZCB8fCBob3N0SXNMb2NhbEhvc3Qp
OwotCi0gICAgLy8gV2UgZHJvcCBlbXB0eSBjcmVkZW50aWFscywgYnV0IGtlZXAgYSBjb2xvbiBp
biBhbiBlbXB0eSBob3N0L3BvcnQgcGFpci4KLSAgICAvLyBSZW1vdmluZyBob3N0bmFtZSBjb21w
bGV0ZWx5IHdvdWxkIGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBVUkwgb24gcmUtcGFyc2lu
Zy4KLSAgICBib29sIGhhdmVOb25Ib3N0QXV0aG9yaXR5UGFydCA9IHVzZXJTdGFydCAhPSB1c2Vy
RW5kIHx8IHBhc3N3b3JkU3RhcnQgIT0gcGFzc3dvcmRFbmQgfHwgaG9zdEVuZCAhPSBwb3J0RW5k
OwotCi0gICAgLy8gYWRkICI6IiBhZnRlciBzY2hlbWUKLSAgICAqcCsrID0gJzonOwotCi0gICAg
Ly8gaWYgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgYXV0aG9yaXR5IHBhcnQgb3IgYSBmaWxlIFVSTCAt
IGFkZCAiLy8iIGFuZCBhdXRob3JpdHkKLSAgICBpZiAoaXNGaWxlID8gIWRlZ2VuZXJhdGVGaWxl
UGF0aCA6IChoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQgfHwgaG9zdFN0YXJ0ICE9IGhvc3RFbmQp
KSB7Ci0gICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICpwKysgPSAnLyc7Ci0KLSAgICAgICAg
bV91c2VyU3RhcnQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRo
ZSB1c2VyCi0gICAgICAgIHN0clB0ciA9IHVybCArIHVzZXJTdGFydDsKLSAgICAgICAgY29uc3Qg
Y2hhciogdXNlckVuZFB0ciA9IHVybCArIHVzZXJFbmQ7Ci0gICAgICAgIHdoaWxlIChzdHJQdHIg
PCB1c2VyRW5kUHRyKSB7Ci0gICAgICAgICAgICBjaGFyIGMgPSAqc3RyUHRyKys7Ci0gICAgICAg
ICAgICBBU1NFUlQoaXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAgKnArKyA9IGM7Ci0g
ICAgICAgIH0KLSAgICAgICAgbV91c2VyRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAg
ICAgLy8gY29weSBpbiB0aGUgcGFzc3dvcmQKLSAgICAgICAgaWYgKHBhc3N3b3JkRW5kICE9IHBh
c3N3b3JkU3RhcnQpIHsKLSAgICAgICAgICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICBzdHJQ
dHIgPSB1cmwgKyBwYXNzd29yZFN0YXJ0OwotICAgICAgICAgICAgY29uc3QgY2hhciogcGFzc3dv
cmRFbmRQdHIgPSB1cmwgKyBwYXNzd29yZEVuZDsKLSAgICAgICAgICAgIHdoaWxlIChzdHJQdHIg
PCBwYXNzd29yZEVuZFB0cikgewotICAgICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoaXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAg
ICAgICpwKysgPSBjOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fcGFzc3dv
cmRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBJZiB3ZSBoYWQgYW55IHVz
ZXIgaW5mbywgYWRkICJAIgotICAgICAgICBpZiAocCAtIGJ1ZmZlci5kYXRhKCkgIT0gbV91c2Vy
U3RhcnQpCi0gICAgICAgICAgICAqcCsrID0gJ0AnOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhl
IGhvc3QsIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIGZpbGUgVVJMIHdpdGggYXV0aG9yaXR5PSJs
b2NhbGhvc3QiCi0gICAgICAgIGlmICghKGlzRmlsZSAmJiBob3N0SXNMb2NhbEhvc3QgJiYgIWhh
dmVOb25Ib3N0QXV0aG9yaXR5UGFydCkpIHsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIGhv
c3RTdGFydDsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIGhvc3RFbmRQdHIgPSB1cmwgKyBob3N0
RW5kOwotICAgICAgICAgICAgaWYgKGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hl
bWUoYnVmZmVyLmRhdGEoKSwgbV9zY2hlbWVFbmQpKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUg
KHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdG9B
U0NJSUxvd2VyKCpzdHJQdHIrKyk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3Ru
YW1lQ2hhcihjKSB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAg
ICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoaXNIb3N0bmFtZUNoYXIoYykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9
PSAnOicpOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9ob3N0RW5kID0gcCAtIGJ1ZmZl
ci5kYXRhKCk7Ci0KLSAgICAgICAgLy8gQ29weSBpbiB0aGUgcG9ydCBpZiB0aGUgVVJMIGhhcyBv
bmUgKGFuZCBpdCdzIG5vdCBkZWZhdWx0KS4gQWxzbywgY29weSBpdCBpZiB0aGVyZSB3YXMgbm8g
aG9zdG5hbWUsIHNvIHRoYXQgdGhlcmUgaXMgc3RpbGwgc29tZXRoaW5nIGluIGF1dGhvcml0eSBj
b21wb25lbnQuCi0gICAgICAgIGlmIChob3N0RW5kICE9IHBvcnRTdGFydCkgewotICAgICAgICAg
ICAgY29uc3QgY2hhciogcG9ydFN0ciA9IHVybCArIHBvcnRTdGFydDsKLSAgICAgICAgICAgIHNp
emVfdCBwb3J0TGVuZ3RoID0gcG9ydEVuZCAtIHBvcnRTdGFydDsKLSAgICAgICAgICAgIGlmICgo
cG9ydExlbmd0aCAmJiAhaXNEZWZhdWx0UG9ydEZvclNjaGVtZShwb3J0U3RyLCBwb3J0TGVuZ3Ro
LCBidWZmZXIuZGF0YSgpLCBtX3NjaGVtZUVuZCkpCi0gICAgICAgICAgICAgICAgfHwgKGhvc3RT
dGFydCA9PSBob3N0RW5kICYmIGhvc3RFbmQgIT0gcG9ydFN0YXJ0KSkgewotICAgICAgICAgICAg
ICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydEVuZFB0ciA9
IHVybCArIHBvcnRFbmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBvcnRTdHIgPCBwb3J0RW5k
UHRyKQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnBvcnRTdHIrKzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBtX3BvcnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoaXNGaWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVn
ZW5lcmF0ZUZpbGVQYXRoKTsKLSAgICAgICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICAgICAq
cCsrID0gJy8nOwotICAgICAgICB9Ci0gICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0g
bV9wYXNzd29yZEVuZCA9IG1faG9zdEVuZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotICAgIH0KLQotICAgIC8vIEZvciBjYW5vbmljYWxpemF0aW9uLCBlbnN1cmUgd2UgaGF2ZSBh
ICcvJyBmb3Igbm8gcGF0aC4KLSAgICAvLyBEbyB0aGlzIG9ubHkgZm9yIFVSTCB3aXRoIHByb3Rv
Y29sIGZpbGUsIGh0dHAgb3IgaHR0cHMuCi0gICAgaWYgKChtX3Byb3RvY29sSXNJbkhUVFBGYW1p
bHkgfHwgaXNGaWxlKSAmJiBwYXRoRW5kID09IHBhdGhTdGFydCkKLSAgICAgICAgKnArKyA9ICcv
JzsKLQotICAgIC8vIGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmICgh
aGllcmFyY2hpY2FsKQotICAgICAgICBlc2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0
KHAsIHVybCArIHBhdGhTdGFydCwgcGF0aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSBpZiAo
IWhhc1NsYXNoRG90T3JEb3REb3QodXJsKSkKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFy
cyhwLCB1cmwgKyBwYXRoU3RhcnQsIHBhdGhFbmQgLSBwYXRoU3RhcnQpOwotICAgIGVsc2Ugewot
ICAgICAgICBDaGFyQnVmZmVyIHBhdGhCdWZmZXIocGF0aEVuZCAtIHBhdGhTdGFydCArIDEpOwot
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gY29weVBhdGhSZW1vdmluZ0RvdHMocGF0aEJ1ZmZlci5k
YXRhKCksIHVybCwgcGF0aFN0YXJ0LCBwYXRoRW5kKTsKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdC
YWRDaGFycyhwLCBwYXRoQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBtX3Bh
dGhFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIGFm
dGVyIHRoZSBsYXN0IHNsYXNoIGluIHRoZSBwYXRoLCBvcgotICAgIC8vIHRoZSBwb3NpdGlvbiBi
ZWZvcmUgdGhlIHBhdGggaWYgdGhlcmUgYXJlIG5vIHNsYXNoZXMgaW4gaXQuCi0gICAgaW50IGk7
Ci0gICAgZm9yIChpID0gbV9wYXRoRW5kOyBpID4gbV9wb3J0RW5kOyAtLWkpIHsKLSAgICAgICAg
aWYgKGJ1ZmZlcltpIC0gMV0gPT0gJy8nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IG1fcGF0aEFmdGVyTGFzdFNsYXNoID0gaTsKLQotICAgIC8vIGFkZCBxdWVyeSwgZXNjYXBpbmcg
YmFkIGNoYXJhY3RlcnMKLSAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHF1ZXJ5
U3RhcnQsIHF1ZXJ5RW5kIC0gcXVlcnlTdGFydCk7Ci0gICAgbV9xdWVyeUVuZCA9IHAgLSBidWZm
ZXIuZGF0YSgpOwotCi0gICAgLy8gYWRkIGZyYWdtZW50LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVy
cwotICAgIGlmIChmcmFnbWVudEVuZCAhPSBxdWVyeUVuZCkgewotICAgICAgICAqcCsrID0gJyMn
OwotICAgICAgICBlc2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIGZy
YWdtZW50U3RhcnQsIGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCk7Ci0gICAgfQotICAgIG1f
ZnJhZ21lbnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIEFTU0VSVChwIC0gYnVmZmVy
LmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLSAgICBBU1NFUlQo
YnVmZmVyLnNpemUoKSA+IDApOwotCi0gICAgLy8gSWYgd2UgZGlkbid0IGVuZCB1cCBhY3R1YWxs
eSBjaGFuZ2luZyB0aGUgb3JpZ2luYWwgc3RyaW5nIGFuZAotICAgIC8vIGl0IHdhcyBhbHJlYWR5
IGluIGEgU3RyaW5nLCByZXVzZSBpdCB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLgotICAgIGlm
IChvcmlnaW5hbFN0cmluZyAmJiBlcXVhbChvcmlnaW5hbFN0cmluZy0+aW1wbCgpLCBidWZmZXIu
ZGF0YSgpLCBtX2ZyYWdtZW50RW5kKSkKLSAgICAgICAgbV9zdHJpbmcgPSAqb3JpZ2luYWxTdHJp
bmc7Ci0gICAgZWxzZQotICAgICAgICBtX3N0cmluZyA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBt
X2ZyYWdtZW50RW5kKTsKLQotICAgIG1faXNWYWxpZCA9IHRydWU7Ci19Ci0KLWJvb2wgZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQot
ewotICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0
cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNv
bnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgaWYgKGEubV9zY2hlbWVFbmQgIT0g
Yi5tX3NjaGVtZUVuZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGhvc3RTdGFy
dEEgPSBhLmhvc3RTdGFydCgpOwotICAgIGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVuZCgpIC0g
aG9zdFN0YXJ0QTsKLSAgICBpbnQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgaW50
IGhvc3RMZW5ndGhCID0gYi5ob3N0RW5kKCkgLSBiLmhvc3RTdGFydCgpOwotICAgIGlmIChob3N0
TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
Q2hlY2sgdGhlIHNjaGVtZQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsg
KytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0
U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCi17Ci0gICAg
Q1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKLQotICAgIENoYXJCdWZm
ZXIgYnVmZmVyKGFzVVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKLSAgICBjaGFyKiBwID0gYnVmZmVy
LmRhdGEoKTsKLQotICAgIGNvbnN0IGNoYXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Ci0gICAgY29u
c3QgY2hhciogc3RyRW5kID0gc3RyICsgYXNVVEY4Lmxlbmd0aCgpOwotICAgIHdoaWxlIChzdHIg
PCBzdHJFbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwotICAgICAgICBp
ZiAoaXNCYWRDaGFyKGMpKQotICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIEFTU0VSVChw
IC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLQot
ICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQot
Ci0vLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2
ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0
IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KLXN0YXRpYyB2b2lkIGFwcGVuZEVuY29kZWRI
b3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNpZ25lZCBz
dHJMZW4pCi17Ci0gICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1l
bmNvZGVkIG5hbWUuCi0gICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ug
d29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgotICAg
IGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKLQotICAgIGlmIChz
dHJMZW4gPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3Ry
LCBzdHJMZW4pKSB7Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgIFVDaGFyIGhvc3Ru
YW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0g
VV9aRVJPX0VSUk9SOwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5h
X0lETlRvQVNDSUkoc3RyLCBzdHJMZW4sIGhvc3RuYW1lQnVmZmVyLAotICAgICAgICBob3N0bmFt
ZUJ1ZmZlckxlbmd0aCwgVUlETkFfQUxMT1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsKLSAgICBp
ZiAoZXJyb3IgPT0gVV9aRVJPX0VSUk9SKQotICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1l
QnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9p
ZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxlbiwg
VmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4mIG5hbWVSYW5nZXMpCi17Ci0gICAgLy8gSW4gYSBtYWls
dG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdp
dGggYSAnPicgb3IgJywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4KLSAgICAv
LyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNv
bmZ1c2UgdXMuCi0gICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBh
c3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCi0KLSAgICBu
YW1lUmFuZ2VzLmNsZWFyKCk7Ci0KLSAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKDEpIHsKLSAg
ICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAg
ICAgICAgaW50IGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVu
LCBwLCAiXCJAPyIpOwotICAgICAgICBpZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09IC0xKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1lT3JTdHJp
bmdTdGFydF07Ci0gICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwotCi0gICAg
ICAgIGlmIChjID09ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYyA9
PSAnQCcpIHsKLSAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAgICAg
ICAgIGludCBob3N0bmFtZVN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGludCBob3N0bmFtZUVuZCA9
IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiPiw/Iik7Ci0gICAgICAgICAgICBib29sIGRv
bmU7Ci0gICAgICAgICAgICBpZiAoaG9zdG5hbWVFbmQgPT0gLTEpIHsKLSAgICAgICAgICAgICAg
ICBob3N0bmFtZUVuZCA9IHN0ckxlbjsKLSAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5kOwotICAg
ICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
bmFtZVJhbmdlcy5hcHBlbmQobWFrZV9wYWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1lRW5kKSk7
Ci0KLSAgICAgICAgICAgIGlmIChkb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAg
ICAgIEFTU0VSVChjID09ICciJyk7Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAg
ICAgICAgIGludCBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RPZihzdHIs
IHN0ckxlbiwgcCwgIlwiXFwiKTsKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rl
ck9yU3RyaW5nRW5kID09IC0xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgICAgICBjID0gc3RyW2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Ci0gICAgICAg
ICAgICAgICAgcCA9IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZy
b20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAgICAg
ICAgICAgIGlmIChjID09ICciJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFT
U0VSVChjID09ICdcXCcpOwotICAgICAgICAgICAgICAgIGlmIChwID09IHN0ckxlbikKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgKytwOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBmaW5kSG9zdG5hbWVJbkhp
ZXJhcmNoaWNhbFVSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0YXJ0T2Zm
c2V0LCBpbnQmIGVuZE9mZnNldCkKLXsKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBo
aWVyYXJjaGljYWwgVVJMLgotICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2Us
IHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLCBhbmQKLSAgICAvLyB0aGlzIHNob3Vs
ZCBiZSB0aGUgZmlyc3QgY29sb24gaW4gdGhlIHN0cmluZy4KLSAgICAvLyBJdCBlbmRzIHdpdGgg
dGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVuZGluZyBj
aGFyYWN0ZXIuCi0gICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBw
YXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBpbnQgc2VwYXJhdG9yID0g
ZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIDAsICI6Iik7Ci0gICAgaWYgKHNlcGFyYXRvciA9PSAt
MSB8fCBzZXBhcmF0b3IgKyAyID49IHN0ckxlbiB8fAotICAgICAgICBzdHJbc2VwYXJhdG9yICsg
MV0gIT0gJy8nIHx8IHN0cltzZXBhcmF0b3IgKyAyXSAhPSAnLycpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8g
YXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgotICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIo
c3RyWzBdKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwg
c2VwYXJhdG9yOyArK2kpIHsKLSAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ldKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTdGFydCBhZnRlciB0aGUg
c2VwYXJhdG9yLgotICAgIGludCBhdXRob3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7Ci0KLSAg
ICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KLSAgICBpbnQgaG9zdG5hbWVFbmQgPSBz
dHJMZW47Ci0gICAgZm9yIChpbnQgaSA9IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVuOyArK2kp
IHsKLSAgICAgICAgVUNoYXIgYyA9IHN0cltpXTsKLSAgICAgICAgaWYgKGMgPT0gJzonIHx8IChp
c1BhdGhTZWdtZW50RW5kQ2hhcihjKSAmJiBjICE9IDApKSB7Ci0gICAgICAgICAgICBob3N0bmFt
ZUVuZCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8v
IEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KLSAgICBpbnQgdXNlcklu
Zm9UZXJtaW5hdG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0YXJ0LCAi
QCIpOwotICAgIGludCBob3N0bmFtZVN0YXJ0OwotICAgIGlmICh1c2VySW5mb1Rlcm1pbmF0b3Ig
PT0gLTEgfHwgdXNlckluZm9UZXJtaW5hdG9yID4gaG9zdG5hbWVFbmQpCi0gICAgICAgIGhvc3Ru
YW1lU3RhcnQgPSBhdXRob3JpdHlTdGFydDsKLSAgICBlbHNlCi0gICAgICAgIGhvc3RuYW1lU3Rh
cnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IgKyAxOwotCi0gICAgc3RhcnRPZmZzZXQgPSBob3N0bmFt
ZVN0YXJ0OwotICAgIGVuZE9mZnNldCA9IGhvc3RuYW1lRW5kOwotICAgIHJldHVybiB0cnVlOwot
fQotCi0vLyBDb252ZXJ0cyBhbGwgaG9zdG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBpbnB1dCB0
byBwdW55Y29kZSwgcHJlc2VydmluZyB0aGUKLS8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNoYW5nZWQu
IFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUgbnVsbC10ZXJtaW5hdGVkLgotc3RhdGljIHZvaWQgZW5j
b2RlSG9zdG5hbWVzKGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0KQotewot
ICAgIG91dHB1dC5jbGVhcigpOwotCi0gICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFpbHRvIikp
IHsKLSAgICAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7Ci0gICAg
ICAgIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3Ro
KCksIGhvc3RuYW1lUmFuZ2VzKTsKLSAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdlcy5zaXpl
KCk7Ci0gICAgICAgIGludCBwID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyAr
K2kpIHsKLSAgICAgICAgICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5hbWVSYW5n
ZXNbaV07Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBy
LmZpcnN0IC0gcCk7Ci0gICAgICAgICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0cHV0LCAm
c3RyLmNoYXJhY3RlcnMoKVtyLmZpcnN0XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKLSAgICAgICAg
ICAgIHAgPSByLnNlY29uZDsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGlzIHdpbGwgY29weSBl
aXRoZXIgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCi0gICAgICAg
IC8vIHdob2xlIHRoaW5nIGlmIHRoZXJlIGlzIG5vIGhvc3RuYW1lLgotICAgICAgICBvdXRwdXQu
YXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBpbnQgaG9zdFN0YXJ0LCBob3N0RW5kOwotICAgICAgICBpZiAoZmluZEhv
c3RuYW1lSW5IaWVyYXJjaGljYWxVUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBo
b3N0U3RhcnQsIGhvc3RFbmQpKSB7Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFy
YWN0ZXJzKCksIGhvc3RTdGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KLSAgICAgICAgICAgIGFw
cGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RTdGFydF0s
IGhvc3RFbmQgLSBob3N0U3RhcnQpOwotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgmc3RyLmNo
YXJhY3RlcnMoKVtob3N0RW5kXSwgc3RyLmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFmdGVyIGhv
c3RuYW1lLgotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm8gaG9zdG5hbWUgdG8g
ZW5jb2RlLCByZXR1cm4gdGhlIGlucHV0LgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHIu
Y2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4
dEVuY29kaW5nJiBlbmNvZGluZywgQ2hhckJ1ZmZlciYgb3V0cHV0KQotewotICAgIFVDaGFyQnVm
ZmVyIHM7Ci0gICAgZW5jb2RlSG9zdG5hbWVzKHJlbCwgcyk7Ci0KLSAgICBUZXh0RW5jb2Rpbmcg
cGF0aEVuY29kaW5nKFVURjhFbmNvZGluZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5jb2RlZCBh
cyBVVEYtODsgb3RoZXIgcGFydHMgbWF5IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgotCi0gICAgaW50
IHBhdGhFbmQgPSAtMTsKLSAgICBpZiAoZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYmIGVuY29k
aW5nLmlzVmFsaWQoKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJvdG9jb2xJ
cyhyZWwsICJkYXRhIikgJiYgIXByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKLSAgICAgICAg
Ly8gRmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBwYXRoRW5k
IGF0IC0xIG90aGVyd2lzZS4KLSAgICAgICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMuZGF0YSgp
LCBzLnNpemUoKSwgMCwgIiM/Iik7Ci0gICAgfQotCi0gICAgaWYgKHBhdGhFbmQgPT0gLTEpIHsK
LSAgICAgICAgQ1N0cmluZyBkZWNvZGVkID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwg
cy5zaXplKCksIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIG91
dHB1dC5yZXNpemUoZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweShvdXRwdXQuZGF0
YSgpLCBkZWNvZGVkLmRhdGEoKSwgZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgQ1N0cmluZyBwYXRoRGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5kYXRhKCks
IHBhdGhFbmQsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIC8v
IFVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgaW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkgY29udmVy
dGluZwotICAgICAgICAvLyB0aGVtIHRvIFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcgbm9uLWFs
cGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgotICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2RlZCA9IGVu
Y29kaW5nLmVuY29kZShzLmRhdGEoKSArIHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVuZCwgVVJM
RW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLQotICAgICAgICBvdXRwdXQucmVzaXpl
KHBhdGhEZWNvZGVkLmxlbmd0aCgpICsgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKLSAgICAgICAg
bWVtY3B5KG91dHB1dC5kYXRhKCksIHBhdGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29kZWQubGVu
Z3RoKCkpOwotICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVkLmxlbmd0
aCgpLCBvdGhlckRlY29kZWQuZGF0YSgpLCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgIH0K
LSAgICBvdXRwdXQuYXBwZW5kKCdcMCcpOyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0cHV0Lgot
fQotCi1zdGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmIHN0
cmluZykKLXsKLSAgICBzaXplX3QgcXVlc3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycpOwotICAg
IHNpemVfdCBoYXNoUG9zID0gc3RyaW5nLmZpbmQoJyMnKTsKLSAgICB1bnNpZ25lZCBwYXRoRW5k
OwotCi0gICAgaWYgKGhhc2hQb3MgIT0gbm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09IG5vdEZv
dW5kIHx8IHF1ZXN0aW9uUG9zID4gaGFzaFBvcykpCi0gICAgICAgIHBhdGhFbmQgPSBoYXNoUG9z
OwotICAgIGVsc2UgaWYgKHF1ZXN0aW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAgICBwYXRoRW5k
ID0gcXVlc3Rpb25Qb3M7Ci0gICAgZWxzZQotICAgICAgICBwYXRoRW5kID0gc3RyaW5nLmxlbmd0
aCgpOwotCi0gICAgcmV0dXJuIHN0cmluZy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xcJywnLycp
ICsgc3RyaW5nLnN1YnN0cmluZyhwYXRoRW5kKTsKLX0KLQotYm9vbCBLVVJMOjppc0hpZXJhcmNo
aWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBBU1NFUlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0gICAgcmV0dXJu
IG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOwotfQotCi12b2lkIEtVUkw6OmNvcHlU
b0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1F
OiBUaGlzIHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBp
biB0aGUgc3RyaW5nIQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2gg
aXMgYWxsIEFTQ0lJLCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6
ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0
YSgpKTsKLX0KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBh
IG5ldyBzdHJpbmcgb2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsK
LSAgICBmb3IgKGludCBpID0gMDsgOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSkK
LSAgICAgICAgICAgIHJldHVybiB1cmxbaV0gPT0gJzonOwotICAgICAgICBpZiAoIWlzTGV0dGVy
TWF0Y2hJZ25vcmluZ0Nhc2UodXJsW2ldLCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotfQotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcm
IHByb3RvY29sKQotewotICAgIC8vIFJGQzM5ODY6IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyAi
KyIgLyAiLSIgLyAiLiIgKQotICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9j
b2wubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIocHJvdG9jb2xbaV0pKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmbmRl
ZiBOREVCVUcKLXZvaWQgS1VSTDo6cHJpbnQoKSBjb25zdAotewotICAgIHByaW50ZigiJXNcbiIs
IG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpzdHJp
cHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAotewotICAgIEtVUkwgcmVmZXJyZXIoKnRoaXMp
OwotICAgIHJlZmVycmVyLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3Mo
U3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAg
IHJldHVybiByZWZlcnJlci5zdHJpbmcoKTsKLX0KLQotYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgp
IGNvbnN0Ci17Ci0gICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVh
IHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGlu
ZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxv
ZwotICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBl
dmVuIHdpdGhvdXQgYSBkcm9wLgotICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJv
dG9jb2xJcygiZmlsZSIpOwotfQotCi1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKQotewotICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsK
LX0KLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
S1VSTCwgc3RhdGljQmxhbmtVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpKTsK
LSAgICByZXR1cm4gc3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgS1VSTDo6aXNCbGFua1VSTCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Ci19Ci0KLWJvb2wgaXNE
ZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCi17Ci0gICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xk
aW5nSGFzaD4gRGVmYXVsdFBvcnRzTWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVs
dFBvcnRzTWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKLSAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1w
dHkoKSkgewotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBk
ZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQo
ImZ0cCIsIDIxKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7Ci0gICAg
fQotICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwotfQotCi1i
b29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBw
b3J0ID0gdXJsLnBvcnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEg
cG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3Qg
bWF0Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAv
LyBTZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcu
aHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgYmxvY2tlZFBvcnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAg
ICA3LCAgICAvLyBlY2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAg
Ly8gc3lzdGF0Ci0gICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0
c3RhdAotICAgICAgICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAg
ICAgICAgMjAsICAgLy8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAg
ICAgICAgMjIsICAgLy8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwg
ICAvLyBTTVRQCi0gICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQot
ICAgICAgICA0MywgICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAg
ICA3NywgICAvLyBwcml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcs
ICAgLy8gdHR5bGluawotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8g
aG9zdHJpYW1lCi0gICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdw
cGl0bnAKLSAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgot
ICAgICAgICAxMTAsICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAx
MTMsICAvLyBhdXRoCi0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVj
cC1wYXRoCi0gICAgICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAg
ICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0g
ICAgICAgIDE0MywgIC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODks
ICAvLyBMREFQCi0gICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHBy
aW50IC8gZXhlYwotICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVs
bAotICAgICAgICA1MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAg
ICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIs
ICAvLyBuZXRuZXdzCi0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTU2LCAgLy8gcmVt
b3RlZnMKLSAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wKLSAgICAgICAgNTg3LCAgLy8gRVNNVFAK
LSAgICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KLSAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wK
LSAgICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKLSAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKLSAg
ICAgICAgMjA0OSwgLy8gTkZTCi0gICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29y
ZFNlcnZlciBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDQwNDUsIC8vIGxvY2tkCi0gICAgICAg
IDYwMDAsIC8vIFgxMQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0g
ICAgICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2
NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBB
bHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIs
IC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLSAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCogY29uc3QgYmxvY2tlZFBvcnRMaXN0RW5kID0gYmxvY2tlZFBv
cnRMaXN0ICsgV1RGX0FSUkFZX0xFTkdUSChibG9ja2VkUG9ydExpc3QpOwotCi0jaWZuZGVmIE5E
RUJVRwotICAgIC8vIFRoZSBwb3J0IGxpc3QgbXVzdCBiZSBzb3J0ZWQgZm9yIGJpbmFyeV9zZWFy
Y2ggdG8gd29yay4KLSAgICBzdGF0aWMgYm9vbCBjaGVja2VkUG9ydExpc3QgPSBmYWxzZTsKLSAg
ICBpZiAoIWNoZWNrZWRQb3J0TGlzdCkgewotICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNo
b3J0KiBwID0gYmxvY2tlZFBvcnRMaXN0OyBwICE9IGJsb2NrZWRQb3J0TGlzdEVuZCAtIDE7ICsr
cCkKLSAgICAgICAgICAgIEFTU0VSVCgqcCA8ICoocCArIDEpKTsKLSAgICAgICAgY2hlY2tlZFBv
cnRMaXN0ID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5v
dCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIGlmICghYmluYXJ5X3Nl
YXJjaChibG9ja2VkUG9ydExpc3QsIGJsb2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJM
cywgYXMgTW96aWxsYSBkb2VzLgotICAgIGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAm
JiB1cmwucHJvdG9jb2xJcygiZnRwIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJl
ciBpcyBpZ25vcmVkLgotICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKHVybC5wcm90
b2NvbElzKCJsb2NhbCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCkKLXsKLSAgICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJkYXRhIikpOwotICAgIHNpemVf
dCBpbmRleCA9IHVybC5maW5kKCc7Jyk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAg
ICAgICBpbmRleCA9IHVybC5maW5kKCcsJyk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7
Ci0gICAgICAgIGlmIChpbmRleCA+IDUpCi0gICAgICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmlu
Zyg1LCBpbmRleCAtIDUpLmxvd2VyKCk7Ci0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7IC8v
IERhdGEgVVJMcyB3aXRoIG5vIE1JTUUgdHlwZSBhcmUgY29uc2lkZXJlZCB0ZXh0L3BsYWluLgot
ICAgIH0KLSAgICByZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3Qg
S1VSTCYgdXJsKQotewotICAgIFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwucGF0aCgpKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGgu
c3Vic3RyaW5nKGRlY29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKLQotICAgIC8vIFdl
IGRvbid0IHVzZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNl
IGl0IHJldHVybnMgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAg
cmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7Ci19Ci0KLWJvb2wgS1VSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Ci19
Ci0KLVN0cmluZyBLVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQg
bGVuZ3RoKSBjb25zdAotewotICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0g
ICAgICAgIHJldHVybiBzdHJpbmcoKTsKLQotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0
aCAvIDIgLSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOwotfQot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBk
YTllNjUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMzU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEtVUkxfaAotI2RlZmluZSBLVVJM
X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJl
ZjsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1VSTDsKLSNlbmRp
ZgotCi0jaWYgUExBVEZPUk0oUVQpCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFVcmw7Ci1R
VF9FTkRfTkFNRVNQQUNFCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBU
ZXh0RW5jb2Rpbmc7Ci1zdHJ1Y3QgS1VSTEhhc2g7Ci0KLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFn
IHsgUGFyc2VkVVJMU3RyaW5nIH07Ci0KLWNsYXNzIEtVUkwgewotcHVibGljOgotICAgIC8vIEdl
bmVyYXRlcyBhIFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIEtVUkwoKSB7
IGludmFsaWRhdGUoKTsgfQotCi0gICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRlIFVS
TCBzdHJpbmcuIFRoZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgS1VSTDo6c3Ry
aW5nKCkgY2FsbGVkIG9uIGEgdmFsaWQKLSAgICAvLyBLVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJu
aWJsZSBmcm9tIHN1Y2guCi0gICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVh
dGVkbHkgcGFyc2luZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhl
IHBvc3NpYmxlIHNsb3ctZG93bnMuCi0gICAgS1VSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0
IFN0cmluZyYpOwotICAgIGV4cGxpY2l0IEtVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKSA6IG1fc3RyaW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVS
TCB3aXRoIHRoZSBnaXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFRleHRF
bmNvZGluZyBpcyB1c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBV
UkwgY2FuIGJlCi0gICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRp
dmUgVVJMIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBG
SVhNRTogSWYgdGhlIGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4g
aW52YWxpZAotICAgIC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0
byB0cmVhdCBhbGwgaW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJl
YXRlIG51bGwgYW5kIGVtcHR5IGJhc2UgVVJMcy4KLSAgICBLVVJMKGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpOwotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29u
c3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0KLSAgICBTdHJpbmcg
c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFi
b3ZlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAg
IC8vIGJhc2Ugb2YgbnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3Vs
dCBhcyB0aGUKLSAgICAvLyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCi0KLSAgICAvLyBN
YWtlcyBhIGRlZXAgY29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIEtVUkwg
b24gYW5vdGhlcgotICAgIC8vIHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0lt
cGwgb2JqZWN0cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29u
IHRvIGV2ZXIgcHJlZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIEtV
UkwgY29weSgpIGNvbnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlz
RW1wdHkoKSBjb25zdDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB5b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAg
ICAvLyBOb24taGllcmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0g
ICAgYm9vbCBjYW5TZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwo
KTsgfQotCi0gICAgYm9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFy
Y2hpY2FsKCk7IH0KLSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25z
dCBTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBTdHJp
bmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQp
IGNvbnN0OwotCi0gICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3Qo
KSBjb25zdDsKLSAgICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQ
b3J0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygp
IGNvbnN0OwotICAgIFN0cmluZyBwYXRoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29t
cG9uZW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZy
YWdtZW50SWRlbnRpZmllcigpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJp
bmcgZmlsZVN5c3RlbVBhdGgoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y3VycmVudCBVUkwncyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KLSAgICAvLyB0
ZXJtaW5hdGVkIEFTQ0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNl
LgotICAgIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90
b2NvbElzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJv
b2wgcHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUo
KSBjb25zdDsKLSAgICBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLQotICAgIGJvb2wgc2V0UHJv
dG9jb2woY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwot
Ci0gICAgdm9pZCByZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0
KTsKLQotICAgIC8vIElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgot
ICAgIHZvaWQgc2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVz
ZXIoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0g
ICAgLy8gSWYgeW91IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0
aGUgcmVzdWx0aW5nIHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgo
Y29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVz
dGlvbiBtYXJrLCBvciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3Uu
IFNldHRpbmcgdGhlIHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBp
biB0aGUKLSAgICAvLyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBx
dWVyeSwgcGFzcyBhIG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICB2b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSAg
ICB2b2lkIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgZnJpZW5kIGJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwot
Ci0gICAgZnJpZW5kIGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwm
LCBjb25zdCBLVVJMJik7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLSAgICB1
bnNpZ25lZCBob3N0RW5kKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25z
dDsKLSAgICB1bnNpZ25lZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEFmdGVy
TGFzdFNsYXNoKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3Qg
eyByZXR1cm4gc3RyaW5nKCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBLVVJMKENGVVJMUmVmKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKE1BQykKLSAgICBLVVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwq
KCkgY29uc3Q7Ci0jZW5kaWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5n
KigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFFU
KQotICAgIEtVUkwoY29uc3QgUVVybCYpOwotICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKLSNl
bmRpZgotCi0gICAgY29uc3QgS1VSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0K
LSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBi
b29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3Ry
aW5nJiwgY29uc3QgY2hhciopOwotICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0gICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9y
PGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhlIGdpdmVuIFVS
TC4gVGhlIG9yaWdpbmFsU3RyaW5nIHBhcmFtZXRlciBhbGxvd3MgZm9yIGFuCi0gICAgLy8gb3B0
aW1pemF0aW9uOiBXaGVuIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0
cmluZywKLSAgICAvLyBpdCB3aWxsIHVzZSB0aGUgcGFzc2VkLWluIHN0cmluZyBpbnN0ZWFkIG9m
IGFsbG9jYXRpbmcgYSBuZXcgb25lLgotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgdm9pZCBwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJp
bmcgPSAwKTsKLQotICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgU3RyaW5nIG1fc3Ry
aW5nOwotICAgIGJvb2wgbV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJc0luSFRU
UEZhbWlseSA6IDE7Ci0KLSAgICBpbnQgbV9zY2hlbWVFbmQ7Ci0gICAgaW50IG1fdXNlclN0YXJ0
OwotICAgIGludCBtX3VzZXJFbmQ7Ci0gICAgaW50IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaW50IG1f
aG9zdEVuZDsKLSAgICBpbnQgbV9wb3J0RW5kOwotICAgIGludCBtX3BhdGhBZnRlckxhc3RTbGFz
aDsKLSAgICBpbnQgbV9wYXRoRW5kOwotICAgIGludCBtX3F1ZXJ5RW5kOwotICAgIGludCBtX2Zy
YWdtZW50RW5kOwotfTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
Jik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0b3IhPShj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJM
Jik7Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYpOwotYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmKTsKLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKLQotLy8gRnVuY3Rp
b25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCi0vLyBUaGVzZSBhcmUgb3BlcmF0
aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFs
c28gZGlmZmVyZW50IGZyb20gdGhlIEtVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCBy
ZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhp
cyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBh
cmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KLQotYm9vbCBwcm90
b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1ib29sIHBy
b3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotYm9vbCBpc0RlZmF1bHRQ
b3J0Rm9yUHJvdG9jb2wodW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCk7Ci1ib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRo
YXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLWJvb2wgaXNWYWxp
ZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChj
b25zdCBTdHJpbmcmIHVybCk7Ci1TdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNvbnN0IEtVUkwmKTsK
LQotLy8gVW5lc2NhcGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgVVJMIGVzY2FwaW5nIHJ1bGVz
LCBnaXZlbiBhbiBvcHRpb25hbAotLy8gZW5jb2RpbmcgKGRlZmF1bHRpbmcgdG8gVVRGLTggb3Ro
ZXJ3aXNlKS4gREFOR0VSOiBJZiB0aGUgVVJMIGhhcyAiJTAwIgotLy8gaW4gaXQsIHRoZSByZXN1
bHRpbmcgc3RyaW5nIHdpbGwgaGF2ZSBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMhCi1TdHJpbmcg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGRlY29kZVVS
TEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQot
U3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci0KLS8v
IElubGluZXMuCi0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3Qg
S1VSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsK
LSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0
cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0
IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17
Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5z
dHJpbmcoKTsKLX0KLQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBm
dW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2
ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5l
IGJvb2wgS1VSTDo6aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxs
KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVy
biBtX3N0cmluZy5pc0VtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzVmFsaWQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6Omhh
c1BhdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOwotfQot
Ci1pbmxpbmUgYm9vbCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ob3N0
RW5kIDwgbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5Owot
fQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1
cm4gKG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFz
c3dvcmRFbmQgKyAxOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdEVuZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1faG9zdEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6OnBh
dGhTdGFydCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcG9ydEVuZDsKLX0KLQotaW5saW5lIHVu
c2lnbmVkIEtVUkw6OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBLVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BhdGhBZnRlckxhc3RTbGFzaDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIC8vIEtVUkxIYXNoIGlzIHRoZSBkZWZhdWx0
IGhhc2ggZm9yIFN0cmluZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0
SGFzaDsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpLVVJMPiB7
Ci0gICAgICAgIHR5cGVkZWYgV2ViQ29yZTo6S1VSTEhhc2ggSGFzaDsKLSAgICB9OwotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEtVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxI
YXNoLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZGQxM2IuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaAorKysgL2Rldi9udWxsCkBAIC0x
LDU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBLVVJMSGFzaF9oCi0jZGVmaW5lIEtVUkxIYXNoX2gKLQotI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHN0cnVjdCBLVVJM
SGFzaCB7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtVUkwmIGtleSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtVUkwmIGEsIGNv
bnN0IEtVUkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjpl
cXVhbChhLnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRp
YyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAg
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4gOiBTaW1wbGVDbGFzc0hh
c2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4geyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2Vu
ZGlmIC8vIEtVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xp
bmtIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAppbmRleCAy
NTczZjYzLi4yYjJlZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBAIC0y
Miw3ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
QEAgLTIyNiwxMyArMjI2LDEzIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hh
ciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPgotc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0
IEtVUkwmIGJhc2UsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgVmVjdG9yPENoYXJhY3RlclR5cGUsIDUxMj4mIGJ1ZmZlcikKK3N0YXRpYyBBTFdBWVNf
SU5MSU5FIHZvaWQgdmlzaXRlZFVSTElubGluZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IENoYXJh
Y3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPENoYXJhY3RlclR5
cGUsIDUxMj4mIGJ1ZmZlcikKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGhpcyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVVUkwuIEZhc3RlciB3aXRoIGxl
c3MgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBv
ZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdoYXQgS1VSTCBkb2VzLgorICAg
IC8vIEZJWE1FOiBJdCdzIG1pc3NpbmcgYSBsb3Qgb2Ygd2hhdCBjb21wbGV0ZVVSTCBkb2VzIGFu
ZCBhIGxvdCBvZiB3aGF0IFVSTCBkb2VzLgogICAgIC8vIEZvciBleGFtcGxlLCBpdCBkb2VzIG5v
dCBoYW5kbGUgaW50ZXJuYXRpb25hbCBkb21haW4gbmFtZXMgcHJvcGVybHkuCiAKICAgICAvLyBG
SVhNRTogSXQgaXMgd3JvbmcgdGhhdCB3ZSBkbyBub3QgZG8gZnVydGhlciBwcm9jZXNzaW5nIG9u
IHN0cmluZ3MgdGhhdCBoYXZlICI6Ly8iIGluIHRoZW06CkBAIC0yODQsMTIgKzI4NCwxMiBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29uc3QgS1VSTCYgYmFz
ZSwgY29uc3QgQ2hhcmFjdGVyVHlwZQogICAgIHJldHVybjsKIH0KIAotdm9pZCB2aXNpdGVkVVJM
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0
b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlcikKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1
ZmZlcikKIHsKICAgICByZXR1cm4gdmlzaXRlZFVSTElubGluZShiYXNlLCBhdHRyaWJ1dGVVUkwu
Y2hhcmFjdGVycygpLCBhdHRyaWJ1dGVVUkwubGVuZ3RoKCksIGJ1ZmZlcik7CiB9CiAKLUxpbmtI
YXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCkKK0xpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2Us
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKQogewogICAgIGlmIChhdHRyaWJ1dGVV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFz
aC5oCmluZGV4IDc4ZWFhM2EuLjI5YmNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xpbmtIYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2gu
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTYxLDEyICs2
MSwxMiBAQCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIC8vIGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3Ry
aW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2aXNpdGVkCiAvLyBsaW5rIGNvbG9yaW5nLiBJdCB3
aWxsIHJldHVybiB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAwIGlmIGF0dHJpYnV0ZVVSTCBkb2VzIG5v
dAogLy8gbG9vayBsaWtlIGEgcmVsYXRpdmUgVVJMLgotTGlua0hhc2ggdmlzaXRlZExpbmtIYXNo
KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKK0xp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKTsKIAogLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlhbGx5IHJlbGF0aXZl
IFVSTCAiYXR0cmlidXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KIC8vIGJhc2UgVVJMLCBh
bmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2
aXNpdGVkLgogLy8gSXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yIGluIGNhc2Ugb2YgZXJy
b3JzLgotdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKK3ZvaWQgdmlzaXRlZFVSTChj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8
VUNoYXIsIDUxMj4mKTsKIAogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdlMjc3Y2UuLjg5MjExZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0
IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKIH07CiAKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMIHsKLSAg
ICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9S
TShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgU3RyaW5nIHVzZXJWaXNpYmxlRm9ybTsKQEAg
LTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUpID0gMDsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVhZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
ID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYpID0gMDsKIH07CkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXSU4pCi0gICAgdm9pZCB3
cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7IC8vIEZJ
WE1FOiBMYXllcmluZyB2aW9sYXRpb24uCisgICAgdm9pZCB3cml0ZUltYWdlKE5vZGUqLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlv
bi4KICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENvcHlPckRl
bGV0ZSwgRnJhbWUqLCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPSBE
ZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSk7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAj
ZW5kaWYKIApAQCAtMjEwLDkgKzIxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgQ09NUHRyPElEYXRhT2JqZWN0PiBkYXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
T2JqZWN0OyB9CiAgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QqKTsK
LSAgICB2b2lkIHdyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiB3cml0YWJsZURh
dGFPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3dyaXRhYmxlRGF0YU9iamVjdDsgfQotICAgIHZv
aWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiwgY29uc3QgS1VSTCYpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChF
bGVtZW50KiwgY29uc3QgVVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5k
aWYKIAogcHJpdmF0ZToKQEAgLTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBm
aW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKICAgICB2b2lkIHdyaXRlUmFuZ2VUb0RhdGFPYmpl
Y3QoUmFuZ2UqLCBGcmFtZSopOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgotICAgIHZv
aWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCB3cml0ZVBsYWluVGV4dFRvRGF0YU9iamVjdChjb25zdCBTdHJpbmcmLCBTbWFydFJl
cGxhY2VPcHRpb24pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZFN0cmF0ZWd5LmgKaW5kZXggODE1YzNmOS4uYmZmMTZjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
ICAgIAogY2xhc3MgUGFzdGVib2FyZFN0cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsK
ICAgICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0g
MDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAw
OwogICAgIAogICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAg
dmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggMjM2MjU1My4uZGQ2ODY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQzLDcg
KzQzLDcgQEAgT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIENvbG9yOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgUGxhdGZvcm1Q
YXN0ZWJvYXJkIHsKIHB1YmxpYzoKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIGxvbmcg
Y2hhbmdlQ291bnQoKSBjb25zdDsKICAgICBDb2xvciBjb2xvcigpOwotICAgIEtVUkwgdXJsKCk7
CisgICAgVVJMIHVybCgpOwogCiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9h
cmQsIGFuZCByZXR1cm4gbmV3IGNoYW5nZSBjb3VudC4KICAgICBsb25nIGFkZFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TU0xLZXlHZW5lcmF0b3IuaAppbmRleCAwNjUxNTI2Li5kZjY4YmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAg
IC8vIFJldHVybnMgc3RyaW5ncyByZXByZXNlbnRpbmcga2V5IHNpemVzIHRoYXQgbWF5IGJlIHVz
ZWQKICAgICAvLyBmb3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmluZyBpcyBkaXNw
bGF5ZWQgYXMgdGhlIGRlZmF1bHQKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgPGtleWdlbj4gdGFnIGluIGZvcm0g
ZWxlbWVudHMuCiAgICAgLy8gUmV0dXJucyBhIHNpZ25lZCBjb3B5IG9mIHRoZSBjb21iaW5lZCBj
aGFsbGVuZ2Ugc3RyaW5nIGFuZCBwdWJsaWMKICAgICAvLyBrZXkgKGZyb20gYSBuZXdseSBnZW5l
cmF0ZWQga2V5IHBhaXIpLgotICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgS1VSTCYpOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmlu
ZywgY29uc3QgVVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCmluZGV4IDQ2OWY5ZGIuLjkyZDRm
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRl
Z3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgK
QEAgLTMwLDExICszMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgdWludDY0
X3QgTGlua0hhc2g7CiBjbGFzcyBQYWdlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xh
c3MgVmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzTGlu
a1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNp
dGVkKFBhZ2UqLCBMaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhQ
YWdlKiwgTGlua0hhc2gpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKaW5kZXggYzMwOTY0OS4uMjM4MmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnkuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBB
c3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNv
bnN0IFN0cmluZyYgc3RvcmEKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290
VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGlu
dCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0oY29uc3Qg
VVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBj
cmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6
b3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VD
bGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHNpemUsIGNyZWF0ZSwg
bmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCks
IHBsYXllcklkKTsKIH0KQEAgLTc4LDY3ICs3OCw2NyBAQCBBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojp+QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeSgpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJM
JiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5
c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJM
VG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpj
b3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0
ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25Q
YXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9p
ZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0
YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEo
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0
ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRm
b3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNs
dXNpdmUsIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsK
IH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29u
c3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhj
bHVzaXZlLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7
CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRo
KHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7
CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVh
ZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFk
RGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVj
dG9yeShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgp
LCBmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotU3RyaW5nIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgS1VSTCYg
dXJsKQorU3RyaW5nIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1Bh
dGgoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBTdHJp
bmcgZnVsbFBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDhmMzZlZDIuLmY0
Y2ZjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTQ4LDI0ICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShwbGF0Zm9ybUZp
bGVTeXN0ZW0pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShjb25z
dCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBpbnQgcGxheWVySWQsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25z
dCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxl
U3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxheWVySWQsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+QXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeSgpOwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IEtVUkwm
IHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBLVVJM
JiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRh
dGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBh
dGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0
aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVE
aXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rv
cnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kiwg
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3Qg
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcm90
ZWN0ZWQ6CiAgICAgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAgIHN0
YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJik7CisgICAgc3RhdGlj
IFN0cmluZyBmaWxlU3lzdGVtVVJMVG9QYXRoKGNvbnN0IFVSTCYpOwogCiAgICAgT3duUHRyPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBtX3BsYXRmb3JtRmlsZVN5c3RlbTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKaW5kZXggOTkxMGE2
OC4uZWJjNzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApA
QCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
ci5oIgogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUg
IlByb3RlY3Rpb25TcGFjZS5oIgogCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHR5cGVkZWYgSGFzaE1hcDxQYWdlQ2xpZW50QmxhY2tCZXJyeSosIGJvb2w+IFBhZ2VWaXNp
YmlsaXR5TWFwOwogCiBzdHJ1Y3QgQ2hhbGxlbmdlSW5mbyB7Ci0gICAgQ2hhbGxlbmdlSW5mbyhj
b25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAg
ICBDaGFsbGVuZ2VJbmZvKGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IENyZWRlbnRpYWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRC
bGFja0JlcnJ5Kik7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFByb3RlY3Rp
b25TcGFjZSBzcGFjZTsKICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CiAgICAgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDbGllbnQqIGF1dGhDbGllbnQ7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVj
dCBDaGFsbGVuZ2VJbmZvIHsKICAgICBib29sIGJsb2NrZWQ7CiB9OwogCi1DaGFsbGVuZ2VJbmZv
OjpDaGFsbGVuZ2VJbmZvKGNvbnN0IEtVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
YVNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKK0NoYWxsZW5nZUluZm86OkNo
YWxsZW5nZUluZm8oY29uc3QgVVJMJiBhVXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGFTcGFj
ZSwgY29uc3QgQ3JlZGVudGlhbCYgYUNyZWRlbnRpYWwsCiAgICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQqIGFuQXV0aENsaWVudCwgUGFnZUNsaWVudEJsYWNrQmVycnkqIGFQYWdlQ2xp
ZW50KQogICAgIDogdXJsKGFVcmwpCiAgICAgLCBzcGFjZShhU3BhY2UpCkBAIC0xNTMsNyArMTUz
LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VWaXNpYmlsaXR5
Q2hhbmdlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSoKICAgICBkLT5yZXN1bWVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjbGllbnQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlcjo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6
OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHNwYWNlLAogICAgIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiBhdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSog
cGFnZUNsaWVudCkKIHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChhdXRoQ2xpZW50KTsKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6Y2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpbwogICAgICAgICBkLT5zdGFydEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5leHQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlTWFuYWdlcjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFn
ZXI6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlLAogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBkLT5tX2FjdGl2ZUNoYWxsZW5nZSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaAppbmRleCAzYWZjOGU1Li44
NGQ3OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKQEAgLTI4LDcg
KzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXJQcml2YXRlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZXN1bHQgewpAQCAtMzgsNyArMzgsNyBAQCBlbnVtIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUmVzdWx0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQgewogcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VS
ZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKSA9IDA7CiB9OwogCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIgOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlRocmVhZFVuc2FmZVNpbmdsZXRvbjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI+IHsK
QEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZURlbGV0ZWQoUGFnZUNsaWVu
dEJsYWNrQmVycnkqKTsKICAgICB2b2lkIHBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSosIGJvb2wgdmlzaWJsZSk7CiAKLSAgICB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50
aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJy
eSopOworICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKICAgICB2b2lkIGNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Kik7Ci0gICAg
dm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7
CisgICAgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmKTsKIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCmluZGV4IDE3MjI2NTUuLjllYmY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTI0LDcgKzEyNCw3
IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVNjaGVtZShjb25zdCBTdHJpbmcmIHByb3RvY29s
KQogICAgIHJldHVybiBwcm90b2NvbCA9PSAiZmlsZSIgfHwgcHJvdG9jb2wgPT0gImxvY2FsIjsK
IH0KIAotdm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyIGZpbHRlcikKK3ZvaWQgQ29va2llTWFuYWdl
cjo6c2V0Q29va2llcyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2ll
RmlsdGVyIGZpbHRlcikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3lu
Yy1lZCBhdCB0aGlzIHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRX
aXRoRGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgQ29va2llRmlsdGUKICAgICB9CiB9CiAKLXZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29v
a2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29r
aWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29va2llRmlsdGVyIGZpbHRl
cikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlz
IHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2Ug
JiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tp
ZXMsIEMKICAgICB9CiB9CiAKLVN0cmluZyBDb29raWVNYW5hZ2VyOjpnZXRDb29raWUoY29uc3Qg
S1VSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAorU3RyaW5nIENvb2tpZU1hbmFn
ZXI6OmdldENvb2tpZShjb25zdCBVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QK
IHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlzIHBv
aW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYg
IW1fcHJpdmF0ZU1vZGUpCkBAIC0yMjMsNyArMjIzLDcgQEAgU3RyaW5nIENvb2tpZU1hbmFnZXI6
OmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2llcygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+ICZzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2ll
RmlsdGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyhW
ZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKIHsKICAgICAvLyBGb3JjZSBh
IHN5bmMgbG9hZCBvZiB0aGUgZGF0YWJhc2UKICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNl
ICYmICFtX3ByaXZhdGVNb2RlKQpAQCAtNTg5LDEzICs1ODksMTMgQEAgQ29va2llTWFwKiBDb29r
aWVNYW5hZ2VyOjpmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwg
Y29uc3QgUGEKICAgICByZXR1cm4gY3VyTWFwOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnJl
bW92ZUNvb2tpZVdpdGhOYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBDb29raWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIC8vIERpc3BhdGNoIHRoZSBt
ZXNzYWdlIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGNvb2tpZXMgYXJlIG5vdCBsb2FkZWQgaW4gbWVt
b3J5IHlldC4KICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2Rl
KSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6KkZ1bmN0
aW9uVHlwZSkoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgICAgICB0eXBlZGVmIHZv
aWQgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OipGdW5jdGlvblR5cGUpKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpOwogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBlLCBDb29raWVN
YW5hZ2VyLCBjb25zdCBLVVJMLCBjb25zdCBTdHJpbmc+KAorICAgICAgICAgICAgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlwZSwgQ29va2ll
TWFuYWdlciwgY29uc3QgVVJMLCBjb25zdCBTdHJpbmc+KAogICAgICAgICAgICAgICAgICZDb29r
aWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZSwgdGhpcywgdXJsLCBjb29raWVOYW1lKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCmluZGV4IDBkNjkwZmMuLmRhZjAxYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5o
CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogZW51bSBCYWNr
aW5nU3RvcmVSZW1vdmFsUG9saWN5IHsKICAgICBSZW1vdmVGcm9tQmFja2luZ1N0b3JlLApAQCAt
NzAsMTEgKzcwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGNhbkxvY2FsQWNjZXNzQWxsQ29va2ll
cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEFsbENvb2tpZXM7IH0KICAgICB2b2lkIHNl
dENhbkxvY2FsQWNjZXNzQWxsQ29va2llcyhib29sIGVuYWJsZWQpIHsgbV9zaG91bGREdW1wQWxs
Q29va2llcyA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7
Ci0gICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
Y29va2llcywgQ29va2llRmlsdGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7
CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBj
b29raWVzLCBDb29raWVGaWx0ZXIpOwogCiAgICAgdm9pZCByZW1vdmVBbGxDb29raWVzKEJhY2tp
bmdTdG9yZVJlbW92YWxQb2xpY3kpOwotICAgIHZvaWQgcmVtb3ZlQ29va2llV2l0aE5hbWUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCByZW1vdmVDb29r
aWVXaXRoTmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAg
dW5zaWduZWQgc2hvcnQgY29va2llc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQog
CkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZU1vZGUoYm9v
bCk7CiAKICAgICBTdHJpbmcgZ2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCk7Ci0gICAg
U3RyaW5nIGdldENvb2tpZShjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIpIGNv
bnN0OworICAgIFN0cmluZyBnZXRDb29raWUoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVG
aWx0ZXIpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBhbGwgY29va2llcyB0aGF0IGFyZSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBVUkwgYXMgcmF3IGNvb2tpZXMuCi0gICAgdm9pZCBn
ZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2ll
cywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29v
a2llcykgY29uc3Q7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+JiBzdGFja09mQ29va2llcywgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVG
aWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgQ29va2llTWFuYWdlciYgY29va2llTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCmluZGV4IGVhOTBjYTguLjE3
MDBmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nv
b2tpZVBhcnNlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTGln
aHR3ZWlnaHRTcGFjZShVQ2hhciBjKQogICAgIHJldHVybiAoYyA9PSAnICcgfHwgYyA9PSAnXHQn
KTsKIH0KIAotQ29va2llUGFyc2VyOjpDb29raWVQYXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENv
b2tpZVVSTCkKK0Nvb2tpZVBhcnNlcjo6Q29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENv
b2tpZVVSTCkKICAgICA6IG1fZGVmYXVsdENvb2tpZVVSTChkZWZhdWx0Q29va2llVVJMKQogewog
ICAgIG1fZGVmYXVsdENvb2tpZUhvc3QgPSBkZWZhdWx0Q29va2llVVJMLmhvc3QoKTsKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gQ29va2llUGFyc2VyOjpwYXJz
ZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5zaQogICAgICAgICBjYXNlICdQJzoK
ICAgICAgICAgY2FzZSAncCcgOiB7CiAgICAgICAgICAgICBpZiAobGVuZ3RoID49IDQgJiYgKChj
b29raWUuZmluZCgiYXRoIiwgdG9rZW5TdGFydFN2ZyArIDEsIGZhbHNlKSAtIHRva2VuU3RhcnRT
dmcpID09IDEpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcGF0aCB0byBiZSBk
ZWNvZGVkIHRvIG1hdGNoIHRob3NlIHJldHVybmVkIGZyb20gS1VSTDo6cGF0aCgpLgorICAgICAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHBhdGggdG8gYmUgZGVjb2RlZCB0byBtYXRjaCB0aG9z
ZSByZXR1cm5lZCBmcm9tIFVSTDo6cGF0aCgpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRo
IGF0dHJpYnV0ZSBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0
ZXJzLiBGb3J0dW5hdGVseQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwZXJj
ZW50LWVuY29kZWQgY2hhcmFjdGVycywgZGVjb2RpbmcgdGhlIHVybCBpcyBhIG5vLW9wLgogICAg
ICAgICAgICAgICAgIHJlcy0+c2V0UGF0aChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGFyc2Vk
VmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZVBhcnNlci5oCmluZGV4IGM5NDRmODYuLjJiMGI1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaApAQCAtMjcsNyArMjcsNyBAQAog
I2lmbmRlZiBDb29raWVQYXJzZXJfaAogI2RlZmluZSBDb29raWVQYXJzZXJfaAogCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhcnNlZENvb2tpZTsKIAog
Y2xhc3MgQ29va2llUGFyc2VyIHsKIHB1YmxpYzoKLSAgICBDb29raWVQYXJzZXIoY29uc3QgS1VS
TCYgZGVmYXVsdENvb2tpZVVSTCk7CisgICAgQ29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVs
dENvb2tpZVVSTCk7CiAgICAgfkNvb2tpZVBhcnNlcigpOwogCiAgICAgLy8gUGFyc2VzIGEgc2Vx
dWVuY2Ugb2YgIkNvb2tpZToiIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgY29va2llcy4K
QEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogY3VyVGltZSwgc3RhcnQs
IGVuZCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZW1vdmVkLiBBbmQgdGhpcyBtZXRob2QgY2FuIGJl
IHB1YmxpYy4KICAgICBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gcGFyc2VPbmVDb29raWUoY29u
c3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBj
dXJUaW1lKTsKIAotICAgIEtVUkwgbV9kZWZhdWx0Q29va2llVVJMOworICAgIFVSTCBtX2RlZmF1
bHRDb29raWVVUkw7CiAgICAgU3RyaW5nIG1fZGVmYXVsdENvb2tpZUhvc3Q7CiAgICAgYm9vbCBt
X2RlZmF1bHREb21haW5Jc0lQQWRkcmVzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0RPTUZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3Bw
CmluZGV4IGMyYTJiMjQuLmNmZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBA
IC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotS1VSTCBET01GaWxlU3lz
dGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dAorVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRl
KGZ1bGxQYXRoKSk7CiAKQEAgLTM4LDcgKzM4LDcgQEAgS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6
Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAogICAgIHJl
dHVybiBtX2NvbnRleHQtPmNvbXBsZXRlVVJMKG1fZmlsZXN5c3RlbVJvb3RVUkwuc3RyaW5nKCkg
KyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRoKSk7CiB9CiAKLWJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiB1cmwsIEZpbGVT
eXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQorYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlw
ZSwgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJmaWxlc3lz
dGVtIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBET01G
aWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5
c3RlbVR5cGUmIHR5cGUKIAogICAgICAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwucGF0aCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBLVVJMIG9yaWdpblVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybC5wYXRoKCkpOworICAgICAgICBVUkwgb3JpZ2luVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsLnBhdGgoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoID0gZGVjb2RlVVJM
RXNjYXBlU2VxdWVuY2VzKG9yaWdpblVSTC5wYXRoKCkpOwogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3Rl
bUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2Nh
bEZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBiZThkMWM4Li5kNGQxMmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9j
YWxGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJG
aWxlU3lzdGVtQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGlj
IHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBiYXNlUGEKICAgICBpZiAodHlwZSA9PSBGaWxlU3lzdGVtVHlwZUlzb2xhdGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGNvbnRleHQtPnVybCgpOworICAg
IFVSTCB1cmwgPSBjb250ZXh0LT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJs
LnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBi
YXNlUGEKICAgICBidWlsZGVyLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsKICAgICBidWlsZGVyLmFw
cGVuZCh1cmwuc3RyaW5nKCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGZpbGVTeXN0ZW1UeXBlU3Ry
aW5nKHR5cGUpKTsKLSAgICBLVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWls
ZGVyLnRvU3RyaW5nKCkpOworICAgIFVSTCByb290VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwo
YnVpbGRlci50b1N0cmluZygpKTsKICAgICBBU1NFUlQocm9vdFVSTC5pc1ZhbGlkKCkpOwogCiAg
ICAgLy8gVE9ETzogQXNrIHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBlcm1pc3Npb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0Jl
cnJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFj
a0JlcnJ5LmgKaW5kZXggZDQwZWY4Yi4uNzM0ZGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnkuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDsKIGNsYXNz
IENyZWRlbnRpYWw7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
fQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlh
bG9nKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3Bh
Y2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOwogICAg
IHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5vdGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25zdCBXZWJD
b3JlOjpDcmVkZW50aWFsJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcAppbmRleCBjZmE3NDM0Li44YzE4NjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tp
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29r
aWUuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiUGFyc2VkQ29va2llLmgiCiAKICNp
bmNsdWRlICJDb29raWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L1BhcnNlZENvb2tpZS5oCmluZGV4IGJjYzc5MTYuLjU2YzUyOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaApAQCAt
MzcsNyArMzcsNyBAQCBjbGFzcyBTdHJpbmc7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvb2tp
ZSBpbnRlcm5hbGx5CiAvLyBJdCBjYW4gZWl0aGVyIGJlIGNyZWF0ZWQgYnkgdGhlIENvb2tpZVBh
cnNlciB3aGljaCB3aWxsIHRoZW4gZmlsbCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcAppbmRleCAw
YjUzZTFlLi5mMjVlZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtMjEsNyArMjEsNyBA
QAogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTQ1LDcg
KzQ1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNsaXBib2FyZDo6Y2xlYXJDbGlwYm9hcmQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqLCBLVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKK3ZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcy5oCmluZGV4IDFhZmI1ZjUuLjM0MDQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1X
ZWJGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBBc3luY0ZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3MgewogcHVibGljOgotICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0
IEtVUkwmIHJvb3RVUkwgPSBLVVJMKCkpCisgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29u
c3QgVVJMJiByb290VVJMID0gVVJMKCkpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tz
KQogICAgICAgICAsIG1fd3JpdGVyQ2xpZW50KDApCiAgICAgICAgICwgbV9yb290VVJMKHJvb3RV
UkwpCkBAIC03MCw3ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBBc3luY0ZpbGVXcml0ZXJDbGll
bnQqIG1fd3JpdGVyQ2xpZW50OwogCiBwcml2YXRlOgotICAgIEtVUkwgbV9yb290VVJMOworICAg
IFVSTCBtX3Jvb3RVUkw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5l
cmF0b3JCbGFja0JlcnJ5LmNwcAppbmRleCAxYTMxOTg3Li5lMWQzMzk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2Vu
ZXJhdG9yQmxhY2tCZXJyeS5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDcgKzMx
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgU3RyaW5nIGNvbnN0JiwgS1VSTCBjb25zdCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBTdHJpbmcgY29uc3QmLCBVUkwg
Y29uc3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggZGEzOTExNS4u
NTVmYTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBA
IC02OSw2NyArNjksNjcgQEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpk
ZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGkKICAgICBXZWJGaWxlU3lz
dGVtOjpkZWxldGVGaWxlU3lzdGVtKHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBh
dGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0
eXBlKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojptb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtV
UkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92
ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGlu
YXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRo
KHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNhbGxi
YWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5h
dGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5
c3RlbSwgY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAg
ICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRo
KSwgZmlsZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBjYWxsYmFja3MpOwogfQog
Ci12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lz
dGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpy
ZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3Rl
bS0+cmVtb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3Jt
RmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0s
IGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
IGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VS
TCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsK
ICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoZmlsZVN5c3RlbVVSTFRvUGF0aChw
YXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJM
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3Mp
CiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVS
TFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
S1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5maWxl
RXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZv
cm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwg
Y2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpy
ZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVXcml0
ZXJDbGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kiwg
Y29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQogewogICAgIFdlYkZpbGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9ybUZp
bGVTeXN0ZW0sIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5k
UmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVh
dGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwg
Y2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpv
cGVuRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgS1VSTCYgcm9v
dFVSTCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcg
c2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxl
U3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBVUkwmIHJvb3RVUkwsIGNv
bnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJv
b2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxl
U3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIHNp
emUsIGNyZWF0ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNh
bGxiYWNrcywgY29udGV4dCwgbW9kZSwgcm9vdFVSTCkpKTsKQEAgLTE0MSw2MiArMTQxLDYyIEBA
IHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbShX
b3JrZXJHbG9iYWxTY29wZSogY29udGV4CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxl
U3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIG5l
dyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNvbnRl
eHQsIG1vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRo
LCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVD
YWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5U
aHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlv
blBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0IFVS
TCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5U
aHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
Ojpjb3B5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgc291cmNlUGF0
aCwgZGVzdGluYXRpb25QYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1Rv
TWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OnJlbW92ZU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBh
dGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmls
ZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxl
KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVG
aWxlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVz
aXZlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tz
LCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5
T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZl
LCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBt
X2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFk
KGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Zmls
ZUV4aXN0c09uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5l
dyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29u
dGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQo
KSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVt
LmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNy
ZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAg
IHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmls
ZVN5c3RlbS5nZXQoKSwgY2xpZW50LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQsIG1fY29udGV4dCwgbV9tb2RlKSkpOwog
fQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25N
YWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21v
ZGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDE2
NTFhNWMuLjk0MWY3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5o
CkBAIC00MSwzOSArNDEsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoY29udGV4dCwgbW9kZSwgcGxhdGZvcm1G
aWxlU3lzdGVtKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV29y
a2VyR2xvYmFsU2NvcGUqLCBjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUs
IGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIs
IEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0
ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYg
bW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVG
aWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lz
dGVtVHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0
dWFsIH5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KCk7CiAgICAgdmlydHVhbCBib29s
IHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29u
c3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNv
bnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
YWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgs
IGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwot
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3Jp
dGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYg
c291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBz
b3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhp
c3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVh
ZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJD
bGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CiAKIHByaXZhdGU6CiAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShXb3JrZXJH
bG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKICAgICBzdGF0aWMg
dm9pZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwg
RmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVGaWxl
U3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
IGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlw
ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMg
dm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtV
UkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1cnNpdmVseU9uTWFp
blRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Oldl
YkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3J5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlz
dHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkRGlyZWN0b3J5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5
c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRl
U25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwm
IHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3Rh
dGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNv
bnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1h
aW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
U3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBB
c3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlU25hcHNob3RG
aWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBtX2NvbnRleHQ7CiAgICAgU3RyaW5nIG1fbW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCBiMzUwODJmLi5kZjExZDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC01NCwxMSArNTQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kj4gOgogCiB2b2lkIHBvc3RU
YXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4p
OwogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczogcHVibGljIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzLCBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGU6Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBLVVJMJiByb290VVJMID0gS1VSTCgpKQorICAgIFdv
cmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFVSTCYgcm9vdFVSTCA9IFVSTCgpKQogICAgICAgICA6
IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCkKICAg
ICAgICAgLCBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIoY29udGV4dCkKICAgICAgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nm
L0tVUkxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWI3Y2ZlLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSA8
Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VS
TChDRlVSTFJlZiB1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0
byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVS
TEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwotICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7Ci19Ci0K
LSNpZiAhUExBVEZPUk0oTUFDKQotUmV0YWluUHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVS
TCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBp
bnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5
dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8v
IHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAg
Y29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgS1VSTDo6
ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwg
PSBjcmVhdGVDRlVSTCgpOwotICAgIGlmICghY2ZVUkwpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBr
Q0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vsc2UKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5
bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENG
VVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNmVVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKLX0K
LQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5
c3RlbUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVt
RWZsLmNwcAppbmRleCBhNjYwOGJiLi44MGE1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcApAQCAtNjMsNjIgKzYzLDYyIEBA
IEFzeW5jRmlsZVN5c3RlbUVmbDo6fkFzeW5jRmlsZVN5c3RlbUVmbCgpCiB7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjptb3ZlKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6
Om1vdmUoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtRWZsOjpjb3B5KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNvcHkoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZs
OjpyZW1vdmUoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmUoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1FZmw6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVh
ZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVm
bDo6Y3JlYXRlRmlsZShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3Qg
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVE
aXJlY3RvcnkoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJlY3RvcnkoY29uc3Qg
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpmaWxlRXhp
c3RzKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OnJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkRGly
ZWN0b3J5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
Cit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFk
YXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5oCmluZGV4IDE5OWI3YzQuLjkzZTZiM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmgKQEAgLTQw
LDE4ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgQXN5bmNGaWxlU3lzdGVtRWZsKCk7CiAgICAgdmly
dHVhbCB+QXN5bmNGaWxlU3lzdGVtRWZsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25z
dCBLVVJMJiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRh
dGEoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0g
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVj
dG9yeShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5
RXhpc3RzKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0
ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmLCBjb25zdCBVUkwm
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVS
ZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmls
ZShjb25zdCBVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiwgYm9vbCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmls
ZUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29u
c3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3Jz
RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCmluZGV4
IDI2NDhmMWMuLmRhMmUyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9FcnJvcnNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNF
ZmwuY3BwCkBAIC05MCwyMSArOTAsMjEgQEAgUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0
IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGVycm9yTWUKIHsKICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCkt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihl
cnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1
bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckdlbmVyYWwsIGRvY3VtZW50
TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogVVJMKCksIGVycm9yTWVzc2FnZSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgUHJpbnRDb250ZXh0
KiBwcmludENvbnRleHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
cHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJO
b3RGb3VuZCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCks
IEFTQ0lJTGl0ZXJhbCgiUHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFsKCJQ
cmludGVyIG5vdCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdl
VG9QcmludChjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFp
blByaW50LCBQcmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1
bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwYWdlIHJh
bmdlIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50
RXJyb3JJbnZhbGlkUGFnZVJhbmdlLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51
cmwoKSA6IFVSTCgpLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcGFnZSByYW5nZSIpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCAxZjlkMGY1Li42YzJiNzJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApA
QCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZUUERpcmVj
dG9yeURvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01MSw3ICs1
MSw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLVN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQorU3RyaW5nIHNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJikKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBlYjUxMzYuLjk3
M2RiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBJbWFnZUJ1ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIFJvdW5kZWRS
ZWN0OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogICAgIGNsYXNzIFRleHRSdW47CiAgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CkBAIC00MDAsNyArNDAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7IH0KICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwg
ZmxvYXQgeSk7CiAKLSAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBVUkwmLCBjb25z
dCBJbnRSZWN0Jik7CiAKICAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CiAgICAgICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IDRhNTE1NTQuLjNiYzhiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKIHN0YXRp
YyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRT
aXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5l
Q2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7CiAKLXN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJl
c3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmLCBNZWRp
YVBsYXllckZhY3RvcnkqIGN1cnJlbnQgPSAwKTsKK3N0YXRpYyBNZWRpYVBsYXllckZhY3Rvcnkq
IGJlc3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYsIE1l
ZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9y
eSogbmV4dE1lZGlhRW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCk7CiAKIGVudW0g
UmVxdWVyeUVuZ2luZU9wdGlvbnMgeyBEb05vdFJlc2V0RW5naW5lcywgUmVzZXRFbmdpbmVzIH07
CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkK
ICAgICByZXR1cm4gY29kZWNzOwogfQogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0
TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIE1l
ZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKK3N0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJl
c3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiB7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTM1OSw3ICszNTksNyBAQCBNZWRpYVBsYXllcjo6fk1lZGlh
UGxheWVyKCkKICAgICBtX21lZGlhUGxheWVyQ2xpZW50ID0gMDsKIH0KIAotYm9vbCBNZWRpYVBs
YXllcjo6bG9hZChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCitib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQogewogICAgIG1fY29udGVudE1JTUVUeXBlID0gY29udGVudFR5cGUudHlwZSgp
Lmxvd2VyKCk7CiAgICAgbV9jb250ZW50VHlwZUNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRl
cihjb2RlY3MoKSk7CkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3QK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi1ib29sIE1lZGlhUGxheWVyOjpsb2FkKGNv
bnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQor
Ym9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxIVE1MTWVk
aWFTb3VyY2U+IG1lZGlhU291cmNlKQogewogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJj
ZTsKICAgICBtX2NvbnRlbnRNSU1FVHlwZSA9ICIiOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJl
VG9QbGF0Zm9ybVRleHR1cmUoY29udGV4dCwgdGV4dHVyZSwgbGV2ZWwsIHR5cGUsIGludGVybmFs
Rm9ybWF0LCBwcmVtdWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29u
dGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCitNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgU3RyaW5nIHR5
cGUgPSBjb250ZW50VHlwZS50eXBlKCkubG93ZXIoKTsKICAgICAvLyBUaGUgY29kZWNzIHN0cmlu
ZyBpcyBub3QgbG93ZXItY2FzZWQgYmVjYXVzZSBNUDQgdmFsdWVzIGFyZSBjYXNlIHNlbnNpdGl2
ZQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6a2V5RXJyb3IoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWQKICAgICAgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlFcnJvcih0aGlzLCBrZXlTeXN0ZW0s
IHNlc3Npb25JZCwgZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
cjo6a2V5TWVzc2FnZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5n
dGgsIGNvbnN0IEtVUkwmIGRlZmF1bHRVUkwpCit2b2lkIE1lZGlhUGxheWVyOjprZXlNZXNzYWdl
KGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3Qg
dW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJM
JiBkZWZhdWx0VVJMKQogewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAgICBt
X21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleU1lc3NhZ2UodGhpcywga2V5U3lzdGVt
LCBzZXNzaW9uSWQsIG1lc3NhZ2UsIG1lc3NhZ2VMZW5ndGgsIGRlZmF1bHRVUkwpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDJjY2M1
MTkuLmIzZDg4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZh
dGUuaCIKQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNZWRpYUtleUVycm9y
Q29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJyb3IsIE91dHB1
dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBr
ZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYg
Lyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywgTWVkaWFLZXlF
cnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IC8qIHN5c3RlbUNvZGUgKi8pIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcm
IC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8s
IGNvbnN0IEtVUkwmIC8qIGRlZmF1bHRVUkwgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3Rl
bSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNvbnN0IFVSTCYg
LyogZGVmYXVsdFVSTCAqLykgeyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVl
ZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0
cmluZyYgLyogc2Vzc2lvbklkICovLCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBpbml0RGF0YSAq
LywgdW5zaWduZWQgLyogaW5pdERhdGFMZW5ndGggKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlhIGVuZ2luZSBz
dXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9y
dGVkLCBNYXlCZVN1cHBvcnRlZCB9OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBLVVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsK
KyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiwgY29uc3Qg
TWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJs
ZSgpOwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+
Jik7CkBAIC0yODAsOSArMjgwLDkgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KTsKIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5cGUmLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IENv
bnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNv
dXJjZT4pOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNv
dXJjZT4pOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFk
ZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAg
ICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQg
c2hvcnQgc3lzdGVtQ29kZSk7Ci0gICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVz
c2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCk7Cisg
ICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2Fn
ZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKTsKICAgICBib29sIGtleU5lZWRlZChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIApA
QCAtNDk5LDcgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5ZXI+IG1fcmVs
b2FkVGltZXI7CiAgICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2
YXRlOwogICAgIE1lZGlhUGxheWVyRmFjdG9yeSogbV9jdXJyZW50TWVkaWFFbmdpbmU7Ci0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY29udGVudE1JTUVUeXBl
OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgIFN0cmluZyBtX2tleVN5c3Rl
bTsKQEAgLTUyNiw5ICs1MjYsOSBAQCBwcml2YXRlOgogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQ
bGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hT
ZXQ8U3RyaW5nPiYgdHlwZXMpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJM
RShFTkNSWVBURURfTUVESUFfVjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
KCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7Cit0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKTsKICNlbHNlCi10eXBlZGVmIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKK3R5cGVkZWYgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCk7CiAjZW5k
aWYKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUpKFZlY3Rv
cjxTdHJpbmc+Jik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAKaW5kZXggODFmNWJhMC4uODc0MjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGLmNwcAppbmRleCBjYWNkZGUzLi5iOTVlOTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAKICNlbHNlCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUxlZ2FjeUFWQ0YuaCIKICNlbmRpZgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgi
CiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mIHN1cHBvcgogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAK
IAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpCiB7CiAgICAgLy8gT25seSByZXR1cm4gIklz
U3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhl
cmUgaXMgbm8gd2F5IHRvIGFzayBpZiBpdCBzdXBwb3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1J
TUUgdHlwZSB1bnRpbCByZGFyOi8vODcyMTcxNSBpcyBmaXhlZC4KQEAgLTEyOTgsNyArMTI5OCw3
IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
CiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1
cmxSZWYgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVh
dGVDRlVSTCgpOwogCiAgICAgQVZDRlVSTEFzc2V0UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0
Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgp
LCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKICAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggZGM2MThkMS4uODU4YzUyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtV
UkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxM
b2FkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggYjVkMzk0OS4uYWI0OGQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2lu
ZSBzdXBwb3J0CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcm
IGNvZGVjcywgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBVUkwmKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5D
UllQVEVEX01FRElBX1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4
dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNv
bnN0IFVSTCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KaW5kZXggZmIwYzc4MC4uNGFiMGQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCkBAIC0zNyw3ICszNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJh
bmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdp
bi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJG
aWVsZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKICNl
bmRpZgogCi0gICAgTlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7
CisgICAgTlNVUkwgKmNvY29hVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBt
X2F2QXNzZXQgPSBhZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FV
Ukwgb3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwOTAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYg
c3VwcAogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNv
bnRhaW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwpAQCAtOTA1LDcgKzkwNSw3IEBAIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRl
ZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRnJvbTog
PGh0dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNy
eXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8v
IEluIGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0
aGlzIG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtMTExNyw3ICsxMTE3
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVT
ZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZB
c3NldC5nZXQoKSkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tBVkFzc2V0UmVzb2x2ZWRVUkwobV9hdkFz
c2V0LmdldCgpKSkpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSk7CiAgICAgcmV0
dXJuIHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4u
Z2V0KCkpOwogfQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhj
ZXB0aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmUK
IAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVy
OjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5n
dGhdKTsKICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdEFycmF5ID0gVWludDhBcnJh
eTo6Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7Ci0gICAgcGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtl
eVJlcXVlc3RBcnJheS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgS1VS
TCgpKTsKKyAgICBwbGF5ZXIoKS0+a2V5TWVzc2FnZShrZXlTeXN0ZW0sIHNlc3Npb25JRCwga2V5
UmVxdWVzdEFycmF5LT5kYXRhKCksIGtleVJlcXVlc3RBcnJheS0+Ynl0ZUxlbmd0aCgpLCBVUkwo
KSk7CiAKICAgICAvLyBNb3ZlIG93bmVyc2hpcCBvZiB0aGUgQVZBc3NldFJlc291cmNlTG9hZGlu
Z1JlcXVlc3Rmcm9tIHRoZSBrZXlJRFRvUmVxdWVzdE1hcCB0byB0aGUgc2Vzc2lvbklEVG9SZXF1
ZXN0TWFwOgogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnNldChzZXNzaW9uSUQsIGF2UmVx
dWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KaW5kZXggMjg3ZWU4MS4uNzU2MjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNl
TG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBpZiAobV9y
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0gW1ttX2F2
UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOworICAgIFVSTCByZXF1ZXN0VVJMID0gW1ttX2F2
UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxs
b3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRp
YWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBl
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA2YTRjZDcwLi4z
OTFmZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnkuY3BwCkBAIC0yMSw3ICsy
MSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGlj
c0NvbnRleHRCbGFja0JlcnJ5LmNwcAppbmRleCBlMmYxYzQzLi40YzAzNDZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29u
dGV4dEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0QmxhY2tCZXJyeS5jcHAKQEAgLTIxLDEwICsyMSwx
MCBAQAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYWRpZW50Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgpAQCAtMzg3LDcgKzM4Nyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRz
KCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChJTlRfTUlOIC8gMiwgSU5UX01J
TiAvIDIpLCBJbnRTaXplKElOVF9NQVgsIElOVF9NQVgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuY3BwCmluZGV4IGU0MWJlNmYuLjk2MDYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4m
IHR5cGVzKQogICAgICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5n
JiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJiB1cmwpCitNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNv
bnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICBib29sIGlzUlRTUCA9IHVybC5wcm90b2NvbElzKCJydHNwIik7CiAK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBX
VEY6OlN0cmluZyYgdXJsKQogICAgIFdURjo6U3RyaW5nIG1vZGlmaWVkVXJsKHVybCk7CiAKICAg
ICBpZiAobW9kaWZpZWRVcmwuc3RhcnRzV2l0aCgibG9jYWw6Ly8iKSkgewotICAgICAgICBLVVJM
IGt1cmwgPSBLVVJMKEtVUkwoKSwgbW9kaWZpZWRVcmwpOworICAgICAgICBVUkwga3VybCA9IFVS
TChVUkwoKSwgbW9kaWZpZWRVcmwpOwogICAgICAgICBrdXJsLnNldFByb3RvY29sKCJmaWxlIik7
CiAgICAgICAgIFdURjo6U3RyaW5nIHRlbXBQYXRoKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0
aW5nczo6aW5zdGFuY2UoKS0+YXBwbGljYXRpb25Mb2NhbERpcmVjdG9yeSgpLmNfc3RyKCkpOwog
ICAgICAgICB0ZW1wUGF0aC5hcHBlbmQoa3VybC5wYXRoKCkpOwpAQCAtMTU3LDggKzE1Nyw4IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCiAg
ICAgLy8gYWxyZWFkeSBkb25lIGEgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGZpbGVzeXN0ZW06IFVS
TCBhcyBwYXJ0IG9mIHRoZQogICAgIC8vIG1lZGlhIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0
aG0sIHdlIHNob3VsZCBiZSBPSyBoZXJlLgogICAgIGlmIChtb2RpZmllZFVybC5zdGFydHNXaXRo
KCJmaWxlc3lzdGVtOiIpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCBtb2Rp
ZmllZFVybCk7Ci0gICAgICAgIEtVUkwgbWVkaWFVUkw7CisgICAgICAgIFVSTCBrdXJsID0gVVJM
KFVSTCgpLCBtb2RpZmllZFVybCk7CisgICAgICAgIFVSTCBtZWRpYVVSTDsKICAgICAgICAgV1RG
OjpTdHJpbmcgZnNQYXRoOwogICAgICAgICBGaWxlU3lzdGVtVHlwZSBmc1R5cGU7CiAgICAgICAg
IFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQogCiAgICAgV1RGOjpT
dHJpbmcgY29va2llUGFpcnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICBjb29r
aWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgICAgICBjb29raWVQYWlycyA9IGNvb2tp
ZU1hbmFnZXIoKS5nZXRDb29raWUoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgV2l0aEh0dHBP
bmx5Q29va2llcyk7CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZp
ZWRVcmwsIG1fd2ViQ29yZVBsYXllci0+dXNlckFnZW50KCksIGNvb2tpZVBhaXJzKTsKIH0KIApA
QCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkJ1ZmZlcmluZyhi
b29sIGZsYWcpCiAKIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgZ2VuZXJhdGVQcm90ZWN0aW9uU3Bh
Y2VGcm9tTU1SQXV0aENoYWxsZW5nZShjb25zdCBNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxl
bmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENo
YWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdU
Rjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkpOwogICAgIEFTU0VSVCh1cmwu
aXNWYWxpZCgpKTsKIAogICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKSwgdXJs
LnBvcnQoKSwKQEAgLTczOSw3ICs3MzksNyBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIGdlbmVy
YXRlUHJvdGVjdGlvblNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2UoY29uc3QgTU1SQXV0aAogCiB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlvbk5lZWRlZChNTVJBdXRoQ2hh
bGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
V1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQ
YXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkp
OwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03NTUsNyAr
NzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0aGVudGljYXRpb25OZWVkZWQo
TU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKICAgICAgICAgdGhpcywgbV93ZWJDb3Jl
UGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxh
dGZvcm1QYWdlQ2xpZW50KCkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQordm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5vdGlmeUNoYWxsZW5nZVJlc3Vs
dChjb25zdCBVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewog
ICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CiAKQEAgLTc2Nyw3ICs3
NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvbgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6b25BdXRoZW50aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhD
aGFsbGVuZ2UpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBXVEY6OlN0
cmluZyhhdXRoQ2hhbGxlbmdlLnVybCgpLmNfc3RyKCkpKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVS
TFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKaW5kZXggYjM0NjViYi4uNTQ3YjFkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcm
LCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2
YXRlZEV2ZW50KGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25z
dCBXVEY6OlN0cmluZyYpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBvbkNyZWF0ZUhvbGVQdW5jaFJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0
cm95SG9sZVB1bmNoUmVjdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJl
c3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggYzdlYTc2ZC4uODQ5MDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApA
QCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9r
ZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVj
dCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0
NGJmMmQzLi5iMDgxNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBh
dHRlcm4uaCIKICNpbmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBmbG9hdCB3aWR0aCwgYm9vbAogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxp
YXMocGxhdGZvcm1Db250ZXh0KCksIHRydWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCAxYjdjNTc5Li4wMTA3MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVy
LmgiCkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyQW5k
UmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1
cmwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgIFN0cmluZyBj
bGVhblVybCh1cmwpOwogCiAgICAgLy8gQ2xlYW4gb3V0IGV2ZXJ5dGhpbmcgYWZ0ZXIgZmlsZTov
LyB1cmwgcGF0aC4KQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIEFTU0VSVChtX3BsYXlCaW4p
OwogCi0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOworICAgIG1fdXJsID0gVVJM
KFVSTCgpLCBjbGVhblVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgInVy
aSIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgSU5GT19NRURJQV9NRVNT
QUdFKCJMb2FkICVzIiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDI4LDggKzE0Mjgs
OCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigp
CiAgICAgICAgIC8vIEZvdW5kIGEgY2FuZGlkYXRlLiBuZXctbG9jYXRpb24gaXMgbm90IGFsd2F5
cyBhbiBhYnNvbHV0ZSB1cmwKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhl
IGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVl
IG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KLSAgICAgICAgS1VSTCBiYXNlVXJsID0gZ3N0X3VyaV9p
c192YWxpZChuZXdMb2NhdGlvbikgPyBLVVJMKCkgOiBtX3VybDsKLSAgICAgICAgS1VSTCBuZXdV
cmwgPSBLVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIGJhc2VVcmwgPSBn
c3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7CisgICAgICAgIFVS
TCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogCiAgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsKTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsK
QEAgLTE2NTMsNyArMTY1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWlt
ZVR5cGVDYWNoZSgpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICh0eXBlLmlz
TnVsbCgpIHx8IHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Oklz
Tm90U3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCmluZGV4IGQ3ZjZlZDYuLjI1YzljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0
cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKIAogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRl
OgogICAgIGd1aW50IG1fcmVhZHlUaW1lckhhbmRsZXI7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50
PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVzOwotICAg
IEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQaXRjaDsK
ICAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
bV9hdXRvQXVkaW9TaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCBmOGM3OTA0Li43OTY0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2Vi
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIEFTU0VSVCghcHJpdi0+
Y2xpZW50KTsKIAotICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAg
VVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02ODgs
NyArNjg4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5k
bGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBpZiAoIXVyaSkKICAgICAg
ICAgcmV0dXJuIFRSVUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCksIHVyaSk7CisgICAgVVJMIHVy
bChVUkwoKSwgdXJpKTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR1NUX1VSSV9F
UlJPUiwgR1NUX1VSSV9FUlJPUl9CQURfVVJJLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CkBA
IC03MzksNyArNzM5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RV
UklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlmICghdXJpKQogICAg
ICAgICByZXR1cm4gVFJVRTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwg
dXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52
YWxpZCBVUkkgJyVzJyIsIHVyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDcy
YjIyNTQuLmYzMGQxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03NSw5ICs3
NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093
blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwog
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMp
OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAg
c3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJik7CiAjZW5kaWYKIAogICAgIHN0
YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZjcyMmJkMC4uMGM4NGY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIK
QEAgLTI2NSw3ICsyNjUsNyBAQCBOU011dGFibGVEaWN0aW9uYXJ5ICpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6Y29tbW9uTW92aWVBdHRyaWJ1dGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIGtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIFVSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKTsKICAgICBOU1VSTCAqY29jb2FVUkwgPSBrVVJMOwogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKm1vdmllQXR0cmlidXRlcyA9IGNvbW1vbk1vdmllQXR0cmlidXRlcygpOyAgICAKICAgICBb
bW92aWVBdHRyaWJ1dGVzIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpRVE1vdmllVVJMQXR0cmli
dXRlXTsKQEAgLTE0NjIsNyArMTQ2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAgICAg
Y29uY2F0ZW5hdGVIYXNoU2V0cyhzdXBwb3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2FjaGUo
KSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBLVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
Y29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIg
aWYgdGhlcmUgaXMgbm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdh
eSB0byBhc2sgUVQgaWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUg
eWV0LgpAQCAtMTQ4MCw3ICsxNDgwLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKIH0KIAog
I2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIp
Ci1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpleHRl
bmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1
cHBvcnQgYW55IGVuY3J5dHBlZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRo
ZSBrZXlTeXN0ZW0gaXMgbm9uLU5VTEw6CiAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwg
IWtleVN5c3RlbS5pc0VtcHR5KCkpCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYg
KCFtX3F0TW92aWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwod2tR
VE1vdmllUmVzb2x2ZWRVUkwobV9xdE1vdmllLmdldCgpKSkpOworICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FU
TW92aWVSZXNvbHZlZFVSTChtX3F0TW92aWUuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmlu
ZyhtX21vdmllVVJMKTsKICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhv
c3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXgg
MTdkYzQxNC4uMWU2YmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCA3NWE2
ZjNlLi4yYzZlYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC04MCw3ICs4MCw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3Ry
aW5nPiAmc3VwcG9ydGVkKQogICAgIH0KIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29u
c3QgU3RyaW5nJiBjb2RlYywgY29uc3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiBtaW1lLCBj
b25zdCBTdHJpbmcmIGNvZGVjLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZS5zdGFydHNX
aXRoKCJhdWRpby8iKSAmJiAhbWltZS5zdGFydHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF0Ojpjb21taXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
ICAgICBtX3dlYkNvcmVQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCi0gICAg
S1VSTCBrVXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga1VybChQYXJzZWRVUkxT
dHJpbmcsIHVybCk7CiAgICAgY29uc3QgUVVybCByVXJsID0ga1VybDsKICAgICBjb25zdCBRU3Ry
aW5nIHNjaGVtZSA9IHJVcmwuc2NoZW1lKCkudG9Mb3dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQu
aAppbmRleCA3ZTM4OGM0Li4xM2U5MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsK
KyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNB
dmFpbGFibGUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAKaW5kZXggMGIzNTE4NC4uOWRkMjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApAQCAtMzUsNyArMzUs
NiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyUHJpdmF0ZVRhc2tUaW1lci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJR
VENGRGljdGlvbmFyeS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNvZnRMaW5raW5n
LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8QXNzZXJ0TWFjcm9zLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4
dC5oPgpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dDo6c2V0VXBDb29raWVzRm9yUXVpY2tUaW1lKGNvbnN0IFN0CiAgICAgaWYg
KCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5j
b29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgbW92aWVVUkwgPSBL
VVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwgbW92aWVVUkwgPSBVUkwoVVJMKCksIHVybCk7CiAg
ICAgVmVjdG9yPENvb2tpZT4gZG9jdW1lbnRDb29raWVzOwogICAgIGlmICghZ2V0UmF3Q29va2ll
cyhmcmFtZS0+ZG9jdW1lbnQoKSwgbW92aWVVUkwsIGRvY3VtZW50Q29va2llcykpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVp
Y2tUaW1lVmlzdWFsQ29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAKLU1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3Ms
IGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICAvLyBvbmx5IHJldHVy
biAiSXNTdXBwb3J0ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBh
cyB0aGVyZSBpcyBubyB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gIGV4
dGVuZGVkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmgKaW5kZXggNjYzMzRmMi4uMzljY2JhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCkBAIC0x
MjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRp
YyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxh
eWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+
JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNl
L0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5MTFjM2FkLi42ZTUxMjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFw
aGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9r
ZVRoaWNrbmVzcykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGlu
aywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlh
UGxheWVyUHJpdmF0ZVdpbkNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCmluZGV4IDAwOWYwZDQuLjQyZjY3M2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxh
eWVyUHJpdmF0ZVdpbkNFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5
ZXIqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+JiB0eXBlcyk7Ci0gICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBLVVJMJik7CisgICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBV
UkwmKTsKICAgICAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICB2aXJ0
dWFsIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJXaW5DRSI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5j
cHAKaW5kZXggNjZhZDY2Mi4uZmVhN2YzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTYyLDYzICs2Miw2MyBAQCBBc3lu
Y0ZpbGVTeXN0ZW1HdGs6On5Bc3luY0ZpbGVTeXN0ZW1HdGsoKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IEtVUkwmIHNvdXJj
ZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3Zl
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29uc3QgS1VS
TCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3Zl
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZW1vdmVSZWN1
cnNpdmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0
ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwg
Ym9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtR3RrOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxlRXhp
c3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmls
ZVN5c3RlbUd0azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUd0azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9p
ZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRl
cihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxl
U3lzdGVtR3RrOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUd0azo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3Rl
bUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5o
CmluZGV4IDM5ZjU3MzcuLmRhYTZlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKQEAgLTM0LDE3ICszNCwxNyBAQCBwdWJsaWM6CiAg
ICAgQXN5bmNGaWxlU3lzdGVtR3RrKCk7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3Rr
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURp
cmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwCmluZGV4IDBiZDMwNGIuLjE3OTAxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEYXRh
T2JqZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICAg
ICAgaWYgKGxpbmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
S1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwgPSBVUkwoVVJM
KCksIGxpbmUpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYg
KCFzZXRVUkwpIHsKICAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0
U3RyaW5nKQogICAgIH0KIH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91cmwgPSB1cmw7
CiAgICAgbV91cmlMaXN0ID0gdXJsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRGF0YU9iamVj
dEd0azo6Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKQogICAgIG1fdGV4dCA9ICIiOwogICAgIG1f
bWFya3VwID0gIiI7CiAgICAgbV91cmlMaXN0ID0gIiI7Ci0gICAgbV91cmwgPSBLVVJMKCk7Cisg
ICAgbV91cmwgPSBVUkwoKTsKICAgICBtX2ltYWdlID0gMDsKICAgICBtX3JhbmdlID0gMDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmluZGV4IDUyODFi
MWUuLmJjNTVjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRh
T2JqZWN0R3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RH
dGsuaApAQCAtMjAsNyArMjAsNyBAQAogI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gKIAogI2luY2x1
ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0zNiwxMyArMzYsMTMgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7CiAgICAgfQogCi0gICAgY29u
c3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmlMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV91cmlMaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVzOyB9CiAgICAgR2RrUGl4YnVmKiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJhbmdl
KFBhc3NSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlKSB7IG1fcmFuZ2UgPSBuZXdSYW5nZTsgfQogICAg
IHZvaWQgc2V0SW1hZ2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBtX2ltYWdlID0gbmV3SW1hZ2U7
IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBoYXNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV90ZXh0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wg
aGFzTWFya3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV9tYXJrdXAuaXNFbXB0eSgp
OyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgY29uc3QgeyByZXR1cm4gIW1fdXJpTGlzdC5pc0Vt
cHR5KCk7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsZW5hbWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5hbWVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFz
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgdm9pZCBjbGVhclVSSUxpc3Qo
KSB7IG1fdXJpTGlzdCA9ICIiOyB9Ci0gICAgdm9pZCBjbGVhclVSTCgpIHsgbV91cmwgPSBLVVJM
KCk7IH0KKyAgICB2b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IFVSTCgpOyB9CiAgICAgdm9pZCBj
bGVhckltYWdlKCkgeyBtX2ltYWdlID0gMDsgfQogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsK
QEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90ZXh0Owog
ICAgIFN0cmluZyBtX21hcmt1cDsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV91cmlMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAg
IEdSZWZQdHI8R2RrUGl4YnVmPiBtX2ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNzk3Yzc4Yi4uM2Y5ZGVhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmlu
ZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5h
bWVQb2xpY3ksIFN0cmluZyoKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAoZmlsZW5hbWVQb2xpY3kgIT0gQ29u
dmVydEZpbGVuYW1lcykgewotICAgICAgICBLVVJMIHVybChLVVJMKCksIG1fcGxhdGZvcm1EcmFn
RGF0YS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsKFVSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpKTsKICAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9FcnJvcnNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAKaW5kZXggYmE0N2UyYS4uM2NmNmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0Vycm9yc0d0ay5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCBSZXNvdXJjZUVycm9yIHByaW50
RXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4
dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtV
UkwoKSwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExv
YWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQog
CiBSZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCog
cHJpbnRDb250ZXh0KQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHBy
aW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZv
dW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRM
b2FkZXItPnVybCgpIDogS1VSTCgpLCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6
IFVSTCgpLCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZh
bGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsK
ICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1l
KCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBL
VVJMKCksIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJJbnZh
bGlkIHBhZ2UgcmFuZ2UiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhY2E1MTMyLi44
OGVlZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCkBAIC0zMSw5ICszMSw5IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9n
dGsuaD4KIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6
ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2d0a0Ns
aXBib2FyZCk7CiB9CiAKLXN0YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2Rl
KQorc3RhdGljIFVSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9kZSogbm9kZSkKIHsKICAgICAvLyBG
SVhNRTogTGF0ZXIgdGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgd2l0aCBDaHJvbWl1bSBzb21l
aG93LiBDaGFuY2VzIGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQgaXQuCiAgICAgQXRvbWljU3RyaW5n
IHVybFN0cmluZzsKQEAgLTIwMSwxMCArMjAxLDEwIEBAIHN0YXRpYyBLVVJMIGdldFVSTEZvcklt
YWdlTm9kZShOb2RlKiBub2RlKQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50
KG5vZGUpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwog
ICAgIH0KLSAgICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRv
Y3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVy
bFN0cmluZykpOworICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBub2Rl
LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyh1cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5v
ZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAgS1VSTCB1cmwgPSBnZXRV
UkxGb3JJbWFnZU5vZGUobm9kZSk7CisgICAgVVJMIHVybCA9IGdldFVSTEZvckltYWdlTm9kZShu
b2RlKTsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9kYXRhT2JqZWN0LT5z
ZXRVUkwodXJsLCB0aXRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXggZTM0YzFiYi4uYTBiZjg4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQz
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmKQogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggZDExNWQ2MS4uNzBhZjE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4
LDcgQEAKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNp
bXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVS
TC5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2lt
cG9ydCAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5OGNiY2NkLi44NWU5NTlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJv
YXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJDb2xvci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJJbWFnZS5oIgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTb2Z0
TGlua2luZy5oIgpAQCAtOTksOSArOTksOSBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNv
bG9yKCkKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OnVybCgpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewotICAgIHJldHVybiBLVVJM
KCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29w
eShjb25zdCBTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KaW5kZXggMTQ5M2FlNi4uMmUwNWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJGb250U2Vs
ZWN0b3IuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgi
CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50KE5TU3Ry
aW5nICpzdHJpbmcsIE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3AKICAgICAgICAgZHJh
d0F0UG9pbnQoc3RyaW5nLCB0ZXh0UG9pbnQsIGZvbnQsIHRvcENvbG9yKTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGb250UmVuZGVyaW5nTW9kZSkKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVuZGVyaW5nTW9kZSkKIHsK
ICAgICBOU1N0cmluZyAqbGFiZWwgPSBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpOwogICAgIE5T
VVJMICpjb2NvYVVSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzc1YzcuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJL
VVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvT2JqY1J1bnRp
bWVFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1LVVJMOjpLVVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklY
TUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVy
bEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCks
IHVybEJ5dGVzKTsKLSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwotfQotCi1LVVJMOjpvcGVy
YXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlk
Z2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9y
aWdpbmFsIHN0cmluZy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJp
cHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
Y3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6
OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwt
ZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYg
c3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6QCIiXSkuZ2V0KCkpOwotICAgIH0KLQotICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwot
ICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZm
ZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci19Ci0KLQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGU3YWQ2YTEuLmYzMWY0
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgogI2ltcG9ydCAiSFRNTE5h
bWVzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJM
LmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4
dHJhcy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMzgzLDcgKzM4Myw3IEBA
IHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVy
KQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNVUkxQYm9hcmRUeXBl
KSkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7
CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAg
ICAgIFN0cmluZyB0aXRsZSA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2Fy
ZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSAmJiBy
ZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IDQwYjQxZTguLjAzODc5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1w
b3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9yLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC05NCw3ICs5NCw3IEBAIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29s
b3IoKQogICAgICAgICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAy
NTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkp
OyAgICAKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitVUkwgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp1cmwoKQogewogICAgIHJldHVybiBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6
bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5kZXggZTU4ZDlhOS4uZGU4YjFiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTU0xLZXlH
ZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMpCiAg
ICAgc3VwcG9ydGVkS2V5U2l6ZXMuYXBwZW5kKGtleWdlbk1lbnVJdGVtNTEyKCkpOwogfQogCi1T
dHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUlu
ZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7ICAg
CiAgICAgLy8gVGhpcyBzd2l0Y2ggc3RhdGVtZW50IG11c3QgYWx3YXlzIGJlIHN5bmNlZCB3aXRo
IHRoZSBVSSBzdHJpbmdzIHJldHVybmVkIGJ5IGdldFN1cHBvcnRlZEtleVNpemVzLgogICAgIFVJ
bnQzMiBrZXlTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDllOGFkYjQuLjIzYWRiMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0
aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQzLDI1ICs0MywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0lj
ZVNlcnZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwg
Y29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJpLCBjb25z
dCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0ljZVNlcnZlcih1cmksIGNyZWRlbnRpYWwsIHVz
ZXJuYW1lKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflJUQ0ljZVNlcnZlcigpIHsgfQogCi0gICAg
Y29uc3QgS1VSTCYgdXJpKCkgeyByZXR1cm4gbV91cmk7IH0KKyAgICBjb25zdCBVUkwmIHVyaSgp
IHsgcmV0dXJuIG1fdXJpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsKCkgeyByZXR1
cm4gbV9jcmVkZW50aWFsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1c2VybmFtZSgpIHsgcmV0dXJu
IG1fdXNlcm5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBSVENJY2VTZXJ2ZXIoY29uc3QgS1VSTCYg
dXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCisg
ICAgUlRDSWNlU2VydmVyKGNvbnN0IFVSTCYgdXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWws
IGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCiAgICAgICAgIDogbV91cmkodXJpKQogICAgICAgICAs
IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogICAgICAgICAsIG1fdXNlcm5hbWUodXNlcm5hbWUp
CiAgICAgewogICAgIH0KIAotICAgIEtVUkwgbV91cmk7CisgICAgVVJMIG1fdXJpOwogICAgIFN0
cmluZyBtX2NyZWRlbnRpYWw7CiAgICAgU3RyaW5nIG1fdXNlcm5hbWU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAppbmRleCBkZDQ5NmNhLi5iZjAx
NjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcApA
QCAtOTQsMTMgKzk0LDEzIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoCiAgICAgbV9pdGVtcy5h
cHBlbmQoQmxvYkRhdGFJdGVtKHBhdGgsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpKTsKIH0KIAotdm9pZCBCbG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiB1
cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCit2b2lkIEJsb2JEYXRhOjph
cHBlbmRCbG9iKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVu
Z3RoKSk7CiB9CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIEJsb2JEYXRhOjphcHBl
bmRVUkwoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
LCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQordm9pZCBCbG9iRGF0YTo6YXBwZW5k
VVJMKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBk
b3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJs
b2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAppbmRleCBm
ZDk0ZjU5Li5mNjA1NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YS5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEJsb2JEYXRhX2gKIAogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0cnVj
dCBCbG9iRGF0YUl0ZW0gewogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdG9yIGZvciBCbG9iIHR5
cGUuCi0gICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCkKKyAgICBCbG9iRGF0YUl0ZW0oY29uc3QgVVJMJiB1cmwsIGxvbmcg
bG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiAgICAgICAgIDogdHlwZShCbG9iKQogICAg
ICAgICAsIHVybCh1cmwpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAg
ICAvLyBDb25zdHJ1Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxlcykuCi0g
ICAgQmxvYkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKKyAgICBCbG9iRGF0
YUl0ZW0oY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgs
IGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogdHlwZShVUkwpCiAg
ICAgICAgICwgdXJsKHVybCkKICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQpAQCAtMTQyLDcgKzE0
Miw3IEBAIHN0cnVjdCBCbG9iRGF0YUl0ZW0gewogICAgIFN0cmluZyBwYXRoOwogCiAgICAgLy8g
Rm9yIEJsb2Igb3IgVVJMIHR5cGUuCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKIAogICAg
IGxvbmcgbG9uZyBvZmZzZXQ7CiAgICAgbG9uZyBsb25nIGxlbmd0aDsKQEAgLTE4NCw5ICsxODQs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmREYXRhKFBhc3NSZWZQdHI8UmF3RGF0YT4sIGxv
bmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwotICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0
IFVSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKLSAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CisgICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAjZW5kaWYKIAog
cHJpdmF0ZToKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQmxv
YkRhdGFIYW5kbGUoUGFzc093blB0cjxCbG9iRGF0YT4sIGxvbmcgbG9uZyBzaXplKTsKLSAgICBL
VVJMIG1faW50ZXJuYWxVUkw7CisgICAgVVJMIG1faW50ZXJuYWxVUkw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaAppbmRleCBlNzhiZTIzLi5kYjFjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGE7CiBjbGFzcyBCbG9iU3RvcmFnZURhdGE7CiBj
bGFzcyBCbG9iUmVnaXN0cnk7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBCbG9iUmVnaXN0
cnkmIGJsb2JSZWdpc3RyeSgpOwogCkBAIC00NiwxMiArNDYsMTIgQEAgQmxvYlJlZ2lzdHJ5JiBi
bG9iUmVnaXN0cnkoKTsKIGNsYXNzIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRhLgot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8
QmxvYkRhdGE+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBh
IG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRo
ZSBzcGVjaWZpZWQgc3JjVVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5j
cHAKaW5kZXggMGJiNjVhYi4uODNjMTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRh
KiBibG9iU3RvcmFnZURhdGEsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4g
YmxvYkRhdGEpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9y
KCk7CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICBtX2Js
b2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JTdG9yYWdlRGF0YSk7CiB9CiAKLXZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYg
c3JjVVJMKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTc3LDEz
ICsxNzcsMTMgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmlu
ZygpLCBzcmMpOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBt
X2Jsb2JzLnJlbW92ZSh1cmwuc3RyaW5nKCkpOwogfQogCi1CbG9iU3RvcmFnZURhdGEqIEJsb2JS
ZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitC
bG9iU3RvcmFnZURhdGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJl
dHVybiBtX2Jsb2JzLmdldCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBiMzRkYzc2Li5lMGMzMmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtMzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTAsNyArNTAsNyBAQCBj
bGFzcyBCbG9iUmVnaXN0cnlJbXBsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+QmxvYlJlZ2lzdHJ5SW1wbCgpOwogCi0gICAgQmxvYlN0b3JhZ2VEYXRhKiBn
ZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIEJsb2JTdG9yYWdlRGF0
YSogZ2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0
cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKIApAQCAtNTgsOSArNTgsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJs
b2JEYXRhSXRlbUxpc3QmKTsKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFn
ZURhdGEqLCBjb25zdCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgc3JjVVJMKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0
cjxCbG9iRGF0YT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+ID4gbV9ibG9iczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNl
SGFuZGxlLmNwcAppbmRleCBkYjc1ZmJkLi4zNzY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zOSw3
ICszOSw3IEBACiAjaW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5k
ZXggNTg4ZmY1Yi4uOTU5NTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNs
dWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVs
dFByb3RlY3Rpb25TcGFjZU1hcCYgcGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpCiAg
ICAgcmV0dXJuIG1hcDsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJMKGNv
bnN0IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAodXJsLnBvcnQoKSkKICAgICAgICAgcmV0dXJuIHVybC5wcm90
b2NvbCgpICsgIjovLyIgKyB1cmwuaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIodXJsLnBv
cnQoKSkgKyAnLyc7CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5n
RnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjov
LyIgKyB1cmwuaG9zdCgpICsgJy8nOwogfQogCi1zdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFj
ZU1hcEtleUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwcm90ZWN0aW9u
U3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwuaXNW
YWxpZCgpKTsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFj
ZU1hcEtleUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBkaXJlY3RvcnlVUkw7
CiB9CiAKLXZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgS1VS
TCYgdXJsKQordm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlzUHJveHkoKSB8fCB1cmwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlz
UHJveHkoKSB8fCB1cmwuaXNWYWxpZCgpKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENyZWRl
bnRpYWxTdG9yYWdlOjpyZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3Bh
Y2UpCiAgICAgcHJvdGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkucmVtb3ZlKHByb3RlY3Rp
b25TcGFjZSk7CiB9CiAKLXN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwOjpp
dGVyYXRvciBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTChjb25zdCBLVVJMJiB1cmwp
CitzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgZmluZERl
ZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJU
KHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgp
KTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFj
ZU1hcDo6aXRlcmF0b3IgZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUgogICAgIH0KIH0K
IAotYm9vbCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwsIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJs
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkpOwpA
QCAtMTU1LDcgKzE1NSw3IEBAIGJvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUNyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBLVVJMJiB1cmwpCitD
cmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
UGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgaXRlciA9IGZpbmREZWZh
dWx0UHJvdGVjdGlvblNwYWNlRm9yVVJMKHVybCk7CiAgICAgaWYgKGl0ZXIgPT0gcGF0aFRvRGVm
YXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDQ5YWY0NTIuLmIzYmQx
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRp
YWxTdG9yYWdlLmgKQEAgLTI5LDEzICsyOSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDcmVkZW50aWFsOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKIAogY2xhc3MgQ3JlZGVudGlhbFN0b3JhZ2UgewogcHVibGljOgogICAgIC8vIFdl
YkNvcmUgc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgc3RhdGljIHZvaWQgc2V0KGNv
bnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBLVVJMJik7Cisg
ICAgc3RhdGljIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgUHJvdGVj
dGlvblNwYWNlJik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYpOwogCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMg
d29yayBmb3IgYXV0aGVudGljYXRpb24gc2NoZW1lcyB0aGF0IHN1cHBvcnQgc2VuZGluZyBjcmVk
ZW50aWFscyB3aXRob3V0IHdhaXRpbmcgZm9yIGEgcmVxdWVzdC4gRS5nLiwgZm9yIEhUVFAgQmFz
aWMgYXV0aGVudGljYXRpb24gc2NoZW1lCiAgICAgLy8gYSBjbGllbnQgc2hvdWxkIGFzc3VtZSB0
aGF0IGFsbCBwYXRocyBhdCBvciBkZWVwZXIgdGhhbiB0aGUgZGVwdGggb2YgYSBrbm93biBwcm90
ZWN0ZWQgcmVzb3VyY2Ugc2hhcmUgYXJlIHdpdGhpbiB0aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNl
LgotICAgIHN0YXRpYyBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgS1VSTCYpOyAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rp
b24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCi0gICAgc3RhdGljIENy
ZWRlbnRpYWwgZ2V0KGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYsIGNvbnN0IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNw
b25kcyB0byBhIGtub3duIHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJl
IHVwZGF0ZWQuCisgICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOwogCiAgICAg
c3RhdGljIHZvaWQgc2V0UHJpdmF0ZU1vZGUoYm9vbCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA0OWJkY2ExLi5hNTEzMjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTc4LDE4
ICsxNzgsMTggQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb24KICAgICBtX2VsZW1lbnRzLmFwcGVu
ZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFw
cGVuZEJsb2IoY29uc3QgS1VSTCYgYmxvYlVSTCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEJsb2Io
Y29uc3QgVVJMJiBibG9iVVJMKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxl
bWVudChibG9iVVJMKSk7CiB9CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lk
IEZvcm1EYXRhOjphcHBlbmRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGb3JtRGF0YTo6YXBw
ZW5kVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRh
RWxlbWVudCh1cmwsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGlt
ZSgpKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKQordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiB1
cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQo
dXJsLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKIH0KQEAgLTMy
NiwxMyArMzI2LDEzIEBAIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QK
IH0KIAogI2lmIEVOQUJMRShCTE9CKQotc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZv
cm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxv
YlJlc29sdmVkKEZvcm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYg
KCFibG9iUmVnaXN0cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgewogICAgICAgICBMT0dfRVJS
T1IoIlRyaWVkIHRvIHJlc29sdmUgYSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0g
c3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0
YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIEJsb2JTdG9yYWdlRGF0
YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5
KCkpLmdldEJsb2JEYXRhRnJvbVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKICAgICBp
ZiAoIWJsb2JEYXRhKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdldCBibG9iIGRh
dGEgZnJvbSBhIHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTUyMSw3ICs1MjEsNyBA
QCBzdGF0aWMgYm9vbCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1EYXRhRWxl
bWVudCYgZWxlbWVudCkKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgaWYgKHR5
cGUgPT0gRm9ybURhdGFFbGVtZW50OjplbmNvZGVkVVJMKQotICAgICAgICAgICAgZWxlbWVudC5t
X3VybCA9IEtVUkwoS1VSTCgpLCBmaWxlbmFtZU9yVVJMKTsKKyAgICAgICAgICAgIGVsZW1lbnQu
bV91cmwgPSBVUkwoVVJMKCksIGZpbGVuYW1lT3JVUkwpOwogICAgICAgICBlbHNlCiAjZW5kaWYK
ICAgICAgICAgZWxlbWVudC5tX2ZpbGVuYW1lID0gZmlsZW5hbWVPclVSTDsKQEAgLTU0MCw3ICs1
NDAsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1E
YXRhRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgU3RyaW5nIGJsb2JVUkxTdHJpbmc7CiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmluZykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgYmxv
YlVSTFN0cmluZyk7CisgICAgICAgIGVsZW1lbnQubV91cmwgPSBVUkwoVVJMKCksIGJsb2JVUkxT
dHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggN2NlNDZmYS4uOTdmNDRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMjAsNyArMjAsNyBA
QAogI2lmbmRlZiBGb3JtRGF0YV9oCiAjZGVmaW5lIEZvcm1EYXRhX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzksMTIg
KzM5LDEyIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIEZvcm1EYXRhRWxlbWVu
dChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcg
ZmlsZUxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5h
bWUpLCBtX2ZpbGVTdGFydChmaWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmlsZUxlbmd0aCksIG1f
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KLSAgICBleHBs
aWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVSTCkgOiBtX3R5cGUoZW5jb2Rl
ZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KKyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQo
Y29uc3QgVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJsKGJsb2JVUkwp
IHsgfQogI2Vsc2UKICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Ym9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFt
ZShmaWxlbmFtZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgRm9ybURhdGFFbGVtZW50KGNv
bnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUg
ZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJs
KHVybCksIG1fZmlsZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9z
aG91bGRHZW5lcmF0ZUZpbGUoZmFsc2UpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBV
UkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJsKHVybCks
IG1fZmlsZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRH
ZW5lcmF0ZUZpbGUoZmFsc2UpIHsgfQogI2VuZGlmCiAKICAgICBlbnVtIFR5cGUgewpAQCAtNjAs
NyArNjAsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKICAgICBTdHJpbmcg
bV9maWxlbmFtZTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICBLVVJMIG1fdXJsOyAvLyBGb3IgQmxv
YiBvciBVUkwuCisgICAgVVJMIG1fdXJsOyAvLyBGb3IgQmxvYiBvciBVUkwuCiAgICAgbG9uZyBs
b25nIG1fZmlsZVN0YXJ0OwogICAgIGxvbmcgbG9uZyBtX2ZpbGVMZW5ndGg7CiAgICAgZG91Ymxl
IG1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKQEAgLTEyNCwxMSArMTI0LDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBz
aG91bGRHZW5lcmF0ZUZpbGUgPSBmYWxzZSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgdm9pZCBh
cHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNo
b3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgS1VS
TCYgYmxvYlVSTCk7CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdm9pZCBhcHBlbmRVUkwoY29uc3Qg
S1VSTCYpOwotICAgIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBz
dGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CisgICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgVVJMJik7CisgICAgdm9pZCBhcHBlbmRVUkxSYW5n
ZShjb25zdCBVUkwmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOwogI2VuZGlmCiAgICAgY2hhciogZXhwYW5kRGF0YVN0
b3JlKHNpemVfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUGxhdGZvcm1Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UGxhdGZvcm1Db29raWVKYXIuaAppbmRleCA5MWQ1MWZjLi41ZTEyMmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCkBAIC0z
MywxOCArMzMsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAog
Ly8gRklYTUU6IFRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
bWVtYmVyIGZ1bmN0aW9ucy4KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmKTsKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwor
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJik7Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwor
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7CiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKIHZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpOwogdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Qcm94eVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
cm94eVNlcnZlci5oCmluZGV4IDhmNzYxMmUuLjdjMTkxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29y
a2luZ0NvbnRleHQ7CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJuIGEgdmVjdG9yIG9mIHByb3h5
IHNlcnZlcnMgZm9yIHRoZSBnaXZlbiBVUkwuCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2Vy
dmVyc0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKTsKK1ZlY3Rv
cjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdv
cmtpbmdDb250ZXh0Kik7CiAKIC8vIENvbnZlcnRzIHRoZSBnaXZlbiB2ZWN0b3Igb2YgcHJveHkg
c2VydmVycyB0byBhIFBBQyBzdHJpbmcsIGFzIGRlc2NyaWJlZCBpbgogLy8gaHR0cDovL3dlYi5h
cmNoaXZlLm9yZy93ZWIvMjAwNjA0MjQwMDUwMzcvd3AubmV0c2NhcGUuY29tL2VuZy9tb3ppbGxh
LzIuMC9yZWxub3Rlcy9kZW1vL3Byb3h5LWxpdmUuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCBjZDc2OGYyLi4yOGNm
MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZENvbnRlbnRTbmlmZigpIGNvbnN0CiAgICAgcmV0dXJuIGQtPm1fc2hvdWxkQ29udGVudFNuaWZm
OwogfQogCi1ib29sIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3Qg
S1VSTCYgdXJsKQorYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNv
bnN0IFVSTCYgdXJsKQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2hvdWxkRm9yY2VD
b250ZW50U25pZmZpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmgKaW5kZXggZTk2YWU3OS4uOTE2Nzg0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODIsNyArODIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNs
YXNzIENyZWRlbnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBOZXR3b3JraW5nQ29udGV4dDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBi
b29sIHNob3VsZENvbnRlbnRTbmlmZigpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIHNob3VsZENv
bnRlbnRTbmlmZlVSTChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udGVu
dFNuaWZmVVJMKGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIHZvaWQgZm9yY2VDb250ZW50U25p
ZmZpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGNlMTM0ODYuLmMwY2E4OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50
LmgKQEAgLTQxLDcgKzQxLDcgQEAgT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAg
IGNsYXNzIENyZWRlbnRpYWw7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAg
Y2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNs
YXNzIFJlc291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGRlNTJkMDMuLjE1NDY4MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBlKFJlc291cmNlSGFuZGxlOjpO
b0ZhaWx1cmUpCiAgICAgICAgICAgICAsIG1fZmFpbHVyZVRpbWVyKGxvYWRlciwgJlJlc291cmNl
SGFuZGxlOjpmaXJlRmFpbHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgS1VSTCYg
dXJsID0gbV9maXJzdFJlcXVlc3QudXJsKCk7CisgICAgICAgICAgICBjb25zdCBVUkwmIHVybCA9
IG1fZmlyc3RSZXF1ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsK
ICAgICAgICAgICAgIG1fcGFzcyA9IHVybC5wYXNzKCk7CiAgICAgICAgICAgICBtX2ZpcnN0UmVx
dWVzdC5yZW1vdmVDcmVkZW50aWFscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggMTk1ZjRhZS4uNGVm
OWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0xMTMsMTQgKzExMywxNCBAQCBib29sIFJlc291cmNl
UmVxdWVzdEJhc2U6OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLmlzTnVsbCgpOwog
fQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25zdCAKK2NvbnN0
IFVSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCiB7CiAgICAgdXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCk7IAogICAgIAogICAgIHJldHVybiBtX3VybDsKIH0KIAotdm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBSZXNvdXJjZVJl
cXVlc3RCYXNlOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7IAogICAgIHVwZGF0ZVJlc291cmNl
UmVxdWVzdCgpOyAKIApAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKICAgICAgICAg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7CiB9CiAKLWNvbnN0IEtVUkwmIFJlc291
cmNlUmVxdWVzdEJhc2U6OmZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QKK2NvbnN0IFVSTCYg
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdAogewogICAg
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKICAgICAKICAgICByZXR1cm4gbV9maXJzdFBhcnR5
Rm9yQ29va2llczsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK3ZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5Rm9yQ29va2llcykKIHsgCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCmluZGV4IDAxODQ1NzQuLjE0MDU3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpbmNsdWRlICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
UHJpb3JpdHkuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDggKzY0LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgICAg
ICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25z
dDsKLSAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOwog
CiAgICAgICAgIHZvaWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNzUsOCArNzUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwoKSBjb25z
dDsgLy8gTWF5IHJldHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KICAgICAgICAg
dm9pZCBzZXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgICAg
IAotICAgICAgICBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0OwotICAg
ICAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzKTsKKyAgICAgICAgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNv
bnN0OworICAgICAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBodHRw
TWV0aG9kKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcm
IGh0dHBNZXRob2QpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZShjb25zdCBL
VVJMJiB1cmwsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKKyAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0QmFzZShjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xp
Y3kgcG9saWN5KQogICAgICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICAgICAsIG1fY2Fj
aGVQb2xpY3kocG9saWN5KQogICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChzX2RlZmF1
bHRUaW1lb3V0SW50ZXJ2YWwpCkBAIC0xODEsMTEgKzE4MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIC8vIFRoZSBSZXNvdXJjZVJlcXVlc3Qgc3ViY2xhc3MgbWF5ICJzaGFkb3ci
IHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgICAg
IHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgS1VSTCBtX3Vy
bDsKKyAgICAgICAgVVJMIG1fdXJsOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IG1fY2FjaGVQb2xpY3k7CiAgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsgLy8g
MCBpcyBhIG1hZ2ljIHZhbHVlIGZvciBwbGF0Zm9ybSBkZWZhdWx0IG9uIHBsYXRmb3JtcyB0aGF0
IGhhdmUgb25lLgotICAgICAgICBLVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAg
IFVSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9k
OwogICAgICAgICBIVFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICAgICAgVmVj
dG9yPFN0cmluZz4gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheTsKQEAgLTIxNSwxMSArMjE1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSgpIHsgfQotICAgICAgICBLVVJMIG1fdXJsOworICAg
ICAgICBVUkwgbV91cmw7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgbV9j
YWNoZVBvbGljeTsKICAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOwotICAgICAgICBL
VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JD
b29raWVzOwogCiAgICAgICAgIFN0cmluZyBtX2h0dHBNZXRob2Q7CiAgICAgICAgIE93blB0cjxD
cm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAppbmRleCBlNGU2M2JjLi40MDUyMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogewogfQog
Ci1SZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jl
c291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgOiBt
X3VybCh1cmwpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgoZXhwZWN0ZWRMZW5ndGgpCkBAIC0xMzgsMTQgKzEzOCwxNCBAQCBib29sIFJl
c291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25zdAogICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQ2FzZShwcm90b2NvbCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2ws
ICJodHRwcyIpOwogfQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkg
Y29uc3QKK2NvbnN0IFVSTCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnVybCgpIGNvbnN0CiB7CiAg
ICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAKICAgICByZXR1cm4gbV91cmw7IAogfQog
Ci12b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGxh
enlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKaW5kZXggNDliZGM3MC4uMmNmYjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMjgsNyArMjgsNyBA
QAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKICNpbmNsdWRlICJIVFRQSGVhZGVy
TWFwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFRpbWluZy5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU1
LDggKzU1LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9p
c051bGw7IH0KICAgICBib29sIGlzSFRUUCgpIGNvbnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJs
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYgdXJsKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1pbWVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAg
ICB9OwogCiAgICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNl
QmFzZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBT
dHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAg
dm9pZCBsYXp5SW5pdChJbml0TGV2ZWwpIGNvbnN0OwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93
IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEtVUkwgbV91cmw7Cisg
ICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4
cGVjdGVkQ29udGVudExlbmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpAQCAt
MTg0LDcgKzE4NCw3IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFz
ZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YUJhc2UpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSgpIHsgfQotICAgIEtVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVj
dGVkQ29udGVudExlbmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAKaW5kZXggMmMwMjc0ZC4uZTdjMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3Bw
CkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQg
aW50IGJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKIAotU29ja2V0U3RyZWFtSGFuZGxl
QmFzZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlQmFzZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBj
bGllbnQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBt
X3N0YXRlKENvbm5lY3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5oCmluZGV4IDdkZWQ0ZGMuLmY3OTQ3MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWZuZGVmIFNvY2tldFN0cmVh
bUhhbmRsZUJhc2VfaAogI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9TdHJlYW1CdWZm
ZXIuaD4KIApAQCAtNTYsMTMgKzU2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXRDbGllbnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0
IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgICAgIGJvb2wgc2VuZFBl
bmRpbmdEYXRhKCk7CiAgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNs
b3NlKCkgPSAwOwogCi0gICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFVSTCBtX3VybDsKICAg
ICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgU3RyZWFt
QnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICAgICAgU29ja2V0U3RyZWFt
U3RhdGUgbV9zdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCmluZGV4IGJmZjY2NzYuLjVhOGM0ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CiAgICAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5j
cHAKaW5kZXggNjYxYzBlZi4uNjE1OTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0Jl
cnJ5LmNwcApAQCAtMjQsMjggKzI0LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBjb29raWVNYW5hZ2VyKCkuc2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0
dHBPbmx5Q29va2llKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vICdIdHRw
T25seScgY29va2llcyBzaG91bGQgbm8gYmUgYWNjZXNzaWJsZSBmcm9tIHNjcmlwdHMsIHNvIHdl
IGZpbHRlciB0aGVtIG91dCBoZXJlLgogICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0Q29v
a2llKHVybCwgTm9IdHRwT25seUNvb2tpZSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVNYW5hZ2Vy
KCkuZ2V0Q29va2llKHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiB9CiAKLWJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IFVSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gIWNvb2tpZU1hbmFnZXIoKS5jb29raWVKYXIo
KS5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxQ
YXJzZWRDb29raWU+ID4gcmVzdWx0OwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdDb29raWVz
KHJlc3VsdCwgdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVD
b29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGNvb2tp
ZU1hbmFnZXIoKS5yZW1vdmVDb29raWVXaXRoTmFtZSh1cmwsIG5hbWUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxC
YWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwMzU4OTYuLjE2NjFiNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVk
ZW50aWFsQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpZiBFTkFCTEUoQkxBQ0tCRVJSWV9DUkVERU5USUFMX1BFUlNJU1QpCiAjaW5jbHVkZSAi
Q3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUhhc2gu
aCIKICNpbmNsdWRlICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxh
dGZvcm1FbmNyeXB0b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcAppbmRleCAxNmFlMjRhLi43MGYzYzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya0pvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L05ldHdvcmtKb2IuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJNSU1FU25pZmZpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5j
bHVkZSAiTmV0d29ya01hbmFnZXIuaCIKQEAgLTExNyw3ICsxMTcsNyBAQCBOZXR3b3JrSm9iOjp+
TmV0d29ya0pvYigpCiAKIHZvaWQgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVySWQs
CiAgICAgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAotICAgIGNvbnN0IEtVUkwmIHVybCwK
KyAgICBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0
d29ya1JlcXVlc3QmIHJlcXVlc3QsCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFu
ZGxlLAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrU3RyZWFtRmFjdG9yeSogc3Ry
ZWFtRmFjdG9yeSwKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZU5v
dGlmeU11bHRpcGFydEhlYWRlclJlY2VpdmVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdAog
CiB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZVNldENvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIHZh
bHVlKQogewotICAgIEtVUkwgdXJsID0gbV9yZXNwb25zZS51cmwoKTsKKyAgICBVUkwgdXJsID0g
bV9yZXNwb25zZS51cmwoKTsKICAgICBDb29raWVNYW5hZ2VyJiBtYW5hZ2VyID0gY29va2llTWFu
YWdlcigpOwogICAgIGlmICgobWFuYWdlci5jb29raWVQb2xpY3koKSA9PSBDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCiAgICAgICAgICYmIChtX2hh
bmRsZS0+Zmlyc3RSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSAhPSB1cmwpCkBAIC02
MTgsNyArNjE4LDcgQEAgYm9vbCBOZXR3b3JrSm9iOjpyZXRyeUFzRlRQRGlyZWN0b3J5KCkKIAog
ICAgIEFTU0VSVChtX2hhbmRsZSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBt
X2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7Ci0gICAgS1VSTCB1cmwgPSBuZXdSZXF1ZXN0LnVybCgp
OworICAgIFVSTCB1cmwgPSBuZXdSZXF1ZXN0LnVybCgpOwogICAgIHVybC5zZXRQYXRoKHVybC5w
YXRoKCkgKyAiLyIpOwogICAgIG5ld1JlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgbmV3UmVxdWVz
dC5zZXRNdXN0SGFuZGxlSW50ZXJuYWxseSh0cnVlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBib29s
IE5ldHdvcmtKb2I6OmhhbmRsZVJlZGlyZWN0KCkKICAgICBpZiAobG9jYXRpb24uaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJs
KCksIGxvY2F0aW9uKTsKKyAgICBVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJsKCksIGxvY2F0aW9u
KTsKICAgICBpZiAoIW5ld1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApA
QCAtODEzLDcgKzgxMyw3IEBAIE5ldHdvcmtKb2I6OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtK
b2I6OnNlbmRSZXF1ZXN0V2l0aENyZWRlbnRpYWxzKFByb3RlY3Rpb25TCiAgICAgaWYgKCFtX2hh
bmRsZSkKICAgICAgICAgcmV0dXJuIFNlbmRSZXF1ZXN0Q2FuY2VsbGVkOwogCi0gICAgS1VSTCBu
ZXdVUkwgPSBtX3Jlc3BvbnNlLnVybCgpOworICAgIFVSTCBuZXdVUkwgPSBtX3Jlc3BvbnNlLnVy
bCgpOwogICAgIGlmICghbmV3VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFNlbmRSZXF1
ZXN0Q2FuY2VsbGVkOwogCkBAIC04MzIsMTAgKzgzMiwxMCBAQCBOZXR3b3JrSm9iOjpTZW5kUmVx
dWVzdFJlc3VsdCBOZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFscyhQcm90ZWN0
aW9uUwogICAgICAgICAgICAgaG9zdCA9IG1fcmVzcG9uc2UudXJsKCkuaG9zdCgpOwogICAgICAg
ICAgICAgcG9ydCA9IG1fcmVzcG9uc2UudXJsKCkucG9ydCgpOwogICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gcHJveHlJbmZvIHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJv
dG9jb2wuIEtVUkwgY2FuJ3QgcGFyc2UgdGhpcywgc28gc3RpY2sgaHR0cAorICAgICAgICAgICAg
Ly8gcHJveHlJbmZvIHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJvdG9jb2wuIFVSTCBj
YW4ndCBwYXJzZSB0aGlzLCBzbyBzdGljayBodHRwCiAgICAgICAgICAgICAvLyBvbiB0aGUgZnJv
bnQuCiAgICAgICAgICAgICAvLyAoV2UgY291bGQgc3BsaXQgaW50byBob3N0IGFuZCBwb3J0IGJ5
IGhhbmQsIGJ1dCB0aGF0IGdldHMgaGFyZCB0byBwYXJzZSB3aXRoIElQdjYgdXJscywKLSAgICAg
ICAgICAgIC8vIHNvIGJldHRlciB0byByZXVzZSBLVVJMJ3MgcGFyc2luZy4pCisgICAgICAgICAg
ICAvLyBzbyBiZXR0ZXIgdG8gcmV1c2UgVVJMJ3MgcGFyc2luZy4pCiAgICAgICAgICAgICBTdHJp
bmdCdWlsZGVyIHByb3h5QWRkcmVzczsKICAgICAgICAgICAgIGlmICh0eXBlID09IFByb3RlY3Rp
b25TcGFjZVByb3h5SFRUUCkKICAgICAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKCJo
dHRwOi8vIik7CkBAIC04NDMsNyArODQzLDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1
bHQgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblMKICAg
ICAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKCJodHRwczovLyIpOwogICAgICAgICAg
ICAgcHJveHlBZGRyZXNzLmFwcGVuZChwcm94eUluZm8uYWRkcmVzcyk7CiAKLSAgICAgICAgICAg
IEtVUkwgcHJveHlVUkwoS1VSTCgpLCBwcm94eUFkZHJlc3MudG9TdHJpbmcoKSk7CisgICAgICAg
ICAgICBVUkwgcHJveHlVUkwoVVJMKCksIHByb3h5QWRkcmVzcy50b1N0cmluZygpKTsKICAgICAg
ICAgICAgIGhvc3QgPSBwcm94eVVSTC5ob3N0KCk7CiAgICAgICAgICAgICBwb3J0ID0gcHJveHlV
UkwucG9ydCgpOwogICAgICAgICB9CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCB2b2lkIE5ldHdvcmtK
b2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxOZXR3b3JrSm9iPiopCiAgICAgTmV0d29ya01h
bmFnZXI6Omluc3RhbmNlKCktPmRlbGV0ZUpvYih0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrSm9i
Ojpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVz
dWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3b3JrSm9iOjpub3Rp
ZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYg
cHJvdGVjdGlvblNwYWNlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCByZXN1bHQsIGNv
bnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkp
OwogICAgIEFTU0VSVCh1cmwgPT0gbV9yZXNwb25zZS51cmwoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaAppbmRl
eCAzZWNjYjFhLi5mYTM0ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZShpbnQgcGxheWVySWQsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwK
LSAgICAgICAgY29uc3QgS1VSTCYsCisgICAgICAgIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYsCiAgICAgICAgIFBhc3NSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+LAogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29y
a1N0cmVhbUZhY3RvcnkqLApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9leHRlbmRlZFN0YXR1c0NvZGU7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbWltZVR5cGUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3Vs
dChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpOwogCiAgICAgLy8gSW1wbGVtZW50YXRpb24g
b2YgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIHB1cmUgdmlydHVhbHMuCiAgICAgdmlydHVhbCB2
b2lkIGZyYW1lRGVzdHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcAppbmRleCA5MjMx
NGYwLi5lYWZkYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKQEAgLTE0MiwxMiArMTQy
LDEyIEBAIGludCBOZXR3b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBT
dHJpbmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBSZXNv
dXJjZUhhbmRsZSBkb2Vzbid0IGdvIG91dCBvZiBzY29wZSB3aGlsZSBjYWxsaW5nIGNhbGxiYWNr
cy4KICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGd1YXJkSm9iKGpvYik7CiAKLSAgICBLVVJM
IHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKICAg
ICAvLyBPbmx5IGxvYWQgdGhlIGluaXRpYWwgdXJsIG9uY2UuCiAgICAgYm9vbCBpc0luaXRpYWwg
PSAodXJsID09IG1faW5pdGlhbFVSTCk7CiAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgbV9p
bml0aWFsVVJMID0gS1VSTCgpOworICAgICAgICBtX2luaXRpYWxVUkwgPSBVUkwoKTsKIAogICAg
IC8vIEFsd2F5cyByZXJlYWQgY29va2llcyBvbiBhIHJlZGlyZWN0CiAgICAgaWYgKHJlZGlyZWN0
Q291bnQpCkBAIC0xNTYsOCArMTU2LDggQEAgaW50IE5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYihp
bnQgcGxheWVySWQsIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgUGFzc1JlZlAKICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3QgcGxhdGZvcm1SZXF1ZXN0OwogICAg
IHJlcXVlc3QuaW5pdGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChwbGF0Zm9ybVJlcXVlc3QsIGZyYW1l
LT5sb2FkZXIoKSAmJiBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpICYmIHN0YXRpY19jYXN0PEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeSo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT5j
b29raWVzRW5hYmxlZCgpLCBpc0luaXRpYWwsIHJlcmVhZENvb2tpZXMpOwogCi0gICAgLy8gR1VS
TCBhbmQgS1VSTCBjb25zaWRlciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBo
dHRwOi8vIGlzIHBhcnNlZCBhcwotICAgIC8vIGh0dHA6LyBieSBLVVJMIGFuZCBjb25zaWRlcmVk
IHZhbGlkLCB3aGlsZSBHVVJMIGNvbnNpZGVycyBpdCBpbnZhbGlkLgorICAgIC8vIEdVUkwgYW5k
IFVSTCBjb25zaWRlciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBodHRwOi8v
IGlzIHBhcnNlZCBhcworICAgIC8vIGh0dHA6LyBieSBVUkwgYW5kIGNvbnNpZGVyZWQgdmFsaWQs
IHdoaWxlIEdVUkwgY29uc2lkZXJzIGl0IGludmFsaWQuCiAgICAgaWYgKCFwbGF0Zm9ybVJlcXVl
c3QudXJsKCkuaXNfdmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpGaWx0ZXJTdHJlYW06OlN0YXR1c0Vycm9ySW52YWxpZFVybDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFn
ZXIuaAppbmRleCAxZDgzM2RhLi4yODZjYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaApAQCAt
MTksNyArMTksNyBAQAogI2lmbmRlZiBOZXR3b3JrTWFuYWdlcl9oCiAjZGVmaW5lIE5ldHdvcmtN
YW5hZ2VyX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZS5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2luZ2xl
dG9uLmg+CkBAIC00Myw4ICs0Myw4IEBAIHZvaWQgcHJvdGVjdGlvblNwYWNlVG9QbGF0Zm9ybUF1
dGgoY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06CiBjbGFzcyBO
ZXR3b3JrTWFuYWdlciA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGhyZWFkVW5zYWZl
U2luZ2xldG9uPE5ldHdvcmtNYW5hZ2VyPiB7CiAgICAgU0lOR0xFVE9OX0RFRklOSVRJT05fVEhS
RUFEVU5TQUZFKE5ldHdvcmtNYW5hZ2VyKQogcHVibGljOgotICAgIHZvaWQgc2V0SW5pdGlhbFVS
TChjb25zdCBLVVJMJiB1cmwpIHsgbV9pbml0aWFsVVJMID0gdXJsOyB9Ci0gICAgS1VSTCBpbml0
aWFsVVJMKCkgeyByZXR1cm4gbV9pbml0aWFsVVJMOyB9CisgICAgdm9pZCBzZXRJbml0aWFsVVJM
KGNvbnN0IFVSTCYgdXJsKSB7IG1faW5pdGlhbFVSTCA9IHVybDsgfQorICAgIFVSTCBpbml0aWFs
VVJMKCkgeyByZXR1cm4gbV9pbml0aWFsVVJMOyB9CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5
ZXJJZCwgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gam9iLCBGcmFtZSosIGJvb2wgZGVmZXJz
TG9hZGluZyk7CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgUGFzc1JlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gam9iLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZSosIGJvb2wgZGVm
ZXJzTG9hZGluZyk7CiAgICAgYm9vbCBzdG9wSm9iKFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+
KTsKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgc3RhcnRKb2IoaW50IHBsYXll
cklkLCBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5k
bGU+LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29y
a1N0cmVhbUZhY3RvcnkqLCBGcmFtZSosIGludCBkZWZlckxvYWRpbmdDb3VudCA9IDAsIGludCBy
ZWRpcmVjdENvdW50ID0gMCwgYm9vbCByZXJlYWRDb29raWVzID0gZmFsc2UpOwogCiAgICAgVmVj
dG9yPE5ldHdvcmtKb2IqPiBtX2pvYnM7Ci0gICAgS1VSTCBtX2luaXRpYWxVUkw7CisgICAgVVJM
IG1faW5pdGlhbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5
L1Byb3h5U2VydmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMzNiMjA2Mi4uYTcxYjkyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Byb3h5U2Vy
dmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L1Byb3h5U2VydmVyQmxhY2tCZXJyeS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFBy
b3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFZlY3RvcjxQ
cm94eVNlcnZlcj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MmFhMWQ4Li5iZDEz
YjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVGFyZ2V0SXNVbnNwZWNpZmllZCwKICAgICB9OwogICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICA6
IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAg
ICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93
bmxvYWQoZmFsc2UpCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQog
ICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
cG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3Qo
ZmFsc2UpCiAgICAgICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKQEAgLTc5LDcg
Kzc5LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAgICAgICwgbV9tdXN0
SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93bmxvYWQoZmFsc2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
UmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0YzFhZDY5Li5jYmYxN2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwg
ZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1f
aXNNdWx0aXBhcnRQYXlsb2FkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5k
bGUuaAppbmRleCA4MGVjNDFiLi5jODIyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRs
ZS5oCkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAog
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFt
SGFuZGxlPiwgcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGaWx0ZXJTdHJlYW0sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4g
YWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZShncm91cE5hbWUsIHVybCwgY2xpZW50KSk7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKGdy
b3VwTmFtZSwgdXJsLCBjbGllbnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFu
ZGxlKCk7CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25z
dCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgIE93blB0cjxCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFtPiBtX3NvY2tldFN0cmVhbTsKICAgICBpbnQgbV9z
dGF0dXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5j
cHAKaW5kZXggYjFhNGRlYi4uY2M5NTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRT
dHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAi
Q2hyb21lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNrQmVycnkuaCIKQEAgLTQ3
LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6
OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRs
ZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21Q
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jz
cy9SU1NBdG9tUGFyc2VyLmNwcAppbmRleCA1NWNlM2MzLi4yNDJjOTFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9y
c3MvUlNTQXRvbVBhcnNlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUlNTQXRvbVBhcnNlcjo6UlNT
QXRvbVBhcnNlcigpCiAKIGJvb2wgUlNTQXRvbVBhcnNlcjo6cGFyc2VCdWZmZXIoY29uc3QgY2hh
ciogYnVmZmVyLCBpbnQgbGVuZ3RoLCBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIGVuY29k
aW5nKQogewotICAgIG1fdXJsID0gS1VSTChibGFua1VSTCgpLCB1cmwpOworICAgIG1fdXJsID0g
VVJMKGJsYW5rVVJMKCksIHVybCk7CiAgICAgcmV0dXJuIHBhcnNlWG1sRG9jKHhtbFJlYWRNZW1v
cnkoYnVmZmVyLCBsZW5ndGgsIHVybCwgZW5jb2RpbmcsIFhNTF9QQVJTRV9OT0JMQU5LUyB8IFhN
TF9QQVJTRV9OT05FVCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCmluZGV4IDg2
NWY1MGYuLmM0ZDc5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCkBAIC0xOSw3ICsx
OSw3IEBACiAjaWZuZGVmIFJTU0F0b21QYXJzZXJfaAogI2RlZmluZSBSU1NBdG9tUGFyc2VyX2gK
IAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSU1NQYXJz
ZXJCYXNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgcGFyc2VDb250ZW50KGNvbnN0IFN0cmluZyYgYmFzZSwgeG1sTm9kZSop
OwogICAgIFN0cmluZyBwYXJzZUF1dGhvcih4bWxOb2RlKik7CiAgICAgU3RyaW5nIHBhcnNlQ2F0
ZWdvcnkoeG1sTm9kZSopOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1MGY2OThiLi5mMzVjMTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNs
dWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTkzLDcgKzkzLDcg
QEAgc3RhdGljIFJldGFpblB0cjxDRkFycmF5UmVmPiBmaWx0ZXJDb29raWVzKENGQXJyYXlSZWYg
dW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBDRkhUVFBD
b29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdoaWNoIHdvdWxkIGJlIHNlbnQg
YXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKQEAgLTExNyw3ICsxMTcs
NyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRD
b29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tp
ZXNDRi5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdl
dCgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGID0gdXJs
LmNyZWF0ZUNGVVJMKCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25z
dCBLVQogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVy
Q0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRiA9IHVybC5jcmVhdGVDRlVSTCgpOwogCkBAIC0xMzcsMTMgKzEzNywx
MyBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1ib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tp
ZUFjY2VwdFBvbGljeShzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJu
IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9j
dW1lbnREb21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lB
bHdheXM7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nv
b2tpZXMuY2xlYXIoKTsKIApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcAppbmRleCAxYmFmNTgxLi4wNzVhYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2lu
Y2x1ZGUgIkROUy5oIgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTUsOCArNTUs
OCBAQCBib29sIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVt
UHJlZmVyZW5jZXMoKQogICAgIGlmICghcHJveHlTZXR0aW5ncykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBLVVJMKFBhcnNlZFVS
TFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6
Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
aHR0cENGVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5j
cmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0
d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQo
KSkpOwogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENG
KENGTmV0d29ya0NvcHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGlu
Z3MuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmluZGV4IDEyZjNiMTEuLjcxMTE4ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNG
TmV0LmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQgcHJv
Y2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJy
YXlSZWYgcHIKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChW
ZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIGNvbnN0IEtVUkwmIHVybCkKK3N0YXRp
YyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNl
cnZlcnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IHByb3h5U2V0dGluZ3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdz
KCkpOwogICAgIGlmICghcHJveHlTZXR0aW5ncykKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMg
dm9pZCBhZGRQcm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2
ZXJzLCBjb25zdCBLVVJMJgogICAgIHByb2Nlc3NQcm94eVNlcnZlcnMocHJveHlTZXJ2ZXJzLCBw
cm94aWVzRm9yVVJMLmdldCgpLCBjZlVSTC5nZXQoKSk7CiB9CiAKLVZlY3RvcjxQcm94eVNlcnZl
cj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0Nv
bnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICBWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCBhMmE2ZmQ3Li5hZTFjMWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ0ZORVRXT1JLKQog
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NGRXJyb3IuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrRXJyb3JzLmg+
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggNzFh
YWYxYTguLjI2ZTczYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlLCBib29sCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHko
KSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNh
biBvbmx5IGJlIHBhc3NlZCBpbiBVUkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgZGVsZWdhdGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgICAgICBLVVJMIHVybFdpdGhD
cmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3Jl
ZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFz
cyhkLT5tX3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRl
bnRpYWxzKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwo
KQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewot
ICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9w
YXNzID0gdXJsLnBhc3MoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRw
TWV0aG9kKCk7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAg
ICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwg
dXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVu
Z2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAg
ICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAg
ICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CkBAIC02MTMsNyArNjEzLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNy
ZWRlbnRpYWwudXNlcigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRl
bnRpYWwgPSBhZG9wdENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgCi0gICAg
ICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlm
IChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAg
ICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgp
OyAgICAgIAogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MzQ5
Y2U4Li42Y2YyNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVz
dEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsKSAKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVl
c3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYg
dXJsKSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAg
ICAgICB7CiAgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBlMGE1ZGQ0Li4x
M2E1ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25z
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVj
dGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwg
ZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1f
aW5pdExldmVsKENvbW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgICAgICAsIG1fcGxhdGZvcm1S
ZXNwb25zZUlzVXBUb0RhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCAyNTRiMDM0Li45OWJi
ZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFt
SGFuZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRs
ZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgcGxhdGZv
cm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CiAKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBV
UkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMo
KTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggOTE0YTU3NTUuLmZjMmQyOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGV4dGVybiAiQyIgY29u
c3QgQ0ZTdHJpbmdSZWYgX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
S1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVh
bUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBj
bGllbnQpCiAgICAgLCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rp
b25UeXBlKFVua25vd24pCkBAIC02NSw3ICs2NSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
CiAKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndz
cyIpKTsKIAotICAgIEtVUkwgaHR0cHNVUkwoS1VSTCgpLCAiaHR0cHM6Ly8iICsgbV91cmwuaG9z
dCgpKTsKKyAgICBVUkwgaHR0cHNVUkwoVVJMKCksICJodHRwczovLyIgKyBtX3VybC5ob3N0KCkp
OwogICAgIG1faHR0cHNVUkwgPSBodHRwc1VSTC5jcmVhdGVDRlVSTCgpOwogCiAgICAgY3JlYXRl
U3RyZWFtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDhkMTgxZjMuLjljZDhhOWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAj
aW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgogCiAjaW5jbHVkZSA8d3RmL0RhdGVN
YXRoLmg+CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgYWRkTWF0Y2hpbmdDdXJsQ29v
a2llKGNvbnN0IGNoYXIqIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnMKIAogfQog
Ci1zdGF0aWMgU3RyaW5nIGdldE5ldHNjYXBlQ29va2llRm9ybWF0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZ2V0TmV0c2NhcGVDb29raWVGb3Jt
YXQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQ29uc3Ry
dWN0cyBhIGNvb2tpZSBzdHJpbmcgaW4gTmV0c2NhcGUgQ29va2llIGZpbGUgZm9ybWF0LgogCkBA
IC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBnZXROZXRzY2FwZUNvb2tpZUZvcm1hdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGNvb2tpZVN0
ci50b1N0cmluZygpOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewogICAgIENVUkwqIGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogCkBAIC0yNDgsNyArMjQ4LDcg
QEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXIKICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsK
IH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGh0dHBvbmx5KQor
c3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwgYm9vbCBodHRwb25seSkKIHsKICAgICBT
dHJpbmcgY29va2llczsKICAgICBDVVJMKiBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKQEAgLTI4
NCwyOSArMjg0LDI5IEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0CiAgICAgcmV0dXJuIGNvb2tp
ZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKTsKIH0KIAotU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCB0cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykK
K2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1
cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNl
OyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
KQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcAppbmRleCBhZGMwM2ZkLi5mYjIwOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMjQ4
LDcgKzI0OCw3IEBAIEN1cmxEb3dubG9hZDo6fkN1cmxEb3dubG9hZCgpCiAgICAgbW92ZUZpbGVU
b0Rlc3RpbmF0aW9uKCk7CiB9CiAKLXZvaWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9h
ZExpc3RlbmVyKiBsaXN0ZW5lciwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBDdXJsRG93bmxvYWQ6
OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBpZiAoIWxpc3RlbmVyKQogICAgICAgICByZXR1cm47CkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IFIKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4
KTsKIAotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVxdWVzdC51cmwoKSk7CisgICAg
VVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHJlcXVlc3QudXJsKCkpOwogCiAgICAgaW5pdChsaXN0
ZW5lciwgdXJsKTsKIApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRS
ZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAgICBpZiAoaHR0cENvZGUg
Pj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwg
PSAwOwogICAgICAgICAgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxlLCBD
VVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2Uu
c2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwogCiAgICAgICAgICAgICBtX3Jlc3Bv
bnNlLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5o
dHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtVHlwZSIpKSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGY3NWFjOGYu
LmQ5MmI0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIEN1cmxEb3du
bG9hZCgpOwogICAgIH5DdXJsRG93bmxvYWQoKTsKIAotICAgIHZvaWQgaW5pdChDdXJsRG93bmxv
YWRMaXN0ZW5lciosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGluaXQoQ3VybERv
d25sb2FkTGlzdGVuZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGluaXQoQ3Vy
bERvd25sb2FkTGlzdGVuZXIqLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgc3RhcnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVy
Q3VybC5jcHAKaW5kZXggMjEyNzY4YS4uMTE3MzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKQEAgLTI2
LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZl
cj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4
dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBj
b25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAg
ICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRl
eCA3ZjM0ZGIyLi5jOTE4ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMjMxLDcgKzIz
MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoKSkgewogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7Ci0gICAgICAgICAgICBLVVJMIHVybFRvU3RvcmUg
PSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJs
VG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKICAgICAgICAgICAg
IENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLCB1cmxUb1N0b3JlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFu
YWdlci5jcHAKaW5kZXggYTBmMmEyNC4uN2RkNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVS
ZXNwb25zZSAoQ1VSTCogaGFuZGxlLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdQogICAgICBj
b25zdCBjaGFyKiBoZHI7CiAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGhh
bmRsZSwgQ1VSTElORk9fRUZGRUNUSVZFX1VSTCwgJmhkcik7CiAgICAgIEFTU0VSVF9VTlVTRUQo
ZXJyLCBDVVJMRV9PSyA9PSBlcnIpOwotICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgaGRyKSk7CisgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VVJMKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIGhkcikpOwogICAgICBpZiAoZC0+Y2xpZW50KCkpCiAgICAgICAgICBkLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGpvYiwgZC0+bV9yZXNwb25zZSk7CiAgICAgIGQt
Pm1fcmVzcG9uc2Uuc2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCBz
dGF0aWMgYm9vbCBnZXRQcm90ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIFByb3RlYwogICAgIGlmIChlcnIgIT0gQ1VSTEVfT0spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7Cisg
ICAgVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogCiAgICAgU3RyaW5nIGhvc3QgPSBr
dXJsLmhvc3QoKTsKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBrdXJsLnByb3RvY29sKCk7CkBAIC0z
OTMsNyArMzkzLDcgQEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNp
emVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICAgICAgY29uc3QgY2hh
ciogaGRyOwogICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5GT19FRkZFQ1RJVkVf
VVJMLCAmaGRyKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIGhkcikpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChVUkwoUGFyc2VkVVJM
U3RyaW5nLCBoZHIpKTsKIAogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2Rl
KGh0dHBDb2RlKTsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50
LVR5cGUiKSkubG93ZXIoKSk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGljIHNpemVfdCBoZWFk
ZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRh
dGEpCiAgICAgICAgIGlmIChpc0h0dHBSZWRpcmVjdChodHRwQ29kZSkpIHsKICAgICAgICAgICAg
IFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlv
biIpOwogICAgICAgICAgICAgaWYgKCFsb2NhdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAg
ICAgICBLVVJMIG5ld1VSTCA9IEtVUkwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbG9jYXRp
b24pOworICAgICAgICAgICAgICAgIFVSTCBuZXdVUkwgPSBVUkwoam9iLT5maXJzdFJlcXVlc3Qo
KS51cmwoKSwgbG9jYXRpb24pOwogCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
ZGlyZWN0ZWRSZXF1ZXN0ID0gam9iLT5maXJzdFJlcXVlc3QoKTsKICAgICAgICAgICAgICAgICBy
ZWRpcmVjdGVkUmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCBib29s
IFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRTY2hlZHVsZWRKb2JzKCkKIAogdm9pZCBSZXNv
dXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUq
IGpvYikKIHsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOworICAg
IFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAogICAgIGlmIChrdXJsLnBy
b3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgaGFuZGxlRGF0YVVSTChqb2IpOwpAQCAtODE1LDcg
KzgxNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRjaFN5bmNocm9ub3Vz
Sm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpz
dGFydEpvYihSZXNvdXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3VybCA9IGpvYi0+Zmly
c3RSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVy
bCgpOwogCiAgICAgaWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBoYW5kbGVE
YXRhVVJMKGpvYik7CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXI6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwK
IHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFu
ZGxlKiBqb2IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBhbGxvd2VkUHJvdG9jb2xzID0gQ1VS
TFBST1RPX0ZJTEUgfCBDVVJMUFJPVE9fRlRQIHwgQ1VSTFBST1RPX0ZUUFMgfCBDVVJMUFJPVE9f
SFRUUCB8IENVUkxQUk9UT19IVFRQUzsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVz
dCgpLnVybCgpOworICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAog
ICAgIC8vIFJlbW92ZSBhbnkgZnJhZ21lbnQgcGFydCwgb3RoZXJ3aXNlIGN1cmwgd2lsbCBzZW5k
IGl0IGFzIHBhcnQgb2YgdGhlIHJlcXVlc3QuCiAgICAga3VybC5yZW1vdmVGcmFnbWVudElkZW50
aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MTQ3MmUwLi5hNzVhNzFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5o
CkBAIC0zNiwyMyArMzYsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291
cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQorICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBV
c2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICA6IFJlc291cmNl
UmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBS
ZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qo
KQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNl
UHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
CmluZGV4IDQ5ODVlYjMuLmFlMDliODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzksNyArMzksNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkK
KyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNl
QmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmls
ZW5hbWUpLAogICAgICAgICAgIG1fcmVzcG9uc2VGaXJlZChmYWxzZSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlLmgKaW5kZXggNjQxMzllNS4uYTgyMzE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAt
NDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMg
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0
U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFu
ZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGUoKTsKIApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwor
ICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50Kik7CiAKICAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVy
IHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCiAgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKaW5kZXggODkxZTk2ZS4uNzlhZGMz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQpp
bmRleCBiYzIyMzc1Li42NTM3NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2ll
U3RvcmFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKIApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNv
b2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29v
a2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
QEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1UKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggODMzMTViMC4u
Y2VmNmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJSZXNv
dXJjZUVycm9yLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRl
eCAwOTQwMGExLi5lNzNjNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJv
b2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogewogICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2Fu
IG9ubHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOiBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCiAgICAgaWYgKCgh
ZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVx
dWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBLVVJMIHVy
bFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxX
aXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3Jl
ZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMu
c2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0
aENyZWRlbnRpYWxzKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
cwogICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29s
SXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikgJiYgZC0+bV9jb250ZXh0LT5zaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCiAgICAgICAgIHJlcXVlc3Qu
Y2xlYXJIVFRQUmVmZXJyZXIoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJs
KCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9
IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKICAgICBkLT5tX2xhc3RI
VFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgLy8gdG8gaWdub3JlIGl0IGZvciBhIHBhcnRp
Y3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0b2dldGhlcikuCiAgICAgICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS82ODY3NTk4PiBnYWxsZXJ5Lm1lLmNvbSBpcyB0ZW1wb3Jhcmls
eSB3aGl0ZWxpc3RlZCwgc28gdGhhdCBRdWlja1RpbWUgcGx1Zy1pbiBjb3VsZCBzZWUgdGhlIGNy
ZWRlbnRpYWxzLgogICAgICAgICBDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbCwg
Q3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAg
ICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0g
Y2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFsU3Rv
cmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBw
cm90ZWN0aW9uU3BhY2VdKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDU1YWVhYzIuLjljMjQ2NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFy
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFy
UXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29va2llSmFyUXQuaCIKIAogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFy
LmgiCiAjaW5jbHVkZSAiVGhpcmRQYXJ0eUNvb2tpZXNRdC5oIgpAQCAtNDYsNyArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRD
b29raWVKYXJRdCA9IDA7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBRTmV0d29ya0Nvb2tp
ZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29y
a0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CiAgICAgaWYgKCFqYXIpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhCiAgICAgamFyLT5zZXRDb29raWVzRnJvbVVybChjb29raWVzLCB1cmxGb3JDb29raWVzKTsK
IH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUU5ldHdvcmtDb29raWVK
YXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgp
OwogICAgIGlmICghamFyKQpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBVUkwmIHVybCkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5j
b250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29v
a2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBA
IC0xMTEsMjAgKzExMSwyMCBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiBy
ZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIq
IGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nl
c3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwog
ICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNlcnZlclF0LmNwcAppbmRleCAwYmYzNjg3Mi4u
YWFlNjE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Q
cm94eVNlcnZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Byb3h5U2VydmVyUXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8UU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyPgpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCitWZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQpCiB7CiAgICAgVmVjdG9yPFByb3h5U2VydmVyPiBzZXJ2ZXJzOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCBhNmUwODQwLi44Yjc5MWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVw
bHlIYW5kbGVyLmNwcApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRs
ZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkKICAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgp
LnBhdGgoKSk7CiAgICAgfQogCi0gICAgS1VSTCB1cmwobV9yZXBseVdyYXBwZXItPnJlcGx5KCkt
PnVybCgpKTsKKyAgICBVUkwgdXJsKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKSk7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVUeXBlLmxvd2VyKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+aGVhZGVy
KFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZXBseVdyYXBwZXItPmVuY29kaW5nKCksIFN0
cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlSGFuZGxlUXQuY3BwCmluZGV4IDg0YWJhNGUuLjk1NWI4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0
LmNwcApAQCAtOTksNyArOTksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAg
aWYgKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIElmIGNyZWRlbnRpYWxzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFk
ZCB0aGVtIHRvIHRoZSB1cmwsCiAgICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3Nl
ZCB0byBRTmV0d29ya1JlcXVlc3QuCi0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZp
cnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJz
dFJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQt
Pm1fdXNlcik7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7
CiAgICAgICAgIGQtPm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpA
QCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291
cmNlU3luY2hyb25vdXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgaWYgKCFkLT5t
X3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElm
IGNyZWRlbnRpYWxzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFkZCB0aGVtIHRv
IHRoZSB1cmwsCiAgICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3NlZCB0byBRTmV0
d29ya1JlcXVlc3QuCi0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGQtPm1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhkLT5tX2ZpcnN0
UmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1f
dXNlcik7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAg
ICAgICAgIGQtPm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0
LmgKaW5kZXggYzhhOTkwOC4uZWI3Yjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zOSwyMyArMzksMjMgQEAg
Y2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVi
bGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
KyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpIAorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KHVybCwgcG9saWN5KQogICAgICAgICB7CiAgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVm
ZXJyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDQ3ZTU2NmIu
LjdkZWZmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
cXQvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9u
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUs
IGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICB7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRT
dHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0
U3RyZWFtSGFuZGxlLmgKaW5kZXggOWU2ZWFjMC4uODcwMDg5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBA
IC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2Nr
ZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1I
YW5kbGUodXJsLCBjbGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRT
dHJlYW1IYW5kbGU+IGNyZWF0ZShRVGNwU29ja2V0KiBzb2NrZXQsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxl
KHNvY2tldCwgY2xpZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5k
bGUoKTsKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAg
ICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCopOwogICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCosIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBz
dHJlYW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5k
bGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUuaAppbmRleCBmNDQ3Y2MyLi5jMTU2MGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5k
bGVQcml2YXRlOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSA6IHB1YmxpYyBRT2Jq
ZWN0IHsKICAgICBRX09CSkVDVAogcHVibGljOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZh
dGUoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgIFNvY2tldFN0cmVhbUhh
bmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgVVJMJik7CiAgICAgU29ja2V0
U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBRVGNwU29ja2V0Kik7CiAg
ICAgflNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApp
bmRleCAxMDNkYzFmLi45NjE4YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRs
ZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0
cmVhbUVycm9yLmgiCkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2Nr
ZXRTdHJlYW1IYW5kbGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgS1VSTCYgdXJsKQorU29ja2V0U3Ry
ZWFtSGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1I
YW5kbGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9zdHJlYW1IYW5k
bGUgPSBzdHJlYW1IYW5kbGU7CiAgICAgbV9zb2NrZXQgPSAwOwpAQCAtMTgzLDcgKzE4Myw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6c29ja2V0U3NsRXJyb3JzKGNvbnN0IFFM
aXN0PFFTc2xFcnJvcj4mIGVycm9yKQogfQogI2VuZGlmCiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6
U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CkBAIC0x
OTEsNyArMTkxLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKIH0KIAogU29ja2V0U3RyZWFt
SGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkKLSAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoS1VS
TCgpLCBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKFVSTCgpLCBjbGllbnQp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAl
cCIsIHRoaXMsIG1fY2xpZW50KTsKICAgICBtX3AgPSBuZXcgU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZSh0aGlzLCBzb2NrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGViNmZjYzguLmRkNWRiZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkdPd25QdHJTb3VwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db29r
aWVKYXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtODMsNyArODMsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGEKICAgICBzb3VwX2Nvb2tpZXNfZnJlZShleGlzdGluZ0Nvb2tpZXMpOwogfQog
Ci1zdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0
aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKIHsKICAgICBTb3Vw
Q29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICgh
amFyKQpAQCAtMTI4LDIyICsxMjgsMjIgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lv
bihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwKICAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVzLmdldCgpKTsKIH0KIAotU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCB0
cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsK
ICAgICByZXR1cm4gISFjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAg
U291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKQEAgLTE2
Niw3ICsxNjYsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUph
ckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmluZGV4
IDUwYjMyZGUuLmM4NWZlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZl
Y3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBO
ZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVS
TChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudC4KICAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAppbmRleCBmNjYwZTkwLi44NDZlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cApAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1Jl
cXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLy8gV2Ug
YWx3YXlzIHB1dCB0aGUgY3JlZGVudGlhbHMgaW50byB0aGUgVVJMLiBJbiB0aGUgQ0ZOZXR3b3Jr
LXBvcnQgSFRUUCBmYW1pbHkgY3JlZGVudGlhbHMgYXJlIGFwcGxpZWQgaW4KICAgICAvLyB0aGUg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNhbGxiYWNrLCBidXQgbGlic291cCBy
ZXF1aXJlcyB1cyB0byB1c2UgdGhpcyBtZXRob2QgdG8gb3ZlcnJpZGUKICAgICAvLyBhbnkgcHJl
dmlvdXNseSByZW1lbWJlcmVkIGNyZWRlbnRpYWxzLiBJdCBoYXMgaXRzIG93biBwZXItc2Vzc2lv
biBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMocmVxdWVz
dC51cmwoKSk7CisgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhyZXF1ZXN0LnVybCgpKTsKICAg
ICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVudGlh
bHMuc2V0UGFzcyhwYXNzd29yZCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRp
YWxzKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdChSZXNv
dXJjZUhhbmRsZSogaGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBz
aG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBLVVJMJiBuZXdVUkwsIGJv
b2wgY3Jvc3NPcmlnaW4pCitzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNz
YWdlKiBtZXNzYWdlLCBVUkwmIG5ld1VSTCwgYm9vbCBjcm9zc09yaWdpbikKIHsKICAgICBpZiAo
bWVzc2FnZS0+bWV0aG9kID09IFNPVVBfTUVUSE9EX0dFVCB8fCBtZXNzYWdlLT5tZXRob2QgPT0g
U09VUF9NRVRIT0RfSEVBRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYwLDcgKzQ2MCw3
IEBAIHN0YXRpYyB2b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICBS
ZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdCA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7CiAgICAg
U291cE1lc3NhZ2UqIG1lc3NhZ2UgPSBkLT5tX3NvdXBNZXNzYWdlLmdldCgpOwogICAgIGNvbnN0
IGNoYXIqIGxvY2F0aW9uID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShtZXNzYWdlLT5y
ZXNwb25zZV9oZWFkZXJzLCAiTG9jYXRpb24iKTsKLSAgICBLVVJMIG5ld1VSTCA9IEtVUkwoc291
cFVSSVRvS1VSTChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIGxvY2F0aW9uKTsKKyAg
ICBVUkwgbmV3VVJMID0gVVJMKHNvdXBVUklUb0tVUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVz
c2FnZSkpLCBsb2NhdGlvbik7CiAgICAgYm9vbCBjcm9zc09yaWdpbiA9ICFwcm90b2NvbEhvc3RB
bmRQb3J0QXJlRXF1YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbmV3VVJMKTsKICAg
ICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMobmV3VVJMKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCBhZGRF
bmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29u
c3QgQmxvYgogCiBzdGF0aWMgdm9pZCBhZGRFbmNvZGVkQmxvYlRvU291cE1lc3NhZ2VCb2R5KFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQsIHVuc2ln
bmVkIGxvbmcmIHRvdGFsQm9keVNpemUpCiB7Ci0gICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4g
YmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkp
LmdldEJsb2JEYXRhRnJvbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkp
OworICAgIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8Qmxv
YlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBh
cnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkpOwogICAgIGlmICghYmxvYkRhdGEpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IGEwZDBiNGMuLmNmMjI2YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0LmgKQEAgLTM1LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIHB1Ymxp
YzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQ
cm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0
RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291
cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisg
ICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKQEAgLTU3LDE0ICs1Nywx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwo
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGlu
Zyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2Fn
ZUZsYWdzPigwKSkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcAppbmRleCBiNWE0YTBkLi40MzA3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgU291cFVSSSogUmVzb3VyY2VSZXF1ZXN0Ojpzb3VwVVJJ
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIHNvdXBfdXJpX25ldyh1cmxTdHJpbmcudXRmOCgpLmRh
dGEoKSk7CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBtX3VybDsKKyAgICBVUkwgdXJsID0gbV91
cmw7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIFNvdXBVUkkqIHVy
aSA9IHNvdXBfdXJpX25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25z
ZS5oCmluZGV4IDM3MGY0MzAuLjQ4OTFmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3Bv
bnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwg
ZmlsZW5hbWUpCiAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VG
bGFncz4oMCkpCiAgICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmlj
YXRlRmxhZ3M+KDApKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IGE2YTUxNDUuLjg0OGZmY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0
U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKEdTb2NrZXRDb25uZWN0aW9u
KiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXRDb25uZWN0aW9uLCBj
bGllbnQpKTsgfQogCiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwpAQCAt
NjcsNyArNjcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fcmVhZEJ1
ZmZlcjsKICAgICAgICAgdm9pZCogbV9pZDsKIAotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAgICAg
ICAgIFNvY2tldFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiosIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCopOwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1z
IHBlciBzZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZVNvdXAuY3BwCmluZGV4IGJjZGQ5NGIuLjU1MDhmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlU291cC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgpAQCAtODAsNyArODAsNyBAQCBz
dGF0aWMgdm9pZCogYWN0aXZhdGVIYW5kbGUoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAg
ICAgcmV0dXJuIGlkOwogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSh1cmwsIGNsaWVudCkKICAgICAsIG1fcmVhZEJ1ZmZlcigwKQogewpAQCAtOTYsNyArOTYsNyBA
QCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudAogfQogCiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tl
dFN0cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29ubmVjdGlvbiwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KEtVUkwoKSwgY2xpZW50KQorICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShVUkwoKSwgY2xp
ZW50KQogICAgICwgbV9yZWFkQnVmZmVyKDApCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAK
aW5kZXggZjA3YWQ3Zi4uNTUzYmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFuZCB0aHVzIHRoZSBy
ZXF1ZXN0cyBhcmUgbm90IHByb3Blcmx5CiAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0
cmluZyBpcyBhIG5vLW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKIC8vIG5vdCB3YW50IHRvIGJy
ZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKLUtVUkwgc291
cFVSSVRvS1VSTChTb3VwVVJJKiBzb3VwVVJJKQorVVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSog
c291cFVSSSkKIHsKICAgICBHT3duUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3Ry
aW5nKHNvdXBVUkksIEZBTFNFKSk7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCBTdHJpbmc6OmZyb21V
VEY4KHVybFN0cmluZy5nZXQoKSkpOworICAgIFVSTCB1cmwoVVJMKCksIFN0cmluZzo6ZnJvbVVU
RjgodXJsU3RyaW5nLmdldCgpKSk7CiAKICAgICBpZiAoIXNvdXBVUkktPnBhc3N3b3JkKQogICAg
ICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBVUklVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBVUklVdGlscy5oCmluZGV4IDY5NzcyZTcuLjVmNmU4ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmgKQEAg
LTI2LDEyICsyNiwxMiBAQAogI2lmbmRlZiBTb3VwVVJJVXRpbHNfaAogI2RlZmluZSBTb3VwVVJJ
VXRpbHNfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiB0eXBlZGVm
IHN0cnVjdCBfU291cFVSSSBTb3VwVVJJOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1LVVJMIHNv
dXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSk7CitVUkwgc291cFVSSVRvS1VSTChTb3VwVVJJ
KiBzb3VwVVJJKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAppbmRleCA3YjEyNmUwLi44Yzc5MDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUph
cldpbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5o
IgogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAgICAgU3RyaW5n
IHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXIKICAgICBJbnRlcm5ldFNldENvb2tpZShzdHIuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRh
dGEoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAg
LTY1LDI1ICs2NSwyNSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBTdHJp
bmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0
cE9ubHkgY29va2llCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250ZXh0KCks
IGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwm
IC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
ICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1
ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3Bw
CmluZGV4IGM2MTBlMjAuLjE0OTViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Byb3h5U2VydmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFBy
b3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3Rv
cjxQcm94eVNlcnZlcj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAppbmRleCAzMjBjNDVkLi4wZjY2Yjcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZUhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4v
UmVzb3VyY2VIYW5kbGVXaW4uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6aW50ZXJuZXRTdGF0dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJuZXRIYW5kbGUsIERX
T1JEX1BUUgogdm9pZCBSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCgpCiB7CiAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKTsKLSAgICBuZXdSZXF1ZXN0LnNl
dFVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOworICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKIAog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmlu
ZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDEwYjk1MjQuLmQx
ZWI3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zMywyMyArMzMsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2Ugewog
cHVibGljOgogICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICB7CiAgICAgfQog
Ci0gICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVl
c3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgewogICAgICAgICBz
ZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgp
Ci0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCisgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMzgyNjY4My4uYmVj
MGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVz
b3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0
ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBl
eHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCiAgICAgewogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0
cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0
U3RyZWFtSGFuZGxlLmgKaW5kZXggNjI4MDhlYy4uMDMzNTBhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5k
bGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNv
Y2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFu
ZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgp
OwogCkBAIC01NCw3ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1DbG9zZSgpOwogCiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNv
bnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgLy8gTm8gYXV0aGVu
dGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVu
dGlhbHMuCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3BwCmluZGV4
IGIyYjU0MGYuLjE2YWM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlV2luLmNwcApAQCAtMzIsMTQg
KzMyLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFu
ZGxlLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFt
SGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkK
ICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xp
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJk
Tml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcApp
bmRleCAzNGVjMWMwLi4wNzdiNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvUGFzdGVib2FyZE5peC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4
L1Bhc3RlYm9hcmROaXguY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0tVUkxRdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkY2E0ZWUuLjAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0j
aW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAicXVybC5oIgotI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKGNv
bnN0IFFVcmwmIHVybCkKLXsKLSAgICAqdGhpcyA9IEtVUkwoS1VSTCgpLCB1cmwudG9FbmNvZGVk
KCkuY29uc3REYXRhKCksIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6b3BlcmF0b3IgUVVy
bCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFFVcmwobV9zdHJpbmcpOwotfQotCi1TdHJpbmcgS1VS
TDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFFVcmw+KCp0aGlzKS50b0xvY2FsRmlsZSgpOwotCi0gICAgLy8gQSB2
YWxpZCBxcmMgcmVzb3VyY2UgcGF0aCBiZWdpbnMgd2l0aCBhIGNvbG9uLgotICAgIGlmIChwcm90
b2NvbElzKCJxcmMiKSkKLSAgICAgICAgcmV0dXJuICI6IiArIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhwYXRoKCkpOwotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlYjhlZGZkLi5jNTUzNzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTIw
NSw3ICsyMDUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwm
IHBhc3RlYm9hcmRVUkwpCiAjZW5kaWYKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgQVNTRVJUKG5vZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QbGF0Zm9ybVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3Jt
U3VwcG9ydC5oCmluZGV4IDQyODFjZDYuLmUyZDA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFBs
YXRmb3JtU3VwcG9ydF9oCiAjZGVmaW5lIFBsYXRmb3JtU3VwcG9ydF9oCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAKaW5kZXggZTkzYTc2My4uNTk5NWRmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJz
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVi
c1F0LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1
ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC0xMDQsNyArMTA0
LDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmKQogewogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9CU3RyaW5nLmNwcAppbmRleCBmZTBmZTQ2Li5hMDFjZDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQlN0cmluZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY4LDcgKzY4
LDcgQEAgQlN0cmluZzo6QlN0cmluZyhjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIG1fYnN0ciA9
IFN5c0FsbG9jU3RyaW5nTGVuKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKIH0KIAotQlN0
cmluZzo6QlN0cmluZyhjb25zdCBLVVJMJiB1cmwpCitCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCBkYzFjMjdkLi40NTc2NzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlw
ZWRlZiB3Y2hhcl90KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBL
VVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIGNsYXNzIEJTdHJpbmcgewogICAgIHB1YmxpYzoK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCU3RyaW5nKGNv
bnN0IHdjaGFyX3QqLCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBTdHJp
bmcmKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgQlN0
cmluZyhjb25zdCBLVVJMJik7CisgICAgICAgIEJTdHJpbmcoY29uc3QgVVJMJik7CiAjaWYgVVNF
KENGKQogICAgICAgICBCU3RyaW5nKENGU3RyaW5nUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRl
eCBiZmEwYjY3Li4yNTAzNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1
ZGUgIkNsaXBib2FyZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxzaGxvYmouaD4KICNp
bmNsdWRlIDx3aW5pbmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSApAQCAtMTcz
LDcgKzE3Myw3IEBAIHN0YXRpYyBGT1JNQVRFVEMqIHRleHRodG1sRm9ybWF0KCkKICAgICByZXR1
cm4gJnRleHRodG1sRm9ybWF0OwogfQogCi1IR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRh
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRh
YmxlVVJMKHVybC5zdHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2lu
LmgKaW5kZXggZThkNDc1NS4uMmE1ZWUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsMTEgKzMzLDExIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JB
TCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotSEdMT0JBTCBjcmVhdGVH
bG9iYWxEYXRhKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CitIR0xPQkFM
IGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
CiBGT1JNQVRFVEMqIHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGMwOGRhNzQu
LjMxYTMyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4u
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKQEAgLTEyMSw3ICsx
MjEsNyBAQCBzdGF0aWMgRm9udCBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZv
bnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKQorRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5M
YWJlbCwgRm9udFJlbmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgLy8gVGhp
cyBpcyBtb3JlIG9yIGxlc3MgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBNYWMgT1MgWCBjb2RlLgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXgg
ZWFhYzE1MC4uODE2YTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhXbmREQy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtMzQ0LDcgKzM0NCw3IEBAIFZl
Y3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQogI2VuZGlmCiB9CiAKLXN0
YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBT
dHJpbmcgdGl0bGUsIGJvb2wgd2l0aFBsYWluVGV4dCwgYm9vbCB3aXRoSFRNTCkKK3N0YXRpYyBi
b29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0
aXRsZSwgYm9vbCB3aXRoUGxhaW5UZXh0LCBib29sIHdpdGhIVE1MKQogewogICAgIEFTU0VSVChk
YXRhKTsKIApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgQ2xpcGJvYXJkRGF0
YVR5cGUgd2luVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAKICAgICBp
ZiAod2luVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKLSAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBLVVJMKEtVUkwoKSwgZGF0
YSksIFN0cmluZygpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjp3cml0
ZVVSTChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgVVJMKFVSTCgpLCBkYXRhKSwgU3RyaW5n
KCksIGZhbHNlLCB0cnVlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBl
VGV4dCkgewogICAgICAgICBTVEdNRURJVU0gbWVkaXVtID0gezB9OwpAQCAtNTY1LDcgKzU2NSw3
IEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgfQogCiAgICAgaWYgKCFsc3RybGVuKGZz
UGF0aEJ1ZmZlcikpIHsKLSAgICAgICAgS1VSTCBrdXJsKEtVUkwoKSwgdXJsKTsKKyAgICAgICAg
VVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwgPSB0cnVlOwogICAgICAgICAv
LyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRyYWcgb3IgZmlsZSB1cmwgc2hv
dWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCiAgICAgICAgIC8vIHRoZSBwYXRoLiBJZiB3ZSBj
YW4ndCBmaW5kIGl0LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUgbmFtZSBmb3IgYSBsaW5r
CkBAIC02NDAsMTQgKzY0MCwxNCBAQCBleGl0OgogICAgIHJldHVybiBocjsKIH0KIAotdm9pZCBQ
YXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJMJiBrdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlU3RyKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChj
b25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiB7CiAgICAgaWYgKCFtX3dy
aXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkNvcmU6OndyaXRlVVJM
KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBrdXJsLCB0aXRsZVN0ciwgdHJ1ZSwgdHJ1ZSk7
CiAKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKLSAgICBBU1NFUlQodXJsLmNvbnRh
aW5zT25seUFTQ0lJKCkpOyAvLyBLVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KKyAgICBB
U1NFUlQodXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBl
bmNvZGVkLgogCiAgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0
bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CiAgICAgU3RyaW5nIGNvbnRlbnRTdHJp
bmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiArIHVybCArICJcclxuIik7CkBAIC03MjUs
NyArNzI1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBw
YXN0ZWJvYXJkVVJMKQogICAgIHdyaXRlVVJMVG9EYXRhT2JqZWN0KHBhc3RlYm9hcmRVUkwudXJs
LCBwYXN0ZWJvYXJkVVJMLnRpdGxlKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgQVNTRVJUKG5vZGUpOwogCkBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIEhHTE9CQUwgY3Jl
YXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJu
IG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNv
bnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlz
RW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDAxLDcgKzEwMDEsNyBA
QCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgS1VSTCYgdXJs
LCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXZvaWQg
UGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxl
bWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU2hvdmUgaW1hZ2UgZGF0
YSBpbnRvIGEgRGF0YU9iamVjdCBmb3IgdXNlIGFzIGEgZmlsZQogICAgIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSA9IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOwpAQCAtMTAzMiw3ICsxMDMyLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEtVUkwmIHVybCkKICAgICB3cml0ZUZpbGVUb0RhdGFPYmplY3QobV93cml0YWJs
ZURhdGFPYmplY3QuZ2V0KCksIGltYWdlRmlsZURlc2NyaXB0b3IsIGltYWdlRmlsZUNvbnRlbnQs
IGhEcm9wQ29udGVudCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxl
RGF0YU9iamVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURh
dGFPYmplY3QuZ2V0KCksIHVybCwgdGl0bGUsIHRydWUsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKaW5kZXggYmQ0
MGYyMC4uNDhkZTM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NT
TEtleUdlbmVyYXRvcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NT
TEtleUdlbmVyYXRvcldpbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBXZWJDb3JlOjpnZXRT
dXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgdikKICAgICB2LmFwcGVuZCgiTWVkaXVt
IEdyYWRlIik7CiB9CiAKLVN0cmluZyBXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgU3RyaW5nIGtleVN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCA4NTZjZWE5Li40MDU2ZTMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0
dWJzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8a2V5
Z2VuPgotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0
cmluZygpOyB9CitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2ln
bmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBTdHJpbmcoKTsgfQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCiAjaWYgIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGY4Y2MwMTMuLmNjNjJjOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw3
IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2th
Z2UuaCIKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogI2luY2x1
ZGUgIkZpbGVTeXN0ZW0uaCIKQEAgLTI4MSw3ICsyODEsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJh
c2U6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAog
ICAgIHJldHVybiBtaW1lVHlwZUZvclBsdWdpbi5nZXQocGx1Z2luQ2hvaWNlc1swXSk7CiB9CiAK
LVBsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVy
bCwgU3RyaW5nJiBtaW1lVHlwZSkKK1BsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5k
UGx1Z2luKGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDZmYWU1ZjAu
LjhkN2VkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4
LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVn
aW5QYWNrYWdlOwogCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpOwogICAgICAgICBzdGF0aWMgaW50IHByZWZlcnJlZFBsdWdpbkNvbXBhcmUoY29u
c3Qgdm9pZCosIGNvbnN0IHZvaWQqKTsKIAotICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5kUGx1
Z2luKGNvbnN0IEtVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICAgICAgUGx1Z2luUGFja2Fn
ZSogZmluZFBsdWdpbihjb25zdCBVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1
Z2luUGFja2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAg
ICAgICAgIHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwCmluZGV4IDUwNTlhZGIuLjhiM2JkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFBsdWdpblN0
cmVhbTo6c3RhcnRTdHJlYW0oKQogewogICAgIEFTU0VSVChtX3N0cmVhbVN0YXRlID09IFN0cmVh
bUJlZm9yZVN0YXJ0ZWQpOwogCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSBtX3Jlc291
cmNlUmVzcG9uc2UudXJsKCk7CisgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IG1fcmVzb3Vy
Y2VSZXNwb25zZS51cmwoKTsKIAogICAgIC8vIFNvbWUgcGx1Z2lucyAoRmxhc2gpIGV4cGVjdCB0
aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUgcGFzc2VkIGJhY2sgZGVjb2RlZCBhcyB0aGlzIGlzIHRo
ZQogICAgIC8vIGZvcm1hdCB1c2VkIHdoZW4gcmVxdWVzdGluZyB0aGUgVVJMLgpAQCAtMzg2LDcg
KzM4Niw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAgfSAKIH0KIAot
dm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IEtVUkwmIHJlcXVl
c3RVUkwsIGNvbnN0IENTdHJpbmcmIHJlc3VsdFN0cmluZykKK3ZvaWQgUGx1Z2luU3RyZWFtOjpz
ZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IENTdHJpbmcm
IHJlc3VsdFN0cmluZykKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgUmVzb3VyY2VSZXNw
b25zZShyZXF1ZXN0VVJMLCAidGV4dC9wbGFpbiIsIHJlc3VsdFN0cmluZy5sZW5ndGgoKSwgIiIs
ICIiKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IDU1ZDE3MDIu
LjdjMDQ4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjgsNyAr
MjgsNyBAQAogI2RlZmluZSBQbHVnaW5TdHJlYW1faAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlci5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIHNldExvYWRNYW51YWxseShib29sIGxvYWRNYW51YWxseSkg
eyBtX2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsgfQogCi0gICAgICAgIHZvaWQgc2VuZEph
dmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5n
JiByZXN1bHRTdHJpbmcpOworICAgICAgICB2b2lkIHNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5nJiByZXN1bHRTdHJpbmcpOwogICAg
ICAgICB2b2lkIGNhbmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwogCiAgICAgICAgIHN0
YXRpYyBOUFAgb3duZXJGb3JTdHJlYW0oTlBTdHJlYW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IGFmYzBhYWIuLjBiMmY4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBJbnN0YW5jZU1hcCYg
aW5zdGFuY2VNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc2NyaXB0
U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgc2Ny
aXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghcHJv
dG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDI2
LDcgKzQyNiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVz
dCogcmVxdWVzdCkKICAgICBpZiAobV9wYXJlbnRGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSAhPSBtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpICYm
ICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgfHwgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLmZpbmQo
dGFyZ2V0RnJhbWVOYW1lKSAhPSBtX3BhcmVudEZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgS1VSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNl
UmVxdWVzdCgpLnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2Fk
UmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIFN0cmluZyBqc1N0cmluZyA9
IHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJMKTsKIAogICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMo
KSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7CkBAIC01MTIsNyArNTEyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2Fk
KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkK
IHsKICAgICBBU1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0
aG9kKCkgPT0gIkdFVCIgfHwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRw
TWV0aG9kKCkgPT0gIlBPU1QiKTsKIAotICAgIEtVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIE5QRVJSX0lOVkFMSURfVVJMOwpAQCAtNTQxLDcgKzU0MSw3IEBAIE5QRXJy
b3IgUGx1Z2luVmlldzo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1
ZXN0LCBib29sIHNlbmROb3RpCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1zdGF0
aWMgS1VSTCBtYWtlVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IGNoYXIqIHJlbGF0aXZl
VVJMU3RyaW5nKQorc3RhdGljIFVSTCBtYWtlVVJMKGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
Y2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHJlbGF0
aXZlVVJMU3RyaW5nOwogCkBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIEtVUkwgbWFrZVVSTChj
b25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKICAgICB1
cmxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICIiKTsKICAgICB1cmxTdHJpbmcucmVw
bGFjZVdpdGhMaXRlcmFsKCdccicsICIiKTsKIAotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVy
bFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmxTdHJpbmcpOwogfQogCiBOUEVy
cm9yIFBsdWdpblZpZXc6OmdldFVSTE5vdGlmeShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIq
IHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSkKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIFBsdWdp
blZpZXc6OnNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdAogICAgIG1fcGFyYW1Db3VudCA9IHBhcmFtQ291bnQ7CiB9CiAKLVBsdWdp
blZpZXc6OlBsdWdpblZpZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXpl
LCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4sIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KQorUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNv
bnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbiwgSFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKICAgICA6IG1fcGFyZW50RnJhbWUocGFyZW50RnJh
bWUpCiAgICAgLCBtX3BsdWdpbihwbHVnaW4pCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKQEAg
LTk0OCw3ICs5NDgsNyBAQCBib29sIFBsdWdpblZpZXc6OmlzQ2FsbGluZ1BsdWdpbigpCiAgICAg
cmV0dXJuIHNfY2FsbGluZ1BsdWdpbiA+IDA7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luVmlldz4g
UGx1Z2luVmlldzo6Y3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRy
PFBsdWdpblZpZXc+IFBsdWdpblZpZXc6OmNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0
IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
CiB7CiAgICAgLy8gaWYgd2UgZmFpbCB0byBmaW5kIGEgcGx1Z2luIGZvciB0aGlzIE1JTUUgdHlw
ZSwgZmluZFBsdWdpbiB3aWxsIHNlYXJjaCBmb3IKICAgICAvLyBhIHBsdWdpbiBieSB0aGUgZmls
ZSBleHRlbnNpb24gYW5kIHVwZGF0ZSB0aGUgTUlNRSB0eXBlLCBzbyBwYXNzIGEgbXV0YWJsZSBT
dHJpbmcKQEAgLTEzODIsNyArMTM4Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVG
b3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIqIHVybCwgY2hhCiAKICAg
ICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAgICAgY2FzZSBOUE5VUkxWQ29va2llOiB7Ci0gICAgICAg
IEtVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7CisgICAg
ICAgIFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKICAg
ICAgICAgaWYgKHUuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBnZXRG
cmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGZyYW1lKSB7
CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJM
KE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNoYQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBOUE5VUkxWUHJveHk6IHsKLSAgICAgICAgS1VSTCB1KG1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAo
dS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVu
dEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJh
bWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+bG9hZGVyKCkgOiAwOwpAQCAtMTQ0Myw3ICsxNDQz
LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2
YXJpYWJsZSwgY29uc3QgY2hhciogdXJsLCBjb24KIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsK
ICAgICBjYXNlIE5QTlVSTFZDb29raWU6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUt
PmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyBjb29raWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4
KHZhbHVlLCBsZW4pOwogICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZ2V0RnJhbWUocGFyZW50
RnJhbWUoKSwgbV9lbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXgg
YzI0NWQzMS4uMTY2YTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc5
LDcgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OwogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgTW91c2VFdmVudDsKLSAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2lu
OwogI2VuZGlmCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgICAgICAgICAgLCBwdWJsaWMgUGx1Z2luTWFudWFsTG9hZGVyCiAgICAgICAgICAgICAg
ICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50
RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50
RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAg
ICAgICAgdmlydHVhbCB+UGx1Z2luVmlldygpOwogCiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBs
dWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luLmdldCgpOyB9CkBAIC0yMTcsNyArMjE3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luc1Bh
Z2UoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbnNQYWdlOyB9CiAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9Ci0gICAgICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogI2lmIGRlZmluZWQoWFBfTUFDT1NYKSAm
JiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgYm9vbCBwb3BVcENvbnRleHRN
ZW51KE5QTWVudSopOwpAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNl
bmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJh
bWUsIGNvbnN0IEludFNpemUmLCBQbHVnaW5QYWNrYWdlKiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpOworICAgICAgICBQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3Qg
SW50U2l6ZSYsIFBsdWdpblBhY2thZ2UqLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
IAogICAgICAgICB2b2lkIHNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIGJvb2wg
c3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCgpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IG1fcGx1Z2luOwogICAg
ICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9lbGVtZW50OwogICAgICAgICBib29sIG1faXNTdGFy
dGVkOwotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFBs
dWdpblN0YXR1cyBtX3N0YXR1czsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG1faW52YWxpZFJl
Y3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRh
YmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKaW5kZXggZmJmZjJlOS4uMzY2MGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1
ZGUgIlBsdWdpbkRhdGFiYXNlLmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5j
bHVkZSA8d3RmL1dpbmRvd3NFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RMb2NhdGlvbi5oCmluZGV4IDVlZmU1ZjcuLmUxMjE5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgU2Nyb2xsYmFyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CmluZGV4IGIzOWEzODAuLjg2OTJjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTMxMCwxMyArMzEwLDEzIEBAIEludFJlY3QgSGl0VGVzdFJlc3Vs
dDo6aW1hZ2VSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJl
bmRlckJveCgpLT5hYnNvbHV0ZUNvbnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
IH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKK1VSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5u
ZXJOb25TaGFyZWROb2RlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4g
VVJMKCk7CiAKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBt
X2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgQXRvbWljU3RyaW5nIHVy
bFN0cmluZzsKICAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoZW1iZWRU
YWcpCkBAIC0zMzAsMzcgKzMzMCwzNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1h
Z2VVUkwoKSBjb25zdAogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG1faW5u
ZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1h
Z2VTb3VyY2VVUkwoKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxT
dHJpbmcpKTsKIH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25zdAogewogICAgIGlmICgh
bV9pbm5lck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJl
dHVybiBVUkwoKTsKIAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUo
ZW1iZWRUYWcpICYmICFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcp
KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICBLVVJMIHVybCA9IG1faW5uZXJOb25T
aGFyZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhlbGVtZW50LT51cmwoKSkpOworICAgIFVSTCB1cmwgPSBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZWxlbWVudC0+dXJsKCkpKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmIChlbGVt
ZW50LT5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LT5zZXJ2
aWNlVHlwZSgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmxvd2VyKCkuZW5kc1dpdGgoIi5wZGYi
KSkpCiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4g
VVJMKCk7CiB9CiAKLUtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsdCA9IG1lZGlhRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gbWVkaWFFbHQtPmN1cnJlbnRTcmMoKTsKLSAgICByZXR1
cm4gS1VSTCgpOworICAgIHJldHVybiBVUkwoKTsKICNlbHNlCi0gICAgcmV0dXJuIEtVUkwoKTsK
KyAgICByZXR1cm4gVVJMKCk7CiAjZW5kaWYKIH0KIApAQCAtNTEwLDEwICs1MTAsMTAgQEAgdm9p
ZCBIaXRUZXN0UmVzdWx0Ojp0b2dnbGVNZWRpYU11dGVTdGF0ZSgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAorVVJMIEhpdFRl
c3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyVVJM
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVu
dChtX2lubmVyVVJMRWxlbWVudC5nZXQoKSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQobV9pbm5lclVS
TEVsZW1lbnQuZ2V0KCkpIHx8IG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGxpbmtUYWcp
KQpAQCAtNTIzLDcgKzUyMyw3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJM
KCkgY29uc3QKICAgICAgICAgdXJsU3RyaW5nID0gbV9pbm5lclVSTEVsZW1lbnQtPmdldEF0dHJp
YnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiAjZW5kaWYKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiBtX2lubmVy
VVJMRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaAppbmRleCBlYzUyMGY4Li5mNWQwOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xs
YmFyOwpAQCAtMTAzLDEwICsxMDMsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZURpc3Bs
YXlTdHJpbmcoKSBjb25zdDsKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKICAgICBJbnRSZWN0
IGltYWdlUmVjdCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0Owot
ICAgIEtVUkwgYWJzb2x1dGVQREZVUkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTWVkaWFV
UkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworICAgIFVSTCBh
YnNvbHV0ZUltYWdlVVJMKCkgY29uc3Q7CisgICAgVVJMIGFic29sdXRlUERGVVJMKCkgY29uc3Q7
CisgICAgVVJMIGFic29sdXRlTWVkaWFVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVMaW5r
VVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAgICAgYm9vbCBp
c0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJMaW5rKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtLmgKaW5kZXggZmM3MWEwOC4uZjhjYmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHlsZVNoYWRlci5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTQ4LDggKzQ4LDggQEAgY2xhc3Mg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU7CiBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENhY2hlZFJlc291cmNl
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShLVVJMIHZlcnRl
eFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCAKLSAgICAg
ICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21l
bnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKFVSTCB2ZXJ0ZXhT
aGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgCisgICAgICAg
IFVSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRT
aGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAogICAgICAgICBjb25z
dCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0
ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyLCBm
cmFnbWVudFNoYWRlclVSTCwgZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5n
cywgbWVzaFR5cGUpKTsKQEAgLTE0MywxMSArMTQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dENhY2hlKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKiBjYWNoZSkgeyBtX2NhY2hlID0g
Y2FjaGU7IH0KICAgICBib29sIGluQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlOyB9CiAg
ICAgCi0gICAgS1VSTCB2ZXJ0ZXhTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNo
YWRlclVSTDsgfQotICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBt
X2ZyYWdtZW50U2hhZGVyVVJMOyB9CisgICAgVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmVydGV4U2hhZGVyVVJMOyB9CisgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQogCiBwcml2YXRlOgotICAgIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKFVSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRl
eFNoYWRlciwgVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBm
cmFnbWVudFNoYWRlciwgCiAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1U
eXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBD
dXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9n
cmFtKHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpCiAgICAgICAgICwgbV92ZXJ0
ZXhTaGFkZXIodmVydGV4U2hhZGVyKQpAQCAtMTcwLDggKzE3MCw4IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBUaGUgVVJMcyBmb3JtIHRoZSBrZXkgb2YgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSBpbiB0aGUgY2FjaGUgYW5kIGFyZSB1c2VkCiAgICAgLy8gdG8gbG9va3VwIHRoZSBTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0gd2hlbiBpdCdzIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAg
S1VSTCBtX3ZlcnRleFNoYWRlclVSTDsKLSAgICBLVVJMIG1fZnJhZ21lbnRTaGFkZXJVUkw7Cisg
ICAgVVJMIG1fdmVydGV4U2hhZGVyVVJMOworICAgIFVSTCBtX2ZyYWdtZW50U2hhZGVyVVJMOwog
CiAgICAgLy8gVGhlIENhY2hlIGlzIHJlc3BvbnNpYmxlIG9mIGludmFsaWRhdGluZyB0aGlzIHJl
ZmVyZW5jZS4KICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogbV9jYWNoZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA3MGY5OWFhLi4xYzYyZWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMy
LDcgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YygpOwogfQogCi12b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNv
bnN0CiB7CiAgICAgU1ZHRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAppbmRleCAxMzI4MWQ0Li40ZmM4
MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdDsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhT
VkdDdXJzb3JFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5jcHAKaW5kZXggMDllZmM2Ni4uNjJhNTZkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorU1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBTVkdEb2N1bWVudENsYXNzKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAppbmRleCBkYzBkMzQyLi42NTNmYTNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogCiBjbGFzcyBTVkdEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBw
b3MpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VS
TCYpOworICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFs
IGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRiMTc1NTQuLjFjMWI0
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA5LDcg
KzIwOSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsCiAgICAgcmV0dXJuIEZFSW1hZ2U6OmNy
ZWF0ZVdpdGhJUklSZWZlcmVuY2UoZmlsdGVyLCBkb2N1bWVudCgpLCBocmVmKCksIHByZXNlcnZl
QXNwZWN0UmF0aW8oKSk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZH
RkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDFkZTZhODMuLjY5NjZkMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHZvaWQg
Y2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAKaW5kZXggOTg5NGVjNC4uOGJiYmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0lt
YWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1
dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAor
dm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmgKaW5kZXggYmE1NGI5Ny4uNDRkNjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyRWxl
bWVudCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhh
dmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9h
ZGVyLmNwcAppbmRleCA3NGZmNmUxLi5mNjVmNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogCiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBLVVJMIGJhc2UgPSBlbGVtZW50
KCktPmJhc2VVUkkoKTsKKyAgICBVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwogICAg
IGlmIChiYXNlLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOworICAgICAgICBy
ZXR1cm4gVVJMKGJhc2UsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1
dGUpKS5zdHJpbmcoKTsKICAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLmNvbXBsZXRl
VVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDdkOTExZjAuLjA5NGEy
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgIG1fdHlwZSA9IHR5cGU7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9p
ZCBTVkdTY3JpcHRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmlu
ZGV4IGQ1Yzk0NmQuLjM3OTNiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
Y3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
aApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgeyByZXR1
cm4gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3Vy
Y2VzKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5j
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAzMGU4
NDk5Li5hNjY3ZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTUyLDkgKzUyLDkgQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVy
RnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICBpZiAoc3RhcnQgPT0g
bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgS1VSTCBiYXNl
ID0gc3RhcnQgPyBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZygwLCBzdGFy
dCkpIDogZG9jdW1lbnQuYmFzZVVSSSgpOworICAgIFVSTCBiYXNlID0gc3RhcnQgPyBVUkwoZG9j
dW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0KSkgOiBkb2N1bWVudC5iYXNl
VVJJKCk7CiAgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3Rh
cnQpOwotICAgIEtVUkwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOworICAgIFVSTCBr
dXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoa3VybCwgZG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm4gZnJh
Z21lbnRJZGVudGlmaWVyLnN1YnN0cmluZygxKTsKIApAQCAtNjIsMjggKzYyLDI4IEBAIFN0cmlu
ZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3Qg
U3RyaW5nJiB1cmwsIERvY3VtCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgS1VSTCB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIHVybCwgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmIGZyYWdtZW50SWRlbnRp
ZmllcikKK3N0YXRpYyBpbmxpbmUgVVJMIHVybEZyb21JUklTdHJpbmdXaXRoRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYgZnJh
Z21lbnRJZGVudGlmaWVyKQogewogICAgIHNpemVfdCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVy
ID0gdXJsLmZpbmQoJyMnKTsKICAgICBpZiAoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllciA9PSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgLy8gRXhjbHVkZSB0aGUgJyMnIGNoYXJhY3RlciB3aGVuIGRldGVybWluaW5nIHRoZSBm
cmFnbWVudElkZW50aWZpZXIuCiAgICAgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1YnN0cmlu
ZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyICsgMSk7CiAgICAgaWYgKHN0YXJ0T2ZGcmFnbWVu
dElkZW50aWZpZXIpIHsKLSAgICAgICAgS1VSTCBiYXNlKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJs
LnN1YnN0cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7Ci0gICAgICAgIHJldHVy
biBLVVJMKGJhc2UsIHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwor
ICAgICAgICBVUkwgYmFzZShkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoMCwgc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gVVJMKGJhc2UsIHVybC5z
dWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIHJldHVy
biBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJ
ZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFVSTChkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJz
dHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogfQogCiBFbGVtZW50KiBTVkdVUklS
ZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgaXJpLCBE
b2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyogZnJhZ21lbnRJZGVudGlmaWVyLCBEb2N1bWVudCog
ZXh0ZXJuYWxEb2N1bWVudCkKIHsKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZyYWdtZW50IGlkZW50
aWZpZXIgY29udGFpbmVkIHdpdGhpbiB0aGUgSVJJIHN0cmluZywgd2UgY2FuJ3QgbG9va3VwIGFu
IGVsZW1lbnQuCiAgICAgU3RyaW5nIGlkOwotICAgIEtVUkwgdXJsID0gdXJsRnJvbUlSSVN0cmlu
Z1dpdGhGcmFnbWVudElkZW50aWZpZXIoaXJpLCBkb2N1bWVudCwgaWQpOwotICAgIGlmICh1cmwg
PT0gS1VSTCgpKQorICAgIFVSTCB1cmwgPSB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRl
bnRpZmllcihpcmksIGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHVybCA9PSBVUkwoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VSSVJlZmVyZW5jZS5oCmluZGV4IDM2ZTAxMTcuLmRkOTU2YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIElmIHRoZSBVUkkgbWF0Y2hlcyBvdXIgZG9j
dW1lbnRzIFVSTCwgd2UncmUgZGVhbGluZyB3aXRoIGEgbG9jYWwgcmVmZXJlbmNlLgotICAgICAg
ICBLVVJMIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVyaSk7CisgICAgICAgIFVSTCB1cmwg
PSBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmkpOwogICAgICAgICByZXR1cm4gIWVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC51cmwoKSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNGIxMTBiMC4uNGNlYTY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBib29sIGlzRXh0ZXJuYWxSZWZlcmVuY2UgPSBpc0V4dGVybmFsVVJJUmVm
ZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc0V4dGVybmFsUmVmZXJl
bmNlKSB7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJl
ZigpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYo
KSk7CiAgICAgICAgICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAg
ICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KHVybC5zdHJpbmcoKSkpOwogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNzVlMTJi
ZC4uZmFhMTQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBA
IC0zNzIsNyArMzcyLDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCiAKICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigp
KTsgLy8gRG9jdW1lbnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5p
bml0KCkuCiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+
c2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3Vt
ZW50TG9hZGVyKCktPndyaXRlcigpLT5iZWdpbihLVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5
IGRvY3VtZW50CisgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS0+YmVnaW4oVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGxv
YWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShkYXRhKCktPmRh
dGEoKSwgZGF0YSgpLT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+d3JpdGVyKCktPmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuY3BwCmluZGV4IDY0NzJlZDkuLjhhMWQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC02MCwyOCArNjAsMjggQEAgdm9pZCBBYnN0cmFjdFdv
cmtlcjo6Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVz
dHJveWVkKCk7IAogfQogCi1LVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKK1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2
ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4g
S1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHVzZSB0aGUgZHluYW1pYyBnbG9iYWwgc2NvcGUgKGJ1ZyAjMjc4ODcpCi0gICAg
S1VSTCBzY3JpcHRVUkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVy
bCk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxl
dGVVUkwodXJsKTsKICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJM
KCk7CiAgICAgfQogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhblJlcXVlc3Qoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZ
X0VSUjsKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAg
IH0KIAogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd1NjcmlwdEZyb21Tb3VyY2Uoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNF
Q1VSSVRZX0VSUjsKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgp
OwogICAgIH0KIAogICAgIHJldHVybiBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmgKaW5kZXggNGVhYzMyMi4uNWRjNjY0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0aGUgcmVz
dWx0IGZvciB2YWxpZGl0eS4KLSAgICAgICAgS1VSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFVSTCByZXNvbHZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIGludHB0cl90IGFzSUQoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAg
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggM2VhZmQxMy4uOTI0MTkzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAg
LTQwLDE0ICs0MCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVh
dGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luKQorUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZT4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3Ms
IERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKIHsK
ICAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJl
ZihuZXcgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdz
LCB0aHJlYWQsIHRvcE9yaWdpbikpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5
UG9saWN5RnJvbVN0cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogICAg
IDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRv
cE9yaWdpbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBmNDY5NDMyLi40M2E1YjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIERl
ZGljYXRlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICAgICAgdmly
dHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBE
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQq
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRo
cmVhZC5jcHAKaW5kZXggZGMyMjAzOC4uOTI5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+
IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94
eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdv
cmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2Vy
TG9hZGVyUHJveHksIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyVGhyZWFkKHNjcmlwdFVSTCwgdXNlckFnZW50
LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHksIHdvcmtlck9iamVjdFBy
b3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9s
aWN5VHlwZSwgdG9wT3JpZ2luKSk7CiB9CiAKLURlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNh
dGVkV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVh
ZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0
dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFBy
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAg
ICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3
b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pCiAgICAg
LCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQogewpAQCAtNTUsNyArNTUs
NyBAQCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6On5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKQogewog
fQogCi1QYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6
OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
dG9wT3JpZ2luKQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2Vy
VGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gdG9wT3JpZ2luKQogewogICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKaW5kZXggYTcwYmU2
Yy4uMTk5OGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
clRocmVhZC5oCkBAIC00MSwxNiArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgRGVkaWNhdGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+
IGNyZWF0ZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVj
dFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtl
ck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogICAg
ICAgICB2aXJ0dWFsIH5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKTsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NP
d25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
b3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3AoKSBPVkVSUklERTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pOworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pOwogCiAgICAgICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5Owog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnkuY3BwCmluZGV4IDk4NWFmMDAuLjVjMjZjOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCkBAIC02NCwxOSArNjQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
aGFyZWRXb3JrZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3Jr
ZXJQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlclJlcG9ydGlu
Z1Byb3h5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94
eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJs
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaGFyZWRXb3JrZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CiAKICAgICB2b2lkIHNl
dFRocmVhZChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFk
ID0gdGhyZWFkOyB9CiAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBt
X3RocmVhZC5nZXQoKTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9j
bG9zaW5nOyB9Ci0gICAgS1VSTCB1cmwoKSBjb25zdAorICAgIFVSTCB1cmwoKSBjb25zdAogICAg
IHsKICAgICAgICAgLy8gRG9uJ3QgdXNlIG1fdXJsLmNvcHkoKSBiZWNhdXNlIGl0IGlzbid0IGEg
dGhyZWFkc2FmZSBtZXRob2QuCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICByZXR1cm4gVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIH0KIAogICAg
IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzb2xhdGVkQ29weSgpOyB9Ci0g
ICAgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luLCBjb25zdCBLVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKKyAgICBib29sIG1h
dGNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4sIGNvbnN0IFVSTCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQ
cm94eQogICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwpAQCAtMTAzLDEyICsxMDMsMTIgQEAgcHVibGljOgog
ICAgIEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBjb25zdDsgLy8gUGFnZSBHcm91cFNl
dHRpbmdzIHVzZWQgYnkgd29ya2VyIHRocmVhZC4KIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3Jr
ZXJQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPik7CisgICAgU2hhcmVkV29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBVUkwmLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAgICAgdm9pZCBjbG9zZSgp
OwogCiAgICAgYm9vbCBtX2Nsb3Npbmc7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1f
dXJsOworICAgIFVSTCBtX3VybDsKICAgICAvLyBUaGUgdGhyZWFkIGlzIGZyZWVkIHdoZW4gdGhl
IHByb3h5IGlzIGRlc3Ryb3llZCwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHJv
eHkgc3RheXMgYXJvdW5kIHVudGlsIHRoZSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBleGl0cy4K
ICAgICBSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBtX3RocmVhZDsKICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IG1fb3JpZ2luOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAg
TXV0ZXggbV93b3JrZXJEb2N1bWVudHNMb2NrOwogfTsKIAotU2hhcmVkV29ya2VyUHJveHk6OlNo
YXJlZFdvcmtlclByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCitTaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVk
V29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luKQogICAgIDogbV9jbG9zaW5nKGZhbHNlKQogICAgICwg
bV9uYW1lKG5hbWUuaXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3VybCh1cmwuY29weSgpKQpAQCAt
MTI3LDcgKzEyNyw3IEBAIFNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlCiAgICAgQVNTRVJUKG1fb3Jp
Z2luLT5oYXNPbmVSZWYoKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNv
bnN0IEtVUkwmIHVybFRvTWF0Y2gpIGNvbnN0Citib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
LCBjb25zdCBVUkwmIHVybFRvTWF0Y2gpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIG9yaWdpbnMg
ZG9uJ3QgbWF0Y2gsIG9yIHRoZSBuYW1lcyBkb24ndCBtYXRjaCwgdGhlbiB0aGlzIGlzIG5vdCB0
aGUgcHJveHkgd2UgYXJlIGxvb2tpbmcgZm9yLgogICAgIGlmICghb3JpZ2luLT5lcXVhbChtX29y
aWdpbi5nZXQoKSkpCkBAIC0yODksNyArMjg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNoYXJlZFdv
cmtlclNjcmlwdExvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlcj4sIHByaXZhdGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+KTsK
LSAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgbG9hZChjb25zdCBVUkwmKTsK
IAogcHJpdmF0ZToKICAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgY2FsbGJhY2tzCkBA
IC0zMDksNyArMzA5LDcgQEAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmsKIHsKIH0KIAotdm9pZCBT
aGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBTaGFy
ZWRXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU3Rh
eSBhbGl2ZSAoYW5kIGtlZXAgdGhlIFNoYXJlZFdvcmtlciBhbmQgSlMgd3JhcHBlciBhbGl2ZSkg
dW50aWwgdGhlIGxvYWQgZmluaXNoZXMuCiAgICAgdGhpcy0+cmVmKCk7CkBAIC00MDEsNyArNDAx
LDcgQEAgdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6ZG9jdW1lbnREZXRhY2hl
ZChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIG1fcHJveGllc1tpXS0+ZG9jdW1lbnREZXRh
Y2hlZChkb2N1bWVudCk7CiB9CiAKLXZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6
OmNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6Y29ubmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIs
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBNdXRleExvY2tlciBs
b2NrKG1fbG9jayk7CiAgICAgQVNTRVJUKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwp
LmdldCgpKSk7CkBAIC00MjYsMTIgKzQyNiwxMiBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5Ojpjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgog
fQogCiAvLyBDcmVhdGVzIGEgbmV3IFNoYXJlZFdvcmtlclByb3h5IG9yIHJldHVybnMgYW4gZXhp
c3Rpbmcgb25lIGZyb20gdGhlIHJlcG9zaXRvcnkuIE11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUg
dGhlIHJlcG9zaXRvcnkgbXV0ZXggaXMgaGVsZC4KLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJv
eHk+IERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIExvb2sgZm9yIGFuIGV4aXN0aW5nIHdvcmtlciwg
YW5kIGNyZWF0ZSBvbmUgaWYgaXQgZG9lc24ndCBleGlzdC4KICAgICAvLyBJdGVtcyBpbiB0aGUg
Y2FjaGUgYXJlIGZyZWVkIG9uIGFub3RoZXIgdGhyZWFkLCBzbyBkbyBhIHRocmVhZHNhZmUgY29w
eSBvZiB0aGUgVVJMIGJlZm9yZSBjcmVhdGluZyB0aGUgb3JpZ2luLAogICAgIC8vIHRvIG1ha2Ug
c3VyZSBubyByZWZlcmVuY2VzIHRvIGV4dGVybmFsIHN0cmluZ3MgbGluZ2VyLgotICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3Byb3hpZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKCFt
X3Byb3hpZXNbaV0tPmlzQ2xvc2luZygpICYmIG1fcHJveGllc1tpXS0+bWF0Y2hlcyhuYW1lLCBv
cmlnaW4sIHVybCkpCiAgICAgICAgICAgICByZXR1cm4gbV9wcm94aWVzW2ldOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5o
CmluZGV4IDcwNWVmNDcuLjgyNjdjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtV
Ukw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKQEAg
LTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHdvcmtlclNj
cmlwdExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlKTsKIAogICAgICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBv
ZiBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KCkKLSAgICAgICAgdm9pZCBjb25uZWN0
VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgdm9pZCBjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+
LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0
IGEgZG9jdW1lbnQgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHZvaWQgZG9jdW1lbnREZXRh
Y2hlZChEb2N1bWVudCopOwpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAgICAgICAgIH5EZWZhdWx0
U2hhcmVkV29ya2VyUmVwb3NpdG9yeSgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkV29y
a2VyUHJveHk+IGdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYpOworICAg
ICAgICBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBnZXRQcm94eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFVSTCYpOwogICAgICAgICAvLyBNdXRleCB1c2VkIHRvIHByb3RlY3QgaW50
ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICBNdXRleCBtX2xvY2s7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCAyOGExZWVkLi5hYTUyNWY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZlYXR1cmVPYnNlcnZlci5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAt
NjYsNyArNjYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgd29ya2VyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJM
KHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBl
Yyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGQ3MTY4NzIuLjFjZjVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MywxNCArNTMsMTQgQEAgUGFzc1Jl
ZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRyPE1lc3NhZ2VQ
b3J0PiBwcnBQb3J0KQogfQogCiAvLyBzdGF0aWMKLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU+IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRy
PEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29u
c3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFz
c093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJl
YWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKIHsKICAgICBSZWZQ
dHI8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUobmFtZSwgdXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQp
KTsKICAgICBjb250ZXh0LT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29u
dGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKICAgICByZXR1
cm4gY29udGV4dC5yZWxlYXNlKCk7CiB9CiAKLVNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGlu
Z3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQorU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6
OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNl
dHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKICAgICA6IFdvcmtlckdsb2JhbFNj
b3BlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCAwKQogICAgICwgbV9uYW1lKG5h
bWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckds
b2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNj
b3BlLmgKaW5kZXggN2NkOTliNy4uZTAxMzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMg
V29ya2VyR2xvYmFsU2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBXb3JrZXJH
bG9iYWxTY29wZSBCYXNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3Jr
ZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBh
c3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmlu
ZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5
cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdv
cmtlckdsb2JhbFNjb3BlKCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkBAIC01OSw3ICs1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0
aHJlYWQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAg
ICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hh
cmVkV29ya2VyVGhyZWFkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0Nv
bnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KSBPVkVSUklERTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZGY0OTU5
Mi4uYTNjZGE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
clJlcG9zaXRvcnkuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeTo6aW5zdGFuY2UoKS5pc0F2YWlsYWJsZSgpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclJl
cG9zaXRvcnk6OmNvbm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093
blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9y
eTo6Y29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6Omluc3RhbmNlKCkuY29ubmVjdFRvV29ya2VyKHdvcmtlciwgcG9ydCwgdXJsLCBuYW1lLCBl
Yyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJl
cG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9y
eS5oCmluZGV4IGMzZDg3ZWMuLjA0OWY4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiAgICAgY2xhc3MgU2hhcmVk
V29ya2VyOwogCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFz
c2VkIFNoYXJlZFdvcmtlciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQs
IGNyZWF0aW5nIGEgbmV3IHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgICAgIHN0YXRpYyB2b2lk
IGNvbm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICAgICAgc3RhdGljIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4s
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGEgZG9j
dW1lbnQgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50RGV0
YWNoZWQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
VGhyZWFkLmNwcAppbmRleCBiYWIzOTU4Li4xYWMxNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVk
V29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2Vy
TG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2Vj
dXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdv
cmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5n
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9h
ZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyVGhy
ZWFkKG5hbWUsIHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29y
a2VyTG9hZGVyUHJveHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkpOwogfQogCi1TaGFyZWRX
b3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3Mq
IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3
b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRo
cmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291
cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBv
cnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBz
dGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKICAgICA6
IFdvcmtlclRocmVhZCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtl
ckxvYWRlclByb3h5LCB3b3JrZXJSZXBvcnRpbmdQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2Vj
dXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIDApCiAgICAgLCBtX25hbWUo
bmFtZS5pc29sYXRlZENvcHkoKSkKIHsKQEAgLTUzLDcgKzUzLDcgQEAgU2hhcmVkV29ya2VyVGhy
ZWFkOjp+U2hhcmVkV29ya2VyVGhyZWFkKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXJHbG9i
YWxTY29wZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29w
ZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4pCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGUobV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCBlODcwZDFmLi5jYTA1
YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgKQEAg
LTM5LDE0ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTaGFyZWRX
b3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91
cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYs
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJU
eXBlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
TG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclRocmVhZCgp
OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xv
YmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKKyAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxT
Y29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91
cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9w
T3JpZ2luKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlclRo
cmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSk7CisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBH
cm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAKaW5kZXggYzJmNjE5Ni4uYmE5MmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcApAQCAtODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogCiAgICAg
d29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2Vy
LT5yZXNvbHZlVVJMKHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29s
dmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGE4MzQ2ZGQuLmI3ZTZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVJ
bnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9Owog
Ci1Xb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5n
cywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9y
aWdpbikKK1dvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0
dGluZ3MsIFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW4pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQp
CiAgICAgLCBtX2dyb3VwU2V0dGluZ3Moc2V0dGluZ3MpCkBAIC0xMTcsMTcgKzExNywxNyBAQCB2
b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBwb2xpYwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRS
ZWNlaXZlSGVhZGVyKHBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CiAKLUtV
UkwgV29ya2VyR2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAorVVJMIFdvcmtlckdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3QKIHsKICAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBu
dWxsIHN0cmluZy4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25z
dHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBj
aGFuZ2UgdGhlIFVSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgaWYg
KHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOwogICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4gV29ya2Vycy4KLSAgICByZXR1cm4gS1VS
TChtX3VybCwgdXJsKTsKKyAgICByZXR1cm4gVVJMKG1fdXJsLCB1cmwpOwogfQogCi1TdHJpbmcg
V29ya2VyR2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3QKK1N0cmluZyBX
b3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fdXNlckFnZW50OwogfQpAQCAtMjE3LDE4ICsyMTcsMTggQEAgdm9pZCBXb3JrZXJHbG9i
YWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0
aW9uQ29kZSYKICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGVjID0g
MDsKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdXJsc0VuZCA9IHVybHMuZW5k
KCk7Ci0gICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gY29t
cGxldGVkVVJMczsKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHVybHMuYmVnaW4oKTsgaXQgIT0gdXJsc0VuZDsgKytpdCkgewotICAgICAgICBjb25zdCBLVVJM
JiB1cmwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKCppdCk7CisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVS
TCgqaXQpOwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjb21w
bGV0ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgIH0KLSAgICBWZWN0b3I8S1VSTD46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7CisgICAgVmVjdG9yPFVSTD46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7CiAKLSAgICBmb3IgKFZlY3RvcjxL
VVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29t
cGxldGVkVVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPFdv
cmtlclNjcmlwdExvYWRlcj4gc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRl
KCkpOwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgICAgIHNjcmlwdExvYWRlci0+c2V0
VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU2NyaXB0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA3MjRiNDBlLi43OGFmNzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC02NSwxMSAr
NjUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IE9WRVJS
SURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0
ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICAgICAgdmlydHVh
bCBjb25zdCBVUkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOwogCiAgICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGlu
Z3MoKSB7IHJldHVybiBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZFUlJJREU7CiAKQEAgLTEz
OSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2VjdXJp
dHlPcmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdG9wT3JpZ2lu
LmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2lu
KTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtlclRocmVhZCosIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZvaWQgYXBwbHlDb250
ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsKQEAgLTE1OSw3ICsx
NTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJFdmVu
dFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKLSAgICAgICAgS1VS
TCBtX3VybDsKKyAgICAgICAgVVJMIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7
CiAgICAgICAgIE93blB0cjxHcm91cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggZDk3
YTA3Yy4uYTk1ZGM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZVByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZVByb3h5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgV29ya2VyOwogCiAg
ICAgLy8gQSBwcm94eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2Jh
bFNjb3BlUHJveHkoKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1p
bmF0ZVdvcmtlckdsb2JhbFNjb3BlKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckxvY2F0aW9uLmgKaW5kZXggNGJkMzU5MS4uMTExMWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTG9jYXRpb24uaApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktF
UlMpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBXb3JrZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckxvY2F0aW9u
PiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlv
bj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29y
a2VyTG9jYXRpb24+IGNyZWF0ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJMb2NhdGlvbih1cmwpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogICAgICAgICBT
dHJpbmcgaHJlZigpIGNvbnN0OwogCkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigpOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBLVVJM
JiB1cmwpIDogbV91cmwodXJsKSB7IH0KKyAgICAgICAgZXhwbGljaXQgV29ya2VyTG9jYXRpb24o
Y29uc3QgVVJMJiB1cmwpIDogbV91cmwodXJsKSB7IH0KIAotICAgICAgICBLVVJMIG1fdXJsOwor
ICAgICAgICBVUkwgbV91cmw7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBi
NzRjZTQxLi4wMmViYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHN0
YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdl
dCgpKS0+dGhyZWFkKCktPnRocmVhZElEKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4g
d2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDhhN2VjOGQuLjE4OTZhODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDcgKzUzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBX
b3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9k
cyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9k
ZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUpIE9WRVJSSURFOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBPVkVSUklERTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXk+KSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCmluZGV4IDkyMjcyMjYuLjhkYTRlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2Vy
U2NyaXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVybDsKIApAQCAtNzUsNyArNzUs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUq
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKIH0K
ICAgICAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJs
LCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjps
b2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09y
aWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewog
ICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVx
dWVzdCwgb3B0aW9ucyk7CiB9CiAKLWNvbnN0IEtVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVz
cG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNl
VVJMKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZhaWxlZCgpKTsKICAgICByZXR1cm4gbV9yZXNw
b25zZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmlu
ZGV4IGRjMWM1YmEuLjljYjRmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXJDbGllbnQuaCIKQEAgLTU2LDE0ICs1NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclNjcmlwdExvYWRlcigp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOwot
ICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50Kik7CisgICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7CisgICAgICAg
IHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBV
UkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCop
OwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJyb3IoKTsKIAogICAgICAgICBTdHJpbmcgc2NyaXB0
KCk7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0g
ICAgICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNw
b25zZVVSTCgpIGNvbnN0OwogICAgICAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmFpbGVkOyB9CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQogCkBAIC05MSw4ICs5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsgICAgICAgIAogICAgICAgICBS
ZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTdHJpbmdCdWls
ZGVyIG1fc2NyaXB0OwotICAgICAgICBLVVJMIG1fdXJsOwotICAgICAgICBLVVJMIG1fcmVzcG9u
c2VVUkw7CisgICAgICAgIFVSTCBtX3VybDsKKyAgICAgICAgVVJMIG1fcmVzcG9uc2VVUkw7CiAg
ICAgICAgIGJvb2wgbV9mYWlsZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVy
OwogICAgICAgICBib29sIG1fZmluaXNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwCmluZGV4IDk4M2Y5OWQuLjVlNDkyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiAjaW5jbHVkZSAiRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTY5LDEyICs2OSwxMiBAQCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6
OndvcmtlclRocmVhZENvdW50KCkKIHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJU
aHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJp
bmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRv
cE9yaWdpbikKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4g
Y3JlYXRlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRV
UkwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKICAg
ICB9CiAKLSAgICBLVVJMIG1fc2NyaXB0VVJMOworICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBT
dHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1fZ3JvdXBTZXR0
aW5nczsKICAgICBTdHJpbmcgbV9zb3VyY2VDb2RlOwpAQCAtODMsMTAgKzgzLDEwIEBAIHB1Ymxp
YzoKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiBw
cml2YXRlOgotICAgIFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVS
TCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBj
b250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KTsKKyAgICBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50
U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIH07
CiAKLVdvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25z
dCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNl
dHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWRTdGFydHVw
RGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCiAgICAgOiBtX3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQogICAgICwg
bV91c2VyQWdlbnQodXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zb3VyY2VDb2Rl
KHNvdXJjZUNvZGUuaXNvbGF0ZWRDb3B5KCkpCkBAIC0xMDQsNyArMTA0LDcgQEAgV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3QKICAgICBtX2dyb3VwU2V0dGluZ3MtPnNldEluZGV4ZWREQkRhdGFiYXNl
UGF0aChzZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkuaXNvbGF0ZWRDb3B5KCkpOwog
fQogCi1Xb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJv
eHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQorV29ya2VyVGhyZWFkOjpX
b3JrZXJUaHJlYWQoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1By
b3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIDogbV90aHJlYWRJRCgwKQogICAgICwgbV93b3JrZXJM
b2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJv
eHkod29ya2VyUmVwb3J0aW5nUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
aAppbmRleCBlYTM0OTQ4Li5kNWRiMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50Owog
ICAgIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpA
QCAtNzEsMTAgKzcxLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bik7CisgICAgICAgIFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlckxvYWRlclByb3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwog
CiAgICAgICAgIC8vIEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29u
dGV4dCBmb3IgdGhlIHRocmVhZC4KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOworICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0
dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pID0gMDsKIAogICAgICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIHdv
cmtlciB0aHJlYWQuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBhY3Rp
b25zIGJlZm9yZS9hZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KICAgICAgICAgdmlydHVh
bCB2b2lkIHJ1bkV2ZW50TG9vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RP
TVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRleCAzODA2
NDNhLi4zZTIwZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVu
dChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7CisgICAgUmVmUHRyPERvY3VtZW50PiBk
b2MgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIFVS
TCgpLCBmYWxzZSk7CiAgICAgZG9jLT5zZXRDb250ZW50KHN0cik7CiAgICAgcmV0dXJuIGRvYy5y
ZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxOWIx
OTk0Li5jMjc1YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ2
OSwxMiArNDY5LDEyIEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiAhbmFtZS5zdGFydHNXaXRoKHN0YXRpY0Rh
dGEtPm1fc2VjSGVhZGVyUHJlZml4LCBmYWxzZSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6
Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgb3BlbihtZXRob2QsIHVy
bCwgdHJ1ZSwgZWMpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVj
KQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
VVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGludGVybmFs
QWJvcnQoKTsKICAgICBTdGF0ZSBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTU1NCwxNyAr
NTU0LDE3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjCiAgICAgICAgIG1fc3RhdGUgPSBPUEVO
RUQ7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CisgICAg
VVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRV
c2VyKHVzZXIpOwogCiAgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMs
IGVjKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMs
IGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKKyAgICBVUkwgdXJs
V2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNl
cik7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDI0MWVhNDUuLmY4MDY0ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC04NiwxNiArODYsMTYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBP
VkVSUklERSBGSU5BTCB7IHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVj
dDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7
CiAgICAgaW50IHN0YXR1cyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhDcmVkZW50aWFscyhib29s
LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBj
b25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVz
ZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNv
bnN0IFVSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBh
c3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogCiAgICAgT3du
UHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBtX3VwbG9hZDsKIAotICAgIEtVUkwgbV91cmw7Cisg
ICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1f
cmVxdWVzdEhlYWRlcnM7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IDc4Nzg0NjIuLmRmODUzNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgWFNM
SW1wb3J0UnVsZTo6flhTTEltcG9ydFJ1bGUoKQogICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1v
dmVDbGllbnQodGhpcyk7CiB9CiAKLXZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
c2hlZXQpCit2b2lkIFhTTEltcG9ydFJ1bGU6OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAg
aWYgKG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNo
ZWV0KDApOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgp
CiAgICAgWFNMU3R5bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAg
ICAgaWYgKCFwYXJlbnRTaGVldC0+YmFzZVVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2Ug
cGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9
IEtVUkwocGFyZW50U2hlZXQtPmJhc2VVUkwoKSwgbV9zdHJIcmVmKS5zdHJpbmcoKTsKKyAgICAg
ICAgYWJzSHJlZiA9IFVSTChwYXJlbnRTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmlu
ZygpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4u
ICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFp
biB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuaAppbmRleCAzNTBjZGQ5Li43MmUwNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMSW1wb3J0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRS
dWxlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBYU0xJbXBvcnRS
dWxlKFhTTFN0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiBzaGVldCk7CiAgICAgCiAgICAgWFNMU3R5bGVTaGVldCogbV9wYXJlbnRT
dHlsZVNoZWV0OwogICAgIFN0cmluZyBtX3N0ckhyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXQuaAppbmRleCBkMzQ2YWFmLi5mZDFlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
LmgKQEAgLTQwLDIyICs0MCwyMiBAQCBjbGFzcyBYU0xJbXBvcnRSdWxlOwogICAgIAogY2xhc3Mg
WFNMU3R5bGVTaGVldCBGSU5BTCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFy
ZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVS
TCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0
UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwm
IGZpbmFsVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNo
ZWV0KHBhcmVudEltcG9ydCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZp
bmFsVVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBmYWxzZSkp
OwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGVFbWJl
ZGRlZChQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IEtVUkwmIGZpbmFs
VVJMKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVk
KFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgVVJMJiBmaW5hbFVSTCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnRO
b2RlLCBmaW5hbFVSTC5zdHJpbmcoKSwgZmluYWxVUkwsIHRydWUpKTsKICAgICB9CiAKICAgICAv
LyBUYWtpbmcgYW4gYXJiaXRyYXJ5IG5vZGUgaXMgdW5zYWZlLCBiZWNhdXNlIG93bmVyIG5vZGUg
cG9pbnRlciBjYW4gYmVjb21lIHN0YWxlLgogICAgIC8vIFhTTFRQcm9jZXNzb3IgZW5zdXJlcyB0
aGF0IHRoZSBzdHlsZXNoZWV0IGRvZXNuJ3Qgb3V0bGl2ZSBpdHMgcGFyZW50LCBpbiBwYXJ0IGJ5
IG5vdCBleHBvc2luZyBpdCB0byBKYXZhU2NyaXB0LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhT
TFN0eWxlU2hlZXQ+IGNyZWF0ZUZvclhTTFRQcm9jZXNzb3IoTm9kZSogcGFyZW50Tm9kZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBw
YXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJM
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVu
dE5vZGUsIG9yaWdpbmFsVVJMLCBmaW5hbFVSTCwgZmFsc2UpKTsKICAgICB9CkBAIC02Niw3ICs2
Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNoZWNrTG9hZGVkKCk7CiAgICAgCi0gICAg
Y29uc3QgS1VSTCYgZmluYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsVVJMOyB9CisgICAg
Y29uc3QgVVJMJiBmaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KIAogICAg
IHZvaWQgbG9hZENoaWxkU2hlZXRzKCk7CiAgICAgdm9pZCBsb2FkQ2hpbGRTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYpOwpAQCAtOTQsMTggKzk0LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyB0aXRsZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFIHsgbV9vd25lck5vZGUg
PSAwOyB9Ci0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkwoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2ZpbmFsVVJMOyB9CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFhTTFN0eWxlU2hlZXQo
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYg
ZmluYWxVUkwsIGJvb2wgZW1iZWRkZWQpOwotICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVs
ZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBm
aW5hbFVSTCk7CisgICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMLCBib29sIGVtYmVkZGVkKTsKKyAg
ICBYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCk7CiAgICAgCiAgICAgTm9kZSogbV9v
d25lck5vZGU7CiAgICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCBtX2ZpbmFsVVJM
OworICAgIFVSTCBtX2ZpbmFsVVJMOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogCiAgICAgVmVj
dG9yPE93blB0cjxYU0xJbXBvcnRSdWxlPiA+IG1fY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAppbmRleCA2N2ZmMWViLi5mZTc0ZTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgU09GVF9MSU5LKGxpYnhzbHQsIHhzbHRMb2FkU3R5bGVzaGVldFBJLCB4c2x0U3R5bGVz
aGVldFB0ciwgKHhtbERvY1B0ciBkb2MpLCAoZG8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Y
U0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorWFNMU3R5bGVT
aGVldDo6WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIDogbV9vd25lck5vZGUo
MCkKICAgICAsIG1fb3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpCiAgICAgLCBtX2ZpbmFsVVJMKGZp
bmFsVVJMKQpAQCAtNjcsNyArNjcsNyBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhT
TEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUgogewogfQog
Ci1YU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkK
K1hTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCwgIGJvb2wgZW1iZWRkZWQpCiAg
ICAgOiBtX293bmVyTm9kZShwYXJlbnROb2RlKQogICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5h
bFVSTCkKICAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nl
c3Nvci5jcHAKaW5kZXggMGQwNzk1Mi4uYWViYTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yLmNwcApAQCAtNzYsMTAgKzc2LDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQ
cm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjCiAK
ICAgICBSZWZQdHI8RG9jdW1lbnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUgPT0g
InRleHQvcGxhaW4iKSB7Ci0gICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUs
IHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CisgICAg
ICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBv
d25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0cmlu
Z1RvWEhUTUxEb2N1bWVudFN0cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1F
VHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtV
UkwoKSwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJE
b2N1bWVudC0+dXJsKCkgOiBVUkwoKSwgZmFsc2UpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcs
IHdlIG5lZWQgdG8gc2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5l
dyBkb2N1bWVudAogICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3
ZSdyZSByZW5kZXJpbmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDZmMDg0OWQuLmU5NTI0YmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAg
ICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRl
eHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OwogICAgICAgICB4
bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29u
dGV4dC0+bm9kZSk7Ci0gICAgICAgIEtVUkwgdXJsKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KHVyaSkpOworICAgICAgICBVUkwgdXJsKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4odXJpKSk7CiAgICAgICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
aW5kZXggMzM4NzA5MS4uYjE4NjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBA
IHN0YXRpYyB2b2lkIHN3aXRjaFRvVVRGMTYoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KQogICAgIHht
bFN3aXRjaEVuY29kaW5nKGN0eHQsIEJPTUhpZ2hCeXRlID09IDB4RkYgPyBYTUxfQ0hBUl9FTkNP
RElOR19VVEYxNkxFIDogWE1MX0NIQVJfRU5DT0RJTkdfVVRGMTZCRSk7CiB9CiAKLXN0YXRpYyBi
b29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29s
IHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1
cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgdm9p
ZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIEFTU0VSVChYTUxEb2N1bWVudFBhcnNl
clNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwg
dXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCFzaG91bGRBbGxvd0V4
dGVybmFsTG9hZCh1cmwpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDRlN2E2ZjQuLmRkNmMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMt
MDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBL
VVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
ICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluOgorICAgICAgICBMZXQgdGhlIHNjcmlwdCB0byB0cnkgdG8gcmVuYW1lIGhlcmUuCisKIDIw
MTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRF
eHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0
R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDgzYjM4YzQuLmMxYzdmZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHBy
b2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0zOTMsNyAr
MzkzLDcgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkQXV0aG9yU2hl
ZXRARG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0
ckBWU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkQXV0aG9yU2hlZXRA
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRRUFBWFY/JFBhc3NSZWZQdHJA
VlN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3BhcnNlU3RyaW5nQFN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVfTkFC
VlN0cmluZ0BXVEZAQEBaLCA/cGFyc2VTdHJpbmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVA
QFFFQUFfTkFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Vt
cHR5U3RyaW5nQFdURkBAWUFBQlZTdHJpbmdAMUBYWiwgP2VtcHR5U3RyaW5nQFdURkBAWUFBRUJW
U3RyaW5nQDFAWFopCi0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEtVUkxA
V2ViQ29yZUBAQUFFWFhaLCA/aW52YWxpZGF0ZUBLVVJMQFdlYkNvcmVAQEFFQUFYWFopCisgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBQUVYWFosID9p
bnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/PzBTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAQUFFQFBBVlN0eWxlUnVsZUltcG9ydEAx
QEFCVlN0cmluZ0BXVEZAQEFCVUNTU1BhcnNlckNvbnRleHRAMUBAWiwgPz8wU3R5bGVTaGVldENv
bnRlbnRzQFdlYkNvcmVAQEFFQUFAUEVBVlN0eWxlUnVsZUltcG9ydEAxQEFFQlZTdHJpbmdAV1RG
QEBBRUJVQ1NTUGFyc2VyQ29udGV4dEAxQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
YWRkVXNlclNoZWV0QERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUFFWFY/
JFBhc3NSZWZQdHJAVlN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWiwgP2FkZFVz
ZXJTaGVldEBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFz
c1JlZlB0ckBWU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUFFQFhaLCA/
PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUVBQUBYWikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcAppbmRleCBiM2JhOGYzLi4xOTQ2ODg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwCkBAIC0y
MSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29r
aWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKQEAgLTM1LDcgKzM1LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogCiBzdGQ6
OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiBXZWJDb29raWVKYXI6OmNvb2tp
ZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdXJsKQogewotICAgIEtVUkwg
a3VybCA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1cmwp
OwogCiAgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICBj
b29raWVNYW5hZ2VyKCkuZ2V0UmF3Q29va2llcyhyYXdDb29raWVzLCBrdXJsLCBXaXRoSHR0cE9u
bHlDb29raWVzKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZz4gV2ViQ29va2llSmFyOjpjb29raWVzKGNvbnN0IEJsYWNrQmVycnkKIAog
dm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlN0cmluZyYgdXJsLCBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nPiYgY29va2llcykKIHsKLSAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAg
ICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JlQ29v
a2llczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIGNvcmVDb29raWVzLmFwcGVuZChjb29raWVzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAppbmRleCAyZTYzOGU2Li44NzIy
OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRD
b2RlYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29k
ZWMuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGV4dENvZGVjLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggMDBlNjg0MC4uNDk5ZWQwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBjb25zdCBk
b3VibGUgbWF4aW11bUltYWdlRG9jdW1lbnRab29tVG9GaXRTY2FsZSA9IDI7CiBjb25zdCBkb3Vi
bGUgem9vbUZhY3RvckVwc2lsb24gPSAwLjAwMDE7CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB0byBw
YXJzZSBhIFVSTCBhbmQgZmlsbCBpbiBtaXNzaW5nIHBhcnRzLgotc3RhdGljIEtVUkwgcGFyc2VV
cmwoY29uc3QgU3RyaW5nJiB1cmwpCitzdGF0aWMgVVJMIHBhcnNlVXJsKGNvbnN0IFN0cmluZyYg
dXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcodXJsKTsKLSAgICBLVVJMIGt1cmwgPSBLVVJM
KEtVUkwoKSwgdXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5n
KTsKICAgICBpZiAoa3VybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkgewogICAgICAgICB1cmxTdHJp
bmcuaW5zZXJ0KCJodHRwOi8vIiwgMCk7Ci0gICAgICAgIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJs
U3RyaW5nKTsKKyAgICAgICAga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKTsKICAgICB9CiAK
ICAgICByZXR1cm4ga3VybDsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojppbml0KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhZ2VHcm91cE5hbWUp
CiAKIGNsYXNzIERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQ6IHB1YmxpYyBEZWZlcnJlZFRh
c2s8JldlYlBhZ2VQcml2YXRlOjptX3dvdWxkTG9hZE1hbnVhbFNjcmlwdD4gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQoV2ViUGFnZVByaXZhdGUq
IHdlYlBhZ2VQcml2YXRlLCBjb25zdCBLVVJMJiB1cmwpCisgICAgZXhwbGljaXQgRGVmZXJyZWRU
YXNrTG9hZE1hbnVhbFNjcmlwdChXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZVByaXZhdGUsIGNvbnN0
IFVSTCYgdXJsKQogICAgICAgICA6IERlZmVycmVkVGFza1R5cGUod2ViUGFnZVByaXZhdGUpCiAg
ICAgewogICAgICAgICB3ZWJQYWdlUHJpdmF0ZS0+bV9jYWNoZWRNYW51YWxTY3JpcHQgPSB1cmw7
CkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBQbGF0
Zm9ybTo6TmV0d29ya1JlcXVlc3QmIG5ldFJlcSwgYm9vbCBuZWVkUmVmZXIKICAgICB9IGVsc2UK
ICAgICAgICAgbV9tYWluRnJhbWUtPnNldEluVmlld1NvdXJjZU1vZGUoZmFsc2UpOwogCi0gICAg
S1VSTCBrdXJsID0gcGFyc2VVcmwodXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IHBhcnNlVXJs
KHVybFN0cmluZyk7CiAgICAgaWYgKHByb3RvY29sSXMoa3VybCwgImphdmFzY3JpcHQiKSkgewog
ICAgICAgICAvLyBOZXZlciBydW4gamF2YXNjcmlwdCB3aGlsZSBsb2FkaW5nIGlzIGRlZmVycmVk
LgogICAgICAgICBpZiAobV9wYWdlLT5kZWZlcnNMb2FkaW5nKCkpCkBAIC03MzksMTQgKzczOSwx
NCBAQCB2b2lkIFdlYlBhZ2U6OmxvYWQoY29uc3QgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIG5lZWRSZWZlcmVyKQogCiB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkU3Ry
aW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHN0cmluZywgY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmIGZhaWxpbmdVUkwpCiB7Ci0gICAgS1VSTCBrdXJsID0gcGFyc2VVcmwoYmFzZVVSTCk7
CisgICAgVVJMIGt1cmwgPSBwYXJzZVVybChiYXNlVVJMKTsKICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcgogICAg
ICAgICA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0cmluZy5jX3N0cigpLCBzdHJpbmcubGVuZ3Ro
KCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwKICAgICAgICAg
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCiAgICAgICAgIGV4dHJh
Y3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCi0gICAgICAgICFmYWlsaW5nVVJM
LmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IEtVUkwoKSk7CisgICAgICAgICFmYWls
aW5nVVJMLmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IFVSTCgpKTsKICAgICBtX21h
aW5GcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLCByZXF1
ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBib29sIFdl
YlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IHN0ZDo6d3N0cmlu
ZyYgc2NyaXB0LCBKYXZhUwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIFN0cmlu
ZyBzdHIgPSBTdHJpbmcoZGF0YSwgbGVuZ3RoQ29waWVkKTsKLSAgICBTY3JpcHRTb3VyY2VDb2Rl
IHNvdXJjZUNvZGUoc3RyLCBLVVJMKCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29k
ZShzdHIsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVk
V29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFsdWUpOwogfQogCiBib29sIFdl
YlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpTdHJpbmcmIHNjcmlwdFVURjgsIEphdmFTY3JpcHREYXRhVHlwZSYgcmV0dXJu
VHlwZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcmV0dXJuVmFsdWUpCiB7CiAgICAg
QkxBQ0tCRVJSWV9BU1NFUlQoc2NyaXB0VVRGOC5pc1V0ZjgoKSk7Ci0gICAgU2NyaXB0U291cmNl
Q29kZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIEtVUkwoKSk7CisgICAgU2NyaXB0U291cmNlQ29k
ZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUph
dmFTY3JpcHRJbklzb2xhdGVkV29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFs
dWUpOwogfQogCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlMKICAg
ICBpZiAoc291cmNlLT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRl
c3RpbmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlv
bihVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBk
ZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAt
MTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm0KICAgICBpZiAoc291cmNl
LT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRlc3RpbmF0aW9uKEtV
UkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVz
dGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlv
bi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAtMjA2NCw3ICsy
MDY0LDcgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6aXNBY3RpdmUoKSBjb25zdAogICAgIHJldHVy
biBtX2NsaWVudC0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgaW5wdXRDcmVkZW50aWFsKQordm9p
ZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFs
JiBpbnB1dENyZWRlbnRpYWwpCiB7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2Vy
KiBhdXRobWdyID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpOwog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgdXNlcm5hbWU7CkBAIC0yMTU2LDcgKzIx
NTYsNyBAQCBQbGF0Zm9ybTo6V2ViQ29udGV4dCBXZWJQYWdlUHJpdmF0ZTo6d2ViQ29udGV4dChU
YXJnZXREZXRlY3Rpb25TdHJhdGVneSBzdHJhdGVneQogICAgIE5vZGUqIGxpbmtOb2RlID0gbm9k
ZS0+ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAgICAgLy8gU2V0IGxpbmsgdXJs
IG9ubHkgd2hlbiB0aGUgbm9kZSBpcyBsaW5rZWQgaW1hZ2UsIG9yIHRleHQgaW5zaWRlIGFuY2hv
ci4gUHJldmVudCBDQ00gcG9wdXAgd2hlbiBsb25nIHByZXNzIG5vbi1saW5rIGVsZW1lbnQoZWcu
IGJ1dHRvbikgaW5zaWRlIGFuIGFuY2hvci4KICAgICBpZiAobGlua05vZGUgJiYgKG5vZGUgPT0g
bGlua05vZGUgfHwgbm9kZS0+aXNUZXh0Tm9kZSgpIHx8IG5vZGVJc0ltYWdlKSkgewotICAgICAg
ICBLVVJMIGhyZWY7CisgICAgICAgIFVSTCBocmVmOwogICAgICAgICBpZiAobGlua05vZGUtPmlz
TGluaygpICYmIGxpbmtOb2RlLT5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChj
b25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRvRWxlbWVudChsaW5rTm9kZSktPmZpbmRBdHRy
aWJ1dGVCeU5hbWUoSFRNTE5hbWVzOjpocmVmQXR0cikpCiAgICAgICAgICAgICAgICAgaHJlZiA9
IGxpbmtOb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMoYXR0cmlidXRlLT52YWx1ZSgpKSk7CkBAIC00ODk3LDcgKzQ4OTcsNyBAQCB2
b2lkIFdlYlBhZ2U6OmluaXRQb3B1cFdlYlZpZXcoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
KiB3ZWJQYWdlKQogICAgIGQtPm1fcGFnZVBvcHVwLT5pbml0aWFsaXplKHdlYlBhZ2UpOwogfQog
Ci1TdHJpbmcgV2ViUGFnZVByaXZhdGU6OmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRlcm5TdHJpbmdG
b3JVcmwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKChtX3dlYlNldHRpbmdzLT5z
aG91bGRIYW5kbGVQYXR0ZXJuVXJscygpICYmIHByb3RvY29sSXModXJsLCAicGF0dGVybiIpKQog
ICAgICAgICB8fCBwcm90b2NvbElzKHVybCwgInRlbCIpCkBAIC01ODQxLDcgKzU4NDEsNyBAQCB2
b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyhXZWJTZXR0aW5ncyogd2ViU2V0
dGluZ3MpCiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIHN0eWxlc2hlZXRVUkwg
PSB3ZWJTZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwogICAgIGlmICghc3R5bGVz
aGVldFVSTC5lbXB0eSgpKQotICAgICAgICBjb3JlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oS1VSTChLVVJMKCksIHN0eWxlc2hlZXRVUkwpKTsKKyAgICAgICAgY29yZVNldHRp
bmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwoKSwgc3R5bGVzaGVldFVSTCkp
OwogCiAgICAgY29yZVNldHRpbmdzLT5zZXRGaXJzdFNjaGVkdWxlZExheW91dERlbGF5KHdlYlNl
dHRpbmdzLT5maXJzdFNjaGVkdWxlZExheW91dERlbGF5KCkpOwogICAgIGNvcmVTZXR0aW5ncy0+
c2V0VXNlQ2FjaGUod2ViU2V0dGluZ3MtPnVzZVdlYktpdENhY2hlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYTdlODNmMS4uNDdjZDhlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiTGF5ZXJSZW5kZXJlci5oIgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNlbmRpZgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBzaG93QWxlcnREaWFsb2coV2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlIGF0eXBl
KTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CisgICAg
dmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRp
YWwmKTsKICAgICB2aXJ0dWFsIFNhdmVDcmVkZW50aWFsVHlwZSBub3RpZnlTaG91bGRTYXZlQ3Jl
ZGVudGlhbChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBJZiB0aGlzIHVybCBzaG91bGQgYmUgaGFuZGxlZCBhcyBhIHBhdHRlcm4sIHJldHVy
bnMgdGhlIHBhdHRlcm4KICAgICAvLyBvdGhlcndpc2UsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5n
LgotICAgIFN0cmluZyBmaW5kUGF0dGVyblN0cmluZ0ZvclVybChjb25zdCBXZWJDb3JlOjpLVVJM
JikgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBzdXNwZW5kQmFja2luZ1N0b3JlKCk7CiAgICAg
dm9pZCByZXN1bWVCYWNraW5nU3RvcmUoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBwdWJsaWM6CiAg
ICAgaW50IG1fY2FjaGVkUG9wdXBMaXN0U2VsZWN0ZWRJbmRleDsKICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkRGF0ZVRpbWVJbnB1dDsKICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkQ29sb3JJbnB1dDsKLSAgICBXZWJDb3JlOjpLVVJMIG1f
Y2FjaGVkTWFudWFsU2NyaXB0OworICAgIFdlYkNvcmU6OlVSTCBtX2NhY2hlZE1hbnVhbFNjcmlw
dDsKIAogICAgIGNsYXNzIERlZmVycmVkVGFza0Jhc2UgewogICAgIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGM4NmQwOTguLjQ4MGQzNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJl
bmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
IGFzIGEgU2luZ2xldG9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4
IDMyMzkzYTcuLmE1MjI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAK
QEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SWNvbi5oIgogI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZFBvaW50ZXIuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlICJXZWJQYWdlQ2xpZW50LmgiCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFn
ZSogQ2hyb21lQ2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29u
c3QgRnJhbWVMb2FkUmVxdWVzdCYKICAgICAvLyBCYWlsIG91dCBlYXJseSB3aGVuIHdlIGFyZW4n
dCBhbGxvd2VkIHRvIGRpc3BsYXkgdGhlIHRhcmdldCBvcmlnaW4sIG90aGVyd2lzZSwKICAgICAv
LyBpdCB3b3VsZCBiZSBoYXJtZnVsIGFuZCB0aGUgd2luZG93IHdvdWxkIGJlIHVzZWxlc3MuIFRo
aXMgaXMgdGhlIHNhbWUgY2hlY2sKICAgICAvLyBhcyB0aGUgb25lIGluIEZyYW1lTG9hZGVyOjps
b2FkRnJhbWVSZXF1ZXN0KCkuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5
KHVybCkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlcG9ydExvY2FsTG9hZEZhaWxlZChm
cmFtZSwgdXJsLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmNwcAppbmRleCA0MTY5MGJkLi43YTAwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5j
cHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKaW5kZXggNTFkMTgxNy4uZDUwNzlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuY3BwCmluZGV4IDhlM2RmNDAuLjYwYjdkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRp
YWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxUcmFuc2Zvcm1EYXRhLmgiCiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2Ugewogc3Rh
dGljIGNvbnN0IHNpemVfdCBtYXhQYXNzd29yZHMgPSAzOwogCiAvLyBIZWxwZXIgbWV0aG9kIHRv
IGNsZWFyIHVybCBvZiB1bm5lZWRlZCBwYXJ0cy4KLUtVUkwgc3RyaXBVUkwoY29uc3QgS1VSTCYg
dXJsKQorVVJMIHN0cmlwVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIEtVUkwgc3RyaXBwZWRV
UkwgPSB1cmw7CisgICAgVVJMIHN0cmlwcGVkVVJMID0gdXJsOwogICAgIHN0cmlwcGVkVVJMLnNl
dFVzZXIoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFBhc3MoU3RyaW5nKCkpOwogICAg
IHN0cmlwcGVkVVJMLnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTc4LDEzICs3OCwxMyBAQCBDcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEoSFRNTEZvcm1FbGVt
ZW50KiBmb3JtLCBib29sIGlzRgogICAgIEFTU0VSVChmb3JtKTsKIAogICAgIC8vIEdldCB0aGUg
ZG9jdW1lbnQgVVJMCi0gICAgS1VSTCBmdWxsT3JpZ2luKFBhcnNlZFVSTFN0cmluZywgZm9ybS0+
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKSk7CisgICAgVVJMIGZ1bGxPcmlnaW4oUGFyc2VkVVJM
U3RyaW5nLCBmb3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpKTsKIAogICAgIC8vIENhbGN1
bGF0ZSB0aGUgY2Fub25pY2FsIGFjdGlvbiBVUkwKICAgICBTdHJpbmcgYWN0aW9uID0gZm9ybS0+
YWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKICAgICAgICAgYWN0aW9uID0gIiI7
IC8vIG1pc3NpbmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMgY3VycmVudCBVUkwKLSAgICBL
VVJMIGZ1bGxBY3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhY3Rpb24pOwor
ICAgIFVSTCBmdWxsQWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWN0aW9u
KTsKICAgICBpZiAoIWZ1bGxBY3Rpb24uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTk1LDcgKzk1LDcgQEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YKICAgICBpZiAoIWlzRm9yU2F2
aW5nICYmIG1fb2xkUGFzc3dvcmRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJM
IHVybCA9IHN0cmlwVVJMKGZ1bGxPcmlnaW4pOworICAgIFVSTCB1cmwgPSBzdHJpcFVSTChmdWxs
T3JpZ2luKTsKICAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxBY3Rpb24pOwogICAgIG1fcHJv
dGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCksIHVybC5wb3J0KCksIFBy
b3RlY3Rpb25TcGFjZVNlcnZlckhUVFAsICJGb3JtIiwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVIVE1MRm9ybSk7CiAgICAgbV9jcmVkZW50aWFsID0gQ3JlZGVudGlhbChtX3Vz
ZXJOYW1lRWxlbWVudC0+dmFsdWUoKSwgbV9wYXNzd29yZEVsZW1lbnQtPnZhbHVlKCksIENyZWRl
bnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0
YS5oCmluZGV4IDZkZWU3ZWQuLjIwYWY1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1
ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBmaW5kUGFzc3dvcmRGb3JtRmllbGRzKGNvbnN0IEhUTUxGb3JtRWxlbWVu
dCopOwogICAgIGJvb2wgbG9jYXRlU3BlY2lmaWNQYXNzd29yZHMoY29uc3QgVmVjdG9yPEhUTUxJ
bnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRzKTsKIAotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJM
IG1fYWN0aW9uOwogICAgIFByb3RlY3Rpb25TcGFjZSBtX3Byb3RlY3Rpb25TcGFjZTsKICAgICBt
dXRhYmxlIENyZWRlbnRpYWwgbV9jcmVkZW50aWFsOwogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVt
ZW50PiBtX3VzZXJOYW1lRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAKaW5kZXggODM4NTg4MC4uZGJjYmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgp
CiAgICAgbV9jbGllbnRSZWRpcmVjdElzUGVuZGluZyA9IGZhbHNlOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91
YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRy
ZWUpCiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZERpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCgpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVAKIHsKICAgICBQb2xpY3lBY3Rpb24gZGVjaXNpb24gPSBQb2xp
Y3lJZ25vcmU7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNv
bnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewog
ICAgICAgICAvLyBGcmFnbWVudCBzY3JvbGxzIG9uIHRoZSBzYW1lIHBhZ2Ugc2hvdWxkIGFsd2F5
cyBiZSBoYW5kbGVkIGludGVybmFsbHkuCiAgICAgICAgIC8vIChPbmx5IGNvdW50IGFzIGEgZnJh
Z21lbnQgc2Nyb2xsIGlmIHdlIGFyZSBzY3JvbGxpbmcgdG8gYSAjZnJhZ21lbnQgdXJsLCBub3Qg
YmFjayB0byB0aGUgdG9wLCBhbmQgcmVsb2FkaW5nCiAgICAgICAgIC8vIHRoZSBzYW1lIHVybCBp
cyBub3QgYSBmcmFnbWVudCBzY3JvbGwgZXZlbiBpZiBpdCBoYXMgYSAjZnJhZ21lbnQuKQotICAg
ICAgICBjb25zdCBLVVJMJiBjdXJyZW50VXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CisgICAgICAgIGNvbnN0IFVSTCYgY3VycmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOwogICAgICAgICBib29sIGlzRnJhZ21lbnRTY3JvbGwgPSB1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkgJiYgdXJsICE9IGN1cnJlbnRVcmwgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjdXJyZW50VXJsLCB1cmwpOwogICAgICAgICBkZWNpc2lvbiA9IGRlY2lkZVBvbGlj
eUZvckV4dGVybmFsTG9hZChyZXF1ZXN0LCBpc0ZyYWdtZW50U2Nyb2xsKTsKIApAQCAtMzEyLDcg
KzMxMiw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBbHdheXNV
c2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIG1pCiB9CiAKIFBhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLAotICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLAorICAgIEhUTUxQbHVnSW5F
bGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIFN0cmluZyBtaW1l
VHlwZShtaW1lVHlwZUluKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbgogICAgICAgICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEFs
d2F5cyBpZ25vcmUgZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KICAgICAgICAgICAg
IFdURjo6UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c291cmNlLmlzOEJpdCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNo
YXJhY3RlcnM4KCkpIDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsK
LSAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIs
ICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVE
YXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwg
VVJMKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KQogICAgIH0KIH0KIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFn
ZW50KGNvbnN0IEtVUkwmKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNl
ckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2Vi
U2V0dGluZ3MtPnVzZXJBZ2VudFN0cmluZygpOwogfQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0CiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRl
clRyZWUtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnNldFRpdGxlKGNvbnN0IFN0
cmluZ1dpdGhEaXJlY3Rpb24mIC8qdGl0bGUqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiAvKnRpdGxlKi8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICAvLyBVc2VkIGJ5
IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3Rvcnkg
aXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5
IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBSZXNvdXJjZUUKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yUGFnZSA9IG1f
d2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5nZXRFcnJvclBhZ2UoZXJyb3IuZXJyb3JDb2RlKCks
IGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAg
U3Vic3RpdHV0ZURhdGEgZXJyb3JEYXRhKHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRt
bCIsICJ1dGYtOCIsIEtVUkwoS1VSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKKyAgICBTdWJz
dGl0dXRlRGF0YSBlcnJvckRhdGEodXRmOEJ1ZmZlcihlcnJvclBhZ2UpLCAidGV4dC9odG1sIiwg
InV0Zi04IiwgVVJMKFVSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKIAogICAgIC8vIExvYWRp
bmcgdXNpbmcgU3Vic3RpdHV0ZURhdGEgd2lsbCByZXBsYWNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0
IHdpdGggb3VyCiAgICAgLy8gZXJyb3IgZGF0YS4gVGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCwKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBh
c3NSZWZQdHI8Rm9ybVN0YQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZQorUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkKIHsKICAgICBpZiAoIW1fd2ViUGFnZVByaXZhdGUpCkBAIC04MTUsNyArODE1LDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnMKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9
CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1h
Z2VzKQogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAgICAgaWYgKG1pbWVU
eXBlLmlzRW1wdHkoKSkKQEAgLTExMzksNyArMTEzOSw3IEBAIFBvbGljeUFjdGlvbiBGcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnk6OmRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChjb25zdCBS
ZXNvCiAgICAgLy8gYW5kIGV4cG9zZWQgdG8gY2xpZW50LiBCZWZvcmUgdGhhdCwgZG9uJ3QgcmV0
dXJuIFBvbGljeUlnbm9yZSBzbyB3ZSBjYW4gY29udGludWUgdG8KICAgICAvLyBjcmVhdGUgbmV3
IHdpbmRvdyBhbmQgZ2V0IHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bigpIHdoZXJlIHRoZSBjbGllbnQKICAgICAvLyBpcyBnaXZlbiBhIGNoYW5jZSB0byBkZWNpZGUg
aG93IHRvIGhhbmRsZSBwYXR0ZXJucyBzdWNoIGFzICdtYWlsdG86Jy4KLSAgICBjb25zdCBLVVJM
JiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKICAgICBTdHJpbmcgcGF0dGVybiA9IG1fd2ViUGFnZVByaXZhdGUtPmZpbmRQYXR0ZXJuU3Ry
aW5nRm9yVXJsKHVybCk7CiAgICAgaWYgKCFwYXR0ZXJuLmlzRW1wdHkoKSkgewogICAgICAgICBt
X3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+aGFuZGxlU3RyaW5nUGF0dGVybihwYXR0ZXJuLmNo
YXJhY3RlcnMoKSwgcGF0dGVybi5sZW5ndGgoKSk7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRMb2FkRnJvbUFwcGxpY2F0
aW9uQ2FjaGUoY29uc3QgUmVzbwogICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3Rp
ZnlEaWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzZWN1cml0eU9yaWdpbkZvck5l
d0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZy
YW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChj
b25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBXaGF0IHdlIGFyZSB0cnlpbmcgdG8gZG8gaGVyZSBp
cyB0byBrZWVwIHVzaW5nIHRoZSBvbGQgcGF0aCBhcyBvcmlnaW4gd2hlbiBhIGZpbGUtYmFzZWQg
aHRtbCBwYWdlCiAgICAgLy8gY2hhbmdlcyBpdHMgbG9jYXRpb24gdG8gc29tZSBodG1sIGluIGEg
c3ViZm9sZGVyLiBUaGlzIHdpbGwgYWxsb3cgc29tZSBmaWxlLWJhc2VkIGh0bWwgcGFja2FnZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAzZWFhYWIzLi5i
ZmRhNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC02
OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRv
dWJsZSwgZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxl
LCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsVXBkYXRlQXBwbGljYXRpb25D
YWNoZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IG5v
dEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRG
b3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVu
dGVkKCk7IHJldHVybiBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCkpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJu
IFJlc291cmNlRXJyb3IoZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJp
bmcoKSk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KQEAgLTEz
Myw4ICsxMzMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3Vy
Y2VSZXBsYWNlbWVudCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAg
IHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJv
bUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKQEAgLTE0MywxMyAr
MTQzLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2Fj
aGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0
ZUZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1
Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVu
dCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRh
VG9QbHVnaW4oV2lkZ2V0Kik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
bm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE9i
amVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZp
cnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgbm90SW1wbGVt
ZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwg
dm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KQEAg
LTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRJY29u
RXh0ZXJuYWxseSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29u
RXh0ZXJuYWxseShjb25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBm
aW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENoYW5nZUljb25zKEljb25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRm9y
TmV3RG9jdW1lbnQoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgcmVhZHlUb1JlbmRlcihib29sIHBhZ2VJc1Zpc3VhbGx5Tm9uRW1wdHkpOwogCkBAIC0y
MDMsOCArMjAzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRGcmFtZUNyZWF0aW9uU3Vw
cHJlc3NlZDsKIAogICAgIC8vIFRoaXMgc2V0IGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBhbmQgZmlu
YWwgdXJscyBmb3Igc2VydmVyIHJlZGlyZWN0cy4KLSAgICBIYXNoU2V0PEtVUkw+IG1faGlzdG9y
eU5hdmlnYXRpb25Tb3VyY2VVUkxzOwotICAgIEhhc2hTZXQ8S1VSTD4gbV9yZWRpcmVjdFVSTHNU
b1NraXBEdWVUb0hpc3RvcnlOYXZpZ2F0aW9uOworICAgIEhhc2hTZXQ8VVJMPiBtX2hpc3RvcnlO
YXZpZ2F0aW9uU291cmNlVVJMczsKKyAgICBIYXNoU2V0PFVSTD4gbV9yZWRpcmVjdFVSTHNUb1Nr
aXBEdWVUb0hpc3RvcnlOYXZpZ2F0aW9uOwogCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJl
Y3QgZGF0YSB0by4KICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5jcHAKaW5kZXggZGNmZWY2MC4uNGE2MTJjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtODEs
MzIgKzgxLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNr
QmVycnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRl
Z3kKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5h
YmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJu
IFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29r
aWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8o
Y29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPgogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0
ZWd5Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFn
ZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSog
cGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsK
ICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKaW5kZXggYzUxNTY0NS4uZDI0NWZh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCkBAIC00Nywx
MiArNDcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3Ry
YXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjIsNyArNjIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNv
cmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChX
ZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJh
c2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCmluZGV4IDZjOGVmOGEuLjk0MDU3
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1Bh
Z2VQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
UGFnZVBvcHVwLmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFz
ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZV9wLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3QuaD4KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBQYWdlUG9wdXA6OndyaXRlRG9jdW1l
bnQoRG9jdW1lbnRXcml0ZXIqIHdyaXRlcikKIHsKICAgICBBU1NFUlQod3JpdGVyKTsKICAgICB3
cml0ZXItPnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3cml0ZXItPmJlZ2luKEtVUkwo
KSk7CisgICAgd3JpdGVyLT5iZWdpbihVUkwoKSk7CiAKICAgICAvLyBBbGwgdGhlIHBvcHVwcyBo
YXZlIHRoZSBzYW1lIGh0bWwgaGVhZCBhbmQgdGhlIHBhZ2UgY29udGVudCBzaG91bGQgYmUgbm9u
LXpvb21hYmxlLgogICAgIFN0cmluZ0J1aWxkZXIgc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4
IDI3ODM0NDMuLmY5MTNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
My0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1l
IEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDA4NjczMmEx
Li4xNTY0ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
Ik5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlBvcHVwTWVudUVmbC5oIgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50
RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVu
c2lnbmVkCiAgICAgLy8gRklYTUUsIGNvbXBhcmUgd2l0aCBvbGQgbGluaywgbG9vayBhdCBRdCBp
bXBsLgogICAgIGJvb2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAgICBpZiAoaXNMaW5r
KSB7Ci0gICAgICAgIEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOworICAgICAgICBV
UkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5
KCkgJiYgdXJsICE9IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGxpbmtbMl07CiAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcjsKQEAgLTM3Niw3ICszNzYs
NyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNpZ25lZAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICgh
aXNMaW5rICYmICFtX2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBld2tfdmll
d19tb3VzZV9saW5rX2hvdmVyX291dChtX3ZpZXcpOwotICAgICAgICBtX2hvdmVyZWRMaW5rVVJM
ID0gS1VSTCgpOworICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gVVJMKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVm
bC5oCmluZGV4IDZlZGJlMzcuLjg0YTMxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAjZGVm
aW5lIENocm9tZUNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0gICAgS1VSTCBtX2hvdmVyZWRM
aW5rVVJMOworICAgIFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVudDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRFZmwuY3BwCmluZGV4IGNkZWEzZTQuLjk0YmU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Y29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGUKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpkb3dubG9hZFVSTChj
b25zdCBLVVJMJikKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0
IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oCmluZGV4IDcw
ODM3N2YuLjViZWYyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NP
d25QdHI8Q29udGV4dE1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2Vs
ZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkVVJMKGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnko
RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7CiAgICAgdmly
dHVhbCBib29sIGlzU3BlYWtpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IGRj
MGMyNDMuLjllYTUxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIxLDEzICsy
MjEsMTMgQEAgU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFibGVEUlRGcmFt
ZU5hbWUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW0KICAgICByZXR1cm4gU3RyaW5nKCJmcmFt
ZSAoYW5vbnltb3VzKSIpOwogfQogCi1jb25zdCBXZWJDb3JlOjpLVVJMIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQor
Y29uc3QgV2ViQ29yZTo6VVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxV
UkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIERSVF9TVVBQT1JUX0ZSQU1F
X0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpLVVJMKCkpOworICAgIERS
VF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpV
UkwoKSk7CiAKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CiAg
ICAgaWYgKCFwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6S1VSTCgpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJMKCk7CiAKICAgICByZXR1cm4g
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGNvbnN0IFMKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRv
V29ybGQoV2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNv
cmU6OktVUkwoKSwKKyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKFdlYkNv
cmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIHJ1bkF0U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50
U3RhcnQgOiBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFt
ZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CkBAIC0yODYsNyArMjg2LDcg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxl
U2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2Rl
LCBXZWJDb3JlOjpLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFs
bEZyYW1lcyA/IFdlYkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5U
b3BGcmFtZU9ubHkpOworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpV
UkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhclVzZXJTdHlsZVNoZWV0
cyhjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXgg
Y2VmNzZkYy4uNThjZDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTIyLDcgKzIyLDcg
QEAKICNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKICNkZWZpbmUgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxJ
bnRSZWN0Lmg+CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHJl
c3BvbnNlTWltZVR5cGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMg
V2ViQ29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktVUkwgcHJv
dmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKyAgICBzdGF0aWMgY29u
c3QgV2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7CiAgICAgc3RhdGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRp
YyB2b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCA5MTEzMjIxLi43NzdiMjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IFN0cmluZyYgRnJhbWVMb2FkZXJDbGllbnRF
Zmw6OmN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VzdG9tVXNlckFnZW50
OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25zdCBLVVJM
JikKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7
CiAgICAgaWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBt
X2N1c3RvbVVzZXJBZ2VudDsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1
bnNpZwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3Vy
Y2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7CiAKICAgICBpZiAocmVxdWVzdC51cmwg
IT0gb3JpZy51cmwpIHsKLSAgICAgICAgY29yZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCBy
ZXF1ZXN0LnVybCkpOworICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCByZXF1
ZXN0LnVybCkpOwogCiAgICAgICAgIC8vIENhbGxpbmcgY2xpZW50IG1pZ2h0IGhhdmUgY2hhbmdl
ZCBvdXIgdXJsIHBvaW50ZXIuCiAgICAgICAgIC8vIEZyZWUgdGhlIG5ldyBhbGxvY2F0ZWQgc3Ry
aW5nLgpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgY2Fs
bFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBwb2xpY3kpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdl
dD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVn
aW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NS
ZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX3ZpZXcpOwpAQCAtMzY2
LDcgKzM2Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKLVBhc3NSZWZQdHI8
RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8q
bWFyZ2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCitQYXNzUmVmUHRyPEZyYW1lPiBG
cmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lk
dGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAg
IEFTU0VSVChtX3ZpZXcpOwpAQCAtNDA2LDE0ICs0MDYsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEVmbDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAg
ICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxX
aWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLAorUGFzc1JlZlB0cjxX
aWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIC8qcGFyYW1OYW1lcyovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypw
YXJhbVZhbHVlcyovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9
CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50
VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIEZJ
WE1FOiBvbmNlIHBsdWdpbiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoaXMgbWV0aG9kIG5lZWRzIHRv
IGNvcnJlY3RseSBoYW5kbGUgdGhlICdzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzJyBmbGFn
LiBTZWUKICAgICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRU
eXBlKCkgZm9yIGFuIGV4YW1wbGUuCkBAIC01NzUsMTIgKzU3NSwxMiBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBld2tfZnJhbWVf
bWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgZXdrX2ZyYW1lX21p
eGVkX2NvbnRlbnRfcnVuX3NldChtX2ZyYW1lLCB0cnVlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERldGVjdFhT
Uyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKIHsKICAg
ICBDU3RyaW5nIGNzID0gaW5zZWN1cmVVUkwuc3RyaW5nKCkudXRmOCgpOwogICAgIEV3a19GcmFt
ZV9Yc3NfTm90aWZpY2F0aW9uIHhzc0luZm8gPSB7IGNzLmRhdGEoKSwgZGlkQmxvY2tFbnRpcmVQ
YWdlIH07CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgZXdrX2ZyYW1lX3JlZGlyZWN0X2Nh
bmNlbGxlZChtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0
Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3Vi
bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGV3a19mcmFt
ZV9yZWRpcmVjdF9yZXF1ZXN0ZWQobV9mcmFtZSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogfQpAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxl
KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQogewogICAgIC8vIG5vIG5l
ZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCmluZGV4IDIyNzEyOTQuLjg0NzA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAt
OTQsNyArOTQsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxv
YWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUs
IGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKQEAgLTEyOCwxMyArMTI4LDEzIEBA
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsK
ICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9u
KCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY3Jl
YXRlUGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdl
dD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1l
bnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIApAQCAtMTQy
LDcgKzE0Miw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9h
ZGVyQ2xpZW50IHsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRp
b24oYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRnJh
bWVEb2N1bWVudFJlYWR5KGJvb2wpOwogCkBAIC0xNTksOCArMTU5LDggQEAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CkBAIC0xODcsOSArMTg3LDkgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9y
RGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVS
TCYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmNwcAppbmRleCA0OWFhMzU3Li42YmU0NDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5jcHAKQEAgLTg3LDMyICs4NywzMiBAQCBTdG9yYWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0
ZWd5Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CiB9CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYg
b3V0UGwKIH0KIAogLy8gVmlzaXRlZExpbmtTdHJhdGVneQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VS
TCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNM
aW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBB
dG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQo
aGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCmluZGV4IDc0NzBjMmMuLjMxYmFlYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5oCkBAIC00OCwxMiArNDgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJD
b3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVn
aW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4m
KTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6
OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRl
ZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggZmZhNzI4OS4uMjIzZTA2OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0
UmVxdWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgpAQCAtMzM2LDcgKzMzNiw3IEBAIEV2YXNf
T2JqZWN0KiBld2tfZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IGNoYXIqIG5hbWUpCiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIGV3
a0ZyYW1lLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OktVUkwga3VybChX
ZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICBXZWJDb3Jl
OjpVUkwga3VybChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgc21hcnREYXRhLT5m
cmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+
ZnJhbWUsIHJlcSkpOwogCkBAIC00MDIsMTIgKzQwMiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9l
d2tfZnJhbWVfY29udGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzbWFy
dERhdAogICAgIGlmICghYmFzZVVyaSkKICAgICAgICAgYmFzZVVyaSA9ICJhYm91dDpibGFuayI7
CiAKLSAgICBXZWJDb3JlOjpLVVJMIGJhc2VLVVJMKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJp
bmc6OmZyb21VVEY4KGJhc2VVcmkpKTsKLSAgICBXZWJDb3JlOjpLVVJMIHVucmVhY2hhYmxlS1VS
TDsKKyAgICBXZWJDb3JlOjpVUkwgYmFzZUtVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChiYXNlVXJpKSk7CisgICAgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlS1VSTDsK
ICAgICBpZiAodW5yZWFjaGFibGVVcmkpCi0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNv
cmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFi
bGVVcmkpKTsKKyAgICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKICAgICBlbHNl
Ci0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoKTsKKyAgICAgICAgdW5y
ZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKCk7CiAKICAgICBXVEY6OlJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNv
bnRlbnRzLCBjb250ZW50c1NpemUpOwogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0
aXR1dGVEYXRhCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBFd2tfQ2VydGlmaWNhdGVfU3RhdHVzIGV3
a19mcmFtZV9jZXJ0aWZpY2F0ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAog
ICAgIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPmxvYWRlcigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgY29uc3QgV2Vi
Q29yZTo6S1VSTCBkb2N1bWVudFVSTCA9IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0VVJMKCk7Cisg
ICAgY29uc3QgV2ViQ29yZTo6VVJMIGRvY3VtZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVl
c3RVUkwoKTsKIAogICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJcygiaHR0cHMiKSkKICAg
ICAgICAgcmV0dXJuIEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfTk9fQ0VSVElGSUNBVEU7CkBAIC0x
NzYzLDcgKzE3NjMsNyBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3Qq
IGV3a0ZyYW1lKQogICoKICAqIENyZWF0ZXMgcGx1Z2luLgogICovCi1XVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdr
RnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFt
ZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAjaWYgRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgREJHKCJld2tGcmFtZT0lcCwgc2l6ZT0lZHgl
ZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCmluZGV4IGExNDQ2ZGYuLjdkNDE3NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNz
IEZyYW1lTG9hZGVyQ2xpZW50RWZsOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBIVE1MUGx1
Z0luRWxlbWVudDsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXaWRnZXQ7CkBA
IC03Niw3ICs3Niw3IEBAIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUp
OwogCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2Ny
ZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJh
bWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9h
ZE1hbnVhbGx5KTsKIAogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFu
Z2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50
X3NlbGVjdGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAKaW5kZXggZGQzYmE5Zi4uOWU0ZDVh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcApA
QCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19zZWN1
cml0eV9wb2xpY3kuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAK
QEAgLTI5LDcgKzI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIGV3a19zZWN1
cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9hZGQoY29uc3QgY2hhciogc291cmNlVXJsLCBj
b25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsK
ICAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlv
bihLVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJM
KCksIGRlc3RpbmF0aW9uVXJsKTsKIAogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5h
dGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7CiB9CkBAIC0zNyw3ICszNyw3IEBAIHZvaWQg
ZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3Vy
Y2VVcmwsIGNvbnN0IGNoYXIqCiB2b2lkIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29y
aWdpbl9kZWwoY29uc3QgY2hhciogc291cmNlVXJsLCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvblVy
bCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsKICAgICBjb25zdCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlvbihLVVJMKCksIGRlc3RpbmF0aW9uVXJs
KTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKIAog
ICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291
cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93U3Vi
ZG9tYWlucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDRh
YjBhZTcuLmQ1ZDMxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1lbW9yeUNh
Y2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBl
d2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5fY2xlYXIoY29uc3QgY2hh
ciogdXJsKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHVybCk7CiAKLSAgICBj
b25zdCBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJv
bVVURjgodXJsKSk7CisgICAgY29uc3QgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCks
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tl
cjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGt1cmwpLmdldCgpKTsKIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBAIGNhaXJvX3N1cmZhY2VfdCog
ZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25zdCBjaGFyKiB1
cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CiAKLSAg
ICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29uID0g
V2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChr
dXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikK
ICAgICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwpAQCAtMjI3LDcgKzIyNyw3
IEBAIEV2YXNfT2JqZWN0KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9n
ZXQoY29uc3QgY2hhciogdXJsLCBFdmFzKiBjCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKHVybCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZh
cywgMCk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBzdXJmYWNlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJ
Y29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwog
CiAgICAgaWYgKCFzdXJmYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBh
MGVmOWM1Li43OTk2ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY3MCw3
ICs2NzAsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGE7CiAgICAgbWVtc2V0KHByaXYs
IDAsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKICAgICBBdG9taWNTdHJpbmcgc3Ry
aW5nOwotICAgIFdlYkNvcmU6OktVUkwgdXJsOworICAgIFdlYkNvcmU6OlVSTCB1cmw7CiAKICAg
ICBXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50
cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsKHNtYXJ0RGF0YS0+
c2VsZik7CkBAIC0xNzI4LDcgKzE3MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaXRlZF9s
aW5rX2FkZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdmlzaXRlZFVybAogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wYWdlLCBmYWxzZSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBhZ2UtPmdyb3VwUHRyKCksIGZh
bHNlKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29y
ZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CiAgICAgcHJpdi0+
cGFnZS0+Z3JvdXBQdHIoKS0+YWRkVmlzaXRlZExpbmsoa3VybCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2Vy
X3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKgogICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAg
RVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAg
IGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJTdHlsZXNo
ZWV0LCB1cmkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CisgICAgICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNv
cmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgICAgICBwcml2LT5wYWdlU2V0
dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oa3VybCk7CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwpAQCAtMzY2Miw3ICszNjYyLDcgQEAgdm9pZCBld2tfdmlld19mcmFtZV9yZWN0X2No
YW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQo
c21hcnREYXRhKTsKIH0KIAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3Zp
ZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1l
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVn
aW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5
KQogewogICAgIERCRygiZXdrVmlldz0lcCwgZnJhbWU9JXAsIHNpemU9JWR4JWQsIGVsZW1lbnQ9
JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAogICAgICAgICBld2tWaWV3LCBmcmFtZSwgcGx1Z2lu
U2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVtZW50LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMzEzZWY3Yy4uNDQ1YzFkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAg
V2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldyk7CiAKIHZvaWQgZXdrX3ZpZXdfZnJhbWVfcmVjdF9jaGFuZ2VkKEV2YXNfT2JqZWN0
KiBld2tWaWV3KTsKIAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdf
cGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFu
dWFsbHkpOworV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2lu
X2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKIHZvaWQgZXdrX3ZpZXdfY29sb3JfY2hv
b3Nlcl9uZXcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVu
dCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCBhNDIxYjVlLi5hMjU2MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5n
LgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEz
LTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
ZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTIGIvU291cmNlL1dlYktpdC9ndGsvTkVXUwppbmRleCBl
ZjNmMzE0Li4yZmNjZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL05FV1MKQEAgLTM0NCw3ICszNDQsNyBAQCBXaGF0J3MgbmV3IGlu
IFdlYktpdEdUSysgMS45LjM/CiAgIC0gRml4IGN1cnNvciB1c2VkIGZvciBuZS1yZXNpemUuCiAg
IC0gRml4IGNvbnRyYWN0aW9ucyByZWNvZ25pdGlvbiBieSB0aGUgc3BlbGwgY2hlY2tlci4KICAg
LSBGaXggYSBjcmFzaCByZW5kZXJpbmcgc2Nyb2xsYmFycyBvbiBHVEsgd3hXZWJraXQuCi0gIC0g
Rml4IEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgaW1wbGVtZW50YXRpb24gdG8gc3RyaXAgdGhlIHF1
ZXJ5IHBhcnQKKyAgLSBGaXggVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGltcGxlbWVudGF0aW9uIHRv
IHN0cmlwIHRoZSBxdWVyeSBwYXJ0CiAgICAgb2YgdGhlIHVyaS4KICAgLSBDaGVjayBmb3IgR1RL
Mi9HVEszIHN5bWJvbCBtaXNtYXRjaCBlYXJsaWVyIHRvIGZpeCBwbHVnaW5zIHJ1bgogICAgIHdp
dGggbnNwbHVnaW53cmFwcGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMWMwOTg1YS4uZDQwOWU1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsu
Y3BwCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgpAQCAt
Nzk4LDcgKzc5OCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkIG1vCiAgICAgLy8gY2hlY2sgaWYg
dGhlIGVsZW1lbnQgaXMgYSBsaW5rLi4uCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGlu
aygpOwogICAgIGlmIChpc0xpbmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVM
aW5rVVJMKCk7CisgICAgICAgIFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAg
ICAgIGlmICghdXJsLmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAg
ICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXI7CiAgICAgICAgICAgICBDU3RyaW5nIHRpdGxlU3Ry
aW5nID0gaGl0LnRpdGxlKGRpcikudXRmOCgpOwpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgQ2hy
b21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBo
aXQsIHVuc2lnbmVkIG1vCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFpc0xpbmsgJiYgIW1f
aG92ZXJlZExpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZShtX3dlYlZpZXcsICJob3ZlcmluZy1vdmVyLWxpbmsiLCAwLCAwKTsKLSAgICAgICAgbV9ob3Zl
cmVkTGlua1VSTCA9IEtVUkwoKTsKKyAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IFVSTCgpOwog
ICAgIH0KIAogICAgIGlmIChOb2RlKiBub2RlID0gaGl0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oCmluZGV4IGQxYjBhNTkuLjJhNGE3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5j
bHVkZSAiR3RrQWRqdXN0bWVudFdhdGNoZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFy
Y2hQb3B1cE1lbnUuaCIKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAgIEd0
a0FkanVzdG1lbnRXYXRjaGVyIG1fYWRqdXN0bWVudFdhdGNoZXI7Ci0gICAgICAgIEtVUkwgbV9o
b3ZlcmVkTGlua1VSTDsKKyAgICAgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAgICAgICAgIHVu
c2lnbmVkIGludCBtX2Nsb3NlU29vblRpbWVyOwogCiAgICAgICAgIFRpbWVyIDxDaHJvbWVDbGll
bnQ+IG1fZGlzcGxheVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCmluZGV4IDQxNzBmNzcuLjllYjc1
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudEd0ay5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJDb250
ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
bGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENv
bnRleHRNCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBDb250ZXh0TWVudUNsaWVudDo6
ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3Qq
IG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaAppbmRleCBkNjc3NGI1Li40NTZiODE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50R3RrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZ2V0Q3VzdG9tTWVu
dUZyb21EZWZhdWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSos
IGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRv
d25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBjb3B5SW1hZ2VUb0NsaXBib2FyZChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGRkZWQ4YzQuLjAzNmU2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjphZGRVc2VyU2NyaXB0KFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgY2hhcioKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJv
bUZyYW1lKGZyYW1lKTsKICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKLSAgICBwYWdl
LT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBz
b3VyY2VDb2RlLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksCisg
ICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSwgc291cmNlQ29kZSwgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+
KCksCiAgICAgICAgIHJ1bkF0U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RB
dERvY3VtZW50RW5kLCBhbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9w
RnJhbWVPbmx5KTsKIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjphZGRVc2VyU3R5bGVTaGVldChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0
IGNoCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFt
ZSk7CiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Z3JvdXAoKS5h
ZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNv
ZGUsIEtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVz
ID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAorICAgIHBhZ2Ut
Pmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
LCBzb3VyY2VDb2RlLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwg
YWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAog
fQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAxZGMyMDc2Li40MjU5NDhkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFt
ZUxvYWRlckNsaWVudCgpCiB9CiAKIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsKICAg
ICBHT3duUHRyPGdjaGFyPiB1c2VyQWdlbnRTdHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdl
bnRGb3JVUkkoc2V0dGluZ3MsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0yNjEs
NyArMjYxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICAvLyBGZWVkIGFueSBjaGFu
Z2VzIGJhY2sgaW50byB0aGUgUmVzb3VyY2VSZXF1ZXN0IG9iamVjdC4KICAgICBTb3VwTWVzc2Fn
ZSogbWVzc2FnZSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X21lc3NhZ2UobmV0d29ya1Jl
cXVlc3QuZ2V0KCkpOwogICAgIGlmICghbWVzc2FnZSkgewotICAgICAgICByZXF1ZXN0LnNldFVS
TChLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dl
dF91cmkobmV0d29ya1JlcXVlc3QuZ2V0KCkpKSkpOworICAgICAgICByZXF1ZXN0LnNldFVSTChV
UkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJp
KG5ldHdvcmtSZXF1ZXN0LmdldCgpKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDg2LDcgKzQ4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0CiAgICAgICAgIHdlYmtpdF93
ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotUGFzc1JlZlB0
cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQ
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVh
bGx5KQogewogICAgIC8qIENoZWNrIGlmIHdlIHdhbnQgdG8gZW1iZWQgYSBHdGtXaWRnZXQsIGZh
bGxiYWNrIHRvIHBsdWdpbnMgbGF0ZXIgKi8KICAgICBDU3RyaW5nIHVybFN0cmluZyA9IHVybC5z
dHJpbmcoKS51dGY4KCk7CkBAIC01MTYsNyArNTE2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFQKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0
KQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAgLTU1OCwxMiArNTU4LDEyIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0
KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKLVBhc3NS
ZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5T
aXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewogICAgIHJldHVybiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKHBs
dWdpblNpemUsIGVsZW1lbnQsIGJhc2VVUkwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBw
bGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUg
RnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQor
T2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0
Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7
CiB9CkBAIC02NzMsMTIgKzY3MywxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJh
bWVMb2FkRXZlbnRDYWxsYmFjayhtX2ZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4sIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiogY29yZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZ19z
aWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJpbnNlY3VyZS1jb250ZW50LXJ1biIsIGtpdChj
b3JlT3JpZ2luKSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICBpZiAo
IUR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpIHx8
ICFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2FkRXZlbnRDYWxsYmFjaykKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6c19mcmFtZUxvYWRFdmVudENhbGxiYWNrKG1fZnJhbWUsIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QsIDApOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VS
TCYgdXJsLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUp
CiB7CiAgICAgaWYgKCFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9k
ZUVuYWJsZWQoKSB8fCAhRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50
Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRh
ID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUoZnJhbWVEYXRhLT50aXRsZSk7CkBAIC0xMDA1
LDcgKzEwMDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExv
YWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcgogICAgICAgICByZXR1cm47CiAK
ICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVz
b3VyY2UpOwotICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVSZXNvdXJjZShsb2FkZXIt
PnN1YnJlc291cmNlKEtVUkwoS1VSTCgpLCB1cmkpKSk7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gY29yZVJlc291cmNlKGxvYWRlci0+c3VicmVzb3VyY2UoVVJMKFVSTCgpLCB1cmkpKSk7
CiAKICAgICAvLyBJZiBjb3JlUmVzb3VyY2UgaXMgTlVMTCBoZXJlLCB0aGUgcmVzb3VyY2UgZmFp
bGVkIHRvIGxvYWQsCiAgICAgLy8gdW5sZXNzIGl0J3MgdGhlIG1haW4gcmVzb3VyY2UuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAppbmRleCBjNzgyOTJmLi43YjgyZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTc3LDcg
Kzc3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSwgZG91
YmxlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGlu
UGFnZSgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5Q
YWdlKCk7CkBAIC0xMTUsMTIgKzExNSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKTsK
IAotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNv
cmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdU
Rjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0
ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdl
dChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1l
ZGlhVHlwZSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTEyOCw3ICsxMjgsNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJ
Y29uTm90aWZpY2F0aW9uKGJvb2wpOwogCi0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
KTsKKyAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250
ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE0Niw4ICsxNDYsOCBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAKICAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwpAQCAtMTc0LDkgKzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1
YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAotICAgICAgICB2aXJ0dWFs
IFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpD
YWNoZWRGcmFtZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVk
RnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNw
cAppbmRleCBmOWVkNWFkLi5jNmQxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKQEAgLTgxLDMy
ICs4MSwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNy
ZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmlu
ZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mCiB9CiAK
IC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xp
bmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBB
dG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmlzTGlua1Zpc2l0ZWQo
UGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5n
JikKIHsKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNHdGsuaAppbmRleCBiNWYwNzYyLi43Zjk4Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaApA
QCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25z
dCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAv
LyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9n
dGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCAyYzMyZjJjLi4zN2I5NzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmgKQEAg
LTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgQ29udmVydFRvR0NoYXJQcml2YXRlX2gKICNkZWZpbmUg
Q29udmVydFRvR0NoYXJQcml2YXRlX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMCw3
ICszMCw3IEBAIGlubGluZSBnY2hhciogY29weUFzR2NoYXIoV1RGOjpTdHJpbmcgY29uc3QmIHMp
CiAgICAgcmV0dXJuIGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWlubGluZSBnY2hh
ciogY29weUFzR2NoYXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2lubGluZSBnY2hhciogY29w
eUFzR2NoYXIoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBjb3B5QXNHY2hh
cihzLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRkb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxv
YWQuY3BwCmluZGV4IGQyZDU1OTdhLi5jNzQ4YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBjb25zdCBnY2hhciog
d2Via2l0X2Rvd25sb2FkX2dldF9zdWdnZXN0ZWRfZmlsZW5hbWUoV2ViS2l0RG93bmxvYWQqIGRv
d25sb2FkKQogICAgIGlmIChwcml2LT5zdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJu
IHByaXYtPnN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwg
d2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtSZXF1ZXN0KSk7Cisg
ICAgVVJMIHVybCA9IFVSTChVUkwoKSwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHBy
aXYtPm5ldHdvcmtSZXF1ZXN0KSk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKICAgICB1
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcHJpdi0+c3VnZ2VzdGVkRmlsZW5h
bWUgPSBnX3N0cmR1cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IDc5NDM3OWUuLmNiNDFlZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI0LDcg
KzI0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRl
bnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAppbmRleCA0OTk2ZGQ5Li4z
NmUyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29y
a3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3Jr
cmVxdWVzdC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
Y29yZShXZWJLaXROZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAoc291cE1lc3NhZ2Up
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qoc291cE1lc3NhZ2UpOwog
Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmwgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwg
U3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkp
KTsKKyAgICBXZWJDb3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkp
OwogICAgIHJldHVybiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QodXJsKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCmluZGV4IDA3
OTIyYjAuLmQyNzI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJkYXRhc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViZGF0YXNvdXJjZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExv
YWRlckd0ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJLaXRXZWJEYXRh
U291cmNlKiB3ZWJraXRfd2ViX2RhdGFfc291cmNlX25ld193aXRoX3JlcXVlc3QoV2ViS2l0TmV0
d29ya1JlcXVlcwogCiAgICAgY29uc3QgZ2NoYXIqIHVyaSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVl
c3RfZ2V0X3VyaShyZXF1ZXN0KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7
CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJM
KFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJj
ZSogZGF0YXNvdXJjZSA9IGtpdE5ldyhXZWJLaXQ6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVz
b3VyY2VSZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpKSk7CiAKICAgICBXZWJLaXRXZWJEYXRhU291
cmNlUHJpdmF0ZSogcHJpdiA9IGRhdGFzb3VyY2UtPnByaXY7CkBAIC0zOTYsNyArMzk2LDcgQEAg
Y29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X3VucmVhY2hhYmxlX3VyaShX
ZWJLaXRXZWJEYXRhU291cmNlKiB3ZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0RBVEFfU09VUkNFKHdlYkRhdGFTb3VyY2UpLCBOVUxMKTsKIAogICAgIFdlYktpdFdl
YkRhdGFTb3VyY2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YVNvdXJjZS0+cHJpdjsKLSAgICBjb25z
dCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHByaXYtPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
KyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJs
ZVVSTCgpOwogCiAgICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcApp
bmRleCA2ZDFmOTQ0Li43MzU3M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVf
bG9hZF91cmkoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlm
ICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigp
LmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChLVVJMKEtV
UkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRlcigp
LmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNv
bnRlbnQsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBjb25z
dCBnY2hhciogYmFzZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQpAQCAtNjg0LDcg
KzY4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwogCi0gICAgS1VSTCBiYXNlS1VS
TCA9IGJhc2VVUkwgPyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSkgOiBi
bGFua1VSTCgpOworICAgIFVSTCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBVUkwoVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgoYmFzZVVSTCkpIDogYmxhbmtVUkwoKTsKIAogICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KGJhc2VLVVJMKTsKIApAQCAtNjkyLDggKzY5Miw4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2No
YXIqIGNvbnRlCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVy
LnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSA/
IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1s
IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJpbmc6
OmZyb21VVEY4KGVuY29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
dW5yZWFjaGFibGVVUkwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJM
KEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFj
aGFibGVVUkwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSk7CiAKICAgICBjb3JlRnJhbWUtPmxv
YWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1
dGVEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmNwcAppbmRleCA1YjdkYjIyLi4yZjI1MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKQEAgLTIyLDcgKzIyLDcg
QEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiAjaW5jbHVkZSAiSGlzdG9y
eUl0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbXBy
aXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0yOTgsNyArMjk4LDcgQEAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEoY29uc3Qg
Z2NoYXIqIHVyaSwgY28KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0g
PSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0hJ
U1RPUllfSVRFTSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJp
diA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgV2ViQ29yZTo6S1VSTCBoaXN0b3J5VXJp
KFdlYkNvcmU6OktVUkwoKSwgdXJpKTsKKyAgICBXZWJDb3JlOjpVUkwgaGlzdG9yeVVyaShXZWJD
b3JlOjpVUkwoKSwgdXJpKTsKICAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0bGUgPSBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4g
aXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVyaSwgaGlzdG9yeVRp
dGxlLCAwKTsKICAgICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFzZSgpLmxlYWtSZWYo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuY3BwCmlu
ZGV4IDZmYWMzN2IuLjQ1Zjg3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnJlc291cmNlLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdl
YnJlc291cmNlLmgiCiAKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAid2Via2l0ZW51bXR5cGVzLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUu
aCIKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0X3dlYl9yZXNv
dXJjZV9uZXcoY29uc3QgZ2NoYXIqIGRhdGEsCiAgICAgICAgIHNpemUgPSBzdHJsZW4oZGF0YSk7
CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhLCBzaXplKTsKLSAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJr
aXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpj
cmVhdGUoYnVmZmVyLCBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgU3RyaW5n
Ojpmcm9tVVRGOChtaW1lVHlwZSksIFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpLCBTdHJpbmc6
OmZyb21VVEY4KGZyYW1lTmFtZSkpKTsKKyAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3Vy
Y2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoYnVmZmVyLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSks
IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpLCBTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSwg
U3RyaW5nOjpmcm9tVVRGOChmcmFtZU5hbWUpKSk7CiAKICAgICByZXR1cm4gd2ViUmVzb3VyY2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApp
bmRleCAyMmNlNmJiLi5hZWVhM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRp
bmdCZWhhdmlvci5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRl
ICJVc2VyQWdlbnRHdGsuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKQEAgLTE1OTcs
NyArMTU5Nyw3IEBAIHN0YXRpYyBib29sIGlzR29vZ2xlRG9tYWluKFN0cmluZyBob3N0KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3Qg
S1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgLy8gRm9yIEdvb2dsZSBkb21haW5zLCBkcm9wIHRoZSBicm93c2VyJ3MgY3VzdG9t
IFVzZXIgQWdlbnQgc3RyaW5nLCBhbmQgdXNlIHRoZQogICAgIC8vIHN0YW5kYXJkIENocm9tZSBv
bmUsIHNvIHRoZXkgZG9uJ3QgZ2l2ZSB1cyBhIGJyb2tlbiBleHBlcmllbmNlLgpAQCAtMTYzNSw3
ICsxNjM1LDcgQEAgc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJs
KQogY2hhciogd2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoV2ViS2l0V2ViU2V0dGlu
Z3MqIHdlYlNldHRpbmdzLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgaWYgKHdlYlNldHRpbmdz
LT5wcml2LT5lbmFibGVTaXRlU3BlY2lmaWNRdWlya3MpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJB
Z2VudFN0cmluZyA9IHVzZXJBZ2VudEZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwo
KSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7CisgICAgICAgIFN0cmluZyB1c2VyQWdlbnRTdHJp
bmcgPSB1c2VyQWdlbnRGb3JVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVyaSkpKTsKICAgICAgICAgaWYgKCF1c2VyQWdlbnRTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIGdfc3RyZHVwKHVzZXJBZ2VudFN0cmluZy51dGY4KCkuZGF0
YSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
aW5kZXggYzcxMmM5YS4uOWY4OTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcApAQCAtMzUzOCw3ICszNTM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVT
ZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlU2NyaXB0cyk7
CiAgICAgY29yZVNldHRpbmdzLnNldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5h
YmxlUGx1Z2lucyk7CiAgICAgY29yZVNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShz
ZXR0aW5nc1ByaXZhdGUtPnJlc2l6YWJsZVRleHRBcmVhcyk7Ci0gICAgY29yZVNldHRpbmdzLnNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTChLVVJMKCksIHNldHRpbmdzUHJpdmF0ZS0+dXNl
clN0eWxlc2hlZXRVUkkuZGF0YSgpKSk7CisgICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBzZXR0aW5nc1ByaXZhdGUtPnVzZXJTdHlsZXNoZWV0VVJJ
LmRhdGEoKSkpOwogICAgIGNvcmVTZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHNl
dHRpbmdzUHJpdmF0ZS0+ZW5hYmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBjb3JlU2V0dGluZ3Mu
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVByaXZhdGVC
cm93c2luZyk7CiAgICAgY29yZVNldHRpbmdzLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHNldHRp
bmdzUHJpdmF0ZS0+ZW5hYmxlQ2FyZXRCcm93c2luZyk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRp
bmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3Ry
aW5nKCJyZXNpemFibGUtdGV4dC1hcmVhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXRUZXh0QXJl
YXNBcmVSZXNpemFibGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IGdfaW50ZXJuX3N0cmluZygidXNlci1zdHlsZXNoZWV0LXVyaSIpKQotICAgICAg
ICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBnX3ZhbHVl
X2dldF9zdHJpbmcoJnZhbHVlKSkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKFVSTChVUkwoKSwgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMi
KSkKICAgICAgICAgc2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dl
dF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5n
KCJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiMTBjMDQu
LmQ1OTQwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtl
IE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbQppbmRleCBjY2ViYTBiLi44MjJhZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBvcnQgIldl
YlR5cGVzSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBv
cnQgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KQEAgLTUz
NSw3ICs1MzUsNyBAQCBXZWJIaXN0b3J5SXRlbSAqa2l0KEhpc3RvcnlJdGVtKiBpdGVtKQogLSAo
TlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBjb25zdCBLVVJM
JiB1cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBjb3Jl
KF9wcml2YXRlKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJMRXh0
cmFzLm1tCmluZGV4IDBlYjNlYTMuLjA3NzEwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiV2ViTlNEYXRhRXh0
cmFzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPEZvdW5kYXRp
b24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CkBAIC0xMjcsOSArMTI3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKICAg
ICAgICAgcmV0dXJuIHNlbGY7CiAgICAgfQogICAgIAotICAgIC8vIFRoaXMgYXBwbGllcyBOU1VS
TCdzIGNvbmNlcHQgb2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBLVVJMJ3MgY29uY2VwdC4g
SXQgd291bGQKKyAgICAvLyBUaGlzIGFwcGxpZXMgTlNVUkwncyBjb25jZXB0IG9mIGNhbm9uaWNh
bGl6YXRpb24sIGJ1dCBub3QgVVJMJ3MgY29uY2VwdC4gSXQgd291bGQKICAgICAvLyBtYWtlIHNl
bnNlIHRvIGFwcGx5IGJvdGgsIGJ1dCB3aGVuIHdlIHRyaWVkIHRoYXQgaXQgY2F1c2VkIGEgcGVy
Zm9ybWFuY2UgZGVncmFkYXRpb24KLSAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtl
IHNlbnNlIHRvIGFwcGx5IG9ubHkgdGhlIEtVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBOU1VSTAor
ICAgIC8vIChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0
aGUgVVJMIGNvbmNlcHQgYW5kIG5vdCB0aGUgTlNVUkwKICAgICAvLyBjb25jZXB0LCBidXQgaXQn
cyB0b28gcmlza3kgdG8gbWFrZSB0aGF0IGNoYW5nZSBmb3IgV2ViS2l0IDMuMC4KICAgICBOU1VS
TFJlcXVlc3QgKm5ld1JlcXVlc3QgPSBbY29uY3JldGVDbGFzcyBjYW5vbmljYWxSZXF1ZXN0Rm9y
UmVxdWVzdDpyZXF1ZXN0XTsKICAgICBOU1VSTCAqbmV3VVJMID0gW25ld1JlcXVlc3QgVVJMXTsg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Lm1tCmluZGV4IDg4M2YyZTYuLmU5ZWQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAKICNp
bXBvcnQgIldlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0tV
UkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250
ZW50VVJMUGF0dGVybi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQppbmRleCBjZjllYzdiLi5hYjQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHku
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5J
bnN0YW5jZVByb3h5Lm1tCkBAIC01Myw3ICs1Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lVHJlZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdp
blZpZXcubW0KaW5kZXggNWRiODQ1Ny4uNzQyNDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtODQ3LDcg
Kzg0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICghZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgIAotICAg
IEtVUkwgYWJzb2x1dGVVUkwgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
cmVsYXRpdmVVUkxTdHJpbmcpOworICAgIFVSTCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxhdGl2ZVVSTFN0cmluZyk7CiAgICAgcmV0dXJuIGFi
c29sdXRlVVJMLnN0cmluZygpLnV0ZjgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9t
YWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDIwYmVlZTIuLjY4YTI5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtLmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxM
b2FkQW5kRGVzdHJveVN0cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCi0gICAgdm9pZCBzZXRS
ZXF1ZXN0VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJM
ID0gcmVxdWVzdFVSTDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJMID0gcmVxdWVzdFVSTDsgfQogCiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgc3RvcCgpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdDsKIAogICAgIFJldGFpblB0cjxOU011
dGFibGVEYXRhPiBtX2RlbGl2ZXJ5RGF0YTsKLSAgICBXZWJDb3JlOjpLVVJMIG1fcmVxdWVzdFVS
TDsKKyAgICBXZWJDb3JlOjpVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4g
bV9yZXNwb25zZVVSTDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmlu
ZGV4IGU1MzZmM2MuLjAxNTNhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBOU011dGFibGVBcnJheSogZ2V0Q3VzdG9tTWVudUZyb21EZWZh
dWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtKiwgY29u
c3QgV2ViQ29yZTo6Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQppbmRleCBjNGNjNmM2Li5iODMyZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAt
NDMsNyArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9p
ZCBXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1l
bnVJdGVtKiBpdGVtLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgW21fd2ViVmlldyBfZG93bmxv
YWRVUkw6dXJsXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmZmYzMDYuLjQyOWYyNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmly
ZURhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xNTIsOCArMTUyLDgg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQ
YWdlKCkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpV
UkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJS
SURFOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRh
VG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2Fj
aGVkRnJhbWUqKSBPVkVSUklERTsKQEAgLTE5MSwyNiArMTkxLDI2IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5n
JiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9v
bCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsK
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGJhc2VVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNv
cmU6OldpZGdldCopIE9WRVJSSURFOwogI2VuZGlmCiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3Jl
OjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVS
UklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CkBAIC0yMzEsNyAr
MjMxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFdlYkNv
cmU6OlVSTCYpIGNvbnN0OwogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDIyMGI0ZDguLmFmYWJmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CkBAIC00MTMsNyArNDEzLDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlcioKIH0KICNlbmRpZgog
Ci1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0
IEtVUkwmIGltYWdlVVJMKSBjb25zdAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
UGFpbnRCcm9rZW5JbWFnZShjb25zdCBVUkwmIGltYWdlVVJMKSBjb25zdAogewogICAgIFdlYlZp
ZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYlJlc291
cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC01MzAs
NyArNTMwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxD
bGllbnRSZWRpcmVjdCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiksIG1fd2ViRnJh
bWUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJs
ZSBmaXJlRGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmly
ZURhdGUpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSk7CiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBs
ZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMo
d2ViVmlldyk7CkBAIC05OTIsNyArOTkyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShpbXBsZW1lbnRhdGlvbnMtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jLCB3ZWJWaWV3
LCBAc2VsZWN0b3Iod2ViVmlld0RpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KSk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBVUkwmIGluc2VjdXJlVVJMKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4sIGNvbnN0IEsKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0VudGly
ZVBhZ2UpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJM
JiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCiB7CiAgICAgV2ViVmlldyAq
d2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC0xMTkyLDcg
KzExOTIsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlZpZXcqIHZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOwogICAgIApAQCAtMTMyMCw3ICsxMzIwLDcgQEAgUmV0YWluUHRyPFdlYkZy
YW1lUG9saWN5TGlzdGVuZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3Rl
bmVyKEZyYW0KICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lcjsKIH0KIAotU3RyaW5nIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQVNTRVJUKHdl
YlZpZXcpOwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQg
aGVyZSB3aXRoIG5pbCBmb3IgdGhlIFdlYlZpZXcgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIHNvbWV3
aGVyZSBlbHNlLgogICAgIC8vIEJ1dCBpZiB3ZSBkbywgaXQncyBiZXR0ZXIgdG8gcmV0dXJuIHRo
ZSBlbXB0eSBzdHJpbmcgdGhhbiBqdXN0IGNyYXNoaW5nIG9uIHRoZSBzcG90LgogICAgIC8vIE1v
c3Qgb3RoZXIgY2FsbCBzaXRlcyBhcmUgdG9sZXJhbnQgb2YgbmlsIGJlY2F1c2Ugb2YgT2JqZWN0
aXZlLUMgYmVoYXZpb3IsIGJ1dCB0aGlzIG9uZQotICAgIC8vIGlzIG5vdCBiZWNhdXNlIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgX3VzZXJBZ2VudEZvclVSTCBpcyBhIGNvbnN0IEtVUkwmLgorICAgIC8v
IGlzIG5vdCBiZWNhdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgX3VzZXJBZ2VudEZvclVSTCBpcyBh
IGNvbnN0IFVSTCYuCiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIApAQCAtMTM4OSw3ICsxMzg5LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y2FuQ2FjaGVQYWdlKCkgY29uc3QKICAgICByZXR1cm4gW1tbbV93ZWJGcmFtZS5nZXQoKSBfZGF0
YVNvdXJjZV0gcmVwcmVzZW50YXRpb25dIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxSZXByZXNlbnRh
dGlvbiBjbGFzc11dOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAt
MTQyMyw3ICsxNDIzLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gMDsK
IH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBwcml2YXRl
OgogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsCitQYXNz
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmws
CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTc0Niw5ICsxNzQ2
LDkgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFAKICAgICBpZiAoZXJyb3JDb2RlICYmIG1fd2Vi
RnJhbWUpIHsKICAgICAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUq
IGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVu
dGF0aW9ucyh3ZWJWaWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFp
bGVkV2l0aEVycm9yRnVuYykgewotICAgICAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJh
bWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKKyAg
ICAgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBw
YXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKICAgICAgICAgICAgIGlmICghcGx1Z2luUGFn
ZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgICAgICAgICAgcGx1Z2luUGFn
ZVVSTCA9IEtVUkwoKTsKKyAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gVVJMKCk7CiAg
ICAgICAgICAgICBOU1N0cmluZyAqcGx1Z2luTmFtZSA9IHBsdWdpblBhY2thZ2UgPyAoTlNTdHJp
bmcgKilbcGx1Z2luUGFja2FnZSBwbHVnaW5JbmZvXS5uYW1lIDogbmlsOwogCiAgICAgICAgICAg
ICBOU0Vycm9yICplcnJvciA9IFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JD
b2RlOmVycm9yQ29kZQpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgRU5E
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KICAgICAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBz
aXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgCitQ
YXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CkBAIC0xODU1LDcgKzE4NTUsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgcwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVn
aW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
S1VSTCYgdXJsLAorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxNZWRpYUVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAppbmRleCAyYTY2YzI5Li4yMmYyMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAt
NTcsMTIgKzU3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7CiAKICAgICAv
LyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTc4
LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24uCiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmli
dXRlVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFz
aCkgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBsb25nIGNoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IHVuaXF1ZU5hbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6S1VSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQppbmRleCBkODExNDQxLi44ZWVjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CkBAIC05MiwzMiArOTIsMzIgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsK
ICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZv
PiYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25z
dCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNv
bnN0IEF0b21pY1N0cmluZyYpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlz
aXRlZChoYXNoKTsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBDb2xvciBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CiAKLUtVUkwg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkK
K1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKQogewogICAgIHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVy
bCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWN1cml0eU9yaWdpbi5tbQppbmRleCBiODNiZTE2Li5hMTgwMDQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAt
MzEsNyArMzEsNyBAQAogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5o
IgogI2ltcG9ydCAiV2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlF1b3Rh
TWFuYWdlci5oIgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VS
TC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTChb
dXJsIGFic29sdXRlVVJMXSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKICAgICBvcmln
aW4tPnJlZigpOwogICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9y
aWdpblByaXZhdGUgKj4ob3JpZ2luLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCmluZGV4IGM1ZjJjMjcuLjg0ZmFhMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBv
cnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2ltcG9ydCA8V2Vi
Q29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9M
ZWdhY3lXZWJBcmNoaXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KQEAgLTMxMiw3ICszMTIsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAq
YWxsVHlwZXMsIENsYXNzIG9iakNDbAogLy8gTWF5IHJldHVybiBuaWwgaWYgbm90IGluaXRpYWxp
emVkIHdpdGggYSBVUkwuCiAtIChOU1VSTCAqKV9VUkwKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwg
PSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gdXJsOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0
aW9uYXJ5ICphbGxUeXBlcywgQ2xhc3Mgb2JqQ0NsCiAKIC0gKE5TVVJMICopdW5yZWFjaGFibGVV
UkwKIHsKLSAgICBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShfcHJpdmF0
ZSktPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogICAg
IGlmICh1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIHVucmVhY2hhYmxlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
aW5kZXggOGFkOWRkYS4uODU0NDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwoKQogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3Nl
bGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1J
TUVUeXBlIHRleHRFbmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJl
YWNoYWJsZVVSTDp1bnJlYWNoYWJsZVVSTF07CiAgICAgCi0gICAgS1VSTCByZXNwb25zZVVSTDsK
KyAgICBVUkwgcmVzcG9uc2VVUkw7CiAgICAgaWYgKCFiYXNlVVJMKSB7CiAgICAgICAgIGJhc2VV
UkwgPSBibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDBi
MmE2MmQuLmU3NmE1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQpAQCAtMzY3Myw3ICszNjczLDcgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1
aXZhbGVudChOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24KICAgICAgICAg
aWYgKCFwYWdlKSAKICAgICAgICAgICAgIHJldHVybiBuaWw7IAogICAgICAgICAKLSAgICAgICAg
Y29uc3QgS1VSTCYgaW1hZ2VVUkwgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdnaW5nSW1h
Z2VVUkwoKTsKKyAgICAgICAgY29uc3QgVVJMJiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ2dpbmdJbWFnZVVSTCgpOwogICAgICAgICBBU1NFUlQoIWltYWdlVVJMLmlzRW1w
dHkoKSk7CiAgICAgICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwY2E4NWYuLjFjOTU3NjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU2LDcgKzU2LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1F
bGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgotI2lt
cG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGJiMTFjZmMuLjE5
NjA0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dl
ci5tbQpAQCAtMzksNyArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4K
LSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpA
QCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQog
ewogICAgIGlmIChzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHMpOworICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBzKTsKIH0KIAogc3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWE5NmUw
My4uOGNmZTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjgyLDcg
KzY4Miw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29u
dGVudHMoKQogewogICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRl
bnRzID0gbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKICAgICBjb3JlKHNl
bGYpLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdv
cmxkXSksCi0gICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBWZWN0
b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmpl
Y3RJbkFsbEZyYW1lcyk7CisgICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJM
KCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRF
bmQsIEluamVjdEluQWxsRnJhbWVzKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmVzcGVjdFBy
aW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGMyNzA4MjkuLmNkNTRmMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNDksNyArNDksNyBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVt
OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCmlu
ZGV4IDlkM2YzYWMuLmE3YmM4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJoaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIK
ICNpbmNsdWRlIDxRV2ViUGFnZUFkYXB0ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2Ny
aXB0d29ybGQuY3BwCmluZGV4IGFmZWI1YmIuLmM1YTVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnNjcmlwdHdvcmxkLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgInF3ZWJz
Y3JpcHR3b3JsZC5oIgogI2luY2x1ZGUgInF3ZWJzY3JpcHR3b3JsZF9wLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
Y3VyaXR5b3JpZ2luLmNwcAppbmRleCA1OGZlNzk1Li42ZTkzNTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lu
Y2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5h
Z2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgpAQCAtMjczLDcgKzI3Myw3IEBAIFFTdHJpbmdMaXN0IFFXZWJTZWN1
cml0eU9yaWdpbjo6bG9jYWxTY2hlbWVzKCkKICovCiBRV2ViU2VjdXJpdHlPcmlnaW46OlFXZWJT
ZWN1cml0eU9yaWdpbihjb25zdCBRVXJsJiB1cmwpCiB7Ci0gICAgZCA9IG5ldyBRV2ViU2VjdXJp
dHlPcmlnaW5Qcml2YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCh1cmwpKSk7CisgICAg
ZCA9IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
VVJMKHVybCkpKTsKIH0KIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApp
bmRleCBlNzk2MzNiLi43MDdiMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2Vic2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5j
cHAKQEAgLTM2LDcgKzM2LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZp
ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBRV2ViU2V0
dGluZ3NQcml2YXRlOjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRGcmFtZUZsYXR0ZW5p
bmdFbmFibGVkKHZhbHVlKTsKIAogICAgICAgICBRVXJsIGxvY2F0aW9uID0gIXVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24uaXNFbXB0eSgpID8gdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA6IGdsb2JhbC0+
dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKLSAgICAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oV2ViQ29yZTo6S1VSTChsb2NhdGlvbikpOworICAgICAgICBzZXR0aW5ncy0+
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJDb3JlOjpVUkwobG9jYXRpb24pKTsKIAogICAg
ICAgICBRU3RyaW5nIGVuY29kaW5nID0gIWRlZmF1bHRUZXh0RW5jb2RpbmcuaXNFbXB0eSgpID8g
ZGVmYXVsdFRleHRFbmNvZGluZzogZ2xvYmFsLT5kZWZhdWx0VGV4dEVuY29kaW5nOwogICAgICAg
ICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcpOwpAQCAtNzQ5
LDcgKzc0OSw3IEBAIHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiBRSWNv
biBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIFdlYkNv
cmU6OmluaXRpYWxpemVXZWJDb3JlUXQoKTsKLSAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29yZTo6
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpL
VVJMKHVybCkuc3RyaW5nKCksCisgICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6VVJMKHVybCku
c3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkludFNp
emUoMTYsIDE2KSk7CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm4gUUljb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggZTQ2Y2YxOS4uN2Y1Y2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xp
bmcuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIw
MTMtMDktMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+
CiAKICAgICAgICAgW1F0XSBGaXggZm9yY2Vfc3RhdGljX2xpYnNfYXNfc2hhcmVkIGluIFdlYktp
dDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQu
aAppbmRleCA5ZDViYWFjLi4yNTQ5ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAg
LTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIq
IGNyZWF0ZUZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIoKTsKIAogICAgIFFXZWJQYWdlQWRhcHRlciog
bV93ZWJQYWdlOwotICAgIEtVUkwgbGFzdEhvdmVyVVJMOworICAgIFVSTCBsYXN0SG92ZXJVUkw7
CiAgICAgU3RyaW5nIGxhc3RIb3ZlclRpdGxlOwogICAgIFN0cmluZyBsYXN0SG92ZXJDb250ZW50
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0
TWVudUNsaWVudFF0LmNwcAppbmRleCA3MmEzZGJiLi4wODk3NWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
QEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXgKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OmRvd25sb2FkVVJMKGNvbnN0
IEtVUkwmKQordm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpkb3dubG9hZFVSTChjb25zdCBVUkwm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oCmluZGV4IGU4ZWZkMjguLjIx
OTIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRRdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0
TWVudT4pOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBDb250ZXh0TWVudSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvd25s
b2FkVVJMKGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3Qg
VVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopOwogICAg
IHZpcnR1YWwgdm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
cGVha2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA5NjAwOTIyLi4yOWY1ZGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIFFVcmwgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6Om1lZGlhQ29udGVudFVybEJ5RWxlbWVudElkKFFXZWJGcmFtZUFkYXB0
ZXIqIGFkYXB0CiAvLyBBUEkgQ2FuZGlkYXRlPwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0QWx0ZXJuYXRlSHRtbChRV2ViRnJhbWVBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3Ry
aW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsLCBjb25zdCBRVXJsJiBmYWlsaW5nVXJsKQog
ewotICAgIEtVUkwga3VybChiYXNlVXJsKTsKKyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBX
ZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVBcnJheSB1dGY4
ID0gaHRtbC50b1V0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDE5ODFmZDEuLjM0ZmFlYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBRU3RyaW5nIGRydFByaW50
RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJu
IFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJTFcIiIpLmFy
ZyhRTGF0aW4xU3RyaW5nKCJmYWxzZSIpKTsKIH0KIAotc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3Jp
cHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYga3VybCkKK3N0
YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdl
YkNvcmU6OlVSTCYga3VybCkKIHsKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuIGt1cmwuc3RyaW5nKCk7CkBAIC0zNjQsNyArMzY0
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0KCkKIH0KIAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkw6ICVzIFxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQodXJsKSkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IC8vIFVzZWQgYnkgQXBwbGUgV2ViS2l0IHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgYW4gZXhpc3Rp
bmcgaGlzdG9yeSBpdGVtLgogICAgIC8vIFF0V2ViS2l0IGRvZXNuJ3QgYWNjb21vZGF0ZSB0aGlz
IG9uIGhpc3RvcnkgaXRlbXMuIElmIGl0IGV2ZXIgZG9lcywKQEAgLTcwMCw3ICs3MDAsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJgogfQogCiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0
Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV93ZWJGcmFtZSkKICAgICAg
ICAgcmV0dXJuIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51c2VyQWdlbnRGb3JVcmwodXJsKS5y
ZW1vdmUoUUxhdGluMUNoYXIoJ1xuJykpLnJlbW92ZShRTGF0aW4xQ2hhcignXHInKSk7CkBAIC04
MzUsNyArODM1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKQogewogICAgIGlmIChk
dW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiZGlkUnVuSW5zZWN1cmVD
b250ZW50XG4iKTsKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRE
ZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
ZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJD
YWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiZGlkRGV0ZWN0WFNTXG4iKTsKQEAgLTExNTMsOCAr
MTE1Myw4IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lv
bihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCFwYWdlLT5lcnJvclBh
Z2VFeHRlbnNpb24oJm9wdGlvbiwgJm91dHB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIEtVUkwgYmFzZVVybChvdXRwdXQuYmFzZVVybCk7Ci0gICAgS1VSTCBmYWlsaW5nVXJsKG9w
dGlvbi51cmwpOworICAgIFVSTCBiYXNlVXJsKG91dHB1dC5iYXNlVXJsKTsKKyAgICBVUkwgZmFp
bGluZ1VybChvcHRpb24udXJsKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KGJhc2VVcmwpOwogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUob3V0cHV0LmNvbnRlbnQuY29uc3RE
YXRhKCksIG91dHB1dC5jb250ZW50Lmxlbmd0aCgpKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPmVtaXRE
b3dubG9hZFJlcXVlc3RlZChyZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QobV9mcmFtZS0+bG9hZGVy
KCkubmV0d29ya2luZ0NvbnRleHQoKSkpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVG
cmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBpZiAo
IW1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgUGFz
c1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcKIAogICAgIC8vIEZJWE1FOiBTZXQgb3ZlcnJpZGUgZW5jb2Rp
bmcgaWYgd2UgaGF2ZSBvbmUuCiAKLSAgICBLVVJMIHVybFRvTG9hZCA9IHVybDsKKyAgICBVUkwg
dXJsVG9Mb2FkID0gdXJsOwogICAgIGlmICh1cmxUb0xvYWQuaXNFbXB0eSgpKQogICAgICAgICB1
cmxUb0xvYWQgPSBibGFua1VSTCgpOwogCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZwogICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQog
Ci1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGll
bnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIHFE
ZWJ1ZygpPDwiICsrKysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWlt
ZSA9ICI8PG1pbWVUeXBlSW47CiAgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOwpAQCAtMTQ2
MCw3ICsxNDYwLDcgQEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBI
VE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQdHI8V2lk
Z2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAg
ICAvLyBxRGVidWcoKTw8Ii0tLS0tLSBDcmVhdGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlUGx1Z2luIGZvciAiPDx1cmwuc3RyaW5nKCkgPDwgbWltZVR5cGU7CiAgICAg
Ly8gcURlYnVnKCk8PCItLS0tLS1cdCB1cmwgPSAiPDx1cmwuc3RyaW5nKCk7CkBAIC0xNTYzLDcg
KzE1NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2lu
ID0gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBs
ZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVBsdWdpbihwbHVn
aW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRp
b24veC1qYXZhLWFwcGxldCIsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAzZWRiMzY1Li40ZTU2
Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVs
ZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRl
ICJXZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRp
cmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoY29uc3QgS1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYs
IGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xNjIsOCArMTYyLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0q
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGly
ZVBhZ2UpOwogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xOTAsOSArMTkwLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAg
ICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdl
YkNvcmU6OkNhY2hlZEZyYW1lKik7CkBAIC0yMDYsMTQgKzIwNiwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb252
ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJik7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lk
dGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldp
ZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJM
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0
cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5X
aWRnZXQpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBi
YXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRl
bnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmlydHVhbCBP
YmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAgICAg
dmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQq
KTsKQEAgLTIyNiw3ICsyMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAg
IGNvbnN0IEtVUkwmIGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSZXF1
ZXN0ZWRVcmw7IH0KKyAgICBjb25zdCBVUkwmIGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RSZXF1ZXN0ZWRVcmw7IH0KIAogICAgIFFXZWJGcmFtZUFkYXB0ZXIqIHdlYkZy
YW1lKCkgY29uc3Q7CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OlBsdWdpblZpZXcqIG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9Q
bHVnaW47CiAKLSAgICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKKyAgICBVUkwgbV9sYXN0UmVx
dWVzdGVkVXJsOwogICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdC5jcHAKaW5kZXggZTg5YTE0My4uNGQwZDljMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViRnJh
bWVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUXRQ
bGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuY3BwCmluZGV4IGFmYjFhZGIuLmI0MWQyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0x
MDAsMzIgKzEwMCwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0
cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
RW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9
CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
ICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0K
QEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5J
bmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDbwogCiAvLyBWaXNpdGVk
TGlua1N0cmF0ZWd5CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQo
UGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgQXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppc0xp
bmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgQVNTRVJUKGhhc2gpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmgKaW5kZXggZGFhYjI1OS4uOTc5MWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaApAQCAtNTks
MTIgKzU5LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0
cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAgICAgCiAgICAgLy8gV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8g
V2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNp
dGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAg
dmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtI
YXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
JiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggNzYzM2JmNy4u
ZmY2OWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2Vi
RnJhbWVBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJGcmFtZUFkYXB0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJKU0RP
TVdpbmRvd0Jhc2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5nIFFX
ZWJGcmFtZUFkYXB0ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVBZGFw
dGVyOjpzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcgJm1p
bWVUeXBlLCBjb25zdCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJsKTsK
KyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRhdGEu
bGVuZ3RoKCkpOwogICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3Nywx
NyBAQCB2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAm
ZGF0YSwgY29uc3QgUVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9IGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGluZyA9
IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmcoYWN0
dWFsTWltZVR5cGUpLCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSBzdWJzdGl0dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBlKSwg
ZW5jb2RpbmcsIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFt
ZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2b2lk
IFFXZWJGcmFtZUFkYXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVy
bCAmYmFzZVVybCkKIHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwoYmFz
ZVVybCk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAg
Y29uc3QgUUJ5dGVBcnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZSh1dGY4LmNvbnN0RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiksIFdU
Rjo6U3RyaW5nKCJ1dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJp
bmcoInV0Zi04IiksIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBA
IC0zNzYsOCArMzc2LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6a2l0
KGNvbnN0IEZyYW1lKiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1
dGVVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNl
IGlmIHdlIGNvdWxkIGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJMIGFu
ZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xl
IHNsYXNoIGluICdodHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwpOwor
ICAgIC8vIENvbnZlcnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZp
b3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwgdmFs
aWRhdGVkVXJsID0gVVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlkKCkg
fHwgIXZhbGlkYXRlZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRV
cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdl
QWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAKaW5kZXggZDI2NjUyNi4uNWFhOWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMTA2OCw3ICsxMDY4
LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVy
OjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9h
ZEZyYW1lUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsICZm
cmFtZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFs
c2UsIC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzogewotICAgICAgICBL
VVJMIHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJM
KCk7CisgICAgICAgIFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICBv
cGVuTmV3V2luZG93KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0ZmM1Y2ZmLi5h
MDAwNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVS
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBm
aWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBSb2dlciBGb25nICA8
cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEF0dGVtcHRpbmcgdG8g
c2Nyb2xsIGZyb20gYSBub24tc2Nyb2xsYWJsZSBsYXllciByZXN1bHRzIHRoZSBtYWluIGRvY3Vt
ZW50IGdldHRpbmcgc2Nyb2xsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmNwcAppbmRleCAzNjBmN2MyLi40MmY2ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxs
aW5nSGVscGVycy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0
cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
S1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRo
Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTM5LDEyICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENG
QXJyYXlDYWxsQmFja3MgTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNr
cyA9IHswLCBJVW5rbm93blJldGFpbkNhbGxiYWNrLCBJVW5rbm93blJlbGVhc2VDYWxsYmFjaywg
MCwgMH07CiBDRkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJ
VW5rbm93bkRpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyA9IHswLCBJVW5rbm93blJldGFpbkNhbGxi
YWNrLCBJVW5rbm93blJlbGVhc2VDYWxsYmFjaywgMCwgMH07CiAKLUtVUkwgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3RyKQorVVJMIE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTChCU1RSIHVybFN0cikKIHsKLSAgICByZXR1cm4gS1VSTChLVVJMKCksIFN0cmlu
Zyh1cmxTdHIsIFN5c1N0cmluZ0xlbih1cmxTdHIpKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwg
U3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKIH0KIAotQlNUUiBNYXJzaGFs
bGluZ0hlbHBlcnM6OktVUkxUb0JTVFIoY29uc3QgS1VSTCYgdXJsKQorQlNUUiBNYXJzaGFsbGlu
Z0hlbHBlcnM6OlVSTFRvQlNUUihjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gQlN0cmlu
Zyh1cmwuc3RyaW5nKCkpLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL01hcnNoYWxsaW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmgKaW5kZXggYjIxM2ZiOS4uNTBlMmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmgKQEAgLTMxLDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIH0K
IAogY2xhc3MgTWFyc2hhbGxpbmdIZWxwZXJzCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkNv
cmU6OktVUkwgQlNUUlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNUUiBLVVJMVG9CU1RSKGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIEJTVFJUb0tVUkwo
QlNUUik7CisgICAgc3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwog
ICAgIHN0YXRpYyBDRlVSTFJlZiBQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpT
dHJpbmcmKTsKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5n
KENGVVJMUmVmIGZpbGVVUkwpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJlZihC
U1RSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBjNzMzNzc1Li5hMmMzZjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtLCBjb25zdAogICAg
IHVpRGVsZWdhdGUtPmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKG1fd2ViVmlldywgJnNlbGVjdGVk
SXRlbSwgcHJvcGVydHlCYWcuZ2V0KCkpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50
Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3dlYlZpZXctPmRvd25sb2Fk
VVJMKHVybCk7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVu
dDo6c2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5t
YWluRnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAg
ICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBTdHJpbmcoKSwgMCwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBlZDQxYzU5Li4yMWUyNjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0
cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6
OkNvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0Rl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BO
b3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCmluZGV4IGE1NjQ2ZjIuLjhkZGZkZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRp
b25zRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5j
bHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShM
RUdBQ1lfTk9USUZJQ0FUSU9OUykKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViRGVza3Rv
cE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlw
dEV4ZWN1dGlvCiB7CiB9CiAKLU5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBXZWJEZXNr
dG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYgdXJs
KQorTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBpbnQgb3V0
ID0gMDsKICAgICBCU3RyaW5nIG9yZyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCktPnRvU3Ry
aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IGI2ZjljMjEu
LmQ3MGZiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTM4LDcg
KzM4LDcgQEAgaW50ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiB9CiAKIGNsYXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMg
V2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7
CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYp
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNo
ZWNrUGVybWlzc2lvbihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGhhc05vdGlm
aWNhdGlvbkRlbGVnYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYWJhNzRlYy4uMGNkZmQ4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgICAgICBm
cmFtZUxvYWREZWxlZ2F0ZS0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJWaWV3
LCBtX3dlYkZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBk
b3VibGUgZmlyZURhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91Ymxl
IGZpcmVEYXRlKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7
CkBAIC04NDUsNyArODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCgpCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2Mi0+ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtV
UkwmIGluc2VjdXJlVVJMKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwp
CiB7CiAgICAgQ09NUHRyPElXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4gPSBX
ZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2Uob3JpZ2luKTsKIApAQCAtODYxLDcgKzg2
MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2
Mi0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KHdlYlZpZXcsIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgp
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtV
UkwmLCBib29sKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0
IFVSTCYsIGJvb2wpCiB7CiAgICAgLy8gRklYTUU6IHByb3BvZ2F0ZSBjYWxsIGludG8gdGhlIHBy
aXZhdGUgZGVsZWdhdGUuCiB9CkBAIC05NzksNyArOTc5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0
IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJW
aWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViSGlz
dG9yeURlbGVnYXRlPiBoaXN0b3J5RGVsZWdhdGU7CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiB7
CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBtX3dlYkZyYW1lLT53ZWJWaWV3KCktPnVzZXJBZ2VudEZvcktV
UkwodXJsKTsKIH0KQEAgLTEwNjYsNyArMTA2Niw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCov
LCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBSZWZQdHI8RnJhbWU+IHJlc3VsdCA9IGNy
ZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCByZWZlcnJlcik7CkBAIC0xMDc1LDcg
KzEwNzUsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYg
VVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKG1fd2ViRnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwpAQCAtMTA5Nyw3ICsxMDk3
LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIFVSTCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxl
YXNlKCk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewog
ICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBl
KHVybCwgbWltZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogfQpAQCAtMTEx
Niw3ICsxMTE2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
VG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICBBU1NFUlQoZnJhbWUg
PT0gcGx1Z2luVmlldy0+cGFyZW50RnJhbWUoKSk7CiAKICAgICBpZiAoIXBsdWdpblZpZXctPnBs
dWdpbnNQYWdlKCkuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAgICAgIFVSTCBwbHVnaW5QYWdl
VVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChw
bHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0
cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29u
c3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZh
aWxlZFdpdGhFcnJvcih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFt
ZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5T
aXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQ
dHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkp
CiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAt
MTIxNyw5ICsxMjE3LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRh
VG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1fbWFudWFsTG9hZGVyID0g
c3RhdGljX2Nhc3Q8RW1iZWRkZWRXaWRnZXQqPihwbHVnaW5XaWRnZXQpOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IEtVUkwmIC8qYmFzZVVSTCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFz
ZVVSTCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQogewotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3
ID0gUGx1Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1l
bnQsIEtVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEt
YXBwbGV0IiwgZmFsc2UpOworICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1
Z2luVmlldzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1lbnQsIFVS
TCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQi
LCBmYWxzZSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBsb2FkZWQgc3Vj
Y2Vzc2Z1bGx5CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdpblZpZXctPnBs
dWdpbigpLT5sb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0OTkxOGRjLi5hZTQyOGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmly
ZURhdGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xMzUsOCArMTM1LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBh
Z2UoKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVS
TCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJ
REU7CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7CkBAIC0xNzcsMTUgKzE3
NywxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmws
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29s
IGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxs
eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRN
YW51YWxseSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNv
cmU6OldpZGdldCopIE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFU
b1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3Vs
ZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQqKSBPVkVSUklERTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3du
UHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcml2YXRlPiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0
ZTsKIAogcHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6
OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7Cisg
ICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CiAgICAgV2ViSGlzdG9yeSogd2Vi
SGlzdG9yeSgpIGNvbnN0OwogCiAgICAgV2ViRnJhbWUqIG1fd2ViRnJhbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmNwcAppbmRleCAwMWJiOGIwLi5hZGMzN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAg
LTg4LDMyICs4OCwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlzOwogfQogCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFi
bGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nv
b2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29v
a2llTmFtZSk7CiB9CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjoK
ICAgICB9CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcm
KQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICBy
ZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAppbmRleCBhYjE0YWZiOS4uMDlhODFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUzLDEyICs1
MywxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVn
eSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
ICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC02OCw3ICs2OCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6
UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6
VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApp
bmRleCBmZmNhYTg1Li4zYWFlODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
YXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApA
QCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
QEAgLTI1NCw3ICsyNTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3Vy
Y2U6OnBhZ2VUaXRsZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6
dW5yZWFjaGFibGVVUkwoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogdXJsKQogewot
ICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAg
ICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKICAgICBC
U3RyaW5nIHVybFN0cmluZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuY2hhcmFj
dGVycygpLCB1bnJlYWNoYWJsZVVSTC5zdHJpbmcoKS5sZW5ndGgoKSk7CiAKICAgICAqdXJsID0g
dXJsU3RyaW5nLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBiOGZh
YmUyLi4zZDFiMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1X
ZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEtVUkwmIHVybCwg
SVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQorV2ViRG93bmxvYWQqIFdlYkRvd25sb2Fk
OjpjcmVhdGVJbnN0YW5jZShjb25zdCBVUkwmIHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRl
bGVnYXRlKQogewogICAgIFdlYkRvd25sb2FkKiBpbnN0YW5jZSA9IG5ldyBXZWJEb3dubG9hZCgp
OwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCmluZGV4IDdh
NjZkZjEuLjIyNTRkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaApAQCAtMzgsNyArMzgsNyBA
QAogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTUyLDEzICs1MiwxMyBAQCBj
bGFzcyBXZWJEb3dubG9hZAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgSVdlYkRvd25sb2FkRGVs
ZWdhdGUqKTsKKyAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdl
YkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgc3RhdGljIFdlYkRvd25s
b2FkKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5z
dGFuY2UoKTsKIHByaXZhdGU6CiAgICAgV2ViRG93bmxvYWQoKTsKICAgICB2b2lkIGluaXQoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsK
LSAgICB2b2lkIGluaXQoY29uc3QgV2ViQ29yZTo6S1VSTCYsIElXZWJEb3dubG9hZERlbGVnYXRl
Kik7CisgICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVn
YXRlKik7CiAgICAgfldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNGQ1OWY4OC4uMDA4MjZhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBA
QCB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYwogICAgIENGUmVsZWFzZShjb25uZWN0aW9uKTsKIH0K
IAotdm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIElXZWJEb3dubG9hZERl
bGVnYXRlKiBkZWxlZ2F0ZSkKK3ZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgVVJMJiB1cmws
IElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBtX2RlbGVnYXRlID0gZGVs
ZWdhdGUgPyBkZWxlZ2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5j
ZSgpOwogICAgIExPR19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IGQxOWY0MjAuLjk4ZTg1YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgYwogICAgIHN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViRG93bmxv
YWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUp
Cit2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxl
Z2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA1YzBkZmExLi42MTk1
ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggYWI3MTk0NS4uMmExYzA4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkZyYW1lLmNwcApAQCAtNTY3LDExICs1NjcsMTEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEo
UGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUsIEIK
ICAgICBTdHJpbmcgZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVu
KHRleHRFbmNvZGluZ05hbWUpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGJl
IHVzaW5nIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCBoZXJlLAotICAgIC8vIGJ1dCB0
aGF0IHdvdWxkIHR1cm4gYSBudWxsIEJTVFIgaW50byBhIG51bGwgS1VSTCwgYW5kIHdlIGNyYXNo
IGluc2lkZSBvZgotICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEgbnVsbCBLVVJMIGluIGNvbnN0
cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgotICAgIEtVUkwgYmFzZUtVUkwgPSBLVVJMKEtV
UkwoKSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFzZVVS
TCkpKTsKKyAgICAvLyBidXQgdGhhdCB3b3VsZCB0dXJuIGEgbnVsbCBCU1RSIGludG8gYSBudWxs
IFVSTCwgYW5kIHdlIGNyYXNoIGluc2lkZSBvZgorICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEg
bnVsbCBVUkwgaW4gY29uc3RydWN0aW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCisgICAgVVJMIGJh
c2VLVVJMID0gVVJMKFVSTCgpLCBTdHJpbmcoYmFzZVVSTCA/IGJhc2VVUkwgOiBMIiIsIFN5c1N0
cmluZ0xlbihiYXNlVVJMKSkpOwogCi0gICAgS1VSTCBmYWlsaW5nS1VSTCA9IE1hcnNoYWxsaW5n
SGVscGVyczo6QlNUUlRvS1VSTChmYWlsaW5nVVJMKTsKKyAgICBVUkwgZmFpbGluZ0tVUkwgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwoZmFpbGluZ1VSTCk7CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChiYXNlS1VSTCk7CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEoZGF0YSwgbWltZVR5cGVTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCBmYWlsaW5nS1VSTCk7
CkBAIC03MDEsMTEgKzcwMSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1l
Ojpwcm92aXNpb25hbERhdGFTb3VyY2UoCiAgICAgcmV0dXJuICpzb3VyY2UgPyBTX09LIDogRV9G
QUlMOwogfQogCi1LVVJMIFdlYkZyYW1lOjp1cmwoKSBjb25zdAorVVJMIFdlYkZyYW1lOjp1cmwo
KSBjb25zdAogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICgh
Y29yZUZyYW1lKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7
CiAKICAgICByZXR1cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCmluZGV4IDYyNzBkNzguLjMzNjRjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtMzQs
NyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQWRqdXN0Vmlld1NpemVPck5vdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogCiAjaW5jbHVk
ZSA8V1RGL1JlZlB0ci5oPgpAQCAtMzE4LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAgICBIUkVTVUxU
IG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVs
cywgSURPTUVsZW1lbnQqIGFnYWluc3RFbGVtZW50LCBCU1RSKiByZXN1bHQpOwogICAgIEhSRVNV
TFQgY2FuUHJvdmlkZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCk7CiAKLSAgICBXZWJDb3Jl
OjpLVVJMIHVybCgpIGNvbnN0OworICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdDsKIAogICAg
IFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyop
OwpAQCAtMzQxLDcgKzM0MSw3IEBAIHByb3RlY3RlZDoKICAgICBjbGFzcyBXZWJGcmFtZVByaXZh
dGU7CiAgICAgV2ViRnJhbWVQcml2YXRlKiAgICBkOwogICAgIGJvb2wgICAgICAgICAgICAgICAg
bV9xdWlja1JlZGlyZWN0Q29taW5nOwotICAgIFdlYkNvcmU6OktVUkwgICAgICAgbV9vcmlnaW5h
bFJlcXVlc3RVUkw7CisgICAgV2ViQ29yZTo6VVJMICAgICAgIG1fb3JpZ2luYWxSZXF1ZXN0VVJM
OwogICAgIGJvb2wgICAgICAgICAgICAgICAgbV9pblByaW50aW5nTW9kZTsKICAgICBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4gbV9wYWdlUmVjdHM7CiAgICAgaW50IG1fcGFnZUhlaWdodDsgICAv
LyBoZWlnaHQgb2YgdGhlIHBhZ2UgYWRqdXN0ZWQgYnkgbWFyZ2lucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5LmNwcAppbmRleCA1M2UxZDU0Li43ZTYzNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNw
cApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
aXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC01MzAsNyArNTMw
LDcgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnks
IGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoKICAgICByZXR1cm4gaHI7CiB9CiAKLXZvaWQg
V2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3Jl
YXNlVmlzaXRDb3VudCkKK3ZvaWQgV2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdh
c0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KQogewogICAgIElXZWJIaXN0b3J5SXRl
bSogZW50cnkgPSBtX2VudHJpZXNCeVVSTC5nZXQodXJsLnN0cmluZygpKS5nZXQoKTsKICAgICBp
ZiAoZW50cnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaAppbmRleCAzYzc1YTE4Li5mZjc3N2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBj
bGFzcyBVUkw7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAg
cHVibGljOgogCiAgICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFy
ZWRIaXN0b3J5KCk7Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBi
b29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKKyAgICB2b2lkIHZpc2l0
ZWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25z
dCBXVEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNl
VmlzaXRDb3VudCk7CiAgICAgdm9pZCBhZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cChXZWJDb3Jl
OjpQYWdlR3JvdXAmKTsKIAogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW1Gb3JVUkxT
dHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAppbmRleCA4YmZlOWJkLi40NTA4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJ
dGVtLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggOTY0MmU2OC4uN2RjYWJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmluaXRXaXRoVVJM
KAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bWFpbkRv
Y3VtZW50VVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAg
ICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpLVVJMVG9CU1RSKG1fcmVxdWVzdC5maXJz
dFBhcnR5Rm9yQ29va2llcygpKTsKKyAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpV
UkxUb0JTVFIobV9yZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgIHJldHVybiBT
X09LOwogfQogCkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6dGltZW91dEludGVydmFsKAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6VVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpL
VVJMVG9CU1RSKG1fcmVxdWVzdC51cmwoKSk7CisgICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVs
cGVyczo6VVJMVG9CU1RSKG1fcmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCBjY2ZkOTVkLi5lNDY5OTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAvLyBXZWJSZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUmVzb3VyY2U6Oldl
YlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKK1dlYlJlc291cmNlOjpXZWJSZXNvdXJj
ZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGZyYW1lTmFtZSkKICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAsIG1fZGF0
YShkYXRhKQogICAgICwgbV91cmwodXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKaW5kZXggZDhm
YjQzMy4uMDhhNTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25z
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYlJlc291cmNlIDogcHVi
bGljIElXZWJSZXNvdXJjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVh
dGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwogcHJvdGVjdGVkOgotICAgIFdl
YlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVh
bSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291cmNlKCk7CiAKIHB1YmxpYzoKQEAgLTczLDcgKzcz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50OwogICAgIENPTVB0
cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3Jl
OjpVUkwgbV91cmw7CiAgICAgV1RGOjpTdHJpbmcgbV9taW1lVHlwZTsKICAgICBXVEY6OlN0cmlu
ZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgV1RGOjpTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggZjBjNDMwMi4uZmUzMzJhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiAjaW5jbHVk
ZSA8d3RmL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFu
ZGxlLmg+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0yMjYsNyArMjI2LDcgQEAgV2ViVVJMUmVz
cG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVz
cG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBo
dHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFj
ZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKFBhcnNl
ZFVSTFN0cmluZywgImh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7
CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3Ry
aW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRl
eCAxYzhjNTY5Li4wNzljNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwu
aCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDEyNDI5Y2EuLjU2MzcxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCkBAIC0yMjQsOSArMjI0LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJp
bmcoQlNUUiBic3RyKQogICAgIHJldHVybiBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIp
KTsKIH0KIAotc3RhdGljIGlubGluZSBLVVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5s
aW5lIFVSTCB0b1VSTChCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0
cmluZyhic3RyKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQog
CiBjbGFzcyBQcmVmZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2Vi
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIgewpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmlu
ZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7
CiB9CiAKLWNvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJM
JikKK2NvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQog
ewogICAgIGlmIChtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJB
Z2VudEN1c3RvbTsKQEAgLTQ4NTUsNyArNDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAg
ICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAg
ICBzdHIuY2xlYXIoKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihLVVJMKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKFVSTCgpKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFj
a2dyb3VuZHMoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYw
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJj
ZSksIHRvVVJMKHVybCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3RDb3VudCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0Q291bnQsIGJsYWNrbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0
RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhz
b3VyY2UpLCB0b1VSTCh1cmwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3RDb3VudCwgYmxhY2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3Vw
TmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQod29ybGQtPndvcmxkKCksIHRvS1VSTCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVz
ZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC02NDI3LDcgKzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQq
CiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdl
R3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tV
UkwodXJsKSk7CisgICAgcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3
b3JsZC0+d29ybGQoKSwgdG9VUkwodXJsKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1
NDksNyArNjU0OSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZp
c2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLXZvaWQgV2ViVmlldzo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJW
aWV3Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxl
Z2F0ZSdzIGpvYiB0byByZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhl
cndpc2UgaXQgd2lsbCBiZQogICAgIC8vIGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0
dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCBhYjI3MTg3Li5jYWQ4NWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5oCkBAIC05MDgsNyArOTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVuaWVudCB0byBi
ZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50
IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktV
UkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNl
ckFnZW50Rm9yS1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9v
bCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBA
IC05NDcsNyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBM
UEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2li
bGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBw
cE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXll
ckNoYW5nZXNTb29uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGU1OGJkOGYuLjc5NTAwNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBmaWxl
czogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTE2ICBFbnJpY2EgQ2FzdWNjaSAg
PGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBkaWRT
ZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBFZGl0b3JDbGllbnQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVu
dUNsaWVudFdpbkNFLmNwcAppbmRleCBkZGE0ZDI3Li43YjVkNjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRXaW5DRS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFdpbkNF
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb24KICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50V2luQ0U6OmRv
d25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRXaW5DRTo6
ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1l
bnVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudFdpbkNFLmgKaW5kZXggOGNkMTk1MS4uZGI3NTZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNF
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudFdpbkNFLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093
blB0cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNv
cmU6OkNvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51
Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNv
cmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3Jl
OjpGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggODUzYjFiYi4uNmQwMGIw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6On5GcmFtZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2Miwx
MiArMTYyLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi1Q
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2luKGNv
bnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkK
K1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
CiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpCiB7CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJsLCBu
YW1lLCBvd25lckVsZW1lbnQsIHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRo
LCBtYXJnaW5IZWlnaHQpOwpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAg
ICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRy
PFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChj
b25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4g
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiAwOwogfQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUo
dXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0yNjIs
MTIgKzI2MiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJlQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcsNyAr
MzE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBL
VVJMJiwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyArNjMx
LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZyYW1l
c2V0KGJvb2wpCiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4g
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewotICAg
IHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1c2Vy
QWdlbnQoS1VSTCgpKSk7CisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5DRTo6
Y3JlYXRlKG1fZnJhbWUsIHVzZXJBZ2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggOTdkYzk1MC4uYjEwZjAyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlLCBkb3VibGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0x
MDUsMTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0Vz
dGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jl
c3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+
JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1l
KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpI
VE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
YWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVt
ZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RG
OjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBh
cmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9p
ZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlw
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2Jq
ZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7
CiAKQEAgLTEzNiw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQsOSArMTYzLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50
KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCBXVEY6OlN0
cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lk
IHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAg
ICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJD
b3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCA3MzNh
NGVlLi4yZGM5OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtODQsMzIgKzg0
LDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpz
ZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmlu
ZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29r
aWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShz
ZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQ
bHVnaW5JbmZvPiYgb3V0CiAgICAgfQogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBj
b25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6aXNMaW5r
VmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFz
aCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKaW5kZXggMTIwODgxMS4uOTI1ZjBlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0
cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6
OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0g
ICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6Okxp
bmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6
TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3Jl
OjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAppbmRleCAzNjUwZDgzLi5m
NTUzMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lk
IFdlYlZpZXc6OmNsZWFudXAoKQogICAgIFVucmVnaXN0ZXJDbGFzcyhrV2ViVmlld1dpbmRvd0Ns
YXNzTmFtZSwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0
aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9m
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdC93aW5jZS9XZWJWaWV3LmgKaW5kZXggYjQ0MDI1MS4uOGI2MDY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJWaWV3LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgRnJhbWVWaWV3OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjksNyArNjks
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZyYW1lUmVjdChSRUNUKiByZWN0KSBjb25zdDsKIAot
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVu
dCosIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpOworICAgIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBib29sLCBpbnQsIGludCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IERpYWxvZwogICAg
IHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCBlNDk5ZjU5Li5kODY4ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJl
bmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisg
ICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI3
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAg
ICAgIFtRdF0gRml4IGZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxZTYwZDQwLi44NTA3NjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Js
b2JSZWdpc3RyeS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6TmV0
d29ya0Jsb2JSZWdpc3RyeSgpCiB7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBj
b25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGRhdGEsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+JiBuZXdTYW5kYm94RXh0ZW5zaW9ucykKK3ZvaWQgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4g
ZGF0YSwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mIG5ld1NhbmRib3hF
eHRlbnNpb25zKQogewogICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9ucy5jb250YWlucyh1
cmwuc3RyaW5nKCkpKTsKIApAQCAtNjcsMTEgKzY3LDExIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZWN0CiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29u
dGFpbnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKICAgICBpZiAobWFw
SXRlcmF0b3IgPT0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCi0gICAgICAgIG1hcEl0ZXJh
dG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8S1VSTD4o
KSkuaXRlcmF0b3I7CisgICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24u
YWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8VVJMPigpKS5pdGVyYXRvcjsKICAgICBtYXBJdGVyYXRv
ci0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1VSTCkKK3ZvaWQg
TmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBzcmNVUkwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KHVybCwgc3JjVVJMKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uTWFwOjppdGVyYXRvciBpdGVyID0g
bV9zYW5kYm94RXh0ZW5zaW9ucy5maW5kKHNyY1VSTC5zdHJpbmcoKSk7CkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmlu
ZChjb25uZWN0aW9uKS0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGJsb2JSZWdpc3RyeSgp
LnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9ucy5yZW1vdmUo
dXJsLnN0cmluZygpKTsKQEAgLTk4LDggKzk4LDggQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5
Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAK
ICAgICBpZiAoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBIYXNoU2V0PEtVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKLSAgICBmb3IgKEhh
c2hTZXQ8S1VSTD46Oml0ZXJhdG9yIGl0ZXIgPSBibG9ic0ZvckNvbm5lY3Rpb24uYmVnaW4oKSwg
ZW5kID0gYmxvYnNGb3JDb25uZWN0aW9uLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Cisg
ICAgSGFzaFNldDxVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKKyAgICBmb3IgKEhhc2hTZXQ8VVJMPjo6aXRlcmF0
b3IgaXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0ZvckNvbm5l
Y3Rpb24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgYmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwoKml0ZXIpOwogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb25z
LnJlbW92ZSgqaXRlcik7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgTmV0d29ya0Js
b2JSZWdpc3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQCiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwog
fQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitjb25z
dCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpz
YW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
bV9zYW5kYm94RXh0ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmgKaW5kZXggNmQ3MWJiZi4uNzMzMDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCTE9CKSAmJiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIApAQCAtNDcsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQmxvYlJlZ2lz
dHJ5KCk7CiAgICAgc3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNoYXJlZCgpOwogCi0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+Jik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+Jik7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwog
CiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVu
c2lvbj4+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0ZW5zaW9ucyhjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgp
OwpAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+PiBTYW5kYm94RXh0ZW5zaW9uTWFwOwog
ICAgIFNhbmRib3hFeHRlbnNpb25NYXAgbV9zYW5kYm94RXh0ZW5zaW9uczsKIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29y
ZTo6S1VSTD4+IEJsb2JGb3JDb25uZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29yZTo6VVJMPj4gQmxvYkZv
ckNvbm5lY3Rpb25NYXA7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9ibG9ic0ZvckNvbm5l
Y3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODlkNGVhZi4u
MDNhZjFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTgyLDM3ICsxODIs
MzcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNv
dXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG0KICAgICBsb2FkZXItPmRpZENvbnZlcnRIYW5k
bGVUb0Rvd25sb2FkKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNl
c3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFn
ZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQog
ewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYg
cmVzdWx0KQogewogICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdD
b29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByZXN1bHQpCiB7CiAgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNv
b2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VT
ZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKK3ZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwg
Y29uc3QgQmxvYlJlZ2lzdHJhdGlvbkRhdGEmIGRhdGEpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4gZXh0ZW5zaW9uczsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBkYXRhLnNhbmRib3hFeHRlbnNpb25zKCkuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtMjIzLDEyICsyMjMsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQmxvYlIKICAgICBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBkYXRhLnJl
bGVhc2VEYXRhKCksIGV4dGVuc2lvbnMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
S1VSTCYgc3JjVVJMKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0
ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAg
ICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkucmVnaXN0ZXJCbG9iVVJMKHRoaXMsIHVy
bCwgc3JjVVJMKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5y
ZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkudW5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGZiZmQ4MjMxLi5kMjJkZDUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTczLDIyICs3MywyMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGVyZm9ybVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYsIFBhc3NSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+KTsKIAogICAgIHZvaWQg
cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBj
cm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVk
aXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3Vy
Y2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7
CiAgICAgdm9pZCBzdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWlu
dDY0X3QgZG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAg
IHZvaWQgY29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJl
c3VsdCk7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJlc3VsdCk7
Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFN0cmluZyYgcmVzdWx0KTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVz
dWx0KTsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogCi0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JV
UkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNV
UkwpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JS
ZWdpc3RyYXRpb25EYXRhJik7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgUmVmUHRyPENvcmVJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhZmFlMWEyLi5hNWY3Y2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzUsMTYgKzM1LDE2IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTdGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3Qg
ZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFy
dHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIFNldENv
b2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBm
aXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llU3RyaW5nKQot
ICAgIENvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6
S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAg
ICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6
OlN0cmluZyByZXN1bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChX
VEY6OlZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5n
IGNvb2tpZU5hbWUpCisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpT
dHJpbmcgcmVzdWx0KQorICAgIFNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFdURjo6
U3RyaW5nIGNvb2tpZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAt
PiAoYm9vbCBlbmFibGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OlVSTCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3Jl
OjpVUkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAg
IERlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCB1
cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckJsb2JVUkwoV2ViQ29y
ZTo6S1VSTCB1cmwsIFdlYktpdDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKLSAgICBSZWdp
c3RlckJsb2JVUkxGcm9tVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJDb3JlOjpLVVJMIHNyY1VS
TCkKLSAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpLVVJMIHVybCkKKyAgICBSZWdpc3Rl
ckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViS2l0OjpCbG9iUmVnaXN0cmF0aW9uRGF0YSBk
YXRhKQorICAgIFJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29y
ZTo6VVJMIHNyY1VSTCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlci5jcHAKaW5kZXggOTE4Njk3YS4uZmY0Mjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZUxvYWRlcihQYXNzUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICBzY2hl
ZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLUhvc3RSZWNvcmQqIE5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBD
cmVhdGVIb3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCitIb3N0UmVjb3JkKiBOZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBD
cmVhdGVIb3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0
LmdldCgpOwpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnJlbW92ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBzY2hl
ZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFNjaGVkdWxlcjo6cmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRl
ciwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nl
c3MpIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QgbG9hZGVy
IG9yaWdpbmFsbHkgZm9yICclcycgcmVkaXJlY3RlZCB0byAnJXMnIiwgbG9hZGVyLT5yZXF1ZXN0
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RVUkwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggZmI0MTAyNy4uODQwYTI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiAgICAgLy8gQ2FsbGVkIHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3Mgb24gYSBiYWNrZ3Jv
dW5kIHRocmVhZCB3aGVuIGEgcmVzb3VyY2UgbG9hZCBoYXMgZmluaXNoZWQuCiAgICAgdm9pZCBz
Y2hlZHVsZVJlbW92ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqKTsKIAotICAgIHZvaWQg
cmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiByZWRpcmVjdFVSTCk7CisgICAgdm9pZCByZWNlaXZlZFJlZGlyZWN0KE5ldHdvcmtSZXNv
dXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQg
c2VydmVQZW5kaW5nUmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogCiAgICAgLy8gRm9yIE5ldHdvcmtQ
cm9jZXNzIHN0YXRpc3RpY3MgcmVwb3J0aW5nLgpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBGaW5kT25seQogICAgIH07CiAgICAgCi0gICAgSG9zdFJlY29yZCogaG9zdEZvclVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKKyAg
ICBIb3N0UmVjb3JkKiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQ
b2xpY3kgPSBGaW5kT25seSk7CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVNlcnZlUGVuZGluZ1Jl
cXVlc3RzKCk7CiAgICAgdm9pZCByZXF1ZXN0VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxOZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDA4ODQ1MmUuLmUx
OTdmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3
b3JrUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
TmV0d29ya1Byb2Nlc3NNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJp
ZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0
dHBzUHIKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpwcm94eVNldHRpbmdzID0gW05TTXV0YWJs
ZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CiAKICAgICBpZiAoIWh0dHBQcm94eS5pc051bGwoKSkg
ewotICAgICAgICBLVVJMIGh0dHBQcm94eVVSTChLVVJMKCksIGh0dHBQcm94eSk7CisgICAgICAg
IFVSTCBodHRwUHJveHlVUkwoVVJMKCksIGh0dHBQcm94eSk7CiAgICAgICAgIGlmIChodHRwUHJv
eHlVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6
bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwUHJveHlVUkwuaG9zdCgpKSBmb3JLZXk6KE5T
U3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQUHJveHldOwogICAgICAgICAgICAgaWYgKGh0
dHBQcm94eVVSTC5oYXNQb3J0KCkpIHsKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgb3Zl
cnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcm
IGh0dHBzUHIKICAgICB9CiAKICAgICBpZiAoIWh0dHBzUHJveHkuaXNOdWxsKCkpIHsKLSAgICAg
ICAgS1VSTCBodHRwc1Byb3h5VVJMKEtVUkwoKSwgaHR0cHNQcm94eSk7CisgICAgICAgIFVSTCBo
dHRwc1Byb3h5VVJMKFVSTCgpLCBodHRwc1Byb3h5KTsKICAgICAgICAgaWYgKGh0dHBzUHJveHlV
UkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNT
dHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwc1Byb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0
cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQcm94eV07CiAgICAgICAgICAgICBpZiAoaHR0
cHNQcm94eVVSTC5oYXNQb3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA1ZDM4ZjZlLi42YzA1M2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmkKIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7Ci0gICAgbV9wbHVnaW4tPnN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShzdHJlYW1JRCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJl
c3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlw
ZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2Uoc3RyZWFtSUQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwg
c3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5n
KCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBTdHJpbmcmIHJlc3BvbnMKICAgICBpZiAobV9w
bHVnaW5DYW5jZWxlZE1hbnVhbFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBt
aW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2VVUkxTdHJpbmcp
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzLCBTdHJp
bmcoKSk7CiB9CiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5k
ZXggZDVhODk4NS4uNWQxMWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0xODksMTEgKzE4OSwxMSBAQCBzdGF0
aWMgdm9pZCBjYXJib25XaW5kb3dIaWRkZW4oV2luZG93UmVmIHdpbmRvdykKIHN0YXRpYyBib29s
IG9wZW5DRlVSTFJlZihDRlVSTFJlZiB1cmwsIGludDMyX3QmIHN0YXR1cywgQ0ZVUkxSZWYqIGxh
dW5jaGVkVVJMKQogewogICAgIFN0cmluZyBsYXVuY2hlZFVSTFN0cmluZzsKLSAgICBpZiAoIVBs
dWdpblByb2Nlc3M6OnNoYXJlZCgpLm9wZW5VUkwoS1VSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMs
IGxhdW5jaGVkVVJMU3RyaW5nKSkKKyAgICBpZiAoIVBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLm9w
ZW5VUkwoVVJMKHVybCkuc3RyaW5nKCksIHN0YXR1cywgbGF1bmNoZWRVUkxTdHJpbmcpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWxhdW5jaGVkVVJMU3RyaW5nLmlzTnVsbCgp
ICYmIGxhdW5jaGVkVVJMKQotICAgICAgICAqbGF1bmNoZWRVUkwgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOworICAgICAg
ICAqbGF1bmNoZWRVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBsYXVuY2hlZFVSTFN0cmluZyku
Y3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI5Myw3
ICsyOTMsNyBAQCBzdGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXb3Jrc3Bh
Y2VfbGF1bmNoQXBwbGljYXRpb25BdFVSTF9vcHRpb25zXwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoS1VS
TCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNo
YXJlZCgpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50
cykpIHsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAg
ICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1
ZXN0LmNwcAppbmRleCAxMTRjNzQxLi5mNjYxMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBl
SUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCkKIAogV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVz
dENyZWF0ZVdpdGhXS1VSTChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlVS
TFJlcXVlc3Q6OmNyZWF0ZShLVVJMKEtVUkwoKSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwo
KSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAogV0tVUkxSZWYgV0tV
UkxSZXF1ZXN0Q29weVVSTChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAppbmRleCBjNTQ5MTg0Li40N2Fm
Y2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25z
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3Bw
CkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
ZWJVUkxSZXNwb25zZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcAppbmRleCBmMDRlY2ZkLi40NzU2NGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCkBAIC01NCw4ICs1NCw4
IEBAIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwg
V0tVUkxSZWYgVVJMUmVmKQogICAgIC8vIFdlIGZpcnN0IGNyZWF0ZSBhIENTdHJpbmcgYW5kIHRo
ZW4gY3JlYXRlIHRoZSBDRlVSTCBmcm9tIGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIENG
VVJMIGlzIHN0b3JlZCBpbiAKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFu
ZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAotICAgIC8vIFRoaXMgcGF0
dGVybiBvZiB1c2luZyBVVEYtOCBhbmQgdGhlbiBmYWxsaW5nIGJhY2sgdG8gTGF0aW4xIG9uIGZh
aWx1cmUgbWF0Y2hlcyBLVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQotICAgIC8vIG1ham9y
IGRpZmZlcm5jZSBiZWluZyB0aGF0IEtVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9u
IGFuZCBpbnN0ZWFkIGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKKyAgICAv
LyBUaGlzIHBhdHRlcm4gb2YgdXNpbmcgVVRGLTggYW5kIHRoZW4gZmFsbGluZyBiYWNrIHRvIExh
dGluMSBvbiBmYWlsdXJlIG1hdGNoZXMgVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQorICAg
IC8vIG1ham9yIGRpZmZlcm5jZSBiZWluZyB0aGF0IFVSTCBkb2VzIG5vdCBkbyBhIFVURi04IGNv
bnZlcnNpb24gYW5kIGluc3RlYWQgY2hvcHMgb2ZmIHRoZSBoaWdoIGJpdHMgb2YgdGhlIFVURi0x
NgogICAgIC8vIGNoYXJhY3RlciBzZXF1ZW5jZS4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gdG9J
bXBsKFVSTFJlZiktPnN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4IGMzYjJlOGQu
LmYxNmIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvcXQv
UXRGaWxlRG93bmxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fk
cy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBRU3RyaW5nIFF0Rmls
ZURvd25sb2FkZXI6OmRldGVybWluZUZpbGVuYW1lKCkKIAogICAgIFFTdHJpbmcgZmlsZW5hbWVD
YW5kaWRhdGUgPSBmaWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZy
b21MYXRpbjEobV9yZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKICAg
ICBpZiAoZmlsZW5hbWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9
IG1fcmVwbHktPnVybCgpOworICAgICAgICBVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOwogICAg
ICAgICBmaWxlbmFtZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxh
c3RQYXRoQ29tcG9uZW50KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAppbmRleCAxMWUwYTQxLi5kMGVl
YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93
bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAv
RG93bmxvYWRTb3VwLmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAg
ICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgS1VS
TCB1cmwgPSByZXNwb25zZS51cmwoKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSByZXNwb25zZS51
cmwoKTsKICAgICAgICAgICAgIHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CiAgICAgICAgICAgICB1
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxl
bmFtZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0
aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0
aW9uRGF0YS5jcHAKaW5kZXggYTBkZDRkYy4uNDEzMGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMTYz
LDcgKzE2Myw3IEBAIGJvb2wgQmxvYlJlZ2lzdHJhdGlvbkRhdGE6OmRlY29kZShDb3JlSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIEJsb2JSZWdpc3RyCiAgICAgICAgICAgICBTdHJpbmcg
dXJsOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEtPmFwcGVuZEJsb2Io
S1VSTChLVVJMKCksIHVybCksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJlc3VsdC5t
X2RhdGEtPmFwcGVuZEJsb2IoVVJMKFVSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQppbmRleCAyNzI2ZjFj
Li43OTgzYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29s
TWFuYWdlck1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5o
IgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZl
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5j
cHAKaW5kZXggZDg1NWUzZC4uMDgzYjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkFyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldlYkRh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ4LDcgKzQ4LDcgQEAg
UGFzc1JlZlB0cjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFBhc3NSZWZQdHI8QXJjaGl2ZVJlc28KIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNo
aXZlUmVzb3VyY2UoV2ViRGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZl
UmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YS0+Ynl0ZXMoKSwgZGF0YS0+c2l6ZSgpKSwgS1VSTChLVVJMKCksIFVSTCksIE1JTUVUeXBlLCB0
ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEt
PnNpemUoKSksIFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRl
eHRFbmNvZGluZywgU3RyaW5nKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGFiNjlmZjYuLjc1ZDJiNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0z
OSw3ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rp
b25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNDA3LDcg
KzQwNyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyB1cmw7CiAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOworICAgICAgICBy
ZXF1ZXN0LnNldFVSTChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIFN0cmluZyBodHRwTWV0
aG9kOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGh0dHBNZXRob2QpKQpAQCAtNDMyLDcg
KzQzMiw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyBmaXJzdFBh
cnR5Rm9yQ29va2llczsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaXJzdFBhcnR5Rm9y
Q29va2llcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoS1VSTChLVVJMKCksIGZpcnN0UGFydHlGb3JDb29raWVzKSk7
CisgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoVVJMKFVSTCgpLCBmaXJz
dFBhcnR5Rm9yQ29va2llcykpOwogCiAgICAgICAgIHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3Q7
CiAgICAgfQpAQCAtNTAzLDcgKzUwMyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJl
c3BvbnNlPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSCiAgICAg
ICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgp
LCB1cmwpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKFVSTChVUkwoKSwgdXJsKSk7CiAKICAg
ICAgICAgaW50MzJfdCBodHRwU3RhdHVzQ29kZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShodHRwU3RhdHVzQ29kZSkpCkBAIC0xMDMzLDE3ICsxMDMzLDE3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxEcmFnU2Vzc2lvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERyYWdT
ZXNzaW9uJiByCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxLVVJM
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgS1VSTCYgcmVzdWx0KQor
dm9pZCBBcmd1bWVudENvZGVyPFVSTD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIs
IGNvbnN0IFVSTCYgcmVzdWx0KQogewogICAgIGVuY29kZXIgPDwgcmVzdWx0LnN0cmluZygpOwog
fQogICAgIAotYm9vbCBBcmd1bWVudENvZGVyPEtVUkw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBLVVJMJiByZXN1bHQpCitib29sIEFyZ3VtZW50Q29kZXI8VVJMPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgVVJMJiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIHVy
bEFzU3RyaW5nOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsQXNTdHJpbmcpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0ID0gS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsIHVybEFzU3RyaW5nKTsKKyAgICByZXN1bHQgPSBVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3Ry
aW5nLCB1cmxBc1N0cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjMsNyArMTA2
Myw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD46OmRlY29k
ZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
b3VyY2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwg
dXJsOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNl
clNjcmlwdD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
S1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDYzMGI2YjYuLjNiMGJhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsK
ICAgICBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNz
IFVSTDsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CkBAIC0yNTUsOSArMjU1LDkgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpEcmFnU2Vzc2lvbj4gewogICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpEcmFnU2Vzc2lvbiYpOwog
fTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6
S1VSTCYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVUkw+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OlVSTCYpOwogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpV
c2VyU3R5bGVTaGVldD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQu
Y3BwCmluZGV4IDljMzUxNTAuLmM5ZDg0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0hpdFRlc3RSZXN1bHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VVJMLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKaW5kZXggMjdhNzQ0ZS4uZDc2
MTZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBX
ZWJVUkxfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJM
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtNDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVS
TD4gY3JlYXRlKGNvbnN0IFdlYlVSTCogYmFzZVVSTCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVS
TCkKICAgICB7Ci0gICAgICAgIHVzaW5nIFdlYkNvcmU6OktVUkw7CisgICAgICAgIHVzaW5nIFdl
YkNvcmU6OlVSTDsKIAogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwt
PnBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgS1VSTCogYWJzb2x1dGVVUkwgPSBuZXcg
S1VSTCgqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAg
VVJMKiBhYnNvbHV0ZVVSTCA9IG5ldyBVUkwoKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCBy
ZWxhdGl2ZVVSTCk7CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkwoYWRvcHRQ
dHIoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTC0+c3RyaW5nKCkpKTsKICAgICB9CkBAIC05MCw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFdlYlVSTChQYXNzT3duUHRy
PFdlYkNvcmU6OktVUkw+IHBhcnNlZFVSTCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgV2Vi
VVJMKFBhc3NPd25QdHI8V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKICAgICAgICAgLCBtX3BhcnNlZFVSTChw
YXJzZWRVUkwpCiAgICAgewpAQCAtMTAwLDExICsxMDAsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgICAgIGlmIChtX3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9w
YXJzZWRVUkwgPSBXVEY6OmFkb3B0UHRyKG5ldyBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwo
KSwgbV9zdHJpbmcpKTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBXVEY6OmFkb3B0UHRyKG5ldyBX
ZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIG1fc3RyaW5nKSk7CiAgICAgfQogCiAgICAgU3Ry
aW5nIG1fc3RyaW5nOwotICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OktVUkw+IG1fcGFyc2Vk
VVJMOworICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OlVSTD4gbV9wYXJzZWRVUkw7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0
LmNwcAppbmRleCA0OGFjZjM3Li4zMDcyZjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJV
UkxSZXF1ZXN0LmNwcApAQCAtMTYsNyArMTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJM
UmVxdWVzdDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8V2ViVVJMUmVxdWVz
dD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNGY4YWVmZi4uOWYyZjRmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJVUkxSZXF1ZXN0IDogcHVibGljIFR5cGVkQVBJT2Jq
ZWN0PEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJVUkxSZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDVjMDhiODAu
LmIzM2Y0OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBo
b3N0KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmhvc3QoKTsgfQogICAgIGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBi
b29sIG1hdGNoZXNVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
bi5tYXRjaGVzKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsg
fQorICAgIGJvb2wgbWF0Y2hlc1VSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywg
dXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm5T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggZjdlNzZlNy4uNmUw
MWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVy
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAg
ICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJs
KSwgU3RyaW5nKCkpOworICAgICAgICBkYXRhLT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJp
bmcoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAppbmRleCA3ZTZhOGMxLi4wMGJiMTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGlt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNw
cApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogc3RhdGljIENGRGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RI
ZWFkZXJGaWVsZHNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2Us
IENGVVJMUmVmIGluUmVxdWVzdFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAgICBLVVJM
IGZpcnN0UGFydHlGb3JDb29raWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VS
TDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0d29ya1Jl
cGx5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRh
LmNwcAppbmRleCA1MTY0MWVkLi5iODM1YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
IlF0TmV0d29ya1JlcGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNRdC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxRTmV0
d29ya0FjY2Vzc01hbmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWEuLjM4NGJkMzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVl
c3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3Vy
aShXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiB1cmkpCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIGdfcmV0dXJu
X2lmX2ZhaWwodXJpKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJs
KFVSTCgpLCB1cmkpOwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1
ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGI4Y2EwMDIuLmFhMjU0ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNw
cApAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NE
aWRDcmFzaCgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogCi0gICAgUVVybCB1cmwoS1VS
TChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHdlYlBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhp
dCgpKSk7CisgICAgUVVybCB1cmwoVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgd2ViUGFn
ZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkpKTsKICAgICBxV2FybmluZygiV0FSTklORzogVGhl
IHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJpbnRhYmxlKHVy
bC50b1N0cmluZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKIAogICAgIHBhZ2VFdmVudEhhbmRs
ZXItPnJlc2V0R2VzdHVyZVJlY29nbml6ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IDVkOWM0
YjIuLmMwMjZkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHNpemVfdCBI
VFRQUmVxdWVzdDo6cGFyc2VSZXF1ZXN0TGluZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBTdHJpbmcmIGZhCiB7CiAgICAgU3RyaW5nIHVybDsKICAgICBzaXplX3QgcmVzdWx0ID0g
cGFyc2VIVFRQUmVxdWVzdExpbmUoZGF0YSwgbGVuZ3RoLCBmYWlsdXJlUmVhc29uLCBtX3JlcXVl
c3RNZXRob2QsIHVybCwgbV9odHRwVmVyc2lvbik7Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwg
dXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCkBAIC0xMTMsNyArMTEzLDcgQEAgSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KCkKIHsKIH0K
IAotSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwg
Y29uc3QgS1VSTCYgdXJsLCBIVFRQVmVyc2lvbiB2ZXJzaW9uKQorSFRUUFJlcXVlc3Q6OkhUVFBS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIEhUVFBW
ZXJzaW9uIHZlcnNpb24pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2h0dHBWZXJzaW9uKHZl
cnNpb24pCiAgICAgLCBtX3JlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaApp
bmRleCA3MTllMjQxLi5lY2RhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
VFBQYXJzZXJzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQs
MTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPEhUVFBSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRU
UFJlcXVlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBW
ZXJzaW9uIHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0
TWV0aG9kLCB1cmwsIHZlcnNpb24pKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1
ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgV2ViQ29yZTo6SFRUUFZlcnNpb24gdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUVFBSZXF1ZXN0KHJlcXVlc3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAg
ICAgdmlydHVhbCB+SFRUUFJlcXVlc3QoKTsKIAogICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0TWV0aG9kOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0
aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKSB7IG1fcmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQog
Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZv
aWQgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAg
IFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25z
dCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0K
IApAQCAtNjIsMTQgKzYyLDE0IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1
ZXN0KCk7Ci0gICAgSFRUUFJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29y
ZTo6SFRUUFZlcnNpb24pOwogCiAgICAgLy8gUGFyc2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBw
YXJzZVJlcXVlc3RMaW5lKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYg
ZmFpbHVyZVJlYXNvbik7CiAgICAgc2l6ZV90IHBhcnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJz
ZVJlcXVlc3RCb2R5KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2Vi
Q29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6
SFRUUFZlcnNpb24gbV9odHRwVmVyc2lvbjsKICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwog
ICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3Bl
Y3RvclNlcnZlci5jcHAKaW5kZXggY2JiZDczZi4uY2U1MzY4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVj
dG9yU2VydmVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVy
OjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24s
CiB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1
ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRU
UFJlcXVlc3Q+IHJlcXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMgb25s
eSB0aGUgcGF0aCBleHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAvLyBh
bmQgS1VSTCBpcyBwb29yIGF0IHBhcnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0IHRo
ZSBpbnRlcmVzdGluZyBwYXJ0cyBtYW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQg
cGFyc2luZyBpbmNvbXBsZXRlIFVSTHMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRz
IG1hbnVhbGx5LgogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6ZV90
IHBhdGhFbmQgPSBwYXRoLmZpbmQoJz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3VuZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9T
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3Rv
cmUuY3BwCmluZGV4IDg2Y2JiYWQuLjUxY2ZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjksNyArMjksNyBA
QAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9k
dWxlSW5mby5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTU4LDcgKzE1OCw3
IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUluZm8o
KTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBLVVJMJiB1
cmwpCitzdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFN0cmluZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQ
YXRoQ29tcG9uZW50KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVn
aW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
KQogCiAjZW5kaWYKIAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVn
aW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5EYXRhOjpBbGxvd2Vk
UGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5J
bmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwsIFBs
dWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMpCiB7CiAgICAg
bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDljZWE3Li5jZWU3MTg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7
CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2
ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUg
ZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAg
IC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBp
biB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1
Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpQbHVn
aW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxQbHVn
aW5zKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5
cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmll
ci4KICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggYWMzZGRhOC4uN2IwYzE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0z
NCw3ICszNCw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQg
IldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8Y3J0X2V4
dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC00NjIsMTAgKzQ2MiwxMCBAQCB2
b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Ym9vbCYgcmVzdWx0LCBpbnQzMl90JgogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBDRlVSTFJl
ZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJlZihLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmdldCgpLCAmbGF1bmNoZWRVUkwpOwor
ICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
ZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAgIGlmIChsYXVuY2hl
ZFVSTCkgewotICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IEtVUkwobGF1bmNoZWRVUkwpLnN0
cmluZygpOworICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVuY2hlZFVSTCkuc3Ry
aW5nKCk7CiAgICAgICAgIENGUmVsZWFzZShsYXVuY2hlZFVSTCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjJiODEz
NS4uMmQyZjNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwCkBAIC0zMTYsOSArMzE2LDkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJ
bnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkKIAogc3RhdGljIGJvb2wgaXNNYWluSW5z
cGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIC8vIFVzZSBLVVJMIHNvIHdlIGNhbiBj
b21wYXJlIGp1c3QgdGhlIHBhdGhzLgotICAgIEtVUkwgaW5zcGVjdG9yVVJMKEtVUkwoKSwgd2Vi
SW5zcGVjdG9yUHJveHktPmluc3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAgS1VSTCByZXF1ZXN0VVJM
KEtVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CisgICAgLy8gVXNlIFVSTCBzbyB3
ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4KKyAgICBVUkwgaW5zcGVjdG9yVVJMKFVSTCgp
LCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yUGFnZVVSTCgpKTsKKyAgICBVUkwgcmVxdWVz
dFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CiAKICAgICBBU1NFUlQoV2Vi
Q29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChpbnNwZWN0
b3JVUkwucHJvdG9jb2woKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggMjg4YTcz
Ni4uNTZkMjAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3
ICs1Nyw3IEBAIHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmls
ZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVVUkxzQXJyYXkpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgV2ViVVJMKiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5
LT5hdDxXZWJVUkw+KGkpOwogICAgICAgICBpZiAod2ViVVJMKSB7Ci0gICAgICAgICAgICBLVVJM
IHVybChLVVJMKCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKKyAgICAgICAgICAgIFVSTCB1cmwoVVJM
KCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKICAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRB
cHBlbmQodXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCAwY2RiZjgxLi43NTUzZWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHls
ZVNoZWV0ID0gV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5
KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IGJhc2VVUkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJh
c2VVUkwuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRh
LnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQodXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFBy
b2Nlc3Nlc0luR3JvdXAoTWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBXZWJQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0g
V2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6
OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2Vy
U2NyaXB0ID0gV2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/
IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VV
UkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3Jp
cHRzLmFwcGVuZCh1c2VyU2NyaXB0KTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1l
c3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9k
YXRhLnBhZ2VHcm91cElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggYjA5MmYyOS4uYjA2NjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5
Q2xvc2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6Om1heWJl
SW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29sIFdlYlBhZ2VQ
cm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVy
bCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewog
ICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3
OSw3ICs2NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVy
bCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsK
IAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwot
ICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNp
b25IYW5kbGUoS1VSTChLVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
IGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUoVVJMKFVSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAo
Y3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNh
bEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRl
eHRVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAtNzA2LDE1ICs3
MDYsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVSTCA9IEtVUkwo
S1VSTCgpLCBmaWxlVVJMU3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmls
ZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJMIHJlc291cmNl
RGlyZWN0b3J5VVJMOwogICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwo
KSkKLSAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
QVNDSUlMaXRlcmFsKCJmaWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwg
PSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwogICAgIGVs
c2UgewotICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJj
ZURpcmVjdG9yeVVSTFN0cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJM
KFVSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC03OTcsNyArNzk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9h
ZEZyb21PcmlnaW4pCiAgICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKICAg
ICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJk
IGxpc3Qgd2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3Nl
ciByZWxhdW5jaAotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxp
emVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFs
aXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgICAgIG1f
cHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsK
ICAgICB9CkBAIC05NTIsNyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1
Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0
b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJ
bmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5k
UGx1Z2luKG5ld01pbWVUeXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwo
KSAmJiBtX3BhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBA
IC0xNDI5LDcgKzE0MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBsdWdpbkxv
YWRQb2xpY3kgPSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpB
bGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRp
b25QbHVnaW5zID8gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRh
dGE6OkFsbFBsdWdpbnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VS
TChLVVJMKCksIHVybFN0cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAgUGx1Z2luTW9k
dWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCku
ZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1
Z2luVHlwZXMpOwogICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vz
c1Rva2VuID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFx
dWVQbHVnaW5VbmF2YWlsYWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2lu
SW5mb3JtYXRpb247CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5n
IG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1l
VHlwZSwgS1VSTChLVVJMKCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUlu
Zm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQ
bHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1
Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2lu
LCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0
cmlidXRlVVJMU3RyaW5nLCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAgLTMwMDcsNyAr
MzAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90
IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVtKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlh
bGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBt
X3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7
CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4OSwxNSArMzI4
OSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwg
bV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsK
KyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwg
bV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsK
ICAgICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVu
dUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3Mt
PmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51
SGl0VGVzdFJlc3VsdERhdGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRN
ZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhp
cywgS1VSTChLVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNv
bHV0ZU1lZGlhVVJMKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0
aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNv
bHV0ZU1lZGlhVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0
aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CkBA
IC00MTU3LDcgKzQxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBs
dWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWlt
ZVR5cGUgPSBtaW1lVHlwZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vz
cy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBL
VVJMKEtVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVn
aW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihu
ZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZv
cm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1l
VVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCBy
ZXBsYWNlbWVudE9ic2N1cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNmY2RmLi4zNzll
YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE0LDcg
KzEwMTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCgp
IHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRQZW5k
aW5nQVBJUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKSB7IG1f
cGVuZGluZ0FQSVJlcXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCi0gICAgYm9v
bCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRp
b25zUGFuZWxJc1Nob3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDNhZjNjLi5kNmI2NmE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2lu
Y2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSoKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxT
dHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0
aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQg
dXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vz
cy4KLSAgICBLVVJMIGJhc2VVUkwoS1VSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOworICAgIFVS
TCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwogICAgIAogICAgIC8vIENsaWVu
dCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2Fs
IGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2
ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgpAQCAtMjQwLDEwICsyNDAs
MTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhLVVJMKEtVUkwoKSwgdXJsU3RyaW5n
KSk7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJMKCks
IHVybFN0cmluZykpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZl
ZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpj
aGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IENvbnNpZGVyIGNoZWNraW5nIHRoYXQgdGhlIFVSTCBpcyB2YWxpZC4gQ3VycmVudGx5
LCBXZWJQcm9jZXNzIHNlbmRzIGludmFsaWQgVVJMcyBpbiBtYW55IGNhc2VzLCBidXQgaXQgcHJv
YmFibHkgZG9lc24ndCBoYXZlIGdvb2QgcmVhc29ucyB0byBkbyB0aGF0LgogCkBAIC0yNTYsNyAr
MjU2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJv
Y2Vzcyhjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYg
d2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyBy
ZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgotICAgIC8vIFRoZXJlIGFy
ZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQ
cm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBLVVJMLCB3aGljaCByZW1vdmVzIHRob3NlLgorICAgIC8v
IFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQg
ZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBVUkwsIHdoaWNoIHJlbW92ZXMgdGhvc2Uu
CiAgICAgU3RyaW5nIHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBmb3IgKEhhc2hT
ZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVk
UmVhZEFjY2Vzcy5iZWdpbigpOyBpdGVyICE9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFj
Y2Vzcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoKml0ZXIp
KQpAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2sv
Zm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ug
d2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBi
L2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVlbiByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2gg
b3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9yIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFw
OjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9
IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewot
ICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT51cmwoKSkuZmlsZVN5c3RlbVBh
dGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkp
LmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lz
dGVtUGF0aCgpID09IHBhdGgpCisgICAgICAgIGlmIChVUkwoVVJMKCksIGl0ZXItPnZhbHVlLT5v
cmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAppbmRleCAwNWQ4ODM5Li4xZjg0OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBQbHVnaW5JbmZvOwog
fTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nl
c3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRG
cm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRG
cm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMg
Ym9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCAwZWI1Yjc3Li43MzUwNzk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02MDAs
NyArNjAwLDcgQEAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpCiBib29sIFdlYkNvbnRleHQ6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSBjb25zdAogewogI2lm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gdXJsID0gS1VSTChLVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVD
RlVSTCgpOwogCiAgICAgcmV0dXJuIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lv
bih1cmwuZ2V0KCksIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBwcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkgOiBudWxscHRyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkNWY4Y2Y1Li45M2Zj
MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9C
bG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTM5LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJs
b2JEYXRhKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2Vi
UHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwg
QmxvYlJlZ2lzdHJhdGlvbkRhdGEoYmxvYkRhdGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lz
dHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNy
Y1VSTCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwp
LCAwKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgS1VSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNO
ZXR3b3JrUHJvY2VzcygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCA2M2QwZGE0Li5jMTUxYzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxv
YlJlZ2lzdHJ5UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQ
YXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
QmxvYlVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJM
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNV
UkwpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDAyNDk2
NGEuLjBlMDQwMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTU5LDcg
KzE1OSw3IEBAIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxv
d2luZ0xpbmsoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewot
ICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6
OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAgcmV0dXJu
IHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFt
ZUhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0y
MDQsMTIgKzIwNCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRD
b2xvcihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdL
QnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0
aFVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkp
KTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmls
ZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dU
RlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1J
TUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChm
cmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1l
Q29udGFpbnNBbnlGb3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2OTE1ZDkwLi45MTlmZmM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBX
S0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVu
ZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0
b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6
OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJl
ZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RG
U3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0
KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBj
OGMwNzdlLi4xOTI1ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDkyLDI2ICs0OTIs
MjYgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0YWJsZUFycmF5
KiBwYXR0ZXJucykKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdl
R3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRX
b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVB
cnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBL
VVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VS
TCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VS
TCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKEtVUkwoKSwgdXJsKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6
OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNv
IHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0
ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBh
Z2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNj
cmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRp
bWUsIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0
eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcm
IHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlz
dCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsK
LSAgICAvLyB1cmwgaXMgbm90IGZyb20gS1VSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBh
bHJlYWR5IGJlZW4gcGFyc2VkIGJ5IEtVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2
ZSBVUkwgY29uc3RydWN0b3IgZm9yIEtVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5n
VGFnIHZlcnNpb24uCi0gICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlm
aWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgp
LCBzb3VyY2UsIEtVUkwoS1VSTCgpLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0
b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CisgICAgLy8gdXJsIGlz
IG5vdCBmcm9tIFVSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFy
c2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3Rv
ciBmb3IgVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgorICAg
IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+YWRkVXNlclN0
eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJM
KCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3Zl
VXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gdXJs
IGlzIG5vdCBmcm9tIEtVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVu
IHBhcnNlZCBieSBLVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0
cnVjdG9yIGZvciBLVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9u
LgotICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVt
b3ZlVXNlclNjcmlwdEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoS1VS
TCgpLCB1cmwpKTsKKyAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBp
dCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0
aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2Vk
VVJMU3RyaW5nVGFnIHZlcnNpb24uCisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3Vw
LT5pZGVudGlmaWVyKCkpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewot
ICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFs
cmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZl
IFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdU
YWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29y
bGQoKSwgS1VSTChLVVJMKCksIHVybCkpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0
cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdl
IGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFk
IG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VH
cm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBh
Z2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCkBAIC01ODks
NyArNTg5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBjb24KIHsKICAgICBjb25zdCBIYXNoU2V0
PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9
IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCpp
dGVyKS0+c2V0dGluZ3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBs
b2NhdGlvbikpOworICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oVVJMKFVSTCgpLCBsb2NhdGlvbikpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMTdlMmU5Ni4uZWY5MmQ5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tV
UkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxZjgwYjIwLi4zYzk3MDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBA
IC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQg
Y2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0
IEtVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFn
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRh
dGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlm
ICghbV9jbGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZS4u
YzUzODY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5k
b3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
VVJMOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1
bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVy
c2lvbj4gewogcHVibGljOgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdp
bGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxM
b2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91bGRH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQ
SU9iamVjdD4mIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMTJh
ZTIzYi4uNDUxNjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTE4NSw3ICsx
ODUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21Db3JlTG9hZGVyKCk7
CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0
UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBVUkwmKQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmlnaW4gcmVkaXJlY3Rz
IGVudGlyZWx5IHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8gV2Ugb3ZlcnJpZGUg
dGhpcyBjYWxsIGluIHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1vcC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaAppbmRleCA1NWY2ZTMxLi43ZWUyYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFt
TG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVSTCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIE9W
RVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJD
b3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmNwcAppbmRleCAyMDU0ZGY5Li5jNGJhODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlcwogICAgICAgICBwbHVnaW5TdHJlYW0tPnNlbmRKYXZhU2NyaXB0
U3RyZWFtKHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZp
bGVOYW1lICovKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CkBAIC04MjMsNyArODIzLDcg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwg
Ym9vbCB3YXNDYW5jZWxsZWQpCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkRmFpbCh3YXNDYW5j
ZWxsZWQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmls
ZU5hbWUgKi8pCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKaW5kZXggNjUxZGM0ZC4uNGMxMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5
MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZh
aWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMGFlNDRjMy4uYjE5YzEyYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjp+TmV0c2NhcGVQbHVnaW5TdHJlYW0oKQogICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUg
PT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5T
dHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0
cmVhbSBjb3VsZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVw
IGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBw
cm90ZWN0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggZmZh
NTVjYi4uYjM1MDE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25z
dCB7IHJldHVybiBtX3N0cmVhbUlEOyB9CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkg
Y29uc3QgeyByZXR1cm4gJm1fbnBTdHJlYW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRl
eCBiMjliZWM2Li41NDExOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2
YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwo
dWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0
cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3LDcgKzI4Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNv
cmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAg
ICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURh
dGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KaW5kZXggN2MzNDU0Yi4uZmEzNjE3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkxNyw3
ICs5MTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAgICAg
Y3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURp
ZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYsIHVpbnQzMl90
LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJl
YW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lk
IFBERlBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5j
ZWxsZWQpCiAgICAgbV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIG1fc3VnZ2Vz
dGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXggMWQ5
ZTk3Yy4uZjdmMGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xMTMsMTEgKzExMywxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBy
ZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOwogICAg
IHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdmlydHVh
bCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAg
IFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJM
OwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0
YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggZDc5NGYwMi4uZDkzMGZi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFNpbXBsZVBERlBs
dWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogICAgIG1fZGF0YSA9IGNvbnZl
cnRQb3N0U2NyaXB0RGF0YVRvUERGKG1fZGF0YSk7CiB9CiAKLXZvaWQgU2ltcGxlUERGUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IEtVUkwm
LCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdp
bjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwm
LCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNF
RChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCkBAIC02NTAs
NyArNjUwLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46OnN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fZGF0YS5jbGVhcigpOwogfQogCi12
b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVk
RmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5j
cHAKaW5kZXggOTBlNWU3Ni4uZTg5ZjkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBQbHVnaW46OlBhcmFt
ZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhcmFtZXRl
cnMmIHAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybFN0cmluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAvLyBGSVhNRTogV2UgY2FuJ3QgYXNzdW1lIHRoYXQgdGhlIHVybCBwYXNz
ZWQgaW4gaGVyZSBpcyB2YWxpZC4KLSAgICBwYXJhbWV0ZXJzLnVybCA9IEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsU3RyaW5nKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5u
YW1lcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCBmOGRlNWE3Li5kOThkYTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3
Myw3IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRl
cnMgewotICAgICAgICBXZWJDb3JlOjpLVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVy
bDsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+
IHZhbHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IAorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxl
bmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8v
IFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2
Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWlu
dDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCBy
ZXNwb25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
IAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVy
LmgKaW5kZXggMjlkYWNiMy4uMTUxZDNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHR5
cGVkZWYgdm9pZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGE4ZGU4
YjIuLjhhOGYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRp
ZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdURjo6U3RyaW5n
JiByCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJlcXVlc3RJRCwgcmVzdWx0
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBLVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6c3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwg
c3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6U3RyZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2VsbGVkKSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZp
bGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUg
Ki8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBl
LCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIzOTUyMy4uMDY2N2Q0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgK
QEAgLTg4LDExICs4OCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZp
bmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVE
aWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNl
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNl
bGxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBX
VEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAg
ICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNo
TG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBkMzY4M2U3Li5kYWQxZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAg
c3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgc3RyZWFtIHJlbGF0ZWQgZGF0YSBmcm9tIHRoZSBy
ZXNvdXJjZSByZXNwb25zZS4KLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9IHJlc3BvbnNl
LnVybCgpOworICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAg
ICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICBsb25n
IGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVu
Z3RoKCk7CiAgICAgCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIH0KIAogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UuCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25z
ZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbG9u
ZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExl
bmd0aCgpOwogICAgIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgU3RyaW5nIFBsdWdpblZpZXc6OnVz
ZXJBZ2VudCgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlckFnZW50KEtVUkwoKSk7
CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51c2VyQWdlbnQoVVJMKCkpOwog
fQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCAKQEAgLTE0ODksMTggKzE0ODksMTggQEAgU3RyaW5nIFBsdWdpblZpZXc6OnByb3hpZXNG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgY29uc3QgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7CiAgICAgY29u
c3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVy
LT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5
U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29u
dGV4dCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZl
cnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKICAgICByZXR1cm4gdG9T
dHJpbmcocHJveHlTZXJ2ZXJzKTsKIH0KIAogU3RyaW5nIFBsdWdpblZpZXc6OmNvb2tpZXNGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoJm1fcGx1
Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgS1VSTChLVVJMKCksIHVybFN0cmluZykpOworICAgIHJl
dHVybiBjb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJs
U3RyaW5nKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Q29va2llc0ZvclVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgc2V0
Q29va2llcygmbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBLVVJMKEtVUkwoKSwgdXJsU3Ry
aW5nKSwgY29va2llU3RyaW5nKTsKKyAgICBzZXRDb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRv
Y3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKIH0KIAogYm9v
bCBQbHVnaW5WaWV3OjpnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBwcm90ZWN0aW9uU3BhY2UsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNmFiYmNkNi4uN2FiZDc5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcApAQCAtNTM0LDkgKzUzNCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRW1i
CiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5m
cmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygp
OwogICAgIFN0cmluZyBwYWdlVVJMU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcg
cGx1Z2luVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChw
bHVnaW5FbGVtZW50LT51cmwoKSkuc3RyaW5nKCk7Ci0gICAgS1VSTCBwbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTCA9IGVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpbkVsZW1lbnQtPmdldEF0dHJpYnV0ZShwbHVnaW5zcGFn
ZUF0dHIpKSk7CisgICAgVVJMIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gZWxlbWVudC0+ZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1
Z2luRWxlbWVudC0+Z2V0QXR0cmlidXRlKHBsdWdpbnNwYWdlQXR0cikpKTsKICAgICBpZiAoIXBs
dWdpbnNwYWdlQXR0cmlidXRlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAg
cGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkwgPSBLVVJMKCk7CisgICAgICAgIHBsdWdpbnNwYWdlQXR0
cmlidXRlVVJMID0gVVJMKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChwbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbiwgcGx1Z2luRWxlbWVudC0+c2VydmljZVR5cGUoKSwgcGx1Z2luVVJMU3RyaW5nLCBwbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJp
bmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBlZWM4MTY4
Li5lMTBiMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3Rl
ZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQor
dm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAg
ICAvLyBUaGlzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNl
YXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRv
cihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0
cmluZygpLCAwLCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAg
IH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYu
LmJkNDNlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVu
dSopIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRo
R29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1NwZWFraW5nKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1Li40MGJl
Y2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRXJyb3JzLmgKQEAgLTI3LDEwICsyNywxMCBAQAogI2RlZmluZSBXZWJFcnJvcnNfaAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBSZXNvdXJj
ZUVycm9yOwotICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOworY2xhc3MgVVJMOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDIsNyArNDIsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZQogV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpOwotV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOWI2MDkwZS4uNjI3MGFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWUod2ViUGFnZSwgbV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJs
ZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgS1VSTCYpCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsK
ICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFn
ZSkKQEAgLTExNTgsNyArMTE1OCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0
dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRs
ZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2Ug
fHwgIXdlYlBhZ2UtPnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0hpc3RvcnlDbGllbnQoKSkKQEAg
LTExNjksNyArMTE2OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMCiAgICAgICAgIHRpdGxl
LnN0cmluZygpLCB1cmwuc3RyaW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCi1T
dHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmlu
ZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC0x
MjU2LDcgKzEyNTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJl
c291cmNlTG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAgIG1fZnJhbWUtPmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwg
cmVzcG9uc2UpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8q
bWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KTsKQEAgLTEyODMsNyArMTI4Myw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0
dXJuIGNvcmVTdWJmcmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVt
ZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgQVNTRVJUKHBhcmFtTmFt
ZXMuc2l6ZSgpID09IHBhcmFtVmFsdWVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBh
Z2UoKSk7CkBAIC0xMzQ2LDkgKzEzNDYsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpy
ZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9wbHVn
aW5WaWV3ID0gc3RhdGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbldpZGdldCk7CiB9CiAKLVBh
c3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0
RWxlbWVudCwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYg
cGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQsIGNvbnN0IFVSTCYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCiB7Ci0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2lu
KHBsdWdpblNpemUsIGFwcGxldEVsZW1lbnQsIEtVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1
ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKKyAgICBSZWZQdHI8V2lk
Z2V0PiBwbHVnaW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgVVJM
KCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBhcHBsZXRFbGVtZW50LT5zZXJ2aWNlVHlwZSgp
LCBmYWxzZSk7CiAgICAgaWYgKCFwbHVnaW4pIHsKICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBmcmFtZVVSTFN0cmlu
ZyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNw
b25zZVVSTCgpLnN0cmluZygpOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgUGFzc1JlZlB0cjxXaWRn
ZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmIHAKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1Jl
ZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBs
YXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3Qg
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTEz
OTAsNyArMTM5MCw3IEBAIHN0YXRpYyBib29sIHBsdWdpblN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFBsdWdpbkRhdGEmIHBsdWdpbkRhdGEsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBz
aG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OmRlZmF1bHRPYmplY3RDb250ZW50VHlwZSB3aGVuIHRoZSBwbHVnaW4gY29kZQogICAgIC8v
IGlzIGNvbnNvbGlkYXRlZC4KQEAgLTE1NzUsNyArMTU3NSw3IEBAIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZl
cnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitib29sIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCA0MWNhNThiLi43MDIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0
ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0
YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
cGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25z
dCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBP
VkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwpAQCAtMTYxLDkgKzE2MSw5IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklE
RTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+
IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBP
VkVSUklERTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1l
KikgT1ZFUlJJREU7CkBAIC0xNzcsMjIgKzE3NywyMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
Ym9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAg
dmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNy
ZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdl
YkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZF
UlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVy
UHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXZWJDb3JlOjpX
aWRnZXQqKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RD
b250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVy
V29ybGQqKSBPVkVSUklERTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBPVkVSUklERTsK
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRleCA0NGQ1OWYyLi40NGMxODBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVn
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgpAQCAtMTI2LDcgKzEyNiw3IEBAIFZpc2l0
ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtT
dHJhdGVneSgpCiAKIC8vIENvb2tpZXNTdHJhdGVneQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAj
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBTdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbgogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKSB7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE4MCw3ICsxODAsNyBAQCBTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZQogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLAogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgUGFzc1JlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFBhZ2UKIAogLy8gVmlzaXRlZExpbmtTdHJhdGVneQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiwgTGlua0hhc2ggbGlua0hhc2gsIGNvbnN0
IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoIGxpbmtIYXNoLCBjb25zdCBVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pc0xp
bmtWaXNpdGVkKGxpbmtIYXNoKTsKIH0KQEAgLTQ0OCwxMiArNDQ4LDEyIEBAIENvbG9yIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAg
ICByZXR1cm4gY29sb3I7CiB9CiAKLUtVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVy
bChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7
CiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZE5h
bWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVz
c2FnZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVybFN0cmluZyksIDAp
OwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1
cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogbG9uZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAppbmRleCAzOTM0NjA2Li5jYjJmMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKQEAgLTU2LDEyICs1NiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpIE9WRVJS
SURFOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtOTAs
NyArOTAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9y
YWdlTmFtZXNwYWNlPiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlKikgT1ZF
UlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVh
bCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0
cmlidXRlVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCkgT1ZFUlJJREU7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpLVVJMIHVybChj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRU
eXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0Vm
bC5jcHAKaW5kZXggMzQ1ZDljMC4uODI2MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gV2ViQ29yZTo6
cGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihyZXNwb25zZSk7CiB9CiAKLVdlYkNvcmU6OlJlc291
cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7
CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCks
IGtXS0Vycm9ySW50ZXJuYWwsIHVybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBl
cnJvciIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGE4MmU3ZGUuLjFiNTI1
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
Z3RrL1dlYkVycm9yc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZXNvdXJj
ZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
cmVzcG9uc2UpOwogfQogCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFdlYkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwuc3Ry
aW5nKCksIF8oIkludGVybmFsIGVycm9yIikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCmlu
ZGV4IDcxZmE1ZTMuLjcxMzdhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0KQEAgLTg3LDcg
Kzg3LDcgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVy
cm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9h
ZCwgcmVzcG9uc2UudXJsKCksIFdFQl9VSV9TVFJJTkcoIlBsdWctaW4gaGFuZGxlZCBsb2FkIiwg
IldlYktpdEVycm9yUGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRpb24iKSk7CiB9CiAKLVJl
c291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBLVVJMJiB1cmwpCitSZXNvdXJjZUVycm9y
IGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50ZXJuYWwsIHVybCwg
V0VCX1VJX1NUUklORygiV2ViS2l0IGVuY291bnRlcmVkIGFuIGludGVybmFsIGVycm9yIiwgIldl
YktpdEVycm9ySW50ZXJuYWwgZGVzY3JpcHRpb24iKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3ODU3ZjhhLi44MDFlZGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTQ1MSw3ICs0NTEsNyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkg
Y29uc3QKICAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5w
ZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJGcmFtZTo6YWxsb3dz
Rm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpIGNvbnN0Citib29sIFdlYkZy
YW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAog
ewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjc5LDcg
KzY3OSw3IEBAIFN0cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdAogICAgIHJl
dHVybiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKS5zdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIFdlYkZyYW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBL
VVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVz
b3VyY2VXaXRoVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBTdHJpbmcg
V2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwm
IHVybCkgY29uc3QKICAgICByZXR1cm4gcGFnZSgpLT5jYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZv
clVSTCh1cmwpOwogfQogCi1TdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
VVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJGcmFtZTo6bWltZVR5cGVGb3JS
ZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCA3OWZhNWNiLi42ODc2MmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBv
aW50OwogY2xhc3MgSW50UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTE2LDExICsxMTYsMTEgQEAgcHVibGljOgogICAgIAogICAgIHVu
c2lnbmVkIHBlbmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dz
Rm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxv
d3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogCiAgICAgU3RyaW5n
IHByb3Zpc2lvbmFsVVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9y
UmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcg
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0Owor
ICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHREaXJlY3Rpb24o
Y29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA4OThkMDg0Li5hYTc4MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBX
ZWJQYWdlOjpzZW5kQ2xvc2UoKQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRVUkwoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgbG9hZFVSTFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCB1cmwpKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgZGVjb2Rlcik7CisgICAgbG9hZFVSTFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KFVS
TChVUkwoKSwgdXJsKSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGRlY29kZXIpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTkzMCw3ICs5MzAsNyBAQCB2
b2lkIFdlYlBhZ2U6OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgU2FuZGJveEV4dGVucwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVx
dWVzdCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbChQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nTmFtZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgS1VSTCYgdW5yZWFj
aGFibGVVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdl
Ojpsb2FkRGF0YUltcGwoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXIodGhpcyk7CiAKQEAgLTk1MywzNSArOTUzLDM1IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJ
bXBsKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYK
IHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBk
YXRhLnNpemUoKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkg
PyBibGFua1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRh
SW1wbChzaGFyZWRCdWZmZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIEtVUkwo
KSwgZGVjb2Rlcik7CisgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/
IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGxvYWREYXRhSW1w
bChzaGFyZWRCdWZmZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBk
ZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcm
IGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aHRtbFN0cmluZy5jaGFyYWN0ZXJzKCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFu
a1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChz
aGFyZWRCdWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgS1VSTCgpLCBkZWNv
ZGVyKTsKKyAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtV
UkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBsKHNoYXJl
ZEJ1ZmZlciwgInRleHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCBVUkwoKSwgZGVjb2Rlcik7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5n
JiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dW5yZWFjaGFibGVVUkxTdHJpbmcsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVy
cygpKSwgaHRtbFN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwotICAgIEtVUkwgYmFz
ZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgp
LCBiYXNlVVJMU3RyaW5nKTsKLSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVV
UkxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTCgpIDogS1VSTChLVVJMKCksIHVucmVhY2hhYmxlVVJM
U3RyaW5nKTsKKyAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxh
bmtVUkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgVVJMIHVucmVhY2hhYmxl
VVJMID0gdW5yZWFjaGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCks
IHVucmVhY2hhYmxlVVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAi
dGV4dC9odG1sIiwgInV0Zi0xNiIsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBkZWNvZGVyKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRleHQv
cGxhaW4iLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsKKyAgICBsb2Fk
RGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9wbGFpbiIsICJ1dGYtMTYiLCBibGFua1VSTCgp
LCBVUkwoKSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRh
KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRhLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPih3ZWJBcmNoaXZlRGF0YS5kYXRhKCkpLCB3ZWJBcmNoaXZlRGF0YS5zaXplKCkgKiBzaXpl
b2YodWludDhfdCkpOwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJhcHBsaWNhdGlv
bi94LXdlYmFyY2hpdmUiLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsK
KyAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZl
IiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIFVSTCgpLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2ViTW91c2VFdmVudCYg
ZXZlbnQpCkBAIC0yMzUzLDcgKzIzNTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwg
Y2FsbGJhY2tJRCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitz
dGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciog
bG9hZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2Fk
ZXIpCkBAIC0yMzY5LDcgKzIzNjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcgogdm9pZCBX
ZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiByZXNvdXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBD
b3JlSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgS1VSTCByZXNvdXJjZVVS
TChLVVJMKCksIHJlc291cmNlVVJMU3RyaW5nKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCks
IHJlc291cmNlVVJMU3RyaW5nKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsK
ICAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUo
ZnJhbWVJRCkpIHsKQEAgLTMzMDksNyArMzMwOSw3IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4
dGVuc2lvblRyYWNrZXI6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQog
ICAgIC8vIGJlY2F1c2UgaXQgZG9lcyBub3QgcGVydGFpbiB0byB0aGUgZmFpbGVkIGxvYWQsIGFu
ZCB3aWxsIGJlIG5lZWRlZC4KIH0KIAotYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwo
Y29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IDIzYWJjYTUuLmIwYjY3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtNDEzLDEwICs0MTMsMTAgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHRN
ZW51KiBjb250ZXh0TWVudUF0UG9pbnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIFN0cmluZyBjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JV
UkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIGJvb2wgaGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFN0
cmluZyBjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIFN0cmluZyBjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY2FjaGVkUmVzcG9u
c2VEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtNjg2
LDkgKzY4Niw5IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJh
bWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05h
bWUsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZh
aWxpbmdVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBsb2FkRGF0YUlt
cGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CiAKLSAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKKyAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwu
Y3BwCmluZGV4IDg0MjRjNmIuLmM5ZTRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTI2LDEzICsxMjYsMTMg
QEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3Qg
V2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2Vi
UGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNh
Y2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9v
bCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3Rl
ZEZpbGVuYW1lRm9yVVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dl
c3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQ
YWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDY2
ZmQzMmYuLjI3ODVhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgYm9vbCBXZWJQ
YWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFnZTo6cGxhdGZv
cm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNl
TUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9vbCBXZWJQYWdlOjpw
bGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9y
VVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRS
ZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAyNzIyZjdlLi5jZTFkOTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCkBAIC03MTcsNyArNzE3LDcgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dCogV2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG1fbW9j
a0FjY2Vzc2liaWxpdHlFbGVtZW50LmdldCgpOwogfQogICAgICAgICAgCi1ib29sIFdlYlBhZ2U6
OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2Jv
b2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCiB7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxl
VVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXTsKICAgICBbcmVxdWVzdCBzZXRWYWx1
ZTooTlNTdHJpbmcqKXVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQi
XTsKQEAgLTczMSw3ICs3MzEsNyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRh
Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKICAgICByZXR1cm4gY2FjaGVkUmVzcG9u
c2U7CiB9CiAKLXN0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVS
TChXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgTlNDYWNoZWRVUkxS
ZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXSk7CiAg
ICAgW3JlcXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+dXNlckFnZW50
KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwpAQCAtNzQyLDE3ICs3NDIsMTcg
QEAgc3RhdGljIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBh
Z2UqIHdlYlBhZ2UsIGNvbnN0IEtVUkwmIHUKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJl
ZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiB9CiAK
LVN0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFtbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywg
dXJsKSByZXNwb25zZV0gc3VnZ2VzdGVkRmlsZW5hbWVdOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2Vi
UGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gW1tjYWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIHJlc3BvbnNlXSBNSU1F
VHlwZV07CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNw
b25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtjYWNoZWRSZXNwb25zZUZvclVSTCh0
aGlzLCB1cmwpIGRhdGFdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKaW5kZXggOGZlYjEzNi4uNmVlOGExZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKQEAg
LTI2OCwxMyArMjY4LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZv
cktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
S1VSTCYpCitib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVS
TCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IEtVUkwmKQor
U3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI4Niwx
MyArMjg2LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJQYWdl
OjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJQ
YWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtVUkwm
KQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZv
clVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRl
eCA4MGRiNDMxLi5iODcwNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NNYWMubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVw
ZGF0ZUFjdGl2ZVBhZ2VzKCkKICAgICAgICAgaWYgKCFtYWluRnJhbWVPcmlnaW4tPmlzVW5pcXVl
KCkpCiAgICAgICAgICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4t
PnRvUmF3U3RyaW5nKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1haW5GcmFtZU9yaWdp
blN0cmluZyA9IEtVUkwoS1VSTCgpLCBtYWluRnJhbWUtPnVybCgpKS5wcm90b2NvbCgpICsgJzon
OyAvLyB0b1Jhd1N0cmluZygpIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggdW5pcXVlIG9y
aWdpbnMsIGFuZCB3b3VsZCBqdXN0IHJldHVybiAiOi8vIi4KKyAgICAgICAgICAgIG1haW5GcmFt
ZU9yaWdpblN0cmluZyA9IFVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSkucHJvdG9jb2woKSAr
ICc6JzsgLy8gdG9SYXdTdHJpbmcoKSBpcyBub3Qgc3VwcG9zZWQgdG8gd29yayB3aXRoIHVuaXF1
ZSBvcmlnaW5zLCBhbmQgd291bGQganVzdCByZXR1cm4gIjovLyIuCiAKICAgICAgICAgTlNVUkwg
Km9yaWdpbkFzTlNVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzptYWluRnJhbWVPcmlnaW5TdHJp
bmddOwogICAgICAgICAvLyArW05TVVJMIFVSTFdpdGhTdHJpbmc6XSByZXR1cm5zIG5pbCB3aGVu
IGl0cyBhcmd1bWVudCBpcyBtYWxmb3JtZWQuIEl0J3MgdW5jbGVhciBob3cgd2UgY2FuIHBvc3Np
Ymx5IGhhdmUgYSBtYWxmb3JtZWQgVVJMIGhlcmUsCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmYxNmNhNy4uYWU4N2ViYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisy
MDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5h
bWUgS1VSTCB0byBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAg
ICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNyAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgZ2Vu
ZXJhbCBDTWFrZUxpc3RzLnR4dCBmb3IgRFJUCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDA0YTIxNWUu
LjYwODQ5ZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVz
dFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVB
c1RleHQuaCIKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChK
U1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKICAgICBPd25BcnJheVB0cjxjaGFy
PiB1cmxBcnIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3VybEFyclNpemVdKTsKICAgICBKU1N0
cmluZ0dldFVURjhDU3RyaW5nKHVybCwgdXJsQXJyLmdldCgpLCB1cmxBcnJTaXplKTsKIAotICAg
IFdlYkNvcmU6OktVUkwgYmFzZSA9IG1haW5GcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkudXJsKCk7Ci0gICAgV2ViQ29yZTo6S1VSTCBhYnNvbHV0ZShiYXNlLCB1
cmxBcnIuZ2V0KCkpOworICAgIFdlYkNvcmU6OlVSTCBiYXNlID0gbWFpbkZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKTsKKyAgICBXZWJDb3JlOjpVUkwg
YWJzb2x1dGUoYmFzZSwgdXJsQXJyLmdldCgpKTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBhYnNvbHV0ZVVSTChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYWJz
b2x1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIFdvcmtRdWV1ZTo6c2hhcmVkKCkt
PnF1ZXVlKG5ldyBMb2FkSXRlbShhYnNvbHV0ZVVSTC5nZXQoKSwgdGFyZ2V0KSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0Jl
cnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJs
YWNrQmVycnkuY3BwCmluZGV4IDgyN2I1ZWIuLjViNDFkN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJsYWNrQmVycnkuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRlbUJsYWNrQmVycnku
Y3BwCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVCbGFja0JlcnJ5
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIApAQCAtNDYsNyArNDYsNyBAQCBib29sIExv
YWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCB1cmwuZ2V0KCkpOworICAgIFVS
TCBrdXJsID0gVVJMKFVSTCgpLCB1cmwuZ2V0KCkpOwogICAgIGZyYW1lLT5sb2FkZXIoKS0+bG9h
ZChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCBSZXNvdXJjZVJlcXVlc3Qoa3VybCkpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRl
clRyZWVDaHJvbWUuY3BwCmluZGV4IGQyMjU1OTQuLjVmOGI0ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgIkVkaXRpbmdDYWxsYmFja3MuaCIKICNpbmNsdWRlICJFdmVudFNlbmRl
ci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRlc3RS
dW5uZXIuaCIKICNpbmNsdWRlICJUZXh0SW5wdXRDb250cm9sbGVyLmgiCkBAIC0zMzcsMTQgKzMz
NywxNCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0
ZW50VmFsdWVzKCkKIAogc3RhdGljIFN0cmluZyBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmlTdHJpbmcpOworICAgIFVSTCB1cmkgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlT
dHJpbmcpOwogICAgIGlmICh1cmkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIihudWxsKSI7
CiAKICAgICBpZiAoIXVyaS5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gdXJpLnN0cmlu
ZygpOwogCi0gICAgS1VSTCBtYWluRnJhbWVVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZXdr
X2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpKTsKKyAgICBVUkwgbWFpbkZyYW1l
VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFp
bkZyYW1lKCkpKTsKICAgICBpZiAobWFpbkZyYW1lVVJMLmlzRW1wdHkoKSkKICAgICAgICAgbWFp
bkZyYW1lVVJMID0gRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92aXNpb25hbFVSTChicm93
c2VyLT5tYWluRnJhbWUoKSk7CiAKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIER1bXBSZW5kZXJU
cmVlQ2hyb21lOjpvbldpbGxTZW5kUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBLVVJMKFBh
cnNlZFVSTFN0cmluZywgbWVzc2FnZXMtPnJlcXVlc3QtPnVybCk7CisgICAgVVJMIHVybCA9IFVS
TChQYXJzZWRVUkxTdHJpbmcsIG1lc3NhZ2VzLT5yZXF1ZXN0LT51cmwpOwogCiAgICAgaWYgKHVy
bC5pc1ZhbGlkKCkKICAgICAgICAgJiYgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKQpAQCAt
ODAwLDcgKzgwMCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNl
aXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluCiAKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkpIHsKICAgICAg
ICAgcHJpbnRmKCIlcyBoYXMgTUlNRSB0eXBlICVzXG4iLAotICAgICAgICAgICAgICAgS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlLT51cmwpLmxhc3RQYXRoQ29tcG9uZW50KCkudXRmOCgp
LmRhdGEoKSwKKyAgICAgICAgICAgICAgIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlLT51
cmwpLmxhc3RQYXRoQ29tcG9uZW50KCkudXRmOCgpLmRhdGEoKSwKICAgICAgICAgICAgICAgIHJl
c3BvbnNlLT5taW1lX3R5cGUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9U
ZXN0UnVubmVyRWZsLmNwcAppbmRleCA5ZjY2ZTk1Li4wNzQ2ZTUyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1N0cmluZ1JlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8S1VSTC5oPgorI2luY2x1ZGUgPFVSTC5oPgogI2luY2x1ZGUgPGVkaXRp
bmcvRmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMTU3LDggKzE1Nyw4IEBAIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6
OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHVy
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdS
ZWYgdGFyZ2V0KQogewotICAgIFdlYkNvcmU6OktVUkwgYmFzZVVSTChXZWJDb3JlOjpLVVJMKCks
IFN0cmluZzo6ZnJvbVVURjgoZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkp
KSk7Ci0gICAgV2ViQ29yZTo6S1VSTCBhYnNvbHV0ZVVSTChiYXNlVVJMLCB1cmwtPnN0cmluZygp
KTsKKyAgICBXZWJDb3JlOjpVUkwgYmFzZVVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOChld2tfZnJhbWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpKTsKKyAgICBXZWJD
b3JlOjpVUkwgYWJzb2x1dGVVUkwoYmFzZVVSTCwgdXJsLT5zdHJpbmcoKSk7CiAKICAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4ganNBYnNvbHV0ZVVSTCgKICAgICAgICAgQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGFic29sdXRlVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNjcm9sbGJhclBv
bGljeShKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmlu
Z1JlZiBwcm90b2NvbCwgSlNTdHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlU3ViZG9tYWlucykK
IHsKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmw7CisgICAgV2ViQ29yZTo6VVJMIGt1cmw7CiAgICAg
a3VybC5zZXRQcm90b2NvbChTdHJpbmcocHJvdG9jb2wtPmNoYXJhY3RlcnMoKSwgcHJvdG9jb2wt
Pmxlbmd0aCgpKSk7CiAgICAga3VybC5zZXRIb3N0KFN0cmluZyhob3N0LT5jaGFyYWN0ZXJzKCks
IGhvc3QtPmxlbmd0aCgpKSk7CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwg
SlNTdHJpbgogCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgcHJvdG9jb2wsIEpTU3Ry
aW5nUmVmIGhvc3QsIGJvb2wgaW5jbHVkZVN1YmRvbWFpbnMpCiB7Ci0gICAgV2ViQ29yZTo6S1VS
TCBrdXJsOworICAgIFdlYkNvcmU6OlVSTCBrdXJsOwogICAgIGt1cmwuc2V0UHJvdG9jb2woU3Ry
aW5nKHByb3RvY29sLT5jaGFyYWN0ZXJzKCksIHByb3RvY29sLT5sZW5ndGgoKSkpOwogICAgIGt1
cmwuc2V0SG9zdChTdHJpbmcoaG9zdC0+Y2hhcmFjdGVycygpLCBob3N0LT5sZW5ndGgoKSkpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lIGIvVG9vbHMvU2Ny
aXB0cy9kby13ZWJjb3JlLXJlbmFtZQppbmRleCA2YmRmZGRlLi5hYjU1MjJmIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8t
d2ViY29yZS1yZW5hbWUKQEAgLTc0LDYgKzc0LDcgQEAgZmluZChcJndhbnRlZCwgIlNvdXJjZS9X
ZWJDb3JlIik7CiBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYktpdCIpOwogZmluZChcJndhbnRl
ZCwgIlNvdXJjZS9XZWJLaXQyIik7CiBmaW5kKFwmd2FudGVkLCAiVG9vbHMvRHVtcFJlbmRlclRy
ZWUiKTsKK2ZpbmQoXCZ3YW50ZWQsICJUb29scy9UZXN0V2ViS2l0QVBJIik7CiAKIHN1YiB3YW50
ZWQKIHsKQEAgLTkzLDExICs5NCwxNSBAQCBzdWIgd2FudGVkCiAKICMgU2V0dGluZyBpc0RPTVR5
cGVSZW5hbWUgdG8gMSByYXRoZXIgdGhhbiAwIGV4cGFuZHMgdGhlIHJlZ2V4cHMgdXNlZAogIyBi
ZWxvdyB0byBoYW5kbGUgY3VzdG9tIEphdmFTY3JpcHQgYmluZGluZ3MuCi1teSAkaXNET01UeXBl
UmVuYW1lID0gMTsKK215ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAg
ICAgIyBSZW5hbWVzIGdvIGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0gICAgImlzVHJhbnNmb3JtSW52
ZXJ0aWJsZSIgPT4gImhhc0ludmVydGlibGVUcmFuc2Zvcm0iLAotICAgICJtX2ludmVydGlibGVD
VE0iID0+ICJtX2hhc0ludmVydGlibGVUcmFuc2Zvcm0iLAorICAgICJXS1VSTCIgPT4gIldLVVJM
IiwKKyAgICAiS1VSTCIgPT4gIlVSTCIsCisgICAgIktVUkxDRk5ldCIgPT4gIlVSTENGIiwKKyAg
ICAiS1VSTEhhc2giID0+ICJVUkxIYXNoIiwKKyAgICAiS1VSTE1hYyIgPT4gIlVSTE1hYyIsCisg
ICAgIktVUkxfaCIgPT4gIlVSTF9oIiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9y
VGhlRnV0dXJlID0gKApAQCAtMTA4LDEyICsxMTMsNiBAQCBteSAlcmVuYW1lc0NvbnRlbXBsYXRl
ZEZvclRoZUZ1dHVyZSA9ICgKICAgICAiRGF0ZUluc3RhbmNlIiA9PiAiSlNEYXRlIiwKICAgICAi
RXJyb3JJbnN0YW5jZSIgPT4gIkpTRXJyb3IiLAogCi0gICAgIktVUkwiID0+ICJVUkwiLAotICAg
ICJLVVJMQ0ZOZXQiID0+ICJVUkxDRiIsCi0gICAgIktVUkxIYXNoIiA9PiAiVVJMSGFzaCIsCi0g
ICAgIktVUkxNYWMiID0+ICJVUkxNYWMiLAotICAgICJLVVJMX2giID0+ICJVUkxfaCIsCi0KICAg
ICAiVHJlZVNoYXJlZCIgPT4gIlRyZWVSZWZDb3VudGVkIiwKIAogICAgICJTdHJpbmdJbXBsIiA9
PiAiU2hhcmVkU3RyaW5nIiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFr
ZWZpbGUuYW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNmYjJk
NmVhLi5mMDMzYTc0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTE2Niw3ICsx
NjYsNyBAQCBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJDb3JlX0xERkxBR1MgPSBcCiAJ
LW5vLWZhc3QtaW5zdGFsbAogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJDb3JlX1NP
VVJDRVMgPSBcCi0JVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0tVUkwuY3BwIFwK
KwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcCBcCiAJVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0xheW91dFVuaXQuY3BwCiAKIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfVGVzdEd0a19DUFBGTEFHUyA9IFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IGUyZTU2ZmEuLjY1YTM3N2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUVmbC5jbWFrZQpAQCAtNDksNyArNDksNyBAQCBzZXQod2Via2l0Ml9hcGlfaGFybmVzc19TT1VS
Q0VTCiAKIHNldCh0ZXN0X3dlYmNvcmVfQklOQVJJRVMKICAgICBMYXlvdXRVbml0Ci0gICAgS1VS
TAorICAgIFVSTAogKQogCiAjIEluIGhlcmUgd2UgbGlzdCB0aGUgYnVuZGxlcyB0aGF0IGFyZSB1
c2VkIGJ5IG91ciBzcGVjaWZpYyBXSzIgQVBJIFRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCAwYTBiMjZjLi5iM2Q4MWM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTY0LDcgKzY0LDcgQEAgbGlzdChBUFBFTkQgdGVzdF93ZWJjb3Jl
X0xJQlJBUklFUwogCiBzZXQodGVzdF93ZWJjb3JlX0JJTkFSSUVTCiAgICAgTGF5b3V0VW5pdAot
ICAgIEtVUkwKKyAgICBVUkwKICkKIAogc2V0KHRlc3Rfd2Via2l0Ml9hcGlfQklOQVJJRVMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTg0MGNiZS4uNmQ3OWM5MSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc1LDcgKzc1LDcgQEAKIAkJMzdFMTA2NEMxNjk3NjgxODAwQjc4QkQwIC8q
IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdFMTA2NEIxNjk3NjdGNzAwQjc4
QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgKi87IH07CiAJCTM3
RTEwNjREMTY5NzZDODUwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdFMTA2NEExNjk3
Njc2NDAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gKi87IH07CiAJCTM3
RTM4QzM0MTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFy
Y2h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdF
MzhDMzMxNjlCN0QwMTAwODRDMjhDIC8qIFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkubW0gKi87IH07Ci0JCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MEExRDM4MTRBMDEw
M0EwMDhBNjZGMiAvKiBLVVJMLmNwcCAqLzsgfTsKKwkJNDQwQTFEMzkxNEEwMTAzQTAwOEE2NkYy
IC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLzsgfTsKIAkJNEJCNDE2MDIx
NjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJCNDE2MDExNjgxNUIyNjAw
ODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tICovOyB9OwogCQk0QkI0MTYw
NDE2ODE1RjkxMDA4MjQyMzggLyogRWxlbWVudEF0UG9pbnRJbldlYkZyYW1lLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJCNDE2MDMxNjgxNUY5MTAw
ODI0MjM4IC8qIEVsZW1lbnRBdFBvaW50SW5XZWJGcmFtZS5tbSAqLzsgfTsKIAkJNEJGREZGQTcx
MzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3
NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsK
QEAgLTM4MCw3ICszODAsNyBAQAogCQkzN0UxMDY0QTE2OTc2NzY0MDBCNzhCRDAgLyogRE9NSFRN
TFRhYmxlQ2VsbENlbGxBYm92ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxl
bWVudENlbGxBYm92ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRE9NSFRNTFRh
YmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzdFMzhDMzMxNjlCN0QwMTAwODRDMjhDIC8qIFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NEE2MjJDMTE0QTBFMkI2MDA0ODUxNUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlN0cmluZ1V0aWxpdGllcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkI0MTYwMTE2ODE1QjI2MDA4MjQyMzggLyog
SlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEJCNDE2MDMxNjgxNUY5MTAwODI0MjM4IC8qIEVsZW1lbnRBdFBv
aW50SW5XZWJGcmFtZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEVsZW1lbnRBdFBvaW50SW5XZWJGcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY0Niw3ICs2NDYsNyBAQAogCQk0NDBBMUQzNjE0QTAxMDAwMDA4QTY2RjIgLyogV2ViQ29y
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNDQwQTFE
MzgxNEEwMTAzQTAwOEE2NkYyIC8qIEtVUkwuY3BwICovLAorCQkJCTQ0MEExRDM4MTRBMDEwM0Ew
MDhBNjZGMiAvKiBVUkwuY3BwICovLAogCQkJCTE0NDY0MDEyMTY3QTgzMDUwMDBCRDIxOCAvKiBM
YXlvdXRVbml0LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gV2ViQ29yZTsKQEAgLTExNDIsNyAr
MTE0Miw3IEBACiAJCQkJQzBBREJFN0MxMkZDQTREMDAwRDJDMTI5IC8qIEphdmFTY3JpcHRUZXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwODEyMjQyMTNGQzE3MjQwMERDMzlBRSAvKiBKYXZh
U2NyaXB0VGVzdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCQjQxNjAyMTY4MTVCMjYwMDgy
NDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovLAotCQkJ
CTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQ0NjQwMTMxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ2NDBCNTUxNzg3NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjYzMDBCMTgxNjc1NUNEOTAwNjY4ODZEIC8qIExpc3RI
YXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0tVUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0tVUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWFkZTU1Li4wMDAw
MDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9LVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgS1VSTFRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIFNl
dFVwKCkKLSAgICB7Ci0gICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICB9
Ci19OwotCi1URVNUX0YoS1VSTFRlc3QsIEtVUkxDb25zdHJ1Y3RvckRlZmF1bHQpCi17Ci0gICAg
S1VSTCBrdXJsOwotCi0gICAgRVhQRUNUX1RSVUUoa3VybC5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9UUlVFKGt1cmwuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzVmFsaWQoKSk7
Ci19Ci0KLVRFU1RfRihLVVJMVGVzdCwgS1VSTENvbnN0cnVjdG9yQ29uc3RDaGFyKQotewotICAg
IEtVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vdXNlcm5hbWU6cGFzc3dvcmRAd3d3
LmV4YW1wbGUuY29tOjgwODAvaW5kZXguaHRtbD92YXI9dmFsI2ZyYWdtZW50Iik7Ci0KLSAgICBF
WFBFQ1RfRkFMU0Uoa3VybC5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzTnVs
bCgpKTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmlzVmFsaWQoKSk7Ci0KLSAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJodHRwIiksIGt1cmwucHJvdG9jb2woKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygi
d3d3LmV4YW1wbGUuY29tIiksIGt1cmwuaG9zdCgpKTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmhh
c1BvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgpKTsKLSAgICBFWFBFQ1Rf
RVEoU3RyaW5nKCJ1c2VybmFtZSIpLCBrdXJsLnVzZXIoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmlu
ZygicGFzc3dvcmQiKSwga3VybC5wYXNzKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoIi9pbmRl
eC5odG1sIiksIGt1cmwucGF0aCgpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJpbmRleC5odG1s
IiksIGt1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygidmFy
PXZhbCIpLCBrdXJsLnF1ZXJ5KCkpOwotICAgIEVYUEVDVF9UUlVFKGt1cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoImZyYWdtZW50IiksIGt1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkpOwotfQotCi1URVNUX0YoS1VSTFRlc3QsIEtVUkxEYXRhVVJJU3Ry
aW5nU2hhcmluZykKLXsKLSAgICBLVVJMIGJhc2VVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDov
L3d3dy53ZWJraXQub3JnLyIpOwotICAgIFN0cmluZyB0aHJlZUFwcGxlcyA9ICJkYXRhOnRleHQv
cGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzZPLzc2Ty83Nk8vIjsKLQotICAgIEtVUkwgdXJs
KGJhc2VVUkwsIHRocmVlQXBwbGVzKTsKLSAgICBFWFBFQ1RfRVEodGhyZWVBcHBsZXMuaW1wbCgp
LCB1cmwuc3RyaW5nKCkuaW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212808</attachid>
            <date>2013-09-27 07:40:48 -0700</date>
            <delta_ts>2013-09-27 07:55:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>darin-16214-2.diff</filename>
            <type>text/plain</type>
            <size>1442814</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMTE2MzAyMC4uNTRlYzRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTE4MTYsNyArMTgxNiw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9GaWxlU3RyZWFtLmNwcAogICAgIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCiAgICAgcGxh
dGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAKLSAgICBwbGF0Zm9ybS9LVVJMLmNwcAorICAgIHBs
YXRmb3JtL1VSTC5jcHAKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwCiAgICAgcGxhdGZv
cm0vTGFuZ3VhZ2UuY3BwCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVj
NTg5ZWMuLjI2ZjFlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8g
VVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55
IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjcgIEd5dXlvdW5nIEtp
bSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBBZGQgdG9XZWJLaXRDU1Mq
VmFsdWUgZnVuY3Rpb25zIHRvIGNhc3QgZnJvbSBDU1NWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KaW5kZXggZjFmZjgzZi4uMGZhYmI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCkBAIC02MDU3LDkgKzYwNTcsOSBAQCBwbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9IaXN0b2dyYW1TdXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ib3N0V2luZG93LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIFwKLQlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0tVUkxIYXNoLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxI
YXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xhbmd1YWdlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggZGQ4ODFmNy4uMmZjMWY4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcApA
QCAtNTUsNyArNTUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBzdGF0aWMKLVBhc3NS
ZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5j
RmlsZVN5c3RlbSkKK1Bhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewogICAgIFJlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpKTsKICAgICBmaWxlU3lzdGVtLT5zdXNwZW5k
SWZOZWVkZWQoKTsKQEAgLTgzLDEwICs4MywxMCBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IERPTUZpbGVTeXN0ZW06OmNyZWF0ZUlzb2xhdGVkRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpbwog
ICAgIHJvb3RVUkwuYXBwZW5kKGZpbGVzeXN0ZW1JZCk7CiAgICAgcm9vdFVSTC5hcHBlbmQoIi8i
KTsKIAotICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3Rl
bU5hbWUudG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwor
ICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZXN5c3RlbU5hbWUu
dG9TdHJpbmcoKSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgVVJMKFBhcnNlZFVSTFN0cmluZywg
cm9vdFVSTC50b1N0cmluZygpKSwgQXN5bmNGaWxlU3lzdGVtOjpjcmVhdGUoKSk7CiB9CiAKLURP
TUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorRE9N
RmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9v
dFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAgICA6
IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmls
ZVN5c3RlbSkKICAgICAsIEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogewpAQCAtMTUwLDcgKzE1
MCw3IEBAIG5hbWVzcGFjZSB7CiAKIGNsYXNzIFNuYXBzaG90RmlsZUNhbGxiYWNrIDogcHVibGlj
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTbmFwc2hvdEZpbGVDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQ
dHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFj
az4gZXJyb3JDYWxsYmFjaykKKyAgICBzdGF0aWMgUGFzc093blB0cjxTbmFwc2hvdEZpbGVDYWxs
YmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTbmFwc2hvdEZpbGVDYWxsYmFjayhm
aWxlc3lzdGVtLCBuYW1lLCB1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwog
ICAgIH0KQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFNuYXBzaG90RmlsZUNhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCisgICAgU25hcHNob3RGaWxlQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lz
dGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUsICBjb25zdCBVUkwmIHVybCwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCiAgICAg
ICAgICwgbV9uYW1lKG5hbWUpCkBAIC0xOTUsNyArMTk1LDcgQEAgcHJpdmF0ZToKIAogICAgIFJl
ZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBwcml2YXRlOgogCiB2
b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnks
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwgPSBj
cmVhdGVGaWxlU3lzdGVtVVJMKGZpbGVFbnRyeSk7CiAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMLCBTbmFwc2hvdEZp
bGVDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJM
LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKaW5kZXggYWU4MTEzZi4u
NzlhZmM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbS5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEZpbGVXcml0ZXJDYWxsYmFjazsK
IAogY2xhc3MgRE9NRmlsZVN5c3RlbSA6IHB1YmxpYyBET01GaWxlU3lzdGVtQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVt
VHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwog
CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyBpc29sYXRlZCBmaWxlIHN5c3RlbSBmb3IgdGhlIGdpdmVu
IGZpbGVzeXN0ZW1JZC4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVh
dGVJc29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgZmlsZXN5c3RlbUlkKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIEFjdGl2ZURP
TU9iamVjdCBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcAppbmRleCA3ZWZhYWNlLi5mNmE1MjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgY29uc3Qgc2l6ZV90IERPTUZpbGVTeXN0ZW1CYXNlOjp0ZW1wb3JhcnlQYXRoUHJl
Zml4TGVuZ3RoID0gc2l6ZW9mKERPTUZpbGVTeXN0ZW0KIGNvbnN0IGNoYXIgRE9NRmlsZVN5c3Rl
bUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeFtdID0gImlzb2xhdGVkIjsKIGNvbnN0IHNpemVfdCBE
T01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4TGVuZ3RoID0gc2l6ZW9mKERPTUZp
bGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXgpIC0gMTsKIAotRE9NRmlsZVN5c3RlbUJh
c2U6OkRPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RPTUZpbGVT
eXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAg
ICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3R5cGUo
dHlwZSkKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6aXNWYWxpZFR5
cGUoRmlsZVN5c3RlbVR5cGUgdHlwZSkKIH0KIAogLy8gc3RhdGljCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlw
ZSYgdHlwZSwgU3RyaW5nJiBmaWxlUGF0aCkKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmNyYWNr
RmlsZVN5c3RlbVVSTChjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJcygiZmlsZXN5c3RlbSIpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDUsMTAgKzEwNSwxMCBAQCBib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjpzdXBwb3J0c1RvVVJMKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
S1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IGZ1bGxQYXRoKSBjb25zdAorVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVt
VVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQ
YXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7Ci0gICAgS1VSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1S
b290VVJMOworICAgIFVSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1Sb290VVJMOwogICAgIC8vIFJlbW92
ZSB0aGUgZXh0cmEgbGVhZGluZyBzbGFzaC4KICAgICB1cmwuc2V0UGF0aCh1cmwucGF0aCgpICsg
ZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhmdWxsUGF0aC5zdWJzdHJpbmcoMSkpKTsKICAg
ICByZXR1cm4gdXJsOwpAQCAtMTIwLDcgKzEyMCw3IEBAIFNlY3VyaXR5T3JpZ2luKiBET01GaWxl
U3lzdGVtQmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLUtVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKK1VSTCBET01GaWxlU3lz
dGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqIGVudHJ5KSBjb25z
dAogewogICAgIHJldHVybiBjcmVhdGVGaWxlU3lzdGVtVVJMKGVudHJ5LT5mdWxsUGF0aCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVT
eXN0ZW1CYXNlLmgKaW5kZXggM2I0MjQ2YS4uMjg3MjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmgKQEAgLTM2LDcg
KzM2LDcgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtRmxhZ3MuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciBpc29sYXRlZFBh
dGhQcmVmaXhbXTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGlzb2xhdGVkUGF0aFByZWZpeExl
bmd0aDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxl
U3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1CYXNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5
cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkpOwogICAgIH0KQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1l
OyB9CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQot
ICAgIEtVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
KyAgICBVUkwgcm9vdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZXN5c3RlbVJvb3RVUkw7IH0K
ICAgICBBc3luY0ZpbGVTeXN0ZW0qIGFzeW5jRmlsZVN5c3RlbSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmNGaWxlU3lzdGVtLmdldCgpOyB9CiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKCkgY29uc3Q7CiAKQEAgLTg1LDEwICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjbG9u
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xvbmFibGU7IH0KIAogICAgIHN0YXRpYyBib29sIGlz
VmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBjcmFja0ZpbGVTeXN0
ZW1VUkwoY29uc3QgS1VSTCYsIEZpbGVTeXN0ZW1UeXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7Cisg
ICAgc3RhdGljIGJvb2wgY3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IFVSTCYsIEZpbGVTeXN0ZW1U
eXBlJiwgU3RyaW5nJiBmaWxlUGF0aCk7CiAgICAgYm9vbCBzdXBwb3J0c1RvVVJMKCkgY29uc3Q7
Ci0gICAgS1VSTCBjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFzZSopIGNvbnN0Owot
ICAgIEtVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKKyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsK
KyAgICBVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25z
dDsKIAogICAgIC8vIEFjdHVhbCBGaWxlU3lzdGVtIEFQSSBpbXBsZW1lbnRhdGlvbnMuIEFsbCB0
aGUgdmFsaWRpdHkgY2hlY2tzIG9uIHZpcnR1YWwgcGF0aHMgYXJlIGRvbmUgYXQgdGhpcyBsZXZl
bC4KICAgICAvLyBUaGV5IHJldHVybiBmYWxzZSBmb3IgaW1tZWRpYXRlIGVycm9ycyB0aGF0IGRv
bid0IGludm9sdmUgbG93ZXIgQXN5bmNGaWxlU3lzdGVtIGxheWVyIChlLmcuIGZvciBuYW1lIHZh
bGlkYXRpb24gZXJyb3JzKS4gT3RoZXJ3aXNlIHRoZXkgcmV0dXJuIHRydWUgKGJ1dCBsYXRlciBt
YXkgY2FsbCBiYWNrIHdpdGggYW4gcnVudGltZSBlcnJvcikuCkBAIC0xMDMsMTMgKzEwMywxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCByZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyQmFzZT4sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+KTsKIAogcHJvdGVjdGVkOgotICAgIERPTUZpbGVT
eXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZp
bGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1CYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CiAgICAgZnJpZW5kIGNsYXNzIERPTUZpbGVTeXN0
ZW1TeW5jOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogICAgIFN0
cmluZyBtX25hbWU7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwotICAgIEtVUkwgbV9maWxl
c3lzdGVtUm9vdFVSTDsKKyAgICBVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKICAgICBib29sIG1f
Y2xvbmFibGU7CiAKICAgICBtdXRhYmxlIE93blB0cjxBc3luY0ZpbGVTeXN0ZW0+IG1fYXN5bmNG
aWxlU3lzdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXggMGM2ZWFlOS4uZGQ4NjAyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IERP
TUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGUoRE9NRmlsZVN5c3RlbUJhc2UqIGZpbGVTCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhmaWxlU3lzdGVtLT5tX2NvbnRleHQs
IGZpbGVTeXN0ZW0tPm5hbWUoKSwgZmlsZVN5c3RlbS0+dHlwZSgpLCBmaWxlU3lzdGVtLT5yb290
VVJMKCksIGZpbGVTeXN0ZW0tPm1fYXN5bmNGaWxlU3lzdGVtLnJlbGVhc2UoKSkpOwogfQogCi1E
T01GaWxlU3lzdGVtU3luYzo6RE9NRmlsZVN5c3RlbVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25z
dCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQorRE9NRmlsZVN5c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNG
aWxlU3lzdGVtKQogICAgIDogRE9NRmlsZVN5c3RlbUJhc2UoY29udGV4dCwgbmFtZSwgdHlwZSwg
cm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKQogewogfQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8Q3JlYXRlRmlsZVJlc3VsdD47
CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzT3duUHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0
ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q3JlYXRlRmlsZUhlbHBlcj4gY3JlYXRlKFBhc3NSZWZQdHI8Q3JlYXRlRmlsZVJlc3Vs
dD4gcmVzdWx0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVt
VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcmVhdGVGaWxl
SGVscGVyKHJlc3VsdCwgbmFtZSwgdXJsLCB0eXBlKSk7CiAgICAgfQpAQCAtMTM2LDcgKzEzNiw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIHByaXZhdGU6Ci0gICAgQ3JlYXRlRmlsZUhl
bHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCisgICAgQ3JlYXRlRmls
ZUhlbHBlcihQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICAgICAgOiBt
X3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV91cmwo
dXJsKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q3JlYXRlRmls
ZVJlc3VsdD4gbV9yZXN1bHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBGaWxlU3lzdGVtVHlwZSBtX3R5cGU7CiB9OwogCkBAIC0xNTUs
NyArMTU1LDcgQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmls
ZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIFJlZlB0cjxDcmVhdGVGaWxlSGVscGVyOjpDcmVh
dGVGaWxlUmVzdWx0PiByZXN1bHQoQ3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdDo6
Y3JlYXRlKCkpOwogICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRS
ZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgQ3JlYXRlRmlsZUhlbHBlcjo6Y3JlYXRlKHJlc3Vs
dCwgZmlsZUVudHJ5LT5uYW1lKCksIGZpbGVTeXN0ZW1VUkwsIHR5cGUoKSkpOwogICAgIGlmICgh
bV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5j
LmgKaW5kZXggMjRmYmQxNS4uMjYyOWJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRE9NRmlsZVN5c3RlbVN5bmMgOiBw
dWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0
eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3lu
Y0ZpbGVTeXN0ZW0pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTUZpbGVT
eXN0ZW1TeW5jKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkp
OwogICAgIH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8RmlsZVdy
aXRlclN5bmM+IGNyZWF0ZVdyaXRlcihjb25zdCBGaWxlRW50cnlTeW5jKiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgotICAgIERPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBLVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIERPTUZpbGVTeXN0ZW1T
eW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKaW5kZXggMTc5ZWNlNi4uODIzYTVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dG
aWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIERPTVdpbmRvd0ZpbGVTeXN0ZW06
OndlYmtpdFJlc29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoRE9NV2luZG93KiB3aW5kb3csIGNvbgog
ICAgICAgICByZXR1cm47CiAKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4gPSBk
b2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3Vt
ZW50LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudC0+
Y29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KSB8fCAhc2VjdXJpdHlPcmlnaW4tPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJpdHlP
cmlnaW4tPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBET01GaWxlU3lzdGVt
OjpzY2hlZHVsZUNhbGxiYWNrKGRvY3VtZW50LCBlcnJvckNhbGxiYWNrLCBGaWxlRXJyb3I6OmNy
ZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxi
YWNrcy5jcHAKaW5kZXggOWQ4MWEyMi4uNDJiNGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcApAQCAt
MTQ3LDcgKzE0Nyw3IEBAIEZpbGVTeXN0ZW1DYWxsYmFja3M6OkZpbGVTeXN0ZW1DYWxsYmFja3Mo
UGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+IHN1Y2Nlc3NDCiB7CiB9CiAKLXZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQordm9pZCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBpZiAobV9zdWNjZXNzQ2FsbGJhY2spIHsK
ICAgICAgICAgQVNTRVJUKGFzeW5jRmlsZVN5c3RlbSk7CkBAIC0yMTEsNyArMjExLDcgQEAgUmVz
b2x2ZVVSSUNhbGxiYWNrczo6UmVzb2x2ZVVSSUNhbGxiYWNrcyhQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmEKIHsKIH0KIAotdm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkws
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCit2b2lkIFJlc29s
dmVVUklDYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQogewogICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwogICAgIFJlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gcm9vdCA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuZ2V0KCksIG5hbWUsIG1fdHlwZSwgcm9vdFVSTCwgYXN5bmNGaWxlU3lzdGVtKS0+cm9v
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxl
U3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMjVmZTM2OC4uMzk5YzU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIGNsYXNzIEZpbGVTeXN0ZW1DYWxsYmFja3Mg
OiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEZpbGVTeXN0ZW1DYWxsYmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEZpbGVTeXN0
ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW0+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPik7CiAKIHByaXZhdGU6CiAgICAgRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzUmVmUHRy
PEZpbGVTeXN0ZW1DYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSk7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJp
dmF0ZToKIGNsYXNzIFJlc29sdmVVUklDYWxsYmFja3MgOiBwdWJsaWMgRmlsZVN5c3RlbUNhbGxi
YWNrc0Jhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlc29sdmVVUklDYWxs
YmFja3M+IGNyZWF0ZShQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOwogCiBwcml2YXRlOgogICAgIFJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckds
b2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKaW5kZXggN2QyYWVhNC4uNmQ5ODRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtlckdsb2JhbFNjb3BlRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL1dvcmtl
ckdsb2JhbFNjb3BlRmlsZVN5c3RlbS5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtU3luYz4gV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXF1
ZXN0RmlsZVN5c3QKIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW06OndlYmtpdFJl
c29sdmVMb2NhbEZpbGVTeXN0ZW1VUkwoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgY29uc3Qg
U3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgS1VSTCBjb21w
bGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRlZFVS
TCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzZWN1cmVDb250ZXh0ID0gd29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0ZpbGVTeXN0ZW0oKSB8fCAhc2VjdXJlQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChjb21wbGV0ZWRVUkwpKSB7CiAgICAgICAgIERP
TUZpbGVTeXN0ZW06OnNjaGVkdWxlQ2FsbGJhY2sod29ya2VyLCBlcnJvckNhbGxiYWNrLCBGaWxl
RXJyb3I6OmNyZWF0ZShGaWxlRXJyb3I6OlNFQ1VSSVRZX0VSUikpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxG
aWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjCiBQYXNzUmVmUHRyPEVudHJ5U3luYz4gV29ya2Vy
R2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtU3luY1VS
TChXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2Vy
LT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBs
ZXRlVVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9
IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghQXN5bmNGaWxlU3lz
dGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OlNFQ1VSSVRZX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCmluZGV4IGRiNDc1MWUuLmZiYzRhZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtMzMsOCArMzMsOCBAQAogCiAjaWYgRU5BQkxFKE1F
RElBX1NPVVJDRSkKIAotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZUJh
c2UuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3IEBAIE1lZGlhU291cmNlUmVnaXN0cnkm
IE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9
CiAKLXZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKK3ZvaWQgTWVk
aWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
IHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIEFTU0VSVCgmcmVnaXN0
cmFibGUtPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVnaXMKICAgICBtX21lZGlhU291
cmNlcy5zZXQodXJsLnN0cmluZygpLCBzb3VyY2UpOwogfQogCi12b2lkIE1lZGlhU291cmNlUmVn
aXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBNZWRpYVNvdXJjZVJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVNvdXJjZUJhc2U+
ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlhU291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNl
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oCmluZGV4IDQ2YzI0ZDQuLjc4ZDI3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5oCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIE1lZGlhU291cmNlQmFzZTsKIAogY2xhc3MgTWVkaWFTb3VyY2VSZWdp
c3RyeSA6IHB1YmxpYyBVUkxSZWdpc3RyeSB7CkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgTWVkaWFTb3VyY2VSZWdpc3RyeSYgcmVnaXN0cnkoKTsKIAogICAgIC8vIFJlZ2lz
dGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIG1lZGlhIHNvdXJjZS4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
clVSTChjb25zdCBLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJM
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAppbmRleCAzNmQyN2U2Li4yOTY3MTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00MSwx
NCArNDEsMTQgQEAgTWVkaWFTdHJlYW1SZWdpc3RyeSYgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVJlZ2lz
dHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmIHVybCwgVVJMUmVn
aXN0cmFibGUqIHN0cmVhbSkKK3ZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJVUkwo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHN0cmVhbSkK
IHsKICAgICBBU1NFUlQoJnN0cmVhbS0+cmVnaXN0cnkoKSA9PSB0aGlzKTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMuc2V0KHVybC5zdHJpbmco
KSwgc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihzdHJlYW0pLT5kZXNjcmlwdG9yKCkpOwogfQog
Ci12b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYgdXJs
KQordm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9zdHJlYW1EZXNjcmlwdG9y
cy5yZW1vdmUodXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKaW5kZXggZThiZTRjMS4uZTQ2
YzJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTWVkaWFTdHJlYW07CiBj
bGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0b3I7CiAKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBNZWRpYVN0cmVhbVJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogCiAgICAgLy8gUmVn
aXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgc3RyZWFtIGRhdGEu
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VS
TCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVS
TChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAK
ICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIGxvb2t1cE1lZGlhU3RyZWFtRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggY2VkMDIzMy4uMDUxZTBk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgUGFzc1JlZlB0cjxSVENDb25m
aWd1cmF0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6cGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERp
Y3Rpb24KICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7
CisgICAgICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgICAgIGlmICghdXJsLmlz
VmFsaWQoKSB8fCAhKHVybC5wcm90b2NvbElzKCJ0dXJuIikgfHwgdXJsLnByb3RvY29sSXMoInN0
dW4iKSkpIHsKICAgICAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9y
Y29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCmlu
ZGV4IDk5Yjk2Y2YuLmYzYjFkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVu
dFV0aWxzLmNwcApAQCAtODYsOCArODYsOCBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21IYW5k
bGVyVVJMKGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4YwogICAg
IFN0cmluZyBuZXdVUkwgPSB1cmw7CiAgICAgbmV3VVJMLnJlbW92ZShpbmRleCwgV1RGX0FSUkFZ
X0xFTkdUSCh0b2tlbikgLSAxKTsKIAotICAgIEtVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJh
c2VVUkwpOwotICAgIEtVUkwga3VybChiYXNlLCBuZXdVUkwpOworICAgIFVSTCBiYXNlKFBhcnNl
ZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKIAogICAg
IGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBhYWI1NjQ5Li5mNjI5ZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApA
QCAtNzEsNyArNzEsNyBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9pY29uID0gaWNvblVSSS5pc0VtcHR5KCkgPyBLVVJMKCkgOiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGljb25VUkkpOworICAgIG1faWNvbiA9
IGljb25VUkkuaXNFbXB0eSgpID8gVVJMKCkgOiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bXBsZXRlVVJMKGljb25VUkkpOwogICAgIGlmICghbV9pY29uLmlzRW1wdHkoKSAmJiAhbV9pY29u
LmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIGlmIChvcHRp
b25zLmdldCgiZGlyIiwgYXJndW1lbnQpKQogICAgICAgICBub3RpZmljYXRpb24tPnNldERpcihh
cmd1bWVudCk7CiAgICAgaWYgKG9wdGlvbnMuZ2V0KCJpY29uIiwgYXJndW1lbnQpKSB7Ci0gICAg
ICAgIEtVUkwgaWNvblVSSSA9IGFyZ3VtZW50LmlzRW1wdHkoKSA/IEtVUkwoKSA6IGNvbnRleHQt
PmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKKyAgICAgICAgVVJMIGljb25VUkkgPSBhcmd1bWVudC5p
c0VtcHR5KCkgPyBVUkwoKSA6IGNvbnRleHQtPmNvbXBsZXRlVVJMKGFyZ3VtZW50KTsKICAgICAg
ICAgaWYgKCFpY29uVVJJLmlzRW1wdHkoKSAmJiBpY29uVVJJLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgIG5vdGlmaWNhdGlvbi0+c2V0SWNvblVSTChpY29uVVJJKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXgg
NTA3YTdmYS4uNzk2NzA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlICJUZXh0RGlyZWN0aW9uLmgiCkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIEtVUkwgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
aWNvbjsgfQotICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBLVVJMJiB1cmwpIHsgbV9pY29uID0g
dXJsOyB9CisgICAgVVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KKyAgICB2
b2lkIHNldEljb25VUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9pY29uID0gdXJsOyB9CiAKICAgICBT
dHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxlOyB9CiAgICAgU3RyaW5nIGJvZHko
KSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KQEAgLTE2NCw3ICsxNjQsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICAvLyBUZXh0IG5vdGlmaWNhdGlvbnMuCi0gICAgS1VSTCBtX2ljb247Cisg
ICAgVVJMIG1faWNvbjsKICAgICBTdHJpbmcgbV90aXRsZTsKICAgICBTdHJpbmcgbV9ib2R5Owog
ICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaAppbmRleCA5ZTkyODM2Li4y
MjgxNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0zOSw3ICszOSw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNw
cAppbmRleCA1OWQ0MmY5Li5jZGMxZjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hHcmFtbWFyLmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPFNw
ZWVjaEdyYW1tYXI+IFNwZWVjaEdyYW1tYXI6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTcGVlY2hHcmFtbWFyKTsKIH0KIAotUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVl
Y2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQorUGFzc1Jl
ZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoY29uc3QgVVJMJiBzcmMs
IGRvdWJsZSB3ZWlnaHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVlY2hHcmFtbWFy
KHNyYywgd2VpZ2h0KSk7CiB9CkBAIC01NCw3ICs1NCw3IEBAIFNwZWVjaEdyYW1tYXI6OlNwZWVj
aEdyYW1tYXIoKQogewogfQogCi1TcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0IEtV
UkwmIHNyYywgZG91YmxlIHdlaWdodCkKK1NwZWVjaEdyYW1tYXI6OlNwZWVjaEdyYW1tYXIoY29u
c3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCiAgICAgOiBtX3NyYyhzcmMpCiAgICAgLCBtX3dl
aWdodCh3ZWlnaHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9TcGVlY2hHcmFtbWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyLmgKaW5kZXggNzRiMDBhZC4uNDk0MWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5B
QkxFKFNDUklQVEVEX1NQRUVDSCkKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0zOSwxMCArMzksMTAgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIGNsYXNzIFNwZWVjaEdyYW1tYXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVlY2hHcmFtbWFy
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRl
KCk7IC8vIEZJWE1FOiBUaGUgc3BlYyBpcyBub3QgY2xlYXIgb24gd2hhdCB0aGUgY29uc3RydWN0
b3Igc2hvdWxkIGxvb2sgbGlrZS4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFy
PiBjcmVhdGUoY29uc3QgS1VSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBjcmVhdGUoY29uc3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWln
aHQpOwogCi0gICAgY29uc3QgS1VSTCYgc3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25z
dCB7IHJldHVybiBtX3NyYzsgfQotICAgIGNvbnN0IEtVUkwmIHNyYygpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNv
bnN0IHsgcmV0dXJuIG1fc3JjOyB9CisgICAgY29uc3QgVVJMJiBzcmMoKSBjb25zdCB7IHJldHVy
biBtX3NyYzsgfQogICAgIHZvaWQgc2V0U3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHNyYyk7CiAKICAgICBkb3VibGUgd2VpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV93
ZWlnaHQ7IH0KQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNwZWVj
aEdyYW1tYXIoKTsKLSAgICBTcGVlY2hHcmFtbWFyKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdl
aWdodCk7CisgICAgU3BlZWNoR3JhbW1hcihjb25zdCBVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7
CiAKLSAgICBLVVJMIG1fc3JjOworICAgIFVSTCBtX3NyYzsKICAgICBkb3VibGUgbV93ZWlnaHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hH
cmFtbWFyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFt
bWFyTGlzdC5jcHAKaW5kZXggYzNkZGJlMS4uMmRhYTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFNwZWVjaEdyYW1tYXJMaXN0OjphZGRGcm9tVXJpKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRk
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgZG91YmxlIHdlaWdodCkKIHsKICAgICBT
dHJpbmcgdXJsU3RyaW5nID0gU3RyaW5nKCJkYXRhOmFwcGxpY2F0aW9uL3htbCwiKSArIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoc3RyaW5nKTsKLSAgICBtX2dyYW1tYXJzLmFwcGVuZChT
cGVlY2hHcmFtbWFyOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybFN0cmluZyksIHdlaWdodCkpOwor
ICAgIG1fZ3JhbW1hcnMuYXBwZW5kKFNwZWVjaEdyYW1tYXI6OmNyZWF0ZShVUkwoVVJMKCksIHVy
bFN0cmluZyksIHdlaWdodCkpOwogfQogCiBTcGVlY2hHcmFtbWFyTGlzdDo6U3BlZWNoR3JhbW1h
ckxpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBmZjcyODNkLi5kZWQzNGM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNz
IFdlYlNvY2tldENoYW5uZWxDbGllbnQ7CiAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAg
ICAgICBJbnZhbGlkTWVzc2FnZQogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0
ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTdHJpbmcg
ZXh0ZW5zaW9ucygpID0gMDsgLy8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgp
IGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVhbCBTZW5kUmVzdWx0IHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGQ5NjA2NDEuLmE0MmI5YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0yMTMsNyArMjEz
LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjb25uZWN0KCkg
dXJsPSclcyciLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV91cmwgPSBLVVJMKEtV
UkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwgdXJsKTsKIAogICAgIGlmICghbV91
cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQg
dXJsIGZvciBXZWJTb2NrZXQgIiArIG1fdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgbV9jaGFu
bmVsLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi1jb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVy
bCgpIGNvbnN0Citjb25zdCBVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV91cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggZDY3YzU0Yy4uNDA0OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJiBlYykgeyBjbG9zZShXZWJTb2NrZXRDaGFubmVsOjpD
bG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCwgU3RyaW5nKCksIGVjKTsgfQogICAgIHZvaWQgY2xv
c2UoaW50IGNvZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGNsb3NlKGNvZGUsIFN0cmluZygpLCBl
Yyk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKIApAQCAtMTM2LDcgKzEzNiw3IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBtX2NoYW5uZWw7CiAKICAg
ICBTdGF0ZSBtX3N0YXRlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIHVu
c2lnbmVkIGxvbmcgbV9idWZmZXJlZEFtb3VudDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnRBZnRlckNsb3NlOwogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IGU3ZjhkYmQuLmE5MzJiM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk5LDcgKzk5LDcg
QEAgV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQogewogfQogCi12b2lkIFdl
YlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjb25uZWN0KCkiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1faGFuZGxlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CmluZGV4IGYxNDhjZDkuLjM5NjQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBzZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggNTYzZDcxNC4uMWVjMTI3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0
YWNrLmgiCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVySW5TZWNXZWJTb2NrZXRLZXlbXSA9ICIhXCIjJCUmJygp
KissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6e3x9fiI7CiAKLXN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0
IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFN0cmluZ0J1aWxkZXIgbmFtZTsKICAgICBuYW1lLmFwcGVuZCh1cmwucGF0aCgpKTsK
QEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgS1VSTCYg
dXJsKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29u
c3QgS1VSTCYgdXJsLCBib29sIHNlY3VyZSkKK3N0YXRpYyBTdHJpbmcgaG9zdE5hbWUoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgc2VjdXJlKQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3Nz
IikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CkBAIC0xMjEsNyArMTIx
LDcgQEAgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2Nl
cHQoY29uc3QgU3RyaW5nJiBzZWNXZWJTb2NrZXQKICAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGhhc2guZGF0YSgpKSwgc2hhMUhhc2hTaXplKTsK
IH0KIAotV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorV2ViU29ja2V0SGFuZHNoYWtlOjpXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudFByb3RvY29sKHByb3RvY29sKQog
ICAgICwgbV9zZWN1cmUobV91cmwucHJvdG9jb2xJcygid3NzIikpCkBAIC0xMzYsMTIgKzEzNiwx
MiBAQCBXZWJTb2NrZXRIYW5kc2hha2U6On5XZWJTb2NrZXRIYW5kc2hha2UoKQogewogfQogCi1j
b25zdCBLVVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIFdl
YlNvY2tldEhhbmRzaGFrZTo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV91cmw7CiB9CiAK
LXZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3VybCA9
IHVybC5jb3B5KCk7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgQ1N0cmluZyBXZWJTb2NrZXRIYW5k
c2hha2U6OmNsaWVudEhhbmRzaGFrZU1lc3NhZ2UoKSBjb25zdAogICAgIGlmICghbV9jbGllbnRQ
cm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIGZpZWxkcy5hcHBlbmQoIlNlYy1XZWJTb2NrZXQt
UHJvdG9jb2w6ICIgKyBtX2NsaWVudFByb3RvY29sKTsKIAotICAgIEtVUkwgdXJsID0gaHR0cFVS
TEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOworICAgIFVSTCB1cmwgPSBodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7CiAgICAgaWYgKG1fY29udGV4dC0+aXNEb2N1bWVu
dCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9jb250ZXh0
KTsKICAgICAgICAgU3RyaW5nIGNvb2tpZSA9IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGRvY3VtZW50LCB1cmwpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIFJlc291cmNlUmVxdWVzdCBXZWJT
b2NrZXRIYW5kc2hha2U6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAogICAgIGlmICgh
bV9jbGllbnRQcm90b2NvbC5pc0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRl
ckZpZWxkKCJTZWMtV2ViU29ja2V0LVByb3RvY29sIiwgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAg
ICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICBV
UkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmICht
X2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0
b0RvY3VtZW50KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTM4Niw5ICszODYsOSBAQCB2
b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6YWRkRXh0ZW5zaW9uUHJvY2Vzc29yKFBhc3NPd25QdHI8
V2ViU29ja2V0RXh0ZW5zaW9uUHJvYwogICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9j
ZXNzb3IocHJvY2Vzc29yKTsKIH0KIAotS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxG
b3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAorVVJMIFdlYlNvY2tldEhhbmRzaGFr
ZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiB7Ci0gICAgS1VS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CisgICAgVVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKICAgICBi
b29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2wobV9zZWN1cmUgPyAiaHR0cHMi
IDogImh0dHAiKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxkU2V0
UHJvdG9jb2wpOwogICAgIHJldHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggYzg3YWM2Yi4uY2Nh
YjA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uUHJvY2Vzc29yLmgiCkBAIC01MSwx
MSArNTEsMTEgQEAgcHVibGljOgogICAgIGVudW0gTW9kZSB7CiAgICAgICAgIEluY29tcGxldGUs
IE5vcm1hbCwgRmFpbGVkLCBDb25uZWN0ZWQKICAgICB9OwotICAgIFdlYlNvY2tldEhhbmRzaGFr
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIFdlYlNvY2tldEhhbmRzaGFrZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgfldlYlNvY2tldEhhbmRz
aGFrZSgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRVUkwo
Y29uc3QgS1VSTCYpOworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRV
UkwoY29uc3QgVVJMJik7CiAgICAgY29uc3QgU3RyaW5nIGhvc3QoKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgY2xpZW50UHJvdG9jb2woKSBjb25zdDsKQEAgLTkxLDcgKzkxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgZ2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3Qg
U3RyaW5nJiBzZWNXZWJTb2NrZXRLZXkpOwogCiBwcml2YXRlOgotICAgIEtVUkwgaHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OworICAgIFVSTCBodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CiAKICAgICBpbnQgcmVhZFN0YXR1c0xpbmUo
Y29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgaGVhZGVyTGVuZ3RoLCBpbnQmIHN0YXR1c0NvZGUs
IFN0cmluZyYgc3RhdHVzVGV4dCk7CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgcHJvY2Vzc0hlYWRlcnMoKTsKICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7
CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9jbGllbnRQ
cm90b2NvbDsKICAgICBib29sIG1fc2VjdXJlOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IGM5MzZlZTAuLmI2YmEyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6fldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkKICAgICAgICAgbV9icmlk
Z2UtPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIGlmIChtX2JyaWRnZSkKICAgICAg
ICAgbV9icmlkZ2UtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6On5QZWVyKCkKICAgICAgICAg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwogfQogCi12b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNv
Y2tldENoYW5uZWwpCkBAIC00MjgsNyArNDI4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjppbml0aWFsaXplKCkKICAgICAgICAgbV93b3JrZXJDbGll
bnRXcmFwcGVyLT5zZXRGYWlsZWRXZWJTb2NrZXRDaGFubmVsQ3JlYXRpb24oKTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGVlciogcGVlciwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCoKICAgICBwZWVyLT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChtX3dvcmtlckNsaWVudFdyYXBwZXIpOwog
ICAgIGlmICghbV9wZWVyKQpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0
aW9uCiAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcg
bG9uZyBzaXplKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCA0MTlhYzQyLi5mZjk4OWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogY2xhc3MgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFw
cGVyOwogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpOwogCiAgICAg
Ly8gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9p
ZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBPVkVSUklERTsKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgICAgIH5QZWVyKCk7CiAKLSAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImKTsK
ICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IEJsb2ImKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgICAgIH5CcmlkZ2UoKTsKICAgICAgICAgdm9pZCBpbml0aWFs
aXplKCk7Ci0gICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlCdWZmZXImLCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBCbG9iJik7CkBAIC0xNjks
MTAgKzE2OSwxMCBAQCBwcml2YXRlOgogCiAgICAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwoV29ya2VyR2xvYmFsU2NvcGUqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSk7CiAKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wp
OwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4gPik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRCbG9i
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOworICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5k
QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRp
YyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCA1MDRkOTJkLi5iNjgzODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEw
MjYsNyArMTAyNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VSZWFkZXIuY3BwXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nTm9uZS5jcHAgXAot
ICAgIHBsYXRmb3JtL0tVUkwuY3BwIFwKKyAgICBwbGF0Zm9ybS9VUkwuY3BwIFwKICAgICBwbGF0
Zm9ybS9MYW5ndWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAgXAogICAgIHBsYXRm
b3JtL0xlbmd0aEJveC5jcHAgXApAQCAtMjI0Myw3ICsyMjQzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggXAogICAgIHBs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCiAgICAgcGxhdGZv
cm0vS2lsbFJpbmcuaCBcCi0gICAgcGxhdGZvcm0vS1VSTC5oIFwKKyAgICBwbGF0Zm9ybS9VUkwu
aCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXAogICAgIHBsYXRmb3JtL0xlbmd0aEJveC5oIFwK
ICAgICBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJDb21wYXJhdG9yLmggXApAQCAtMjkwNCw3ICsy
OTA0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR2x5cGhQYWdl
VHJlZU5vZGVRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1NpbXBsZUZvbnREYXRh
UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3BwIFwKLSAgICBwbGF0
Zm9ybS9xdC9LVVJMUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9VUkxRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L01JTUVUeXBlUmVnaXN0cnlRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1Bhc3Rl
Ym9hcmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRFdmVudFF0LmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGYwYWFiODYuLmIwYjY5N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC02Nyw3ICs2Nyw2IEBAIF9fWk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3Ry
aW5nRXYKIF9fWk4zV1RGMTJBdG9taWNTdHJpbmczYWRkRVBLMTBfX0NGU3RyaW5nCiBfX1pOM1dU
RjZTdHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZwot
X19aTjdXZWJDb3JlOEdyYWRpZW50RDFFdgogX19aTjdXZWJDb3JlMTBDbGllbnRSZWN0QzFFUktO
U183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfOUZsb2F0UmVjdEUK
IF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRXYKQEAgLTg5LDYgKzg4LDggQEAgX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYgogX19aTjdXZWJDb3JlMTBT
Y3JvbGxWaWV3MjNzZXRQYWludHNFbnRpcmVDb250ZW50c0ViCiBfX1pON1dlYkNvcmUxMFNjcm9s
bFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiCiBfX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcyNHdpbmRvd1Jlc2l6ZXJSZWN0Q2hhbmdlZEV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0
aGlkZUV2CitfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hvd0V2CiBfX1pON1dlYkNvcmUxMFNj
cm9sbFZpZXc1cGFpbnRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXc4YWRkQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNldpZGdl
dEVFRQogX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwMTByZW1vdmVJdGVtRVJLTjNXVEY2U3RyaW5n
RVJTMl8KQEAgLTk5LDExICsxMDAsMTEgQEAgX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwNmNyZWF0
ZUVqCiBfX1pON1dlYkNvcmUxMFN0b3JhZ2VNYXA3c2V0SXRlbUVSS04zV1RGNlN0cmluZ0VTNF9S
UzJfUmIKIF9fWk43V2ViQ29yZTEwZGVsZXRlRmlsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTEwZmlsZUV4aXN0c0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTEwc2V0Q29va2ll
c0VQTlNfOERvY3VtZW50RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUx
MHNldENvb2tpZXNFUE5TXzhEb2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMHRvRG9jdW1lbnRFTjNKU0M3SlNWYWx1ZUUKK19fWk43V2ViQ29yZTExQml0bWFw
SW1hZ2UxM2dldENHSW1hZ2VSZWZFdgogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVA3Q0dJ
bWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJFCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlQzFFUE5T
XzEzSW1hZ2VPYnNlcnZlckUKLV9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2UxM2dldENHSW1hZ2VS
ZWZFdgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTIzY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
dgogX19aTjdXZWJDb3JlMTFDYWNoZWRGcmFtZTI2c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFF
TjNXVEYxMFBhc3NPd25QdHJJTlNfMjNDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YUVFRQogX19aTjdX
ZWJDb3JlMTFGaWxlQ2hvb3NlcjEwY2hvb3NlRmlsZUVSS04zV1RGNlN0cmluZ0UKQEAgLTExMSwx
NCArMTEyLDEzIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzCiBfX1pON1dlYkNvcmUxMUZpbGVD
aG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNo
b3VsZENsb3NlRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVjdGVkRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUViYk5TXzE4
U2hvdWxkU2VuZFJlZmVycmVyRQotX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEyc2hvdWxkUmVs
b2FkRVJLTlNfNEtVUkxFUzNfCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3Rl
ZEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVi
Yk5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZGV0
YWNoQ2hpbGRyZW5FdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0c3RvcEFsbExvYWRlcnNF
TlNfMjZDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2Fk
ZXIxNmRldGFjaEZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE2bG9hZEZy
YW1lUmVxdWVzdEVSS05TXzE2RnJhbWVMb2FkUmVxdWVzdEViYk4zV1RGMTBQYXNzUmVmUHRySU5T
XzVFdmVudEVFRU5TNV9JTlNfOUZvcm1TdGF0ZUVFRU5TXzE4U2hvdWxkU2VuZFJlZmVycmVyRQog
X19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE3c3RvcEZvclVzZXJDYW5jZWxFYgotX19aTjdXZWJD
b3JlMTFGcmFtZUxvYWRlcjIxbG9hZFVSTEludG9DaGlsZEZyYW1lRVJLTlNfNEtVUkxFUktOM1dU
RjZTdHJpbmdFUE5TXzVGcmFtZUUKK19fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMWxvYWRVUkxJ
bnRvQ2hpbGRGcmFtZUVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFUE5TXzVGcmFtZUUKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXIyMmZpbmRGcmFtZUZvck5hdmlnYXRpb25FUktOM1dURjEyQXRv
bWljU3RyaW5nRVBOU184RG9jdW1lbnRFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjN0aW1l
T2ZMYXN0Q29tcGxldGVkTG9hZEV2CiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjZyZWxvYWRX
aXRoT3ZlcnJpZGVFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKQEAgLTE0NiwxMyArMTQ2LDEyIEBA
IF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlF
UktOM1dURjZTdHJpbmdFUDExb2JqY19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0y
MWRlY29kZUJhY2tGb3J3YXJkVHJlZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9STlMxXzdEZWNvZGVy
RQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIybWVyZ2VBdXRvQ29tcGxldGVIaW50c0VQUzBf
Ci1fX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtNnNldFVSTEVSS05TXzRLVVJMRQogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTd2aXNpdGVkRVJLTjNXVEY2U3RyaW5nRWROU18xOFZpc2l0Q291bnRC
ZWhhdmlvckUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURhdGFFdgogX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbThzZXRUaXRsZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW1DMUVSS04zV1RGNlN0cmluZ0VTNF9TNF9kCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfZAotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMx
RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFUzdfUzdfCitfX1pON1dlYkNvcmUxMUhpc3RvcnlJ
dGVtQzFFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XwogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbUMxRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1EMUV2CiBfX1pON1dlYkNvcmUx
MUpTRE9NV2luZG93NnNfaW5mb0UKQEAgLTE2MCw3ICsxNTksNyBAQCBfX1pON1dlYkNvcmUxMU1l
bW9yeUNhY2hlMTFzZXREaXNhYmxlZEViCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNnZXRT
dGF0aXN0aWNzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxM3NldENhcGFjaXRpZXNFampq
CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTRldmljdFJlc291cmNlc0V2Ci1fX1pON1dlYkNv
cmUxMU1lbW9yeUNhY2hlMTRyZXNvdXJjZUZvclVSTEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3Jl
MTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU18zVVJMRQogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE4cmVzb3VyY2VGb3JSZXF1ZXN0RVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFCiBf
X1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTlnZXRPcmlnaW5zV2l0aENhY2hlRVJOM1dURjdIYXNo
U2V0SU5TMV82UmVmUHRySU5TXzE0U2VjdXJpdHlPcmlnaW5FRUVOU18xOFNlY3VyaXR5T3JpZ2lu
SGFzaEVOUzFfMTBIYXNoVHJhaXRzSVM1X0VFRUUKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUy
NXJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCkBAIC0xNjgs
OCArMTY3LDggQEAgX19aTjdXZWJDb3JlMTFQYWdlQ29uc29sZTIxc2hvdWxkUHJpbnRFeGNlcHRp
b25zRXYKIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9u
c0ViCiBfX1pON1dlYkNvcmUxMVNRTFJlc3VsdE9rRQogX19aTjdXZWJDb3JlMTFVUkxXaXRoRGF0
YUVQNk5TRGF0YVA1TlNVUkwKLV9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJO
M1dURjdDU3RyaW5nRQogX19aTjdXZWJDb3JlMTFnZXRVUkxCeXRlc0VQSzdfX0NGVVJMUk4zV1RG
NlZlY3RvckljTG01MTJFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxMWdl
dFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExaUJlYW1D
dXJzb3JFdgogX19aTjdXZWJDb3JlMTFtZW1vcnlDYWNoZUV2CiBfX1pON1dlYkNvcmUxMXN0YXJ0
T2ZMaW5lRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FCkBAIC0yMzQsNyArMjMzLDcgQEAgX19aTjdX
ZWJDb3JlMTJUZXh0SXRlcmF0b3JEMUV2CiBfX1pON1dlYkNvcmUxMlVURjhFbmNvZGluZ0V2CiBf
X1pON1dlYkNvcmUxMmNhY2hlU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQ
S05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFTlMzXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFTlNfMjNFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZUViTlNfMTNFQWJzb2x1dGVVUkxzRQot
X19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVS
S05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVFUktO
U18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pON1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBf
X1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGUxMHJvb3RPYmplY3RFdgpAQCAtMjYxLDYgKzI2MCw3
IEBAIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4c2V0QmFja2dyb3VuZENvbG9yRVJLTlNf
NUNvbG9yRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjBzZXRSZXBsaWNhdGVkQnlMYXll
ckVQUzBfCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI1NG5vdGVEZXZpY2VPclBhZ2VTY2Fs
ZUZhY3RvckNoYW5nZWRJbmNsdWRpbmdEZXNjZW5kYW50c0V2CiBfX1pON1dlYkNvcmUxM0dyYXBo
aWNzTGF5ZXI2Y3JlYXRlRVBOU18yMEdyYXBoaWNzTGF5ZXJGYWN0b3J5RVBOU18xOUdyYXBoaWNz
TGF5ZXJDbGllbnRFCitfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI3c2V0U2l6ZUVSS05TXzlG
bG9hdFNpemVFCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXI4YWRkQ2hpbGRFUFMwXwogX19a
TjdXZWJDb3JlMTNHcmFwaGljc0xheWVyQzJFUE5TXzE5R3JhcGhpY3NMYXllckNsaWVudEUKIF9f
Wk43V2ViQ29yZTEzR3JhcGhpY3NMYXllckQyRXYKQEAgLTI4MiwxMSArMjgyLDEzIEBAIF9fWk43
V2ViQ29yZTEzUXVhbGlmaWVkTmFtZUQxRXYKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMx
RVA3TlNFcnJvcgogX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKIF9f
Wk43V2ViQ29yZTEzU1FMUmVzdWx0RG9uZUUKK19fWk43V2ViQ29yZTEzU2NyaXB0R0NFdmVudDEx
Z2V0SGVhcFNpemVFUk5TXzhIZWFwSW5mb0UKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIy
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dURjZTdHJpbmdF
YgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVkTlNfMTdDU1NQcmltaXRpdmVWYWx1ZTlVbml0VHlwZXNFYgotX19a
TjdXZWJDb3JlMTNjb29raWVzRm9yRE9NRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U180S1VSTEVTNV8KK19fWk43V2ViQ29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlckVQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU180Tm9kZUUKIF9fWk43
V2ViQ29yZTEzZGlyZWN0b3J5TmFtZUVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEzZ2V0
UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9STjNX
VEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdX
ZWJDb3JlMTNsaXN0RGlyZWN0b3J5RVJLTjNXVEY2U3RyaW5nRVMzXwogX19aTjdXZWJDb3JlMTNw
b2ludGVyQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRvd0VOM0pTQzdKU1ZhbHVl
RQpAQCAtMzkwLDEwICszOTIsOSBAQCBfX1pON1dlYkNvcmUxNFNjcm9sbGJhclRoZW1lNXRoZW1l
RXYKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dU
RjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjhjcmVhdGVGcm9tRGF0YWJh
c2VJZGVudGlmaWVyRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfaQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjZjcmVhdGVFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRl
RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBv
bGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlQb2xpY3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZlcnJl
clBvbGljeUVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTRTZWN1cml0
eVBvbGljeTIyZ2VuZXJhdGVSZWZlcnJlckhlYWRlckVOU18xNFJlZmVycmVyUG9saWN5RVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5Mjlh
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS05TXzE0U2VjdXJpdHlPcmlnaW5FUktOM1dU
RjZTdHJpbmdFUzdfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTMycmVtb3ZlT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5n
RVM3X2IKQEAgLTQwNSw3ICs0MDYsNyBAQCBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyMzJz
eW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VU
cmFja2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3Jp
Z2luRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdl
VHJhY2tlcjd0cmFja2VyRXYKIF9fWk43V2ViQ29yZTE0U3ViZnJhbWVMb2FkZXIxMmFsbG93UGx1
Z2luc0VOU18yOFJlYXNvbkZvckNhbGxpbmdBbGxvd1BsdWdpbnNFCi1fX1pON1dlYkNvcmUxNGNv
b2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8K
K19fWk43V2ViQ29yZTE0Y29va2llc0VuYWJsZWRFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxNGRlY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcK
IF9fWk43V2ViQ29yZTE0ZW5jb2RlSG9zdE5hbWVFUDhOU1N0cmluZwogX19aTjdXZWJDb3JlMTRl
bmRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlRQpAQCAtNDE3LDcgKzQxOCwyMyBAQCBfX1pON1dlYkNvcmUxNUFmZmluZVRy
YW5zZm9ybThtdWx0aXBseUVSS1MwXwogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm05dHJh
bnNsYXRlRWRkCiBfX1pON1dlYkNvcmUxNUFmZmluZVRyYW5zZm9ybUMxRWRkZGRkZAogX19aTjdX
ZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUV2Ci1fX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJj
ZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJM
RVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNv
cmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRC
dWZmZXJFRUVSS05TXzNVUkxFUktOUzFfNlN0cmluZ0VTQV9TQV9SS05TXzE2UmVzb3VyY2VSZXNw
b25zZUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhp
c3RvcnlJdGVtRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgor
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWN1cnJlbnRJdGVtRXYKK19fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0MTFmb3J3YXJkSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDExc2V0Q2FwYWNpdHlFaQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMmNv
bnRhaW5zSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhp
c3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82
UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgorX19aTjdXZWJDb3JlMTVCYWNr
Rm9yd2FyZExpc3Q2Z29CYWNrRXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJs
ZWRFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW50cmllc0V2CitfX1pON1dlYkNv
cmUxNUJhY2tGb3J3YXJkTGlzdDhiYWNrSXRlbUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdDhjYXBhY2l0eUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRF
dgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3RDMUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNv
cmUxNURPTVdyYXBwZXJXb3JsZDEzY2xlYXJXcmFwcGVyc0V2CiBfX1pON1dlYkNvcmUxNURPTVdy
YXBwZXJXb3JsZEQxRXYKIF9fWk43V2ViQ29yZTE1RGF0YWJhc2VNYW5hZ2VyMTBpbml0aWFsaXpl
RVJLTjNXVEY2U3RyaW5nRQpAQCAtNDM1LDkgKzQ1Miw5IEBAIF9fWk43V2ViQ29yZTE1RGF0YWJh
c2VNYW5hZ2VyN29yaWdpbnNFUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5
T3JpCiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjhzZXRRdW90YUVQTlNfMTRTZWN1cml0
eU9yaWdpbkV5CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjlzZXRDbGllbnRFUE5TXzIx
RGF0YWJhc2VNYW5hZ2VyQ2xpZW50RQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxMHNl
dEZvY3VzZWRFYgotX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVt
ZW50RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3Vz
RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxNXNldEZvY3VzZWRGcmFt
ZUVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250
cm9sbGVyMTVzZXRJbml0aWFsRm9jdXNFTlNfMTRGb2N1c0RpcmVjdGlvbkVQTlNfMTNLZXlib2Fy
ZEV2ZW50RQorX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIxN3NldEZvY3VzZWRFbGVtZW50
RVBOU183RWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUVOU18xNEZvY3VzRGly
ZWN0aW9uRQogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXIyOHNldENvbnRhaW5pbmdXaW5k
b3dJc1Zpc2libGVFYgogX19aTjdXZWJDb3JlMTVGb2N1c0NvbnRyb2xsZXI5c2V0QWN0aXZlRWIK
IF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTBzdHJva2VSZWN0RVJLTlNfOUZsb2F0UmVj
dEVmCkBAIC00OTcsNyArNTE0LDcgQEAgX19aTjdXZWJDb3JlMTVTdHJpbmdUcnVuY2F0b3I1d2lk
dGhFUktOM1dURjZTdHJpbmdFUktOU180Rm9udEVOUzBfMjRFbmFibGVSb3VuZGkKIF9fWk43V2Vi
Q29yZTE1VmlzaWJsZVBvc2l0aW9uQzFFUktOU184UG9zaXRpb25FTlNfOUVBZmZpbml0eUUKIF9f
Wk43V2ViQ29yZTE1ZGVmYXVsdExhbmd1YWdlRXYKIF9fWk43V2ViQ29yZTE1bG9jYWxpemVkU3Ry
aW5nRVBLYwotX19aTjdXZWJDb3JlMTVtaW1lVHlwZUZyb21VUkxFUktOU180S1VSTEUKK19fWk43
V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTE1b3JpZ2lu
YWxVUkxEYXRhRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE1cGF0aEdldEZpbGVOYW1lRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTVyZXBvcnRFeGNlcHRpb25FUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFUE5TXzEyQ2FjaGVkU2NyaXB0RQpAQCAtNTA3LDcgKzUyNCw3IEBAIF9fWk43
V2ViQ29yZTE1dmlzaXRlZExpbmtIYXNoRVBLdGoKIF9fWk43V2ViQ29yZTE1dmlzaXRlZExpbmtI
YXNoRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMThkaXNr
VXNhZ2VGb3JPcmlnaW5FUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUxNkFwcGxp
Y2F0aW9uQ2FjaGUyMGRlbGV0ZUNhY2hlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQot
X19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhEb2N1bWVudEVSS05TXzRLVVJM
RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTZDU1NQYXJzZXJDb250ZXh0QzFFUk5TXzhE
b2N1bWVudEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNkRhdGFiYXNl
U3RyYXRlZ3kxN2dldERhdGFiYXNlU2VydmVyRXYKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90aW9u
RGF0YTEyQWNjZWxlcmF0aW9uNmNyZWF0ZUViZGJkYmQKIF9fWk43V2ViQ29yZTE2RGV2aWNlTW90
aW9uRGF0YTEyUm90YXRpb25SYXRlNmNyZWF0ZUViZGJkYmQKQEAgLTU5Myw3ICs2MTAsNyBAQCBf
X1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNyZWF0ZUVQTlNfNUZyYW1lRVBOU18xNENh
Y2hlZFJlc291cmNlRVJLTlNfMTVSZQogX19aTjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNKU0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9F
CiBfX1pON1dlYkNvcmUxN2xhbmd1YWdlRGlkQ2hhbmdlRXYKIF9fWk43V2ViQ29yZTE3b3BlblRl
bXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zy
b21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVM1X1JLTjNXVEY2
U3RyaW5nRQorX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3
dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNp
b25DMUVQTlNfNUZyYW1lRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4UGxh
dGZvcm1QYXN0ZWJvYXJkMTB1bmlxdWVOYW1lRXYKQEAgLTYxNiw0MCArNjMzLDIyIEBAIF9fWk43
V2ViQ29yZTE4U3R5bGVTaGVldENvbnRlbnRzRDFFdgogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKIF9fWk43V2ViQ29yZTE4bWFrZUFsbERpcmVjdG9yaWVzRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNf
MTNKU0hUTUxFbGVtZW50RQotX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktOU180
S1VSTEVQS05TXzE3TmV0d29ya2luZ0NvbnRleHRFCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMTFpc1N1c3BlbmRlZEV2CitfX1pON1dlYkNvcmUxOHByb3h5U2VydmVyc0ZvclVS
TEVSS05TXzNVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQogX19aTjdXZWJDb3JlMTlBbmlt
YXRpb25Db250cm9sbGVyMTZyZXN1bWVBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0
aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlMTlBbmltYXRp
b25Db250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktO
M1dURjEyQXRvbWljU3RyaW5nRWQKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIx
cGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVjdEVSS04zV1RGNlN0cmluZ0Vk
CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIzNnNldEFsbG93c05ld0FuaW1hdGlv
bnNXaGlsZVN1c3BlbmRlZEViCi1fX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNh
bGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3QxMHJlbW92ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDEwc2V0RW5hYmxlZEViCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlz
dDExY3VycmVudEl0ZW1FdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJ
dGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFzZXRDYXBhY2l0eUVpCi1fX1pO
N1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29udGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVt
RQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNX
VEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RX
aXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxt
MEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
NmNsb3NlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgotX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDdlbnRyaWVzRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGJhY2tJdGVt
RXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGNhcGFjaXR5RXYKLV9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0OWdvRm9yd2FyZEV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdEMxRVBOU180UGFnZUUKIF9fWk43V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRW
YWx1ZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjEw
aW52YWxpZGF0ZUV2CitfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXIyM3J1bkxvb3BP
YnNlcnZlckNhbGxiYWNrRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjZyZXN1
bWVFdgogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyN3N1c3BlbmRFdgogX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyOHNjaGVkdWxlRXYKK19fWk43V2ViQ29yZTE5TGF5
ZXJGbHVzaFNjaGVkdWxlckMxRVBOU18yNUxheWVyRmx1c2hTY2hlZHVsZXJDbGllbnRFCiBfX1pO
N1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJDMkVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVy
Q2xpZW50RQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDFFdgogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyRDJFdgotX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyMjNydW5Mb29wT2JzZXJ2ZXJDYWxsYmFja0V2Ci1fX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTFzZXRIVFRQQm9keUVOM1dURjEwUGFzc1JlZlB0cklO
U184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTEzc2V0SFRU
UE1ldGhvZEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTE4c2V0SFRUUEhlYWRlckZpZWxkRVBLY1JLTjNXVEY2U3RyaW5nRQpAQCAtNjU4LDcgKzY1Nyw3
IEBAIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIyZGVmYXVsdFRpbWVvdXRJbnRl
cnZhbEV2CiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNHNfZGVmYXVsdFRpbWVv
dXRJbnRlcnZhbEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTI1c2V0RGVmYXVs
dFRpbWVvdXRJbnRlcnZhbEVkCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U1MHNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5RVJLTjNXVEY2
U3RyaW5nRVM0X1M0XwotX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVS
S05TXzRLVVJMRQorX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNnNldFVSTEVSS05T
XzNVUkxFCiBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI1Zmx1c2hFdgogX19aTjdX
ZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNmRlY29kZUVQS2NtCiBfX1pON1dlYkNvcmUxOVRl
eHRSZXNvdXJjZURlY29kZXJDMUVSS04zV1RGNlN0cmluZ0VSS05TXzEyVGV4dEVuY29kaW5nRWIK
QEAgLTY3Miw3ICs2NzEsNiBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2FibGVyRDFF
dgogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5hdmFpbGFi
aWxpdHlSZWFzb25FTlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCiBfX1pON1dlYkNv
cmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MzdzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklz
SGlkZGVuRWIKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3Q0NHNldFBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uV2l0aERlc2NyaXB0aW9uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uRVJLTjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRP
YmplY3QyMWlzUmVwbGFjZW1lbnRPYnNjdXJlZEV2CiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFu
ZGxlQ2xpZW50MTZkaWRSZWNlaXZlQnVmZmVyRVBOU18xNFJlc291cmNlSGFuZGxlRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFaQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhh
bmRsZUNsaWVudDIwd2lsbFNlbmRSZXF1ZXN0QXN5bmNFUE5TXzE0UmVzb3VyY2VIYW5kbGVFUktO
U18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE2UmVzb3VyY2VSZXNwb25zZUUKIF9fWk43V2ViQ29y
ZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQyMndpbGxDYWNoZVJlc3BvbnNlQXN5bmNFUE5TXzE0UmVz
b3VyY2VIYW5kbGVFUDE5TlNDYWNoZWRVUkxSZXNwb25zZQpAQCAtNjg4LDkgKzY4Niw4IEBAIF9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVSS04z
V1RGMTJBdG9taWNTdHJpbmdFUktOCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNl
MTlzZXRUZXh0RW5jb2RpbmdOYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTIwc2V0U3VnZ2VzdGVkRmlsZW5hbWVFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjRzZXRFeHBlY3RlZENvbnRlbnRMZW5n
dGhFeAotX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTZzZXRVUkxFUktOU180S1VS
TEUKK19fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNfM1VSTEUK
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2VDMkV2Ci1fX1pON1dlYkNvcmUyMFJl
c291cmNlUmVzcG9uc2VCYXNlQzJFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0V4UzdfUzdfCiBf
X1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yN3Nfc3RhdGVFCiBfX1pON1dlYkNvcmUy
MFVzZXJHZXN0dXJlSW5kaWNhdG9yQzFFTlNfMjZQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZUUK
IF9fWk43V2ViQ29yZTIwVXNlckdlc3R1cmVJbmRpY2F0b3JEMUV2CkBAIC03MTEsNyArNzA4LDYg
QEAgX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMXJlc3VtZVBlbmRpbmdSZXF1
ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIyc3VzcGVuZFBlbmRp
bmdSZXF1ZXN0c0V2CiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIzc2NoZWR1
bGVTdWJyZXNvdXJjZUxvYWRFUE5TXzVGcmFtZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1
UmVzb3VyY2VSZXF1ZXN0RU5TXzIwUmVzb3VyY2VMb2FkUHJpb3JpdHlFUktOU18yMVJlc291cmNl
TG9hZGVyT3B0aW9uc0UKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjRzY2hl
ZHVsZVBsdWdpblN0cmVhbUxvYWRFUE5TXzVGcmFtZUVQTlNfMzJOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQotX19aTjdXZWJDb3JlMjFSZXNv
dXJjZUxvYWRTY2hlZHVsZXIyN2Nyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZEVQTlNfMTRSZXNv
dXJjZUxvYWRlckVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIzMm5vdGlmeURpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0RVBOU18xNFJlc291cmNlTG9hZGVy
RQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXI2cmVtb3ZlRVBOU18xNFJlc291
cmNlTG9hZGVyRQogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXJDMkV2CkBAIC04
MDMsMTMgKzc5OSwxMyBAQCBfX1pON1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFz
ZUMyRXYKIF9fWk43V2ViQ29yZTI3Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI3RGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrMTRzZXRPcmllbnRhdGlvbkVOM1dURjEwUGFzc1JlZlB0
cklOU18yMURldmljZU9yaWVudGF0aW9uRGF0YUVFRQogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2tDMUV2Ci1fX1pON1dlYkNvcmUyN3Byb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbEVSS05TXzRLVVJMRVMyXworX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWxFUktOU18zVVJMRVMyXwogX19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tp
ZUNoYW5nZXNFUEZ2dkUKIF9fWk43V2ViQ29yZTI4RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjEyYWRkVXNlclNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRz
RUVFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xNGFkZEF1dGhv
clNoZWV0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE4U3R5bGVTaGVldENvbnRlbnRzRUVFCiBfX1pO
N1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29y
ZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vz
c2lvbkVSS05TXzRLVVJMRVM1XworX19aTjdXZWJDb3JlMjljb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV8KIF9fWk43
V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9fWk43V2ViQ29yZTMw
aG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43
V2ViQ29yZTMwaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFu
Z2UKQEAgLTgxOSw2ICs4MTUsMTEgQEAgX19aTjdXZWJDb3JlMzFDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUzM3N0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTExbW92ZVdpZGdldHNFdgogX19aTjdXZWJDb3JlMzdX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlMzVzX3dpZGdldEhpZXJhcmNoeVVw
ZGF0ZVN1c3BlbmRDb3VudEUKK19fWk43V2ViQ29yZTNVUkwxMGludmFsaWRhdGVFdgorX19aTjdX
ZWJDb3JlM1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlM1VSTEMxRVA1TlNVUkwKK19fWk43V2ViQ29yZTNVUkxDMUVQSzdfX0NGVVJMCitf
X1pON1dlYkNvcmUzVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTNtYWNF
UktOU18xMENyZWRlbnRpYWxFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNfMjNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUUKIF9fWk43V2ViQ29yZTQwcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1Zp
ZXdwb3J0U2l6ZUVSTlNfMThWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfN0ludFNpemVFZgpAQCAtODMz
LDExICs4MzQsNiBAQCBfX1pON1dlYkNvcmU0Rm9udEMxRXYKIF9fWk43V2ViQ29yZTRGb250YVNF
UktTMF8KIF9fWk43V2ViQ29yZTRJY29uMThjcmVhdGVJY29uRm9yRmlsZXNFUktOM1dURjZWZWN0
b3JJTlMxXzZTdHJpbmdFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJDb3Jl
NEljb25EMUV2Ci1fX1pON1dlYkNvcmU0S1VSTDEwaW52YWxpZGF0ZUV2Ci1fX1pON1dlYkNvcmU0
S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3RyaW5nVGFnRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJD
b3JlNEtVUkxDMUVQNU5TVVJMCi1fX1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKLV9fWk43
V2ViQ29yZTRLVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTBy
ZW5kZXJSZWN0RVBiCiBfX1pON1dlYkNvcmU0Tm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NS
ZWZQdHJJUzBfRUVSaU5TXzE0QXR0YWNoQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU0Tm9kZTExcmVt
b3ZlQ2hpbGRFUFMwX1JpCkBAIC0xMDQxLDIyICsxMDM3LDIzIEBAIF9fWk43V2ViQ29yZTdSdW5M
b29wOVRpbWVyQmFzZUQyRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMTlhbGxvd3NSb3VuZGluZ0hh
Y2tzRXYKIF9fWk43V2ViQ29yZTdUZXh0UnVuMjFzX2FsbG93c1JvdW5kaW5nSGFja3NFCiBfX1pO
N1dlYkNvcmU3VGV4dFJ1bjIyc2V0QWxsb3dzUm91bmRpbmdIYWNrc0ViCi1fX1pON1dlYkNvcmU3
Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TXzRLVVJMRQorX19aTjdXZWJDb3JlN2Nvb2tpZXNF
UEtOU184RG9jdW1lbnRFUktOU18zVVJMRQogX19aTjdXZWJDb3JlN2pzQXJyYXlFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dURjEwUGFzc1JlZlB0cklOU18xM0RP
TVN0cmluZ0xpc3RFRUUKIF9fWk43V2ViQ29yZTdtYWtlUkdCRWlpaQogX19aTjdXZWJDb3JlN3Jl
cGxhY2VFUk4zV1RGNlN0cmluZ0VSS05TXzE3UmVndWxhckV4cHJlc3Npb25FUktTMV8KIF9fWk43
V2ViQ29yZTd0b0ludDY0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVl
RU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQorX19aTjdXZWJDb3JlOEJsb2JE
YXRhMTBhcHBlbmRCbG9iRVJLTlNfM1VSTEV4eAogX19aTjdXZWJDb3JlOEJsb2JEYXRhMTRzZXRD
b250ZW50VHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThDU1NWYWx1ZTdkZXN0cm95
RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19aTjdXZWJDb3JlOERv
Y3VtZW50MTJ1cGRhdGVMYXlvdXRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTNjcmVhdGVFbGVt
ZW50RVJLTlNfMTNRdWFsaWZpZWROYW1lRWIKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0Y3JlYXRl
VGV4dE5vZGVFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmU4RG9jdW1lbnQxN3NldEZvY3Vz
ZWRFbGVtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzdFbGVtZW50RUVFTlNfMTRGb2N1c0RpcmVj
dGlvbkUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQYWdlQm94VmlzaWJsZUVpCiBfX1pON1dl
YkNvcmU4RG9jdW1lbnQxNnNob3J0Y3V0SWNvblVSTHNFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTdzZXRGb2N1c2VkRWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVFRU5TXzE0
Rm9jdXNEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyMHN0eWxlUmVzb2x2ZXJDaGFu
Z2VkRU5TXzIzU3R5bGVSZXNvbHZlclVwZGF0ZUZsYWdFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQy
MmNyZWF0ZURvY3VtZW50RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MjNkaWRBZGRX
aGVlbEV2ZW50SGFuZGxlckV2CkBAIC0xMDc1LDggKzEwNzIsMTEgQEAgX19aTjdXZWJDb3JlOEZv
cm1EYXRhNmRlY29kZUVSTjNXVEY3RGVjb2RlckUKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYK
IF9fWk43V2ViQ29yZThHcmFkaWVudDEyYWRkQ29sb3JTdG9wRWZSS05TXzVDb2xvckUKIF9fWk43
V2ViQ29yZThHcmFkaWVudEMxRVJLTlNfMTBGbG9hdFBvaW50RVMzXworX19aTjdXZWJDb3JlOEdy
YWRpZW50RDFFdgogX19aTjdXZWJDb3JlOFBvc2l0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NE5vZGVFRUVpTlMwXzEwQW5jaG9yVHlwZUUKK19fWk43V2ViQ29yZThTZXR0aW5nczEzZ1FUS2l0
RW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczE0c2V0SmF2YUVuYWJsZWRFYgorX19aTjdX
ZWJDb3JlOFNldHRpbmdzMTVzZXRRVEtpdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdz
MTZzZXRJbWFnZXNFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0U2NyaXB0RW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFVzZXNQYWdlQ2FjaGVFYgpAQCAtMTEw
NCw3ICsxMTA0LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNp
emFibGVFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCi1fX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU180S1VSTEUKK19f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkVSS05TXzNVUkxF
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsRXYKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI3c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI3c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5RWIKQEAgLTExNDIs
NyArMTE0Miw2IEBAIF9fWk43V2ViQ29yZTlGb250Q2FjaGUyOXB1cmdlSW5hY3RpdmVGb250RGF0
YUlmTmVlZGVkRXYKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWUxMWFwcGVuZENoaWxkRU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzVGcmFtZUVFRQogX19aTjdXZWJDb3JlOUZyYW1lVHJlZTdzZXROYW1lRVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWU5Y2xlYXJOYW1lRXYK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MTFmb3JjZUxheW91dEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJzZXRNZWRp
YVR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTJ0aWxlZEJhY2tp
bmdFdgpAQCAtMTE2MiwxMiArMTE2MSwxMiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRU
cmFja3NSZXBhaW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTd3aWxsRW5kTGl2ZVJlc2l6
ZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MThlbmFibGVBdXRvU2l6ZU1vZGVFYlJLTlNfN0lu
dFNpemVFUzNfCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTh1cGRhdGVDb250cm9sVGludHNFdgot
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNv
cmU5RnJhbWVWaWV3MTlzY3JvbGxFbGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRS
ZWN0RQotX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwc2V0Q2FuSGF2ZVNjcm9sbGJhcnNFYgorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzE5d2lsbFN0YXJ0TGl2ZVJlc2l6ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjBlbnRlckNvbXBvc2l0aW5nTW9kZUV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3
MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNfMTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJlcGFpbnRzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNo
RGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFyZXN1bWVBbmltYXRp
bmdJbWFnZXNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIyc2V0QmFzZUJhY2tncm91bmRDb2xv
ckVSS05TXzVDb2xvckUKQEAgLTExNzcsMTMgKzExNzYsMTQgQEAgX19aTjdXZWJDb3JlOUZyYW1l
VmlldzI0cGFpbnRDb250ZW50c0ZvclNuYXBzaG90RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdJbnQKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvckVO
U18yMVNjcm9sbFBpbm5pbmdCZWhhdmlvckUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVz
dFBhZ2VIZWlnaHREZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjZhZGp1
c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZUV2Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRBdXRv
U2l6ZUZpeGVkTWluaW11bUhlaWdodEVpCitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjlzZXRTaG91
bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRWaXN1
YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50RWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3NldFNj
cm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzM3dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZUV2CiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzhzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldEV2CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzlmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFt
ZXNFdgorX19aTjdXZWJDb3JlOUZyYW1lVmlldzZjcmVhdGVFUk5TXzVGcmFtZUUKIF9fWk43V2Vi
Q29yZTlIVE1MTmFtZXMxMGxpc3RpbmdUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTF0ZXh0
YXJlYVRhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXMxMnNlbGVjdGVkQXR0ckUKQEAgLTEyNTMs
MTQgKzEyNTMsMTQgQEAgX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE2c3luY0xvY2FsU3RvcmFnZUV2
CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMTdjbG9zZUxvY2FsU3RvcmFnZUV2CiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMThhZGRWaXNpdGVkTGlua0hhc2hFeQogX19aTjdXZWJDb3JlOVBhZ2VHcm91
cDE4bnVtYmVyT2ZQYWdlR3JvdXBzRXYKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJT
Y3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRL
VVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIz
VXNlclNjcmlwdEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQor
X19aTjdXZWJDb3JlOVBhZ2VHcm91cDIwYWRkVXNlclNjcmlwdFRvV29ybGRFUE5TXzE1RE9NV3Jh
cHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVO
UzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5T
XzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMHJl
bW92ZUFsbFVzZXJDb250ZW50RXYKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMXJlbW92ZUFsbFZp
c2l0ZWRMaW5rc0V2Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjRhZGRVc2VyU3R5bGVTaGVldFRv
V29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEtVUkxFUktO
UzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjVVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzRU5TXzE0VXNlclN0eWxlTGV2ZWxFTlNfMjJVc2VyU3R5bGVJbmpl
Y3Rpb25UaW1lRQotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI1cmVtb3ZlVXNlclNjcmlwdEZyb21X
b3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTlQYWdl
R3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktO
M1dURjZTdHJpbmdFUktOU18zVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25P
dmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHls
ZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKK19fWk43V2ViQ29yZTlQYWdlR3Jv
dXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNf
M1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnJlbW92ZVVzZXJTY3JpcHRzRnJvbVdvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNnNldFNob3Vs
ZFRyYWNrVmlzaXRlZExpbmtzRWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJT
dHlsZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzRLVVJMRQorX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDI5cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGRFUE5TXzE1
RE9NV3JhcHBlcldvcmxkRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAzMGNsb3Nl
SWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlc0V2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzByZW1v
dmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRQogX19aTjdX
ZWJDb3JlOVBhZ2VHcm91cDlwYWdlR3JvdXBFUktOM1dURjZTdHJpbmdFCkBAIC0xMjg2LDcgKzEy
ODYsNiBAQCBfX1pON1dlYkNvcmU5cGFnZUNhY2hlRXYKIF9fWk43V2ViQ29yZTlwbGFpblRleHRF
UEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckViCiBfX1pON1dlYkNvcmU5dG9F
bGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5dW5pb25SZWN0RVJLTjNXVEY2VmVj
dG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQotX19aTjdXZWJD
b3JlMTNTY3JpcHRHQ0V2ZW50MTFnZXRIZWFwU2l6ZUVSTlNfOEhlYXBJbmZvRQogX19aTkszSlND
OEJpbmRpbmdzMTBSb290T2JqZWN0MTJnbG9iYWxPYmplY3RFdgogX19aTkszV1RGNlN0cmluZzE0
Y3JlYXRlQ0ZTdHJpbmdFdgogX19aTks3V2ViQ29yZTEwQ3JlZGVudGlhbDExaGFzUGFzc3dvcmRF
dgpAQCAtMTMxNSw4ICsxMzE0LDYgQEAgX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4Y29udGVu
dHNUb1Jvb3RWaWV3RVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmlldzE4
dmlzaWJsZUNvbnRlbnRSZWN0RU5TXzE0U2Nyb2xsYWJsZUFyZWEzNlZpc2libGVDb250ZW50UmVj
dEluY2x1ZGVzU2Nyb2xsYmFyc0UKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcyM3Jvb3RWaWV3
VG9Ub3RhbENvbnRlbnRzRVJLTlNfOEludFBvaW50RQogX19aTks3V2ViQ29yZTEwU2Nyb2xsVmll
dzMwc2Nyb2xsT2Zmc2V0UmVsYXRpdmVUb0RvY3VtZW50RXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzRoaWRlRXYKLV9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzRzaG93RXYKIF9fWk5LN1dlYkNv
cmUxMFN0b3JhZ2VNYXA2bGVuZ3RoRXYKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA3Z2V0SXRl
bUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA4Y29udGFpbnNFUktO
M1dURjZTdHJpbmdFCkBAIC0xMzczLDcgKzEzNzAsNiBAQCBfX1pOSzdXZWJDb3JlMTJUZXh0SXRl
cmF0b3I0bm9kZUV2CiBfX1pOSzdXZWJDb3JlMTJUZXh0SXRlcmF0b3I1cmFuZ2VFdgogX19aTks3
V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE0Y2hpbGROb2RlQ291bnRFdgogX19aTks3V2ViQ29yZTEz
Q29udGFpbmVyTm9kZTljaGlsZE5vZGVFagotX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyN3Nl
dFNpemVFUktOU185RmxvYXRTaXplRQogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjE4YWNj
dW11bGF0ZWRPcGFjaXR5RXYKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGdldERlYnVn
Qm9yZGVySW5mb0VSTlNfNUNvbG9yRVJmCiBfX1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMjZi
YWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZUV2CkBAIC0xNDA2LDcgKzE0MDIsNyBAQCBfX1pOSzdX
ZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQN05TRXJyb3JFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxMHJlcXVlc3RVUkxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMWZy
YW1lTG9hZGVyRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFyZXNwb25zZVVSTEV2
Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3VyY2VFUktOU180S1VSTEUK
K19fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFzdWJyZXNvdXJjZUVSS05TXzNVUkxFCiBf
X1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEybWFpblJlc291cmNlRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyMTN1cmxGb3JIaXN0b3J5RXYKIF9fWk5LN1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTR1bnJlYWNoYWJsZVVSTEV2CkBAIC0xNDE3LDcgKzE0MTMsNiBAQCBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjE3cGFyc2VkQXJjaGl2ZURhdGFFdgogX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxOG1haW5SZXNvdXJjZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjE5aXNMb2FkaW5nSW5BUElTZW5zZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1
bWVudExvYWRlcjE5b3JpZ2luYWxSZXF1ZXN0Q29weUV2Ci1fX1pOSzdXZWJDb3JlMTREb2N1bWVu
dExvYWRlcjIxYXJjaGl2ZVJlc291cmNlRm9yVVJMRVJLTlNfNEtVUkxFCiBfX1pOSzdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjI4dXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZUV2CiBfX1pOSzdX
ZWJDb3JlMTREb2N1bWVudExvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXI5aXNMb2FkaW5nRXYKQEAgLTE0MzAsNiArMTQyNSw3IEBAIF9fWk5LN1dlYkNvcmUxNEZyYW1l
U2VsZWN0aW9uMzFnZXRDbGlwcGVkVmlzaWJsZVRleHRSZWN0YW5nbGVzRVJOM1dURjZWZWN0b3JJ
TlNfCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjM2cm9vdEVkaXRhYmxlRWxlbWVudE9y
RG9jdW1lbnRFbGVtZW50RXYKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uNmJvdW5kc0Vi
CiBfX1pOSzdXZWJDb3JlMTRJbnNlcnRpb25Qb2ludDhpc0FjdGl2ZUV2CitfX1pOSzdXZWJDb3Jl
MTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxNFJlbmRlckxp
c3RJdGVtMTBtYXJrZXJUZXh0RXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNGRhdGFF
dgogX19aTks3V2ViQ29yZTE0UmVzb3VyY2VCdWZmZXI0c2l6ZUV2CkBAIC0xNDQzLDcgKzE0Mzks
NyBAQCBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIxbW91c2VFbnRlcmVkU2Nyb2xsYmFy
RVBOU185U2Nyb2xsYmFyRQogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMm1vdXNlRXhp
dGVkQ29udGVudEFyZWFFdgogX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyM21vdXNlRW50
ZXJlZENvbnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZU1v
dmVkSW5Db250ZW50QXJlYUV2Ci1fX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEwY2FuRGlz
cGxheUVSS05TXzRLVVJMRQorX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3Bs
YXlFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMXRvUmF3U3RyaW5n
RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTJpc29sYXRlZENvcHlFdgogX19aTks3
V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xNmNhbkFjY2Vzc1N0b3JhZ2VFUEtTMF9OUzBfMjVTaG91
bGRBbGxvd0Zyb21UaGlyZFBhcnR5RQpAQCAtMTUwMywxMCArMTQ5OSwxMSBAQCBfX1pOSzdXZWJD
b3JlMTdSZXNvdXJjZUVycm9yQmFzZThsYXp5SW5pdEV2CiBfX1pOSzdXZWJDb3JlMThQbGF0Zm9y
bVBhc3RlYm9hcmQxMWNoYW5nZUNvdW50RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFj
a2luZzExY29udGVudHNCb3hFdgogX19aTks3V2ViQ29yZTE4UmVuZGVyTGF5ZXJCYWNraW5nMjBj
b21wb3NpdGluZ0xheWVyVHlwZUV2CitfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVy
MTFpc1N1c3BlbmRlZEV2CiBfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjRudW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnNFUE5TXzhEb2N1bWVudEUKK19fWk5LN1dlYkNvcmUxOUFuaW1h
dGlvbkNvbnRyb2xsZXIzM2FsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZEV2CiBfX1pO
SzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMTJnZXRIaWdobGlnaHRFUE5TXzlIaWdobGln
aHRFCiBfX1pOSzdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyMjlidWlsZE9iamVjdEZvckhp
Z2hsaWdodGVkTm9kZUV2Ci1fX1pOSzdXZWJDb3JlMTRJbnNwZWN0b3JWYWx1ZTEydG9KU09OU3Ry
aW5nRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxMGh0dHBNZXRob2RFdgog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTE1aHR0cEhlYWRlckZpZWxkRVBLYwog
X19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTIwZmlyc3RQYXJ0eUZvckNvb2tpZXNF
dgpAQCAtMTUxNiw2ICsxNTEzLDcgQEAgX19aTks3V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZTdpc0VtcHR5RXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U4aHR0cEJvZHlF
dgogX19aTks3V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIxMWlzUHJlbG9hZGVkRVJLTjNX
VEY2U3RyaW5nRQogX19aTks3V2ViQ29yZTIwSFRNTFRhYmxlQ2VsbEVsZW1lbnQ5Y2VsbEFib3Zl
RXYKK19fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0MjFpc1JlcGxhY2VtZW50T2Jz
Y3VyZWRFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmlzQXR0YWNobWVu
dEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTEybGFzdE1vZGlmaWVkRXYK
IF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTRodHRwU3RhdHVzQ29kZUV2CkBA
IC0xNTMzLDcgKzE1MzEsNyBAQCBfX1pOSzdXZWJDb3JlMjFCYWNrRm9yd2FyZENvbnRyb2xsZXI5
YmFja0NvdW50RXYKIF9fWk5LN1dlYkNvcmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjEzY29va2ll
U3RvcmFnZUV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxMXNjcm9sbExh
eWVyRXYKIF9fWk5LN1dlYkNvcmUyMVJlbmRlckxheWVyQ29tcG9zaXRvcjE1cm9vdFJlbmRlckxh
eWVyRXYKLV9fWk5LN1dlYkNvcmUyMVVzZXJDb250ZW50VVJMUGF0dGVybjdtYXRjaGVzRVJLTlNf
NEtVUkxFCitfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzNVUkxFCiBfX1pOSzdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTExbWF4aW11bVNp
emVFdgogX19aTks3V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2UyMGF1dGhlbnRpY2F0
aW9uQ2xpZW50RXYKIF9fWk5LN1dlYkNvcmUyM0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lMTVmaXJz
dExheW91dERvbmVFdgpAQCAtMTU0NywzMyArMTU0NSwyOSBAQCBfX1pOSzdXZWJDb3JlMjdBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UxOHByb3Bvc2VkQ3JlZGVudGlhbEV2CiBfX1pOSzdXZWJD
b3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UyMHByZXZpb3VzRmFpbHVyZUNvdW50RXYK
IF9fWk5LN1dlYkNvcmUyN0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTVlcnJvckV2CiBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U2aXNOdWxsRXYKK19fWk5LN1dl
YkNvcmUzVVJMMTBwcm90b2NvbElzRVBLYworX19aTks3V2ViQ29yZTNVUkwxMWNyZWF0ZUNGVVJM
RXYKK19fWk5LN1dlYkNvcmUzVVJMMTFpc0xvY2FsRmlsZUV2CitfX1pOSzdXZWJDb3JlM1VSTDEy
YmFzZUFzU3RyaW5nRXYKK19fWk5LN1dlYkNvcmUzVVJMMTRmaWxlU3lzdGVtUGF0aEV2CitfX1pO
SzdXZWJDb3JlM1VSTDE3bGFzdFBhdGhDb21wb25lbnRFdgorX19aTks3V2ViQ29yZTNVUkwxOGZy
YWdtZW50SWRlbnRpZmllckV2CitfX1pOSzdXZWJDb3JlM1VSTDIxaGFzRnJhZ21lbnRJZGVudGlm
aWVyRXYKK19fWk5LN1dlYkNvcmUzVVJMNGhvc3RFdgorX19aTks3V2ViQ29yZTNVUkw0cGFzc0V2
CitfX1pOSzdXZWJDb3JlM1VSTDRwYXRoRXYKK19fWk5LN1dlYkNvcmUzVVJMNHBvcnRFdgorX19a
Tks3V2ViQ29yZTNVUkw0dXNlckV2CitfX1pOSzdXZWJDb3JlM1VSTDVxdWVyeUV2CitfX1pOSzdX
ZWJDb3JlM1VSTDhwcm90b2NvbEV2CitfX1pOSzdXZWJDb3JlM1VSTGN2UDVOU1VSTEV2CiBfX1pO
SzdXZWJDb3JlNEZvbnQ1d2lkdGhFUktOU183VGV4dFJ1bkVQTjNXVEY3SGFzaFNldElQS05TXzE0
U2ltcGxlRm9udERhdGFFTlM0XzdQdHJIYXNoSVM4X0VFTlM0XzEwSGFzaFRyYWl0c0lTOF9FRUVF
UE5TXzEzR2x5cGhPdmVyZmxvd0UKIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4dEVQTlNfMTVH
cmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaU5TMF8yNEN1
c3RvbUZvbnROb3RSZWFkeUFjdGlvbkUKIF9fWk5LN1dlYkNvcmU0Rm9udGVxRVJLUzBfCi1fX1pO
SzdXZWJDb3JlNEtVUkwxMHByb3RvY29sSXNFUEtjCi1fX1pOSzdXZWJDb3JlNEtVUkwxMWNyZWF0
ZUNGVVJMRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDExaXNMb2NhbEZpbGVFdgotX19aTks3V2ViQ29y
ZTRLVVJMMTJiYXNlQXNTdHJpbmdFdgotX19aTks3V2ViQ29yZTRLVVJMMTRmaWxlU3lzdGVtUGF0
aEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDE4ZnJhZ21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDIxaGFzRnJh
Z21lbnRJZGVudGlmaWVyRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRob3N0RXYKLV9fWk5LN1dlYkNv
cmU0S1VSTDRwYXNzRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDRwYXRoRXYKLV9fWk5LN1dlYkNvcmU0
S1VSTDRwb3J0RXYKLV9fWk5LN1dlYkNvcmU0S1VSTDR1c2VyRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDVxdWVyeUV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw4cHJvdG9jb2xFdgotX19aTks3V2ViQ29yZTRL
VVJMY3ZQNU5TVVJMRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTks3
V2ViQ29yZTROb2RlMTNvd25lckRvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNj
ZW5kYW50T2ZFUEtTMF8KLV9fWk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJO
M1dURjExTGlzdEhhc2hTZXRJTlNfNEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdX
ZWJDb3JlNE5vZGUyOGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdgotI2lmIEVOQUJMRShT
VFlMRV9TQ09QRUQpCi1fX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxl
Q2hpbGRyZW5FdgotI2VuZGlmCiBfX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5L
N1dlYkNvcmU0Tm9kZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgpA
QCAtMTcyOCw5ICsxNzIyLDEyIEBAIF9oYXNDYXNlSW5zZW5zaXRpdmVTdWJzdHJpbmcKIF9oYXND
YXNlSW5zZW5zaXRpdmVTdWZmaXgKIF9zdHJpbmdJc0Nhc2VJbnNlbnNpdGl2ZUVxdWFsVG9TdHJp
bmcKIF9zdWdnZXN0ZWRGaWxlbmFtZVdpdGhNSU1FVHlwZQorX3drQ0FMYXllckVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bldpdGhCbG9jaworX3drQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGlu
ZwogX3drQ0dDb250ZXh0R2V0U2hvdWxkU21vb3RoRm9udHMKIF93a0NHQ29udGV4dElzUERGQ29u
dGV4dAogX3drQ0dDb250ZXh0UmVzZXRDbGlwCitfd2tDR1BhdGhBZGRSb3VuZGVkUmVjdAogX3dr
Q0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlQW5kVHJhbnNmb3JtCiBfd2tDVFJ1bkdldEluaXRpYWxB
ZHZhbmNlCiBfd2tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lCkBAIC0xNzQxLDYgKzE3
MzgsNyBAQCBfd2tDb3B5TlNVUkxSZXNwb25zZUNlcnRpZmljYXRlQ2hhaW4KIF93a0NvcHlOU1VS
TFJlc3BvbnNlU3RhdHVzTGluZQogX3drQ29weVJlcXVlc3RXaXRoU3RvcmFnZVNlc3Npb24KIF93
a0NyZWF0ZUNUTGluZVdpdGhVbmlDaGFyUHJvdmlkZXIKK193a0NyZWF0ZUNUVHlwZXNldHRlcldp
dGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zCiBfd2tDcmVhdGVDdXN0b21DRlJlYWRTdHJlYW0K
IF93a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbgogX3drRGVsZXRlQWxsSFRUUENvb2tpZXMK
QEAgLTE4NjUsOSArMTg2Myw4IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyN21vdXNlVXBF
UDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjhrZXlFdmVudEVQN05TRXZlbnQK
IF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyOW1vdXNlRG93bkVQN05TRXZlbnQKIF9fWk43V2Vi
Q29yZTEzdG9EZXZpY2VTcGFjZUVSS05TXzlGbG9hdFJlY3RFUDhOU1dpbmRvdwotX19aTjdXZWJD
b3JlMTNnZXRSYXdDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VS
TEVTNV9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRU5TNl8xNUNyYXNoT25PdmVyZmxvd0VF
RQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQxNWRyYXdOYXRpdmVJbWFnZUVQN0NHSW1hZ2VSS05TXzlGbG9h
dFNpemVFTlNfMTBDb2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVTOV9OU18xN0NvbXBvc2l0ZU9w
ZXJhdG9yRU5TXzlCbGVuZE1vZGVFTlNfMTZJbWFnZU9yaWVudGF0aW9uRQorX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0NvbnRleHRDMUVQOUNHQ29udGV4dAogX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJl
cXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keUVSS1MwXwogX19a
TjdXZWJDb3JlMTZGb250UGxhdGZvcm1EYXRhQzFFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50
YXRpb25FTlNfMTZGb250V2lkdGhWYXJpYW50RQogX19aTjdXZWJDb3JlMTZGb250UGxhdGZvcm1E
YXRhQzJFUDZOU0ZvbnRmYmJiTlNfMTVGb250T3JpZW50YXRpb25FTlNfMTZGb250V2lkdGhWYXJp
YW50RQpAQCAtMTg3Niw4ICsxODczLDggQEAgX19aTjdXZWJDb3JlMTZlbmNsb3NpbmdJbnRSZWN0
RVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTE5YXBwbGljYXRpb25Jc1NhZmFyaUV2CiBfX1pON1dl
YkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjRjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnRFUDdO
U0V2ZW50UDZOU1ZpZXcKIF9fWk43V2ViQ29yZTIwUGxhdGZvcm1FdmVudEZhY3RvcnkyN2NyZWF0
ZVBsYXRmb3JtS2V5Ym9hcmRFdmVudEVQN05TRXZlbnQKLV9fWk43V2ViQ29yZTIwYnVpbHRJblBE
RlBsdWdpbk5hbWVFdgogX19aTjdXZWJDb3JlMjBhcHBsaWNhdGlvbklzSFJCbG9ja0V2CitfX1pO
N1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVnaW5OYW1lRXYKIF9fWk43V2ViQ29yZTIxRGV2aWNlT3Jp
ZW50YXRpb25EYXRhNmNyZWF0ZUViZGJkYmRiYgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklz
QXBlcnR1cmVFdgogX19aTjdXZWJDb3JlMjFhcHBsaWNhdGlvbklzVmVyc2lvbnNFdgpAQCAtMTky
NCw4ICsxOTIxLDggQEAgX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFr
aW5nRXYKIF9fWk43V2ViQ29yZTMyYXBwbGljYXRpb25Jc0FPTEluc3RhbnRNZXNzZW5nZXJFdgog
X19aTjdXZWJDb3JlMzJjb250ZXh0TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudEV2CiBfX1pON1dl
YkNvcmUzMmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlRXYKLV9fWk43V2ViQ29yZTMz
cG9zdFNjcmlwdERvY3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzY29udGV4
dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50RXYKK19fWk43V2ViQ29yZTMzcG9zdFNjcmlwdERv
Y3VtZW50VHlwZURlc2NyaXB0aW9uRXYKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVsdFRocmVhZFZp
b2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjBUaHJlYWRW
aW9sYXRpb25Sb3VuZEUKIF9fWk43V2ViQ29yZTM0Y29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERp
cmVjdGlvbkV2CiBfX1pON1dlYkNvcmUzNWNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsRWIKQEAgLTE5NTEsOCArMTk0OCw4IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyOHN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmRFdgogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxhdGZvcm1X
aWRnZXRFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTZXaWRnZXRDMkVQNk5TVmlldwogX19aTjdXZWJD
b3JlN25zQ29sb3JFUktOU181Q29sb3JFCi1fX1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQ
b2ludAogX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks3Q0dQb2ludAorX19aTjdXZWJDb3JlOElu
dFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzdfTlNSZWN0
CiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y4X05TUG9pbnRFdgogX19aTks3V2ViQ29yZTE0
U2Nyb2xsYWJsZUFyZWExOHZpc2libGVDb250ZW50UmVjdEVOUzBfMzZWaXNpYmxlQ29udGVudFJl
Y3RJbmNsdWRlc1Njcm9sbGJhcnNFCkBAIC0xOTYyLDEwICsxOTU5LDEyIEBAIF9fWk5LN1dlYkNv
cmU3SW50U2l6ZWN2NkNHU2l6ZUV2CiBfX1pOSzdXZWJDb3JlOEludFBvaW50Y3Y4X05TUG9pbnRF
dgogX19aTks3V2ViQ29yZTlGbG9hdFJlY3RjdjdfTlNSZWN0RXYKIF9zdHJpbmdFbmNvZGluZ0Zv
clJlc291cmNlCitfd2tBVkFzc2V0UmVzb2x2ZWRVUkwKIF93a0FjY2Vzc2liaWxpdHlIYW5kbGVG
b2N1c0NoYW5nZWQKIF93a0FkdmFuY2VEZWZhdWx0QnV0dG9uUHVsc2VBbmltYXRpb24KIF93a0Nv
cHlBWFRleHRNYXJrZXJSYW5nZUVuZAogX3drQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQKK193
a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZQogX3drQ3JlYXRlQVhUZXh0TWFy
a2VyCiBfd2tDcmVhdGVBWFRleHRNYXJrZXJSYW5nZQogX3drQ3JlYXRlQVhVSUVsZW1lbnRSZWYK
QEAgLTE5NzMsNiArMTk3Miw4IEBAIF93a0NyZWF0ZU1lZGlhVUlCYWNrZ3JvdW5kVmlldwogX3dr
Q3JlYXRlTWVkaWFVSUNvbnRyb2wKIF93a0NyZWF0ZVVSTE5QYXN0ZWJvYXJkRmxhdm9yVHlwZU5h
bWUKIF93a0NyZWF0ZVVSTFBhc3RlYm9hcmRGbGF2b3JUeXBlTmFtZQorX3drQ3JlYXRlVk1QcmVz
c3VyZURpc3BhdGNoT25NYWluUXVldWUKK193a0N1cnNvcgogX3drRHJhd0JlemVsZWRUZXh0QXJl
YQogX3drRHJhd0JlemVsZWRUZXh0RmllbGRDZWxsCiBfd2tEcmF3Q2Fwc0xvY2tJbmRpY2F0b3IK
QEAgLTE5ODAsNiArMTk4MSw3IEBAIF93a0RyYXdGb2N1c1JpbmcKIF93a0RyYXdNZWRpYVNsaWRl
clRyYWNrCiBfd2tEcmF3TWVkaWFVSVBhcnQKIF93a0RyYXdUZXh0RmllbGRDZWxsRm9jdXNSaW5n
Citfd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkCiBfd2tHZXRBWFRl
eHRNYXJrZXJSYW5nZVR5cGVJRAogX3drR2V0QVhUZXh0TWFya2VyVHlwZUlECiBfd2tHZXRCeXRl
c0Zyb21BWFRleHRNYXJrZXIKQEAgLTIwMTMsNyArMjAxNSw5IEBAIF93a1FUTW92aWVSZXNvbHZl
ZFVSTAogX3drUVRNb3ZpZVNlbGVjdFByZWZlcnJlZEFsdGVybmF0ZXMKIF93a1FUTW92aWVTZXRT
aG93Q2xvc2VkQ2FwdGlvbnMKIF93a1FUTW92aWVWaWV3U2V0RHJhd1N5bmNocm9ub3VzbHkKK193
a1JlY29tbWVuZGVkU2Nyb2xsZXJTdHlsZQogX3drU2V0Q0dGb250UmVuZGVyaW5nTW9kZQorX3dr
U2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24KIF93a1NldERyYWdJ
bWFnZQogX3drU2V0TWV0YWRhdGFVUkwKIF93a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZwpAQCAtMjExMCwxMCArMjExNCw4IEBAIF9fWk43V2ViQ29yZTExSW1hZ2VTb3VyY2UyNnNf
YWNjZWxlcmF0ZWRJbWFnZURlY29kaW5nRQogX19aTjdXZWJDb3JlMTFJbWFnZVNvdXJjZTMzbWF4
aW11bUltYWdlU2l6ZUJlZm9yZVN1YnNhbXBsaW5nRXYKIF9fWk43V2ViQ29yZTExSW1hZ2VTb3Vy
Y2UzNnNldE1heGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0VqCiBfX1pON1dlYkNvcmUx
MU1hdGhNTE5hbWVzNGluaXRFdgotX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE1YWRkSW1hZ2VU
b0NhY2hlRVA3Q0dJbWFnZVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMThw
cnVuZURlYWRSZXNvdXJjZXNFdgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE4cHJ1bmVMaXZl
UmVzb3VyY2VzRWIKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUyMHJlbW92ZUltYWdlRnJvbUNh
Y2hlRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMWlzRW5kT2ZMaW5lRVJLTlNfMTVWaXNpYmxl
UG9zaXRpb25FCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwbW91c2VNb3ZlZEVQOFdlYkV2
ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjEwd2hlZWxFdmVudEVQOFdlYkV2ZW50CkBA
IC0yMjAwLDcgKzIyMDIsNiBAQCBfX1pON1dlYkNvcmUyOGNyZWF0ZUNHQ29sb3JXaXRoRGV2aWNl
V2hpdGVFZmYKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckMx
RVBLdGkKIF9fWk43V2ViQ29yZTMxTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvckQxRXYK
IF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc0RhaWppc2VuRGljdGlvbmFyeUV2Ci1fX1pON1dl
YkNvcmUzMmVuYWJsZUtVUkxTY2hlbWVDYW5vbmljYWxpemF0aW9uRWIKIF9fWk43V2ViQ29yZTMz
YXBwbGljYXRpb25Jc1RoZUVjb25vbWlzdE9uSVBob25lRXYKIF9fWk43V2ViQ29yZTQxaW5pdGlh
bGl6ZUhUVFBDb25uZWN0aW9uU2V0dGluZ3NPblN0YXJ0dXBFdgogX19aTjdXZWJDb3JlNEZvbnRD
MUVSS05TXzE2Rm9udFBsYXRmb3JtRGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU18xMkZvbnRTZWxl
Y3RvckVFRQpAQCAtMjIxNCw3ICsyMjE1LDYgQEAgX19aTjdXZWJDb3JlNUZyYW1lMjBkb2N1bWVu
dFNjYWxlQ2hhbmdlZEV2CiBfX1pON1dlYkNvcmU1RnJhbWUyMHNldFZpZXdwb3J0QXJndW1lbnRz
RVJLTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0UKIF9fWk43V2ViQ29yZTVGcmFtZTIxZGVlcGVzdE5v
ZGVBdExvY2F0aW9uRVA3Q0dQb2ludAogX19aTjdXZWJDb3JlNUZyYW1lMjF2aWV3cG9ydE9mZnNl
dENoYW5nZWRFdgotX19aTjdXZWJDb3JlNUZyYW1lMjZpbml0V2l0aFNpbXBsZUhUTUxEb2N1bWVu
dEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlNUZyYW1lMjdub2RlUmVz
cG9uZGluZ1RvQ2xpY2tFdmVudHNFUDdDR1BvaW50CiBfX1pON1dlYkNvcmU1RnJhbWUzMHNldFNp
bmdsZUxpbmVTZWxlY3Rpb25CZWhhdmlvckViCiBfX1pON1dlYkNvcmU1RnJhbWUzMmRpc3BhdGNo
UGFnZUhpZGVFdmVudEJlZm9yZVBhdXNlRXYKQEAgLTIyNTEsOSArMjI1MSw2IEBAIF9fWk43V2Vi
Q29yZTlGcmFtZVZpZXcyNHJlbmRlcmVkQ2hhcmFjdGVyc0V4Y2VlZEVqCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXRFUDdXQUtWaWV3CiBfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MzJzZXRDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdEVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM1c2V0VXNlQ3VzdG9tRml4ZWRQb3Np
dGlvbkxheW91dFJlY3RFYgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3cmVtb3ZlVmlzaXRlZExp
bmtFUktOU180S1VSTEUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dv
cmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMz
XzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzIzVXNlclNjcmlw
dEluamVjdGlvblRpbWVFTlNfMjVVc2VyQ29udGVudEluamVjdGVkRnJhbWVzRQotX19aTjdXZWJD
b3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJX
b3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18x
NUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18x
NFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKIF9fWk43V2ViQ29y
ZTlUaWxlQ2FjaGUxNGRyYWluTGF5ZXJQb29sRXYKIF9fWk43V2ViQ29yZTlUaWxlQ2FjaGUyMHNl
dExheWVyUG9vbENhcGFjaXR5RWoKIF9fWk5LN1dlYkNvcmUxMEZsb2F0UG9pbnRjdjdDR1BvaW50
RXYKQEAgLTIzMTUsNTIgKzIzMTIsMzEgQEAgX19aTks3V2ViQ29yZTdFbGVtZW50MjZmYXN0QXR0
cmlidXRlTG9va3VwQWxsb3dlZEVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk43V2ViQ29yZTIw
TG9nTm90WWV0SW1wbGVtZW50ZWRFCiBfX1pON1dlYkNvcmUyOG5vdEltcGxlbWVudGVkTG9nZ2lu
Z0NoYW5uZWxFdgogX19aTjdXZWJDb3JlMzZpbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNl
c3NhcnlFdgotI2VuZGlmIC8vICFMT0dfRElTQUJMRUQKKyNlbmRpZgogCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogX19aTjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXJDMUVQS2Np
CiBfX1pON1dlYkNvcmUyN05vRXhjZXB0aW9uQXNzZXJ0aW9uQ2hlY2tlckQxRXYKLSNlbmRpZiAv
LyAhQVNTRVJUX0RJU0FCTEVECisjZW5kaWYKIAogI2lmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQ
RVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKSAmJiAhUExBVEZPUk0oSU9TKQogX19aTjdXZWJD
b3JlN0ludFNpemVDMUVSSzdfTlNTaXplCiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXpl
RXYKICNlbmRpZgogCi1fd2tDQUxheWVyRW51bWVyYXRlUmVjdHNCZWluZ0RyYXduV2l0aEJsb2Nr
Ci1fd2tDRlVSTFJlcXVlc3RBbGxvd0FsbFBvc3RDYWNoaW5nCi1fd2tDR1BhdGhBZGRSb3VuZGVk
UmVjdAotX3drQ3JlYXRlQ1RUeXBlc2V0dGVyV2l0aFVuaUNoYXJQcm92aWRlckFuZE9wdGlvbnMK
LQogI2lmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0
ZQogX3drSU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlCiAjZW5kaWYKIAotI2lmICFQTEFURk9S
TShJT1MpCi1fd2tBVkFzc2V0UmVzb2x2ZWRVUkwKLV93a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlk
ZXJEaXNwbGF5TmFtZQotX3drU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3Jt
YXRpb24KLV93a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCi1fd2tDdXJzb3IK
LV93a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3JlU25vd0xlb3BhcmQKLV93a1JlY29tbWVu
ZGVkU2Nyb2xsZXJTdHlsZQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NyZWF0ZU1lbW9yeVN0YXR1c1By
ZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlCi0jZW5kaWYKLQotI2lmIFVTRShDT05U
RU5UX0ZJTFRFUklORykKLV93a0ZpbHRlckFkZERhdGEKLV93a0ZpbHRlckNyZWF0ZUluc3RhbmNl
Ci1fd2tGaWx0ZXJEYXRhQ29tcGxldGUKLV93a0ZpbHRlcklzQnVmZmVyaW5nCi1fd2tGaWx0ZXJJ
c01hbmFnZWRTZXNzaW9uCi1fd2tGaWx0ZXJXYXNCbG9ja2VkCi0jZW5kaWYKLQogI2lmICFQTEFU
Rk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAorX19a
TjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2
ZXM4X05TUmFuZ2UKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVh
ZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRhaW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQor
X19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2
ZXNFUDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdF
CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE4cmVtb3ZlQWx0ZXJu
YXRpdmVzRXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMjJhbHRl
cm5hdGl2ZXNGb3JDb250ZXh0RXkKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250
cm9sbGVyNWNsZWFyRXYKK19fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5h
dGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUVMbTBFTlMyXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfd2tDR0NvbnRleHRE
cmF3c1dpdGhDb3JyZWN0U2hhZG93T2Zmc2V0cwogX3drRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JC
ZWZvcmVMaW9uCiBfd2tOU0VsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YQpAQCAtMjM2OCwyOCAr
MjM0NCwxOCBAQCBfd2tOU0VsYXN0aWNEZWx0YUZvclRpbWVEZWx0YQogX3drTlNSZWJvdW5kRGVs
dGFGb3JFbGFzdGljRGVsdGEKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLV93a0NURm9udFRyYW5zZm9ybUdseXBo
cworI2lmICFQTEFURk9STShJT1MpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTA5MAorX3drQ3JlYXRlTWVtb3J5U3RhdHVzUHJlc3N1cmVDcml0aWNhbERpc3BhdGNoT25N
YWluUXVldWUKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKLV9fWk43V2ViQ29yZTI3
QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTVhZGRBbHRlcm5hdGl2ZXNFUktOM1dURjlSZXRh
aW5QdHJJMThOU1RleHRBbHRlcm5hdGl2ZXNFRQotX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIyMmFsdGVybmF0aXZlc0ZvckNvbnRleHRFeQotX19aTjdXZWJDb3JlMjdB
bHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI1Y2xlYXJFdgotX19aTjdXZWJDb3JlMjdBbHRlcm5h
dGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5Ci1fX1pON1dlYkNvcmUy
N0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE2c2hvd0FsdGVybmF0aXZlc0VQNk5TVmlld1JL
TlNfOUZsb2F0UmVjdEV5VTEzYmxvY2tfcG9pbnRlckZ2UDhOU1N0cmluZ0UKLV9fWk43V2ViQ29y
ZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1Jh
bmdlCi1fX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5T
QXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VFRQorI2lmIFBMQVRGT1JNKElPUykgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCitfd2tDVEZvbnRUcmFuc2Zvcm1H
bHlwaHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKDNEX1JFTkRFUklORykKIF9XZWJDb3JlSGFzM0RS
ZW5kZXJpbmcKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotX19aTjdXZWJDb3Jl
MTZGaWx0ZXJPcGVyYXRpb25zYVNFUktTMF8KLSNlbmRpZgotCiAjaWYgVVNFKEFQUEtJVCkKIF9f
Wk43V2ViQ29yZTZFZGl0b3IxM2xvd2VyY2FzZVdvcmRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjEz
dXBwZXJjYXNlV29yZEV2CkBAIC0yNDAxLDkgKzIzNjcsMjIgQEAgX19aTjdXZWJDb3JlOFNldHRp
bmdzMjBnQVZGb3VuZGF0aW9uRW5hYmxlZEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0QVZG
b3VuZGF0aW9uRW5hYmxlZEViCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLV9fWk43V2Vi
Q29yZThTZXR0aW5nczEzZ1FUS2l0RW5hYmxlZEUKLV9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0
UVRLaXRFbmFibGVkRWIKKyNpZiBFTkFCTEUoQkxPQikKK19fWk43V2ViQ29yZTEyYmxvYlJlZ2lz
dHJ5RXYKK19fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2
CitfX1pON1dlYkNvcmU3UmF3RGF0YUMxRXYKK19fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5k
RGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU183UmF3RGF0YUVFRXh4CitfX1pON1dlYkNvcmU4Qmxv
YkRhdGExMGFwcGVuZEZpbGVFUktOM1dURjZTdHJpbmdFeHhkCitfX1pON1dlYkNvcmU4QmxvYkRh
dGE2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTEyQmxvYkRhdGFJdGVtMTF0b0VuZE9mRmlsZUUKK19f
Wk43V2ViQ29yZTEyQmxvYlJlZ2lzdHJ5RDJFdgorX19aVFZON1dlYkNvcmUxMkJsb2JSZWdpc3Ry
eUUKK19fWlRWTjdXZWJDb3JlMTZCbG9iUmVnaXN0cnlJbXBsRQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxM3Bh
cnRpdGlvbk5hbWVFUktOM1dURjZTdHJpbmdFCitfd2tDYWNoZVBhcnRpdGlvbktleQogI2VuZGlm
CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMjQyMSwxOCArMjQwMCwxMyBAQCBfd2tTZXRDRlVS
TFJlcXVlc3RTaG91bGRDb250ZW50U25pZmYKIF93a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoQkxPQikKLV9fWk43V2ViQ29yZTEyYmxvYlJlZ2lzdHJ5RXYK
LV9fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3RyeUV2Ci1fX1pO
N1dlYkNvcmU3UmF3RGF0YUMxRXYKLV9fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kQmxvYkVS
S05TXzRLVVJMRXh4Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRG
aWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAotX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNyZWF0ZUV2Ci1f
X1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCi1fX1pON1dlYkNvcmUxMkJs
b2JSZWdpc3RyeUQyRXYKLV9fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCi1fX1pUVk43V2Vi
Q29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCitfd2tG
aWx0ZXJBZGREYXRhCitfd2tGaWx0ZXJDcmVhdGVJbnN0YW5jZQorX3drRmlsdGVyRGF0YUNvbXBs
ZXRlCitfd2tGaWx0ZXJJc0J1ZmZlcmluZworX3drRmlsdGVySXNNYW5hZ2VkU2Vzc2lvbgorX3dr
RmlsdGVyV2FzQmxvY2tlZAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAg
LTI0NTQsMTMgKzI0MjgsMTcgQEAgX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtNXRpdGxl
RXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTZhY3Rpb25FdgogX19aTks3V2ViQ29y
ZTE1Q29udGV4dE1lbnVJdGVtN2NoZWNrZWRFdgogX19aTks3V2ViQ29yZTE1Q29udGV4dE1lbnVJ
dGVtN2VuYWJsZWRFdgotI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQorI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitfX1pON1dlYkNvcmUxNkZpbHRlck9wZXJhdGlvbnNh
U0VSS1MwXworI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTM19DT05ESVRJT05BTF9SVUxFUykKIC5v
YmpjX2NsYXNzX25hbWVfRE9NQ1NTU3VwcG9ydHNSdWxlCiBfX1pON1dlYkNvcmUxMkRPTVdpbmRv
d0NTUzZjcmVhdGVFdgogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfMTJET01XaW5kb3dDU1NFCi0jZW5kaWYgLy8gRU5BQkxFKENT
UzNfQ09ORElUSU9OQUxfUlVMRVMpCisjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQ
UE9SVCkgfHwgRU5BQkxFKERSQUdHQUJMRV9SRUdJT04pCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTZhbm5vdGF0ZWRSZWdpb25zRXYKQEAgLTI0NzksNiArMjQ1NywxMCBAQCBfX1pON1dlYkNvcmU4
RHJhZ0RhdGFDMUVQMTFvYmpjX29iamVjdFJLTlNfOEludFBvaW50RVM1X05TXzEzRHJhZ09wZXJh
dGlvbkVOU18yMAogX19aTjdXZWJDb3JlOERyYWdEYXRhQzFFUktOM1dURjZTdHJpbmdFUktOU184
SW50UG9pbnRFUzdfTlNfMTNEcmFnT3BlcmF0aW9uRU5TXzIwRHJhZ0FwcGxpY2F0aW9uRmxhZ3NF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCitfX1pON1dlYkNvcmUz
Q0RNMThyZWdpc3RlckNETUZhY3RvcnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZh
dGVJbnRlcmZhY2VFRUVQUzBfRVBGYlJLTlMxXzZTdHJpbmdFRVBGYlNBX1NBX0UKKyNlbmRpZgor
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJ3ZWJr
aXRDYW5jZWxGdWxsU2NyZWVuRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKQEAgLTI1MjgsNyArMjUxMCw3IEBA
IF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlQzFFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFi
YXNlMTJkYXRhYmFzZVBhdGhFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlMjRzaG91bGRT
dG9wVGhyZWFkQWN0aXZpdHlFdgogX19aTks3V2ViQ29yZTEySWNvbkRhdGFiYXNlOWlzRW5hYmxl
ZEV2Ci0jZW5kaWYgLy8gRU5BQkxFKElDT05EQVRBQkFTRSkKKyNlbmRpZgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCiBfX1pON1dlYkNvcmU1Q29sb3JDMUVQN0NHQ29sb3IKQEAgLTI1
OTYsNiArMjU3OCwxOSBAQCBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEyY29udGFpbnNRdWFkRVJL
UzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29udGFpbnNQb2ludEVSS05TXzEwRmxvYXRQ
b2ludEUKICNlbmRpZgogCisjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCitfX1pON1dl
YkNvcmUxMlJlbmRlck9iamVjdDE5cmVzZXRUZXh0QXV0b3NpemluZ0V2CitfX1pON1dlYkNvcmU1
RnJhbWUyMnNldFRleHRBdXRvc2l6aW5nV2lkdGhFZgorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorX19aTjdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjJ1c2VyTWVkaWFBY2Nl
c3NHcmFudGVkRXYKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIxdXNlck1lZGlhQWNj
ZXNzRGVuaWVkRXYKK19fWk43V2ViQ29yZTE4cHJvdmlkZVVzZXJNZWRpYVRvRVBOU180UGFnZUVQ
TlNfMTVVc2VyTWVkaWFDbGllbnRFCitfX1pOSzdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MTRz
ZWN1cml0eU9yaWdpbkV2CitfX1pON1dlYkNvcmUyMU1vY2tNZWRpYVN0cmVhbUNlbnRlcjI5cmVn
aXN0ZXJNb2NrTWVkaWFTdHJlYW1DZW50ZXJFdgorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKIF9fTlBOX0NvbnN0cnVjdAogX19OUE5fQ3JlYXRlT2JqZWN0CkBAIC0y
Njg5LDYgKzI2ODQsMTIgQEAgX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlMjBhdXRoZW50
aWNhdGlvblNjaGVtZUV2CiBfX1pON1dlYkNvcmU4Y3JlYXRlQ0ZFUktOU18xNVByb3RlY3Rpb25T
cGFjZUUKICNlbmRpZgogCisjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKK19fWk43V2Vi
Q29yZTE0aXNQdWJsaWNTdWZmaXhFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUyOHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5FUktOM1dURjZTdHJpbmdFCitfd2tJc1B1YmxpY1N1ZmZp
eAorI2VuZGlmCisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIF9fWk43V2ViQ29yZTI3cWxQcmV2aWV3
Q29udmVydGVyVVRJRm9yVVJMRVA1TlNVUkwKIF9fWk43V2ViQ29yZTMwcmVtb3ZlUUxQcmV2aWV3
Q29udmVydGVyRm9yVVJMRVA1TlNVUkwKQEAgLTI3MDAsMTggKzI3MDEsMzEgQEAgX19aTjdXZWJD
b3JlMzNRTFByZXZpZXdHZXRTdXBwb3J0ZWRNSU1FVHlwZXNTZXRFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI1c2VydmljZVNjcmlwdGVkQW5pbWF0aW9uc0VkCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzFzZXRXYW50c0xheWVy
Rm9yVG9wT3ZlckhhbmdBcmVhRWIKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MzRzZXRXYW50c0xh
eWVyRm9yQm90dG9tT3ZlckhhbmdBcmVhRWIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShTUEVFQ0hfU1lO
VEhFU0lTKQorX19aTjdXZWJDb3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhl
c2l6ZXJFTjNXVEYxMFBhc3NPd25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVF
CitfX1pON1dlYkNvcmUyNERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lz
RVBOU185RE9NV2luZG93RQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
QzJFUE5TXzMxUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckNsaWVudEUKK19fWlRWTjdXZWJDb3Jl
MjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRQorX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyRDJFdgorX19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1Zv
aWNlNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9TNF9iYgorI2VuZGlmCisKICNpZiBFTkFCTEUo
U1ZHKQogX19aTjdXZWJDb3JlOERvY3VtZW50MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDE5YWNjZXNzU1ZHRXh0ZW5zaW9uc0V2CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJ
T1NfVEVYVF9BVVRPU0laSU5HKQotX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4
dEF1dG9zaXppbmdFdgotX19aTjdXZWJDb3JlNUZyYW1lMjJzZXRUZXh0QXV0b3NpemluZ1dpZHRo
RWYKKyNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQorX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuRXYKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRIUkVBREVE
X1NDUk9MTElORykKQEAgLTI3NjIsNDkgKzI3NzYsMTIgQEAgX19aTks3V2ViQ29yZTE2SFRNTE1l
ZGlhRWxlbWVudDZwYXVzZWRFdgogCiAjaWYgRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCiBf
X1pON1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVFTlMwXzhWaWV3TW9kZUUKLSNlbmRpZiAvLyBF
TkFCTEUoVklFV19NT0RFX0NTU19NRURJQSkKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdPUktFUlMp
CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29ya2VyVGhyZWFkQ291bnRFdgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotX19aTjdXZWJDb3JlM0NETTE4cmVn
aXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJm
YWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJl
bmNlc0V2CiAjZW5kaWYKLQotI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQotX19aTjdXZWJD
b3JlMTVTcGVlY2hTeW50aGVzaXMyMnNldFBsYXRmb3JtU3ludGhlc2l6ZXJFTjNXVEYxMFBhc3NP
d25QdHJJTlNfMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRUVFCi1fX1pON1dlYkNvcmUyNERP
TVdpbmRvd1NwZWVjaFN5bnRoZXNpczE1c3BlZWNoU3ludGhlc2lzRVBOU185RE9NV2luZG93RQot
X19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQzJFUE5TXzMxUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckNsaWVudEUKLV9fWlRWTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyRQotX19aTjdXZWJDb3JlMjVQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyRDJFdgot
X19aTjdXZWJDb3JlMjhQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0VTNF9TNF9iYgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi1f
X1pOSzdXZWJDb3JlOUZyYW1lVmlldzMxc2V0V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJlYUVi
Ci1fX1pOSzdXZWJDb3JlOUZyYW1lVmlldzM0c2V0V2FudHNMYXllckZvckJvdHRvbU92ZXJIYW5n
QXJlYUViCi0jZW5kaWYKLQotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi1fX1pON1dl
YkNvcmUxNGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjh0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQotX3drSXNQdWJsaWNTdWZm
aXgKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLV9fWk43V2ViQ29y
ZTE1UmVzb3VyY2VSZXF1ZXN0MTNwYXJ0aXRpb25OYW1lRVJLTjNXVEY2U3RyaW5nRQotX3drQ2Fj
aGVQYXJ0aXRpb25LZXkKLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLV9fWk43
V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIydXNlck1lZGlhQWNjZXNzR3JhbnRlZEV2Ci1fX1pO
N1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2Ci1fX1pO
N1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1lZGlhQ2xp
ZW50RQotX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmlnaW5Fdgot
X19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01lZGlhU3Ry
ZWFtQ2VudGVyRXYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggZTNkZmViOS4uZDU4Njk5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDIwLDcgKzc0MjAsNyBA
QAogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
SGlzdG9ncmFtU3VwcG9ydC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLaWxsUmluZ05vbmUuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cS1VSTC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxV
UkwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2Uu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aEJveC5jcHAiIC8+
CkBAIC03NjA0LDcgKzc2MDQsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cd2luXFdpbmRvd01lc3NhZ2VCcm9hZGNhc3Rlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxDRlVSTEV4dHJhcy5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0YuY3BwIiAvPgotICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFVSTENGLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXFNoYXJlZEJ1ZmZlckNGLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxDZXJ0aWZpY2F0ZUNGV2luLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEJpdG1h
cEltYWdlLmNwcCIgLz4KQEAgLTE5MDE1LDggKzE5MDE1LDggQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhvc3RXaW5kb3cuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxLVVJMLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLVVJMSGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVUkxIYXNoLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGF5b3V0VW5pdC5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGVuZ3RoLmgiIC8+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
aW5kZXggMWYwY2Q5NC4uZmEwMDUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMTEyNSw3ICsxMTI1LDcg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5nTm9uZS5jcHAi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5jcHAiPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxMYW5ndWFnZS5jcHAiPgpAQCAtNTEwOSw3ICs1MTA5LDcgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEZpbGVTeXN0ZW1DRi5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcS1VSTENGTmV0LmNwcCI+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxVUkxDRi5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxjZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cY2Zcd2luXENlcnRpZmljYXRlQ0ZXaW4uY3BwIj4KQEAgLTgxMTUsMTAg
KzgxMTUsMTAgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtpbGxSaW5n
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIj4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXEtVUkxIYXNoLmgiPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
VVJMSGFzaC5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExhbmd1YWdlLmgiPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDBjNGZiNTQuLjBkMGFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY1Miw3ICs2NTIsNyBAQAogCQkxQTkyN0ZEMjE0
MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBOTI3RkQzMTQx
NkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTI3RkQwMTQxNkExNUIwMDNBODNDOCAvKiBucHJ1bnRpbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTky
N0ZENDE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5MjdGRDExNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkx
QTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAv
KiBLVVJMQ0ZOZXQuY3BwICovOyB9OworCQkxQTk4OTU2QjBBQTc4RjgwMDA1RUY1RUYgLyogVVJM
Q0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5
ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLzsgfTsKIAkJMUFBMjEyNTAxNjNG
MERBODAwMDBFNjNGIC8qIEF0b21pY1N0cmluZ0NGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9t
aWNTdHJpbmdDRi5jcHAgKi87IH07CiAJCTFBQTcxNjBBMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxl
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJvbGxlci5tbSAqLzsgfTsK
IAkJMUFBNzE2MEIxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwOTE0OUJDNERCMDAx
NkVDMTkgLyogVGlsZUNvbnRyb2xsZXIuaCAqLzsgfTsKQEAgLTE4OTAsOSArMTg5MCw5IEBACiAJ
CTY1N0VEQTA4MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3RURBMDYxMzg1
Q0I5NzAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgKi87IH07CiAJCTY1N0VE
QTBCMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTdFREEwQTEzODVDQkQ4
MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tICovOyB9OwogCQk2NTg0MzY4
NjBBRTAxQjc0MDBFNTM3NTMgLyogRnJhbWVMb2FkUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU4NDM2ODUwQUUwMUI3NDAwRTUzNzUzIC8q
IEZyYW1lTG9hZFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNTA5QUU0MzQ2
MDAyQzUzMUYgLyogS1VSTC5jcHAgKi87IH07Ci0JCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAv
KiBLVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTY1OTM5MjNBMDlBRTQzNUMwMDJDNTMxRiAvKiBL
VVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gKi87IH07CisJCTY1OTM5MjM3
MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi87
IH07CisJCTY1OTM5MjM4MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAv
KiBVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8q
IFVSTE1hYy5tbSAqLzsgfTsKIAkJNjU5NkYyQjMwQjg3MzFERjAwMTMyNkJEIC8qIERPTUhUTUxJ
bnB1dEVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExNjQwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TUhUTUxJbnB1dEVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTk2RjJDMTBCODczMjVDMDAx
MzI2QkQgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggaW4gQ29weSBHZW5lcmF0
ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE3RjBB
QzVENTM1MDA1MzI3MEYgLyogRE9NSFRNTFRleHRBcmVhRWxlbWVudEludGVybmFsLmggKi87IH07
CiAJCTY1OUE3RDEzMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5QTdEMTIwQjZEQjREOTAw
MTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUwNDAsNyArNTA0MCw3IEBACiAJCUJDQkI4QUI5MTNGMUFG
QjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNC
QjhBQkExM0YxQUZCMDAwNzM0REYwIC8qIFBPREludGVydmFsVHJlZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCQjhBQjYxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsVHJlZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUJDQkI4QUJCMTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1Ry
ZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4
QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcw
RjIgLyogS1VSTEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDQkQyMUFCMEU0MTdBRDQw
MEEwNzBGMiAvKiBVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkZCNTNDMERDRDI5
Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RP
TVdpbmRvd1NoZWxsLmNwcCAqLzsgfTsKIAkJQkNCRkI1M0QwRENEMjlDRjAwMTlCM0U1IC8qIEpT
RE9NV2luZG93U2hlbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQkZCNTNCMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNDMDY1N0Qw
RjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNDMDY1NzcwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVu
dFJlY3QuY3BwICovOyB9OwpAQCAtNzExNCw3ICs3MTE0LDcgQEAKIAkJMUE5MjdGQ0YxNDE2QTE1
QjAwM0E4M0M4IC8qIG5wYXBpLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
YXBpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQwMTQxNkExNUIwMDNB
ODNDOCAvKiBucHJ1bnRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnBy
dW50aW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOTI3RkQxMTQxNkExNUIw
MDNBODNDOCAvKiBucHR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5w
dHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE5ODk1NkEwQUE3OEY4MDAw
NUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gS1VSTENGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5ODk1
NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBVUkxDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QTIxMjRGMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9taWNTdHJpbmdDRi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdG9taWNTdHJpbmdDRi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTcxNjA4MTQ5QkM0REEwMDE2RUMxOSAvKiBUaWxlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRpbGVDb250
cm9sbGVyLm1tOyBwYXRoID0gY2EvbWFjL1RpbGVDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUE3MTYwOTE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGlsZUNvbnRyb2xsZXIuaDsg
cGF0aCA9IGNhL21hYy9UaWxlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODQ4Nyw5ICs4NDg3LDkgQEAKIAkJNjU3RURBMDcxMzg1Q0I5NzAwNEUwNjQ1IC8qIE1l
bW9yeVByZXNzdXJlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU3
RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxl
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjU4NDM2ODUwQUUwMUI3NDAw
RTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEZyYW1lTG9hZFJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS1VSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2NTkz
OTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gS1VSTE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUu
bGFuZy5vYmpjcHA7IH07CisJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBVUkxNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQk2NTlBN0QxMjBCNkRCNEQ5MDAxMTU1QjMg
LyogU3Vic3RpdHV0ZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
YnN0aXR1dGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgwMDlF
MTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0RvY3VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNjU5RERDODEwOUUxOThCQTAwMUJGM0M2IC8qIEpTRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExOTM2LDcgKzExOTM2LDcgQEAKIAkJQkNCQjhBQjUxM0YxQUZCMDAwNzM0REYw
IC8qIFBPREludGVydmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRElu
dGVydmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQkI4QUI2MTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ESW50ZXJ2YWxUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QkI4QUI3MTNGMUFGQjAwMDczNERGMCAvKiBQT0RSZWRCbGFja1RyZWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUE9EUmVkQmxhY2tUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NV2luZG93U2hl
bGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQjBEQ0QyOUNGMDAx
OUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTVdpbmRvd1NoZWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsaWVudFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTM5NTUsNyArMTM5NTUsNyBAQAogCQkJCUUxQThFNTY0MTc1NTJCMkEwMDc0
ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4OEU3
IC8qIENGVVJMRXh0cmFzLmggKi8sCiAJCQkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZp
bGVTeXN0ZW1DRi5jcHAgKi8sCi0JCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxD
Rk5ldC5jcHAgKi8sCisJCQkJMUE5ODk1NkEwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCAq
LywKIAkJCQkyOUEzMDlBQjE1NjFDOTlCMDBCQkQ4RTUgLyogUnVuTG9vcENGLmNwcCAqLywKIAkJ
CQk1MTJERDhFMjBEOTFFMkI0MDAwRjg5RUUgLyogU2hhcmVkQnVmZmVyQ0YuY3BwICovLAogCQkJ
KTsKQEAgLTE1MTQ2LDcgKzE1MTQ2LDcgQEAKIAkJCQlDNTM5MkQzNDEzMjZBRDAxMDAwNDNEMzUg
LyogSFRNTENvbnZlcnRlci5tbSAqLywKIAkJCQk5MzVDNDc2RTA5QUM0RDczMDBBNkFBQjQgLyog
S2V5RXZlbnRNYWMubW0gKi8sCiAJCQkJNTIxRDQ2RjUxMUFFQzk4MTAwNTE0NjEzIC8qIEtpbGxS
aW5nTWFjLm1tICovLAotCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1t
ICovLAorCQkJCTY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi8sCiAJCQkJ
OTM1MjA4NDQwOUJENDNCOTAwRjIwMzhEIC8qIExhbmd1YWdlLm1tICovLAogCQkJCTA2RTgxRUQ2
MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLywKIAkJ
CQkwNkU4MUVFQjBBQjVEQTk3MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lm1tICovLApAQCAtMTk4NTYsOSArMTk4NTYsOSBAQAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgz
NTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJNTIxRDQ2RjcxMUFFQzlCMTAwNTE0NjEzIC8q
IEtpbGxSaW5nLmggKi8sCiAJCQkJNDMwNkU0RTUxNDk1NTU0MzAwN0YxN0FDIC8qIEtpbGxSaW5n
Tm9uZS5jcHAgKi8sCi0JCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICov
LAotCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCi0JCQkJQkNCRDIx
QUEwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggKi8sCisJCQkJNjU5MzkyMzUwOUFFNDM0
NjAwMkM1MzFGIC8qIFVSTC5jcHAgKi8sCisJCQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8q
IFVSTC5oICovLAorCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBVUkxIYXNoLmggKi8s
CiAJCQkJRTE4NzcyRjAxMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCAqLywKIAkJCQk4
NUVDOUFGOTBBNzFBMkM2MDBFRUVBRUQgLyogTGFuZ3VhZ2UuaCAqLywKIAkJCQkxNDFEQzA0NzE2
NDgzNDhGMDAzNzFFNUEgLyogTGF5b3V0VW5pdC5oICovLApAQCAtMjM0MDcsOCArMjM0MDcsOCBA
QAogCQkJCTMxNkZFMTFBMEU2RTFEQTcwMEJGNjA4OCAvKiBLZXlmcmFtZUFuaW1hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUJBMTEwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTIxRDQ2RjgxMUFFQzlCMTAwNTE0NjEzIC8qIEtpbGxS
aW5nLmggaW4gSGVhZGVycyAqLywKLQkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxI
YXNoLmggaW4gSGVhZGVycyAqLywKKwkJCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJM
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFz
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDUwQ0VCRjExNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVs
YWJsZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE0NTZGQTI3MTFBRDRBODMwMDIwQjQy
MCAvKiBMYWJlbHNOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFQzlBRkIwQTcxQTJD
NjAwRUVFQUVEIC8qIExhbmd1YWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTI2Njk2LDkgKzI2Njk2
LDkgQEAKIAkJCQlCQzVFQkExMDBFODIzRTQ3MDBCMjU5NjUgLyogS2V5ZnJhbWVMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUyMUQ0NkY2MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQzMDZFNEU2MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxs
UmluZ05vbmUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFG
IC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVG
IC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk2NTkzOTIzQTA5QUU0MzVDMDAy
QzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjM3MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5ODk1NkIwQUE3OEY4MDAw
NUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY1OTM5MjNBMDlBRTQzNUMw
MDJDNTMxRiAvKiBVUkxNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NTBDRUJGMDE1MDczQkJF
MDAyQkIxNDkgLyogTGFiZWxhYmxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU2
RkEyNjExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE4NzcyRjExMjZFMjYyOTAwM0RENTg2IC8qIExhbmd1YWdlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5jcHAKaW5kZXggMWNiMWM2OS4uNzkxYmYxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuY3BwCkBAIC04NywxMCArODcsMTAgQEAgRWxlbWVudCogQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6YW5jaG9yRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYXJlYUVsZW1l
bnQuZ2V0KCk7CiB9CiAKLUtVUkwgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6dXJsKCkgY29u
c3QKK1VSTCBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjp1cmwoKSBjb25zdAogewogICAgIGlm
ICghbV9hcmVhRWxlbWVudC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAg
cmV0dXJuIFVSTCgpOwogICAgIAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50LT5ocmVmKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5oCmluZGV4IDdhM2VjMDguLjJmMWZiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5o
CkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFu
Y2hvckVsZW1lbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGFjdGlvbkVsZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwg
dXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0gCiAgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDUyN2RkNGEuLmJi
YTE4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCkBAIC02NDIsNyArNjQyLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNl
bGVjdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsg
fQogICAgIHVuc2lnbmVkIHNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4
dFJhbmdlKCkubGVuZ3RoOyB9CiAgICAgCi0gICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0IHsg
cmV0dXJuIEtVUkwoKTsgfQorICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIFVS
TCgpOyB9CiAgICAgdmlydHVhbCBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsgfQogICAgIHZpcnR1YWwgU3RyaW5nIHNlbGVjdGVk
VGV4dCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IHsgcmV0dXJuIG51bGxBdG9tOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAppbmRleCBhNGVjMGEwLi4yZTQxODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
QEAgLTg5NiwxMyArODk2LDEzIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmludGVybmFsTGlua0VsZW1lbnQoKSBjb25zdAogICAgICAgICByZXR1cm4g
MDsKICAgICBIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0gdG9IVE1MQW5jaG9yRWxlbWVudChl
bGVtZW50KTsKICAgICAKLSAgICBLVVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKKyAgICBV
UkwgbGlua1VSTCA9IGFuY2hvci0+aHJlZigpOwogICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZp
ZXIgPSBsaW5rVVJMLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIGlmIChmcmFnbWVudElkZW50
aWZpZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICAvLyBjaGVjayBp
ZiBVUkwgaXMgdGhlIHNhbWUgYXMgY3VycmVudCBVUkwKLSAgICBLVVJMIGRvY3VtZW50VVJMID0g
bV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKKyAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX3Jl
bmRlcmVyLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihkb2N1bWVudFVSTCwgbGlua1VSTCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IApAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpz
ZXRTZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UKICAgICAgICAg
UG9zaXRpb24obm9kZSwgcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgsIFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpLCBET1dOU1RSRUFNKSk7CiB9CiAKLUtVUkwgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29uc3QKK1VSTCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0Ojp1cmwoKSBjb25zdAogewogICAgIGlmIChpc0FuY2hvcigpICYmIGlzSFRNTEFuY2hvckVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKSkgewogICAgICAgICBpZiAoSFRNTEFuY2hvckVsZW1l
bnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQoYW5jaG9yRWxlbWVudCgpKSkKQEAgLTE0
NjQsNyArMTQ2NCw3IEBAIEtVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29u
c3QKICAgICBpZiAoaXNJbnB1dEltYWdlKCkpCiAgICAgICAgIHJldHVybiB0b0hUTUxJbnB1dEVs
ZW1lbnQobV9yZW5kZXJlci0+bm9kZSgpKS0+c3JjKCk7CiAgICAgCi0gICAgcmV0dXJuIEtVUkwo
KTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6aXNVbnZpc2l0ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRleCBiMDlkMWNlLi4wZmUw
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtMTM5LDcgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBE
b2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKICAgICBIVE1MTGFiZWxFbGVtZW50KiBsYWJl
bEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBVUkwgdXJsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQbGFpblRl
eHRSYW5nZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgVmlzaWJsZVNl
bGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdWYWx1
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBk
ZDViYTlkLi5iYjU0ZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtOTc5LDcgKzk3OSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFN0cmluZ1RvUmVzdWx0KE5T
TXV0YWJsZVN0cmluZyAqcmVzdWx0LCBOU1N0cmluZyAqc3RyaW5nKQogICAgIGlmICghW3NlbGYg
X3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCi0g
ICAgS1VSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fb2JqZWN0LT51
cmwoKTsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJl
dHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggMmQ4YmI4My4uOWRkNmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KQEAgLTIxMzgsNyArMjEzOCw3IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKICAgICB9CiAgICAgCiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmli
dXRlXSkgewotICAgICAgICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwoKTsKKyAgICAgICAgVVJM
IHVybCA9IG1fb2JqZWN0LT51cmwoKTsKICAgICAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAppbmRleCAwNWMz
MGRlLi43NGE1MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRD
b250cm9sbGVyQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29u
dHJvbGxlckJhc2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkK
ICAgICByZXR1cm4gZXZhbHVhdGUoc291cmNlQ29kZSk7CiB9CiAKLWJvb2wgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1cmwsIFNob3VsZFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3Jp
cHRVUkwpCitib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29u
c3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpCiB7CiAgICAgaWYgKCFwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAppbmRleCAx
ODFmYzJhLi4xNGRmM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zMiw3ICszMiw3IEBA
IGdjaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdURjo6U3RyaW5nIGNvbnN0JiBzKQogICAgIHJl
dHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1nY2hhciogY29udmVydFRvVVRG
OFN0cmluZyhXZWJDb3JlOjpLVVJMIGNvbnN0JiBzKQorZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBnX3N0cmR1cChzLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuaAppbmRleCBiYzIzNGNmLi5lNDk0MTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VU
RjhTdHJpbmcuaApAQCAtMjQsMTIgKzI0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogdHlw
ZWRlZiBjaGFyIGdjaGFyOwogCiBnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmlu
ZyBjb25zdCYgcyk7Ci1nY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpLVVJMIGNv
bnN0JiBzKTsKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYg
cyk7CiAKICNlbmRpZiAvKiBDb252ZXJ0VG9VVEY4U3RyaW5nX2ggKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IGI1MDRhNGQuLjEwZWFmMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtNzUsMTkg
Kzc1LDE5IEBAIEpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFN0cmluZyYgcykKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgcyk7CiB9
CiAKLUpTVmFsdWUganNTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitK
U1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHVybC5zdHJpbmcoKSk7CiB9CiAKLUpTVmFs
dWUganNTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkpOwogfQogCi1KU1ZhbHVlIGpz
U3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBLVVJMJiB1cmwpCitKU1Zh
bHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYWY4NTk1NS4u
MDA4NzE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAg
LTYxLDcgKzYxLDcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICBjbGFzcyBEb2N1bWVudDsK
ICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm9kZTsKIAogICAgIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CkBAIC0yNDMsMTcgKzI0MywxNyBAQCBjbGFzcyBET01TdHJpbmdMaXN0Owog
ICAgIHZvaWQgc2V0RE9NRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgRXhjZXB0aW9uQ29kZSk7
CiAKICAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdXaXRoQ2FjaGUoSlNDOjpFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmKTsKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBLVVJMJik7IC8vIGVtcHR5IGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBlbXB0eSBpZiB0
aGUgVVJMIGlzIG51bGwKICAgICBpbmxpbmUgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIHMpCiAgICAgeyAKICAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMuc3RyaW5nKCkpOwogICAgIH0K
ICAgICAgICAgCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJik7IC8vIG51bGwgaWYgdGhlIHN0cmluZyBpcyBudWxsCi0gICAgSlND
OjpKU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAv
LyBudWxsIGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVs
bChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFVSTCYpOyAvLyBudWxsIGlmIHRoZSBVUkwgaXMgbnVs
bAogCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAotICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3Qg
S1VSTCYpOyAvLyB1bmRlZmluZWQgaWYgdGhlIFVSTCBpcyBudWxsCisgICAgSlNDOjpKU1ZhbHVl
IGpzU3RyaW5nT3JVbmRlZmluZWQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gdW5k
ZWZpbmVkIGlmIHRoZSBVUkwgaXMgbnVsbAogCiAgICAgLy8gU2VlIEphdmFTY3JpcHRDb3JlIGZv
ciBleHBsYW5hdGlvbjogU2hvdWxkIGJlIHVzZWQgZm9yIGFueSBzdHJpbmcgdGhhdCBpcyBhbHJl
YWR5IG93bmVkIGJ5IGFub3RoZXIKICAgICAvLyBvYmplY3QsIHRvIGxldCB0aGUgZW5naW5lIGtu
b3cgdGhhdCBjb2xsZWN0aW5nIHRoZSBKU1N0cmluZyB3cmFwcGVyIGlzIHVubGlrZWx5IHRvIHNh
dmUgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCAzMGZjZjNlLi43MDQxNTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApA
QCAtODgsNyArODgsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6Om9wZW4oRXhlY1N0YXRl
KiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQogICAgICAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGltcGwo
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIFN0cmluZyBtZXRo
b2QgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
Yyk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCAwMzE1MTZlLi45M2I4ZTA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJl
ID0gZmFsc2UpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNj
cmlwdCBVUkwuCi0gICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMID0gUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKKyAgICBi
b29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiwgU2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9
IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwg
aXQgcmVwZWF0ZWRseS4KICAgICAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVs
ZTogaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGZyb20gYW55IHRocmVhZCwgZXZlbiBy
ZWVudHJhbnRseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFNvdXJjZUNvZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNv
ZGUuaAppbmRleCA1MTYzNTgxLi4yZDNjMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U291cmNlQ29kZS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlUHJvdmlkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0U291cmNlQ29k
ZSB7CiBwdWJsaWM6Ci0gICAgU2NyaXB0U291cmNlQ29kZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgS1VSTCYgdXJsID0gS1VSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRp
b24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQorICAgIFNjcmlwdFNvdXJjZUNv
ZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsID0gVVJMKCksIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCkpCiAgICAgICAgIDogbV9wcm92aWRlcihKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVh
dGUoc291cmNlLCB1cmwuaXNOdWxsKCkgPyBTdHJpbmcoKSA6IHVybC5zdHJpbmcoKSwgc3RhcnRQ
b3NpdGlvbikpCiAgICAgICAgICwgbV9jb2RlKG1fcHJvdmlkZXIsIHN0YXJ0UG9zaXRpb24ubV9s
aW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSkK
ICAgICAgICAgLCBtX3VybCh1cmwpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIENh
Y2hlZFNjcmlwdCogY2FjaGVkU2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRTY3JpcHQu
Z2V0KCk7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIAogcHJp
dmF0ZToKICAgICBSZWZQdHI8SlNDOjpTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNj
cmlwdD4gbV9jYWNoZWRTY3JpcHQ7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsK
IAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHAKaW5kZXggYjg1MzJkMy4uNDVkMzViYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMzgz
LDcgKzEzODMsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXJlYWRTdHJpbmdEYXRhKHR5cGUp
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0
KQotICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgS1VSTChL
VVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSk7CisgICAgICAgICAgICBmaWxl
ID0gRmlsZTo6Y3JlYXRlKHBhdGgtPnN0cmluZygpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkp
LCB0eXBlLT5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTU3
Nyw3ICsxNTc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgp
OwogICAgICAgICAgICAgaWYgKCFtX2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBqc051bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmNy
ZWF0ZShLVVJMKEtVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpjcmVhdGUoVVJMKFVS
TCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUpLmdldCgpKTsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFN0cmluZ1RhZzogewogICAgICAgICAgICAgQ2FjaGVkU3RyaW5n
UmVmIGNhY2hlZFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckNQUC5wbQppbmRleCBjMzlhNzc0Li4yYmNhZDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCkBA
IC0yOTAsNyArMjkwLDcgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogCiAgICAgaWYgKCRjb2Rl
R2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ind0Zi90ZXh0L0F0b21pY1N0cmluZy5oIn0gPSAxOwotICAgICAgICAkaW1wbEluY2x1ZGVzeyJL
VVJMLmgifSA9IDE7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAg
ICAkaW1wbEluY2x1ZGVzeyJXZWJET01TdHJpbmcuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTU3Myw3ICs1NzMsNyBAQCBzdWIgQWRkUmV0dXJuU3RhdGVtZW50CiAgICAgbXkg
JHR5cGVJbmZvID0gc2hpZnQ7CiAgICAgbXkgJHJldHVyblZhbHVlID0gc2hpZnQ7CiAKLSAgICAj
IFVzZWQgdG8gaW52b2tlIEtVUkxzICJjb25zdCBTdHJpbmcmIiBvcGVyYXRvcgorICAgICMgVXNl
ZCB0byBpbnZva2UgVVJMcyAiY29uc3QgU3RyaW5nJiIgb3BlcmF0b3IKICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZUluZm8tPnNpZ25hdHVyZS0+dHlwZSkpIHsKICAg
ICAgICAgcmV0dXJuICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4o
JHJldHVyblZhbHVlKTtcbiI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA4MWVkYTNkLi5iOWRiNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQpAQCAtMjUwMSw3ICsyNTAxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05hbWV9KiB0aGlzT2JqID0ganNDYXN0
PCRjbGFzc05hbWUqPihhc09iamVjdChzbG90QmFzZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iaiwgaW5mbygp
KTtcbiIpOwogICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50
eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgi
fSA9IDE7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKGV4
ZWMsIHRoaXNPYmotPmltcGwoKS0+aXRlbShpbmRleCkpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdG9KUyhleGVjLCB0
aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLT5pdGVtKGluZGV4KSk7XG4i
KTsKQEAgLTM0MzYsNyArMzQzNiw3IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICB9CiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIktVUkwuaCIsICRjb25kaXRpb25hbCk7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJVUkwuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIG15ICRjb252ID0gJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXMi
fTsKICAgICAgICAgaWYgKGRlZmluZWQgJGNvbnYpIHsKICAgICAgICAgICAgIHJldHVybiAianNT
dHJpbmdPck51bGwoZXhlYywgJHZhbHVlKSIgaWYgJGNvbnYgZXEgIk51bGwiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5k
ZXggZWRmMTE5ZC4uNDg1YjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCkBAIC02MTgsNyArNjE4LDcgQEAgc3ViIEFk
ZEluY2x1ZGVzRm9yVHlwZQogICAgIH0KIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJp
bmdUeXBlKCR0eXBlKSkgewotICAgICAgICAkaW1wbEluY2x1ZGVzeyJLVVJMLmgifSA9IDE7Cisg
ICAgICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBiOWI5
MmM2Li41M2FhOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAKQEAgLTIxLDkgKzIxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJE
T01UZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2su
Y3BwCmluZGV4IGZlMzVkMmIuLjRkYmE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5j
cHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2lu
Y2x1ZGUgIkZsb2F0MzJBcnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRl
ICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURPTVN0cmlu
Z0xpc3QuaCIKICNpbmNsdWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJXZWJE
T01TdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAppbmRleCA1M2QyNTViLi40YzBkZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAKLSNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFu
ZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjc4MDZmMC4uMjNhM2FjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5o
IgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBmM2VhYzBiLi5hYzlkNmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0yMiw5ICsyMiw5IEBACiAjaW5jbHVk
ZSAiV2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50VGFyZ2V0
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNsdWRl
ICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MjM1YjNhLi5hYWNlMDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXZWJET01UZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldl
YkRPTVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCAwOWFk
MzM3Li4xNjMyZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTI0LDEw
ICsyNCwxMCBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCi0jaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIldlYkRPTU5vZGUuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJFeGNlcHRpb25IYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCBmZTU1NDQ5Li5h
YjczMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJUZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJUZXN0Tm9kZS5oIgogI2luY2x1ZGUgIlRlc3RP
YmouaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJET01EaWN0aW9uYXJ5LmgiCiAj
aW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJET01Ob2RlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RUeXBlZGVmcy5jcHAKaW5kZXggNzRmNzczYy4uYzE4ZjUyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0VHlw
ZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdFR5cGVkZWZzLmNwcApAQCAtMjEsMTAgKzIxLDEwIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdFR5cGVkZWZzLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXZWJET01TVkdQb2ludC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1
ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAppbmRleCAwOTAyZTY5Li5lMTQ0ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC0yMiw4ICsyMiw4IEBACiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oIgogCiAjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDJlOTNlMWEu
LjFkNTlkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZjE0MDFhMC4uMjczZTliNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShD
b25kaXRpb24yMykKICNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKaW5kZXggNjlhNmMxOC4uY2I1OTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNp
bmNsdWRlICJKU2Jvb2wuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNWR1N0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIgpAQCAtNTEsNiArNTAsNyBAQAogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRl
eCA0ZjQ2NmM1Li4wZGI5OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTMwLDEwICszMCwx
MCBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNUZXN0RXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJUZXN0VHlwZWRlZnMuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0FycmF5Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0K
aW5kZXggYWIyODY0MS4uNDAwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2Jq
ZWN0Lm1tCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbXBvcnQgIkRPTVRlc3RBY3RpdmVET01PYmpl
Y3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiTm9kZS5o
IgogI2ltcG9ydCAiVGVzdEFjdGl2ZURPTU9iamVjdC5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2su
aCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBv
cnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIKICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDYWxsYmFjay5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RDYWxsYmFjay5tbQppbmRleCA5M2FkZjhjLi5mMDY0MmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2su
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dENhbGxiYWNrLm1tCkBAIC00NCwxMSArNDQsMTEgQEAKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50
ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAiVGVzdENhbGxiYWNrLmgiCiAjaW1wb3J0ICJUZXN0Tm9k
ZS5oIgogI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAi
V2ViQ29yZU9iakNFeHRyYXMuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVjdFByaXZhdGUuaCIK
ICNpbXBvcnQgPHd0Zi9HZXRQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdl
dHRlci5tbQppbmRleCAxMGE5MGE1Li5iZjdhMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIK
ICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgogI2lt
cG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgor
I2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAi
V2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2
ZW50Q29uc3RydWN0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQppbmRleCA4MDlkNTUzLi5kOTE3ZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQpAQCAtMzQsOSArMzQsOSBA
QAogI2ltcG9ydCAiRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAi
RXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgot
I2ltcG9ydCAiS1VSTC5oIgogI2ltcG9ydCAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBv
cnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNvcmVPYmpD
RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1wb3J0IDx3
dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0KaW5kZXggZmEyNDQ3ZC4u
MDM4ZjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRhcmdldC5tbQpAQCAtMzYsMTEgKzM2LDEx
IEBACiAjaW1wb3J0ICJFdmVudExpc3RlbmVyLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVy
cy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJMLmgi
CiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9y
dCAiVGVzdEV2ZW50VGFyZ2V0LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAi
VVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0
T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5t
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNl
cHRpb24ubW0KaW5kZXggZDJiOTU0OC4uYThjZWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9u
Lm1tCkBAIC0zMyw5ICszMyw5IEBACiAjaW1wb3J0ICJET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRF
eGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKICNpbXBvcnQgIlRlc3RFeGNlcHRpb24uaCIK
ICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIldlYkNv
cmVPYmpDRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCiAjaW1w
b3J0IDx3dGYvR2V0UHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAyZTIxYmZk
Li4yYjliMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTM3LDEyICszNywxMiBA
QAogI2ltcG9ydCAiRE9NVGVzdE9iakludGVybmFsLmgiCiAjaW1wb3J0ICJFeGNlcHRpb25IYW5k
bGVycy5oIgogI2ltcG9ydCAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCi0jaW1wb3J0ICJLVVJM
LmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0
ICJUZXN0T2JqLmgiCiAjaW1wb3J0ICJUZXN0U3VwcGxlbWVudGFsLmgiCiAjaW1wb3J0ICJUaHJl
YWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5o
IgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0
ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMzMxYWM2Ni4uMWI4ZTY4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
CkBAIC00OSw3ICs0OSw2IEBACiAjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgogI2ltcG9y
dCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBv
cnQgIktVUkwuaCIKICNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIk9iakNFdmVudExpc3RlbmVy
LmgiCiAjaW1wb3J0ICJTVkdEb2N1bWVudC5oIgpAQCAtNjQsNiArNjMsNyBAQAogI2ltcG9ydCAi
VGVzdE9iamVjdENDb25zdHJ1Y3Rvci5oIgogI2ltcG9ydCAiVGVzdFN1Yk9iakNvbnN0cnVjdG9y
LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgog
I2ltcG9ydCAiYW55LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0KaW5kZXggN2UzZDgzOC4uZGU0
MWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdFR5cGVkZWZzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbQpAQCAtMzQsMTEgKzM0LDExIEBACiAjaW1w
b3J0ICJET01UZXN0VHlwZWRlZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxl
cnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5o
IgogI2ltcG9ydCAiU1ZHUG9pbnQuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2ltcG9ydCAiVGVzdFR5cGVkZWZzLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
U2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgogI2ltcG9ydCA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDQ5NmZkOGMuLmQxMzdiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTE5MCw3
ICsxOTAsNyBAQCBib29sIENTU0N1cnNvckltYWdlVmFsdWU6OmlzU1ZHQ3Vyc29yKCkgY29uc3QK
IHsKICAgICBpZiAobV9pbWFnZVZhbHVlLT5pc0ltYWdlVmFsdWUoKSkgewogICAgICAgICBSZWZQ
dHI8Q1NTSW1hZ2VWYWx1ZT4gaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PENTU0ltYWdlVmFsdWUq
PihtX2ltYWdlVmFsdWUuZ2V0KCkpOwotICAgICAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5n
LCBpbWFnZVZhbHVlLT51cmwoKSk7CisgICAgICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywg
aW1hZ2VWYWx1ZS0+dXJsKCkpOwogICAgICAgICByZXR1cm4ga3VybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwCmluZGV4IDQwMzc0MmQuLjZlNjUzNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgU3Ry
aW5nIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjphZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVT
aGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NGb250RmFjZVNyY1ZhbHVl
OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzLCBjb25zdCBT
dHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0xvY2Fs
KCkpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQtPmNvbXBsZXRl
VVJMKG1fcmVzb3VyY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5o
CmluZGV4IDQyOWJiYjQuLjk5YTExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U3JjVmFsdWUuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9t
Q1NTVGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxl
U2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNzI2OGVl
MC4uMzRhNjE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkKICAgICBy
ZXR1cm4gc3RyaWN0Q29udGV4dDsKIH0KIAotQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29u
dGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VVUkwpCitDU1NQYXJzZXJD
b250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KENTU1BhcnNlck1vZGUgbW9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMKQogICAgIDogYmFzZVVSTChiYXNlVVJMKQogICAgICwgbW9kZShtb2RlKQogICAgICwg
aXNIVE1MRG9jdW1lbnQoZmFsc2UpCkBAIC0yNzIsNyArMjcyLDcgQEAgQ1NTUGFyc2VyQ29udGV4
dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IEtVUkwmIGJhc2VV
UkwpCiB7CiB9CiAKLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCitD
U1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQpCiAgICAgOiBiYXNlVVJMKGJh
c2VVUkwuaXNOdWxsKCkgPyBkb2N1bWVudC5iYXNlVVJMKCkgOiBiYXNlVVJMKQogICAgICwgY2hh
cnNldChjaGFyc2V0KQogICAgICwgbW9kZShkb2N1bWVudC5pblF1aXJrc01vZGUoKSA/IENTU1F1
aXJrc01vZGUgOiBDU1NTdHJpY3RNb2RlKQpAQCAtMTYxNSwxNiArMTYxNSwxNiBAQCB2b2lkIENT
U1BhcnNlcjo6Y2xlYXJQcm9wZXJ0aWVzKCkKICAgICBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyA9
IGZhbHNlOwogfQogCi1LVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCitVUkwgQ1NTUGFyc2VyOjpjb21w
bGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVy
bCkKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAg
ICAgICByZXR1cm4gVVJMKCk7CiAgICAgaWYgKGNvbnRleHQuY2hhcnNldC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKGNvbnRleHQuYmFzZVVSTCwgdXJsKTsKLSAgICByZXR1cm4gS1VS
TChjb250ZXh0LmJhc2VVUkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKKyAgICAgICAgcmV0dXJu
IFVSTChjb250ZXh0LmJhc2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChjb250ZXh0LmJhc2VV
UkwsIHVybCwgY29udGV4dC5jaGFyc2V0KTsKIH0KIAotS1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRl
VVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKG1fY29u
dGV4dCwgdXJsKTsKIH0KQEAgLTg3ODQsNyArODc4NCw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NT
TWl4RnVuY3Rpb25WYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZU1peEZ1bmN0aW9uKENTU1BhcnNlclZh
bHVlCiAgICAgICAgIHVuc2lnbmVkIGFyZ051bWJlciA9IGFyZ3NMaXN0LT5jdXJyZW50SW5kZXgo
KTsKICAgICAgICAgaWYgKCFhcmdOdW1iZXIpIHsKICAgICAgICAgICAgIGlmIChhcmctPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHNo
YWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgICAgICBVUkwg
c2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcpOwogICAgICAgICAgICAgICAgIHZh
bHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJVUkwuc3RyaW5nKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGFyZ051bWJlciA9PSAxIHx8IGFyZ051
bWJlciA9PSAyKSB7CkBAIC04OTc0LDcgKzg5NzQsNyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU0Zp
bHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ3VzdG9tRmlsdGVyRnVuY3Rpb25XaXRoSW5saW5l
UwogICAgICAgICBpZiAoYXJnLT5pZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICB2YWx1
ZSA9IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwog
ICAgICAgICBlbHNlIGlmIChhcmctPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkp
IHsKLSAgICAgICAgICAgIEtVUkwgc2hhZGVyVVJMID0gY29tcGxldGVVUkwoYXJnLT5zdHJpbmcp
OworICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsK
ICAgICAgICAgICAgIHZhbHVlID0gV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OmNyZWF0ZShzaGFkZXJV
Ukwuc3RyaW5nKCkpOwogICAgICAgICAgICAgaGFkQXRMZWFzdE9uZUN1c3RvbVNoYWRlciA9IHRy
dWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYXJnc0xpc3QtPmN1cnJlbnRJbmRleCgpID09IDEgJiYg
YXJnLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IGZmZDFkOWUuLjZjYzE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTQy
Miw3ICs0MjIsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlUHJpbWl0aXZlVmFyaWFibGVOYW1lVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKTsKICNlbmRp
ZgogCi0gICAgc3RhdGljIEtVUkwgY29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENT
U1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBMb2NhdGlvbiBjdXJy
ZW50TG9jYXRpb24oKTsKIApAQCAtNTAyLDcgKzUwMiw3IEBAIHByaXZhdGU6CiAgICAgaW5saW5l
IGJvb2wgaW5TdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUgPT0gQ1NT
U3RyaWN0TW9kZSB8fCBtX2NvbnRleHQubW9kZSA9PSBTVkdBdHRyaWJ1dGVNb2RlOyB9CiAgICAg
aW5saW5lIGJvb2wgaW5RdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0Lm1vZGUg
PT0gQ1NTUXVpcmtzTW9kZTsgfQogICAgIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3Q7CiAKICAgICB2b2lkIHJlY2hlY2tBdEtleXdvcmQoY29uc3QgVUNoYXIqIHN0ciwgaW50
IGxlbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCmluZGV4IDU3MzU3ZjUuLmI0N2Mw
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaApAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBDU1NQYXJzZXJNb2RlX2gKICNkZWZpbmUgQ1NTUGFyc2VyTW9kZV9oCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTcsMTAgKzU3LDEwIEBAIGlubGluZSBib29sIGlzU3RyaWN0UGFyc2VyTW9kZShDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCiBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMID0gS1VSTCgpKTsKLSAgICBDU1NQYXJzZXJDb250
ZXh0KERvY3VtZW50JiwgY29uc3QgS1VSTCYgYmFzZVVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5n
JiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4dChDU1NQYXJz
ZXJNb2RlLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSk7CisgICAgQ1NTUGFyc2VyQ29udGV4
dChEb2N1bWVudCYsIGNvbnN0IFVSTCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQgPSBlbXB0eVN0cmluZygpKTsKIAotICAgIEtVUkwgYmFzZVVSTDsKKyAgICBVUkwgYmFz
ZVVSTDsKICAgICBTdHJpbmcgY2hhcnNldDsKICAgICBDU1NQYXJzZXJNb2RlIG1vZGU7CiAgICAg
Ym9vbCBpc0hUTUxEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IGJmMjIwY2YuLmI1OWU4MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcApAQCAtMTIwMyw3ICsxMjAzLDcgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1
ZTo6aGFzVmFyaWFibGVSZWZlcmVuY2UoKSBjb25zdAogfQogI2VuZGlmCiAKLXZvaWQgQ1NTUHJp
bWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1
cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENT
U1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1VSSSkKICAgICAgICAgYWRkU3VicmVz
b3VyY2VVUkwodXJscywgc3R5bGVTaGVldC0+Y29tcGxldGVVUkwobV92YWx1ZS5zdHJpbmcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggNjQyMDZmOC4uNjQ5YTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMzMCw3ICszMzAs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUXVpcmtWYWx1ZSgpIHsgcmV0dXJuIG1faXNRdWly
a1ZhbHVlOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBMZW5ndGggdmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
Y29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IGNm
NzE0OTUuLjE1YWU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFN0cmluZyBDU1NSZWZsZWN0VmFsdWU6OmN1c3RvbVNlcmlhbGl6ZVJl
c29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0CiB9CiAjZW5kaWYKIAotdm9p
ZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2
b2lkIENTU1JlZmxlY3RWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAog
ewogICAgIGlmIChtX21hc2spCiAgICAgICAgIG1fbWFzay0+YWRkU3VicmVzb3VyY2VTdHlsZVVS
THModXJscywgc3R5bGVTaGVldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5k
ZXggMGVmMTFjZS4uODFmYmU5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Jl
ZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbVNlcmlhbGl6ZVJlc29s
dmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNoTWFwPEF0b21pY1N0cmluZywgU3RyaW5nPiYpIGNvbnN0
OwogI2VuZGlmCiAKLSAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0
PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSZWZsZWN0VmFsdWUm
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDRjZDU2YmEu
LmU4Y2NmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUoUGFz
c1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U1N0eWxlU2hlZXQoc2hlZXQsIG93bmVyTm9kZSwgZmFsc2UpKTsKIH0KIAotUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2Rl
LCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQorUGFzc1JlZlB0
cjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJO
b2RlLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpCiB7CiAgICAg
Q1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KG93bmVyTm9kZS5kb2N1bWVudCgpLCBiYXNl
VVJMLCBlbmNvZGluZyk7CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gc2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZShiYXNlVVJMLnN0cmluZygpLCBwYXJzZXJDb250ZXh0
KTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBib29sIENTU1N0eWxlU2hlZXQ6OmNhbkFjY2Vzc1J1bGVz
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0lubGluZVN0eWxlc2hlZXQpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIEtVUkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKKyAgICBV
UkwgYmFzZVVSTCA9IG1fY29udGVudHMtPmJhc2VVUkwoKTsKICAgICBpZiAoYmFzZVVSTC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG93
bmVyRG9jdW1lbnQoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBTdHJpbmcgQ1NTU3R5bGVTaGVldDo6
aHJlZigpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMtPm9yaWdpbmFsVVJMKCk7CiB9CiAK
LUtVUkwgQ1NTU3R5bGVTaGVldDo6YmFzZVVSTCgpIGNvbnN0CitVUkwgQ1NTU3R5bGVTaGVldDo6
YmFzZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMtPmJhc2VVUkwoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGIzMDhiZDEuLjMyYjVjZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBDU1NTdHls
ZVNoZWV0IEZJTkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250
ZW50cz4sIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4s
IE5vZGUqIG93bmVyTm9kZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Y3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyA9
IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGVJ
bmxpbmUoTm9kZSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmco
KSk7CiAKICAgICB2aXJ0dWFsIH5DU1NTdHlsZVNoZWV0KCk7CiAKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX293bmVyUnVsZTsgfQotICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERTsKICAgICAKICAgICB2b2lkIGNs
ZWFyT3duZXJSdWxlKCkgeyBtX293bmVyUnVsZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3Bw
CmluZGV4IGViYTkzN2MuLmViNjExNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIENTU1ZhbHVlOjpUeXBlIENTU1ZhbHVlOjpjc3NWYWx1ZVR5cGUoKSBjb25z
dAogICAgIHJldHVybiBDU1NfQ1VTVE9NOwogfQogCi12b2lkIENTU1ZhbHVlOjphZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRz
KiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9y
IGludGVybmFsIGluc3RhbmNlcyBvbmx5LgogICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDdlNDgwMjcuLjUwNmUyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIENTU1ZhbHVlX2gKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2gu
aCIKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKLSAg
ICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3Qg
U3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7
CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAppbmRleCA0OWY1YzdjLi43NzNlNjQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIFN0cmluZyBD
U1NWYWx1ZUxpc3Q6OmN1c3RvbVNlcmlhbGl6ZVJlc29sdmluZ1ZhcmlhYmxlcyhjb25zdCBIYXNo
TWFwPEF0b21pY1N0cmluCiB9CiAjZW5kaWYKIAotdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHlsZVNoZWV0
Q29udGVudHMqIHN0eWxlU2hlZXQpIGNvbnN0Cit2b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0gbV92YWx1ZXMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCmluZGV4IDllZTFhZmEuLjJiZGQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVMaXN0LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNl
bGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggNzExZGFmZC4uYjJhMGZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtMTk5OCw3ICsx
OTk4LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
VVJJKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZlVmFs
dWUtPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgS1VSTCB1cmwgPSBzdHlsZVJl
c29sdmVyLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VSTFZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NV
UkxWYWx1ZSk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEl0IGRvZXNuJ3Qgd29yayB3aXRo
IGZvcndhcmQgb3IgZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMgKHNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MDUpCiAgICAgICAgICAgICAgICAgc2V0VmFsdWUo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0
ZShjc3NVUkxWYWx1ZSwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKSk7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggNWY3MTAzMi4uMWY1
YzE1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEs
NyArMTA0MSw3IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJp
ZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFBy
b3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9DU1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBT
dHlsZVByb3BlcnR5U2V0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3Zv
aWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aAppbmRleCA0ZWFiYjNiYy4uMjIxNmEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIENTU1J1bGU7CiBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogY2xhc3MgQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcjsKIGNsYXNzIEltbXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTXV0YWJs
ZVN0eWxlUHJvcGVydHlTZXQ7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb247
CiBjbGFzcyBTdHlsZWRFbGVtZW50OwpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAKICAgICBD
U1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxD
U1NQYXJzZXJNb2RlPihtX2Nzc1BhcnNlck1vZGUpOyB9CiAKLSAgICB2b2lkIGFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250
ZXh0U3R5bGVTaGVldCkgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkg
Y29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBtdXRhYmxl
Q29weSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4g
aW1tdXRhYmxlQ29weUlmTmVlZGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggNWRlZTg0ZC4uYzFiNmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtMzQyMCw4ICszNDIwLDggQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJQcm9n
cmFtPiBTdHlsZVJlc29sdmVyOjpsb29rdXBDdXN0b21GaWx0ZXJQcm9ncmFtKFdlYktpdEMKICAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncywgQ3VzdG9tRmlsdGVyTWVzaFR5cGUgbWVz
aFR5cGUpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVy
ID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Ci0gICAgS1VSTCB2
ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJM
KGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IEtVUkwoKTsKLSAgICBLVVJMIGZyYWdtZW50U2hhZGVy
VVJMID0gZnJhZ21lbnRTaGFkZXIgPyBmcmFnbWVudFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVk
UmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOworICAgIFVSTCB2ZXJ0ZXhTaGFkZXJVUkwgPSB2ZXJ0
ZXhTaGFkZXIgPyB2ZXJ0ZXhTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVy
KSA6IFVSTCgpOworICAgIFVSTCBmcmFnbWVudFNoYWRlclVSTCA9IGZyYWdtZW50U2hhZGVyID8g
ZnJhZ21lbnRTaGFkZXItPmNvbXBsZXRlVVJMKGNhY2hlZFJlc291cmNlTG9hZGVyKSA6IFVSTCgp
OwogICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW07CiAgICAgaWYg
KG1fY3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKQogICAgICAgICBwcm9ncmFtID0gbV9jdXN0b21G
aWx0ZXJQcm9ncmFtQ2FjaGUtPmxvb2t1cChDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhT
aGFkZXJVUkwsIGZyYWdtZW50U2hhZGVyVVJMLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MsIG1l
c2hUeXBlKSk7CkBAIC0zNzg4LDcgKzM3ODgsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIEZpbHRlck9wZXJhdGlvbnMmCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIFdlYktpdENTU1NWR0RvY3Vt
ZW50VmFsdWUqIHN2Z0RvY3VtZW50VmFsdWUgPSB0b1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUo
YXJndW1lbnQpOwotICAgICAgICAgICAgS1VSTCB1cmwgPSBtX3N0YXRlLmRvY3VtZW50KCkuY29t
cGxldGVVUkwoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJsKCkpOworICAgICAgICAgICAgVVJMIHVybCA9
IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdmdEb2N1bWVudFZhbHVlLT51cmwoKSk7
CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlv
biA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHN2Z0RvY3VtZW50VmFsdWUtPnVy
bCgpLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCksIG9wZXJhdGlvblR5cGUpOwogICAgICAgICAg
ICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNFeHRlcm5hbFVSSVJlZmVyZW5jZShzdmdEb2N1bWVu
dFZhbHVlLT51cmwoKSwgbV9zdGF0ZS5kb2N1bWVudCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKaW5kZXggNmExNjE5Ni4uNjc1NGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIERlcHJlY2F0ZWRTdHlsZUJ1aWxkZXI7CiBj
bGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBLVVJM
OworY2xhc3MgVVJMOwogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xhc3MgS2V5ZnJhbWVWYWx1ZTsK
IGNsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBv
cnQuY3BwCmluZGV4IDA5NTY2MDkuLjVmNDMwNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGVJbXBvcnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFN0eWxlUnVsZUltcG9ydDo6flN0eWxlUnVs
ZUltcG9ydCgpCiAgICAgICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCgmbV9zdHlsZVNo
ZWV0Q2xpZW50KTsKIH0KIAotdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnNldENTU1N0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCit2b2lk
IFN0eWxlUnVsZUltcG9ydDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NT
dHlsZVNoZWV0KiBjYWNoZWRTdHlsZVNoZWV0KQogewogICAgIGlmIChtX3N0eWxlU2hlZXQpCiAg
ICAgICAgIG1fc3R5bGVTaGVldC0+Y2xlYXJPd25lclJ1bGUoKTsKQEAgLTEwMCwxMCArMTAwLDEw
IEBAIHZvaWQgU3R5bGVSdWxlSW1wb3J0OjpyZXF1ZXN0U3R5bGVTaGVldCgpCiAgICAgaWYgKCFj
YWNoZWRSZXNvdXJjZUxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBhYnNVUkw7
CisgICAgVVJMIGFic1VSTDsKICAgICBpZiAoIW1fcGFyZW50U3R5bGVTaGVldC0+YmFzZVVSTCgp
LmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUg
YmFzZSBVUkwKLSAgICAgICAgYWJzVVJMID0gS1VSTChtX3BhcmVudFN0eWxlU2hlZXQtPmJhc2VV
UkwoKSwgbV9zdHJIcmVmKTsKKyAgICAgICAgYWJzVVJMID0gVVJMKG1fcGFyZW50U3R5bGVTaGVl
dC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOwogICAgIGVsc2UKICAgICAgICAgYWJzVVJMID0gZG9j
dW1lbnQtPmNvbXBsZXRlVVJMKG1fc3RySHJlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJ
bXBvcnQuaAppbmRleCBlZTU0ZGI5Li40NTIxMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVs
ZUltcG9ydC5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAg
ICBJbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoU3R5bGVSdWxlSW1wb3J0KiBvd25lclJ1bGUpIDog
bV9vd25lclJ1bGUob3duZXJSdWxlKSB7IH0KICAgICAgICAgdmlydHVhbCB+SW1wb3J0ZWRTdHls
ZVNoZWV0Q2xpZW50KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCog
c2hlZXQpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fb3duZXJSdWxlLT5zZXRDU1NTdHlsZVNo
ZWV0KGhyZWYsIGJhc2VVUkwsIGNoYXJzZXQsIHNoZWV0KTsKICAgICAgICAgfQpAQCAtNjYsNyAr
NjYsNyBAQCBwcml2YXRlOgogICAgICAgICBTdHlsZVJ1bGVJbXBvcnQqIG1fb3duZXJSdWxlOwog
ICAgIH07CiAKLSAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqKTsKKyAgICB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBo
cmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2Fj
aGVkQ1NTU3R5bGVTaGVldCopOwogICAgIGZyaWVuZCBjbGFzcyBJbXBvcnRlZFN0eWxlU2hlZXRD
bGllbnQ7CiAKICAgICBTdHlsZVJ1bGVJbXBvcnQoY29uc3QgU3RyaW5nJiBocmVmLCBQYXNzUmVm
UHRyPE1lZGlhUXVlcnlTZXQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oCmluZGV4IDYwYmJiNWYu
LjM4OTkxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaApAQCAtMjIsNyArMjIsNyBAQAogI2Rl
ZmluZSBTdHlsZVNoZWV0X2gKIAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKLSNpbmNsdWRl
ICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ1NTSW1wb3J0
UnVsZSogb3duZXJSdWxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBj
bGVhck93bmVyTm9kZSgpID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJMKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBpc0xvYWRpbmcoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzQ1NTU3R5bGVTaGVl
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVT
aGVldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuY3BwCmluZGV4IGVmNWQ1MzkuLmY1NWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC0zOTcsMTIgKzM5NywxMiBAQCBEb2N1bWVu
dCogU3R5bGVTaGVldENvbnRlbnRzOjpzaW5nbGVPd25lckRvY3VtZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gb3duZXJOb2RlID8gJm93bmVyTm9kZS0+ZG9jdW1lbnQoKSA6IDA7CiB9CiAKLUtVUkwg
U3R5bGVTaGVldENvbnRlbnRzOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QK
K1VSTCBTdHlsZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAogewogICAgIHJldHVybiBDU1NQYXJzZXI6OmNvbXBsZXRlVVJMKG1fcGFyc2VyQ29udGV4
dCwgdXJsKTsKIH0KIAotdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKQordm9pZCBTdHlsZVNoZWV0Q29udGVudHM6
OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpCiB7CiAgICAg
RGVxdWU8U3R5bGVTaGVldENvbnRlbnRzKj4gc3R5bGVTaGVldFF1ZXVlOwogICAgIHN0eWxlU2hl
ZXRRdWV1ZS5hcHBlbmQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmgKaW5kZXggNmI0OTc5Ni4uZjllNjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTdHlsZVNoZWV0Q29udGVudHNf
aAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC04MCw4ICs4MCw4IEBA
IHB1YmxpYzoKICAgICBib29sIGxvYWRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRD
b21wbGV0ZWQ7IH0KICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBj
b25zdDsKIAotICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owot
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKKyAg
ICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OworICAgIHZvaWQgYWRk
U3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpOwogCiAgICAgdm9pZCBzZXRJ
c1VzZXJTdHlsZVNoZWV0KGJvb2wgYikgeyBtX2lzVXNlclN0eWxlU2hlZXQgPSBiOyB9CiAgICAg
Ym9vbCBpc1VzZXJTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9pc1VzZXJTdHlsZVNoZWV0
OyB9CkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogICAgIC8vIHRoaXMgc3R5bGUgc2hlZXQu
IFRoaXMgcHJvcGVydHkgcHJvYmFibHkgaXNuJ3QgdXNlZnVsIGZvciBtdWNoIGV4Y2VwdAogICAg
IC8vIHRoZSBKYXZhU2NyaXB0IGJpbmRpbmcgKHdoaWNoIG5lZWRzIHRvIHVzZSB0aGlzIHZhbHVl
IGZvciBzZWN1cml0eSkuCiAgICAgU3RyaW5nIG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW5hbFVSTDsgfQotICAgIGNvbnN0IEtVUkwmIGJhc2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlckNvbnRleHQuYmFzZVVSTDsgfQorICAgIGNvbnN0IFVSTCYgYmFzZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CiAKICAgICB1bnNpZ25lZCBy
dWxlQ291bnQoKSBjb25zdDsKICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlQXQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAK
aW5kZXggMWQzYWQyOC4uNWM5NjJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NoYWRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5k
aW5nU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNTUs
NyArNTUsNyBAQCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6fldlYktpdENTU1NoYWRlclZhbHVlKCkK
IHsKIH0KIAotS1VSTCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29tcGxldGVVUkwoQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QKK1VSTCBXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6Y29t
cGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikgY29uc3QKIHsKICAgICByZXR1
cm4gbG9hZGVyLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChtX3VybCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oCmluZGV4IGE2NTU1ZjIuLjQwZWQ3YjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtMzcsNyArMzcs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTdHlsZUNhY2hlZFNoYWRlcjsKIGNsYXNz
IFN0eWxlU2hhZGVyOwogCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJp
bmcmIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAgICAgdm9pZCBzZXRGb3Jt
YXQoY29uc3QgU3RyaW5nJiBmb3JtYXQpIHsgbV9mb3JtYXQgPSBmb3JtYXQ7IH0KIAotICAgIEtV
UkwgY29tcGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKKyAgICBVUkwgY29t
cGxldGVVUkwoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSBjb25zdDsKICAgICBTdHlsZUNhY2hlZFNo
YWRlciogY2FjaGVkU2hhZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAgICAgU3R5bGVTaGFk
ZXIqIGNhY2hlZE9yUGVuZGluZ1NoYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAppbmRleCA1YzU3NGFhLi44OGNkNjZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKQEAgLTIzMywxMyArMjMzLDEzIEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcm
IG5hbWVzcGFjZVVSCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2M7CiAjaWYgRU5BQkxFKFNWRykK
ICAgICBpZiAobmFtZXNwYWNlVVJJID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCi0gICAg
ICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgaWYg
KG5hbWVzcGFjZVVSSSA9PSBIVE1MTmFtZXM6OnhodG1sTmFtZXNwYWNlVVJJKQotICAgICAgICBk
b2MgPSBEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0gRG9j
dW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIFVSTCgpKTsKICAgICBlbHNlCi0gICAgICAgIGRvYyA9IERv
Y3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0
ZSgwLCBVUkwoKSk7CiAKICAgICBkb2MtPnNldFNlY3VyaXR5T3JpZ2luKG1fZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKSk7CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIERPTUltcGxlbWVudGF0
aW9uOjppc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiBQYXNzUmVmUHRy
PEhUTUxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUhUTUxEb2N1bWVudChjb25z
dCBTdHJpbmcmIHRpdGxlKQogewotICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGQgPSBIVE1MRG9j
dW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgIFJlZlB0cjxIVE1MRG9jdW1lbnQ+IGQgPSBI
VE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgZC0+b3BlbigpOwogICAgIGQtPndy
aXRlKCI8IWRvY3R5cGUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiIpOwogICAgIGlm
ICghdGl0bGUuaXNOdWxsKCkpCkBAIC0zMTksNyArMzE5LDcgQEAgUGFzc1JlZlB0cjxIVE1MRG9j
dW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5n
JiB0aXQKICAgICByZXR1cm4gZC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+
IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIHR5cGUsIEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGluVmlld1NvdXJjZU1vZGUpCitQYXNz
UmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBib29sIGluVmlld1Nv
dXJjZU1vZGUpCiB7CiAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUpCiAgICAgICAgIHJldHVybiBI
VE1MVmlld1NvdXJjZURvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHVybCwgdHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCmluZGV4IGY5YWM2ZmYuLmFiYWZjYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRUeXBlOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1M
RG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVndWxhckV4cHJlc3Np
b247CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPEhUTUxEb2N1bWVudD4gY3JlYXRlSFRNTERvY3VtZW50KGNvbnN0
IFN0cmluZyYgdGl0bGUpOwogCiAgICAgLy8gT3RoZXIgbWV0aG9kcyAobm90IHBhcnQgb2YgRE9N
KQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBib29sIGluVmlld1NvdXJjZU1v
ZGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBGcmFtZSosIGNvbnN0IFVSTCYsIGJvb2wgaW5WaWV3U291cmNl
TW9kZSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc1hNTE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUpOwogICAgIHN0YXRpYyBib29sIGlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMzIzMDU0OS4uMGIxOWNmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzVmFsaWROYW1lUGFydChVQ2hhcjMyIGMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBib29sIHNob3VsZEluaGVyaXRTZWN1cml0eU9yaWdpbkZyb21Pd25lcihjb25zdCBLVVJM
JiB1cmwpCitzdGF0aWMgYm9vbCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8jb3JpZ2luLTAKICAgICAvLwpAQCAtMzc2LDcgKzM3Niw3IEBA
IHN0YXRpYyBib29sIGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3Rp
dmVTZWN1cml0eU9yaWdpbiwgRnJhbWUqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMg
dm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiBhY3RpdmVVUkwsIGNvbnN0IGNoYXIqIHJlYXNvbikKK3N0YXRpYyB2b2lkIHByaW50TmF2aWdh
dGlvbkVycm9yTWVzc2FnZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25z
dCBjaGFyKiByZWFzb24pCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnIiAr
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSArICInIGZyb20gZnJhbWUgd2l0aCBV
UkwgJyIgKyBhY3RpdmVVUkwuc3RyaW5nKCkgKyAiJy4gIiArIHJlYXNvbiArICJcbiI7CiAKQEAg
LTQwMCw3ICs0MDAsNyBAQCBib29sIFRleHRBdXRvU2l6aW5nVHJhaXRzOjppc0RlbGV0ZWRWYWx1
ZShjb25zdCBUZXh0QXV0b1NpemluZ0tleSYgdmFsdWUpCiB9CiAjZW5kaWYKIAotRG9jdW1lbnQ6
OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVu
dENsYXNzZXMpCitEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQogICAgIDogQ29udGFpbmVyTm9kZSgwLCBDcmVh
dGVEb2N1bWVudCkKICAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9zdHlsZVJlc29sdmVy
VGhyb3dhd2F5VGltZXIodGhpcywgJkRvY3VtZW50OjpzdHlsZVJlc29sdmVyVGhyb3dhd2F5VGlt
ZXJGaXJlZCwgdGltZUJlZm9yZVRocm93aW5nQXdheVN0eWxlUmVzb2x2ZXJBZnRlckxhc3RVc2VJ
blNlY29uZHMpCkBAIC0xMzk0LDcgKzEzOTQsNyBAQCB2b2lkIERvY3VtZW50OjpzZXREb2N1bWVu
dFVSSShjb25zdCBTdHJpbmcmIHVyaSkKICAgICB1cGRhdGVCYXNlVVJMKCk7CiB9CiAKLUtVUkwg
RG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAorVVJMIERvY3VtZW50OjpiYXNlVVJJKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQpAQCAtMjYyMyw5ICsyNjIzLDkgQEAgdm9pZCBE
b2N1bWVudDo6bG9nRXhjZXB0aW9uVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBjb25zdCBTdHJpbmcmIHMKICAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGNhbGxTdGFjayk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgY29u
c3QgS1VSTCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CisgICAg
Y29uc3QgVVJMJiBuZXdVUkwgPSB1cmwuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IHVybDsKICAg
ICBpZiAobmV3VVJMID09IG1fdXJsKQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MzYsNyArMjYz
Niw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCiAKIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogewotICAgIEtVUkwgb2xkQmFzZVVSTCA9IG1fYmFzZVVS
TDsKKyAgICBVUkwgb2xkQmFzZVVSTCA9IG1fYmFzZVVSTDsKICAgICAvLyBET00gMyBDb3JlOiBX
aGVuIHRoZSBEb2N1bWVudCBzdXBwb3J0cyB0aGUgZmVhdHVyZSAiSFRNTCIgW0RPTSBMZXZlbCAy
IEhUTUxdLCB0aGUgYmFzZSBVUkkgaXMgY29tcHV0ZWQgdXNpbmcKICAgICAvLyBmaXJzdCB0aGUg
dmFsdWUgb2YgdGhlIGhyZWYgYXR0cmlidXRlIG9mIHRoZSBIVE1MIEJBU0UgZWxlbWVudCBpZiBh
bnksIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0ZQogICAgIC8vIGZy
b20gdGhlIERvY3VtZW50IGludGVyZmFjZSBvdGhlcndpc2UuCkBAIC0yNjQ4LDE0ICsyNjQ4LDE0
IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgICAgICAvLyBUaGUgZG9jdW1l
bnRVUkkgYXR0cmlidXRlIGlzIHJlYWQtb25seSBmcm9tIEphdmFTY3JpcHQsIGJ1dCB3cml0YWJs
ZSBmcm9tIE9iamVjdGl2ZSBDLCBzbyB3ZSBuZWVkIHRvIHJldGFpbgogICAgICAgICAvLyB0aGlz
IGZhbGxiYWNrIGJlaGF2aW9yLiBXZSB1c2UgYSBudWxsIGJhc2UgVVJMLCBzaW5jZSB0aGUgZG9j
dW1lbnRVUkkgYXR0cmlidXRlIGlzIGFuIGFyYml0cmFyeSBzdHJpbmcKICAgICAgICAgLy8gYW5k
IERPTSAzIENvcmUgZG9lcyBub3Qgc3BlY2lmeSBob3cgaXQgc2hvdWxkIGJlIHJlc29sdmVkLgot
ICAgICAgICBtX2Jhc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZG9jdW1lbnRVUkkoKSk7
CisgICAgICAgIG1fYmFzZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGRvY3VtZW50VVJJKCkp
OwogICAgIH0KIAogICAgIGlmIChtX3NlbGVjdG9yUXVlcnlDYWNoZSkKICAgICAgICAgbV9zZWxl
Y3RvclF1ZXJ5Q2FjaGUtPmludmFsaWRhdGUoKTsKIAogICAgIGlmICghbV9iYXNlVVJMLmlzVmFs
aWQoKSkKLSAgICAgICAgbV9iYXNlVVJMID0gS1VSTCgpOworICAgICAgICBtX2Jhc2VVUkwgPSBV
UkwoKTsKIAogICAgIGlmIChtX2VsZW1lbnRTaGVldCkgewogICAgICAgICAvLyBFbGVtZW50IHNo
ZWV0IGlzIHNpbGx5LiBJdCBuZXZlciBjb250YWlucyBhbnl0aGluZy4KQEAgLTI2NzUsNyArMjY3
NSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgIH0KIH0KIAotdm9pZCBE
b2N1bWVudDo6c2V0QmFzZVVSTE92ZXJyaWRlKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRG9jdW1l
bnQ6OnNldEJhc2VVUkxPdmVycmlkZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX2Jhc2VVUkxP
dmVycmlkZSA9IHVybDsKICAgICB1cGRhdGVCYXNlVVJMKCk7CkBAIC0yNzAxLDExICsyNzAxLDEx
IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFNpbmNlIHRoaXMgZG9lc24ndCBzaGFyZSBjb2RlIHdpdGggY29tcGxldGVVUkwgaXQg
bWF5IG5vdCBoYW5kbGUgZW5jb2RpbmdzIGNvcnJlY3RseS4KLSAgICBLVVJMIGJhc2VFbGVtZW50
VVJMOworICAgIFVSTCBiYXNlRWxlbWVudFVSTDsKICAgICBpZiAoaHJlZikgewogICAgICAgICBT
dHJpbmcgc3RyaXBwZWRIcmVmID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKCpo
cmVmKTsKICAgICAgICAgaWYgKCFzdHJpcHBlZEhyZWYuaXNFbXB0eSgpKQotICAgICAgICAgICAg
YmFzZUVsZW1lbnRVUkwgPSBLVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOworICAgICAgICAgICAg
YmFzZUVsZW1lbnRVUkwgPSBVUkwodXJsKCksIHN0cmlwcGVkSHJlZik7CiAgICAgfQogICAgIGlm
IChtX2Jhc2VFbGVtZW50VVJMICE9IGJhc2VFbGVtZW50VVJMICYmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd0Jhc2VVUkkoYmFzZUVsZW1lbnRVUkwpKSB7CiAgICAgICAgIG1fYmFzZUVs
ZW1lbnRVUkwgPSBiYXNlRWxlbWVudFVSTDsKQEAgLTI3MTUsNyArMjcxNSw3IEBAIHZvaWQgRG9j
dW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgbV9iYXNlVGFyZ2V0ID0gdGFyZ2V0ID8g
KnRhcmdldCA6IG51bGxBdG9tOwogfQogCi1TdHJpbmcgRG9jdW1lbnQ6OnVzZXJBZ2VudChjb25z
dCBLVVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgRG9jdW1lbnQ6OnVzZXJBZ2VudChjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSA/IGZyYW1lKCktPmxvYWRlcigpLnVz
ZXJBZ2VudCh1cmwpIDogU3RyaW5nKCk7CiB9CkBAIC0zNzI2LDcgKzM3MjYsNyBAQCBTdHJpbmcg
RG9jdW1lbnQ6OmNvb2tpZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIAotICAgIEtVUkwgY29va2llVVJMID0gdGhpcy0+Y29va2llVVJM
KCk7CisgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOwogICAgIGlmIChjb29r
aWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTM3NDcsNyAr
Mzc0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHZhbHVlLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEtVUkwgY29v
a2llVVJMID0gdGhpcy0+Y29va2llVVJMKCk7CisgICAgVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNv
b2tpZVVSTCgpOwogICAgIGlmIChjb29raWVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTM5NzEsMjAgKzM5NzEsMjAgQEAgdm9pZCBEb2N1bWVudDo6c2V0RGVjb2RlcihQYXNz
UmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIpCiAgICAgbV9kZWNvZGVyID0gZGVj
b2RlcjsKIH0KIAotS1VSTCBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IEtVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKK1VSTCBEb2N1bWVudDo6Y29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25z
dAogewogICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxsIFVSTCB3aGVuIHBhc3NlZCBhIG51bGwg
c3RyaW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgY2hhbmdlIHRoZSBLVVJMIGNvbnN0cnVj
dG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5n
ZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KICAgICAvLyBTZWUg
YWxzbyBbQ1NTXVN0eWxlU2hlZXQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpCiAgICAgaWYg
KHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKLSAgICBjb25zdCBLVVJMJiBi
YXNlVVJMID0gKChiYXNlVVJMT3ZlcnJpZGUuaXNFbXB0eSgpIHx8IGJhc2VVUkxPdmVycmlkZSA9
PSBibGFua1VSTCgpKSAmJiBwYXJlbnREb2N1bWVudCgpKSA/IHBhcmVudERvY3VtZW50KCktPmJh
c2VVUkwoKSA6IGJhc2VVUkxPdmVycmlkZTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIGNv
bnN0IFVSTCYgYmFzZVVSTCA9ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJM
T3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1
bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJMT3ZlcnJpZGU7CiAgICAgaWYgKCFtX2RlY29kZXIp
Ci0gICAgICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAgcmV0dXJuIEtVUkwoYmFz
ZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOworICAgICAgICByZXR1cm4gVVJMKGJh
c2VVUkwsIHVybCk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwsIG1fZGVjb2Rlci0+ZW5j
b2RpbmcoKSk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdAorVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY29tcGxldGVVUkwodXJsLCBtX2Jhc2VVUkwpOwogfQpAQCAt
NDE5OSwyMSArNDE5OSwyMSBAQCBTdHJpbmcgRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFZhbHVlKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiAgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFu
ZE5hbWUpLnZhbHVlKCk7CiB9CiAKLUtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlv
blVSTCgpCitVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpCiB7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5TZWFyY2hNSU1FVHlwZSA9ICJhcHBsaWNhdGlv
bi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIjsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3Qgb3BlblNlYXJjaFJlbGF0aW9uID0gInNlYXJjaCI7CiAKICAgICAvLyBGSVhNRTogV2h5IGRv
IG9ubHkgdG9wLWxldmVsIGZyYW1lcyBoYXZlIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTHM/CiAg
ICAgaWYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8gRklYTUU6IFdoeSBk
byB3ZSBuZWVkIHRvIHdhaXQgZm9yIEZyYW1lU3RhdGVDb21wbGV0ZT8KICAgICBpZiAoZnJhbWUo
KS0+bG9hZGVyKCkuc3RhdGUoKSAhPSBGcmFtZVN0YXRlQ29tcGxldGUpCi0gICAgICAgIHJldHVy
biBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmICghaGVhZCgpKQotICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBSZWZQdHI8
SFRNTENvbGxlY3Rpb24+IGNoaWxkcmVuID0gaGVhZCgpLT5jaGlsZHJlbigpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGNoaWxkID0gY2hpbGRyZW4tPml0ZW0oaSk7IGkrKykgewpA
QCAtNDIyNyw3ICs0MjI3LDcgQEAgS1VSTCBEb2N1bWVudDo6b3BlblNlYXJjaERlc2NyaXB0aW9u
VVJMKCkKICAgICAgICAgcmV0dXJuIGxpbmtFbGVtZW50LT5ocmVmKCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnB1
c2hDdXJyZW50U2NyaXB0KFBhc3NSZWZQdHI8SFRNTFNjcmlwdEVsZW1lbnQ+IG5ld0N1cnJlbnRT
Y3JpcHQpCkBAIC00NTY2LDcgKzQ1NjYsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KCkKICAgICBpZiAoIW1fZnJhbWUpIHsKICAgICAgICAgLy8gTm8gc291cmNlIGZvciBh
IHNlY3VyaXR5IGNvbnRleHQuCiAgICAgICAgIC8vIFRoaXMgY2FuIG9jY3VyIHZpYSBkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgpLgotICAgICAgICBtX2Nvb2tpZVVSTCA9
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgbV9jb29raWVV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgc2V0U2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsKICAgICAgICAgc2V0
Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDY1Miw3ICs0NjUyLDcgQEAgYm9vbCBEb2N1bWVudDo6
aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKICAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CiB9CiAK
LXZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJM
JiB1cmwpCit2b2lkIERvY3VtZW50Ojp1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgRnJhbWUqIGYgPSBmcmFtZSgpOwogICAgIGlmICghZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNDEwYWZhZS4uNzNhNzg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTIzNiwxMSArMjM2LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciBEb2N1bWVudENs
YXNzRmxhZ3M7CiAKIGNsYXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1Ymxp
YyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
b2N1bWVudD4gY3JlYXRlWEhUTUwoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3VtZW50
KGZyYW1lLCB1cmwsIFhIVE1MRG9jdW1lbnRDbGFzcykpOwogICAgIH0KQEAgLTQxNCw3ICs0MTQs
NyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRvY3VtZW50VVJJKCkgY29uc3QgeyByZXR1cm4gbV9k
b2N1bWVudFVSSTsgfQogICAgIHZvaWQgc2V0RG9jdW1lbnRVUkkoY29uc3QgU3RyaW5nJik7CiAK
LSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJhc2VV
UkkoKSBjb25zdDsKIAogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgIFN0cmlu
ZyB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKQEAgLTU4NCwyMiArNTg0LDIyIEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgd2VsbEZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VsbEZvcm1lZDsgfQog
Ci0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJl
dHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFs
IGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV91cmw7IH0K
KyAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFRvIHVuZGVyc3RhbmQgaG93
IHRoZXNlIGNvbmNlcHRzIHJlbGF0ZSB0byBvbmUgYW5vdGhlciwgcGxlYXNlIHNlZSB0aGUKICAg
ICAvLyBjb21tZW50cyBzdXJyb3VuZGluZyB0aGVpciBkZWNsYXJhdGlvbi4KLSAgICBjb25zdCBL
VVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMOyB9Ci0gICAgdm9pZCBzZXRC
YXNlVVJMT3ZlcnJpZGUoY29uc3QgS1VSTCYpOwotICAgIGNvbnN0IEtVUkwmIGJhc2VVUkxPdmVy
cmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTE92ZXJyaWRlOyB9Ci0gICAgY29uc3QgS1VS
TCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VFbGVtZW50VVJMOyB9Cisg
ICAgY29uc3QgVVJMJiBiYXNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMOyB9CisgICAg
dm9pZCBzZXRCYXNlVVJMT3ZlcnJpZGUoY29uc3QgVVJMJik7CisgICAgY29uc3QgVVJMJiBiYXNl
VVJMT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlkZTsgfQorICAgIGNv
bnN0IFVSTCYgYmFzZUVsZW1lbnRVUkwoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VFbGVtZW50VVJM
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBiYXNlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNl
VGFyZ2V0OyB9CiAgICAgdm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwg
S1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERSBGSU5BTDsKLSAg
ICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmIGJhc2VVUkxPdmVy
cmlkZSkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikg
Y29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJyaWRlKSBjb25zdDsKIAotICAgIHZpcnR1YWwgU3RyaW5n
IHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIApAQCAtODE3LDggKzgxNyw4IEBAIHB1YmxpYzoK
ICAgICAvLyAgICBkb2N1bWVudCBpbmhlcml0cyB0aGUgc2VjdXJpdHkgY29udGV4dCBvZiBhbm90
aGVyIGRvY3VtZW50LCBpdAogICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwgYnV0IG5v
dCBpdHMgVVJMLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYgY29va2llVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb29raWVVUkw7IH0KLSAgICB2b2lkIHNldENvb2tpZVVSTChjb25zdCBLVVJMJiB1
cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGNvb2tpZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29va2llVVJMOyB9CisgICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KIAogICAgIC8vIFRoZSBmaXJzdFBhcnR5
Rm9yQ29va2llcyBpcyB1c2VkIHRvIGNvbXB1dGUgd2hldGhlciB0aGlzIGRvY3VtZW50CiAgICAg
Ly8gYXBwZWFycyBpbiBhICJ0aGlyZC1wYXJ0eSIgY29udGV4dCBmb3IgdGhlIHB1cnBvc2Ugb2Yg
dGhpcmQtcGFydHkKQEAgLTgzMCw4ICs4MzAsOCBAQCBwdWJsaWM6CiAgICAgLy8gICAgICAgZmly
c3RQYXJ0eUZvckNvb2tpZXMgaGF2ZSBhIGRpZmZlcmVudCByZWdpc3RyeS1jb250cm9sbGVkCiAg
ICAgLy8gICAgICAgZG9tYWluLgogICAgIC8vCi0gICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9Ci0gICAg
dm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpIHsgbV9maXJzdFBh
cnR5Rm9yQ29va2llcyA9IHVybDsgfQorICAgIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9CisgICAgdm9pZCBz
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkgeyBtX2ZpcnN0UGFydHlGb3JD
b29raWVzID0gdXJsOyB9CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBpbXBsZW1lbnRzIHRo
ZSBydWxlIGZyb20gSFRNTCA0IGZvciB3aGF0IHZhbGlkIG5hbWVzIGFyZS4KICAgICAvLyBUbyBn
ZXQgdGhpcyByaWdodCBmb3IgYWxsIHRoZSBYTUwgY2FzZXMsIHdlIHByb2JhYmx5IGhhdmUgdG8g
aW1wcm92ZSB0aGlzIG9yIG1vdmUgaXQKQEAgLTg2Niw3ICs4NjYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kKTsKICAgICBT
dHJpbmcgcXVlcnlDb21tYW5kVmFsdWUoY29uc3QgU3RyaW5nJiBjb21tYW5kKTsKIAotICAgIEtV
Ukwgb3BlblNlYXJjaERlc2NyaXB0aW9uVVJMKCk7CisgICAgVVJMIG9wZW5TZWFyY2hEZXNjcmlw
dGlvblVSTCgpOwogCiAgICAgLy8gZGVzaWduTW9kZSBzdXBwb3J0CiAgICAgZW51bSBJbmhlcml0
ZWRCb29sIHsgb2ZmID0gZmFsc2UsIG9uID0gdHJ1ZSwgaW5oZXJpdCB9OyAgICAKQEAgLTEwMDcs
NyArMTAwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRTZWN1cml0eUNvbnRleHQoKTsKICAg
ICB2b2lkIGluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAotICAgIHZvaWQgdXBkYXRlVVJM
Rm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHVwZGF0ZVVSTEZv
clB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBVUkwmKTsKICAgICB2b2lkIHN0YXRlUG9wcGVkKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAKICAgICBib29sIHByb2Nlc3NpbmdM
b2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQ7IH0KQEAgLTEx
ODcsNyArMTE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc3VhbFVwZGF0ZXNBbGxvd2Vk
QnlDbGllbnQoYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAgICBEb2N1bWVudChGcmFtZSosIGNvbnN0
IEtVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKKyAgICBEb2N1bWVudChG
cmFtZSosIGNvbnN0IFVSTCYsIHVuc2lnbmVkID0gRGVmYXVsdERvY3VtZW50Q2xhc3MpOwogCiAg
ICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1sVmVyc2lvbiA9IFN0cmluZygpOyB9CiAK
QEAgLTEyOTMsMTIgKzEyOTMsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2VsbEZvcm1lZDsK
IAogICAgIC8vIERvY3VtZW50IFVSTHMuCi0gICAgS1VSTCBtX3VybDsgLy8gRG9jdW1lbnQuVVJM
OiBUaGUgVVJMIGZyb20gd2hpY2ggdGhpcyBkb2N1bWVudCB3YXMgcmV0cmlldmVkLgotICAgIEtV
UkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2
aW5nIHJlbGF0aXZlIFVSTHMuCi0gICAgS1VSTCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0
ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbV9iYXNlVVJMIChi
dXQgbm90IG1fYmFzZUVsZW1lbnRVUkwpLgotICAgIEtVUkwgbV9iYXNlRWxlbWVudFVSTDsgLy8g
VGhlIFVSTCBzZXQgYnkgdGhlIDxiYXNlPiBlbGVtZW50LgotICAgIEtVUkwgbV9jb29raWVVUkw7
IC8vIFRoZSBVUkwgdG8gdXNlIGZvciBjb29raWUgYWNjZXNzLgotICAgIEtVUkwgbV9maXJzdFBh
cnR5Rm9yQ29va2llczsgLy8gVGhlIHBvbGljeSBVUkwgZm9yIHRoaXJkLXBhcnR5IGNvb2tpZSBi
bG9ja2luZy4KKyAgICBVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdo
aWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KKyAgICBVUkwgbV9iYXNlVVJMOyAvLyBO
b2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMu
CisgICAgVVJMIG1fYmFzZVVSTE92ZXJyaWRlOyAvLyBBbiBhbHRlcm5hdGl2ZSBiYXNlIFVSTCB0
aGF0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciBtX2Jhc2VVUkwgKGJ1dCBub3QgbV9iYXNlRWxlbWVu
dFVSTCkuCisgICAgVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8vIFRoZSBVUkwgc2V0IGJ5IHRoZSA8
YmFzZT4gZWxlbWVudC4KKyAgICBVUkwgbV9jb29raWVVUkw7IC8vIFRoZSBVUkwgdG8gdXNlIGZv
ciBjb29raWUgYWNjZXNzLgorICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyAvLyBUaGUg
cG9saWN5IFVSTCBmb3IgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nLgogCiAgICAgLy8gRG9j
dW1lbnQuZG9jdW1lbnRVUkk6CiAgICAgLy8gQWx0aG91Z2ggVVJMLWxpa2UsIERvY3VtZW50LmRv
Y3VtZW50VVJJIGNhbiBhY3R1YWxseSBiZSBzZXQgdG8gYW55CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFR5cGUuY3BwCmluZGV4IGFjZWZhNjcuLjQ3MmY4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFR5cGUuY3BwCkBAIC0zNiw5ICszNiw5IEBAIERvY3VtZW50VHlwZTo6RG9jdW1lbnRUeXBlKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmCiB7CiB9
CiAKLUtVUkwgRG9jdW1lbnRUeXBlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBEb2N1bWVudFR5cGU6
OmJhc2VVUkkoKSBjb25zdAogewotICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIFVSTCgp
OwogfQogCiBTdHJpbmcgRG9jdW1lbnRUeXBlOjpub2RlTmFtZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUeXBlLmgKaW5kZXggMWRiNjMyNy4uNjUwMTgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFR5cGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERvY3Vt
ZW50VHlwZShEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBwdWJs
aWNJZCwgY29uc3QgU3RyaW5nJiBzeXN0ZW1JZCk7CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVS
SSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVl
cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMzY2MTBiNC4uMmUwMTE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMTI0NiwxMCArMTI0NiwxMCBAQCB2b2lkIEVsZW1lbnQ6OnNldFBy
ZWZpeChjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
bV90YWdOYW1lLnNldFByZWZpeChwcmVmaXguaXNFbXB0eSgpID8gQXRvbWljU3RyaW5nKCkgOiBw
cmVmaXgpOwogfQogCi1LVVJMIEVsZW1lbnQ6OmJhc2VVUkkoKSBjb25zdAorVVJMIEVsZW1lbnQ6
OmJhc2VVUkkoKSBjb25zdAogewogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYmFzZUF0dHJpYnV0
ZSA9IGdldEF0dHJpYnV0ZShiYXNlQXR0cik7Ci0gICAgS1VSTCBiYXNlKEtVUkwoKSwgYmFzZUF0
dHJpYnV0ZSk7CisgICAgVVJMIGJhc2UoVVJMKCksIGJhc2VBdHRyaWJ1dGUpOwogICAgIGlmICgh
YmFzZS5wcm90b2NvbCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2U7CiAKQEAgLTEy
NTcsMTEgKzEyNTcsMTEgQEAgS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICBpZiAo
IXBhcmVudCkKICAgICAgICAgcmV0dXJuIGJhc2U7CiAKLSAgICBjb25zdCBLVVJMJiBwYXJlbnRC
YXNlID0gcGFyZW50LT5iYXNlVVJJKCk7CisgICAgY29uc3QgVVJMJiBwYXJlbnRCYXNlID0gcGFy
ZW50LT5iYXNlVVJJKCk7CiAgICAgaWYgKHBhcmVudEJhc2UuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBiYXNlOwogCi0gICAgcmV0dXJuIEtVUkwocGFyZW50QmFzZSwgYmFzZUF0dHJpYnV0ZSk7
CisgICAgcmV0dXJuIFVSTChwYXJlbnRCYXNlLCBiYXNlQXR0cmlidXRlKTsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CkBAIC0yNDkwLDcg
KzI0OTAsNyBAQCBET01TdHJpbmdNYXAqIEVsZW1lbnQ6OmRhdGFzZXQoKQogICAgIHJldHVybiBk
YXRhLmRhdGFzZXQoKTsKIH0KIAotS1VSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK1VSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgaWYgKGVsZW1lbnREYXRhKCkpIHsKQEAgLTI1MDEsNyArMjUwMSw3IEBAIEtVUkwgRWxl
bWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGdldEF0dHJpYnV0ZShuYW1lKSkpOwogfQogCi1LVVJMIEVsZW1lbnQ6OmdldE5v
bkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitVUkwg
RWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKIHsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgaWYgKGVsZW1lbnREYXRhKCkp
IHsKQEAgLTI1MTEsNyArMjUxMSw3IEBAIEtVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICNlbmRpZgogICAgIFN0cmlu
ZyB2YWx1ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUo
bmFtZSkpOwogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7
CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TCh2YWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDY0MDJkNTIuLjM0MjZhZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1
cm4gbV90YWdOYW1lLnByZWZpeCgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWVzcGFjZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdGFnTmFtZS5u
YW1lc3BhY2VVUkkoKTsgfQogCi0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdCBPVkVS
UklERSBGSU5BTDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREUgRklO
QUw7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCkBAIC0zODQsOCAr
Mzg0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0hU
TUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICBLVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7Ci0gICAgS1VSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3Q7CisgICAgVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikg
Y29uc3Q7CisgICAgVVJMIGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJj
ZVVSTCgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5jcHAKaW5kZXggMDNiYjNiZi4uNjQ2ZjZjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JY29uVVJMLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUljb25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29uc3QgS1VSTCYgdXJs
LCBJY29uVHlwZSB0eXBlKQorSWNvblVSTCBJY29uVVJMOjpkZWZhdWx0SWNvblVSTChjb25zdCBV
UkwmIHVybCwgSWNvblR5cGUgdHlwZSkKIHsKICAgICBJY29uVVJMIHJlc3VsdCh1cmwsIGVtcHR5
U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIHR5cGUpOwogICAgIHJlc3VsdC5tX2lzRGVmYXVsdElj
b24gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKaW5kZXggMWZiMzU3OC4uNzkxNmFlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSWNvblVSTC5oCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIEljb25VUkxfaAogI2RlZmlu
ZSBJY29uVVJMX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBJY29uVVJMIHsKICAg
ICBJY29uVHlwZSBtX2ljb25UeXBlOwogICAgIFN0cmluZyBtX3NpemVzOwogICAgIFN0cmluZyBt
X21pbWVUeXBlOwotICAgIEtVUkwgbV9pY29uVVJMOworICAgIFVSTCBtX2ljb25VUkw7CiAgICAg
Ym9vbCBtX2lzRGVmYXVsdEljb247CiAKICAgICBJY29uVVJMKCkKQEAgLTYxLDcgKzYxLDcgQEAg
c3RydWN0IEljb25VUkwgewogICAgIHsKICAgICB9CiAKLSAgICBJY29uVVJMKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5
cGUgdHlwZSkKKyAgICBJY29uVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNpemVz
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBJY29uVHlwZSB0eXBlKQogICAgICAgICA6IG1faWNv
blR5cGUodHlwZSkKICAgICAgICAgLCBtX3NpemVzKHNpemVzKQogICAgICAgICAsIG1fbWltZVR5
cGUobWltZVR5cGUpCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBJY29uVVJMIHsKICAgICB7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJMKGNvbnN0IEtVUkwm
LCBJY29uVHlwZSk7CisgICAgc3RhdGljIEljb25VUkwgZGVmYXVsdEljb25VUkwoY29uc3QgVVJM
JiwgSWNvblR5cGUpOwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEljb25VUkwmLCBjb25z
dCBJY29uVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVT
aGVldE93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JbmxpbmVTdHlsZVNoZWV0T3duZXIu
Y3BwCmluZGV4IDQxODkzYTEuLjcxMzJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9JbmxpbmVTdHlsZVNoZWV0T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Jbmxp
bmVTdHlsZVNoZWV0T3duZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBJbmxpbmVTdHls
ZVNoZWV0T3duZXI6OmNyZWF0ZVNoZWV0KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCkKIAogICAgIG1fbG9hZGluZyA9IHRydWU7CiAKLSAgICBtX3NoZWV0ID0gQ1NTU3R5bGVT
aGVldDo6Y3JlYXRlSW5saW5lKGVsZW1lbnQsIEtVUkwoKSwgZG9jdW1lbnQuaW5wdXRFbmNvZGlu
ZygpKTsKKyAgICBtX3NoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKGVsZW1lbnQs
IFVSTCgpLCBkb2N1bWVudC5pbnB1dEVuY29kaW5nKCkpOwogICAgIG1fc2hlZXQtPnNldE1lZGlh
UXVlcmllcyhtZWRpYVF1ZXJpZXMucmVsZWFzZSgpKTsKICAgICBtX3NoZWV0LT5zZXRUaXRsZShl
bGVtZW50LnRpdGxlKCkpOwogICAgIG1fc2hlZXQtPmNvbnRlbnRzKCktPnBhcnNlU3RyaW5nQXRM
aW5lKHRleHQsIG1fc3RhcnRMaW5lTnVtYmVyLnplcm9CYXNlZEludCgpLCBtX2lzUGFyc2luZ0No
aWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiODllN2QzLi5hYTIxOTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xMTM4LDkgKzExMzgsOSBAQCBEb2N1bWVudCAqTm9kZTo6b3duZXJEb2N1bWVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvYyA9PSB0aGlzID8gMCA6IGRvYzsKIH0KIAotS1VSTCBO
b2RlOjpiYXNlVVJJKCkgY29uc3QKK1VSTCBOb2RlOjpiYXNlVVJJKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpLT5iYXNlVVJJKCkgOiBLVVJMKCk7Cisg
ICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVSSSgpIDogVVJMKCk7
CiB9CiAKIGJvb2wgTm9kZTo6aXNFcXVhbE5vZGUoTm9kZSogb3RoZXIpIGNvbnN0CkBAIC0xNzk5
LDcgKzE3OTksNyBAQCB2b2lkIE5vZGVMaXN0c05vZGVEYXRhOjppbnZhbGlkYXRlQ2FjaGVzKGNv
bnN0IFF1YWxpZmllZE5hbWUqIGF0dHJOYW1lKQogICAgICAgICBpdC0+dmFsdWUtPmludmFsaWRh
dGVDYWNoZSgpOwogfQogCi12b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgTm9kZTo6Z2V0U3VicmVzb3VyY2VVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKHVybHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggY2YxNTA3Mi4uNTEzZDZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJFZGl0aW5nQm91bmRhcnkuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAi
VVJMSGFzaC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9i
c2VydmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTE5MSw5ICsx
OTEsOSBAQCBwdWJsaWM6CiAgICAgTm9kZSogcHNldWRvQXdhcmVGaXJzdENoaWxkKCkgY29uc3Q7
CiAgICAgTm9kZSogcHNldWRvQXdhcmVMYXN0Q2hpbGQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
S1VSTCBiYXNlVVJJKCkgY29uc3Q7CisgICAgdmlydHVhbCBVUkwgYmFzZVVSSSgpIGNvbnN0Owog
ICAgIAotICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29u
c3Q7CisgICAgdm9pZCBnZXRTdWJyZXNvdXJjZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0
OwogCiAgICAgLy8gVGhlc2Ugc2hvdWxkIGFsbCBhY3R1YWxseSByZXR1cm4gYSBub2RlLCBidXQg
dGhpcyBpcyBvbmx5IGltcG9ydGFudCBmb3IgbGFuZ3VhZ2UgYmluZGluZ3MsCiAgICAgLy8gd2hp
Y2ggd2lsbCBhbHJlYWR5IGtub3cgYW5kIGhvbGQgYSByZWYgb24gdGhlIHJpZ2h0IG5vZGUgdG8g
cmV0dXJuLiBSZXR1cm5pbmcgYm9vbCBhbGxvd3MKQEAgLTY2NCw3ICs2NjQsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9s
ZERvY3VtZW50KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3QgeyB9CiAK
ICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNSYXJlRGF0
YUZsYWcpOyB9CiAKQEAgLTczNyw3ICs3MzcsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiAvLyBVc2Vk
IGluIE5vZGU6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcygpIGFuZCBpbiBhZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcygpCi1pbmxpbmUgdm9pZCBhZGRTdWJyZXNvdXJjZVVSTChMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscywgY29uc3QgS1VSTCYgdXJsKQoraW5saW5lIHZvaWQgYWRkU3VicmVzb3Vy
Y2VVUkwoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYg
KCF1cmwuaXNOdWxsKCkpCiAgICAgICAgIHVybHMuYWRkKHVybCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCmluZGV4IGUyODgyNTkuLjUxMDg5MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCkBAIC0xMjcs
NyArMTI3LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmNoZWNrU3R5bGVTaGVldCgp
CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgYSBzeW50aGV0aWMgWFNMU3R5bGVTaGVl
dCB0aGF0IGlzIGVtYmVkZGVkLiAgSXQgbmVlZHMgdG8gYmUgYWJsZQogICAgICAgICAgICAgLy8g
dG8ga2ljayBvZmYgaW1wb3J0L2luY2x1ZGUgbG9hZHMgdGhhdCBjYW4gaGFuZyBvZmYgc29tZSBw
YXJlbnQgc2hlZXQuCiAgICAgICAgICAgICBpZiAobV9pc1hTTCkgewotICAgICAgICAgICAgICAg
IEtVUkwgZmluYWxVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2xvY2FsSHJlZik7CisgICAgICAgICAg
ICAgICAgVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywgbV9sb2NhbEhyZWYpOwogICAgICAg
ICAgICAgICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGVFbWJlZGRlZCh0aGlzLCBm
aW5hbFVSTCk7CiAgICAgICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAg
ICB9CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNoZWV0
TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFz
ZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBz
aGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KQogewogICAgIGlmICghaW5Eb2N1bWVu
dCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldCk7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBo
cmVmLCBjb25zdCBLVVJMJiBiYXMKIH0KIAogI2lmIEVOQUJMRShYU0xUKQotdm9pZCBQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KQordm9pZCBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb246OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAgQVNTRVJUKG1faXNYU0wpOwog
ICAgIG1fc2hlZXQgPSBYU0xTdHlsZVNoZWV0OjpjcmVhdGUodGhpcywgaHJlZiwgYmFzZVVSTCk7
CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OnNldENTU1N0
eWxlU2hlZXQoUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCkKICAgICBzaGVldC0+c2V0
RGlzYWJsZWQobV9hbHRlcm5hdGUpOwogfQogCi12b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25z
dAordm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGlmICghc2hlZXQoKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
CmluZGV4IGRiMjk0NTIuLjQ3MTk2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmgKQEAgLTY0LDE1ICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2b2lkIGNo
ZWNrU3R5bGVTaGVldCgpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0
LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CisgICAgdmlydHVhbCB2b2lkIHNldENTU1N0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOwogI2lmIEVOQUJMRShY
U0xUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJl
ZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CisgICAgdmlydHVh
bCB2b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOwogI2VuZGlmCiAKICAgICBib29sIGlzTG9hZGlu
ZygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdm9pZCBwYXJzZVN0eWxlU2hlZXQoY29uc3QgU3Ry
aW5nJiBzaGVldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAppbmRleCA5MDAyMGViLi5mNzQ4YWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpjbG9zZU1lc3NhZ2VQb3J0cygpIHsKIAogYm9vbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzYW5pdGl6ZVNjcmlwdEVycm9yKFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQmIGxpbmVOdW1iZXIsIGludCYgY29sdW1uTnVtYmVyLCBTdHJpbmcmIHNvdXJjZVVSTCwg
Q2FjaGVkU2NyaXB0KiBjYWNoZWRTY3JpcHQpCiB7Ci0gICAgS1VSTCB0YXJnZXRVUkwgPSBjb21w
bGV0ZVVSTChzb3VyY2VVUkwpOworICAgIFVSTCB0YXJnZXRVUkwgPSBjb21wbGV0ZVVSTChzb3Vy
Y2VVUkwpOwogICAgIGlmIChzZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHRhcmdldFVSTCkg
fHwgKGNhY2hlZFNjcmlwdCAmJiBjYWNoZWRTY3JpcHQtPnBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVj
ayhzZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBlcnJvck1l
c3NhZ2UgPSAiU2NyaXB0IGVycm9yLiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCBhOWU5ZTNiLi4xYzNlY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbnNvbGVUeXBlcy5oIgotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQu
aCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRU
aHJlYWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzSlNFeGVj
dXRpb25Gb3JiaWRkZW4oKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5n
JiB1cmwpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKaW5kZXggNzRkM2Uz
Yi4uZDgzZmRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdm9pZCBTZWN1cml0eUNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGlj
eShQYXNzT3duUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4KICAgICBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeSA9IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKIH0KIAotYm9vbCBTZWN1cml0eUNvbnRl
eHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgU2Vj
dXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICAvLyBJZiB3ZSBoYXZlbid0IGluaXRpYWxpemVkIG91ciBzZWN1cml0eSBvcmlnaW4g
Ynkgbm93LCB0aGlzIGlzIHByb2JhYmx5CiAgICAgLy8gYSBuZXcgd2luZG93IGNyZWF0ZWQgdmlh
IHRoZSBBUEkgKGkuZS4sIHRoYXQgbGFja3MgYW4gb3JpZ2luIGFuZCBsYWNrcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5Q29udGV4dC5oCmluZGV4IDMyYWUwZGYuLjJkYjVkMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewogICAgIC8v
IFNlZSBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNh
dHRyLWlmcmFtZS1zYW5kYm94IGZvciBhIGxpc3Qgb2YgdGhlIHNhbmRib3ggZmxhZ3MuCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBTYW5kYm94RmxhZ3Mgc2FuZGJveEZsYWdzKCkgY29u
c3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3M7IH0KICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kq
IGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5
LmdldCgpOyB9CiAKLSAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmKSBj
b25zdDsKKyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IFVSTCYpIGNvbnN0Owog
CiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBtYXNrKTsKICAgICBi
b29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX3NhbmRi
b3hGbGFncyAmIG1hc2s7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBl
NDVmYjgwLi45Y2MzZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0y
NzQsNyArMjc0LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpyZW1vdmVBbGxJbmxpbmVTdHlsZVBy
b3BlcnRpZXMoKQogICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogfQogCi12b2lkIFN0eWxlZEVs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJs
cykgY29uc3QKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIGlubGluZVN0eWxlID0gZWxlbWVudERhdGEoKSA/IGVsZW1lbnREYXRhKCktPmlu
bGluZVN0eWxlKCkgOiAwKQogICAgICAgICBpbmxpbmVTdHlsZS0+YWRkU3VicmVzb3VyY2VTdHls
ZVVSTHModXJscywgZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50cygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDBjYzBiOTIuLjE4YzZlOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNzYsNyArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJv
cGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXMpOwogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdT
dHlsZVN0cmluZywgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAppbmRleCBlYjZmODY0Li5hMzA0YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC0xMTc0LDEyICsxMTc0LDEyIEBAIHZvaWQgRWRpdG9yOjpzaW1wbGlmeU1hcmt1
cChOb2RlKiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpCiAgICAgYXBwbHlDb21tYW5kKFNpbXBs
aWZ5TWFya3VwQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0Tm9kZSwgKGVuZE5vZGUp
ID8gTm9kZVRyYXZlcnNhbDo6bmV4dChlbmROb2RlKSA6IDApKTsKIH0KIAotdm9pZCBFZGl0b3I6
OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBFZGl0
b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAg
Y29weVVSTCh1cmwsIHRpdGxlLCAqUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKCkp
OwogfQogCi12b2lkIEVkaXRvcjo6Y29weVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCit2b2lkIEVkaXRvcjo6Y29weVVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYgcGFzdGVib2Fy
ZCkKIHsKICAgICBQYXN0ZWJvYXJkVVJMIHBhc3RlYm9hcmRVUkw7CiAgICAgcGFzdGVib2FyZFVS
TC51cmwgPSB1cmw7CkBAIC0xMTk4LDcgKzExOTgsNyBAQCB2b2lkIEVkaXRvcjo6Y29weUltYWdl
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpOworICAg
IFVSTCB1cmwgPSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5
KCkpCiAgICAgICAgIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IGFiMDllYmIuLmI1YWY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaApAQCAtMTI2LDggKzEyNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhc3RlQXNQbGFpblRl
eHQoKTsKICAgICB2b2lkIHBlcmZvcm1EZWxldGUoKTsKIAotICAgIHZvaWQgY29weVVSTChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgdm9pZCBjb3B5VVJMKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CisgICAgdm9pZCBjb3B5VVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgIHZvaWQgY29weVVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJvYXJkJik7CiAgICAgdm9pZCBjb3B5
SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCiAgICAgU3RyaW5nIHJlYWRQbGFpblRleHRG
cm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CkBAIC00MTMsNyArNDEzLDcgQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShFRkwpCiAgICAgdm9pZCB3cml0ZVNlbGVj
dGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7Ci0gICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIHdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFz
dGVib2FyZCYsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiB0aXRsZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggOWRmNTk1Mi4uNWU4YWJkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiWExp
bmtOYW1lcy5oIgogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2VmbC9FZGl0b3JFZmwuY3BwCmluZGV4IGZjNzgxYzIuLmYzNTA5ZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVi
b2FyZCYsIEVsZW1lbnQmLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgRWRpdG9y
Ojp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IGZkN2YwYWMuLjQ0YWI1YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTMzNiw3ICszMzYsNyBAQCBz
dGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4m
IGltYWdlLCBDYWNoZWRJbWFnZSomCiAgICAgY2FjaGVkSW1hZ2UgPSB0ZW50YXRpdmVDYWNoZWRJ
bWFnZTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggYmZiNmE0Ni4u
ZGQ0NDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMzg2
LDcgKzM4Niw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0
IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgU3RyaW5nIHN0cmluZyA9IHRleHQudGV4
dDsKIAogICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGlzIDEwMCUgY29ycmVjdCBz
aW5jZSB3ZSBrbm93IC1bTlNVUkwgVVJMV2l0aFN0cmluZzpdIGRvZXMgbm90IGhhbmRsZQotICAg
IC8vIGFsbCB0aGUgc2FtZSBjYXNlcyB3ZSBoYW5kbGUgd2VsbCBpbiB0aGUgS1VSTCBjb2RlIGZv
ciBjcmVhdGluZyBhbiBOU1VSTC4KKyAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFuZGxl
IHdlbGwgaW4gdGhlIFVSTCBjb2RlIGZvciBjcmVhdGluZyBhbiBOU1VSTC4KICAgICBpZiAodGV4
dC5pc1VSTCkKICAgICAgICAgc3RyaW5nID0gY2xpZW50KCktPnVzZXJWaXNpYmxlU3RyaW5nKFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnN0cmluZ10pOwogCkBAIC0zOTQsNyArMzk0LDcgQEAgU3RyaW5n
IEVkaXRvcjo6cGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFBsYWluVGV4
dCYgdGV4dCkKICAgICByZXR1cm4gWyhOU1N0cmluZyAqKXN0cmluZyBwcmVjb21wb3NlZFN0cmlu
Z1dpdGhDYW5vbmljYWxNYXBwaW5nXTsKIH0KIAotdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVkaXRvcjo6d3JpdGVJ
bWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVs
ZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFBhc3Rl
Ym9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2U7CiAKQEAgLTQzNyw3ICs0MzcsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
Pikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHJlYWRVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogfTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIGJvb2wgRWRpdG9yOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQog
ICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoS1VSTCgpLCBidWZmZXIuZ2V0KCkpOworICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBh
cmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFVSTCgpLCBidWZmZXIuZ2V0KCkpOwog
ICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MzUsMTMgKzUz
NSwxMyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEltYWdlKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGNvbnN0CiAgICAgQVNTRVJUKHR5cGUuY29udGFpbnMo
Jy8nKSk7CiAgICAgU3RyaW5nIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lvbiA9IHR5cGU7CiAg
ICAgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uLnJlcGxhY2UoJy8nLCAnLicpOwotICAgIEtV
UkwgaW1hZ2VVUkwgPSBLVVJMKEtVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxlbmFtZVdpdGhFeHRlbnNpb24p
OworICAgIFVSTCBpbWFnZVVSTCA9IFVSTChVUkwoKSwgIndlYmtpdC1mYWtlLXVybDovLyIgKyBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkgKyAnLycgKyB0eXBlQXNGaWxlbmFtZVdpdGhFeHRl
bnNpb24pOwogCiAgICAgZnJhZ21lbnQgPSBmcmFtZS5lZGl0b3IoKS5jcmVhdGVGcmFnbWVudEZv
ckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShidWZm
ZXIsIGltYWdlVVJMLCB0eXBlLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpKSk7CiAgICAg
cmV0dXJuIGZyYWdtZW50OwogfQogCi1ib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCitib29sIEVkaXRvcjo6
V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKIHsKICAgICBpZiAodXJsLnN0cmluZygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGQyZmZmOGMuLjUxZWYzZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAKICNpbmNsdWRl
ICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxhdG9yLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgpAQCAtMTAwLDcgKzEwMCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMKQogewogICAgIFZlY3RvcjxBdHRyaWJ1dGVDaGFuZ2U+IGNo
YW5nZXM7CiAKLSAgICBLVVJMIHBhcnNlZEJhc2VVUkwoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJM
KTsKKyAgICBVUkwgcGFyc2VkQmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwogCiAg
ICAgZm9yIChhdXRvIGVsZW1lbnQgPSBlbGVtZW50RGVzY2VuZGFudHMoZnJhZ21lbnQpLmJlZ2lu
KCksIGVuZCA9IGVsZW1lbnREZXNjZW5kYW50cyhmcmFnbWVudCkuZW5kKCk7IGVsZW1lbnQgIT0g
ZW5kOyArK2VsZW1lbnQpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkp
CkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVVUkxzKERvY3VtZW50RnJh
Z21lbnQqIGZyYWdtZW50LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwpCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICAgY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUgPSBlbGVtZW50LT5hdHRyaWJ1dGVBdChpKTsKICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5pc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpICYmICFhdHRyaWJ1dGUudmFsdWUo
KS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0cmlidXRlQ2hh
bmdlKCYqZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgS1VSTChwYXJzZWRCYXNlVVJMLCBhdHRy
aWJ1dGUudmFsdWUoKSkuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVu
ZChBdHRyaWJ1dGVDaGFuZ2UoJiplbGVtZW50LCBhdHRyaWJ1dGUubmFtZSgpLCBVUkwocGFyc2Vk
QmFzZVVSTCwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmluZygpKSk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50KiBkb2N1bQogICAgIHRhZ2dl
ZE1hcmt1cC5hcHBlbmQobWFya3VwLnN1YnN0cmluZyhmcmFnbWVudEVuZCkpOwogCiAgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IHRhZ2dlZEZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGcm9t
TWFya3VwKGRvY3VtZW50LCB0YWdnZWRNYXJrdXAudG9TdHJpbmcoKSwgYmFzZVVSTCwgcGFyc2Vy
Q29udGVudFBvbGljeSk7Ci0gICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWREb2N1bWVudCA9IERv
Y3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IHRhZ2dlZERv
Y3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAgICAgdGFnZ2VkRG9jdW1lbnQt
PnRha2VBbGxDaGlsZHJlbkZyb20odGFnZ2VkRnJhZ21lbnQuZ2V0KCkpOwogCiAgICAgUmVmUHRy
PE5vZGU+IG5vZGVCZWZvcmVDb250ZXh0OwpAQCAtOTUyLDcgKzk1Miw3IEBAIFN0cmluZyBjcmVh
dGVGdWxsTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4gZG9jdW1lbnRUeXBl
U3RyaW5nKG5vZGUtPmRvY3VtZW50KCkpICsgY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlKTsKIH0KIAotU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK1N0cmluZyB1cmxUb01hcmt1cChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG1hcmt1cDsKICAg
ICBtYXJrdXAuYXBwZW5kKCI8YSBocmVmPVwiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRl
eCBjYTEyMGE0Li4xNTY1YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTM4LDcgKzM4
LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50OwogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgUmFuZ2U7CkBAIC03MCw3ICs3MCw3
IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgTm9kZSosIEVDaGlsZHJlbk9ubHkgPSBJbmNs
dWRlTm9kZSwgVmVjdG9yPE5vZGUqPiogPSAwCiBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25z
dCBOb2RlKik7CiBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBSYW5nZSopOwogCi1TdHJp
bmcgdXJsVG9NYXJrdXAoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOworU3RyaW5n
IHVybFRvTWFya3VwKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiBTdHJpbmcg
ZG9jdW1lbnRUeXBlU3RyaW5nKGNvbnN0IERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcAppbmRleCA2NDI1MjY3Li5jNmI0OGRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0yMDMsMTIgKzIwMywx
MiBAQCBzdGF0aWMgdm9pZCBkaWRXcml0ZShBc3luY0ZpbGVTdHJlYW0qIHByb3h5LCBpbnQgYnl0
ZXNXcml0dGVuKQogICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRpZFdyaXRlKGJ5dGVzV3JpdHRl
bik7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3RyZWFtOjp3cml0ZShjb25zdCBLVVJMJiBibG9iVVJM
LCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6
d3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgp
CiB7CiAgICAgZmlsZVRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVGaWxlVGhyZWFkVGFzayh0aGlz
LCAmQXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZCwgYmxvYlVSTCwgcG9zaXRpb24s
IGxlbmd0aCkpOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGVPbkZpbGVUaHJlYWQo
Y29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQordm9p
ZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFVSTCYgYmxvYlVSTCwg
bG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogewogICAgIGludCBieXRlc1dyaXR0ZW4g
PSBtX3N0cmVhbS0+d3JpdGUoYmxvYlVSTCwgcG9zaXRpb24sIGxlbmd0aCk7CiAgICAgY2FsbE9u
TWFpblRocmVhZChkaWRXcml0ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgYnl0ZXNX
cml0dGVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCmluZGV4IDY4
ZjIzZTkuLjg0OWVhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0u
aApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZpbGVTdHJl
YW1DbGllbnQ7CiBjbGFzcyBGaWxlU3RyZWFtOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAog
Y2xhc3MgQXN5bmNGaWxlU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8QXN5bmNGaWxlU3RyZWFt
PiB7CiBwdWJsaWM6CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wZW5Gb3JX
cml0ZShjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHJl
YWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIHdyaXRlKGNvbnN0IEtVUkwm
IGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgdm9pZCB3cml0
ZShjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAg
ICAgdm9pZCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pOwogCiAgICAgLy8gU3RvcHMgdGhl
IHByb3h5IGFuZCBzY2hlZHVsZXMgaXQgdG8gYmUgZGVzdHJ1Y3RlZC4gQWxsIHRoZSBwZW5kaW5n
IHRhc2tzIHdpbGwgYmUgYWJvcnRlZCBhbmQgdGhlIGZpbGUgc3RyZWFtIHdpbGwgYmUgY2xvc2Vk
LgpAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgb3BlbkZvcldyaXRlT25GaWxl
VGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9pZCBjbG9zZU9uRmlsZVRocmVhZCgp
OwogICAgIHZvaWQgcmVhZE9uRmlsZVRocmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpOwot
ICAgIHZvaWQgd3JpdGVPbkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25n
IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKKyAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFkKGNvbnN0
IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKICAgICB2b2lk
IHRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlvbik7CiAKICAgICBSZWZQdHI8
RmlsZVN0cmVhbT4gbV9zdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAppbmRleCBjMDM3ODRm
Li40NTQ3MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKQEAgLTU0LDIwICs1NCwyMCBAQCBl
bnVtIFNsaWNlSGlzdG9ncmFtRW51bSB7CiAKIGNsYXNzIEJsb2JVUkxSZWdpc3RyeSA6IHB1Ymxp
YyBVUkxSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVS
TFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwo
Y29uc3QgVVJMJikgT1ZFUlJJREU7CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5
KCk7CiB9OwogCiAKLXZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBwdWJsaWNVUkwsIFVSTFJlZ2lzdHJhYmxlKiBibG9i
KQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4sIGNvbnN0IFVSTCYgcHVibGljVVJMLCBVUkxSZWdpc3RyYWJsZSogYmxvYikKIHsKICAgICBB
U1NFUlQoJmJsb2ItPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG9yaWdpbiwgcHVibGljVVJMLCBzdGF0aWNfY2FzdDxCbG9i
Kj4oYmxvYiktPnVybCgpKTsKIH0KIAotdm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJV
UkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBCbG9iVVJMUmVnaXN0cnk6OnVucmVnaXN0ZXJVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwodXJsKTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBCbG9iOjpCbG9iKFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhLCBsb25nIGxvbmcgc2l6ZSkKICAgICBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgYmxvYkRhdGEpOwogfQog
Ci1CbG9iOjpCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25n
IGxvbmcgc2l6ZSkKK0Jsb2I6OkJsb2IoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgOiBtX3R5cGUoQmxvYjo6bm9ybWFsaXplZENvbnRl
bnRUeXBlKHR5cGUpKQogICAgICwgbV9zaXplKHNpemUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCmlu
ZGV4IDIxYjMxYjQuLjAzNTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCkBAIC0zMiw3ICszMiw3
IEBACiAjZGVmaW5lIEJsb2JfaAogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAj
aW5jbHVkZSAiVVJMUmVnaXN0cnkuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gRm9yIGRlc2VyaWFsaXphdGlv
bi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgS1VSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEJsb2I+IGNyZWF0ZShjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChCbG9iOjppc05vcm1hbGl6ZWRD
b250ZW50VHlwZSh0eXBlKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmxvYihzcmNV
UkwsIHR5cGUsIHNpemUpKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+QmxvYigpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cm5hbFVSTDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5h
bFVSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsg
fQogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4obV9zaXplKTsgfQpAQCAtOTEsMTIgKzkx
LDEyIEBAIHByb3RlY3RlZDoKICAgICBCbG9iKFBhc3NPd25QdHI8QmxvYkRhdGE+LCBsb25nIGxv
bmcgc2l6ZSk7CiAKICAgICAvLyBGb3IgZGVzZXJpYWxpemF0aW9uLgotICAgIEJsb2IoY29uc3Qg
S1VSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKKyAgICBC
bG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXpl
KTsKIAogICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJuYWwgVVJMIHJlZmVycmluZyB0byB0aGUgYmxv
YiBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVjdC4gSXQgc2VydmVzCiAgICAgLy8gYXMg
YW4gaWRlbnRpZmllciBmb3IgdGhpcyBibG9iLiBUaGUgaW50ZXJuYWwgVVJMIGlzIG5ldmVyIHVz
ZWQgdG8gc291cmNlIHRoZSBibG9iJ3MgY29udGVudAogICAgIC8vIGludG8gYW4gSFRNTCBvciBm
b3IgRmlsZVJlYWQnaW5nLCBwdWJsaWMgYmxvYiBVUkxzIG11c3QgYmUgdXNlZCBmb3IgdGhvc2Ug
cHVycG9zZXMuCi0gICAgS1VSTCBtX2ludGVybmFsVVJMOworICAgIFVSTCBtX2ludGVybmFsVVJM
OwogCiAgICAgU3RyaW5nIG1fdHlwZTsKICAgICBsb25nIGxvbmcgbV9zaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYlVSTC5jcHAKaW5kZXggNjU5MDA3Yi4uM2RlYmYzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JVUkwuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJCbG9iVVJMLmgi
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC00MSwxOCArNDEsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBj
aGFyIEJsb2JVUkw6OmtCbG9iUHJvdG9jb2xbXSA9ICJibG9iIjsKIAotS1VSTCBCbG9iVVJMOjpj
cmVhdGVQdWJsaWNVUkwoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQorVVJMIEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiB7CiAg
ICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKTsKICAgICByZXR1cm4gY3JlYXRlQmxvYlVSTChzZWN1
cml0eU9yaWdpbi0+dG9TdHJpbmcoKSk7CiB9CiAKLUtVUkwgQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKQorVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKIHsKICAgICByZXR1cm4g
Y3JlYXRlQmxvYlVSTCgiYmxvYmludGVybmFsOi8vIik7CiB9CiAKLVN0cmluZyBCbG9iVVJMOjpn
ZXRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEJsb2JVUkw6OmdldE9yaWdpbihjb25z
dCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Jsb2JQcm90b2NvbCkp
OwogCkBAIC02MSw3ICs2MSw3IEBAIFN0cmluZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgS1VS
TCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0YXJ0SW5kZXgsIGVu
ZEluZGV4IC0gc3RhcnRJbmRleCAtIDEpOwogfQogCi1TdHJpbmcgQmxvYlVSTDo6Z2V0SWRlbnRp
Zmllcihjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgQmxvYlVSTDo6Z2V0SWRlbnRpZmllcihjb25z
dCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoa0Jsb2JQcm90b2NvbCkp
OwogCkBAIC02OSwxMSArNjksMTEgQEAgU3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29u
c3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKHN0YXJ0SW5k
ZXgpOwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmln
aW5TdHJpbmcpCitVUkwgQmxvYlVSTDo6Y3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKIHsKICAgICBBU1NFUlQoIW9yaWdpblN0cmluZy5pc0VtcHR5KCkpOwogICAgIFN0
cmluZyB1cmxTdHJpbmcgPSAiYmxvYjoiICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhv
cmlnaW5TdHJpbmcpICsgJy8nICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotICAgIHJl
dHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2JVUkwuaAppbmRleCAyY2FlYzI5Li5jN2ZhNGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2JVUkwuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBCbG9iVVJMX2gKICNk
ZWZpbmUgQmxvYlVSTF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsMTQgKzQ4LDE0IEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogLy8gYmUgdXNlZCB3aXRoIFJlc291cmNlSGFuZGxlIG9yIEZpbGVSZWFkZXIuCiBj
bGFzcyBCbG9iVVJMIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgS1VSTCBjcmVhdGVQdWJsaWNVUkwo
U2VjdXJpdHlPcmlnaW4qKTsKLSAgICBzdGF0aWMgS1VSTCBjcmVhdGVJbnRlcm5hbFVSTCgpOwot
ICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IEtVUkwmKTsKLSAgICBzdGF0aWMgU3Ry
aW5nIGdldElkZW50aWZpZXIoY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBVUkwgY3JlYXRlUHVi
bGljVVJMKFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIFVSTCBjcmVhdGVJbnRlcm5hbFVS
TCgpOworICAgIHN0YXRpYyBTdHJpbmcgZ2V0T3JpZ2luKGNvbnN0IFVSTCYpOworICAgIHN0YXRp
YyBTdHJpbmcgZ2V0SWRlbnRpZmllcihjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogYmxvYlByb3RvY29sKCkgeyByZXR1cm4ga0Jsb2JQcm90b2NvbDsgfQogCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBLVVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcp
OworICAgIHN0YXRpYyBVUkwgY3JlYXRlQmxvYlVSTChjb25zdCBTdHJpbmcmIG9yaWdpblN0cmlu
Zyk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIga0Jsb2JQcm90b2NvbFtdOwogICAgIEJsb2JVUkwo
KSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAppbmRleCA1NGU1YTkwLi43NGIwMWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVdpdGhNZXRhZGF0YShjb25zdCBTdHJp
bmcmIGZpbGUKICAgICByZXR1cm4gYmxvYkRhdGEucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgUGFz
c093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGNvbnN0IEtV
UkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCitzdGF0aWMg
UGFzc093blB0cjxCbG9iRGF0YT4gY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGNvbnN0
IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAg
ICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhID0gQmxvYkRhdGE6OmNyZWF0ZSgpOwogICAgIGJs
b2JEYXRhLT5zZXRDb250ZW50VHlwZShnZXRDb250ZW50VHlwZUZyb21GaWxlTmFtZShmaWxlU3lz
dGVtVVJMLnBhdGgoKSwgRmlsZTo6V2VsbEtub3duQ29udGVudFR5cGVzKSk7CkBAIC0xMDcsNyAr
MTA3LDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRlbnRUeXBlTG9va3Vw
UG9saWN5IHBvbGljeSkKIHsKIH0KIAotRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQorRmlsZTo6RmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBCbG9i
KHVybCwgdHlwZSwgLTEpCiAgICAgLCBtX3BhdGgocGF0aCkKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCkBAIC0xNDIsNyArMTQyLDcgQEAgRmlsZTo6RmlsZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgS1VS
TCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKK0ZpbGU6OkZp
bGUoY29uc3QgVVJMJiBmaWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRh
KQogICAgIDogQmxvYihjcmVhdGVCbG9iRGF0YUZvckZpbGVTeXN0ZW1VUkwoZmlsZVN5c3RlbVVS
TCwgbWV0YWRhdGEpLCBtZXRhZGF0YS5sZW5ndGgpCiAgICAgLCBtX2ZpbGVTeXN0ZW1VUkwoZmls
ZVN5c3RlbVVSTCkKICAgICAsIG1fc25hcHNob3RTaXplKG1ldGFkYXRhLmxlbmd0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlLmgKaW5kZXggYWJlNTU0NC4uNWViNmY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZpbGVNZXRh
ZGF0YTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIEZpbGUgOiBwdWJsaWMgQmxv
YiB7CiBwdWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBG
b3IgZGVzZXJpYWxpemF0aW9uLgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBl
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZpbGUocGF0aCwgc3JjVVJMLCB0eXBlKSk7CiAgICAgfQpAQCAt
NjgsMTIgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxl
KG5hbWUsIG1ldGFkYXRhKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZT4g
Y3JlYXRlRm9yRmlsZVN5c3RlbUZpbGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBGaWxlTWV0YWRh
dGEmIG1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGU+IGNyZWF0ZUZvckZpbGVT
eXN0ZW1GaWxlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHVybCwgbWV0YWRhdGEpKTsK
ICAgICB9CiAKLSAgICBLVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVT
eXN0ZW1VUkw7IH0KKyAgICBVUkwgZmlsZVN5c3RlbVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmls
ZVN5c3RlbVVSTDsgfQogI2VuZGlmCiAKICAgICAvLyBDcmVhdGUgYSBmaWxlIHdpdGggYSBuYW1l
IGV4cG9zZWQgdG8gdGhlIGF1dGhvciAodmlhIEZpbGUubmFtZSBhbmQgYXNzb2NpYXRlZCBET00g
cHJvcGVydGllcykgdGhhdCBkaWZmZXJzIGZyb20gdGhlIG9uZSBwcm92aWRlZCBpbiB0aGUgcGF0
aC4KQEAgLTEwNSwxMiArMTA1LDEyIEBAIHByaXZhdGU6CiAgICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsKIAogICAgIC8vIEZvciBkZXNlcmlhbGl6
YXRpb24uCi0gICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEtVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlKTsKKyAgICBGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29udGVudFR5cGVMb29rdXBQb2xpY3kpOwogCiAj
IGlmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICBGaWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgRmlsZU1ldGFkYXRhJik7Ci0gICAgRmlsZShjb25zdCBLVVJMJiBmaWxlU3lzdGVtVVJMLCBj
b25zdCBGaWxlTWV0YWRhdGEmKTsKKyAgICBGaWxlKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwg
Y29uc3QgRmlsZU1ldGFkYXRhJik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBoYXMg
YSB2YWxpZCBzbmFwc2hvdCBtZXRhZGF0YSAoaS5lLiBtX3NuYXBzaG90U2l6ZSA+PSAwKS4KICAg
ICBib29sIGhhc1ZhbGlkU25hcHNob3RNZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNo
b3RTaXplID49IDA7IH0KQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBt
X25hbWU7CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgS1VSTCBtX2ZpbGVTeXN0ZW1V
Ukw7CisgICAgVVJMIG1fZmlsZVN5c3RlbVVSTDsKIAogICAgIC8vIElmIG1fc25hcHNob3RTaXpl
IGlzIG5lZ2F0aXZlIChpbml0aWFsaXplZCB0byAtMSBieSBkZWZhdWx0KSwgdGhlIHNuYXBzaG90
IG1ldGFkYXRhIGlzIGludmFsaWQgYW5kIHdlIHJldHJpZXZlIHRoZSBsYXRlc3QgbWV0YWRhdGEg
c3luY2hyb25vdXNseSBpbiBzaXplKCksIGxhc3RNb2RpZmllZFRpbWUoKSBhbmQgc2xpY2UoKS4K
ICAgICAvLyBPdGhlcndpc2UsIHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBhcmUgdXNlZCBkaXJlY3Rs
eSBpbiB0aG9zZSBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaAppbmRleCAyNGYxZTdmLi44MGUxMzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVSZWFkZXJMb2FkZXIuaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShCTE9CKQogCiAj
aW5jbHVkZSAiRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTA2LDcgKzEwNiw3IEBAIHBy
aXZhdGU6CiAgICAgVGV4dEVuY29kaW5nIG1fZW5jb2Rpbmc7CiAgICAgU3RyaW5nIG1fZGF0YVR5
cGU7CiAKLSAgICBLVVJMIG1fdXJsRm9yUmVhZGluZzsKKyAgICBVUkwgbV91cmxGb3JSZWFkaW5n
OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKIAogICAgIFJlZlB0cjxK
U0M6OkFycmF5QnVmZmVyPiBtX3Jhd0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAppbmRleCAxMGJmYjJlLi4yMGRjZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAK
QEAgLTQ5LDI2ICs0OSwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQmxvYlJlZ2lz
dHJ5Q29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
QmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+
IGJsb2JEYXRhKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJMJiB1cmwsIFBhc3NP
d25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogICAgICAgICA6IHVybCh1cmwuY29weSgpKQogICAg
ICAgICAsIGJsb2JEYXRhKGJsb2JEYXRhKQogICAgIHsKICAgICAgICAgdGhpcy0+YmxvYkRhdGEt
PmRldGFjaEZyb21DdXJyZW50VGhyZWFkKCk7CiAgICAgfQogCi0gICAgQmxvYlJlZ2lzdHJ5Q29u
dGV4dChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKKyAgICBCbG9iUmVnaXN0
cnlDb250ZXh0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKICAgICAgICAgOiB1
cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBzcmNVUkwoc3JjVVJMLmNvcHkoKSkKICAgICB7CiAg
ICAgfQogCi0gICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBLVVJMJiB1cmwpCisgICAgQmxv
YlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCkKICAgICAgICAgOiB1cmwodXJsLmNvcHko
KSkKICAgICB7CiAgICAgfQogCi0gICAgS1VSTCB1cmw7Ci0gICAgS1VSTCBzcmNVUkw7CisgICAg
VVJMIHVybDsKKyAgICBVUkwgc3JjVVJMOwogICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGE7
CiB9OwogCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTFRhc2so
dm9pZCogY29udGV4dCkKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxvYlJl
Z2lzdHJ5Q29udGV4dC0+dXJsLCBibG9iUmVnaXN0cnlDb250ZXh0LT5ibG9iRGF0YS5yZWxlYXNl
KCkpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQordm9pZCBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBhc3NP
d25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkKICAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxvYkRhdGEpOwpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZyb21UYXNrKHZvaWQq
IGNvbnRleHQpCiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3Ry
eUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMKTsKIH0KIAotdm9pZCBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCit2b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgLy8gSWYgdGhlIGJsb2Ig
VVJMIGNvbnRhaW5zIG51bGwgb3JpZ2luLCBhcyBpbiB0aGUgY29udGV4dCB3aXRoIHVuaXF1ZSBz
ZWN1cml0eSBvcmlnaW4gb3IgZmlsZSBVUkwsIHNhdmUgdGhlIG1hcHBpbmcgYmV0d2VlbiB1cmwg
YW5kIG9yaWdpbiBzbyB0aGF0IHRoZSBvcmlnaW4gY2FuIGJlIHJldHJpdmVkIHdoZW4gZG9pbmcg
c2VjdXJpdHkgb3JpZ2luIGNoZWNrLgogICAgIGlmIChvcmlnaW4gJiYgQmxvYlVSTDo6Z2V0T3Jp
Z2luKHVybCkgPT0gIm51bGwiKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdpc3RyeSgpLnVucmVn
aXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCk7CiB9CiAKLXZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAg
ICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7CkBAIC0xMzYsMjYgKzEzNiwyNiBA
QCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtV
UkwmIHVybCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OmdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmln
aW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG9yaWdpbk1hcCgpLT5nZXQodXJsLnN0
cmluZygpKTsKIH0KIAogI2Vsc2UKIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KQordm9pZCBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0
cjxCbG9iRGF0YT4pCiB7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKQordm9p
ZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBVUkwmLCBjb25zdCBVUkwmKQogewogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKQordm9pZCBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKQogewogfQogCi1QYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmln
aW4oY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4gMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgK
aW5kZXggZjY2YmQxMC4uODNlNTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgKQEAgLTM3LDE4ICszNywxOCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBCbG9iRGF0YTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3du
UHRyPEJsb2JEYXRhPik7Ci0gICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCk7Ci0gICAgc3RhdGljIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBVUkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPik7CisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJiBzcmNVUkwpOworICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgb3JpZ2luIGZvciB0aGUgZ2l2ZW4gYmxvYiBVUkwu
IFRoaXMgaXMgYmVjYXVzZSB3ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQgdGhlIHVuaXF1ZSBzZWN1
cml0eSBvcmlnaW4gb3IgdGhlIG9yaWdpbiBvZiBmaWxlIFVSTAogICAgIC8vIGluIHRoZSBibG9i
IFVSTC4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3Jp
Z2luKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCBjNTI4Y2ExLi5iODUz
MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgQ2FjaGVkRnJhbWU6OmNsZWFyKCkKICAgICBtX2RvY3VtZW50ID0gMDsKICAg
ICBtX3ZpZXcgPSAwOwogICAgIG1fbW91c2VQcmVzc05vZGUgPSAwOwotICAgIG1fdXJsID0gS1VS
TCgpOworICAgIG1fdXJsID0gVVJMKCk7CiAKICAgICBtX2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
LmNsZWFyKCk7CiAgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEuY2xlYXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQ2FjaGVkRnJhbWUuaAppbmRleCA5ODM4ZjczLi4zODY0Y2E0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIENhY2hl
ZEZyYW1lX2gKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRDYWNoZWRGcmFtZURhdGEuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudC5nZXQoKTsgfQogICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fdmlldy5nZXQoKTsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgIGJvb2wgaXNNYWluRnJhbWUoKSB7IHJldHVybiBtX2lzTWFpbkZyYW1lOyB9CiAKIHByb3Rl
Y3RlZDoKQEAgLTU4LDcgKzU4LDcgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxEb2N1bWVudExv
YWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBtX3ZpZXc7CiAg
ICAgUmVmUHRyPE5vZGU+IG1fbW91c2VQcmVzc05vZGU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBV
UkwgbV91cmw7CiAgICAgT3duUHRyPFNjcmlwdENhY2hlZEZyYW1lRGF0YT4gbV9jYWNoZWRGcmFt
ZVNjcmlwdERhdGE7CiAgICAgT3duUHRyPENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPiBtX2NhY2hl
ZEZyYW1lUGxhdGZvcm1EYXRhOwogICAgIGJvb2wgbV9pc01haW5GcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggMWNiNTZiZi4uYjRmMDVkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCBIaXN0b3J5
SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IFN0cgogICAgIGljb25EYXRhYmFzZSgpLnJldGFpbkljb25Gb3JQYWdlVVJM
KG1fdXJsU3RyaW5nKTsKIH0KIAotSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBT
dHJpbmcmIHRpdGxlKQorSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAgICAgOiBtX3VybFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX29yaWdpbmFs
VVJMU3RyaW5nKHVybC5zdHJpbmcoKSkKICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKQEAgLTI0MCwx
NCArMjQwLDE0IEBAIGRvdWJsZSBIaXN0b3J5SXRlbTo6bGFzdFZpc2l0ZWRUaW1lKCkgY29uc3QK
ICAgICByZXR1cm4gbV9sYXN0VmlzaXRlZFRpbWU7CiB9CiAKLUtVUkwgSGlzdG9yeUl0ZW06OnVy
bCgpIGNvbnN0CitVUkwgSGlzdG9yeUl0ZW06OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRV
UkxTdHJpbmcsIG1fdXJsU3RyaW5nKTsKIH0KIAotS1VSTCBIaXN0b3J5SXRlbTo6b3JpZ2luYWxV
UkwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjpvcmlnaW5hbFVSTCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX29yaWdpbmFsVVJMU3RyaW5nKTsKKyAgICBy
ZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmluZyk7CiB9CiAKIGNv
bnN0IFN0cmluZyYgSGlzdG9yeUl0ZW06OnJlZmVycmVyKCkgY29uc3QKQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiAgICAgbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkKHRoaXMpOwogfQogCi12b2lkIEhpc3Rv
cnlJdGVtOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBIaXN0b3J5SXRlbTo6c2V0VVJM
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBhZ2VDYWNoZSgpLT5yZW1vdmUodGhpcyk7CiAgICAg
c2V0VVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKaW5kZXggNTczYzFiMS4uMGMzNDg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZvcm1EYXRhOwog
Y2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxIaXN0b3J5
SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSh1cmxTdHJpbmcsIHRp
dGxlLCBhbHRlcm5hdGVUaXRsZSwgbGFzdFZpc2l0ZWQpKTsKICAgICB9Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhpc3RvcnlJdGVtKHVy
bCwgdGFyZ2V0LCBwYXJlbnQsIHRpdGxlKSk7CiAgICAgfQpAQCAtMTA5LDggKzEwOSw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKCkgY29uc3Q7CiAgICAgCiAg
ICAgY29uc3QgU3RyaW5nJiBwYXJlbnQoKSBjb25zdDsKLSAgICBLVVJMIHVybCgpIGNvbnN0Owot
ICAgIEtVUkwgb3JpZ2luYWxVUkwoKSBjb25zdDsKKyAgICBVUkwgdXJsKCkgY29uc3Q7CisgICAg
VVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlcigpIGNv
bnN0OwogICAgIGNvbnN0IFN0cmluZyYgdGFyZ2V0KCkgY29uc3Q7CiAgICAgYm9vbCBpc1Rhcmdl
dEl0ZW0oKSBjb25zdDsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
b2N1bWVudFN0YXRlKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCBjbGVhckRvY3Vt
ZW50U3RhdGUoKTsKIAotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNl
dFVSTChjb25zdCBVUkwmKTsKICAgICB2b2lkIHNldFVSTFN0cmluZyhjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHNldE9yaWdpbmFsVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0UmVmZXJyZXIoY29uc3QgU3RyaW5nJik7CkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToK
ICAgICBIaXN0b3J5SXRlbSgpOwogICAgIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQpOwogICAgIEhpc3Rv
cnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25z
dCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlLCBkb3VibGUgbGFzdFZpc2l0ZWQpOwotICAgIEhpc3Rv
cnlJdGVtKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0
cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBIaXN0b3J5SXRlbShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFyZW50
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIGV4cGxpY2l0IEhpc3RvcnlJdGVtKGNvbnN0
IEhpc3RvcnlJdGVtJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCBj
NzE2NGNmLi4zMTA2MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCkBAIC05
NSw4ICs5NSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJh
bWUqIGZyYW1lLCBpbnQgaW5kZW50TGV2ZWwpCiAgICAgICAgIHJldHVybiAxIDw8IE5vRG9jdW1l
bnRMb2FkZXI7CiAgICAgfQogCi0gICAgS1VSTCBjdXJyZW50VVJMID0gZnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwotICAgIEtVUkwgbmV3VVJMID0gZnJhbWUtPmxvYWRl
cigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpIDogS1VSTCgpOworICAgIFVSTCBjdXJyZW50VVJM
ID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOworICAgIFVSTCBuZXdV
UkwgPSBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpID8gZnJhbWUt
PmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkgOiBVUkwoKTsKICAg
ICBpZiAoIW5ld1VSTC5pc0VtcHR5KCkpCiAgICAgICAgIFBDTE9HKCIgRGV0ZXJtaW5pbmcgaWYg
ZnJhbWUgY2FuIGJlIGNhY2hlZCBuYXZpZ2F0aW5nIGZyb20gKCIsIGN1cnJlbnRVUkwuc3RyaW5n
KCksICIpIHRvICgiLCBuZXdVUkwuc3RyaW5nKCksICIpOiIpOwogICAgIGVsc2UKQEAgLTIwNSw3
ICsyMDUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDYW5DYWNoZVBhZ2VEZWNpc2lvbihQYWdlKiBwYWdl
KQogICAgIC8vIE9ubHkgYm90aGVyIGxvZ2dpbmcgZm9yIG1haW4gZnJhbWVzIHRoYXQgaGF2ZSBh
Y3R1YWxseSBsb2FkZWQgYW5kIGhhdmUgY29udGVudC4KICAgICBpZiAocGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgY3VycmVudFVSTCA9IHBhZ2UtPm1haW5GcmFt
ZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsKKyAgICBVUkwgY3VycmVudFVSTCA9
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPyBwYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKSA6IFVSTCgpOwogICAgIGlm
IChjdXJyZW50VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9E
T01VUkwuY3BwCmluZGV4IGFlMzY5MzguLmFjOWU3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJCbG9iLmgiCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlB1YmxpY1VS
TE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTUyLDcgKzUyLDcg
QEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEIKIAogU3RyaW5nIERPTVVSTDo6Y3JlYXRlUHVibGlj
VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFVSTFJl
Z2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKIHsKLSAgICBLVVJMIHB1YmxpY1VSTCA9IEJsb2JVUkw6
OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigp
KTsKKyAgICBVUkwgcHVibGljVVJMID0gQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGlmIChwdWJsaWNVUkwuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBET01VUkw6OnJldm9rZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBjb24KICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJsU3RyaW5nKTsKKyAgICBV
UkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVy
bCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICByZXF1ZXN0LnNldENhY2hl
UGFydGl0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnRvcE9yaWdpbigpLT5jYWNoZVBhcnRp
dGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCmluZGV4IGIzNTgyNjMuLjdkMjE0ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBET01VUkxfaAogI2RlZmluZSBE
T01VUkxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3Vt
ZW50LmNwcAppbmRleCA1YmFhNGM4Li45NDIxMzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcApAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgRlRQRGly
ZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmZpbmlzaCgpCiAgICAgSFRNTERvY3VtZW50UGFyc2VyOjpm
aW5pc2goKTsKIH0KIAotRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZUUERpcmVjdG9yeURvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorRlRQRGlyZWN0b3J5RG9jdW1lbnQ6OkZU
UERpcmVjdG9yeURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgOiBI
VE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggZTdlNTJmNy4uMGQ5MTAxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaApAQCAtMzMsMTMg
KzMzLDEzIEBAIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogICAgIAogY2xhc3MgRlRQRGlyZWN0
b3J5RG9jdW1lbnQgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZUUERpcmVjdG9yeURvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRlRQRGlyZWN0b3J5RG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAg
IH0KIAogcHJpdmF0ZToKLSAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IEtV
UkwmKTsKKyAgICBGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiB9Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCAyNGEzNzM4Li5l
MjE1Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApAQCAtMzI4LDcg
KzMyOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRGb3JtU3RydWN0dXJlKGNvbnN0IEhU
TUxGb3JtRWxlbWVudCYgZm9ybSwgU3RyaW5nQnVpbGRlCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5n
IGZvcm1TaWduYXR1cmUoY29uc3QgSFRNTEZvcm1FbGVtZW50JiBmb3JtKQogewotICAgIEtVUkwg
YWN0aW9uVVJMID0gZm9ybS5nZXRVUkxBdHRyaWJ1dGUoYWN0aW9uQXR0cik7CisgICAgVVJMIGFj
dGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0dHIpOwogICAgIC8vIFJlbW92
ZSB0aGUgcXVlcnkgcGFydCBiZWNhdXNlIGl0IG1pZ2h0IGNvbnRhaW4gdm9sYXRpbGUgcGFyYW1l
dGVycyBzdWNoCiAgICAgLy8gYXMgYSBzZXNzaW9uIGtleS4KICAgICBhY3Rpb25VUkwuc2V0UXVl
cnkoU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApp
bmRleCA3ODRiYjBlLi4xOWQ2NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JF
bGVtZW50LmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6OmRy
YWdnYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShocmVmQXR0cik7CiB9CiAK
LUtVUkwgSFRNTEFuY2hvckVsZW1lbnQ6OmhyZWYoKSBjb25zdAorVVJMIEhUTUxBbmNob3JFbGVt
ZW50OjpocmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSkp
OwogfQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6aGFzaCgp
IGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwog
ICAgIGlmICh2YWx1ZVswXSA9PSAnIycpCiAgICAgICAgIHVybC5zZXRGcmFnbWVudElkZW50aWZp
ZXIodmFsdWUuc3Vic3RyaW5nKDEpKTsKICAgICBlbHNlCkBAIC0zNTEsNyArMzUxLDcgQEAgdm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SGFzaChjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBTdHJp
bmcgSFRNTEFuY2hvckVsZW1lbnQ6Omhvc3QoKSBjb25zdAogewotICAgIGNvbnN0IEtVUkwmIHVy
bCA9IGhyZWYoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGhyZWYoKTsKICAgICBpZiAodXJsLmhv
c3RFbmQoKSA9PSB1cmwucGF0aFN0YXJ0KCkpCiAgICAgICAgIHJldHVybiB1cmwuaG9zdCgpOwog
ICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKSwgdXJsLnByb3RvY29s
KCkpKQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhvc3Qo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsK
ICAgICBpZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NDA4LDcgKzQwOCw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhvc3RuYW1lKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgaWYgKGkgPT0gaG9zdExlbmd0aCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBp
ZiAoIXVybC5jYW5TZXRIb3N0T3JQb3J0KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDIzLDcg
KzQyMyw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cGF0aG5hbWUoKSBjb25zdAogCiB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYg
KCF1cmwuY2FuU2V0UGF0aG5hbWUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00NDUsNyArNDQ1
LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwb3J0KCkgY29uc3QKIAogdm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEtVUkwg
dXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0
SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ2OCw3ICs0NjgsNyBAQCBTdHJp
bmcgSFRNTEFuY2hvckVsZW1lbnQ6OnByb3RvY29sKCkgY29uc3QKIAogdm9pZCBIVE1MQW5jaG9y
RWxlbWVudDo6c2V0UHJvdG9jb2woY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVy
bCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwogICAgIHVybC5zZXRQcm90b2NvbCh2
YWx1ZSk7CiAgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQpAQCAtNDg3LDcgKzQ4Nyw3IEBA
IFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6b3JpZ2luKCkgY29uc3QKIAogdm9pZCBIVE1MQW5j
aG9yRWxlbWVudDo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1
cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBTdHJpbmcgbmV3U2VhcmNo
ID0gKHZhbHVlWzBdID09ICc/JykgPyB2YWx1ZS5zdWJzdHJpbmcoMSkgOiB2YWx1ZTsKICAgICAv
LyBNYWtlIHN1cmUgdGhhdCAnIycgaW4gdGhlIHF1ZXJ5IGRvZXMgbm90IGxlYWsgdG8gdGhlIGhh
c2guCiAgICAgdXJsLnNldFF1ZXJ5KG5ld1NlYXJjaC5yZXBsYWNlV2l0aExpdGVyYWwoJyMnLCAi
JTIzIikpOwpAQCAtNTEwLDcgKzUxMCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1lbnQ6OmlzTGl2
ZUxpbmsoKSBjb25zdAogICAgIHJldHVybiBpc0xpbmsoKSAmJiB0cmVhdExpbmtBc0xpdmVGb3JF
dmVudFR5cGUobV93YXNTaGlmdEtleURvd25Pbk1vdXNlRG93biA/IE1vdXNlRXZlbnRXaXRoU2hp
ZnRLZXkgOiBNb3VzZUV2ZW50V2l0aG91dFNoaWZ0S2V5KTsKIH0KIAotdm9pZCBIVE1MQW5jaG9y
RWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQordm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpCiB7CiAg
ICAgaWYgKCFoYXNBdHRyaWJ1dGUocGluZ0F0dHIpIHx8ICFkb2N1bWVudCgpLnNldHRpbmdzKCkg
fHwgIWRvY3VtZW50KCkuc2V0dGluZ3MoKS0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTUzMSw3ICs1MzEsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50
OjpoYW5kbGVDbGljayhFdmVudCogZXZlbnQpCiAgICAgU3RyaW5nQnVpbGRlciB1cmw7CiAgICAg
dXJsLmFwcGVuZChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZmFzdEdldEF0dHJp
YnV0ZShocmVmQXR0cikpKTsKICAgICBhcHBlbmRTZXJ2ZXJNYXBNb3VzZVBvc2l0aW9uKHVybCwg
ZXZlbnQpOwotICAgIEtVUkwga3VybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsLnRvU3Ry
aW5nKCkpOworICAgIFVSTCBrdXJsID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwudG9TdHJp
bmcoKSk7CiAKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQogICAgIGlmIChoYXNBdHRy
aWJ1dGUoZG93bmxvYWRBdHRyKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQW5jaG9yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5oCmluZGV4IGY4MmY0MGYuLmY2Yjc5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFuY2hvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SFRN
TEFuY2hvckVsZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVm
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRIcmVmKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKCkgY29uc3Q7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3QgT1ZFUlJJREUgRklOQUw7
CiAgICAgdmlydHVhbCBib29sIGRyYWdnYWJsZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZW5kUGlu
Z3MoY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0
IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCiAgICAgdm9pZCBoYW5kbGVDbGljayhFdmVudCopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXggMWZjOGQ2My4uODQy
YjcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcApAQCAtNzcsNyAr
NzcsNyBAQCBTdHJpbmcgSFRNTEJhc2VFbGVtZW50Ojp0YXJnZXQoKSBjb25zdAogICAgIHJldHVy
biBmYXN0R2V0QXR0cmlidXRlKHRhcmdldEF0dHIpOwogfQogCi1LVVJMIEhUTUxCYXNlRWxlbWVu
dDo6aHJlZigpIGNvbnN0CitVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKICAg
ICAvLyBUaGlzIGRvZXMgbm90IHVzZSB0aGUgZ2V0VVJMQXR0cmlidXRlIGZ1bmN0aW9uIGJlY2F1
c2UgdGhhdCB3aWxsIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3MgYmFzZSBVUkw7
CiAgICAgLy8gYmFzZSBlbGVtZW50cyBsaWtlIHRoaXMgb25lIGNhbiBiZSB1c2VkIHRvIHNldCB0
aGF0IGJhc2UgVVJMLiBUaHVzIHdlIG5lZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSB0byB0aGUgZG9j
dW1lbnQncwpAQCAtODcsMTIgKzg3LDEyIEBAIEtVUkwgSFRNTEJhc2VFbGVtZW50OjpocmVmKCkg
Y29uc3QKICAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBk
b2N1bWVudCgpLnVybCgpOwogCi0gICAgS1VSTCB1cmwgPSAhZG9jdW1lbnQoKS5kZWNvZGVyKCkg
PwotICAgICAgICBLVVJMKGRvY3VtZW50KCkudXJsKCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyaWJ1dGVWYWx1ZSkpIDoKLSAgICAgICAgS1VSTChkb2N1bWVudCgpLnVy
bCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpLCBk
b2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CisgICAgVVJMIHVybCA9ICFkb2N1bWVu
dCgpLmRlY29kZXIoKSA/CisgICAgICAgIFVSTChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpKSA6CisgICAgICAgIFVSTChk
b2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmli
dXRlVmFsdWUpLCBkb2N1bWVudCgpLmRlY29kZXIoKS0+ZW5jb2RpbmcoKSk7CiAKICAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBV
UkwoKTsKIAogICAgIHJldHVybiB1cmw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuaAppbmRleCBiYzYzZDRmLi4wY2RlOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VF
bGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgY2xhc3MgSFRNTEJhc2VFbGVtZW50IEZJTkFMIDog
cHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1M
QmFzZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAot
ICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRIcmVmKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IDM5Y2IwN2IuLjJmM2VhYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBpbnQgSFRN
TEJvZHlFbGVtZW50OjpzY3JvbGxXaWR0aCgpCiAgICAgcmV0dXJuIGFkanVzdEZvclpvb20odmll
dy0+Y29udGVudHNXaWR0aCgpLCAqZnJhbWUpOwogfQogCi12b2lkIEhUTUxCb2R5RWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25z
dAordm9pZCBIVE1MQm9keUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVu
dC5oCmluZGV4IDgzMGY5MTYuLmJlYTQyMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlF
bGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCBzY3Jv
bGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExp
c3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwLi4zMzhmNDZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAjaW5jbHVkZSAiSFRNTEZy
YW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50OjpIVE1MRG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50Q2xhc3NGbGFncyBkb2N1
bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzc2VzKQogICAgIDog
RG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERvY3VtZW50Q2xhc3Mp
CiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaApp
bmRleCAyNWM0YjU4Li4wNDc5YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAg
LTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRG9jdW1lbnQg
OiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBj
cmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC04MCw3
ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50
KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IDApOworICAgIEhUTUxE
b2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50Q2xhc3NGbGFncyA9IDApOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzU0N2U0Ni4uZWY2M2FlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
Y29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNv
bnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAotdm9pZCBIVE1MRW1i
ZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMpIGNvbnN0Cit2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAppbmRleCAyZTk5ZTJjLi43Zjg2NTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlv
bik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2b2lkIHBhcmFtZXRl
cnNGb3JQbHVnaW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcAppbmRleCAzMDAxOTJkLi5iODFhYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNV
UkxBbGxvd2VkKCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChtX1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCku
Y29tcGxldGVVUkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBs
ZXRlVVJMKSkgeyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0aGlzLT5jb250ZW50
RG9jdW1lbnQoKTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJh
c2U6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhUTUxGcmFtZUVsZW1l
bnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmxvY2F0
aW9uKCkgY29uc3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNkb2NBdHRyKSkKLSAg
ICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CisgICAg
ICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CiAgICAgcmV0
dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDMxYTU0Zjcu
LjIzMDMzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRnJhbWVF
bGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewogcHVibGljOgotICAg
IEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJN
b2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5OC4uMjVmNTE2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0zMDksNyArMzA5
LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZhbHVlKQogICAgIHNl
dEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOwogfQogCi1LVVJM
IEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTEltYWdlRWxlbWVudDo6c3Jj
KCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1
dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVu
dDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmltYWdlQ29tcGxl
dGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJbWFnZUVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBj
b25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJs
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNzQ3OGNlNC4u
N2ZjN2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIZWlnaHQoaW50KTsKIAotICAgIEtVUkwg
c3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAgIHZvaWQgc2V0U3JjKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwpAQCAtMTA0LDcgKzEwNCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxlKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNTRkOTFmMC4uZjVmZTAzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMzQwLDcgKzEz
NDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQgc2l6ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldFNpemUoc2l6ZSk7CiB9CiAKLUtVUkwgSFRNTElu
cHV0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBIVE1MSW5wdXRFbGVtZW50OjpzcmMoKSBjb25z
dAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUo
c3JjQXR0cikpOwogfQpAQCAtMTU3MCw3ICsxNTcwLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsK
IH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAog
ewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXgg
ZGE4ZThlNS4uOWEzMGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRNTE9wdGlv
bkVsZW1lbnQ7CiBjbGFzcyBJY29uOwogY2xhc3MgSW5wdXRUeXBlOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIHN0cnVjdCBEYXRl
VGltZUNob29zZXJQYXJhbWV0ZXJzOwogCkBAIC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0U2l6ZSh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkLCBFeGNl
cHRpb25Db2RlJik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVSTCBzcmMoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgaW50IG1heExlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF4
TGVuZ3RoKGludCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBPVkVS
UklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgYm9v
bCBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJGb3JTdXNwZW5z
aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IGIzMzk4NjguLmM5MDhkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJv
Y2VzcygpCiAgICAgfQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKLSAgICBL
VVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBVUkwgdXJs
ID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAgaWYgKCFtX2xpbmtM
b2FkZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMtPnRvU3RyaW5nKCks
IHVybCwgJmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVs
ZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVu
dDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VV
UkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2Fj
aGVkU3R5bGVTaGVldCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNv
bnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAg
aWYgKCFpbkRvY3VtZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0KTsKQEAgLTM5NSw3
ICszOTUsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkubG9j
YWxOYW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJp
YnV0ZSk7CiB9CiAKLUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKK1VSTCBIVE1M
TGlua0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcgKzQyNSw3IEBAIFN0
cmluZyBIVE1MTGlua0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6
ZXMtPnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxM
aW5rRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4m
IHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMGJh
MzUwZi4uZGNjMDgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0z
Nyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMaW5rRWxlbWVu
dDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEV2ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+IExpbmtF
dmVudFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTGlua0VsZW1lbnQo
KTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAg
U3RyaW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7
CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VD
bGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhy
ZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2Fj
aGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRB
bmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1
YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBw
cml2YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNTlhMjll
Li41OWFjNjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVuc2lnbmVkJiB2YWx1ZSwg
dW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIFN0cmlu
ZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1cmxG
b3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBAIC03NDAsNyArNzQwLDcg
QEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6Om5ldHdv
cmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOwogfQogCi1TdHJpbmcg
SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBIVE1M
TWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShDb250
ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsKICAgICBTdHJpbmcgY2Fu
UGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1l
ZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3JjQXR0cjsK
IAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRoZSBlbXB0eSBz
dHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cKLSAgICAgICAgS1VS
TCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBV
UkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAg
aWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVk
KE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3JjJyIpOwpAQCAtOTg1
LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VDaGlsZCgp
CiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygpKSk7CiAgICAgU3RyaW5n
IGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4dFNvdXJjZUNoaWxkKCZj
b250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVSTCBtZWRpYVVSTCA9IHNl
bGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0ZW0sIENvbXBsYWluKTsK
ICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3YWl0Rm9yU291cmNlQ2hh
bmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAsMTggQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBsb2FkUmVzb3VyY2UobWVk
aWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0aWMgS1VSTCBjcmVhdGVG
aWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0
YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBhIGZ1bmN0aW9uIHRvIGNy
ZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBUaGlzIGZ1bmN0aW9uCi0g
ICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0aCB1c2VzIGVuY29kZVdp
dGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAgLy8gVVJMIHNob3VsZCBo
YXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRoLCBidXQgaXQgZG9lcyBu
b3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSBVUkw6OnNl
dFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3aGljaCBpdCBub3Rlcwog
ICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAnPycuIFRoaXMgZnVuY3Rp
b24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8gYXBwIGNhY2hlIG1lZGlh
IGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOworICAgIFVSTCB1
cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogCiAg
ICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKICAgICB1cmwuc2V0UGF0
aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZpbGVVUkxG
b3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IEtV
UkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwm
IGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFsVVJMLCBDb21wbGFp
bikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRS
ZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0aWFsVVJMOworICAgIFVS
TCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLndpbGxMb2FkTWVk
aWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxh
eWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1MjcsNyArMTUyNyw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0
aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoY29u
c3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewogICAgIGlm
ICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFsaWQiLCB1
cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE5ODMsNyArMTk4Myw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXll
ciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1
ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNzYWdlLCB1
bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJMKQordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVSTCYgZGVmYXVs
dFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsKICAgICBpbml0aWFs
aXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMxODksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFj
a0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRyYWNrRWxlbWVudC0+aGFz
VGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1lbnQtPmdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBVUkwgdXJsID0gdHJhY2tF
bGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAnc3JjJyBpcyAlcyIsIHVy
bEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgpAQCAt
MzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZlUG90ZW50aWFsU291
cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3VycmVudFNvdXJjZU5v
ZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9kZSA9IG1f
bmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRVUkwgPSBzZWxlY3ROZXh0
U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4dFVSTCA9IHNlbGVjdE5l
eHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9jdXJyZW50U291cmNlTm9k
ZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgPSBu
ZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGF2
ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVSTC5pc1ZhbGlkKCk7CiB9
CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRU
eXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24gYWN0
aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGls
ZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lzdGVtLCBJbnZhbGlkVVJM
QWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgLy8gRG9u
J3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBh
bnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICszNDQ2LDEwIEBAIEtVUkwg
SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250
ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gMHgw
MDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7CisgICAgVVJMIG1lZGlhVVJM
OwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAgIFN0cmluZyB0eXBlOwog
ICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBjaGVja19hZ2FpbjoKICAg
ICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50U291cmNlTm9kZS5nZXQo
KSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRpYShtZWRpYVVSTCkudXRm
OCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5Vc2VTb3VyY2VFbGVtZW50
ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNvdXJjZUVsZW1lbnQgPyBt
ZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0Fk
ZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcgKzM1NTIsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3Vy
Y2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFtZShzb3Vy
Y2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25FbXB0eVVSTEF0dHJp
YnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51
dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyArMzYwMCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNlRWxlbWVudCogc291
cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhhc1RhZ05hbWUoc291
cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UtPmdldE5vbkVtcHR5VVJM
QXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJs
KS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEsNyArNDMxMSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRpYVBsYXllclBy
b3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94eShwcm94eSk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJs
LCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYgdXJsLCBWZWN0b3I8U3Ry
aW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAgICAgUmVmPEhUTUxNZWRp
YUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291cmNlQ2hpbGQgbWF5IGZp
cmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4K
IApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQbHVnaW5Q
cm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKIAogICAgIGlm
IChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSB0b0hUTUxW
aWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0gdmlkZW8tPnBvc3Rl
ckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVySW1hZ2VV
UkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYmIGZyYW1l
LT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwpKSB7CiAgICAgICAg
ICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9wb3N0ZXJfIikp
OwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkpOwpAQCAtNDM1
NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllclBy
b3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxh
eWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgVmVjdG9yPFN0
cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKIApAQCAt
NDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1
Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBW
ZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTogUmVuYW1lIGt1cmwgdG8g
c29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOworICAgIFVSTCBrdXJsOwog
CiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBwYXJhbU5hbWVz
LCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9jdW1lbnQoKS5mcmFtZSgp
IGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGNmNmU4OTYu
LmQ1NWMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC02MCw3
ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTsKIGNsYXNzIEV2ZW50
OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhQ29udHJvbGxlcjsKIGNsYXNzIE1lZGlh
Q29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoK
IAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwotICAg
IGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTcmM7IH0K
KyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTcmM7
IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBUWSwgTkVUV09SS19JRExF
LCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAgICAgTmV0d29ya1N0YXRl
IG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAg
IFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKICAgICB2b2lkIGxvYWQo
KTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29uc3QgS1VSTCYgPSBLVVJMKCkpIGNvbnN0
OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0gVVJMKCkpIGNvbnN0Owog
CiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpAQCAt
MzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRXaWRnZXRVcGRhdGUoYm9v
bCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9IG5lZWRXaWRnZXRVcGRh
dGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQbGF5ZXJQcm94eU5vdGlm
aWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1lZGlhUGxheWVyUHJveHko
V2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJh
bXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1
ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1cmwsIFZlY3RvcjxTdHJp
bmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAgdm9pZCBjcmVhdGVNZWRp
YVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRp
b24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBl
bnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07Ci0gICAgYm9vbCBp
c1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVUkxBY3Rpb24pOworICAgIGJvb2wg
aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAgY29u
c3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYUdyb3VwKGNv
bnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRp
YVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQ
bGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lz
dGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2Fn
ZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxl
bmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lz
dGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2Fn
ZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7
CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gbG9h
ZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotICAgIHZvaWQgbG9hZFJlc291
cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsK
KyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKCk7CiAg
ICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCB1c2VyQ2FuY2VsbGVkTG9h
ZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yU291cmNl
Q2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAgICBLVVJMIHNlbGVjdE5l
eHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmluZyoga2V5U3lzdGVtLCBJbnZhbGlkVVJM
QWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgU3Ry
aW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAgdm9pZCBtZWRpYUxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKQEAgLTYzNCw3ICs2MzQsNyBA
QCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZU1heGltdW07Ci0g
ICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1fY3VycmVudFNyYzsKIAogICAgIFJlZlB0
cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IGIzYzA0N2EuLjJmZDM4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgYm9vbCBIVE1MT2JqZWN0
RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAog
ewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDQ0
MTUzNTUuLmNjZTNmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiBy
ZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9u
T3B0aW9uKTsKICAgICB2b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAKaW5kZXggNjk4YmExMi4uZDEwZjQ2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wg
SFRNTFBhcmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUpIGNvbnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1
dGUpOwogfQogCi12b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFBhcmFtRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNv
bnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRleCBlNjJmODRhLi4z
MmM2MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaApAQCAtNDAsNyAr
NDAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0
OwogfTsKIAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0Y2FmNGM5Li5h
NmZkYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6Omlz
SW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFVUkwo
bV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewot
ICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwobV91cmwp
OworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChtX3Vy
bCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub2JqZWN0Q29udGVu
dFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVmZXJQbHVnSW5zRm9y
SW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAgLTE3MCw3ICsxNzAs
NyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKIC8vIGRlcGVu
ZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YWxs
b3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIEtVUkwgY29tcGxl
dGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRlVVJM
ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNvbnRlbnRGcmFtZSgp
ICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAgICAmJiAhZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogYm9vbCBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFTU0VSVChkb2N1bWVu
dCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRV
Ukw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGF0aWMgdm9p
ZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4oSFRNTFBsdWdJbklt
YWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVsZW1l
bnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAgaWYgKHBsdWdJbkVs
ZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9hZGVkVVJMID0gcGx1
Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBVUkwm
IGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRlZE1p
bWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9PSBsb2FkZWRVUkwu
aG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAgICAgICAgICAgICAg
IHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01NzEsNyArNTcxLDcg
QEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFwc2hv
dHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJlZ2luU25hcHNob3R0
aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1
YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBV
UkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJMOiAlcyIsIHRoaXMs
IG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAgQWN0dWFsIFVSTDog
JXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWMuLjcxYmEwNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2FkZWRVcmwoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5nIGxvYWRlZE1pbWVUeXBlKCkgY29u
c3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RhcnRTbmFw
c2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBVUkwgbWlnaHQgbm90IGJlIHRoZSBz
YW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0ZXJzLgotICAgIHZvaWQgc3ViZnJh
bWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHBsdWdJblVSTCk7CisgICAgdm9p
ZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiBwbHVnSW5VUkwpOwog
ICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0Kik7CiAK
ICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wpOwpAQCAtMTA2LDcg
KzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRNTEltYWdlTG9hZGVyPiBtX2ltYWdl
TG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwogICAgIFN0cmluZyBtX3VybDsKLSAg
ICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRlZFVybDsKIAogICAgIHN0YXRpYyB2
b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNpZ25lZCA9IDApOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRlMmQuLjY2MWUzODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC0xMDUsMTIgKzEwNSwxMiBA
QCBib29sIEhUTUxTY3JpcHRFbGVtZW50Ojphc3luYygpIGNvbnN0CiAgICAgcmV0dXJuIGZhc3RI
YXNBdHRyaWJ1dGUoYXN5bmNBdHRyKSB8fCBmb3JjZUFzeW5jKCk7CiB9CiAKLUtVUkwgSFRNTFNj
cmlwdEVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFNjcmlwdEVsZW1lbnQ6OnNyYygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoc291cmNlQXR0cmlidXRl
VmFsdWUoKSk7CiB9CiAKLXZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFNjcmlw
dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAppbmRleCBh
ZTVjYTFiLi42NzIyOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5o
CkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIHNjcmlwdENvbnRlbnQoKTsgfQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsK
IAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogCiAgICAgdm9p
ZCBzZXRBc3luYyhib29sKTsKICAgICBib29sIGFzeW5jKCkgY29uc3Q7CkBAIC01MCw3ICs1MCw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMTgyODRjOC4uYTk4YmYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC0yNjksNyArMjY5LDcg
QEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2Fs
U3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2MKICAgICBtX2ZpcmVkTG9hZCA9IHRydWU7CiB9CiAK
LXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBIVE1MU3R5bGVFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsgICAg
CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCA4Zjk0Mzg4Li5mYmEwYTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRp
Y2FsU3VicmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCk7CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIHsgbV9zdHlsZVNoZWV0T3duZXIuc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KGRvY3VtZW50KCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29u
c3Q7CiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogICAgIHZvaWQgc2NvcGVkQXR0cmlidXRl
Q2hhbmdlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAKaW5kZXggN2ZiMmRhZS4uZjM1NzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBTdHJpbmcgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ6OnNjb3BlKCkgY29uc3QKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKHNj
b3BlQXR0cik7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFRh
YmxlQ2VsbEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUYWJsZVBhcnRFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2VsbEVsZW1lbnQuaAppbmRleCA5ODI3MGUzLi5mZTAxNjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiB9OwogCiBIVE1MVGFi
bGVDZWxsRWxlbWVudCogdG9IVE1MVGFibGVDZWxsRWxlbWVudChOb2RlKiBub2RlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IGEwMjliNTAuLjk3YjNiMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtNTcwLDcgKzU3
MCw3IEBAIFN0cmluZyBIVE1MVGFibGVFbGVtZW50OjpzdW1tYXJ5KCkgY29uc3QKICAgICByZXR1
cm4gZ2V0QXR0cmlidXRlKHN1bW1hcnlBdHRyKTsKIH0KIAotdm9pZCBIVE1MVGFibGVFbGVtZW50
OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNv
bnN0Cit2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmgKaW5kZXggMDhkMjNlMy4uZWNlNTE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICAvLyBVc2VkIHRv
IG9idGFpbiBlaXRoZXIgYSBzb2xpZCBvciBvdXRzZXQgYm9yZGVyIGRlY2wgYW5kIHRvIGRlYWwg
d2l0aCB0aGUgZnJhbWUgYW5kIHJ1bGVzIGF0dHJpYnV0ZXMuCiAgICAgdmlydHVhbCBjb25zdCBT
dHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAgIGVudW0gVGFi
bGVSdWxlcyB7IFVuc2V0UnVsZXMsIE5vbmVSdWxlcywgR3JvdXBzUnVsZXMsIFJvd3NSdWxlcywg
Q29sc1J1bGVzLCBBbGxSdWxlcyB9OwogICAgIGVudW0gQ2VsbEJvcmRlcnMgeyBOb0JvcmRlcnMs
IFNvbGlkQm9yZGVycywgSW5zZXRCb3JkZXJzLCBTb2xpZEJvcmRlcnNDb2xzT25seSwgU29saWRC
b3JkZXJzUm93c09ubHkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRy
YWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
CmluZGV4IDg1N2UyMGYuLmRiMzFlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGljIFN0cmluZyB1
cmxGb3JMb2dnaW5nVHJhY2soY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1cmxGb3JM
b2dnaW5nVHJhY2soY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogICAgIApAQCAtMTE1LDcgKzExNSw3
IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKIH0KIAotS1VSTCBIVE1MVHJhY2tFbGVtZW50OjpzcmMoKSBjb25z
dAorVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KQEAgLTIyMCw3ICsy
MjAsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpbWVyPEhUTUxU
cmFja0VsZW1lbnQ+KikKICAgICBzZXRSZWFkeVN0YXRlKEhUTUxUcmFja0VsZW1lbnQ6OkxPQURJ
TkcpOwogCiAgICAgLy8gNy4gTGV0IFVSTCBiZSB0aGUgdHJhY2sgVVJMIG9mIHRoZSB0cmFjayBl
bGVtZW50LgotICAgIEtVUkwgdXJsID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7
CisgICAgVVJMIHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogCiAgICAg
Ly8gOC4gSWYgdGhlIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgaXMgYSBtZWRpYSBlbGVtZW50IHRo
ZW4gbGV0IENPUlMgbW9kZSBiZSB0aGUgc3RhdGUgb2YgdGhlIHBhcmVudCBtZWRpYQogICAgIC8v
IGVsZW1lbnQncyBjcm9zc29yaWdpbiBjb250ZW50IGF0dHJpYnV0ZS4gT3RoZXJ3aXNlLCBsZXQg
Q09SUyBtb2RlIGJlIE5vIENPUlMuCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBIVE1MVHJhY2tF
bGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MVHJhY2tFbGVtZW50PiopCiAgICAgZW5z
dXJlVHJhY2soKS5zY2hlZHVsZUxvYWQodXJsKTsKIH0KIAotYm9vbCBIVE1MVHJhY2tFbGVtZW50
OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgSFRNTFRyYWNrRWxlbWVudDo6Y2Fu
TG9hZFVybChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAppbmRleCAz
YjljNGY3Li5iNzYxNTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaApA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50IEZJTkFMIDogcHVibGljIEhU
TUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVSTCBzcmMoKSBjb25z
dDsKICAgICB2b2lkIHNldFNyYyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyBraW5kKCk7
CkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
bW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogCiAgICAgTG9h
ZGFibGVUZXh0VHJhY2smIGVuc3VyZVRyYWNrKCk7Ci0gICAgdmlydHVhbCBib29sIGNhbkxvYWRV
cmwoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKGNvbnN0IFVSTCYp
OwogCiAgICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3RyYWNrOwogICAgIFRpbWVyPEhU
TUxUcmFja0VsZW1lbnQ+IG1fbG9hZFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKaW5kZXggYTEwMzY4My4uZWQ2N2M2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MVmlkZW9FbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6OnNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUpCiB7CiAgICAgRGlz
cGxheU1vZGUgb2xkTW9kZSA9IGRpc3BsYXlNb2RlKCk7Ci0gICAgS1VSTCBwb3N0ZXIgPSBwb3N0
ZXJJbWFnZVVSTCgpOworICAgIFVSTCBwb3N0ZXIgPSBwb3N0ZXJJbWFnZVVSTCgpOwogCiAgICAg
aWYgKCFwb3N0ZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBwb3N0ZXIgcGF0
aCwgYnV0IG9ubHkgc2hvdyBpdCB1bnRpbCB0aGUgdXNlciB0cmlnZ2VycyBkaXNwbGF5IGJ5IHBs
YXlpbmcgb3Igc2Vla2luZyBhbmQgdGhlCkBAIC0zMTUsMTEgKzMxNSwxMSBAQCB1bnNpZ25lZCBI
VE1MVmlkZW9FbGVtZW50Ojp3ZWJraXREcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0CiB9CiAjZW5k
aWYKIAotS1VSTCBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0CitVUkwg
SFRNTFZpZGVvRWxlbWVudDo6cG9zdGVySW1hZ2VVUkwoKSBjb25zdAogewogICAgIFN0cmluZyB1
cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VTb3VyY2VVUkwoKSk7
CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAg
IHJldHVybiBVUkwoKTsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDhlZTIwMmUuLmJh
MGY1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCkgY29u
c3QgeyByZXR1cm4gZGlzcGxheU1vZGUoKSA9PSBQb3N0ZXIgfHwgZGlzcGxheU1vZGUoKSA9PSBQ
b3N0ZXJXYWl0aW5nRm9yVmlkZW87IH0KIAotICAgIEtVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25z
dDsKKyAgICBVUkwgcG9zdGVySW1hZ2VVUkwoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBIVE1M
VmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKaW5kZXggNzYy
NGZlOS4uZGIzNTVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRNTFZp
ZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkKK0hUTUxWaWV3U291cmNlRG9jdW1lbnQ6OkhUTUxWaWV3U291cmNlRG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogICAgICwgbV90eXBlKG1pbWVUeXBl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAppbmRl
eCBjZWQ1OWRmLi5jNGVmNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBIVE1MVG9rZW47CiAKIGNsYXNz
IEhUTUxWaWV3U291cmNlRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlld1NvdXJjZURvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFZpZXdTb3VyY2VEb2N1bWVudD4gY3JlYXRlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWV3U291cmNlRG9jdW1lbnQoZnJh
bWUsIHVybCwgbWltZVR5cGUpKTsKICAgICB9CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZFNvdXJjZShjb25zdCBTdHJpbmcmLCBIVE1MVG9rZW4mKTsKIAogcHJpdmF0ZToK
LSAgICBIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpOworICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIC8vIFJldHVybnMgSFRNTFZp
ZXdTb3VyY2VQYXJzZXIgb3IgVGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKaW5kZXggZGFlYTAxZS4uYWNiNjcyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9p
ZCBJbWFnZURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIAogLy8gLS0tLS0tLS0KIAotSW1h
Z2VEb2N1bWVudDo6SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkK
K0ltYWdlRG9jdW1lbnQ6OkltYWdlRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBJbWFnZURvY3VtZW50Q2xhc3MpCiAg
ICAgLCBtX2ltYWdlRWxlbWVudCgwKQogICAgICwgbV9pbWFnZVNpemVJc0tub3duKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAppbmRleCAzMjA0ZDAxLi5lZDUzMzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBJbWFn
ZURvY3VtZW50RWxlbWVudDsKIAogY2xhc3MgSW1hZ2VEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBI
VE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9jdW1l
bnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbWFnZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEb2N1bWVudChmcmFt
ZSwgdXJsKSk7CiAgICAgfQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbWFn
ZUNsaWNrZWQoaW50IHgsIGludCB5KTsKIAogcHJpdmF0ZToKLSAgICBJbWFnZURvY3VtZW50KEZy
YW1lKiwgY29uc3QgS1VSTCYpOworICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2Vy
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCBkOGRjNWY5
Li43ZjBlZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIE1lZGlhRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEJ5dGVzKERvY3VtZW50
V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkKICAgICBmaW5pc2goKTsKIH0KICAgICAKLU1l
ZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CitNZWRpYURvY3VtZW50OjpNZWRpYURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1
cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCwgTWVkaWFEb2N1bWVudENsYXNzKQog
ICAgICwgbV9yZXBsYWNlTWVkaWFFbGVtZW50VGltZXIodGhpcywgJk1lZGlhRG9jdW1lbnQ6OnJl
cGxhY2VNZWRpYUVsZW1lbnRUaW1lckZpcmVkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaAppbmRleCAzYWY1NTBlLi41ZjYxMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlh
RG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFEb2N1bWVudD4gY3JlYXRlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgbWVkaWFFbGVtZW50U2F3VW5zdXBwb3J0ZWRUcmFja3MoKTsK
IAogcHJpdmF0ZToKLSAgICBNZWRpYURvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAg
IE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuY3BwCmluZGV4IDM5NTlkZGEuLjI1YWFiYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBkb3VibGUgTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6aW52YWxpZFRp
bWVWYWx1ZSgpCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwogfQogCi1N
ZWRpYUZyYWdtZW50VVJJUGFyc2VyOjpNZWRpYUZyYWdtZW50VVJJUGFyc2VyKGNvbnN0IEtVUkwm
IHVybCkKK01lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXIoY29u
c3QgVVJMJiB1cmwpCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3RpbWVGb3JtYXQoTm9uZSkK
ICAgICAsIG1fc3RhcnRUaW1lKE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaAppbmRleCAxN2RmYzNmLi45MzJj
Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJz
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaApA
QCAtMjgsMTcgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIE1lZGlhRnJh
Z21lbnRVUklQYXJzZXIgRklOQUwgewogcHVibGljOgogICAgIAotICAgIE1lZGlhRnJhZ21lbnRV
UklQYXJzZXIoY29uc3QgS1VSTCYpOworICAgIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIoY29uc3Qg
VVJMJik7CiAKICAgICBkb3VibGUgc3RhcnRUaW1lKCk7CiAgICAgZG91YmxlIGVuZFRpbWUoKTsK
QEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlTlBURnJhZ21lbnQoY29u
c3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIGRvdWJsZSYgc3RhcnRUaW1lLCBkb3VibGUmIGVu
ZFRpbWUpOwogICAgIGJvb2wgcGFyc2VOUFRUaW1lKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCYgb2Zmc2V0LCBkb3VibGUmIHRpbWUpOwogCi0gICAgS1VSTCBtX3VybDsK
KyAgICBVUkwgbV91cmw7CiAgICAgVGltZUZvcm1hdCBtX3RpbWVGb3JtYXQ7CiAgICAgZG91Ymxl
IG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBtX2VuZFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuY3BwCmluZGV4IDUyOTNkY2QuLjJjM2I0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUGx1Z2luRG9jdW1lbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBQbHVnaW5Eb2N1
bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6
ZV90KQogICAgIH0KIH0KIAotUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZyYW1lKiBm
cmFtZSwgY29uc3QgS1VSTCYgdXJsKQorUGx1Z2luRG9jdW1lbnQ6OlBsdWdpbkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVy
bCwgUGx1Z2luRG9jdW1lbnRDbGFzcykKICAgICAsIG1fc2hvdWxkTG9hZFBsdWdpbk1hbnVhbGx5
KHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKaW5kZXggZTBiYmQ5Ni4u
MjBlNGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaApAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBXaWRnZXQ7CiAKIGNsYXNzIFBsdWdpbkRvY3VtZW50IEZJTkFMIDogcHVibGlj
IEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpbkRvY3VtZW50
KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBib29s
IHNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpIHsgcmV0dXJuIG1fc2hvdWxkTG9hZFBsdWdpbk1h
bnVhbGx5OyB9CiAKIHByaXZhdGU6Ci0gICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBL
VVJMJik7CisgICAgUGx1Z2luRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgT1ZFUlJJREU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCmluZGV4IDVhZDhmYzYu
LjJiZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcApAQCAt
MjksMjAgKzI5LDIwIEBACiAKICNpZiBFTkFCTEUoQkxPQikKIAotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFB1Ymxp
Y1VSTE1hbmFnZXI6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtV
UkwmIHVybCwgVVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQordm9pZCBQdWJsaWNVUkxNYW5h
Z2VyOjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHVybCwg
VVJMUmVnaXN0cmFibGUqIHJlZ2lzdHJhYmxlKQogewogICAgIFJlZ2lzdHJ5VVJMTWFwOjppdGVy
YXRvciBmb3VuZCA9IG1fcmVnaXN0cnlUb1VSTC5hZGQoJnJlZ2lzdHJhYmxlLT5yZWdpc3RyeSgp
LCBVUkxTZXQoKSkuaXRlcmF0b3I7CiAgICAgZm91bmQtPmtleS0+cmVnaXN0ZXJVUkwob3JpZ2lu
LCB1cmwsIHJlZ2lzdHJhYmxlKTsKICAgICBmb3VuZC0+dmFsdWUuYWRkKHVybC5zdHJpbmcoKSk7
CiB9CiAKLXZvaWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IEtVUkwmIHVybCkKK3Zv
aWQgUHVibGljVVJMTWFuYWdlcjo6cmV2b2tlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGZvciAo
UmVnaXN0cnlVUkxNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwuYmVnaW4oKTsgaSAh
PSBtX3JlZ2lzdHJ5VG9VUkwuZW5kKCk7ICsraSkgewogICAgICAgICBpZiAoaS0+dmFsdWUuY29u
dGFpbnModXJsLnN0cmluZygpKSkgewpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFB1YmxpY1VSTE1h
bmFnZXI6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIGZvciAoUmVnaXN0cnlVUkxNYXA6Oml0
ZXJhdG9yIGkgPSBtX3JlZ2lzdHJ5VG9VUkwuYmVnaW4oKTsgaSAhPSBtX3JlZ2lzdHJ5VG9VUkwu
ZW5kKCk7ICsraSkgewogICAgICAgICBmb3IgKFVSTFNldDo6aXRlcmF0b3IgaiA9IGktPnZhbHVl
LmJlZ2luKCk7IGogIT0gaS0+dmFsdWUuZW5kKCk7ICsraikKLSAgICAgICAgICAgIGktPmtleS0+
dW5yZWdpc3RlclVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgKmopKTsKKyAgICAgICAgICAgIGkt
PmtleS0+dW5yZWdpc3RlclVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikpOwogICAgIH0KIAog
ICAgIG1fcmVnaXN0cnlUb1VSTC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1h
bmFnZXIuaAppbmRleCBhMTA5MTExLi45YWQwMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuaApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKQEAgLTQ2LDggKzQ2LDgg
QEAgY2xhc3MgUHVibGljVVJMTWFuYWdlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIE93blB0cjxQ
dWJsaWNVUkxNYW5hZ2VyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgUHVibGljVVJM
TWFuYWdlcik7IH0KIAotICAgIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBLVVJMJiwgVVJMUmVnaXN0cmFibGUqKTsKLSAgICB2b2lkIHJldm9rZShjb25zdCBLVVJMJik7
CisgICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJl
Z2lzdHJhYmxlKik7CisgICAgdm9pZCByZXZva2UoY29uc3QgVVJMJik7CiAgICAgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHREb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5j
cHAKaW5kZXggOTMzNGEzOS4uODNlZjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50
LmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHREb2N1
bWVudDo6VGV4dERvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorVGV4dERv
Y3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICA6
IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsKQogewogICAgIHNldENvbXBhdGliaWxpdHlNb2RlKFF1
aXJrc01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKaW5kZXggZWViNjAxMC4uZjRh
ODMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCkBAIC0zMSwxMyArMzEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0RG9jdW1lbnQgRklOQUwgOiBwdWJsaWMg
SFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RG9jdW1l
bnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxUZXh0RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0RG9jdW1lbnQoZnJhbWUs
IHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBLVVJMJik7CisgICAgVGV4dERvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKaW5kZXggZWI1YTk3Yi4uMWI1NWRjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTcsNyArNTcsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFVSTElucHV0VHlwZTo6
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogYm9vbCBVUkxJbnB1dFR5cGU6OnR5cGVNaXNtYXRj
aEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiAhdmFsdWUuaXNF
bXB0eSgpICYmICFLVVJMKEtVUkwoKSwgdmFsdWUpLmlzVmFsaWQoKTsKKyAgICByZXR1cm4gIXZh
bHVlLmlzRW1wdHkoKSAmJiAhVVJMKFVSTCgpLCB2YWx1ZSkuaXNWYWxpZCgpOwogfQogCiBib29s
IFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0
cnkuaAppbmRleCA2Njg3YzljLi42ZWU1N2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5o
CkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMUmVnaXN0cnk7CiAK
QEAgLTQ5LDggKzQ5LDggQEAgY2xhc3MgVVJMUmVnaXN0cnkgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgflVSTFJlZ2lzdHJ5KCkgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVS
TFJlZ2lzdHJhYmxlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0
IEtVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVu
cmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgLy8gVGhpcyBpcyBhbiBvcHRpb25h
bCBBUEkKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggMjZiYzRl
Yi4uZGZhOTIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkxLDcgKzkxLDcg
QEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhU
TUxWaWRlb0VsZW1lbnQqIHZpZGVvKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK2Jv
b2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBpZiAoIWNhbnZhcygpLT5vcmlnaW5DbGVhbigpIHx8IG1fY2xlYW5VUkxzLmNv
bnRhaW5zKHVybC5zdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNiw3ICsx
MDYsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29u
c3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjpjaGVja09yaWdpbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh3b3Vs
ZFRhaW50T3JpZ2luKHVybCkpCiAgICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgKaW5kZXggOGU4NDliZC4uYjViMjc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBj
bGFzcyBDYW52YXNQYXR0ZXJuOwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1M
SW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBXZWJHTE9iamVjdDsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewpAQCAtNjcsMTQgKzY3LDE0IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQqKTsK
ICAgICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTEltYWdlRWxlbWVudCopOwogICAg
IGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MVmlkZW9FbGVtZW50Kik7Ci0gICAgYm9v
bCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHdvdWxkVGFpbnRPcmln
aW4oY29uc3QgVVJMJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGNoZWNrT3JpZ2lu
KGNvbnN0IFQqIGFyZykKICAgICB7CiAgICAgICAgIGlmICh3b3VsZFRhaW50T3JpZ2luKGFyZykp
CiAgICAgICAgICAgICBjYW52YXMoKS0+c2V0T3JpZ2luVGFpbnRlZCgpOwogICAgIH0KLSAgICB2
b2lkIGNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGNoZWNrT3JpZ2luKGNvbnN0
IFVSTCYpOwogCiBwcml2YXRlOgogICAgIEhUTUxDYW52YXNFbGVtZW50KiBtX2NhbnZhczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDZkMDQwZDQuLmMwZjI4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTU1OSw3ICs1NTU5LDcg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlSFRNTEltYWdlRWxlbWVudChj
b25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEgKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIGltYWdlIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gaW1h
Z2UtPmNhY2hlZEltYWdlKCktPnJlc3BvbnNlKCkudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKICAgICBpZiAodXJsLmlz
TnVsbCgpIHx8IHVybC5pc0VtcHR5KCkgfHwgIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9u
TmFtZSwgImludmFsaWQgaW1hZ2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDY3ZjZi
Y2IuLjNlNzBiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0NTU1By
ZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVs
b2FkU2Nhbm5lci5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIENTU1ByZWxvYWRTY2FubmVy
OjplbWl0UnVsZSgpCiAgICAgaWYgKHJ1bGVFcXVhbElnbm9yaW5nQ2FzZShtX3J1bGUsICJpbXBv
cnQiKSkgewogICAgICAgICBTdHJpbmcgdXJsID0gcGFyc2VDU1NTdHJpbmdPclVSTChtX3J1bGVW
YWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNpemUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgS1VSTCBiYXNlRWxlbWVudFVSTDsgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGJlIHBhc3NlZCBpbiBmcm9tIHRoZSBIVE1MUHJlbG9hZFNjYW5lciB2aWEgc2Nhbigp
IQorICAgICAgICAgICAgVVJMIGJhc2VFbGVtZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2NhbmVyIHZpYSBzY2FuKCkhCiAgICAg
ICAgICAgICBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IHJlcXVlc3QgPSBQcmVsb2FkUmVxdWVzdDo6
Y3JlYXRlKCJjc3MiLCB1cmwsIGJhc2VFbGVtZW50VVJMLCBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5
bGVTaGVldCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkaW5n
IHRoZSBjaGFyc2V0IGluIHRoZSBwcmVsb2FkIHJlcXVlc3Q/CiAgICAgICAgICAgICBtX3JlcXVl
c3RzLT5hcHBlbmQocmVxdWVzdC5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAppbmRleCBhN2NiNzJlLi43OGQxZjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcApAQCAt
MjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRGVjaW1hbC5oIgogI2luY2x1ZGUgIkhUTUxJZGVu
dGlmaWVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuY3BwCmluZGV4IDQxZWUyMDEuLjY0MjM1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAotICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3Jl
YXRlUHJlbG9hZFJlcXVlc3QoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZVVSTCkKKyAgICBPd25Q
dHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZVByZWxvYWRSZXF1ZXN0KGNvbnN0IFVSTCYgcHJlZGlj
dGVkQmFzZVVSTCkKICAgICB7CiAgICAgICAgIGlmICghc2hvdWxkUHJlbG9hZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICBm
bG9hdCBtX2RldmljZVNjYWxlRmFjdG9yOwogfTsKIAotVG9rZW5QcmVsb2FkU2Nhbm5lcjo6VG9r
ZW5QcmVsb2FkU2Nhbm5lcihjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpCitUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0
IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIDogbV9kb2N1
bWVudFVSTChkb2N1bWVudFVSTCkKICAgICAsIG1faW5TdHlsZShmYWxzZSkKICAgICAsIG1fZGV2
aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpCkBAIC0zODEsMTAgKzM4MSwxMCBAQCB2
b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnVwZGF0ZVByZWRpY3RlZEJhc2VVUkwoY29uc3QgVG9r
ZW4mIHRva2VuKQogewogICAgIEFTU0VSVChtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMLmlzRW1w
dHkoKSk7CiAgICAgaWYgKGNvbnN0IHR5cGVuYW1lIFRva2VuOjpBdHRyaWJ1dGUqIGhyZWZBdHRy
aWJ1dGUgPSB0b2tlbi5nZXRBdHRyaWJ1dGVJdGVtKGhyZWZBdHRyKSkKLSAgICAgICAgbV9wcmVk
aWN0ZWRCYXNlRWxlbWVudFVSTCA9IEtVUkwobV9kb2N1bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29weSgpOworICAgICAg
ICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0gVVJMKG1fZG9jdW1lbnRVUkwsIHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhocmVmQXR0cmlidXRlLT52YWx1ZSkpLmNvcHkoKTsK
IH0KIAotSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBh
cnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcikKK0hUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxvYWRTY2FubmVyKGNv
bnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBVUkwmIGRvY3VtZW50VVJMLCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IG1fc2Nhbm5lcihkb2N1bWVudFVSTCwgZGV2
aWNlU2NhbGVGYWN0b3IpCiAgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUo
b3B0aW9ucykpCiB7CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6
OmFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAgIG1fc291cmNl
LmFwcGVuZChzb3VyY2UpOwogfQogCi12b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbihIVE1M
UmVzb3VyY2VQcmVsb2FkZXIqIHByZWxvYWRlciwgY29uc3QgS1VSTCYgc3RhcnRpbmdCYXNlRWxl
bWVudFVSTCkKK3ZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxSZXNvdXJjZVByZWxv
YWRlciogcHJlbG9hZGVyLCBjb25zdCBVUkwmIHN0YXJ0aW5nQmFzZUVsZW1lbnRVUkwpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSFRNTFRva2VuaXplcjo6dXBkYXRlU3RhdGVG
b3Igb25seSB3b3JrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKaW5kZXggN2MzZjUzNS4uNGZhZjdmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgK
QEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgU2VnbWVudGVkU3RyaW5nOwogY2xhc3MgVG9rZW5QcmVs
b2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5QcmVsb2FkU2Nhbm5l
cik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFRva2Vu
UHJlbG9hZFNjYW5uZXIoY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gMS4wKTsKKyAgICBleHBsaWNpdCBUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0IFVS
TCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKICAgICB+VG9r
ZW5QcmVsb2FkU2Nhbm5lcigpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbiYsIFBy
ZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNjYW4oY29uc3QgQ29tcGFjdEhUTUxUb2tlbiYsIFByZWxvYWRSZXF1ZXN0U3Ry
ZWFtJiByZXF1ZXN0cyk7CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UHJlZGljdGVkQmFzZUVsZW1l
bnRVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSB1cmw7
IH0KKyAgICB2b2lkIHNldFByZWRpY3RlZEJhc2VFbGVtZW50VVJMKGNvbnN0IFVSTCYgdXJsKSB7
IG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwgPSB1cmw7IH0KIAogICAgIC8vIEEgVG9rZW5QcmVs
b2FkU2Nhbm5lckNoZWNrcG9pbnQgaXMgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbCB0byByZXdp
bmRUbywKICAgICAvLyBhdCB3aGljaCBwb2ludCBhbGwgb3V0c3RhbmRpbmcgY2hlY2twb2ludHMg
YXJlIGludmFsaWRhdGVkLgpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYpOwogCiAgICAgc3RydWN0IENoZWNrcG9p
bnQgewotICAgICAgICBDaGVja3BvaW50KGNvbnN0IEtVUkwmIHByZWRpY3RlZEJhc2VFbGVtZW50
VVJMLCBib29sIGluU3R5bGUKKyAgICAgICAgQ2hlY2twb2ludChjb25zdCBVUkwmIHByZWRpY3Rl
ZEJhc2VFbGVtZW50VVJMLCBib29sIGluU3R5bGUKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVO
VCkKICAgICAgICAgICAgICwgc2l6ZV90IHRlbXBsYXRlQ291bnQKICNlbmRpZgpAQCAtMTA3LDcg
KzEwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIEtVUkwg
cHJlZGljdGVkQmFzZUVsZW1lbnRVUkw7CisgICAgICAgIFVSTCBwcmVkaWN0ZWRCYXNlRWxlbWVu
dFVSTDsKICAgICAgICAgYm9vbCBpblN0eWxlOwogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5U
KQogICAgICAgICBzaXplX3QgdGVtcGxhdGVDb3VudDsKQEAgLTExNSw4ICsxMTUsOCBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICBDU1NQcmVsb2FkU2Nhbm5lciBtX2Nzc1NjYW5uZXI7Ci0gICAg
Y29uc3QgS1VSTCBtX2RvY3VtZW50VVJMOwotICAgIEtVUkwgbV9wcmVkaWN0ZWRCYXNlRWxlbWVu
dFVSTDsKKyAgICBjb25zdCBVUkwgbV9kb2N1bWVudFVSTDsKKyAgICBVUkwgbV9wcmVkaWN0ZWRC
YXNlRWxlbWVudFVSTDsKICAgICBib29sIG1faW5TdHlsZTsKICAgICBmbG9hdCBtX2RldmljZVNj
YWxlRmFjdG9yOwogCkBAIC0xMzAsMTEgKzEzMCwxMSBAQCBwcml2YXRlOgogY2xhc3MgSFRNTFBy
ZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIVE1MUHJlbG9hZFNjYW5u
ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBIVE1MUHJlbG9hZFNj
YW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOworICAgIEhUTUxQcmVsb2FkU2Nhbm5lcihj
b25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gMS4wKTsKICAgICB+SFRNTFByZWxvYWRTY2FubmVyKCk7CiAKICAg
ICB2b2lkIGFwcGVuZFRvRW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOwotICAgIHZvaWQgc2Nh
bihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBLVVJMJiBkb2N1bWVudEJhc2VFbGVtZW50
VVJMKTsKKyAgICB2b2lkIHNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiwgY29uc3QgVVJMJiBk
b2N1bWVudEJhc2VFbGVtZW50VVJMKTsKIAogcHJpdmF0ZToKICAgICBUb2tlblByZWxvYWRTY2Fu
bmVyIG1fc2Nhbm5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UmVzb3VyY2VQcmVsb2FkZXIuY3BwCmluZGV4IDM2MzM0MWEuLmIxMDA5OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBib29sIFByZWxvYWRSZXF1ZXN0Ojppc1NhZmVUb1NlbmRUb0Fub3Ro
ZXJUaHJlYWQoKSBjb25zdAogICAgICAgICAmJiBtX2Jhc2VVUkwuaXNTYWZlVG9TZW5kVG9Bbm90
aGVyVGhyZWFkKCk7CiB9CiAKLUtVUkwgUHJlbG9hZFJlcXVlc3Q6OmNvbXBsZXRlVVJMKERvY3Vt
ZW50KiBkb2N1bWVudCkKK1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVVUkwoRG9jdW1lbnQq
IGRvY3VtZW50KQogewogICAgIHJldHVybiBkb2N1bWVudC0+Y29tcGxldGVVUkwobV9yZXNvdXJj
ZVVSTCwgbV9iYXNlVVJMLmlzRW1wdHkoKSA/IGRvY3VtZW50LT51cmwoKSA6IG1fYmFzZVVSTCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQ
cmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxv
YWRlci5oCmluZGV4IGVmOTMzOTUuLmFhYTg3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC0zMywxMiArMzMsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQcmVsb2FkUmVxdWVzdCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5p
dGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBD
YWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZyYgbWVkaWFBdHRy
aWJ1dGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBVUkwmIGJh
c2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBt
ZWRpYUF0dHJpYnV0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHJlbG9h
ZFJlcXVlc3QoaW5pdGlhdG9yLCByZXNvdXJjZVVSTCwgYmFzZVVSTCwgcmVzb3VyY2VUeXBlLCBt
ZWRpYUF0dHJpYnV0ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBPd25QdHI8UHJlbG9hZFJlcXVl
c3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZVVSTCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VU
eXBlKQorICAgIHN0YXRpYyBPd25QdHI8UHJlbG9hZFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29uc3QgVVJMJiBiYXNl
VVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFByZWxvYWRSZXF1ZXN0KGluaXRpYXRvciwgcmVzb3VyY2VVUkws
IGJhc2VVUkwsIHJlc291cmNlVHlwZSwgU3RyaW5nKCkpKTsKICAgICB9CkBAIC01NCw3ICs1NCw3
IEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIFByZWxvYWRSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBj
b25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNv
bnN0IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUpCisgICAgUHJlbG9hZFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcmIG1l
ZGlhQXR0cmlidXRlKQogICAgICAgICA6IG1faW5pdGlhdG9yKGluaXRpYXRvcikKICAgICAgICAg
LCBtX3Jlc291cmNlVVJMKHJlc291cmNlVVJMLmlzb2xhdGVkQ29weSgpKQogICAgICAgICAsIG1f
YmFzZVVSTChiYXNlVVJMLmNvcHkoKSkKQEAgLTY0LDExICs2NCwxMSBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKERvY3VtZW50Kik7CisgICAgVVJMIGNv
bXBsZXRlVVJMKERvY3VtZW50Kik7CiAKICAgICBTdHJpbmcgbV9pbml0aWF0b3I7CiAgICAgU3Ry
aW5nIG1fcmVzb3VyY2VVUkw7Ci0gICAgS1VSTCBtX2Jhc2VVUkw7CisgICAgVVJMIG1fYmFzZVVS
TDsKICAgICBTdHJpbmcgbV9jaGFyc2V0OwogICAgIENhY2hlZFJlc291cmNlOjpUeXBlIG1fcmVz
b3VyY2VUeXBlOwogICAgIFN0cmluZyBtX21lZGlhQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0OTFkYmQzOC4uNWU0
ZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5l
ci5jcHAKQEAgLTc0LDEwICs3NCwxMCBAQCB2b2lkIEhUTUxTY3JpcHRSdW5uZXI6OmRldGFjaCgp
CiAgICAgbV9kb2N1bWVudCA9IDA7CiB9CiAKLXN0YXRpYyBLVVJMIGRvY3VtZW50VVJMRm9yU2Ny
aXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKK3N0YXRpYyBVUkwgZG9jdW1lbnRVUkxG
b3JTY3JpcHRFeGVjdXRpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gVVJMKCk7CiAKICAgICAvLyBVc2UgdGhlIFVSTCBvZiB0aGUgY3VycmVudGx5IGFj
dGl2ZSBkb2N1bWVudCBmb3IgdGhpcyBmcmFtZS4KICAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1l
KCktPmRvY3VtZW50KCktPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRp
dG9yLmNwcAppbmRleCAzZTM5MzM0Li44NGVhYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkhUTUxQYXJh
bUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSAi
VGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtMTU2LDggKzE1Niw4IEBAIHN0YXRpYyBpbmxpbmUg
U3RyaW5nIGRlY29kZTE2Qml0VW5pY29kZUVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0
cmluZykKIAogc3RhdGljIGlubGluZSBTdHJpbmcgZGVjb2RlU3RhbmRhcmRVUkxFc2NhcGVTZXF1
ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rpbmcp
CiB7Ci0gICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNlcygpIGluc3RlYWQgb2YgZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIEtVUkwuaCkgdG8KLSAgICAvLyBh
dm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBVUkwgZGVjb2RpbmcgZGlmZmVyZW5jZXMgKGUuZy4gS1VS
TEdvb2dsZSkuCisgICAgLy8gV2UgdXNlIGRlY29kZUVzY2FwZVNlcXVlbmNlcygpIGluc3RlYWQg
b2YgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKCkgKGRlY2xhcmVkIGluIFVSTC5oKSB0bworICAg
IC8vIGF2b2lkIHBsYXRmb3JtLXNwZWNpZmljIFVSTCBkZWNvZGluZyBkaWZmZXJlbmNlcyAoZS5n
LiBVUkxHb29nbGUpLgogICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBl
U2VxdWVuY2U+KHN0cmluZywgZW5jb2RpbmcpOwogfQogCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9p
ZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRl
KiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgIFN0cmluZyBlcnJvckRldGFpbHM7CiAgICAgICAg
IHVuc2lnbmVkIGVycm9yUG9zaXRpb24gPSAwOwogICAgICAgICBTdHJpbmcgcmVwb3J0VVJMOwot
ICAgICAgICBLVVJMIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkw7CisgICAgICAgIFVSTCB4c3NQcm90
ZWN0aW9uUmVwb3J0VVJMOwogCiAgICAgICAgIC8vIFByb2Nlc3MgdGhlIFgtWFNTLVByb3RlY3Rp
b24gaGVhZGVyLCB0aGVuIG1peCBpbiB0aGUgQ1NQIGhlYWRlcidzIHZhbHVlLgogICAgICAgICBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHhzc1Byb3RlY3Rp
b25IZWFkZXIgPSBwYXJzZVhTU1Byb3RlY3Rpb25IZWFkZXIoaGVhZGVyVmFsdWUsIGVycm9yRGV0
YWlscywgZXJyb3JQb3NpdGlvbiwgcmVwb3J0VVJMKTsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lk
IFhTU0F1ZGl0b3I6OmluaXQoRG9jdW1lbnQqIGRvY3VtZW50LCBYU1NBdWRpdG9yRGVsZWdhdGUq
IGF1ZGl0b3JEZWxlZ2F0ZSkKICAgICAgICAgICAgIGlmIChNaXhlZENvbnRlbnRDaGVja2VyOjpp
c01peGVkQ29udGVudChkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgeHNzUHJvdGVjdGlvblJl
cG9ydFVSTCkpIHsKICAgICAgICAgICAgICAgICBlcnJvckRldGFpbHMgPSAiaW5zZWN1cmUgcmVw
b3J0aW5nIFVSTCBmb3Igc2VjdXJlIHBhZ2UiOwogICAgICAgICAgICAgICAgIHhzc1Byb3RlY3Rp
b25IZWFkZXIgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0ludmFsaWQ7Ci0g
ICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IEtVUkwoKTsKKyAgICAgICAg
ICAgICAgICB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMID0gVVJMKCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHhzc1Byb3RlY3Rpb25IZWFkZXIgPT0gQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NJbnZhbGlkKQpAQCAtNzIwLDcgKzcyMCw3IEBAIGJvb2wg
WFNTQXVkaXRvcjo6aXNMaWtlbHlTYWZlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
aWYgKG1fZG9jdW1lbnRVUkwuaG9zdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgS1VSTCByZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwpOworICAgIFVSTCBy
ZXNvdXJjZVVSTChtX2RvY3VtZW50VVJMLCB1cmwpOwogICAgIHJldHVybiAobV9kb2N1bWVudFVS
TC5ob3N0KCkgPT0gcmVzb3VyY2VVUkwuaG9zdCgpICYmIHJlc291cmNlVVJMLnF1ZXJ5KCkuaXNF
bXB0eSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCmluZGV4
IDA2OTBiZTkuLjMyMWU2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlN1ZmZpeFRyZWUuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0NvbnRhaW5lZEluUmVxdWVzdChjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGlzTGlrZWx5
U2FmZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKTsKIAotICAgIEtVUkwgbV9kb2N1bWVudFVS
TDsKKyAgICBVUkwgbV9kb2N1bWVudFVSTDsKICAgICBib29sIG1faXNFbmFibGVkOwogCiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNwb3NpdGlvbiBtX3hzc1Byb3Rl
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0
ZS5oCmluZGV4IDFkOGM3ZDguLjY1MWM1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFhT
U0F1ZGl0b3JEZWxlZ2F0ZV9oCiAjZGVmaW5lIFhTU0F1ZGl0b3JEZWxlZ2F0ZV9oCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBYU1NBdWRpdG9yRGVsZWdhdGUo
RG9jdW1lbnQqKTsKIAogICAgIHZvaWQgZGlkQmxvY2tTY3JpcHQoY29uc3QgWFNTSW5mbyYpOwot
ICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX3JlcG9ydFVSTCA9IHVy
bDsgfQorICAgIHZvaWQgc2V0UmVwb3J0VVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fcmVwb3J0VVJM
ID0gdXJsOyB9CiAKIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZ2VuZXJhdGVW
aW9sYXRpb25SZXBvcnQoKTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIGJvb2wg
bV9kaWRTZW5kTm90aWZpY2F0aW9uczsKLSAgICBLVVJMIG1fcmVwb3J0VVJMOworICAgIFVSTCBt
X3JlcG9ydFVSTDsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPE93blB0cjxYU1NJbmZvPiA+IFhTU0lu
Zm9TdHJlYW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxl
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJh
Y2suY3BwCmluZGV4IGNlNTFmNjUuLmNlZDZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgTG9h
ZGFibGVUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCkKICAgICBUZXh0VHJhY2s6OmNsZWFyQ2xpZW50
KCk7CiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKHVybCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDE4OGVhZDEuLmFi
YmM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0
VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNr
LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTG9hZGFibGVUZXh0VHJhY2tDbGllbnQgOiBwdWJs
aWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRU
cmFja0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKExvYWRh
YmxlVGV4dFRyYWNrKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBVUkwmKSB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4
dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KIH07CiAKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRUcmFjaygpOwog
Ci0gICAgdm9pZCBzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2NoZWR1bGVM
b2FkKGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCk7CiAKQEAg
LTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBIVE1MVHJhY2tFbGVtZW50KiBtX3RyYWNrRWxl
bWVudDsKICAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9sb2FkVGltZXI7CiAgICAgT3du
UHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwg
bV91cmw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IGMx
YzI4OGQuLjJlZWQ3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuY3BwCkBAIC05MSwxMiArOTEsMTIgQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNo
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgUmVmUHRyPERvY3VtZW50PiBu
ZXdEb2N1bWVudDsKICAgICBpZiAobV9kb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkKLSAgICAg
ICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAg
ICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKICAgICBlbHNl
IGlmIChtX2RvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgbmV3RG9jdW1lbnQg
PSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwoKSk7CisgICAgICAgIG5ld0RvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CiAjaWYgRU5BQkxFKFNW
RykKICAgICBlbHNlIGlmIChtX2RvY3VtZW50LT5pc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIG5l
d0RvY3VtZW50ID0gRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBuZXdEb2N1
bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQo
bmV3RG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5j
cHAKaW5kZXggMGNlMWU5Ni4uZmI1YjY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2Vu
dDo6ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWQoKQogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7CiB9CiAK
LWJvb2wgSW5zcGVjdG9yQWdlbnQ6OmlzTWFpblJlc291cmNlTG9hZGVyKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwpCitib29sIEluc3BlY3RvckFnZW50Ojpp
c01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBVUkwmIHJl
cXVlc3RVcmwpCiB7CiAgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+ZnJhbWVJc01haW5GcmFt
ZShsb2FkZXItPmZyYW1lKCkpICYmIHJlcXVlc3RVcmwgPT0gbG9hZGVyLT5yZXF1ZXN0VVJMKCk7
CiB9CkBAIC0xNjksMTQgKzE2OSwxNCBAQCB2b2lkIEluc3BlY3RvckFnZW50OjppbnNwZWN0KFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gb2JqZQogICAgIG1f
cGVuZGluZ0luc3BlY3REYXRhLnNlY29uZCA9IGhpbnRzOwogfQogCi1LVVJMIEluc3BlY3RvckFn
ZW50OjppbnNwZWN0ZWRVUkwoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50OjppbnNwZWN0ZWRV
UkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLmRv
Y3VtZW50KCktPnVybCgpOwogfQogCi1LVVJMIEluc3BlY3RvckFnZW50OjppbnNwZWN0ZWRVUkxX
aXRob3V0RnJhZ21lbnQoKSBjb25zdAorVVJMIEluc3BlY3RvckFnZW50OjppbnNwZWN0ZWRVUkxX
aXRob3V0RnJhZ21lbnQoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gaW5zcGVjdGVkVVJMKCk7
CisgICAgVVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKICAgICByZXR1cm4gdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuaAppbmRleCBhMGVlMGY3Li43NzJjOTJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKIGNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgUGFnZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC02
Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAg
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogCi0gICAgS1VSTCBpbnNwZWN0ZWRVUkwoKSBj
b25zdDsKLSAgICBLVVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0OworICAg
IFVSTCBpbnNwZWN0ZWRVUkwoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVkVVJMV2l0aG91dEZy
YWdtZW50KCkgY29uc3Q7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQoKSBjb25z
dCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICNlbmRpZgogCi0gICAgYm9vbCBpc01h
aW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciosIGNvbnN0IEtVUkwmIHJlcXVlc3RVcmwp
OworICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBV
UkwmIHJlcXVlc3RVcmwpOwogCiAgICAgUGFnZSogbV9pbnNwZWN0ZWRQYWdlOwogICAgIEluc3Bl
Y3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGEyOWU1NGIuLjUwZjdkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogCiAgICAgaWYgKCFz
Y3JpcHQudXJsLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBw
YWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKSB7
Ci0gICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdlQWdlbnQtPmNhY2hl
ZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBz
Y3JpcHQudXJsKSk7CisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdl
QWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIFVSTChQYXJzZWRV
UkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAg
ICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJjZS0+cmVzcG9uc2Uo
KS5odHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7CiAgICAgICAgICAgICAgICAg
aWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmlsZVN5c3RlbUFnZW50LmNwcAppbmRleCA2ZTI4OGFkLi40
MGFkMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRmls
ZVN5c3RlbUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RmlsZVN5c3RlbUFnZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
clBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5z
dHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJMb2NhbEZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiTWV0YWRhdGEuaCIKQEAgLTIxNyw3ICsyMTcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVhZERpcmVjdG9yeUVudHJpZXMoKTsKIAogICAgIFJlZlB0cjxSZXF1ZXN0RGly
ZWN0b3J5Q29udGVudENhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBLVVJMIG1fdXJs
OworICAgIFVSTCBtX3VybDsKICAgICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkZpbGVTeXN0
ZW06OkVudHJ5PiA+IG1fZW50cmllczsKICAgICBSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBtX2Rp
cmVjdG9yeVJlYWRlcjsKIH07CkBAIC0zNDIsNyArMzQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
LCBtX3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCkgeyB9CiAKICAgICBSZWZQdHI8UmVxdWVzdE1l
dGFkYXRhQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgYm9vbCBtX2lzRGlyZWN0b3J5Owog
fTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1fY2hhcnNldChjaGFy
c2V0KSB7IH0KIAogICAgIFJlZlB0cjxSZXF1ZXN0RmlsZUNvbnRlbnRDYWxsYmFjaz4gbV9yZXF1
ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgYm9vbCBt
X3JlYWRBc1RleHQ7CiAgICAgaW50IG1fc3RhcnQ7CiAgICAgbG9uZyBsb25nIG1fZW5kOwpAQCAt
NTIyLDcgKzUyMiw3IEBAIHZvaWQgRmlsZUNvbnRlbnRSZXF1ZXN0OjpkaWRSZWFkKCkKIAogY2xh
c3MgRGVsZXRlRW50cnlSZXF1ZXN0IDogcHVibGljIFZvaWRDYWxsYmFjayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0
cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEtVUkwmIHVybCkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxldGVFbnRyeVJlcXVlc3Q+IGNyZWF0ZShQYXNzUmVm
UHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgVVJMJiB1cmwp
CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZUVudHJ5UmVxdWVzdChy
ZXF1ZXN0Q2FsbGJhY2ssIHVybCkpOwogICAgIH0KQEAgLTU1NCwxMiArNTU0LDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhzdGF0aWNfY2FzdDxp
bnQ+KGVycm9yQ29kZSkpOwogICAgIH0KIAotICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVm
UHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgS1VSTCYgdXJs
KQorICAgIERlbGV0ZUVudHJ5UmVxdWVzdChQYXNzUmVmUHRyPERlbGV0ZUVudHJ5Q2FsbGJhY2s+
IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogbV9yZXF1ZXN0Q2Fs
bGJhY2socmVxdWVzdENhbGxiYWNrKQogICAgICAgICAsIG1fdXJsKHVybCkgeyB9CiAKICAgICBS
ZWZQdHI8RGVsZXRlRW50cnlDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBt
X3VybDsKKyAgICBVUkwgbV91cmw7CiB9OwogCiB2b2lkIERlbGV0ZUVudHJ5UmVxdWVzdDo6c3Rh
cnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKQEAgLTY4
Niw3ICs2ODYsNyBAQCB2b2lkIEluc3BlY3RvckZpbGVTeXN0ZW1BZ2VudDo6ZGVsZXRlRW50cnko
RXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHVybAogICAgIGlmICghYXNzZXJ0RW5h
YmxlZChlcnJvcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0
cmluZywgdXJsU3RyaW5nKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5n
KTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBhc3NlcnRTY3JpcHRFeGVjdXRpb25Db250ZXh0Rm9yT3JpZ2luKGVycm9yLCBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5jcHAKaW5kZXggMDNiNjQxNS4uNGZlNjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKQEAgLTMyMiw3ICszMjIsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6cmVtb3ZlRmlsZVN5c3RlbShjb25zdCBTdHJpbmcm
IGZpbGVTeXN0ZW1QYXRoKQogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q6Omlzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGZpbGVTeXN0ZW1OYW1l
LCBjb25zdCBTdHJpbmcmIHJvb3RVUkwpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIHJl
dHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4dCwgZmlsZVN5c3RlbU5hbWUsIEZpbGVT
eXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMKSwgQXN5bmNG
aWxlU3lzdGVtOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIERPTUZpbGVTeXN0ZW06OmNyZWF0ZShj
b250ZXh0LCBmaWxlU3lzdGVtTmFtZSwgRmlsZVN5c3RlbVR5cGVJc29sYXRlZCwgVVJMKFBhcnNl
ZFVSTFN0cmluZywgcm9vdFVSTCksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggZDU1MzJjMC4uY2ZmYjczZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTc5
Nyw3ICs3OTcsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbQogICAgICAgICByZXNvdXJjZUFn
ZW50LT5kb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChpZGVu
dGlmaWVyLCBjbGllbnQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsTG9hZFhIUihjbGllbnQsIG1l
dGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscyk7
CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hv
dWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29y
a2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtl
ckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAoSW5zcGVjdG9yV29ya2VyQWdlbnQqIHdvcmtlckFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yV29ya2VyQWdlbnQoKSkKICAgICAgICAgd29y
a2VyQWdlbnQtPmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGVQcm94
eSwgdXJsKTsKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VuCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIERvY3VtZW50KiBk
b2N1bWVudCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2Nr
ZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQWdl
bnQoKTsKICAgICBpZiAoIWluc3BlY3RvckFnZW50IHx8ICFpbnNwZWN0b3JBZ2VudC0+ZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRmNmZhMWUuLmRmM2VhMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
QEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIGNsYXNzIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiBj
bGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNz
IE5vZGU7CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmVuZGVyTGF5ZXI7CkBAIC0yMDIs
NyArMjAyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJh
bWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZp
bmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKICAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGlu
Z0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbExvYWRY
SFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiwgYm9vbCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJS
ZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXT1JLRVJTKQog
ICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxT
Y29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSosIGNv
bnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJM
Jik7CiAgICAgc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAgICAgc3RhdGljIHZv
aWQgd2lsbEV2YWx1YXRlV29ya2VyU2NyaXB0KFdvcmtlckdsb2JhbFNjb3BlKiwgaW50IHdvcmtl
clRocmVhZFN0YXJ0TW9kZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAg
ICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50
VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVX
ZWJTb2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KERv
Y3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uo
RG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChEb2N1bWVudCosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC00MDYsNyArNDA2LDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1l
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3Rh
cnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAgICBzdGF0aWMgdm9p
ZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxs
TG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
Y29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJM
b2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCop
OwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcik7CkBAIC00NjMsMTIgKzQ2MywxMiBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKFdPUktFUlMpCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3Jr
ZXJPblN0YXJ0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
U3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFdvcmtlckds
b2JhbFNjb3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFdvcmtlckdsb2JhbFNj
b3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgdm9pZCB3b3JrZXJHbG9iYWxTY29w
ZVRlcm1pbmF0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9iYWxTY29wZVBy
b3h5Kik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3Vt
ZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOworICAgIHN0YXRpYyB2
b2lkIGRpZENyZWF0ZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIGRvY3Vt
ZW50VVJMLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
RG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lk
IGRpZENsb3NlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudCopOwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFy
dGVkTG9hZGluZ0ZvckMKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wg
aW5jbHVkZUNyZWRlbnRpYWxzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yQ29udGV4dChjb250ZXh0KSkKQEAgLTE4MDYsNyArMTgwNiw3IEBAIGlubGluZSBib29s
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0
YXJ0KFNjcmlwdEV4CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHksIGNvbnN0
IEtVUkwmIHVybCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBXb3Jr
ZXJHbG9iYWxTY29wZVByb3h5KiBwcm94eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQpAQCAtMTgzMyw3
ICsxODMzLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3b3JrZXJH
bG9iYWxTY29wZVRlcm1pbmF0ZWQoU2NyaXB0RXhlY3V0aW8KIAogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVX
ZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVXZWJTb2NrZXQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggODIwMjhkZC4uMzNkYWM0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTI0OSw3ICsy
NDksNyBAQCBQYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVjdG9yUGFnZUFnZW50
OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaQogfQogCiAvLyBzdGF0aWMKLXZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nKiByZXN1bHQsIGJvb2wqIGJh
c2U2NEVuY29kZWQpCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IGFzc2VydERvY3VtZW50TG9hZGVyKGVycm9yU3RyaW5nLCBmcmFtZSk7CiAgICAg
aWYgKCFsb2FkZXIpCkBAIC0yOTgsNyArMjk4LDcgQEAgU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c291cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmMK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorQ2Fj
aGVkUmVzb3VyY2UqIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVz
b3VyY2UodXJsKTsKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKSB7CkBAIC01NjEsOSArNTYxLDkg
QEAgc3RhdGljIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IGNhY2hlZFJlc291cmNlc0ZvckZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgVmVjdG9yPEtV
Ukw+IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCitzdGF0aWMgVmVjdG9y
PFVSTD4gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBWZWN0
b3I8S1VSTD4gcmVzdWx0OworICAgIFZlY3RvcjxVUkw+IHJlc3VsdDsKIAogICAgIHJlc3VsdC5h
cHBlbmQoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpKTsKIApAQCAtNTg5
LDEwICs1ODksMTAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKIAogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KG1haW5GcmFtZSgpKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgVmVjdG9yPEtVUkw+IGFsbFVSTHMgPSBhbGxSZXNvdXJj
ZXNVUkxzRm9yRnJhbWUoZnJhbWUpOwotICAgICAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBhbGxVUkxzLmJlZ2luKCk7IGl0ICE9IGFsbFVSTHMuZW5kKCk7ICsraXQp
IHsKKyAgICAgICAgVmVjdG9yPFVSTD4gYWxsVVJMcyA9IGFsbFJlc291cmNlc1VSTHNGb3JGcmFt
ZShmcmFtZSk7CisgICAgICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
YWxsVVJMcy5iZWdpbigpOyBpdCAhPSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAg
ICBWZWN0b3I8Q29va2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAgIHJhd0Nvb2tpZXNJ
bXBsZW1lbnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCAqaXQpLCBkb2NDb29raWVzTGlzdCk7CisgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50
ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXQpLCBk
b2NDb29raWVzTGlzdCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkg
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5n
IGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCiAgICAgICAgICAgICAg
ICAgLy8KQEAgLTYyMSw3ICs2MjEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29v
a2llcyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIHBhcnNlZFVS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1fcGFnZS0+bWFpbkZy
YW1lKCkpKQogICAgICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoZnJhbWUtPmRvY3VtZW50KCks
IHBhcnNlZFVSTCwgY29va2llTmFtZSk7CiB9CkBAIC02MzcsNyArNjM3LDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXNvdXJjZUNvbnRlbnQoZXJyb3JTdHJpbmcsIGZyYW1lLCBLVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCk7CisgICAgcmVzb3VyY2VDb250ZW50KGVycm9y
U3RyaW5nLCBmcmFtZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgY29udGVudCwgYmFzZTY0
RW5jb2RlZCk7CiB9CiAKIHN0YXRpYyBib29sIHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2Uo
Q2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlLCBTdHJpbmcqIHJlc3VsdCkKQEAgLTY2OCw3
ICs2NjgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgYwogICAgIGlmICghbG9hZGVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAg
IFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKIAogICAgIFN0cmluZyBjb250ZW50Owog
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGRkMDE4NzQuLjJiMDJlYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAg
Y2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKIGNsYXNzIElu
c3BlY3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVndWxhckV4cHJlc3Npb247CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CkBAIC04NiwxMSArODYsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgY2FjaGVkUmVzb3VyY2VDb250ZW50KENhY2hlZFJlc291cmNlKiwgU3RyaW5nKiByZXN1bHQs
IGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRl
bnQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5nKiByZXN1bHQpOwotICAgIHN0YXRpYyB2
b2lkIHJlc291cmNlQ29udGVudChFcnJvclN0cmluZyosIEZyYW1lKiwgY29uc3QgS1VSTCYsIFN0
cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKKyAgICBzdGF0aWMgdm9pZCByZXNv
dXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVz
dWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVS
TEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YShGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHRl
eHRFbmNvZGluZ05hbWUpOwotICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiByZXNvdXJjZURhdGEoRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHRleHRFbmNvZGlu
Z05hbWUpOworICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoRnJhbWUq
LCBjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlw
ZTo6RW51bSByZXNvdXJjZVR5cGVKc29uKFJlc291cmNlVHlwZSk7CiAgICAgc3RhdGljIFJlc291
cmNlVHlwZSBjYWNoZWRSZXNvdXJjZVR5cGUoY29uc3QgQ2FjaGVkUmVzb3VyY2UmKTsKICAgICBz
dGF0aWMgVHlwZUJ1aWxkZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJj
ZVR5cGVKc29uKGNvbnN0IENhY2hlZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggZmQ4ODk0ZS4uYjA5
NTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRl
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAi
U2NyaXB0SGVhcFNuYXBzaG90LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMzczY2E1ZC4uOThiYTUyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cApAQCAtNTEsNyArNTEsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZXNEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zCiAgICAgbV9yZXNv
dXJjZXNEYXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgeGhyUmVwbGF5RGF0YSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRYSFIoVGhyZWFkYWJsZUxv
YWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCit2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywg
Ym9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCiB7CiAgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IHho
clJlcGxheURhdGEgPSBYSFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCB1cmwsIGFzeW5jLCBm
b3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxzKTsKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBlbmQgPSBoZWFkZXJzLmVuZCgpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6YnVpbGRJbml0aWF0CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKLXZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMKQogewogICAgIG1fZnJvbnRlbmQtPndlYlNvY2tldENyZWF0ZWQoSWRlbnRp
ZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIHJlcXVlc3RVUkwuc3RyaW5nKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKaW5kZXggM2Q3YTY3ZC4uNTdhMjFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNz
IEluc3BlY3Rvck9iamVjdDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvclN0YXRlOwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVTY3JpcHRSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogCiAgICAgdm9p
ZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKLSAgICB2b2lkIHdp
bGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscyk7CisgICAg
dm9pZCB3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHks
IGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscyk7
CiAgICAgdm9pZCBkaWRGYWlsWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAt
MTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3VtZW50Kik7CiAKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKTsKKyAgICB2b2lkIGRpZENy
ZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCk7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZENsb3NlV2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggN2NjMTBmNS4uMTM5MGEwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAt
MTM4Miw3ICsxMzgyLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpyZXNvdXJjZVN0eWxl
U2hlZXRUZXh0KFN0cmluZyogcmVzdWx0KSBjb25zdAogCiAgICAgU3RyaW5nIGVycm9yOwogICAg
IGJvb2wgYmFzZTY0RW5jb2RlZDsKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29u
dGVudCgmZXJyb3IsIG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgS1VSTChQYXJzZWRVUkxTdHJp
bmcsIG1fcGFnZVN0eWxlU2hlZXQtPmhyZWYoKSksIHJlc3VsdCwgJmJhc2U2NEVuY29kZWQpOwor
ICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KCZlcnJvciwgb3duZXJEb2N1
bWVudCgpLT5mcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5o
cmVmKCkpLCByZXN1bHQsICZiYXNlNjRFbmNvZGVkKTsKICAgICByZXR1cm4gZXJyb3IuaXNFbXB0
eSgpICYmICFiYXNlNjRFbmNvZGVkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMjY1MTRlNi4uN2FmYWZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcApAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCkKIH0KIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLXZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBG
cmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZVdlYlNv
Y2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YShpZGVudGlmaWVyLCB1cmws
IHByb3RvY29sKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpXZWJTb2NrZXRDcmVhdGUsIHRydWUsIGZy
YW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCmluZGV4IGJiZTAwYjYuLjQ1OTJjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBj
bGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIElu
c3RydW1lbnRpbmdBZ2VudHM7CiBjbGFzcyBJbnRSZWN0OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CkBAIC0yMTYsNyArMjE2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyZUFuaW1hdGlv
bkZyYW1lKCk7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgdm9pZCBkaWRDcmVhdGVX
ZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgRnJhbWUqKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlNvY2tldCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2ws
IEZyYW1lKik7CiAgICAgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBGcmFtZSopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsK
ICAgICB2b2lkIGRpZERlc3Ryb3lXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBG
cmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5jcHAKaW5kZXggOGFhYTdjNi4uNmI3ZmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAj
aW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTIwNCw3
ICsyMDQsNyBAQCBib29sIEluc3BlY3RvcldvcmtlckFnZW50OjpzaG91bGRQYXVzZURlZGljYXRl
ZFdvcmtlck9uU3RhcnQoKQogICAgIHJldHVybiBtX3N0YXRlLT5nZXRCb29sZWFuKFdvcmtlckFn
ZW50U3RhdGU6OmF1dG9jb25uZWN0VG9Xb3JrZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JXb3Jr
ZXJBZ2VudDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5
KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEluc3BlY3Rv
cldvcmtlckFnZW50OjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkqIHdvcmtlckdsb2JhbFNjb3BlUHJveHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1f
ZGVkaWNhdGVkV29ya2Vycy5zZXQod29ya2VyR2xvYmFsU2NvcGVQcm94eSwgdXJsLnN0cmluZygp
KTsKICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZCAmJiBtX3N0YXRlLT5nZXRCb29sZWFuKFdv
cmtlckFnZW50U3RhdGU6Ondvcmtlckluc3BlY3Rpb25FbmFibGVkKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmgKaW5kZXggNTFmOTA2ZS4uODk3
ZGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJ
bnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRp
bmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgV29ya2VyR2xvYmFsU2Nv
cGVQcm94eTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CkBAIC01OCw3ICs1OCw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgog
ICAgIGJvb2wgc2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCk7Ci0gICAgdm9pZCBk
aWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBL
VVJMJik7CisgICAgdm9pZCBkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKFdvcmtlckdsb2JhbFNj
b3BlUHJveHkqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWlu
YXRlZChXb3JrZXJHbG9iYWxTY29wZVByb3h5Kik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggM2ZjMzUwMi4uOTY5ZDMwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUgPSAxMCAqIDEwMDAgKiAxMDAwOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLVBhc3NSZWZQ
dHI8WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0
aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZv
cm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0
YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBVUkwm
IHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgWEhSUmVwbGF5RGF0
YShtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBpbmNsdWRlQ3JlZGVudGlhbHMpKTsKIH0K
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBYSFJSZXBsYXlEYXRhOjphZGRIZWFkZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9oZWFkZXJzLnNldChr
ZXksIHZhbHVlKTsKIH0KIAotWEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0YShjb25zdCBTdHJp
bmcgJm1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitYSFJSZXBsYXlEYXRhOjpY
SFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBh
c3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRp
YWxzKQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV91cmwodXJsKQogICAgICwgbV9h
c3luYyhhc3luYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJj
ZXNEYXRhLmgKaW5kZXggNDE2ZDUzZC4uMWE0Mjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291
cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CkBAIC01MSwyMCArNTEsMjAgQEAgY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAog
Y2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFhIUlJlcGxheURhdGE+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29u
c3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFhIUlJlcGxheURhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiwg
Ym9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxz
KTsKIAogICAgIHZvaWQgYWRkSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgICBjb25zdCBTdHJpbmcmIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgYm9v
bCBhc3luYygpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmM7IH0KICAgICBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybURhdGE7IH0KICAgICBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXJzOyB9CiAgICAg
Ym9vbCBpbmNsdWRlQ3JlZGVudGlhbHMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVDcmVkZW50
aWFsczsgfQogcHJpdmF0ZToKLSAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9k
LCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKTsKKyAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9k
LCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBpbmNs
dWRlQ3JlZGVudGlhbHMpOwogCiAgICAgU3RyaW5nIG1fbWV0aG9kOwotICAgIEtVUkwgbV91cmw7
CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9hc3luYzsKICAgICBSZWZQdHI8Rm9ybURhdGE+
IG1fZm9ybURhdGE7CiAgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggMjg3MmYyNi4u
Y2EzMzQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBUaW1lbGluZVJlY29yZEZhY3Rv
cnlfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtOTcsNyArOTcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFwcGVuZExheW91
dFJvb3QoSW5zcGVjdG9yT2JqZWN0KiBkYXRhLCBjb25zdCBGbG9hdFF1YWQmKTsKIAogI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKLSAgICAgICAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKKyAgICAgICAg
c3RhdGljIGlubGluZSBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY3JlYXRlV2ViU29ja2V0
Q3JlYXRlRGF0YSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sKQogICAgICAgICB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAg
IGRhdGEtPnNldE51bWJlcigiaWRlbnRpZmllciIsIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29va2llSmFyLmNwcAppbmRleCA5Y2IxZGNlLi5lOTNkMWNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29va2llSmFyLmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIGlubGluZSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKICNkZWZp
bmUgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHNlc3Npb24o
bmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpKTsKICNlbmRpZgogCi1TdHJpbmcgY29va2llcyhj
b25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVz
KGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgTE9DQUxf
U0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tp
ZXNTdHJhdGVneSgpLT5jb29raWVzRm9yRE9NKHNlc3Npb24sIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi12b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBz
ZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpCiAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29raWVzRnJvbURPTShz
ZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJp
bmcpOwpAQCAtNzcsMTkgKzc3LDE5IEBAIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0
cmF0ZWd5KCktPmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOwogfQogCi1TdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0NBTF9TRVNTSU9OKGRvY3Vt
ZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCkt
PmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwpOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVz
KQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9j
dW1lbnQpCiAgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3ko
KS0+Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgdXJsLCBjb29raWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3Zv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBMT0NBTF9TRVNTSU9OKGRvY3VtZW50
KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29v
a2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgK
aW5kZXggNjBkZWQxNC4uYTk2YWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAt
MzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBDb29raWU7CiAKIC8vIEZ1bmN0aW9ucyBp
biB0aGlzIGZpbGUgdGFrZSBhIERvY3VtZW50IHBvaW50ZXIgdG8gZGV0ZXJtaW5lIHdoaWNoIGNv
b2tpZSBzdG9yYWdlIHRvIHVzZS4gV2Ugc2hvdWxkIG1lcmdlIHRoYXQgaW50byBjYWxsIHNpdGVz
LCBhbmQgdXNlIFBsYXRmb3JtQ29va2llSmFyIGRpcmVjdGx5LgogCiAvLyBUaGVzZSB0d28gZnVu
Y3Rpb25zIGltcGxlbWVudCBkb2N1bWVudC5jb29raWUgQVBJLCB3aXRoIHNwZWNpYWwgcnVsZXMg
Zm9yIEh0dHBPbmx5IGNvb2tpZXMuCi1TdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCosIGNv
bnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CitTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCos
IGNvbnN0IFVSTCYpOwordm9pZCBzZXRDb29raWVzKERvY3VtZW50KiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERv
Y3VtZW50Kik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9j
dW1lbnQqLCBjb25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQq
LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBV
UkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCosIGNvbnN0IFVSTCYsIFZl
Y3RvcjxDb29raWU+Jik7Cit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3Bw
CmluZGV4IDRhMTdkZmQuLjM1ODBhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKQEAgLTE1NCwxMyAr
MTU0LDEzIEBAIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGU6OnNoYXJlZCgpCiAgICAgcmV0dXJuIGNhY2hlOwogfQogCi12b2lk
IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmlu
ZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZUl0ZW0+IHByZWZsaWdodFJlc3VsdCkKK3ZvaWQgQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZTo6YXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFVSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVt
PiBwcmVmbGlnaHRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBt
X3ByZWZsaWdodEhhc2hNYXAuc2V0KG1ha2VfcGFpcihvcmlnaW4sIHVybCksIHByZWZsaWdodFJl
c3VsdCk7CiB9CiAKLWJvb2wgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6Y2FuU2tp
cFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBTdG9yZWRD
cmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25z
dCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKK2Jvb2wgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZTo6Y2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRIYXNoTWFwOjppdGVyYXRvciBjYWNoZUl0ID0gbV9wcmVmbGlnaHRIYXNoTWFwLmZpbmQobWFr
ZV9wYWlyKG9yaWdpbiwgdXJsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaAppbmRleCAwZDY0MzM4Li5kNGM0ODJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZV9oCiAjZGVmaW5lIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGVfaAogCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVUeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTcwLDE1ICs3MCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZSYgc2hhcmVkKCk7CiAKLSAgICAgICAgdm9pZCBhcHBlbmRFbnRyeShjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8Q3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZUl0ZW0+KTsKLSAgICAgICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiwgU3RvcmVkQ3JlZGVudGlhbHMsIGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyk7Cisg
ICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFVSTCYs
IFBhc3NPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+KTsKKyAgICAg
ICAgYm9vbCBjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwm
LCBTdG9yZWRDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIHJlcXVlc3RIZWFkZXJzKTsKIAogICAgICAgICB2b2lkIGVtcHR5KCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlKCkgeyB9CiAK
LSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIEtVUkw+LCBPd25QdHI8
Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+ID4gQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRIYXNoTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFN0cmlu
ZywgVVJMPiwgT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiA+IENy
b3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDsKIAogICAgICAgICBDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdEhhc2hNYXAgbV9wcmVmbGlnaHRIYXNoTWFwOwogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwCmluZGV4IDRiMjJmNzIuLjNh
MDJiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1p
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjpzZXROYXZpZ2F0aW9u
U3RhcnQoZG91YmxlIG5hdmlnYXRpb25TdGFydCkKICAgICBtX25hdmlnYXRpb25TdGFydCA9IG5h
dmlnYXRpb25TdGFydDsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0
KGNvbnN0IEtVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRpcmVjdGVkVXJsKQor
dm9pZCBEb2N1bWVudExvYWRUaW1pbmc6OmFkZFJlZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3Rp
bmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJlY3RlZFVybCkKIHsKICAgICBtX3JlZGlyZWN0Q291bnQr
KzsKICAgICBpZiAoIW1fcmVkaXJlY3RTdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRUaW1pbmcuaAppbmRleCA2NDQ5NDMzLi44NTQwOTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAog
Y2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nIHsKIHB1YmxpYzoKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBtYXJrTmF2aWdhdGlvblN0YXJ0KCk7CiAgICAgdm9pZCBzZXROYXZp
Z2F0aW9uU3RhcnQoZG91YmxlKTsKLSAgICB2b2lkIGFkZFJlZGlyZWN0KGNvbnN0IEtVUkwmIHJl
ZGlyZWN0aW5nVXJsLCBjb25zdCBLVVJMJiByZWRpcmVjdGVkVXJsKTsKKyAgICB2b2lkIGFkZFJl
ZGlyZWN0KGNvbnN0IFVSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IFVSTCYgcmVkaXJlY3RlZFVy
bCk7CiAKICAgICB2b2lkIG1hcmtVbmxvYWRFdmVudFN0YXJ0KCkgeyBtX3VubG9hZEV2ZW50U3Rh
cnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQogICAgIHZvaWQgbWFya1VubG9h
ZEV2ZW50RW5kKCkgeyBtX3VubG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGYy
OGIwZDUuLmJiZmJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cApAQCAtMTgzLDEyICsxODMsMTIgQEAgUmVzb3VyY2VSZXF1ZXN0JiBEb2N1bWVudExvYWRlcjo6
cmVxdWVzdCgpCiAgICAgcmV0dXJuIG1fcmVxdWVzdDsKIH0KIAotY29uc3QgS1VSTCYgRG9jdW1l
bnRMb2FkZXI6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBj
b25zdAogewogICAgIHJldHVybiByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnRM
b2FkZXI6OnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBL
VVJMJiB1cmwpCit2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVE
b2N1bWVudE5hdmlnYXRpb24oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9vcmlnaW5hbFJlcXVl
c3RDb3B5LnNldFVSTCh1cmwpOwogICAgIG1fcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTQzNiw3
ICs0MzYsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc1Bvc3RPclJlZGlyZWN0QWZ0ZXJQb3N0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdAogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coRG9jdW1lbnRMb2FkZXJUaW1lciopCiB7Ci0g
ICAgS1VSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7CisgICAgVVJMIHVy
bCA9IG1fc3Vic3RpdHV0ZURhdGEucmVzcG9uc2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHko
KSkKICAgICAgICAgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIFJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UodXJsLCBtX3N1YnN0aXR1dGVEYXRhLm1pbWVUeXBlKCksIG1fc3Vic3RpdHV0ZURh
dGEuY29udGVudCgpLT5zaXplKCksIG1fc3Vic3RpdHV0ZURhdGEudGV4dEVuY29kaW5nKCksICIi
KTsKQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmIChpc1N0b3BwaW5nKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gbV9yZXF1ZXN0LnVybCgpOworICAg
IFVSTCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9
IG1fcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICAKICAgICBzd2l0Y2ggKHBvbGljeSkgewpAQCAt
ODI1LDcgKzgyNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGluCiAjaWYgVVNFKENGTkVUV09S
SykgfHwgUExBVEZPUk0oTUFDKQogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxl
bS82MDYwNzgyPgogICAgIGlmIChtX3Jlc3BvbnNlLmlzTnVsbCgpKQotICAgICAgICBtX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwg
U3RyaW5nKCkpOworICAgICAgICBtX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShVUkwoKSwg
InRleHQvaHRtbCIsIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CiAjZW5kaWYKIAogICAgIC8vIFRo
ZXJlIGlzIGEgYnVnIGluIENGTmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNo
ZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBkZWZlcnJlZC4KQEAgLTEwMTIsNyArMTAxMiw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gcmVzb3VyY2UpCiAgICAgbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLT5hZGRS
ZXNvdXJjZShyZXNvdXJjZSk7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4gRG9jdW1lbnRMb2Fk
ZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorUGFzc1JlZlB0cjxBcmNoaXZlPiBEb2N1bWVudExvYWRlcjo6cG9wQXJjaGl2
ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICByZXR1cm4gbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uID8gbV9hcmNoaXZlUmVzb3Vy
Y2VDb2xsZWN0aW9uLT5wb3BTdWJmcmFtZUFyY2hpdmUoZnJhbWVOYW1lLCB1cmwpIDogUGFzc1Jl
ZlB0cjxBcmNoaXZlPigwKTsKIH0KQEAgLTEwMjksNyArMTAyOSw3IEBAIFNoYXJlZEJ1ZmZlciog
RG9jdW1lbnRMb2FkZXI6OnBhcnNlZEFyY2hpdmVEYXRhKCkgY29uc3QKIH0KICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKIAotQXJjaGl2ZVJlc291cmNlKiBE
b2N1bWVudExvYWRlcjo6YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK0FyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVS
TChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSgpIGNvbnN0
CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEsIHIudXJsKCksIHIubWlt
ZVR5cGUoKSwgci50ZXh0RW5jb2RpbmdOYW1lKCksIGZyYW1lKCktPnRyZWUoKS51bmlxdWVOYW1l
KCkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1
YnJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1Bhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwODMsNyAr
MTA4Myw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mIHN1YnJlCiAgICAgY29uc3QgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxSZXNvdXJj
ZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJj
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlID0g
dGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT52YWx1ZS0+dXJsKCkp
KTsKKyAgICAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UgPSB0aGlzLT5z
dWJyZXNvdXJjZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+dmFsdWUtPnVybCgpKSk7CiAgICAg
ICAgIGlmIChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQoc3Vi
cmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CkBAIC0xMjEwLDcgKzEyMTAsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkK
ICAgICBmcmFtZUxvYWRlcigpLT5kaWRDaGFuZ2VUaXRsZSh0aGlzKTsKIH0KIAotS1VSTCBEb2N1
bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CitVUkwgRG9jdW1lbnRMb2FkZXI6OnVy
bEZvckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQg
Zm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0LgogICAgIC8vIFJldHVybnMgbmlsIGZvciBXZWJEYXRh
UHJvdG9jb2wgVVJMcyB0aGF0IGFyZW4ndCBhbHRlcm5hdGVzCkBAIC0xMjI2LDI0ICsxMjI2LDI0
IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBj
b25zdAogICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSB8fCBtX3Jlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwOwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRl
cjo6b3JpZ2luYWxVUkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVudExvYWRlcjo6b3JpZ2lu
YWxVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX29yaWdpbmFsUmVxdWVzdENvcHkudXJsKCk7
CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjpyZXF1ZXN0VVJMKCkgY29uc3QKK2Nv
bnN0IFVSTCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVy
biByZXF1ZXN0KCkudXJsKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjpyZXNw
b25zZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVVSTCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcmVzcG9uc2UudXJsKCk7CiB9CiAKLUtVUkwgRG9jdW1l
bnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKK1VSTCBEb2N1bWVudExvYWRlcjo6ZG9jdW1l
bnRVUkwoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gc3Vic3RpdHV0ZURhdGEoKS5yZXNwb25z
ZVVSTCgpOworICAgIFVSTCB1cmwgPSBzdWJzdGl0dXRlRGF0YSgpLnJlc3BvbnNlVVJMKCk7CiAj
aWYgRU5BQkxFKFdFQl9BUkNISVZFKQogICAgIGlmICh1cmwuaXNFbXB0eSgpICYmIG1fYXJjaGl2
ZSAmJiBtX2FyY2hpdmUtPnR5cGUoKSA9PSBBcmNoaXZlOjpXZWJBcmNoaXZlKQogICAgICAgICB1
cmwgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpLT51cmwoKTsKQEAgLTEyNjAsNyArMTI2MCw3
IEBAIGNvbnN0IFN0cmluZyYgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlTUlNRVR5cGUoKSBjb25z
dAogICAgIHJldHVybiBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiB9CiAKLWNvbnN0IEtVUkwmIERv
Y3VtZW50TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50
TG9hZGVyOjp1bnJlYWNoYWJsZVVSTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3Vic3RpdHV0
ZURhdGEuZmFpbGluZ1VSTCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAppbmRleCA0YmQyYzdhLi5lMjdlZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaApAQCAtMTA5LDE1ICsxMDksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBt
X3N1YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNhbWUg
YXMgcmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVtLgotICAgICAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICAgICAgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVV
UkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsKKyAgICAgICAgY29u
c3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IEtVUkwmIG9y
aWdpbmFsVVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwoKSBjb25z
dDsKLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKKyAgICAgICAgY29u
c3QgVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0OworICAgICAgICBjb25zdCBVUkwmIHJlcXVlc3RV
UkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0OwogICAg
ICAgICBjb25zdCBTdHJpbmcmIHJlc3BvbnNlTUlNRVR5cGUoKSBjb25zdDsKIAotICAgICAgICB2
b2lkIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBLVVJM
Jik7CisgICAgICAgIHZvaWQgcmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uKGNvbnN0IFVSTCYpOwogICAgICAgICBib29sIGlzU3RvcHBpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RvcHBpbmc7IH0KICAgICAgICAgdm9pZCBzdG9wTG9hZGluZygpOwogICAgICAgICB2
b2lkIHNldENvbW1pdHRlZChib29sIGNvbW1pdHRlZCkgeyBtX2NvbW1pdHRlZCA9IGNvbW1pdHRl
ZDsgfQpAQCAtMTQyLDIwICsxNDIsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPik7CiAgICAgICAgIHZvaWQgYWRkQWxs
QXJjaGl2ZVJlc291cmNlcyhBcmNoaXZlKik7CiAgICAgICAgIHZvaWQgYWRkQXJjaGl2ZVJlc291
cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7Ci0gICAgICAgIFBhc3NSZWZQdHI8QXJj
aGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZyYW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBLVVJMJik7CisgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wQXJjaGl2ZUZvclN1YmZy
YW1lKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAgICAgICAgU2hhcmVk
QnVmZmVyKiBwYXJzZWRBcmNoaXZlRGF0YSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgc2NoZWR1
bGVBcmNoaXZlTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
I2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogCiAgICAgICAg
IC8vIFJldHVybiB0aGUgQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMIG9ubHkgd2hlbiBsb2Fk
aW5nIGFuIEFyY2hpdmUKLSAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNoaXZlUmVzb3VyY2VG
b3JVUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hp
dmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgICAgICBQYXNzUmVmUHRy
PEFyY2hpdmVSZXNvdXJjZT4gbWFpblJlc291cmNlKCkgY29uc3Q7CiAKICAgICAgICAgLy8gUmV0
dXJuIGFuIEFyY2hpdmVSZXNvdXJjZSBmb3IgdGhlIFVSTCwgZWl0aGVyIGNyZWF0aW5nIGZyb20g
bGl2ZSBkYXRhIG9yCiAgICAgICAgIC8vIHB1bGxpbmcgZnJvbSB0aGUgQXJjaGl2ZVJlc291cmNl
Q29sbGVjdGlvbgotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gc3VicmVzb3Vy
Y2UoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gc3VicmVzb3VyY2UoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgICAgIHZvaWQgZ2V0U3VicmVz
b3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYpIGNvbnN0OwogCiAK
QEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3Rv
cFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CiAKLSAgICAgICAgS1VSTCB1
cmxGb3JIaXN0b3J5KCkgY29uc3Q7CisgICAgICAgIFVSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7
CiAgICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwogCiAg
ICAgICAgIC8vIFRoZXNlIGFjY2Vzc29ycyBhY2NvbW1vZGF0ZSBXZWJDb3JlJ3Mgc29tZXdoYXQg
Zmlja2xlIGN1c3RvbSBvZiBjcmVhdGluZyBoaXN0b3J5CkBAIC0yNTcsNyArMjU3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAKICAgICAgICAgLy8gVGhlIFVSTCBvZiB0
aGUgZG9jdW1lbnQgcmVzdWx0aW5nIGZyb20gdGhpcyBEb2N1bWVudExvYWRlci4KLSAgICAgICAg
S1VSTCBkb2N1bWVudFVSTCgpIGNvbnN0OworICAgICAgICBVUkwgZG9jdW1lbnRVUkwoKSBjb25z
dDsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBz
ZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAzZmU1NmYzLi5iMGQ4
NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QKIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaykKIHsKICAg
ICAvLyBBbnkgY3JlZGVudGlhbCBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY3Jv
c3Mtc2l0ZSByZXF1ZXN0cy4KLSAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51
cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIG1f
b3B0aW9ucy5zZWN1cml0eUNoZWNrID0gc2VjdXJpdHlDaGVjazsKICAgICBBU1NFUlQobV9zYW1l
T3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnVzZXIoKS5pc0VtcHR5KCkpOwogICAgIEFTU0VS
VChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IHJlcXVlc3RVUkwucGFzcygpLmlzRW1wdHkoKSk7CkBA
IC00MjksNyArNDI5LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBkaWRGaW5pc2hM
b2FkaW5nKGlkZW50aWZpZXIsIDAuMCk7CiB9CiAKLWJvb2wgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjppc0FsbG93ZWRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwpCitib29sIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
aWYgKG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxsb3dDcm9zc09yaWdp
blJlcXVlc3RzKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCAwY2U5OTdhLi5iZjMxYmEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
CkBAIC00NSw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FjaGVk
UmF3UmVzb3VyY2U7CiAgICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBj
bGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQ7CkBAIC05NSw3ICs5NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwcmVmbGlnaHRGYWlsdXJlKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZXJyb3JEZXNjcmlwdGlvbik7CiAKICAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5KTsKLSAgICAgICAgYm9vbCBpc0FsbG93
ZWRSZWRpcmVjdChjb25zdCBLVVJMJik7CisgICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3Qo
Y29uc3QgVVJMJik7CiAKICAgICAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IDFh
YzE0NzQuLjNlNjE0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cApAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6Y2xlYXIoKQogCiB2
b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbigpCiB7Ci0gICAgYmVnaW4oS1VSTCgpKTsKKyAgICBi
ZWdpbihVUkwoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpj
cmVhdGVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1
bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFt
X2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS0+aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRBbHdheXNVc2VQ
bHVnaW5Eb2N1bWVudChtX21pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuIFBsdWdpbkRvY3VtZW50
OjpjcmVhdGUobV9mcmFtZSwgdXJsKTsKQEAgLTExMiwxMiArMTEyLDEyIEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IERvY3VtZW50V3JpdGVyOjpjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwp
CiAgICAgcmV0dXJuIERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChtX21pbWVUeXBl
LCBtX2ZyYW1lLCB1cmwsIG1fZnJhbWUtPmluVmlld1NvdXJjZU1vZGUoKSk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IEtVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNw
YXRjaCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCit2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdp
bihjb25zdCBVUkwmIHVybFJlZmVyZW5jZSwgYm9vbCBkaXNwYXRjaCwgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQpCiB7CiAgICAgLy8gV2UgZ3JhYiBhIGxvY2FsIGNvcHkgb2YgdGhlIFVSTCBiZWNh
dXNlIGl0J3MgZWFzeSBmb3IgY2FsbGVycyB0byBzdXBwbHkKICAgICAvLyBhIFVSTCB0aGF0IHdp
bGwgYmUgZGVhbGxvY2F0ZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhpcyBmdW5jdGlvbi4K
ICAgICAvLyBGb3IgZXhhbXBsZSwgc2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYzNjA+LgotICAgIEtVUkwgdXJsID0gdXJsUmVmZXJlbmNlOworICAgIFVSTCB1
cmwgPSB1cmxSZWZlcmVuY2U7CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgZG9jdW1lbnQgYmVmb3Jl
IGNsZWFyaW5nIHRoZSBmcmFtZSwgYmVjYXVzZSBpdCBtYXkgbmVlZCB0bwogICAgIC8vIGluaGVy
aXQgYW4gYWxpYXNlZCBzZWN1cml0eSBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuaAppbmRleCAzZDkwYjlkLi44MWQwZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBEb2N1bWVudFdyaXRl
cl9oCiAjZGVmaW5lIERvY3VtZW50V3JpdGVyX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBsYWNlRG9j
dW1lbnQoY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwogCiAgICAgdm9p
ZCBiZWdpbigpOwotICAgIHZvaWQgYmVnaW4oY29uc3QgS1VSTCYsIGJvb2wgZGlzcGF0Y2hXaW5k
b3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwor
ICAgIHZvaWQgYmVnaW4oY29uc3QgVVJMJiwgYm9vbCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWls
YWJsZSA9IHRydWUsIERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gMCk7CiAgICAgdm9pZCBhZGRE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKICAgICB2b2lkIGVuZCgpOwog
ICAgIApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREb2N1bWVudFdhc0xv
YWRlZEFzUGFydE9mTmF2aWdhdGlvbigpOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8RG9j
dW1lbnQ+IGNyZWF0ZURvY3VtZW50KGNvbnN0IEtVUkwmKTsKKyAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBVUkwmKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKICAg
ICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5k
ZXggMGY4OGVlYi4uZWY2MDJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKQEAgLTEzNSwxMiArMTM1LDEyIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlCiAgICAgcmV0
dXJuIERvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwogfQog
Ci1QYXNzUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpCitQYXNzUmVmUHRyPEZyYW1lPiBFbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkKIHsKICAgICBy
ZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBL
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYsIGJvb2wpCitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmLCBib29sKQogewogICAgIHJldHVybiAwOwogfQpAQCAtMTQ5LDEzICsxNDksMTMg
QEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpyZWNyZWF0ZVBsdWdpbihXaWRnZXQqKQog
ewogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25z
dCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQ
YXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICByZXR1
cm4gMDsKIH0KIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1JlZlB0
cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQ
bHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYp
CitQYXNzUmVmUHRyPFdpZGdldD4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmKQogewogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IDkxOWNhODQuLjMzYjJiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwm
LCBkb3VibGUsIGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSB7IH0KQEAgLTMx
MiwxNCArMzEyLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkQ29tcGxl
dGVkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIHsgfQotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgVVJMJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0
IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSB7IH0KIAot
ICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgeyByZXR1cm4gIiI7IH0K
KyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgeyByZXR1cm4gIiI7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRG
cmFtZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2Fj
aGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KQEAgLTMzOCwxOSArMzM4LDE5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSopIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtV
UkwmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29s
KSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
LCBib29sLCBpbnQsIGludCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdl
dD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IElu
dFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYs
IEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYpIE9WRVJSSURFOwogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlf
Rk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxh
eWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBL
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQq
LCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRpYVBs
YXllclByb3h5UGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG93TWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBPYmpl
Y3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQorICAgIHZpcnR1YWwgT2Jq
ZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiwgYm9vbCkgeyByZXR1cm4gT2JqZWN0Q29udGVudFR5cGUoKTsgfQogICAgIHZpcnR1YWwgU3Ry
aW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqKSB7IH0KQEAgLTUxNyw3
ICs1MTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb3B5
SW1hZ2VUb0NsaXBib2FyZChjb25zdCBIaXRUZXN0UmVzdWx0JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcAppbmRleCA5YmY0NDJhLi4zYzQxZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGludDY0X3Qg
Z2VuZXJhdGVGb3JtRGF0YUlkZW50aWZpZXIoKQogICAgIHJldHVybiArK25leHRJZGVudGlmaWVy
OwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChLVVJMJiB1
cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nVHlwZSkKK3N0
YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVSTCYgdXJsLCBjb25zdCBG
b3JtRGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCiB7CiAgICAgU3RyaW5n
IGJvZHkgPSBkYXRhLmZsYXR0ZW5Ub1N0cmluZygpOwogCkBAIC04NCw3ICs4NCw3IEBAIHN0YXRp
YyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKEtVUkwmIHVybCwgY29uc3QgRm9y
bURhdGEmIGRhdGEsIGNvbnN0CiAKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBh
cnNlQWN0aW9uKGNvbnN0IFN0cmluZyYgYWN0aW9uKQogewotICAgIC8vIEZJWE1FOiBDYW4gd2Ug
cGFyc2UgaW50byBhIEtVUkw/CisgICAgLy8gRklYTUU6IENhbiB3ZSBwYXJzZSBpbnRvIGEgVVJM
PwogICAgIG1fYWN0aW9uID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGFjdGlv
bik7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1
dGVzOjpjb3B5RnJvbShjb25zdCBBdHRyaWJ1dGVzJiBvdGhlcikKICAgICBtX2FjY2VwdENoYXJz
ZXQgPSBvdGhlci5tX2FjY2VwdENoYXJzZXQ7CiB9CiAKLWlubGluZSBGb3JtU3VibWlzc2lvbjo6
Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3QgS1VSTCYgYWN0aW9uLCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJv
dW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK2lubGlu
ZSBGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3QgVVJM
JiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRhdGEs
IGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogICAgIDogbV9tZXRob2QobWV0aG9kKQogICAgICwgbV9hY3Rpb24oYWN0aW9u
KQogICAgICwgbV90YXJnZXQodGFyZ2V0KQpAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8
Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBm
b3JtLCBjb25zdCBBCiAgICAgfQogICAgIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGZvcm0t
PmRvY3VtZW50KCk7Ci0gICAgS1VSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChj
b3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50LnVybCgpLnN0cmlu
ZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CisgICAgVVJMIGFjdGlvblVSTCA9IGRv
Y3VtZW50LmNvbXBsZXRlVVJMKGNvcGllZEF0dHJpYnV0ZXMuYWN0aW9uKCkuaXNFbXB0eSgpID8g
ZG9jdW1lbnQudXJsKCkuc3RyaW5nKCkgOiBjb3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpKTsKICAg
ICBib29sIGlzTWFpbHRvRm9ybSA9IGFjdGlvblVSTC5wcm90b2NvbElzKCJtYWlsdG8iKTsKICAg
ICBib29sIGlzTXVsdGlQYXJ0Rm9ybSA9IGZhbHNlOwogICAgIFN0cmluZyBlbmNvZGluZ1R5cGUg
PSBjb3BpZWRBdHRyaWJ1dGVzLmVuY29kaW5nVHlwZSgpOwpAQCAtMjIyLDEyICsyMjIsMTIgQEAg
UGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9y
bUVsZW1lbnQqIGZvcm0sIGNvbnN0IEEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZvcm1TdWJt
aXNzaW9uKGNvcGllZEF0dHJpYnV0ZXMubWV0aG9kKCksIGFjdGlvblVSTCwgdGFyZ2V0T3JCYXNl
VGFyZ2V0LCBlbmNvZGluZ1R5cGUsIGZvcm1TdGF0ZS5yZWxlYXNlKCksIGZvcm1EYXRhLnJlbGVh
c2UoKSwgYm91bmRhcnksIGxvY2tIaXN0b3J5LCBldmVudCkpOwogfQogCi1LVVJMIEZvcm1TdWJt
aXNzaW9uOjpyZXF1ZXN0VVJMKCkgY29uc3QKK1VSTCBGb3JtU3VibWlzc2lvbjo6cmVxdWVzdFVS
TCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWV0aG9kID09IEZvcm1TdWJtaXNzaW9uOjpQb3N0TWV0
aG9kKQogICAgICAgICByZXR1cm4gbV9hY3Rpb247CiAKLSAgICBLVVJMIHJlcXVlc3RVUkwobV9h
Y3Rpb24pOworICAgIFVSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKICAgICByZXF1ZXN0VVJMLnNl
dFF1ZXJ5KG1fZm9ybURhdGEtPmZsYXR0ZW5Ub1N0cmluZygpKTsgICAgCiAgICAgcmV0dXJuIHJl
cXVlc3RVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmluZGV4IDRk
MzU5M2IuLmMyZjgzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Vi
bWlzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCkBA
IC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gKIAogI2luY2x1ZGUgIkZv
cm1TdGF0ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC05MiwxMCArOTIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBw
b3B1bGF0ZUZyYW1lTG9hZFJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdCYpOwogICAgIAotICAgIEtV
UkwgcmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFVSTCByZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAg
ICBNZXRob2QgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KLSAgICBjb25zdCBL
VVJMJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQorICAgIGNvbnN0IFVSTCYg
YWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHRh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CiAgICAgdm9pZCBjbGVhclRhcmdldCgp
IHsgbV90YXJnZXQgPSBTdHJpbmcoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBlOyB9CkBAIC0xMTEsMTEgKzExMSwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW4pIHsgbV9vcmln
aW4gPSBvcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNv
bnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNv
bnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZlbnQ+
KTsKKyAgICBGb3JtU3VibWlzc2lvbihNZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25zdCBT
dHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9v
bCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAgLy8gRklYTUU6IEhvbGQg
YW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlcyBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgbWVtYmVycy4K
ICAgICBNZXRob2QgbV9tZXRob2Q7Ci0gICAgS1VSTCBtX2FjdGlvbjsKKyAgICBVUkwgbV9hY3Rp
b247CiAgICAgU3RyaW5nIG1fdGFyZ2V0OwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwogICAg
IFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggNGI3OGU0YS4uMTkxNGNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgRnJhbWVMb2FkZXI6On5GcmFtZUxvYWRl
cigpCiB2b2lkIEZyYW1lTG9hZGVyOjppbml0KCkKIHsKICAgICAvLyBUaGlzIHNvbWV3aGF0IG9k
ZCBzZXQgb2Ygc3RlcHMgZ2l2ZXMgdGhlIGZyYW1lIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQu
Ci0gICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoUmVzb3VyY2VSZXF1ZXN0KEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSks
IFN1YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKKyAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlciht
X2NsaWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVS
TFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CiAgICAg
c2V0UHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgp
KTsKICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNv
dXJjZSgpOwogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwpAQCAtMjg3
LDEzICsyODcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRl
ZmVycykKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJv
b2wgcmVmcmVzaCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCByZWZy
ZXNoKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qoc2VjdXJpdHlPcmlnaW4s
IFJlc291cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdD
YWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgIl9zZWxmIiksCiAgICAgICAgIDAs
IGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNlbmRSZWZlcnJlciwgUmVw
bGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6dXJs
U2VsZWN0ZWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgUGFz
c1JlZlB0cjxFdmVudD4gdHJpZ2dlcmluZ0V2ZW50LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIp
Cit2b2lkIEZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgYm9v
bCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJy
ZXIgc2hvdWxkU2VuZFJlZmVycmVyKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVl
c3QobV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3Qo
dXJsKSwgcGFzc2VkVGFyZ2V0KSwKICAgICAgICAgdHJpZ2dlcmluZ0V2ZW50LCBsb2NrSGlzdG9y
eSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgc2hvdWxkU2VuZFJlZmVycmVyLCBEb05vdFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJtaXNzaW9uKQog
ICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdWJtaXNzaW9uLT5hY3Rpb24o
KSkpIHsKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd0Zvcm1BY3Rpb24oS1VSTChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpKQorICAg
ICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93Rm9ybUFjdGlvbihVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsK
ICAgICAgICAgbV9mcmFtZS5zY3JpcHQoKS5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHN1Ym1pc3Np
b24tPmFjdGlvbigpLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CkBAIC02
NDgsNyArNjQ4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAg
IG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoZGVsYXksIHVy
bCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VS
TCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJlcihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCk7CiB9CkBAIC04NTAsNyArODUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tD
YWxsSW1wbGljaXRDbG9zZSgpCiAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5pbXBsaWNpdENsb3Nl
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJhbWUpCit2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxkRnJhbWUpCiB7CiAgICAgQVNTRVJUKGNoaWxk
RnJhbWUpOwogCkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hp
dmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogICAgIGlmICghbWFpblJlc291cmNlKQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCksIG1haW5S
ZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIEtVUkwoKSk7CisgICAgU3Vic3RpdHV0ZURhdGEgc3Vi
c3RpdHV0ZURhdGEobWFpblJlc291cmNlLT5kYXRhKCksIG1haW5SZXNvdXJjZS0+bWltZVR5cGUo
KSwgbWFpblJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSwgVVJMKCkpOwogICAgIAogICAgIFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KG1haW5SZXNvdXJjZS0+dXJsKCkpOwogI2lmIFBMQVRGT1JNKE1B
QykKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkQXJjaGl2ZShQYXNz
UmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyOjpkZWZh
dWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRU
eXBlIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1h
Z2VzKQogewogICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAKQEAgLTk1Myw3ICs5
NTMsNyBAQCBTdHJpbmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nT3JpZ2luKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpOwog
fQogCi1ib29sIEZyYW1lTG9hZGVyOjpjaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpjaGVja0lmRm9ybUFjdGlvbkFs
bG93ZWRCeUNTUChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJtaXR0ZWRG
b3JtVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDAwLDcgKzEwMDAs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKIAogdm9pZCBG
cmFtZUxvYWRlcjo6cmVzZXRNdWx0aXBsZUZvcm1TdWJtaXNzaW9uUHJvdGVjdGlvbigpCiB7Ci0g
ICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9
IFVSTCgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVGaXJzdFBhcnR5Rm9yQ29va2ll
cygpCkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVGaXJzdFBh
cnR5Rm9yQ29va2llcygpCiAgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVzKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbV9m
cmFtZSkpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGaXJzdFBhcnR5Rm9yQ29va2ll
cyh1cmwpOwpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRGaXJz
dFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCiAKIC8vIFRoaXMgZG9lcyB0aGUgc2Ft
ZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMsIGV4Y2VwdCBpdCByZWxpZXMgb24g
dGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhl
IFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLgot
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtVUkwmIHVybCwgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LCBib29sIGlzTmV3TmF2
aWdhdGlvbikKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwm
IHVybCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LCBib29s
IGlzTmV3TmF2aWdhdGlvbikKIHsKICAgICAvLyBJZiB3ZSBoYXZlIGEgc3RhdGUgb2JqZWN0LCB3
ZSBjYW5ub3QgYWxzbyBiZSBhIG5ldyBuYXZpZ2F0aW9uLgogICAgIEFTU0VSVCghc3RhdGVPYmpl
Y3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAogICAgIC8vIFVwZGF0
ZSB0aGUgZGF0YSBzb3VyY2UncyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwgdG8gZmFrZSB0aGUg
VVJMIGNoYW5nZQotICAgIEtVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsK
KyAgICBVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsKICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnNldFVSTCh1cmwpOwogICAgIHNldE91dGdvaW5nUmVmZXJyZXIodXJsKTsK
ICAgICBkb2N1bWVudExvYWRlcigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5h
dmlnYXRpb24odXJsKTsKQEAgLTExNTgsNyArMTE1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2Nr
SGlzCiAgICAgLy8gUHJvdGVjdCBmcmFtZSBmcm9tIGdldHRpbmcgYmxvd24gYXdheSBpbnNpZGUg
ZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW4gbG9hZFdpdGhEb2N1bWVudExvYWRlci4KICAgICBS
ZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKLSAgICBLVVJMIHVybCA9IHJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCk7CiAKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBpZiAo
IXJlcXVlc3QucmVxdWVzdGVyKCktPmNhbkRpc3BsYXkodXJsKSkgewpAQCAtMTE5OSw3ICsxMTk5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSBu
ZXdMb2FkVHlwZSwKK3ZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgVVJMJiBuZXdVUkws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIGxv
Y2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLAogICAgIFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQogewogICAgIGlm
IChtX2luU3RvcEFsbExvYWRlcnMpCkBAIC0xMjcyLDE0ICsxMjcyLDE0IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoY29uc3QgS1VSTCYgbmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBjb25zdCBTdHJpCiAgICAgfQogfQogCi1TdWJzdGl0dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVm
YXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1N1YnN0aXR1dGVEYXRh
IEZyYW1lTG9hZGVyOjpkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgaWYgKCFzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQodXJsKSkKICAgICAg
ICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKCk7CiAgICAgU3RyaW5nIHNyY2RvYyA9IG1fZnJhbWUu
b3duZXJFbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3JjZG9jQXR0cik7CiAgICAgQVNTRVJU
KCFzcmNkb2MuaXNOdWxsKCkpOwogICAgIENTdHJpbmcgZW5jb2RlZFNyY2RvYyA9IHNyY2RvYy51
dGY4KCk7Ci0gICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGVu
Y29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwgInRleHQvaHRtbCIs
ICJVVEYtOCIsIEtVUkwoKSk7CisgICAgcmV0dXJuIFN1YnN0aXR1dGVEYXRhKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGVuY29kZWRTcmNkb2MuZGF0YSgpLCBlbmNvZGVkU3JjZG9jLmxlbmd0aCgpKSwg
InRleHQvaHRtbCIsICJVVEYtOCIsIFVSTCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBwYXNzZWRSZXF1ZXN0KQpAQCAtMTM4Niw3ICsxMzg2
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExv
YWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3Jt
U3RhdGUgPSBwcnBGb3JtU3RhdGU7CiAgICAgYm9vbCBpc0Zvcm1TdWJtaXNzaW9uID0gZm9ybVN0
YXRlOwogCi0gICAgY29uc3QgS1VSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCk7
CisgICAgY29uc3QgVVJMJiBuZXdVUkwgPSBsb2FkZXItPnJlcXVlc3QoKS51cmwoKTsKICAgICBj
b25zdCBTdHJpbmcmIGh0dHBNZXRob2QgPSBsb2FkZXItPnJlcXVlc3QoKS5odHRwTWV0aG9kKCk7
CiAKICAgICBpZiAoc2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihpc0Zvcm1TdWJtaXNz
aW9uLCBodHRwTWV0aG9kLCBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKSwgbmV3VVJMKSkgewpA
QCAtMTQzOCw3ICsxNDM4LDcgQEAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBGcmFtZUxvYWRlcjo6
aW5pdGlhbFJlcXVlc3QoKSBjb25zdAogICAgIHJldHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigp
LT5vcmlnaW5hbFJlcXVlc3QoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRp
YUVsZW1lbnRVUkwoS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwoVVJMJiB1cmwpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsK
IApAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwoS1VSTCYgdXJsKQogCiBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWRUb0hh
bmRsZVVucmVhY2hhYmxlVVJMKERvY3VtZW50TG9hZGVyKiBkb2NMb2FkZXIpCiB7Ci0gICAgS1VS
TCB1bnJlYWNoYWJsZVVSTCA9IGRvY0xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBVUkwg
dW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICBpZiAo
dW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDgy
LDcgKzE0ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKTsKLSAgICBLVVJM
IHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAg
ICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OwogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNl
dFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnJlbG9hZFdpdGhPdmVycmlkZUVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2Rpbmcp
CiAgICAgbG9hZFdpdGhEb2N1bWVudExvYWRlcihsb2FkZXIuZ2V0KCksIEZyYW1lTG9hZFR5cGVS
ZWxvYWQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVVUkwo
Y29uc3QgS1VSTCYgb3ZlcnJpZGVVcmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQpCit2b2lkIEZyYW1l
TG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVVUkwoY29uc3QgVVJMJiBvdmVycmlkZVVybCwgYm9v
bCBlbmRUb0VuZFJlbG9hZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChi
b29sIGVuZFRvRW5kUmVsb2FkKQogCiAgICAgLy8gUmVwbGFjZSBlcnJvci1wYWdlIFVSTCB3aXRo
IHRoZSBVUkwgd2Ugd2VyZSB0cnlpbmcgdG8gcmVhY2guCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGlu
aXRpYWxSZXF1ZXN0ID0gbV9kb2N1bWVudExvYWRlci0+cmVxdWVzdCgpOwotICAgIEtVUkwgdW5y
ZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOworICAgIFVS
TCB1bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAg
ICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIGluaXRpYWxSZXF1ZXN0
LnNldFVSTCh1bnJlYWNoYWJsZVVSTCk7CiAKQEAgLTE5MTcsNyArMTkxNyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChib29sIGNhbmNlbFdp
dGhMb2FkSW5Qcm9ncmVzCiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb24gPSBmYWxzZTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBLVVJMJiB1cmws
IGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCkKK3ZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGRv
dWJsZSBzZWNvbmRzLCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkK
IHsKICAgICBtX2NsaWVudC5kaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QodXJsLCBz
ZWNvbmRzLCBmaXJlRGF0ZSk7CiAgICAgCkBAIC0xOTMyLDcgKzE5MzIsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIHNlY29uZHMs
IGRvdWJsZSBmaXJlRAogICAgIG1fcXVpY2tSZWRpcmVjdENvbWluZyA9IChsb2NrQmFja0Zvcndh
cmRMaXN0IHx8IGhpc3RvcnkoKS5jdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSkgJiYgbV9k
b2N1bWVudExvYWRlciAmJiAhbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uOwogfQog
Ci1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYgY3VycmVudFVSTCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRSZWxv
YWQoY29uc3QgVVJMJiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcnVsZTogIkRvbid0IHJlbG9hZCBp
ZiBuYXZpZ2F0aW5nIGJ5IGZyYWdtZW50IHdpdGhpbgogICAgIC8vIHRoZSBzYW1lIFVSTCwgYnV0
IGRvIHJlbG9hZCBpZiBnb2luZyB0byBhIG5ldyBVUkwgb3IgdG8gdGhlIHNhbWUgVVJMIHdpdGgg
bm8KQEAgLTE5ODIsNyArMTk4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJh
bWVCYXNlJiBjYWNoZWRGcmFtZSkKICAgICAvLyBEb24ndCByZS1lbWl0IHRoZSBsb2FkIGV2ZW50
LgogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogCi0gICAgS1VSTCB1cmwgPSBj
YWNoZWRGcmFtZS51cmwoKTsKKyAgICBVUkwgdXJsID0gY2FjaGVkRnJhbWUudXJsKCk7CiAKICAg
ICAvLyBGSVhNRTogSSBzdXNwZWN0IHRoaXMgYmxvY2sgb2YgY29kZSBkb2Vzbid0IGRvIGFueXRo
aW5nLgogICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICF1cmwuaG9zdCgp
LmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmlzRW1wdHkoKSkKQEAgLTIxNDIsNyArMjE0Miw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKICAgICAg
ICAgICAgICAgICBpZiAocGRsID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikKICAgICAg
ICAgICAgICAgICAgICAgY2xlYXJQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgICAgICAgICBl
bHNlIGlmIChhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEtV
UkwgdW5yZWFjaGFibGVVUkwgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVS
TCgpOworICAgICAgICAgICAgICAgICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBhY3RpdmVEb2N1
bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSAmJiB1bnJlYWNoYWJsZVVSTCA9PSBwZGwtPnJlcXVl
c3QoKS51cmwoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFJlc2V0ID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgfQpAQCAtMjIzMCwxMiArMjIzMCwxMiBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAgICBtX3Byb3Zpc2lvbmFs
RG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwogfQogCi1zdGF0aWMg
S1VSTCBvcmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSogcGFnZSkKK3N0YXRp
YyBVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCiB7CiAg
ICAgLy8gRklYTUU6IENhbiB0aGlzIGxvZ2ljIGJlIHJlcGxhY2VkIHdpdGggbV9mcmFtZS5kb2N1
bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29va2llcygpPwogICAgIC8vIEl0IGhhcyB0aGUgc2FtZSBt
ZWFuaW5nIG9mICJwYWdlIGEgdXNlciB0aGlua3MgaXMgdGhlIGN1cnJlbnQgb25lIi4KIAotICAg
IEtVUkwgb3JpZ2luYWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAgIGludCBiYWNrQ291
bnQgPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmJhY2tDb3VudCgpOwogICAgIGZvciAoaW50IGJhY2tJ
bmRleCA9IDA7IGJhY2tJbmRleCA8PSBiYWNrQ291bnQ7IGJhY2tJbmRleCsrKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBdCBvbmUgcG9pbnQgd2UgaGFkIGNvZGUgaGVyZSB0byBjaGVjayBhICJ3YXMg
dXNlciBnZXN0dXJlIiBmbGFnLgpAQCAtMjI0OSwxMiArMjI0OSwxMiBAQCBzdGF0aWMgS1VSTCBv
cmlnaW5hdGluZ1VSTEZyb21CYWNrRm9yd2FyZExpc3QoUGFnZSogcGFnZSkKICAgICAgICAgICAg
IHJldHVybiBvcmlnaW5hbFVSTDsKICAgICB9CiAKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJl
dHVybiBVUkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3du
bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEtVUkwgb3JpZ2lu
YWxVUkw7CisgICAgVVJMIG9yaWdpbmFsVVJMOwogICAgIAogICAgIC8vIElmIHRoZXJlIGlzIG5v
IHJlZmVycmVyLCBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIGluaXRpYXRlZCBkaXJlY3Rs
eSwgc28gY3VycmVudCBkb2N1bWVudCBpcwogICAgIC8vIGNvbXBsZXRlbHkgdW5yZWxhdGVkIHRv
IGl0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUyOTQ2OTE+LgpAQCAtMjI4MCw3ICsyMjgwLDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICAgICAgaG9zdE9ubHlVUkxTdHJpbmcgPSBtYWtl
U3RyaW5nKG9yaWdpbmFsVVJMLnByb3RvY29sKCksICI6Ly8iLCBvcmlnaW5hbFVSTC5ob3N0KCkp
OwogCiAgICAgICAgIC8vIEZJWE1FOiBSZW5hbWUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgYmFjayB0
byBtYWluRG9jdW1lbnRVUkwuIEl0IHdhcyBhIG1pc3Rha2UgdG8gdGhpbmsgdGhhdCBpdCB3YXMg
b25seSB1c2VkIGZvciBjb29raWVzLgotICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JD
b29raWVzKEtVUkwoS1VSTCgpLCBob3N0T25seVVSTFN0cmluZykpOworICAgICAgICByZXF1ZXN0
LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFVSTChVUkwoKSwgaG9zdE9ubHlVUkxTdHJpbmcpKTsK
ICAgICB9CiB9CiAKQEAgLTIzNzIsNyArMjM3Miw3IEBAIGludCBGcmFtZUxvYWRlcjo6bnVtUGVu
ZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29uc3QKICAgICByZXR1cm4gY291
bnQ7CiB9CiAKLVN0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkg
Y29uc3QKK1N0cmluZyBGcmFtZUxvYWRlcjo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKSBjb25z
dAogewogICAgIFN0cmluZyB1c2VyQWdlbnQgPSBtX2NsaWVudC51c2VyQWdlbnQodXJsKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFwcGx5VXNlckFnZW50T3ZlcnJpZGUoJm1fZnJh
bWUsICZ1c2VyQWdlbnQpOwpAQCAtMjUzOSw3ICsyNTM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5SZXF1ZXN0LCBjb25zdCBT
dHJpbmcKICAgICAvLyBidW5jaCBvZiBwYXJhbWV0ZXJzIHRoYXQgd291bGQgY29tZSBpbiBoZXJl
IGFuZCB0aGVuIGJlIGJ1aWx0IGJhY2sgdXAgdG8gYSBSZXNvdXJjZVJlcXVlc3QuICBJbiBjYXNl
CiAgICAgLy8gYW55IGNhbGxlciBkZXBlbmRzIG9uIHRoZSBpbW11dGFiaWxpdHkgb2YgdGhlIG9y
aWdpbmFsIFJlc291cmNlUmVxdWVzdCwgSSdtIHJlYnVpbGRpbmcgYSBSZXNvdXJjZVJlcXVlc3QK
ICAgICAvLyBmcm9tIHNjcmF0Y2ggYXMgaXQgZGlkIGFsbCBhbG9uZy4KLSAgICBjb25zdCBLVVJM
JiB1cmwgPSBpblJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBpblJlcXVlc3Qu
dXJsKCk7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGluUmVxdWVzdC5odHRwQm9k
eSgpOwogICAgIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBpblJlcXVlc3QuaHR0cENvbnRl
bnRUeXBlKCk7CiAgICAgU3RyaW5nIG9yaWdpbiA9IGluUmVxdWVzdC5odHRwT3JpZ2luKCk7CkBA
IC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWNlaXZlZE1haW5SZXNvdXJj
ZUVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiAgICAgaWYgKG1fc3RhdGUgPT0g
RnJhbWVTdGF0ZVByb3Zpc2lvbmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewog
ICAgICAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLnVybCgpKQotICAgICAgICAgICAgbV9zdWJtaXR0
ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJM
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gV2UgbWlnaHQgaGF2ZSBtYWRlIGEgcGFnZSBj
YWNoZSBpdGVtLCBidXQgbm93IHdlJ3JlIGJhaWxpbmcgb3V0IGR1ZSB0byBhbiBlcnJvciBiZWZv
cmUgd2UgZXZlcgogICAgICAgICAvLyB0cmFuc2l0aW9uZWQgdG8gdGhlIG5ldyBwYWdlIChiZWZv
cmUgV2ViRnJhbWVTdGF0ZSA9PSBjb21taXQpLiAgVGhlIGdvYWwgaGVyZSBpcyB0byByZXN0b3Jl
IGFueSBzdGF0ZQpAQCAtMjY3MSw3ICsyNjcxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGlu
dWVGcmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXUK
ICAgICBsb2FkSW5TYW1lRG9jdW1lbnQocmVxdWVzdC51cmwoKSwgMCwgIWlzUmVkaXJlY3QpOwog
fQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJv
b2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBGcmFtZUxvYWRU
eXBlIGxvYWRUeXBlLCBjb25zdCBLVVJMJiB1cmwpCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRQ
ZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3Ry
aW5nJiBodHRwTWV0aG9kLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlLCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGlmIHdlIGFyZSBzdWJtaXR0aW5nIGEgZm9ybSB3
aXRoIG1ldGhvZCBvdGhlciB0aGFuICJHRVQiLCBleHBsaWNpdGx5IHJlbG9hZGluZywKICAgICAv
LyBjdXJyZW50bHkgZGlzcGxheWluZyBhIGZyYW1lc2V0LCBvciBpZiB0aGUgVVJMIGRvZXMgbm90
IGhhdmUgYSBmcmFnbWVudC4KQEAgLTI2ODksNyArMjY4OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6
OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBj
b25zdCBTCiAgICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKIH0K
IAotdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShj
b25zdCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBh
cmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIEZyYW1lVmlldyogdmlldyA9IG1f
ZnJhbWUudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTI3NDUsNyArMjc0NSw3IEBAIGJvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZENsb3NlKCkKICAgICB9CiAKICAgICBpZiAoIXNob3VsZENsb3Nl
KQotICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBLVVJMKCk7CisgICAgICAgIG1fc3VibWl0
dGVkRm9ybVVSTCA9IFVSTCgpOwogCiAgICAgbV9jdXJyZW50TmF2aWdhdGlvbkhhc1Nob3duQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsID0gZmFsc2U7CiAgICAgcmV0dXJuIHNob3VsZENsb3NlOwpA
QCAtMjk3Nyw3ICsyOTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YXBwbHlVc2VyQWdlbnQoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCh1c2Vy
QWdlbnQpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZy
YW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWdu
ZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKK2Jvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uc3QgVVJM
JiB1cmwsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgRmVhdHVyZU9i
c2VydmVyOjpvYnNlcnZlKG1fZnJhbWUuZG9jdW1lbnQoKSwgRmVhdHVyZU9ic2VydmVyOjpYRnJh
bWVPcHRpb25zKTsKIApAQCAtMzAzNSwxNCArMzAzNSwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKQogICAgIGNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3Vy
cmVudChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVh
dFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWhp
c3RvcnkoKS5jdXJyZW50SXRlbSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHVybCA9PSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKS0+dXJsKCkgfHwgdXJsID09IGhpc3Rvcnko
KS5jdXJyZW50SXRlbSgpLT5vcmlnaW5hbFVSTCgpOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9v
bCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIGlmICghZXF1YWxJZ25vcmluZ0Nhc2UodXJsLnN0cmluZygpLCAi
YWJvdXQ6c3JjZG9jIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxMzEsOSArMzEzMSw5
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnREb2N1bWVudEl0ZW0oSGlzdG9yeUl0
ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBLVVJMIGl0ZW1VUkwgPSBpdGVtLT51cmwoKTsKLSAgICBLVVJMIGl0ZW1PcmlnaW5hbFVSTCA9
IGl0ZW0tPm9yaWdpbmFsVVJMKCk7Ci0gICAgS1VSTCBjdXJyZW50VVJMOworICAgIFVSTCBpdGVt
VVJMID0gaXRlbS0+dXJsKCk7CisgICAgVVJMIGl0ZW1PcmlnaW5hbFVSTCA9IGl0ZW0tPm9yaWdp
bmFsVVJMKCk7CisgICAgVVJMIGN1cnJlbnRVUkw7CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgIGN1cnJlbnRVUkwgPSBkb2N1bWVudExvYWRlcigpLT51cmwoKTsKICAgICBSZWZQ
dHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaXRlbS0+Zm9ybURhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKaW5kZXggZjU3ZTVlZi4uODY0ZGI2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXR1
cEZvclJlcGxhY2UoKTsKIAogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgYWxsIGZ1bmN0aW9ucyB3
aGljaCBzdGFydCBsb2Fkcy4gV2UgaGF2ZSB0b28gbWFueS4KLSAgICB2b2lkIGxvYWRVUkxJbnRv
Q2hpbGRGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGcmFtZSopOwor
ICAgIHZvaWQgbG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
cmVmZXJlciwgRnJhbWUqKTsKICAgICB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwg
IC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRV
UkwuCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFNo
b3VsZFNlbmRSZWZlcnJlcik7CiAKQEAgLTExNCwxMyArMTE0LDEzIEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
UmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwog
Ci0gICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCByZWZyZXNoID0gZmFsc2UpOwotICAgIHZvaWQg
dXJsU2VsZWN0ZWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBQYXNzUmVmUHRy
PEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91
bGRTZW5kUmVmZXJyZXIpOworICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5ID0g
dHJ1ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0ID0gdHJ1ZSwgYm9vbCByZWZyZXNoID0gZmFs
c2UpOworICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIFBhc3NSZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIFNob3VsZFNlbmRSZWZlcnJlcik7CiAgICAgdm9pZCBzdWJtaXRGb3JtKFBhc3NS
ZWZQdHI8Rm9ybVN1Ym1pc3Npb24+KTsKIAogICAgIHZvaWQgcmVsb2FkKGJvb2wgZW5kVG9FbmRS
ZWxvYWQgPSBmYWxzZSk7CiAgICAgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25z
dCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwotICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRl
VVJMKGNvbnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2Up
OworICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYgb3ZlcnJpZGVVcmws
IGJvb2wgZW5kVG9FbmRSZWxvYWQgPSBmYWxzZSk7CiAKICAgICB2b2lkIG9wZW4oQ2FjaGVkRnJh
bWVCYXNlJik7CiAgICAgdm9pZCBsb2FkSXRlbShIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGluaXRpYWxSZXF1ZXN0KCkgY29uc3Q7CiAgICAgdm9pZCByZWNlaXZlZE1haW5SZXNvdXJjZUVy
cm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIGJvb2wgd2lsbExvYWRNZWRpYUVsZW1l
bnRVUkwoS1VSTCYpOworICAgIGJvb2wgd2lsbExvYWRNZWRpYUVsZW1lbnRVUkwoVVJMJik7CiAK
ICAgICB2b2lkIGhhbmRsZUZhbGxiYWNrQ29udGVudCgpOwogCkBAIC0xNzUsNyArMTc1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2
b2lkIGRpZENoYW5nZUljb25zKEljb25UeXBlKTsKIAotICAgIGJvb2wgc2hvdWxkVHJlYXRVUkxB
c1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIHNob3VsZFRyZWF0
VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIEZyYW1lTG9hZFR5
cGUgbG9hZFR5cGUoKSBjb25zdDsKIApAQCAtMjA4LDcgKzIwOCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlY2VpdmVkRmlyc3REYXRhKCk7CiAKICAgICB2b2lkIGhhbmRsZWRPbmxvYWRFdmVudHMo
KTsKLSAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBkaXNwYXRjaERpZENsZWFy
V2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsKICAgICB2b2lkIGRpc3BhdGNo
RGlkQ2xlYXJXaW5kb3dPYmplY3RzSW5BbGxXb3JsZHMoKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgZmxhZ3MpIHsg
bV9mb3JjZWRTYW5kYm94RmxhZ3MgfD0gZmxhZ3M7IH0KICAgICBTYW5kYm94RmxhZ3MgZWZmZWN0
aXZlU2FuZGJveEZsYWdzKCkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9uQWxs
b3dlZEJ5Q1NQKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNoZWNrSWZGb3JtQWN0aW9u
QWxsb3dlZEJ5Q1NQKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgRnJhbWUqIG9wZW5lcigpOwog
ICAgIHZvaWQgc2V0T3BlbmVyKEZyYW1lKik7CkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICB2b2lkIHNldE91dGdvaW5nUmVmZXJy
ZXIoY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJlcihjb25zdCBVUkwm
KTsKIAogICAgIHZvaWQgbG9hZERvbmUoKTsKICAgICB2b2lkIGZpbmlzaGVkUGFyc2luZygpOwpA
QCAtMjQ4LDExICsyNDgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudChS
ZXNvdXJjZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlv
bnMoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIGNvbXBsZXRlZCgpOwogICAgIGJvb2wgYWxsQW5jZXN0b3JzQXJl
Q29tcGxldGUoKSBjb25zdDsgLy8gaW5jbHVkaW5nIHRoaXMKLSAgICB2b2lkIGNsaWVudFJlZGly
ZWN0ZWQoY29uc3QgS1VSTCYsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlLCBib29sIGxv
Y2tCYWNrRm9yd2FyZExpc3QpOworICAgIHZvaWQgY2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwm
LCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0
KTsKICAgICB2b2lkIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hlZChib29sIGNhbmNl
bFdpdGhMb2FkSW5Qcm9ncmVzcyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBwdWJsaWMgYmVj
YXVzZSB0aGlzIGFzeW5jaHJvbm91cyBjYWxsYmFjayBmcm9tIHRoZSBGcmFtZUxvYWRlckNsaWVu
dApAQCAtMjY0LDcgKzI2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc3VwcHJlc3NPcGVuZXJJ
bk5ld0ZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWU7IH0K
IAotICAgIHN0YXRpYyBPYmplY3RDb250ZW50VHlwZSBkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1
Z0luc0ZvckltYWdlcyk7CisgICAgc3RhdGljIE9iamVjdENvbnRlbnRUeXBlIGRlZmF1bHRPYmpl
Y3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNo
b3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgYm9vbCBxdWlja1JlZGlyZWN0Q29t
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9xdWlja1JlZGlyZWN0Q29taW5nOyB9CiAKQEAgLTI4NCw3
ICsyODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRQcm9ncmVzc2luZ1N0YXR1c0NoYW5n
ZWQoKTsKIAotICAgIGNvbnN0IEtVUkwmIHByZXZpb3VzVVJMKCkgY29uc3QgeyByZXR1cm4gbV9w
cmV2aW91c1VSTDsgfQorICAgIGNvbnN0IFVSTCYgcHJldmlvdXNVUkwoKSBjb25zdCB7IHJldHVy
biBtX3ByZXZpb3VzVVJMOyB9CiAKICAgICB2b2lkIGZvcmNlUGFnZVRyYW5zaXRpb25JZk5lZWRl
ZCgpOwogCkBAIC0zMDQsNyArMzA0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRQcm92aXNp
b25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpOwogCiAgICAgdm9pZCB1cGRhdGVGaXJzdFBhcnR5Rm9y
Q29va2llcygpOwotICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYp
OworICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJik7CiAgICAgCiAg
ICAgdm9pZCBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZUxv
YWRUeXBlLCBib29sIGlzTWFpblJlc291cmNlKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWQoQ2FjaGVkUGFnZSopOwogICAgIHZv
aWQgZnJhbWVMb2FkQ29tcGxldGVkKCk7CiAKLSAgICBTdWJzdGl0dXRlRGF0YSBkZWZhdWx0U3Vi
c3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpOworICAgIFN1YnN0aXR1dGVEYXRhIGRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB2b2lkIGNh
bGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAg
ICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZvaWQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250
aW51ZSk7CkBAIC0zMjQsOCArMzI0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVlTG9h
ZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICB2b2lkIGNvbnRpbnVlRnJhZ21lbnRTY3Jv
bGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBzaG91
bGRDb250aW51ZSk7CiAKLSAgICBib29sIHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24o
Ym9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIEZyYW1lTG9h
ZFR5cGUsIGNvbnN0IEtVUkwmKTsKLSAgICB2b2lkIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50
Qm91bmRhcnkoY29uc3QgS1VSTCYpOworICAgIGJvb2wgc2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2
aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwg
RnJhbWVMb2FkVHlwZSwgY29uc3QgVVJMJik7CisgICAgdm9pZCBzY3JvbGxUb0ZyYWdtZW50V2l0
aFBhcmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCBjaGVja0xvYWRDb21wbGV0
ZUZvclRoaXNGcmFtZSgpOwogCkBAIC0zNTIsMTkgKzM1MiwxOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBsb2FkUG9zdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgICAgICAgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJlcXVlc3Qs
IGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbgogICAgICAgICBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVu
dD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7Ci0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgICAgICAg
ICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlv
bkFjdGlvbiBvciBkaXNwYXRjaGVzIHRvIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCisgICAg
dm9pZCBsb2FkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCAgICAgICAgICAvLyBDYWxsZWQgYnkgbG9hZEZyYW1lUmVxdWVzdCwg
Y2FsbHMgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uIG9yIGRpc3BhdGNoZXMgdG8gbmF2aWdhdGlv
biBwb2xpY3kgZGVsZWdhdGUKICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlw
ZSwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKICAgICB2b2lk
IHJlbG9hZFdpdGhSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZW5kVG9FbmRS
ZWxvYWQpOwogCi0gICAgYm9vbCBzaG91bGRSZWxvYWQoY29uc3QgS1VSTCYgY3VycmVudFVSTCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpOworICAgIGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0
IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7CiAKICAgICB2b2lk
IHJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyYgaWRl
bnRpZmllciwgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdm9pZCBkZXRhY2hDaGlsZHJlbigpOwog
ICAgIHZvaWQgY2xvc2VBbmRSZW1vdmVDaGlsZChGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkSW5T
YW1lRG9jdW1lbnQoY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOworICAgIHZvaWQgbG9hZEluU2Ft
ZURvY3VtZW50KGNvbnN0IFVSTCYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
dGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmlnYXRpb24pOwogCiAgICAgdm9pZCBwcmVwYXJlRm9y
TG9hZFN0YXJ0KCk7CiAgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CkBAIC0zNzYs
NyArMzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlQ2hlY2tMb2FkQ29tcGxldGUo
KTsKICAgICB2b2lkIHN0YXJ0Q2hlY2tDb21wbGV0ZVRpbWVyKCk7CiAKLSAgICBib29sIHNob3Vs
ZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIHNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdm9p
ZCBkaXNwYXRjaEdsb2JhbE9iamVjdEF2YWlsYWJsZUluQWxsV29ybGRzKCk7CiAKQEAgLTQyNyw3
ICs0MjcsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX25lZWRzQ2xlYXI7CiAKLSAgICBLVVJM
IG1fc3VibWl0dGVkRm9ybVVSTDsKKyAgICBVUkwgbV9zdWJtaXR0ZWRGb3JtVVJMOwogCiAgICAg
VGltZXI8RnJhbWVMb2FkZXI+IG1fY2hlY2tUaW1lcjsKICAgICBib29sIG1fc2hvdWxkQ2FsbENo
ZWNrQ29tcGxldGVkOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gbV9uZXR3b3JraW5nQ29udGV4dDsKIAotICAgIEtVUkwg
bV9wcmV2aW91c1VSTDsKKyAgICBVUkwgbV9wcmV2aW91c1VSTDsKICAgICBSZWZQdHI8SGlzdG9y
eUl0ZW0+IG1fcmVxdWVzdGVkSGlzdG9yeUl0ZW07CiAgICAgT3duUHRyPFBhZ2VBY3Rpdml0eUFz
c2VydGlvblRva2VuPiBtX2FjdGl2aXR5QXNzZXJ0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYWY3NmJiNC4uZGM3ZDllOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc2LDcgKzc2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAg
ICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBj
bGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKICAgICBjbGFz
cyBQYWdlOwpAQCAtMTQwLDcgKzE0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBm
aXJlRGF0ZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRl
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFn
ZSgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2UoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0
ZVdpdGhpblBhZ2UoKSA9IDA7CkBAIC0yMTQsOCArMjE0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAvLyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdpbiBoYXMgcnVuIGFjdGl2
ZSBjb250ZW50IChzdWNoIGFzIGEKICAgICAgICAgLy8gc2NyaXB0KSBmcm9tIGFuIGluc2VjdXJl
IHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4KICAgICAgICAgLy8g
c3ByZWFkIHRvIG90aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRp
cmVQYWdlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CkBAIC0yNDIs
OSArMjQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0
aW9uJiwgY29uc3QgVVJMJikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29u
c3QgVVJMJikgPSAwOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9y
bURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAw
OwpAQCAtMjU4LDIxICsyNTgsMjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKIAotICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgPSAwOworICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQg
bWFyZ2luSGVpZ2h0KSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlY3Jl
YXRlUGx1Z2luKFdpZGdldCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0
YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwg
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiBiYXNlVVJM
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyopIGNvbnN0IHsgfQogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0
PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFF
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhU
TUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgaGlkZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgPSAwOwogI2VuZGlm
CiAKLSAgICAgICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKSA9IDA7CisgICAgICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2Jq
ZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBz
aG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3QgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKSA9IDA7
CkBAIC0yOTQsMTYgKzI5NCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50VVJMKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkTWVkaWFFbGVtZW50
VVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCBib29s
IGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSB7IHJldHVybiBlbmFibGVkUGVy
U2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShi
b29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGJv
b2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVyU2V0
dGluZ3M7IH0KICAgICAgICAgdmlydHVhbCBib29sIGFsbG93UGx1Z2lucyhib29sIGVuYWJsZWRQ
ZXJTZXR0aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBLVVJMJikg
eyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhbGxv
d0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIFNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dSdW5uaW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5h
YmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBl
bmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFsbG93SW1hZ2UoYm9v
bCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0
aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYp
IHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgYWxs
b3dSdW5uaW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQogCiAg
ICAgICAgIC8vIFRoaXMgY2FsbGJhY2sgbm90aWZpZXMgdGhlIGNsaWVudCB0aGF0IHRoZSBmcmFt
ZSB3YXMgYWJvdXQgdG8gcnVuCiAgICAgICAgIC8vIEphdmFTY3JpcHQgYnV0IGRpZCBub3QgYmVj
YXVzZSBhbGxvd1NjcmlwdCByZXR1cm5lZCBmYWxzZS4gV2UKQEAgLTMxNSwxMSArMzE1LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1
Z2lucygpIHsgfQogCiAgICAgICAgIC8vIENsaWVudHMgdGhhdCBnZW5lcmFsbHkgZGlzYWxsb3cg
dW5pdmVyc2FsIGFjY2VzcyBjYW4gbWFrZSBleGNlcHRpb25zIGZvciBwYXJ0aWN1bGFyIFVSTHMu
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2Nh
bFVSTChjb25zdCBLVVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFVSTCYpIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgPSAwOwogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNv
bnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIGVtYmVkZGVyIGludGVyY2VwdGVkIHRoZSBwb3N0TWVzc2FnZSBjYWxsCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChTZWN1cml0
eU9yaWdpbiogLyp0YXJnZXQqLywgTWVzc2FnZUV2ZW50KikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGY5
OGMzOGMuLjcxNTYzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiBwYWdlLCBjb25zdCBLVVJMJiB1cmwp
CitzdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRlZExpbmsoUGFnZSogcGFnZSwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnZpc2l0ZWRMaW5rU3RyYXRlZ3ko
KS0+YWRkVmlzaXRlZExpbmsocGFnZSwgdmlzaXRlZExpbmtIYXNoKHVybC5zdHJpbmcoKSkpOwog
fQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclN0
YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAgIEZyYW1lTG9hZGVy
JiBmcmFtZUxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKICAgICBib29sIG5lZWRQcml2YWN5
ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBjb25z
dCBLVVJMJiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9y
SGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVyLmRvY3Vt
ZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghZnJhbWVMb2FkZXIuZG9j
dW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAgIGlmICghaGlzdG9y
eVVSTC5pc0VtcHR5KCkpIHsKQEAgLTM4NCw3ICszODQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogI2VuZGlm
CiAgICAgCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVS
TCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9y
SGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
aXNDbGllbnRSZWRpcmVjdCgpKSB7CiAgICAgICAgIGlmICghbV9jdXJyZW50SXRlbSAmJiAhbV9m
cmFtZS50cmVlKCkucGFyZW50KCkpIHsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgfQogCiAgICAgYm9vbCBu
ZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOworICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1f
ZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAg
aWYgKCFoaXN0b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKICAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKQEAgLTYwMywxMCArNjAzLDEwIEBAIHZvaWQg
SGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwogCi0gICAgS1VSTCB1bnJl
YWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOworICAgIFVSTCB1
bnJlYWNoYWJsZVVSTCA9IGRvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogCi0gICAg
S1VSTCB1cmw7Ci0gICAgS1VSTCBvcmlnaW5hbFVSTDsKKyAgICBVUkwgdXJsOworICAgIFVSTCBv
cmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHVybCA9IHVucmVhY2hhYmxlVVJMOwpAQCAtODUyLDcgKzg1Miw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
c3RhdGVPYmplY3QsCiAgICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZFZpc2l0ZWRMaW5rKHBhZ2UsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNpdGVkTGluayhwYWdl
LCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKICAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKIAogfQpAQCAtODczLDcgKzg3Myw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCht
X2ZyYW1lLnBhZ2UoKSk7Ci0gICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5wYWdlKCksIEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKKyAgICBhZGRWaXNpdGVkTGluayhtX2ZyYW1l
LnBhZ2UoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CiAgICAgbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCBiOWJjY2Q5Li4wZDkzZDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC04NSw4ICs4NSw3IEBAIHZvaWQgTGlua0xvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIG1fY2FjaGVkTGlu
a1Jlc291cmNlID0gMDsKIH0KIAotYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5r
UmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYgaHJlZiwg
RG9jdW1lbnQqIGRvY3VtZW50KQorYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBMaW5r
UmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBzaXplcywgY29uc3QgVVJMJiBocmVmLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAg
Ly8gV2UnbGwgcmVjb3JkIHRoaXMgVVJMIHBlciBkb2N1bWVudCwgZXZlbiBpZiB3ZSBsYXRlciBv
bmx5IHVzZSBpdCBpbiB0b3AgbGV2ZWwgZnJhbWVzCiAgICAgaWYgKHJlbEF0dHJpYnV0ZS5tX2lj
b25UeXBlICE9IEludmFsaWRJY29uICYmIGhyZWYuaXNWYWxpZCgpICYmICFocmVmLmlzRW1wdHko
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKaW5kZXggZTI1MTM1Ny4uMjc3ZWM0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oCkBAIC00Miw3ICs0Miw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsK
IHN0cnVjdCBMaW5rUmVsQXR0cmlidXRlOwogCiAvLyBUaGUgTGlua0xvYWRlciBjYW4gbG9hZCBs
aW5rIHJlbCB0eXBlcyBpY29uLCBkbnMtcHJlZmV0Y2gsIHN1YnJlc291cmNlIGFuZCBwcmVmZXRj
aC4KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgdm9pZCByZWxlYXNlZCgpOwotICAgIGJvb2wg
bG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJpYnV0ZSYsIGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYsIERvY3VtZW50Kik7CisgICAgYm9vbCBsb2Fk
TGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBVUkwmLCBEb2N1bWVudCopOwogCiBwcml2YXRlOgogICAgIHZv
aWQgbGlua0xvYWRUaW1lckZpcmVkKFRpbWVyPExpbmtMb2FkZXI+Kik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggY2UwYThkYy4uNTZhMjQ2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApA
QCAtNTQsNyArNTQsNyBAQCBGcmFtZUxvYWRlckNsaWVudCYgTWl4ZWRDb250ZW50Q2hlY2tlcjo6
Y2xpZW50KCkgY29uc3QKIH0KIAogLy8gc3RhdGljCi1ib29sIE1peGVkQ29udGVudENoZWNrZXI6
OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjppc01peGVkQ29udGVudChTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChzZWN1
cml0eU9yaWdpbi0+cHJvdG9jb2woKSAhPSAiaHR0cHMiKQogICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIFdlIG9ubHkgY2FyZSBhYm91dCBIVFRQUyBzZWN1cml0eSBvcmlnaW5zLgpAQCAtNjMsNyAr
NjMsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgSwogICAgIHJldHVybiAhU2VjdXJpdHlPcmln
aW46OmlzU2VjdXJlKHVybCk7CiB9CiAKLWJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlz
cGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUlu
c2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIGlmICghaXNNaXhlZENvbnRlbnQoc2VjdXJpdHlPcmlnaW4sIHVy
bCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNzcsNyArNzcsNyBAQCBib29sIE1peGVkQ29u
dGVudENoZWNrZXI6OmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZwogICAgIHJldHVybiBhbGxvd2VkOwogfQogCi1ib29sIE1peGVkQ29udGVudENo
ZWNrZXI6OmNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2Fu
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVudChzZWN1cml0eU9yaWdp
biwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgTWl4
ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9pZCBNaXhlZENvbnRl
bnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhY3Rpb24s
IGNvbnN0IEtVUkwmIHRhcmdldCkgY29uc3QKK3ZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9n
V2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwmIHRh
cmdldCkgY29uc3QKIHsKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoKGFsbG93ZWQg
PyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiAiLCBhY3Rpb24sICIg
aW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNz
YWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaAppbmRleCBkMGQ3
YjFlLi44ZTRmMzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogCiBjbGFzcyBNaXhlZENvbnRlbnRDaGVja2VyIHsKQEAgLTQ2
LDE1ICs0NiwxNSBAQCBjbGFzcyBNaXhlZENvbnRlbnRDaGVja2VyIHsKIHB1YmxpYzoKICAgICBN
aXhlZENvbnRlbnRDaGVja2VyKEZyYW1lKik7CiAKLSAgICBib29sIGNhbkRpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgYm9vbCBj
YW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgY29uc3Q7
Ci0gICAgc3RhdGljIGJvb2wgaXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJik7CisgICAgYm9vbCBjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBpc01peGVk
Q29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBoYXZlIGEgc2VwYXJhdGUgY2xpZW50IGZyb20g
RnJhbWVMb2FkZXIuCiAgICAgRnJhbWVMb2FkZXJDbGllbnQmIGNsaWVudCgpIGNvbnN0OwogCi0g
ICAgdm9pZCBsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBhY3Rpb24sIGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBGcmFtZSogbV9mcmFt
ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCBjMzZi
MTcwLi41ZTIxZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgK
QEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC00
OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIGlzRW1wdHko
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5pc0VtcHR5KCk7IH0KIAot
ICAgICAgICBLVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgp
OyB9CisgICAgICAgIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51
cmwoKTsgfQogICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CiAKICAgICAgICAgTmF2aWdhdGlv
blR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDIyZDEzZmEuLjlhYjk1OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZy
YW1lKQogICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERl
ZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVy
KCkuY2hhbmdlTG9jYXRpb24obV9zZWN1cml0eU9yaWdpbi5nZXQoKSwgS1VSTChQYXJzZWRVUkxT
dHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJk
TGlzdCgpLCBmYWxzZSk7CisgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbiht
X3NlY3VyaXR5T3JpZ2luLmdldCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIG1fcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgZmFsc2UpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lKiBmcmFtZSwgVGltZXI8
TmF2aWdhdGlvblNjaGVkdWxlcj4qIHRpbWVyKQpAQCAtMTE5LDcgKzExOSw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgbV9oYXZlVG9sZENsaWVudCA9IHRydWU7CiAKICAgICAgICAgVXNlckdlc3R1
cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1
cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50UmVkaXJlY3RlZChLVVJMKFBhcnNl
ZFVSTFN0cmluZywgbV91cmwpLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXItPm5leHRG
aXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKKyAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNsaWVudFJlZGlyZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpLCBkZWxh
eSgpLCBjdXJyZW50VGltZSgpICsgdGltZXItPm5leHRGaXJlSW50ZXJ2YWwoKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCgpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFRpbWVyKEZy
YW1lKiBmcmFtZSwgYm9vbCBuZXdMb2FkSW5Qcm9ncmVzcykKQEAgLTE2MCw4ICsxNjAsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgp
ID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwotICAgICAgICBib29sIHJlZnJlc2ggPSBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCgpKSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihz
ZWN1cml0eU9yaWdpbigpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpLCByZWZlcnJlcigp
LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIHJlZnJlc2gpOworICAgICAg
ICBib29sIHJlZnJlc2ggPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpKTsKKyAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCgpLCByZWZyZXNoKTsKICAgICB9CiB9OwogCkBAIC0xODEsNyArMTgxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lKiBmcmFtZSkKICAgICB7CiAgICAg
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2FzVXNlckdlc3R1cmUo
KSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9u
KHNlY3VyaXR5T3JpZ2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVy
KCksIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgdHJ1ZSk7CisgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbigpLCBVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCksIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNr
Rm9yd2FyZExpc3QoKSwgdHJ1ZSk7CiAgICAgfQogfTsKIApAQCAtMzUwLDcgKzM1MCw3IEBAIHZv
aWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sCiAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRv
IG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0
aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBs
b2NhdGlvbiBjaGFuZ2UuCi0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
OworICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGlmIChwYXJz
ZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgcGFyc2VkVVJMKSkgewogICAgICAg
ICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4sIG1fZnJhbWUtPmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIE5hdmln
YXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCgpCiB7CiAgICAgaWYgKCFzaG91bGRTY2hl
ZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0IEtVUkwmIHVybCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCmluZGV4IDMxMGVjYWYuLjRi
MjQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIEZyYW1l
TG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUsIHVybCk7CkBAIC03NCw3ICs3NCw3
IEBAIHZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQogfQogCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVu
dC13b3JrL211bHRpcGFnZS9saW5rcy5odG1sI2h5cGVybGluay1hdWRpdGluZwotdm9pZCBQaW5n
TG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBpbmdVUkwsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQordm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcGluZ1VSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCkKIHsK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChwaW5nVVJMKTsKICNpZiBQTEFURk9STShCTEFD
S0JFUlJZKQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJh
bWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hCiAgICAg
VU5VU0VEX1BBUkFNKGxlYWtlZFBpbmdMb2FkZXIpOwogfQogCi12b2lkIFBpbmdMb2FkZXI6OnNl
bmRWaW9sYXRpb25SZXBvcnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiByZXBvcnRVUkwsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKK3ZvaWQgUGluZ0xvYWRlcjo6c2VuZFZpb2xhdGlv
blJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVwb3J0VVJMLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiByZXBvcnQpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QocmVwb3J0VVJM
KTsKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmgK
aW5kZXggNGZlMTdhZC4uNjkzOWEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BpbmdMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRm9ybURhdGE7CiBj
bGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtNTQs
OSArNTQsOSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUGluZ0xvYWRlciA6IHBy
aXZhdGUgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBp
bmdMb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBLVVJMJiB1cmwpOwotICAgIHN0YXRpYyB2b2lk
IHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3QgS1VSTCYgZGVzdGlu
YXRpb25VUkwpOwotICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUqLCBj
b25zdCBLVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CisgICAg
c3RhdGljIHZvaWQgbG9hZEltYWdlKEZyYW1lKiwgY29uc3QgVVJMJiB1cmwpOworICAgIHN0YXRp
YyB2b2lkIHNlbmRQaW5nKEZyYW1lKiwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1l
KiwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCk7CiAK
ICAgICB2aXJ0dWFsIH5QaW5nTG9hZGVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxh
Y2Vob2xkZXJEb2N1bWVudC5oCmluZGV4IGQzYWI3NDEuLmNlMjMyNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYWNlaG9sZGVyRG9jdW1lbnQgRklOQUwgOiBwdWJs
aWMgRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYWNlaG9sZGVy
RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbGFjZWhvbGRlckRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGxhY2Vo
b2xkZXJEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVSZW5kZXJUcmVlKCkgT1ZFUlJJ
REU7CiAKLSAgICBQbGFjZWhvbGRlckRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsKQorICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgOiBEb2N1bWVudChmcmFtZSwgdXJsKQogICAgIHsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDFkMjQz
YjUuLmE4ZDIxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2FkZXJT
dHJhdGVneS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5oIgpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4UmVxdWVzdHNJbkZsaWdodEZvck5vbkhUVFBQcm90b2NvbHMgPSAyMDsKIC8vIE1hdGNoIHRo
ZSBwYXJhbGxlbCBjb25uZWN0aW9uIGNvdW50IHVzZWQgYnkgdGhlIG5ldHdvcmtpbmcgbGF5ZXIu
CiBzdGF0aWMgdW5zaWduZWQgbWF4UmVxdWVzdHNJbkZsaWdodFBlckhvc3Q7CiAKLVJlc291cmNl
TG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhv
c3RGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBDcmVhdGVIb3N0UG9saWN5IGNyZWF0ZUhvc3RQb2xp
Y3kpCitSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbiogUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBDcmVhdGVIb3N0UG9saWN5IGNy
ZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgp
KQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0OwpAQCAtMTYwLDcgKzE2MCw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmUoUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQogICAgIHNjaGVkdWxlU2VydmVQZW5kaW5nUmVxdWVzdHMoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IEtVUkwmIHJlZGlyZWN0VVJMKQor
dm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpCiB7
CiAgICAgSG9zdEluZm9ybWF0aW9uKiBvbGRIb3N0ID0gaG9zdEZvclVSTChyZXNvdXJjZUxvYWRl
ci0+dXJsKCkpOwogICAgIEFTU0VSVChvbGRIb3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCAyYTFlNDEzLi4yZGJmNjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50OwogY2xh
c3MgUmVzb3VyY2VMb2FkZXI7CkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKEZy
YW1lKiwgQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQoRnJhbWUqLCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3VyY2VMb2FkZXIq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZGVyKiwgY29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpOworICAgIHZpcnR1YWwgdm9pZCBjcm9z
c09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmIHJlZGly
ZWN0VVJMKTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHMoUmVz
b3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaW9yaXR5ID0gUmVzb3VyY2VMb2FkUHJpb3JpdHlW
ZXJ5TG93KTsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdSZXF1ZXN0cygpOwpAQCAt
MTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEZpbmRPbmx5CiAgICAgfTsKICAgICAK
LSAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgS1VSTCYsIENyZWF0ZUhvc3RQ
b2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0Rm9yVVJMKGNvbnN0
IFVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CiAgICAgdm9pZCBzZXJ2ZVBlbmRp
bmdSZXF1ZXN0cyhIb3N0SW5mb3JtYXRpb24qLCBSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAKICAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBIb3N0SW5mb3JtYXRpb24qLCBTdHJpbmdIYXNoPiBI
b3N0TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCBkODJhYTgy
Li5jMzFmMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZUxvYWRlcjsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUJ1ZmZlcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwog
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgT1ZFUlJJ
REU7CiAjZW5kaWYKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdC51cmwoKTsgfSAKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdC51cmwoKTsgfSAKICAgICBSZXNvdXJjZUhhbmRsZSogaGFuZGxlKCkgY29uc3QgeyByZXR1
cm4gbV9oYW5kbGUuZ2V0KCk7IH0KICAgICBib29sIHNob3VsZFNlbmRSZXNvdXJjZUxvYWRDYWxs
YmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0gU2Vu
ZENhbGxiYWNrczsgfQogICAgIHZvaWQgc2V0U2VuZENhbGxiYWNrUG9saWN5KFNlbmRDYWxsYmFj
a1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcykgeyBtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3Mg
PSBzZW5kTG9hZENhbGxiYWNrczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1NpbmtEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmNw
cAppbmRleCA0ODRkMjM4Li42MDUxZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU2lua0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3Vt
ZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmRCeXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgfQogfTsKIAot
U2lua0RvY3VtZW50OjpTaW5rRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CitTaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0
eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKaW5kZXgg
NzZkOWE4My4uMjQ2Njg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtE
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaApAQCAt
MzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2lua0RvY3VtZW50
IEZJTkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2lua0RvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2lu
a0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2lua0RvY3Vt
ZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFNpbmtEb2N1bWVudChGcmFtZSosIGNvbnN0
IFVSTCYpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gY3Jl
YXRlUGFyc2VyKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAK
aW5kZXggOGY4YmMzMy4uOGM5ZjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YmZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVM
b2FkZXIuY3BwCkBAIC03OCw4ICs3OCw4IEBAIHZvaWQgU3ViZnJhbWVMb2FkZXI6OmNsZWFyKCkK
IGJvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qp
CiB7CiAgICAgLy8gU3VwcG9ydCBmb3IgPGZyYW1lIHNyYz0iamF2YXNjcmlwdDpzdHJpbmciPgot
ICAgIEtVUkwgc2NyaXB0VVJMOwotICAgIEtVUkwgdXJsOworICAgIFVSTCBzY3JpcHRVUkw7Cisg
ICAgVVJMIHVybDsKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodXJsU3RyaW5nKSkgewog
ICAgICAgICBzY3JpcHRVUkwgPSBjb21wbGV0ZVVSTCh1cmxTdHJpbmcpOyAvLyBjb21wbGV0ZVVS
TCgpIGVuY29kZXMgdGhlIFVSTC4KICAgICAgICAgdXJsID0gYmxhbmtVUkwoKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHIKICAgICAKIGJvb2wgU3ViZnJhbWVMb2Fk
ZXI6OnJlc291cmNlV2lsbFVzZVBsdWdpbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewotICAgIEtV
UkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNF
bXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0x
MDYsNyArMTA2LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2lu
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWUKICAgICByZXR1cm4gc2hvdWxk
VXNlUGx1Z2luKGNvbXBsZXRlZFVSTCwgbWltZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJ
bWFnZXMsIGZhbHNlLCB1c2VGYWxsYmFjayk7CiB9CiAKLWJvb2wgU3ViZnJhbWVMb2FkZXI6OnBs
dWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorYm9vbCBTdWJmcmFtZUxvYWRl
cjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICBpZiAoTUlN
RVR5cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUobWltZVR5cGUpKSB7CiAgICAgICAg
IGlmICghbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCkBAIC0xNDEsNyArMTQx
LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RQ
bHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1c2VGYWxsYmFjaykK
IHsKICAgICAvLyBBcHBsaWNhdGlvbiBwbHVnLWlucyBhcmUgcGx1Zy1pbnMgaW1wbGVtZW50ZWQg
YnkgdGhlIHVzZXIgYWdlbnQsIGZvciBleGFtcGxlIFF0IHBsdWctaW5zLAogICAgIC8vIGFzIG9w
cG9zZWQgdG8gdGhpcmQtcGFydHkgY29kZSBzdWNoIGFzIEZsYXNoLiBUaGUgdXNlciBhZ2VudCBk
ZWNpZGVzIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBT
dWJmcmFtZUxvYWRlcjo6cmVxdWVzdE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25l
ckVsZW1lbnQsIGNvbnN0IFMKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBVUkwgY29tcGxldGVkVVJMOwogICAg
IGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxldGVVUkwo
dXJsKTsKIApAQCAtMjM3LDEyICsyMzcsMTIgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVz
dE9iamVjdChIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFMKIH0K
IAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1JlZlB0cjxXaWRnZXQ+
IFN1YmZyYW1lTG9hZGVyOjpsb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihOb2RlKiBub2RlLCBj
b25zdCBLVVJMJiB1cmwsCitQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmxvYWRN
ZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmhhc1RhZ05hbWUodmlkZW9UYWcpIHx8IGlz
SFRNTEF1ZGlvRWxlbWVudChub2RlKSk7CiAKLSAgICBLVVJMIGNvbXBsZXRlZFVSTDsKKyAgICBV
UkwgY29tcGxldGVkVVJMOwogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxl
dGVkVVJMID0gY29tcGxldGVVUkwodXJsKTsKIApAQCAtMjkyLDcgKzI5Miw3IEBAIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJ
bnRTaXplJiBzaXplLCBICiAgICAgfQogCiAgICAgaWYgKCFjb2RlQmFzZVVSTFN0cmluZy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgS1VSTCBjb2RlQmFzZVVSTCA9IGNvbXBsZXRlVVJMKGNvZGVCYXNl
VVJMU3RyaW5nKTsKKyAgICAgICAgVVJMIGNvZGVCYXNlVVJMID0gY29tcGxldGVVUkwoY29kZUJh
c2VVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIWVsZW1lbnQtPmRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKS0+Y2FuRGlzcGxheShjb2RlQmFzZVVSTCkpIHsKICAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFtZSwgY29kZUJhc2VVUkwuc3RyaW5nKCkp
OwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMDYsNyArMzA2LDcgQEAgUGFzc1JlZlB0cjxX
aWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNp
emUmIHNpemUsIEgKIAogICAgIGlmIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAg
YmFzZVVSTFN0cmluZyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKS5zdHJpbmcoKTsK
LSAgICBLVVJMIGJhc2VVUkwgPSBjb21wbGV0ZVVSTChiYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwg
YmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJpbmcpOwogCiAgICAgUmVmUHRyPFdpZGdl
dD4gd2lkZ2V0OwogICAgIGlmIChhbGxvd1BsdWdpbnMoQWJvdXRUb0luc3RhbnRpYXRlUGx1Z2lu
KSkKQEAgLTMyNiw3ICszMjYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6
OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSAogICAgIHJldHVy
biB3aWRnZXQ7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJlY3RTdWJm
cmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVj
dFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIGJv
b2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBvd25lckVsZW1l
bnQtPmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKQEAgLTMzOCw3ICszMzgsNyBAQCBG
cmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbgogICAgIHJldHVybiBvd25lckVsZW1lbnQtPmNvbnRlbnRG
cmFtZSgpOwogfQogCi1GcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRTdWJmcmFtZShIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitGcmFtZSogU3ViZnJhbWVMb2FkZXI6
OmxvYWRTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsK
ICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKQEAgLTQwMyw3ICs0MDMsNyBA
QCBib29sIFN1YmZyYW1lTG9hZGVyOjphbGxvd1BsdWdpbnMoUmVhc29uRm9yQ2FsbGluZ0FsbG93
UGx1Z2lucyByZWFzb24pCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAKLWJvb2wgU3ViZnJhbWVM
b2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFj
aywgYm9vbCYgdXNlRmFsbGJhY2spCitib29sIFN1YmZyYW1lTG9hZGVyOjpzaG91bGRVc2VQbHVn
aW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYgdXNlRmFsbGJhY2sp
CiB7CiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEFsd2F5c1VzZVBs
dWdpbkRvY3VtZW50KG1pbWVUeXBlKSkgewogICAgICAgICB1c2VGYWxsYmFjayA9IGZhbHNlOwpA
QCAtNDMwLDcgKzQzMCw3IEBAIERvY3VtZW50KiBTdWJmcmFtZUxvYWRlcjo6ZG9jdW1lbnQoKSBj
b25zdAogICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpOwogfQogCi1ib29sIFN1YmZyYW1l
TG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKK2Jvb2wgU3ViZnJhbWVM
b2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVudCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywg
Ym9vbCB1c2VGYWxsYmFjaykKIHsKICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogcmVuZGVyZXIg
PSBwbHVnaW5FbGVtZW50LT5yZW5kZXJFbWJlZGRlZE9iamVjdCgpOwpAQCAtNDYyLDcgKzQ2Miw3
IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVu
dCogcGx1Z2luRWxlbWVudCwgY29uc3QgS1VSCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtVUkwg
U3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJM
IFN1YmZyYW1lTG9hZGVyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsK
ICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgcmV0dXJuIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxv
YWRlci5oCmluZGV4IGQ4ZTAzYzEuLjJlODQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEhUTUxBcHBsZXRFbGVtZW50Owog
Y2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDsKIGNsYXNzIEludFNpemU7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgTm9kZTsKICNlbmRpZgpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHRha2UgRWxlbWVudCogaW5zdGVhZCBvZiBOb2RlKiwgb3IgYmV0
dGVyIHlldCB0aGUKICAgICAvLyBzcGVjaWZpYyB0eXBlIG9mIEVsZW1lbnQgd2hpY2ggdGhpcyBj
b2RlIGRlcGVuZHMgb24uCi0gICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGxvYWRNZWRpYVBsYXllclBy
b3h5UGx1Z2luKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisgICAgUGFzc1JlZlB0
cjxXaWRnZXQ+IGxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKE5vZGUqLCBjb25zdCBVUkwmLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFB
cHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cyk7CkBAIC04MCwyMSArODAsMjEgQEAgcHVibGljOgogICAgIGJvb2wgcmVzb3VyY2VXaWxsVXNl
UGx1Z2luKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNo
b3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiBwcml2YXRlOgotICAgIGJvb2wgcmVxdWVz
dFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwotICAgIEZyYW1l
KiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IEtV
UkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKLSAgICBGcmFtZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpOwotICAgIGJvb2wgbG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCisgICAgYm9vbCByZXF1
ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKKyAgICBGcmFt
ZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBV
UkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9v
bCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcik7CisgICAgYm9vbCBsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAogICAgICAgICBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzLCBib29sIHVzZUZhbGxiYWNrKTsKIAotICAgIGJvb2wgc2hvdWxkVXNlUGx1Z2luKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsKLSAgICBib29s
IHBsdWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBib29sIHNob3VsZFVzZVBsdWdpbihjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJ
bWFnZXMsIGJvb2wgaGFzRmFsbGJhY2ssIGJvb2wmIHVzZUZhbGxiYWNrKTsKKyAgICBib29sIHBs
dWdpbklzTG9hZGFibGUoSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAK
ICAgICBib29sIG1fY29udGFpbnNQbHVnaW5zOwogICAgIEZyYW1lKiBtX2ZyYW1lOwogCi0gICAg
S1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBVUkwgY29tcGxldGVV
UkwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlMDc3YmZh
Li5mYTU5ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBib29sIFN1YnJlc291cmNlTG9hZGVyOjppc1N1YnJlc291
cmNlTG9hZGVyKCkKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBiZWNhdXNlIHRoZSBj
YWxsIHRvIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBtb2RpZnkgaXQuCi0g
ICAgS1VSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwgcHJldmlvdXNV
UkwgPSByZXF1ZXN0KCkudXJsKCk7CiAgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KCp0aGlzKTsKIAogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCmluZGV4IDUyMGVmNTguLjI5NTlkZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IFN1YnN0aXR1dGVEYXRhX2gKICNkZWZpbmUgU3Vic3RpdHV0ZURhdGFfaAogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDEs
OCArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBTdWJz
dGl0dXRlRGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udGVudCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmcsIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwsCi0gICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEtVUkwmIHJlc3BvbnNlVVJMID0gS1VSTCgpLCBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lv
bkhpc3RvcnkgPSBmYWxzZSkKKyAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZywgY29uc3QgVVJMJiBmYWlsaW5nVVJMLAorICAgICAgICAgICAgICAgIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwgPSBVUkwoKSwgYm9vbCBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5ID0g
ZmFsc2UpCiAgICAgICAgICAgICA6IG1fY29udGVudChjb250ZW50KQogICAgICAgICAgICAgLCBt
X21pbWVUeXBlKG1pbWVUeXBlKQogICAgICAgICAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5j
b2RpbmcpCkBAIC02MCwxNSArNjAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
b25zdCBTaGFyZWRCdWZmZXIqIGNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0
KCk7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWltZVR5cGU7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBtX3RleHRFbmNvZGluZzsgfQotICAgICAgICBjb25zdCBLVVJMJiBmYWlsaW5nVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJl
c3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQorICAgICAgICBjb25z
dCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KKyAgICAg
ICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VVUkw7
IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9jb250ZW50OwogICAgICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICAgICAgU3RyaW5nIG1f
dGV4dEVuY29kaW5nOwotICAgICAgICBLVVJMIG1fZmFpbGluZ1VSTDsKLSAgICAgICAgS1VSTCBt
X3Jlc3BvbnNlVVJMOworICAgICAgICBVUkwgbV9mYWlsaW5nVVJMOworICAgICAgICBVUkwgbV9y
ZXNwb25zZVVSTDsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3Rvcnk7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVS
ZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCmlu
ZGV4IDE1Y2JjNmYuLjk4Yzg3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCkBAIC00MCwxMiAr
NDAsMTIgQEAgY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlIDogcHVibGljIFJlZkNvdW50ZWQ8U3Vi
c3RpdHV0ZVJlc291cmNlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U3Vic3RpdHV0ZVJlc291
cmNlKCkgeyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7
IH0KICAgICBTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7
IH0KIAogcHJvdGVjdGVkOgotICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSkKKyAgICBTdWJzdGl0dXRlUmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
ICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAg
ICAgICAgLCBtX2RhdGEoZGF0YSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIH0K
ICAgICAKIHByaXZhdGU6Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0
YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmluZGV4IGY2
ZWM2ZWQuLjRmYTA3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIu
Y3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKLWJv
b2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
cm9zc09yaWdpbk1vZGUpCitib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdpbk1vZGUpCiB7CiAgICAgY2FuY2VsTG9hZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKaW5kZXggMzZmM2VmMC4uOTM1
N2UxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRlcigpOwog
ICAgIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjcm9zc09yaWdp
bk1vZGUpOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNyb3NzT3Jp
Z2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICNpZiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZS5jcHAKaW5kZXggNjE4MjliMi4uODUyODliMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMzcs
NyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgCi1zdGF0aWMgaW5saW5lIGJvb2wg
ZmFsbGJhY2tVUkxMb25nZXJUaGFuKGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiYgbGhzLCBj
b25zdCBzdGQ6OnBhaXI8S1VSTCwgS1VSTD4mIHJocykKK3N0YXRpYyBpbmxpbmUgYm9vbCBmYWxs
YmFja1VSTExvbmdlclRoYW4oY29uc3Qgc3RkOjpwYWlyPFVSTCwgVVJMPiYgbGhzLCBjb25zdCBz
dGQ6OnBhaXI8VVJMLCBVUkw+JiByaHMpCiB7CiAgICAgcmV0dXJuIGxocy5maXJzdC5zdHJpbmco
KS5sZW5ndGgoKSA+IHJocy5maXJzdC5zdHJpbmcoKS5sZW5ndGgoKTsKIH0KQEAgLTExNyw3ICsx
MTcsNyBAQCB1bnNpZ25lZCBBcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVSZXNvdXJjZShjb25zdCBT
dHJpbmcmIHVybCkKICAgICAKIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogQXBwbGljYXRpb25D
YWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNTRVJUKCFL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CisgICAg
QVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
KTsKICAgICByZXR1cm4gbV9yZXNvdXJjZXMuZ2V0KHVybCk7CiB9ICAgIAogCkBAIC0xMzgsMjAg
KzEzOCwyMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIEFwcGxpY2F0aW9uQ2FjaGU6OnJl
c291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcQogICAgIGlmICghcmVxdWVzdElzSFRU
UE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwo
cmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJs
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKICAgICByZXR1cm4gcmVzb3VyY2VGb3JVUkwodXJsKTsKIH0KIAotdm9pZCBB
cHBsaWNhdGlvbkNhY2hlOjpzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVjdG9yPEtVUkw+JiBv
bmxpbmVXaGl0ZWxpc3QpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRlbGlz
dChjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hpdGVsaXN0KQogewogICAgIEFTU0VSVChtX29u
bGluZVdoaXRlbGlzdC5pc0VtcHR5KCkpOwogICAgIG1fb25saW5lV2hpdGVsaXN0ID0gb25saW5l
V2hpdGVsaXN0OyAKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5lV2hp
dGVsaXN0KGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZTo6aXNVUkxJbk9u
bGluZVdoaXRlbGlzdChjb25zdCBVUkwmIHVybCkKIHsKICAgICBzaXplX3Qgd2hpdGVsaXN0U2l6
ZSA9IG1fb25saW5lV2hpdGVsaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZTo6c2V0RmFsbGJhY2tVUkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJiBmYWxsYmFj
a1VSTHMpCiAgICAgc3RkOjpzdGFibGVfc29ydChtX2ZhbGxiYWNrVVJMcy5iZWdpbigpLCBtX2Zh
bGxiYWNrVVJMcy5lbmQoKSwgZmFsbGJhY2tVUkxMb25nZXJUaGFuKTsKIH0KIAotYm9vbCBBcHBs
aWNhdGlvbkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgS1VSTCYgdXJs
LCBLVVJMKiBmYWxsYmFja1VSTCkKK2Jvb2wgQXBwbGljYXRpb25DYWNoZTo6dXJsTWF0Y2hlc0Zh
bGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYgdXJsLCBVUkwqIGZhbGxiYWNrVVJMKQogewogICAg
IHNpemVfdCBmYWxsYmFja0NvdW50ID0gbV9mYWxsYmFja1VSTHMuc2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZmFsbGJhY2tDb3VudDsgKytpKSB7CkBAIC0xOTMsMTMgKzE5Mywx
MyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OmNsZWFyU3RvcmFnZUlEKCkKICAgICAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbikKIHsKLSAgICBWZWN0b3I8S1VSTD4gdXJsczsKKyAgICBWZWN0b3I8VVJMPiB1cmxzOwog
ICAgIGlmICghY2FjaGVTdG9yYWdlKCkubWFuaWZlc3RVUkxzKCZ1cmxzKSkgewogICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlvbkNhY2hlIG1hbmlmZXN0IFVS
THMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEtVUkwgb3JpZ2luVVJMKEtVUkwo
KSwgb3JpZ2luLT50b1N0cmluZygpKTsKKyAgICBVUkwgb3JpZ2luVVJMKFVSTCgpLCBvcmlnaW4t
PnRvU3RyaW5nKCkpOwogCiAgICAgc2l6ZV90IGNvdW50ID0gdXJscy5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCAyNTFiZWEzLi5mZmU0ODIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlLmgKQEAgLTM4LDExICszOCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U7CiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJj
ZVJlcXVlc3Q7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAotdHlwZWRlZiBWZWN0b3I8c3RkOjpw
YWlyPEtVUkwsIEtVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxzdGQ6
OnBhaXI8VVJMLCBVUkw+ID4gRmFsbGJhY2tVUkxWZWN0b3I7CiAKIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxBcHBsaWNhdGlvbkNhY2hlPiB7CiBwdWJsaWM6CkBA
IC02OCwxMyArNjgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBbGxvd3NBbGxOZXR3b3Jr
UmVxdWVzdHMoYm9vbCB2YWx1ZSkgeyBtX2FsbG93QWxsTmV0d29ya1JlcXVlc3RzID0gdmFsdWU7
IH0KICAgICBib29sIGFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7IH0KLSAgICB2b2lkIHNldE9ubGluZVdoaXRlbGlzdChj
b25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCk7Ci0gICAgY29uc3QgVmVjdG9yPEtV
Ukw+JiBvbmxpbmVXaGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGluZVdoaXRlbGlzdDsg
fQotICAgIGJvb2wgaXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBLVVJMJik7IC8vIFRoZXJl
IGlzIGFuIGVudHJ5IGluIG9ubGluZSB3aGl0ZWxpc3QgdGhhdCBoYXMgdGhlIHNhbWUgb3JpZ2lu
IGFzIHRoZSByZXNvdXJjZSdzIFVSTCBhbmQgdGhhdCBpcyBhIHByZWZpeCBtYXRjaCBmb3IgdGhl
IHJlc291cmNlJ3MgVVJMLgorICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3Rv
cjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QpOworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVX
aGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX29ubGluZVdoaXRlbGlzdDsgfQorICAgIGJvb2wg
aXNVUkxJbk9ubGluZVdoaXRlbGlzdChjb25zdCBVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkg
aW4gb25saW5lIHdoaXRlbGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291
cmNlJ3MgVVJMIGFuZCB0aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBV
UkwuCiAKICAgICB2b2lkIHNldEZhbGxiYWNrVVJMcyhjb25zdCBGYWxsYmFja1VSTFZlY3RvciYp
OwogICAgIGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJiBmYWxsYmFja1VSTHMoKSBjb25zdCB7IHJl
dHVybiBtX2ZhbGxiYWNrVVJMczsgfQotICAgIGJvb2wgdXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNw
YWNlKGNvbnN0IEtVUkwmLCBLVVJMKiBmYWxsYmFja1VSTCA9IDApOworICAgIGJvb2wgdXJsTWF0
Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKGNvbnN0IFVSTCYsIFVSTCogZmFsbGJhY2tVUkwgPSAwKTsK
ICAgICAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCk7CkBAIC0xMDIsNyArMTAyLDcg
QEAgcHJpdmF0ZToKICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG1fbWFuaWZlc3Q7CiAK
ICAgICBib29sIG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHM7Ci0gICAgVmVjdG9yPEtVUkw+IG1f
b25saW5lV2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IG1fb25saW5lV2hpdGVsaXN0OwogICAg
IEZhbGxiYWNrVVJMVmVjdG9yIG1fZmFsbGJhY2tVUkxzOwogCiAgICAgLy8gVGhlIHRvdGFsIHNp
emUgb2YgdGhlIHJlc291cmNlcyBiZWxvbmdpbmcgdG8gdGhpcyBBcHBsaWNhdGlvbiBDYWNoZSBp
bnN0YW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggZDZiZjk4Ny4uNTliM2JkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5p
ZmVzdFVSTCwgYm9vbCBpc0NvcHkpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9u
Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29weSkKICAgICA6IG1f
bWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX29yaWdpbihTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG1hbmlmZXN0VVJMKSkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUpCkBAIC0xMDEs
NyArMTAxLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNo
ZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAoIUFwcGxpY2F0aW9u
Q2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIEtVUkwgdXJsKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwocmVxdWVzdC51
cmwoKSk7CiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgdXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xMjAsNyArMTIwLDcgQEAgQXBwbGlj
YXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0NhY2hlRm9yTWFpblJl
cXVlc3QoY29uc3QgUmVzb3UKICAgICBpZiAoIUFwcGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hU
VFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEtVUkwgdXJs
KHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwocmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3UK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENh
Y2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGFzc2VkTWFuaWZlc3RVUkwpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHBhc3NlZE1hbmlmZXN0VVJMKQogewogICAgIEFTU0VSVChmcmFtZSAmJiBmcmFtZS0+cGFnZSgp
KTsKICAgICAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCBtYW5pZmVzdFVSTChwYXNzZWRNYW5pZmVz
dFVSTCk7CisgICAgVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJMKTsKICAgICBpZiAo
bWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIG1hbmlmZXN0VVJM
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgcGFzc2VkTWFuaWZlc3QKICAgICAgICAgICAgIG1haW5SZXNvdXJjZUNhY2hlLT5ncm91cCgp
LT51cGRhdGUoZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVXaXRoQnJvd3NpbmdDb250ZXh0
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBtYWluIHJlc291cmNlIHdh
cyBsb2FkZWQgZnJvbSBjYWNoZSwgc28gdGhlIGNhY2hlIG11c3QgaGF2ZSBhbiBlbnRyeSBmb3Ig
aXQuIE1hcmsgaXQgYXMgZm9yZWlnbi4KLSAgICAgICAgICAgIEtVUkwgcmVzb3VyY2VVUkwoZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlVVJMKCkpOworICAgICAgICAgICAgVVJMIHJlc291cmNlVVJM
KGRvY3VtZW50TG9hZGVyLT5yZXNwb25zZVVSTCgpKTsKICAgICAgICAgICAgIGlmIChyZXNvdXJj
ZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICByZXNvdXJjZVVS
TC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZSogcmVzb3VyY2UgPSBtYWluUmVzb3VyY2VDYWNoZS0+cmVzb3VyY2VGb3JVUkwo
cmVzb3VyY2VVUkwpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
IHsKICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGxv
YWRlcikpOwogICAgIEFTU0VSVChtX2NvbXBsZXRpb25UeXBlID09IE5vbmUgfHwgbV9wZW5kaW5n
RW50cmllcy5pc0VtcHR5KCkpOwotICAgIEtVUkwgdXJsID0gbG9hZGVyLT51cmwoKTsKKyAgICBV
UkwgdXJsID0gbG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTQ3NSw3
ICs0NzUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWJvcnQoRnJhbWUqIGZyYW1l
KQogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVzb3VyY2VIYW5k
bGU+IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VS
TCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKQor
UGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVS
ZXNvdXJjZUhhbmRsZShjb25zdCBVUkwmIHVybCwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBu
ZXdlc3RDYWNoZWRSZXNvdXJjZSkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwp
OwogICAgIG1fZnJhbWUtPmxvYWRlcigpLmFwcGx5VXNlckFnZW50KHJlcXVlc3QpOwpAQCAtNTM2
LDcgKzUzNiw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAgICAgCiAgICAgQVNTRVJUKGhh
bmRsZSA9PSBtX2N1cnJlbnRIYW5kbGUpOwogCi0gICAgS1VSTCB1cmwoaGFuZGxlLT5maXJzdFJl
cXVlc3QoKS51cmwoKSk7CisgICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgp
KTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzb3VyY2VFcnJvciYKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3VycmVudEhhbmRsZSk7
CiAKICAgICB1bnNpZ25lZCB0eXBlID0gbV9jdXJyZW50UmVzb3VyY2UgPyBtX2N1cnJlbnRSZXNv
dXJjZS0+dHlwZSgpIDogbV9wZW5kaW5nRW50cmllcy5nZXQoaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS51cmwoKSk7Ci0gICAgS1VSTCB1cmwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSk7Cisg
ICAgVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKICAgICBpZiAodXJsLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpzdGFydExvYWRpbmdFbnRyeSgpCiAKICAgICBBU1NFUlQoIW1fY3VycmVudEhhbmRsZSk7CiAg
ICAgCi0gICAgbV9jdXJyZW50SGFuZGxlID0gY3JlYXRlUmVzb3VyY2VIYW5kbGUoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdlc3RDYWNoZS0+cmVz
b3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKKyAgICBtX2N1cnJlbnRIYW5kbGUgPSBjcmVhdGVS
ZXNvdXJjZUhhbmRsZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+a2V5KSwgbV9uZXdlc3RDYWNo
ZSA/IG1fbmV3ZXN0Q2FjaGUtPnJlc291cmNlRm9yVVJMKGl0LT5rZXkpIDogMCk7CiB9CiAKIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkZWxpdmVyRGVsYXllZE1haW5SZXNvdXJjZXMoKQpA
QCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRlbGl2ZXJE
ZWxheWVkTWFpblJlc291cmNlcygpCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIHR5cGUpCiB7CiAgICAgQVNTRVJUKG1fY2Fj
aGVCZWluZ1VwZGF0ZWQpOwotICAgIEFTU0VSVCghS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCku
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgCiAgICAgLy8gRG9uJ3QgYWRk
IHRoZSBVUkwgaWYgd2UgYWxyZWFkeSBoYXZlIGFuIG1hc3RlciByZXNvdXJjZSBpbiB0aGUgY2Fj
aGUKICAgICAvLyAoaS5lLiwgdGhlIG1haW4gcmVzb3VyY2UgZmluaXNoZWQgbG9hZGluZyBiZWZv
cmUgdGhlIG1hbmlmZXN0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCAxYTRhZjg2Li4zMjcwODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cF9oCiAKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC01Myw3ICs1Myw3IEBAIGVudW0gQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlR3JvdXAgOiBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQXBwbGljYXRpb25DYWNoZUdyb3VwKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwm
IG1hbmlmZXN0VVJMLCBib29sIGlzQ29weSA9IGZhbHNlKTsgICAgCisgICAgQXBwbGljYXRpb25D
YWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAg
ICAKICAgICB+QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CiAgICAgCiAgICAgZW51bSBVcGRhdGVT
dGF0dXMgeyBJZGxlLCBDaGVja2luZywgRG93bmxvYWRpbmcgfTsKQEAgLTYxLDEwICs2MSwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlRm9yTWFpblJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICBzdGF0aWMg
QXBwbGljYXRpb25DYWNoZSogZmFsbGJhY2tDYWNoZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKik7CiAgICAgCi0gICAgc3RhdGljIHZvaWQgc2Vs
ZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7CisgICAgc3RhdGljIHZv
aWQgc2VsZWN0Q2FjaGUoRnJhbWUqLCBjb25zdCBVUkwmIG1hbmlmZXN0VVJMKTsKICAgICBzdGF0
aWMgdm9pZCBzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSopOwogICAgIAotICAg
IGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tYW5pZmVzdFVSTDsg
fQorICAgIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0
VVJMOyB9CiAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luLmdldCgpOyB9CiAgICAgVXBkYXRlU3RhdHVzIHVwZGF0ZVN0YXR1cygpIGNvbnN0
IHsgcmV0dXJuIG1fdXBkYXRlU3RhdHVzOyB9CiAgICAgdm9pZCBzZXRVcGRhdGVTdGF0dXMoVXBk
YXRlU3RhdHVzIHN0YXR1cyk7CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAotICAgIFBhc3NS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwmLCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKKyAgICBQYXNz
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwmLCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKIAogICAgIC8v
IEZvciBub3JtYWwgcmVzb3VyY2UgbG9hZGluZywgV2ViS2l0IGNsaWVudCBpcyBhc2tlZCBhYm91
dCBlYWNoIHJlc291cmNlIGluZGl2aWR1YWxseS4gU2luY2UgYXBwbGljYXRpb24gY2FjaGUgZG9l
cyBub3QgYmVsb25nIHRvIGFueSBwYXJ0aWN1bGFyIGRvY3VtZW50LAogICAgIC8vIHRoZSBleGlz
dGluZyBjbGllbnQgY2FsbGJhY2sgY2Fubm90IGJlIHVzZWQsIHNvIGFzc3VtZSB0aGF0IGFueSBj
bGllbnQgdGhhdCBlbmFibGVzIGFwcGxpY2F0aW9uIGNhY2hlIGFsc28gd2FudHMgaXQgdG8gdXNl
IGNyZWRlbnRpYWwgc3RvcmFnZS4KQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAKLSAgICBLVVJMIG1fbWFuaWZlc3RVUkw7Cisg
ICAgVVJMIG1fbWFuaWZlc3RVUkw7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBtX29yaWdp
bjsKICAgICBVcGRhdGVTdGF0dXMgbV91cGRhdGVTdGF0dXM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApp
bmRleCA0YzY5ODA5Li40MzNiZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKQog
ICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwo
bV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSk7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OnNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKQordm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgVVJM
JiBtYW5pZmVzdFVSTCkKIHsKICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hl
KG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCksIG1hbmlmZXN0VVJMKTsKIH0KQEAgLTg2LDggKzg2
LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkTWFpblJlc291cmNlKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3Vic3QKICAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRh
ID0gU3Vic3RpdHV0ZURhdGEocmVzb3VyY2UtPmRhdGEoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnJl
c3BvbnNlKCkudGV4dEVuY29kaW5nTmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBLVVJMKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEtVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVVJMKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVSTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dWJzdGl0dXRlRGF0YTo6U2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Zmlu
aXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICAgICAgZ3JvdXAtPmZpbmlzaGVkTG9hZGlu
Z01haW5SZXNvdXJjZShtX2RvY3VtZW50TG9hZGVyKTsKIH0KIAotYm9vbCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkKK2Jvb2wgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6Om1heWJlTG9hZFJlc291cmNlKFJlc291cmNlTG9hZGVyKiBsb2FkZXIs
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVVJMJiBvcmlnaW5hbFVSTCkKIHsKICAg
ICBpZiAoIWlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzAzLDcgKzMwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8gQXBw
bGljYXRpb25DYWNoZUhvc3Q6OmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCkKIHsKICAgICBBcHBsaWNh
dGlvbkNhY2hlKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBpZiAoIWNhY2hlIHx8
ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gQ2FjaGVJbmZvKEtVUkwoKSwg
MCwgMCwgMCk7CisgICAgICAgIHJldHVybiBDYWNoZUluZm8oVVJMKCksIDAsIDAsIDApOwogICAK
ICAgICAvLyBGSVhNRTogQWRkICJDcmVhdGlvbiBUaW1lIiBhbmQgIlVwZGF0ZSBUaW1lIiB0byBB
cHBsaWNhdGlvbiBDYWNoZXMuCiAgICAgcmV0dXJuIENhY2hlSW5mbyhjYWNoZS0+bWFuaWZlc3RS
ZXNvdXJjZSgpLT51cmwoKSwgMCwgMCwgY2FjaGUtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSk7
CkBAIC0zNzgsNyArMzc4LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Z2V0QXBwbGlj
YXRpb25DYWNoZUZhbGxiYWNrUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXEKICAgICBpZiAoIUFw
cGxpY2F0aW9uQ2FjaGU6OnJlcXVlc3RJc0hUVFBPckhUVFBTR2V0KHJlcXVlc3QpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgIFVSTCBmYWxsYmFj
a1VSTDsKICAgICBpZiAoY2FjaGUtPmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QocmVxdWVzdC51cmwo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFs
bGJhY2tOYW1lc3BhY2UocmVxdWVzdC51cmwoKSwgJmZhbGxiYWNrVVJMKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5k
ZXggNjUyMGNjYy4uZjZlMGQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgQXBwbGljYXRpb25DYWNoZUhvc3RfaAogI2RlZmluZSBBcHBsaWNhdGlvbkNhY2hlSG9zdF9o
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CkBAIC03OCwxOSArNzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICAgICAgc3RydWN0IENhY2hlSW5mbyB7Ci0gICAgICAgICAgICBDYWNo
ZUluZm8oY29uc3QgS1VSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGRvdWJsZSB1
cGRhdGVUaW1lLCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIENhY2hlSW5mbyhjb25zdCBV
UkwmIG1hbmlmZXN0LCBkb3VibGUgY3JlYXRpb25UaW1lLCBkb3VibGUgdXBkYXRlVGltZSwgbG9u
ZyBsb25nIHNpemUpCiAgICAgICAgICAgICAgICAgOiBtX21hbmlmZXN0KG1hbmlmZXN0KQogICAg
ICAgICAgICAgICAgICwgbV9jcmVhdGlvblRpbWUoY3JlYXRpb25UaW1lKQogICAgICAgICAgICAg
ICAgICwgbV91cGRhdGVUaW1lKHVwZGF0ZVRpbWUpCiAgICAgICAgICAgICAgICAgLCBtX3NpemUo
c2l6ZSkgeyB9Ci0gICAgICAgICAgICBLVVJMIG1fbWFuaWZlc3Q7CisgICAgICAgICAgICBVUkwg
bV9tYW5pZmVzdDsKICAgICAgICAgICAgIGRvdWJsZSBtX2NyZWF0aW9uVGltZTsKICAgICAgICAg
ICAgIGRvdWJsZSBtX3VwZGF0ZVRpbWU7CiAgICAgICAgICAgICBsb25nIGxvbmcgbV9zaXplOwog
ICAgICAgICB9OwogCiAgICAgICAgIHN0cnVjdCBSZXNvdXJjZUluZm8gewotICAgICAgICAgICAg
UmVzb3VyY2VJbmZvKGNvbnN0IEtVUkwmIHJlc291cmNlLCBib29sIGlzTWFzdGVyLCBib29sIGlz
TWFuaWZlc3QsIGJvb2wgaXNGYWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJvb2wgaXNFeHBsaWNp
dCwgbG9uZyBsb25nIHNpemUpCisgICAgICAgICAgICBSZXNvdXJjZUluZm8oY29uc3QgVVJMJiBy
ZXNvdXJjZSwgYm9vbCBpc01hc3RlciwgYm9vbCBpc01hbmlmZXN0LCBib29sIGlzRmFsbGJhY2ss
IGJvb2wgaXNGb3JlaWduLCBib29sIGlzRXhwbGljaXQsIGxvbmcgbG9uZyBzaXplKQogICAgICAg
ICAgICAgICAgIDogbV9yZXNvdXJjZShyZXNvdXJjZSkKICAgICAgICAgICAgICAgICAsIG1faXNN
YXN0ZXIoaXNNYXN0ZXIpCiAgICAgICAgICAgICAgICAgLCBtX2lzTWFuaWZlc3QoaXNNYW5pZmVz
dCkKQEAgLTk4LDcgKzk4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAg
ICwgbV9pc0ZvcmVpZ24oaXNGb3JlaWduKQogICAgICAgICAgICAgICAgICwgbV9pc0V4cGxpY2l0
KGlzRXhwbGljaXQpCiAgICAgICAgICAgICAgICAgLCBtX3NpemUoc2l6ZSkgeyB9Ci0gICAgICAg
ICAgICBLVVJMIG1fcmVzb3VyY2U7CisgICAgICAgICAgICBVUkwgbV9yZXNvdXJjZTsKICAgICAg
ICAgICAgIGJvb2wgbV9pc01hc3RlcjsKICAgICAgICAgICAgIGJvb2wgbV9pc01hbmlmZXN0Owog
ICAgICAgICAgICAgYm9vbCBtX2lzRmFsbGJhY2s7CkBAIC0xMTQsNyArMTE0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB+QXBwbGljYXRpb25DYWNoZUhvc3QoKTsKIAogICAgICAg
ICB2b2lkIHNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0KCk7Ci0gICAgICAgIHZvaWQgc2VsZWN0
Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOworICAgICAgICB2b2lk
IHNlbGVjdENhY2hlV2l0aE1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOwogCiAgICAg
ICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlKFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1
dGVEYXRhJik7CiAgICAgICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3Qo
UmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291
cmNlKCk7CiAgICAgICAgIHZvaWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCi0gICAg
ICAgIGJvb2wgbWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCk7CisgICAgICAgIGJvb2wgbWF5YmVMb2FkUmVz
b3VyY2UoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBVUkwmIG9yaWdp
bmFsVVJMKTsKICAgICAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KFJlc291
cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
ICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJh
Y2tGb3JFcnJvcihSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5jcHAKaW5kZXggOTk3NjZlMy4uNGZjYjhmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIDogU3Vic3Rp
dHV0ZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIGRhdGEpCiAgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fc3RvcmFnZUlEKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggZDFkZmVhNC4uZDhkM2Yx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEZhbGxiYWNrID0gMSA8PCA0CiAgICAgfTsKICAgICAgICAgCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmlu
ZyYgcGF0aCA9IFN0cmluZygpKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygp
KQogICAgIHsKICAgICAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSh1cmws
IHJlc3BvbnNlLCB0eXBlLCBidWZmZXIsIHBhdGgpKTsKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVuc2ln
bmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXRoKTsK
IAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICB1bnNpZ25lZCBtX3N0b3JhZ2VJRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCmluZGV4IDQzYzczMTIuLjNjNjI0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3Rl
bS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgIlNR
TGl0ZVRyYW5zYWN0aW9uLmgiCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9y
PFJlY29yZD4gbV9yZWNvcmRzOwogfTsKIAotc3RhdGljIHVuc2lnbmVkIHVybEhvc3RIYXNoKGNv
bnN0IEtVUkwmIHVybCkKK3N0YXRpYyB1bnNpZ25lZCB1cmxIb3N0SGFzaChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICB1bnNpZ25lZCBob3N0U3RhcnQgPSB1cmwuaG9zdFN0YXJ0KCk7CiAgICAgdW5z
aWduZWQgaG9zdEVuZCA9IHVybC5ob3N0RW5kKCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGlj
IHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gQWxyZWFk
eUhhc2hlZDo6YXZvaWREZWxldGVkVmFsdWUoU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1h
c2tUb3A4Qml0cyh1cmxTdHJpbmcuY2hhcmFjdGVyczE2KCkgKyBob3N0U3RhcnQsIGhvc3RFbmQg
LSBob3N0U3RhcnQpKTsKIH0KIAotQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpCitBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVHcm91
cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIG9wZW5EYXRhYmFzZShmYWxzZSk7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMTM1LDcgKzEzNSw3IEBAIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNv
bnN0IEtVUkwmIG1hbmlmCiAgICAgcmV0dXJuIGdyb3VwOwogfSAgICAKIAotQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91
cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCkKIHsKICAgICBBU1NFUlQoIW1hbmlmZXN0VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKTsKIApAQCAtMTYwLDcgKzE2MCw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3QgS1VSCiAgICAg
cmV0dXJuIGdyb3VwOwogfQogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJM
KSBjb25zdAorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZmluZEluTWVtb3J5Q2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NhY2hlc0luTWVtb3J5LmdldChtYW5pZmVzdFVSTCk7CiB9CkBAIC0xODks
NyArMTg5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZE1hbmlmZXN0SG9z
dEhhc2hlcygpCiAgICAgICAgIG1fY2FjaGVIb3N0U2V0LmFkZChzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDApKSk7CiB9ICAgIAogCi1BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwu
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JV
UkwoY29uc3QgS1VSTCYgdXJsCiAgICAgCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJl
c3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewotICAgICAgICBLVVJM
IG1hbmlmZXN0VVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHN0YXRlbWVudC5nZXRDb2x1bW5U
ZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywg
c3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAgIGlmIChtX2NhY2hlc0luTWVt
b3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjY2
LDcgKzI2Niw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsCiAgICAgcmV0dXJuIDA7CiB9CiAK
LUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNr
Q2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwpCitBcHBsaWNhdGlvbkNhY2hlR3JvdXAq
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKCF1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwog
CkBAIC0yNzgsNyArMjc4LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEsKICAgICAgICAgQVNT
RVJUKCFncm91cC0+aXNPYnNvbGV0ZSgpKTsKIAogICAgICAgICBpZiAoQXBwbGljYXRpb25DYWNo
ZSogY2FjaGUgPSBncm91cC0+bmV3ZXN0Q2FjaGUoKSkgewotICAgICAgICAgICAgS1VSTCBmYWxs
YmFja1VSTDsKKyAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAgICAgICAgIGlmIChj
YWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNl
KHVybCwgJmZhbGxiYWNrVVJMKSkKQEAgLTI5OSw3ICsyOTksNyBAQCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0NhY2hlR3JvdXBGb3JVUkwo
Y29uc3QgSwogICAgIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0
ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKLSAgICAgICAgS1VSTCBtYW5pZmVzdFVS
TCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7Cisg
ICAgICAgIFVSTCBtYW5pZmVzdFVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHN0YXRlbWVudC5n
ZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICBpZiAobV9jYWNoZXNJbk1lbW9yeS5jb250YWlu
cyhtYW5pZmVzdFVSTCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMxMyw3ICszMTMsNyBA
QCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFj
a0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICB1bnNpZ25lZCBuZXdlc3RDYWNoZUlE
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXRlbWVudC5nZXRDb2x1bW5JbnQ2NCgyKSk7CiAg
ICAgICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBjYWNoZSA9IGxvYWRDYWNoZShuZXdlc3RD
YWNoZUlEKTsKIAotICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgICAgICBVUkwgZmFsbGJh
Y2tVUkw7CiAgICAgICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdCh1cmwpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxs
YmFja05hbWVzcGFjZSh1cmwsICZmYWxsYmFja1VSTCkpCkBAIC03MjksNyArNzI5LDcgQEAgYm9v
bCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZSogY2FjaGUs
IFJlc291cmNlU3RvcmFnZUlESm8KICAgICB9CiAgICAgCiAgICAgLy8gU3RvcmUgdGhlIG9ubGlu
ZSB3aGl0ZWxpc3QKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCA9IGNh
Y2hlLT5vbmxpbmVXaGl0ZWxpc3QoKTsKKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgb25saW5lV2hp
dGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgpOwogICAgIHsKICAgICAgICAgc2l6ZV90
IHdoaXRlbGlzdFNpemUgPSBvbmxpbmVXaGl0ZWxpc3Quc2l6ZSgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdoaXRlbGlzdFNpemU7ICsraSkgewpAQCAtMTExMCw3ICsxMTEwLDcg
QEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUg
KChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgewotICAg
ICAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpOworICAgICAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgY2FjaGVTdGF0ZW1lbnQu
Z2V0Q29sdW1uVGV4dCgwKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUg
PSBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSk7CiAKQEAgLTExNTYsOSArMTE1Niw5IEBA
IFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Omxv
YWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlCiAgICAgICAgIHJldHVybiAwOwogICAgIHdoaXRlbGlz
dFN0YXRlbWVudC5iaW5kSW50NjQoMSwgc3RvcmFnZUlEKTsKICAgICAKLSAgICBWZWN0b3I8S1VS
TD4gd2hpdGVsaXN0OworICAgIFZlY3RvcjxVUkw+IHdoaXRlbGlzdDsKICAgICB3aGlsZSAoKHJl
c3VsdCA9IHdoaXRlbGlzdFN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgCi0gICAg
ICAgIHdoaXRlbGlzdC5hcHBlbmQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHdoaXRlbGlzdFN0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApKSk7CisgICAgICAgIHdoaXRlbGlzdC5hcHBlbmQoVVJMKFBh
cnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKIAog
ICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgbG9hZCBjYWNoZSBvbmxpbmUgd2hpdGVsaXN0LCBlcnJvciBcIiVzXCIiLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTExODgsNyArMTE4OCw3IEBAIFBhc3NSZWZQdHI8QXBw
bGljYXRpb25DYWNoZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25l
ZCBzdG9yYWdlCiAgICAgCiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAg
IHdoaWxlICgocmVzdWx0ID0gZmFsbGJhY2tTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxSZXN1bHRS
b3cpIAotICAgICAgICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihLVVJMKFBhcnNlZFVS
TFN0cmluZywgZmFsbGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSksIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKSkpOworICAgICAg
ICBmYWxsYmFja1VSTHMuYXBwZW5kKG1ha2VfcGFpcihVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxs
YmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgZmFs
bGJhY2tTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSkpKTsKIAogICAgIGlmIChyZXN1bHQgIT0g
U1FMUmVzdWx0RG9uZSkKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgbG9hZCBmYWxsYmFj
ayBVUkxzLCBlcnJvciBcIiVzXCIiLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTEz
MzcsNyArMTMzNyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlQ29weU9m
Q2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSwgQXBwCiAgICAgcmV0dXJuIGNvcHlT
dG9yYWdlLnN0b3JlTmV3ZXN0Q2FjaGUoZ3JvdXBDb3B5LmdldCgpKTsKIH0KIAotYm9vbCBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJMPiogdXJscykKK2Jv
b2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiogdXJs
cykKIHsKICAgICBBU1NFUlQodXJscyk7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKQEAgLTEz
NTAsNyArMTM1MCw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om1hbmlmZXN0VVJM
cyhWZWN0b3I8S1VSTD4qIHVybHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHdoaWxl
IChzZWxlY3RVUkxzLnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCi0gICAgICAgIHVybHMtPmFwcGVu
ZChLVVJMKFBhcnNlZFVSTFN0cmluZywgc2VsZWN0VVJMcy5nZXRDb2x1bW5UZXh0KDApKSk7Cisg
ICAgICAgIHVybHMtPmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBzZWxlY3RVUkxzLmdldENv
bHVtblRleHQoMCkpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTUxNCw3ICsxNTE0LDcg
QEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFTaXplKCkK
IAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2luc1dpdGhDYWNoZShIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYgb3JpZ2lucykKIHsKLSAgICBWZWN0b3I8S1VS
TD4gdXJsczsKKyAgICBWZWN0b3I8VVJMPiB1cmxzOwogICAgIGlmICghbWFuaWZlc3RVUkxzKCZ1
cmxzKSkgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byByZXRyaWV2ZSBBcHBsaWNhdGlv
bkNhY2hlIG1hbmlmZXN0IFVSTHMiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApp
bmRleCBhZjY0MzdlLi5lNGIzMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlOwogY2xhc3MgQXBwbGljYXRpb25DYWNoZUdyb3VwOwog
Y2xhc3MgQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgU3RvcmFnZUlESm91cm5h
bDsKQEAgLTY5LDExICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdG9yZVVwZGF0ZWRRdW90
YUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiosIGludDY0X3QgcXVvdGEpOwogICAgIGJv
b2wgY2hlY2tPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqLCBBcHBsaWNhdGlvbkNh
Y2hlKiBvbGRDYWNoZSwgQXBwbGljYXRpb25DYWNoZSogbmV3Q2FjaGUsIGludDY0X3QmIHRvdGFs
U3BhY2VOZWVkZWQpOwogCi0gICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBjYWNoZUdyb3VwRm9y
VVJMKGNvbnN0IEtVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbS4K
LSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25z
dCBLVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFsbGJhY2sgZW50cnkgdG8gbG9hZCBhIG1h
aW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGluZyBmYWlscy4KKyAgICBBcHBsaWNhdGlv
bkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRvIGxv
YWQgYSBtYWluIHJlc291cmNlIGZyb20uCisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmYWxs
YmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgVVJMJik7IC8vIENhY2hlIHRoYXQgaGFzIGEgZmFs
bGJhY2sgZW50cnkgdG8gbG9hZCBhIG1haW4gcmVzb3VyY2UgZnJvbSBpZiBub3JtYWwgbG9hZGlu
ZyBmYWlscy4KIAotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVH
cm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7Ci0gICAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBmaW5kSW5NZW1vcnlDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKSBjb25zdDsK
KyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3Qg
VVJMJiBtYW5pZmVzdFVSTCk7CisgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kSW5NZW1v
cnlDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0OwogICAgIHZvaWQgY2Fj
aGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICB2b2lkIGNhY2hl
R3JvdXBNYWRlT2Jzb2xldGUoQXBwbGljYXRpb25DYWNoZUdyb3VwKik7CiAgICAgICAgIApAQCAt
ODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGJvb2wgc3RvcmVDb3B5T2ZD
YWNoZShjb25zdCBTdHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHBsaWNhdGlvbkNhY2hlSG9zdCop
OwogCi0gICAgYm9vbCBtYW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxzKTsKKyAgICBib29s
IG1hbmlmZXN0VVJMcyhWZWN0b3I8VVJMPiogdXJscyk7CiAgICAgYm9vbCBjYWNoZUdyb3VwU2l6
ZShjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMLCBpbnQ2NF90KiBzaXplKTsKICAgICBib29sIGRl
bGV0ZUNhY2hlR3JvdXAoY29uc3QgU3RyaW5nJiBtYW5pZmVzdFVSTCk7CiAgICAgdm9pZCB2YWN1
dW1EYXRhYmFzZUZpbGUoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKCk7CiAgICAgUGFzc1JlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlPiBsb2FkQ2FjaGUodW5zaWduZWQgc3RvcmFnZUlEKTsKLSAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIGxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpOwogICAgIAogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91cm5hbDxBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+IFJlc291cmNlU3RvcmFnZUlESm91cm5hbDsKICAgICB0eXBlZGVmIFN0b3JhZ2VJ
REpvdXJuYWw8QXBwbGljYXRpb25DYWNoZUdyb3VwPiBHcm91cFN0b3JhZ2VJREpvdXJuYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25D
YWNoZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2Fj
aGUuaAppbmRleCA5NTg3MTBjLi5iMDU0Y2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQxLDcgKzQxLDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
VVJMOwogCiAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgYmUgbWFya2VkIEZJTkFMIG9uY2Ug
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3PiBpcyBmaXhlZC4KIGNsYXNzIERPTUFwcGxpY2F0
aW9uQ2FjaGUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxET01B
cHBsaWNhdGlvbkNhY2hlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1Ymxp
YyBET01XaW5kb3dQcm9wZXJ0eSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCBjOTg1YTljLi5iYjFmMDM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAKQEAgLTI2
LDggKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNl
ci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1l
cy5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gTW9kZSB7IEV4cGxpY2l0LCBGYWxsYmFjaywgT25saW5lV2hpdGVs
aXN0LCBVbmtub3duIH07CiAgICAgCi1ib29sIHBhcnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFu
aWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVz
dCkKK2Jvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzdCYgbWFuaWZlc3QpCiB7CiAgICAgQVNTRVJUKG1h
bmlmZXN0LmV4cGxpY2l0VVJMcy5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtYW5pZmVzdC5vbmxp
bmVXaGl0ZWxpc3RlZFVSTHMuaXNFbXB0eSgpKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIHBh
cnNlTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW5ndGgsIE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBLVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFj
dGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgICAgIFVSTCB1cmwobWFu
aWZlc3RVUkwsIFN0cmluZyhsaW5lLmNoYXJhY3RlcnMoKSwgcCAtIGxpbmUuY2hhcmFjdGVycygp
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIHBhcnNlTWFuaWZl
c3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgs
IE1hbmlmZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBLVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgU3RyaW5n
KGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgICAg
IFVSTCBuYW1lc3BhY2VVUkwobWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmNoYXJhY3RlcnMoKSwg
cCAtIGxpbmUuY2hhcmFjdGVycygpKSk7CiAgICAgICAgICAgICBpZiAoIW5hbWVzcGFjZVVSTC5p
c1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobmFt
ZXNwYWNlVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQpAQCAtMTY0LDcgKzE2NCw3IEBAIGJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICB3aGlsZSAocCA8IGxpbmVFbmQgJiYg
KnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAogICAgICAgICAgICAgICAgIHArKzsKIAotICAgICAg
ICAgICAgS1VSTCBmYWxsYmFja1VSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGZhbGxiYWNrU3RhcnQs
IHAgLSBmYWxsYmFja1N0YXJ0KSk7CisgICAgICAgICAgICBVUkwgZmFsbGJhY2tVUkwobWFuaWZl
c3RVUkwsIFN0cmluZyhmYWxsYmFja1N0YXJ0LCBwIC0gZmFsbGJhY2tTdGFydCkpOwogICAgICAg
ICAgICAgaWYgKCFmYWxsYmFja1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBpZiAoZmFsbGJhY2tVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJz
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCmlu
ZGV4IDM5Yjc2MGQuLjI4MzE1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9NYW5pZmVzdFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5oCkBAIC0zMCwxNiArMzAsMTYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAgICBzdHJ1Y3Qg
TWFuaWZlc3QgewotICAgICAgICBWZWN0b3I8S1VSTD4gb25saW5lV2hpdGVsaXN0ZWRVUkxzOwor
ICAgICAgICBWZWN0b3I8VVJMPiBvbmxpbmVXaGl0ZWxpc3RlZFVSTHM7CiAgICAgICAgIEhhc2hT
ZXQ8U3RyaW5nPiBleHBsaWNpdFVSTHM7CiAgICAgICAgIEZhbGxiYWNrVVJMVmVjdG9yIGZhbGxi
YWNrVVJMczsKICAgICAgICAgYm9vbCBhbGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgLy8gV2lsZGNh
cmQgZm91bmQgaW4gTkVUV09SSyBzZWN0aW9uLgogICAgIH07CiAKLSAgICBib29sIHBhcnNlTWFu
aWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgsIE1hbmlmZXN0Jik7CisgICAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZl
c3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0Jik7CiAKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rvcnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCmlu
ZGV4IDE0YzgxZmQuLmQ3NzViYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXR5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbihjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7Cit0eXBlZGVmIFBhc3NSZWZQdHI8
QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVy
Kik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiosIENh
c2VGb2xkaW5nSGFzaD4gQXJjaGl2ZU1JTUVUeXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5j
dGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3NlcyByZXR1cm4gUGFzc1JlZlB0ciB0byBjb25jcmV0
ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0b3IgbWFrZXMgdGhlIGZ1bmN0
aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmNo
aXZlQ2xhc3M+IHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRl
KGNvbnN0IEtVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlRmFjdG9y
eUNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgcmV0
dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRlKHVybCwgYnVmZmVyKTsKIH0KQEAgLTgyLDcgKzgyLDcg
QEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTWltZVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKICAgICByZXR1cm4gIW1pbWVUeXBlLmlzRW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5
cGVzKCkuY29udGFpbnMobWltZVR5cGUpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hp
dmVGYWN0b3J5OjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5
OjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKIHsKICAgICBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbiogZnVuY3Rpb24gPSBt
aW1lVHlwZS5pc0VtcHR5KCkgPyAwIDogYXJjaGl2ZU1JTUVUeXBlcygpLmdldChtaW1lVHlwZSk7
CiAgICAgcmV0dXJuIGZ1bmN0aW9uID8gZnVuY3Rpb24odXJsLCBkYXRhKSA6IFBhc3NSZWZQdHI8
QXJjaGl2ZT4oMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZh
Y3RvcnkuaAppbmRleCBkMDQwNWNhLi41NGI2NGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0YXRpYyBi
b29sIGlzQXJjaGl2ZU1pbWVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlPiBjcmVh
dGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcygpOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKaW5kZXggN2RlZGM5My4uMjEwMDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNl
KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitpbmxpbmUgQXJj
aGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKHVybCwgcmVzcG9uc2Us
IGRhdGEpCiAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV90ZXh0RW5jb2Rpbmco
dGV4dEVuY29kaW5nKQpAQCAtNDIsNyArNDIsNyBAQCBpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpB
cmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUgog
ewogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1Bhc3NSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXQKICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEFyY2hpdmVSZXNvdXJjZShkYXRhLCB1cmwsIG1pbWVUeXBl
LCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUGFzc1JlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQorUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShkYXRhLCB1
cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKSwgU3Ry
aW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmgKaW5kZXggOTdkNmUzMi4uOWI0YjAxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKQEAgLTM1LDggKzM1LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBcmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMg
U3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IEtVUkwm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBLVVJMJiwK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4sIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwKICAg
ICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZElnbm9yZVdoZW5VbmFyY2hp
dmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nOyB9CiAK
IHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OworICAgIEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uLmNwcAppbmRleCBhYTRhODcwLi42NGVjMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNw
cApAQCAtNjgsMTEgKzY4LDExIEBAIHZvaWQgQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6YWRk
UmVzb3VyY2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlCiAgICAgaWYgKCFy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVzb3Vy
Y2UtPnVybCgpOyAvLyBnZXQgYmVmb3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAod2hpY2ggc2V0cyBp
dCB0byAwKQorICAgIGNvbnN0IFVSTCYgdXJsID0gcmVzb3VyY2UtPnVybCgpOyAvLyBnZXQgYmVm
b3JlIHBhc3NpbmcgUGFzc1JlZlB0ciAod2hpY2ggc2V0cyBpdCB0byAwKQogICAgIG1fc3VicmVz
b3VyY2VzLnNldCh1cmwsIHJlc291cmNlKTsKIH0KIAotQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYgdXJs
KQorQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphcmNoaXZlUmVz
b3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQXJjaGl2ZVJlc291cmNlKiByZXNv
dXJjZSA9IG1fc3VicmVzb3VyY2VzLmdldCh1cmwpOwogICAgIGlmICghcmVzb3VyY2UpCkBAIC04
MSw3ICs4MSw3IEBAIEFyY2hpdmVSZXNvdXJjZSogQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6
YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgcmV0dXJuIHJlc291cmNl
OwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OnBv
cFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgS1VSTCYgdXJs
KQorUGFzc1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjpwb3BTdWJm
cmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZlID0gbV9zdWJmcmFtZXMudGFrZShmcmFtZU5hbWUp
OwogICAgIGlmIChhcmNoaXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCmluZGV4IDE1ZWY4YmMuLjVhZTRi
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkFy
Y2hpdmUuaCIKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4pOwogICAgIHZvaWQgYWRk
QWxsUmVzb3VyY2VzKEFyY2hpdmUqKTsKICAgICAKLSAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hp
dmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7Ci0gICAgUGFzc1JlZlB0cjxBcmNoaXZlPiBw
b3BTdWJmcmFtZUFyY2hpdmUoY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IEtVUkwmKTsK
KyAgICBBcmNoaXZlUmVzb3VyY2UqIGFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmKTsK
KyAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgCiBwcml2YXRlOiAgICAKICAgICBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBtX3N1YnJlc291cmNlczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggNDEwMWFkYy4uZmJlOWUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiVVJMSGFzaC5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTIyNyw3ICsyMjcsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpYwog
ICAgICAgICByZXNwb25zZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0
RGF0YShyZXNvdXJjZVJlc3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAg
IH0KICAgICAKLSAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVy
Ojp3cmFwQ0ZEYXRhKHJlc291cmNlRGF0YSksIEtVUkwoS1VSTCgpLCB1cmwpLCBtaW1lVHlwZSwg
dGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKKyAgICByZXR1cm4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjp3cmFwQ0ZEYXRhKHJlc291cmNlRGF0YSksIFVS
TChVUkwoKSwgdXJsKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25z
ZSk7CiB9CiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKCkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlCiAK
IFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSwgZGF0YSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCitQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKICAgICAK
QEAgLTUwMSwxOCArNTAxLDE4IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAgICAgQVNTRVJU
KGZyYW1lKTsKICAgICAKICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpOwotICAgIEtVUkwgcmVz
cG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAgICBVUkwgcmVzcG9uc2VVUkwgPSByZXNwb25z
ZS51cmwoKTsKICAgICAKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNwb25zZSB3
aXRob3V0IGEgVVJMIGhlcmUKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTQ1NDkzNT4KICAgICBp
ZiAocmVzcG9uc2VVUkwuaXNOdWxsKCkpCi0gICAgICAgIHJlc3BvbnNlVVJMID0gS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXNwb25zZVVSTCA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICAKICAgICBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZSh1dGY4
QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5taW1lVHlwZSgpLCAi
VVRGLTgiLCBmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiAKICAgICBWZWN0b3I8UGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgVmVjdG9yPFBh
c3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IHN1YnJlc291cmNlczsKLSAgICBIYXNoU2V0PEtV
Ukw+IHVuaXF1ZVN1YnJlc291cmNlczsKKyAgICBIYXNoU2V0PFVSTD4gdW5pcXVlU3VicmVzb3Vy
Y2VzOwogCiAgICAgc2l6ZV90IG5vZGVzU2l6ZSA9IG5vZGVzLnNpemUoKTsgICAgCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBub2Rlc1NpemU7ICsraSkgewpAQCAtNTMwLDEzICs1MzAsMTMg
QEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gYXJjaGl2ZSBzdWJmcmFtZSAlcyIsIGNoaWxkRnJh
bWUtPnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBMaXN0SGFzaFNldDxLVVJMPiBzdWJyZXNvdXJjZVVSTHM7
CisgICAgICAgICAgICBMaXN0SGFzaFNldDxVUkw+IHN1YnJlc291cmNlVVJMczsKICAgICAgICAg
ICAgIG5vZGUtPmdldFN1YnJlc291cmNlVVJMcyhzdWJyZXNvdXJjZVVSTHMpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICAgICAgICAgIExpc3RIYXNoU2V0PEtVUkw+
OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgpOwotICAgICAgICAgICAg
Zm9yIChMaXN0SGFzaFNldDxLVVJMPjo6aXRlcmF0b3IgaXRlciA9IHN1YnJlc291cmNlVVJMcy5i
ZWdpbigpOyBpdGVyICE9IGl0ZXJFbmQ7ICsraXRlcikgewotICAgICAgICAgICAgICAgIGNvbnN0
IEtVUkwmIHN1YnJlc291cmNlVVJMID0gKml0ZXI7CisgICAgICAgICAgICBMaXN0SGFzaFNldDxV
Ukw+OjppdGVyYXRvciBpdGVyRW5kID0gc3VicmVzb3VyY2VVUkxzLmVuZCgpOworICAgICAgICAg
ICAgZm9yIChMaXN0SGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gc3VicmVzb3VyY2VVUkxz
LmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytpdGVyKSB7CisgICAgICAgICAgICAgICAgY29u
c3QgVVJMJiBzdWJyZXNvdXJjZVVSTCA9ICppdGVyOwogICAgICAgICAgICAgICAgIGlmICh1bmlx
dWVTdWJyZXNvdXJjZXMuY29udGFpbnMoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtNTczLDcgKzU3Myw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3Ry
aW5nCiAgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCA9IGljb25EYXRhYmFzZSgpLnN5bmNo
cm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocmVzcG9uc2VVUkwpOwogICAgICAgICBpZiAoIWljb25V
UkwuaXNFbXB0eSgpICYmIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZv
ckljb25VUkwoaWNvblVSTCkpIHsKICAgICAgICAgICAgIGlmIChJbWFnZSogaWNvbkltYWdlID0g
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChyZXNwb25zZVVSTCwgSW50
U2l6ZSgxNiwgMTYpKSkgewotICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25JbWFnZS0+ZGF0YSgp
LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgaWNvblVSTCksICJpbWFnZS94LWljb24iLCAiIiwgIiIp
KQorICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGljb25JbWFnZS0+ZGF0YSgpLCBVUkwoUGFyc2VkVVJM
U3RyaW5nLCBpY29uVVJMKSwgImltYWdlL3gtaWNvbiIsICIiLCAiIikpCiAgICAgICAgICAgICAg
ICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IGNlMWI3MTIuLmRiYWU5ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZSA6IHB1YmxpYyBBcmNoaXZlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUo
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoU2hhcmVk
QnVmZmVyKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKik7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFBhc3NSZWZQdHI8QXJjaGl2
ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+
JiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoTm9kZSosIEZyYW1lRmlsdGVyKiA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKaW5kZXggZjgzMTVj
OS4uNmVjMjBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTEFyY2hpdmUuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxNSFRN
TEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1IVE1MQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hp
dmU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK1Bhc3NSZWZQ
dHI8TUhUTUxBcmNoaXZlPiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hh
cmVkQnVmZmVyKiBkYXRhKQogewogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkg
bG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxvY2FsIFVSTHMuCiAgICAgaWYgKCFTY2hlbWVSZWdpc3Ry
eTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKaW5kZXgg
ZGQxNGQ5OS4uMTRjZDg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gTUhUTUw7IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciopOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1
ZmZlciopOwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBnZW5lcmF0ZU1I
VE1MRGF0YShQYWdlKik7CiAgICAgLy8gQmluYXJ5IGVuY29kaW5nIHJlc3VsdHMgaW4gc21hbGxl
ciBNSFRNTCBmaWxlcyBidXQgdGhleSBtaWdodCBub3Qgd29yayBpbiBvdGhlciBicm93c2Vycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcAppbmRleCAyZDcyYTEyLi5kODc2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAg
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0KGNv
bnN0IE1JTUVIZWFkZXImIG1pbWVIZWEKICAgICAvLyBGSVhNRTogdGhlIFVSTCBpbiB0aGUgTUlN
RSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNob3VsZCByZXNvbHZlIGl0IGlmIGl0IGlz
LgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdheXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0
cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNzZWN0aW9uLTUKICAgICAvLyBJRSBhbmQg
RmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUgb25seSBhYnNvbHV0ZSBVUkxzLgotICAg
IEtVUkwgbG9jYXRpb24gPSBLVVJMKEtVUkwoKSwgbWltZUhlYWRlci5jb250ZW50TG9jYXRpb24o
KSk7CisgICAgVVJMIGxvY2F0aW9uID0gVVJMKFVSTCgpLCBtaW1lSGVhZGVyLmNvbnRlbnRMb2Nh
dGlvbigpKTsKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoY29udGVudEJ1ZmZl
ciwgbG9jYXRpb24sIG1pbWVIZWFkZXIuY29udGVudFR5cGUoKSwgbWltZUhlYWRlci5jaGFyc2V0
KCksIFN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZv
bnQuY3BwCmluZGV4IDcyNzNiMDQuLjhjNTVkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBGb250UGxhdGZvcm1EYXRh
IENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKGZsb2F0IHNpemUsIGJvb2wg
Ym9sZCwgYgogYm9vbCBDYWNoZWRGb250OjplbnN1cmVTVkdGb250RGF0YSgpCiB7CiAgICAgaWYg
KCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5n
KCkgJiYgbV9kYXRhKSB7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3Vt
ZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAKICAgICAgICAgUmVmUHRyPFRleHRSZXNv
dXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxp
Y2F0aW9uL3htbCIpOwogICAgICAgICBTdHJpbmcgc3ZnU291cmNlID0gZGVjb2Rlci0+ZGVjb2Rl
KG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBmMzYxYWZmLi44MzlkZDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTM0
LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC0y
MzAsNyArMjMwLDcgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgVHlwZSB0eXBlKQogCiAgICAgaWYgKCFtX3Jlc291cmNlUmVx
dWVzdC51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IEtVUkwgdXJsRm9yQ2FjaGUgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
SWZOZWVkZWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmxGb3JDYWNoZSA9
IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChtX3Jlc291cmNl
UmVxdWVzdC51cmwoKSk7CiAgICAgaWYgKHVybEZvckNhY2hlLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKQogICAgICAgICByZXR1cm47CiAgICAgbV9mcmFnbWVudElkZW50aWZpZXJGb3JSZXF1ZXN0
ID0gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CkBAIC0zNDQs
NyArMzQ0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc28KICAgICAvLyBXZSBzaG91bGQgbG9v
ayBpbnRvIHJlbW92aW5nIHRoZSBleHBlY3RhdGlvbiBvZiB0aGF0IGtub3dsZWRnZSBmcm9tIHRo
ZSBwbGF0Zm9ybSBuZXR3b3JrIHN0YWNrcy4KICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCht
X3Jlc291cmNlUmVxdWVzdCk7CiAgICAgaWYgKCFtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVl
c3QuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgICAg
ICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICAgICAgdXJsLnNldEZyYWdtZW50SWRlbnRp
ZmllcihtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QpOwogICAgICAgICByZXF1ZXN0LnNl
dFVSTCh1cmwpOwogICAgICAgICBtX2ZyYWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QgPSBTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5k
ZXggOGVmZTk0OS4uMDY2MzI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgeyByZXR1cm4g
bV9yZXNvdXJjZVJlcXVlc3Q7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC51cmwoKTt9CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKICAgICBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZVJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKTsgfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCAzNDYzNzg2Li5lNGNiMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0MiwxMyArMTQyLDEzIEBAIENh
Y2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKQogCiBDYWNoZWRSZXNv
dXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VVUkwpIGNvbnN0IAogewotICAgIEtVUkwgdXJsID0gbV9kb2N1bWVudC0+Y29tcGxl
dGVVUkwocmVzb3VyY2VVUkwpOworICAgIFVSTCB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVS
TChyZXNvdXJjZVVSTCk7CiAgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlKHVybCk7IAogfQogCi1D
YWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNlKGNvbnN0
IEtVUkwmIHJlc291cmNlVVJMKSBjb25zdAorQ2FjaGVkUmVzb3VyY2UqIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYWNoZWRSZXNvdXJjZShjb25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdAogewot
ICAgIEtVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVl
ZGVkKHJlc291cmNlVVJMKTsKKyAgICBVUkwgdXJsID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdt
ZW50SWRlbnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKICAgICByZXR1cm4gbV9kb2N1bWVu
dFJlc291cmNlcy5nZXQodXJsKS5nZXQoKTsgCiB9CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RJbWFnZShDYWNoZWRSZXNvdQogewogICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKICAg
ICAgICAgaWYgKGYtPmxvYWRlcigpLnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCgp
ICE9IEZyYW1lTG9hZGVyOjpOb0Rpc21pc3NhbCkgewotICAgICAgICAgICAgS1VSTCByZXF1ZXN0
VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICAgICAgICAgIFVSTCBy
ZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAgICAgICAg
IGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQ
cmVsb2FkKCkpKQogICAgICAgICAgICAgICAgIFBpbmdMb2FkZXI6OmxvYWRJbWFnZShmLCByZXF1
ZXN0VVJMKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0Q1NTU3R5bGVTCiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxl
U2hlZXQ+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0eWxlU2hlZXQoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIEtVUkwgdXJsID0gTWVtb3J5Q2Fj
aGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpOworICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CiAKICNp
ZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNl
UmVxdWVzdCgpLnNldENhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5jYWNo
ZVBhcnRpdGlvbigpKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RNYWluUmVzb3Vy
YwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6TWFpblJlc291cmNlLCByZXF1ZXN0KS5nZXQoKSk7CiB9CiAK
LWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5
cGUsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKQEAgLTMwNCw3ICszMDQsNyBAQCBib29sIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLCBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBib29sIGZvclByZWxv
YWQpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKIHsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlm
ICghZm9yUHJlbG9hZCkKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKENh
YwogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnVybCgpOwogICAgIAogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJzZXQgJyVzJywgcHJpb3JpdHk9JWQs
IGZvclByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkubGF0
aW4xKCkuZGF0YSgpLCByZXF1ZXN0LmNoYXJzZXQoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3Qu
cHJpb3JpdHkoKSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpOwogICAgIApAQCAtNjYwLDcgKzY2MCw3
IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgcmV0dXJuIFVzZTsKIH0KIAotdm9pZCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwm
IHVybCkgY29uc3QKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVk
TWVzc2FnZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47CkBAIC03MDMsMTIgKzcwMywxMiBAQCB2b2lkIENhY2hlZFJlc291cmNl
TG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlKQogICAgIHJlbG9hZEltYWdlc0lm
Tm90RGVmZXJyZWQoKTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xpZW50RGVm
ZXJzSW1hZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGZyYW1lKCkgJiYgIWZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmFsbG93SW1hZ2UobV9pbWFn
ZXNFbmFibGVkLCB1cmwpOwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGRE
ZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAg
ICByZXR1cm4gY2xpZW50RGVmZXJzSW1hZ2UodXJsKSB8fCAhbV9hdXRvTG9hZEltYWdlczsKIH0K
QEAgLTg4Nyw3ICs4ODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UHJl
bG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdQogCiBib29sIENhY2hl
ZFJlc291cmNlTG9hZGVyOjppc1ByZWxvYWRlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29u
c3QKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmxT
dHJpbmcpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9kb2N1bWVudC0+Y29tcGxldGVVUkwodXJs
U3RyaW5nKTsKIAogICAgIGlmIChtX3ByZWxvYWRzKSB7CiAgICAgICAgIExpc3RIYXNoU2V0PENh
Y2hlZFJlc291cmNlKj46Oml0ZXJhdG9yIGVuZCA9IG1fcHJlbG9hZHMtPmVuZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA0NzYwODMyLi45Yzk1OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRl
cjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRl
ciBwcm92aWRlcyBhIHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVtb3J5Q2FjaGUKIC8v
IGFuZCBlbmZvcmNlcyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQgcnVsZXMgZm9yIHJl
c291cmNlIHJldmFsaWRhdGlvbi4KQEAgLTk3LDEwICs5NywxMCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIC8vIExvZ3MgYW4gYWNjZXNzIGRlbmllZCBtZXNzYWdlIHRvIHRoZSBjb25zb2xlIGZv
ciB0aGUgc3BlY2lmaWVkIFVSTC4KLSAgICB2b2lkIHByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShj
b25zdCBLVVJMJiB1cmwpIGNvbnN0OworICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdl
KGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKIAogICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZShjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKGNvbnN0IEtVUkwmIHVybCkgY29uc3Q7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdDsKICAgICAKICAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gPiBEb2N1
bWVudFJlc291cmNlTWFwOwogICAgIGNvbnN0IERvY3VtZW50UmVzb3VyY2VNYXAmIGFsbENhY2hl
ZFJlc291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSZXNvdXJjZXM7IH0KQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7
CiAKLSAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIAogICAg
IENhY2hlUG9saWN5IGNhY2hlUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlKSBjb25zdDsKICAg
ICAKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVsb2FkKENhY2hlZFJl
c291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJz
ZXQpOwogICAgIHZvaWQgY2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKTsKICAgICB2b2lkIHByaW50
UHJlbG9hZFN0YXRzKCk7Ci0gICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBLVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9vbCBmb3JQcmVs
b2FkID0gZmFsc2UpOworICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwg
Y29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9vbCBmb3JQcmVsb2Fk
ID0gZmFsc2UpOwogCiAgICAgc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgZGVm
YXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBwcml2
YXRlOgogICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3ko
Q2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZm9yUHJlbG9hZCwg
Q2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVzb3VyY2UsIENhY2hlZFJlc291cmNlUmVxdWVzdDo6
RGVmZXJPcHRpb24pIGNvbnN0OwogICAgIAogICAgIGJvb2wgc2hvdWxkQ29udGludWVBZnRlck5v
dGlmeWluZ0xvYWRlZEZyb21NZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSopOwotICAgIGJvb2wg
Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmKSBj
b25zdDsKKyAgICBib29sIGNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJl
c291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+Kik7CiAgICAgdm9p
ZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CiAKLSAgICBib29sIGNsaWVudERlZmVyc0ltYWdl
KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNsaWVudERlZmVyc0ltYWdlKGNvbnN0IFVS
TCYpIGNvbnN0OwogICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaAppbmRleCBhNDg4YWYw
Li4wMGNjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTdHlsZVNoZWV0Q2xpZW50LmgKQEAgLTMyLDE1ICszMiwxNSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRDU1NTdHlsZVNoZWV0OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIAogY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJj
ZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5bGVTaGVldENsaWVudCgp
IHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkg
eyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KICAgICB2aXJ0dWFsIENhY2hlZFJlc291cmNlQ2xp
ZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBleHBlY3RlZFR5cGUo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyog
aHJlZiAqLywgY29uc3QgS1VSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFy
c2V0ICovLCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KikgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAv
KiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIHNoZWV0ICovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IFVS
TCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBjaGFyc2V0ICovLCBjb25zdCBDYWNo
ZWRDU1NTdHlsZVNoZWV0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldFhTTFN0eWxlU2hlZXQo
Y29uc3QgU3RyaW5nJiAvKiBocmVmICovLCBjb25zdCBVUkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0
IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggYjY3MjMz
OC4uMzdjNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9y
eUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCkBAIC03NCw3ICs3NCw3IEBAIE1lbW9yeUNhY2hlOjpNZW1vcnlDYWNoZSgpCiB7CiB9CiAK
LUtVUkwgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0
IEtVUkwmIG9yaWdpbmFsVVJMKQorVVJMIE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50
aWZpZXJJZk5lZWRlZChjb25zdCBVUkwmIG9yaWdpbmFsVVJMKQogewogICAgIGlmICghb3JpZ2lu
YWxVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFVS
TDsKQEAgLTgzLDcgKzgzLDcgQEAgS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVySWZOZWVkZWQoY29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCiAgICAgLy8gdG8gYmUgdW5p
cXVlIGV2ZW4gd2hlbiB0aGV5IGRpZmZlciBieSB0aGUgZnJhZ21lbnQgaWRlbnRpZmllciBvbmx5
LgogICAgIGlmICghb3JpZ2luYWxVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAg
ICByZXR1cm4gb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCB1cmwgPSBvcmlnaW5hbFVSTDsKKyAgICBV
UkwgdXJsID0gb3JpZ2luYWxVUkw7CiAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigp
OwogICAgIHJldHVybiB1cmw7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBNZW1vcnlDYWNo
ZTo6cmV2YWxpZGF0aW9uRmFpbGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJj
ZSkKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgp
OwogfQogCi1DYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKGNvbnN0
IEtVUkwmIHJlc291cmNlVVJMKQorQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJj
ZUZvclVSTChjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIHJldHVybiByZXNvdXJjZUZv
clJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc291cmNlVVJMKSk7CiB9CkBAIC0xNzEsNyArMTcx
LDcgQEAgQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBL
VVJMJiByZXNvdXJjZVVSTCkKIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VG
b3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBBU1NFUlQo
V1RGOjppc01haW5UaHJlYWQoKSk7Ci0gICAgS1VSTCB1cmwgPSByZW1vdmVGcmFnbWVudElkZW50
aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsID0gcmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC51cmwoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BB
UlRJVElPTklORykKICAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSBtX3Jlc291cmNlcy5n
ZXQodXJsKTsKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCAyYmEzYWRiLi43ODVjZGUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtMzgsNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSAgewogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKIGNsYXNz
IENhY2hlZFJlc291cmNlOwogY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBLVVJM
OworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC0xMTIsMTMgKzExMiwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIFR5cGVTdGF0aXN0aWMgZm9udHM7CiAgICAgfTsKIAotICAgIENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJik7CisgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYpOwogICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgCiAgICAgYm9v
bCBhZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKTsKICAgICB2b2lkIHJlbW92ZShDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpIHsgZXZpY3QocmVzb3VyY2UpOyB9CiAKLSAgICBzdGF0aWMgS1VS
TCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJMJiBvcmlnaW5hbFVS
TCk7CisgICAgc3RhdGljIFVSTCByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25z
dCBVUkwmIG9yaWdpbmFsVVJMKTsKICAgICAKICAgICB2b2lkIHJldmFsaWRhdGlvblN1Y2NlZWRl
ZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKICAgICB2b2lkIHJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2
YWxpZGF0aW5nUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IGJjN2I5YzUuLmFmZTY3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBJY29u
Q29udHJvbGxlcjo6fkljb25Db250cm9sbGVyKCkKIHsKIH0KIAotS1VSTCBJY29uQ29udHJvbGxl
cjo6dXJsKCkKK1VSTCBJY29uQ29udHJvbGxlcjo6dXJsKCkKIHsKICAgICBJY29uVVJMcyBpY29u
VVJMcyA9IHVybHNGb3JUeXBlcyhGYXZpY29uKTsKLSAgICByZXR1cm4gaWNvblVSTHMuaXNFbXB0
eSgpID8gS1VSTCgpIDogaWNvblVSTHNbMF0ubV9pY29uVVJMOworICAgIHJldHVybiBpY29uVVJM
cy5pc0VtcHR5KCkgPyBVUkwoKSA6IGljb25VUkxzWzBdLm1faWNvblVSTDsKIH0KIAogSWNvblVS
TCBJY29uQ29udHJvbGxlcjo6aWNvblVSTChJY29uVHlwZSBpY29uVHlwZSkgY29uc3QKQEAgLTEx
OSw3ICsxMTksNyBAQCBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6dXJsc0ZvclR5cGVzKGludCBp
Y29uVHlwZXNNYXNrKQogICAgIHJldHVybiBpY29uVVJMczsKIH0KIAotdm9pZCBJY29uQ29udHJv
bGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBLVVJMJiBpY29uKQordm9pZCBJY29uQ29udHJv
bGxlcjo6Y29tbWl0VG9EYXRhYmFzZShjb25zdCBVUkwmIGljb24pCiB7CiAgICAgTE9HKEljb25E
YXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTHMg
JXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fZnJhbWUtPmxvYWRlcigpLmlu
aXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgIGljb25E
YXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCksIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZygpKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEljb25D
b250cm9sbGVyOjpzdGFydExvYWRlcigpCiAgICAgaWYgKCFkb2N1bWVudENhbkhhdmVJY29uKG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBp
Y29uVVJMKHVybCgpKTsKKyAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAgU3RyaW5nIHVybFN0
cmluZyhpY29uVVJMLnN0cmluZygpKTsKICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNv
bnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24p
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9hZERlY2lzaW9uID09IEljb25Mb2Fk
Tm8pIHsKLSAgICAgICAgS1VSTCBpY29uVVJMKHVybCgpKTsKKyAgICAgICAgVVJMIGljb25VUkwo
dXJsKCkpOwogICAgICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3RyaW5nKCkpOwogICAg
ICAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1
MywxMSArMjUzLDExIEBAIGJvb2wgSWNvbkNvbnRyb2xsZXI6OmFwcGVuZFRvSWNvblVSTHMoSWNv
blR5cGUgaWNvblR5cGUsIEljb25VUkxzKiBpY29uVVJMcykKIEljb25VUkwgSWNvbkNvbnRyb2xs
ZXI6OmRlZmF1bHRVUkwoSWNvblR5cGUgaWNvblR5cGUpCiB7CiAgICAgLy8gRG9uJ3QgcmV0dXJu
IGEgZmF2aWNvbiBpY29uVVJMIHVubGVzcyB3ZSdyZSBodHRwIG9yIGh0dHBzCi0gICAgS1VSTCBk
b2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCBkb2N1bWVu
dFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghZG9jdW1lbnRVUkwu
cHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKQogICAgICAgICByZXR1cm4gSWNvblVSTCgpOwogCi0g
ICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1
cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKICAgICB1cmwuc2V0SG9zdChk
b2N1bWVudFVSTC5ob3N0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmgKaW5kZXggNjFkZmE3Ni4uY2E5YzE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uQ29udHJvbGxlci5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpbmNsdWRlICJJ
Y29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJY29uQ29udHJvbGxlcihGcmFtZSopOwogICAg
IH5JY29uQ29udHJvbGxlcigpOwogCi0gICAgS1VSTCB1cmwoKTsKKyAgICBVUkwgdXJsKCk7CiAg
ICAgSWNvblVSTHMgdXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXNNYXNrKTsKICAgICBJY29uVVJM
IGljb25VUkwoSWNvblR5cGUpIGNvbnN0OwogCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvYWREZWNpc2lvblJlY2VpdmVkKEljb25Mb2FkRGVjaXNpb24pOwogICAgIHZvaWQg
Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24pOwogCi0gICAgdm9pZCBj
b21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pOworICAgIHZvaWQgY29tbWl0VG9EYXRh
YmFzZShjb25zdCBVUkwmIGljb24pOwogCiBwcml2YXRlOgogICAgIGJvb2wgYXBwZW5kVG9JY29u
VVJMcyhJY29uVHlwZSwgSWNvblVSTHMqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmgKaW5kZXggYTYyMjZkZC4uYzc3N2RkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSW50U2l6ZTsK
IGNsYXNzIEljb25EYXRhYmFzZUNsaWVudDsKIGNsYXNzIEljb25SZWNvcmQ7CiBjbGFzcyBJY29u
U25hcHNob3Q7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFnZVVSTFJlY29yZDsK
IGNsYXNzIFBhZ2VVUkxTbmFwc2hvdDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZUJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAKaW5kZXggOWYxMTYwYy4u
NTFjY2IzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
QmFzZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgi
CiAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRy
YXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCmlu
ZGV4IDA4M2IxZTYuLmQ1Y2I5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9t
YWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9M
b2FkZXJOU1VSTEV4dHJhcy5tbQpAQCAtMzIsNyArMzIsNyBAQAogCiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgotI2ltcG9ydCAiS1VSTC5oIgorI2lt
cG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW1wb3J0ICJNSU1F
VHlwZVJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJDb3JlTlNTdHJpbmdFeHRyYXMuaCIKQEAgLTU4
LDcgKzU4LDcgQEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKE5TVVJM
ICp1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKICAgICBpZiAoW2ZpbGVuYW1lIGxlbmd0
aF0gPT0gMCB8fCBbbGFzdFBhdGhDb21wb25lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLyJdKSB7CiAg
ICAgICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50IGlzIG5vIGdvb2QsIHRyeSB0aGUgaG9zdC4KLSAg
ICAgICAgTlNTdHJpbmcgKmhvc3QgPSBLVVJMKHVybCkuaG9zdCgpOworICAgICAgICBOU1N0cmlu
ZyAqaG9zdCA9IFVSTCh1cmwpLmhvc3QoKTsKICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZUJ5
Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoaG9zdCk7CiAgICAgICAgIGlmIChbZmlsZW5hbWUgbGVu
Z3RoXSA9PSAwKSB7CiAgICAgICAgICAgICAvLyBDYW4ndCBtYWtlIGEgZmlsZW5hbWUgdXNpbmcg
dGhpcyBVUkwsIHVzZSAidW5rbm93biIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmNwcAppbmRleCAyMzc1ZWQzLi41MWFhMzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTIzNiw3ICsyMzYs
NyBAQCB2b2lkIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZAogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKQogewogICAgIC8vIElkZW50aWZ5IG91
ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBh
bmQgYSBVVUlELgotICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNo
ZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYx
Mi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChVUkwsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2Fw
dGlvbnMtb3ZlcnJpZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOwog
CiAgICAgcGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4
IDUxYjM2YzIuLmMyN2RhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVk
ZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJM
YW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCkBAIC00NCw2ICs0Myw3IEBACiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNs
dWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMTUxYzkw
NC4uOGM1NTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2No
ZW1lUmVnaXN0cnkuaCIKQEAgLTI0MCw3ICsyNDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFzY2hlbWVNYXRj
aGVzKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTAsNyArMjUwLDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBib29sIHNjaGVtZU1hdGNoZXMoY29uc3Qg
S1VSTCYgdXJsKSBjb25zdAorICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3NjaGVtZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIFN0cmluZyBwcm90ZWN0ZWRSZXNvdXJjZVNjaGVtZShtX3BvbGljeS0+c2VjdXJpdHlPcmln
aW4oKS0+cHJvdG9jb2woKSk7CkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
cmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHVybC5wcm90b2NvbCgpLCBtX3NjaGVtZSk7CiAgICAg
fQogCi0gICAgYm9vbCBob3N0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9v
bCBob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0
IFN0cmluZyYgaG9zdCA9IHVybC5ob3N0KCk7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShob3N0LCBtX2hvc3QpKQpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAKICAgICB9CiAK
LSAgICBib29sIHBhdGhNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBib29sIHBh
dGhNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4NSw3ICsyODUsNyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcGF0aCA9PSBtX3BhdGg7CiAgICAgfQogCi0gICAg
Ym9vbCBwb3J0TWF0Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9vbCBwb3J0TWF0
Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3BvcnRIYXNX
aWxkY2FyZCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzIxLDcgKzMyMSw3IEBAIHB1
YmxpYzoKICAgICBDU1BTb3VyY2VMaXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSosIGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlTmFtZSk7CiAKICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwot
ICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBLVVJMJik7CisgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVS
TCYpOwogICAgIGJvb2wgYWxsb3dJbmxpbmUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93SW5saW5l
OyB9CiAgICAgYm9vbCBhbGxvd0V2YWwoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RXZhbDsgfQog
CkBAIC0zNjQsMTIgKzM2NCwxMiBAQCB2b2lkIENTUFNvdXJjZUxpc3Q6OnBhcnNlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiAgICAgcGFyc2UodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5jaGFyYWN0
ZXJzKCkgKyB2YWx1ZS5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgQ1NQU291cmNlTGlzdDo6bWF0Y2hl
cyhjb25zdCBLVVJMJiB1cmwpCitib29sIENTUFNvdXJjZUxpc3Q6Om1hdGNoZXMoY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgaWYgKG1fYWxsb3dTdGFyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIEtVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJM
KHVybCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CisgICAg
VVJMIGVmZmVjdGl2ZVVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVSTCh1cmwp
ID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJsOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1f
bGlzdFtpXS5tYXRjaGVzKGVmZmVjdGl2ZVVSTCkpCkBAIC04MTQsNyArODE0LDcgQEAgcHVibGlj
OgogICAgICAgICBtX3NvdXJjZUxpc3QucGFyc2UodmFsdWUpOwogICAgIH0KIAotICAgIGJvb2wg
YWxsb3dzKGNvbnN0IEtVUkwmIHVybCkKKyAgICBib29sIGFsbG93cyhjb25zdCBVUkwmIHVybCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3NvdXJjZUxpc3QubWF0Y2hlcyh1cmwuaXNFbXB0eSgp
ID8gcG9saWN5KCktPnVybCgpIDogdXJsKTsKICAgICB9CkBAIC04MzksMjUgKzgzOSwyNSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBhbGxvd0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKICAgICBib29sIGFsbG93SW5saW5lU3R5
bGUoY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNv
bnRleHRMaW5lLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7
CiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVjU3RhdGUqLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1NjcmlwdE5vbmNlKGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0
cmlidXRlLCBjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYs
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29s
IGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNv
dXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OwotICAgIGJvb2wgYWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93
U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtV
UkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAg
Ym9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDb25uZWN0VG9Tb3Vy
Y2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dCYXNlVVJJ
KGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29u
c3Q7CisgICAgYm9vbCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKworICAgIGJvb2wgYWxs
b3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25z
dCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93SW1hZ2VG
cm9tU291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFs
bG93Rm9udEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAg
IGJvb2wgYWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNv
bnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsK
KyAgICBib29sIGFsbG93QmFzZVVSSShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CiAKICAgICB2b2lkIGdhdGhlclJlcG9ydFVSSXMoRE9N
U3RyaW5nTGlzdCYpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgZXZhbERpc2FibGVkRXJyb3JN
ZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7IH0KICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHJlZmxlY3Rl
ZFhTU0Rpc3Bvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWZsZWN0ZWRYU1NEaXNwb3NpdGlv
bjsgfQogICAgIGJvb2wgaXNSZXBvcnRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZXBvcnRPbmx5
OyB9Ci0gICAgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklzKCkgY29uc3QgeyByZXR1cm4g
bV9yZXBvcnRVUklzOyB9CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMoKSBjb25z
dCB7IHJldHVybiBtX3JlcG9ydFVSSXM7IH0KIAogcHJpdmF0ZToKICAgICBDU1BEaXJlY3RpdmVM
aXN0KENvbnRlbnRTZWN1cml0eVBvbGljeSosIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSk7CkBAIC04NzYsMTIgKzg3NiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q1NQRGly
ZWN0aXZlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgT3duUHRyPENT
UERpcmVjdGl2ZVR5cGU+Jik7CiAKICAgICBTb3VyY2VMaXN0RGlyZWN0aXZlKiBvcGVyYXRpdmVE
aXJlY3RpdmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwotICAgIHZvaWQgcmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3Rp
dmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJs
b2NrZWRVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVy
OjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsKKyAgICB2b2lkIHJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYg
ZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBV
UkwmIGJsb2NrZWRVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5n
KCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OwogCiAgICAg
Ym9vbCBjaGVja0V2YWwoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwogICAgIGJvb2wgY2hl
Y2tJbmxpbmUoU291cmNlTGlzdERpcmVjdGl2ZSopIGNvbnN0OwogICAgIGJvb2wgY2hlY2tOb25j
ZShOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIGJvb2wgY2hlY2tT
b3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29s
IGNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBVUkwmKSBjb25zdDsKICAg
ICBib29sIGNoZWNrTWVkaWFUeXBlKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
RXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IG1f
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOyB9CkBAIC04OTAsNyArODkw
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNv
dXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGJvb2wgaXNTY3JpcHQpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tOb25jZUFuZFJlcG9ydFZpb2xh
dGlvbihOb25jZURpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYg
Y29uc29sZU1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiBjb250ZXh0TGluZSkgY29uc3Q7CiAKLSAgICBib29sIGNoZWNrU291cmNlQW5k
UmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OworICAgIGJvb2wgY2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdDsKICAgICBib29sIGNoZWNrTWVkaWFU
eXBlQW5kUmVwb3J0VmlvbGF0aW9uKE1lZGlhTGlzdERpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVN
ZXNzYWdlKSBjb25zdDsKIAogICAgIGJvb2wgZGVueUlmRW5mb3JjaW5nUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBvcnRPbmx5OyB9CkBAIC05MTgsNyArOTE4LDcgQEAgcHJpdmF0ZToKICAg
ICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zY3JpcHRTcmM7CiAgICAgT3duUHRyPFNv
dXJjZUxpc3REaXJlY3RpdmU+IG1fc3R5bGVTcmM7CiAKLSAgICBWZWN0b3I8S1VSTD4gbV9yZXBv
cnRVUklzOworICAgIFZlY3RvcjxVUkw+IG1fcmVwb3J0VVJJczsKIAogICAgIFN0cmluZyBtX2V2
YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKIH07CkBAIC05NDksNyArOTQ5LDcgQEAgUGFzc093blB0
cjxDU1BEaXJlY3RpdmVMaXN0PiBDU1BEaXJlY3RpdmVMaXN0OjpjcmVhdGUoQ29udGVudFNlY3Vy
aXR5UG9saWN5KiBwb2wKICAgICByZXR1cm4gZGlyZWN0aXZlcy5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgQ1NQRGlyZWN0aXZlTGlzdDo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0
aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYg
Y29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURp
cmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgVVJMJiBibG9ja2Vk
VVJMLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsKICAgICBTdHJpbmcg
bWVzc2FnZSA9IG1fcmVwb3J0T25seSA/ICJbUmVwb3J0IE9ubHldICIgKyBjb25zb2xlTWVzc2Fn
ZSA6IGNvbnNvbGVNZXNzYWdlOwogICAgIG1fcG9saWN5LT5yZXBvcnRWaW9sYXRpb24oZGlyZWN0
aXZlVGV4dCwgZWZmZWN0aXZlRGlyZWN0aXZlLCBtZXNzYWdlLCBibG9ja2VkVVJMLCBtX3JlcG9y
dFVSSXMsIG1faGVhZGVyLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwpAQCAtOTcw
LDcgKzk3MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tOb25jZShOb25jZURpcmVj
dGl2ZSogZGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIG5vbmNlCiAgICAgcmV0dXJuICFkaXJlY3Rp
dmUgfHwgZGlyZWN0aXZlLT5hbGxvd3Mobm9uY2UpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmNoZWNrU291cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgS1VS
TCYgdXJsKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZShTb3VyY2VM
aXN0RGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJl
dHVybiAhZGlyZWN0aXZlIHx8IGRpcmVjdGl2ZS0+YWxsb3dzKHVybCk7CiB9CkBAIC05OTgsNyAr
OTk4LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0V2YWxBbmRSZXBvcnRWaW9sYXRp
b24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXYKICAgICBpZiAoZGlyZWN0aXZlID09IG1f
ZGVmYXVsdFNyYykKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJ3NjcmlwdC1zcmMnIHdh
cyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycgaXMgdXNlZCBhcyBhIGZhbGxi
YWNrLiI7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNy
YywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1
ZmZpeCArICJcbiIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUsIHN0YXRlKTsKKyAg
ICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdFNyYywgY29uc29sZU1l
c3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIs
IFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwogICAgIGlmICghbV9yZXBv
cnRPbmx5KSB7CiAgICAgICAgIG1fcG9saWN5LT5yZXBvcnRCbG9ja2VkU2NyaXB0RXhlY3V0aW9u
VG9JbnNwZWN0b3IoZGlyZWN0aXZlLT50ZXh0KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMDEwLDcgKzEwMTAsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrTm9uY2VBbmRS
ZXBvcnRWaW9sYXRpb24oTm9uY2VEaXJlY3RpdmUqIGRpcmVjdGl2ZSwgYwogewogICAgIGlmIChj
aGVja05vbmNlKGRpcmVjdGl2ZSwgbm9uY2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBy
ZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIHNjcmlwdE5vbmNlLCBjb25zb2xlTWVz
c2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi5cbiIsIEtVUkwoKSwgY29udGV4
dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQo
KSwgc2NyaXB0Tm9uY2UsIGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgp
ICsgIlwiLlxuIiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKICAgICByZXR1cm4g
ZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMjMsNyArMTAyMyw3IEBAIGJvb2wg
Q1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tNZWRpYVR5cGVBbmRSZXBvcnRWaW9sYXRpb24oTWVkaWFM
aXN0RGlyZWN0aXZlKiBkaXJlCiAgICAgaWYgKHR5cGVBdHRyaWJ1dGUuaXNFbXB0eSgpKQogICAg
ICAgICBtZXNzYWdlID0gbWVzc2FnZSArICIgV2hlbiBlbmZvcmNpbmcgdGhlICdwbHVnaW4tdHlw
ZXMnIGRpcmVjdGl2ZSwgdGhlIHBsdWdpbidzIG1lZGlhIHR5cGUgbXVzdCBiZSBleHBsaWNpdGx5
IGRlY2xhcmVkIHdpdGggYSAndHlwZScgYXR0cmlidXRlIG9uIHRoZSBjb250YWluaW5nIGVsZW1l
bnQgKGUuZy4gJzxvYmplY3QgdHlwZT1cIltUWVBFIEdPRVMgSEVSRV1cIiAuLi4+JykuIjsKIAot
ICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgcGx1Z2luVHlwZXMsIG1lc3Nh
Z2UgKyAiXG4iLCBLVVJMKCkpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQo
KSwgcGx1Z2luVHlwZXMsIG1lc3NhZ2UgKyAiXG4iLCBVUkwoKSk7CiAgICAgcmV0dXJuIGRlbnlJ
ZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJl
Y3RpdmUqIGRpcmVjdAogICAgIGlmIChkaXJlY3RpdmUgPT0gbV9kZWZhdWx0U3JjKQogICAgICAg
ICBzdWZmaXggPSBtYWtlU3RyaW5nKCIgTm90ZSB0aGF0ICciLCAoaXNTY3JpcHQgPyAic2NyaXB0
IiA6ICJzdHlsZSIpLCAiLXNyYycgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2RlZmF1bHQt
c3JjJyBpcyB1c2VkIGFzIGEgZmFsbGJhY2suIik7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGly
ZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5bGVTcmMsIGNvbnNvbGVN
ZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAiXG4i
LCBLVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lKTsKKyAgICByZXBvcnRWaW9sYXRpb24o
ZGlyZWN0aXZlLT50ZXh0KCksIGlzU2NyaXB0ID8gc2NyaXB0U3JjIDogc3R5bGVTcmMsIGNvbnNv
bGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAi
XG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogCiAgICAgaWYgKCFtX3JlcG9y
dE9ubHkpIHsKICAgICAgICAgaWYgKGlzU2NyaXB0KQpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja0lubGluZUFuZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VM
aXN0RGlyZWN0aXZlKiBkaXJlY3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1BEaXJl
Y3RpdmVMaXN0OjpjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0
aXZlKiBkaXJlY3RpdmUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVE
aXJlY3RpdmUpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVw
b3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlKSBjb25zdAogewogICAgIGlmIChj
aGVja1NvdXJjZShkaXJlY3RpdmUsIHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEy
OSw3ICsxMTI5LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0V2YWwoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlIKICAgICAgICAgY2hlY2tFdmFs
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX3NjcmlwdFNyYy5nZXQoKSkpOwogfQogCi1ib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2Ny
aXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChB
U0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBzY3JpcHQgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIikpKTsK
ICAgICBpZiAodXJsLmlzRW1wdHkoKSkKQEAgLTExMzcsMjEgKzExMzcsMjEgQEAgYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0
IFN0cmluZyYgY29udGUKICAgICByZXR1cm4gY2hlY2tOb25jZUFuZFJlcG9ydFZpb2xhdGlvbiht
X3NjcmlwdE5vbmNlLmdldCgpLCBub25jZSwgIlJlZnVzZWQgdG8gbG9hZCAnIiArIHVybC5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhl
IGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICIsIGNvbnRleHRV
UkwsIGNvbnRleHRMaW5lKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdp
blR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdpblR5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0
IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRp
bmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja01lZGlhVHlwZUFuZFJl
cG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlLCAi
UmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
ICsgIicgKE1JTUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2aW9s
YXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTogIikg
OgogICAgICAgICBjaGVja01lZGlhVHlwZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBl
QXR0cmlidXRlKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21T
b3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93
U2NyaXB0RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBv
cnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAg
ICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2Ny
aXB0U3JjLmdldCgpKSwgdXJsLCBzY3JpcHRTcmMpIDoKICAgICAgICAgY2hlY2tTb3VyY2Uob3Bl
cmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAogewogICAgIGlmICh1cmwuaXNCbGFua1VSTCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dP
YmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9sCiAgICAg
ICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX29iamVjdFNyYy5nZXQoKSksIHVy
bCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJj
ZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
IHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDaGls
ZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIGlmICh1cmwuaXNC
bGFua1VSTCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNjksMzUgKzExNjksMzUgQEAg
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IEtV
UkwmIHVybCwgQ29udGVudFNlY3VyaXQKICAgICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGly
ZWN0aXZlKG1fZnJhbWVTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxp
c3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAog
ewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpT
ZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0
aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsLCBpbWdTcmMpIDoKICAgICAgICAgY2hl
Y2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1faW1nU3JjLmdldCgpKSwgdXJsKTsKIH0KIAot
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21Tb3VyY2UoY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRl
bnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVw
b3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgdXJsLCBz
dHlsZVNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zdHls
ZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb250
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBy
ZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAg
ICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1f
Zm9udFNyYy5nZXQoKSksIHVybCwgZm9udFNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShvcGVy
YXRpdmVEaXJlY3RpdmUobV9mb250U3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJl
Y3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jv
b2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBv
bGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9u
KG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgpKSwgdXJsLCBtZWRpYVNyYykgOgog
ICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9tZWRpYVNyYy5nZXQoKSks
IHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2Uo
Y29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVj
dFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0
YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVj
a1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9jb25uZWN0U3Jj
LmdldCgpKSwgdXJsLCBjb25uZWN0U3JjKSA6CkBAIC0xMjEwLDE0ICsxMjEwLDE0IEBAIHZvaWQg
Q1NQRGlyZWN0aXZlTGlzdDo6Z2F0aGVyUmVwb3J0VVJJcyhET01TdHJpbmdMaXN0JiBsaXN0KSBj
b25zdAogICAgICAgICBsaXN0LmFwcGVuZChtX3JlcG9ydFVSSXNbaV0uc3RyaW5nKCkpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xh
dGlvbihtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCwgZm9ybUFjdGlvbikgOgogICAgICAgICBjaGVj
a1NvdXJjZShtX2Zvcm1BY3Rpb24uZ2V0KCksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3Rp
dmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4g
cmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAg
ICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fYmFzZVVSSS5nZXQoKSwgdXJs
LCBiYXNlVVJJKSA6CkBAIC0xNTM3LDggKzE1MzcsOCBAQCBib29sIGlzQWxsb3dlZEJ5QWxsV2l0
aENvbnRleHQoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFN0
cgogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BEaXJlY3RpdmVMaXN0
OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiwgY29uc3QgS1VSTCYpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhO
b25jZShjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpCit0ZW1wbGF0ZTxib29sIChDU1BEaXJl
Y3RpdmVMaXN0OjoqYWxsb3dlZCkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiwgY29uc3QgVVJMJikgY29uc3Q+Citib29sIGlzQWxsb3dlZEJ5
QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25z
dCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3Jk
aW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcG9saWNpZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCEocG9s
aWNpZXNbaV0uZ2V0KCktPiphbGxvd2VkKShub25jZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUs
IHVybCkpCkBAIC0xNTQ3LDggKzE1NDcsOCBAQCBib29sIGlzQWxsb3dlZEJ5QWxsV2l0aE5vbmNl
KGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25zdCBTdHJpbgogICAg
IHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTxib29sIChDU1BEaXJlY3RpdmVMaXN0OjoqYWxs
b3dGcm9tVVJMKShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMpIGNvbnN0PgotYm9vbCBpc0FsbG93ZWRCeUFsbFdpdGhVUkwoY29uc3QgQ1NQRGlyZWN0
aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKQordGVtcGxhdGU8Ym9vbCAo
Q1NQRGlyZWN0aXZlTGlzdDo6KmFsbG93RnJvbVVSTCkoY29uc3QgVVJMJiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgorYm9vbCBpc0FsbG93ZWRCeUFsbFdp
dGhVUkwoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFVSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpCiB7CiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzY2hlbWVTaG91bGRCeXBhc3NDb250ZW50
U2VjdXJpdHlQb2xpY3kodXJsLnByb3RvY29sKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE1OTYsMTIgKzE1OTYsMTIgQEAgU3RyaW5nIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZXZhbERp
c2FibGVkRXJyb3JNZXNzYWdlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYg
bm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3Ry
aW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoTm9u
Y2U8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2U+KG1fcG9saWNpZXMsIG5vbmNl
LCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgdXJsKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9wb2xpY2llcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIW1f
cG9saWNpZXNbaV0tPmFsbG93UGx1Z2luVHlwZSh0eXBlLCB0eXBlQXR0cmlidXRlLCB1cmwsIHJl
cG9ydGluZ1N0YXR1cykpCkBAIC0xNjEwLDUyICsxNjEwLDUyIEBAIGJvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHR5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dTY3JpcHRGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1
cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3Vy
Y2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxs
b3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlz
QWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291
cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21T
b3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxX
aXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlPihtX3Bv
bGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2
ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0
YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1N0eWxlRnJvbVNv
dXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBp
c0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291
cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25z
dAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGlu
Z1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9y
dGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd01lZGlh
RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJl
dHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFG
cm9tU291cmNlPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBLVVJMJiB1
cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1
cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Nvbm5lY3RUb1NvdXJj
ZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMg
cmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhV
Ukw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q29ubmVjdFRvU291cmNlPihtX3BvbGljaWVzLCB1
cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0
aW9uPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CiAKLWJvb2wgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dCYXNlVVJJPihtX3BvbGljaWVzLCB1cmwsIHJlcG9ydGluZ1N0YXR1cyk7CiB9CkBAIC0x
Njg2LDEyICsxNjg2LDEyIEBAIFNlY3VyaXR5T3JpZ2luKiBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1jb25zdCBLVVJMJiBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIENvbnRlbnRTZWN1cml0eVBvbGljeTo6dXJs
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT51cmwoKTsK
IH0KIAotS1VSTCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdAorVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+Y29tcGxldGVVUkwodXJsKTsKIH0KQEAgLTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjplbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBtYXNr
KSBjb25zdAogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZW5mb3JjZVNhbmRib3hGbGFn
cyhtYXNrKTsKIH0KIAotc3RhdGljIFN0cmluZyBzdHJpcFVSTEZvclVzZUluUmVwb3J0KERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyBzdHJpcFVSTEZv
clVzZUluUmVwb3J0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNzExLDcg
KzE3MTEsNyBAQCBzdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCiB9CiAKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi1z
dGF0aWMgdm9pZCBnYXRoZXJTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50RGF0YShTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50SW5pdCYgaW5pdCwgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZl
LCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRlcikKK3N0YXRpYyB2
b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3VyaXR5UG9saWN5
VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0
IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7CiAgICAgaW5pdC5kb2N1
bWVudFVSSSA9IGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKTsKICAgICBpbml0LnJlZmVycmVyID0g
ZG9jdW1lbnQtPnJlZmVycmVyKCk7CkBAIC0xNzI5LDE0ICsxNzI5LDE0IEBAIHN0YXRpYyB2b2lk
IGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3VyaXR5UG9saWN5Vmlv
bGF0aW9uRXZlbnRJCiAgICAgY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBjYWxsRnJhbWUgPSBnZXRG
aXJzdE5vbk5hdGl2ZUZyYW1lKHN0YWNrKTsKIAogICAgIGlmIChjYWxsRnJhbWUubGluZU51bWJl
cigpKSB7Ci0gICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGNhbGxG
cmFtZS5zb3VyY2VVUkwoKSk7CisgICAgICAgIFVSTCBzb3VyY2UgPSBVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBjYWxsRnJhbWUuc291cmNlVVJMKCkpOwogICAgICAgICBpbml0LnNvdXJjZUZpbGUgPSBz
dHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3VtZW50LCBzb3VyY2UpOwogICAgICAgICBpbml0Lmxp
bmVOdW1iZXIgPSBjYWxsRnJhbWUubGluZU51bWJlcigpOwogICAgIH0KIH0KICNlbmRpZgogCi12
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0
cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFZlY3Rv
cjxLVVJMPiYgcmVwb3J0VVJJcywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNvbnN0IFN0cmluZyYg
Y29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpF
eGVjU3RhdGUqIHN0YXRlKSBjb25zdAordm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZm
ZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwm
IGJsb2NrZWRVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiByZXBvcnRVUklzLCBjb25zdCBTdHJpbmcm
IGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0CiB7CiAgICAgbG9n
VG9Db25zb2xlKGNvbnNvbGVNZXNzYWdlLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUp
OwogCkBAIC0xNzg5LDcgKzE3ODksNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgUwogICAgICAg
ICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdldEZpcnN0Tm9uTmF0aXZlRnJh
bWUoc3RhY2spOwogCiAgICAgICAgIGlmIChjYWxsRnJhbWUubGluZU51bWJlcigpKSB7Ci0gICAg
ICAgICAgICBLVVJMIHNvdXJjZSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYWxsRnJhbWUuc291
cmNlVVJMKCkpOworICAgICAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQYXJzZWRVUkxTdHJpbmcs
IGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgICAgICBjc3BSZXBvcnQtPnNldFN0cmlu
Zygic291cmNlLWZpbGUiLCBzdHJpcFVSTEZvclVzZUluUmVwb3J0KGRvY3VtZW50LCBzb3VyY2Up
KTsKICAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0TnVtYmVyKCJsaW5lLW51bWJlciIsIGNhbGxG
cmFtZS5saW5lTnVtYmVyKCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuaAppbmRleCA5Y2RhYTc4Li4yZWE4OGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNp
Zm5kZWYgQ29udGVudFNlY3VyaXR5UG9saWN5X2gKICNkZWZpbmUgQ29udGVudFNlY3VyaXR5UG9s
aWN5X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTkyLDE5ICs5MiwxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbGxv
d0lubGluZVNjcmlwdChjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0
OwogICAgIGJvb2wgYWxsb3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIFJlcG9ydGluZ1N0YXR1cyA9IFNl
bmRSZXBvcnQpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dFdmFsKEpTQzo6RXhlY1N0YXRlKiA9IDAs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTY3Jp
cHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtVUkwmID0gS1VSTCgp
KSBjb25zdDsKLSAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9
IFNlbmRSZXBvcnQpIGNvbnN0OwotCi0gICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29u
c3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wg
YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5k
UmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBv
cnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJl
cG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb250RnJv
bVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3Rh
dHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShj
b25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd0Zvcm1BY3Rpb24oY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBv
cnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93U2NyaXB0Tm9uY2UoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBVUkwmID0gVVJMKCkpIGNvbnN0OworICAg
IGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0
eXBlQXR0cmlidXRlLCBjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBj
b25zdDsKKworICAgIGJvb2wgYWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYsIFJlcG9y
dGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dPYmplY3RGcm9t
U291cmNlKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93SW1hZ2VGcm9tU291cmNl
KGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJv
b2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2Vu
ZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dNZWRp
YUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25z
dCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFs
bG93QmFzZVVSSShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25z
dDsKIAogICAgIFJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9uIHJlZmxlY3RlZFhTU0Rpc3Bvc2l0aW9u
KCkgY29uc3Q7CiAKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9y
dEludmFsaWRSZWZsZWN0ZWRYU1MoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZXBv
cnRNaXNzaW5nUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVwb3J0
VW5zdXBwb3J0ZWREaXJlY3RpdmUoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdm9pZCByZXBv
cnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVm
ZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VS
TCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklzLCBjb25zdCBTdHJp
bmcmIGhlYWRlciwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCksIGNvbnN0IFdU
Rjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9y
ZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OworICAgIHZvaWQgcmVwb3J0Vmlv
bGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3Rp
dmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFVSTCYgYmxv
Y2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNvbnN0IFN0cmluZyYgaGVh
ZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3Qo
KSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CiAKICAgICB2b2lkIHJlcG9ydEJsb2NrZWRT
Y3JpcHRFeGVjdXRpb25Ub0luc3BlY3Rvcihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpIGNv
bnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0gICAgS1VSTCBjb21wbGV0ZVVS
TChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OworICAg
IFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3Mo
U2FuZGJveEZsYWdzKSBjb25zdDsKICAgICBTdHJpbmcgZXZhbERpc2FibGVkRXJyb3JNZXNzYWdl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggMTI4
NmVjZi4uMjNkM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVu
dUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaApA
QCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29udGV4dE1l
bnVJdGVtOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7Ci0gICAg
Y2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dCB7CiAgICAgcHVibGljOgpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgPSAwOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBk
b3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRv
d25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFy
Y2hXaXRoR29vZ2xlKGNvbnN0IEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9v
a1VwSW5EaWN0aW9uYXJ5KEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVh
a2luZygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcAppbmRleCA0NDgyOTgyLi5kYTIxN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQpCiAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29u
c3QgS1VSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCitzdGF0aWMgdm9pZCBvcGVuTmV3V2lu
ZG93KGNvbnN0IFVSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKFBhZ2Uq
IG9sZFBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVx
dWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0
KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOwpAQCAtODIw
LDcgKzgyMCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAKICAg
ICBpZiAoIW1faGl0VGVzdFJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgIEZy
YW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIEtVUkwgbGlua1VS
TCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICAgICAgVVJMIGxpbmtV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICghbGlu
a1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIuY2xpZW50KCkuY2FuSGFu
ZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAgICAgICAgICAgICAgICAg
YXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtODM0LDcg
KzgzNCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAgICAgICAg
ICAgICBhcHBlbmRJdGVtKENvcHlMaW5rSXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CiAgICAg
ICAgIH0KIAotICAgICAgICBLVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRl
SW1hZ2VVUkwoKTsKKyAgICAgICAgVVJMIGltYWdlVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29s
dXRlSW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYXBwZW5kSXRl
bSgqc2VwYXJhdG9ySXRlbSgpLCBtX2NvbnRleHRNZW51LmdldCgpKTsKQEAgLTg0OCw3ICs4NDgs
NyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6cG9wdWxhdGUoKQogI2VuZGlmCiAgICAg
ICAgIH0KIAotICAgICAgICBLVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRl
TWVkaWFVUkwoKTsKKyAgICAgICAgVVJMIG1lZGlhVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29s
dXRlTWVkaWFVUkwoKTsKICAgICAgICAgaWYgKCFtZWRpYVVSTC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgfHwgIWltYWdlVVJMLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4dE1lbnUu
Z2V0KCkpOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpw
b3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBGcmFtZUxvYWRlciYgbG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpOwotICAgICAgICBLVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKCk7CisgICAgICAgIFVSTCBsaW5rVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFi
c29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIWxpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBpZiAobG9hZGVyLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0KGxpbmtVUkwpKSkgewogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oT3BlbkxpbmtJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBv
bGljeS5jcHAKaW5kZXggMDBjNzZlZS4uN2EyNjRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01TZWN1cml0eVBvbGljeS5jcHAKQEAgLTQ4LDIyICs0OCwyMiBAQCBib29sIGlzUG9saWN5QWN0
aXZlSW5Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJu
IGNvbnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5pc0FjdGl2ZSgpOwogfQogCi10ZW1w
bGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhUeXBlKShjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgordGVtcGxhdGU8Ym9vbCAoQ29udGVudFNlY3VyaXR5
UG9saWN5OjoqYWxsb3dXaXRoVHlwZSkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0Pgog
Ym9vbCBpc0FsbG93ZWRXaXRoVHlwZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFpc1BvbGljeUFjdGl2ZUluQ29udGV4dChj
b250ZXh0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gKGNvbnRleHQtPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlwZSkodHlwZSwgdHlwZSwgS1VSTCgp
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHByZXNzUmVwb3J0KTsKKyAgICByZXR1cm4gKGNv
bnRleHQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT4qYWxsb3dXaXRoVHlwZSkodHlwZSwgdHlw
ZSwgVVJMKCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6U3VwcHJlc3NSZXBvcnQpOwogfQogCi10
ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhVUkwpKGNvbnN0
IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Cit0
ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhVUkwpKGNvbnN0
IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KIGJv
b2wgaXNBbGxvd2VkV2l0aFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHVybCkKIHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5Db250ZXh0KGNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEtVUkwgcGFyc2VkVVJMID0gY29udGV4
dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgcGFyc2VkVVJMID0gY29udGV4dC0+Y29tcGxl
dGVVUkwodXJsKTsKICAgICBpZiAoIXBhcnNlZFVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gRklYTUU6IEZpZ3VyZSBvdXQgaG93IHRvIHRocm93IGEgSmF2YVNjcmlwdCBl
cnJvci4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDM2YmYyYmUuLmI2OWM5Yzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTcwLDcgKzcwLDcgQEAKICNpbmNsdWRl
ICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUxp
c3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TWF0Y2hlci5oIgpAQCAtMTc2OSw3ICsxNzY5LDcg
QEAgdm9pZCBET01XaW5kb3c6OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBE
T01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE8KICAgICBpZiAoIWZpcnN0RnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0gZmlyc3RG
cmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAoY29tcGxl
dGVkVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBA
IHZvaWQgRE9NV2luZG93OjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiAKIFN0cmluZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKERPTVdp
bmRvdyogYWN0aXZlV2luZG93KQogewotICAgIGNvbnN0IEtVUkwmIGFjdGl2ZVdpbmRvd1VSTCA9
IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiBhY3RpdmVX
aW5kb3dVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmIChhY3Rp
dmVXaW5kb3dVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMTgw
Niw4ICsxODA2LDggQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1l
c3NhZ2UoRE9NV2luZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiQmxv
Y2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiArIGFjdGl2ZU9yaWdpbi0+dG9TdHJpbmcoKSAr
ICJcIiBmcm9tIGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiArIHRhcmdldE9yaWdp
bi0+dG9TdHJpbmcoKSArICJcIi4gIjsKIAogICAgIC8vIFNhbmRib3ggZXJyb3JzOiBVc2UgdGhl
IG9yaWdpbiBvZiB0aGUgZnJhbWVzJyBsb2NhdGlvbiwgcmF0aGVyIHRoYW4gdGhlaXIgYWN0dWFs
IG9yaWdpbiAoc2luY2Ugd2Uga25vdyB0aGF0IGF0IGxlYXN0IG9uZSB3aWxsIGJlICJudWxsIiku
Ci0gICAgS1VSTCBhY3RpdmVVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwot
ICAgIEtVUkwgdGFyZ2V0VVJMID0gZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIGFjdGl2ZVVS
TCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHRhcmdldFVSTCA9
IGRvY3VtZW50KCktPnVybCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5k
Ym94T3JpZ2luKSB8fCBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRi
b3hPcmlnaW4pKSB7CiAgICAgICAgIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZyYW1lIGF0IFwiIiAr
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoYWN0aXZlVVJMKS0+dG9TdHJpbmcoKSArICJcIiBmcm9t
IGFjY2Vzc2luZyBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGFyZ2V0
VVJMKS0+dG9TdHJpbmcoKSArICJcIi4gIjsKICAgICAgICAgaWYgKGRvY3VtZW50KCktPmlzU2Fu
ZGJveGVkKFNhbmRib3hPcmlnaW4pICYmIGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+aXNTYW5k
Ym94ZWQoU2FuZGJveE9yaWdpbikpCkBAIC0xODYyLDcgKzE4NjIsNyBAQCBQYXNzUmVmUHRyPEZy
YW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljUwogewogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZVdpbmRvdy0+ZnJh
bWUoKTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0
cmluZy5pc0VtcHR5KCkgPyBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZp
cnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCFj
b21wbGV0ZWRVUkwuaXNFbXB0eSgpICYmICFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpKSB7CiAgICAg
ICAgIC8vIERvbid0IGV4cG9zZSBjbGllbnQgY29kZSB0byBpbnZhbGlkIFVSTHMuCiAgICAgICAg
IGFjdGl2ZVdpbmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0byBvcGVuIGEgd2luZG93
IHdpdGggaW52YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5nKCkgKyAiJy5cbiIpOwpA
QCAtMTk0MCw3ICsxOTQwLDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Bl
bihjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAgaWYg
KCFhY3RpdmVEb2N1bWVudC0+Y2FuTmF2aWdhdGUodGFyZ2V0RnJhbWUpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworICAgICAgICBVUkwgY29tcGxldGVkVVJM
ID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAg
ICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJl
U2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKICAgICAgICAgICAgIHJl
dHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAppbmRleCA0ZGVhMTk5Li44ODNlYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYzk3ZmY0ZC4uMTgxODQ4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc0MiwxMiArNzQyLDEyIEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRl
LCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJvbSB1bmRl
ciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBv
bgogICAgICAgICAvLyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhY3R1YWxseSB1bmRlciB0aGUgZHJh
ZyBvcmlnaW4uCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBLVVJMIGxpbmtVUkwgPSBoaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICBVUkwgbGlua1VSTCA9IGhpdFRlc3RSZXN1
bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgVVJMIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC5h
YnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNy
Yy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigpKTsKIAotICAg
IG1fZHJhZ2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKKyAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBV
UkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKIAogICAgIERyYWdJbWFn
ZVJlZiBkcmFnSW1hZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4
IDI4MDM4OWYuLjNjNjkxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5oIgogI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY4LDcgKzY4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERpZEluaXRpYXRlRHJhZyhib29sIGlu
aXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRlZDsgfSAKICAgICAgICAgYm9v
bCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsgfQog
ICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KLSAgICAgICAgY29uc3QgS1VSTCYgZHJhZ2dpbmdJ
bWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQorICAgICAgICBj
b25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nSW1h
Z2VVUkw7IH0KICAgICAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZz
ZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgICAgIGNvbnN0IEludFBvaW50JiBk
cmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CiAgICAgICAgIERyYWdT
b3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ1NvdXJj
ZUFjdGlvbjsgfQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRS
ZWN0JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBJbnRQb2ludCYpOwogICAgICAgICB2b2lkIGRvU3lz
dGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBD
bGlwYm9hcmQqLCBGcmFtZSosIGJvb2wgZm9yTGluayk7CiAgICAgICAgIHZvaWQgY2xlYW51cEFm
dGVyU3lzdGVtRHJhZygpOwotICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShD
bGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwpOwor
ICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50
KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAKICAgICAgICAgUGFnZSYgbV9w
YWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKQEAgLTEyNCw3ICsxMjQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kaWRJbml0aWF0ZURyYWc7CiAgICAg
ICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyAvLyBTZXQgaW4gc3RhcnRE
cmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CiAg
ICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKLSAgICAgICAgS1VSTCBtX2RyYWdnaW5nSW1h
Z2VVUkw7CisgICAgICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBhZGU1ZmM2Li41OTI4YzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBFdmVudFNvdXJjZTo6ZGVmYXVsdFJl
Y29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5lIEV2ZW50U291cmNlOjpFdmVudFNvdXJjZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IERp
Y3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKK2lubGluZSBFdmVudFNvdXJjZTo6RXZlbnRTb3Vy
Y2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250
ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwgbV93aXRoQ3JlZGVudGlhbHMoZmFsc2UpCkBA
IC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIEtVUkwgZnVsbFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7
CisgICAgVVJMIGZ1bGxVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICgh
ZnVsbFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAppbmRleCA5N2U3YzEwLi5hNDFmMWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCkBAIC0zNCw5ICszNCw5IEBACiAKICNpbmNs
dWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgotICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgRGljdGlvbmFyeSYpOworICAgIEV2ZW50
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBjb25zdCBEaWN0aW9u
YXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSBGSU5B
TCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSBGSU5BTCB7IGRlcmVmKCk7IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zLCBpbnQgZmllbGRMZW5ndGgsIGlu
dCBsaW5lTGVuZ3RoKTsKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlTWVzc2Fn
ZUV2ZW50KCk7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBib29sIG1f
d2l0aENyZWRlbnRpYWxzOwogICAgIFN0YXRlIG1fc3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
aW5kZXggZTgyMTRlNC4uN2FmYjg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTk0Niw3ICs5
NDYsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogfQog
I2VuZGlmCiAKLWJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0
Citib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
Ly8gV2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNlIGJlY2F1c2Ugc29tZSBzaXRl
cyBkZXBlbmQgb24gdGhhdCwKICAgICAvLyBidXQgd2UgZG9uJ3QgYWxsb3cgbW9yZSB0aGFuIG9u
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCA3MDMwNmQ5Li4wMDJlMDUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
CkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAKLSAgICAgICAg
Ym9vbCBpc1VSTEFsbG93ZWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgICAgICBib29sIGlzVVJM
QWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIC8vID09PT09PT09CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAppbmRleCA0ZmJmMTQyLi4zZTJmOTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVzdG9y
ZVNjcm9sbGJhcigpCiAgICAgc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWQoZmFsc2UpOwogfQogCi1i
b29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBLVVJMJiB1cmwpCitib29sIEZy
YW1lVmlldzo6c2Nyb2xsVG9GcmFnbWVudChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJZiBv
dXIgVVJMIGhhcyBubyByZWYsIHRoZW4gd2UgaGF2ZSBubyBwbGFjZSB3ZSBuZWVkIHRvIGp1bXAg
dG8uCiAgICAgLy8gT1RPSCBJZiBDU1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlvdXNseSwgd2Ugd2Fu
dCB0byBzZXQgaXQgdG8gMCwgcmVjYWxjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAwM2Zj
MjIyLi40Y2M3ZjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ1LDcgKzQ1LDcgQEAg
Y2xhc3MgRXZlbnQ7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gTk8gT1RIRVIgUExBVEZPUk0gQkVTSURFUyBNQUMgU0hPVUxEIFVTRSBUSElTIE1F
VEhPRC4KICAgICB2b2lkIGFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0KiBuZXdCb3R0
b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9hdCBib3R0b21MaW1pdCk7CiAK
LSAgICBib29sIHNjcm9sbFRvRnJhZ21lbnQoY29uc3QgS1VSTCYpOworICAgIGJvb2wgc2Nyb2xs
VG9GcmFnbWVudChjb25zdCBVUkwmKTsKICAgICBib29sIHNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5jaG9yKE5vZGUqKTsK
ICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGNvbnN0IEludFJlY3QmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDI1YzFmZTQuLmQzZTMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgdm9pZCBIaXN0b3J5OjpnbyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFuY2UpCiAgICAgbV9mcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oZGlzdGFuY2Up
OwogfQogCi1LVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
KQorVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewot
ICAgIEtVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsKKyAgICBV
UkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsKICAgICBpZiAodXJs
U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2VVUkw7CiAKLSAgICByZXR1cm4g
S1VSTChiYXNlVVJMLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsU3Ry
aW5nKTsKIH0KIAogdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2JqZWN0VHlwZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFk
ZGVkKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHIKICAg
ICBpZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIEtVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7CisgICAgVVJMIGZ1
bGxVUkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwogICAgIGlmICghZnVsbFVSTC5pc1ZhbGlk
KCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3Qo
ZnVsbFVSTCkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmgKaW5kZXggY2E5NzZhOS4uODBiNjhkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0
b3J5LmgKQEAgLTI3LDkgKzI3LDkgQEAKICNkZWZpbmUgSGlzdG9yeV9oCiAKICNpbmNsdWRlICJE
T01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRX
cmFwcGFibGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY2LDcgKzY2LDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIaXN0b3J5KEZyYW1lKik7CiAKLSAgICBLVVJM
IHVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBVUkwgdXJsRm9yU3RhdGUoY29u
c3QgU3RyaW5nJiB1cmwpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHN0YXRlSW50ZXJuYWwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAppbmRleCBk
ODQzNDc4Li5iNzViMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ0LDExICs0NCwxMSBAQCBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUqIGZyYW1lKQogewogfQog
Ci1pbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CitpbmxpbmUgY29uc3Qg
VVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAKLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBjb25z
dCBVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVzZSAiYWJvdXQ6Ymxhbmsi
IHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3ZSBoYXZlIGEgZnJhbWUp
LgogCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9zdCgpIGNvbnN0CiAKICAg
ICAvLyBOb3RlOiB0aGlzIGlzIHRoZSBJRSBzcGVjLiBUaGUgTlMgc3BlYyBzd2FwcyB0aGUgdHdv
LCBpdCBzYXlzCiAgICAgLy8gIlRoZSBob3N0bmFtZSBwcm9wZXJ0eSBpcyB0aGUgY29uY2F0ZW5h
dGlvbiBvZiB0aGUgaG9zdCBhbmQgcG9ydCBwcm9wZXJ0aWVzLCBzZXBhcmF0ZWQgYnkgYSBjb2xv
bi4iCi0gICAgY29uc3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1
cmwgPSB0aGlzLT51cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQoKSA/IHVybC5ob3N0KCkg
KyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6IHVybC5ob3N0KCk7CiB9CiAKQEAg
LTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29uc3QKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9
IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+dXJsKCk7CiAgICAgcmV0
dXJuIHVybC5oYXNQb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6ICIiOwogfQog
CkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwYXRobmFtZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBjb25zdCBL
VVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgp
OwogICAgIHJldHVybiB1cmwucGF0aCgpLmlzRW1wdHkoKSA/ICIvIiA6IHVybC5wYXRoKCk7CiB9
CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBTdHJpbmcgTG9jYXRpb246OnNlYXJjaCgpIGNvbnN0CiAg
ICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBjb25zdCBL
VVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgp
OwogICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygpIDogIj8i
ICsgdXJsLnF1ZXJ5KCk7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIExvY2F0aW9uOjpz
ZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRv
dywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29sKHByb3RvY29sKSkg
ewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE2Niw3ICsx
NjYsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgRE9NV2lu
ZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZgogewogICAgIGlmICghbV9mcmFtZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRI
b3N0QW5kUG9ydChob3N0KTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTG9jYXRpb246
OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIERPTVdpbmRvdyogYWN0aXZlV2lu
ZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VS
TCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwogICAgIHNl
dExvY2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBA
IC0xODQsNyArMTg0LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0UG9ydChjb25zdCBTdHJpbmcmIHBv
cnRTdHJpbmcsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW4KIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAg
ICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAocG9ydCA8IDAgfHwgcG9y
dCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnJlbW92ZVBv
cnQoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQYXRobmFtZShjb25z
dCBTdHJpbmcmIHBhdGhuYW1lLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NVwogewogICAg
IGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3Ry
aW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjA2LDcgKzIwNiw3IEBA
IHZvaWQgTG9jYXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHNlYXJjaCwgRE9NV2luZG93
KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBy
ZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNl
YXJjaCk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93KTsKIH0KQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIYXNoKGNv
bnN0IFN0cmluZyYgaGFzaCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZgog
ewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRlbnRpZmllciA9IGhhc2g7
CiAgICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oCmluZGV4IGI0Zjlh
NGMuLjk1YjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5kb3c7CiBjbGFzcyBGcmFtZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgU3RyaW5n
JiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZmlyc3RXaW5kb3cpOwogCi0g
ICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDdjMThh
YjkuLmYwMTljNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtOTYxLDcgKzk2MSw3IEBAIHZvaWQg
UGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBF
dmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0byBhIG1vZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRo
ZSBzaGVldAogICAgIC8vIHRleHQgaW5zdGVhZCBvZiBsb2FkaW5nIHRoZSBVUkwgb3Vyc2VsdmVz
LgotICAgIEtVUkwgdXJsID0gbV9zZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwor
ICAgIFVSTCB1cmwgPSBtX3NldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CiAgICAg
CiAgICAgLy8gQWxsb3cgYW55IGxvY2FsIGZpbGUgVVJMIHNjaGVtZSB0byBiZSBsb2FkZWQuCiAg
ICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnBy
b3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDFhZDFhNTYuLjE1NWYy
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBpbmxp
bmUgdm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIGhhc2gpCiAgICAgcGFn
ZUNhY2hlKCktPm1hcmtQYWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCi12b2lk
IFBhZ2VHcm91cDo6YWRkVmlzaXRlZExpbmsoY29uc3QgS1VSTCYgdXJsKQordm9pZCBQYWdlR3Jv
dXA6OmFkZFZpc2l0ZWRMaW5rKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghc2hvdWxkVHJh
Y2tWaXNpdGVkTGlua3MpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdG9y
YWdlTmFtZXNwYWNlKiBQYWdlR3JvdXA6OnRyYW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9y
aWdpbiogdG9wT3JpZ2luKQogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldv
cmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKK3ZvaWQg
UGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewpAQCAtMjg4LDcgKzI4OCw3IEBAIHZv
aWQgUGFnZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxk
LCBjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1c2VyU2Ny
aXB0LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRv
V29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0
IEtVUkwmIHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9N
V3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCwKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFBh
Z2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQs
IGNvbnN0IFN0cmluZyYgcwogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2Fj
aGVJbkFsbEZyYW1lcygpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZy
b21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBh
Z2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxk
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxkLCB3b3JsZCk7CiAKQEAg
LTMyOSw3ICszMjksNyBAQCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3Js
ZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cgogICAgICAgICBtX3VzZXJT
Y3JpcHRzLT5yZW1vdmUoaXQpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxl
U2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgS1VSTCYgdXJsKQor
dm9pZCBQYWdlR3JvdXA6OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdv
cmxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKaW5kZXggMDM0MjE2My4uOWExZGE4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CiAgICAgY2xh
c3MgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczsKICNlbmRpZgotICAgIGNsYXNzIEtVUkw7CisgICAg
Y2xhc3MgVVJMOwogICAgIGNsYXNzIEdyb3VwU2V0dGluZ3M7CiAgICAgY2xhc3MgSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2U7CiAgICAgY2xhc3MgUGFnZTsKQEAgLTczLDcgKzczLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNMaW5rVmlzaXRlZChMaW5rSGFzaCk7
CiAKLSAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25zdCBLVVJMJik7CisgICAgICAgIHZv
aWQgYWRkVmlzaXRlZExpbmsoY29uc3QgVVJMJik7CiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExp
bmsoY29uc3QgVUNoYXIqLCBzaXplX3QpOwogICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFz
aChMaW5rSGFzaCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtzKCk7CkBAIC04OSwx
NiArODksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0b3JhZ2VOYW1lc3Bh
Y2UqIHRyYW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIAot
ICAgICAgICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiwKKyAgICAgICAgdm9pZCBhZGRVc2VyU2NyaXB0
VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJM
JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldFRvV29y
bGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmLAor
ICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwgPSBVc2VyU3R5bGVVc2VyTGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHlsZUluamVjdGlv
blRpbWUgaW5qZWN0aW9uVGltZSA9IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwotICAgICAg
ICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3Qg
S1VSTCYpOwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0
RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOworICAgICAgICB2b2lkIHJl
bW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYp
OwogCiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKik7CiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdy
YXBwZXJXb3JsZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA5
YjkwZmNiLi5kMWFkMWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApA
QCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjphcHBl
bmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
dXJsLmlzVmFsaWQoKSAmJiAhdXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNzUsNyArMTc1LDcgQEAgUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZSgpCiB7
CiB9CiAKLVBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSkK
K1BhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQogICAgIDog
dXJsKHVybCkKICAgICAsIG1pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgZGF0YShkYXRhKQpAQCAt
MTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShQYWdlKiBwYWdl
KQogdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogewog
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIEtVUkwgdXJs
ID0gZG9jdW1lbnQtPnVybCgpOworICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+dXJsKCk7CiAgICAg
aWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0JsYW5rVVJMKCkpIHsKICAgICAgICAgLy8gRm9y
IGJsYW5rIGZyYW1lcyB3ZSBnZW5lcmF0ZSBhIGZha2UgVVJMIHNvIHRoZXkgY2FuIGJlIHJlZmVy
ZW5jZWQgYnkgdGhlaXIgY29udGFpbmluZyBmcmFtZS4KICAgICAgICAgdXJsID0gdXJsRm9yQmxh
bmtGcmFtZShmcmFtZSk7CkBAIC0yMzQsMTkgKzIzNCwxOSBAQCB2b2lkIFBhZ2VTZXJpYWxpemVy
OjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAKICAgICAgICAgaWYgKGlzSFRNTEltYWdl
RWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VF
bGVtZW50ID0gdG9IVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICAgICAgS1VSTCB1
cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKGltYWdlRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cikpOwog
ICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpOwogICAgICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhjYWNoZWRJbWFnZSwg
aW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCB1cmwpOwogICAgICAgICB9IGVsc2UgaWYgKGVsZW1l
bnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpsaW5rVGFnKSkgewogICAgICAgICAgICAgSFRNTExp
bmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+KGVs
ZW1lbnQpOwogICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gbGlua0VsZW1l
bnQtPnNoZWV0KCkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5jb21w
bGV0ZVVSTChsaW5rRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKTsK
KyAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtFbGVt
ZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpOwogICAgICAgICAgICAgICAg
IHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIHVybCk7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAg
aWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gdG9IVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpLT5z
aGVldCgpKQotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIEtV
UkwoKSk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwgVVJM
KCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBQYWdlU2Vy
aWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBzZXJpYWxpemVG
cmFtZShjaGlsZEZyYW1lKTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NT
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVJMJiB1cmwpCit2
b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZ0J1aWxkZXIgY3NzVGV4
dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldC0+bGVuZ3RoKCk7ICsr
aSkgewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNT
U1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgS1VSCiAgICAgICAg
IC8vIFNvbWUgcnVsZXMgaGF2ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdGhhdCB3
ZSBuZWVkIHRvIHJldHJpZXZlLgogICAgICAgICBpZiAocnVsZS0+dHlwZSgpID09IENTU1J1bGU6
OklNUE9SVF9SVUxFKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBpbXBvcnRSdWxlID0g
c3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KHJ1bGUpOwotICAgICAgICAgICAgS1VSTCBpbXBv
cnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVsZS0+aHJlZigpKTsKKyAgICAg
ICAgICAgIFVSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVsZS0+
aHJlZigpKTsKICAgICAgICAgICAgIGlmIChtX3Jlc291cmNlVVJMcy5jb250YWlucyhpbXBvcnRV
UkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgc2VyaWFsaXplQ1NT
U3R5bGVTaGVldChpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCksIGltcG9ydFVSTCk7CkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChD
U1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICB9CiB9CiAKLXZvaWQgUGFn
ZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5k
ZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFnZVNlcmlh
bGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJPYmpl
Y3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzVmFs
aWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm47CkBA
IC0zNDAsMTggKzM0MCwxOCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291cmNl
c0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bAogCiAgICAgICAgIENh
Y2hlZEltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihzdHlsZUlt
YWdlKS0+Y2FjaGVkSW1hZ2UoKTsKIAotICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5jb21w
bGV0ZVVSTChpbWFnZS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKGltYWdlLT51cmwoKSk7CiAgICAgICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoaW1hZ2Us
IDAsIHVybCk7CiAgICAgfQogfQogCi1LVVJMIFBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0Zy
YW1lKEZyYW1lKiBmcmFtZSkKK1VSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9yQmxhbmtGcmFtZShG
cmFtZSogZnJhbWUpCiB7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+OjppdGVyYXRvciBpdGVy
ID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKKyAgICBIYXNoTWFwPEZyYW1lKiwgVVJM
Pjo6aXRlcmF0b3IgaXRlciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFtZSk7CiAgICAgaWYg
KGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZh
bHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2ZyYW1lLyIgKyBTdHJpbmc6Om51bWJl
cihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIEtVUkwgZmFrZVVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCk7CisgICAgVVJMIGZha2VVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIG1f
YmxhbmtGcmFtZVVSTHMuYWRkKGZyYW1lLCBmYWtlVVJMKTsKIAogICAgIHJldHVybiBmYWtlVVJM
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDRlODE1NzkuLjE3MzFkMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMxLDggKzMxLDggQEAKICNp
Zm5kZWYgUGFnZVNlcmlhbGl6ZXJfaAogI2RlZmluZSBQYWdlU2VyaWFsaXplcl9oCiAKLSNpbmNs
dWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTU0LDExICs1
NCwxMSBAQCBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBQYWdlU2VyaWFsaXplciB7CiBwdWJsaWM6
CiAgICAgc3RydWN0IFJlc291cmNlIHsKLSAgICAgICAgS1VSTCB1cmw7CisgICAgICAgIFVSTCB1
cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YTsKICAgICAgICAgUmVzb3VyY2UoKTsKLSAgICAgICAgUmVzb3VyY2UoY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KTsKKyAgICAgICAgUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIH07CiAKICAgICBleHBsaWNpdCBQ
YWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Kik7CkBAIC02OCwyMiArNjgsMjIgQEAgcHVi
bGljOgogICAgIC8vIHZlY3RvciBpcyB0aGUgdG9wIGZyYW1lIHNlcmlhbGl6ZWQgY29udGVudC4K
ICAgICB2b2lkIHNlcmlhbGl6ZShQYWdlKik7CiAKLSAgICBLVVJMIHVybEZvckJsYW5rRnJhbWUo
RnJhbWUqKTsKKyAgICBVUkwgdXJsRm9yQmxhbmtGcmFtZShGcmFtZSopOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgc2VyaWFsaXplRnJhbWUoRnJhbWUqKTsKIAogICAgIC8vIFNlcmlhbGl6ZXMgdGhl
IHN0eWxlc2hlZXQgYmFjayB0byB0ZXh0IGFuZCBhZGRzIGl0IHRvIHRoZSByZXNvdXJjZXMgaWYg
VVJMIGlzIG5vdC1lbXB0eS4KICAgICAvLyBJdCBhbHNvIGFkZHMgYW55IHJlc291cmNlcyBpbmNs
dWRlZCBpbiB0aGF0IHN0eWxlc2hlZXQgKGluY2x1ZGluZyBhbnkgaW1wb3J0ZWQgc3R5bGVzaGVl
dHMgYW5kIHRoZWlyIG93biByZXNvdXJjZXMpLgotICAgIHZvaWQgc2VyaWFsaXplQ1NTU3R5bGVT
aGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOworICAgIHZvaWQgc2VyaWFsaXplQ1NT
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgVVJMJik7CiAKLSAgICB2b2lkIGFkZElt
YWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBSZW5kZXJPYmplY3QqLCBjb25zdCBLVVJMJik7
CisgICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwgUmVuZGVyT2JqZWN0
KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMo
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIERvY3VtZW50Kik7CiAgICAgdm9pZCByZXRyaWV2ZVJl
c291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKIAogICAgIFZlY3RvcjxSZXNv
dXJjZT4qIG1fcmVzb3VyY2VzOwotICAgIExpc3RIYXNoU2V0PEtVUkw+IG1fcmVzb3VyY2VVUkxz
OwotICAgIEhhc2hNYXA8RnJhbWUqLCBLVVJMPiBtX2JsYW5rRnJhbWVVUkxzOworICAgIExpc3RI
YXNoU2V0PFVSTD4gbV9yZXNvdXJjZVVSTHM7CisgICAgSGFzaE1hcDxGcmFtZSosIFVSTD4gbV9i
bGFua0ZyYW1lVVJMczsKICAgICB1bnNpZ25lZCBtX2JsYW5rRnJhbWVDb3VudGVyOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAK
aW5kZXggNTM5ODc4Zi4uZjhmZmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRUaW1pbmcuaCIKICNpbmNsdWRlICJE
b2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggZWQyNDQ5Mi4uNjI3Njk0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKQEAgLTQy
LDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VMb2FkVGltaW5nOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggY2ViYzg5Ni4uY2MxY2FkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJs
b2JVUkwuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCkBAIC00
NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBJbnZhbGlkUG9ydCA9
IDA7CiBjb25zdCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotc3RhdGljIGJvb2wgc2No
ZW1lUmVxdWlyZXNIb3N0KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNjaGVtZVJlcXVp
cmVzSG9zdChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBXZSBleHBlY3QgVVJMcyB3aXRoIHRo
ZXNlIHNjaGVtZXMgdG8gaGF2ZSBhdXRob3JpdHkgY29tcG9uZW50cy4gSWYgdGhlCiAgICAgLy8g
VVJMIGxhY2tzIGFuIGF1dGhvcml0eSBjb21wb25lbnQsIHdlIGdldCBjb25jZXJuZWQgYW5kIG1h
cmsgdGhlIG9yaWdpbgpAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJl
c0hvc3QoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdp
bjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBTZWN1cml0eU9yaWdp
bjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEJMT0Ip
CiAgICAgLy8gRklYTUU6IEJsb2IgVVJMcyBkb24ndCBoYXZlIGlubmVyIFVSTHMuIFRoZWlyIGZv
cm0gaXMgImJsb2I6PGlubmVyLW9yaWdpbj4vPFVVSUQ+Iiwgc28gdHJlYXRpbmcgdGhlIHBhcnQg
YWZ0ZXIgImJsb2I6IiBhcyBhIFVSTCBpcyBpbmNvcnJlY3QuCkBAIC03MCwxNiArNzAsMTYgQEAg
Ym9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQog
Ly8gSW4gZ2VuZXJhbCwgZXh0cmFjdGluZyB0aGUgaW5uZXIgVVJMIHZhcmllcyBieSBzY2hlbWUu
IEl0IGp1c3Qgc28gaGFwcGVucwogLy8gdGhhdCBhbGwgdGhlIFVSTCBzY2hlbWVzIHdlIGN1cnJl
bnRseSBzdXBwb3J0IHRoYXQgdXNlIGlubmVyIFVSTHMgZm9yIHRoZWlyCiAvLyBzZWN1cml0eSBv
cmlnaW4gY2FuIGJlIHBhcnNlZCB1c2luZyB0aGlzIGFsZ29yaXRobS4KLUtVUkwgU2VjdXJpdHlP
cmlnaW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCitVUkwgU2VjdXJpdHlPcmln
aW46OmV4dHJhY3RJbm5lclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLmlubmVy
VVJMKCkpCiAgICAgICAgIHJldHVybiAqdXJsLmlubmVyVVJMKCk7CiAgICAgLy8gRklYTUU6IFVw
ZGF0ZSB0aGlzIGNhbGxzaXRlIHRvIHVzZSB0aGUgaW5uZXJVUkwgbWVtYmVyIGZ1bmN0aW9uIHdo
ZW4KICAgICAvLyB3ZSBmaW5pc2ggaW1wbGVtZW50aW5nIGl0LgotICAgIHJldHVybiBLVVJMKFBh
cnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKKyAg
ICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVy
bC5wYXRoKCkpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENh
Y2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEVOQUJMRShCTE9C
KQogICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQpAQCAtOTAsMTggKzkwLDE4IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmlnaW4oY29uc3QgS1VS
TCYgdXJsKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5p
cXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlx
dWVPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVud3JhcCB0
aGUgVVJMIGZ1cnRoZXI/Ci0gICAgS1VSTCBpbm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91
bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwp
IDogdXJsOworICAgIFVSTCBpbm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5l
clVSTCh1cmwpID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJsOwog
CiAgICAgLy8gRklYTUU6IENoZWNrIHdoZXRoZXIgaW5uZXJVUkwgaXMgdmFsaWQuCiAKICAgICAv
LyBGb3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHByb2JhYmx5IG1pc3BhcnNlZCwgbWFrZSBz
dXJlIHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCi0gICAgLy8gVGhpcyBpcyBhbiBhZGRpdGlv
bmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIEtVUkwgcGFyc2luZywgYW5kIGZvciBuZXR3
b3JrIGJhY2stZW5kcyB0aGF0IHBhcnNlIFVSTHMgZGlmZmVyZW50bHksCisgICAgLy8gVGhpcyBp
cyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIFVSTCBwYXJzaW5nLCBh
bmQgZm9yIG5ldHdvcmsgYmFjay1lbmRzIHRoYXQgcGFyc2UgVVJMcyBkaWZmZXJlbnRseSwKICAg
ICAvLyBhbmQgY291bGQgbWlzaW50ZXJwcmV0IGFub3RoZXIgY29tcG9uZW50IGZvciBob3N0bmFt
ZS4KICAgICBpZiAoc2NoZW1lUmVxdWlyZXNIb3N0KGlubmVyVVJMKSAmJiBpbm5lclVSTC5ob3N0
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25z
dCBLVVJMJiB1cmwpCitTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1
cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwu
cHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAi
IiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQpAQCAtMTcy
LDcgKzE3Miw3IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiogb3RoZXIpCiB7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGNhY2hlZE9yaWdpbiA9IGdldENhY2hlZE9yaWdpbih1cmwpOwog
ICAgIGlmIChjYWNoZWRPcmlnaW4uZ2V0KCkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTZWN1
cml0eU9yaWdpbjo6c2V0RG9tYWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKICAg
ICBtX2RvbWFpbiA9IG5ld0RvbWFpbi5sb3dlcigpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2lu
Ojppc1NlY3VyZShjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3JpZ2luOjppc1NlY3Vy
ZShjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJbnZhbGlkIFVSTHMgYXJlIHNlY3VyZSwgYXMg
YXJlIFVSTHMgd2hpY2ggaGF2ZSBhIHNlY3VyZSBwcm90b2NvbC4KICAgICBpZiAoIXVybC5pc1Zh
bGlkKCkgfHwgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUodXJs
LnByb3RvY29sKCkpKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OnBh
c3Nlc0ZpbGVDaGVjayhjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIChtX2ZpbGVQYXRoID09IG90aGVyLT5tX2ZpbGVQYXRoKTsKIH0KIAotYm9vbCBTZWN1cml0
eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIFNlY3VyaXR5
T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChtX3Vu
aXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTQsNyArMzE0LDcgQEAg
Ym9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjp0YWludHNDYW52YXMo
Y29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6dGFpbnRzQ2FudmFz
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChjYW5SZXF1ZXN0KHVybCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpjYW5SZWNlaXZlRHJhZ0RhdGEoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGRyYWdJbml0aWF0b3Ip
IGNvbgogLy8gaHR0cCBvciBodHRwcywgb3RoZXJ3aXNlIHdlIGlnbm9yZSB0aGUgbmVzdGluZyBm
b3IgdGhlIHB1cnBvc2Ugb2YgYSBzZWN1cml0eSBjaGVjay4gV2UgbmVlZAogLy8gYSBmYWNpbGl0
eSBmb3IgcmVnaXN0ZXJpbmcgbmVzdGluZyBzY2hlbWVzLCBhbmQgc29tZSBnZW5lcmFsaXplZCBs
b2dpYyBmb3IgdGhlbS4KIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQgYXMgYW4g
b3V0Y29tZSBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxOTYK
LXN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBL
VVJMJiB1cmwpCitzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhUVFBGYW1p
bHkoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSB1cmwu
c3RyaW5nKCk7CiAgICAgaWYgKCF1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZCIsIGZhbHNlKSkK
QEAgLTM1OSw3ICszNTksNyBAQCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJ
bkhUVFBGYW1pbHkoY29uc3QgS1VSTCYgdXJsKQogICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRz
V2l0aCgiZmVlZHNlYXJjaDpodHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgi
ZmVlZHNlYXJjaDpodHRwczoiLCBmYWxzZSk7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNh
bkRpc3BsYXkoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2Fu
RGlzcGxheShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nl
c3MpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIFN0cmluZyBTZWN1
cml0eU9yaWdpbjo6dG9SYXdTdHJpbmcoKSBjb25zdAogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKEtVUkwo
KSwgb3JpZ2luU3RyaW5nKSk7CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJM
KFVSTCgpLCBvcmlnaW5TdHJpbmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgc2VwYXJhdG9y
Q2hhcmFjdGVyID0gJ18nOwpAQCAtNTA2LDM0ICs1MDYsMzQgQEAgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29u
c3QgU3QKICAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNp
emVfdCBzZXBhcmF0b3IxID0gZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFj
dGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNl
cGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2VwYXJhdG9yQ2hhcmFj
dGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZShLVVJMKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAg
ICAgLy8gRW5zdXJlIHRoZXJlIHdlcmUgYXQgbGVhc3QgMiBzZXBhcmF0b3IgY2hhcmFjdGVycy4g
U29tZSBob3N0bmFtZXMgb24gaW50cmFuZXRzIGhhdmUKICAgICAvLyB1bmRlcnNjb3JlcyBpbiB0
aGVtLCBzbyB3ZSdsbCBhc3N1bWUgdGhhdCBhbnkgYWRkaXRpb25hbCB1bmRlcnNjb3JlcyBhcmUg
cGFydCBvZiB0aGUgaG9zdC4KICAgICBpZiAoc2VwYXJhdG9yMSA9PSBzZXBhcmF0b3IyKQotICAg
ICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkp
OwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlk
IHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRPa2F5OwogICAgIGlu
dCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmllci5sZW5n
dGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwogICAgIGJvb2wgcG9ydEFi
c2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIDEpOwog
ICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAgICByZXR1cm4gY3JlYXRl
KEtVUkwoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgIAogICAgIGlmIChw
b3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJldHVybiBjcmVhdGUo
S1VSTCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgICAgIAogICAgIC8v
IFNwbGl0IG91dCB0aGUgMyBzZWN0aW9ucyBvZiBkYXRhCiAgICAgU3RyaW5nIHByb3RvY29sID0g
ZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBTdHJpbmcg
aG9zdCA9IGRhdGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFy
YXRvcjIgLSBzZXBhcmF0b3IxIC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyhob3N0KTsKLSAgICByZXR1cm4gY3JlYXRlKEtVUkwoS1VSTCgpLCBwcm90b2Nv
bCArICI6Ly8iICsgaG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoi
ICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KQpAQCAtNTQxLDcgKzU0MSw3IEBAIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBw
cm90b2NvbCwgY29uc3QKICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0
KQogICAgICAgICByZXR1cm4gY3JlYXRlVW5pcXVlKCk7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0
ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwotICAgIHJldHVybiBjcmVhdGUoS1VS
TChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIo
cG9ydCkgKyAiLyIpKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwgcHJvdG9jb2wgKyAi
Oi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOwogfQogCiBT
dHJpbmcgU2VjdXJpdHlPcmlnaW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0IApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IDg1NzJmNGMuLmQxMTg2NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBTZWN1cml0eU9y
aWdpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogcHVi
bGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJsb2NrQWxsU3RvcmFnZQog
ICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNv
bnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRl
KGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVVbmlxdWUoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAtNjcsOCArNjcsOCBA
QCBwdWJsaWM6CiAgICAgLy8gR2VuZXJhbGx5LCB3ZSBhZGQgVVJMIHNjaGVtZXMgdG8gdGhpcyBs
aXN0IHdoZW4gV2ViS2l0IHN1cHBvcnQgdGhlbS4gRm9yCiAgICAgLy8gZXhhbXBsZSwgd2UgZG9u
J3QgaW5jbHVkZSB0aGUgImphciIgc2NoZW1lLCBldmVuIHRob3VnaCBGaXJlZm94CiAgICAgLy8g
dW5kZXJzdGFuZHMgdGhhdCAiamFyIiB1c2VzIGFuIGlubmVyIFVSTCBmb3IgaXQncyBzZWN1cml0
eSBvcmlnaW4uCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYp
OwotICAgIHN0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJik7CisgICAgc3Rh
dGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJik7CisgICAgc3RhdGljIFVSTCBl
eHRyYWN0SW5uZXJVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBDcmVhdGUgYSBkZWVwIGNvcHkg
b2YgdGhpcyBTZWN1cml0eU9yaWdpbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVsCiAgICAgLy8gd2hl
biBtYXJzaGFsbGluZyBhIFNlY3VyaXR5T3JpZ2luIHRvIGFub3RoZXIgdGhyZWFkLgpAQCAtODgs
NyArODgsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gVVJMIGlz
IHNlY3VyZSwgYmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBwcm90b2Nv
bCwgb3IsIHdoZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVyIFVSTCIK
ICAgICAvLyBQcm90b2NvbHMgbGlrZSBibG9iOiBhbmQgZmlsZXN5c3RlbTogZmFsbCBpbnRvIHRo
aXMgbGF0dGVyIGNhdGVnb3J5LgotICAgIHN0YXRpYyBib29sIGlzU2VjdXJlKGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgYm9vbCBpc1NlY3VyZShjb25zdCBVUkwmKTsKIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBzY3JpcHQgb2JqZWN0cyBpbiB0aGUg
Z2l2ZW4KICAgICAvLyBTZWN1cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5j
dGlvbiBiZWZvcmUgYWxsb3dpbmcKQEAgLTk5LDEyICs5OSwxMiBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHJlYWQgY29udGVudCByZXRy
aWV2ZWQgZnJvbQogICAgIC8vIHRoZSBnaXZlbiBVUkwuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMg
ZnVuY3Rpb24gYmVmb3JlIGlzc3VpbmcKICAgICAvLyBYTUxIdHRwUmVxdWVzdHMuCi0gICAgYm9v
bCBjYW5SZXF1ZXN0KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhblJlcXVlc3QoY29u
c3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgZHJhd2luZyBhbiBpbWFn
ZSBmcm9tIHRoaXMgVVJMIHRhaW50cyBhIGNhbnZhcyBmcm9tCiAgICAgLy8gdGhpcyBzZWN1cml0
eSBvcmlnaW4uIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlCiAgICAgLy8g
ZHJhd2luZyBhbiBpbWFnZSBvbnRvIGFuIEhUTUwgY2FudmFzIGVsZW1lbnQgd2l0aCB0aGUgZHJh
d0ltYWdlIEFQSS4KLSAgICBib29sIHRhaW50c0NhbnZhcyhjb25zdCBLVVJMJikgY29uc3Q7Cisg
ICAgYm9vbCB0YWludHNDYW52YXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFnIGNvbnRlbnQgZnJv
bSB0aGUKICAgICAvLyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24g
YmVmb3JlIGFsbG93aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3BsYXkgY29udGVudCBm
cm9tIHRoZSBnaXZlbiBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1lIG9yIGFzIGFuIGlt
YWdlKS4gRm9yIGV4YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90CiAgICAgLy8gZGlz
cGxheSBjb250ZW50IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0gICAgYm9vbCBjYW5E
aXNwbGF5KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhbkRpc3BsYXkoY29uc3QgVVJM
JikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBj
YW4gbG9hZCBsb2NhbCByZXNvdXJjZXMsIHN1Y2gKICAgICAvLyBhcyBpbWFnZXMsIGlmcmFtZXMs
IGFuZCBzdHlsZSBzaGVldHMsIGFuZCBjYW4gbGluayB0byBsb2NhbCBVUkxzLgpAQCAtMjA5LDcg
KzIwOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTZWN1cml0eU9yaWdpbigpOwotICAg
IGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBleHBsaWNpdCBTZWN1
cml0eU9yaWdpbihjb25zdCBVUkwmKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25z
dCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9u
IHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5IYXNoLmgKaW5kZXggNDU0Y2Y4My4uOTZiODc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIFNlY3VyaXR5
T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggNWIzNmY0Zi4uYjI0Y2E5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTZWN1cml0eVBvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50
cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNyArNTAsNyBAQCBzdGF0
aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogICAgIHJldHVybiBvcmlnaW5B
Y2Nlc3NNYXA7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitib29sIFNlY3VyaXR5UG9s
aWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiB7CiAgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJvdG9jb2xJcyhyZWZl
cnJlciwgImh0dHBzIik7CiAgICAgYm9vbCByZWZlcnJlcklzV2ViVVJMID0gcmVmZXJyZXJJc1Nl
Y3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cCIpOwpAQCAtNjYsNyArNjYsNyBA
QCBib29sIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNTZWN1cmVVUkw7CiB9
CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJl
ZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlcikKIHsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb24K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9V
UkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBL
VVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKHVybCk7CiAgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZlT3JpZ2lu
LCB0YXJnZXRPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCmlu
ZGV4IDMzN2VlYzIuLmIyNjljMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgK
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNzIFNlY3VyaXR5UG9saWN5
IHsKQEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gVHJ1ZSBpZiB0aGUgcmVmZXJy
ZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIHRoZQogICAgIC8vIFJlZmVycmVyUG9s
aWN5RGVmYXVsdC4gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVmZXJyZXIgaGVhZGVyLCB5b3UK
ICAgICAvLyBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIgaW5zdGVhZC4KLSAgICBz
dGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpOworICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIC8vIFJldHVybnMgdGhlIHJlZmVycmVy
IG1vZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcmVmZXJyZXIgcG9saWN5IGZvciBhCiAgICAgLy8g
bmF2aWdhdGlvbiB0byBhIGdpdmVuIFVSTC4gSWYgdGhlIHJlZmVycmVyIHJldHVybmVkIGlzIGVt
cHR5LCB0aGUKICAgICAvLyByZWZlcnJlciBoZWFkZXIgc2hvdWxkIGJlIG9taXR0ZWQuCi0gICAg
c3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgc3RhdGljIFN0cmluZyBnZW5l
cmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyKTsKIAogICAgIGVudW0gTG9jYWxMb2FkUG9saWN5IHsKICAgICAgICAgQWxs
b3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlvbiBvbiBsb2NhbCBsb2Fkcy4KQEAg
LTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25z
dCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFy
Z2V0T3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29u
c3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRp
YyBib29sIGlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0
aXZlT3JpZ2luLCBjb25zdCBVUkwmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzA0MzJkMC4uMDRmYmIzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICBtX3Bh
Z2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFNldHRpbmdzOjpz
ZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IEtVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRp
b24pCit2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYg
dXNlclN0eWxlU2hlZXRMb2NhdGlvbikKIHsKICAgICBpZiAobV91c2VyU3R5bGVTaGVldExvY2F0
aW9uID09IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAppbmRleCBkOGI3Y2E2Li5lZGY2OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCIKICNp
bmNsdWRlICJGb250UmVuZGVyaW5nTW9kZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJTZXR0aW5nc01hY3Jvcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0x
NTAsOCArMTUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEROU1By
ZWZldGNoaW5nRW5hYmxlZChib29sKTsKICAgICAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQogCi0gICAgICAg
IHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBLVVJMJik7Ci0gICAgICAgIGNv
bnN0IEtVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJT
dHlsZVNoZWV0TG9jYXRpb247IH0KKyAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKGNvbnN0IFVSTCYpOworICAgICAgICBjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KIAogICAgICAg
ICB2b2lkIHNldE5lZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wpOwogICAgICAgICBi
b29sIG5lZWRzQWNyb2JhdEZyYW1lUmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzQWRvYmVGcmFtZVJlbG9hZGluZ1F1aXJrOyB9CkBAIC0yNzMsNyArMjczLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICAgICAgU3RyaW5nIG1f
bWVkaWFUeXBlT3ZlcnJpZGU7Ci0gICAgICAgIEtVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9u
OworICAgICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogICAgICAgICBSZWZQdHI8
Rm9udEdlbmVyaWNGYW1pbGllcz4gbV9mb250R2VuZXJpY0ZhbWlsaWVzOwogICAgICAgICBTZWN1
cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
OwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggYzdkODE5Yi4uZmRhZWQxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsMTIgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0
KQorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGJsYWNrbGlzdCkKIHsKICAgICAvLyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBtYXRj
aCBpdCBoYXMgdG8gYmUgcHJlc2VudCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgcHJlc2VudCBp
biB0aGUgYmxhY2tsaXN0LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHdoaXRlbGlzdCBhdCBhbGws
IHRoZW4gYWxsIFVSTHMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIHdoaXRlbGlzdC4KQEAgLTEx
MCw3ICsxMTAsNyBAQCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3Ry
aW5nJiBwYXR0ZXJuKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVzZXJDb250ZW50VVJM
UGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVu
dFVSTFBhdHRlcm46Om1hdGNoZXMoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewogICAgIGlmICht
X2ludmFsaWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29s
IFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAog
ICAgIHJldHVybiBtYXRjaGVzUGF0aCh0ZXN0KTsKIH0KIAotYm9vbCBVc2VyQ29udGVudFVSTFBh
dHRlcm46Om1hdGNoZXNIb3N0KGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citib29sIFVzZXJDb250
ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewogICAg
IGNvbnN0IFN0cmluZyYgaG9zdCA9IHRlc3QuaG9zdCgpOwogICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShob3N0LCBtX2hvc3QpKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0cnVjdCBNYXRjaFRlc3Rl
cgogICAgIH0KIH07CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0aChj
b25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNo
ZXNQYXRoKGNvbnN0IFVSTCYgdGVzdCkgY29uc3QKIHsKICAgICBNYXRjaFRlc3RlciBtYXRjaCht
X3BhdGgsIHRlc3QucGF0aCgpKTsKICAgICByZXR1cm4gbWF0Y2gudGVzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKaW5kZXggMGRlMDU1ZS4uYTg2ODky
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIAogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsKIHB1YmxpYzoKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1f
aW52YWxpZDsgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBi
b29sIG1hdGNoZXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIHNjaGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkg
Y29uc3QgeyByZXR1cm4gbV9ob3N0OyB9CkBAIC01MywxMyArNTMsMTMgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBtYXRjaFN1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX21hdGNoU3ViZG9tYWlu
czsgfQogICAgIAotICAgIHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
YWNrbGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFj
a2xpc3QpOwogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJu
KTsKIAotICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29uc3QgS1VSTCYpIGNvbnN0OwotICAgIGJvb2wg
bWF0Y2hlc1BhdGgoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29u
c3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUGF0aChjb25zdCBVUkwmKSBjb25zdDsK
IAogICAgIGJvb2wgbV9pbnZhbGlkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCmluZGV4IDhi
YmZhNDkuLjhhMmI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlw
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCkBAIC0yNiw3ICsyNiw3
IEBACiAjaWZuZGVmIFVzZXJTY3JpcHRfaAogI2RlZmluZSBVc2VyU2NyaXB0X2gKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFR5cGVz
LmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVzZXJTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNj
cmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1l
cyBpbmplY3RlZEZyYW1lcykKKyAgICBVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9u
VGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKICAgICAgICAg
OiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fd2hp
dGVsaXN0KHdoaXRlbGlzdCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAg
IGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
d2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAg
ICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3Rpb25UaW1lOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAg
ICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibGFj
a2xpc3Q7CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rpb25UaW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCmluZGV4IGZjNjdkN2EuLjcyMzQ0NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
VXNlclN0eWxlU2hlZXRfaAogI2RlZmluZSBVc2VyU3R5bGVTaGVldF9oCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRUeXBlcy5oIgog
I2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVXNlclN0eWxl
U2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNl
ckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNlclN0eWxlTGV2ZWwgbGV2
ZWwpCisgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBV
c2VyU3R5bGVMZXZlbCBsZXZlbCkKICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAg
ICwgbV91cmwodXJsKQogICAgICAgICAsIG1fd2hpdGVsaXN0KHdoaXRlbGlzdCkKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4g
bV93aGl0ZWxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEZyYW1lczsgfQpAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc291cmNlOwot
ICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fd2hp
dGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0OwogICAgIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
ZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAyNzUwZTJlLi5hN2EzNjAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJvbGxlckVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCkBAIC02Nyw3ICs2
Nyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogewog
fQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJv
YXJkKiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCosIEVsZW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDRkZTI3ZS4uMTcwZTg0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcApAQCAtNjksNyAr
NjksNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsK
IH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBi
b2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIGNsaXBib2FyZC0+cGFzdGVib2FyZCgp
LndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmluZGV4IDY5ZWJkNmIuLmU3YjhiYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC04NCw3ICs4
NCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogICAg
ICAgICBkcmFnRW5kZWQoKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIG1fY2xp
ZW50LmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKS5uYW1l
KCksIGtpdChlbGVtZW50KSwgdXJsLCBsYWJlbCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCmluZGV4
IGNkOTYzMTAuLjUxMGQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJh
Z0NvbnRyb2xsZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJv
bGxlclF0LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVw
QWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVy
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIGNs
aXBib2FyZC0+cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXgg
YjdiZmVhMS4uZGYyZjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJh
Z0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250
cm9sbGVyV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVh
bnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9s
bGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAg
IFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQgPSBjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBhZjVjNTEyLi4zYjE2
ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaApAQCAtMzQs
NyArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1ZGUgIkZpbGVTeXN0
ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDU4ICs3Miw1OCBAQCBwdWJsaWM6CiAgICAgLy8gTW92ZXMg
YSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGguCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2
b2lkIG1vdmUoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVzdFBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBt
b3ZlKGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBDb3BpZXMgYSBmaWxlIG9y
IGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGguCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNvcHko
Y29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVzdFBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3Rv
cnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byByZW1v
dmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBj
b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShj
b25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWN1cnNpdmVseSBkZWxl
dGVzIGEgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNv
bXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVj
dXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAg
ICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRp
cmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBs
ZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRG
YWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRh
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMg
YSBmaWxlIGF0IGEgZ2l2ZW4gcGF0aC4gIElmIGV4Y2x1c2l2ZSBmbGFnIGlzIHRydWUsIGl0IGZh
aWxzIGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29t
cGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxl
KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRo
LiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHBhdGggYWxyZWFk
eSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkg
aXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lgog
ICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhl
cndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRo
LCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJv
b2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsK
IAogICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAv
LyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgaWYgdGhl
IGZpbGUgZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgp
IGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNrcyBpZiBhIGRpcmVj
dG9yeSBleGlzdHMgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5IGV4aXN0cy4KICAg
ICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3
aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gUmVhZHMgZGlyZWN0b3J5IGVudHJpZXMg
b2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgcGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyeSgpIGlzIGNhbGxlZCB3aGVuIGVhY2ggZGlyZWN0
b3J5IGVudHJ5IGlzIGNhbGxlZC4gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRSZWFkRGly
ZWN0b3J5RW50cmllcygpIGlzIGNhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRpcmVjdG9yeSBlbnRy
aWVzIGhhdmUgYmVlbiByZWFkLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
RmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCi0gICAgdmlydHVhbCB2b2lkIHJlYWRE
aXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8v
IENyZWF0ZXMgYW4gQXN5bmNGaWxlV3JpdGVyIGZvciBhIGdpdmVuIGZpbGUgcGF0aC4KICAgICAv
LyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0ZXIoKSBpcyBjYWxs
ZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0ZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuCiAgICAg
Ly8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lz
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCos
IGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
ID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxlIGFuZCByZWFkIGl0cyBtZXRh
ZGF0YSBmb3IgYSBuZXcgRmlsZSBvYmplY3QuCiAgICAgLy8gSW4gbG9jYWwgZmlsZXN5c3RlbSBj
YXNlcyB0aGUgYmFja2VuZCBtYXkgc2ltcGx5IHJldHVybiB0aGUgbWV0YWRhdGEgb2YgdGhlIGZp
bGUgaXRzZWxmIChhcyB3ZWxsIGFzIHJlYWRNZXRhZGF0YSBkb2VzKSwKQEAgLTEzMiw3ICsxMzIs
NyBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkg
aXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICAvLwogICAgIC8vIE5vdGU6IHRoZSByZXR1cm5lZCBt
ZXRhZGF0YSBpbmZvIGlzIGNhY2hlZCBpbiB0aGUgRmlsZSBvYmplY3QgZm9yIG5vbi1yZWd1bGFy
IGZpbGVzeXN0ZW0gdHlwZXMgKG5laXRoZXIgVGVtcG9yYXJ5IG5vciBQZXJzaXN0ZW50KS4gVGhl
IHBvcnQgY291bGQgcmV0dXJuIHZhbGlkIG1ldGFkYXRhIGlmIGl0IHdhbnRzIEZpbGUgb2JqZWN0
IHRvIGNhY2hlIG1ldGFkYXRhIChlLmcuIGlmIHRoZSBmaWxlIGJvZHkgaXMgb24gYSByZW1vdGUg
c2VydmVyKSwgYnV0IG90aGVyd2lzZSBzaG91bGQgTk9UIHJldHVybiB2YWxpZCBtZXRhZGF0YS4K
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0
IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3Qg
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAog
cHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCAwMWJlZTg5Li41
MTk0ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDYWxsZWQg
d2hlbiBhIHJlcXVlc3RlZCBmaWxlIHN5c3RlbSBpcyBvcGVuZWQuCi0gICAgdmlydHVhbCB2b2lk
IGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywgY29uc3QgS1VSTCYg
Lyogcm9vdFVSTCAqLywgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0
cmluZyYgLyogbmFtZSAqLywgY29uc3QgVVJMJiAvKiByb290VVJMICovLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENhbGxl
ZCB3aGVuIGEgZmlsZSBtZXRhZGF0YSBpcyByZWFkIHN1Y2Nlc3NmdWxseS4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRhZGF0YSYpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNT
dHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKaW5k
ZXggYzBlNmVmMi4uNjU0MDU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0
cmF0ZWd5LmgKQEAgLTMzLDE4ICszMywxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBzdHJ1
Y3QgQ29va2llOwogCiBjbGFzcyBDb29raWVzU3RyYXRlZ3kgewogcHVibGljOgotICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSA9
IDA7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tp
ZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSA9IDA7
CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0gMDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29r
aWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSA9IDA7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Db29raWVzU3RyYXRlZ3koKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAppbmRleCBjMmRiNjNj
Li4yZTg2MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5o
IgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNv
dXJjZVJlc3BvbnNlLmgiCkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46OlR5cGUgQ3Jvc3NU
aHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46OmNvcHkoY29uc3QgS1VSTCYgdXJs
KQorQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVVJMPjo6VHlwZSBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+Ojpjb3B5KGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIHJldHVybiB1cmwuY29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ny
b3NzVGhyZWFkQ29waWVyLmgKaW5kZXggYjFjMTRlYi4uYWUyZWYyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsK
LSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9y
OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwpAQCAtMTIwLDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAg
IH07CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2Us
IGZhbHNlLCBLVVJMPiB7Ci0gICAgICAgIHR5cGVkZWYgS1VSTCBUeXBlOwotICAgICAgICBzdGF0
aWMgVHlwZSBjb3B5KGNvbnN0IEtVUkwmKTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+IHsKKyAgICAgICAgdHlwZWRlZiBVUkwg
VHlwZTsKKyAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBVUkwmKTsKICAgICB9OwogCiAg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
U3RyaW5nPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAyN2RkZDZlLi41ZTcx
MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTY5LDcgKzY5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmFuZ2U7CiAKIGVudW0gRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggMWNh
NTEyZC4uYjgxYWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUoRHJhZ0ltYWdl
UmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiB9CiAKICNpZiAhUExBVEZPUk0o
TUFDKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQotRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZvbnRSZW5kZXJpbmdNb2Rl
KQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29uc3QgU3RyaW5n
JiwgRm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCmluZGV4IDdjMjI4NWUuLmZhYjk3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVkZWYgc3RydWN0IF9jYWlyb19z
dXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEltYWdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERyYWdJbWFnZVJlZjsKQEAgLTc2
LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIERyYWdJbWFnZVJlZiBj
cmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pOwogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2VG
aWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwor
ICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKICAgICB2b2lkIGRlbGV0ZURyYWdJbWFnZShE
cmFnSW1hZ2VSZWYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCmlu
ZGV4IDVjODE3ZWQuLmFkMTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0u
Y3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgaW50IEZpbGVTdHJlYW06OnJlYWQoY2hhciogYnVmZmVy
LCBpbnQgYnVmZmVyU2l6ZSkKICAgICByZXR1cm4gYnl0ZXNSZWFkOwogfQogCi1pbnQgRmlsZVN0
cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYsIGxvbmcgbG9uZywgaW50KQoraW50IEZpbGVTdHJlYW06
OndyaXRlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZywgaW50KQogewogICAgIC8vIEZJWE1FOiB0byBi
ZSBpbXBsZW1lbnRlZC4KICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3Ry
ZWFtLmgKaW5kZXggYmFhMzk0OC4uZWVlYWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
dHJlYW0uaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIEFsbCBtZXRob2RzIGFyZSBzeW5jaHJvbm91cy4KIGNs
YXNzIEZpbGVTdHJlYW0gOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlU3RyZWFtPiB7CkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdyaXRlcyBhIGJsb2IgdG8gdGhlIGZpbGUuCiAg
ICAgLy8gUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgYmVpbmcgd3JpdHRlbiBvbiBzdWNjZXNzLiAt
MSBvdGhlcndpc2UuCi0gICAgaW50IHdyaXRlKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9u
ZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgaW50IHdyaXRlKGNvbnN0IFVSTCYgYmxvYlVS
TCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRydW5jYXRlcyB0
aGUgZmlsZSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgogICAgIC8vIFJldHVybnMgdHJ1ZSBv
biBzdWNjZXNzLiBGYWxzZSBvdGhlcndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTAwYWMzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzNSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVkZSAiRGVjb2RlRXNjYXBlU2Vx
dWVuY2VzLmgiCi0jaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgVVNF
KElDVV9VTklDT0RFKQotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNlbmRpZgotCi0vLyBG
SVhNRTogVGhpcyBmaWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBT
dHJpbmcuCi0vLyBXZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0
IGRvZXNuJ3QgaW52b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMg
dG8gdXNlIFN0cmluZ0J1ZmZlciBpbnN0ZWFkLgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotdXNp
bmcgbmFtZXNwYWNlIFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIFZlY3Rv
cjxjaGFyLCA1MTI+IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEyPiBVQ2hh
ckJ1ZmZlcjsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxpZFBvcnROdW1iZXIg
PSAweEZGRkU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZG
RkY7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKFVDaGFy
IGNoYXJhY3RlciwgY2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17Ci0gICAgQVNTRVJUKGlzQVNDSUlM
b3dlcihsb3dlcmNhc2VMZXR0ZXIpKTsKLSAgICByZXR1cm4gKGNoYXJhY3RlciB8IDB4MjApID09
IGxvd2VyY2FzZUxldHRlcjsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgd3NTY2hlbWVbXSA9IHsn
dycsICdzJ307Ci1zdGF0aWMgY29uc3QgY2hhciBmdHBTY2hlbWVbXSA9IHsnZicsICd0JywgJ3An
fTsKLXN0YXRpYyBjb25zdCBjaGFyIGZ0cFBvcnRbXSA9IHsnMicsICcxJ307Ci1zdGF0aWMgY29u
c3QgY2hhciB3c3NTY2hlbWVbXSA9IHsndycsICdzJywgJ3MnfTsKLXN0YXRpYyBjb25zdCBjaGFy
IGZpbGVTY2hlbWVbXSA9IHsnZicsICdpJywgJ2wnLCAnZSd9Owotc3RhdGljIGNvbnN0IGNoYXIg
aHR0cFNjaGVtZVtdID0geydoJywgJ3QnLCAndCcsICdwJ307Ci1zdGF0aWMgY29uc3QgY2hhciBo
dHRwUG9ydFtdID0geyc4JywgJzAnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0dHBzU2NoZW1lW10g
PSB7J2gnLCAndCcsICd0JywgJ3AnLCAncyd9Owotc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNQb3J0
W10gPSB7JzQnLCAnNCcsICczJ307Ci1zdGF0aWMgY29uc3QgY2hhciBnb3BoZXJTY2hlbWVbXSA9
IHsnZycsICdvJywgJ3AnLCAnaCcsICdlJywgJ3InfTsKLXN0YXRpYyBjb25zdCBjaGFyIGdvcGhl
clBvcnRbXSA9IHsnNycsICcwJ307Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHRlcikKLXsKLSAg
ICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOwotICAgIHJldHVybiAoY2hh
cmFjdGVyIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCi1lbnVtIFVSTENoYXJhY3Rl
ckNsYXNzZXMgewotICAgIC8vIGFscGhhIAotICAgIFNjaGVtZUZpcnN0Q2hhciA9IDEgPDwgMCwK
LQotICAgIC8vICggYWxwaGEgfCBkaWdpdCB8ICIrIiB8ICItIiB8ICIuIiApCi0gICAgU2NoZW1l
Q2hhciA9IDEgPDwgMSwKLQotICAgIC8vIG1hcmsgICAgICAgID0gIi0iIHwgIl8iIHwgIi4iIHwg
IiEiIHwgIn4iIHwgIioiIHwgIiciIHwgIigiIHwgIikiCi0gICAgLy8gdW5yZXNlcnZlZCAgPSBh
bHBoYW51bSB8IG1hcmsKLSAgICAvLyAoIHVucmVzZXJ2ZWQgfCBlc2NhcGVkIHwgIjsiIHwgIjoi
IHwgIiYiIHwgIj0iIHwgIisiIHwgIiQiIHwgIiwiICkKLSAgICBVc2VySW5mb0NoYXIgPSAxIDw8
IDIsCi0KLSAgICAvLyBhbG51bSB8ICIuIiB8ICItIiB8ICIlIgotICAgIC8vIFRoZSBhYm92ZSBp
cyB3aGF0IHRoZSBzcGVjaWZpY2F0aW9uIHNheXMsIGJ1dCB3ZSBhcmUgbGVuaWVudCB0bwotICAg
IC8vIG1hdGNoIGV4aXN0aW5nIHByYWN0aWNlIGFuZCBhbHNvIGFsbG93OgotICAgIC8vICJfIgot
ICAgIEhvc3RuYW1lQ2hhciA9IDEgPDwgMywKLQotICAgIC8vIGhleGRpZ2l0IHwgIjoiIHwgIiUi
Ci0gICAgSVB2NkNoYXIgPSAxIDw8IDQsCi0KLSAgICAvLyAiIyIgfCAiPyIgfCAiLyIgfCBudWwK
LSAgICBQYXRoU2VnbWVudEVuZENoYXIgPSAxIDw8IDUsCi0KLSAgICAvLyBub3QgYWxsb3dlZCBp
biBwYXRoCi0gICAgQmFkQ2hhciA9IDEgPDwgNgotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGNoYXIgY2hhcmFjdGVyQ2xhc3NUYWJsZVsyNTZdID0gewotICAgIC8qIDAgbnVsICovIFBhdGhT
ZWdtZW50RW5kQ2hhciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKLSAgICAvKiAyIHN0eCAqLyBC
YWRDaGFyLCAgICAvKiAzIGV0eCAqLyBCYWRDaGFyLAotICAgIC8qIDQgZW90ICovIEJhZENoYXIs
ICAgIC8qIDUgZW5xICovIEJhZENoYXIsICAgIC8qIDYgYWNrICovIEJhZENoYXIsICAgIC8qIDcg
YmVsICovIEJhZENoYXIsCi0gICAgLyogOCBicyAqLyBCYWRDaGFyLCAgICAgLyogOSBodCAqLyBC
YWRDaGFyLCAgICAgLyogMTAgbmwgKi8gQmFkQ2hhciwgICAgLyogMTEgdnQgKi8gQmFkQ2hhciwK
LSAgICAvKiAxMiBucCAqLyBCYWRDaGFyLCAgICAvKiAxMyBjciAqLyBCYWRDaGFyLCAgICAvKiAx
NCBzbyAqLyBCYWRDaGFyLCAgICAvKiAxNSBzaSAqLyBCYWRDaGFyLAotICAgIC8qIDE2IGRsZSAq
LyBCYWRDaGFyLCAgIC8qIDE3IGRjMSAqLyBCYWRDaGFyLCAgIC8qIDE4IGRjMiAqLyBCYWRDaGFy
LCAgIC8qIDE5IGRjMyAqLyBCYWRDaGFyLAotICAgIC8qIDIwIGRjNCAqLyBCYWRDaGFyLCAgIC8q
IDIxIG5hayAqLyBCYWRDaGFyLCAgIC8qIDIyIHN5biAqLyBCYWRDaGFyLCAgIC8qIDIzIGV0YiAq
LyBCYWRDaGFyLAotICAgIC8qIDI0IGNhbiAqLyBCYWRDaGFyLCAgIC8qIDI1IGVtICovIEJhZENo
YXIsICAgIC8qIDI2IHN1YiAqLyBCYWRDaGFyLCAgIC8qIDI3IGVzYyAqLyBCYWRDaGFyLAotICAg
IC8qIDI4IGZzICovIEJhZENoYXIsICAgIC8qIDI5IGdzICovIEJhZENoYXIsICAgIC8qIDMwIHJz
ICovIEJhZENoYXIsICAgIC8qIDMxIHVzICovIEJhZENoYXIsCi0gICAgLyogMzIgc3AgKi8gQmFk
Q2hhciwgICAgLyogMzMgICEgKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDM0ICAiICovIEJhZENo
YXIsICAgIC8qIDM1ICAjICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENoYXIsCi0gICAgLyog
MzYgICQgKi8gVXNlckluZm9DaGFyLCAgICAvKiAzNyAgJSAqLyBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBJUHY2Q2hhciB8IEJhZENoYXIsCi0gICAgLyogMzggICYgKi8gVXNlckluZm9D
aGFyLCAgICAvKiAzOSAgJyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDAgICggKi8gVXNlcklu
Zm9DaGFyLCAgICAvKiA0MSAgKSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDIgICogKi8gVXNl
ckluZm9DaGFyLCAgICAvKiA0MyAgKyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyLAotICAg
IC8qIDQ0ICAsICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0NSAgLSAqLyBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDQ2ICAuICovIFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA0NyAgLyAq
LyBQYXRoU2VnbWVudEVuZENoYXIsCi0gICAgLyogNDggIDAgKi8gU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA0OSAgMSAqLyBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsICAgIAotICAg
IC8qIDUwICAyICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJ
UHY2Q2hhciwgCi0gICAgLyogNTEgIDMgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDUyICA0ICovIFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTMgIDUgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8q
IDU0ICA2ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2
Q2hhciwgCi0gICAgLyogNTUgIDcgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU2ICA4ICovIFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTcgIDkgKi8gU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU4
ICA6ICovIFVzZXJJbmZvQ2hhciB8IElQdjZDaGFyLCAgICAvKiA1OSAgOyAqLyBVc2VySW5mb0No
YXIsCi0gICAgLyogNjAgIDwgKi8gQmFkQ2hhciwgICAgLyogNjEgID0gKi8gVXNlckluZm9DaGFy
LAotICAgIC8qIDYyICA+ICovIEJhZENoYXIsICAgIC8qIDYzICA/ICovIFBhdGhTZWdtZW50RW5k
Q2hhciB8IEJhZENoYXIsCi0gICAgLyogNjQgIEAgKi8gMCwKLSAgICAvKiA2NSAgQSAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsICAgIAotICAgIC8qIDY2ICBCICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA2NyAg
QyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjggIEQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8q
IDY5ICBFICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA3MCAgRiAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0g
ICAgLyogNzEgIEcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3MiAgSCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDczICBJICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
Ci0gICAgLyogNzQgIEogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NSAgSyAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc2ICBMICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogNzcgIE0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3OCAgTiAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc5ICBP
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsCi0gICAgLyogODAgIFAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4MSAgUSAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDgy
ICBSICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsCi0gICAgLyogODMgIFMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NCAgVCAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8q
IDg1ICBVICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIsCi0gICAgLyogODYgIFYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NyAgVyAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAg
IC8qIDg4ICBYICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDg5ICBZICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogOTAgIFogKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiA5MSAgWyAqLyAwLAotICAgIC8qIDkyICBcICovIDAsICAgIC8qIDkzICBdICovIDAs
Ci0gICAgLyogOTQgIF4gKi8gMCwKLSAgICAvKiA5NSAgXyAqLyBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsCi0gICAgLyogOTYgIGAgKi8gMCwKLSAgICAvKiA5NyAgYSAqLyBTY2hlbWVGaXJz
dENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNo
YXIsCi0gICAgLyogOTggIGIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA5OSAgYyAqLyBTY2hl
bWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsCi0gICAgLyogMTAwICBkICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogMTAxICBl
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiAxMDIgIGYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAv
KiAxMDMgIGcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDQgIGggKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTA1ICBpICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
Ci0gICAgLyogMTA2ICBqICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDEwNyAgayAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEwOCAg
bCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLCAKLSAgICAvKiAxMDkgIG0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTAgIG4gKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAg
LyogMTExICBvICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTEyICBwICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDExMyAgcSAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LAotICAgIC8qIDExNCAgciAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMTUgIHMgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTYg
IHQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwgCi0gICAgLyogMTE3ICB1ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE4ICB2ICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAg
IC8qIDExOSAgdyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEyMCAgeCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMjEgIHkgKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKLSAgICAvKiAxMjIgIHogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTIzICB7ICovIDAsCi0gICAgLyogMTI0
ICB8ICovIDAsICAgLyogMTI1ICB9ICovIDAsICAgLyogMTI2ICB+ICovIFVzZXJJbmZvQ2hhciwg
ICAvKiAxMjcgZGVsICovIEJhZENoYXIsCi0gICAgLyogMTI4ICovIEJhZENoYXIsIC8qIDEyOSAq
LyBCYWRDaGFyLCAvKiAxMzAgKi8gQmFkQ2hhciwgLyogMTMxICovIEJhZENoYXIsCi0gICAgLyog
MTMyICovIEJhZENoYXIsIC8qIDEzMyAqLyBCYWRDaGFyLCAvKiAxMzQgKi8gQmFkQ2hhciwgLyog
MTM1ICovIEJhZENoYXIsCi0gICAgLyogMTM2ICovIEJhZENoYXIsIC8qIDEzNyAqLyBCYWRDaGFy
LCAvKiAxMzggKi8gQmFkQ2hhciwgLyogMTM5ICovIEJhZENoYXIsCi0gICAgLyogMTQwICovIEJh
ZENoYXIsIC8qIDE0MSAqLyBCYWRDaGFyLCAvKiAxNDIgKi8gQmFkQ2hhciwgLyogMTQzICovIEJh
ZENoYXIsCi0gICAgLyogMTQ0ICovIEJhZENoYXIsIC8qIDE0NSAqLyBCYWRDaGFyLCAvKiAxNDYg
Ki8gQmFkQ2hhciwgLyogMTQ3ICovIEJhZENoYXIsCi0gICAgLyogMTQ4ICovIEJhZENoYXIsIC8q
IDE0OSAqLyBCYWRDaGFyLCAvKiAxNTAgKi8gQmFkQ2hhciwgLyogMTUxICovIEJhZENoYXIsCi0g
ICAgLyogMTUyICovIEJhZENoYXIsIC8qIDE1MyAqLyBCYWRDaGFyLCAvKiAxNTQgKi8gQmFkQ2hh
ciwgLyogMTU1ICovIEJhZENoYXIsCi0gICAgLyogMTU2ICovIEJhZENoYXIsIC8qIDE1NyAqLyBC
YWRDaGFyLCAvKiAxNTggKi8gQmFkQ2hhciwgLyogMTU5ICovIEJhZENoYXIsCi0gICAgLyogMTYw
ICovIEJhZENoYXIsIC8qIDE2MSAqLyBCYWRDaGFyLCAvKiAxNjIgKi8gQmFkQ2hhciwgLyogMTYz
ICovIEJhZENoYXIsCi0gICAgLyogMTY0ICovIEJhZENoYXIsIC8qIDE2NSAqLyBCYWRDaGFyLCAv
KiAxNjYgKi8gQmFkQ2hhciwgLyogMTY3ICovIEJhZENoYXIsCi0gICAgLyogMTY4ICovIEJhZENo
YXIsIC8qIDE2OSAqLyBCYWRDaGFyLCAvKiAxNzAgKi8gQmFkQ2hhciwgLyogMTcxICovIEJhZENo
YXIsCi0gICAgLyogMTcyICovIEJhZENoYXIsIC8qIDE3MyAqLyBCYWRDaGFyLCAvKiAxNzQgKi8g
QmFkQ2hhciwgLyogMTc1ICovIEJhZENoYXIsCi0gICAgLyogMTc2ICovIEJhZENoYXIsIC8qIDE3
NyAqLyBCYWRDaGFyLCAvKiAxNzggKi8gQmFkQ2hhciwgLyogMTc5ICovIEJhZENoYXIsCi0gICAg
LyogMTgwICovIEJhZENoYXIsIC8qIDE4MSAqLyBCYWRDaGFyLCAvKiAxODIgKi8gQmFkQ2hhciwg
LyogMTgzICovIEJhZENoYXIsCi0gICAgLyogMTg0ICovIEJhZENoYXIsIC8qIDE4NSAqLyBCYWRD
aGFyLCAvKiAxODYgKi8gQmFkQ2hhciwgLyogMTg3ICovIEJhZENoYXIsCi0gICAgLyogMTg4ICov
IEJhZENoYXIsIC8qIDE4OSAqLyBCYWRDaGFyLCAvKiAxOTAgKi8gQmFkQ2hhciwgLyogMTkxICov
IEJhZENoYXIsCi0gICAgLyogMTkyICovIEJhZENoYXIsIC8qIDE5MyAqLyBCYWRDaGFyLCAvKiAx
OTQgKi8gQmFkQ2hhciwgLyogMTk1ICovIEJhZENoYXIsCi0gICAgLyogMTk2ICovIEJhZENoYXIs
IC8qIDE5NyAqLyBCYWRDaGFyLCAvKiAxOTggKi8gQmFkQ2hhciwgLyogMTk5ICovIEJhZENoYXIs
Ci0gICAgLyogMjAwICovIEJhZENoYXIsIC8qIDIwMSAqLyBCYWRDaGFyLCAvKiAyMDIgKi8gQmFk
Q2hhciwgLyogMjAzICovIEJhZENoYXIsCi0gICAgLyogMjA0ICovIEJhZENoYXIsIC8qIDIwNSAq
LyBCYWRDaGFyLCAvKiAyMDYgKi8gQmFkQ2hhciwgLyogMjA3ICovIEJhZENoYXIsCi0gICAgLyog
MjA4ICovIEJhZENoYXIsIC8qIDIwOSAqLyBCYWRDaGFyLCAvKiAyMTAgKi8gQmFkQ2hhciwgLyog
MjExICovIEJhZENoYXIsCi0gICAgLyogMjEyICovIEJhZENoYXIsIC8qIDIxMyAqLyBCYWRDaGFy
LCAvKiAyMTQgKi8gQmFkQ2hhciwgLyogMjE1ICovIEJhZENoYXIsCi0gICAgLyogMjE2ICovIEJh
ZENoYXIsIC8qIDIxNyAqLyBCYWRDaGFyLCAvKiAyMTggKi8gQmFkQ2hhciwgLyogMjE5ICovIEJh
ZENoYXIsCi0gICAgLyogMjIwICovIEJhZENoYXIsIC8qIDIyMSAqLyBCYWRDaGFyLCAvKiAyMjIg
Ki8gQmFkQ2hhciwgLyogMjIzICovIEJhZENoYXIsCi0gICAgLyogMjI0ICovIEJhZENoYXIsIC8q
IDIyNSAqLyBCYWRDaGFyLCAvKiAyMjYgKi8gQmFkQ2hhciwgLyogMjI3ICovIEJhZENoYXIsCi0g
ICAgLyogMjI4ICovIEJhZENoYXIsIC8qIDIyOSAqLyBCYWRDaGFyLCAvKiAyMzAgKi8gQmFkQ2hh
ciwgLyogMjMxICovIEJhZENoYXIsCi0gICAgLyogMjMyICovIEJhZENoYXIsIC8qIDIzMyAqLyBC
YWRDaGFyLCAvKiAyMzQgKi8gQmFkQ2hhciwgLyogMjM1ICovIEJhZENoYXIsCi0gICAgLyogMjM2
ICovIEJhZENoYXIsIC8qIDIzNyAqLyBCYWRDaGFyLCAvKiAyMzggKi8gQmFkQ2hhciwgLyogMjM5
ICovIEJhZENoYXIsCi0gICAgLyogMjQwICovIEJhZENoYXIsIC8qIDI0MSAqLyBCYWRDaGFyLCAv
KiAyNDIgKi8gQmFkQ2hhciwgLyogMjQzICovIEJhZENoYXIsCi0gICAgLyogMjQ0ICovIEJhZENo
YXIsIC8qIDI0NSAqLyBCYWRDaGFyLCAvKiAyNDYgKi8gQmFkQ2hhciwgLyogMjQ3ICovIEJhZENo
YXIsCi0gICAgLyogMjQ4ICovIEJhZENoYXIsIC8qIDI0OSAqLyBCYWRDaGFyLCAvKiAyNTAgKi8g
QmFkQ2hhciwgLyogMjUxICovIEJhZENoYXIsCi0gICAgLyogMjUyICovIEJhZENoYXIsIC8qIDI1
MyAqLyBCYWRDaGFyLCAvKiAyNTQgKi8gQmFkQ2hhciwgLyogMjU1ICovIEJhZENoYXIKLX07Ci0K
LXN0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBz
cmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCk7Ci1zdGF0aWMgdm9pZCBlbmNvZGVSZWxhdGl2
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5nJiwgQ2hhckJ1ZmZl
ciYgb3VwdXQpOwotc3RhdGljIFN0cmluZyBzdWJzdGl0dXRlQmFja3NsYXNoZXMoY29uc3QgU3Ry
aW5nJik7Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hhcihjaGFyIGMpIHsg
cmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyld
ICYgU2NoZW1lRmlyc3RDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVGaXJzdENo
YXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2Nd
ICYgU2NoZW1lRmlyc3RDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1lQ2hhcihj
aGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oYyldICYgU2NoZW1lQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1lQ2hh
cihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNzVGFibGVbY10g
JiBTY2hlbWVDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzVXNlckluZm9DaGFyKHVuc2ln
bmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFVzZXJJbmZvQ2hh
cjsgfQotc3RhdGljIGlubGluZSBib29sIGlzSG9zdG5hbWVDaGFyKHVuc2lnbmVkIGNoYXIgYykg
eyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIEhvc3RuYW1lQ2hhcjsgfQotc3RhdGlj
IGlubGluZSBib29sIGlzSVB2NkNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0
ZXJDbGFzc1RhYmxlW2NdICYgSVB2NkNoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1BhdGhT
ZWdtZW50RW5kQ2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYgUGF0aFNlZ21lbnRFbmRDaGFyOyB9Ci1zdGF0aWMg
aW5saW5lIGJvb2wgaXNQYXRoU2VnbWVudEVuZENoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAw
eGZmICYmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgUGF0aFNlZ21lbnRFbmRDaGFyKTsgfQot
c3RhdGljIGlubGluZSBib29sIGlzQmFkQ2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNo
YXJhY3RlckNsYXNzVGFibGVbY10gJiBCYWRDaGFyOyB9Ci0gICAgCi1zdGF0aWMgaW5saW5lIGJv
b2wgaXNTY2hlbWVDaGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNoYXJhY3RlciwgY2hh
ciBzY2hlbWVDaGFyYWN0ZXIpCi17Ci0gICAgQVNTRVJUKGlzU2NoZW1lQ2hhcihjaGFyYWN0ZXIp
KTsKLSAgICBBU1NFUlQoc2NoZW1lQ2hhcmFjdGVyICYgMHgyMCk7Ci0gICAgQVNTRVJUKGlzQVND
SUlMb3dlcihzY2hlbWVDaGFyYWN0ZXIpIHx8ICghaXNBU0NJSVVwcGVyKHNjaGVtZUNoYXJhY3Rl
cikgJiYgaXNTY2hlbWVDaGFyKHNjaGVtZUNoYXJhY3RlcikpKTsKLSAgICByZXR1cm4gKGNoYXJh
Y3RlciB8IDB4MjApID09IHNjaGVtZUNoYXJhY3RlcjsKLX0KLQotLy8gQ29waWVzIHRoZSBzb3Vy
Y2UgdG8gdGhlIGRlc3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJz
IGFyZQotLy8gQVNDSUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91
Z2guIE51bGwgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcs
IGFuZCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KLXN0
YXRpYyB2b2lkIGNvcHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKLXsK
LSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0
cmluZy5pczhCaXQoKSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBzdHJpbmcubGVuZ3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hhciogc3Jj
ID0gc3RyaW5nLmNoYXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5n
Lmxlbmd0aCgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQot
ICAgICAgICAgICAgZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7Ci0gICAgfQot
fQotCi1zdGF0aWMgdm9pZCBhcHBlbmRBU0NJSShjb25zdCBTdHJpbmcmIGJhc2UsIGNvbnN0IGNo
YXIqIHJlbCwgc2l6ZV90IGxlbiwgQ2hhckJ1ZmZlciYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5y
ZXNpemUoYmFzZS5sZW5ndGgoKSArIGxlbiArIDEpOwotICAgIGNvcHlBU0NJSShiYXNlLCBidWZm
ZXIuZGF0YSgpKTsKLSAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSArIGJhc2UubGVuZ3RoKCksIHJl
bCwgbGVuKTsKLSAgICBidWZmZXJbYnVmZmVyLnNpemUoKSAtIDFdID0gJ1wwJzsKLX0KLQotLy8g
RklYTUU6IE1vdmUgdG8gV1RGU3RyaW5nLmggZXZlbnR1YWxseS4KLS8vIFJldHVybnMgdGhlIGlu
ZGV4IG9mIHRoZSBmaXJzdCBpbmRleCBpbiBzdHJpbmcgfHN8IG9mIGFueSBvZiB0aGUgY2hhcmFj
dGVycwotLy8gaW4gfHRvRmluZHwuIHx0b0ZpbmR8IHNob3VsZCBiZSBhIG51bGwtdGVybWluYXRl
ZCBzdHJpbmcsIGFsbCBjaGFyYWN0ZXJzIHVwCi0vLyB0byB0aGUgbnVsbCB3aWxsIGJlIHNlYXJj
aGVkLiBSZXR1cm5zIGludCBpZiBub3QgZm91bmQuCi1zdGF0aWMgaW50IGZpbmRGaXJzdE9mKGNv
bnN0IFVDaGFyKiBzLCBpbnQgc0xlbiwgaW50IHN0YXJ0UG9zLCBjb25zdCBjaGFyKiB0b0ZpbmQp
Ci17Ci0gICAgZm9yIChpbnQgaSA9IHN0YXJ0UG9zOyBpIDwgc0xlbjsgaSsrKSB7Ci0gICAgICAg
IGNvbnN0IGNoYXIqIGN1ciA9IHRvRmluZDsKLSAgICAgICAgd2hpbGUgKCpjdXIpIHsKLSAgICAg
ICAgICAgIGlmIChzW2ldID09ICooY3VyKyspKQotICAgICAgICAgICAgICAgIHJldHVybiBpOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lk
IGNoZWNrRW5jb2RlZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlRfVU5V
U0VEKHVybCwgdXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOwotICAgIEFTU0VSVF9VTlVTRUQodXJs
LCB1cmwuaXNFbXB0eSgpIHx8IGlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkpOwotfQotCi1pbmxp
bmUgYm9vbCBLVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFy
KiBwcm90b2NvbCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhzdHJpbmcsIHBy
b3RvY29sKTsKLX0KLQotdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX2lzVmFsaWQg
PSBmYWxzZTsKLSAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKLSAgICBtX3Nj
aGVtZUVuZCA9IDA7Ci0gICAgbV91c2VyU3RhcnQgPSAwOwotICAgIG1fdXNlckVuZCA9IDA7Ci0g
ICAgbV9wYXNzd29yZEVuZCA9IDA7Ci0gICAgbV9ob3N0RW5kID0gMDsKLSAgICBtX3BvcnRFbmQg
PSAwOwotICAgIG1fcGF0aEVuZCA9IDA7Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOwot
ICAgIG1fcXVlcnlFbmQgPSAwOwotICAgIG1fZnJhZ21lbnRFbmQgPSAwOwotfQotCi1LVVJMOjpL
VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgcGFyc2Uo
dXJsKTsKLSAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKLX0KLQotS1VSTDo6S1VSTChjb25z
dCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQotewotICAgIGluaXQoYmFzZSwg
cmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6S1VSTChjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5n
KQotewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3Ig
dGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS4g
QSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMgY29udGVudHMgYWRkZWQgdG8g
YSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQotICAgIC8vIHRvIGJlIGNv
bnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JG
b3JtU3VibWlzc2lvbigpKTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwodW5z
aWduZWQgY2hhciBjKQotewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5n
IHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5v
dGUgdGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21w
YXJpc29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4g
YyA8PSAnICc7Ci19Ci0KLXZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBT
dHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIC8v
IEFsbG93IHJlc29sdXRpb25zIHdpdGggYSBudWxsIG9yIGVtcHR5IGJhc2UgVVJMLCBidXQgbm90
IHdpdGggYW55IG90aGVyIGludmFsaWQgb25lLgotICAgIC8vIEZJWE1FOiBJcyB0aGlzIGEgZ29v
ZCBydWxlPwotICAgIGlmICghYmFzZS5tX2lzVmFsaWQgJiYgIWJhc2UuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG1fc3RyaW5nID0gcmVsYXRpdmU7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luIElF
LCB0cmVhdCBiYWNrc2xhc2hlcyBhcyBpZiB0aGV5IHdlcmUgc2xhc2hlcywKLSAgICAvLyBhcyBs
b25nIGFzIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggamF2YXNjcmlwdDogb3IgZGF0YTogVVJMcy4K
LSAgICBTdHJpbmcgcmVsID0gcmVsYXRpdmU7Ci0gICAgaWYgKHJlbC5jb250YWlucygnXFwnKSAm
JiAhKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkgfHwgcHJvdG9jb2xJcyhyZWwsICJkYXRhIikp
KQotICAgICAgICByZWwgPSBzdWJzdGl0dXRlQmFja3NsYXNoZXMocmVsKTsKLQotICAgIGJvb2wg
YWxsQVNDSUkgPSByZWwuY29udGFpbnNPbmx5QVNDSUkoKTsKLSAgICBDaGFyQnVmZmVyIHN0ckJ1
ZmZlcjsKLSAgICBjaGFyKiBzdHI7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBpZiAoYWxsQVNDSUkp
IHsKLSAgICAgICAgbGVuID0gcmVsLmxlbmd0aCgpOwotICAgICAgICBzdHJCdWZmZXIucmVzaXpl
KGxlbiArIDEpOwotICAgICAgICBjb3B5QVNDSUkocmVsLCBzdHJCdWZmZXIuZGF0YSgpKTsKLSAg
ICAgICAgc3RyQnVmZmVyW2xlbl0gPSAwOwotICAgICAgICBzdHIgPSBzdHJCdWZmZXIuZGF0YSgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuY29kZVJlbGF0aXZlU3RyaW5nKHJlbCwgZW5jb2Rp
bmcsIHN0ckJ1ZmZlcik7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRhKCk7Ci0gICAgICAg
IGxlbiA9IHN0cmxlbihzdHIpOwotICAgIH0KLQotICAgIC8vIEdldCByaWQgb2YgbGVhZGluZyB3
aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUgKGxlbiAmJiBzaG91
bGRUcmltRnJvbVVSTCgqc3RyKSkgewotICAgICAgICBzdHIrKzsKLSAgICAgICAgLS1sZW47Ci0g
ICAgfQotCi0gICAgLy8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9s
IGNoYXJhY3RlcnMuCi0gICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTChzdHJbbGVu
IC0gMV0pKQotICAgICAgICBzdHJbLS1sZW5dID0gJ1wwJzsKLQotICAgIC8vIEFjY29yZGluZyB0
byB0aGUgUkZDLCB0aGUgcmVmZXJlbmNlIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhbgotICAg
IC8vIGFic29sdXRlIFVSSSBpZiBwb3NzaWJsZSwgdXNpbmcgdGhlICJsZWZ0bW9zdCwgbG9uZ2Vz
dCIKLSAgICAvLyBhbGdvcml0aG0uIElmIHRoZSBVUkkgcmVmZXJlbmNlIGlzIGFic29sdXRlIGl0
IHdpbGwgaGF2ZSBhCi0gICAgLy8gc2NoZW1lLCBtZWFuaW5nIHRoYXQgaXQgd2lsbCBoYXZlIGEg
Y29sb24gYmVmb3JlIHRoZSBmaXJzdAotICAgIC8vIG5vbi1zY2hlbWUgZWxlbWVudC4KLSAgICBi
b29sIGFic29sdXRlID0gZmFsc2U7Ci0gICAgY2hhciogcCA9IHN0cjsKLSAgICBpZiAoaXNTY2hl
bWVGaXJzdENoYXIoKnApKSB7Ci0gICAgICAgICsrcDsKLSAgICAgICAgd2hpbGUgKGlzU2NoZW1l
Q2hhcigqcCkpIHsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoKnAg
PT0gJzonKSB7Ci0gICAgICAgICAgICBpZiAocFsxXSAhPSAnLycgJiYgZXF1YWxJZ25vcmluZ0Nh
c2UoYmFzZS5wcm90b2NvbCgpLCBTdHJpbmcoc3RyLCBwIC0gc3RyKSkgJiYgYmFzZS5pc0hpZXJh
cmNoaWNhbCgpKQotICAgICAgICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFic29sdXRlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIENoYXJCdWZmZXIgcGFyc2VCdWZmZXI7Ci0KLSAgICBpZiAoYWJzb2x1dGUpIHsKLSAgICAg
ICAgcGFyc2Uoc3RyLCAmcmVsYXRpdmUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIHRo
ZSBiYXNlIGlzIGVtcHR5IG9yIG9wYXF1ZSAoZS5nLiBkYXRhOiBvciBqYXZhc2NyaXB0OiksIHRo
ZW4gdGhlIFVSTCBpcyBpbnZhbGlkCi0gICAgICAgIC8vIHVubGVzcyB0aGUgcmVsYXRpdmUgVVJM
IGlzIGEgc2luZ2xlIGZyYWdtZW50LgotICAgICAgICBpZiAoIWJhc2UuaXNIaWVyYXJjaGljYWwo
KSkgewotICAgICAgICAgICAgaWYgKHN0clswXSA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBh
cHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4s
IHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCks
ICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3Ry
aW5nID0gcmVsYXRpdmU7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChz
dHJbMF0pIHsKLSAgICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLy8gVGhlIHJlZmVyZW5j
ZSBpcyBlbXB0eSwgc28gdGhpcyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBkb2N1bWVudCB3
aXRoIGFueSBmcmFnbWVudCBpZGVudGlmaWVyIHJlbW92ZWQuCi0gICAgICAgICAgICAqdGhpcyA9
IGJhc2U7Ci0gICAgICAgICAgICByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlICcjJzogewotICAgICAgICAgICAgLy8gbXVzdCBiZSBm
cmFnbWVudC1vbmx5IHJlZmVyZW5jZQotICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0
cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAg
ICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlICc/JzogewotICAgICAgICAgICAgLy8g
cXVlcnktb25seSByZWZlcmVuY2UsIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIG5vbi1VUkwgcmVz
dWx0cwotICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9w
YXRoRW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgIHBhcnNlKHBhcnNl
QnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgJy8nOgotICAgICAgICAgICAgLy8gbXVzdCBiZSBuZXQtcGF0aCBvciBh
YnNvbHV0ZS1wYXRoIHJlZmVyZW5jZQotICAgICAgICAgICAgaWYgKHN0clsxXSA9PSAnLycpIHsK
LSAgICAgICAgICAgICAgICAvLyBuZXQtcGF0aAotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJ
KGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fc2NoZW1lRW5kICsgMSksIHN0ciwgbGVuLCBwYXJz
ZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVs
YXRpdmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBhYnMtcGF0
aAotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1f
cG9ydEVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2Uo
cGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgLy8gbXVzdCBiZSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZQotCi0gICAgICAgICAgICAgICAg
Ly8gQmFzZSBwYXJ0IHBsdXMgcmVsYXRpdmUgcGFydCBwbHVzIG9uZSBwb3NzaWJsZSBzbGFzaCBh
ZGRlZCBpbiBiZXR3ZWVuIHBsdXMgdGVybWluYXRpbmcgXDAgYnl0ZS4KLSAgICAgICAgICAgICAg
ICBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IGJhc2UubV9wYXRoRW5kICsgMSArIGxlbiArIDE7
Ci0gICAgICAgICAgICAgICAgcGFyc2VCdWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwotCi0gICAg
ICAgICAgICAgICAgY2hhciogYnVmZmVyUG9zID0gcGFyc2VCdWZmZXIuZGF0YSgpOwotICAgICAg
ICAgICAgICAgIGNoYXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyUG9zOwotCi0gICAgICAgICAgICAg
ICAgLy8gZmlyc3QgY29weSBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGF0aCBmcm9tIHRoZSBiYXNl
Ci0gICAgICAgICAgICAgICAgQ2hhckJ1ZmZlciBiYXNlU3RyaW5nQnVmZmVyKGJhc2UubV9zdHJp
bmcubGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIGNvcHlBU0NJSShiYXNlLm1fc3RyaW5nLCBi
YXNlU3RyaW5nQnVmZmVyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFz
ZVN0cmluZyA9IGJhc2VTdHJpbmdCdWZmZXIuZGF0YSgpOwotICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IGJhc2VTdHJpbmc7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcGF0aFN0YXJ0ID0gYmFzZVN0cmluZ1N0YXJ0ICsgYmFzZS5tX3BvcnRFbmQ7Ci0g
ICAgICAgICAgICAgICAgd2hpbGUgKGJhc2VTdHJpbmdTdGFydCA8IHBhdGhTdGFydCkKLSAgICAg
ICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gKmJhc2VTdHJpbmdTdGFydCsrOwotICAgICAg
ICAgICAgICAgIGNoYXIqIGJ1ZmZlclBhdGhTdGFydCA9IGJ1ZmZlclBvczsKLQotICAgICAgICAg
ICAgICAgIC8vIG5vdyBjb3B5IHRoZSBiYXNlIHBhdGgKLSAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBiYXNlU3RyaW5nRW5kID0gYmFzZVN0cmluZyArIGJhc2UubV9wYXRoRW5kOwotCi0gICAg
ICAgICAgICAgICAgLy8gZ28gYmFjayB0byB0aGUgbGFzdCBzbGFzaAotICAgICAgICAgICAgICAg
IHdoaWxlIChiYXNlU3RyaW5nRW5kID4gYmFzZVN0cmluZ1N0YXJ0ICYmIGJhc2VTdHJpbmdFbmRb
LTFdICE9ICcvJykKLSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ0VuZC0tOwotCi0gICAg
ICAgICAgICAgICAgaWYgKGJhc2VTdHJpbmdFbmQgPT0gYmFzZVN0cmluZ1N0YXJ0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIG5vIHBhdGggaW4gYmFzZSwgYWRkIGEgcGF0aCBzZXBhcmF0b3Ig
aWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLm1fc2NoZW1lRW5kICsg
MSAhPSBiYXNlLm1fcGF0aEVuZCAmJiAqc3RyICYmICpzdHIgIT0gJz8nICYmICpzdHIgIT0gJyMn
KQotICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gJy8nOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBjb3B5UGF0
aFJlbW92aW5nRG90cyhidWZmZXJQb3MsIGJhc2VTdHJpbmdTdGFydCwgMCwgYmFzZVN0cmluZ0Vu
ZCAtIGJhc2VTdHJpbmdTdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgY29uc3QgY2hhciogcmVsU3RyaW5nU3RhcnQgPSBzdHI7Ci0gICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmVsU3RyaW5nUG9zID0gcmVsU3RyaW5nU3RhcnQ7Ci0KLSAgICAgICAgICAgICAg
ICB3aGlsZSAoKnJlbFN0cmluZ1BvcyAmJiAqcmVsU3RyaW5nUG9zICE9ICc/JyAmJiAqcmVsU3Ry
aW5nUG9zICE9ICcjJykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBd
ID09ICcuJyAmJiBidWZmZXJQb3NbLTFdID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1sxXSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4iIHNlZ21lbnQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbFN0cmluZ1Bv
c1sxXSA9PSAnLicgJiYgaXNQYXRoU2VnbWVudEVuZENoYXIocmVsU3RyaW5nUG9zWzJdKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4iIHNlZ21lbnQgYW5k
IHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIFJGQyBsZWF2ZXMgaXQgdXAgdG8gdGhlIGFwcCB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRo
IGV4Y2VzcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIuLiIgc2VnbWVudHMgLSB3
ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWxTdHJpbmdQb3MgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAocmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZl
clBvcyA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1ZmZlclBvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChidWZm
ZXJQb3MgPiBidWZmZXJQYXRoU3RhcnQgKyAxICAmJiBidWZmZXJQb3NbLTFdICE9ICcvJykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zLS07Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAqYnVmZmVyUG9zID0gKnJl
bFN0cmluZ1BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlclBvcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIC8vIGFsbCBkb25lIHdpdGggdGhlIHBhdGggd29yaywgbm93IGNvcHkgYW55IHJlbWFp
bmRlcgotICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZlcmVuY2U7IHRoaXMg
d2lsbCBhbHNvIGFkZCBhIG51bGwgdGVybWluYXRvcgotICAgICAgICAgICAgICAgIHN0cm5jcHko
YnVmZmVyUG9zLCByZWxTdHJpbmdQb3MsIGJ1ZmZlclNpemUgLSAoYnVmZmVyUG9zIC0gYnVmZmVy
U3RhcnQpKTsKLQotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJl
bGF0aXZlKTsKLQotICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4ocGFyc2VCdWZmZXIuZGF0
YSgpKSArIDEgPD0gcGFyc2VCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotS1VSTCBLVVJMOjpjb3B5KCkg
Y29uc3QKLXsKLSAgICBLVVJMIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5tX3N0cmluZyA9
IHJlc3VsdC5tX3N0cmluZy5pc29sYXRlZENvcHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1TdHJpbmcgS1VSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAotewotICAgIGlmICghaGFz
UGF0aCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBlbmQgPSBt
X3BhdGhFbmQgLSAxOwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKLSAgICAgICAgLS1l
bmQ7Ci0KLSAgICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7
Ci0gICAgaWYgKHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICArK3N0YXJ0OwotCi0gICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKLX0KLQotU3RyaW5nIEtVUkw6OnBy
b3RvY29sKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3NjaGVtZUVuZCk7
Ci19Ci0KLVN0cmluZyBLVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICBpbnQgc3RhcnQgPSBob3N0
U3RhcnQoKTsKLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1
YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpKTsKLX0KLQotdW5zaWduZWQgc2hvcnQg
S1VSTDo6cG9ydCgpIGNvbnN0Ci17Ci0gICAgLy8gV2UgcmV0dXJuIGEgcG9ydCBvZiAwIGlmIHRo
ZXJlIGlzIG5vIHBvcnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4gdHdvIHNpdHVhdGlv
bnM6Ci0gICAgLy8gMSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRlciB0aGUgaG9zdCBu
YW1lIGFuZCBiZWZvcmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwuCi0gICAgLy8gMikg
VGhlIFVSTCBjb250YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQgbnVtYmVyIGJlZm9y
ZSB0aGUgcGF0aCBjb21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCi0gICAgaWYgKG1faG9zdEVu
ZCA9PSBtX3BvcnRFbmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0cmluZy5jaGFyYWN0
ZXJzKCk7Ci0gICAgYm9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bWJlciA9IGNoYXJh
Y3RlcnNUb1VJbnRTdHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAt
IG1faG9zdEVuZCAtIDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBtYXhpbXVtVmFs
aWRQb3J0TnVtYmVyKQotICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1iZXI7Ci0gICAgcmV0
dXJuIG51bWJlcjsKLX0KLQotU3RyaW5nIEtVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmICht
X3Bhc3N3b3JkRW5kID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0g
ICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5zdWJzdHJpbmcobV91
c2VyRW5kICsgMSwgbV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsgCi19Ci0KLVN0cmlu
ZyBLVVJMOjp1c2VyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3Rh
cnQpKTsKLX0KLQotU3RyaW5nIEtVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1fZnJhZ21lbnRFbmQgPT0gbV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSwgbV9m
cmFnbWVudEVuZCAtIChtX3F1ZXJ5RW5kICsgMSkpOwotfQotCi1ib29sIEtVUkw6Omhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhZ21lbnRFbmQgIT0gbV9x
dWVyeUVuZDsKLX0KLQotU3RyaW5nIEtVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVBM
QVRGT1JNKFFUKSAmJiAhVVNFKENGKQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29u
c3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXRo
KCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBOREVCVUcKLQotc3RhdGljIGlubGluZSB2b2lkIGFz
c2VydFByb3RvY29sSXNHb29kKGNvbnN0IGNoYXIqKQotewotfQotCi0jZWxzZQotCi1zdGF0aWMg
dm9pZCBhc3NlcnRQcm90b2NvbElzR29vZChjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICBj
b25zdCBjaGFyKiBwID0gcHJvdG9jb2w7Ci0gICAgd2hpbGUgKCpwKSB7Ci0gICAgICAgIEFTU0VS
VCgqcCA+ICcgJyAmJiAqcCA8IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSk7Ci0g
ICAgICAgICsrcDsKLSAgICB9Ci19Ci0KLSNlbmRpZgotCi1ib29sIEtVUkw6OnByb3RvY29sSXMo
Y29uc3QgY2hhciogcHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2Qo
cHJvdG9jb2wpOwotCi0gICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBzaG91
bGQgYmUgZXhlY3V0ZWQgZXZlbiBpZiBLVVJMIGRlY2lkZXMgdGhleSBhcmUgaW52YWxpZC4KLSAg
ICAvLyBUaGUgZnJlZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1
c2VkIGluc3RlYWQuIAotICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsIFN0
cmluZygiamF2YXNjcmlwdCIpKSk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBu
ZXcgc3RyaW5nIG9iamVjdC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNTY2hlbWVDaGFyYWN0ZXJNYXRj
aElnbm9yaW5nQ2FzZShtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8g
V2Ugc2hvdWxkIGhhdmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50Lgot
fQotCi1TdHJpbmcgS1VSTDo6cXVlcnkoKSBjb25zdAotewotICAgIGlmIChtX3F1ZXJ5RW5kID09
IG1fcGF0aEVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3Ry
aW5nLnN1YnN0cmluZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEp
KTsgCi19Ci0KLVN0cmluZyBLVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJp
bmcuc3Vic3RyaW5nKG1fcG9ydEVuZCwgbV9wYXRoRW5kIC0gbV9wb3J0RW5kKTsKLX0KLQotYm9v
bCBLVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZveCBh
bmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qg
c2VwYXJhdG9yUG9zaXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wg
PSBzLnN1YnN0cmluZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0KLSAgICBpZiAoIWlzVmFsaWRQ
cm90b2NvbChuZXdQcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
bV9pc1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwYXJzZShuZXdQcm90b2NvbCAr
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIEtVUkw6OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3Rl
cnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRp
b25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgaG9z
dC4KLQotICAgIGJvb2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1l
RW5kICsgMTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNo
U2xhc2hOZWVkZWQgPyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RF
bmQpKTsKLX0KLQotdm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAgICBpZiAobV9ob3N0RW5k
ID09IG1fcG9ydEVuZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQo
bV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKLX0KLQotdm9pZCBL
VVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0gbV9o
b3N0RW5kOwotICAgIGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBt
X2hvc3RFbmQgKyAxKTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChj
b2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0
IFN0cmluZyYgaG9zdEFuZFBvcnQpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IGhvc3QgYW5kIHBvcnQuCi0KLSAgICBi
b29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7Ci0K
LSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVk
ID8gIi8vIiA6ICIiKSArIGhvc3RBbmRQb3J0ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVu
ZCkpOwotfQotCi12b2lkIEtVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAg
IGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNl
KCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4g
anVzdCB0aGUgdXNlciBsb2dpbi4KLQotICAgIGludCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYg
KCF1c2VyLmlzRW1wdHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHVzZXI7Ci0gICAgICAgIGlm
IChtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDEpCi0gICAgICAgICAgICB1ID0gIi8vIiAr
IHU7Ci0gICAgICAgIC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAg
ICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1f
c3RyaW5nW2VuZF0gIT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmlu
ZyhlbmQpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBo
YXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0g
bV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0An
KQotICAgICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFy
c2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRv
IG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpCi0gICAgICAg
ICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmlu
ZyhlbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBh
c3N3b3JkKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVk
IHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFu
Z2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBwYXNzd29yZC4KLQotICAgIGludCBlbmQgPSBt
X3Bhc3N3b3JkRW5kOwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0
cmluZyBwID0gIjoiICsgcGFzc3dvcmQgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0g
bV9zY2hlbWVFbmQgKyAxKQotICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwotICAgICAgICAvLyBF
YXQgdGhlIGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCi0g
ICAgICAgIGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAg
ICAgICAgICAgZW5kICs9IDE7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5k
KSArIHAgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgot
ICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdo
ZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNl
ckVuZCAhPSBlbmQpCi0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkg
KyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfQotfQotCi12b2lkIEtVUkw6OnNldEZy
YWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBt
dXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMu
Ci0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOwotfQotCi12
b2lkIEtVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCi0gICAgICAgIHJldHVybjsKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQp
KTsKLX0KLSAgICAKLXZvaWQgS1VSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKLXsK
LSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6ICcj
JyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkLgot
ICAgIC8vIFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29k
aW5nLCBub3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0gICAgLy8gYWNjZXNzIHRvIHRoZSBk
b2N1bWVudCBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1
ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKQotICAgICAgICBwYXJzZShtX3N0cmlu
Zy5sZWZ0KG1fcGF0aEVuZCkgKyAiPyIgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1
ZXJ5RW5kKSk7Ci0gICAgZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVu
ZCkgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0KLX0KLQotdm9p
ZCBLVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1
ZW5jZXMgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSAnIycgYW5kICc/Jywgc28gZnJhZ21lbnQg
YW5kIHF1ZXJ5IHBhcnRzCi0gICAgLy8gbWF5IGJlIGluYWR2ZXJ0ZW50bHkgYWZmZWN0ZWQuCi0g
ICAgU3RyaW5nIHBhdGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9
ICcvJykKLSAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBwYXJzZShtX3N0cmluZy5s
ZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHBhdGgpICsgbV9z
dHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOwotfQotCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgVVRGOEVuY29kaW5nKCkpOwot
fQotCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIHJldHVybiBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2RpbmcpOwotfQotCi0v
LyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJvdW5kcyBjaGVjay4KLXN0YXRpYyB2
b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZmZXIsIHVuc2lnbmVkIGNoYXIgYykKLXsK
LSAgICAqYnVmZmVyKysgPSAnJSc7Ci0gICAgcGxhY2VCeXRlQXNIZXgoYywgYnVmZmVyKTsKLX0K
LQotc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhjaGFyKiYgYnVmZmVyLCBjb25z
dCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFyKiBwID0gYnVmZmVy
OwotCi0gICAgY29uc3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29uc3QgY2hhciogc3Ry
RW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVuZCkgewotICAg
ICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChpc0JhZENoYXIoYykp
IHsKLSAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBjID09ICc/JykKLSAgICAgICAgICAgICAg
ICAqcCsrID0gYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgIT0gMHgwOSAmJiBjICE9IDB4MGEg
JiYgYyAhPSAweDBkKQotICAgICAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRDaGFyKHAsIGMpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIGJ1ZmZl
ciA9IHA7Ci19Ci0KLXN0YXRpYyB2b2lkIGVzY2FwZUFuZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBh
cnQoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQsIHNpemVfdCBsZW5ndGgpCi17
Ci0gICAgY2hhciogcCA9IGJ1ZmZlcjsKLQotICAgIGNvbnN0IGNoYXIqIHN0ciA9IHN0clN0YXJ0
OwotICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0YXJ0ICsgbGVuZ3RoOwotICAgIHdoaWxl
IChzdHIgPCBzdHJFbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwotICAg
ICAgICAvLyBTdHJpcCBDUiwgTEYgYW5kIFRhYiBmcm9tIGZyYWdtZW50cywgcGVyOgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc3MAotICAgICAg
ICBpZiAoYyA9PSAweDA5IHx8IGMgPT0gMHgwYSB8fCBjID09IDB4MGQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAvLyBDaHJvbWUgYW5kIElFIGFsbG93IG5vbi1hc2NpaSBjaGFy
YWN0ZXJzIGluIGZyYWdtZW50cywgaG93ZXZlciBkb2luZwotICAgICAgICAvLyBzbyB3b3VsZCBo
aXQgYW4gQVNTRVJUIGluIGNoZWNrRW5jb2RlZFN0cmluZywgc28gZm9yIG5vdyB3ZSBkb24ndC4K
LSAgICAgICAgaWYgKGMgPCAweDIwIHx8IGMgPj0gMTI3KSB7Ci0gICAgICAgICAgICBhcHBlbmRF
c2NhcGVkQ2hhcihwLCBjKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAg
ICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0KLS8vIGNvcHkgYSBw
YXRoLCBhY2NvdW50aW5nIGZvciAiLiIgYW5kICIuLiIgc2VnbWVudHMKLXN0YXRpYyBpbnQgY29w
eVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBzcmNTdGFy
dCwgaW50IHNyY0VuZCkKLXsKLSAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQgPSBkc3Q7Ci0KLSAg
ICAvLyBlbXB0eSBwYXRoIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbmVlZCBub3QgaGF2ZSBhIGxl
YWRpbmcgc2xhc2gKLSAgICBpZiAoc3JjU3RhcnQgIT0gc3JjRW5kKSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IHNyYyArIHNyY1N0YXJ0OwotICAgICAgICBjb25zdCBj
aGFyKiBiYXNlU3RyaW5nRW5kID0gc3JjICsgc3JjRW5kOwotICAgICAgICBjb25zdCBjaGFyKiBi
YXNlU3RyaW5nUG9zID0gYmFzZVN0cmluZ1N0YXJ0OwotCi0gICAgICAgIC8vIHRoaXMgY29kZSBp
cyB1bnByZXBhcmVkIGZvciBwYXRocyB0aGF0IGRvIG5vdCBiZWdpbiB3aXRoIGEKLSAgICAgICAg
Ly8gc2xhc2ggYW5kIHdlIHNob3VsZCBhbHdheXMgaGF2ZSBvbmUgaW4gdGhlIHNvdXJjZSBzdHJp
bmcKLSAgICAgICAgQVNTRVJUKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy8nKTsKLQotICAgICAgICAv
LyBjb3B5IHRoZSBsZWFkaW5nIHNsYXNoIGludG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgICpk
c3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgYmFzZVN0cmluZ1BvcysrOwotICAgICAgICBk
c3QrKzsKLQotICAgICAgICB3aGlsZSAoYmFzZVN0cmluZ1BvcyA8IGJhc2VTdHJpbmdFbmQpIHsK
LSAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzBdID09ICcuJyAmJiBkc3RbLTFdID09ICcv
JykgewotICAgICAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzFdID09ICcvJyB8fCBiYXNl
U3RyaW5nUG9zICsgMSA9PSBiYXNlU3RyaW5nRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IHNraXAgb3ZlciAiLiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9z
ICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoYmFzZVN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgKGJhc2VTdHJpbmdQb3NbMl0gPT0g
Jy8nIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5n
UG9zICsgMiA9PSBiYXNlU3RyaW5nRW5kKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBza2lw
IG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhlIGxhc3Qgc2VnbWVudAotICAgICAgICAg
ICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZlcyBpdCB1cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3
aGF0IHRvIGRvIHdpdGggZXhjZXNzCi0gICAgICAgICAgICAgICAgICAgIC8vICIuLiIgc2VnbWVu
dHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQKLSAgICAg
ICAgICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgIGJh
c2VTdHJpbmdQb3MgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRzdCA+IGJ1ZmZlclBh
dGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICBkc3QtLTsKLSAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCAmJiBkc3RbLTFdICE9ICcvJykK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICpk
c3QgPSAqYmFzZVN0cmluZ1BvczsKLSAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MrKzsKLSAgICAg
ICAgICAgIGRzdCsrOwotICAgICAgICB9Ci0gICAgfQotICAgICpkc3QgPSAnXDAnOwotICAgIHJl
dHVybiBkc3QgLSBidWZmZXJQYXRoU3RhcnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNT
bGFzaERvdE9yRG90RG90KGNvbnN0IGNoYXIqIHN0cikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3RyKTsKLSAg
ICBpZiAoISpwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgY2hhciBwYyA9
ICpwOwotICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMgPSAqKytwKSB7Ci0gICAgICAgIGlmIChj
ID09ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcuJykpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgcGMgPSBjOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgS1VSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgY2hlY2tFbmNvZGVk
U3RyaW5nKHN0cmluZyk7Ci0KLSAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkg
KyAxKTsKLSAgICBjb3B5QVNDSUkoc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJb
c3RyaW5nLmxlbmd0aCgpXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgJnN0cmlu
Zyk7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBsZW5ndGg+Ci1zdGF0aWMgaW5saW5lIGJvb2wgZXF1
YWwoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciAoJmIpW2xlbmd0aF0pCi17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYVtpXSAhPSBiW2ld
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotdGVtcGxhdGU8c2l6ZV90IGxlbmd0aEI+Ci1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29u
c3QgY2hhciogc3RyaW5nQSwgc2l6ZV90IGxlbmd0aEEsIGNvbnN0IGNoYXIgKCZzdHJpbmdCKVts
ZW5ndGhCXSkKLXsKLSAgICByZXR1cm4gbGVuZ3RoQSA9PSBsZW5ndGhCICYmIGVxdWFsKHN0cmlu
Z0EsIHN0cmluZ0IpOwotfQotCi0vLyBMaXN0IG9mIGRlZmF1bHQgc2NoZW1lcyBpcyB0YWtlbiBm
cm9tIGdvb2dsZS11cmw6Ci0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXVybC9z
b3VyY2UvYnJvd3NlL3RydW5rL3NyYy91cmxfY2Fub25fc3RkdXJsLmNjIzEyMAotc3RhdGljIGlu
bGluZSBib29sIGlzRGVmYXVsdFBvcnRGb3JTY2hlbWUoY29uc3QgY2hhciogcG9ydCwgc2l6ZV90
IHBvcnRMZW5ndGgsIGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0aCkKLXsK
LSAgICAvLyBUaGlzIHN3aXRjaCBpcyB0aGVvcmV0aWNhbGx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1p
emF0aW9uLiAgSXQgY2FtZSBvdmVyIHdoZW4KLSAgICAvLyB0aGUgY29kZSB3YXMgbW92ZWQgZnJv
bSBnb29nbGUtdXJsLCBidXQgbWF5IGJlIHJlbW92ZWQgbGF0ZXIuCi0gICAgc3dpdGNoIChzY2hl
bWVMZW5ndGgpIHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdz
U2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7Ci0gICAgY2FzZSAz
OgotICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGZ0cFBvcnQpOwotICAgICAgICBpZiAoZXF1YWwo
c2NoZW1lLCB3c3NTY2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRM
ZW5ndGgsIGh0dHBzUG9ydCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAg
cmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0
aCwgaHR0cFBvcnQpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwg
aHR0cHNTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBzUG9ydCk7Ci0gICAg
Y2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVx
dWFsKHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBvcnQpOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBob3N0UG9ydElzRW1wdHlCdXRDcmVkZW50aWFs
c0FyZVByZXNlbnQoaW50IGhvc3RTdGFydCwgaW50IHBvcnRFbmQsIGNoYXIgdXNlcmluZm9FbmRD
aGFyKQotewotICAgIHJldHVybiB1c2VyaW5mb0VuZENoYXIgPT0gJ0AnICYmIGhvc3RTdGFydCA9
PSBwb3J0RW5kOwotfQotCi1zdGF0aWMgYm9vbCBpc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUo
Y29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIHN3aXRjaCAo
c2NoZW1lTGVuZ3RoKSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1l
LCB3c1NjaGVtZSk7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBm
dHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBjYXNlIDQ6Ci0gICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpOwotICAgIGNhc2UgNToKLSAgICAg
ICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNhc2UgNjoKLSAgICAg
ICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBpc0Nhbm9uaWNhbEhvc3RuYW1lTG93ZXJjYXNlRm9y
U2NoZW1lKGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0aCkKLXsKLSAgICBz
d2l0Y2ggKHNjaGVtZUxlbmd0aCkgewotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVxdWFs
KHNjaGVtZSwgd3NTY2hlbWUpOwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNj
aGVtZSwgZnRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSk7Ci0gICAgY2FzZSA0
OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8fCBlcXVhbChzY2hl
bWUsIGZpbGVTY2hlbWUpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVt
ZSwgaHR0cHNTY2hlbWUpOwotICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVt
ZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEtV
Ukw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykK
LXsKLSAgICBpZiAoIXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewotICAgICAgICAvLyB2YWxpZCBV
UkwgbXVzdCBiZSBub24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/
ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcih1cmxbMF0pKSB7Ci0g
ICAgICAgIC8vIHNjaGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIK
LSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVy
bDsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aW50IHNjaGVtZUVuZCA9IDA7Ci0gICAgd2hpbGUgKGlzU2NoZW1lQ2hhcih1cmxbc2NoZW1lRW5k
XSkpCi0gICAgICAgIHNjaGVtZUVuZCsrOwotCi0gICAgaWYgKHVybFtzY2hlbWVFbmRdICE9ICc6
JykgewotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5n
IDogdXJsOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpbnQgdXNlclN0YXJ0ID0gc2NoZW1lRW5kICsgMTsKLSAgICBpbnQgdXNlckVuZDsKLSAg
ICBpbnQgcGFzc3dvcmRTdGFydDsKLSAgICBpbnQgcGFzc3dvcmRFbmQ7Ci0gICAgaW50IGhvc3RT
dGFydDsKLSAgICBpbnQgaG9zdEVuZDsKLSAgICBpbnQgcG9ydFN0YXJ0OwotICAgIGludCBwb3J0
RW5kOwotCi0gICAgYm9vbCBoaWVyYXJjaGljYWwgPSB1cmxbc2NoZW1lRW5kICsgMV0gPT0gJy8n
OwotICAgIGJvb2wgaGFzU2Vjb25kU2xhc2ggPSBoaWVyYXJjaGljYWwgJiYgdXJsW3NjaGVtZUVu
ZCArIDJdID09ICcvJzsKLQotICAgIGJvb2wgaXNGaWxlID0gc2NoZW1lRW5kID09IDQKLSAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdmJykKLSAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdpJykKLSAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICdsJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRj
aElnbm9yaW5nQ2FzZSh1cmxbM10sICdlJyk7Ci0KLSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQot
ICAgIC8vIFBhcnNlIGxvY2FsOiB1cmxzIHRoZSBzYW1lIGFzIGZpbGU6IHVybHMuCi0gICAgaWYg
KCFpc0ZpbGUpCi0gICAgICAgIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA1Ci0gICAgICAgICAgICAm
JiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2wnKQotICAgICAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICdvJykKLSAgICAgICAgICAgICYmIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnYycpCi0gICAgICAgICAgICAmJiBpc0xl
dHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwgJ2EnKQotICAgICAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbNF0sICdsJyk7Ci0jZW5kaWYKLQotICAgIG1fcHJvdG9j
b2xJc0luSFRUUEZhbWlseSA9IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzBdLCAnaCcp
Ci0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAndCcpCi0gICAg
ICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAndCcpCi0gICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxb
NF0gPT0gJzonIHx8IChpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFs0XSwgJ3MnKSAmJiB1
cmxbNV0gPT0gJzonKSk7Ci0KLSAgICBpZiAoKGhpZXJhcmNoaWNhbCAmJiBoYXNTZWNvbmRTbGFz
aCkgfHwgaXNOb25GaWxlSGllcmFyY2hpY2FsU2NoZW1lKHVybCwgc2NoZW1lRW5kKSkgewotICAg
ICAgICAvLyBUaGUgcGFydCBhZnRlciB0aGUgc2NoZW1lIGlzIGVpdGhlciBhIG5ldF9wYXRoIG9y
IGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHBhdGggc2VnbWVudCBpcyBlbXB0eS4KLSAgICAgICAg
Ly8gQXR0ZW1wdCB0byBmaW5kIGFuIGF1dGhvcml0eS4KLSAgICAgICAgLy8gRklYTUU6IEF1dGhv
cml0eSBjaGFyYWN0ZXJzIG1heSBiZSBzY2FubmVkIHR3aWNlLCBhbmQgaXQgd291bGQgYmUgbmlj
ZSB0byBiZSBmYXN0ZXIuCi0KLSAgICAgICAgaWYgKGhpZXJhcmNoaWNhbCkKLSAgICAgICAgICAg
IHVzZXJTdGFydCsrOwotICAgICAgICBpZiAoaGFzU2Vjb25kU2xhc2gpCi0gICAgICAgICAgICB1
c2VyU3RhcnQrKzsKLSAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLQotICAgICAgICBpbnQg
Y29sb25Qb3MgPSAwOwotICAgICAgICB3aGlsZSAoaXNVc2VySW5mb0NoYXIodXJsW3VzZXJFbmRd
KSkgewotICAgICAgICAgICAgaWYgKHVybFt1c2VyRW5kXSA9PSAnOicgJiYgY29sb25Qb3MgPT0g
MCkKLSAgICAgICAgICAgICAgICBjb2xvblBvcyA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICB1c2Vy
RW5kKys7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXJsW3VzZXJFbmRdID09ICdAJykgewot
ICAgICAgICAgICAgLy8gYWN0dWFsIGVuZCBvZiB0aGUgdXNlcmluZm8sIHN0YXJ0IG9uIHRoZSBo
b3N0Ci0gICAgICAgICAgICBpZiAoY29sb25Qb3MgIT0gMCkgewotICAgICAgICAgICAgICAgIHBh
c3N3b3JkRW5kID0gdXNlckVuZDsKLSAgICAgICAgICAgICAgICB1c2VyRW5kID0gY29sb25Qb3M7
Ci0gICAgICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IGNvbG9uUG9zICsgMTsKLSAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9
IHVzZXJFbmQ7Ci0KLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3JkRW5kICsgMTsKLSAg
ICAgICAgfSBlbHNlIGlmICh1cmxbdXNlckVuZF0gPT0gJ1snIHx8IGlzUGF0aFNlZ21lbnRFbmRD
aGFyKHVybFt1c2VyRW5kXSkpIHsKLSAgICAgICAgICAgIC8vIGhpdCB0aGUgZW5kIG9mIHRoZSBh
dXRob3JpdHksIG11c3QgaGF2ZSBiZWVuIG5vIHVzZXIKLSAgICAgICAgICAgIC8vIG9yIGxvb2tz
IGxpa2UgYW4gSVB2NiBob3N0bmFtZQotICAgICAgICAgICAgLy8gZWl0aGVyIHdheSwgdHJ5IHRv
IHBhcnNlIGl0IGFzIGEgaG9zdG5hbWUKLSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7
Ci0gICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwotICAg
ICAgICAgICAgaG9zdFN0YXJ0ID0gdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2lu
YWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRl
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBob3N0RW5kID0g
aG9zdFN0YXJ0OwotCi0gICAgICAgIC8vIElQVjYgSVAgYWRkcmVzcwotICAgICAgICBpZiAodXJs
W2hvc3RFbmRdID09ICdbJykgewotICAgICAgICAgICAgaG9zdEVuZCsrOwotICAgICAgICAgICAg
d2hpbGUgKGlzSVB2NkNoYXIodXJsW2hvc3RFbmRdKSkKLSAgICAgICAgICAgICAgICBob3N0RW5k
Kys7Ci0gICAgICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09ICddJykKLSAgICAgICAgICAgICAg
ICBob3N0RW5kKys7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBpbnZh
bGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHdoaWxlIChpc0hvc3RuYW1lQ2hhcih1cmxbaG9zdEVuZF0pKQotICAgICAg
ICAgICAgICAgIGhvc3RFbmQrKzsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHVy
bFtob3N0RW5kXSA9PSAnOicpIHsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBo
b3N0RW5kICsgMTsKLSAKLSAgICAgICAgICAgIC8vIHBvc3NpYmxlIHN0YXJ0IG9mIHBvcnQKLSAg
ICAgICAgICAgIHBvcnRFbmQgPSBwb3J0U3RhcnQ7Ci0gICAgICAgICAgICB3aGlsZSAoaXNBU0NJ
SURpZ2l0KHVybFtwb3J0RW5kXSkpCi0gICAgICAgICAgICAgICAgcG9ydEVuZCsrOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBob3N0RW5kOwotCi0g
ICAgICAgIGlmICghaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewotICAgICAg
ICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2lu
YWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRl
KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaG9zdFBv
cnRJc0VtcHR5QnV0Q3JlZGVudGlhbHNBcmVQcmVzZW50KGhvc3RTdGFydCwgcG9ydEVuZCwgdXJs
W3Bhc3N3b3JkRW5kXSkpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNlclN0YXJ0ID09IHBv
cnRFbmQgJiYgIW1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiAhaXNGaWxlKSB7Ci0gICAgICAg
ICAgICAvLyBObyBhdXRob3JpdHkgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcyBpcyBub3Qg
YSBuZXRfcGF0aCwgYnV0IHJhdGhlciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCB0d28KLSAgICAg
ICAgICAgIC8vIHBhdGggc2VnbWVudHMgYXJlIGVtcHR5LiBGb3IgZmlsZSwgaHR0cCBhbmQgaHR0
cHMgb25seSwgYW4gZW1wdHkgYXV0aG9yaXR5IGlzIGFsbG93ZWQuCi0gICAgICAgICAgICB1c2Vy
U3RhcnQgLT0gMjsKLSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICBwYXNzd29yZFN0YXJ0ID0gdXNlckVuZDsKLSAgICAgICAgICAgIHBhc3N3b3JkRW5kID0gcGFz
c3dvcmRTdGFydDsKLSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3JkRW5kOwotICAgICAg
ICAgICAgaG9zdEVuZCA9IGhvc3RTdGFydDsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IGhvc3RF
bmQ7Ci0gICAgICAgICAgICBwb3J0RW5kID0gaG9zdEVuZDsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIHRoZSBwYXJ0IGFmdGVyIHRoZSBzY2hlbWUgbXVzdCBiZSBhbiBvcGFx
dWVfcGFydCBvciBhbiBhYnNfcGF0aAotICAgICAgICB1c2VyRW5kID0gdXNlclN0YXJ0OwotICAg
ICAgICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwotICAgICAgICBob3N0
U3RhcnQgPSBob3N0RW5kID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgIHBvcnRTdGFydCA9IHBvcnRF
bmQgPSBob3N0RW5kOwotICAgIH0KLQotICAgIGludCBwYXRoU3RhcnQgPSBwb3J0RW5kOwotICAg
IGludCBwYXRoRW5kID0gcGF0aFN0YXJ0OwotICAgIHdoaWxlICh1cmxbcGF0aEVuZF0gJiYgdXJs
W3BhdGhFbmRdICE9ICc/JyAmJiB1cmxbcGF0aEVuZF0gIT0gJyMnKQotICAgICAgICBwYXRoRW5k
Kys7Ci0KLSAgICBpbnQgcXVlcnlTdGFydCA9IHBhdGhFbmQ7Ci0gICAgaW50IHF1ZXJ5RW5kID0g
cXVlcnlTdGFydDsKLSAgICBpZiAodXJsW3F1ZXJ5U3RhcnRdID09ICc/JykgewotICAgICAgICB3
aGlsZSAodXJsW3F1ZXJ5RW5kXSAmJiB1cmxbcXVlcnlFbmRdICE9ICcjJykKLSAgICAgICAgICAg
IHF1ZXJ5RW5kKys7Ci0gICAgfQotCi0gICAgaW50IGZyYWdtZW50U3RhcnQgPSBxdWVyeUVuZDsK
LSAgICBpbnQgZnJhZ21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgIGlmICh1cmxbZnJhZ21l
bnRTdGFydF0gPT0gJyMnKSB7Ci0gICAgICAgIGZyYWdtZW50U3RhcnQrKzsKLSAgICAgICAgZnJh
Z21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgICAgICB3aGlsZSAodXJsW2ZyYWdtZW50RW5k
XSkKLSAgICAgICAgICAgIGZyYWdtZW50RW5kKys7Ci0gICAgfQotCi0gICAgLy8gYXNzZW1ibGUg
aXQgYWxsLCByZW1lbWJlcmluZyB0aGUgcmVhbCByYW5nZXMKLQotICAgIFZlY3RvcjxjaGFyLCA0
MDk2PiBidWZmZXIoZnJhZ21lbnRFbmQgKiAzICsgMSk7Ci0KLSAgICBjaGFyICpwID0gYnVmZmVy
LmRhdGEoKTsKLSAgICBjb25zdCBjaGFyICpzdHJQdHIgPSB1cmw7Ci0KLSAgICAvLyBjb3B5IGlu
IHRoZSBzY2hlbWUKLSAgICBjb25zdCBjaGFyICpzY2hlbWVFbmRQdHIgPSB1cmwgKyBzY2hlbWVF
bmQ7Ci0gICAgd2hpbGUgKHN0clB0ciA8IHNjaGVtZUVuZFB0cikKLSAgICAgICAgKnArKyA9IHRv
QVNDSUlMb3dlcigqc3RyUHRyKyspOwotICAgIG1fc2NoZW1lRW5kID0gcCAtIGJ1ZmZlci5kYXRh
KCk7Ci0KLSAgICBib29sIGhvc3RJc0xvY2FsSG9zdCA9IHBvcnRFbmQgLSB1c2VyU3RhcnQgPT0g
OQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnRdLCAn
bCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCsx
XSwgJ28nKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3Rh
cnQrMl0sICdjJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNl
clN0YXJ0KzNdLCAnYScpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
W3VzZXJTdGFydCs0XSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFt1c2VyU3RhcnQrNV0sICdoJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbdXNlclN0YXJ0KzZdLCAnbycpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UodXJsW3VzZXJTdGFydCs3XSwgJ3MnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrOF0sICd0Jyk7Ci0KLSAgICAvLyBGaWxlIFVSTHMg
bmVlZCBhIGhvc3QgcGFydCB1bmxlc3MgaXQgaXMganVzdCBmaWxlOi8vIG9yIGZpbGU6Ly9sb2Nh
bGhvc3QKLSAgICBib29sIGRlZ2VuZXJhdGVGaWxlUGF0aCA9IHBhdGhTdGFydCA9PSBwYXRoRW5k
ICYmIChob3N0U3RhcnQgPT0gaG9zdEVuZCB8fCBob3N0SXNMb2NhbEhvc3QpOwotCi0gICAgLy8g
V2UgZHJvcCBlbXB0eSBjcmVkZW50aWFscywgYnV0IGtlZXAgYSBjb2xvbiBpbiBhbiBlbXB0eSBo
b3N0L3BvcnQgcGFpci4KLSAgICAvLyBSZW1vdmluZyBob3N0bmFtZSBjb21wbGV0ZWx5IHdvdWxk
IGNoYW5nZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBVUkwgb24gcmUtcGFyc2luZy4KLSAgICBib29s
IGhhdmVOb25Ib3N0QXV0aG9yaXR5UGFydCA9IHVzZXJTdGFydCAhPSB1c2VyRW5kIHx8IHBhc3N3
b3JkU3RhcnQgIT0gcGFzc3dvcmRFbmQgfHwgaG9zdEVuZCAhPSBwb3J0RW5kOwotCi0gICAgLy8g
YWRkICI6IiBhZnRlciBzY2hlbWUKLSAgICAqcCsrID0gJzonOwotCi0gICAgLy8gaWYgd2UgaGF2
ZSBhdCBsZWFzdCBvbmUgYXV0aG9yaXR5IHBhcnQgb3IgYSBmaWxlIFVSTCAtIGFkZCAiLy8iIGFu
ZCBhdXRob3JpdHkKLSAgICBpZiAoaXNGaWxlID8gIWRlZ2VuZXJhdGVGaWxlUGF0aCA6IChoYXZl
Tm9uSG9zdEF1dGhvcml0eVBhcnQgfHwgaG9zdFN0YXJ0ICE9IGhvc3RFbmQpKSB7Ci0gICAgICAg
ICpwKysgPSAnLyc7Ci0gICAgICAgICpwKysgPSAnLyc7Ci0KLSAgICAgICAgbV91c2VyU3RhcnQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRoZSB1c2VyCi0gICAg
ICAgIHN0clB0ciA9IHVybCArIHVzZXJTdGFydDsKLSAgICAgICAgY29uc3QgY2hhciogdXNlckVu
ZFB0ciA9IHVybCArIHVzZXJFbmQ7Ci0gICAgICAgIHdoaWxlIChzdHJQdHIgPCB1c2VyRW5kUHRy
KSB7Ci0gICAgICAgICAgICBjaGFyIGMgPSAqc3RyUHRyKys7Ci0gICAgICAgICAgICBBU1NFUlQo
aXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV91c2VyRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAgICAgLy8gY29weSBp
biB0aGUgcGFzc3dvcmQKLSAgICAgICAgaWYgKHBhc3N3b3JkRW5kICE9IHBhc3N3b3JkU3RhcnQp
IHsKLSAgICAgICAgICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICBzdHJQdHIgPSB1cmwgKyBw
YXNzd29yZFN0YXJ0OwotICAgICAgICAgICAgY29uc3QgY2hhciogcGFzc3dvcmRFbmRQdHIgPSB1
cmwgKyBwYXNzd29yZEVuZDsKLSAgICAgICAgICAgIHdoaWxlIChzdHJQdHIgPCBwYXNzd29yZEVu
ZFB0cikgewotICAgICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoaXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAgICAgICpwKysgPSBj
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fcGFzc3dvcmRFbmQgPSBwIC0g
YnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBJZiB3ZSBoYWQgYW55IHVzZXIgaW5mbywgYWRk
ICJAIgotICAgICAgICBpZiAocCAtIGJ1ZmZlci5kYXRhKCkgIT0gbV91c2VyU3RhcnQpCi0gICAg
ICAgICAgICAqcCsrID0gJ0AnOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhlIGhvc3QsIGV4Y2Vw
dCBpbiB0aGUgY2FzZSBvZiBhIGZpbGUgVVJMIHdpdGggYXV0aG9yaXR5PSJsb2NhbGhvc3QiCi0g
ICAgICAgIGlmICghKGlzRmlsZSAmJiBob3N0SXNMb2NhbEhvc3QgJiYgIWhhdmVOb25Ib3N0QXV0
aG9yaXR5UGFydCkpIHsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIGhvc3RTdGFydDsKLSAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGhvc3RFbmRQdHIgPSB1cmwgKyBob3N0RW5kOwotICAgICAg
ICAgICAgaWYgKGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoYnVmZmVyLmRh
dGEoKSwgbV9zY2hlbWVFbmQpKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IGhv
c3RFbmRQdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdG9BU0NJSUxvd2VyKCpz
dHJQdHIrKyk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3RuYW1lQ2hhcihjKSB8
fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAgICAgICAgICAgICAg
ICpwKysgPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhciBjID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNI
b3N0bmFtZUNoYXIoYykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnOicpOwotICAg
ICAgICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9ob3N0RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0K
LSAgICAgICAgLy8gQ29weSBpbiB0aGUgcG9ydCBpZiB0aGUgVVJMIGhhcyBvbmUgKGFuZCBpdCdz
IG5vdCBkZWZhdWx0KS4gQWxzbywgY29weSBpdCBpZiB0aGVyZSB3YXMgbm8gaG9zdG5hbWUsIHNv
IHRoYXQgdGhlcmUgaXMgc3RpbGwgc29tZXRoaW5nIGluIGF1dGhvcml0eSBjb21wb25lbnQuCi0g
ICAgICAgIGlmIChob3N0RW5kICE9IHBvcnRTdGFydCkgewotICAgICAgICAgICAgY29uc3QgY2hh
ciogcG9ydFN0ciA9IHVybCArIHBvcnRTdGFydDsKLSAgICAgICAgICAgIHNpemVfdCBwb3J0TGVu
Z3RoID0gcG9ydEVuZCAtIHBvcnRTdGFydDsKLSAgICAgICAgICAgIGlmICgocG9ydExlbmd0aCAm
JiAhaXNEZWZhdWx0UG9ydEZvclNjaGVtZShwb3J0U3RyLCBwb3J0TGVuZ3RoLCBidWZmZXIuZGF0
YSgpLCBtX3NjaGVtZUVuZCkpCi0gICAgICAgICAgICAgICAgfHwgKGhvc3RTdGFydCA9PSBob3N0
RW5kICYmIGhvc3RFbmQgIT0gcG9ydFN0YXJ0KSkgewotICAgICAgICAgICAgICAgICpwKysgPSAn
Oic7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydEVuZFB0ciA9IHVybCArIHBvcnRF
bmQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHBvcnRTdHIgPCBwb3J0RW5kUHRyKQotICAgICAg
ICAgICAgICAgICAgICAqcCsrID0gKnBvcnRTdHIrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBtX3BvcnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAoaXNGaWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVnZW5lcmF0ZUZpbGVQ
YXRoKTsKLSAgICAgICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICAgICAqcCsrID0gJy8nOwot
ICAgICAgICB9Ci0gICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0gbV9wYXNzd29yZEVu
ZCA9IG1faG9zdEVuZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwotICAgIH0KLQot
ICAgIC8vIEZvciBjYW5vbmljYWxpemF0aW9uLCBlbnN1cmUgd2UgaGF2ZSBhICcvJyBmb3Igbm8g
cGF0aC4KLSAgICAvLyBEbyB0aGlzIG9ubHkgZm9yIFVSTCB3aXRoIHByb3RvY29sIGZpbGUsIGh0
dHAgb3IgaHR0cHMuCi0gICAgaWYgKChtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgfHwgaXNGaWxl
KSAmJiBwYXRoRW5kID09IHBhdGhTdGFydCkKLSAgICAgICAgKnArKyA9ICcvJzsKLQotICAgIC8v
IGFkZCBwYXRoLCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmICghaGllcmFyY2hpY2Fs
KQotICAgICAgICBlc2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIHBh
dGhTdGFydCwgcGF0aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSBpZiAoIWhhc1NsYXNoRG90
T3JEb3REb3QodXJsKSkKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCB1cmwgKyBw
YXRoU3RhcnQsIHBhdGhFbmQgLSBwYXRoU3RhcnQpOwotICAgIGVsc2UgewotICAgICAgICBDaGFy
QnVmZmVyIHBhdGhCdWZmZXIocGF0aEVuZCAtIHBhdGhTdGFydCArIDEpOwotICAgICAgICBzaXpl
X3QgbGVuZ3RoID0gY29weVBhdGhSZW1vdmluZ0RvdHMocGF0aEJ1ZmZlci5kYXRhKCksIHVybCwg
cGF0aFN0YXJ0LCBwYXRoRW5kKTsKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCBw
YXRoQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBtX3BhdGhFbmQgPSBwIC0g
YnVmZmVyLmRhdGEoKTsKLQotICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBsYXN0
IHNsYXNoIGluIHRoZSBwYXRoLCBvcgotICAgIC8vIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIHBh
dGggaWYgdGhlcmUgYXJlIG5vIHNsYXNoZXMgaW4gaXQuCi0gICAgaW50IGk7Ci0gICAgZm9yIChp
ID0gbV9wYXRoRW5kOyBpID4gbV9wb3J0RW5kOyAtLWkpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcltp
IC0gMV0gPT0gJy8nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG1fcGF0aEFmdGVy
TGFzdFNsYXNoID0gaTsKLQotICAgIC8vIGFkZCBxdWVyeSwgZXNjYXBpbmcgYmFkIGNoYXJhY3Rl
cnMKLSAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHF1ZXJ5U3RhcnQsIHF1ZXJ5
RW5kIC0gcXVlcnlTdGFydCk7Ci0gICAgbV9xdWVyeUVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwot
Ci0gICAgLy8gYWRkIGZyYWdtZW50LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmIChm
cmFnbWVudEVuZCAhPSBxdWVyeUVuZCkgewotICAgICAgICAqcCsrID0gJyMnOwotICAgICAgICBl
c2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIGZyYWdtZW50U3RhcnQs
IGZyYWdtZW50RW5kIC0gZnJhZ21lbnRTdGFydCk7Ci0gICAgfQotICAgIG1fZnJhZ21lbnRFbmQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIEFTU0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBz
dGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLSAgICBBU1NFUlQoYnVmZmVyLnNpemUo
KSA+IDApOwotCi0gICAgLy8gSWYgd2UgZGlkbid0IGVuZCB1cCBhY3R1YWxseSBjaGFuZ2luZyB0
aGUgb3JpZ2luYWwgc3RyaW5nIGFuZAotICAgIC8vIGl0IHdhcyBhbHJlYWR5IGluIGEgU3RyaW5n
LCByZXVzZSBpdCB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLgotICAgIGlmIChvcmlnaW5hbFN0
cmluZyAmJiBlcXVhbChvcmlnaW5hbFN0cmluZy0+aW1wbCgpLCBidWZmZXIuZGF0YSgpLCBtX2Zy
YWdtZW50RW5kKSkKLSAgICAgICAgbV9zdHJpbmcgPSAqb3JpZ2luYWxTdHJpbmc7Ci0gICAgZWxz
ZQotICAgICAgICBtX3N0cmluZyA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBtX2ZyYWdtZW50RW5k
KTsKLQotICAgIG1faXNWYWxpZCA9IHRydWU7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQotewotICAgIGlmIChh
Lm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9
IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwmIGEs
IGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgaWYgKGEubV9zY2hlbWVFbmQgIT0gYi5tX3NjaGVtZUVu
ZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGhvc3RTdGFydEEgPSBhLmhvc3RT
dGFydCgpOwotICAgIGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVuZCgpIC0gaG9zdFN0YXJ0QTsK
LSAgICBpbnQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgaW50IGhvc3RMZW5ndGhC
ID0gYi5ob3N0RW5kKCkgLSBiLmhvc3RTdGFydCgpOwotICAgIGlmIChob3N0TGVuZ3RoQSAhPSBo
b3N0TGVuZ3RoQikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhlIHNj
aGVtZQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKQotICAgICAg
ICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBo
b3N0TGVuZ3RoQTsgKytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0g
IT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCi17Ci0gICAgQ1N0cmluZyBhc1VU
RjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKLQotICAgIENoYXJCdWZmZXIgYnVmZmVyKGFz
VVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKLSAgICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKLQot
ICAgIGNvbnN0IGNoYXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Ci0gICAgY29uc3QgY2hhciogc3Ry
RW5kID0gc3RyICsgYXNVVEY4Lmxlbmd0aCgpOwotICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsK
LSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwotICAgICAgICBpZiAoaXNCYWRDaGFy
KGMpKQotICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIEFTU0VSVChwIC0gYnVmZmVyLmRh
dGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLQotICAgIHJldHVybiBT
dHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQotCi0vLyBBcHBlbmRz
IHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFu
ZCBsZW5ndGggdG8KLS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJl
IG51bGwgdGVybWluYXRlZC4KLXN0YXRpYyB2b2lkIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hh
ckJ1ZmZlciYgYnVmZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNpZ25lZCBzdHJMZW4pCi17Ci0g
ICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUu
Ci0gICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSURO
IGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgotICAgIGNvbnN0IHVuc2ln
bmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKLQotICAgIGlmIChzdHJMZW4gPiBob3N0
bmFtZUJ1ZmZlckxlbmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyLCBzdHJMZW4pKSB7
Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hv
c3RuYW1lQnVmZmVyTGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9S
OwotICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX0lETlRvQVNDSUko
c3RyLCBzdHJMZW4sIGhvc3RuYW1lQnVmZmVyLAotICAgICAgICBob3N0bmFtZUJ1ZmZlckxlbmd0
aCwgVUlETkFfQUxMT1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IgPT0g
VV9aRVJPX0VSUk9SKQotICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1D
aGFyYWN0ZXJzQ29udmVydGVkKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBmaW5kSG9zdG5h
bWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxlbiwgVmVjdG9yPHBhaXI8
aW50LCBpbnQ+ID4mIG5hbWVSYW5nZXMpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9z
dCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3Ig
JywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4KLSAgICAvLyBTa2lwIHF1b3Rl
ZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1c2UgdXMuCi0g
ICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBhc3QgdGhlIHBhcnQg
b2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCi0KLSAgICBuYW1lUmFuZ2VzLmNs
ZWFyKCk7Ci0KLSAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gRmlu
ZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgaW50IGhv
c3RuYW1lT3JTdHJpbmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiXCJAPyIp
OwotICAgICAgICBpZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09IC0xKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1lT3JTdHJpbmdTdGFydF07Ci0g
ICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwotCi0gICAgICAgIGlmIChjID09
ICc/JykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYyA9PSAnQCcpIHsKLSAg
ICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAgICAgICAgIGludCBob3N0
bmFtZVN0YXJ0ID0gcDsKLSAgICAgICAgICAgIGludCBob3N0bmFtZUVuZCA9IGZpbmRGaXJzdE9m
KHN0ciwgc3RyTGVuLCBwLCAiPiw/Iik7Ci0gICAgICAgICAgICBib29sIGRvbmU7Ci0gICAgICAg
ICAgICBpZiAoaG9zdG5hbWVFbmQgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBob3N0bmFtZUVu
ZCA9IHN0ckxlbjsKLSAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5kOwotICAgICAgICAgICAgICAg
IGRvbmUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmFtZVJhbmdlcy5h
cHBlbmQobWFrZV9wYWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1lRW5kKSk7Ci0KLSAgICAgICAg
ICAgIGlmIChkb25lKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgICAgIEFTU0VSVChj
ID09ICciJyk7Ci0gICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGludCBl
c2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RPZihzdHIsIHN0ckxlbiwgcCwg
IlwiXFwiKTsKLSAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5k
ID09IC0xKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBj
ID0gc3RyW2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Ci0gICAgICAgICAgICAgICAgcCA9
IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7Ci0KLSAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZyb20gdGhlIHN0cmlu
ZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAgICAgICAgICAgIGlmIChj
ID09ICciJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAv
LyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdc
XCcpOwotICAgICAgICAgICAgICAgIGlmIChwID09IHN0ckxlbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBmaW5kSG9zdG5hbWVJbkhpZXJhcmNoaWNhbFVS
TChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVu
ZE9mZnNldCkKLXsKLSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwg
VVJMLgotICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1l
IGNoYXJhY3RlcnMgcHJlY2VkaW5nLCBhbmQKLSAgICAvLyB0aGlzIHNob3VsZCBiZSB0aGUgZmly
c3QgY29sb24gaW4gdGhlIHN0cmluZy4KLSAgICAvLyBJdCBlbmRzIHdpdGggdGhlIGVuZCBvZiB0
aGUgc3RyaW5nIG9yIGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVuZGluZyBjaGFyYWN0ZXIuCi0g
ICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3Qg
dGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KLSAgICBpbnQgc2VwYXJhdG9yID0gZmluZEZpcnN0T2Yo
c3RyLCBzdHJMZW4sIDAsICI6Iik7Ci0gICAgaWYgKHNlcGFyYXRvciA9PSAtMSB8fCBzZXBhcmF0
b3IgKyAyID49IHN0ckxlbiB8fAotICAgICAgICBzdHJbc2VwYXJhdG9yICsgMV0gIT0gJy8nIHx8
IHN0cltzZXBhcmF0b3IgKyAyXSAhPSAnLycpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8gYXJlIHZhbGlkIHNj
aGVtZSBjaGFyYWN0ZXJzLgotICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIoc3RyWzBdKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2VwYXJhdG9yOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ldKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBTdGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLgot
ICAgIGludCBhdXRob3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7Ci0KLSAgICAvLyBGaW5kIHRl
cm1pbmF0aW5nIGNoYXJhY3Rlci4KLSAgICBpbnQgaG9zdG5hbWVFbmQgPSBzdHJMZW47Ci0gICAg
Zm9yIChpbnQgaSA9IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVuOyArK2kpIHsKLSAgICAgICAg
VUNoYXIgYyA9IHN0cltpXTsKLSAgICAgICAgaWYgKGMgPT0gJzonIHx8IChpc1BhdGhTZWdtZW50
RW5kQ2hhcihjKSAmJiBjICE9IDApKSB7Ci0gICAgICAgICAgICBob3N0bmFtZUVuZCA9IGk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZpbmQgIkAiIGZv
ciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KLSAgICBpbnQgdXNlckluZm9UZXJtaW5hdG9y
ID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0YXJ0LCAiQCIpOwotICAgIGlu
dCBob3N0bmFtZVN0YXJ0OwotICAgIGlmICh1c2VySW5mb1Rlcm1pbmF0b3IgPT0gLTEgfHwgdXNl
ckluZm9UZXJtaW5hdG9yID4gaG9zdG5hbWVFbmQpCi0gICAgICAgIGhvc3RuYW1lU3RhcnQgPSBh
dXRob3JpdHlTdGFydDsKLSAgICBlbHNlCi0gICAgICAgIGhvc3RuYW1lU3RhcnQgPSB1c2VySW5m
b1Rlcm1pbmF0b3IgKyAxOwotCi0gICAgc3RhcnRPZmZzZXQgPSBob3N0bmFtZVN0YXJ0OwotICAg
IGVuZE9mZnNldCA9IGhvc3RuYW1lRW5kOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBDb252
ZXJ0cyBhbGwgaG9zdG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBpbnB1dCB0byBwdW55Y29kZSwg
cHJlc2VydmluZyB0aGUKLS8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNoYW5nZWQuIFRoZSBvdXRwdXQg
d2lsbCBOT1QgYmUgbnVsbC10ZXJtaW5hdGVkLgotc3RhdGljIHZvaWQgZW5jb2RlSG9zdG5hbWVz
KGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0KQotewotICAgIG91dHB1dC5j
bGVhcigpOwotCi0gICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFpbHRvIikpIHsKLSAgICAgICAg
VmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7Ci0gICAgICAgIGZpbmRIb3N0
bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3RuYW1l
UmFuZ2VzKTsKLSAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdlcy5zaXplKCk7Ci0gICAgICAg
IGludCBwID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAg
ICAgICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5hbWVSYW5nZXNbaV07Ci0gICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCByLmZpcnN0IC0gcCk7
Ci0gICAgICAgICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0cHV0LCAmc3RyLmNoYXJhY3Rl
cnMoKVtyLmZpcnN0XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKLSAgICAgICAgICAgIHAgPSByLnNl
Y29uZDsKLSAgICAgICAgfQotICAgICAgICAvLyBUaGlzIHdpbGwgY29weSBlaXRoZXIgZXZlcnl0
aGluZyBhZnRlciB0aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCi0gICAgICAgIC8vIHdob2xlIHRo
aW5nIGlmIHRoZXJlIGlzIG5vIGhvc3RuYW1lLgotICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIu
Y2hhcmFjdGVycygpW3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpbnQgaG9zdFN0YXJ0LCBob3N0RW5kOwotICAgICAgICBpZiAoZmluZEhvc3RuYW1lSW5IaWVy
YXJjaGljYWxVUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBob3N0U3RhcnQsIGhv
c3RFbmQpKSB7Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIGhv
c3RTdGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KLSAgICAgICAgICAgIGFwcGVuZEVuY29kZWRI
b3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RTdGFydF0sIGhvc3RFbmQgLSBo
b3N0U3RhcnQpOwotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgmc3RyLmNoYXJhY3RlcnMoKVto
b3N0RW5kXSwgc3RyLmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFmdGVyIGhvc3RuYW1lLgotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gTm8gaG9zdG5hbWUgdG8gZW5jb2RlLCByZXR1
cm4gdGhlIGlucHV0LgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBlbmNv
ZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZywgQ2hhckJ1ZmZlciYgb3V0cHV0KQotewotICAgIFVDaGFyQnVmZmVyIHM7Ci0gICAg
ZW5jb2RlSG9zdG5hbWVzKHJlbCwgcyk7Ci0KLSAgICBUZXh0RW5jb2RpbmcgcGF0aEVuY29kaW5n
KFVURjhFbmNvZGluZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5jb2RlZCBhcyBVVEYtODsgb3Ro
ZXIgcGFydHMgbWF5IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgotCi0gICAgaW50IHBhdGhFbmQgPSAt
MTsKLSAgICBpZiAoZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYmIGVuY29kaW5nLmlzVmFsaWQo
KSAmJiAhcHJvdG9jb2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJkYXRh
IikgJiYgIXByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKLSAgICAgICAgLy8gRmluZCB0aGUg
Zmlyc3QgaW5zdGFuY2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBwYXRoRW5kIGF0IC0xIG90aGVy
d2lzZS4KLSAgICAgICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMuZGF0YSgpLCBzLnNpemUoKSwg
MCwgIiM/Iik7Ci0gICAgfQotCi0gICAgaWYgKHBhdGhFbmQgPT0gLTEpIHsKLSAgICAgICAgQ1N0
cmluZyBkZWNvZGVkID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwgcy5zaXplKCksIFVS
TEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIG91dHB1dC5yZXNpemUo
ZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweShvdXRwdXQuZGF0YSgpLCBkZWNvZGVk
LmRhdGEoKSwgZGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ1N0cmlu
ZyBwYXRoRGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5kYXRhKCksIHBhdGhFbmQsIFVS
TEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIC8vIFVuZW5jb2RhYmxl
IGNoYXJhY3RlcnMgaW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkgY29udmVydGluZwotICAgICAg
ICAvLyB0aGVtIHRvIFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcgbm9uLWFscGhhbnVtZXJpYyBj
aGFyYWN0ZXJzLgotICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2RlZCA9IGVuY29kaW5nLmVuY29k
ZShzLmRhdGEoKSArIHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVuZCwgVVJMRW5jb2RlZEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLQotICAgICAgICBvdXRwdXQucmVzaXplKHBhdGhEZWNvZGVk
Lmxlbmd0aCgpICsgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKLSAgICAgICAgbWVtY3B5KG91dHB1
dC5kYXRhKCksIHBhdGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29kZWQubGVuZ3RoKCkpOwotICAg
ICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVkLmxlbmd0aCgpLCBvdGhlckRl
Y29kZWQuZGF0YSgpLCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgIH0KLSAgICBvdXRwdXQu
YXBwZW5kKCdcMCcpOyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0cHV0LgotfQotCi1zdGF0aWMg
U3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAg
ICBzaXplX3QgcXVlc3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycpOwotICAgIHNpemVfdCBoYXNo
UG9zID0gc3RyaW5nLmZpbmQoJyMnKTsKLSAgICB1bnNpZ25lZCBwYXRoRW5kOwotCi0gICAgaWYg
KGhhc2hQb3MgIT0gbm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09IG5vdEZvdW5kIHx8IHF1ZXN0
aW9uUG9zID4gaGFzaFBvcykpCi0gICAgICAgIHBhdGhFbmQgPSBoYXNoUG9zOwotICAgIGVsc2Ug
aWYgKHF1ZXN0aW9uUG9zICE9IG5vdEZvdW5kKQotICAgICAgICBwYXRoRW5kID0gcXVlc3Rpb25Q
b3M7Ci0gICAgZWxzZQotICAgICAgICBwYXRoRW5kID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAg
cmV0dXJuIHN0cmluZy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xcJywnLycpICsgc3RyaW5nLnN1
YnN0cmluZyhwYXRoRW5kKTsKLX0KLQotYm9vbCBLVVJMOjppc0hpZXJhcmNoaWNhbCgpIGNvbnN0
Ci17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NF
UlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0gICAgcmV0dXJuIG1fc3RyaW5nW21f
c2NoZW1lRW5kICsgMV0gPT0gJy8nOwotfQotCi12b2lkIEtVUkw6OmNvcHlUb0J1ZmZlcihWZWN0
b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93
cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5n
IQotICAgIC8vIFRoYXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJ
LCBidXQgbm90IGZvciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5s
ZW5ndGgoKSk7Ci0gICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQot
Ym9vbCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
LXsKLSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcg
b2JqZWN0LgotICAgIGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgOyArK2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSkKLSAgICAgICAgICAg
IHJldHVybiB1cmxbaV0gPT0gJzonOwotICAgICAgICBpZiAoIWlzTGV0dGVyTWF0Y2hJZ25vcmlu
Z0Nhc2UodXJsW2ldLCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotfQotCi1ib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKQot
ewotICAgIC8vIFJGQzM5ODY6IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyAiKyIgLyAiLSIgLyAi
LiIgKQotICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHVuc2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9jb2wubGVuZ3RoKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3RoOyBpKyspIHsKLSAg
ICAgICAgaWYgKCFpc1NjaGVtZUNoYXIocHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZv
aWQgS1VSTDo6cHJpbnQoKSBjb25zdAotewotICAgIHByaW50ZigiJXNcbiIsIG1fc3RyaW5nLnV0
ZjgoKS5kYXRhKCkpOwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpzdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKSBjb25zdAotewotICAgIEtVUkwgcmVmZXJyZXIoKnRoaXMpOwotICAgIHJlZmVy
cmVyLnNldFVzZXIoU3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3MoU3RyaW5nKCkpOwot
ICAgIHJlZmVycmVyLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIHJldHVybiByZWZl
cnJlci5zdHJpbmcoKTsKLX0KLQotYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Ci17Ci0g
ICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcg
YW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxk
IGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZwotICAgIC8vIHJl
YWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQg
YSBkcm9wLgotICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91
bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJvdG9jb2xJcygiZmls
ZSIpOwotfQotCi1ib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQot
ewotICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotY29uc3Qg
S1VSTCYgYmxhbmtVUkwoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgc3RhdGlj
QmxhbmtVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpKTsKLSAgICByZXR1cm4g
c3RhdGljQmxhbmtVUkw7Ci19Ci0KLWJvb2wgS1VSTDo6aXNCbGFua1VSTCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Ci19Ci0KLWJvb2wgaXNEZWZhdWx0UG9ydEZv
clByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCi17
Ci0gICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xkaW5nSGFzaD4gRGVm
YXVsdFBvcnRzTWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBvcnRzTWFwLCBk
ZWZhdWx0UG9ydHMsICgpKTsKLSAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkgewotICAg
ICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBkZWZhdWx0UG9ydHMu
c2V0KCJodHRwcyIsIDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cCIsIDIxKTsK
LSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7Ci0gICAgfQotICAgIHJldHVy
biBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwotfQotCi1ib29sIHBvcnRBbGxv
d2VkKGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBwb3J0ID0gdXJsLnBv
cnQoKTsKLQotICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJu
IGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUg
cG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0cDov
L3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgYmxvY2tlZFBv
cnRMaXN0W10gPSB7Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBl
Y2hvCi0gICAgICAgIDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0g
ICAgICAgIDEzLCAgIC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAg
ICAxNywgICAvLyBxb3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAg
Ly8gRlRQLWRhdGEKLSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAg
Ly8gU1NICi0gICAgICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0g
ICAgICAgIDM3LCAgIC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0Mywg
ICAvLyBuaWNuYW1lCi0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBw
cml2LXJqcwotICAgICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGlu
awotICAgICAgICA5NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0g
ICAgICAgIDEwMiwgIC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAg
ICAgMTA0LCAgLy8gYWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAs
ICAvLyBQT1AzCi0gICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRo
Ci0gICAgICAgIDExNSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAg
ICAgIDExOSwgIC8vIG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8v
IGxvYy1zcnYgLyBlcG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0Mywg
IC8vIElNQVAyCi0gICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0g
ICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwot
ICAgICAgICA1MTMsICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1
MTUsICAvLyBwcmludGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8v
IGNvdXJpZXIKLSAgICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdz
Ci0gICAgICAgIDU0MCwgIC8vIFVVQ1AKLSAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKLSAgICAg
ICAgNTYzLCAgLy8gTk5UUCtTU0wKLSAgICAgICAgNTg3LCAgLy8gRVNNVFAKLSAgICAgICAgNjAx
LCAgLy8gc3lzbG9nLWNvbm4KLSAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKLSAgICAgICAgOTkz
LCAgLy8gSU1BUCtTU0wKLSAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKLSAgICAgICAgMjA0OSwg
Ly8gTkZTCi0gICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBw
bGUgYWRkaXRpb25dCi0gICAgICAgIDQwNDUsIC8vIGxvY2tkCi0gICAgICAgIDYwMDAsIC8vIFgx
MQotICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAg
ICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2Njcs
IC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVy
bmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJD
IFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8g
YmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLSAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCogY29uc3QgYmxvY2tlZFBvcnRMaXN0RW5kID0gYmxvY2tlZFBvcnRMaXN0ICsgV1RG
X0FSUkFZX0xFTkdUSChibG9ja2VkUG9ydExpc3QpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIC8v
IFRoZSBwb3J0IGxpc3QgbXVzdCBiZSBzb3J0ZWQgZm9yIGJpbmFyeV9zZWFyY2ggdG8gd29yay4K
LSAgICBzdGF0aWMgYm9vbCBjaGVja2VkUG9ydExpc3QgPSBmYWxzZTsKLSAgICBpZiAoIWNoZWNr
ZWRQb3J0TGlzdCkgewotICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwID0gYmxv
Y2tlZFBvcnRMaXN0OyBwICE9IGJsb2NrZWRQb3J0TGlzdEVuZCAtIDE7ICsrcCkKLSAgICAgICAg
ICAgIEFTU0VSVCgqcCA8ICoocCArIDEpKTsKLSAgICAgICAgY2hlY2tlZFBvcnRMaXN0ID0gdHJ1
ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxv
Y2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgotICAgIGlmICghYmluYXJ5X3NlYXJjaChibG9ja2Vk
UG9ydExpc3QsIGJsb2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxs
YSBkb2VzLgotICAgIGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAmJiB1cmwucHJvdG9j
b2xJcygiZnRwIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgYW55IHBv
cnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVk
LgotICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKHVybC5wcm90b2NvbElzKCJsb2Nh
bCIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJkYXRhIikpOwotICAgIHNpemVfdCBpbmRleCA9IHVy
bC5maW5kKCc7Jyk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9
IHVybC5maW5kKCcsJyk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlm
IChpbmRleCA+IDUpCi0gICAgICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAt
IDUpLmxvd2VyKCk7Ci0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7IC8vIERhdGEgVVJMcyB3
aXRoIG5vIE1JTUUgdHlwZSBhcmUgY29uc2lkZXJlZCB0ZXh0L3BsYWluLgotICAgIH0KLSAgICBy
ZXR1cm4gIiI7Ci19Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQot
ewotICAgIFN0cmluZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwu
cGF0aCgpKTsKLSAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGguc3Vic3RyaW5nKGRl
Y29kZWRQYXRoLnJldmVyc2VGaW5kKCcuJykgKyAxKTsKLQotICAgIC8vIFdlIGRvbid0IHVzZSBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNlIGl0IHJldHVybnMg
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAgcmV0dXJuIE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7Ci19Ci0KLWJv
b2wgS1VSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Ci19Ci0KLVN0cmluZyBL
VVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25z
dAotewotICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVy
biBzdHJpbmcoKTsKLQotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSAr
ICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYTllNjUuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEtVUkxfaAotI2RlZmluZSBLVVJMX2gKLQotI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBV
U0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1VSTDsKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oUVQpCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFVcmw7Ci1RVF9FTkRfTkFNRVNQ
QUNFCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUZXh0RW5jb2Rpbmc7
Ci1zdHJ1Y3QgS1VSTEhhc2g7Ci0KLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFnIHsgUGFyc2VkVVJM
U3RyaW5nIH07Ci0KLWNsYXNzIEtVUkwgewotcHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVS
TCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIEtVUkwoKSB7IGludmFsaWRhdGUo
KTsgfQotCi0gICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRlIFVSTCBzdHJpbmcuIFRo
ZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgS1VSTDo6c3RyaW5nKCkgY2FsbGVk
IG9uIGEgdmFsaWQKLSAgICAvLyBLVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJuaWJsZSBmcm9tIHN1
Y2guCi0gICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVhdGVkbHkgcGFyc2lu
ZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhlIHBvc3NpYmxlIHNs
b3ctZG93bnMuCi0gICAgS1VSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYpOwot
ICAgIGV4cGxpY2l0IEtVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3Ry
aW5nKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBn
aXZlbiBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFRleHRFbmNvZGluZyBpcyB1
c2VkIHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0g
ICAgLy8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwg
YmUgaW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhl
IGJhc2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAg
IC8vIFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwg
aW52YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5k
IGVtcHR5IGJhc2UgVVJMcy4KLSAgICBLVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmUpOwotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0KLSAgICBTdHJpbmcgc3RyaXBwZWRGb3JV
c2VBc1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9u
cyBzaG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ugb2Yg
bnVsbCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKLSAg
ICAvLyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCi0KLSAgICAvLyBNYWtlcyBhIGRlZXAg
Y29weS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIEtVUkwgb24gYW5vdGhlcgot
ICAgIC8vIHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBh
cmUgaW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJl
ZmVyIGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIEtVUkwgY29weSgpIGNv
bnN0OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25z
dDsKLSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5
b3UgY2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24taGll
cmFyY2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBjYW5T
ZXRIb3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0gICAg
Ym9vbCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0K
LSAgICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHN0
cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBTdHJpbmcgc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0g
ICAgU3RyaW5nIHByb3RvY29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQb3J0KCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwotICAg
IFN0cmluZyBwYXRoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRp
ZmllcigpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0K
LSAgICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgZmlsZVN5c3Rl
bVBhdGgoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwn
cyBwcm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KLSAgICAvLyB0ZXJtaW5hdGVkIEFT
Q0lJIGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgotICAgIGJvb2wg
cHJvdG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKLSAg
ICBib29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLQotICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCBy
ZW1vdmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8v
IElucHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0
SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91
IHBhc3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5n
IHBhdGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBv
ciwgaWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhl
IHF1ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAv
LyBVUkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBh
IG51bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2
b2lkIHNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwotCi0gICAgZnJpZW5k
IGJvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
Jik7Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0
RW5kKCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKLSAgICB1bnNp
Z25lZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkg
Y29uc3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3Ry
aW5nKCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBLVVJMKENGVVJMUmVmKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBLVVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7Ci0j
ZW5kaWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsg
cmV0dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFFUKQotICAgIEtVUkwo
Y29uc3QgUVVybCYpOwotICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKLSNlbmRpZgotCi0gICAg
Y29uc3QgS1VSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KLSNpZm5kZWYgTkRF
QlVHCi0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBib29sIGlzU2FmZVRv
U2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3Qg
Y2hhciopOwotICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
VGV4dEVuY29kaW5nJik7Ci0gICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4m
IGJ1ZmZlcikgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhlIGdpdmVuIFVSTC4gVGhlIG9yaWdp
bmFsU3RyaW5nIHBhcmFtZXRlciBhbGxvd3MgZm9yIGFuCi0gICAgLy8gb3B0aW1pemF0aW9uOiBX
aGVuIHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0cmluZywKLSAgICAv
LyBpdCB3aWxsIHVzZSB0aGUgcGFzc2VkLWluIHN0cmluZyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcg
YSBuZXcgb25lLgotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwYXJz
ZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcgPSAwKTsKLQot
ICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIGJv
b2wgbV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7
Ci0KLSAgICBpbnQgbV9zY2hlbWVFbmQ7Ci0gICAgaW50IG1fdXNlclN0YXJ0OwotICAgIGludCBt
X3VzZXJFbmQ7Ci0gICAgaW50IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaW50IG1faG9zdEVuZDsKLSAg
ICBpbnQgbV9wb3J0RW5kOwotICAgIGludCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBpbnQg
bV9wYXRoRW5kOwotICAgIGludCBtX3F1ZXJ5RW5kOwotICAgIGludCBtX2ZyYWdtZW50RW5kOwot
fTsKLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci1ib29sIG9w
ZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
KTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJik7Ci0KLWJvb2wg
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYp
OwotYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmKTsKLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKLQotLy8gRnVuY3Rpb25zIHRvIGRvIFVS
TCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCi0vLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFy
ZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50
IGZyb20gdGhlIEtVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBz
dHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3BlY2lh
bGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vz
c2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1ib29sIHByb3RvY29sSXNKYXZh
U2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wodW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Ci1ib29sIHBv
cnRBbGxvd2VkKGNvbnN0IEtVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5l
dmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLWJvb2wgaXNWYWxpZFByb3RvY29sKGNv
bnN0IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcm
IHVybCk7Ci1TdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNvbnN0IEtVUkwmKTsKLQotLy8gVW5lc2Nh
cGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgVVJMIGVzY2FwaW5nIHJ1bGVzLCBnaXZlbiBhbiBv
cHRpb25hbAotLy8gZW5jb2RpbmcgKGRlZmF1bHRpbmcgdG8gVVRGLTggb3RoZXJ3aXNlKS4gREFO
R0VSOiBJZiB0aGUgVVJMIGhhcyAiJTAwIgotLy8gaW4gaXQsIHRoZSByZXN1bHRpbmcgc3RyaW5n
IHdpbGwgaGF2ZSBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMhCi1TdHJpbmcgZGVjb2RlVVJMRXNj
YXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQotU3RyaW5nIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci0KLS8vIElubGluZXMuCi0K
LWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKLXsK
LSAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsKLSAgICByZXR1cm4g
YS5zdHJpbmcoKSA9PSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmlu
ZyYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOwotfQot
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17
Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBLVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJu
IGEuc3RyaW5nKCkgIT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0K
LQotLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28g
d2UgY2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1
Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgS1VSTDo6
aXNOdWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7Ci19Ci0KLWlu
bGluZSBib29sIEtVUkw6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5p
c0VtcHR5KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAg
IHJldHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6Omhhc1BhdGgoKSBjb25z
dAotewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgYm9v
bCBLVVJMOjpoYXNQb3J0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ob3N0RW5kIDwgbV9wb3J0
RW5kOwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUg
dW5zaWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fcGFzc3dv
cmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRFbmQgKyAx
OwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faG9zdEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6OnBhdGhTdGFydCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcG9ydEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6
OnBhdGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1
bnNpZ25lZCBLVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAotewotICAgIHJldHVybiBt
X3BhdGhBZnRlckxhc3RTbGFzaDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1l
c3BhY2UgV1RGIHsKLQotICAgIC8vIEtVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0
cmluZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKLSAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpLVVJMPiB7Ci0gICAgICAgIHR5
cGVkZWYgV2ViQ29yZTo6S1VSTEhhc2ggSGFzaDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBX
VEYKLQotI2VuZGlmIC8vIEtVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxIYXNoLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZGQxM2IuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBL
VVJMSGFzaF9oCi0jZGVmaW5lIEtVUkxIYXNoX2gKLQotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHN0cnVjdCBLVVJMSGFzaCB7Ci0gICAg
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtVUkwmIGtleSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChhLnN0cmlu
ZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBib29s
IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2Vi
Q29yZTo6S1VSTD4geyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEtVUkxI
YXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAppbmRleCAyNTczZjYzLi4yYjJl
ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBAIC0yMiw3ICsyMiw3IEBA
CiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTIyNiwxMyAr
MjI2LDEzIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciogdXJsLCB1bnNp
Z25lZCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3Rh
dGljIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9y
PENoYXJhY3RlclR5cGUsIDUxMj4mIGJ1ZmZlcikKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
dmlzaXRlZFVSTElubGluZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPENoYXJhY3RlclR5cGUsIDUxMj4mIGJ1
ZmZlcikKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhp
cyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVVUkwuIEZhc3RlciB3aXRoIGxlc3MgbWVtb3J5IGFs
bG9jYXRpb24uCi0gICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBs
ZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdoYXQgS1VSTCBkb2VzLgorICAgIC8vIEZJWE1FOiBJ
dCdzIG1pc3NpbmcgYSBsb3Qgb2Ygd2hhdCBjb21wbGV0ZVVSTCBkb2VzIGFuZCBhIGxvdCBvZiB3
aGF0IFVSTCBkb2VzLgogICAgIC8vIEZvciBleGFtcGxlLCBpdCBkb2VzIG5vdCBoYW5kbGUgaW50
ZXJuYXRpb25hbCBkb21haW4gbmFtZXMgcHJvcGVybHkuCiAKICAgICAvLyBGSVhNRTogSXQgaXMg
d3JvbmcgdGhhdCB3ZSBkbyBub3QgZG8gZnVydGhlciBwcm9jZXNzaW5nIG9uIHN0cmluZ3MgdGhh
dCBoYXZlICI6Ly8iIGluIHRoZW06CkBAIC0yODQsMTIgKzI4NCwxMiBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQ2hh
cmFjdGVyVHlwZQogICAgIHJldHVybjsKIH0KIAotdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwm
IGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUx
Mj4mIGJ1ZmZlcikKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlcikKIHsKICAg
ICByZXR1cm4gdmlzaXRlZFVSTElubGluZShiYXNlLCBhdHRyaWJ1dGVVUkwuY2hhcmFjdGVycygp
LCBhdHRyaWJ1dGVVUkwubGVuZ3RoKCksIGJ1ZmZlcik7CiB9CiAKLUxpbmtIYXNoIHZpc2l0ZWRM
aW5rSGFzaChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVS
TCkKK0xpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVVJMKQogewogICAgIGlmIChhdHRyaWJ1dGVVUkwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xpbmtIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5oCmluZGV4IDc4
ZWFhM2EuLjI5YmNmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtI
YXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaApAQCAtMzEsNyAr
MzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAKQEAgLTYxLDEyICs2MSwxMiBAQCBMaW5r
SGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIqIHVybCwgdW5zaWduZWQgbGVuZ3RoKTsK
IC8vIGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2ls
bCBiZSB1c2VkIGZvciB2aXNpdGVkCiAvLyBsaW5rIGNvbG9yaW5nLiBJdCB3aWxsIHJldHVybiB0
aGUgc3BlY2lhbCB2YWx1ZSBvZiAwIGlmIGF0dHJpYnV0ZVVSTCBkb2VzIG5vdAogLy8gbG9vayBs
aWtlIGEgcmVsYXRpdmUgVVJMLgotTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwm
IGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKK0xpbmtIYXNoIHZpc2l0
ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMKTsKIAogLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlhbGx5IHJlbGF0aXZlIFVSTCAiYXR0cmli
dXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KIC8vIGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0
aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2aXNpdGVkLgogLy8g
SXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yIGluIGNhc2Ugb2YgZXJyb3JzLgotdm9pZCB2
aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4m
KTsKIAogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCmluZGV4IDdlMjc3Y2UuLjg5MjExZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2lu
Y2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTg2LDcgKzg2LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50IHsKIH07CiAKIHN0cnVjdCBQYXN0ZWJvYXJkVVJMIHsKLSAgICBLVVJMIHVybDsK
KyAgICBVUkwgdXJsOwogICAgIFN0cmluZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShJT1MpCiAgICAgU3RyaW5nIHVzZXJWaXNpYmxlRm9ybTsKQEAgLTExNSw3ICsxMTUs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlYWRSVEZEKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCByZWFkVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICNlbmRp
ZgogICAgIHZpcnR1YWwgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07
CkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFURk9STShXSU4pCi0gICAgdm9pZCB3cml0ZUltYWdlKE5v
ZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7IC8vIEZJWE1FOiBMYXllcmlu
ZyB2aW9sYXRpb24uCisgICAgdm9pZCB3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHRpdGxlKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KICAgICB2b2lk
IHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwgYm9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUq
LCBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JDbGlwYm9hcmQgPSBEZWZhdWx0U2VsZWN0
ZWRUZXh0VHlwZSk7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIApAQCAt
MjEwLDkgKzIxMCw5IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShXSU4pCiAgICAgQ09NUHRyPElE
YXRhT2JqZWN0PiBkYXRhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhT2JqZWN0OyB9CiAg
ICAgdm9pZCBzZXRFeHRlcm5hbERhdGFPYmplY3QoSURhdGFPYmplY3QqKTsKLSAgICB2b2lkIHdy
aXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmKTsKICAgICBDT01QdHI8V0NEYXRhT2JqZWN0PiB3cml0YWJsZURhdGFPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX3dyaXRhYmxlRGF0YU9iamVjdDsgfQotICAgIHZvaWQgd3JpdGVJbWFn
ZVRvRGF0YU9iamVjdChFbGVtZW50KiwgY29uc3QgS1VSTCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcg
dmlvbGF0aW9uLgorICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiwgY29u
c3QgVVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIAogcHJpdmF0
ZToKQEAgLTI0MCw3ICsyNDAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlu
Z1Bhc3RlYm9hcmQoKTsKICAgICB2b2lkIHdyaXRlUmFuZ2VUb0RhdGFPYmplY3QoUmFuZ2UqLCBG
cmFtZSopOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgotICAgIHZvaWQgd3JpdGVVUkxU
b0RhdGFPYmplY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgd3JpdGVV
UkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB3cml0
ZVBsYWluVGV4dFRvRGF0YU9iamVjdChjb25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24p
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5
LmgKaW5kZXggODE1YzNmOS4uYmZmMTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFN0cmF0ZWd5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogICAgIAogY2xhc3Mg
UGFzdGVib2FyZFN0cmF0ZWd5IHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKICAgICB2aXJ0dWFs
IENvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0
dWFsIEtVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0
dWFsIFVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIAogICAg
IHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBsb25n
IHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1QYXN0ZWJvYXJkLmgKaW5kZXggMjM2MjU1My4uZGQ2ODY3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQzLDcgKzQzLDcgQEAgT0JK
Q19DTEFTUyBVSVBhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsK
IHB1YmxpYzoKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIGxvbmcgY2hhbmdlQ291bnQo
KSBjb25zdDsKICAgICBDb2xvciBjb2xvcigpOwotICAgIEtVUkwgdXJsKCk7CisgICAgVVJMIHVy
bCgpOwogCiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQsIGFuZCByZXR1
cm4gbmV3IGNoYW5nZSBjb3VudC4KICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU1NMS2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5l
cmF0b3IuaAppbmRleCAwNjUxNTI2Li5kZjY4YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIC8vIFJldHVybnMg
c3RyaW5ncyByZXByZXNlbnRpbmcga2V5IHNpemVzIHRoYXQgbWF5IGJlIHVzZWQKICAgICAvLyBm
b3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmluZyBpcyBkaXNwbGF5ZWQgYXMgdGhl
IGRlZmF1bHQKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRo
aXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgPGtleWdlbj4gdGFnIGluIGZvcm0gZWxlbWVudHMuCiAg
ICAgLy8gUmV0dXJucyBhIHNpZ25lZCBjb3B5IG9mIHRoZSBjb21iaW5lZCBjaGFsbGVuZ2Ugc3Ry
aW5nIGFuZCBwdWJsaWMKICAgICAvLyBrZXkgKGZyb20gYSBuZXdseSBnZW5lcmF0ZWQga2V5IHBh
aXIpLgotICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWdu
ZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgS1VS
TCYpOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWdu
ZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJM
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCmluZGV4IDQ2OWY5ZGIuLjkyZDRmN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgKQEAgLTMwLDExICsz
MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7
CiBjbGFzcyBQYWdlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExp
bmtTdHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoUGFn
ZSosIExpbmtIYXNoLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVVSTCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFBhZ2UqLCBM
aW5rSGFzaCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVVSTCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiwgTGlua0hh
c2gpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5k
ZXggYzMwOTY0OS4uMjM4MmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBA
IC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKICNp
bmNsdWRlICJET01GaWxlU3lzdGVtQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBBc3luY0ZpbGVTeXN0
ZW06Om9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYg
c3RvcmEKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBT
dHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lz
dGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJM
LCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVy
LCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBw
bGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0
ZW0oQmxhY2tCZXJyeTo6UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFz
ZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHNpemUsIGNyZWF0ZSwgbmV3IFBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCksIHBsYXllcklkKTsK
IH0KQEAgLTc4LDY3ICs3OCw2NyBAQCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojp+QXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeSgpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlv
blBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRo
LCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShm
aWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3Rp
bmF0aW9uUGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0IEtV
UkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6Y29weShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGlu
YXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0ZW1VUkxUb1BhdGgo
c291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3IFBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lz
dGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRm
b3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQog
Ci12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
dm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykp
OwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGUoY29uc3Qg
S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0
ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3Rl
bS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9y
eShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5j
cmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBuZXcg
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRm
b3JtRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcg
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tz
KSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShj
b25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNv
bnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lz
dGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRl
V3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdy
aXRlcjo6Y3JlYXRlV3JpdGVyKG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCBjbGllbnQpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVh
ZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotU3RyaW5nIEFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgRmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBTdHJpbmcgZnVsbFBhdGg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDhmMzZlZDIuLmY0Y2ZjMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEZJ
TEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KQEAgLTQ4LDI0ICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShwbGF0Zm9ybUZpbGVTeXN0ZW0pKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290
VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxh
eWVySWQsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGlj
IHZvaWQgb3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJh
c2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwg
bG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxheWVySWQsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeSgpOwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgs
IGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBLVVJMJiBzb3VyY2VQYXRo
LCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgS1VS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3Rz
KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFk
RGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJD
bGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRh
dGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcm90ZWN0ZWQ6CiAgICAg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAgIHN0YXRpYyBTdHJpbmcg
ZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIFN0cmluZyBmaWxl
U3lzdGVtVVJMVG9QYXRoKGNvbnN0IFVSTCYpOwogCiAgICAgT3duUHRyPEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBtX3BsYXRmb3JtRmlsZVN5c3RlbTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKaW5kZXggOTkxMGE2OC4uZWJjNzQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApAQCAtMjAsNyArMjAs
NyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIgogCiAjaW5j
bHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25T
cGFjZS5oIgogCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYg
SGFzaE1hcDxQYWdlQ2xpZW50QmxhY2tCZXJyeSosIGJvb2w+IFBhZ2VWaXNpYmlsaXR5TWFwOwog
CiBzdHJ1Y3QgQ2hhbGxlbmdlSW5mbyB7Ci0gICAgQ2hhbGxlbmdlSW5mbyhjb25zdCBLVVJMJiwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAgICBDaGFsbGVuZ2VJ
bmZvKGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRpYWwm
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRCbGFja0JlcnJ5Kik7
CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFByb3RlY3Rpb25TcGFjZSBzcGFj
ZTsKICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqIGF1dGhDbGllbnQ7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDaGFsbGVuZ2VJ
bmZvIHsKICAgICBib29sIGJsb2NrZWQ7CiB9OwogCi1DaGFsbGVuZ2VJbmZvOjpDaGFsbGVuZ2VJ
bmZvKGNvbnN0IEtVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYVNwYWNlLCBjb25z
dCBDcmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKK0NoYWxsZW5nZUluZm86OkNoYWxsZW5nZUluZm8o
Y29uc3QgVVJMJiBhVXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGFTcGFjZSwgY29uc3QgQ3Jl
ZGVudGlhbCYgYUNyZWRlbnRpYWwsCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQq
IGFuQXV0aENsaWVudCwgUGFnZUNsaWVudEJsYWNrQmVycnkqIGFQYWdlQ2xpZW50KQogICAgIDog
dXJsKGFVcmwpCiAgICAgLCBzcGFjZShhU3BhY2UpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdl
Q2xpZW50QmxhY2tCZXJyeSoKICAgICBkLT5yZXN1bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
bGllbnQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2Um
IHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OmF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNl
LAogICAgIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KiBhdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSogcGFnZUNsaWVudCkK
IHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChhdXRoQ2xpZW50KTsKQEAgLTE5Niw3ICsxOTYsNyBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6Y2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoQXV0aGVudGljYXRpbwogICAgICAgICBkLT5zdGFydEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKG5leHQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdl
cjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Om5vdGlmeUNo
YWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNlLAog
ICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKIHsKICAgICBkLT5tX2FjdGl2ZUNoYWxsZW5nZSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaAppbmRleCAzYWZjOGU1Li44NGQ3OTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXJQ
cml2YXRlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFz
cyBQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQg
ewpAQCAtMzgsNyArMzgsNyBAQCBlbnVtIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHsK
IAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQgewogcHVibGljOgotICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50
aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3Qg
VVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1
bHQsIGNvbnN0IENyZWRlbnRpYWwmKSA9IDA7CiB9OwogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZU1hbmFnZXIgOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRocmVhZFVuc2Fm
ZVNpbmdsZXRvbjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI+IHsKQEAgLTQ4LDkgKzQ4
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZURlbGV0ZWQoUGFnZUNsaWVudEJsYWNrQmVycnkq
KTsKICAgICB2b2lkIHBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50QmxhY2tCZXJyeSos
IGJvb2wgdmlzaWJsZSk7CiAKLSAgICB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworICAgIHZv
aWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Kiwg
UGFnZUNsaWVudEJsYWNrQmVycnkqKTsKICAgICB2b2lkIGNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Kik7Ci0gICAgdm9pZCBub3RpZnlD
aGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7CisgICAgdm9pZCBu
b3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsKIAogcHJp
dmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmluZGV4
IDE3MjI2NTUuLjllYmY3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHN0YXRpYyBi
b29sIHNob3VsZElnbm9yZVNjaGVtZShjb25zdCBTdHJpbmcmIHByb3RvY29sKQogICAgIHJldHVy
biBwcm90b2NvbCA9PSAiZmlsZSIgfHwgcHJvdG9jb2wgPT0gImxvY2FsIjsKIH0KIAotdm9pZCBD
b29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgQ29va2llRmlsdGVyIGZpbHRlcikKK3ZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
cyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyIGZpbHRl
cikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlz
IHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2Ug
JiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2ll
RmlsdGUKICAgICB9CiB9CiAKLXZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0ZXIgZmls
dGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29va2llRmlsdGVyIGZpbHRlcikKIHsKICAgICAv
LyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlzIHBvaW50LCBmb3Jj
ZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYgIW1fcHJpdmF0
ZU1vZGUpCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVz
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZXMsIEMKICAgICB9
CiB9CiAKLVN0cmluZyBDb29raWVNYW5hZ2VyOjpnZXRDb29raWUoY29uc3QgS1VSTCYgdXJsLCBD
b29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAorU3RyaW5nIENvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZShjb25zdCBVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBhdCB0aGlzIHBvaW50LCBmb3JjZSBh
IHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1v
ZGUpCkBAIC0yMjMsNyArMjIzLDcgQEAgU3RyaW5nIENvb2tpZU1hbmFnZXI6OmdlbmVyYXRlSHRt
bEZyYWdtZW50Rm9yQ29va2llcygpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDb29r
aWVNYW5hZ2VyOjpnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+ICZz
dGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVyIGZpbHRl
cikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2llcyhWZWN0b3I8UmVmUHRy
PFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwg
Q29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKIHsKICAgICAvLyBGb3JjZSBhIHN5bmMgbG9hZCBv
ZiB0aGUgZGF0YWJhc2UKICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZh
dGVNb2RlKQpAQCAtNTg5LDEzICs1ODksMTMgQEAgQ29va2llTWFwKiBDb29raWVNYW5hZ2VyOjpm
aW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgUGEKICAg
ICByZXR1cm4gY3VyTWFwOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUNvb2tpZVdp
dGhOYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBD
b29raWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIC8vIERpc3BhdGNoIHRoZSBtZXNzYWdlIGJlY2F1
c2UgdGhlIGRhdGFiYXNlIGNvb2tpZXMgYXJlIG5vdCBsb2FkZWQgaW4gbWVtb3J5IHlldC4KICAg
ICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2RlKSB7Ci0gICAgICAg
IHR5cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6KkZ1bmN0aW9uVHlwZSkoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgICAgICB0eXBlZGVmIHZvaWQgKFdlYkNvcmU6
OkNvb2tpZU1hbmFnZXI6OipGdW5jdGlvblR5cGUpKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
OwogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVu
dCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBlLCBDb29raWVNYW5hZ2VyLCBjb25z
dCBLVVJMLCBjb25zdCBTdHJpbmc+KAorICAgICAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlwZSwgQ29va2llTWFuYWdlciwgY29u
c3QgVVJMLCBjb25zdCBTdHJpbmc+KAogICAgICAgICAgICAgICAgICZDb29raWVNYW5hZ2VyOjpy
ZW1vdmVDb29raWVXaXRoTmFtZSwgdGhpcywgdXJsLCBjb29raWVOYW1lKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5oCmluZGV4IDBkNjkwZmMuLmRhZjAxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvb2tpZURhdGFiYXNlQmFja2lu
Z1N0b3JlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogZW51bSBCYWNraW5nU3RvcmVSZW1v
dmFsUG9saWN5IHsKICAgICBSZW1vdmVGcm9tQmFja2luZ1N0b3JlLApAQCAtNzAsMTEgKzcwLDEx
IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkxvY2FsQWNjZXNzQWxsQ29va2llcygpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkRHVtcEFsbENvb2tpZXM7IH0KICAgICB2b2lkIHNldENhbkxvY2FsQWNj
ZXNzQWxsQ29va2llcyhib29sIGVuYWJsZWQpIHsgbV9zaG91bGREdW1wQWxsQ29va2llcyA9IGVu
YWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0Q29va2llcyhjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7Ci0gICAgdm9pZCBz
ZXRDb29raWVzKGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29v
a2llRmlsdGVyKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgdm9pZCBz
ZXRDb29raWVzKGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29r
aWVGaWx0ZXIpOwogCiAgICAgdm9pZCByZW1vdmVBbGxDb29raWVzKEJhY2tpbmdTdG9yZVJlbW92
YWxQb2xpY3kpOwotICAgIHZvaWQgcmVtb3ZlQ29va2llV2l0aE5hbWUoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCByZW1vdmVDb29raWVXaXRoTmFtZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdW5zaWduZWQgc2hv
cnQgY29va2llc0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQogCkBAIC05NiwxMCAr
OTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJpdmF0ZU1vZGUoYm9vbCk7CiAKICAgICBT
dHJpbmcgZ2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCk7Ci0gICAgU3RyaW5nIGdldENv
b2tpZShjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIpIGNvbnN0OworICAgIFN0
cmluZyBnZXRDb29raWUoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIpIGNvbnN0
OwogCiAgICAgLy8gUmV0dXJucyBhbGwgY29va2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGgg
dGhlIHNwZWNpZmllZCBVUkwgYXMgcmF3IGNvb2tpZXMuCi0gICAgdm9pZCBnZXRSYXdDb29raWVz
KFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2llcywgY29uc3QgS1VS
TCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcykgY29uc3Q7
CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+JiBz
dGFja09mQ29va2llcywgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgPSBXaXRo
SHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgQ29va2llTWFu
YWdlciYgY29va2llTWFuYWdlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCmluZGV4IGVhOTBjYTguLjE3MDBmNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzTGlnaHR3ZWlnaHRTcGFj
ZShVQ2hhciBjKQogICAgIHJldHVybiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKTsKIH0KIAotQ29v
a2llUGFyc2VyOjpDb29raWVQYXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENvb2tpZVVSTCkKK0Nv
b2tpZVBhcnNlcjo6Q29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENvb2tpZVVSTCkKICAg
ICA6IG1fZGVmYXVsdENvb2tpZVVSTChkZWZhdWx0Q29va2llVVJMKQogewogICAgIG1fZGVmYXVs
dENvb2tpZUhvc3QgPSBkZWZhdWx0Q29va2llVVJMLmhvc3QoKTsKQEAgLTIzNyw3ICsyMzcsNyBA
QCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShj
b25zdCBTdHJpbmcmIGNvb2tpZSwgdW5zaQogICAgICAgICBjYXNlICdQJzoKICAgICAgICAgY2Fz
ZSAncCcgOiB7CiAgICAgICAgICAgICBpZiAobGVuZ3RoID49IDQgJiYgKChjb29raWUuZmluZCgi
YXRoIiwgdG9rZW5TdGFydFN2ZyArIDEsIGZhbHNlKSAtIHRva2VuU3RhcnRTdmcpID09IDEpKSB7
Ci0gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcGF0aCB0byBiZSBkZWNvZGVkIHRvIG1h
dGNoIHRob3NlIHJldHVybmVkIGZyb20gS1VSTDo6cGF0aCgpLgorICAgICAgICAgICAgICAgIC8v
IFdlIG5lZWQgdGhlIHBhdGggdG8gYmUgZGVjb2RlZCB0byBtYXRjaCB0aG9zZSByZXR1cm5lZCBm
cm9tIFVSTDo6cGF0aCgpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRoIGF0dHJpYnV0ZSBt
YXkgb3IgbWF5IG5vdCBpbmNsdWRlIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0ZXJzLiBGb3J0dW5h
dGVseQogICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwZXJjZW50LWVuY29kZWQg
Y2hhcmFjdGVycywgZGVjb2RpbmcgdGhlIHVybCBpcyBhIG5vLW9wLgogICAgICAgICAgICAgICAg
IHJlcy0+c2V0UGF0aChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGFyc2VkVmFsdWUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5oCmlu
ZGV4IGM5NDRmODYuLjJiMGI1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBDb29r
aWVQYXJzZXJfaAogI2RlZmluZSBDb29raWVQYXJzZXJfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFBhcnNlZENvb2tpZTsKIAogY2xhc3MgQ29va2ll
UGFyc2VyIHsKIHB1YmxpYzoKLSAgICBDb29raWVQYXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENv
b2tpZVVSTCk7CisgICAgQ29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENvb2tpZVVSTCk7
CiAgICAgfkNvb2tpZVBhcnNlcigpOwogCiAgICAgLy8gUGFyc2VzIGEgc2VxdWVuY2Ugb2YgIkNv
b2tpZToiIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgY29va2llcy4KQEAgLTUxLDcgKzUx
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBGSVhNRTogY3VyVGltZSwgc3RhcnQsIGVuZCBwYXJhbWV0
ZXJzIHNob3VsZCBiZSByZW1vdmVkLiBBbmQgdGhpcyBtZXRob2QgY2FuIGJlIHB1YmxpYy4KICAg
ICBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBj
b29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBjdXJUaW1lKTsKIAot
ICAgIEtVUkwgbV9kZWZhdWx0Q29va2llVVJMOworICAgIFVSTCBtX2RlZmF1bHRDb29raWVVUkw7
CiAgICAgU3RyaW5nIG1fZGVmYXVsdENvb2tpZUhvc3Q7CiAgICAgYm9vbCBtX2RlZmF1bHREb21h
aW5Jc0lQQWRkcmVzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0RPTUZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCmluZGV4IGMyYTJi
MjQuLmNmZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3Jl
YXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAorVVJMIERPTUZp
bGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7
CiAKQEAgLTM4LDcgKzM4LDcgQEAgS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5
c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHQtPmNvbXBsZXRlVVJMKG1fZmlsZXN5c3RlbVJvb3RVUkwuc3RyaW5nKCkgKyBlbmNvZGVXaXRo
VVJMRXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRoKSk7CiB9CiAKLWJvb2wgRE9NRmlsZVN5c3RlbUJh
c2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0
eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxl
U3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlwZSwgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJmaWxlc3lzdGVtIikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5
cGUKIAogICAgICAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0
aCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBLVVJMIG9yaWdpblVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybC5wYXRoKCkpOworICAgICAgICBVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsLnBhdGgoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKG9yaWdpblVSTC5wYXRoKCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0
aFswXSAhPSAnLycpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmNwcAppbmRleCBiZThkMWM4Li5kNGQxMmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVt
QmxhY2tCZXJyeS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBi
YXNlUGEKICAgICBpZiAodHlwZSA9PSBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGNvbnRleHQtPnVybCgpOworICAgIFVSTCB1cmwgPSBj
b250ZXh0LT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAg
ICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0
cmluZygpKTsKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBiYXNlUGEKICAgICBi
dWlsZGVyLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsKICAgICBidWlsZGVyLmFwcGVuZCh1cmwuc3Ry
aW5nKCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGZpbGVTeXN0ZW1UeXBlU3RyaW5nKHR5cGUpKTsK
LSAgICBLVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWlsZGVyLnRvU3RyaW5n
KCkpOworICAgIFVSTCByb290VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwoYnVpbGRlci50b1N0
cmluZygpKTsKICAgICBBU1NFUlQocm9vdFVSTC5pc1ZhbGlkKCkpOwogCiAgICAgLy8gVE9ETzog
QXNrIHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBlcm1pc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmgKaW5k
ZXggZDQwZWY4Yi4uNzM0ZGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnkuaApAQCAtMzYsNyArMzYsNyBA
QCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDsKIGNsYXNzIENyZWRlbnRpYWw7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogfQpAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0FsZXJ0RGlhbG9nKEJsYWNrQmVy
cnk6OldlYktpdDo6V2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9u
U3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOwogICAgIHZpcnR1YWwgU2F2
ZUNyZWRlbnRpYWxUeXBlIG5vdGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpDcmVkZW50
aWFsJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUGFyc2VkQ29va2llLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGFyc2VkQ29va2llLmNwcAppbmRleCBjZmE3NDM0Li44YzE4NjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tpZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiUGFyc2VkQ29va2llLmgiCiAKICNpbmNsdWRlICJDb29r
aWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxjdXJsL2N1cmwuaD4KICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGFyc2VkQ29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bh
cnNlZENvb2tpZS5oCmluZGV4IGJjYzc5MTYuLjU2YzUyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaApAQCAtMzcsNyArMzcsNyBA
QCBjbGFzcyBTdHJpbmc7CiB9CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAKIC8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNvb2tpZSBpbnRlcm5hbGx5
CiAvLyBJdCBjYW4gZWl0aGVyIGJlIGNyZWF0ZWQgYnkgdGhlIENvb2tpZVBhcnNlciB3aGljaCB3
aWxsIHRoZW4gZmlsbCBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcAppbmRleCAwYjUzZTFlLi5mMjVl
ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3Rl
Ym9hcmRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcApAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9p
ZCBQYXN0ZWJvYXJkOjpjbGVhcigpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2Fy
ZDo6Y2xlYXJDbGlwYm9hcmQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5v
ZGUqLCBLVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJ
bWFnZShOb2RlKiwgVVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4
IDFhZmI1ZjUuLjM0MDQ0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNpbmNs
dWRlICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVt
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1DYWxsYmFja3Mg
ewogcHVibGljOgotICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEtVUkwmIHJvb3RV
UkwgPSBLVVJMKCkpCisgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVVJMJiByb290
VVJMID0gVVJMKCkpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICAgICAs
IG1fd3JpdGVyQ2xpZW50KDApCiAgICAgICAgICwgbV9yb290VVJMKHJvb3RVUkwpCkBAIC03MCw3
ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fd3JpdGVy
Q2xpZW50OwogCiBwcml2YXRlOgotICAgIEtVUkwgbV9yb290VVJMOworICAgIFVSTCBtX3Jvb3RV
Ukw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5lcmF0b3JCbGFja0Jl
cnJ5LmNwcAppbmRleCAxYTMxOTg3Li5lMWQzMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9yQmxhY2tC
ZXJyeS5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDcgKzMxLDcgQEAgdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCwgU3RyaW5nIGNvbnN0JiwgS1VSTCBjb25zdCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBTdHJpbmcgY29uc3QmLCBVUkwgY29uc3QmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggZGEzOTExNS4uNTVmYTlmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC02OSw2NyArNjks
NjcgQEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxlU3lz
dGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGkKICAgICBXZWJGaWxlU3lzdGVtOjpkZWxldGVG
aWxlU3lzdGVtKHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgY2FsbGJh
Y2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojptb3ZlT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9y
bUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0
aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNr
cykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lz
dGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBhdGgp
LCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNhbGxiYWNrcyk7CiB9CiAK
LXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVt
LCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdv
cmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZp
bGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRoKSwgZmlsZVN5c3Rl
bVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBL
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJh
Y2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmls
ZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwg
Y29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3Zl
UmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmls
ZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2Fs
bGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFk
TWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYg
cGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykK
IHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGVP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRm
b3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9y
bUZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVz
aXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0
b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBw
bGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxh
dGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVt
LCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5maWxlRXhpc3RzKGZpbGVT
eXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0
IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4
aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
cGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVt
LT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsK
IH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAg
IHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBj
b25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyog
Y2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVX
cml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQog
ewogICAgIFdlYkZpbGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9ybUZpbGVTeXN0ZW0sIGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVt
LCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZp
bGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsK
IH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3Rl
bShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgS1VSTCYgcm9vdFVSTCwgY29uc3Qg
U3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBj
cmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtKFdvcmtl
ckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYg
bW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRp
ZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIEFT
U0VSVChjb250ZXh0KTsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rh
c2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5GaWxlU3lzdGVtT25NYWlu
VGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIHNpemUsIGNyZWF0ZSwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY29u
dGV4dCwgbW9kZSwgcm9vdFVSTCkpKTsKQEAgLTE0MSw2MiArMTQxLDYyIEBAIHZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxT
Y29wZSogY29udGV4CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxlU3lzdGVtT25NYWlu
VGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUsIG5ldyBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNvbnRleHQsIG1vZGUpKSk7
CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBL
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwm
IGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2so
JldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1haW5UaHJlYWQsIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4
dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0
aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5T25NYWlu
VGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgc291cmNlUGF0aCwgZGVzdGluYXRp
b25QYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJh
Y2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92
ZU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwg
bV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRo
cmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQo
KSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tU
b01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdl
dCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IFVSTCYg
cGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tU
YXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlT25NYWluVGhy
ZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZlLCBuZXcgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQs
IG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpj
cmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJv
b2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFk
LCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVzaXZlLCBuZXcgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1f
bW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxl
RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZp
bGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxi
YWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09uTWFp
blRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2Rl
KSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRpcmVjdG9y
eUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpk
aXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5
RXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250
ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVh
ZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJl
YWREaXJlY3RvcnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRo
LCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBt
X2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlcihB
c3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9N
YWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQo
KSwgY2xpZW50LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzLCBjbGllbnQsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRN
ZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNr
VG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkLCBt
X3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4IDE2NTFhNWMuLjk0MWY3
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCkBAIC00MSwzOSAr
NDEsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnkoY29udGV4dCwgbW9kZSwgcGxhdGZvcm1GaWxlU3lzdGVtKSk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2Nv
cGUqLCBjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmlu
ZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1U
eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV29ya2VyR2xv
YmFsU2NvcGUqLCBjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3Qg
U3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5
c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVGaWxlU3lzdGVtKFdv
cmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQ
YXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KCk7CiAgICAgdmlydHVhbCBib29sIHdhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc291
cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtVUkwmIHNv
dXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShj
b25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwot
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmls
ZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJl
YWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc291cmNlUGF0aCwg
Y29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVj
dG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Cisg
ICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6
CiAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShXb3JrZXJHbG9iYWxTY29wZSos
IGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2Vi
RmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsKICAgICBzdGF0aWMgdm9pZCBvcGVuRmls
ZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5
cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKICAgICBzdGF0aWMgdm9pZCBkZWxldGVGaWxlU3lzdGVtT25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBj
b25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBtb3ZlT25N
YWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAg
ICBzdGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHNvdXJjZVBh
dGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
KiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0q
LCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25z
dCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwot
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYg
cGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSos
IGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGZpbGVFeGlzdHNPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
U3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSos
IGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Kik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIEFzeW5j
RmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlU25hcHNob3RGaWxl
QW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgbW92
ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwor
ICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBzb3VyY2VQ
YXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
KiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSos
IGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKKyAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRo
LCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3Rl
bSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqKTsKKyAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyop
OworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
VVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBBc3luY0ZpbGVXcml0
ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlKiBtX2Nv
bnRleHQ7CiAgICAgU3RyaW5nIG1fbW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCBiMzUwODJmLi5kZjExZDdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01NCwxMSAr
NTQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBm
YWxzZSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50Kj4gOgogCiB2b2lkIHBvc3RUYXNrVG9NYWluVGhy
ZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4pOwogCi1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczogcHVibGljIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLCBwdWJsaWMg
V29ya2VyR2xvYmFsU2NvcGU6Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBtb2RlLCBjb25zdCBLVVJMJiByb290VVJMID0gS1VSTCgpKQorICAgIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MsIFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG1vZGUsIGNvbnN0IFVSTCYgcm9vdFVSTCA9IFVSTCgpKQogICAgICAgICA6IFBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCkKICAgICAgICAgLCBXb3Jr
ZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIoY29udGV4dCkKICAgICAgICAgLCBtX2NvbnRleHQoY29u
dGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MWI3Y2ZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktV
UkwuaCIKLQotI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ0ZVUkwuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VSTChDRlVSTFJlZiB1
cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFz
ZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwg
dXJsQnl0ZXMpOwotICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7Ci19Ci0KLSNpZiAhUExBVEZP
Uk0oTUFDKQotUmV0YWluUHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17
Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/
Ci0gICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBj
aGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNs
ZWFybHkgd3JvbmcuCi0gICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVy
KGJ1ZmZlcik7Ci0gICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBh
dGgoKSBjb25zdAotewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBjcmVhdGVDRlVS
TCgpOwotICAgIGlmICghY2ZVUkwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotI2lmIFBM
QVRGT1JNKFdJTikKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dz
UGF0aFN0eWxlOwotI2Vsc2UKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVT
eXN0ZW1QYXRoKGNmVVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcAppbmRl
eCBhNjYwOGJiLi44MGE1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmNwcApAQCAtNjMsNjIgKzYzLDYyIEBAIEFzeW5jRmlsZVN5
c3RlbUVmbDo6fkFzeW5jRmlsZVN5c3RlbUVmbCgpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lz
dGVtRWZsOjptb3ZlKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6Om1vdmUoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpj
b3B5KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNvcHkoY29uc3QgVVJMJiwgY29u
c3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmUoY29u
c3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5
bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5
bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5
c3RlbUVmbDo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVhZE1ldGFkYXRhKGNv
bnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlRmls
ZShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJlY3RvcnkoY29u
c3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiwgYm9vbCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpmaWxlRXhpc3RzKGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmls
ZVN5c3RlbUVmbDo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmRpcmVj
dG9yeUV4aXN0cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1F
Zmw6OnJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkRGlyZWN0b3J5KGNvbnN0
IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlV3JpdGVy
KEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlV3JpdGVy
KEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0
IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5j
RmlsZVN5c3RlbUVmbDo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Fz
eW5jRmlsZVN5c3RlbUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmls
ZVN5c3RlbUVmbC5oCmluZGV4IDE5OWI3YzQuLjkzZTZiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmgKQEAgLTQwLDE4ICs0MCwxOCBA
QCBwdWJsaWM6CiAgICAgQXN5bmNGaWxlU3lzdGVtRWZsKCk7CiAgICAgdmlydHVhbCB+QXN5bmNG
aWxlU3lzdGVtRWZsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgS1VS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBL
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0
IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRh
ZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShj
b25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZp
cnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBVUkwm
LCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCmluZGV4IDI2NDhmMWMuLmRh
MmUyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwCkBAIC05
MCwyMSArOTAsMjEgQEAgUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFByaW50Q29udGV4
dCogcHJpbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGVycm9yTWUKIHsKICAgICBEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBy
aW50LCBQcmludEVycm9yR2VuZXJhbCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+
dXJsKCkgOiBLVVJMKCksIGVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckdlbmVyYWwsIGRvY3VtZW50TG9hZGVyID8gZG9j
dW1lbnRMb2FkZXItPnVybCgpIDogVVJMKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKIFJlc291cmNl
RXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRl
eHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gcHJpbnRDb250ZXh0
LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9j
dW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIEFTQ0lJTGl0ZXJh
bCgiUHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwgZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFsKCJQcmludGVyIG5vdCBm
b3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25z
dCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVudExvYWRlciogZG9j
dW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9h
ZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmlu
dEVycm9ySW52YWxpZFBhZ2VSYW5nZSwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+
dXJsKCkgOiBLVVJMKCksIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwYWdlIHJhbmdlIikpOworICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50RXJyb3JJbnZhbGlk
UGFnZVJhbmdlLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgp
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcGFnZSByYW5nZSIpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBv
cmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5
TGlua1N0dWJzLmNwcAppbmRleCAxZjlkMGY1Li42YzJiNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZUUERpcmVjdG9yeURvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmll
dy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQg
Z2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4mKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLVN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWdu
ZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQorU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJikKIHsK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDBlYjUxMzYuLjk3M2RiYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
CkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbWFnZUJ1
ZmZlcjsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIFJvdW5kZWRSZWN0OwotICAgIGNs
YXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwog
ICAgIGNsYXNzIFRleHRSdW47CiAgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CkBAIC00
MDAsNyArNDAwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHRyYW5zbGF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7IH0KICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAK
LSAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBVUkwmLCBjb25zdCBJbnRSZWN0Jik7
CiAKICAgICAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAg
ICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDRhNTE1NTQuLjNi
YzhiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBwdWJsaWM6CiAKIHN0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5
cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFD
YWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlRm9yU2l0ZSk7CiAKLXN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2lu
ZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmLCBNZWRpYVBsYXllckZhY3Rv
cnkqIGN1cnJlbnQgPSAwKTsKK3N0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVu
Z2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYsIE1lZGlhUGxheWVyRmFj
dG9yeSogY3VycmVudCA9IDApOwogc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogbmV4dE1lZGlh
RW5naW5lKE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCk7CiAKIGVudW0gUmVxdWVyeUVuZ2lu
ZU9wdGlvbnMgeyBEb05vdFJlc2V0RW5naW5lcywgUmVzZXRFbmdpbmVzIH07CkBAIC0yNjQsNyAr
MjY0LDcgQEAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY29kZWNzKCkKICAgICByZXR1cm4g
Y29kZWNzOwogfQogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0TWVkaWFFbmdpbmVG
b3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3Ms
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIE1lZGlhUGxheWVyRmFj
dG9yeSogY3VycmVudCkKK3N0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJlc3RNZWRpYUVuZ2lu
ZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBNZWRpYVBsYXllckZh
Y3RvcnkqIGN1cnJlbnQpCiB7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTM1OSw3ICszNTksNyBAQCBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkKICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50ID0gMDsKIH0KIAotYm9vbCBNZWRpYVBsYXllcjo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCitib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQog
ewogICAgIG1fY29udGVudE1JTUVUeXBlID0gY29udGVudFR5cGUudHlwZSgpLmxvd2VyKCk7CiAg
ICAgbV9jb250ZW50VHlwZUNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihjb2RlY3MoKSk7
CkBAIC0zOTQsNyArMzk0LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3QKIH0KIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCi1ib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVy
bCwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+IG1lZGlhU291cmNlKQorYm9vbCBNZWRpYVBs
YXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+IG1l
ZGlhU291cmNlKQogewogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKICAgICBtX2Nv
bnRlbnRNSU1FVHlwZSA9ICIiOwpAQCAtNzQwLDcgKzc0MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6
OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwKICAgICByZXR1cm4gbV9wcml2YXRlLT5jb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRl
eHR1cmUoY29udGV4dCwgdGV4dHVyZSwgbGV2ZWwsIHR5cGUsIGludGVybmFsRm9ybWF0LCBwcmVt
dWx0aXBseUFscGhhLCBmbGlwWSk7CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IE1lZGlhUGxheWVy
U3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1l
ZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IE1lZGlhUGxheWVy
U3VwcG9ydHNUeXBlQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgU3RyaW5nIHR5cGUgPSBjb250ZW50
VHlwZS50eXBlKCkubG93ZXIoKTsKICAgICAvLyBUaGUgY29kZWNzIHN0cmluZyBpcyBub3QgbG93
ZXItY2FzZWQgYmVjYXVzZSBNUDQgdmFsdWVzIGFyZSBjYXNlIHNlbnNpdGl2ZQpAQCAtMTA1Miw3
ICsxMDUyLDcgQEAgdm9pZCBNZWRpYVBsYXllcjo6a2V5RXJyb3IoY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBNZWQKICAgICAgICAgbV9tZWRpYVBsYXll
ckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlFcnJvcih0aGlzLCBrZXlTeXN0ZW0sIHNlc3Npb25JZCwg
ZXJyb3JDb2RlLCBzeXN0ZW1Db2RlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6a2V5TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IEtV
UkwmIGRlZmF1bHRVUkwpCit2b2lkIE1lZGlhUGxheWVyOjprZXlNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hh
ciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJM
KQogewogICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQogICAgICAgICBtX21lZGlhUGxheWVy
Q2xpZW50LT5tZWRpYVBsYXllcktleU1lc3NhZ2UodGhpcywga2V5U3lzdGVtLCBzZXNzaW9uSWQs
IG1lc3NhZ2UsIG1lc3NhZ2VMZW5ndGgsIGRlZmF1bHRVUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMDJjY2M1MTkuLmIzZDg4NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKQEAgLTE5
NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNZWRpYUtleUVycm9yQ29kZSB7IFVua25v
d25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJyb3IsIE91dHB1dEVycm9yLCBIYXJk
d2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBs
YXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8s
IGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVt
ICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywgTWVkaWFLZXlFcnJvckNvZGUsIHVu
c2lnbmVkIHNob3J0IC8qIHN5c3RlbUNvZGUgKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3Rl
bSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNvbnN0IEtVUkwm
IC8qIGRlZmF1bHRVUkwgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU1l
c3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3Qg
U3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2lnbmVkIGNoYXIqIC8qIG1lc3NhZ2Ug
Ki8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNvbnN0IFVSTCYgLyogZGVmYXVsdFVS
TCAqLykgeyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxh
eWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vz
c2lvbklkICovLCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBpbml0RGF0YSAqLywgdW5zaWduZWQg
LyogaW5pdERhdGFMZW5ndGggKi8pIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIApAQCAtMjUz
LDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlhIGVuZ2luZSBzdXBwb3J0LgogICAg
IGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQsIElzU3VwcG9ydGVkLCBNYXlCZVN1
cHBvcnRlZCB9OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBL
VVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKKyAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUm
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJT
dXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhI
YXNoU2V0PFN0cmluZz4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0
YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CkBAIC0yODAs
OSArMjgwLDkgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKTsKIAotICAgIGJv
b2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IENvbnRlbnRUeXBlJiwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAg
Ym9vbCBsb2FkKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNvdXJjZT4pOworICAg
IGJvb2wgbG9hZChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNvdXJjZT4pOwogI2Vu
ZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2b2lkIGtleUFkZGVkKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7CiAgICAgdm9pZCBrZXlF
cnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1l
ZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVt
Q29kZSk7Ci0gICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCk7CisgICAgdm9pZCBrZXlN
ZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Y29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29u
c3QgVVJMJiBkZWZhdWx0VVJMKTsKICAgICBib29sIGtleU5lZWRlZChjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGlu
aXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAtNDk5LDcgKzQ5
OSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5ZXI+IG1fcmVsb2FkVGltZXI7CiAg
ICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gbV9wcml2YXRlOwogICAgIE1l
ZGlhUGxheWVyRmFjdG9yeSogbV9jdXJyZW50TWVkaWFFbmdpbmU7Ci0gICAgS1VSTCBtX3VybDsK
KyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY29udGVudE1JTUVUeXBlOwogICAgIFN0cmlu
ZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgIFN0cmluZyBtX2tleVN5c3RlbTsKQEAgLTUyNiw5
ICs1MjYsOSBAQCBwcml2YXRlOgogdHlwZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsKIHR5
cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nPiYg
dHlwZXMpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCk7Cit0eXBlZGVmIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFVSTCYgdXJsKTsKICNlbHNlCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKK3R5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCk7CiAjZW5kaWYKIHR5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7
CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5k
ZXggODFmNWJhMC4uODc0MjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcAppbmRleCBjYWNkZGUzLi5iOTVlOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAKICNlbHNlCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFW
Q0YuaCIKICNlbmRpZgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBv
cgogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtV
UkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MsIGNvbnN0IFVSTCYpCiB7CiAgICAgLy8gT25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBp
ZiB0aGVyZSBpcyBubyBjb2RlY3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5
IHRvIGFzayBpZiBpdCBzdXBwb3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1JTUUgdHlwZSB1bnRp
bCByZGFyOi8vODcyMTcxNSBpcyBmaXhlZC4KQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgQVZG
V3JhcHBlcjo6Y3JlYXRlQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNT
RVJUKCFhdkFzc2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBLVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVS
TFJlZj4gdXJsUmVmID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOwog
CiAgICAgQVZDRlVSTEFzc2V0UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVS
TEFuZE9wdGlvbnMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlm
aWNhdGlvblF1ZXVlKTsKICAgICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0UmVmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmgKaW5kZXggZGM2MThkMS4uODU4YzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBz
dGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJv
b2wgaXNBdmFpbGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgKaW5kZXggYjVkMzk0OS4uYWI0OGQzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUo
TWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwm
KTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYpOwog
I2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZmIwYzc4MC4uNGFiMGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBA
IC0zNyw3ICszNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIklu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlTGVnYWN5QVZGT2JqQy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgogI2ltcG9y
dCAiU29mdExpbmtpbmcuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1
cmwpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVsZHMuZ2V0KCkg
Zm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKICNlbmRpZgogCi0gICAg
TlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgTlNVUkwg
KmNvY29hVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBtX2F2QXNzZXQgPSBh
ZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwgb3B0aW9uczpv
cHRpb25zLmdldCgpXSk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwOTAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcAogICAgIHN1
cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpCitN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNz
LCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHR5cGUp
KQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwpAQCAtOTA1LDcg
KzkwNSw3IEBAIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRnJvbTogPGh0dHA6Ly9kdmNz
LnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNyeXB0ZWQtbWVkaWEv
ZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8vIEluIGFkZGl0aW9u
IHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0aGlzIG1ldGhvZCBt
dXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtMTExNyw3ICsxMTE3LDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0CiAgICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShLVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZBc3NldC5nZXQoKSkp
KTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShVUkwod2tBVkFzc2V0UmVzb2x2ZWRVUkwobV9hdkFzc2V0LmdldCgpKSkp
OwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSk7CiAgICAgcmV0dXJuIHJlc29sdmVk
T3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0KCkpOwogfQpA
QCAtMTMwOSw3ICsxMzA5LDcgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0aW9uIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmUKIAogICAgIFJlZlB0
cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tl
eVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhdKTsKICAgICBS
ZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdEFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGtl
eVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7Ci0gICAg
cGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtleVJlcXVlc3RBcnJh
eS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgS1VSTCgpKTsKKyAgICBw
bGF5ZXIoKS0+a2V5TWVzc2FnZShrZXlTeXN0ZW0sIHNlc3Npb25JRCwga2V5UmVxdWVzdEFycmF5
LT5kYXRhKCksIGtleVJlcXVlc3RBcnJheS0+Ynl0ZUxlbmd0aCgpLCBVUkwoKSk7CiAKICAgICAv
LyBNb3ZlIG93bmVyc2hpcCBvZiB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Rmcm9t
IHRoZSBrZXlJRFRvUmVxdWVzdE1hcCB0byB0aGUgc2Vzc2lvbklEVG9SZXF1ZXN0TWFwOgogICAg
IG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnNldChzZXNzaW9uSUQsIGF2UmVxdWVzdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5k
ZXggMjg3ZWU4MS4uNzU2MjEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dl
YkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBpZiAobV9yZXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0gW1ttX2F2UmVxdWVzdC5nZXQo
KSByZXF1ZXN0XSBVUkxdOworICAgIFVSTCByZXF1ZXN0VVJMID0gW1ttX2F2UmVxdWVzdC5nZXQo
KSByZXF1ZXN0XSBVUkxdOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBEb1NlY3Vy
aXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhZGll
bnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA2YTRjZDcwLi4zOTFmZmQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYWRp
ZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnkuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5j
bHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVycnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHRCbGFj
a0JlcnJ5LmNwcAppbmRleCBlMmYxYzQzLi40YzAzNDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
R3JhcGhpY3NDb250ZXh0QmxhY2tCZXJyeS5jcHAKQEAgLTIxLDEwICsyMSwxMCBAQAogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzg3LDcg
KzM4Nyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKICAg
ICByZXR1cm4gSW50UmVjdChJbnRQb2ludChJTlRfTUlOIC8gMiwgSU5UX01JTiAvIDIpLCBJbnRT
aXplKElOVF9NQVgsIElOVF9NQVgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVS
TEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVk
aWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4
IGU0MWJlNmYuLjk2MDYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4mIHR5cGVzKQogICAg
ICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25z
dCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJiB1cmwpCitNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3Ry
aW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBib29sIGlzUlRTUCA9IHVybC5wcm90b2NvbElzKCJydHNwIik7CiAKQEAgLTE0Miw3ICsx
NDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYg
dXJsKQogICAgIFdURjo6U3RyaW5nIG1vZGlmaWVkVXJsKHVybCk7CiAKICAgICBpZiAobW9kaWZp
ZWRVcmwuc3RhcnRzV2l0aCgibG9jYWw6Ly8iKSkgewotICAgICAgICBLVVJMIGt1cmwgPSBLVVJM
KEtVUkwoKSwgbW9kaWZpZWRVcmwpOworICAgICAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgbW9k
aWZpZWRVcmwpOwogICAgICAgICBrdXJsLnNldFByb3RvY29sKCJmaWxlIik7CiAgICAgICAgIFdU
Rjo6U3RyaW5nIHRlbXBQYXRoKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFu
Y2UoKS0+YXBwbGljYXRpb25Mb2NhbERpcmVjdG9yeSgpLmNfc3RyKCkpOwogICAgICAgICB0ZW1w
UGF0aC5hcHBlbmQoa3VybC5wYXRoKCkpOwpAQCAtMTU3LDggKzE1Nyw4IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiB1cmwpCiAgICAgLy8gYWxyZWFk
eSBkb25lIGEgc2VjdXJpdHkgY2hlY2sgb24gdGhlIGZpbGVzeXN0ZW06IFVSTCBhcyBwYXJ0IG9m
IHRoZQogICAgIC8vIG1lZGlhIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0sIHdlIHNob3Vs
ZCBiZSBPSyBoZXJlLgogICAgIGlmIChtb2RpZmllZFVybC5zdGFydHNXaXRoKCJmaWxlc3lzdGVt
OiIpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCBtb2RpZmllZFVybCk7Ci0g
ICAgICAgIEtVUkwgbWVkaWFVUkw7CisgICAgICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCBtb2Rp
ZmllZFVybCk7CisgICAgICAgIFVSTCBtZWRpYVVSTDsKICAgICAgICAgV1RGOjpTdHJpbmcgZnNQ
YXRoOwogICAgICAgICBGaWxlU3lzdGVtVHlwZSBmc1R5cGU7CiAgICAgICAgIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZTsKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQogCiAgICAgV1RGOjpTdHJpbmcgY29va2ll
UGFpcnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQotICAgICAgICBjb29raWVQYWlycyA9IGNv
b2tpZU1hbmFnZXIoKS5nZXRDb29raWUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFdpdGhI
dHRwT25seUNvb2tpZXMpOworICAgICAgICBjb29raWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5n
ZXRDb29raWUoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgV2l0aEh0dHBPbmx5Q29va2llcyk7
CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9hZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwsIG1fd2Vi
Q29yZVBsYXllci0+dXNlckFnZW50KCksIGNvb2tpZVBhaXJzKTsKIH0KIApAQCAtNzI4LDcgKzcy
OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkJ1ZmZlcmluZyhib29sIGZsYWcpCiAK
IHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgZ2VuZXJhdGVQcm90ZWN0aW9uU3BhY2VGcm9tTU1SQXV0
aENoYWxsZW5nZShjb25zdCBNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAg
IEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwo
KS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1
dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkpOwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsK
IAogICAgIHJldHVybiBQcm90ZWN0aW9uU3BhY2UodXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwKQEAg
LTczOSw3ICs3MzksNyBAQCBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIGdlbmVyYXRlUHJvdGVjdGlv
blNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2UoY29uc3QgTU1SQXV0aAogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlvbk5lZWRlZChNTVJBdXRoQ2hhbGxlbmdlJiBhdXRo
Q2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmco
YXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJp
bmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkpOwogICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03NTUsNyArNzU1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0aGVudGljYXRpb25OZWVkZWQoTU1SQXV0aENoYWxs
ZW5nZSYgYXV0aENoYWxsZW5nZSkKICAgICAgICAgdGhpcywgbV93ZWJDb3JlUGxheWVyLT5tZWRp
YVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xp
ZW50KCkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVz
dWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwm
IHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1
bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIG1faXNBdXRo
ZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFsc2U7CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgUHJvdGVjdGlvbgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50
aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhDaGFsbGVuZ2UpIGNv
bnN0CiB7Ci0gICAgS1VSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBXVEY6OlN0cmluZyhhdXRoQ2hh
bGxlbmdlLnVybCgpLmNfc3RyKCkpKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RG
OjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXll
clByaXZhdGVCbGFja0JlcnJ5LmgKaW5kZXggYjM0NjViYi4uNTQ3YjFkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRp
YUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9y
dGVkVHlwZXMoSGFzaFNldDxXVEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYs
IGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2YXRlZEV2ZW50KGJv
b2wpOwogICAgIHN0YXRpYyB2b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25zdCBXVEY6OlN0cmlu
ZyYpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkNy
ZWF0ZUhvbGVQdW5jaFJlY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0cm95SG9sZVB1bmNo
UmVjdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBL
VVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1
bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2hhbGxlbmdl
UmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGdWxs
c2NyZWVuKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYzdlYTc2
ZC4uODQ5MDc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNzU3LDcgKzc1
Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9r
ZVN0eWxlIHN0cm9rZVN0eWxlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0NGJmMmQzLi5iMDgx
NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3
aWR0aCwgYm9vbAogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1D
b250ZXh0KCksIHRydWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVj
dChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCAxYjdjNTc5Li4wMTA3MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiR1N0cmVhbWVy
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCkBAIC0zMzQs
NyArMzM0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWQoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJL
aXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwoS1VSTCgpLCB1
cmwpOworICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgIFN0cmluZyBjbGVhblVybCh1cmwp
OwogCiAgICAgLy8gQ2xlYW4gb3V0IGV2ZXJ5dGhpbmcgYWZ0ZXIgZmlsZTovLyB1cmwgcGF0aC4K
QEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9h
ZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIEFTU0VSVChtX3BsYXlCaW4pOwogCi0gICAgbV91
cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOworICAgIG1fdXJsID0gVVJMKFVSTCgpLCBjbGVh
blVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgInVyaSIsIGNsZWFuVXJs
LnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgSU5GT19NRURJQV9NRVNTQUdFKCJMb2FkICVz
IiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDI4LDggKzE0MjgsOCBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8v
IEZvdW5kIGEgY2FuZGlkYXRlLiBuZXctbG9jYXRpb24gaXMgbm90IGFsd2F5cyBhbiBhYnNvbHV0
ZSB1cmwKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhl
IGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2Nh
dGlvbiB0byBpdC4KLSAgICAgICAgS1VSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChuZXdM
b2NhdGlvbikgPyBLVVJMKCkgOiBtX3VybDsKLSAgICAgICAgS1VSTCBuZXdVcmwgPSBLVVJMKGJh
c2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3Zh
bGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7CisgICAgICAgIFVSTCBuZXdVcmwgPSBV
UkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogCiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKTsKICAgICAg
ICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKQEAgLTE2NTMsNyAr
MTY1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRTdXBwb3J0ZWRU
eXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWltZVR5cGVDYWNoZSgp
OwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICh0eXBlLmlzTnVsbCgpIHx8IHR5
cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGQ3
ZjZlZDYuLjI1YzljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAK
ICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKLSAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpOworICAgIHN0YXRp
YyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogICAgIGd1aW50
IG1fcmVhZHlUaW1lckhhbmRsZXI7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3dlYmtpdEF1
ZGlvU2luazsKICAgICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVzOwotICAgIEtVUkwgbV91cmw7
CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQaXRjaDsKICAgICBHc3RTdGF0
ZSBtX3JlcXVlc3RlZFN0YXRlOwogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9hdXRvQXVkaW9T
aW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBm
OGM3OTA0Li43OTY0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNT
dGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAgIEFTU0VSVCghcHJpdi0+Y2xpZW50KTsKIAot
ICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHByaXYtPnVyaSk7CisgICAgVVJMIHVybCA9IFVS
TChVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7
CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02ODgsNyArNjg4LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVy
LCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBpZiAoIXVyaSkKICAgICAgICAgcmV0dXJuIFRS
VUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCksIHVyaSk7CisgICAgVVJMIHVybChVUkwoKSwgdXJp
KTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1p
bHkoKSkgewogICAgICAgICBnX3NldF9lcnJvcihlcnJvciwgR1NUX1VSSV9FUlJPUiwgR1NUX1VS
SV9FUlJPUl9CQURfVVJJLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CkBAIC03MzksNyArNzM5
LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBo
YW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlmICghdXJpKQogICAgICAgICByZXR1cm4g
VFJVRTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1
cmkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVz
JyIsIHVyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDcyYjIyNTQuLmYzMGQx
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC03NSw5ICs3NSw5IEBAIHByaXZh
dGU6CiAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBs
YXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2
b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRp
YyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi0gICAgc3RhdGljIE1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIGdl
dFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0KaW5kZXggZjcyMmJkMC4uMGM4NGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbQpAQCAtMzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktV
UkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTUlN
RVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTI2NSw3ICsy
NjUsNyBAQCBOU011dGFibGVEaWN0aW9uYXJ5ICpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y29t
bW9uTW92aWVBdHRyaWJ1dGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3Jl
YXRlUVRNb3ZpZShjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIGtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpOworICAgIFVSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBO
U1VSTCAqY29jb2FVUkwgPSBrVVJMOwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm1vdmllQXR0
cmlidXRlcyA9IGNvbW1vbk1vdmllQXR0cmlidXRlcygpOyAgICAKICAgICBbbW92aWVBdHRyaWJ1
dGVzIHNldFZhbHVlOmNvY29hVVJMIGZvcktleTpRVE1vdmllVVJMQXR0cmlidXRlXTsKQEAgLTE0
NjIsNyArMTQ2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAgICAgY29uY2F0ZW5hdGVI
YXNoU2V0cyhzdXBwb3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2FjaGUoKSk7CiB9CiAKLU1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJM
JikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBVUkwmKQogewogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMg
bm8gY29kZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQg
aWYgaXQgc3VwcG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUgeWV0LgpAQCAtMTQ4
MCw3ICsxNDgwLDcgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKIH0KIAogI2lmIEVOQUJMRShF
TkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi1NZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpleHRlbmRlZFN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlw
ZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0s
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVu
Y3J5dHBlZCBtZWRpYSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0g
aXMgbm9uLU5VTEw6CiAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwgIWtleVN5c3RlbS5p
c0VtcHR5KCkpCkBAIC0xNjMxLDcgKzE2MzEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX3F0TW92aWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVz
b2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwod2tRVE1vdmllUmVzb2x2
ZWRVUkwobV9xdE1vdmllLmdldCgpKSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVz
b2x2ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FUTW92aWVSZXNvbHZl
ZFVSTChtX3F0TW92aWUuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXF1
ZXN0ZWRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJM
KTsKICAgICByZXR1cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVl
c3RlZE9yaWdpbi5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggMTdkYzQxNC4uMWU2
YmVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCA3NWE2ZjNlLi4yYzZlYjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBs
YXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiAmc3VwcG9y
dGVkKQogICAgIH0KIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29uc3QgU3RyaW5nJiBj
b2RlYywgY29uc3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVy
UHJpdmF0ZVF0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiBtaW1lLCBjb25zdCBTdHJpbmcm
IGNvZGVjLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZS5zdGFydHNXaXRoKCJhdWRpby8i
KSAmJiAhbWltZS5zdGFydHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjpJc05vdFN1cHBvcnRlZDsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVF0Ojpjb21taXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICBtX3dlYkNv
cmVQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCi0gICAgS1VSTCBrVXJsKFBh
cnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga1VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7
CiAgICAgY29uc3QgUVVybCByVXJsID0ga1VybDsKICAgICBjb25zdCBRU3RyaW5nIHNjaGVtZSA9
IHJVcmwuc2NoZW1lKCkudG9Mb3dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAppbmRleCA3ZTM4
OGM0Li4xM2U5MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJl
Z2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJp
bmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKSB7
IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKaW5k
ZXggMGIzNTE4NC4uOWRkMjVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZVRhc2tUaW1lci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRVENGRGljdGlvbmFy
eS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCiAjaW5jbHVk
ZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSA8QXNzZXJ0TWFjcm9zLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5l
VHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgpAQCAtMjY2
LDcgKzI2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dDo6c2V0VXBDb29raWVzRm9yUXVpY2tUaW1lKGNvbnN0IFN0CiAgICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5jb29raWVFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgbW92aWVVUkwgPSBLVVJMKEtVUkwoKSwg
dXJsKTsKKyAgICBVUkwgbW92aWVVUkwgPSBVUkwoVVJMKCksIHVybCk7CiAgICAgVmVjdG9yPENv
b2tpZT4gZG9jdW1lbnRDb29raWVzOwogICAgIGlmICghZ2V0UmF3Q29va2llcyhmcmFtZS0+ZG9j
dW1lbnQoKSwgbW92aWVVUkwsIGRvY3VtZW50Q29va2llcykpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwm
KQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICAvLyBvbmx5IHJldHVybiAiSXNTdXBwb3J0
ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBu
byB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFuCiAgICAgLy8gIGV4dGVuZGVkIE1JTUUg
dHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmgKaW5kZXggNjYzMzRmMi4uMzljY2JhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCkBAIC0xMjgsNyArMTI4LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAg
c3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0g
ICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29u
dGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dy
YXBoaWNzQ29udGV4dFdpbkNFLmNwcAppbmRleCA5MTFjM2FkLi42ZTUxMjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRX
aW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3Jh
cGhpY3NDb250ZXh0V2luQ0UuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJM
Rm9yUmVjdChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0
ZVdpbkNFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBs
YXllclByaXZhdGVXaW5DRS5oCmluZGV4IDAwOWYwZDQuLjQyZjY3M2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdp
bkNFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQ
bGF5ZXJQcml2YXRlV2luQ0UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8
TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7
Ci0gICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7Cisg
ICAgICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKICAgICAg
ICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBl
bmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJXaW5DRSI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggNjZh
ZDY2Mi4uZmVhN2YzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Fz
eW5jRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Fz
eW5jRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTYyLDYzICs2Miw2MyBAQCBBc3luY0ZpbGVTeXN0ZW1H
dGs6On5Bc3luY0ZpbGVTeXN0ZW1HdGsoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IFVSTCYg
c291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0
aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29u
c3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IEtVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlUmVjdXJzaXZlbHko
Y29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZW1vdmVSZWN1cnNpdmVseShjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpj
cmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUd0azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmZpbGVFeGlz
dHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxlRXhpc3RzKGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6
ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6ZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUd0azo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpj
cmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRl
U25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlU25h
cHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCmluZGV4IDM5ZjU3
MzcuLmRhYTZlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3lu
Y0ZpbGVTeXN0ZW1HdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNG
aWxlU3lzdGVtR3RrLmgKQEAgLTM0LDE3ICszNCwxNyBAQCBwdWJsaWM6CiAgICAgQXN5bmNGaWxl
U3lzdGVtR3RrKCk7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3RrKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHko
Y29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZp
bGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25z
dCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRp
b25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlv
blBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRo
LCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4
aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCmlu
ZGV4IDBiZDMwNGIuLjE3OTAxMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RGF0YU9iamVjdEd0ay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEYXRhT2JqZWN0R3RrOjpz
ZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICAgICAgaWYgKGxpbmVb
MF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgS1VSTCB1cmwgPSBL
VVJMKEtVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIGxpbmUpOwog
ICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKCFzZXRVUkwpIHsK
ICAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIERh
dGFPYmplY3RHdGs6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogICAg
IH0KIH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGxhYmVsKQordm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV91cmlM
aXN0ID0gdXJsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJB
bGxFeGNlcHRGaWxlbmFtZXMoKQogICAgIG1fdGV4dCA9ICIiOwogICAgIG1fbWFya3VwID0gIiI7
CiAgICAgbV91cmlMaXN0ID0gIiI7Ci0gICAgbV91cmwgPSBLVVJMKCk7CisgICAgbV91cmwgPSBV
UkwoKTsKICAgICBtX2ltYWdlID0gMDsKICAgICBtX3JhbmdlID0gMDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmluZGV4IDUyODFiMWUuLmJjNTVjMmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaApAQCAtMjAs
NyArMjAsNyBAQAogI2RlZmluZSBEYXRhT2JqZWN0R3RrX2gKIAogI2luY2x1ZGUgIkZpbGVMaXN0
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CkBAIC0zNiwxMyArMzYsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7CiAgICAgfQogCi0gICAgY29uc3QgS1VSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmlMaXN0KCkgY29uc3QgeyByZXR1
cm4gbV91cmlMaXN0OyB9CiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcygpIGNv
bnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVzOyB9CiAgICAgR2RrUGl4YnVmKiBpbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KICAgICB2b2lkIHNldFJhbmdlKFBhc3NSZWZQdHI8
UmFuZ2U+IG5ld1JhbmdlKSB7IG1fcmFuZ2UgPSBuZXdSYW5nZTsgfQogICAgIHZvaWQgc2V0SW1h
Z2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBtX2ltYWdlID0gbmV3SW1hZ2U7IH0KLSAgICB2b2lk
IHNldFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRVUkwoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBoYXNUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZSB8fCAhbV90ZXh0LmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzTWFya3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV9tYXJrdXAuaXNFbXB0eSgpOyB9CiAgICAgYm9v
bCBoYXNVUklMaXN0KCkgY29uc3QgeyByZXR1cm4gIW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRmlsZW5hbWVzKCkgY29uc3QgeyBy
ZXR1cm4gIW1fZmlsZW5hbWVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAgdm9pZCBjbGVhclVSSUxpc3QoKSB7IG1fdXJpTGlz
dCA9ICIiOyB9Ci0gICAgdm9pZCBjbGVhclVSTCgpIHsgbV91cmwgPSBLVVJMKCk7IH0KKyAgICB2
b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IFVSTCgpOyB9CiAgICAgdm9pZCBjbGVhckltYWdlKCkg
eyBtX2ltYWdlID0gMDsgfQogCiAgICAgU3RyaW5nIHRleHQoKSBjb25zdDsKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBt
X21hcmt1cDsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV91
cmlMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZW5hbWVzOwogICAgIEdSZWZQdHI8R2Rr
UGl4YnVmPiBtX2ltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0
ay5jcHAKaW5kZXggNzk3Yzc4Yi4uM2Y5ZGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmluZyBEcmFnRGF0YTo6
YXNVUkwoRnJhbWUqLCBGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0
cmluZyoKICAgICBpZiAoIW1fcGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKICAgICBpZiAoZmlsZW5hbWVQb2xpY3kgIT0gQ29udmVydEZpbGVuYW1l
cykgewotICAgICAgICBLVVJMIHVybChLVVJMKCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJsKCkp
OworICAgICAgICBVUkwgdXJsKFVSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsKICAg
ICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKaW5kZXgg
YmE0N2UyYS4uM2NmNmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0Vycm9yc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAKQEAgLTk1LDIxICs5NSwyMSBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3Qg
UHJpbnRDb250ZXh0KiBwcmludENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgZXJyb3JN
ZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3Vt
ZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBSZXNvdXJjZUVy
cm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0
KQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+
ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VF
cnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgp
IDogS1VSTCgpLCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJQ
cmludGVyIG5vdCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdl
VG9QcmludChjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
cmludCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIF8oIklu
dmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExv
YWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJJbnZhbGlkIHBhZ2UgcmFu
Z2UiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhY2E1MTMyLi44OGVlZTc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0zMSw5
ICszMSw5IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUg
IlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIApAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYgcGFzdGVib2FyZFVSTCkKICAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3Rl
Ym9hcmRIZWxwZXIoKS0+d3JpdGVDbGlwYm9hcmRDb250ZW50cyhtX2d0a0NsaXBib2FyZCk7CiB9
CiAKLXN0YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2RlKQorc3RhdGljIFVS
TCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9kZSogbm9kZSkKIHsKICAgICAvLyBGSVhNRTogTGF0ZXIg
dGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgd2l0aCBDaHJvbWl1bSBzb21laG93LiBDaGFuY2Vz
IGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQgaXQuCiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsK
QEAgLTIwMSwxMCArMjAxLDEwIEBAIHN0YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2Rl
KiBub2RlKQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwogICAg
ICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KLSAgICBy
ZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCkuY29t
cGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwor
ICAgIHJldHVybiB1cmxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBub2RlLT5kb2N1bWVudCgp
LmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcp
KTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5v
ZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgQVNTRVJU
KG5vZGUpOwogCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogCiAgICAgbV9k
YXRhT2JqZWN0LT5jbGVhckFsbCgpOwogCi0gICAgS1VSTCB1cmwgPSBnZXRVUkxGb3JJbWFnZU5v
ZGUobm9kZSk7CisgICAgVVJMIHVybCA9IGdldFVSTEZvckltYWdlTm9kZShub2RlKTsKICAgICBp
ZiAoIXVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRVUkwodXJsLCB0
aXRsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3Jh
cnlMaW5rU3R1YnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxp
bmtTdHVicy5jcHAKaW5kZXggZTM0YzFiYi4uYTBiZjg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTI3LDcgKzI3LDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZmxvYXQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQogewog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KaW5kZXggZDExNWQ2MS4uNzBhZjE3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBv
cnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9y
dCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVi
b2FyZFN0cmF0ZWd5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCA5OGNiY2NkLi44NWU5NTlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0K
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb2xvci5o
IgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgog
I2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgpA
QCAtOTksOSArOTksOSBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKICAgICBy
ZXR1cm4gQ29sb3IoKTsKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitVUkwg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewotICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0
dXJuIFVSTCgpOwogfQogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBTdHJp
bmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXgg
MTQ5M2FlNi4uMmUwNWM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0lt
YWdlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJGb250U2VsZWN0b3IuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKLSNpbXBvcnQgIktV
UkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2lt
cG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgiCkBAIC0yNjcsNyAr
MjY3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcs
IE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3AKICAgICAgICAgZHJhd0F0UG9pbnQoc3Ry
aW5nLCB0ZXh0UG9pbnQsIGZvbnQsIHRvcENvbG9yKTsKIH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVu
ZGVyaW5nTW9kZSkKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICBOU1N0cmlu
ZyAqbGFiZWwgPSBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpOwogICAgIE5TVVJMICpjb2NvYVVS
TCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDkyMzc1YzcuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJLVVJMLmgiCi0KLSNp
bXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4K
LSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1L
VVJMOjpLVVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYgKCF1cmwpIHsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdoeSBpcyBp
dCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBDU3RyaW5nIHVybEJ5dGVzOwotICAg
IGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHVybEJ5dGVzKTsK
LSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwotfQotCi1LVVJMOjpvcGVyYXRvciBOU1VSTCAq
KCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMLCBi
ZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmlu
Zy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlhIENG
VVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlQ0ZVUkwo
KS5sZWFrUmVmKCkpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
aWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2Ug
YmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBi
b3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0ZVUkxSZWY+KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSku
Z2V0KCkpOwotICAgIH0KLQotICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOwotICAgIGNvcHlUb0J1
ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7Ci19Ci0KLQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGU3YWQ2YTEuLmYzMWY0MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC00NSw3ICs0NSw3
IEBACiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1w
b3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1wb3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgogI2lt
cG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgIH0KIAog
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoTlNVUkxQYm9hcmRUeXBlKSkpIHsKLSAgICAg
ICAgS1VSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFVS
TCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0
aXRsZSA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFz
dGVib2FyZE5hbWUpOwogICAgICAgICBpZiAoIXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVS
TCh1cmwsIHRpdGxlKSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDQwYjQxZTgu
LjAzODc5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtUGFzdGVib2FyZE1hYy5tbQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIkNvbG9yLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC05NCw3ICs5NCw3IEBAIENvbG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogICAgICAg
ICAgICAgICAgICAgICAoaW50KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSks
IChpbnQpKFtjb2xvciBhbHBoYUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkpOyAgICAKIH0KIAot
S1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1
cmwoKQogewogICAgIHJldHVybiBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJk
LmdldCgpXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHAKaW5kZXggZTU4ZDlhOS4uZGU4YjFiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIK
IAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRL
ZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMpCiAgICAgc3VwcG9ydGVk
S2V5U2l6ZXMuYXBwZW5kKGtleWdlbk1lbnVJdGVtNTEyKCkpOwogfQogCi1TdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
U3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBT
dHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7ICAgCiAgICAgLy8gVGhp
cyBzd2l0Y2ggc3RhdGVtZW50IG11c3QgYWx3YXlzIGJlIHN5bmNlZCB3aXRoIHRoZSBVSSBzdHJp
bmdzIHJldHVybmVkIGJ5IGdldFN1cHBvcnRlZEtleVNpemVzLgogICAgIFVJbnQzMiBrZXlTaXpl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oCmluZGV4IDllOGFkYjQuLjIzYWRiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKQEAgLTMz
LDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQzLDI1
ICs0MywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJUQ0ljZVNlcnZlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFJUQ0ljZVNlcnZlcj4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5n
JiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJUQ0ljZVNlcnZlcj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJpLCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJUQ0ljZVNlcnZlcih1cmksIGNyZWRlbnRpYWwsIHVzZXJuYW1lKSk7CiAg
ICAgfQogICAgIHZpcnR1YWwgflJUQ0ljZVNlcnZlcigpIHsgfQogCi0gICAgY29uc3QgS1VSTCYg
dXJpKCkgeyByZXR1cm4gbV91cmk7IH0KKyAgICBjb25zdCBVUkwmIHVyaSgpIHsgcmV0dXJuIG1f
dXJpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsKCkgeyByZXR1cm4gbV9jcmVkZW50
aWFsOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1c2VybmFtZSgpIHsgcmV0dXJuIG1fdXNlcm5hbWU7
IH0KIAogcHJpdmF0ZToKLSAgICBSVENJY2VTZXJ2ZXIoY29uc3QgS1VSTCYgdXJpLCBjb25zdCBT
dHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCisgICAgUlRDSWNlU2Vy
dmVyKGNvbnN0IFVSTCYgdXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmlu
ZyYgdXNlcm5hbWUpCiAgICAgICAgIDogbV91cmkodXJpKQogICAgICAgICAsIG1fY3JlZGVudGlh
bChjcmVkZW50aWFsKQogICAgICAgICAsIG1fdXNlcm5hbWUodXNlcm5hbWUpCiAgICAgewogICAg
IH0KIAotICAgIEtVUkwgbV91cmk7CisgICAgVVJMIG1fdXJpOwogICAgIFN0cmluZyBtX2NyZWRl
bnRpYWw7CiAgICAgU3RyaW5nIG1fdXNlcm5hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAppbmRleCBkZDQ5NmNhLi5iZjAxNjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcApAQCAtOTQsMTMgKzk0
LDEzIEBAIHZvaWQgQmxvYkRhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25n
IGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoCiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRh
dGFJdGVtKHBhdGgsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsK
IH0KIAotdm9pZCBCbG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9u
ZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCit2b2lkIEJsb2JEYXRhOjphcHBlbmRCbG9iKGNv
bnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewogICAg
IG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVuZ3RoKSk7CiB9CiAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIEJsb2JEYXRhOjphcHBlbmRVUkwoY29uc3Qg
S1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKQordm9pZCBCbG9iRGF0YTo6YXBwZW5kVVJMKGNvbnN0IFVS
TCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbSh1
cmwsIG9mZnNldCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAppbmRleCBmZDk0ZjU5Li5mNjA1
NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCkBAIC0z
Miw3ICszMiw3IEBACiAjZGVmaW5lIEJsb2JEYXRhX2gKIAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTAyLDcgKzEwMiw3IEBAIHN0cnVjdCBCbG9iRGF0YUl0
ZW0gewogICAgIH0KIAogICAgIC8vIENvbnN0cnVjdG9yIGZvciBCbG9iIHR5cGUuCi0gICAgQmxv
YkRhdGFJdGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxl
bmd0aCkKKyAgICBCbG9iRGF0YUl0ZW0oY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQs
IGxvbmcgbG9uZyBsZW5ndGgpCiAgICAgICAgIDogdHlwZShCbG9iKQogICAgICAgICAsIHVybCh1
cmwpCiAgICAgICAgICwgb2Zmc2V0KG9mZnNldCkKQEAgLTExMyw3ICsxMTMsNyBAQCBzdHJ1Y3Qg
QmxvYkRhdGFJdGVtIHsKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAvLyBDb25zdHJ1
Y3RvciBmb3IgVVJMIHR5cGUgKGUuZy4gRmlsZVN5c3RlbSBmaWxlcykuCi0gICAgQmxvYkRhdGFJ
dGVtKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKKyAgICBCbG9iRGF0YUl0ZW0oY29uc3Qg
VVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIDogdHlwZShVUkwpCiAgICAgICAgICwgdXJs
KHVybCkKICAgICAgICAgLCBvZmZzZXQob2Zmc2V0KQpAQCAtMTQyLDcgKzE0Miw3IEBAIHN0cnVj
dCBCbG9iRGF0YUl0ZW0gewogICAgIFN0cmluZyBwYXRoOwogCiAgICAgLy8gRm9yIEJsb2Igb3Ig
VVJMIHR5cGUuCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKIAogICAgIGxvbmcgbG9uZyBv
ZmZzZXQ7CiAgICAgbG9uZyBsb25nIGxlbmd0aDsKQEAgLTE4NCw5ICsxODQsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhcHBlbmREYXRhKFBhc3NSZWZQdHI8UmF3RGF0YT4sIGxvbmcgbG9uZyBvZmZz
ZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUpOwotICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCk7CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYsIGxvbmcg
bG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LSAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBLVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgdm9pZCBh
cHBlbmRVUkwoY29uc3QgVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQmxvYkRhdGFIYW5kbGUo
UGFzc093blB0cjxCbG9iRGF0YT4sIGxvbmcgbG9uZyBzaXplKTsKLSAgICBLVVJMIG1faW50ZXJu
YWxVUkw7CisgICAgVVJMIG1faW50ZXJuYWxVUkw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaApp
bmRleCBlNzhiZTIzLi5kYjFjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5LmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQmxvYkRhdGE7CiBjbGFzcyBCbG9iU3RvcmFnZURhdGE7CiBjbGFzcyBCbG9iUmVn
aXN0cnk7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBCbG9iUmVnaXN0cnkmIGJsb2JSZWdp
c3RyeSgpOwogCkBAIC00NiwxMiArNDYsMTIgQEAgQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnko
KTsKIGNsYXNzIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxv
YiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBzcGVjaWZpZWQgYmxvYiBkYXRhLgotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBQYXNzT3du
UHRyPEJsb2JEYXRhPikgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBhIG5ldyBibG9iIFVS
TCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRoZSBzcGVjaWZpZWQg
c3JjVVJMLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIGNv
bnN0IEtVUkwmIHNyY1VSTCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9i
UmVnaXN0cnlJbXBsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMGJi
NjVhYi4uODNjMTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBCbG9iUmVn
aXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBibG9iU3RvcmFn
ZURhdGEsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCit2
b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgUGFz
c093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CkBAIC0xNjQs
NyArMTY0LDcgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG8KICAgICBtX2Jsb2JzLnNldCh1cmwu
c3RyaW5nKCksIGJsb2JTdG9yYWdlRGF0YSk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6
cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgc3JjVVJMKQordm9p
ZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmVnaXN0
ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTc3LDEzICsxNzcsMTMgQEAg
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBLVVJMJiBzcmNVUkwpCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBzcmMpOwog
fQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX2Jsb2JzLnJlbW92
ZSh1cmwuc3RyaW5nKCkpOwogfQogCi1CbG9iU3RvcmFnZURhdGEqIEJsb2JSZWdpc3RyeUltcGw6
OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitCbG9iU3RvcmFnZURh
dGEqIEJsb2JSZWdpc3RyeUltcGw6OmdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJldHVybiBtX2Jsb2Jz
LmdldCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBiMzRkYzc2Li5lMGMzMmJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAt
MzksNyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBCbG9iUmVn
aXN0cnlJbXBsIDogcHVibGljIEJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
QmxvYlJlZ2lzdHJ5SW1wbCgpOwogCi0gICAgQmxvYlN0b3JhZ2VEYXRhKiBnZXRCbG9iRGF0YUZy
b21VUkwoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIEJsb2JTdG9yYWdlRGF0YSogZ2V0QmxvYkRh
dGFGcm9tVVJMKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhh
bmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqKTsKIApAQCAtNTgsOSArNTgsOSBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSosIGNvbnN0IEJsb2JEYXRhSXRlbUxp
c3QmKTsKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqLCBjb25z
dCBCbG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3du
UHRyPEJsb2JEYXRhPikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgc3JjVVJMKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
Y29uc3QgVVJMJiBzcmNVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVn
aXN0cnlJbXBsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+ID4gbV9ibG9iczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApp
bmRleCBkYjc1ZmJkLi4zNzY5NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAj
aW5jbHVkZSAiRmlsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5kZXggNTg4ZmY1Yi4u
OTU5NTcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
cmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDcmVkZW50
aWFsU3RvcmFnZS5oIgogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3BhY2VIYXNoLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgpAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25T
cGFjZU1hcCYgcGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcCgpCiAgICAgcmV0dXJuIG1h
cDsKIH0KIAotc3RhdGljIFN0cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJMKGNvbnN0IEtVUkwmIHVy
bCkKK3N0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBpZiAodXJsLnBvcnQoKSkKICAgICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjov
LyIgKyB1cmwuaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIodXJsLnBvcnQoKSkgKyAnLyc7
CkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBTdHJpbmcgb3JpZ2luU3RyaW5nRnJvbVVSTChjb25z
dCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbCgpICsgIjovLyIgKyB1cmwuaG9z
dCgpICsgJy8nOwogfQogCi1zdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21V
UkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlG
cm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKIApA
QCAtODcsNyArODcsNyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21V
UkwoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBkaXJlY3RvcnlVUkw7CiB9CiAKLXZvaWQg
Q3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNv
bnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlzUHJveHkoKSB8fCB1cmwucHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpKTsKICAgICBBU1NFUlQocHJvdGVjdGlvblNwYWNlLmlzUHJveHkoKSB8fCB1
cmwuaXNWYWxpZCgpKTsKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIENyZWRlbnRpYWxTdG9yYWdl
OjpyZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiAgICAgcHJv
dGVjdGlvblNwYWNlVG9DcmVkZW50aWFsTWFwKCkucmVtb3ZlKHByb3RlY3Rpb25TcGFjZSk7CiB9
CiAKLXN0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwOjppdGVyYXRvciBmaW5k
RGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgUGF0
aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgZmluZERlZmF1bHRQcm90ZWN0
aW9uU3BhY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHVybC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKQEAgLTE0Myw3
ICsxNDMsNyBAQCBzdGF0aWMgUGF0aFRvRGVmYXVsdFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0
b3IgZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUgogICAgIH0KIH0KIAotYm9vbCBDcmVk
ZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVkZW50aWFsJiBj
cmVkZW50aWFsLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSk7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkpOwpAQCAtMTU1LDcgKzE1
NSw3IEBAIGJvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUNyZWRlbnRp
YWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBLVVJMJiB1cmwpCitDcmVkZW50aWFsIENy
ZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUGF0aFRvRGVmYXVs
dFByb3RlY3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgaXRlciA9IGZpbmREZWZhdWx0UHJvdGVjdGlv
blNwYWNlRm9yVVJMKHVybCk7CiAgICAgaWYgKGl0ZXIgPT0gcGF0aFRvRGVmYXVsdFByb3RlY3Rp
b25TcGFjZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCmluZGV4IDQ5YWY0NTIuLmIzYmQxZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgK
QEAgLTI5LDEzICsyOSwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDcmVkZW50
aWFsOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAog
Y2xhc3MgQ3JlZGVudGlhbFN0b3JhZ2UgewogcHVibGljOgogICAgIC8vIFdlYkNvcmUgc2Vzc2lv
biBjcmVkZW50aWFsIHN0b3JhZ2UuCi0gICAgc3RhdGljIHZvaWQgc2V0KGNvbnN0IENyZWRlbnRp
YWwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZv
aWQgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBV
UkwmKTsKICAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7
CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogCkBAIC00
NCw4ICs0NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgd29yayBmb3IgYXV0
aGVudGljYXRpb24gc2NoZW1lcyB0aGF0IHN1cHBvcnQgc2VuZGluZyBjcmVkZW50aWFscyB3aXRo
b3V0IHdhaXRpbmcgZm9yIGEgcmVxdWVzdC4gRS5nLiwgZm9yIEhUVFAgQmFzaWMgYXV0aGVudGlj
YXRpb24gc2NoZW1lCiAgICAgLy8gYSBjbGllbnQgc2hvdWxkIGFzc3VtZSB0aGF0IGFsbCBwYXRo
cyBhdCBvciBkZWVwZXIgdGhhbiB0aGUgZGVwdGggb2YgYSBrbm93biBwcm90ZWN0ZWQgcmVzb3Vy
Y2Ugc2hhcmUgYXJlIHdpdGhpbiB0aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlLgotICAgIHN0YXRp
YyBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgS1VSTCYpOyAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtub3duIHByb3RlY3Rpb24gc3BhY2UsIHNv
IGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCi0gICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0
KGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNv
bnN0IFVSTCYpOyAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFVSTCBjb3JyZXNwb25kcyB0byBhIGtu
b3duIHByb3RlY3Rpb24gc3BhY2UsIHNvIGNyZWRlbnRpYWxzIGNvdWxkIGJlIHVwZGF0ZWQuCisg
ICAgc3RhdGljIENyZWRlbnRpYWwgZ2V0KGNvbnN0IFVSTCYpOwogCiAgICAgc3RhdGljIHZvaWQg
c2V0UHJpdmF0ZU1vZGUoYm9vbCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA0OWJkY2ExLi5hNTEzMjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTc4LDE4ICsxNzgsMTggQEAg
dm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxv
bmcgbG9uZyBzdGFydCwgbG9uZyBsb24KICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVs
ZW1lbnQoZmlsZW5hbWUsIHN0YXJ0LCBsZW5ndGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwg
c2hvdWxkR2VuZXJhdGVGaWxlKSk7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmFwcGVuZEJsb2IoY29u
c3QgS1VSTCYgYmxvYlVSTCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZEJsb2IoY29uc3QgVVJMJiBi
bG9iVVJMKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChibG9iVVJM
KSk7CiB9CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi12b2lkIEZvcm1EYXRhOjph
cHBlbmRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMKGNvbnN0
IFVSTCYgdXJsKQogewogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudCh1cmws
IDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpKSk7CiB9CiAK
LXZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25n
IHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1l
KQordm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9u
ZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSkKIHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQodXJsLCBzdGFydCwg
bGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKIH0KQEAgLTMyNiwxMyArMzI2LDEz
IEBAIFN0cmluZyBGb3JtRGF0YTo6ZmxhdHRlblRvU3RyaW5nKCkgY29uc3QKIH0KIAogI2lmIEVO
QUJMRShCTE9CKQotc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZvcm1EYXRhKiBmb3Jt
RGF0YSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZv
cm1EYXRhKiBmb3JtRGF0YSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFibG9iUmVnaXN0
cnkoKS5pc0Jsb2JSZWdpc3RyeUltcGwoKSkgewogICAgICAgICBMT0dfRVJST1IoIlRyaWVkIHRv
IHJlc29sdmUgYSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8
QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOworICAgIEJsb2JTdG9yYWdlRGF0YSogYmxvYkRhdGEg
PSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JE
YXRhRnJvbVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsKICAgICBpZiAoIWJsb2JEYXRh
KSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdldCBibG9iIGRhdGEgZnJvbSBhIHJl
Z2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTUyMSw3ICs1MjEsNyBAQCBzdGF0aWMgYm9v
bCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1EYXRhRWxlbWVudCYgZWxlbWVu
dCkKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICAgICAgICAgaWYgKHR5cGUgPT0gRm9ybURh
dGFFbGVtZW50OjplbmNvZGVkVVJMKQotICAgICAgICAgICAgZWxlbWVudC5tX3VybCA9IEtVUkwo
S1VSTCgpLCBmaWxlbmFtZU9yVVJMKTsKKyAgICAgICAgICAgIGVsZW1lbnQubV91cmwgPSBVUkwo
VVJMKCksIGZpbGVuYW1lT3JVUkwpOwogICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgZWxl
bWVudC5tX2ZpbGVuYW1lID0gZmlsZW5hbWVPclVSTDsKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVFbGVtZW50KERlY29kZXImIGRlY29kZXIsIEZvcm1EYXRhRWxlbWVudCYg
ZWxlbWVudCkKICAgICAgICAgU3RyaW5nIGJsb2JVUkxTdHJpbmc7CiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgYmxvYlVSTFN0cmluZyk7
CisgICAgICAgIGVsZW1lbnQubV91cmwgPSBVUkwoVVJMKCksIGJsb2JVUkxTdHJpbmcpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmgKaW5kZXggN2NlNDZmYS4uOTdmNDRjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtMjAsNyArMjAsNyBAQAogI2lmbmRlZiBG
b3JtRGF0YV9oCiAjZGVmaW5lIEZvcm1EYXRhX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzksMTIgKzM5LDEyIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShCTE9CKQogICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgZmlsZVN0YXJ0LCBsb25nIGxvbmcgZmlsZUxlbmd0aCwg
ZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVG
aWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBtX2ZpbGVT
dGFydChmaWxlU3RhcnQpLCBtX2ZpbGVMZW5ndGgoZmlsZUxlbmd0aCksIG1fZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRH
ZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KLSAgICBleHBsaWNpdCBGb3JtRGF0
YUVsZW1lbnQoY29uc3QgS1VSTCYgYmxvYlVSTCkgOiBtX3R5cGUoZW5jb2RlZEJsb2IpLCBtX3Vy
bChibG9iVVJMKSB7IH0KKyAgICBleHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiBi
bG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJsKGJsb2JVUkwpIHsgfQogI2Vsc2UK
ICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCBzaG91bGRH
ZW5lcmF0ZUZpbGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSks
IG1fc2hvdWxkR2VuZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9CiAjZW5kaWYKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IEtVUkwmIHVy
bCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJsKHVybCksIG1fZmls
ZVN0YXJ0KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0
ZUZpbGUoZmFsc2UpIHsgfQorICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIHVybCwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSkgOiBtX3R5cGUoZW5jb2RlZFVSTCksIG1fdXJsKHVybCksIG1fZmlsZVN0YXJ0
KHN0YXJ0KSwgbV9maWxlTGVuZ3RoKGxlbmd0aCksIG1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZShleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUo
ZmFsc2UpIHsgfQogI2VuZGlmCiAKICAgICBlbnVtIFR5cGUgewpAQCAtNjAsNyArNjAsNyBAQCBw
dWJsaWM6CiAgICAgVmVjdG9yPGNoYXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV9maWxlbmFtZTsK
ICNpZiBFTkFCTEUoQkxPQikKLSAgICBLVVJMIG1fdXJsOyAvLyBGb3IgQmxvYiBvciBVUkwuCisg
ICAgVVJMIG1fdXJsOyAvLyBGb3IgQmxvYiBvciBVUkwuCiAgICAgbG9uZyBsb25nIG1fZmlsZVN0
YXJ0OwogICAgIGxvbmcgbG9uZyBtX2ZpbGVMZW5ndGg7CiAgICAgZG91YmxlIG1fZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZTsKQEAgLTEyNCwxMSArMTI0LDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgYm9vbCBzaG91bGRHZW5lcmF0
ZUZpbGUgPSBmYWxzZSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgdm9pZCBhcHBlbmRGaWxlUmFu
Z2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVu
Z3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRl
RmlsZSA9IGZhbHNlKTsKLSAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgS1VSTCYgYmxvYlVSTCk7
CisgICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgdm9pZCBhcHBlbmRVUkwoY29uc3QgS1VSTCYpOwotICAg
IHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgdm9pZCBh
cHBlbmRVUkwoY29uc3QgVVJMJik7CisgICAgdm9pZCBhcHBlbmRVUkxSYW5nZShjb25zdCBVUkwm
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUpOwogI2VuZGlmCiAgICAgY2hhciogZXhwYW5kRGF0YVN0b3JlKHNpemVfdCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1D
b29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29r
aWVKYXIuaAppbmRleCA5MWQ1MWZjLi41ZTEyMmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCkBAIC0zMywxOCArMzMsMTgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gRklYTUU6IFRo
ZXNlIHNob3VsZCBwcm9iYWJseSBiZSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gbWVtYmVyIGZ1bmN0
aW9ucy4KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7
Ci1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7Ci12b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJik7CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpOwordm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJik7Citi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVD
b29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJik7CiB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKIHZvaWQgZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpOwogdm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94
eVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5o
CmluZGV4IDhmNzYxMmUuLjdjMTkxNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3h5U2VydmVyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7
CiAKIC8vIFJlcHJlc2VudHMgYSBzaW5nbGUgcHJveHkgc2VydmVyLgpAQCAtNjgsNyArNjgsNyBA
QCBwcml2YXRlOgogfTsKIAogLy8gUmV0dXJuIGEgdmVjdG9yIG9mIHByb3h5IHNlcnZlcnMgZm9y
IHRoZSBnaXZlbiBVUkwuCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChj
b25zdCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKTsKK1ZlY3RvcjxQcm94eVNlcnZl
cj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0
Kik7CiAKIC8vIENvbnZlcnRzIHRoZSBnaXZlbiB2ZWN0b3Igb2YgcHJveHkgc2VydmVycyB0byBh
IFBBQyBzdHJpbmcsIGFzIGRlc2NyaWJlZCBpbgogLy8gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93
ZWIvMjAwNjA0MjQwMDUwMzcvd3AubmV0c2NhcGUuY29tL2VuZy9tb3ppbGxhLzIuMC9yZWxub3Rl
cy9kZW1vL3Byb3h5LWxpdmUuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCBjZDc2OGYyLi4yOGNmMDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApA
QCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRTbmlm
ZigpIGNvbnN0CiAgICAgcmV0dXJuIGQtPm1fc2hvdWxkQ29udGVudFNuaWZmOwogfQogCi1ib29s
IFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgS1VSTCYgdXJsKQor
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoc2hvdWxkRm9yY2VDb250ZW50U25pZmZp
bmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
LmgKaW5kZXggZTk2YWU3OS4uOTE2Nzg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaApAQCAtODIsNyArODIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRp
YWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIHNob3VsZENv
bnRlbnRTbmlmZigpIGNvbnN0OwotICAgIHN0YXRpYyBib29sIHNob3VsZENvbnRlbnRTbmlmZlVS
TChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmVVJMKGNv
bnN0IFVSTCYpOwogCiAgICAgc3RhdGljIHZvaWQgZm9yY2VDb250ZW50U25pZmZpbmcoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZUNsaWVudC5oCmluZGV4IGNlMTM0ODYuLmMwY2E4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQxLDcg
KzQxLDcgQEAgT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGNsYXNzIENyZWRl
bnRpYWw7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIFJlc291cmNl
RXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlSGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oCmluZGV4IGRlNTJkMDMuLjE1NDY4MTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgLCBtX3NjaGVkdWxlZEZhaWx1cmVUeXBlKFJlc291cmNlSGFuZGxlOjpOb0ZhaWx1cmUpCiAg
ICAgICAgICAgICAsIG1fZmFpbHVyZVRpbWVyKGxvYWRlciwgJlJlc291cmNlSGFuZGxlOjpmaXJl
RmFpbHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gbV9maXJz
dFJlcXVlc3QudXJsKCk7CisgICAgICAgICAgICBjb25zdCBVUkwmIHVybCA9IG1fZmlyc3RSZXF1
ZXN0LnVybCgpOwogICAgICAgICAgICAgbV91c2VyID0gdXJsLnVzZXIoKTsKICAgICAgICAgICAg
IG1fcGFzcyA9IHVybC5wYXNzKCk7CiAgICAgICAgICAgICBtX2ZpcnN0UmVxdWVzdC5yZW1vdmVD
cmVkZW50aWFscygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggMTk1ZjRhZS4uNGVmOWZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCkBAIC0xMTMsMTQgKzExMywxNCBAQCBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6
OmlzTnVsbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdXJsLmlzTnVsbCgpOwogfQogCi1jb25zdCBL
VVJMJiBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25zdCAKK2NvbnN0IFVSTCYgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCiB7CiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7IAogICAgIAogICAgIHJldHVybiBtX3VybDsKIH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpz
ZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7IAogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAK
IApAQCAtMTgyLDE0ICsxODIsMTQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRUaW1l
b3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKICAgICAgICAgbV9wbGF0Zm9ybVJl
cXVlc3RVcGRhdGVkID0gZmFsc2U7CiB9CiAKLWNvbnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdEJh
c2U6OmZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QKK2NvbnN0IFVSTCYgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdAogewogICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdCgpOyAKICAgICAKICAgICByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsK
IH0KIAotdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cykKIHsgCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDAx
ODQ1NzQuLjE0MDU3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRl
ICJGb3JtRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIK
IAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTY0LDggKzY0LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgICAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICAgICAg
dm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwpOwogCiAgICAgICAgIHZv
aWQgcmVtb3ZlQ3JlZGVudGlhbHMoKTsKIApAQCAtNzUsOCArNzUsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwoKSBjb25zdDsgLy8gTWF5IHJl
dHVybiAwIHdoZW4gdXNpbmcgcGxhdGZvcm0gZGVmYXVsdC4KICAgICAgICAgdm9pZCBzZXRUaW1l
b3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCk7CiAgICAgICAgIAotICAgICAgICBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0OwotICAgICAgICB2b2lkIHNl
dEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKTsK
KyAgICAgICAgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0OworICAgICAg
ICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOwogICAgICAgICAKICAgICAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIGh0dHBNZXRob2Qp
OwpAQCAtMTU4LDcgKzE1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZShjb25zdCBLVVJMJiB1cmwsIFJl
c291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSkKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
QmFzZShjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQog
ICAgICAgICAgICAgOiBtX3VybCh1cmwpCiAgICAgICAgICAgICAsIG1fY2FjaGVQb2xpY3kocG9s
aWN5KQogICAgICAgICAgICAgLCBtX3RpbWVvdXRJbnRlcnZhbChzX2RlZmF1bHRUaW1lb3V0SW50
ZXJ2YWwpCkBAIC0xODEsMTEgKzE4MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIFRoZSBSZXNvdXJjZVJlcXVlc3Qgc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9k
IHRvIGNvbXBhcmUgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCiAgICAgICAgIHN0YXRpYyBib29s
IHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAg
VVJMIG1fdXJsOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1fY2FjaGVQ
b2xpY3k7CiAgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsgLy8gMCBpcyBhIG1hZ2lj
IHZhbHVlIGZvciBwbGF0Zm9ybSBkZWZhdWx0IG9uIHBsYXRmb3JtcyB0aGF0IGhhdmUgb25lLgot
ICAgICAgICBLVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CisgICAgICAgIFVSTCBtX2ZpcnN0
UGFydHlGb3JDb29raWVzOwogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBI
VFRQSGVhZGVyTWFwIG1faHR0cEhlYWRlckZpZWxkczsKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKQEAgLTIx
NSwxMSArMjE1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJl
cXVlc3REYXRhQmFzZSgpIHsgfQotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91
cmw7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgbV9jYWNoZVBvbGljeTsK
ICAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOwotICAgICAgICBLVVJMIG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7CisgICAgICAgIFVSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogCiAg
ICAgICAgIFN0cmluZyBtX2h0dHBNZXRob2Q7CiAgICAgICAgIE93blB0cjxDcm9zc1RocmVhZEhU
VFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAppbmRleCBlNGU2
M2JjLi40MDUyMmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNjcsNyArNjcsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKQogewogfQogCi1SZXNvdXJjZVJl
c3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKK1Jlc291cmNlUmVzcG9u
c2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgOiBtX3VybCh1cmwpCiAg
ICAgLCBtX21pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgo
ZXhwZWN0ZWRMZW5ndGgpCkBAIC0xMzgsMTQgKzEzOCwxNCBAQCBib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppc0hUVFAoKSBjb25zdAogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShwcm90
b2NvbCwgImh0dHAiKSAgfHwgZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwcyIpOwog
fQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkgY29uc3QKK2NvbnN0
IFVSTCYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnVybCgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQo
Q29tbW9uRmllbGRzT25seSk7CiAKICAgICByZXR1cm4gbV91cmw7IAogfQogCi12b2lkIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGxhenlJbml0KENvbW1v
bkZpZWxkc09ubHkpOwogICAgIG1faXNOdWxsID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggNDli
ZGM3MC4uMmNmYjUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBS
ZXNvdXJjZVJlc3BvbnNlQmFzZV9oCiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFRp
bWluZy5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU1LDggKzU1LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KICAg
ICBib29sIGlzSFRUUCgpIGNvbnN0OwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYgdXJsKTsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNv
bnN0OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYgdXJsKTsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUoKSBjb25zdDsKICAgICB2b2lkIHNldE1pbWVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHByb3RlY3RlZDoKICAgICB9OwogCiAgICAg
UmVzb3VyY2VSZXNwb25zZUJhc2UoKTsKLSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0
aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KTsKKyAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOwogCiAgICAgdm9pZCBsYXp5SW5p
dChJbml0TGV2ZWwpIGNvbnN0OwogCkBAIC0xNDAsNyArMTQwLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIFRoZSBSZXNvdXJjZVJlc3BvbnNlIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhv
ZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0YXRpYyBib29sIHBs
YXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJs
OwogICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVu
dExlbmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpAQCAtMTg0LDcgKzE4NCw3
IEBAIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhQmFzZSgpIHsgfQotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwog
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVjdGVkQ29udGVudExl
bmd0aDsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAK
aW5kZXggMmMwMjc0ZC4uZTdjMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQgaW50IGJ1ZmZlclNp
emUgPSAxMDAgKiAxMDI0ICogMTAyNDsKIAotU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0
U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlQmFzZTo6U29ja2V0U3RyZWFtSGFuZGxlQmFz
ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAg
OiBtX3VybCh1cmwpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiAgICAgLCBtX3N0YXRlKENvbm5l
Y3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29j
a2V0U3RyZWFtSGFuZGxlQmFzZS5oCmluZGV4IDdkZWQ0ZGMuLmY3OTQ3MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
QmFzZS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWZuZGVmIFNvY2tldFN0cmVhbUhhbmRsZUJhc2Vf
aAogI2RlZmluZSBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKIAotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9TdHJlYW1CdWZmZXIuaD4KIApAQCAt
NTYsMTMgKzU2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDbGll
bnQoU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCopOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IFVSTCYsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7
CiAgICAgICAgIHZpcnR1YWwgaW50IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCkgPSAwOwog
Ci0gICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFVSTCBtX3VybDsKICAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBtX2NsaWVudDsKICAgICAgICAgU3RyZWFtQnVmZmVyPGNoYXIs
IDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICAgICAgU29ja2V0U3RyZWFtU3RhdGUgbV9zdGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oCmluZGV4IGJmZjY2NzYuLjVhOGM0ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
Y2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFz
cyBVUkw7CiAgICAgY2xhc3MgU29ja2V0U3RyZWFtRXJyb3I7CiAgICAgY2xhc3MgU29ja2V0U3Ry
ZWFtSGFuZGxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAKaW5kZXggNjYx
YzBlZi4uNjE1OTFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcApAQCAt
MjQsMjggKzI0LDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBjb29raWVNYW5hZ2VyKCkuc2V0Q29va2llcyh1cmwsIHZhbHVlLCBOb0h0dHBPbmx5Q29va2ll
KTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vICdIdHRwT25seScgY29va2ll
cyBzaG91bGQgbm8gYmUgYWNjZXNzaWJsZSBmcm9tIHNjcmlwdHMsIHNvIHdlIGZpbHRlciB0aGVt
IG91dCBoZXJlLgogICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2llKHVybCwgTm9I
dHRwT25seUNvb2tpZSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkq
LywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2ll
KHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNv
bnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwq
LykKIHsKICAgICByZXR1cm4gIWNvb2tpZU1hbmFnZXIoKS5jb29raWVKYXIoKS5pc0VtcHR5KCk7
CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+
ID4gcmVzdWx0OwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdDb29raWVzKHJlc3VsdCwgdXJs
LCBXaXRoSHR0cE9ubHlDb29raWVzKTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIGNvb2tpZU1hbmFnZXIoKS5y
ZW1vdmVDb29raWVXaXRoTmFtZSh1cmwsIG5hbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRp
YWxCYWNraW5nU3RvcmUuY3BwCmluZGV4IDEwMzU4OTYuLjE2NjFiNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpZiBFTkFC
TEUoQkxBQ0tCRVJSWV9DUkVERU5USUFMX1BFUlNJU1QpCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0
b3JhZ2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZUhhc2guaCIKICNpbmNsdWRl
ICJTUUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1FbmNyeXB0
b3IuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9OZXR3b3JrSm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9OZXR3b3JrSm9iLmNwcAppbmRleCAxNmFlMjRhLi43MGYzYzM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdv
cmtKb2IuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNSU1FU25p
ZmZpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29y
a01hbmFnZXIuaCIKQEAgLTExNyw3ICsxMTcsNyBAQCBOZXR3b3JrSm9iOjp+TmV0d29ya0pvYigp
CiAKIHZvaWQgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVySWQsCiAgICAgY29uc3Qg
U3RyaW5nJiBwYWdlR3JvdXBOYW1lLAotICAgIGNvbnN0IEtVUkwmIHVybCwKKyAgICBjb25zdCBV
UkwmIHVybCwKICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Qm
IHJlcXVlc3QsCiAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlLAogICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrU3RyZWFtRmFjdG9yeSogc3RyZWFtRmFjdG9yeSwK
QEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIE5ldHdvcmtKb2I6OmhhbmRsZU5vdGlmeU11bHRpcGFy
dEhlYWRlclJlY2VpdmVkKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdAogCiB2b2lkIE5ldHdv
cmtKb2I6OmhhbmRsZVNldENvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IEtVUkwgdXJsID0gbV9yZXNwb25zZS51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9yZXNwb25zZS51
cmwoKTsKICAgICBDb29raWVNYW5hZ2VyJiBtYW5hZ2VyID0gY29va2llTWFuYWdlcigpOwogICAg
IGlmICgobWFuYWdlci5jb29raWVQb2xpY3koKSA9PSBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCiAgICAgICAgICYmIChtX2hhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSAhPSB1cmwpCkBAIC02MTgsNyArNjE4LDcg
QEAgYm9vbCBOZXR3b3JrSm9iOjpyZXRyeUFzRlRQRGlyZWN0b3J5KCkKIAogICAgIEFTU0VSVCht
X2hhbmRsZSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBtX2hhbmRsZS0+Zmly
c3RSZXF1ZXN0KCk7Ci0gICAgS1VSTCB1cmwgPSBuZXdSZXF1ZXN0LnVybCgpOworICAgIFVSTCB1
cmwgPSBuZXdSZXF1ZXN0LnVybCgpOwogICAgIHVybC5zZXRQYXRoKHVybC5wYXRoKCkgKyAiLyIp
OwogICAgIG5ld1JlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgbmV3UmVxdWVzdC5zZXRNdXN0SGFu
ZGxlSW50ZXJuYWxseSh0cnVlKTsKQEAgLTY3Miw3ICs2NzIsNyBAQCBib29sIE5ldHdvcmtKb2I6
OmhhbmRsZVJlZGlyZWN0KCkKICAgICBpZiAobG9jYXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEtVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJsKCksIGxvY2F0aW9u
KTsKKyAgICBVUkwgbmV3VVJMKG1fcmVzcG9uc2UudXJsKCksIGxvY2F0aW9uKTsKICAgICBpZiAo
IW5ld1VSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODEzLDcgKzgx
Myw3IEBAIE5ldHdvcmtKb2I6OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtKb2I6OnNlbmRSZXF1
ZXN0V2l0aENyZWRlbnRpYWxzKFByb3RlY3Rpb25TCiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAg
ICAgcmV0dXJuIFNlbmRSZXF1ZXN0Q2FuY2VsbGVkOwogCi0gICAgS1VSTCBuZXdVUkwgPSBtX3Jl
c3BvbnNlLnVybCgpOworICAgIFVSTCBuZXdVUkwgPSBtX3Jlc3BvbnNlLnVybCgpOwogICAgIGlm
ICghbmV3VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIFNlbmRSZXF1ZXN0Q2FuY2VsbGVk
OwogCkBAIC04MzIsMTAgKzgzMiwxMCBAQCBOZXR3b3JrSm9iOjpTZW5kUmVxdWVzdFJlc3VsdCBO
ZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFscyhQcm90ZWN0aW9uUwogICAgICAg
ICAgICAgaG9zdCA9IG1fcmVzcG9uc2UudXJsKCkuaG9zdCgpOwogICAgICAgICAgICAgcG9ydCA9
IG1fcmVzcG9uc2UudXJsKCkucG9ydCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gcHJveHlJbmZvIHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJvdG9jb2wuIEtVUkwg
Y2FuJ3QgcGFyc2UgdGhpcywgc28gc3RpY2sgaHR0cAorICAgICAgICAgICAgLy8gcHJveHlJbmZv
IHJldHVybnMgaG9zdDpwb3J0LCB3aXRob3V0IGEgcHJvdG9jb2wuIFVSTCBjYW4ndCBwYXJzZSB0
aGlzLCBzbyBzdGljayBodHRwCiAgICAgICAgICAgICAvLyBvbiB0aGUgZnJvbnQuCiAgICAgICAg
ICAgICAvLyAoV2UgY291bGQgc3BsaXQgaW50byBob3N0IGFuZCBwb3J0IGJ5IGhhbmQsIGJ1dCB0
aGF0IGdldHMgaGFyZCB0byBwYXJzZSB3aXRoIElQdjYgdXJscywKLSAgICAgICAgICAgIC8vIHNv
IGJldHRlciB0byByZXVzZSBLVVJMJ3MgcGFyc2luZy4pCisgICAgICAgICAgICAvLyBzbyBiZXR0
ZXIgdG8gcmV1c2UgVVJMJ3MgcGFyc2luZy4pCiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHBy
b3h5QWRkcmVzczsKICAgICAgICAgICAgIGlmICh0eXBlID09IFByb3RlY3Rpb25TcGFjZVByb3h5
SFRUUCkKICAgICAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKCJodHRwOi8vIik7CkBA
IC04NDMsNyArODQzLDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1bHQgTmV0d29ya0pv
Yjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblMKICAgICAgICAgICAgICAg
ICBwcm94eUFkZHJlc3MuYXBwZW5kKCJodHRwczovLyIpOwogICAgICAgICAgICAgcHJveHlBZGRy
ZXNzLmFwcGVuZChwcm94eUluZm8uYWRkcmVzcyk7CiAKLSAgICAgICAgICAgIEtVUkwgcHJveHlV
UkwoS1VSTCgpLCBwcm94eUFkZHJlc3MudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBVUkwgcHJv
eHlVUkwoVVJMKCksIHByb3h5QWRkcmVzcy50b1N0cmluZygpKTsKICAgICAgICAgICAgIGhvc3Qg
PSBwcm94eVVSTC5ob3N0KCk7CiAgICAgICAgICAgICBwb3J0ID0gcHJveHlVUkwucG9ydCgpOwog
ICAgICAgICB9CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCB2b2lkIE5ldHdvcmtKb2I6OmZpcmVEZWxl
dGVKb2JUaW1lcihUaW1lcjxOZXR3b3JrSm9iPiopCiAgICAgTmV0d29ya01hbmFnZXI6Omluc3Rh
bmNlKCktPmRlbGV0ZUpvYih0aGlzKTsKIH0KIAotdm9pZCBOZXR3b3JrSm9iOjpub3RpZnlDaGFs
bGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBOZXR3b3JrSm9iOjpub3RpZnlDaGFsbGVuZ2VS
ZXN1bHQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
YWNlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCByZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCiB7CiAgICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkpOwogICAgIEFTU0VS
VCh1cmwgPT0gbV9yZXNwb25zZS51cmwoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaAppbmRleCAzZWNjYjFhLi5m
YTM0ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvTmV0d29ya0pvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShpbnQgcGxh
eWVySWQsCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwKLSAgICAgICAgY29u
c3QgS1VSTCYsCisgICAgICAgIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYsCiAgICAgICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+LAogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1N0cmVhbUZhY3Rv
cnkqLApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc3RhdHVzKCkg
Y29uc3QgeyByZXR1cm4gbV9leHRlbmRlZFN0YXR1c0NvZGU7IH0KICAgICB2aXJ0dWFsIGNvbnN0
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbWltZVR5cGUoKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50
aWFsJik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwm
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwg
Y29uc3QgQ3JlZGVudGlhbCYpOwogCiAgICAgLy8gSW1wbGVtZW50YXRpb24gb2YgRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyIHB1cmUgdmlydHVhbHMuCiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGVz
dHJveWVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcAppbmRleCA5MjMxNGYwLi5lYWZkYzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAKQEAgLTE0MiwxMiArMTQyLDEyIEBAIGludCBO
ZXR3b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBTdHJpbmcmIHBhZ2VH
cm91cE5hbWUsIFBhc3NSZWZQCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBSZXNvdXJjZUhhbmRsZSBk
b2Vzbid0IGdvIG91dCBvZiBzY29wZSB3aGlsZSBjYWxsaW5nIGNhbGxiYWNrcy4KICAgICBSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IGd1YXJkSm9iKGpvYik7CiAKLSAgICBLVVJMIHVybCA9IHJlcXVl
c3QudXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKICAgICAvLyBPbmx5IGxv
YWQgdGhlIGluaXRpYWwgdXJsIG9uY2UuCiAgICAgYm9vbCBpc0luaXRpYWwgPSAodXJsID09IG1f
aW5pdGlhbFVSTCk7CiAgICAgaWYgKGlzSW5pdGlhbCkKLSAgICAgICAgbV9pbml0aWFsVVJMID0g
S1VSTCgpOworICAgICAgICBtX2luaXRpYWxVUkwgPSBVUkwoKTsKIAogICAgIC8vIEFsd2F5cyBy
ZXJlYWQgY29va2llcyBvbiBhIHJlZGlyZWN0CiAgICAgaWYgKHJlZGlyZWN0Q291bnQpCkBAIC0x
NTYsOCArMTU2LDggQEAgaW50IE5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYihpbnQgcGxheWVySWQs
IGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwgUGFzc1JlZlAKICAgICBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TmV0d29ya1JlcXVlc3QgcGxhdGZvcm1SZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5p
dGlhbGl6ZVBsYXRmb3JtUmVxdWVzdChwbGF0Zm9ybVJlcXVlc3QsIGZyYW1lLT5sb2FkZXIoKSAm
JiBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpICYmIHN0YXRpY19jYXN0PEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeSo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT5jb29raWVzRW5hYmxl
ZCgpLCBpc0luaXRpYWwsIHJlcmVhZENvb2tpZXMpOwogCi0gICAgLy8gR1VSTCBhbmQgS1VSTCBj
b25zaWRlciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBodHRwOi8vIGlzIHBh
cnNlZCBhcwotICAgIC8vIGh0dHA6LyBieSBLVVJMIGFuZCBjb25zaWRlcmVkIHZhbGlkLCB3aGls
ZSBHVVJMIGNvbnNpZGVycyBpdCBpbnZhbGlkLgorICAgIC8vIEdVUkwgYW5kIFVSTCBjb25zaWRl
ciB2YWxpZCBVUkxzIGRpZmZlcmVudGx5LCBmb3IgZXhhbXBsZSBodHRwOi8vIGlzIHBhcnNlZCBh
cworICAgIC8vIGh0dHA6LyBieSBVUkwgYW5kIGNvbnNpZGVyZWQgdmFsaWQsIHdoaWxlIEdVUkwg
Y29uc2lkZXJzIGl0IGludmFsaWQuCiAgICAgaWYgKCFwbGF0Zm9ybVJlcXVlc3QudXJsKCkuaXNf
dmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGaWx0ZXJTdHJl
YW06OlN0YXR1c0Vycm9ySW52YWxpZFVybDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaAppbmRleCAx
ZDgzM2RhLi4yODZjYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaApAQCAtMTksNyArMTksNyBA
QAogI2lmbmRlZiBOZXR3b3JrTWFuYWdlcl9oCiAjZGVmaW5lIE5ldHdvcmtNYW5hZ2VyX2gKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2luZ2xldG9uLmg+CkBAIC00
Myw4ICs0Myw4IEBAIHZvaWQgcHJvdGVjdGlvblNwYWNlVG9QbGF0Zm9ybUF1dGgoY29uc3QgUHJv
dGVjdGlvblNwYWNlJiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06CiBjbGFzcyBOZXR3b3JrTWFuYWdl
ciA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VGhyZWFkVW5zYWZlU2luZ2xldG9uPE5l
dHdvcmtNYW5hZ2VyPiB7CiAgICAgU0lOR0xFVE9OX0RFRklOSVRJT05fVEhSRUFEVU5TQUZFKE5l
dHdvcmtNYW5hZ2VyKQogcHVibGljOgotICAgIHZvaWQgc2V0SW5pdGlhbFVSTChjb25zdCBLVVJM
JiB1cmwpIHsgbV9pbml0aWFsVVJMID0gdXJsOyB9Ci0gICAgS1VSTCBpbml0aWFsVVJMKCkgeyBy
ZXR1cm4gbV9pbml0aWFsVVJMOyB9CisgICAgdm9pZCBzZXRJbml0aWFsVVJMKGNvbnN0IFVSTCYg
dXJsKSB7IG1faW5pdGlhbFVSTCA9IHVybDsgfQorICAgIFVSTCBpbml0aWFsVVJMKCkgeyByZXR1
cm4gbV9pbml0aWFsVVJMOyB9CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgUGFzc1Jl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gam9iLCBGcmFtZSosIGJvb2wgZGVmZXJzTG9hZGluZyk7CiAg
ICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
am9iLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZSosIGJvb2wgZGVmZXJzTG9hZGluZyk7
CiAgICAgYm9vbCBzdG9wSm9iKFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+KTsKQEAgLTYwLDcg
KzYwLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgc3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBT
dHJpbmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1N0cmVhbUZhY3Rv
cnkqLCBGcmFtZSosIGludCBkZWZlckxvYWRpbmdDb3VudCA9IDAsIGludCByZWRpcmVjdENvdW50
ID0gMCwgYm9vbCByZXJlYWRDb29raWVzID0gZmFsc2UpOwogCiAgICAgVmVjdG9yPE5ldHdvcmtK
b2IqPiBtX2pvYnM7Ci0gICAgS1VSTCBtX2luaXRpYWxVUkw7CisgICAgVVJMIG1faW5pdGlhbFVS
TDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Byb3h5U2VydmVy
QmxhY2tCZXJyeS5jcHAKaW5kZXggMzNiMjA2Mi4uYTcxYjkyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Byb3h5U2VydmVyQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1By
b3h5U2VydmVyQmxhY2tCZXJyeS5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25z
dCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBw
cm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFZlY3RvcjxQcm94eVNlcnZlcj4o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MmFhMWQ4Li5iZDEzYjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5
L1Jlc291cmNlUmVxdWVzdC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgVGFy
Z2V0SXNVbnNwZWNpZmllZCwKICAgICB9OwogICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCkKLSAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAgICAgICwgbV9tdXN0
SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93bmxvYWQoZmFsc2Up
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQogICAgICAgICAsIG1f
bXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNl
UHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGlj
eSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIHBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAg
ICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAg
LCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFsc2UpCiAgICAgICAgICwgbV9tdXN0SGFuZGxlSW50ZXJu
YWxseShmYWxzZSkKICAgICAgICAgLCBtX2ZvcmNlRG93bmxvYWQoZmFsc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXNw
b25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291
cmNlUmVzcG9uc2UuaAppbmRleCA0YzFhZDY5Li5jYmYxN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXNwb25zZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJl
c3BvbnNlLmgKQEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
bG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAg
ICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1faXNNdWx0aXBhcnRQ
YXlsb2FkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA4
MGVjNDFiLi5jODIyZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC00OCw3
ICs0OCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVi
bGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGaWx0ZXJTdHJlYW0sIHB1YmxpYyBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJl
YW1IYW5kbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNvY2tldFN0cmVhbUhhbmRsZShncm91cE5hbWUsIHVybCwgY2xpZW50KSk7IH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGdy
b3VwTmFtZSwgY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKGdyb3VwTmFtZSwgdXJs
LCBjbGllbnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CiAKQEAg
LTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3Nl
KCk7CiAKIHByaXZhdGU6Ci0gICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3Jv
dXBOYW1lLCBjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgU29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBVUkwmLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgIE93blB0cjxCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RmlsdGVyU3RyZWFtPiBtX3NvY2tldFN0cmVhbTsKICAgICBpbnQgbV9zdGF0dXM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0
U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAKaW5kZXggYjFh
NGRlYi4uY2M5NTE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGVC
bGFja0JlcnJ5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNrQmVycnkuaCIKQEAgLTQ3LDcgKzQ3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVw
IG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFy
c2VyLmNwcAppbmRleCA1NWNlM2MzLi4yNDJjOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBh
cnNlci5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgUlNTQXRvbVBhcnNlcjo6UlNTQXRvbVBhcnNlcigp
CiAKIGJvb2wgUlNTQXRvbVBhcnNlcjo6cGFyc2VCdWZmZXIoY29uc3QgY2hhciogYnVmZmVyLCBp
bnQgbGVuZ3RoLCBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIGVuY29kaW5nKQogewotICAg
IG1fdXJsID0gS1VSTChibGFua1VSTCgpLCB1cmwpOworICAgIG1fdXJsID0gVVJMKGJsYW5rVVJM
KCksIHVybCk7CiAgICAgcmV0dXJuIHBhcnNlWG1sRG9jKHhtbFJlYWRNZW1vcnkoYnVmZmVyLCBs
ZW5ndGgsIHVybCwgZW5jb2RpbmcsIFhNTF9QQVJTRV9OT0JMQU5LUyB8IFhNTF9QQVJTRV9OT05F
VCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCmluZGV4IDg2NWY1MGYuLmM0ZDc5
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9yc3MvUlNTQXRvbVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oCkBAIC0xOSw3ICsxOSw3IEBACiAjaWZu
ZGVmIFJTU0F0b21QYXJzZXJfaAogI2RlZmluZSBSU1NBdG9tUGFyc2VyX2gKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSU1NQYXJzZXJCYXNlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgcGFyc2VDb250ZW50KGNvbnN0IFN0cmluZyYgYmFzZSwgeG1sTm9kZSopOwogICAgIFN0cmlu
ZyBwYXJzZUF1dGhvcih4bWxOb2RlKik7CiAgICAgU3RyaW5nIHBhcnNlQ2F0ZWdvcnkoeG1sTm9k
ZSopOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1MGY2OThiLi5mMzVjMTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcApA
QCAtMjksNyArMjksNyBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAKICNpbmNsdWRlICJDb29raWUu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBmaWx0ZXJDb29raWVzKENGQXJyYXlSZWYgdW5maWx0ZXJlZENv
b2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdl
IHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTog
PSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYQogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVzKHNlc3Np
b24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tpZXNDRi5nZXQoKSku
Z2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdldCgpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGID0gdXJsLmNyZWF0ZUNGVVJM
KCk7CiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVQogICAgIHJl
dHVybiAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNf
Y29va2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1
cmxDRiA9IHVybC5jcmVhdGVDRlVSTCgpOwogCkBAIC0xMzcsMTMgKzEzNywxMyBAQCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1ib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGlj
eShzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiAgICAgcmV0dXJuIHBvbGljeSA9PSBD
RkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4g
fHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7CiB9CiAK
LWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKIApAQCAtMTc0LDcgKzE3NCw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApp
bmRleCAxYmFmNTgxLi4wNzVhYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkROUy5o
IgogI2luY2x1ZGUgIkROU1Jlc29sdmVRdWV1ZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTUsOCArNTUsOCBAQCBib29sIERO
U1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1Qcm94eUlzRW5hYmxlZEluU3lzdGVtUHJlZmVyZW5jZXMo
KQogICAgIGlmICghcHJveHlTZXR0aW5ncykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gaHR0cHNDRlVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNv
bS8iKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0g
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVDRlVSTCgp
OworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cHNDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CiAKICAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gaHR0cFByb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0NvcHlQcm94
aWVzRm9yVVJMKGh0dHBDRlVSTC5nZXQoKSwgcHJveHlTZXR0aW5ncy5nZXQoKSkpOwogICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBodHRwc1Byb3h5QXJyYXkgPSBhZG9wdENGKENGTmV0d29ya0Nv
cHlQcm94aWVzRm9yVVJMKGh0dHBzQ0ZVUkwuZ2V0KCksIHByb3h5U2V0dGluZ3MuZ2V0KCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2
ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2Vy
dmVyQ0ZOZXQuY3BwCmluZGV4IDEyZjNiMTEuLjcxMTE4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Byb3h5U2Vy
dmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYgcHIKICAg
ICB9CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChWZWN0b3I8UHJveHlT
ZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyB2b2lkIGFkZFBy
b3h5U2VydmVyc0ZvclVSTChWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHByb3h5U2V0dGlu
Z3MgPSBhZG9wdENGKENGTmV0d29ya0NvcHlTeXN0ZW1Qcm94eVNldHRpbmdzKCkpOwogICAgIGlm
ICghcHJveHlTZXR0aW5ncykKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgdm9pZCBhZGRQcm94
eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBjb25zdCBL
VVJMJgogICAgIHByb2Nlc3NQcm94eVNlcnZlcnMocHJveHlTZXJ2ZXJzLCBwcm94aWVzRm9yVVJM
LmdldCgpLCBjZlVSTC5nZXQoKSk7CiB9CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2
ZXJzRm9yVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVj
dG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2Vy
dmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCBhMmE2ZmQ3Li5hZTFjMWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGRXJy
b3IuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZOZXR3b3JrRXJyb3JzLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggNzFhYWYxYTguLjI2ZTcz
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlLCBib29sCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9w
YXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkgewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBh
c3NlZCBpbiBVUkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdh
dGUgY2FsbCB3b24ndCBiZSBtYWRlLgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhm
aXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmly
c3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihk
LT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3Mp
OwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAg
LTQ3OSw3ICs0NzksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogCiB2b2lkIFJl
c291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGNvbnN0IEtV
UkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVy
bCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBh
c3MoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBA
IC01NDIsNyArNTQyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICBpZiAoIWQtPm1f
dXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlh
bENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRp
YWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3Jl
ID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFs
U3RvcmFnZTo6c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UoKSwgdXJsVG9TdG9yZSk7CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UKICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNl
cigpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwog
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9w
dENGKGNyZWF0ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJs
VG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1
cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOyAgICAgIAogICAg
ICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UoKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MzQ5Y2U4Li42Y2YyNmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0LmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VS
TCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSAKICAgICAg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAogICAgICAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICB7CiAgICAg
ICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewog
ICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBlMGE1ZGQ0Li4xM2E1ODExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
bG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAg
ICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1faW5pdExldmVsKENv
bW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgICAgICAsIG1fcGxhdGZvcm1SZXNwb25zZUlzVXBU
b0RhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCAyNTRiMDM0Li45OWJiZTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UsIHB1
YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVh
bUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwg
Y2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC01
Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3Nl
KCk7CiAKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGNyZWF0ZVN0cmVhbXMoKTsKICAgICB2b2lk
IHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJveHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAKaW5kZXggOTE0YTU3NTUuLmZjMmQyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdS
ZWYgX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQq
IGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiAgICAg
LCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25v
d24pCkBAIC02NSw3ICs2NSw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFu
ZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiAKICAgICBBU1NF
UlQodXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpKTsKIAotICAg
IEtVUkwgaHR0cHNVUkwoS1VSTCgpLCAiaHR0cHM6Ly8iICsgbV91cmwuaG9zdCgpKTsKKyAgICBV
UkwgaHR0cHNVUkwoVVJMKCksICJodHRwczovLyIgKyBtX3VybC5ob3N0KCkpOwogICAgIG1faHR0
cHNVUkwgPSBodHRwc1VSTC5jcmVhdGVDRlVSTCgpOwogCiAgICAgY3JlYXRlU3RyZWFtcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckN1cmwuY3BwCmluZGV4IDhkMTgxZjMuLjljZDhhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTE4LDcg
KzE4LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaW5jbHVkZSAiQ29v
a2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlTWFuYWdlci5oIgogCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CkBAIC0x
MzUsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgYWRkTWF0Y2hpbmdDdXJsQ29va2llKGNvbnN0IGNo
YXIqIGNvb2tpZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnMKIAogfQogCi1zdGF0aWMgU3Ry
aW5nIGdldE5ldHNjYXBlQ29va2llRm9ybWF0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKK3N0YXRpYyBTdHJpbmcgZ2V0TmV0c2NhcGVDb29raWVGb3JtYXQoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gQ29uc3RydWN0cyBhIGNvb2tp
ZSBzdHJpbmcgaW4gTmV0c2NhcGUgQ29va2llIGZpbGUgZm9ybWF0LgogCkBAIC0yMTksNyArMjE5
LDcgQEAgc3RhdGljIFN0cmluZyBnZXROZXRzY2FwZUNvb2tpZUZvcm1hdChjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIGNvb2tpZVN0ci50b1N0cmluZygp
OwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIENVUkwq
IGN1cmwgPSBjdXJsX2Vhc3lfaW5pdCgpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXIKICAgICBjdXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGh0dHBvbmx5KQorc3RhdGljIFN0cmlu
ZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHVybCwgYm9vbCBodHRwb25seSkKIHsKICAgICBTdHJpbmcgY29va2ll
czsKICAgICBDVVJMKiBjdXJsID0gY3VybF9lYXN5X2luaXQoKTsKQEAgLTI4NCwyOSArMjg0LDI5
IEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLVN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNlKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKTsKIH0K
IAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4g
dHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cAppbmRleCBhZGMwM2ZkLi5mYjIwOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBA
IEN1cmxEb3dubG9hZDo6fkN1cmxEb3dubG9hZCgpCiAgICAgbW92ZUZpbGVUb0Rlc3RpbmF0aW9u
KCk7CiB9CiAKLXZvaWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiBs
aXN0ZW5lciwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERv
d25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWxp
c3RlbmVyKQogICAgICAgICByZXR1cm47CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBDdXJsRG93
bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IFIKIAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAotICAgIEtV
UkwgdXJsKFBhcnNlZFVSTFN0cmluZywgcmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChQYXJz
ZWRVUkxTdHJpbmcsIHJlcXVlc3QudXJsKCkpOwogCiAgICAgaW5pdChsaXN0ZW5lciwgdXJsKTsK
IApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVy
KGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAgICBpZiAoaHR0cENvZGUgPj0gMjAwICYmIGh0
dHBDb2RlIDwgMzAwKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwgPSAwOwogICAgICAg
ICAgICAgZXJyID0gY3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxlLCBDVVJMSU5GT19FRkZF
Q1RJVkVfVVJMLCAmdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHVybCkpOwogCiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVU
eXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoIkNvbnRlbnQtVHlwZSIpKSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNv
ZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKCJDb250ZW50LVR5cGUiKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGY3NWFjOGYuLmQ5MmI0M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIEN1cmxEb3dubG9hZCgpOwogICAg
IH5DdXJsRG93bmxvYWQoKTsKIAotICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lcios
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGluaXQoQ3VybERvd25sb2FkTGlzdGVu
ZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGluaXQoQ3VybERvd25sb2FkTGlz
dGVuZXIqLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKaW5k
ZXggMjEyNzY4YS4uMTE3MzVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKQEAgLTI2LDEyICsyNiwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2
ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8
UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3Jr
aW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAgICByZXR1cm4gVmVj
dG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA3ZjM0ZGIyLi5j
OTE4ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlCiAKICAgICBpZiAoc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Uo
KSkgewogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0dHBTdGF0dXND
b2RlKCkgPT0gNDAxKSB7Ci0gICAgICAgICAgICBLVVJMIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2Uu
ZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJsVG9TdG9yZSA9IGNo
YWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKICAgICAgICAgICAgIENyZWRlbnRpYWxT
dG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCB1cmxU
b1N0b3JlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKaW5k
ZXggYTBmMmEyNC4uN2RkNWI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAKQEAgLTIw
Niw3ICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVMb2NhbFJlY2VpdmVSZXNwb25zZSAoQ1VS
TCogaGFuZGxlLCBSZXNvdXJjZUhhbmRsZSogam9iLCBSZXNvdQogICAgICBjb25zdCBjaGFyKiBo
ZHI7CiAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFzeV9nZXRpbmZvKGhhbmRsZSwgQ1VSTElO
Rk9fRUZGRUNUSVZFX1VSTCwgJmhkcik7CiAgICAgIEFTU0VSVF9VTlVTRUQoZXJyLCBDVVJMRV9P
SyA9PSBlcnIpOwotICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgaGRyKSk7CisgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcs
IGhkcikpOwogICAgICBpZiAoZC0+Y2xpZW50KCkpCiAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGpvYiwgZC0+bV9yZXNwb25zZSk7CiAgICAgIGQtPm1fcmVzcG9uc2Uu
c2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgYm9vbCBn
ZXRQcm90ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIFByb3RlYwogICAgIGlmIChlcnIgIT0gQ1VSTEVfT0spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEtVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIGt1cmwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogCiAgICAgU3RyaW5nIGhvc3QgPSBrdXJsLmhvc3QoKTsK
ICAgICBTdHJpbmcgcHJvdG9jb2wgPSBrdXJsLnByb3RvY29sKCk7CkBAIC0zOTMsNyArMzkzLDcg
QEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBz
aXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICAgICAgY29uc3QgY2hhciogaGRyOwogICAg
ICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsK
LSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGhkcikp
OworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBoZHIp
KTsKIAogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBDb2RlKTsK
ICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVR5cGUiKSkubG93
ZXIoKSk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhj
aGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAgICAgICAg
IGlmIChpc0h0dHBSZWRpcmVjdChodHRwQ29kZSkpIHsKICAgICAgICAgICAgIFN0cmluZyBsb2Nh
dGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJsb2NhdGlvbiIpOwogICAgICAg
ICAgICAgaWYgKCFsb2NhdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIG5l
d1VSTCA9IEtVUkwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbG9jYXRpb24pOworICAgICAg
ICAgICAgICAgIFVSTCBuZXdVUkwgPSBVUkwoam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbG9j
YXRpb24pOwogCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlZGlyZWN0ZWRSZXF1
ZXN0ID0gam9iLT5maXJzdFJlcXVlc3QoKTsKICAgICAgICAgICAgICAgICByZWRpcmVjdGVkUmVx
dWVzdC5zZXRVUkwobmV3VVJMKTsKQEAgLTc4Niw3ICs3ODYsNyBAQCBib29sIFJlc291cmNlSGFu
ZGxlTWFuYWdlcjo6c3RhcnRTY2hlZHVsZWRKb2JzKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1h
bmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKLSAg
ICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOworICAgIFVSTCBrdXJsID0g
am9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAogICAgIGlmIChrdXJsLnByb3RvY29sSXNEYXRh
KCkpIHsKICAgICAgICAgaGFuZGxlRGF0YVVSTChqb2IpOwpAQCAtODE1LDcgKzgxNSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRjaFN5bmNocm9ub3VzSm9iKFJlc291cmNl
SGFuZGxlKiBqb2IpCiAKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydEpvYihSZXNv
dXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3VybCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOwogCiAgICAg
aWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBoYW5kbGVEYXRhVVJMKGpvYik7
CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmFwcGx5QXV0
aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwKIHZvaWQgUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGludCBhbGxvd2VkUHJvdG9jb2xzID0gQ1VSTFBST1RPX0ZJTEUg
fCBDVVJMUFJPVE9fRlRQIHwgQ1VSTFBST1RPX0ZUUFMgfCBDVVJMUFJPVE9fSFRUUCB8IENVUkxQ
Uk9UT19IVFRQUzsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOwor
ICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAogICAgIC8vIFJlbW92
ZSBhbnkgZnJhZ21lbnQgcGFydCwgb3RoZXJ3aXNlIGN1cmwgd2lsbCBzZW5kIGl0IGFzIHBhcnQg
b2YgdGhlIHJlcXVlc3QuCiAgICAga3VybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
cXVlc3QuaAppbmRleCA5MTQ3MmUwLi5hNzVhNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zNiwyMyAr
MzYsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6
IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQorICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJh
c2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
dXJsLCBwb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZl
cnJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
KyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDQ5ODVl
YjMuLmFlMDliODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmlu
ZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNvdXJj
ZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxv
bmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1p
bWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpLAogICAg
ICAgICAgIG1fcmVzcG9uc2VGaXJlZChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5k
ZXggNjQxMzllNS4uYTgyMzE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNDUsNyArNDUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBw
dWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2Nr
ZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxl
KHVybCwgY2xpZW50KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFt
SGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
Y2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xp
ZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKIApAQCAt
NTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNsb3NlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2Nr
ZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAK
ICAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJv
eHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKaW5kZXggODkxZTk2ZS4uNzlhZGMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVDdXJsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1I
YW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkK
K1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRs
ZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5k
bGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQppbmRleCBiYzIyMzc1
Li42NTM3NDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJCbG9ja0V4Y2Vw
dGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgot
I2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIApAQCAtNjEs
NyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJh
eSAqdW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAot
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTcyLDcgKzcy
LDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1UKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTgz
LDcgKzgzLDcgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAg
cmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBk
ZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggODMzMTViMC4uY2VmNmNkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgi
CiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCAwOTQwMGExLi5l
NzNjNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rpb24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNl
Q3JlZGVudGlhbAogewogICAgIC8vIENyZWRlbnRpYWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFz
c2VkIGluIFVSTCwgdGhlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOiBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJlIG1hZGUuCiAgICAgaWYgKCghZC0+bV91c2VyLmlz
RW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50
aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlh
bHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0
VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5t
X3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxz
KTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICgh
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5o
dHRwUmVmZXJyZXIoKSwgImh0dHBzIikgJiYgZC0+bV9jb250ZXh0LT5zaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkpCiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVm
ZXJyZXIoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29u
c3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7
CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0g
cmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBSZXNvdXJjZUhh
bmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UKICAgICAgICAgLy8gdG8gaWdub3JlIGl0IGZvciBhIHBhcnRpY3VsYXIgcmVxdWVz
dCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0b2dldGhlcikuCiAgICAgICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS82ODY3NTk4PiBnYWxsZXJ5Lm1lLmNvbSBpcyB0ZW1wb3JhcmlseSB3aGl0ZWxpc3Rl
ZCwgc28gdGhhdCBRdWlja1RpbWUgcGx1Zy1pbiBjb3VsZCBzZWUgdGhlIGNyZWRlbnRpYWxzLgog
ICAgICAgICBDcmVkZW50aWFsIHdlYkNyZWRlbnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBl
cnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVy
bFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0
YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZh
aWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdl
YkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3VycmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0aW9uU3Bh
Y2VdKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IDU1YWVhYzIuLjljMjQ2NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAjaW5jbHVkZSAiQ29va2llSmFyUXQuaCIKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAjaW5jbHVk
ZSAiVGhpcmRQYXJ0eUNvb2tpZXNRdC5oIgpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9
IDA7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0g
c2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFn
ZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYg
KCFqYXIpCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhCiAgICAgamFy
LT5zZXRDb29raWVzRnJvbVVybChjb29raWVzLCB1cmxGb3JDb29raWVzKTsKIH0KIAotU3RyaW5n
IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNl
c3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
KCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICgh
amFyKQpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydAogICAgIHJldHVy
biByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBAIC0xMTEsMjAgKzEx
MSwyMCBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVybiByZXN1bHRDb29raWVz
LmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAh
IWphcjsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkq
LywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsK
ICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAot
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBO
b3QgeWV0IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9Qcm94eVNlcnZlclF0LmNwcAppbmRleCAwYmYzNjg3Mi4uYWFlNjE3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNlcnZlclF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVy
UXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8UU5ldHdvcmtBY2Nlc3NN
YW5hZ2VyPgpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3Rv
cjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2Vy
dmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgVmVjdG9yPFByb3h5U2VydmVyPiBzZXJ2ZXJzOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcAppbmRleCBhNmUwODQwLi44Yjc5MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNw
b25zZUlmTmVlZGVkKCkKICAgICAgICAgbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRN
SU1FVHlwZUZvclBhdGgobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgpLnBhdGgoKSk7CiAg
ICAgfQogCi0gICAgS1VSTCB1cmwobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgpKTsKKyAg
ICBVUkwgdXJsKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKSk7CiAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSh1cmwsIG1pbWVUeXBlLmxvd2VyKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+aGVhZGVyKFFOZXR3b3JrUmVx
dWVzdDo6Q29udGVudExlbmd0aEhlYWRlcikudG9Mb25nTG9uZygpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9yZXBseVdyYXBwZXItPmVuY29kaW5nKCksIFN0cmluZygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5k
bGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFu
ZGxlUXQuY3BwCmluZGV4IDg0YWJhNGUuLjk1NWI4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcApAQCAtOTks
NyArOTksNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgaWYgKCFkLT5tX3Vz
ZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElmIGNy
ZWRlbnRpYWxzIHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFkZCB0aGVtIHRvIHRo
ZSB1cmwsCiAgICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3NlZCB0byBRTmV0d29y
a1JlcXVlc3QuCi0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgp
LnVybCgpKTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51
cmwoKSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7CiAg
ICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAgICAgICAgIGQt
Pm1fZmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpAQCAtMTMyLDcgKzEz
Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25v
dXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4CiAgICAgaWYgKCFkLT5tX3VzZXIuaXNFbXB0
eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIElmIGNyZWRlbnRpYWxz
IHdlcmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlcXVlc3QsIGFkZCB0aGVtIHRvIHRoZSB1cmwsCiAg
ICAgICAgIC8vIHNvIHRoYXQgdGhleSB3aWxsIGJlIHBhc3NlZCB0byBRTmV0d29ya1JlcXVlc3Qu
Ci0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgp
KTsKKyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhkLT5tX2ZpcnN0UmVxdWVzdC51cmwo
KSk7CiAgICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7CiAgICAg
ICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAgICAgICAgIGQtPm1f
Zmlyc3RSZXF1ZXN0LnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYzhh
OTkwOC4uZWI3Yjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zOSwyMyArMzksMjMgQEAgY2xhc3MgTmV0d29y
a2luZ0NvbnRleHQ7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNl
UmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKSAKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0
IFVSTCYgdXJsKSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAor
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5
KQogICAgICAgICB7CiAgICAgICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAg
ICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDQ3ZTU2NmIuLjdkZWZmMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNw
b25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS
ZXNwb25zZS5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
UmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQog
ICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVkTGVu
Z3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxl
LmgKaW5kZXggOWU2ZWFjMC4uODcwMDg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC01NSw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNv
Y2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5k
bGUodXJsLCBjbGllbnQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJl
YW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBj
bGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+
IGNyZWF0ZShRVGNwU29ja2V0KiBzb2NrZXQsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xp
ZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHNvY2tldCwgY2xp
ZW50KSk7IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKQEAgLTY1
LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DbG9zZSgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogICAg
ICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCosIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCopOwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1zIHBlciBz
ZSwgYnV0IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVBy
aXZhdGUuaAppbmRleCBmNDQ3Y2MyLi5jMTU2MGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZh
dGUuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlOwog
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBR
X09CSkVDVAogcHVibGljOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgS1VSTCYpOworICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUo
U29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgVVJMJik7CiAgICAgU29ja2V0U3RyZWFtSGFuZGxl
UHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBRVGNwU29ja2V0Kik7CiAgICAgflNvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAppbmRleCAxMDNkYzFm
Li45NjE4YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgogCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgi
CkBAIC00MSw3ICs0MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFt
SGFuZGxlUHJpdmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5k
bGUqIHN0cmVhbUhhbmRsZSwgY29uc3QgS1VSTCYgdXJsKQorU29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZTo6U29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqIHN0cmVh
bUhhbmRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9zdHJlYW1IYW5kbGUgPSBzdHJlYW1I
YW5kbGU7CiAgICAgbV9zb2NrZXQgPSAwOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlUHJpdmF0ZTo6c29ja2V0U3NsRXJyb3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJv
cj4mIGVycm9yKQogfQogI2VuZGlmCiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFt
SGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQp
CitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5k
bGVCYXNlKHVybCwgY2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFu
ZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CkBAIC0xOTEsNyArMTkxLDcg
QEAgU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKIH0KIAogU29ja2V0U3RyZWFtSGFuZGxlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKLSAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoS1VSTCgpLCBjbGllbnQp
CisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKFVSTCgpLCBjbGllbnQpCiB7CiAgICAgTE9H
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1f
Y2xpZW50KTsKICAgICBtX3AgPSBuZXcgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZSh0aGlzLCBz
b2NrZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZUphclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0Nvb2tpZUphclNvdXAuY3BwCmluZGV4IGViNmZjYzguLmRkNWRiZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
QEAgLTIzLDcgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkdPd25Q
dHJTb3VwLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBn
Y2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAg
ICAgaWYgKCFqYXIpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEK
ICAgICBzb3VwX2Nvb2tpZXNfZnJlZShleGlzdGluZ0Nvb2tpZXMpOwogfQogCi1zdGF0aWMgU3Ry
aW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMgU3RyaW5nIGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKIHsKICAgICBTb3VwQ29va2llSmFyKiBq
YXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQpAQCAtMTI4
LDIyICsxMjgsMjIgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwKICAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChjb29raWVzLmdldCgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCB0cnVlKTsKIH0KIAot
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4g
ISFjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgU291cENvb2tpZUph
ciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKQEAgLTE2Niw3ICsxNjYsNyBA
QCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lKQogewogICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwCmluZGV4IDUwYjMyZGUuLmM4
NWZlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Q
cm94eVNlcnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Qcm94eVNlcnZlclNvdXAuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNl
cnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29u
dGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwm
LCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4K
ICAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApp
bmRleCBmNjYwZTkwLi44NDZlMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMzg1LDcg
KzM4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXN0CiAgICAgLy8gV2UgYWx3YXlzIHB1dCB0
aGUgY3JlZGVudGlhbHMgaW50byB0aGUgVVJMLiBJbiB0aGUgQ0ZOZXR3b3JrLXBvcnQgSFRUUCBm
YW1pbHkgY3JlZGVudGlhbHMgYXJlIGFwcGxpZWQgaW4KICAgICAvLyB0aGUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNhbGxiYWNrLCBidXQgbGlic291cCByZXF1aXJlcyB1cyB0
byB1c2UgdGhpcyBtZXRob2QgdG8gb3ZlcnJpZGUKICAgICAvLyBhbnkgcHJldmlvdXNseSByZW1l
bWJlcmVkIGNyZWRlbnRpYWxzLiBJdCBoYXMgaXRzIG93biBwZXItc2Vzc2lvbiBjcmVkZW50aWFs
IHN0b3JhZ2UuCi0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMocmVxdWVzdC51cmwoKSk7Cisg
ICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhyZXF1ZXN0LnVybCgpKTsKICAgICB1cmxXaXRoQ3Jl
ZGVudGlhbHMuc2V0VXNlcih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhw
YXNzd29yZCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTQy
Miw3ICs0MjIsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVj
dEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBLVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NPcmln
aW4pCitzdGF0aWMgYm9vbCBzaG91bGRSZWRpcmVjdEFzR0VUKFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBVUkwmIG5ld1VSTCwgYm9vbCBjcm9zc09yaWdpbikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0
aG9kID09IFNPVVBfTUVUSE9EX0dFVCB8fCBtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0Rf
SEVBRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0YXRpYyB2
b2lkIGRvUmVkaXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICBSZXNvdXJjZVJlcXVl
c3QgbmV3UmVxdWVzdCA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCk7CiAgICAgU291cE1lc3NhZ2Uq
IG1lc3NhZ2UgPSBkLT5tX3NvdXBNZXNzYWdlLmdldCgpOwogICAgIGNvbnN0IGNoYXIqIGxvY2F0
aW9uID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShtZXNzYWdlLT5yZXNwb25zZV9oZWFk
ZXJzLCAiTG9jYXRpb24iKTsKLSAgICBLVVJMIG5ld1VSTCA9IEtVUkwoc291cFVSSVRvS1VSTChz
b3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIGxvY2F0aW9uKTsKKyAgICBVUkwgbmV3VVJM
ID0gVVJMKHNvdXBVUklUb0tVUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSkpLCBsb2Nh
dGlvbik7CiAgICAgYm9vbCBjcm9zc09yaWdpbiA9ICFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSwgbmV3VVJMKTsKICAgICBuZXdSZXF1ZXN0
LnNldFVSTChuZXdVUkwpOwogICAgIG5ld1JlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
bmV3VVJMKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBzdGF0aWMgdm9pZCBhZGRFbmNvZGVkQmxvYkl0
ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgQmxvYgogCiBz
dGF0aWMgdm9pZCBhZGRFbmNvZGVkQmxvYlRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQsIHVuc2lnbmVkIGxvbmcmIHRv
dGFsQm9keVNpemUpCiB7Ci0gICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYkRhdGEgPSBz
dGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRh
RnJvbVVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgZWxlbWVudC5tX3VybCkpOworICAgIFJlZlB0
cjxCbG9iU3RvcmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1w
bCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgZWxlbWVudC5tX3VybCkpOwogICAgIGlmICghYmxvYkRhdGEpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdC5oCmluZGV4IGEwZDBiNGMuLmNmMjI2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM1
LDIwICszNSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIHB1YmxpYzoKICAgICAgICAg
UmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNj
ZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8
U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJl
c291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVz
ZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1
ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFn
cz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAg
ICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0
aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKQEAgLTU3LDE0ICs1NywxNCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkK
ICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KFNvdXBNZXNz
YWdlKiBzb3VwTWVzc2FnZSkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJM
KCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNj
ZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8
U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApp
bmRleCBiNWE0YTBkLi40MzA3MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC0xNDAs
NyArMTQwLDcgQEAgU291cFVSSSogUmVzb3VyY2VSZXF1ZXN0Ojpzb3VwVVJJKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIHNvdXBfdXJpX25ldyh1cmxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogCi0gICAgS1VSTCB1cmwgPSBtX3VybDsKKyAgICBVUkwgdXJsID0gbV91cmw7CiAgICAgdXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIFNvdXBVUkkqIHVyaSA9IHNvdXBfdXJp
X25ldyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDM3
MGY0MzAuLjQ4OTFmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNv
dXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25n
IGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmws
IG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCiAg
ICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAg
ICAgICAgICwgbV90bHNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KDAp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IGE2YTUxNDUuLjg0OGZmY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
U29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxl
PiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYg
dXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tl
dFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25u
ZWN0aW9uLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXRDb25uZWN0aW9uLCBjbGllbnQpKTsgfQog
CiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwpAQCAtNjcsNyArNjcsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNoYXIqIG1fcmVhZEJ1ZmZlcjsKICAgICAg
ICAgdm9pZCogbV9pZDsKIAotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYs
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAgICAgICAgIFNvY2tldFN0
cmVhbUhhbmRsZShHU29ja2V0Q29ubmVjdGlvbiosIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCop
OwogCiAgICAgICAgIC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1zIHBlciBzZSwgYnV0
IHByb3h5IG1heSBhc2sgZm9yIGNyZWRlbnRpYWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAu
Y3BwCmluZGV4IGJjZGQ5NGIuLjU1MDhmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTb2Nr
ZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgpAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgdm9pZCog
YWN0aXZhdGVIYW5kbGUoU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiAgICAgcmV0dXJuIGlk
OwogfQogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJM
JiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFu
ZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVu
dCkKICAgICAsIG1fcmVhZEJ1ZmZlcigwKQogewpAQCAtOTYsNyArOTYsNyBAQCBTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudAogfQogCiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29ubmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKEtVUkwoKSwgY2xp
ZW50KQorICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShVUkwoKSwgY2xpZW50KQogICAgICwg
bV9yZWFkQnVmZmVyKDApCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAKaW5kZXggZjA3YWQ3
Zi4uNTUzYmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBVUklVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBVUklVdGlscy5jcHAKQEAgLTI5LDEwICsyOSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBzb3VwX3VyaV90b19zdHJpbmcsIGFuZCB0aHVzIHRoZSByZXF1ZXN0cyBhcmUg
bm90IHByb3Blcmx5CiAvLyBidWlsdC4gRml4aW5nIHNvdXBfdXJpX3RvX3N0cmluZyBpcyBhIG5v
LW5vIGFzIHRoZSBtYWludGFpbmVyIGRvZXMKIC8vIG5vdCB3YW50IHRvIGJyZWFrIGNvbXBhdGli
aWxpdHkgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbnMKLUtVUkwgc291cFVSSVRvS1VSTChT
b3VwVVJJKiBzb3VwVVJJKQorVVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSkKIHsK
ICAgICBHT3duUHRyPGdjaGFyPiB1cmxTdHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHNvdXBVUkks
IEZBTFNFKSk7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVybFN0cmlu
Zy5nZXQoKSkpOworICAgIFVSTCB1cmwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJsU3RyaW5n
LmdldCgpKSk7CiAKICAgICBpZiAoIXNvdXBVUkktPnBhc3N3b3JkKQogICAgICAgICByZXR1cm4g
dXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBVUklVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBV
UklVdGlscy5oCmluZGV4IDY5NzcyZTcuLjVmNmU4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmgKQEAgLTI2LDEyICsyNiwx
MiBAQAogI2lmbmRlZiBTb3VwVVJJVXRpbHNfaAogI2RlZmluZSBTb3VwVVJJVXRpbHNfaAogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiB0eXBlZGVmIHN0cnVjdCBfU291
cFVSSSBTb3VwVVJJOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1LVVJMIHNvdXBVUklUb0tVUkwo
U291cFVSSSogc291cFVSSSk7CitVUkwgc291cFVSSVRvS1VSTChTb3VwVVJJKiBzb3VwVVJJKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9Db29raWVKYXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93
aW4vQ29va2llSmFyV2luLmNwcAppbmRleCA3YjEyNmUwLi44Yzc5MDU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKQEAg
LTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaW5jbHVk
ZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhN
RTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5z
dHJpbmcoKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXIKICAgICBJ
bnRlcm5ldFNldENvb2tpZShzdHIuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRh
KCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CiB9CiAK
LVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAv
LyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAgLTY1LDI1ICs2NSwy
NSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1
ZmZlcik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2ll
CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250ZXh0KCksIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1
cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29r
aWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlTZXJ2ZXJXaW4uY3BwCmluZGV4IGM2MTBl
MjAuLjE0OTViNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Byb3h5U2VydmVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25z
dCBLVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBw
cm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3RvcjxQcm94eVNlcnZl
cj4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlSGFuZGxlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlSGFuZGxlV2luLmNwcAppbmRleCAzMjBjNDVkLi4wZjY2YjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5k
bGVXaW4uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6aW50ZXJu
ZXRTdGF0dXNDYWxsYmFjayhISU5URVJORVQgaW50ZXJuZXRIYW5kbGUsIERXT1JEX1BUUgogdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6b25SZWRpcmVjdCgpCiB7CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5l
d1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKTsKLSAgICBuZXdSZXF1ZXN0LnNldFVSTChLVVJMKFBh
cnNlZFVSTFN0cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOworICAgIG5ld1JlcXVlc3Quc2V0VVJM
KFVSTChQYXJzZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKIAogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UoZmlyc3RSZXF1ZXN0KCkudXJsKCksIFN0cmluZygpLCAwLCBTdHJp
bmcoKSwgU3RyaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDEwYjk1MjQuLmQxZWI3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVx
dWVzdC5oCkBAIC0zMywyMyArMzMsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogcHVibGljOgogICAg
IFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKLSAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3Vy
Y2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkKKyAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJM
JiB1cmwpCiAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgUmVzb3VyY2VSZXF1ZXN0KGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgewogICAgICAgICBzZXRIVFRQUmVmZXJy
ZXIocmVmZXJyZXIpOwogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgIDog
UmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMzgyNjY4My4uYmVjMGUwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25z
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJl
c291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAg
ICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0
aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxl
LmgKaW5kZXggNjI4MDhlYy4uMDMzNTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJl
YW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMg
U29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhh
bmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFt
SGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
Y2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xp
ZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC01NCw3
ICs1NCw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwog
CiBwcml2YXRlOgotICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9y
IHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCiAgICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3BwCmluZGV4IGIyYjU0MGYuLjE2
YWM3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Nv
Y2tldFN0cmVhbUhhbmRsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlV2luLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxl
Q2xpZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tl
dFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2Nr
ZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcAppbmRleCAzNGVjMWMw
Li4wNzdiNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUGFzdGVi
b2FyZE5peC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmRO
aXguY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFVSTCYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgUGFz
dGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvS1VSTFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tVUkxRdC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkY2E0ZWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIktVUkwuaCIKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCi0jaW5jbHVkZSAicXVybC5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKGNvbnN0IFFVcmwmIHVy
bCkKLXsKLSAgICAqdGhpcyA9IEtVUkwoS1VSTCgpLCB1cmwudG9FbmNvZGVkKCkuY29uc3REYXRh
KCksIFVURjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6b3BlcmF0b3IgUVVybCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIFFVcmwobV9zdHJpbmcpOwotfQotCi1TdHJpbmcgS1VSTDo6ZmlsZVN5c3Rl
bVBhdGgoKSBjb25zdAotewotICAgIGlmICghaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0KLSAgICBpZiAoaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFFVcmw+KCp0aGlzKS50b0xvY2FsRmlsZSgpOwotCi0gICAgLy8gQSB2YWxpZCBxcmMgcmVz
b3VyY2UgcGF0aCBiZWdpbnMgd2l0aCBhIGNvbG9uLgotICAgIGlmIChwcm90b2NvbElzKCJxcmMi
KSkKLSAgICAgICAgcmV0dXJuICI6IiArIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKCkp
OwotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUGFzdGVib2FyZFF0LmNwcAppbmRleCBlYjhlZGZkLi5jNTUzNzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKQEAgLTIwNSw3ICsyMDUsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRV
UkwpCiAjZW5kaWYKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUs
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKG5v
ZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1
cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oCmlu
ZGV4IDQyODFjZDYuLmUyZDA4ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1BsYXRmb3JtU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtU3VwcG9ydC5oCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFBsYXRmb3JtU3VwcG9y
dF9oCiAjZGVmaW5lIFBsYXRmb3JtU3VwcG9ydF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9U
ZW1wb3JhcnlMaW5rU3R1YnNRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1w
b3JhcnlMaW5rU3R1YnNRdC5jcHAKaW5kZXggZTkzYTc2My4uNTk5NWRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcApAQCAt
NDcsNyArNDcsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklj
b25Mb2FkZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBn
ZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQogewog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9CU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5n
LmNwcAppbmRleCBmZTBmZTQ2Li5hMDFjZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0JTdHJpbmcuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQlN0cmluZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY4LDcgKzY4LDcgQEAgQlN0cmlu
Zzo6QlN0cmluZyhjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIG1fYnN0ciA9IFN5c0FsbG9jU3Ry
aW5nTGVuKHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKTsKIH0KIAotQlN0cmluZzo6QlN0cmlu
Zyhjb25zdCBLVVJMJiB1cmwpCitCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIG1fYnN0ciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0JTdHJpbmcuaAppbmRleCBkYzFjMjdkLi40NTc2NzhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKQEAgLTM2LDcgKzM2LDcgQEAgdHlwZWRlZiB3Y2hhcl90
KiBCU1RSOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKIAogICAgIGNsYXNzIEJTdHJpbmcgewogICAgIHB1YmxpYzoKQEAgLTQ1LDcgKzQ1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCU3RyaW5nKGNvbnN0IHdjaGFyX3Qq
LCBzaXplX3QgbGVuZ3RoKTsKICAgICAgICAgQlN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgQlN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICAgICAgQlN0cmluZyhjb25zdCBL
VVJMJik7CisgICAgICAgIEJTdHJpbmcoY29uc3QgVVJMJik7CiAjaWYgVVNFKENGKQogICAgICAg
ICBCU3RyaW5nKENGU3RyaW5nUmVmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAppbmRleCBiZmEwYjY3Li4y
NTAzNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJk
VXRpbGl0aWVzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgIkNsaXBib2Fy
ZFV0aWxpdGllc1dpbi5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDx3aW5p
bmV0Lmg+IC8vIGZvciBJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSApAQCAtMTczLDcgKzE3Myw3IEBA
IHN0YXRpYyBGT1JNQVRFVEMqIHRleHRodG1sRm9ybWF0KCkKICAgICByZXR1cm4gJnRleHRodG1s
Rm9ybWF0OwogfQogCi1IR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC5z
dHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggZThk
NDc1NS4uMmE1ZWUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ns
aXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9D
bGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsMTEgKzMzLDExIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogSEdM
T0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CitIR0xPQkFMIGNyZWF0ZUdsb2Jh
bERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiBGT1JNQVRFVEMq
IHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGMwOGRhNzQuLjMxYTMyZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFduZERD
LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgog
I2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0
aWMgRm9udCBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJvbGQsIEZvbnRSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRHJhZ0ltYWdlUmVm
IGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGluTGFiZWws
IEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKQorRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaW5MYWJlbCwgRm9udFJl
bmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgLy8gVGhpcyBpcyBtb3JlIG9y
IGxlc3MgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBNYWMgT1MgWCBjb2RlLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggZWFhYzE1MC4uODE2
YTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhXbmREQy5oIgogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtMzQ0LDcgKzM0NCw3IEBAIFZlY3RvcjxTdHJpbmc+
IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyBib29sIHdy
aXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcgdGl0bGUs
IGJvb2wgd2l0aFBsYWluVGV4dCwgYm9vbCB3aXRoSFRNTCkKK3N0YXRpYyBib29sIHdyaXRlVVJM
KFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3
aXRoUGxhaW5UZXh0LCBib29sIHdpdGhIVE1MKQogewogICAgIEFTU0VSVChkYXRhKTsKIApAQCAt
Mzk2LDcgKzM5Niw3IEBAIGJvb2wgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgd2luVHlw
ZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAKICAgICBpZiAod2luVHlwZSA9
PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OndyaXRlVVJM
KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBLVVJMKEtVUkwoKSwgZGF0YSksIFN0cmluZygp
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjp3cml0ZVVSTChtX3dyaXRh
YmxlRGF0YU9iamVjdC5nZXQoKSwgVVJMKFVSTCgpLCBkYXRhKSwgU3RyaW5nKCksIGZhbHNlLCB0
cnVlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkgewogICAg
ICAgICBTVEdNRURJVU0gbWVkaXVtID0gezB9OwpAQCAtNTY1LDcgKzU2NSw3IEBAIHN0YXRpYyBT
dHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsCiAgICAgfQogCiAgICAgaWYgKCFsc3RybGVuKGZzUGF0aEJ1ZmZlcikp
IHsKLSAgICAgICAgS1VSTCBrdXJsKEtVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIGt1cmwoVVJM
KCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwgPSB0cnVlOwogICAgICAgICAvLyBUaGUgZmlsZW5h
bWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRyYWcgb3IgZmlsZSB1cmwgc2hvdWxkIGJlIHRoZSBs
YXN0IGVsZW1lbnQgb2YgCiAgICAgICAgIC8vIHRoZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0
LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUgbmFtZSBmb3IgYSBsaW5rCkBAIC02NDAsMTQg
KzY0MCwxNCBAQCBleGl0OgogICAgIHJldHVybiBocjsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
U3RyKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiB7CiAgICAgaWYgKCFtX3dyaXRhYmxlRGF0YU9i
amVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIFdlYkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVE
YXRhT2JqZWN0LmdldCgpLCBrdXJsLCB0aXRsZVN0ciwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBTdHJp
bmcgdXJsID0ga3VybC5zdHJpbmcoKTsKLSAgICBBU1NFUlQodXJsLmNvbnRhaW5zT25seUFTQ0lJ
KCkpOyAvLyBLVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KKyAgICBBU1NFUlQodXJsLmNv
bnRhaW5zT25seUFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBlbmNvZGVkLgogCiAg
ICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1QYXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRs
ZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CiAgICAgU3RyaW5nIGNvbnRlbnRTdHJpbmcoIltJbnRlcm5l
dFNob3J0Y3V0XVxyXG5VUkw9IiArIHVybCArICJcclxuIik7CkBAIC03MjUsNyArNzI1LDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJM
KQogICAgIHdyaXRlVVJMVG9EYXRhT2JqZWN0KHBhc3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJk
VVJMLnRpdGxlKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUs
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdl
KE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKG5v
ZGUpOwogCkBAIC05MzIsNyArOTMyLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1h
Z2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIG1lbU9iajsKIH0K
IAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IEtVUkwmIHVy
bCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1l
LCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAgaWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAh
ZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCBzdGF0aWMgSEdM
T0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIGZp
bGVOYW1lLCBTaGFyZQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3QoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU2hvdmUgaW1hZ2UgZGF0YSBpbnRvIGEgRGF0
YU9iamVjdCBmb3IgdXNlIGFzIGEgZmlsZQogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9
IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOwpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCkKICAgICB3cml0ZUZpbGVUb0RhdGFPYmplY3QobV93cml0YWJsZURhdGFPYmplY3Qu
Z2V0KCksIGltYWdlRmlsZURlc2NyaXB0b3IsIGltYWdlRmlsZUNvbnRlbnQsIGhEcm9wQ29udGVu
dCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCiB7CiAgICAgV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0
KCksIHVybCwgdGl0bGUsIHRydWUsIGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKaW5kZXggYmQ0MGYyMC4uNDhkZTM4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRv
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRv
cldpbi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBXZWJDb3JlOjpnZXRTdXBwb3J0ZWRLZXlT
aXplcyhWZWN0b3I8U3RyaW5nPiYgdikKICAgICB2LmFwcGVuZCgiTWVkaXVtIEdyYWRlIik7CiB9
CiAKLVN0cmluZyBXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlLCBjb25zdCBLVVJMJiB1cmwpCitT
dHJpbmcgV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVk
IGluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
U3RyaW5nIGtleVN0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcAppbmRleCA4NTZjZWE5Li40MDU2ZTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8a2V5Z2VuPgotU3RyaW5n
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CitT
dHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsg
fQogdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQogCiAjaWYgIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGY4Y2MwMTMuLmNjNjJjOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKQEAgLTI4MSw3ICsyODEsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogICAgIHJldHVybiBt
aW1lVHlwZUZvclBsdWdpbi5nZXQocGx1Z2luQ2hvaWNlc1swXSk7CiB9CiAKLVBsdWdpblBhY2th
Z2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBt
aW1lVHlwZSkKK1BsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghbWltZVR5cGUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDZmYWU1ZjAuLjhkN2VkMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7
CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAg
ICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVnaW5QYWNrYWdlOwog
CkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJv
b2wgaXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwog
ICAgICAgICBzdGF0aWMgaW50IHByZWZlcnJlZFBsdWdpbkNvbXBhcmUoY29uc3Qgdm9pZCosIGNv
bnN0IHZvaWQqKTsKIAotICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5kUGx1Z2luKGNvbnN0IEtV
UkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICAgICAgUGx1Z2luUGFja2FnZSogZmluZFBsdWdp
bihjb25zdCBVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1Z2luUGFja2FnZSog
cGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgICAgIHZvaWQg
c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1
Z2luUGFja2FnZSogcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDUwNTlhZGIuLjhiM2JkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blN0cmVhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRT
dHJlYW0oKQogewogICAgIEFTU0VSVChtX3N0cmVhbVN0YXRlID09IFN0cmVhbUJlZm9yZVN0YXJ0
ZWQpOwogCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSBtX3Jlc291cmNlUmVzcG9uc2Uu
dXJsKCk7CisgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IG1fcmVzb3VyY2VSZXNwb25zZS51
cmwoKTsKIAogICAgIC8vIFNvbWUgcGx1Z2lucyAoRmxhc2gpIGV4cGVjdCB0aGF0IGphdmFzY3Jp
cHQgVVJMcyBhcmUgcGFzc2VkIGJhY2sgZGVjb2RlZCBhcyB0aGlzIGlzIHRoZQogICAgIC8vIGZv
cm1hdCB1c2VkIHdoZW4gcmVxdWVzdGluZyB0aGUgVVJMLgpAQCAtMzg2LDcgKzM4Niw3IEBAIHZv
aWQgUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAgfSAKIH0KIAotdm9pZCBQbHVnaW5T
dHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IENTdHJpbmcmIHJlc3VsdFN0cmluZykKK3ZvaWQgUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlw
dFN0cmVhbShjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IENTdHJpbmcmIHJlc3VsdFN0cmlu
ZykKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgUmVzb3VyY2VSZXNwb25zZShyZXF1ZXN0
VVJMLCAidGV4dC9wbGFpbiIsIHJlc3VsdFN0cmluZy5sZW5ndGgoKSwgIiIsICIiKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IDU1ZDE3MDIuLjdjMDQ4NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMjgsNyArMjgsNyBAQAogI2Rl
ZmluZSBQbHVnaW5TdHJlYW1faAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJrU2V0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCkBAIC03MCw3ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2b2lkIHNldExvYWRNYW51YWxseShib29sIGxvYWRNYW51YWxseSkgeyBtX2xvYWRNYW51
YWxseSA9IGxvYWRNYW51YWxseTsgfQogCi0gICAgICAgIHZvaWQgc2VuZEphdmFTY3JpcHRTdHJl
YW0oY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5nJiByZXN1bHRTdHJp
bmcpOworICAgICAgICB2b2lkIHNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgV1RGOjpDU3RyaW5nJiByZXN1bHRTdHJpbmcpOwogICAgICAgICB2b2lkIGNh
bmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwogCiAgICAgICAgIHN0YXRpYyBOUFAgb3du
ZXJGb3JTdHJlYW0oTlBTdHJlYW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CmluZGV4IGFmYzBhYWIuLjBiMmY4NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBJbnN0YW5jZU1hcCYgaW5zdGFuY2VNYXAo
KQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgc2NyaXB0U3RyaW5nSWZKYXZh
U2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBTdHJpbmcgc2NyaXB0U3RyaW5nSWZK
YXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghcHJvdG9jb2xJc0phdmFT
Y3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkK
ICAgICBpZiAobV9wYXJlbnRGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAhPSBtX3Bh
cmVudEZyYW1lLT5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpICYmICh0YXJnZXRGcmFt
ZU5hbWUuaXNOdWxsKCkgfHwgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLmZpbmQodGFyZ2V0RnJhbWVO
YW1lKSAhPSBtX3BhcmVudEZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1
ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpOworICAgIFVSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIFN0cmluZyBqc1N0cmluZyA9IHNjcmlwdFN0cmlu
Z0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0VVJMKTsKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IocmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IERlZmluaXRl
bHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7
CkBAIC01MTIsNyArNTEyLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkKIHsKICAgICBBU1NF
UlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdF
VCIgfHwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0g
IlBPU1QiKTsKIAotICAgIEtVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKTsKICAgICAKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IE5QRVJSX0lOVkFMSURfVVJMOwpAQCAtNTQxLDcgKzU0MSw3IEBAIE5QRXJyb3IgUGx1Z2luVmll
dzo6bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNl
bmROb3RpCiAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogfQogCi1zdGF0aWMgS1VSTCBtYWtl
VVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IGNoYXIqIHJlbGF0aXZlVVJMU3RyaW5nKQor
c3RhdGljIFVSTCBtYWtlVVJMKGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgY2hhciogcmVsYXRp
dmVVUkxTdHJpbmcpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHJlbGF0aXZlVVJMU3RyaW5n
OwogCkBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIEtVUkwgbWFrZVVSTChjb25zdCBLVVJMJiBi
YXNlVVJMLCBjb25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKICAgICB1cmxTdHJpbmcucmVw
bGFjZVdpdGhMaXRlcmFsKCdcbicsICIiKTsKICAgICB1cmxTdHJpbmcucmVwbGFjZVdpdGhMaXRl
cmFsKCdccicsICIiKTsKIAotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybFN0cmluZyk7Cisg
ICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmxTdHJpbmcpOwogfQogCiBOUEVycm9yIFBsdWdpblZp
ZXc6OmdldFVSTE5vdGlmeShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdm9p
ZCogbm90aWZ5RGF0YSkKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFBh
cmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dAogICAgIG1fcGFyYW1Db3VudCA9IHBhcmFtQ291bnQ7CiB9CiAKLVBsdWdpblZpZXc6OlBsdWdp
blZpZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiBzaXplLCBQbHVnaW5QYWNr
YWdlKiBwbHVnaW4sIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
UGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUm
IHNpemUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbiwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IGxvYWRNYW51YWxseSkKICAgICA6IG1fcGFyZW50RnJhbWUocGFyZW50RnJhbWUpCiAgICAgLCBt
X3BsdWdpbihwbHVnaW4pCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKQEAgLTk0OCw3ICs5NDgs
NyBAQCBib29sIFBsdWdpblZpZXc6OmlzQ2FsbGluZ1BsdWdpbigpCiAgICAgcmV0dXJuIHNfY2Fs
bGluZ1BsdWdpbiA+IDA7CiB9CiAKLVBhc3NSZWZQdHI8UGx1Z2luVmlldz4gUGx1Z2luVmlldzo6
Y3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRyPFBsdWdpblZpZXc+
IFBsdWdpblZpZXc6OmNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNp
emUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgLy8g
aWYgd2UgZmFpbCB0byBmaW5kIGEgcGx1Z2luIGZvciB0aGlzIE1JTUUgdHlwZSwgZmluZFBsdWdp
biB3aWxsIHNlYXJjaCBmb3IKICAgICAvLyBhIHBsdWdpbiBieSB0aGUgZmlsZSBleHRlbnNpb24g
YW5kIHVwZGF0ZSB0aGUgTUlNRSB0eXBlLCBzbyBwYXNzIGEgbXV0YWJsZSBTdHJpbmcKQEAgLTEz
ODIsNyArMTM4Miw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VmFsdWVGb3JVUkwoTlBOVVJM
VmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIqIHVybCwgY2hhCiAKICAgICBzd2l0Y2ggKHZh
cmlhYmxlKSB7CiAgICAgY2FzZSBOUE5VUkxWQ29va2llOiB7Ci0gICAgICAgIEtVUkwgdShtX3Bh
cmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7CisgICAgICAgIFVSTCB1KG1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKICAgICAgICAgaWYgKHUu
aXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBnZXRGcmFtZShwYXJlbnRG
cmFtZSgpLCBtX2VsZW1lbnQpOwogICAgICAgICAgICAgaWYgKGZyYW1lKSB7CkBAIC0xNDA0LDcg
KzE0MDQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSTFZhcmlh
YmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNoYQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBOUE5VUkxWUHJveHk6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUt
PmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1f
ZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBm
cmFtZSA/ICZmcmFtZS0+bG9hZGVyKCkgOiAwOwpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29u
c3QgY2hhciogdXJsLCBjb24KIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5Q
TlVSTFZDb29raWU6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkt
PmJhc2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyBjb29raWVTdHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLCBsZW4p
OwogICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZ2V0RnJhbWUocGFyZW50RnJhbWUoKSwgbV9l
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggYzI0NWQzMS4uMTY2
YTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc5LDcgKzc5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgTW91c2VFdmVudDsKLSAgICBjbGFzcyBLVVJM
OworICAgIGNsYXNzIFVSTDsKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBjbGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luOwogI2VuZGlmCkBA
IC0xMzIsNyArMTMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAg
ICAgLCBwdWJsaWMgUGx1Z2luTWFudWFsTG9hZGVyCiAgICAgICAgICAgICAgICAgICAgICAsIHBy
aXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0
IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBsdWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0
IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICAgICAgdmlydHVh
bCB+UGx1Z2luVmlldygpOwogCiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbigpIGNvbnN0
IHsgcmV0dXJuIG1fcGx1Z2luLmdldCgpOyB9CkBAIC0yMTcsNyArMjE3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2UoKSBjb25zdCB7
IHJldHVybiBtX3BsdWdpbnNQYWdlOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBlOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KIAogI2lmIGRlZmluZWQoWFBfTUFDT1NYKSAmJiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgYm9vbCBwb3BVcENvbnRleHRNZW51KE5QTWVudSop
OwpAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IElu
dFNpemUmLCBQbHVnaW5QYWNrYWdlKiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwor
ICAgICAgICBQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIFBs
dWdpblBhY2thZ2UqLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogICAgICAgICB2
b2lkIHNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIGJvb2wgc3RhcnRPckFkZFRv
VW5zdGFydGVkTGlzdCgpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgUmVmUHRyPFBsdWdpblBhY2thZ2U+IG1fcGx1Z2luOwogICAgICAgICBIVE1MUGx1
Z0luRWxlbWVudCogbV9lbGVtZW50OwogICAgICAgICBib29sIG1faXNTdGFydGVkOwotICAgICAg
ICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFBsdWdpblN0YXR1cyBt
X3N0YXR1czsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IG1faW52YWxpZFJlY3RzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXgg
ZmJmZjJlOS4uMzY2MGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4v
UGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1Bs
dWdpbkRhdGFiYXNlV2luLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRh
dGFiYXNlLmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1dp
bmRvd3NFeHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RMb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlv
bi5oCmluZGV4IDVlZmU1ZjcuLmUxMjE5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdExvY2F0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xsYmFy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGIzOWEz
ODAuLjg2OTJjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKQEAgLTMxMCwxMyArMzEwLDEzIEBAIEludFJlY3QgSGl0VGVzdFJlc3VsdDo6aW1hZ2VSZWN0
KCkgY29uc3QKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlckJveCgpLT5h
YnNvbHV0ZUNvbnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAotS1VSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKK1VSTCBIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWRO
b2RlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAg
ICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsK
KyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKICAg
ICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpCkBAIC0zMzAs
MzcgKzMzMCwzNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25z
dAogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG1faW5uZXJOb25TaGFyZWRO
b2RlLmdldCgpKTsKICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1hZ2VTb3VyY2VVUkwo
KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVS
TCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0K
IAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CitVUkwgSGl0VGVz
dFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25zdAogewogICAgIGlmICghbV9pbm5lck5vblNo
YXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsK
IAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoZW1iZWRUYWcpICYm
ICFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcpKQotICAgICAgICBy
ZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50KG1faW5uZXJOb25T
aGFyZWROb2RlLmdldCgpKTsKLSAgICBLVVJMIHVybCA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhl
bGVtZW50LT51cmwoKSkpOworICAgIFVSTCB1cmwgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9j
dW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZWxl
bWVudC0+dXJsKCkpKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBL
VVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmIChlbGVtZW50LT5zZXJ2aWNl
VHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LT5zZXJ2aWNlVHlwZSgpLmlz
RW1wdHkoKSAmJiB1cmwucGF0aCgpLmxvd2VyKCkuZW5kc1dpdGgoIi5wZGYiKSkpCiAgICAgICAg
IHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4gVVJMKCk7CiB9CiAK
LUtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0CitVUkwgSGl0VGVz
dFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsdCA9IG1lZGlhRWxlbWVudCgpKQogICAg
ICAgICByZXR1cm4gbWVkaWFFbHQtPmN1cnJlbnRTcmMoKTsKLSAgICByZXR1cm4gS1VSTCgpOwor
ICAgIHJldHVybiBVUkwoKTsKICNlbHNlCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4g
VVJMKCk7CiAjZW5kaWYKIH0KIApAQCAtNTEwLDEwICs1MTAsMTAgQEAgdm9pZCBIaXRUZXN0UmVz
dWx0Ojp0b2dnbGVNZWRpYU11dGVTdGF0ZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotS1VSTCBIaXRU
ZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAorVVJMIEhpdFRlc3RSZXN1bHQ6OmFi
c29sdXRlTGlua1VSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyVVJMRWxlbWVudCkKLSAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgQXRvbWlj
U3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVudChtX2lubmVyVVJM
RWxlbWVudC5nZXQoKSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQobV9pbm5lclVSTEVsZW1lbnQuZ2V0
KCkpIHx8IG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGxpbmtUYWcpKQpAQCAtNTIzLDcg
KzUyMyw3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKICAg
ICAgICAgdXJsU3RyaW5nID0gbV9pbm5lclVSTEVsZW1lbnQtPmdldEF0dHJpYnV0ZShYTGlua05h
bWVzOjpocmVmQXR0cik7CiAjZW5kaWYKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBLVVJMKCk7
CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiBtX2lubmVyVVJMRWxlbWVudC0+
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
dXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApp
bmRleCBlYzUyMGY4Li5mNWQwOTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xsYmFyOwpAQCAtMTAz
LDEwICsxMDMsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyB0aXRsZURpc3BsYXlTdHJpbmcoKSBj
b25zdDsKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKICAgICBJbnRSZWN0IGltYWdlUmVjdCgp
IGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVJbWFnZVVSTCgpIGNvbnN0OwotICAgIEtVUkwgYWJz
b2x1dGVQREZVUkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTWVkaWFVUkwoKSBjb25zdDsK
LSAgICBLVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0OworICAgIFVSTCBhYnNvbHV0ZUltYWdl
VVJMKCkgY29uc3Q7CisgICAgVVJMIGFic29sdXRlUERGVVJMKCkgY29uc3Q7CisgICAgVVJMIGFi
c29sdXRlTWVkaWFVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7
CiAgICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0xpdmVMaW5rKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc092ZXJMaW5rKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5k
ZXggZmM3MWEwOC4uZjhjYmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMzUsNyArMzUsNyBA
QAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2hh
ZGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHlsZVNoYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTQ4LDggKzQ4LDggQEAgY2xhc3MgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtQ2FjaGU7CiBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gOiBwdWJs
aWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShLVVJMIHZlcnRleFNoYWRlclVSTCwg
UGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCAKLSAgICAgICAgS1VSTCBmcmFn
bWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1
c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKFVSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBh
c3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgCisgICAgICAgIFVSTCBmcmFnbWVu
dFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3Rv
bUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLAogICAgICAgICBjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBt
ZXNoVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlclVSTCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRl
clVSTCwgZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUp
KTsKQEAgLTE0MywxMSArMTQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENhY2hlKFN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKiBjYWNoZSkgeyBtX2NhY2hlID0gY2FjaGU7IH0KICAg
ICBib29sIGluQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlOyB9CiAgICAgCi0gICAgS1VS
TCB2ZXJ0ZXhTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRlclVSTDsgfQot
ICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hh
ZGVyVVJMOyB9CisgICAgVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVy
dGV4U2hhZGVyVVJMOyB9CisgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMKCkgY29uc3QgeyByZXR1
cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4g
dmVydGV4U2hhZGVyLCBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hh
ZGVyPiBmcmFnbWVudFNoYWRlciwgCisgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKFVSTCB2
ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgVVJM
IGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRl
ciwgCiAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJN
ZXNoVHlwZSBtZXNoVHlwZSkKICAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFtKHByb2dyYW1U
eXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpCiAgICAgICAgICwgbV92ZXJ0ZXhTaGFkZXIodmVy
dGV4U2hhZGVyKQpAQCAtMTcwLDggKzE3MCw4IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGUgVVJM
cyBmb3JtIHRoZSBrZXkgb2YgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpbiB0aGUgY2Fj
aGUgYW5kIGFyZSB1c2VkCiAgICAgLy8gdG8gbG9va3VwIHRoZSBTdHlsZUN1c3RvbUZpbHRlclBy
b2dyYW0gd2hlbiBpdCdzIHJlbW92ZWQgZnJvbSB0aGUgY2FjaGUuCi0gICAgS1VSTCBtX3ZlcnRl
eFNoYWRlclVSTDsKLSAgICBLVVJMIG1fZnJhZ21lbnRTaGFkZXJVUkw7CisgICAgVVJMIG1fdmVy
dGV4U2hhZGVyVVJMOworICAgIFVSTCBtX2ZyYWdtZW50U2hhZGVyVVJMOwogCiAgICAgLy8gVGhl
IENhY2hlIGlzIHJlc3BvbnNpYmxlIG9mIGludmFsaWRhdGluZyB0aGlzIHJlZmVyZW5jZS4KICAg
ICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZSogbV9jYWNoZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA3MGY5OWFhLi4xYzYyZWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBT
VkdDdXJzb3JFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgICAgICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12
b2lkIFNWR0N1cnNvckVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAg
U1ZHRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAppbmRleCAxMzI4MWQ0Li40ZmM4MTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToK
IAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDdXJzb3JFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdEb2N1bWVudC5jcHAKaW5kZXggMDllZmM2Ni4uNjJhNTZkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQor
U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBTVkdEb2N1bWVudENsYXNzKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaAppbmRleCBkYzBkMzQyLi42NTNmYTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50OwogCiBjbGFz
cyBTVkdEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00OSw3ICs0OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBwb3MpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYpOworICAgIFNW
R0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRiMTc1NTQuLjFjMWI0YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVy
QnVpbGRlciosIEZpbHRlciogZmlsCiAgICAgcmV0dXJuIEZFSW1hZ2U6OmNyZWF0ZVdpdGhJUklS
ZWZlcmVuY2UoZmlsdGVyLCBkb2N1bWVudCgpLCBocmVmKCksIHByZXNlcnZlQXNwZWN0UmF0aW8o
KSk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBj
b25zdAogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCmluZGV4IDFkZTZhODMuLjY5NjZkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogCi0gICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJj
ZVJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXgg
OTg5NGVjNC4uOGJiYmYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAK
QEAgLTIxOSw3ICsyMTksNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNWR0ltYWdlRWxlbWVudDo6
aW1hZ2VTb3VyY2VVUkwoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoWExpbmtOYW1l
czo6aHJlZkF0dHIpOwogfQogCi12b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXgg
YmE1NGI5Ny4uNDRkNjQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAt
NTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRl
UmVuZGVyZXIoUmVuZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1
aXJlZFJlc291cmNlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAppbmRl
eCA3NGZmNmUxLi5mNjVmNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAK
QEAgLTUwLDkgKzUwLDkgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQo
KQogCiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBLVVJMIGJhc2UgPSBlbGVtZW50KCktPmJhc2VVUkko
KTsKKyAgICBVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwogICAgIGlmIChiYXNlLmlz
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOworICAgICAgICByZXR1cm4gVVJMKGJh
c2UsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKS5zdHJpbmco
KTsKICAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDdkOTExZjAuLjA5NGEyYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIG1fdHlw
ZSA9IHR5cGU7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBTVkdTY3JpcHRF
bGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJs
cykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
dXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmluZGV4IGQ1Yzk0NmQu
LjM3OTNiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaApAQCAtNTMsNyAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgeyByZXR1cm4gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAzMGU4NDk5Li5hNjY3ZTEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUyLDkgKzUyLDkg
QEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICBpZiAoc3RhcnQgPT0gbm90Rm91bmQpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgS1VSTCBiYXNlID0gc3RhcnQgPyBL
VVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZygwLCBzdGFydCkpIDogZG9jdW1l
bnQuYmFzZVVSSSgpOworICAgIFVSTCBiYXNlID0gc3RhcnQgPyBVUkwoZG9jdW1lbnQuYmFzZVVS
SSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0KSkgOiBkb2N1bWVudC5iYXNlVVJJKCk7CiAgICAg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3RhcnQpOwotICAgIEtV
Ukwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOworICAgIFVSTCBrdXJsKGJhc2UsIGZy
YWdtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIoa3VybCwgZG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlm
aWVyLnN1YnN0cmluZygxKTsKIApAQCAtNjIsMjggKzYyLDI4IEBAIFN0cmluZyBTVkdVUklSZWZl
cmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmws
IERvY3VtCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgS1VS
TCB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHVy
bCwgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllcikKK3N0YXRp
YyBpbmxpbmUgVVJMIHVybEZyb21JUklTdHJpbmdXaXRoRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYgZnJhZ21lbnRJZGVudGlm
aWVyKQogewogICAgIHNpemVfdCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZpbmQo
JyMnKTsKICAgICBpZiAoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllciA9PSBub3RGb3VuZCkKLSAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8gRXhj
bHVkZSB0aGUgJyMnIGNoYXJhY3RlciB3aGVuIGRldGVybWluaW5nIHRoZSBmcmFnbWVudElkZW50
aWZpZXIuCiAgICAgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1YnN0cmluZyhzdGFydE9mRnJh
Z21lbnRJZGVudGlmaWVyICsgMSk7CiAgICAgaWYgKHN0YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIp
IHsKLSAgICAgICAgS1VSTCBiYXNlKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZygw
LCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7Ci0gICAgICAgIHJldHVybiBLVVJMKGJhc2Us
IHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOworICAgICAgICBVUkwg
YmFzZShkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnRPZkZyYWdtZW50
SWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gVVJMKGJhc2UsIHVybC5zdWJzdHJpbmcoc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIHJldHVybiBLVVJMKGRvY3Vt
ZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7
CisgICAgcmV0dXJuIFVSTChkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoc3RhcnRP
ZkZyYWdtZW50SWRlbnRpZmllcikpOwogfQogCiBFbGVtZW50KiBTVkdVUklSZWZlcmVuY2U6OnRh
cmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgaXJpLCBEb2N1bWVudCYgZG9j
dW1lbnQsIFN0cmluZyogZnJhZ21lbnRJZGVudGlmaWVyLCBEb2N1bWVudCogZXh0ZXJuYWxEb2N1
bWVudCkKIHsKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZyYWdtZW50IGlkZW50aWZpZXIgY29udGFp
bmVkIHdpdGhpbiB0aGUgSVJJIHN0cmluZywgd2UgY2FuJ3QgbG9va3VwIGFuIGVsZW1lbnQuCiAg
ICAgU3RyaW5nIGlkOwotICAgIEtVUkwgdXJsID0gdXJsRnJvbUlSSVN0cmluZ1dpdGhGcmFnbWVu
dElkZW50aWZpZXIoaXJpLCBkb2N1bWVudCwgaWQpOwotICAgIGlmICh1cmwgPT0gS1VSTCgpKQor
ICAgIFVSTCB1cmwgPSB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihpcmks
IGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHVybCA9PSBVUkwoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5oCmluZGV4IDM2ZTAxMTcuLmRkOTU2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVm
ZXJlbmNlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIC8vIElmIHRoZSBVUkkgbWF0Y2hlcyBvdXIgZG9jdW1lbnRzIFVSTCwg
d2UncmUgZGVhbGluZyB3aXRoIGEgbG9jYWwgcmVmZXJlbmNlLgotICAgICAgICBLVVJMIHVybCA9
IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVyaSk7CisgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC5j
b21wbGV0ZVVSTCh1cmkpOwogICAgICAgICByZXR1cm4gIWVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIodXJsLCBkb2N1bWVudC51cmwoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKaW5kZXggNGIxMTBiMC4uNGNlYTY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBib29sIGlzRXh0ZXJuYWxSZWZlcmVuY2UgPSBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYo
KSwgZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChpc0V4dGVybmFsUmVmZXJlbmNlKSB7Ci0gICAg
ICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKTsKKyAgICAg
ICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSk7CiAgICAgICAg
ICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHVybC5zdHJpbmco
KSkpOwogICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNzVlMTJiZC4uZmFhMTQxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0zNzIsNyArMzcy
LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAK
ICAgICAgICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1l
bnRMb2FkZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAgICAg
ICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+c2V0TUlNRVR5cGUo
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PndyaXRlcigpLT5iZWdpbihLVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50Cisg
ICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YmVnaW4oVVJM
KCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgp
LT5zaXplKCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVy
KCktPmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCmlu
ZGV4IDY0NzJlZDkuLjhhMWQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
QWJzdHJhY3RXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RX
b3JrZXIuY3BwCkBAIC02MCwyOCArNjAsMjggQEAgdm9pZCBBYnN0cmFjdFdvcmtlcjo6Y29udGV4
dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7IAog
fQogCi1LVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJiBlYykKK1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVSTChjb25zdCBT
dHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkp
IHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAg
ICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVz
ZSB0aGUgZHluYW1pYyBnbG9iYWwgc2NvcGUgKGJ1ZyAjMjc4ODcpCi0gICAgS1VSTCBzY3JpcHRV
UkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJM
IHNjcmlwdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsKTsK
ICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQog
CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3Qoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAogICAgIGlm
IChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpICYmICFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1Nj
cmlwdEZyb21Tb3VyY2Uoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
LSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAog
ICAgIHJldHVybiBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmgKaW5kZXggNGVhYzMyMi4uNWRjNjY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuaApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogCiAgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxB
YnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhIHsKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjb252ZXJ0
cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0aGUgcmVzdWx0IGZvciB2YWxp
ZGl0eS4KLSAgICAgICAgS1VSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRp
b25Db2RlJiBlYyk7CisgICAgICAgIFVSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBF
eGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIGludHB0cl90IGFzSUQoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAgcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKaW5kZXggM2VhZmQxMy4uOTI0MTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQwLDE0ICs0MCwx
NCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdz
PiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9w
T3JpZ2luKQorUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRlZFdv
cmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKIHsKICAgICBSZWZQdHI8
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgRGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRv
cE9yaWdpbikpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbVN0
cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOwog
ICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIERl
ZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3du
UHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRocmVh
ZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogICAgIDogV29ya2VyR2xv
YmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIHRvcE9yaWdpbikKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuaAppbmRleCBmNDY5NDMyLi40M2E1YjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC00NCw3ICs0NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIERlZGljYXRlZFdvcmtl
clRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICAgICAgdmlydHVhbCB+RGVkaWNh
dGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZWRpY2F0
ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNz
T3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5k
ZXggZGMyMjAzOC4uOTI5ZmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVk
aWNhdGVkV29ya2VyVGhyZWFkLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IERlZGljYXRlZFdv
cmtlclRocmVhZDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNv
dXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2Jq
ZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRN
b2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4g
RGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHks
IFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGVkaWNhdGVkV29ya2VyVGhyZWFkKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywg
c291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJveHksIHdvcmtlck9iamVjdFByb3h5LCBzdGFydE1v
ZGUsIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgdG9w
T3JpZ2luKSk7CiB9CiAKLURlZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhy
ZWFkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3Vw
U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRl
clByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVj
dFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNv
bnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
CitEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRp
bmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJM
b2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAgICAgOiBXb3JrZXJU
aHJlYWQodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQ
cm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pCiAgICAgLCBtX3dvcmtlck9i
amVjdFByb3h5KHdvcmtlck9iamVjdFByb3h5KQogewpAQCAtNTUsNyArNTUsNyBAQCBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQ6On5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1QYXNzUmVm
UHRyPFdvcmtlckdsb2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBh
c3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQor
UGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKQogewogICAgIHJldHVybiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKHVy
bCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250
ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKaW5kZXggYTcwYmU2Yy4uMTk5OGZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCkBA
IC00MSwxNiArNDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRGVkaWNh
dGVkV29ya2VyVGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiAgICAgcHVibGljOgotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25z
dCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNl
dHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdv
cmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiog
dG9wT3JpZ2luKTsKICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5
KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogICAgICAgICB2aXJ0dWFs
IH5EZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBT
ZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9y
aWdpbikgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxT
Y29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBydW5FdmVudExvb3AoKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IERlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtl
ckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUs
IGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgICAg
ICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtl
ckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUs
IGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAg
ICAgIFdvcmtlck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9z
aXRvcnkuY3BwCmluZGV4IDk4NWFmMDAuLjVjMjZjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC02
NCwxOSArNjQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXJQ
cm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4sIHB1
YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlclJlcG9ydGluZ1Byb3h5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJQcm94eShuYW1l
LCB1cmwsIG9yaWdpbikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJv
eHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CiAKICAgICB2b2lkIHNldFRocmVhZChQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFkID0gdGhyZWFkOyB9
CiAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zaW5nOyB9Ci0g
ICAgS1VSTCB1cmwoKSBjb25zdAorICAgIFVSTCB1cmwoKSBjb25zdAogICAgIHsKICAgICAgICAg
Ly8gRG9uJ3QgdXNlIG1fdXJsLmNvcHkoKSBiZWNhdXNlIGl0IGlzbid0IGEgdGhyZWFkc2FmZSBt
ZXRob2QuCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwuc3RyaW5n
KCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIH0KIAogICAgIFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzb2xhdGVkQ29weSgpOyB9Ci0gICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
LCBjb25zdCBLVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVS
TCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOwpAQCAtMTAzLDEyICsxMDMsMTIgQEAgcHVibGljOgogICAgIEdyb3VwU2V0
dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBjb25zdDsgLy8gUGFnZSBHcm91cFNldHRpbmdzIHVzZWQg
Ynkgd29ya2VyIHRocmVhZC4KIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7
CisgICAgU2hhcmVkV29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgYm9v
bCBtX2Nsb3Npbmc7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVS
TCBtX3VybDsKICAgICAvLyBUaGUgdGhyZWFkIGlzIGZyZWVkIHdoZW4gdGhlIHByb3h5IGlzIGRl
c3Ryb3llZCwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHJveHkgc3RheXMgYXJv
dW5kIHVudGlsIHRoZSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBleGl0cy4KICAgICBSZWZQdHI8
U2hhcmVkV29ya2VyVGhyZWFkPiBtX3RocmVhZDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV93b3Jr
ZXJEb2N1bWVudHNMb2NrOwogfTsKIAotU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtlclBy
b3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4pCitTaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHko
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luKQogICAgIDogbV9jbG9zaW5nKGZhbHNlKQogICAgICwgbV9uYW1lKG5hbWUu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3VybCh1cmwuY29weSgpKQpAQCAtMTI3LDcgKzEyNyw3
IEBAIFNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlCiAgICAgQVNTRVJUKG1fb3JpZ2luLT5oYXNPbmVS
ZWYoKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVy
bFRvTWF0Y2gpIGNvbnN0Citib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRjaGVzKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBjb25zdCBVUkwm
IHVybFRvTWF0Y2gpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIG9yaWdpbnMgZG9uJ3QgbWF0Y2gs
IG9yIHRoZSBuYW1lcyBkb24ndCBtYXRjaCwgdGhlbiB0aGlzIGlzIG5vdCB0aGUgcHJveHkgd2Ug
YXJlIGxvb2tpbmcgZm9yLgogICAgIGlmICghb3JpZ2luLT5lcXVhbChtX29yaWdpbi5nZXQoKSkp
CkBAIC0yODksNyArMjg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4sIHByaXZh
dGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4sIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+KTsKLSAgICB2b2lkIGxv
YWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgbG9hZChjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToK
ICAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgY2FsbGJhY2tzCkBAIC0zMDksNyArMzA5
LDcgQEAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIo
UGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmsKIHsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU3RheSBhbGl2ZSAoYW5k
IGtlZXAgdGhlIFNoYXJlZFdvcmtlciBhbmQgSlMgd3JhcHBlciBhbGl2ZSkgdW50aWwgdGhlIGxv
YWQgZmluaXNoZXMuCiAgICAgdGhpcy0+cmVmKCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBE
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6ZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgICAgIG1fcHJveGllc1tpXS0+ZG9jdW1lbnREZXRhY2hlZChkb2N1bWVu
dCk7CiB9CiAKLXZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dv
cmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29u
bmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fbG9jayk7
CiAgICAgQVNTRVJUKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpKSk7CkBA
IC00MjYsMTIgKzQyNiwxMiBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpj
b25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgogfQogCiAvLyBDcmVh
dGVzIGEgbmV3IFNoYXJlZFdvcmtlclByb3h5IG9yIHJldHVybnMgYW4gZXhpc3Rpbmcgb25lIGZy
b20gdGhlIHJlcG9zaXRvcnkuIE11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUgdGhlIHJlcG9zaXRv
cnkgbXV0ZXggaXMgaGVsZC4KLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIExvb2sgZm9yIGFuIGV4aXN0aW5nIHdvcmtlciwgYW5kIGNyZWF0ZSBv
bmUgaWYgaXQgZG9lc24ndCBleGlzdC4KICAgICAvLyBJdGVtcyBpbiB0aGUgY2FjaGUgYXJlIGZy
ZWVkIG9uIGFub3RoZXIgdGhyZWFkLCBzbyBkbyBhIHRocmVhZHNhZmUgY29weSBvZiB0aGUgVVJM
IGJlZm9yZSBjcmVhdGluZyB0aGUgb3JpZ2luLAogICAgIC8vIHRvIG1ha2Ugc3VyZSBubyByZWZl
cmVuY2VzIHRvIGV4dGVybmFsIHN0cmluZ3MgbGluZ2VyLgotICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3Byb3hpZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKCFtX3Byb3hpZXNbaV0t
PmlzQ2xvc2luZygpICYmIG1fcHJveGllc1tpXS0+bWF0Y2hlcyhuYW1lLCBvcmlnaW4sIHVybCkp
CiAgICAgICAgICAgICByZXR1cm4gbV9wcm94aWVzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCmluZGV4IDcwNWVm
NDcuLjgyNjdjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xh
c3MgVVJMOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKQEAgLTY1LDcgKzY1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHdvcmtlclNjcmlwdExvYWRlZChT
aGFyZWRXb3JrZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcm
IHdvcmtlclNjcmlwdCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJU
eXBlKTsKIAogICAgICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBTaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5Ojpjb25uZWN0KCkKLSAgICAgICAgdm9pZCBjb25uZWN0VG9Xb3JrZXIoUGFz
c1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAg
dm9pZCBjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEgZG9jdW1lbnQg
aGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVu
dCopOwpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIERlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAgICAgICAgIH5EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeSgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IGdl
dFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYpOworICAgICAgICBQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlclByb3h5PiBnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFVSTCYpOwogICAgICAgICAvLyBNdXRleCB1c2VkIHRvIHByb3RlY3QgaW50ZXJuYWwgZGF0YSBz
dHJ1Y3R1cmVzLgogICAgICAgICBNdXRleCBtX2xvY2s7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyLmNwcAppbmRleCAyOGExZWVkLi5hYTUyNWY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZlYXR1cmVPYnNlcnZlci5oIgogI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtNjYsNyArNjYsNyBA
QCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQo
KTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJMKHVybCwgZWMpOwor
ICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CiAgICAgaWYg
KHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGQ3MTY4
NzIuLjFjZjVmODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MywxNCArNTMsMTQgQEAgUGFzc1JlZlB0cjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNzUmVmUHRyPE1lc3NhZ2VQb3J0PiBwcnBQb3J0
KQogfQogCiAvLyBzdGF0aWMKLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGlu
Z3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBj
b250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91
cFNldHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkV29y
a2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUobmFtZSwgdXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQpKTsKICAgICBjb250
ZXh0LT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKICAgICByZXR1cm4gY29udGV4dC5y
ZWxlYXNlKCk7CiB9CiAKLVNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdv
cmtlclRocmVhZCogdGhyZWFkKQorU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFy
ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgdXNl
ckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCAwKQogICAgICwgbV9uYW1lKG5hbWUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXgg
N2NkOTliNy4uZTAxMzZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2VyR2xvYmFs
U2NvcGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBXb3JrZXJHbG9iYWxTY29wZSBC
YXNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpOworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlckdsb2JhbFNj
b3BlKCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRy
PEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAgU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hhcmVkV29ya2VyVGhy
ZWFkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVS
UklERTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKaW5kZXggZGY0OTU5Mi4uYTNjZGE1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnku
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aXNBdmFp
bGFibGUoKQogICAgIHJldHVybiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFu
Y2UoKS5pc0F2YWlsYWJsZSgpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNv
bm5lY3QoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093blB0cjxNZXNzYWdl
UG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbD4gcG9ydCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNl
KCkuY29ubmVjdFRvV29ya2VyKHdvcmtlciwgcG9ydCwgdXJsLCBuYW1lLCBlYyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCmluZGV4IGMz
ZDg3ZWMuLjA0OWY4NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAg
ICBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogCkBA
IC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKIAogICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFzc2VkIFNoYXJlZFdv
cmtlciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQsIGNyZWF0aW5nIGEg
bmV3IHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbm5lY3QoUGFz
c1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGEgZG9jdW1lbnQgaGFzIGJl
ZW4gZGV0YWNoZWQuCiAgICAgICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50RGV0YWNoZWQoRG9jdW1l
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcApp
bmRleCBiYWIzOTU4Li4xYWMxNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVkV29ya2VyVGhyZWFk
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHks
IFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdvcmtlclRocmVhZDo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdv
cmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyVGhyZWFkKG5hbWUsIHNj
cmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVyUHJv
eHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkpOwogfQogCi1TaGFyZWRXb3JrZXJUaHJlYWQ6
OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYg
d29ya2VyUmVwb3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKICAgICA6IFdvcmtlclRocmVh
ZCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5
LCB3b3JrZXJSZXBvcnRpbmdQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIDApCiAgICAgLCBtX25hbWUobmFtZS5pc29sYXRl
ZENvcHkoKSkKIHsKQEAgLTUzLDcgKzUzLDcgQEAgU2hhcmVkV29ya2VyVGhyZWFkOjp+U2hhcmVk
V29ya2VyVGhyZWFkKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRp
bmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+KQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29y
a2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4pCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUo
bV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCBlODcwZDFmLi5jYTA1YWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgKQEAgLTM5LDE0ICszOSwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTaGFyZWRXb3JrZXJUaHJlYWQg
OiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9y
dGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclRocmVhZCgpOwogCiAgICAgcHJv
dGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVS
UklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSk7CisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdz
KiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJl
cG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKIAog
ICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAK
aW5kZXggYzJmNjE5Ni4uYmE5MmYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAt
ODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogCiAgICAgd29ya2VyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJM
KHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBl
Yyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGE4MzQ2
ZGQuLmI3ZTZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJF
dmVudEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRp
b24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjaGVk
dWxlZEFjdGlvbi5oIgpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzQ2xlYW51cFRhc2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCi1Xb3JrZXJHbG9i
YWxTY29wZTo6V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29ya2VyVGhy
ZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK1dvcmtl
ckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFdvcmtl
clRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCiAg
ICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX2dy
b3VwU2V0dGluZ3Moc2V0dGluZ3MpCkBAIC0xMTcsMTcgKzExNywxNyBAQCB2b2lkIFdvcmtlckds
b2JhbFNjb3BlOjphcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBwb2xpYwogICAgIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVy
KHBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CiAKLUtVUkwgV29ya2VyR2xv
YmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIFdvcmtl
ckdsb2JhbFNjb3BlOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAg
ICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4K
LSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25zdHJ1Y3RvciB0byBo
YXZlIHRoaXMgYmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVS
TCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgaWYgKHVybC5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIC8v
IEFsd2F5cyB1c2UgVVRGLTggaW4gV29ya2Vycy4KLSAgICByZXR1cm4gS1VSTChtX3VybCwgdXJs
KTsKKyAgICByZXR1cm4gVVJMKG1fdXJsLCB1cmwpOwogfQogCi1TdHJpbmcgV29ya2VyR2xvYmFs
U2NvcGU6OnVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3QKK1N0cmluZyBXb3JrZXJHbG9iYWxT
Y29wZTo6dXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXNlckFn
ZW50OwogfQpAQCAtMjE3LDE4ICsyMTcsMTggQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6aW1w
b3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYKICAg
ICBBU1NFUlQoY29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogICAgIGVjID0gMDsKICAgICBWZWN0
b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdXJsc0VuZCA9IHVybHMuZW5kKCk7Ci0gICAgVmVj
dG9yPEtVUkw+IGNvbXBsZXRlZFVSTHM7CisgICAgVmVjdG9yPFVSTD4gY29tcGxldGVkVVJMczsK
ICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHVybHMuYmVnaW4o
KTsgaXQgIT0gdXJsc0VuZDsgKytpdCkgewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKCppdCk7CisgICAgICAgIGNvbnN0IFVS
TCYgdXJsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCgqaXQpOwogICAg
ICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjb21wbGV0ZWRVUkxzLmFw
cGVuZCh1cmwpOwogICAgIH0KLSAgICBWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGNvbXBsZXRlZFVSTHMuZW5kKCk7CisgICAgVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7CiAKLSAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIGZvciAoVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExv
YWRlcj4gc2NyaXB0TG9hZGVyKFdvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpOwogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpCiAgICAgICAgIHNjcmlwdExvYWRlci0+c2V0VGFyZ2V0VHlwZShS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzU2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA3MjRiNDBlLi43OGFmNzgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC02NSwxMSArNjUsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgICAgICB2aXJ0dWFsIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsg
cmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmKSBjb25zdCBPVkVSUklERSBGSU5BTDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIHZp
cnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFIEZJTkFM
OwogCiAgICAgICAgIGNvbnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSB7IHJldHVy
biBtX2dyb3VwU2V0dGluZ3MuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgT1ZFUlJJREU7CiAKQEAgLTEzOSw3ICsxMzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW4qIHRv
cE9yaWdpbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9CiAK
ICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgV29ya2Vy
VGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKKyAgICAgICAg
V29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBh
c3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFdvcmtlclRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQ
b2xpY3lGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBs
b2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1Jl
ZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJFdmVudFF1ZXVlJiBldmVu
dFF1ZXVlKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKLSAgICAgICAgS1VSTCBtX3VybDsKKyAg
ICAgICAgVVJMIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgICAgIE93
blB0cjxHcm91cFNldHRpbmdzPiBtX2dyb3VwU2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggZDk3YTA3Yy4uYTk1ZGM3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3Mg
S1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgV29ya2VyOwogCiAgICAgLy8gQSBwcm94
eSB0byB0YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2JhbFNjb3BlUHJveHko
KSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckds
b2JhbFNjb3BlKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckxvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgK
aW5kZXggNGJkMzU5MS4uMTExMWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uaApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
QEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3Jr
ZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckxvY2F0aW9uPiB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlvbj4gY3JlYXRlKGNv
bnN0IEtVUkwmIHVybCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyTG9jYXRpb24+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXb3JrZXJMb2NhdGlvbih1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogICAgICAgICBTdHJpbmcgaHJlZigp
IGNvbnN0OwogCkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigpOyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBLVVJMJiB1cmwpIDogbV91
cmwodXJsKSB7IH0KKyAgICAgICAgZXhwbGljaXQgV29ya2VyTG9jYXRpb24oY29uc3QgVVJMJiB1
cmwpIDogbV91cmwodXJsKSB7IH0KIAotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwg
bV91cmw7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBiNzRjZTQxLi4wMmVi
YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojp+V29ya2VyTWVz
c2FnaW5nUHJveHkoKQogICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHN0YXRpY19jYXN0PFdv
cmtlckdsb2JhbFNjb3BlKj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpKS0+dGhyZWFk
KCktPnRocmVhZElEKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6c3RhcnRX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBz
dGFydE1vZGUpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4gd2Ugc3VwcG9ydCBu
ZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCmluZGV4IDhhN2VjOGQuLjE4OTZhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUzLDcgKzUzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBXb3JrZXJHbG9iYWxT
Y29wZVByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhlc2UgbWV0aG9kcyBpbiB0aGUgd29y
a2VyIG9iamVjdCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgT1ZFUlJJREU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUpIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBPVkVSUklERTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSBPVkVS
UklERTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CmluZGV4IDkyMjcyMjYuLjhkYTRlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV29ya2VyU2NyaXB0TG9hZGVy
Ojp+V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6
OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVybDsKIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aQogICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKIH0KICAgICAKLXZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2Fk
ZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChj
bGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdv
cmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dAogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgb3B0aW9u
cyk7CiB9CiAKLWNvbnN0IEtVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBj
b25zdAorY29uc3QgVVJMJiBXb3JrZXJTY3JpcHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoIWZhaWxlZCgpKTsKICAgICByZXR1cm4gbV9yZXNwb25zZVVSTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGRjMWM1YmEu
LjljYjRmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
aApAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAj
aW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJD
bGllbnQuaCIKQEAgLTU2LDE0ICs1NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlclNjcmlwdExvYWRlcigpKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IEtVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOwotICAgICAgICB2b2lk
IGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYs
IENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7Cisg
ICAgICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFVSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7CisgICAgICAgIHZvaWQgbG9hZEFz
eW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09y
aWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCopOwogCiAgICAgICAg
IHZvaWQgbm90aWZ5RXJyb3IoKTsKIAogICAgICAgICBTdHJpbmcgc2NyaXB0KCk7Ci0gICAgICAg
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIGNvbnN0
IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNv
bnN0OwogICAgICAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQogCkBAIC05MSw4ICs5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
U3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsgICAgICAgIAogICAgICAgICBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1fc2NyaXB0
OwotICAgICAgICBLVVJMIG1fdXJsOwotICAgICAgICBLVVJMIG1fcmVzcG9uc2VVUkw7CisgICAg
ICAgIFVSTCBtX3VybDsKKyAgICAgICAgVVJMIG1fcmVzcG9uc2VVUkw7CiAgICAgICAgIGJvb2wg
bV9mYWlsZWQ7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogICAgICAgICBi
b29sIG1fZmluaXNoaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmlu
ZGV4IDk4M2Y5OWQuLjVlNDkyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAKQEAgLTMyLDExICszMiwxMSBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJl
YWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTY5LDEyICs2OSwxMiBAQCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVh
ZENvdW50KCkKIHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVw
RGF0YT4gY3JlYXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVu
dFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0
aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
LCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRVUkwsIHVzZXJBZ2Vu
dCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKICAgICB9CiAKLSAgICBL
VVJMIG1fc2NyaXB0VVJMOworICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBTdHJpbmcgbV91c2Vy
QWdlbnQ7CiAgICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1fZ3JvdXBTZXR0aW5nczsKICAgICBT
dHJpbmcgbV9zb3VyY2VDb2RlOwpAQCAtODMsMTAgKzgzLDEwIEBAIHB1YmxpYzoKICAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
OwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiBwcml2YXRlOgotICAg
IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJp
dHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICBXb3Jr
ZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIH07CiAKLVdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2Vy
VGhyZWFkU3RhcnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNv
bnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
CiAgICAgOiBtX3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQogICAgICwgbV91c2VyQWdlbnQo
dXNlckFnZW50Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUu
aXNvbGF0ZWRDb3B5KCkpCkBAIC0xMDQsNyArMTA0LDcgQEAgV29ya2VyVGhyZWFkU3RhcnR1cERh
dGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3QKICAgICBtX2dyb3VwU2V0dGluZ3MtPnNldEluZGV4ZWREQkRhdGFiYXNlUGF0aChzZXR0aW5n
cy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkuaXNvbGF0ZWRDb3B5KCkpOwogfQogCi1Xb3JrZXJU
aHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBz
b3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJl
cG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2Rl
IHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25z
dCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQorV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQo
Y29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91
cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJS
ZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9w
T3JpZ2luKQogICAgIDogbV90aHJlYWRJRCgwKQogICAgICwgbV93b3JrZXJMb2FkZXJQcm94eSh3
b3JrZXJMb2FkZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVw
b3J0aW5nUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBlYTM0
OTQ4Li5kNWRiMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTM5
LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAg
ICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwogICAgIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpAQCAtNzEsMTAgKzcx
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBHcm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CisgICAgICAg
IFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgICAgIC8v
IEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29udGV4dCBmb3IgdGhl
IHRocmVhZC4KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pID0gMDsKIAog
ICAgICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIHdvcmtlciB0aHJlYWQu
IERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBhY3Rpb25zIGJlZm9yZS9h
ZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkV2
ZW50TG9vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRleCAzODA2NDNhLi4zZTIwZDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwg
Y29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8RG9j
dW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlw
ZSwgMCwgS1VSTCgpLCBmYWxzZSk7CisgICAgUmVmUHRyPERvY3VtZW50PiBkb2MgPSBET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIFVSTCgpLCBmYWxzZSk7
CiAgICAgZG9jLT5zZXRDb250ZW50KHN0cik7CiAgICAgcmV0dXJuIGRvYy5yZWxlYXNlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxOWIxOTk0Li5jMjc1YjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ2OSwxMiArNDY5LDEy
IEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBIZWFkZXIoY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgICAgICAmJiAhbmFtZS5zdGFydHNXaXRoKHN0YXRpY0RhdGEtPm1fc2VjSGVh
ZGVyUHJlZml4LCBmYWxzZSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVy
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgb3BlbihtZXRob2QsIHVybCwgdHJ1ZSwgZWMp
OwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxI
dHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGludGVybmFsQWJvcnQoKTsKICAg
ICBTdGF0ZSBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTU1NCwxNyArNTU0LDE3IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwm
IHVybCwgYm9vbCBhc3luYywgRXhjCiAgICAgICAgIG1fc3RhdGUgPSBPUEVORUQ7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwm
IHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBFeGNlcHRpb25Db2RlJiBlYykK
K3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVS
TCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CisgICAgVVJMIHVybFdpdGhD
cmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKHVzZXIpOwog
CiAgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywgYXN5bmMsIGVjKTsKIH0KIAot
dm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25z
dCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmlu
ZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKKyAgICBVUkwgdXJsV2l0aENyZWRlbnRp
YWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAgICAgdXJs
V2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCmluZGV4IDI0MWVhNDUuLmY4MDY0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC04NiwxNiArODYsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5B
TCB7IHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
ICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgaW50IHN0
YXR1cyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRlQ3Jl
ZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhDcmVkZW50aWFscyhib29sLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcm
IHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJv
b2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgY29uc3Qg
U3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgdm9pZCBzZW5kKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoRG9jdW1lbnQqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFhNTEh0dHBS
ZXF1ZXN0VXBsb2FkPiBtX3VwbG9hZDsKIAotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJs
OwogICAgIFN0cmluZyBtX21ldGhvZDsKICAgICBIVFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRl
cnM7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX3JlcXVlc3RFbnRpdHlCb2R5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IDc4Nzg0NjIuLmRmODUzNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgWFNMSW1wb3J0UnVsZTo6
flhTTEltcG9ydFJ1bGUoKQogICAgICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhp
cyk7CiB9CiAKLXZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCit2b2lk
IFhTTEltcG9ydFJ1bGU6OnNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCiB7CiAgICAgaWYgKG1fc3R5bGVT
aGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KDApOwpAQCAt
OTAsNyArOTAsNyBAQCB2b2lkIFhTTEltcG9ydFJ1bGU6OmxvYWRTaGVldCgpCiAgICAgWFNMU3R5
bGVTaGVldCogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFwYXJl
bnRTaGVldC0+YmFzZVVSTCgpLmlzTnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxl
aGVldCdzIFVSTCBhcyB0aGUgYmFzZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50
U2hlZXQtPmJhc2VVUkwoKSwgbV9zdHJIcmVmKS5zdHJpbmcoKTsKKyAgICAgICAgYWJzSHJlZiA9
IFVSTChwYXJlbnRTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmluZygpOwogICAgIAog
ICAgIC8vIENoZWNrIGZvciBhIGN5Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4uICBJZiB3ZSBlbmNv
dW50ZXIgYSBzdHlsZXNoZWV0CiAgICAgLy8gaW4gb3VyIHBhcmVudCBjaGFpbiB3aXRoIHRoZSBz
YW1lIFVSTCwgdGhlbiBqdXN0IGJhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMSW1wb3J0UnVsZS5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuaAppbmRl
eCAzNTBjZGQ5Li43MmUwNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1w
b3J0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKQEAgLTU2
LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBYU0xJbXBvcnRSdWxlKFhTTFN0eWxl
U2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYpOwogCi0gICAgdmlydHVhbCB2
b2lkIHNldFhTTFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNl
VVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiBzaGVldCk7CiAgICAgCiAgICAgWFNMU3R5bGVTaGVldCogbV9wYXJlbnRTdHlsZVNoZWV0Owog
ICAgIFN0cmluZyBtX3N0ckhyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCBk
MzQ2YWFmLi5mZDFlMzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTQwLDIy
ICs0MCwyMiBAQCBjbGFzcyBYU0xJbXBvcnRSdWxlOwogICAgIAogY2xhc3MgWFNMU3R5bGVTaGVl
dCBGSU5BTCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50
SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudElt
cG9ydCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5v
ZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYg
ZmluYWxVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hl
ZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBmYWxzZSkpOwogICAgIH0KLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGVFbWJlZGRlZChQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVkKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgVVJMJiBmaW5hbFVSTCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnROb2RlLCBmaW5hbFVS
TC5zdHJpbmcoKSwgZmluYWxVUkwsIHRydWUpKTsKICAgICB9CiAKICAgICAvLyBUYWtpbmcgYW4g
YXJiaXRyYXJ5IG5vZGUgaXMgdW5zYWZlLCBiZWNhdXNlIG93bmVyIG5vZGUgcG9pbnRlciBjYW4g
YmVjb21lIHN0YWxlLgogICAgIC8vIFhTTFRQcm9jZXNzb3IgZW5zdXJlcyB0aGF0IHRoZSBzdHls
ZXNoZWV0IGRvZXNuJ3Qgb3V0bGl2ZSBpdHMgcGFyZW50LCBpbiBwYXJ0IGJ5IG5vdCBleHBvc2lu
ZyBpdCB0byBKYXZhU2NyaXB0LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+
IGNyZWF0ZUZvclhTTFRQcm9jZXNzb3IoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
WFNMU3R5bGVTaGVldD4gY3JlYXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBwYXJlbnROb2RlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudE5vZGUsIG9yaWdp
bmFsVVJMLCBmaW5hbFVSTCwgZmFsc2UpKTsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2b2lkIGNoZWNrTG9hZGVkKCk7CiAgICAgCi0gICAgY29uc3QgS1VSTCYg
ZmluYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsVVJMOyB9CisgICAgY29uc3QgVVJMJiBm
aW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KIAogICAgIHZvaWQgbG9hZENo
aWxkU2hlZXRzKCk7CiAgICAgdm9pZCBsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYp
OwpAQCAtOTQsMTggKzk0LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFIHsgbV9vd25lck5vZGUgPSAwOyB9Ci0gICAg
dmlydHVhbCBLVVJMIGJhc2VVUkwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZpbmFsVVJM
OyB9CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
ZmluYWxVUkw7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50
Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGJv
b2wgZW1iZWRkZWQpOwotICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1w
b3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7Cisg
ICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMLCBib29sIGVtYmVkZGVkKTsKKyAgICBYU0xTdHlsZVNo
ZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVS
TCwgY29uc3QgVVJMJiBmaW5hbFVSTCk7CiAgICAgCiAgICAgTm9kZSogbV9vd25lck5vZGU7CiAg
ICAgU3RyaW5nIG1fb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCBtX2ZpbmFsVVJMOworICAgIFVSTCBt
X2ZpbmFsVVJMOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogCiAgICAgVmVjdG9yPE93blB0cjxY
U0xJbXBvcnRSdWxlPiA+IG1fY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcAppbmRleCA2N2ZmMWViLi5mZTc0ZTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgU09GVF9M
SU5LKGxpYnhzbHQsIHhzbHRMb2FkU3R5bGVzaGVldFBJLCB4c2x0U3R5bGVzaGVldFB0ciwgKHht
bERvY1B0ciBkb2MpLCAoZG8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1YU0xTdHlsZVNoZWV0
OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorWFNMU3R5bGVTaGVldDo6WFNMU3R5
bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFs
VVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIDogbV9vd25lck5vZGUoMCkKICAgICAsIG1f
b3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpCiAgICAgLCBtX2ZpbmFsVVJMKGZpbmFsVVJMKQpAQCAt
NjcsNyArNjcsNyBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUq
IHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUgogewogfQogCi1YU0xTdHlsZVNo
ZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkKK1hTTFN0eWxlU2hl
ZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
bFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCwgIGJvb2wgZW1iZWRkZWQpCiAgICAgOiBtX293bmVy
Tm9kZShwYXJlbnROb2RlKQogICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKICAgICAs
IG1fZmluYWxVUkwoZmluYWxVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5k
ZXggMGQwNzk1Mi4uYWViYTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApA
QCAtNzYsMTAgKzc2LDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNy
ZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjCiAKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUgPT0gInRleHQvcGxhaW4i
KSB7Ci0gICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9j
dW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7CisgICAgICAgIHJlc3VsdCA9
IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50
LT51cmwoKSA6IFVSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0cmluZ1RvWEhUTUxEb2N1
bWVudFN0cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlc3VsdCA9
IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJhbWUs
IHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSwgZmFsc2Up
OworICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoc291
cmNlTUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3duZXJEb2N1bWVudC0+dXJs
KCkgOiBVUkwoKSwgZmFsc2UpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNpbmcsIHdlIG5lZWQgdG8g
c2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhlIG5ldyBkb2N1bWVudAog
ICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBpZiB3ZSdyZSByZW5kZXJp
bmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ckxpYnhzbHQuY3BwCmluZGV4IDZmMDg0OWQuLmU5NTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB4
bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxDaGFyKiB1cmksCiAgICAgY2FzZSBYU0xU
X0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRyYW5zZm9ybUNvbnRleHRQdHIgY29udGV4
dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0OwogICAgICAgICB4bWxDaGFyKiBiYXNl
ID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1lbnQtPmRvYywgY29udGV4dC0+bm9kZSk7
Ci0gICAgICAgIEtVUkwgdXJsKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkp
OworICAgICAgICBVUkwgdXJsKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odXJpKSk7
CiAgICAgICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAg
ICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggMzM4NzA5
MS4uYjE4NjE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNDEwLDcgKzQxMCw3IEBAIHN0YXRpYyB2b2lk
IHN3aXRjaFRvVVRGMTYoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KQogICAgIHhtbFN3aXRjaEVuY29k
aW5nKGN0eHQsIEJPTUhpZ2hCeXRlID09IDB4RkYgPyBYTUxfQ0hBUl9FTkNPRElOR19VVEYxNkxF
IDogWE1MX0NIQVJfRU5DT0RJTkdfVVRGMTZCRSk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZEFs
bG93RXh0ZXJuYWxMb2FkKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZEFsbG93
RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1
cmwuc3RyaW5nKCk7CiAKQEAgLTQ1MSw3ICs0NTEsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMo
Y29uc3QgY2hhciogdXJpKQogICAgIEFTU0VSVChYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJy
ZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bGlieG1sTG9hZGVyVGhyZWFkKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBV
UkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCFzaG91bGRBbGxvd0V4dGVybmFsTG9hZCh1
cmwpKQogICAgICAgICByZXR1cm4gJmdsb2JhbERlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlN2E2
ZjQuLmRkNmMyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogV2ViS2l0LnZj
eHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorICAgICAg
ICBMZXQgdGhlIHNjcmlwdCB0byB0cnkgdG8gcmVuYW1lIGhlcmUuCisKIDIwMTMtMDktMjYgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3Ry
ZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dl
YktpdEV4cG9ydHMuZGVmLmluCmluZGV4IDgzYjM4YzQuLmMxYzdmZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4
cG9ydHMuZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhw
b3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0zOTMsNyArMzkzLDcgQEAgRVhQ
T1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkQXV0aG9yU2hlZXRARG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0ckBWU3R5bGVTaGVl
dENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkQXV0aG9yU2hlZXRARG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRRUFBWFY/JFBhc3NSZWZQdHJAVlN0eWxlU2hlZXRD
b250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3Bh
cnNlU3RyaW5nQFN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVfTkFCVlN0cmluZ0BXVEZA
QEBaLCA/cGFyc2VTdHJpbmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQFFFQUFfTkFFQlZT
dHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2VtcHR5U3RyaW5nQFdU
RkBAWUFBQlZTdHJpbmdAMUBYWiwgP2VtcHR5U3RyaW5nQFdURkBAWUFBRUJWU3RyaW5nQDFAWFop
Ci0gICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEtVUkxAV2ViQ29yZUBAQUFF
WFhaLCA/aW52YWxpZGF0ZUBLVVJMQFdlYkNvcmVAQEFFQUFYWFopCisgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD9pbnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBQUVYWFosID9pbnZhbGlkYXRlQFVS
TEBXZWJDb3JlQEBBRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/PzBTdHlsZVNo
ZWV0Q29udGVudHNAV2ViQ29yZUBAQUFFQFBBVlN0eWxlUnVsZUltcG9ydEAxQEFCVlN0cmluZ0BX
VEZAQEFCVUNTU1BhcnNlckNvbnRleHRAMUBAWiwgPz8wU3R5bGVTaGVldENvbnRlbnRzQFdlYkNv
cmVAQEFFQUFAUEVBVlN0eWxlUnVsZUltcG9ydEAxQEFFQlZTdHJpbmdAV1RGQEBBRUJVQ1NTUGFy
c2VyQ29udGV4dEAxQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkVXNlclNoZWV0
QERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUFFWFY/JFBhc3NSZWZQdHJA
VlN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWiwgP2FkZFVzZXJTaGVldEBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFzc1JlZlB0ckBWU3R5
bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9p
bnRlcig/PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUFFQFhaLCA/PzFTdHlsZVNoZWV0
Q29udGVudHNAV2ViQ29yZUBAUUVBQUBYWikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViQ29va2llSmFyLmNwcAppbmRleCBiM2JhOGYzLi4xOTQ2ODg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBA
CiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWVNYW5hZ2VyLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM1LDcg
KzM1LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogCiBzdGQ6OnZlY3RvcjxCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiBXZWJDb29raWVKYXI6OmNvb2tpZXMoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdXJsKQogewotICAgIEtVUkwga3VybCA9IEtVUkwo
S1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1cmwpOwogCiAgICAgVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICBjb29raWVNYW5hZ2Vy
KCkuZ2V0UmF3Q29va2llcyhyYXdDb29raWVzLCBrdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsK
QEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmlu
Zz4gV2ViQ29va2llSmFyOjpjb29raWVzKGNvbnN0IEJsYWNrQmVycnkKIAogdm9pZCBXZWJDb29r
aWVKYXI6OnNldENvb2tpZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdXJs
LCBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgY29va2ll
cykKIHsKLSAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwga3VybCA9
IFVSTChVUkwoKSwgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JlQ29va2llczsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGNvcmVD
b29raWVzLmFwcGVuZChjb29raWVzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAppbmRleCAyZTYzOGU2Li44NzIyOGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRDb2RlYy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwCkBAIC0x
OSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0VGV4dENv
ZGVjLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
VGV4dENvZGVjSUNVLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKaW5kZXggMDBlNjg0MC4uNDk5ZWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwCkBAIC0yMjQsMTMgKzIyNCwxMyBAQCBjb25zdCBkb3VibGUgbWF4aW11
bUltYWdlRG9jdW1lbnRab29tVG9GaXRTY2FsZSA9IDI7CiBjb25zdCBkb3VibGUgem9vbUZhY3Rv
ckVwc2lsb24gPSAwLjAwMDE7CiAKIC8vIEhlbHBlciBmdW5jdGlvbiB0byBwYXJzZSBhIFVSTCBh
bmQgZmlsbCBpbiBtaXNzaW5nIHBhcnRzLgotc3RhdGljIEtVUkwgcGFyc2VVcmwoY29uc3QgU3Ry
aW5nJiB1cmwpCitzdGF0aWMgVVJMIHBhcnNlVXJsKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAg
IFN0cmluZyB1cmxTdHJpbmcodXJsKTsKLSAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJs
U3RyaW5nKTsKKyAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKTsKICAgICBpZiAo
a3VybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkgewogICAgICAgICB1cmxTdHJpbmcuaW5zZXJ0KCJo
dHRwOi8vIiwgMCk7Ci0gICAgICAgIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKTsKKyAg
ICAgICAga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKTsKICAgICB9CiAKICAgICByZXR1cm4g
a3VybDsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjppbml0KGNvbnN0
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhZ2VHcm91cE5hbWUpCiAKIGNsYXNzIERl
ZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQ6IHB1YmxpYyBEZWZlcnJlZFRhc2s8JldlYlBhZ2VQ
cml2YXRlOjptX3dvdWxkTG9hZE1hbnVhbFNjcmlwdD4gewogcHVibGljOgotICAgIGV4cGxpY2l0
IERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQoV2ViUGFnZVByaXZhdGUqIHdlYlBhZ2VQcml2
YXRlLCBjb25zdCBLVVJMJiB1cmwpCisgICAgZXhwbGljaXQgRGVmZXJyZWRUYXNrTG9hZE1hbnVh
bFNjcmlwdChXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZVByaXZhdGUsIGNvbnN0IFVSTCYgdXJsKQog
ICAgICAgICA6IERlZmVycmVkVGFza1R5cGUod2ViUGFnZVByaXZhdGUpCiAgICAgewogICAgICAg
ICB3ZWJQYWdlUHJpdmF0ZS0+bV9jYWNoZWRNYW51YWxTY3JpcHQgPSB1cmw7CkBAIC02ODMsNyAr
NjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBQbGF0Zm9ybTo6TmV0d29y
a1JlcXVlc3QmIG5ldFJlcSwgYm9vbCBuZWVkUmVmZXIKICAgICB9IGVsc2UKICAgICAgICAgbV9t
YWluRnJhbWUtPnNldEluVmlld1NvdXJjZU1vZGUoZmFsc2UpOwogCi0gICAgS1VSTCBrdXJsID0g
cGFyc2VVcmwodXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IHBhcnNlVXJsKHVybFN0cmluZyk7
CiAgICAgaWYgKHByb3RvY29sSXMoa3VybCwgImphdmFzY3JpcHQiKSkgewogICAgICAgICAvLyBO
ZXZlciBydW4gamF2YXNjcmlwdCB3aGlsZSBsb2FkaW5nIGlzIGRlZmVycmVkLgogICAgICAgICBp
ZiAobV9wYWdlLT5kZWZlcnNMb2FkaW5nKCkpCkBAIC03MzksMTQgKzczOSwxNCBAQCB2b2lkIFdl
YlBhZ2U6OmxvYWQoY29uc3QgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IG5lZWRSZWZlcmVyKQogCiB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkU3RyaW5nKGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHN0cmluZywgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmlu
ZyYgY29udGVudFR5cGUsIGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIGZhaWxp
bmdVUkwpCiB7Ci0gICAgS1VSTCBrdXJsID0gcGFyc2VVcmwoYmFzZVVSTCk7CisgICAgVVJMIGt1
cmwgPSBwYXJzZVVybChiYXNlVVJMKTsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChrdXJs
KTsKICAgICBXVEY6OlJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcgogICAgICAgICA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHN0cmluZy5jX3N0cigpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIFN1
YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwKICAgICAgICAgZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCiAgICAgICAgIGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShjb250ZW50VHlwZSksCi0gICAgICAgICFmYWlsaW5nVVJMLmVtcHR5KCkgPyBw
YXJzZVVybChmYWlsaW5nVVJMKSA6IEtVUkwoKSk7CisgICAgICAgICFmYWlsaW5nVVJMLmVtcHR5
KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IFVSTCgpKTsKICAgICBtX21haW5GcmFtZS0+bG9h
ZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0
dXRlRGF0YSkpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBAQCBib29sIFdlYlBhZ2U6OmV4ZWN1
dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IHN0ZDo6d3N0cmluZyYgc2NyaXB0LCBK
YXZhUwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIFN0cmluZyBzdHIgPSBTdHJp
bmcoZGF0YSwgbGVuZ3RoQ29waWVkKTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUo
c3RyLCBLVVJMKCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShzdHIsIFVSTCgp
KTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoc291cmNl
Q29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFsdWUpOwogfQogCiBib29sIFdlYlBhZ2U6OmV4ZWN1
dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmIHNjcmlwdFVURjgsIEphdmFTY3JpcHREYXRhVHlwZSYgcmV0dXJuVHlwZSwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcmV0dXJuVmFsdWUpCiB7CiAgICAgQkxBQ0tCRVJSWV9B
U1NFUlQoc2NyaXB0VVRGOC5pc1V0ZjgoKSk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VD
b2RlKHNjcmlwdFVURjgsIEtVUkwoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2Rl
KHNjcmlwdFVURjgsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUphdmFTY3JpcHRJbklz
b2xhdGVkV29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFsdWUpOwogfQogCkBA
IC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlMKICAgICBpZiAoc291cmNl
LT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRlc3RpbmF0aW9uKEtV
UkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVz
dGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5o
b3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAtMTAxMyw3ICsxMDEz
LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm0KICAgICBpZiAoc291cmNlLT5pc1VuaXF1ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRlc3RpbmF0aW9uKEtVUkwoKSwgZGVzdGlu
YXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVzdGluYXRpb25Pcmln
aW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAtMjA2NCw3ICsyMDY0LDcgQEAgYm9v
bCBXZWJQYWdlUHJpdmF0ZTo6aXNBY3RpdmUoKSBjb25zdAogICAgIHJldHVybiBtX2NsaWVudC0+
aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25T
cGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgaW5wdXRDcmVkZW50aWFsKQordm9pZCBXZWJQYWdlUHJp
dmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENyZWRl
bnRpYWwpCiB7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyKiBhdXRobWdyID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0YW5jZSgpOwogICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpTdHJpbmcgdXNlcm5hbWU7CkBAIC0yMTU2LDcgKzIxNTYsNyBAQCBQbGF0
Zm9ybTo6V2ViQ29udGV4dCBXZWJQYWdlUHJpdmF0ZTo6d2ViQ29udGV4dChUYXJnZXREZXRlY3Rp
b25TdHJhdGVneSBzdHJhdGVneQogICAgIE5vZGUqIGxpbmtOb2RlID0gbm9kZS0+ZW5jbG9zaW5n
TGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAgICAgLy8gU2V0IGxpbmsgdXJsIG9ubHkgd2hlbiB0
aGUgbm9kZSBpcyBsaW5rZWQgaW1hZ2UsIG9yIHRleHQgaW5zaWRlIGFuY2hvci4gUHJldmVudCBD
Q00gcG9wdXAgd2hlbiBsb25nIHByZXNzIG5vbi1saW5rIGVsZW1lbnQoZWcuIGJ1dHRvbikgaW5z
aWRlIGFuIGFuY2hvci4KICAgICBpZiAobGlua05vZGUgJiYgKG5vZGUgPT0gbGlua05vZGUgfHwg
bm9kZS0+aXNUZXh0Tm9kZSgpIHx8IG5vZGVJc0ltYWdlKSkgewotICAgICAgICBLVVJMIGhyZWY7
CisgICAgICAgIFVSTCBocmVmOwogICAgICAgICBpZiAobGlua05vZGUtPmlzTGluaygpICYmIGxp
bmtOb2RlLT5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAgICAgIGlmIChjb25zdCBBdHRyaWJ1
dGUqIGF0dHJpYnV0ZSA9IHRvRWxlbWVudChsaW5rTm9kZSktPmZpbmRBdHRyaWJ1dGVCeU5hbWUo
SFRNTE5hbWVzOjpocmVmQXR0cikpCiAgICAgICAgICAgICAgICAgaHJlZiA9IGxpbmtOb2RlLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMo
YXR0cmlidXRlLT52YWx1ZSgpKSk7CkBAIC00ODk3LDcgKzQ4OTcsNyBAQCB2b2lkIFdlYlBhZ2U6
OmluaXRQb3B1cFdlYlZpZXcoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgIGQtPm1fcGFnZVBvcHVwLT5pbml0aWFsaXplKHdlYlBhZ2UpOwogfQogCi1TdHJpbmcgV2Vi
UGFnZVByaXZhdGU6OmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK1N0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRlcm5TdHJpbmdGb3JVcmwoY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKChtX3dlYlNldHRpbmdzLT5zaG91bGRIYW5kbGVQ
YXR0ZXJuVXJscygpICYmIHByb3RvY29sSXModXJsLCAicGF0dGVybiIpKQogICAgICAgICB8fCBw
cm90b2NvbElzKHVybCwgInRlbCIpCkBAIC01ODQxLDcgKzU4NDEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyhXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiAKICAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIHN0eWxlc2hlZXRVUkwgPSB3ZWJTZXR0aW5n
cy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwogICAgIGlmICghc3R5bGVzaGVldFVSTC5lbXB0
eSgpKQotICAgICAgICBjb3JlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VS
TChLVVJMKCksIHN0eWxlc2hlZXRVUkwpKTsKKyAgICAgICAgY29yZVNldHRpbmdzLT5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwoKSwgc3R5bGVzaGVldFVSTCkpOwogCiAgICAgY29y
ZVNldHRpbmdzLT5zZXRGaXJzdFNjaGVkdWxlZExheW91dERlbGF5KHdlYlNldHRpbmdzLT5maXJz
dFNjaGVkdWxlZExheW91dERlbGF5KCkpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0VXNlQ2FjaGUo
d2ViU2V0dGluZ3MtPnVzZVdlYktpdENhY2hlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZV9wLmgKaW5kZXggYTdlODNmMS4uNDdjZDhlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTGF5
ZXJSZW5kZXJlci5oIgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNlbmRpZgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXIu
aCIKICNlbmRpZgpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBz
aG93QWxlcnREaWFsb2coV2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlIGF0eXBlKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CisgICAgdmlydHVhbCB2b2lk
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKICAgICB2
aXJ0dWFsIFNhdmVDcmVkZW50aWFsVHlwZSBub3RpZnlTaG91bGRTYXZlQ3JlZGVudGlhbChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJik7CiAKQEAgLTM0OSw3ICszNDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0
aGlzIHVybCBzaG91bGQgYmUgaGFuZGxlZCBhcyBhIHBhdHRlcm4sIHJldHVybnMgdGhlIHBhdHRl
cm4KICAgICAvLyBvdGhlcndpc2UsIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgotICAgIFN0cmlu
ZyBmaW5kUGF0dGVyblN0cmluZ0ZvclVybChjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7Cisg
ICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNv
bnN0OwogCiAgICAgdm9pZCBzdXNwZW5kQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCByZXN1bWVC
YWNraW5nU3RvcmUoKTsKQEAgLTYyMSw3ICs2MjEsNyBAQCBwdWJsaWM6CiAgICAgaW50IG1fY2Fj
aGVkUG9wdXBMaXN0U2VsZWN0ZWRJbmRleDsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nIG1fY2FjaGVkRGF0ZVRpbWVJbnB1dDsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nIG1fY2FjaGVkQ29sb3JJbnB1dDsKLSAgICBXZWJDb3JlOjpLVVJMIG1fY2FjaGVkTWFudWFs
U2NyaXB0OworICAgIFdlYkNvcmU6OlVSTCBtX2NhY2hlZE1hbnVhbFNjcmlwdDsKIAogICAgIGNs
YXNzIERlZmVycmVkVGFza0Jhc2UgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hh
bmdlTG9nCmluZGV4IGM4NmQwOTguLjQ4MGQzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5n
IHNjcmlwdC4KKwogMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xl
dG9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDMyMzkzYTcuLmE1
MjI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKQEAgLTQxLDcgKzQx
LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSWNvbi5oIgogI2lu
Y2x1ZGUgIklucHV0SGFuZGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOb2Rl
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01
NCw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNoYXJlZFBvaW50ZXIuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlICJXZWJQYWdlQ2xpZW50LmgiCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFnZSogQ2hyb21lQ2xp
ZW50QmxhY2tCZXJyeTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2Fk
UmVxdWVzdCYKICAgICAvLyBCYWlsIG91dCBlYXJseSB3aGVuIHdlIGFyZW4ndCBhbGxvd2VkIHRv
IGRpc3BsYXkgdGhlIHRhcmdldCBvcmlnaW4sIG90aGVyd2lzZSwKICAgICAvLyBpdCB3b3VsZCBi
ZSBoYXJtZnVsIGFuZCB0aGUgd2luZG93IHdvdWxkIGJlIHVzZWxlc3MuIFRoaXMgaXMgdGhlIHNh
bWUgY2hlY2sKICAgICAvLyBhcyB0aGUgb25lIGluIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KCkuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJs
KCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsLnN0
cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNwcAppbmRl
eCA0MTY5MGJkLi43YTAwZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHAKQEAgLTI0LDcg
KzI0LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAi
Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2Vy
LmgKaW5kZXggNTFkMTgxNy4uZDUwNzlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmgKQEAgLTMz
LDcgKzMzLDcgQEAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuY3Bw
CmluZGV4IDhlM2RmNDAuLjYwYjdkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1E
YXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1E
YXRhLmgiCiAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDksOSArNDksOSBAQCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IHNp
emVfdCBtYXhQYXNzd29yZHMgPSAzOwogCiAvLyBIZWxwZXIgbWV0aG9kIHRvIGNsZWFyIHVybCBv
ZiB1bm5lZWRlZCBwYXJ0cy4KLUtVUkwgc3RyaXBVUkwoY29uc3QgS1VSTCYgdXJsKQorVVJMIHN0
cmlwVVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIEtVUkwgc3RyaXBwZWRVUkwgPSB1cmw7Cisg
ICAgVVJMIHN0cmlwcGVkVVJMID0gdXJsOwogICAgIHN0cmlwcGVkVVJMLnNldFVzZXIoU3RyaW5n
KCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFBhc3MoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJM
LnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTc4LDEzICs3OCwxMyBAQCBDcmVkZW50aWFsVHJhbnNm
b3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9ybURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBi
b29sIGlzRgogICAgIEFTU0VSVChmb3JtKTsKIAogICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgVVJM
Ci0gICAgS1VSTCBmdWxsT3JpZ2luKFBhcnNlZFVSTFN0cmluZywgZm9ybS0+ZG9jdW1lbnQoKS0+
ZG9jdW1lbnRVUkkoKSk7CisgICAgVVJMIGZ1bGxPcmlnaW4oUGFyc2VkVVJMU3RyaW5nLCBmb3Jt
LT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgpKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2Fu
b25pY2FsIGFjdGlvbiBVUkwKICAgICBTdHJpbmcgYWN0aW9uID0gZm9ybS0+YWN0aW9uKCk7CiAg
ICAgaWYgKGFjdGlvbi5pc051bGwoKSkKICAgICAgICAgYWN0aW9uID0gIiI7IC8vIG1pc3Npbmcg
J2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMgY3VycmVudCBVUkwKLSAgICBLVVJMIGZ1bGxBY3Rp
b24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChhY3Rpb24pOworICAgIFVSTCBmdWxs
QWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoYWN0aW9uKTsKICAgICBpZiAo
IWZ1bGxBY3Rpb24uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk1LDcgKzk1LDcg
QEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKEhUTUxG
b3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YKICAgICBpZiAoIWlzRm9yU2F2aW5nICYmIG1fb2xk
UGFzc3dvcmRFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IHN0cmlw
VVJMKGZ1bGxPcmlnaW4pOworICAgIFVSTCB1cmwgPSBzdHJpcFVSTChmdWxsT3JpZ2luKTsKICAg
ICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxBY3Rpb24pOwogICAgIG1fcHJvdGVjdGlvblNwYWNl
ID0gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0KCksIHVybC5wb3J0KCksIFByb3RlY3Rpb25TcGFj
ZVNlcnZlckhUVFAsICJGb3JtIiwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVI
VE1MRm9ybSk7CiAgICAgbV9jcmVkZW50aWFsID0gQ3JlZGVudGlhbChtX3VzZXJOYW1lRWxlbWVu
dC0+dmFsdWUoKSwgbV9wYXNzd29yZEVsZW1lbnQtPnZhbHVlKCksIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZVBlcm1hbmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCmluZGV4IDZk
ZWU3ZWQuLjIwYWY1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCkBAIC0y
Miw3ICsyMiw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkhUTUxGb3Jt
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBmaW5kUGFzc3dvcmRGb3JtRmllbGRzKGNvbnN0IEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJv
b2wgbG9jYXRlU3BlY2lmaWNQYXNzd29yZHMoY29uc3QgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQq
PiYgcGFzc3dvcmRzKTsKIAotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9uOwog
ICAgIFByb3RlY3Rpb25TcGFjZSBtX3Byb3RlY3Rpb25TcGFjZTsKICAgICBtdXRhYmxlIENyZWRl
bnRpYWwgbV9jcmVkZW50aWFsOwogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX3VzZXJO
YW1lRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAK
aW5kZXggODM4NTg4MC4uZGJjYmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgbV9jbGll
bnRSZWRpcmVjdElzUGVuZGluZyA9IGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwm
LCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3VibGUp
CiB7CiAgICAgaWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCiAgICAgICAg
IG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZERpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdCgpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihGcmFtZVAKIHsKICAgICBQb2xpY3lBY3Rpb24gZGVjaXNpb24gPSBQb2xpY3lJZ25vcmU7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBG
cmFnbWVudCBzY3JvbGxzIG9uIHRoZSBzYW1lIHBhZ2Ugc2hvdWxkIGFsd2F5cyBiZSBoYW5kbGVk
IGludGVybmFsbHkuCiAgICAgICAgIC8vIChPbmx5IGNvdW50IGFzIGEgZnJhZ21lbnQgc2Nyb2xs
IGlmIHdlIGFyZSBzY3JvbGxpbmcgdG8gYSAjZnJhZ21lbnQgdXJsLCBub3QgYmFjayB0byB0aGUg
dG9wLCBhbmQgcmVsb2FkaW5nCiAgICAgICAgIC8vIHRoZSBzYW1lIHVybCBpcyBub3QgYSBmcmFn
bWVudCBzY3JvbGwgZXZlbiBpZiBpdCBoYXMgYSAjZnJhZ21lbnQuKQotICAgICAgICBjb25zdCBL
VVJMJiBjdXJyZW50VXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgICAgIGNv
bnN0IFVSTCYgY3VycmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgICAg
ICBib29sIGlzRnJhZ21lbnRTY3JvbGwgPSB1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYg
dXJsICE9IGN1cnJlbnRVcmwgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjdXJy
ZW50VXJsLCB1cmwpOwogICAgICAgICBkZWNpc2lvbiA9IGRlY2lkZVBvbGljeUZvckV4dGVybmFs
TG9hZChyZXF1ZXN0LCBpc0ZyYWdtZW50U2Nyb2xsKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1
bWVudChjb25zdCBTdHJpbmcmIG1pCiB9CiAKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LAotICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLAorICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAg
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlSW4sIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIFN0cmluZyBtaW1lVHlwZShtaW1lVHlw
ZUluKTsKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAgICAg
ICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEFsd2F5cyBpZ25vcmUg
ZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KICAgICAgICAgICAgIFdURjo6UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNlLmlzOEJp
dCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3RlcnM4KCkp
IDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKLSAgICAgICAgICAg
IHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwi
LCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBT
dWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwgVVJMKCkpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnk6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIH0K
IAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0IEtV
UkwmKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0
IFVSTCYpCiB7CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViU2V0dGluZ3MtPnVz
ZXJBZ2VudFN0cmluZygpOwogfQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0CiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZFJl
Y2VpdmVUaXRsZUZvckZyYW1lKHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIC8qdGl0bGUqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiAvKnRp
dGxlKi8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktp
dCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAv
LyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBp
dCBldmVyIGRvZXMsCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUUK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yUGFnZSA9IG1fd2ViUGFnZVByaXZh
dGUtPm1fY2xpZW50LT5nZXRFcnJvclBhZ2UoZXJyb3IuZXJyb3JDb2RlKCksIGVycm9yLmxvY2Fs
aXplZERlc2NyaXB0aW9uKCksIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAgU3Vic3RpdHV0ZURh
dGEgZXJyb3JEYXRhKHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRtbCIsICJ1dGYtOCIs
IEtVUkwoS1VSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBl
cnJvckRhdGEodXRmOEJ1ZmZlcihlcnJvclBhZ2UpLCAidGV4dC9odG1sIiwgInV0Zi04IiwgVVJM
KFVSTCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKIAogICAgIC8vIExvYWRpbmcgdXNpbmcgU3Vi
c3RpdHV0ZURhdGEgd2lsbCByZXBsYWNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggb3VyCiAg
ICAgLy8gZXJyb3IgZGF0YS4gVGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZCwKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9y
bVN0YQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZQor
UGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxv
d3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBp
ZiAoIW1fd2ViUGFnZVByaXZhdGUpCkBAIC04MTUsNyArODE1LDcgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1
cmwsIGNvbnMKICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLU9iamVjdENv
bnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAg
IFN0cmluZyBtaW1lVHlwZSA9IG1pbWVUeXBlSW47CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHko
KSkKQEAgLTExMzksNyArMTEzOSw3IEBAIFBvbGljeUFjdGlvbiBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChjb25zdCBSZXNvCiAgICAgLy8g
YW5kIGV4cG9zZWQgdG8gY2xpZW50LiBCZWZvcmUgdGhhdCwgZG9uJ3QgcmV0dXJuIFBvbGljeUln
bm9yZSBzbyB3ZSBjYW4gY29udGludWUgdG8KICAgICAvLyBjcmVhdGUgbmV3IHdpbmRvdyBhbmQg
Z2V0IHRvIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigpIHdoZXJlIHRo
ZSBjbGllbnQKICAgICAvLyBpcyBnaXZlbiBhIGNoYW5jZSB0byBkZWNpZGUgaG93IHRvIGhhbmRs
ZSBwYXR0ZXJucyBzdWNoIGFzICdtYWlsdG86Jy4KLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1
ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBTdHJp
bmcgcGF0dGVybiA9IG1fd2ViUGFnZVByaXZhdGUtPmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKHVy
bCk7CiAgICAgaWYgKCFwYXR0ZXJuLmlzRW1wdHkoKSkgewogICAgICAgICBtX3dlYlBhZ2VQcml2
YXRlLT5tX2NsaWVudC0+aGFuZGxlU3RyaW5nUGF0dGVybihwYXR0ZXJuLmNoYXJhY3RlcnMoKSwg
cGF0dGVybi5sZW5ndGgoKSk7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hEaWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoY29u
c3QgUmVzbwogICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlEaWRMb2FkRnJv
bUFwcGxpY2F0aW9uQ2FjaGUoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzZWN1cml0eU9yaWdpbkZvck5ld0RvY3VtZW50KGNv
bnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZyYW1lTG9hZGVyQ2xp
ZW50QmxhY2tCZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICAvLyBXaGF0IHdlIGFyZSB0cnlpbmcgdG8gZG8gaGVyZSBpcyB0byBrZWVwIHVz
aW5nIHRoZSBvbGQgcGF0aCBhcyBvcmlnaW4gd2hlbiBhIGZpbGUtYmFzZWQgaHRtbCBwYWdlCiAg
ICAgLy8gY2hhbmdlcyBpdHMgbG9jYXRpb24gdG8gc29tZSBodG1sIGluIGEgc3ViZm9sZGVyLiBU
aGlzIHdpbGwgYWxsb3cgc29tZSBmaWxlLWJhc2VkIGh0bWwgcGFja2FnZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAzZWFhYWIzLi5iZmRhNmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91Ymxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFj
ZVN0YXRlV2l0aGluUGFnZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJM
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsVXBkYXRlQXBwbGljYXRpb25DYWNoZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkRnJvbUFw
cGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJy
b3IoZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJyb3IoZW1wdHlTdHJpbmco
KSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KQEAgLTEzMyw4ICsxMzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGlu
dCwgaW50KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1
Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBT
dHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lk
Z2V0Kik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KQEAgLTE1OSw3ICsxNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRJY29uRXh0ZXJuYWxseSgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShj
b25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmws
IGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFVSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKEljb25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCkBAIC0x
NjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRm9yTmV3RG9jdW1lbnQo
Y29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgcmVhZHlU
b1JlbmRlcihib29sIHBhZ2VJc1Zpc3VhbGx5Tm9uRW1wdHkpOwogCkBAIC0yMDMsOCArMjAzLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRGcmFtZUNyZWF0aW9uU3VwcHJlc3NlZDsKIAog
ICAgIC8vIFRoaXMgc2V0IGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBhbmQgZmluYWwgdXJscyBmb3Ig
c2VydmVyIHJlZGlyZWN0cy4KLSAgICBIYXNoU2V0PEtVUkw+IG1faGlzdG9yeU5hdmlnYXRpb25T
b3VyY2VVUkxzOwotICAgIEhhc2hTZXQ8S1VSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hp
c3RvcnlOYXZpZ2F0aW9uOworICAgIEhhc2hTZXQ8VVJMPiBtX2hpc3RvcnlOYXZpZ2F0aW9uU291
cmNlVVJMczsKKyAgICBIYXNoU2V0PFVSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hpc3Rv
cnlOYXZpZ2F0aW9uOwogCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0by4K
ICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeS5jcHAKaW5kZXggZGNmZWY2MC4uNGE2MTJjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtODEsMzIgKzgxLDMyIEBA
IFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNyZWF0
ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9y
RE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0Jl
cnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tC
ZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJhd0Nvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSos
IFZlY3RvcjxQbHVnaW5JbmZvPgogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5Ci1ib29sIFBs
YXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlu
a0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFBsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hh
c2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4g
cGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNr
QmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKaW5kZXggYzUxNTY0NS4uZDI0NWZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCkBAIC00NywxMiArNDcsMTIgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0
ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8g
LSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdl
KiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0
IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xp
bmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCmluZGV4IDZjOGVmOGEuLjk0MDU3MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUGFnZVBvcHVwLmNw
cApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZV9wLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaD4K
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBQYWdlUG9wdXA6OndyaXRlRG9jdW1lbnQoRG9jdW1lbnRX
cml0ZXIqIHdyaXRlcikKIHsKICAgICBBU1NFUlQod3JpdGVyKTsKICAgICB3cml0ZXItPnNldE1J
TUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLSAgICB3cml0ZXItPmJlZ2luKEtVUkwoKSk7CisgICAgd3Jp
dGVyLT5iZWdpbihVUkwoKSk7CiAKICAgICAvLyBBbGwgdGhlIHBvcHVwcyBoYXZlIHRoZSBzYW1l
IGh0bWwgaGVhZCBhbmQgdGhlIHBhZ2UgY29udGVudCBzaG91bGQgYmUgbm9uLXpvb21hYmxlLgog
ICAgIFN0cmluZ0J1aWxkZXIgc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDI3ODM0NDMuLmY5
MTNlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55IGZp
bGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRG
ZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDA4NjczMmExLi4xNTY0ZjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRF
ZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVu
dEVmbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVm
bC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25B
Y3Rpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBvcHVwTWVu
dUVmbC5oIgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkCiAgICAg
Ly8gRklYTUUsIGNvbXBhcmUgd2l0aCBvbGQgbGluaywgbG9vayBhdCBRdCBpbXBsLgogICAgIGJv
b2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAgICBpZiAoaXNMaW5rKSB7Ci0gICAgICAg
IEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOworICAgICAgICBVUkwgdXJsID0gaGl0
LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIXVybC5pc0VtcHR5KCkgJiYgdXJsICE9
IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxpbmtbMl07CiAg
ICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcjsKQEAgLTM3Niw3ICszNzYsNyBAQCB2b2lkIENo
cm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgaGl0LCB1bnNpZ25lZAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghaXNMaW5rICYmICFt
X2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBld2tfdmlld19tb3VzZV9saW5r
X2hvdmVyX291dChtX3ZpZXcpOwotICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gS1VSTCgpOwor
ICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gVVJMKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCmluZGV4IDZl
ZGJlMzcuLjg0YTMxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0yNSw3ICsyNSw3IEBACiAjZGVmaW5lIENocm9tZUNs
aWVudEVmbF9oCiAKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKQEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0gICAgS1VSTCBtX2hvdmVyZWRMaW5rVVJMOworICAg
IFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBS
ZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxlbWVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwu
Y3BwCmluZGV4IGNkZWEzZTQuLjk0YmU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTU1LDcg
KzU1LDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudEVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50RWZsOjpkb3dubG9hZFVSTChjb25zdCBLVVJMJikK
K3ZvaWQgQ29udGV4dE1lbnVDbGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5oCmluZGV4IDcwODM3N2YuLjViZWYy
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRFZmwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4
dE1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4
dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGlz
U3BlYWtpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IGRjMGMyNDMuLjllYTUx
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgU3Ry
aW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW0KICAgICByZXR1cm4gU3RyaW5nKCJmcmFtZSAoYW5vbnltb3Vz
KSIpOwogfQogCi1jb25zdCBXZWJDb3JlOjpLVVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQorY29uc3QgV2ViQ29y
ZTo6VVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpLVVJMKCkpOworICAgIERSVF9TVVBQT1JUX0ZS
QU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpVUkwoKSk7CiAKICAg
ICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6S1VSTCgpOwor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJMKCk7CiAKICAgICByZXR1cm4gcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+dXJsKCk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFMKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoV2ViQ29y
ZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OktVUkwoKSwK
KyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIHJ1bkF0U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQgOiBXZWJD
b3JlOjpJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpL
VVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkp
OworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwgVmVjdG9y
PFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0
SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKIHZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhclVzZXJTdHlsZVNoZWV0cyhjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggY2VmNzZkYy4uNThj
ZDQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYg
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKICNkZWZpbmUgRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxF
aW5hLmg+CiAjaW5jbHVkZSA8RmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxJbnRSZWN0Lmg+CkBA
IC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHJlc3BvbnNlTWltZVR5
cGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgV2ViQ29yZTo6SW50
UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSk7Ci0gICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktVUkwgcHJvdmlzaW9uYWxVUkwo
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKyAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6
VVJMIHByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAgICAgc3Rh
dGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAppbmRleCA5MTEzMjIxLi43NzdiMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC05
Myw3ICs5Myw3IEBAIGNvbnN0IFN0cmluZyYgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmN1c3RvbVVz
ZXJBZ2VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VzdG9tVXNlckFnZW50OwogfQogCi1TdHJp
bmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBG
cmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgaWYgKCFt
X2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2N1c3RvbVVzZXJB
Z2VudDsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZwogICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAicmVzb3VyY2UscmVxdWVzdCx3
aWxsc2VuZCIsICZtZXNzYWdlcyk7CiAKICAgICBpZiAocmVxdWVzdC51cmwgIT0gb3JpZy51cmwp
IHsKLSAgICAgICAgY29yZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCByZXF1ZXN0LnVybCkp
OworICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCByZXF1ZXN0LnVybCkpOwog
CiAgICAgICAgIC8vIENhbGxpbmcgY2xpZW50IG1pZ2h0IGhhdmUgY2hhbmdlZCBvdXIgdXJsIHBv
aW50ZXIuCiAgICAgICAgIC8vIEZyZWUgdGhlIG5ldyBhbGxvY2F0ZWQgc3RyaW5nLgpAQCAtMzU2
LDcgKzM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAgICAgY2FsbFBvbGljeUZ1bmN0
aW9uKGZ1bmN0aW9uLCBwb2xpY3kpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1M
UGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdp
blNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAg
QVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX3ZpZXcpOwpAQCAtMzY2LDcgKzM2Niw3IEBA
IFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lkdGgq
LywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8q
bWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX3Zp
ZXcpOwpAQCAtNDA2LDE0ICs0MDYsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6cmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1faGFzU2Vu
dFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLAorUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIC8qcGFyYW1OYW1lcyovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypwYXJhbVZhbHVlcyov
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLU9iamVjdENv
bnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIEZJWE1FOiBvbmNlIHBs
dWdpbiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoaXMgbWV0aG9kIG5lZWRzIHRvIGNvcnJlY3RseSBo
YW5kbGUgdGhlICdzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzJyBmbGFnLiBTZWUKICAgICAv
LyBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKCkgZm9yIGFu
IGV4YW1wbGUuCkBAIC01NzUsMTIgKzU3NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBld2tfZnJhbWVfbWl4ZWRfY29udGVu
dF9kaXNwbGF5ZWRfc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJM
JikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgZXdrX2ZyYW1lX21peGVkX2NvbnRlbnRf
cnVuX3NldChtX2ZyYW1lLCB0cnVlKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERldGVjdFhTUyhjb25zdCBVUkwm
IGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKIHsKICAgICBDU3RyaW5nIGNz
ID0gaW5zZWN1cmVVUkwuc3RyaW5nKCkudXRmOCgpOwogICAgIEV3a19GcmFtZV9Yc3NfTm90aWZp
Y2F0aW9uIHhzc0luZm8gPSB7IGNzLmRhdGEoKSwgZGlkQmxvY2tFbnRpcmVQYWdlIH07CkBAIC02
MzAsNyArNjMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hEaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgZXdrX2ZyYW1lX3JlZGlyZWN0X2NhbmNlbGxlZChtX2Zy
YW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlzcGF0Y2hXaWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGV3a19mcmFtZV9yZWRpcmVjdF9y
ZXF1ZXN0ZWQobV9mcmFtZSwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQpAQCAtNzg4
LDcgKzc4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnByZXBhcmVGb3JEYXRhU291
cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25z
dCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
CmluZGV4IDIyNzEyOTQuLjg0NzA3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtOTQsNyArOTQsNyBA
QCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKQEAgLTEyOCwxMyArMTI4LDEzIEBAIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFs
IHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYs
IGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYs
IGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdp
ZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQq
IHBsdWdpbldpZGdldCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBL
VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBA
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsK
IAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCk7CiAK
LSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJ
bWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJl
YWR5KGJvb2wpOwogCkBAIC0xNTksOCArMTU5LDggQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRF
ZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRH
b1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBA
IC0xODcsOSArMTg3LDkgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJh
bWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRl
cj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYpOwogCi0gICAg
dmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3Jt
RGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
RWZsLmNwcAppbmRleCA0OWFhMzU3Li42YmU0NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKQEAg
LTg3LDMyICs4NywzMiBAQCBTdG9yYWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0ZWd5Ci1TdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNv
cmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3Ry
aW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFt
ZSk7CiB9CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6Omdl
dFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0UGwKIH0KIAog
Ly8gVmlzaXRlZExpbmtTdHJhdGVneQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmlzTGlu
a1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0
b21pY1N0cmluZyYpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNMaW5rVmlzaXRlZChQ
YWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcm
KQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0VmbC5oCmluZGV4IDc0NzBjMmMuLjMxYmFlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCkBA
IC00OCwxMiArNDgsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjMs
NyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0
IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8v
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29y
ZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKaW5kZXggZmZhNzI4OS4uMjIzZTA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgpAQCAtMzM2LDcgKzMzNiw3IEBAIEV2YXNfT2JqZWN0KiBld2tf
ZnJhbWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUp
CiBFaW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25z
dCBjaGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUs
IHNtYXJ0RGF0YSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChX
ZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVy
KCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+ZnJhbWUsIHJlcSkp
OwogCkBAIC00MDIsMTIgKzQwMiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY29u
dGVudHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzbWFydERhdAogICAgIGlm
ICghYmFzZVVyaSkKICAgICAgICAgYmFzZVVyaSA9ICJhYm91dDpibGFuayI7CiAKLSAgICBXZWJD
b3JlOjpLVVJMIGJhc2VLVVJMKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4
KGJhc2VVcmkpKTsKLSAgICBXZWJDb3JlOjpLVVJMIHVucmVhY2hhYmxlS1VSTDsKKyAgICBXZWJD
b3JlOjpVUkwgYmFzZUtVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOChi
YXNlVXJpKSk7CisgICAgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlS1VSTDsKICAgICBpZiAodW5y
ZWFjaGFibGVVcmkpCi0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoV2Vi
Q29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKKyAg
ICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKICAgICBlbHNlCi0gICAgICAgIHVu
cmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoKTsKKyAgICAgICAgdW5yZWFjaGFibGVLVVJM
ID0gV2ViQ29yZTo6VVJMKCk7CiAKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBjb250
ZW50c1NpemUpOwogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhCkBA
IC0xNjkwLDcgKzE2OTAsNyBAQCBFd2tfQ2VydGlmaWNhdGVfU3RhdHVzIGV3a19mcmFtZV9jZXJ0
aWZpY2F0ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogICAgIGNvbnN0IFdl
YkNvcmU6OkZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRl
cigpOwogICAgIGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCBk
b2N1bWVudFVSTCA9IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0VVJMKCk7CisgICAgY29uc3QgV2Vi
Q29yZTo6VVJMIGRvY3VtZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVlc3RVUkwoKTsKIAog
ICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJcygiaHR0cHMiKSkKICAgICAgICAgcmV0dXJu
IEVXS19DRVJUSUZJQ0FURV9TVEFUVVNfTk9fQ0VSVElGSUNBVEU7CkBAIC0xNzYzLDcgKzE3NjMs
NyBAQCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQog
ICoKICAqIENyZWF0ZXMgcGx1Z2luLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxs
eSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3Jl
YXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgREJHKCJld2tGcmFtZT0lcCwgc2l6ZT0lZHglZCwgZWxlbWVudD0l
cCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVf
cHJpdmF0ZS5oCmluZGV4IGExNDQ2ZGYuLjdkNDE3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsK
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXaWRnZXQ7CkBAIC03Niw3ICs3Niw3
IEBAIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2
b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQg
ZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi1XVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09i
amVjdCogZXdrRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmws
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsK
IAogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2YXNfT2Jq
ZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVjdGlvbl9j
aGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAKaW5kZXggZGQzYmE5Zi4uOWU0ZDVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcApAQCAtMjAsNyArMjAs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9wb2xpY3ku
aCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAKQEAgLTI5LDcgKzI5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIGV3a19zZWN1cml0eV9wb2xpY3lf
d2hpdGVsaXN0X29yaWdpbl9hZGQoY29uc3QgY2hhciogc291cmNlVXJsLCBjb25zdCBjaGFyKiBk
ZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsKICAgICBjb25zdCBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlvbihLVVJMKCksIGRl
c3RpbmF0aW9uVXJsKTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJMKCksIGRlc3RpbmF0
aW9uVXJsKTsKIAogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCks
IGFsbG93U3ViZG9tYWlucyk7CiB9CkBAIC0zNyw3ICszNyw3IEBAIHZvaWQgZXdrX3NlY3VyaXR5
X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3VyY2VVcmwsIGNvbnN0
IGNoYXIqCiB2b2lkIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9kZWwoY29u
c3QgY2hhciogc291cmNlVXJsLCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29s
IGFsbG93U3ViZG9tYWlucykKIHsKICAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNv
dXJjZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAg
Y29uc3QgS1VSTCBkZXN0aW5hdGlvbihLVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKKyAgICBjb25z
dCBVUkwgZGVzdGluYXRpb24oVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKIAogICAgIFNlY3VyaXR5
UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5h
dGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4IDRhYjBhZTcuLmQ1ZDMx
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCkBAIC0zMyw3ICszMyw3
IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5j
bHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBld2tfc2V0dGluZ3Nf
bG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5fY2xlYXIoY29uc3QgY2hhciogdXJsKQogewog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHVybCk7CiAKLSAgICBjb25zdCBXZWJDb3Jl
OjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7
CisgICAgY29uc3QgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5n
Ojpmcm9tVVRGOCh1cmwpKTsKICAgICBXZWJDb3JlOjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigp
LmRlbGV0ZU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGt1cmwpLmdldCgp
KTsKIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBAIGNhaXJvX3N1cmZhY2VfdCogZXdrX3NldHRpbmdz
X2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChjb25zdCBjaGFyKiB1cmwpCiB7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CiAKLSAgICBXZWJDb3JlOjpL
VVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7Cisg
ICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpY29uID0gV2ViQ29yZTo6aWNv
bkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygp
LCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikKICAgICAgICAgRVJS
KCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEV2YXNfT2Jq
ZWN0KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX29iamVjdF9nZXQoY29uc3QgY2hh
ciogdXJsLCBFdmFzKiBjCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVybCwg
MCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNhbnZhcywgMCk7CiAKLSAg
ICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNl
ID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVS
TChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogCiAgICAgaWYgKCFz
dXJmYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhMGVmOWM1Li43OTk2
ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY3MCw3ICs2NzAsNyBAQCBz
dGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKQogICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9
IG5ldyBFd2tfVmlld19Qcml2YXRlX0RhdGE7CiAgICAgbWVtc2V0KHByaXYsIDAsIHNpemVvZihF
d2tfVmlld19Qcml2YXRlX0RhdGEpKTsKICAgICBBdG9taWNTdHJpbmcgc3RyaW5nOwotICAgIFdl
YkNvcmU6OktVUkwgdXJsOworICAgIFdlYkNvcmU6OlVSTCB1cmw7CiAKICAgICBXZWJDb3JlOjpQ
YWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGll
bnQgPSBuZXcgV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CkBAIC0x
NzI4LDcgKzE3MjgsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdmlzaXRlZF9saW5rX2FkZChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdmlzaXRlZFVybAogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5wYWdlLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHByaXYtPnBhZ2UtPmdyb3VwUHRyKCksIGZhbHNlKTsKIAotICAg
IFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2aXNpdGVkVXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CiAgICAgcHJpdi0+cGFnZS0+Z3JvdXBQ
dHIoKS0+YWRkVmlzaXRlZExpbmsoa3VybCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDU1
LDcgKzIwNTUsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRf
c2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKgogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0
cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYtPnNldHRpbmdzLnVzZXJTdHlsZXNoZWV0LCB1cmkpKSB7
Ci0gICAgICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJv
bVVURjgodXJpKSk7CisgICAgICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6OlVSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oa3VybCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAt
MzY2Miw3ICszNjYyLDcgQEAgdm9pZCBld2tfdmlld19mcmFtZV9yZWN0X2NoYW5nZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpCiAgICAgX2V3a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsK
IH0KIAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2Ny
ZWF0ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxl
bWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIERC
RygiZXdrVmlldz0lcCwgZnJhbWU9JXAsIHNpemU9JWR4JWQsIGVsZW1lbnQ9JXAsIHVybD0lcywg
bWltZVR5cGU9JXMiLAogICAgICAgICBld2tWaWV3LCBmcmFtZSwgcGx1Z2luU2l6ZS53aWR0aCgp
LCBwbHVnaW5TaXplLmhlaWdodCgpLCBlbGVtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlld19wcml2YXRlLmgKaW5kZXggMzEzZWY3Yy4uNDQ1YzFkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXdfcHJpdmF0ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgV2ViQ29yZTo6UGFn
ZSogZXdrX3ZpZXdfY29yZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAK
IHZvaWQgZXdrX3ZpZXdfZnJhbWVfcmVjdF9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsK
IAotV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0
ZShFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1
ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFz
X09iamVjdCogZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29u
c3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKIHZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9uZXcoRXZh
c19PYmplY3QqIGV3a1ZpZXcsIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW5pdGlhbENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBh
NDIxYjVlLi5hMjU2MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMt
MDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBL
VVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAg
ICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9ORVdTIGIvU291cmNlL1dlYktpdC9ndGsvTkVXUwppbmRleCBlZjNmMzE0Li4yZmNj
ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL05FV1MKQEAgLTM0NCw3ICszNDQsNyBAQCBXaGF0J3MgbmV3IGluIFdlYktpdEdUSysg
MS45LjM/CiAgIC0gRml4IGN1cnNvciB1c2VkIGZvciBuZS1yZXNpemUuCiAgIC0gRml4IGNvbnRy
YWN0aW9ucyByZWNvZ25pdGlvbiBieSB0aGUgc3BlbGwgY2hlY2tlci4KICAgLSBGaXggYSBjcmFz
aCByZW5kZXJpbmcgc2Nyb2xsYmFycyBvbiBHVEsgd3hXZWJraXQuCi0gIC0gRml4IEtVUkw6OmZp
bGVTeXN0ZW1QYXRoKCkgaW1wbGVtZW50YXRpb24gdG8gc3RyaXAgdGhlIHF1ZXJ5IHBhcnQKKyAg
LSBGaXggVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGltcGxlbWVudGF0aW9uIHRvIHN0cmlwIHRoZSBx
dWVyeSBwYXJ0CiAgICAgb2YgdGhlIHVyaS4KICAgLSBDaGVjayBmb3IgR1RLMi9HVEszIHN5bWJv
bCBtaXNtYXRjaCBlYXJsaWVyIHRvIGZpeCBwbHVnaW5zIHJ1bgogICAgIHdpdGggbnNwbHVnaW53
cmFwcGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAKaW5kZXggMWMwOTg1YS4uZDQwOWU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC00NSw3
ICs0NSw3IEBACiAjaW5jbHVkZSAiSWNvbi5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgpAQCAtNzk4LDcgKzc5OCw3
IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkIG1vCiAgICAgLy8gY2hlY2sgaWYgdGhlIGVsZW1lbnQg
aXMgYSBsaW5rLi4uCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGluaygpOwogICAgIGlm
IChpc0xpbmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7Cisg
ICAgICAgIFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAgICAgICAgICAgVGV4
dERpcmVjdGlvbiBkaXI7CiAgICAgICAgICAgICBDU3RyaW5nIHRpdGxlU3RyaW5nID0gaGl0LnRp
dGxlKGRpcikudXRmOCgpOwpAQCAtODA4LDcgKzgwOCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpt
b3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVk
IG1vCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFpc0xpbmsgJiYgIW1faG92ZXJlZExpbmtV
UkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcs
ICJob3ZlcmluZy1vdmVyLWxpbmsiLCAwLCAwKTsKLSAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9
IEtVUkwoKTsKKyAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IFVSTCgpOwogICAgIH0KIAogICAg
IGlmIChOb2RlKiBub2RlID0gaGl0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IGQx
YjBhNTkuLjJhNGE3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiR3RrQWRq
dXN0bWVudFdhdGNoZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQb3B1
cE1lbnUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnUu
aCIKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRlOgog
ICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAgIEd0a0FkanVzdG1lbnRX
YXRjaGVyIG1fYWRqdXN0bWVudFdhdGNoZXI7Ci0gICAgICAgIEtVUkwgbV9ob3ZlcmVkTGlua1VS
TDsKKyAgICAgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAgICAgICAgIHVuc2lnbmVkIGludCBt
X2Nsb3NlU29vblRpbWVyOwogCiAgICAgICAgIFRpbWVyIDxDaHJvbWVDbGllbnQ+IG1fZGlzcGxh
eVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29udGV4dE1lbnVDbGllbnRHdGsuY3BwCmluZGV4IDQxNzBmNzcuLjllYjc1ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEd0ay5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJDb250ZXh0TWVudS5oIgog
I2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRNCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRV
UkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtSZXF1
ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcodXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRHdGsuaAppbmRleCBkNjc3NGI1Li40NTZiODE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwg
V2ViQ29yZTo6UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0
SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNv
cmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb3B5SW1h
Z2VUb0NsaXBib2FyZChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Jik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGRkZWQ4YzQuLjAzNmU2MTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjphZGRVc2VyU2NyaXB0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hh
cioKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKGZyYW1l
KTsKICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKLSAgICBwYWdlLT5ncm91cCgpLmFk
ZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBL
VVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksCisgICAgcGFnZS0+Z3Jv
dXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNl
Q29kZSwgVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksCiAgICAgICAg
IHJ1bkF0U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5k
LCBhbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsK
IH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjph
ZGRVc2VyU3R5bGVTaGVldChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoCiAKICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgUGFn
ZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVT
aGVldFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIEtVUkwoKSwg
VmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gSW5qZWN0SW5B
bGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAorICAgIHBhZ2UtPmdyb3VwKCkuYWRk
VXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2Rl
LCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8g
SW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7IAogfQogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAppbmRleCAxZGMyMDc2Li40MjU5NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CkBAIC0xMjAsNyArMTIwLDcgQEAgRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVu
dCgpCiB9CiAKIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3
X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsKICAgICBHT3duUHRyPGdj
aGFyPiB1c2VyQWdlbnRTdHJpbmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoc2V0
dGluZ3MsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0yNjEsNyArMjYxLDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwKICAgICAvLyBGZWVkIGFueSBjaGFuZ2VzIGJhY2sgaW50
byB0aGUgUmVzb3VyY2VSZXF1ZXN0IG9iamVjdC4KICAgICBTb3VwTWVzc2FnZSogbWVzc2FnZSA9
IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X21lc3NhZ2UobmV0d29ya1JlcXVlc3QuZ2V0KCkp
OwogICAgIGlmICghbWVzc2FnZSkgewotICAgICAgICByZXF1ZXN0LnNldFVSTChLVVJMKEtVUkwo
KSwgU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkobmV0d29y
a1JlcXVlc3QuZ2V0KCkpKSkpOworICAgICAgICByZXF1ZXN0LnNldFVSTChVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmtSZXF1
ZXN0LmdldCgpKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg2LDcgKzQ4Niw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bmN0CiAgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2Rl
Y2lzaW9uX3VzZShtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRyPFdp
ZGdldD4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVn
aW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAg
IC8qIENoZWNrIGlmIHdlIHdhbnQgdG8gZW1iZWQgYSBHdGtXaWRnZXQsIGZhbGxiYWNrIHRvIHBs
dWdpbnMgbGF0ZXIgKi8KICAgICBDU3RyaW5nIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS51dGY4
KCk7CkBAIC01MTYsNyArNTE2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFQKICAgICByZXR1
cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIEFT
U0VSVChtX2ZyYW1lKTsKQEAgLTU1OCwxMiArNTU4LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgICAgICBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBw
bGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewog
ICAgIHJldHVybiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKHBsdWdpblNpemUsIGVs
ZW1lbnQsIGJhc2VVUkwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1q
YXZhLWFwcGxldCIsIGZhbHNlKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVu
dFR5cGUgRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUo
dXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC02NzMs
MTIgKzY3MywxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2FkRXZlbnRD
YWxsYmFjayhtX2ZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvcmVPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiogY29yZU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKG1fZnJhbWUsICJpbnNlY3VyZS1jb250ZW50LXJ1biIsIGtpdChjb3JlT3JpZ2luKSwg
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICBpZiAoIUR1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6ZHVtcFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpIHx8ICFEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2FkRXZlbnRDYWxsYmFjaykKICAgICAgICAgcmV0dXJu
OwpAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19m
cmFtZUxvYWRFdmVudENhbGxiYWNrKG1fZnJhbWUsIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3Vi
bGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYg
KCFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSB8
fCAhRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2spCiAg
ICAgICAgIHJldHVybjsKQEAgLTk3Miw3ICs5NzIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
OjpwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRo
RGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIFdlYktpdFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gbV9mcmFtZS0+
cHJpdjsKICAgICBnX2ZyZWUoZnJhbWVEYXRhLT50aXRsZSk7CkBAIC0xMDA1LDcgKzEwMDUsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlcgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBj
aGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVzb3VyY2UpOwotICAg
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVSZXNvdXJjZShsb2FkZXItPnN1YnJlc291cmNl
KEtVUkwoS1VSTCgpLCB1cmkpKSk7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJl
c291cmNlKGxvYWRlci0+c3VicmVzb3VyY2UoVVJMKFVSTCgpLCB1cmkpKSk7CiAKICAgICAvLyBJ
ZiBjb3JlUmVzb3VyY2UgaXMgTlVMTCBoZXJlLCB0aGUgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQs
CiAgICAgLy8gdW5sZXNzIGl0J3MgdGhlIG1haW4gcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRl
eCBjNzgyOTJmLi43YjgyZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTc3LDcgKzc3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9u
bG9hZEV2ZW50cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91
YmxlLCBkb3VibGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0x
MTUsMTIgKzExNSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKTsKIAotICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25z
dCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6
U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwg
aW50IG1hcmdpbkhlaWdodCk7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBib29sKTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdU
Rjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJD
b3JlOjpXaWRnZXQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1
Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOworICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFs
dWVzKTsKICAgICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
b2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0
aW9uKGJvb2wpOwogCi0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUg
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKKyAgICAgICAg
dmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5G
cmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE0Niw4ICsxNDYsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9y
eUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBX
ZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAKICAgICAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTc0LDkg
KzE3NCw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAotICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgV1RGOjpT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZy
YW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAppbmRleCBmOWVk
NWFkLi5jNmQxYTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKQEAgLTgxLDMyICs4MSwzMiBAQCBW
aXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNyZWF0ZVZpc2l0ZWRM
aW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29v
a2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVz
R3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9v
bCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNH
dGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UGx1Z2luSW5m
byhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mCiB9CiAKIC8vIFZpc2l0ZWRM
aW5rU3RyYXRlZ3kKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcm
KQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICBy
ZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsu
aAppbmRleCBiNWYwNzYyLi43Zjk4Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaApAQCAtNDcsMTIgKzQ3
LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1
YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQog
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTYyLDcgKzYyLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQ
YWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29y
ZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJM
LCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0
ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9n
ZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252
ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCAyYzMyZjJjLi4zN2I5NzZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmgKQEAgLTIwLDcgKzIwLDcg
QEAKICNpZm5kZWYgQ29udmVydFRvR0NoYXJQcml2YXRlX2gKICNkZWZpbmUgQ29udmVydFRvR0No
YXJQcml2YXRlX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zMCw3ICszMCw3IEBAIGlu
bGluZSBnY2hhciogY29weUFzR2NoYXIoV1RGOjpTdHJpbmcgY29uc3QmIHMpCiAgICAgcmV0dXJu
IGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWlubGluZSBnY2hhciogY29weUFzR2No
YXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2lubGluZSBnY2hhciogY29weUFzR2NoYXIoV2Vi
Q29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBjb3B5QXNHY2hhcihzLnN0cmluZygp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCmluZGV4
IGQyZDU1OTdhLi5jNzQ4YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0ZG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRk
b3dubG9hZC5jcHAKQEAgLTYzNSw3ICs2MzUsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X2Rvd25s
b2FkX2dldF9zdWdnZXN0ZWRfZmlsZW5hbWUoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKQogICAg
IGlmIChwcml2LT5zdWdnZXN0ZWRGaWxlbmFtZSkKICAgICAgICAgcmV0dXJuIHByaXYtPnN1Z2dl
c3RlZEZpbGVuYW1lOwogCi0gICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgd2Via2l0X25ldHdv
cmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtSZXF1ZXN0KSk7CisgICAgVVJMIHVybCA9
IFVSTChVUkwoKSwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtS
ZXF1ZXN0KSk7CiAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZygpKTsKICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAgICAgcHJpdi0+c3VnZ2VzdGVkRmlsZW5hbWUgPSBnX3N0cmR1
cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpLnV0Zjgo
KS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhp
dHRlc3RyZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3Ry
ZXN1bHQuY3BwCmluZGV4IDc5NDM3OWUuLmNiNDFlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRl
c3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIK
ICNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcAppbmRleCA0OTk2ZGQ5Li4zNmUyOGEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAK
QEAgLTI2Niw3ICsyNjYsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29yZShXZWJLaXRO
ZXR3b3JrUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAoc291cE1lc3NhZ2UpCiAgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qoc291cE1lc3NhZ2UpOwogCi0gICAgV2ViQ29y
ZTo6S1VSTCB1cmwgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpKTsKKyAgICBXZWJD
b3JlOjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21V
VEY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkpOwogICAgIHJldHVy
biBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCmluZGV4IDA3OTIyYjAuLmQyNzI1
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJkYXRhc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YXNvdXJj
ZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlckd0ay5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRHdGsu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJLaXRXZWJEYXRhU291cmNlKiB3ZWJr
aXRfd2ViX2RhdGFfc291cmNlX25ld193aXRoX3JlcXVlc3QoV2ViS2l0TmV0d29ya1JlcXVlcwog
CiAgICAgY29uc3QgZ2NoYXIqIHVyaSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShy
ZXF1ZXN0KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgpLCBTdHJp
bmc6OmZyb21VVEY4KHVyaSkpKSk7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJjZSogZGF0YXNvdXJj
ZSA9IGtpdE5ldyhXZWJLaXQ6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0
LCBTdWJzdGl0dXRlRGF0YSgpKSk7CiAKICAgICBXZWJLaXRXZWJEYXRhU291cmNlUHJpdmF0ZSog
cHJpdiA9IGRhdGFzb3VyY2UtPnByaXY7CkBAIC0zOTYsNyArMzk2LDcgQEAgY29uc3QgZ2NoYXIq
IHdlYmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X3VucmVhY2hhYmxlX3VyaShXZWJLaXRXZWJEYXRh
U291cmNlKiB3ZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0RBVEFf
U09VUkNFKHdlYkRhdGFTb3VyY2UpLCBOVUxMKTsKIAogICAgIFdlYktpdFdlYkRhdGFTb3VyY2VQ
cml2YXRlKiBwcml2ID0gd2ViRGF0YVNvdXJjZS0+cHJpdjsKLSAgICBjb25zdCBLVVJMJiB1bnJl
YWNoYWJsZVVSTCA9IHByaXYtPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogCiAg
ICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCA2ZDFmOTQ0
Li43MzU3M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
ZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5j
cHAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF91cmkoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdXJpKQogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQoRnJhbWVM
b2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChLVVJMKEtVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOCh1cmkpKSkpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQoRnJhbWVM
b2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIFN0cmluZzo6
ZnJvbVVURjgodXJpKSkpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9h
ZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlbnQsIGNvbnN0
IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBjb25zdCBnY2hhciogYmFz
ZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQpAQCAtNjg0LDcgKzY4NCw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUp
OwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwogCi0gICAgS1VSTCBiYXNlS1VSTCA9IGJhc2VVUkwg
PyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSkgOiBibGFua1VSTCgpOwor
ICAgIFVSTCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
YmFzZVVSTCkpIDogYmxhbmtVUkwoKTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJh
c2VLVVJMKTsKIApAQCAtNjkyLDggKzY5Miw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJh
bWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAg
ICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVmZmVyLnJlbGVhc2UoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSA/IFN0cmluZzo6ZnJv
bVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIiksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJpbmc6OmZyb21VVEY4KGVu
Y29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVV
UkwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLVVJMKEtVUkwoKSwgU3Ry
aW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJv
bVVURjgodW5yZWFjaGFibGVVUkwpKSk7CiAKICAgICBjb3JlRnJhbWUtPmxvYWRlcigpLmxvYWQo
RnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNw
cAppbmRleCA1YjdkYjIyLi4yZjI1MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFs
c3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbXByaXZhdGUuaCIKICNp
bmNsdWRlIDxnbGliLmg+CkBAIC0yOTgsNyArMjk4LDcgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0q
IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwg
Y28KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VC
X0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0hJU1RPUllfSVRFTSwg
TlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3Rv
cnlJdGVtLT5wcml2OwogCi0gICAgV2ViQ29yZTo6S1VSTCBoaXN0b3J5VXJpKFdlYkNvcmU6OktV
UkwoKSwgdXJpKTsKKyAgICBXZWJDb3JlOjpVUkwgaGlzdG9yeVVyaShXZWJDb3JlOjpVUkwoKSwg
dXJpKTsKICAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0bGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodGl0bGUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaXRlbSA9IFdlYkNv
cmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVyaSwgaGlzdG9yeVRpdGxlLCAwKTsKICAg
ICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFzZSgpLmxlYWtSZWYoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuY3BwCmluZGV4IDZmYWMzN2Iu
LjQ1Zjg3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJy
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291
cmNlLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlLmgi
CiAKICNpbmNsdWRlICJBcmNoaXZlUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAid2Via2l0
ZW51bXR5cGVzLmgiCiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKQEAgLTM1Nyw3
ICszNTcsNyBAQCBXZWJLaXRXZWJSZXNvdXJjZSogd2Via2l0X3dlYl9yZXNvdXJjZV9uZXcoY29u
c3QgZ2NoYXIqIGRhdGEsCiAgICAgICAgIHNpemUgPSBzdHJsZW4oZGF0YSk7CiAKICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXpl
KTsKLSAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Jlc291
cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVy
LCBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSwgU3RyaW5nOjpmcm9tVVRGOCht
aW1lVHlwZSksIFN0cmluZzo6ZnJvbVVURjgoZW5jb2RpbmcpLCBTdHJpbmc6OmZyb21VVEY4KGZy
YW1lTmFtZSkpKTsKKyAgICBXZWJLaXRXZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRf
d2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoYnVmZmVyLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSksIFN0cmluZzo6ZnJv
bVVURjgobWltZVR5cGUpLCBTdHJpbmc6OmZyb21VVEY4KGVuY29kaW5nKSwgU3RyaW5nOjpmcm9t
VVRGOChmcmFtZU5hbWUpKSk7CiAKICAgICByZXR1cm4gd2ViUmVzb3VyY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyMmNlNmJi
Li5hZWVhM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvci5o
IgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRH
dGsuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKQEAgLTE1OTcsNyArMTU5Nyw3IEBA
IHN0YXRpYyBib29sIGlzR29vZ2xlRG9tYWluKFN0cmluZyBob3N0KQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQor
c3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8g
Rm9yIEdvb2dsZSBkb21haW5zLCBkcm9wIHRoZSBicm93c2VyJ3MgY3VzdG9tIFVzZXIgQWdlbnQg
c3RyaW5nLCBhbmQgdXNlIHRoZQogICAgIC8vIHN0YW5kYXJkIENocm9tZSBvbmUsIHNvIHRoZXkg
ZG9uJ3QgZ2l2ZSB1cyBhIGJyb2tlbiBleHBlcmllbmNlLgpAQCAtMTYzNSw3ICsxNjM1LDcgQEAg
c3RhdGljIFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQogY2hhciogd2Vi
a2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRp
bmdzLCBjb25zdCBjaGFyKiB1cmkpCiB7CiAgICAgaWYgKHdlYlNldHRpbmdzLT5wcml2LT5lbmFi
bGVTaXRlU3BlY2lmaWNRdWlya3MpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9
IHVzZXJBZ2VudEZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpm
cm9tVVRGOCh1cmkpKSk7CisgICAgICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmcgPSB1c2VyQWdl
bnRGb3JVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVy
aSkpKTsKICAgICAgICAgaWYgKCF1c2VyQWdlbnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGdfc3RyZHVwKHVzZXJBZ2VudFN0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYzcxMmM5
YS4uOWY4OTllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cApAQCAtMzUzOCw3ICszNTM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy5zZXRT
Y3JpcHRFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlU2NyaXB0cyk7CiAgICAgY29yZVNl
dHRpbmdzLnNldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUGx1Z2lucyk7
CiAgICAgY29yZVNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShzZXR0aW5nc1ByaXZh
dGUtPnJlc2l6YWJsZVRleHRBcmVhcyk7Ci0gICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oS1VSTChLVVJMKCksIHNldHRpbmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRV
UkkuZGF0YSgpKSk7CisgICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24o
VVJMKFVSTCgpLCBzZXR0aW5nc1ByaXZhdGUtPnVzZXJTdHlsZXNoZWV0VVJJLmRhdGEoKSkpOwog
ICAgIGNvcmVTZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHNldHRpbmdzUHJpdmF0
ZS0+ZW5hYmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBjb3JlU2V0dGluZ3Muc2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVByaXZhdGVCcm93c2luZyk7CiAg
ICAgY29yZVNldHRpbmdzLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+
ZW5hYmxlQ2FyZXRCcm93c2luZyk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0
aW5ncywgR1BhcgogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJyZXNpemFi
bGUtdGV4dC1hcmVhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXRUZXh0QXJlYXNBcmVSZXNpemFi
bGUoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdf
aW50ZXJuX3N0cmluZygidXNlci1zdHlsZXNoZWV0LXVyaSIpKQotICAgICAgICBzZXR0aW5ncy5z
ZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBnX3ZhbHVlX2dldF9zdHJpbmco
JnZhbHVlKSkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVS
TChVUkwoKSwgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBlbHNlIGlmIChuYW1l
ID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAgICAgICAg
c2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2
YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtcHJp
dmF0ZS1icm93c2luZyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiMTBjMDQuLmQ1OTQwYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5h
bWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFt
IHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3Rv
cnlJdGVtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpp
bmRleCBjY2ViYTBiLi44MjJhZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
SW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxv
b3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KQEAgLTUzNSw3ICs1MzUsNyBA
QCBXZWJIaXN0b3J5SXRlbSAqa2l0KEhpc3RvcnlJdGVtKiBpdGVtKQogLSAoTlNVUkwgKilVUkwK
IHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBjb3Jl
KF9wcml2YXRlKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBjb3JlKF9wcml2YXRlKS0+
dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxF
eHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCmluZGV4
IDBlYjNlYTMuLjA3NzEwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
TlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJh
cy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCiAjaW1w
b3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1
ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CkBAIC0xMjcsOSArMTI3LDkgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKICAgICAgICAgcmV0dXJu
IHNlbGY7CiAgICAgfQogICAgIAotICAgIC8vIFRoaXMgYXBwbGllcyBOU1VSTCdzIGNvbmNlcHQg
b2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBLVVJMJ3MgY29uY2VwdC4gSXQgd291bGQKKyAg
ICAvLyBUaGlzIGFwcGxpZXMgTlNVUkwncyBjb25jZXB0IG9mIGNhbm9uaWNhbGl6YXRpb24sIGJ1
dCBub3QgVVJMJ3MgY29uY2VwdC4gSXQgd291bGQKICAgICAvLyBtYWtlIHNlbnNlIHRvIGFwcGx5
IGJvdGgsIGJ1dCB3aGVuIHdlIHRyaWVkIHRoYXQgaXQgY2F1c2VkIGEgcGVyZm9ybWFuY2UgZGVn
cmFkYXRpb24KLSAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGFw
cGx5IG9ubHkgdGhlIEtVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBOU1VSTAorICAgIC8vIChzZWUg
NTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0aGUgVVJMIGNvbmNl
cHQgYW5kIG5vdCB0aGUgTlNVUkwKICAgICAvLyBjb25jZXB0LCBidXQgaXQncyB0b28gcmlza3kg
dG8gbWFrZSB0aGF0IGNoYW5nZSBmb3IgV2ViS2l0IDMuMC4KICAgICBOU1VSTFJlcXVlc3QgKm5l
d1JlcXVlc3QgPSBbY29uY3JldGVDbGFzcyBjYW5vbmljYWxSZXF1ZXN0Rm9yUmVxdWVzdDpyZXF1
ZXN0XTsKICAgICBOU1VSTCAqbmV3VVJMID0gW25ld1JlcXVlc3QgVVJMXTsgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tCmluZGV4IDg4
M2YyZTYuLmU5ZWQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpbXBvcnQgIldlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1VzZXJDb250ZW50VVJMUGF0dGVy
bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbQppbmRleCBjZjllYzdiLi5hYjQ3Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCkBAIC01Myw3ICs1Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgot
I2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Qcm94eVNlcnZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5k
ZXggNWRiODQ1Ny4uNzQyNDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtODQ3LDcgKzg0Nyw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgIAotICAgIEtVUkwgYWJzb2x1
dGVVUkwgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocmVsYXRpdmVVUkxT
dHJpbmcpOworICAgIFVSTCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTChyZWxhdGl2ZVVSTFN0cmluZyk7CiAgICAgcmV0dXJuIGFic29sdXRlVVJMLnN0
cmluZygpLnV0ZjgoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDIwYmVlZTIuLjY4YTI5MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgK
QEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWxMb2FkQW5kRGVzdHJv
eVN0cmVhbVdpdGhFcnJvcihOU0Vycm9yICopOwogCi0gICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHJlcXVlc3RVUkwpIHsgbV9yZXF1ZXN0VVJMID0gcmVxdWVzdFVS
TDsgfQorICAgIHZvaWQgc2V0UmVxdWVzdFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RV
UkwpIHsgbV9yZXF1ZXN0VVJMID0gcmVxdWVzdFVSTDsgfQogCiAgICAgdm9pZCBzdGFydCgpOwog
ICAgIHZvaWQgc3RvcCgpOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB3
YW50c0FsbFN0cmVhbXMoKSBjb25zdDsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBt
X2RlbGl2ZXJ5RGF0YTsKLSAgICBXZWJDb3JlOjpLVVJMIG1fcmVxdWVzdFVSTDsKKyAgICBXZWJD
b3JlOjpVUkwgbV9yZXF1ZXN0VVJMOwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9yZXNwb25zZVVS
TDsKICAgICBDU3RyaW5nIG1fbWltZVR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IGU1MzZmM2Mu
LjAxNTNhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBOU011dGFibGVBcnJheSogZ2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2Vi
Q29yZTo6Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtKiwgY29uc3QgV2ViQ29yZTo6
Q29udGV4dE1lbnUqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRV
UkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpp
bmRleCBjNGNjNmM2Li5iODMyZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNDMsNyArNDMsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KLSNpbXBv
cnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTG9jYWxpemVkU3RyaW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJDb250ZXh0
TWVudUNsaWVudDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVt
LCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRV
UkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRV
UkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgW21fd2ViVmlldyBfZG93bmxvYWRVUkw6dXJsXTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCmluZGV4IGFmZmYzMDYuLjQyOWYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xNTIsOCArMTUyLDggQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJv
b2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tl
ZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2so
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBX
VEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJS
SURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFt
ZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFu
c2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBP
VkVSUklERTsKQEAgLTE5MSwyNiArMTkxLDI2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVs
ZW1lbnQqLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJD
b3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3Jv
bGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBib29sKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29y
ZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1
Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVOQUJMRShQTFVHSU5f
UFJPWFlfRk9SX1ZJREVPKQotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgCisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlk
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCop
IE9WRVJSSURFOwogI2VuZGlmCiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250
ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RG
OjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkKikgT1ZFUlJJREU7CkBAIC0yMzEsNyArMjMxLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNv
bnN0OwogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCmluZGV4IDIyMGI0ZDguLmFmYWJmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC00MTMsNyAr
NDEzLDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlcioKIH0KICNlbmRpZgogCi1ib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmIGltYWdl
VVJMKSBjb25zdAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5J
bWFnZShjb25zdCBVUkwmIGltYWdlVVJMKSBjb25zdAogewogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYlJlc291cmNlRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVzb3VyY2VM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC01MzAsNyArNTMwLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVj
dCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZENh
bmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmll
dzpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiksIG1fd2ViRnJhbWUuZ2V0KCkpOwog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkK
K3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUpCiB7CiAg
ICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAg
V2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMg
PSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBA
IC05OTIsNyArOTkyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlld0RpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
ZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIGlu
c2VjdXJlVVJMKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJh
bWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
ZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50
YXRpb25zKHdlYlZpZXcpOwpAQCAtMTAwMiw3ICsxMDAyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IEsKICAgICB9CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiBpbnNlY3VyZVVS
TCwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CkBAIC0xMTkyLDcgKzExOTIsNyBAQCBQ
YXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwogfQog
Ci12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIFdlYlZpZXcqIHZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkp
OwogICAgIApAQCAtMTMyMCw3ICsxMzIwLDcgQEAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlz
dGVuZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRVcFBvbGljeUxpc3RlbmVyKEZyYW0KICAg
ICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lcjsKIH0KIAotU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQVNTRVJUKHdlYlZpZXcpOwpAQCAt
MTMyOCw3ICsxMzI4LDcgQEAgU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQo
Y29uc3QgS1VSTCYgdXJsKQogICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSB3aXRoIG5p
bCBmb3IgdGhlIFdlYlZpZXcgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIHNvbWV3aGVyZSBlbHNlLgog
ICAgIC8vIEJ1dCBpZiB3ZSBkbywgaXQncyBiZXR0ZXIgdG8gcmV0dXJuIHRoZSBlbXB0eSBzdHJp
bmcgdGhhbiBqdXN0IGNyYXNoaW5nIG9uIHRoZSBzcG90LgogICAgIC8vIE1vc3Qgb3RoZXIgY2Fs
bCBzaXRlcyBhcmUgdG9sZXJhbnQgb2YgbmlsIGJlY2F1c2Ugb2YgT2JqZWN0aXZlLUMgYmVoYXZp
b3IsIGJ1dCB0aGlzIG9uZQotICAgIC8vIGlzIG5vdCBiZWNhdXNlIHRoZSByZXR1cm4gdmFsdWUg
b2YgX3VzZXJBZ2VudEZvclVSTCBpcyBhIGNvbnN0IEtVUkwmLgorICAgIC8vIGlzIG5vdCBiZWNh
dXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgX3VzZXJBZ2VudEZvclVSTCBpcyBhIGNvbnN0IFVSTCYu
CiAgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIApAQCAt
MTM4OSw3ICsxMzg5LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdl
KCkgY29uc3QKICAgICByZXR1cm4gW1tbbV93ZWJGcmFtZS5nZXQoKSBfZGF0YVNvdXJjZV0gcmVw
cmVzZW50YXRpb25dIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxSZXByZXNlbnRhdGlvbiBjbGFzc11d
OwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWln
aHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTQyMyw3ICsxNDIz
LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1l
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gMDsKIH0KIAotT2JqZWN0
Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC0xNjQxLDcgKzE2NDEsNyBAQCBwcml2YXRlOgogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQ
bHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsCitQYXNzUmVmUHRyPFdpZGdl
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXpl
LCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTc0Niw5ICsxNzQ2LDkgQEAgUGFzc1Jl
ZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50
U2l6ZSYgc2l6ZSwgSFRNTFAKICAgICBpZiAoZXJyb3JDb2RlICYmIG1fd2ViRnJhbWUpIHsKICAg
ICAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0
aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJW
aWV3KTsKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+cGx1Z0luRmFpbGVkV2l0aEVycm9y
RnVuYykgewotICAgICAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBs
ZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShw
YXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgInBsdWdpbnNwYWdlIikpKTsKKyAgICAgICAgICAgIFVS
TCBwbHVnaW5QYWdlVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhwYXJhbWV0ZXJWYWx1ZShwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
InBsdWdpbnNwYWdlIikpKTsKICAgICAgICAgICAgIGlmICghcGx1Z2luUGFnZVVSTC5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTCA9IEtVUkwo
KTsKKyAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gVVJMKCk7CiAgICAgICAgICAgICBO
U1N0cmluZyAqcGx1Z2luTmFtZSA9IHBsdWdpblBhY2thZ2UgPyAoTlNTdHJpbmcgKilbcGx1Z2lu
UGFja2FnZSBwbHVnaW5JbmZvXS5uYW1lIDogbmlsOwogCiAgICAgICAgICAgICBOU0Vycm9yICpl
cnJvciA9IFtbTlNFcnJvciBhbGxvY10gX2luaXRXaXRoUGx1Z2luRXJyb3JDb2RlOmVycm9yQ29k
ZQpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIH0KICAgICAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MQXBw
bGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgCitQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CkBAIC0xODU1LDcgKzE4NTUsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcwogfQogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNzUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50
U2l6ZSYgc2l6ZSwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLAor
UGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXll
clByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApp
bmRleCAyYTY2YzI5Li4yMmYyMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaApAQCAtNTcsMTIgKzU3LDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBj
cmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpD
b29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00o
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQog
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTc4LDcgKzc4LDcgQEAg
cHJpdmF0ZToKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCiAKICAgICAv
LyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFk
ZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCkgT1ZFUlJJREU7
CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5CkBAIC05NCw3ICs5NCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIHVuaXF1ZU5hbWUo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6S1VSTCB1
cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQppbmRleCBkODExNDQxLi44ZWVjNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCkBAIC05MiwzMiAr
OTIsMzIgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNF
bmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUp
OwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRQ
bHVnaW5JbmZvKGNvbnN0IFBhZ2UqIHBhZ2UsIFZlY3RvcjxQbHVnaW5JbmZvPiYKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBLVVJMJiwgY29u
c3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNp
dGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0
cmluZyYpCiB7CiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsK
IH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBDb2xvciBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCiB9CiAKLUtVUkwgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAg
IHJldHVybiBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVybCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdp
bi5tbQppbmRleCBiODNiZTE2Li5hMTgwMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMzEsNyArMzEsNyBA
QAogI2ltcG9ydCAiV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhTWFuYWdlci5oIgogI2ltcG9ydCAi
V2ViRGF0YWJhc2VRdW90YU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYlF1b3RhTWFuYWdlci5oIgot
I2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EYXRhYmFzZU1hbmFnZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KIApAQCAtNDQsNyArNDQsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAg
ICBpZiAoIXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTChbdXJsIGFic29sdXRl
VVJMXSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKICAgICBvcmlnaW4tPnJlZigpOwog
ICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUg
Kj4ob3JpZ2luLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCmluZGV4IGM1ZjJjMjcuLjg0ZmFhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBvcnQgIldlYlZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lXZWJBcmNo
aXZlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgYWRkVHlwZXNGcm9tQ2xhc3MoTlNNdXRhYmxlRGljdGlvbmFyeSAqYWxsVHlwZXMsIENs
YXNzIG9iakNDbAogLy8gTWF5IHJldHVybiBuaWwgaWYgbm90IGluaXRpYWxpemVkIHdpdGggYSBV
UkwuCiAtIChOU1VSTCAqKV9VUkwKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gdXJsOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU011dGFibGVEaWN0aW9uYXJ5ICphbGxU
eXBlcywgQ2xhc3Mgb2JqQ0NsCiAKIC0gKE5TVVJMICopdW5yZWFjaGFibGVVUkwKIHsKLSAgICBj
b25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+
dW5yZWFjaGFibGVVUkwoKTsKKyAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMID0gdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogICAgIGlmICh1bnJlYWNo
YWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHVucmVh
Y2hhYmxlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggOGFkOWRk
YS4uODU0NDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNDE3
LDcgKzE0MTcsNyBAQCBzdGF0aWMgTlNVUkwgKmNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKQogICAg
IGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3NlbGYgX3dlYmtpdF9p
bnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1JTUVUeXBlIHRleHRF
bmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJlYWNoYWJsZVVSTDp1
bnJlYWNoYWJsZVVSTF07CiAgICAgCi0gICAgS1VSTCByZXNwb25zZVVSTDsKKyAgICBVUkwgcmVz
cG9uc2VVUkw7CiAgICAgaWYgKCFiYXNlVVJMKSB7CiAgICAgICAgIGJhc2VVUkwgPSBibGFua1VS
TCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRhdGFVUkwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDBiMmE2MmQuLmU3NmE1
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzY3Myw3
ICszNjczLDcgQEAgc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChOU1N0
cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRlbnNpb24KICAgICAgICAgaWYgKCFwYWdlKSAK
ICAgICAgICAgICAgIHJldHVybiBuaWw7IAogICAgICAgICAKLSAgICAgICAgY29uc3QgS1VSTCYg
aW1hZ2VVUkwgPSBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdnaW5nSW1hZ2VVUkwoKTsKKyAg
ICAgICAgY29uc3QgVVJMJiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ2dp
bmdJbWFnZVVSTCgpOwogICAgICAgICBBU1NFUlQoIWltYWdlVVJMLmlzRW1wdHkoKSk7CiAgICAg
ICAgIGRyYWdnaW5nSW1hZ2VVUkwgPSBpbWFnZVVSTDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCmluZGV4IGEwY2E4NWYuLjFjOTU3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlBERlZpZXcubW0KQEAgLTU2LDcgKzU2LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZvcm1FbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgotI2ltcG9ydCA8V2ViQ29y
ZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXli
b2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IGJiMTFjZmMuLjE5NjA0MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpAQCAtMzks
NyArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
U2NyaXB0Q29udHJvbGxlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNjIsNyArNjIs
NyBAQCBzdGF0aWMgTlNVUkwgKnRvTlNVUkwoY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gS1VSTChQYXJzZWRV
UkxTdHJpbmcsIHMpOworICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzKTsKIH0KIAog
c3RhdGljIFdlYkZyYW1lICp0b1dlYkZyYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMWE5NmUwMy4uOGNmZTdmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjgyLDcgKzY4Miw3IEBAIHN0
YXRpYyBOU1N0cmluZyAqbGVha091dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKQogewog
ICAgIHN0YXRpYyBOU1N0cmluZyAqb3V0bG9va1F1aXJrc1NjcmlwdENvbnRlbnRzID0gbGVha091
dGxvb2tRdWlya3NVc2VyU2NyaXB0Q29udGVudHMoKTsKICAgICBjb3JlKHNlbGYpLT5ncm91cCgp
LmFkZFVzZXJTY3JpcHRUb1dvcmxkKGNvcmUoW1dlYlNjcmlwdFdvcmxkIHdvcmxkXSksCi0gICAg
ICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgS1VSTCgpLCBWZWN0b3I8U3RyaW5nPigp
LCBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1l
cyk7CisgICAgICAgIG91dGxvb2tRdWlya3NTY3JpcHRDb250ZW50cywgVVJMKCksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdElu
QWxsRnJhbWVzKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NB
dHRyaWJ1dGVTZXR0ZXJzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCmluZGV4IGMyNzA4MjkuLmNkNTRmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtNDksNyArNDksNyBAQCBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhpc3RvcnlJdGVtOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVuZGVyQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3Rvcnku
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCmluZGV4IDlkM2YzYWMu
LmE3YmM4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKQEAgLTI2LDcgKzI2
LDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2VCYXNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlIDxR
V2ViUGFnZUFkYXB0ZXIuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJz
Y3JpcHR3b3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2NyaXB0d29ybGQuY3Bw
CmluZGV4IGFmZWI1YmIuLmM1YTVmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzY3JpcHR3b3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlw
dHdvcmxkLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgInF3ZWJzY3JpcHR3b3JsZC5o
IgogI2luY2x1ZGUgInF3ZWJzY3JpcHR3b3JsZF9wLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
PFFTdHJpbmdMaXN0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2Vj
dXJpdHlvcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2lu
LmNwcAppbmRleCA1OGZlNzk1Li42ZTkzNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZWN1cml0eW9yaWdpbi5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGlj
eS5oIgpAQCAtMjczLDcgKzI3Myw3IEBAIFFTdHJpbmdMaXN0IFFXZWJTZWN1cml0eU9yaWdpbjo6
bG9jYWxTY2hlbWVzKCkKICovCiBRV2ViU2VjdXJpdHlPcmlnaW46OlFXZWJTZWN1cml0eU9yaWdp
bihjb25zdCBRVXJsJiB1cmwpCiB7Ci0gICAgZCA9IG5ldyBRV2ViU2VjdXJpdHlPcmlnaW5Qcml2
YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCh1cmwpKSk7CisgICAgZCA9IG5ldyBRV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKHVybCkpKTsK
IH0KIAogLyohCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCBlNzk2MzNi
Li43MDdiMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRl
OjphcHBseSgpCiAgICAgICAgIHNldHRpbmdzLT5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHZh
bHVlKTsKIAogICAgICAgICBRVXJsIGxvY2F0aW9uID0gIXVzZXJTdHlsZVNoZWV0TG9jYXRpb24u
aXNFbXB0eSgpID8gdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA6IGdsb2JhbC0+dXNlclN0eWxlU2hl
ZXRMb2NhdGlvbjsKLSAgICAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24o
V2ViQ29yZTo6S1VSTChsb2NhdGlvbikpOworICAgICAgICBzZXR0aW5ncy0+c2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihXZWJDb3JlOjpVUkwobG9jYXRpb24pKTsKIAogICAgICAgICBRU3RyaW5n
IGVuY29kaW5nID0gIWRlZmF1bHRUZXh0RW5jb2RpbmcuaXNFbXB0eSgpID8gZGVmYXVsdFRleHRF
bmNvZGluZzogZ2xvYmFsLT5kZWZhdWx0VGV4dEVuY29kaW5nOwogICAgICAgICBzZXR0aW5ncy0+
c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcpOwpAQCAtNzQ5LDcgKzc0OSw3IEBA
IHZvaWQgUVdlYlNldHRpbmdzOjpjbGVhckljb25EYXRhYmFzZSgpCiBRSWNvbiBRV2ViU2V0dGlu
Z3M6Omljb25Gb3JVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIFdlYkNvcmU6OmluaXRpYWxp
emVXZWJDb3JlUXQoKTsKLSAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNl
KCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3JlOjpLVVJMKHVybCkuc3Ry
aW5nKCksCisgICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6Omljb25EYXRhYmFzZSgpLnN5bmNo
cm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6VVJMKHVybCkuc3RyaW5nKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7
CiAgICAgaWYgKCFpY29uKQogICAgICAgICByZXR1cm4gUUljb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5k
ZXggZTQ2Y2YxOS4uN2Y1Y2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
My0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1l
IEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjcgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAg
W1F0XSBGaXggZm9yY2Vfc3RhdGljX2xpYnNfYXNfc2hhcmVkIGluIFdlYktpdDIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAppbmRleCA5ZDVi
YWFjLi4yNTQ5ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRRdC5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTIwMyw3ICsyMDMs
NyBAQCBwdWJsaWM6CiAgICAgUVdlYkZ1bGxTY3JlZW5WaWRlb0hhbmRsZXIqIGNyZWF0ZUZ1bGxT
Y3JlZW5WaWRlb0hhbmRsZXIoKTsKIAogICAgIFFXZWJQYWdlQWRhcHRlciogbV93ZWJQYWdlOwot
ICAgIEtVUkwgbGFzdEhvdmVyVVJMOworICAgIFVSTCBsYXN0SG92ZXJVUkw7CiAgICAgU3RyaW5n
IGxhc3RIb3ZlclRpdGxlOwogICAgIFN0cmluZyBsYXN0SG92ZXJDb250ZW50OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0
LmNwcAppbmRleCA3MmEzZGJiLi4wODk3NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3Vs
dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTUwLDcgKzUw
LDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChD
b250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZXgKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9p
ZCBDb250ZXh0TWVudUNsaWVudFF0Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5oCmluZGV4IGU4ZWZkMjguLjIxOTIxYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRR
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRRdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0TWVudT4pOwogICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBj
b25zdCBDb250ZXh0TWVudSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0
IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAgICAg
dmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA5NjAwOTIyLi4yOWY1ZGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcApAQCAtNzMzLDcgKzczMyw3IEBAIFFVcmwgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6Om1lZGlhQ29udGVudFVybEJ5RWxlbWVudElkKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0CiAv
LyBBUEkgQ2FuZGlkYXRlPwogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0QWx0ZXJu
YXRlSHRtbChRV2ViRnJhbWVBZGFwdGVyKiBhZGFwdGVyLCBjb25zdCBRU3RyaW5nJiBodG1sLCBj
b25zdCBRVXJsJiBiYXNlVXJsLCBjb25zdCBRVXJsJiBmYWlsaW5nVXJsKQogewotICAgIEtVUkwg
a3VybChiYXNlVXJsKTsKKyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpGcmFt
ZSogY29yZUZyYW1lID0gYWRhcHRlci0+ZnJhbWU7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVBcnJheSB1dGY4ID0gaHRtbC50b1V0
ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDE5ODFmZDEuLjM0ZmFlYzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIHN0YXRpYyBRU3RyaW5nIGRydFByaW50RnJhbWVVc2VyR2Vz
dHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIFFTdHJpbmc6OmZy
b21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4xU3Ry
aW5nKCJmYWxzZSIpKTsKIH0KIAotc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYga3VybCkKK3N0YXRpYyBRU3RyaW5n
IGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlVSTCYg
a3VybCkKIHsKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNMb2NhbEZpbGUoKSkK
ICAgICAgICAgcmV0dXJuIGt1cmwuc3RyaW5nKCk7CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKIH0K
IAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQordm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiB1
cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3Mp
CiAgICAgICAgIHByaW50ZigiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVz
IFxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2Zy
YW1lKSksIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQodXJs
KSkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiB7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtV
UkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFVzZWQgYnkg
QXBwbGUgV2ViS2l0IHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgYW4gZXhpc3RpbmcgaGlzdG9yeSBp
dGVtLgogICAgIC8vIFF0V2ViS2l0IGRvZXNuJ3QgYWNjb21vZGF0ZSB0aGlzIG9uIGhpc3Rvcnkg
aXRlbXMuIElmIGl0IGV2ZXIgZG9lcywKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBj
b25zdCBLVVJMJgogfQogCiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQo
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJBZ2VudChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuIG1f
d2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT51c2VyQWdlbnRGb3JVcmwodXJsKS5yZW1vdmUoUUxhdGlu
MUNoYXIoJ1xuJykpLnJlbW92ZShRTGF0aW4xQ2hhcignXHInKSk7CkBAIC04MzUsNyArODM1LDcg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwm
KQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiZGlkUnVuSW5zZWN1cmVDb250ZW50XG4iKTsK
QEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAg
ICAgICAgIHByaW50ZigiZGlkRGV0ZWN0WFNTXG4iKTsKQEAgLTExNTMsOCArMTE1Myw4IEBAIGJv
b2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FsbEVycm9yUGFnZUV4dGVuc2lvbihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCFwYWdlLT5lcnJvclBhZ2VFeHRlbnNpb24o
Jm9wdGlvbiwgJm91dHB1dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgYmFz
ZVVybChvdXRwdXQuYmFzZVVybCk7Ci0gICAgS1VSTCBmYWlsaW5nVXJsKG9wdGlvbi51cmwpOwor
ICAgIFVSTCBiYXNlVXJsKG91dHB1dC5iYXNlVXJsKTsKKyAgICBVUkwgZmFpbGluZ1VybChvcHRp
b24udXJsKTsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGJhc2VVcmwp
OwogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUob3V0cHV0LmNvbnRlbnQuY29uc3REYXRhKCksIG91dHB1
dC5jb250ZW50Lmxlbmd0aCgpKTsKQEAgLTEzMDAsNyArMTMwMCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsCiAgICAgbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPmVtaXREb3dubG9hZFJlcXVl
c3RlZChyZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QobV9mcmFtZS0+bG9hZGVyKCkubmV0d29ya2lu
Z0NvbnRleHQoKSkpOwogfQogCi1QYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0
OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCitQ
YXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGlu
dCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBpZiAoIW1fd2ViRnJhbWUp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgUGFzc1JlZlB0cjxGcmFt
ZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcKIAogICAgIC8vIEZJWE1FOiBTZXQgb3ZlcnJpZGUgZW5jb2RpbmcgaWYgd2UgaGF2
ZSBvbmUuCiAKLSAgICBLVVJMIHVybFRvTG9hZCA9IHVybDsKKyAgICBVUkwgdXJsVG9Mb2FkID0g
dXJsOwogICAgIGlmICh1cmxUb0xvYWQuaXNFbXB0eSgpKQogICAgICAgICB1cmxUb0xvYWQgPSBi
bGFua1VSTCgpOwogCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZwogICAgIHJldHVybiBmcmFtZURhdGEuZnJhbWUucmVsZWFzZSgpOwogfQogCi1PYmplY3RDb250
ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9v
bCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIHFEZWJ1ZygpPDwiICsr
KysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5zdHJpbmcoKTw8IiwgbWltZSA9ICI8PG1pbWVU
eXBlSW47CiAgICAgUUZpbGVJbmZvIGZpKHVybC5wYXRoKCkpOwpAQCAtMTQ2MCw3ICsxNDYwLDcg
QEAgcHJpdmF0ZToKIH07CiAKIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxl
bWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRN
TFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICAvLyBxRGVidWco
KTw8Ii0tLS0tLSBDcmVhdGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRl
UGx1Z2luIGZvciAiPDx1cmwuc3RyaW5nKCkgPDwgbWltZVR5cGU7CiAgICAgLy8gcURlYnVnKCk8
PCItLS0tLS1cdCB1cmwgPSAiPDx1cmwuc3RyaW5nKCk7CkBAIC0xNTYzLDcgKzE1NjMsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1
Z2luV2lkZ2V0KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gZmFsc2U7CiB9
CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4g
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBlbGVt
ZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFw
cGxldCIsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAzZWRiMzY1Li40ZTU2Yzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJv
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlldy5oIgpAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VS
TCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSBpbnRl
cnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROYXZp
Z2F0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xNjIsOCArMTYyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbios
IGNvbnN0IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwm
LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CkBAIC0xOTAsOSArMTkwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYsIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2Vy
QWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRm
b3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hl
ZEZyYW1lKik7CkBAIC0yMDYsMTQgKzIwNiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJn
aW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
OworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFy
Z2luSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwogCi0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25z
dCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcyk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmlydHVhbCBPYmplY3RDb250ZW50
VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
SW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAgICAgdmlydHVhbCBTdHJp
bmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsKQEAgLTIyNiw3
ICsyMjYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAgIGNvbnN0IEtVUkwm
IGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xhc3RSZXF1ZXN0ZWRVcmw7IH0K
KyAgICBjb25zdCBVUkwmIGxhc3RSZXF1ZXN0ZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xhc3RS
ZXF1ZXN0ZWRVcmw7IH0KIAogICAgIFFXZWJGcmFtZUFkYXB0ZXIqIHdlYkZyYW1lKCkgY29uc3Q7
CiAKQEAgLTI2MSw3ICsyNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlBsdWdpblZpZXcq
IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW47CiAKLSAg
ICBLVVJMIG1fbGFzdFJlcXVlc3RlZFVybDsKKyAgICBVUkwgbV9sYXN0UmVxdWVzdGVkVXJsOwog
ICAgIGJvb2wgbV9pc09yaWdpbmF0aW5nTG9hZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5jcHAKaW5kZXggZTg5YTE0My4uNGQwZDljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgi
CiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdp
bi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5k
aWNhdG9yLmgiCiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCmlu
ZGV4IGFmYjFhZGIuLmI0MWQyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0xMDAsMzIgKzEwMCwz
MiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlVmlz
aXRlZExpbmtTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmlu
ZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAK
LWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQogewogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdl
YkNvcmU6OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDbwogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVVUkwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgQVNTRVJUKGhhc2gpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgK
aW5kZXggZGFhYjI1OS4uOTc5MWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaApAQCAtNTksMTIgKzU5LDEyIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAg
ICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFn
ZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29s
IGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggNzYzM2JmNy4uZmY2OWJhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5nIFFXZWJGcmFtZUFkYXB0
ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRDb250
ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBjb25z
dCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJsKTsKKyAgICBVUkwga3Vy
bChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsK
ICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCkpOwog
ICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3NywxNyBAQCB2b2lkIFFX
ZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSwgY29uc3Qg
UVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGluZyA9IGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmcoYWN0dWFsTWltZVR5cGUp
LCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBlKSwgZW5jb2RpbmcsIFVS
TCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2b2lkIFFXZWJGcmFtZUFk
YXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVybCAmYmFzZVVybCkK
IHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwoYmFzZVVybCk7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVB
cnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmNvbnN0
RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiksIFdURjo6U3RyaW5nKCJ1
dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJpbmcoInV0Zi04Iiks
IFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1
ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC0zNzYsOCArMzc2
LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGNvbnN0IEZyYW1l
KiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1dGVVcmwoY29uc3Qg
UVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxk
IGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJMIGFuZCBiYWNrIHRvIHBy
ZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdo
dHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwpOworICAgIC8vIENvbnZl
cnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4
dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwgdmFsaWRhdGVkVXJsID0g
VVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlkKCkgfHwgIXZhbGlkYXRl
ZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRVcmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5k
ZXggZDI2NjUyNi4uNWFhOWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCBR
V2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9u
IGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVz
dChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsICZmcmFtZSksIC8qbG9j
a0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFsc2UsIC8qZXZlbnQq
LyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzogewotICAgICAgICBLVVJMIHVybCA9IGZy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCk7CisgICAgICAg
IFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVS
TCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVybCA9IGZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICBvcGVuTmV3V2luZG93
KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0ZmM1Y2ZmLi5hMDAwNDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1l
ZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIEF0dGVtcHRpbmcgdG8gc2Nyb2xsIGZyb20g
YSBub24tc2Nyb2xsYWJsZSBsYXllciByZXN1bHRzIHRoZSBtYWluIGRvY3VtZW50IGdldHRpbmcg
c2Nyb2xsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBl
cnMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAppbmRleCAz
NjBmN2MyLi40MmY2ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGlu
Z0hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5j
cHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTM5LDEyICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIENGQXJyYXlDYWxsQmFj
a3MgTWFyc2hhbGxpbmdIZWxwZXJzOjprSVVua25vd25BcnJheUNhbGxCYWNrcyA9IHswLCBJVW5r
bm93blJldGFpbkNhbGxiYWNrLCBJVW5rbm93blJlbGVhc2VDYWxsYmFjaywgMCwgMH07CiBDRkRp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkRpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcyA9IHswLCBJVW5rbm93blJldGFpbkNhbGxiYWNrLCBJVW5rbm93
blJlbGVhc2VDYWxsYmFjaywgMCwgMH07CiAKLUtVUkwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RS
VG9LVVJMKEJTVFIgdXJsU3RyKQorVVJMIE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTChC
U1RSIHVybFN0cikKIHsKLSAgICByZXR1cm4gS1VSTChLVVJMKCksIFN0cmluZyh1cmxTdHIsIFN5
c1N0cmluZ0xlbih1cmxTdHIpKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgU3RyaW5nKHVybFN0
ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKIH0KIAotQlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6
OktVUkxUb0JTVFIoY29uc3QgS1VSTCYgdXJsKQorQlNUUiBNYXJzaGFsbGluZ0hlbHBlcnM6OlVS
TFRvQlNUUihjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gQlN0cmluZyh1cmwuc3RyaW5n
KCkpLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxs
aW5nSGVscGVycy5oIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmgKaW5k
ZXggYjIxM2ZiOS4uNTBlMmM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmgKQEAgLTMxLDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIH0KIAogY2xhc3MgTWFy
c2hhbGxpbmdIZWxwZXJzCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkNvcmU6OktVUkwgQlNU
UlRvS1VSTChCU1RSKTsKLSAgICBzdGF0aWMgQlNUUiBLVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6VVJMIEJTVFJUb0tVUkwoQlNUUik7CisgICAg
c3RhdGljIEJTVFIgVVJMVG9CU1RSKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHN0YXRpYyBD
RlVSTFJlZiBQYXRoU3RyaW5nVG9GaWxlQ0ZVUkxSZWYoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgRmlsZUNGVVJMUmVmVG9QYXRoU3RyaW5nKENGVVJMUmVmIGZp
bGVVUkwpOwogICAgIHN0YXRpYyBDRlVSTFJlZiBCU1RSVG9DRlVSTFJlZihCU1RSKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAppbmRleCBjNzMzNzc1Li5hMmMzZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBA
IC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtLCBjb25zdAogICAgIHVpRGVsZWdhdGUt
PmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKG1fd2ViVmlldywgJnNlbGVjdGVkSXRlbSwgcHJvcGVy
dHlCYWcuZ2V0KCkpOwogfQogCi12b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVS
TChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVS
TChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3dlYlZpZXctPmRvd25sb2FkVVJMKHVybCk7CiB9
CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJDb250ZXh0TWVudUNsaWVudDo6c2VhcmNoV2l0
aEdvb2dsZShjb25zdCBGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKERlZmlu
aXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwotICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5s
b2FkZXIoKS51cmxTZWxlY3RlZChLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgU3RyaW5nKCks
IDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBwYWdlLT5tYWlu
RnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBT
dHJpbmcoKSwgMCwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuaAppbmRleCBlZDQxYzU5Li4yMWUyNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAg
LTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpD
b250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRNZW51
Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNv
bnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdmlydHVhbCB2
b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmlydHVhbCB2
b2lkIHNwZWFrKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25z
RGVsZWdhdGUuY3BwCmluZGV4IGE1NjQ2ZjIuLjhkZGZkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiV2ViVmll
dy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJ
Q0FUSU9OUykKIApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViRGVza3RvcE5vdGlmaWNhdGlv
bnNEZWxlZ2F0ZTo6Y2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFNjcmlwdEV4ZWN1dGlvCiB7
CiB9CiAKLU5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlOjpjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYgdXJsKQorTm90aWZpY2F0
aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OmNo
ZWNrUGVybWlzc2lvbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBpbnQgb3V0ID0gMDsKICAgICBC
U3RyaW5nIG9yZyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCktPnRvU3RyaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCmluZGV4IGI2ZjljMjEuLmQ3MGZiOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3Rp
ZmljYXRpb25zRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKQEAgLTM4LDcgKzM4LDcgQEAgaW50
ZXJmYWNlIElXZWJEZXNrdG9wTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIGNs
YXNzIFdlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUgOiBwdWJsaWMgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ2xpZW50IHsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPik7CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNs
aWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24oY29uc3QgS1VSTCYpOworICAgIHZpcnR1
YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lv
bihjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToKICAgICBib29sIGhhc05vdGlmaWNhdGlvbkRlbGVn
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggYWJhNzRlYy4uMGNkZmQ4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgICAgICBmcmFtZUxvYWREZWxl
Z2F0ZS0+ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJWaWV3LCBtX3dlYkZyYW1l
KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURh
dGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlKQog
ewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09N
UHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CkBAIC04NDUsNyAr
ODQ1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2Mi0+ZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCh3ZWJWaWV3KTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtVUkwmIGluc2VjdXJl
VVJMKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwpCiB7CiAgICAgQ09N
UHRyPElXZWJTZWN1cml0eU9yaWdpbj4gd2ViU2VjdXJpdHlPcmlnaW4gPSBXZWJTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlSW5zdGFuY2Uob3JpZ2luKTsKIApAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBjb25zdCBLCiAgICAgZnJhbWVMb2FkRGVsZWdhdGVQcml2Mi0+ZGlkUnVuSW5z
ZWN1cmVDb250ZW50KHdlYlZpZXcsIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpKTsKIH0KIAotdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKQor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wp
CiB7CiAgICAgLy8gRklYTUU6IHByb3BvZ2F0ZSBjYWxsIGludG8gdGhlIHByaXZhdGUgZGVsZWdh
dGUuCiB9CkBAIC05NzksNyArOTc5LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc28KICAgICBy
ZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVy
bCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3
ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogICAgIENPTVB0cjxJV2ViSGlzdG9yeURlbGVnYXRl
PiBoaXN0b3J5RGVsZWdhdGU7CkBAIC0xMDU2LDcgKzEwNTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiB7CiB9CiAKLVN0cmlu
ZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkKK1N0cmlu
ZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHJldHVybiBtX3dlYkZyYW1lLT53ZWJWaWV3KCktPnVzZXJBZ2VudEZvcktVUkwodXJsKTsKIH0K
QEAgLTEwNjYsNyArMTA2Niw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hl
UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitQYXNzUmVm
UHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJn
aW5IZWlnaHQqLykKIHsKICAgICBSZWZQdHI8RnJhbWU+IHJlc3VsdCA9IGNyZWF0ZUZyYW1lKHVy
bCwgbmFtZSwgb3duZXJFbGVtZW50LCByZWZlcnJlcik7CkBAIC0xMDc1LDcgKzEwNzUsNyBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29u
c3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorUGFzc1JlZlB0cjxGcmFtZT4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgVVJMLCBjb25zdCBT
dHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
IFVSTCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAK
LU9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKHVybCwgbWltZVR5
cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogfQpAQCAtMTExNiw3ICsxMTE2LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdp
bihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICBBU1NFUlQoZnJhbWUgPT0gcGx1Z2luVmll
dy0+cGFyZW50RnJhbWUoKSk7CiAKICAgICBpZiAoIXBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCku
aXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50
KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5W
aWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZnJhbWUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChwbHVnaW5QYWdlVVJM
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5n
UmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJL
aXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmll
dyogcGx1Z2luCiAgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUtPnBsdWdJbkZhaWxlZFdpdGhFcnJv
cih3ZWJWaWV3LCBlcnJvci5nZXQoKSwgZ2V0V2ViRGF0YVNvdXJjZShmcmFtZS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKSkpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1
Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIApAQCAtMTIxNyw5ICsxMjE3
LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lk
Z2V0KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1fbWFudWFsTG9hZGVyID0gc3RhdGljX2Nhc3Q8
RW1iZWRkZWRXaWRnZXQqPihwbHVnaW5XaWRnZXQpOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIC8q
YmFzZVVSTCovLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIC8qYmFzZVVSTCovLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewotICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmll
dzo6Y3JlYXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1lbnQsIEtVUkwoKSwg
cGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWphdmEtYXBwbGV0IiwgZmFs
c2UpOworICAgIFJlZlB0cjxQbHVnaW5WaWV3PiBwbHVnaW5WaWV3ID0gUGx1Z2luVmlldzo6Y3Jl
YXRlKGNvcmUobV93ZWJGcmFtZSksIHBsdWdpblNpemUsIGVsZW1lbnQsIFVSTCgpLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CiAK
ICAgICAvLyBDaGVjayBpZiB0aGUgcGx1Z2luIGNhbiBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5CiAg
ICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpICYmIHBsdWdpblZpZXctPnBsdWdpbigpLT5sb2Fk
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCA0OTkxOGRjLi5hZTQyOGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhh
bmRsZU9ubG9hZEV2ZW50cygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CkBAIC0xMzUsOCArMTM1LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBPVkVSUklE
RTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkBAIC0xNDgs
MTAgKzE0OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2so
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBX
VEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdl
YkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7CkBAIC0xNzcsMTUgKzE3NywxNSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6
OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCop
IE9WRVJSSURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJD
b3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlw
ZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVN
ZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKSBPVkVS
UklERTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcml2YXRlPiBtX3BvbGljeUxpc3RlbmVyUHJpdmF0ZTsKIAogcHJpdmF0
ZToKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93
bmVyRWxlbWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CisgICAgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0
IFdURjo6U3RyaW5nJiByZWZlcnJlcik7CiAgICAgV2ViSGlzdG9yeSogd2ViSGlzdG9yeSgpIGNv
bnN0OwogCiAgICAgV2ViRnJhbWUqIG1fd2ViRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAppbmRl
eCAwMWJiOGIwLi5hZGMzN2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTg4LDMyICs4OCwz
MiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVZp
c2l0ZWRMaW5rU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlzOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
IH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBsdWdp
bkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjoKICAgICB9CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExp
bmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFz
aCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gcGFnZS0+
Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCBhYjE0
YWZiOS4uMDlhODFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTUzLDEyICs1MywxMiBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlz
aXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVz
aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtT
dHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCBmZmNhYTg1
Li4zYWFlODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUJ1ZmZlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI1NCw3ICsy
NTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnBhZ2VUaXRs
ZSgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YVNvdXJjZTo6dW5yZWFjaGFibGVV
UkwoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogdXJsKQogewotICAgIEtVUkwgdW5y
ZWFjaGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBVUkwgdW5yZWFj
aGFibGVVUkwgPSBtX2xvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKICAgICBCU3RyaW5nIHVybFN0
cmluZygoTFBPTEVTVFIpdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkuY2hhcmFjdGVycygpLCB1bnJl
YWNoYWJsZVVSTC5zdHJpbmcoKS5sZW5ndGgoKSk7CiAKICAgICAqdXJsID0gdXJsU3RyaW5nLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBiOGZhYmUyLi4zZDFiMmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFdlYkRvd25s
b2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUmVzb3VyY2VSCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi1XZWJEb3dubG9hZCog
V2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEtVUkwmIHVybCwgSVdlYkRvd25sb2Fk
RGVsZWdhdGUqIGRlbGVnYXRlKQorV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0
YW5jZShjb25zdCBVUkwmIHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogewog
ICAgIFdlYkRvd25sb2FkKiBpbnN0YW5jZSA9IG5ldyBXZWJEb3dubG9hZCgpOwogICAgIGluc3Rh
bmNlLT5BZGRSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCmluZGV4IDdhNjZkZjEuLjIyNTRk
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaApAQCAtMzgsNyArMzgsNyBAQAogI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAg
ICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTUyLDEzICs1MiwxMyBAQCBjbGFzcyBXZWJEb3du
bG9hZAogI2VuZGlmCiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJ
bnN0YW5jZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKKyAg
ICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJ
bnN0YW5jZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBJV2ViRG93bmxvYWRE
ZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoKTsKIHBy
aXZhdGU6CiAgICAgV2ViRG93bmxvYWQoKTsKICAgICB2b2lkIGluaXQoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKLSAgICB2b2lkIGlu
aXQoY29uc3QgV2ViQ29yZTo6S1VSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgdm9p
ZCBpbml0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CiAgICAg
fldlYkRvd25sb2FkKCk7CiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggNGQ1OWY4OC4uMDA4MjZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYkRv
d25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYwogICAgIENGUmVsZWFzZShjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBXZWJE
b3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxl
Z2F0ZSkKK3ZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgVVJMJiB1cmwsIElXZWJEb3dubG9h
ZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGUgPyBkZWxl
Z2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpOwogICAgIExP
R19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IGQxOWY0MjAuLjk4ZTg1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYkRvd25s
b2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYwogICAgIHN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29u
c3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCit2b2lkIFdlYkRv
d25sb2FkOjppbml0KGNvbnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdh
dGUpCiB7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA1YzBkZmExLi42MTk1ZmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTM2LDcgKzM2LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZW5kZXJPYmplY3QuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAKaW5kZXggYWI3MTk0NS4uMmExYzA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcApA
QCAtNTY3LDExICs1NjcsMTEgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEsIEJTVFIgbWltZVR5cGUsIEIKICAgICBTdHJpbmcg
ZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRFbmNvZGlu
Z05hbWUpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVhbGx5IGJlIHVzaW5nIE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCBoZXJlLAotICAgIC8vIGJ1dCB0aGF0IHdvdWxkIHR1
cm4gYSBudWxsIEJTVFIgaW50byBhIG51bGwgS1VSTCwgYW5kIHdlIGNyYXNoIGluc2lkZSBvZgot
ICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEgbnVsbCBLVVJMIGluIGNvbnN0cnVjdGluZyB0aGUg
UmVzb3VyY2VSZXF1ZXN0LgotICAgIEtVUkwgYmFzZUtVUkwgPSBLVVJMKEtVUkwoKSwgU3RyaW5n
KGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFzZVVSTCkpKTsKKyAgICAv
LyBidXQgdGhhdCB3b3VsZCB0dXJuIGEgbnVsbCBCU1RSIGludG8gYSBudWxsIFVSTCwgYW5kIHdl
IGNyYXNoIGluc2lkZSBvZgorICAgIC8vIFdlYkNvcmUgaWYgd2UgdXNlIGEgbnVsbCBVUkwgaW4g
Y29uc3RydWN0aW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCisgICAgVVJMIGJhc2VLVVJMID0gVVJM
KFVSTCgpLCBTdHJpbmcoYmFzZVVSTCA/IGJhc2VVUkwgOiBMIiIsIFN5c1N0cmluZ0xlbihiYXNl
VVJMKSkpOwogCi0gICAgS1VSTCBmYWlsaW5nS1VSTCA9IE1hcnNoYWxsaW5nSGVscGVyczo6QlNU
UlRvS1VSTChmYWlsaW5nVVJMKTsKKyAgICBVUkwgZmFpbGluZ0tVUkwgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0tVUkwoZmFpbGluZ1VSTCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdChiYXNlS1VSTCk7CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoZGF0YSwg
bWltZVR5cGVTdHJpbmcsIGVuY29kaW5nU3RyaW5nLCBmYWlsaW5nS1VSTCk7CkBAIC03MDEsMTEg
KzcwMSwxMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpwcm92aXNpb25h
bERhdGFTb3VyY2UoCiAgICAgcmV0dXJuICpzb3VyY2UgPyBTX09LIDogRV9GQUlMOwogfQogCi1L
VVJMIFdlYkZyYW1lOjp1cmwoKSBjb25zdAorVVJMIFdlYkZyYW1lOjp1cmwoKSBjb25zdAogewog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKHRoaXMpOwogICAgIGlmICghY29yZUZyYW1lKQot
ICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICByZXR1
cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oCmluZGV4
IDYyNzBkNzguLjMzNjRjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1l
LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQWRqdXN0Vmlld1NpemVPck5vdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWVXaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZUNsaWVudC5oPgogCiAjaW5jbHVkZSA8V1RGL1JlZlB0
ci5oPgpAQCAtMzE4LDcgKzMxOCw3IEBAIHB1YmxpYzoKICAgICBIUkVTVUxUIG1hdGNoTGFiZWxz
QWdhaW5zdEVsZW1lbnQoY29uc3QgQlNUUiogbGFiZWxzLCBpbnQgY0xhYmVscywgSURPTUVsZW1l
bnQqIGFnYWluc3RFbGVtZW50LCBCU1RSKiByZXN1bHQpOwogICAgIEhSRVNVTFQgY2FuUHJvdmlk
ZURvY3VtZW50U291cmNlKGJvb2wqIHJlc3VsdCk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIHVybCgp
IGNvbnN0OworICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBjb25zdDsKIAogICAgIFdlYlZpZXcqIHdl
YlZpZXcoKSBjb25zdDsKICAgICB2b2lkIHNldFdlYlZpZXcoV2ViVmlldyopOwpAQCAtMzQxLDcg
KzM0MSw3IEBAIHByb3RlY3RlZDoKICAgICBjbGFzcyBXZWJGcmFtZVByaXZhdGU7CiAgICAgV2Vi
RnJhbWVQcml2YXRlKiAgICBkOwogICAgIGJvb2wgICAgICAgICAgICAgICAgbV9xdWlja1JlZGly
ZWN0Q29taW5nOwotICAgIFdlYkNvcmU6OktVUkwgICAgICAgbV9vcmlnaW5hbFJlcXVlc3RVUkw7
CisgICAgV2ViQ29yZTo6VVJMICAgICAgIG1fb3JpZ2luYWxSZXF1ZXN0VVJMOwogICAgIGJvb2wg
ICAgICAgICAgICAgICAgbV9pblByaW50aW5nTW9kZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gbV9wYWdlUmVjdHM7CiAgICAgaW50IG1fcGFnZUhlaWdodDsgICAvLyBoZWlnaHQgb2Yg
dGhlIHBhZ2UgYWRqdXN0ZWQgYnkgbWFyZ2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRl
eCA1M2UxZDU0Li43ZTYzNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtMzgsNyAr
MzgsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CkBAIC01MzAsNyArNTMwLDcgQEAgSFJFU1VM
VCBXZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2Fy
ZER1cGxpY2F0ZSwgYm9vbCoKICAgICByZXR1cm4gaHI7CiB9CiAKLXZvaWQgV2ViSGlzdG9yeTo6
dmlzaXRlZFVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3Vu
dCkKK3ZvaWQgV2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KQogewogICAgIElXZWJIaXN0b3J5SXRlbSogZW50cnkgPSBt
X2VudHJpZXNCeVVSTC5nZXQodXJsLnN0cmluZygpKS5nZXQoKTsKICAgICBpZiAoZW50cnkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnkuaAppbmRleCAzYzc1YTE4Li5mZjc3N2NmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
SGlzdG9yeS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAg
ICAgY2xhc3MgUGFnZUdyb3VwOwogfQogCkBAIC0xMTEsNyArMTExLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2ViSGlzdG9yeQogICAgIHN0YXRpYyBXZWJIaXN0b3J5KiBzaGFyZWRIaXN0b3J5KCk7
Ci0gICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0
cmluZyYgdGl0bGUsIGNvbnN0IFdURjo6U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1
cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KTsKKyAgICB2b2lkIHZpc2l0ZWRVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCk7
CiAgICAgdm9pZCBhZGRWaXNpdGVkTGlua3NUb1BhZ2VHcm91cChXZWJDb3JlOjpQYWdlR3JvdXAm
KTsKIAogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW1Gb3JVUkxTdHJpbmcoY29uc3Qg
V1RGOjpTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRl
eCA4YmZlOWJkLi40NTA4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0
b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHAKaW5kZXggOTY0MmU2OC4uN2RjYWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Yk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmluaXRXaXRoVVJMKAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6bWFpbkRvY3VtZW50VVJMKCAK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJlc3VsdCkKIHsKLSAgICAqcmVzdWx0ID0g
TWFyc2hhbGxpbmdIZWxwZXJzOjpLVVJMVG9CU1RSKG1fcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpKTsKKyAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpVUkxUb0JTVFIobV9y
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBA
IC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6dGltZW91dEludGVydmFsKAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6VVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHJl
c3VsdCkKIHsKLSAgICAqcmVzdWx0ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpLVVJMVG9CU1RSKG1f
cmVxdWVzdC51cmwoKSk7CisgICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9C
U1RSKG1fcmVxdWVzdC51cmwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlJlc291cmNlLmNwcAppbmRleCBjY2ZkOTVkLi5lNDY5OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUmVz
b3VyY2UuY3BwCkBAIC0zNSw3ICszNSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAv
LyBXZWJSZXNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElT
dHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGZyYW1lTmFtZSkKK1dlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGZyYW1lTmFtZSkKICAgICA6IG1fcmVmQ291bnQoMCkKICAgICAsIG1fZGF0YShkYXRhKQogICAg
ICwgbV91cmwodXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKaW5kZXggZDhmYjQzMy4uMDhhNTNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpbmNsdWRl
ICJXZWJLaXQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIFdlYlJlc291cmNlIDogcHVibGljIElXZWJSZXNv
dXJjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlJlc291cmNlKiBjcmVhdGVJbnN0YW5jZShQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwogcHJvdGVjdGVkOgotICAgIFdlYlJlc291cmNlKElT
dHJlYW0qIGRhdGEsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGZyYW1lTmFtZSk7CisgICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6
OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7
CiAgICAgfldlYlJlc291cmNlKCk7CiAKIHB1YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNvdW50OwogICAgIENPTVB0cjxJU3RyZWFtPiBt
X2RhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7
CiAgICAgV1RGOjpTdHJpbmcgbV9taW1lVHlwZTsKICAgICBXVEY6OlN0cmluZyBtX3RleHRFbmNv
ZGluZ05hbWU7CiAgICAgV1RGOjpTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAKaW5kZXggZjBjNDMwMi4uZmUzMzJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL3BsYXRm
b3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5j
bHVkZSA8c2hsb2JqLmg+CkBAIC0yMjYsNyArMjI2LDcgQEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3Rh
bmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNl
IC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3Rh
bmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKFBhcnNlZFVSTFN0cmluZywg
Imh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CisgICAgaW5zdGFu
Y2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTChQYXJzZWRVUkxT
dHJpbmcsICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAg
IGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCAxYzhjNTY5Li4w
NzljNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1
ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCmluZGV4IDEyNDI5Y2EuLjU2MzcxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBA
IC0yMjQsOSArMjI0LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJpbmcoQlNUUiBic3Ry
KQogICAgIHJldHVybiBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBLVVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5saW5lIFVSTCB0b1VS
TChCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0cmluZyhic3RyKSk7
CisgICAgcmV0dXJuIFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQogCiBjbGFzcyBQcmVm
ZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9u
T2JzZXJ2ZXIgewpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJz
aW9uU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7CiB9CiAKLWNvbnN0
IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJMJikKK2NvbnN0IFN0
cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQogewogICAgIGlmICht
X3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJBZ2VudEN1c3RvbTsK
QEAgLTQ4NTUsNyArNDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXND
aGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAgICAgc2V0dGluZ3Mu
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAgICBzdHIuY2xlYXIo
KTsKICAgICB9IGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihLVVJMKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVS
TCgpKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFja2dyb3VuZHMoJmVu
YWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYwLDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlw
dFdvcmxkKiBpV29ybGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxk
KCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNl
clNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvVVJMKHVy
bCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3RDb3VudCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0Q291bnQs
IGJsYWNrbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rp
b25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFy
dCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlw
dFdvcmxkKiBpV29ybAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQod29ybGQtPndvcmxk
KCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNl
clN0eWxlU2hlZXRUb1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhzb3VyY2UpLCB0b1VS
TCh1cmwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvU3RyaW5n
VmVjdG9yKHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3RDb3VudCwgYmxhY2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3IEBAIEhSRVNVTFQg
V2ViVmlldzo6cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNj
cmlwdFdvcmxkKiBpV29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndv
cmxkKCksIHRvS1VSTCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9t
V29ybGQod29ybGQtPndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9
CkBAIC02NDI3LDcgKzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqCiAgICAgaWYgKCFw
YWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tVUkwodXJsKSk7Cisg
ICAgcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3b3JsZC0+d29ybGQo
KSwgdG9VUkwodXJsKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1NDksNyArNjU0OSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZpc2l0ZWRVUkxzLCB1
bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2Vi
Vmlldzo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJWaWV3Ojpkb3dubG9h
ZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxlZ2F0ZSdzIGpvYiB0
byByZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhlcndpc2UgaXQgd2ls
bCBiZQogICAgIC8vIGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuaAppbmRleCBhYjI3MTg3Li5jYWQ4NWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBAIC05MDgs
NyArOTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxlIHRvIHZp
b2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRoZSBmcmFt
ZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZy
YW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50Rm9yS1VS
TChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC05NDcsNyArOTQ3
LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0sIExSRVNV
TFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmplY3RGcm9t
V2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVjdCk7CiAK
LSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGRv
d25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5nZXNTb29u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nCmluZGV4IGU1OGJkOGYuLjc5NTAwNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwg
dXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTE2ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBkaWRTZXRTZWxlY3Rpb25U
eXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBFZGl0b3JDbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwIGIv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNF
LmNwcAppbmRleCBkZGE0ZDI3Li43YjVkNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFdpbkNFOjpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb24KICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50V2luQ0U6OmRvd25sb2FkVVJMKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRXaW5DRTo6ZG93bmxvYWRVUkwo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5D
RS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFdpbkNFLmgKaW5kZXggOGNkMTk1MS4uZGI3NTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgK
QEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3Jl
OjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRN
ZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6
OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0dWFsIHZv
aWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7
CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggODUzYjFiYi4uNmQwMGIwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6On5GcmFtZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3RyaW5nIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2MiwxMiArMTYyLDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi1QYXNzUmVmUHRyPFdp
ZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK1Bhc3NSZWZQdHI8
V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
CiB7CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVs
ZW1lbnQsIHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWln
aHQpOwpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpy
ZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwog
fQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAg
cmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlw
ZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0yNjIsMTIgKzI2MiwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBi
b29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91Ymxl
LCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiAK
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewotICAgIHJldHVybiBGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1c2VyQWdlbnQoS1VSTCgp
KSk7CisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5DRTo6Y3JlYXRlKG1fZnJh
bWUsIHVzZXJBZ2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmgKaW5kZXggOTdkYzk1MC4uYjEwZjAyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKKysr
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91
YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlLCBkb3VibGUpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xMDUsMTIgKzEwNSwx
MSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdl
ZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBu
YW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJv
b2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sKTsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNv
cmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25l
ckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCByZWNy
ZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVs
ZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwogCi0gICAgdmlydHVh
bCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5
cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTEzNiw4
ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9y
SGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQsOSArMTYzLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2
aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9y
bURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmlydHVhbCB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCA3MzNhNGVlLi4yZGM5OWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtODQsMzIgKzg0LDMyIEBAIFZpc2l0
ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjcmVhdGVWaXNpdGVkTGlu
a1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
IH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNF
bmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nv
b2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0U6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYg
b3V0CiAgICAgfQogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppc0xpbmtWaXNp
dGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNT
dHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6aXNMaW5rVmlzaXRlZChQYWdl
KiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQog
ewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmgKaW5kZXggMTIwODgxMS4uOTI1ZjBlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0UuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAK
ICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1
Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+
Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBi
b29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcAppbmRleCAzNjUwZDgzLi5mNTUzMTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luY2UvV2ViVmlldy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlZpZXc6OmNs
ZWFudXAoKQogICAgIFVucmVnaXN0ZXJDbGFzcyhrV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgV2Vi
Q29yZTo6aW5zdGFuY2VIYW5kbGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6
OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwKK1Bh
c3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLypt
YXJnaW5IZWlnaHQqLykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJWaWV3LmgKaW5kZXggYjQ0MDI1MS4uOGI2MDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW5jZS9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgK
QEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogY2xhc3MgRnJhbWVW
aWV3OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGZyYW1lUmVjdChSRUNUKiByZWN0KSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
V2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29s
LCBpbnQsIGludCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IERpYWxvZwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBl
NDk5ZjU5Li5kODY4ZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRv
IFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYy
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogbWFu
eSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI3ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4
IGZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCBpbiBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3Bw
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lz
dHJ5LmNwcAppbmRleCAxZTYwZDQwLi44NTA3NjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6TmV0d29ya0Jsb2JSZWdp
c3RyeSgpCiB7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBLVVJMJiB1
cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGRhdGEsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4+JiBuZXdTYW5kYm94RXh0ZW5zaW9ucykKK3ZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25u
ZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gZGF0YSwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mIG5ld1NhbmRib3hFeHRlbnNpb25zKQog
ewogICAgIEFTU0VSVCghbV9zYW5kYm94RXh0ZW5zaW9ucy5jb250YWlucyh1cmwuc3RyaW5nKCkp
KTsKIApAQCAtNjcsMTEgKzY3LDExIEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0CiAgICAgQVNT
RVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29udGFpbnModXJsKSk7
CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9yID0gbV9ibG9i
c0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKICAgICBpZiAobWFwSXRlcmF0b3IgPT0g
bV9ibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCkpCi0gICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9i
c0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rpb24sIEhhc2hTZXQ8S1VSTD4oKSkuaXRlcmF0b3I7
CisgICAgICAgIG1hcEl0ZXJhdG9yID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uYWRkKGNvbm5lY3Rp
b24sIEhhc2hTZXQ8VVJMPigpKS5pdGVyYXRvcjsKICAgICBtYXBJdGVyYXRvci0+dmFsdWUuYWRk
KHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1VSTCkKK3ZvaWQgTmV0d29ya0Jsb2JS
ZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBj
b25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBz
cmNVUkwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3JjVVJM
KTsKICAgICBTYW5kYm94RXh0ZW5zaW9uTWFwOjppdGVyYXRvciBpdGVyID0gbV9zYW5kYm94RXh0
ZW5zaW9ucy5maW5kKHNyY1VSTC5zdHJpbmcoKSk7CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKiBjb25uZWN0CiAgICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9u
KS0+dmFsdWUuYWRkKHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6dW5yZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGJsb2JSZWdpc3RyeSgpLnVucmVnaXN0ZXJC
bG9iVVJMKHVybCk7CiAgICAgbV9zYW5kYm94RXh0ZW5zaW9ucy5yZW1vdmUodXJsLnN0cmluZygp
KTsKQEAgLTk4LDggKzk4LDggQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25uZWN0aW9u
VG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAKICAgICBpZiAoIW1f
YmxvYnNGb3JDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb24pKQogICAgICAgICByZXR1cm47
CiAKLSAgICBIYXNoU2V0PEtVUkw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBtX2Jsb2JzRm9yQ29u
bmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1ZTsKLSAgICBmb3IgKEhhc2hTZXQ8S1VSTD46
Oml0ZXJhdG9yIGl0ZXIgPSBibG9ic0ZvckNvbm5lY3Rpb24uYmVnaW4oKSwgZW5kID0gYmxvYnNG
b3JDb25uZWN0aW9uLmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CisgICAgSGFzaFNldDxV
Ukw+JiBibG9ic0ZvckNvbm5lY3Rpb24gPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5l
Y3Rpb24pLT52YWx1ZTsKKyAgICBmb3IgKEhhc2hTZXQ8VVJMPjo6aXRlcmF0b3IgaXRlciA9IGJs
b2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3Rl
ckJsb2JVUkwoKml0ZXIpOwogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb25zLnJlbW92ZSgqaXRl
cik7CiAgICAgfQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQCiAg
ICAgbV9ibG9ic0ZvckNvbm5lY3Rpb24ucmVtb3ZlKGNvbm5lY3Rpb24pOwogfQogCi1jb25zdCBW
ZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzYW5k
Ym94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitjb25zdCBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzYW5kYm94RXh0ZW5z
aW9ucyhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICByZXR1cm4gbV9zYW5kYm94RXh0
ZW5zaW9ucy5nZXQodXJsLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKaW5kZXgg
NmQ3MWJiZi4uNzMzMDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShCTE9CKSAmJiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogCi0jaW5j
bHVkZSA8V2ViQ29yZS9LVVJMSGFzaC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMSGFzaC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIApAQCAt
NDcsMTMgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CiAgICAg
c3RhdGljIE5ldHdvcmtCbG9iUmVnaXN0cnkmIHNoYXJlZCgpOwogCi0gICAgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2FuZGJveEV4dGVuc2lvbj4+Jik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4sIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+Jik7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdm9pZCBj
b25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MqKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiBzYW5kYm94RXh0ZW5zaW9ucyhjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIAogcHJpdmF0ZToKICAgICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwpAQCAtNjEsNyAr
NjEsNyBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+PiBTYW5kYm94RXh0ZW5zaW9uTWFwOwogICAgIFNhbmRib3hF
eHRlbnNpb25NYXAgbV9zYW5kYm94RXh0ZW5zaW9uczsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29yZTo6S1VSTD4+IEJs
b2JGb3JDb25uZWN0aW9uTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyosIEhhc2hTZXQ8V2ViQ29yZTo6VVJMPj4gQmxvYkZvckNvbm5lY3Rpb25N
YXA7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXAgbV9ibG9ic0ZvckNvbm5lY3Rpb247CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODlkNGVhZi4uMDNhZjFjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTgyLDM3ICsxODIsMzcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKHVpbnQ2NF90IG0KICAgICBsb2FkZXItPmRpZENvbnZlcnRIYW5kbGVUb0Rvd25sb2Fk
KCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JE
T00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewog
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQogewogICAgIHJlc3Vs
dCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
U3RyaW5nJiByZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewog
ICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3Jh
Z2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1
bHQpCiB7CiAgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgQmxvYlJl
Z2lzdHJhdGlvbkRhdGEmIGRhdGEpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPj4gZXh0ZW5zaW9uczsKICAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBkYXRhLnNh
bmRib3hFeHRlbnNpb25zKCkuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkgewpAQCAtMjIzLDEyICsy
MjMsMTIgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQmxvYlIKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5
OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBkYXRhLnJlbGVhc2VEYXRhKCks
IGV4dGVuc2lvbnMpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYgc3JjVVJM
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRnJv
bVVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgTmV0d29ya0Js
b2JSZWdpc3RyeTo6c2hhcmVkKCkucmVnaXN0ZXJCbG9iVVJMKHRoaXMsIHVybCwgc3JjVVJMKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6c2hhcmVkKCkudW5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCmluZGV4IGZiZmQ4MjMxLi5kMjJkZDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKQEAgLTczLDIyICs3MywyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9y
bVN5bmNocm9ub3VzTG9hZChjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYsIFBh
c3NSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+KTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElk
ZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBjcm9zc09yaWdpblJl
ZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwog
ICAgIHZvaWQgc2VydmVQZW5kaW5nUmVxdWVzdHModWludDMyX3QgcmVzb3VyY2VMb2FkUHJpb3Jp
dHkpOwogICAgIHZvaWQgc2V0U2VyaWFsTG9hZGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBz
dGFydERvd25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxv
YWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjb252ZXJ0
TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2ll
c0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGJvb2wmIHJlc3VsdCk7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgdm9pZCBn
ZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAg
ICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVz
dWx0KTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBib29sJiByZXN1bHQpOworICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFN0cmluZyYgcmVzdWx0KTsKKyAgICB2
b2lkIGdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jik7CisgICAgdm9pZCBkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwog
Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IEJs
b2JSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNVUkwpOwotICAgIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25E
YXRhJik7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBhZmFlMWEyLi5hNWY3Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzUsMTYgKzM1LDE2IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydERv
d25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAgICAgQ29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50
NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNvcmU6
OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIFNldENvb2tpZXNGcm9tRE9N
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBX
ZWJDb3JlOjpLVVJMIHVybCwgV1RGOjpTdHJpbmcgY29va2llU3RyaW5nKQotICAgIENvb2tpZXNF
bmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBh
cnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKLSAgICBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6
OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6OlN0cmluZyByZXN1
bHQpCi0gICAgR2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNv
cmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwpIC0+IChXVEY6OlZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpCi0gICAgRGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tpZU5hbWUp
CisgICAgQ29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6
OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0
KQorICAgIFNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgV2Vi
Q29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tp
ZVN0cmluZykKKyAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoYm9vbCBlbmFi
bGVkKQorICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgV2ViQ29yZTo6VVJMIGZpcnN0UGFydHksIFdlYkNvcmU6OlVSTCB1cmwpIC0+
IChXVEY6OlN0cmluZyByZXN1bHQpCisgICAgR2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAt
PiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKQorICAgIERlbGV0ZUNvb2tp
ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCB1cmwsIFdURjo6U3Ry
aW5nIGNvb2tpZU5hbWUpCiAKLSAgICBSZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6S1VSTCB1cmws
IFdlYktpdDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKLSAgICBSZWdpc3RlckJsb2JVUkxG
cm9tVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJDb3JlOjpLVVJMIHNyY1VSTCkKLSAgICBVbnJl
Z2lzdGVyQmxvYlVSTChXZWJDb3JlOjpLVVJMIHVybCkKKyAgICBSZWdpc3RlckJsb2JVUkwoV2Vi
Q29yZTo6VVJMIHVybCwgV2ViS2l0OjpCbG9iUmVnaXN0cmF0aW9uRGF0YSBkYXRhKQorICAgIFJl
Z2lzdGVyQmxvYlVSTEZyb21VUkwoV2ViQ29yZTo6VVJMIHVybCwgV2ViQ29yZTo6VVJMIHNyY1VS
TCkKKyAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQogfQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5k
ZXggOTE4Njk3YS4uZmY0Mjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxv
YWRlcihQYXNzUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICBzY2hlZHVsZVNlcnZlUGVu
ZGluZ1JlcXVlc3RzKCk7CiB9CiAKLUhvc3RSZWNvcmQqIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBDcmVhdGVIb3N0UG9s
aWN5IGNyZWF0ZUhvc3RQb2xpY3kpCitIb3N0UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBDcmVhdGVIb3N0UG9s
aWN5IGNyZWF0ZUhvc3RQb2xpY3kpCiB7CiAgICAgaWYgKCF1cmwucHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpKQogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0LmdldCgpOwpAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlbW92ZUxv
YWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKICAgICBzY2hlZHVsZVNlcnZlUGVu
ZGluZ1JlcXVlc3RzKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6
cmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnJlY2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QgbG9hZGVyIG9yaWdpbmFsbHkg
Zm9yICclcycgcmVkaXJlY3RlZCB0byAnJXMnIiwgbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgcmVkaXJlY3RVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggZmI0MTAyNy4uODQwYTI3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q2FsbGVkIHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3Mgb24gYSBiYWNrZ3JvdW5kIHRocmVhZCB3
aGVuIGEgcmVzb3VyY2UgbG9hZCBoYXMgZmluaXNoZWQuCiAgICAgdm9pZCBzY2hlZHVsZVJlbW92
ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkZXIqKTsKIAotICAgIHZvaWQgcmVjZWl2ZWRSZWRp
cmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVj
dFVSTCk7CisgICAgdm9pZCByZWNlaXZlZFJlZGlyZWN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc2VydmVQZW5kaW5n
UmVxdWVzdHMoV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogCiAgICAgLy8gRm9yIE5ldHdvcmtQcm9jZXNzIHN0YXRp
c3RpY3MgcmVwb3J0aW5nLgpAQCAtNzMsNyArNzMsNyBAQCBwcml2YXRlOgogICAgICAgICBGaW5k
T25seQogICAgIH07CiAgICAgCi0gICAgSG9zdFJlY29yZCogaG9zdEZvclVSTChjb25zdCBXZWJD
b3JlOjpLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKKyAgICBIb3N0UmVjb3Jk
KiBob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5k
T25seSk7CiAgICAgCiAgICAgdm9pZCBzY2hlZHVsZVNlcnZlUGVuZGluZ1JlcXVlc3RzKCk7CiAg
ICAgdm9pZCByZXF1ZXN0VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxOZXR3b3JrUmVzb3VyY2VM
b2FkU2NoZWR1bGVyPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCmluZGV4IDA4ODQ1MmUuLmUxOTdmZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94
aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0dHBzUHIKICAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpwcm94eVNldHRpbmdzID0gW05TTXV0YWJsZURpY3Rpb25hcnkg
ZGljdGlvbmFyeV07CiAKICAgICBpZiAoIWh0dHBQcm94eS5pc051bGwoKSkgewotICAgICAgICBL
VVJMIGh0dHBQcm94eVVSTChLVVJMKCksIGh0dHBQcm94eSk7CisgICAgICAgIFVSTCBodHRwUHJv
eHlVUkwoVVJMKCksIGh0dHBQcm94eSk7CiAgICAgICAgIGlmIChodHRwUHJveHlVUkwuaXNWYWxp
ZCgpKSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9t
V2ViQ29yZVN0cmluZyhodHRwUHJveHlVUkwuaG9zdCgpKSBmb3JLZXk6KE5TU3RyaW5nICopa0NG
TmV0d29ya1Byb3hpZXNIVFRQUHJveHldOwogICAgICAgICAgICAgaWYgKGh0dHBQcm94eVVSTC5o
YXNQb3J0KCkpIHsKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Q
cm94aWVzKGNvbnN0IFN0cmluZyYgaHR0cFByb3h5LCBjb25zdCBTdHJpbmcmIGh0dHBzUHIKICAg
ICB9CiAKICAgICBpZiAoIWh0dHBzUHJveHkuaXNOdWxsKCkpIHsKLSAgICAgICAgS1VSTCBodHRw
c1Byb3h5VVJMKEtVUkwoKSwgaHR0cHNQcm94eSk7CisgICAgICAgIFVSTCBodHRwc1Byb3h5VVJM
KFVSTCgpLCBodHRwc1Byb3h5KTsKICAgICAgICAgaWYgKGh0dHBzUHJveHlVUkwuaXNWYWxpZCgp
KSB7CiAgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2Vi
Q29yZVN0cmluZyhodHRwc1Byb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5l
dHdvcmtQcm94aWVzSFRUUFNQcm94eV07CiAgICAgICAgICAgICBpZiAoaHR0cHNQcm94eVVSTC5o
YXNQb3J0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCA1ZDM4ZjZlLi42YzA1M2MxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwCkBAIC00MzksNyArNDM5LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmRpZEV2
YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmkKIAogdm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgU3RyaW5nJiByZXNwb25zZVVSTFN0cmluZywgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7Ci0gICAgbV9wbHVnaW4tPnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShzdHJlYW1JRCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3Ry
aW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywg
U3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFt
SUQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3Ro
LCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3RyaW5nKCkpOwogfQogCiB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC00NjIsNyAr
NDYyLDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om1hbnVhbFN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBTdHJpbmcmIHJlc3BvbnMKICAgICBpZiAobV9wbHVnaW5DYW5jZWxl
ZE1hbnVhbFN0cmVhbUxvYWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGx1Z2luLT5tYW51
YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNl
VVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVh
ZGVycywgU3RyaW5nKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2VVUkxTdHJpbmcpLCBzdHJlYW1MZW5n
dGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzLCBTdHJpbmcoKSk7CiB9CiAK
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZDVhODk4NS4u
NWQxMWQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9Q
bHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0xODksMTEgKzE4OSwxMSBAQCBzdGF0aWMgdm9pZCBjYXJi
b25XaW5kb3dIaWRkZW4oV2luZG93UmVmIHdpbmRvdykKIHN0YXRpYyBib29sIG9wZW5DRlVSTFJl
ZihDRlVSTFJlZiB1cmwsIGludDMyX3QmIHN0YXR1cywgQ0ZVUkxSZWYqIGxhdW5jaGVkVVJMKQog
ewogICAgIFN0cmluZyBsYXVuY2hlZFVSTFN0cmluZzsKLSAgICBpZiAoIVBsdWdpblByb2Nlc3M6
OnNoYXJlZCgpLm9wZW5VUkwoS1VSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJM
U3RyaW5nKSkKKyAgICBpZiAoIVBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLm9wZW5VUkwoVVJMKHVy
bCkuc3RyaW5nKCksIHN0YXR1cywgbGF1bmNoZWRVUkxTdHJpbmcpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoIWxhdW5jaGVkVVJMU3RyaW5nLmlzTnVsbCgpICYmIGxhdW5jaGVk
VVJMKQotICAgICAgICAqbGF1bmNoZWRVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgbGF1bmNo
ZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOworICAgICAgICAqbGF1bmNoZWRV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBsYXVuY2hlZFVSTFN0cmluZykuY3JlYXRlQ0ZVUkwo
KS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBz
dGF0aWMgTlNSdW5uaW5nQXBwbGljYXRpb24gKnJlcGxhY2VkTlNXb3Jrc3BhY2VfbGF1bmNoQXBw
bGljYXRpb25BdFVSTF9vcHRpb25zXwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpLmxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoS1VSTCh1cmwpLnN0cmlu
ZygpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKFBsdWdpblByb2Nlc3M6OnNoYXJlZCgpLmxhdW5j
aEFwcGxpY2F0aW9uQXRVUkwoVVJMKHVybCkuc3RyaW5nKCksIGFyZ3VtZW50cykpIHsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgKmVycm9yID0gbmlsOwogICAgICAgICByZXR1cm4g
bmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAppbmRl
eCAxMTRjNzQxLi5mNjYxMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tV
UkxSZXF1ZXN0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQwLDcgKzQwLDcgQEAgV0tUeXBlSUQgV0tVUkxSZXF1
ZXN0R2V0VHlwZUlEKCkKIAogV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhX
S1VSTChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlVSTFJlcXVlc3Q6OmNy
ZWF0ZShLVVJMKEtVUkwoKSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkoV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwoKSwgdG9JbXBsKHVy
bCktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxSZXF1ZXN0Q29w
eVVSTChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAppbmRleCBjNTQ5MTg0Li40N2FmY2E0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25z
ZS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLmNwcAppbmRleCBmMDRlY2ZkLi40NzU2NGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCkBAIC01NCw4ICs1NCw4IEBAIENGVVJMUmVm
IFdLVVJMQ29weUNGVVJMKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJM
UmVmKQogICAgIC8vIFdlIGZpcnN0IGNyZWF0ZSBhIENTdHJpbmcgYW5kIHRoZW4gY3JlYXRlIHRo
ZSBDRlVSTCBmcm9tIGl0LiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIENGVVJMIGlzIHN0b3Jl
ZCBpbiAKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdl
YktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAotICAgIC8vIFRoaXMgcGF0dGVybiBvZiB1c2lu
ZyBVVEYtOCBhbmQgdGhlbiBmYWxsaW5nIGJhY2sgdG8gTGF0aW4xIG9uIGZhaWx1cmUgbWF0Y2hl
cyBLVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQotICAgIC8vIG1ham9yIGRpZmZlcm5jZSBi
ZWluZyB0aGF0IEtVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9uIGFuZCBpbnN0ZWFk
IGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKKyAgICAvLyBUaGlzIHBhdHRl
cm4gb2YgdXNpbmcgVVRGLTggYW5kIHRoZW4gZmFsbGluZyBiYWNrIHRvIExhdGluMSBvbiBmYWls
dXJlIG1hdGNoZXMgVVJMOjpjcmVhdGVDRlN0cmluZyB3aXRoIHRoZQorICAgIC8vIG1ham9yIGRp
ZmZlcm5jZSBiZWluZyB0aGF0IFVSTCBkb2VzIG5vdCBkbyBhIFVURi04IGNvbnZlcnNpb24gYW5k
IGluc3RlYWQgY2hvcHMgb2ZmIHRoZSBoaWdoIGJpdHMgb2YgdGhlIFVURi0xNgogICAgIC8vIGNo
YXJhY3RlciBzZXF1ZW5jZS4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gdG9JbXBsKFVSTFJlZikt
PnN0cmluZygpLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCmluZGV4IGMzYjJlOGQuLmYxNmIwYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvcXQvUXRGaWxlRG93bmxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9xdC9RdEZpbGVE
b3dubG9hZGVyLmNwcApAQCAtNjYsNyArNjYsNyBAQCBRU3RyaW5nIFF0RmlsZURvd25sb2FkZXI6
OmRldGVybWluZUZpbGVuYW1lKCkKIAogICAgIFFTdHJpbmcgZmlsZW5hbWVDYW5kaWRhdGUgPSBm
aWxlbmFtZUZyb21IVFRQQ29udGVudERpc3Bvc2l0aW9uKFFTdHJpbmc6OmZyb21MYXRpbjEobV9y
ZXBseS0+cmF3SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIikpKTsKICAgICBpZiAoZmlsZW5h
bWVDYW5kaWRhdGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9IG1fcmVwbHktPnVy
bCgpOworICAgICAgICBVUkwga3VybCA9IG1fcmVwbHktPnVybCgpOwogICAgICAgICBmaWxlbmFt
ZUNhbmRpZGF0ZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhrdXJsLmxhc3RQYXRoQ29tcG9u
ZW50KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxv
YWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAppbmRleCAxMWUwYTQxLi5kMGVlYmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3Vw
LmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgaWYgKHN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgS1VSTCB1cmwgPSByZXNw
b25zZS51cmwoKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSByZXNwb25zZS51cmwoKTsKICAgICAg
ICAgICAgIHVybC5zZXRRdWVyeShTdHJpbmcoKSk7CiAgICAgICAgICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAK
aW5kZXggYTBkZDRkYy4uNDEzMGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBA
IGJvb2wgQmxvYlJlZ2lzdHJhdGlvbkRhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIEJsb2JSZWdpc3RyCiAgICAgICAgICAgICBTdHJpbmcgdXJsOwogICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEtPmFwcGVuZEJsb2IoS1VSTChLVVJMKCks
IHVybCksIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJlc3VsdC5tX2RhdGEtPmFwcGVu
ZEJsb2IoVVJMKFVSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQppbmRleCAyNzI2ZjFjLi43OTgzYTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5t
bQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJM
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNvdXJjZS5jcHAKaW5kZXggZDg1
NWUzZC4uMDgzYjIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hp
dmVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkFyY2hpdmVSZXNv
dXJjZS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIldlYkRhdGEuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0FyY2hpdmVSZXNvdXJjZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQ4LDcgKzQ4LDcgQEAgUGFzc1JlZlB0cjxX
ZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc28KIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2Uo
V2ViRGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS0+Ynl0ZXMoKSwg
ZGF0YS0+c2l6ZSgpKSwgS1VSTChLVVJMKCksIFVSTCksIE1JTUVUeXBlLCB0ZXh0RW5jb2Rpbmcs
IFN0cmluZygpKSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIFdl
YkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgVVJMKSwgTUlNRVR5cGUsIHRleHRFbmNvZGluZywg
U3RyaW5nKCkpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IGFiNjlmZjYuLjc1ZDJiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNDA3LDcgKzQwNyw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIHVybCkpOworICAgICAgICByZXF1ZXN0LnNldFVS
TChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIFN0cmluZyBodHRwTWV0aG9kOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGh0dHBNZXRob2QpKQpAQCAtNDMyLDcgKzQzMiw3IEBAIGJv
b2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBSZXNvdXJjZVJlCiAgICAgICAgIFN0cmluZyBmaXJzdFBhcnR5Rm9yQ29va2ll
czsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmaXJzdFBhcnR5Rm9yQ29va2llcykpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMoS1VSTChLVVJMKCksIGZpcnN0UGFydHlGb3JDb29raWVzKSk7CisgICAgICAgIHJl
cXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoVVJMKFVSTCgpLCBmaXJzdFBhcnR5Rm9yQ29v
a2llcykpOwogCiAgICAgICAgIHJlc291cmNlUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgfQpAQCAt
NTAzLDcgKzUwMyw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlc3BvbnNlPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VSCiAgICAgICAgIFN0cmluZyB1
cmw7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAg
ICAgICAgcmVzcG9uc2Uuc2V0VVJMKFVSTChVUkwoKSwgdXJsKSk7CiAKICAgICAgICAgaW50MzJf
dCBodHRwU3RhdHVzQ29kZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShodHRwU3RhdHVz
Q29kZSkpCkBAIC0xMDMzLDE3ICsxMDMzLDE3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnU2Vz
c2lvbj46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIERyYWdTZXNzaW9uJiByCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxLVVJMPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgS1VSTCYgcmVzdWx0KQordm9pZCBBcmd1bWVu
dENvZGVyPFVSTD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVSTCYg
cmVzdWx0KQogewogICAgIGVuY29kZXIgPDwgcmVzdWx0LnN0cmluZygpOwogfQogICAgIAotYm9v
bCBBcmd1bWVudENvZGVyPEtVUkw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBL
VVJMJiByZXN1bHQpCitib29sIEFyZ3VtZW50Q29kZXI8VVJMPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgVVJMJiByZXN1bHQpCiB7CiAgICAgU3RyaW5nIHVybEFzU3RyaW5nOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsQXNTdHJpbmcpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmVzdWx0ID0gS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybEFzU3Ry
aW5nKTsKKyAgICByZXN1bHQgPSBVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmxBc1N0
cmluZyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEwNjMsNyArMTA2Myw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD46OmRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFdlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMTAz
LDcgKzExMDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclNjcmlwdD46OmRl
Y29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcgogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCB1cmw7Cisg
ICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCmluZGV4IDYzMGI2YjYuLjNiMGJhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBL
ZXlmcmFtZVZhbHVlTGlzdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBj
bGFzcyBOb3RpZmljYXRpb247CiAgICAgY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogICAgIGNsYXNz
IFJlc291cmNlRXJyb3I7CkBAIC0yNTUsOSArMjU1LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpEcmFnU2Vzc2lvbj4gewogICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpEcmFnU2Vzc2lvbiYpOwogfTsKIAotdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7Ci0gICAgc3RhdGljIHZv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6S1VSTCYpOwordGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVUkw+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
c3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlVSTCYpOwogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVl
dD4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDlj
MzUxNTAuLmM5ZDg0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRU
ZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hpdFRlc3RSZXN1
bHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKaW5kZXggMjdhNzQ0ZS4uZDc2MTZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJVUkwuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBXZWJVUkxfaAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNDYsMTEgKzQ2
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTD4gY3JlYXRlKGNv
bnN0IFdlYlVSTCogYmFzZVVSTCwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZVVSTCkKICAgICB7Ci0g
ICAgICAgIHVzaW5nIFdlYkNvcmU6OktVUkw7CisgICAgICAgIHVzaW5nIFdlYkNvcmU6OlVSTDsK
IAogICAgICAgICBBU1NFUlQoYmFzZVVSTCk7CiAgICAgICAgIGJhc2VVUkwtPnBhcnNlVVJMSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgS1VSTCogYWJzb2x1dGVVUkwgPSBuZXcgS1VSTCgqYmFzZVVS
TC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJMKTsKKyAgICAgICAgVVJMKiBhYnNvbHV0
ZVVSTCA9IG5ldyBVUkwoKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7
CiAKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJVUkwoYWRvcHRQdHIoYWJzb2x1dGVV
UkwpLCBhYnNvbHV0ZVVSTC0+c3RyaW5nKCkpKTsKICAgICB9CkBAIC05MCw3ICs5MCw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFdlYlVSTChQYXNzT3duUHRyPFdlYkNvcmU6OktV
Ukw+IHBhcnNlZFVSTCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgV2ViVVJMKFBhc3NPd25Q
dHI8V2ViQ29yZTo6VVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAg
ICA6IG1fc3RyaW5nKHN0cmluZykKICAgICAgICAgLCBtX3BhcnNlZFVSTChwYXJzZWRVUkwpCiAg
ICAgewpAQCAtMTAwLDExICsxMDAsMTEgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGlmICht
X3BhcnNlZFVSTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJzZWRVUkwgPSBX
VEY6OmFkb3B0UHRyKG5ldyBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgbV9zdHJpbmcp
KTsKKyAgICAgICAgbV9wYXJzZWRVUkwgPSBXVEY6OmFkb3B0UHRyKG5ldyBXZWJDb3JlOjpVUkwo
V2ViQ29yZTo6VVJMKCksIG1fc3RyaW5nKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG1fc3RyaW5n
OwotICAgIG11dGFibGUgT3duUHRyPFdlYkNvcmU6OktVUkw+IG1fcGFyc2VkVVJMOworICAgIG11
dGFibGUgT3duUHRyPFdlYkNvcmU6OlVSTD4gbV9wYXJzZWRVUkw7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcAppbmRleCA0
OGFjZjM3Li4zMDcyZjk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVS
TFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNw
cApAQCAtMTYsNyArMTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3Jl
YXRlKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJMUmVx
dWVzdDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNGY4YWVmZi4uOWYyZjRmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVVJMUmVxdWVzdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJVUkxSZXF1ZXN0IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVj
dDo6VHlwZVVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJV
UkxSZXF1ZXN0PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDVjMDhiODAuLmIzM2Y0OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogCi0jaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuLmhvc3QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNV
UkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdl
YkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsgfQorICAgIGJvb2wg
bWF0Y2hlc1VSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1h
dGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7IH0KICAg
ICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNo
U3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggZjdlNzZlNy4uNmUwMWY0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgUmVmUHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAgICBTdHJpbmcgdXJs
OwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSwgU3RyaW5nKCkp
OworICAgICAgICBkYXRhLT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJpbmcoKSk7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAppbmRleCA3ZTZhOGMxLi4wMGJiMTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcApAQCAtMzMsNyAr
MzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUg
PGRsZmNuLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGljIENG
RGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVsZHNG
b3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVmIGlu
UmVxdWVzdFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAgICBLVVJMIGZpcnN0UGFydHlG
b3JDb29raWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VSTDsKICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNVUkwsIGlu
UmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAgICByZXR1cm4gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0d29ya1JlcGx5RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAppbmRleCA1
MTY0MWVkLi5iODM1YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXRO
ZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3
b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIlF0TmV0d29ya1Jl
cGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNRdC5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01h
bmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWEuLjM4NGJkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCkBAIC0x
MzksNyArMTM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaShXZWJLaXRVUklS
ZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiB1cmkpCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJp
KTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkp
OwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LnVybCgpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGI4Y2EwMDIuLmFhMjU0ZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNTg4LDcg
KzU4OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCgpCiB7
CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwogCi0gICAgUVVybCB1cmwoS1VSTChXZWJDb3JlOjpQ
YXJzZWRVUkxTdHJpbmcsIHdlYlBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhpdCgpKSk7CisgICAg
UVVybCB1cmwoVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgd2ViUGFnZVByb3h5LT51cmxB
dFByb2Nlc3NFeGl0KCkpKTsKICAgICBxV2FybmluZygiV0FSTklORzogVGhlIHdlYiBwcm9jZXNz
IGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJpbnRhYmxlKHVybC50b1N0cmluZyhR
VXJsOjpSZW1vdmVVc2VySW5mbykpKTsKIAogICAgIHBhZ2VFdmVudEhhbmRsZXItPnJlc2V0R2Vz
dHVyZVJlY29nbml6ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
SW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IDVkOWM0YjIuLmMwMjZkNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRU
UFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHNpemVfdCBIVFRQUmVxdWVzdDo6
cGFyc2VSZXF1ZXN0TGluZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcm
IGZhCiB7CiAgICAgU3RyaW5nIHVybDsKICAgICBzaXplX3QgcmVzdWx0ID0gcGFyc2VIVFRQUmVx
dWVzdExpbmUoZGF0YSwgbGVuZ3RoLCBmYWlsdXJlUmVhc29uLCBtX3JlcXVlc3RNZXRob2QsIHVy
bCwgbV9odHRwVmVyc2lvbik7Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBt
X3VybCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTMs
NyArMTEzLDcgQEAgSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KCkKIHsKIH0KIAotSFRUUFJlcXVl
c3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgS1VSTCYg
dXJsLCBIVFRQVmVyc2lvbiB2ZXJzaW9uKQorSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIEhUVFBWZXJzaW9uIHZlcnNp
b24pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2h0dHBWZXJzaW9uKHZlcnNpb24pCiAgICAg
LCBtX3JlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaAppbmRleCA3MTllMjQx
Li5lY2RhMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL0hUVFBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9IVFRQUmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQsMTUgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEhUVFBS
ZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsgfQotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0
aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBWZXJzaW9uIHZlcnNp
b24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0TWV0aG9kLCB1cmws
IHZlcnNpb24pKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2Vi
Q29yZTo6SFRUUFZlcnNpb24gdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhUVFBSZXF1
ZXN0KHJlcXVlc3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SFRUUFJlcXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAgdmlydHVhbCB+
SFRUUFJlcXVlc3QoKTsKIAogICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0TWV0aG9kOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0aG9kKGNvbnN0IFN0
cmluZyYgbWV0aG9kKSB7IG1fcmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQogCi0gICAgV2ViQ29y
ZTo6S1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAgIFdlYkNvcmU6OlVS
TCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25zdCBWZWN0b3I8dW5z
aWduZWQgY2hhcj4mIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtNjIsMTQg
KzYyLDE0IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1ZXN0KCk7Ci0gICAg
SFRUUFJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNp
b24pOwogCiAgICAgLy8gUGFyc2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RM
aW5lKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNv
bik7CiAgICAgc2l6ZV90IHBhcnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RCb2R5
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBt
X3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6SFRUUFZlcnNpb24g
bV9odHRwVmVyc2lvbjsKICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgIFdlYkNvcmU6
OkhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5j
cHAKaW5kZXggY2JiZDczZi4uY2U1MzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2Fn
ZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sCiB2b2lkIFdlYklu
c3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tl
dFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJl
cXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMgb25seSB0aGUgcGF0aCBl
eHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAvLyBhbmQgS1VSTCBpcyBw
b29yIGF0IHBhcnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0IHRoZSBpbnRlcmVzdGlu
ZyBwYXJ0cyBtYW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQgcGFyc2luZyBpbmNv
bXBsZXRlIFVSTHMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRzIG1hbnVhbGx5Lgog
ICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6ZV90IHBhdGhFbmQgPSBw
YXRoLmZpbmQoJz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4
IDg2Y2JiYWQuLjUxY2ZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjksNyArMjksNyBAQAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxlSW5mby5oIgot
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTU4LDcgKzE1OCw3IEBAIFBsdWdpbk1v
ZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUluZm8oKTsKIH0KIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMg
aW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmlu
ZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50
KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6
OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKQogCiAjZW5kaWYK
IAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMg
YWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZp
bmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwsIFBsdWdpbkRhdGE6OkFs
bG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMpCiB7CiAgICAgbG9hZFBsdWdpbnNJ
Zk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDljZWE3Li5jZWU3MTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0
aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gTUlNRSB0eXBl
LgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhlIGZpbGUgZXh0ZW5zaW9uIG9m
IHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRoZQogICAgIC8vIHBsdWctaW4g
dHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSBy
aWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxv
d2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKTsKKyAgICBQ
bHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZv
ciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRlbnRpZmllci4KICAgICBQbHVn
aW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggYWMzZGRh
OC4uN2IwYzE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
bWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYktpdFN5c3Rl
bUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDxX
ZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8Y3J0X2V4dGVybnMuaD4KICNp
bXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC00NjIsMTAgKzQ2MiwxMCBAQCB2b2lkIFBsdWdpblBy
b2Nlc3NQcm94eTo6b3BlblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcmVzdWx0
LCBpbnQzMl90JgogCiAgICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBDRlVSTFJlZiBsYXVuY2hlZFVS
TDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJlZihLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
U3RyaW5nKS5jcmVhdGVDRlVSTCgpLmdldCgpLCAmbGF1bmNoZWRVUkwpOworICAgIHN0YXR1cyA9
IExTT3BlbkNGVVJMUmVmKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZykuY3JlYXRlQ0ZV
UkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAogICAgIGlmIChsYXVuY2hlZFVSTCkgewotICAg
ICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IEtVUkwobGF1bmNoZWRVUkwpLnN0cmluZygpOworICAg
ICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChsYXVuY2hlZFVSTCkuc3RyaW5nKCk7CiAgICAg
ICAgIENGUmVsZWFzZShsYXVuY2hlZFVSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjJiODEzNS4uMmQyZjNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBA
IC0zMTYsOSArMzE2LDkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdl
KFdlYlBhZ2VQcm94eSogcGFnZSkKIAogc3RhdGljIGJvb2wgaXNNYWluSW5zcGVjdG9yUGFnZShj
b25zdCBXZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0UmVmKQogewotICAgIC8vIFVzZSBLVVJMIHNvIHdlIGNhbiBjb21wYXJlIGp1c3Qg
dGhlIHBhdGhzLgotICAgIEtVUkwgaW5zcGVjdG9yVVJMKEtVUkwoKSwgd2ViSW5zcGVjdG9yUHJv
eHktPmluc3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAgS1VSTCByZXF1ZXN0VVJMKEtVUkwoKSwgdG9J
bXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CisgICAgLy8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFy
ZSBqdXN0IHRoZSBwYXRocy4KKyAgICBVUkwgaW5zcGVjdG9yVVJMKFVSTCgpLCB3ZWJJbnNwZWN0
b3JQcm94eS0+aW5zcGVjdG9yUGFnZVVSTCgpKTsKKyAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwg
dG9JbXBsKHJlcXVlc3RSZWYpLT51cmwoKSk7CiAKICAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChpbnNwZWN0b3JVUkwucHJvdG9j
b2woKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggMjg4YTczNi4uNTZkMjAxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExp
c3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
SW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxl
QXJyYXkqIGZpbGVVUkxzQXJyYXkpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgV2ViVVJMKiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5LT5hdDxXZWJVUkw+
KGkpOwogICAgICAgICBpZiAod2ViVVJMKSB7Ci0gICAgICAgICAgICBLVVJMIHVybChLVVJMKCks
IHdlYlVSTC0+c3RyaW5nKCkpOyAKKyAgICAgICAgICAgIFVSTCB1cmwoVVJMKCksIHdlYlVSTC0+
c3RyaW5nKCkpOyAKICAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQodXJsLmZp
bGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCAwY2RiZjgxLi43NTUzZWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQg
V2ViUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0ID0gV2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5KCkgPyBXZWJDb3Jl
OjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIGJhc2VVUkwpKSwg
dG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5q
ZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5
bGVTaGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJhc2VVUkwuaXNFbXB0
eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwg
YmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFj
a2xpc3QpLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRhLnVzZXJTdHlsZVNo
ZWV0cy5hcHBlbmQodXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3Jv
dXAoTWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5
bGVTaGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBX
ZWJQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2ViQ29yZTo6VXNl
clNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkg
OiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rv
cih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBp
bmplY3RlZEZyYW1lcyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2Vi
Q29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJs
YW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkwpKSwgdG9TdHJp
bmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9u
VGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3JpcHRzLmFwcGVuZCh1
c2VyU2NyaXB0KTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQ
YWdlR3JvdXBQcm94eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9kYXRhLnBhZ2VHcm91
cElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjA5
MmYyOS4uYjA2NjJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlhbGl6ZVNh
bmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29sIFdlYlBhZ2VQcm94eTo6bWF5YmVJ
bml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVybCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGlmICghdXJs
LmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3OSw3ICs2NzksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgQVBJT2JqZWN0
KiB1c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGJvb2wgY3Jl
YXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoS1VS
TChLVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRl
ZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVS
TCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRlZEV4dGVu
c2lvbikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2Fu
ZGJveEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRleHRVc2VyTWVzc2Fn
ZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAtNzA2LDE1ICs3MDYsMTUgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmVhdHRh
Y2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVSTCA9IEtVUkwoS1VSTCgpLCBmaWxl
VVJMU3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7
CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJMIHJlc291cmNlRGlyZWN0b3J5VVJM
OwogICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwoKSkKLSAgICAgICAg
cmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgQVNDSUlMaXRlcmFs
KCJmaWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwogICAgIGVsc2UgewotICAgICAg
ICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVS
TFN0cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNv
dXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlV
UkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTcsNyAr
Nzk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21PcmlnaW4p
CiAgICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKICAgICAgICAgLy8gV2Ug
bWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJkIGxpc3Qgd2FzIHJl
aW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3NlciByZWxhdW5jaAot
ICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4
dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
ICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgICAgIG1fcHJvY2Vzcy0+d2ls
bEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKICAgICB9CkBAIC05
NTIsNyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
CiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5m
byBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBs
dWdpbihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01p
bWVUeXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSAmJiBtX3BhZ2VH
cm91cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xNDI5LDcgKzE0
MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBsdWdpbkxvYWRQb2xpY3kgPSBQ
bHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2lu
VHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRpb25QbHVnaW5zID8g
UGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRhdGE6OkFsbFBsdWdp
bnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+
cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJMKCksIHVy
bFN0cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVn
aW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihu
ZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1Z2luVHlwZXMpOwog
ICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vzc1Rva2VuID0gMDsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2
YWlsYWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3JtYXRpb247
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBl
ID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNv
bnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChL
VVJMKCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0g
bV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4obmV3TWlt
ZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5mb3JtYXRp
b24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0
cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3Ry
aW5nLCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAgLTMwMDcsNyArMzAwNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1JRCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hF
eHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndp
bGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4OSwxNSArMzI4OSwxNSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1l
bnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9
PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250
ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250
ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKICAgICAgICAgcmV0
dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5k
b3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1
bHREYXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+
ZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51SGl0VGVzdFJlc3Vs
dERhdGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykg
ewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgS1VSTChLVVJM
KCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1lZGlhVVJM
KSk7CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBVUkwoVVJM
KCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1lZGlhVVJM
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CkBAIC00MTU3LDcgKzQx
NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24o
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1l
VHlwZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgp
LT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwg
cGx1Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nl
c3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwg
VVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNy
ZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBt
aW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9i
c2N1cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNmY2RmLi4zNzllYWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVSTCgpIHsgbV9wZW5kaW5n
QVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRQZW5kaW5nQVBJUmVxdWVz
dFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKSB7IG1fcGVuZGluZ0FQSVJl
cXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCi0gICAgYm9vbCBtYXliZUluaXRp
YWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Jik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0dXRpb25zUGFuZWxJc1No
b3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAzNDNhZjNjLi5kNmI2NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIldlYlBs
dWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdp
c3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSoKIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJpbmcpOworICAg
IFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHVybFN0cmlu
ZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQgdXJsJ3MgYmFzZSBV
UkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy4KLSAgICBLVVJM
IGJhc2VVUkwoS1VSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOworICAgIFVSTCBiYXNlVVJMKFVS
TCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwogICAgIAogICAgIC8vIENsaWVudCBsb2FkcyBhbiBh
bHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwg
YnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2Vz
cyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgpAQCAtMjQwLDEwICsyNDAsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdl
YlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNoZWNrVVJM
UmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSk7CisgICAgcmV0
dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJMKCksIHVybFN0cmluZykp
OwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9j
ZXNzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2Vp
dmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIGNoZWNraW5nIHRoYXQgdGhlIFVSTCBpcyB2YWxpZC4gQ3VycmVudGx5LCBXZWJQcm9jZXNz
IHNlbmRzIGludmFsaWQgVVJMcyBpbiBtYW55IGNhc2VzLCBidXQgaXQgcHJvYmFibHkgZG9lc24n
dCBoYXZlIGdvb2QgcmVhc29ucyB0byBkbyB0aGF0LgogCkBAIC0yNTYsNyArMjU2LDcgQEAgYm9v
bCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBL
VVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgd2UgbG9hZGVkIGEg
c3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyByZXNvdXJjZXMgZnJv
bSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgotICAgIC8vIFRoZXJlIGFyZSBubyAiLi4iIGNv
bXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBw
YXJzZWQgd2l0aCBLVVJMLCB3aGljaCByZW1vdmVzIHRob3NlLgorICAgIC8vIFRoZXJlIGFyZSBu
byAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9j
ZXNzIGFyZSBwYXJzZWQgd2l0aCBVUkwsIHdoaWNoIHJlbW92ZXMgdGhvc2UuCiAgICAgU3RyaW5n
IHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5i
ZWdpbigpOyBpdGVyICE9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5lbmQoKTsg
KytpdGVyKSB7CiAgICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoKml0ZXIpKQpAQCAtMjY2LDkg
KzI2Niw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlBy
b2Nlc3MoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2svZm9yd2FyZCBsaXN0
IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ugd2hlcmUgd2UgZG9u
J3QgaGF2ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBiL2YgbGlzdCBpcyBp
ZiB0aGUgbGlzdCBoYXMgYmVlbiByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2ggb3IgYSBicm93c2Vy
IHJlc3RhcnQuCiAgICAgZm9yIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciBp
dGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9IG1fYmFja0Zvcndh
cmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBpZiAo
S1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT51cmwoKSkuZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRo
KQorICAgICAgICBpZiAoVVJMKFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkpLmZpbGVTeXN0ZW1Q
YXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoS1VS
TChLVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09
IHBhdGgpCisgICAgICAgIGlmIChVUkwoVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgp
KS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAw
NWQ4ODM5Li4xZjg0OTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC00Niw3ICs0Niw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogfTsKIApAQCAtMTAw
LDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
Y29uc3QgU3RyaW5nJik7CiAKICAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vz
cyhjb25zdCBTdHJpbmcmKTsKLSAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vz
cyhjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdl
YlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1hYy5tbQppbmRleCAwZWI1Yjc3Li43MzUwNzk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02MDAsNyArNjAwLDcgQEAg
c3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiBi
b29sIFdlYkNvbnRleHQ6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSBjb25zdAogewogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gS1VSTChLVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpOwogCiAg
ICAgcmV0dXJuIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbih1cmwuZ2V0KCks
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgOiBudWxs
cHRyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkNWY4Y2Y1Li45M2ZjMDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQ
cm94eS5jcHAKQEAgLTM5LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxv
YlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQordm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQYXNz
T3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2hh
cmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgQmxvYlJlZ2lzdHJh
dGlvbkRhdGEoYmxvYkRhdGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3ZvaWQg
QmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAwKTsKIH0KIAot
dm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJs
KQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2Vz
cygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuaAppbmRleCA2M2QwZGE0Li5jMTUxYzExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAt
MzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5UHJv
eHkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQYXNzT3duUHRyPFdl
YkNvcmU6OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc093blB0
cjxXZWJDb3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpOworICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDAyNDk2NGEuLjBlMDQwMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFdL
U3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsoV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0
b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6OktVUkwoV2ViQ29y
ZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAgcmV0dXJuIHRvSW1wbChmcmFt
ZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0
b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFtZUhhbmRsZXNQYWdl
U2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0yMDQsMTIgKzIwNCwx
MiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRDb2xvcihXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVD
b3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0lt
cGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChXZWJDb3Jl
OjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNv
dXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxS
ZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVz
b3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikK
IHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JS
ZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIHRvV1RGU3RyaW5n
KHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm1p
bWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9X
VEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1lQ29udGFpbnNBbnlG
b3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAppbmRleCA2OTE1ZDkwLi45MTlmZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENh
Y2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VT
ZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5l
clJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocGFnZVJl
ZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9X
VEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2Fs
RGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJl
ZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0KFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBjOGMwNzdlLi4xOTI1
ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDkyLDI2ICs0OTIsMjYgQEAgc3RhdGlj
IFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0YWJsZUFycmF5KiBwYXR0ZXJucykK
IAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSog
cGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVs
aXN0LCBJbW11dGFibGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0
aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmco
KSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2
ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9m
IHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91
cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdv
cmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBLVVJMKEtVUkwoKSwgdXJsKSwgdG9TdHJpbmdWZWN0
b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwg
aW5qZWN0ZWRGcmFtZXMpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBp
LmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8g
dXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQ
YXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdl
R3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5j
b3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRl
bGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVjdGVk
RnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2Vi
UGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2Ny
aXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRh
YmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKLSAgICAvLyB1cmwg
aXMgbm90IGZyb20gS1VSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4g
cGFyc2VkIGJ5IEtVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3Ry
dWN0b3IgZm9yIEtVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24u
Ci0gICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5hZGRV
c2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2UsIEtV
UkwoS1VSTCgpLCB1cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3Rv
cihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcyk7CisgICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVS
TDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwg
c28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGlu
c3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgorICAgIFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRv
U3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVj
dGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdChX
ZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBz
Y3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gdXJsIGlzIG5vdCBmcm9t
IEtVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBL
VVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBL
VVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgotICAgIFBhZ2VH
cm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclNjcmlw
dEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoS1VSTCgpLCB1cmwpKTsK
KyAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFs
cmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUg
VVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFn
IHZlcnNpb24uCisgICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVy
KCkpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwg
VVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0
eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIC8vIHVybCBp
cyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBw
YXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1
Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4K
LSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgS1VSTChL
VVJMKCksIHVybCkpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUu
IGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNl
IHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJz
ZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3Jv
dXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdv
cmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCkBAIC01ODksNyArNTg5LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJQYWdlR3Jv
dXBQcm94eSogcGFnZUdyb3VwLCBjb24KIHsKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFn
ZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2Vz
KCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2lu
KCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCppdGVyKS0+c2V0dGlu
Z3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBsb2NhdGlvbikpOwor
ICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJM
KFVSTCgpLCBsb2NhdGlvbikpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRXZWJOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAKaW5kZXggMTdlMmU5Ni4uZWY5MmQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxZjgwYjIwLi4zYzk3MDBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0
IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwmIHVucmVh
Y2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VM
b2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFnZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVu
cmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQu
d2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZS4uYzUzODY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQsIGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVi
bGljOgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMTJhZTIzYi4uNDUxNjNl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
Ojpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBVUkwm
KQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmlnaW4gcmVkaXJlY3RzIGVudGlyZWx5IHdp
dGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8gV2Ugb3ZlcnJpZGUgdGhpcyBjYWxsIGlu
IHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCA1NWY2ZTMxLi43ZWUyYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVSTCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RVUkwpIE9WRVJSSURFOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlv
cml0eVZlcnlMb3cpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAy
MDU0ZGY5Li5jNGJhODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM2LDcgKzM2
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+
CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJp
bmcmIHJlcwogICAgICAgICBwbHVnaW5TdHJlYW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlc3Vs
dCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQog
ewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5j
ZWxsZWQpCiAgICAgICAgIHBsdWdpblN0cmVhbS0+ZGlkRmFpbCh3YXNDYW5jZWxsZWQpOwogfQog
Ci12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7
CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNjUx
ZGM0ZC4uNGMxMzdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5MCwxMiArMTkwLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3Qg
cmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1
YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCAKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJl
YW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNo
TG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51
YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRh
KGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFs
U3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKaW5kZXggMGFlNDRjMy4uYjE5YzEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp+TmV0
c2NhcGVQbHVnaW5TdHJlYW0oKQogICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25z
dCBTdHJpbmcmIGhlYWRlcnMpCiB7CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0cmVhbSBjb3VsZCBj
YXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNl
IHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggZmZhNTVjYi4uYjM1MDE4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25zdCB7IHJldHVybiBt
X3N0cmVhbUlEOyB9CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkgY29uc3QgeyByZXR1
cm4gJm1fbnBTdHJlYW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
aGVhZGVycyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50
IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBiMjliZWM2Li41
NDExOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNj
cmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1J
RCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3Ry
ZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwo
Ym9vbCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHByaXZhdGU6
CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OktVUkwgbV9z
b3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1f
c3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0
YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW0KaW5kZXggN2MzNDU0Yi4uZmEzNjE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkxNyw3ICs5MTcsNyBAQCB2
b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAgICAgY3JlYXRlUGFzc3dv
cmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZE
b2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAg
bV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3Zv
aWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiBy
ZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUg
PSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXggMWQ5ZTk3Yy4uZjdmMGQz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1w
bGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xMTMsMTEgKzExMywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwog
ICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qg
c3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9p
ZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVh
bFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OktV
UkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAgICAgU3Ry
aW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+
IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggZDc5NGYwMi4uZDkzMGZiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQ
bHVnaW4ubW0KQEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFNpbXBsZVBERlBsdWdpbjo6Y29udmVy
dFBvc3RTY3JpcHREYXRhSWZOZWVkZWQoKQogICAgIG1fZGF0YSA9IGNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKG1fZGF0YSk7CiB9CiAKLXZvaWQgU2ltcGxlUERGUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IEtVUkwmLCB1aW50MzJfdCwg
dWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdpbjo6c3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdCwg
dWludDMyX3QsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwg
c3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAg
dm9pZCBTaW1wbGVQREZQbHVnaW46OnN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJv
b2wgd2FzQ2FuY2VsbGVkKQogICAgIG1fZGF0YS5jbGVhcigpOwogfQogCi12b2lkIFNpbXBsZVBE
RlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0
cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSkKIHsKICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5kZXggOTBl
NWU3Ni4uZTg5ZjkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBGSVhNRTogV2UgY2FuJ3QgYXNzdW1lIHRoYXQgdGhlIHVybCBwYXNzZWQgaW4gaGVyZSBp
cyB2YWxpZC4KLSAgICBwYXJhbWV0ZXJzLnVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxT
dHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3Ry
aW5nKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCBmOGRlNWE3Li5kOThkYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3Jl
L0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNz
IFBsdWdpbkNvbnRyb2xsZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewotICAgICAg
ICBXZWJDb3JlOjpLVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKICAgICAgICAg
VmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQg
YSBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBw
bHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2Nyw3ICsxNjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFt
SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0
aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4g
dGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggMjlk
YWNiMy4uMTUxZDNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHR5cGVkZWYgdm9pZCog
TlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUVFBIZWFkZXJN
YXA7CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsK
ICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGE4ZGU4YjIuLjhhOGYyNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5
LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRpZEV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdURjo6U3RyaW5nJiByCiAgICAgbV9j
b25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJlcXVlc3RJRCwgcmVzdWx0KSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qg
c3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8q
IHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3Ro
LCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJ
RCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmFp
bCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9jb25uZWN0aW9u
LT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3Ry
ZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2VsbGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsK
IH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6
U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQor
dm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0cmlu
ZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwg
bV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIzOTUyMy4uMDY2N2Q0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg4LDExICs4
OCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmco
dWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2
NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRF
dmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3Vs
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0
cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1M
ZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlE
LCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCk7Ci0gICAg
dmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYg
aGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwog
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBkMzY4M2U3Li5kYWQxZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIHVpbnQz
Ml90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB2
b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
Ly8gQ29tcHV0ZSB0aGUgc3RyZWFtIHJlbGF0ZWQgZGF0YSBmcm9tIHRoZSByZXNvdXJjZSByZXNw
b25zZS4KLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOworICAg
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICBsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiAgICAg
CkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIH0KIAogICAg
IC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUgcmVzb3VyY2UgcmVz
cG9uc2UuCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAg
ICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CiAgICAgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbG9uZyBsb25nIGV4cGVj
dGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwogICAg
IApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgU3RyaW5nIFBsdWdpblZpZXc6OnVzZXJBZ2VudCgpCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAotICAgIHJldHVy
biBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkudXNlckFnZW50KEtVUkwoKSk7CisgICAgcmV0dXJu
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51c2VyQWdlbnQoVVJMKCkpOwogfQogCiB2b2lkIFBs
dWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCAKQEAgLTE0
ODksMTggKzE0ODksMTggQEAgU3RyaW5nIFBsdWdpblZpZXc6OnByb3hpZXNGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAgY29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVy
ID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7CiAgICAgY29uc3QgTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5n
Q29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVycyA9IHBy
b3h5U2VydmVyc0ZvclVSTChLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29udGV4dCk7CisgICAg
VmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJM
KFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0KTsKICAgICByZXR1cm4gdG9TdHJpbmcocHJveHlT
ZXJ2ZXJzKTsKIH0KIAogU3RyaW5nIFBsdWdpblZpZXc6OmNvb2tpZXNGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoJm1fcGx1Z2luRWxlbWVudC0+
ZG9jdW1lbnQoKSwgS1VSTChLVVJMKCksIHVybFN0cmluZykpOworICAgIHJldHVybiBjb29raWVz
KCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7CiB9
CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Q29va2llc0ZvclVSTChjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgc2V0Q29va2llcygmbV9w
bHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29va2ll
U3RyaW5nKTsKKyAgICBzZXRDb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVS
TChVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3
OjpnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKaW5kZXggNmFiYmNkNi4uN2FiZDc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtNTM0LDkgKzUzNCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRW1iCiAgICAgU3RyaW5n
IGZyYW1lVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwogICAgIFN0cmlu
ZyBwYWdlVVJMU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcgcGx1Z2luVVJMU3Ry
aW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChwbHVnaW5FbGVtZW50
LT51cmwoKSkuc3RyaW5nKCk7Ci0gICAgS1VSTCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTCA9IGVs
ZW1lbnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKHBsdWdpbkVsZW1lbnQtPmdldEF0dHJpYnV0ZShwbHVnaW5zcGFnZUF0dHIpKSk7Cisg
ICAgVVJMIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luRWxlbWVudC0+
Z2V0QXR0cmlidXRlKHBsdWdpbnNwYWdlQXR0cikpKTsKICAgICBpZiAoIXBsdWdpbnNwYWdlQXR0
cmlidXRlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcGx1Z2luc3BhZ2VB
dHRyaWJ1dGVVUkwgPSBLVVJMKCk7CisgICAgICAgIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0g
VVJMKCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgcGx1Z2lu
RWxlbWVudC0+c2VydmljZVR5cGUoKSwgcGx1Z2luVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBlZWM4MTY4Li5lMTBiMzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qLCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2Vi
Q29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBXZWJDb250
ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICAvLyBUaGlzIGlz
IGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29n
bGUoY29uc3QgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKSB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0ZWx5
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkudXJsU2VsZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygpLCAwLCBm
YWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgU3RyaW5n
KCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgIH0KIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYuLmJkNDNlY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURF
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGlj
dGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1Nw
ZWFraW5nKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1Li40MGJlY2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRXJyb3Jz
LmgKQEAgLTI3LDEwICsyNywxMCBAQAogI2RlZmluZSBXZWJFcnJvcnNfaAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKLSAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwotICAg
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKLSAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xh
c3MgVVJMOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2Ns
YXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNyAr
NDIsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZQogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldp
bGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
K1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwm
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKaW5kZXggOWI2MDkwZS4uNjI3MGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUod2ViUGFn
ZSwgbV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBpbnRlcnZhbCwg
ZG91YmxlIGZpcmVEYXRlKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgaW50ZXJ2YWwsIGRv
dWJsZSBmaXJlRGF0ZSkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkKQEAgLTk4NSw3ICs5ODUsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVz
ZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFVSTCYpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYp
CiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSdW5JbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTExNTgs
NyArMTE1OCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIERvY3VtZW50
TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBL
VVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UgfHwgIXdlYlBhZ2Ut
PnBhZ2VHcm91cCgpLT5pc1Zpc2libGVUb0hpc3RvcnlDbGllbnQoKSkKQEAgLTExNjksNyArMTE2
OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMCiAgICAgICAgIHRpdGxlLnN0cmluZygpLCB1
cmwuc3RyaW5nKCksIG1fZnJhbWUtPmZyYW1lSUQoKSksIDApOwogfQogCi1TdHJpbmcgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7CiAgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC0xMjU2LDcgKzEyNTYs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRv
RG93bmxvYWQoRG9jdW1lbnRMb2FkZXIgKmRvYwogICAgIG1fZnJhbWUtPmNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZChkb2N1bWVudExvYWRlciwgcmVxdWVzdCwgcmVzcG9uc2UpOwog
fQogCi1QYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LAorUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyph
bGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0
Ki8pCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTEyODMs
NyArMTI4Myw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIGNvcmVTdWJm
cmFtZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5FbGVtZW50
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHVnaW5F
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgQVNTRVJUKHBhcmFtTmFtZXMuc2l6ZSgpID09
IHBhcmFtVmFsdWVzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7CkBAIC0x
MzQ2LDkgKzEzNDYsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFU
b1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gc3Rh
dGljX2Nhc3Q8UGx1Z2luVmlldyo+KHBsdWdpbldpZGdldCk7CiB9CiAKLVBhc3NSZWZQdHI8V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJ
bnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogYXBwbGV0RWxlbWVudCwgY29u
c3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNTEFwcGxldEVsZW1lbnQqIGFwcGxldEVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
CiB7Ci0gICAgUmVmUHRyPFdpZGdldD4gcGx1Z2luID0gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUs
IGFwcGxldEVsZW1lbnQsIEtVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIGFwcGxldEVs
ZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKKyAgICBSZWZQdHI8V2lkZ2V0PiBwbHVnaW4g
PSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgVVJMKCksIHBhcmFtTmFt
ZXMsIHBhcmFtVmFsdWVzLCBhcHBsZXRFbGVtZW50LT5zZXJ2aWNlVHlwZSgpLCBmYWxzZSk7CiAg
ICAgaWYgKCFwbHVnaW4pIHsKICAgICAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCkpIHsKICAgICAgICAgICAgIFN0cmluZyBmcmFtZVVSTFN0cmluZyA9IG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0
cmluZygpOwpAQCAtMTM2MCw3ICsxMzYwLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHAKIH0K
IAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1JlZlB0cjxXaWRnZXQ+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0
cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTEzOTAsNyArMTM5MCw3
IEBAIHN0YXRpYyBib29sIHBsdWdpblN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFBsdWdpbkRhdGEm
IHBsdWdpbkRhdGEsIGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9iamVj
dENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQ
bHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
SW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRlZmF1bHRP
YmplY3RDb250ZW50VHlwZSB3aGVuIHRoZSBwbHVnaW4gY29kZQogICAgIC8vIGlzIGNvbnNvbGlk
YXRlZC4KQEAgLTE1NzUsNyArMTU3NSw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFs
bG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zy
b21Mb2NhbFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitib29sIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA0
MWNhNThiLi43MDIyNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC03NCw3
ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25s
b2FkRXZlbnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBX
ZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFn
ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdp
dGhpblBhZ2UoKSBPVkVSUklERTsKQEAgLTEzMyw4ICsxMzMsOCBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKikgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpL
VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIE9WRVJSSURFOwpAQCAtMTYxLDkgKzE2MSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSBPVkVSUklERTsKICAgICAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29y
ZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7
CkBAIC0xNzcsMjIgKzE3NywyMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNo
ZVBhZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3Jv
bGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgT1ZFUlJJREU7CiAgICAg
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpIE9WRVJSSURFOwogICAgIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVy
UHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4o
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRp
YVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzaG93TWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVS
UklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBv
YmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVy
UGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVN
ZWRpYVR5cGUoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKSBPVkVS
UklERTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGFs
bG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZEZvcmNlVW5pdmVy
c2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAppbmRleCA0NGQ1OWYyLi40NGMxODBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JraW5nQ29udGV4dC5oPgpAQCAtMTI2LDcgKzEyNiw3IEBAIFZpc2l0ZWRMaW5rU3RyYXRl
Z3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCiAK
IC8vIENvb2tpZXNTdHJhdGVneQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKQEAgLTE0MCw3ICsxNDAsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbgog
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3NpCiAgICAgV2ViQ29y
ZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBA
IC0xNjYsNyArMTY2LDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFi
bGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5B
QkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05l
dHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE4MCw3ICsxODAsNyBAQCBTdHJpbmcgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZQogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LAogICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNw
YWNlPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2UK
IAogLy8gVmlzaXRlZExpbmtTdHJhdGVneQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aXNMaW5rVmlzaXRlZChQYWdlKiwgTGlua0hhc2ggbGlua0hhc2gsIGNvbnN0IEtVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0
ZWQoUGFnZSosIExpbmtIYXNoIGxpbmtIYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJp
bmcmKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pc0xpbmtWaXNpdGVkKGxp
bmtIYXNoKTsKIH0KQEAgLTQ0OCwxMiArNDQ4LDEyIEBAIENvbG9yIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4gY29s
b3I7CiB9CiAKLUtVUkwgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkKK1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIFN0cmluZyB1cmxTdHJpbmc7CiAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYkNvbnRleHQ6OkdldFBhc3RlYm9hcmRVUkwocGFzdGVib2FyZE5hbWUpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYkNv
bnRleHQ6OkdldFBhc3RlYm9hcmRVUkw6OlJlcGx5KHVybFN0cmluZyksIDApOwotICAgIHJldHVy
biBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIH0KIAogbG9uZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRl
eCAzOTM0NjA2Li5jYjJmMTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAg
LTU2LDEyICs1NiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExp
bmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpIE9WRVJSSURFOwogCiAgICAg
Ly8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFi
YXNlU3RyYXRlZ3kKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpAQCAtOTAsNyArOTAsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlKikgT1ZFUlJJREU7CiAKICAg
ICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlu
a1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCkgT1ZFUlJJ
REU7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpLVVJMIHVybChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlVSTCB1cmwo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGxv
bmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBsb25nIHNldFR5
cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0VmbC5jcHAKaW5kZXgg
MzQ1ZDljMC4uODI2MDQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gV2ViQ29yZTo6cGx1Z2luV2lsbEhh
bmRsZUxvYWRFcnJvcihyZXNwb25zZSk7CiB9CiAKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50
ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50
ZXJuYWwsIHVybC5zdHJpbmcoKSwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBlcnJvciIpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCmluZGV4IGE4MmU3ZGUuLjFiNTI1YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9y
c0d0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRXJyb3JzR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZXNvdXJjZUVycm9yIHBsdWdp
bldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgcmV0dXJuIFdlYkNvcmU6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IocmVzcG9uc2UpOwog
fQogCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6
S1VSTCYgdXJsKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3
ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwuc3RyaW5nKCksIF8oIklu
dGVybmFsIGVycm9yIikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCmluZGV4IDcxZmE1ZTMu
LjcxMzdhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNNYWMubW0KQEAgLTg3LDcgKzg3LDcgQEAgUmVz
b3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3ZWJLaXRF
cnJvckRvbWFpbigpLCBrV0tFcnJvckNvZGVQbHVnSW5XaWxsSGFuZGxlTG9hZCwgcmVzcG9uc2Uu
dXJsKCksIFdFQl9VSV9TVFJJTkcoIlBsdWctaW4gaGFuZGxlZCBsb2FkIiwgIldlYktpdEVycm9y
UGx1Z0luV2lsbEhhbmRsZUxvYWQgZGVzY3JpcHRpb24iKSk7CiB9CiAKLVJlc291cmNlRXJyb3Ig
aW50ZXJuYWxFcnJvcihjb25zdCBLVVJMJiB1cmwpCitSZXNvdXJjZUVycm9yIGludGVybmFsRXJy
b3IoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6
OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50ZXJuYWwsIHVybCwgV0VCX1VJX1NUUklO
RygiV2ViS2l0IGVuY291bnRlcmVkIGFuIGludGVybmFsIGVycm9yIiwgIldlYktpdEVycm9ySW50
ZXJuYWwgZGVzY3JpcHRpb24iKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3ODU3ZjhhLi44MDFlZGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQ1MSw3ICs0NTEs
NyBAQCB1bnNpZ25lZCBXZWJGcmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2Fk
RXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAotYm9vbCBXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGlu
ayhjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpIGNvbnN0Citib29sIFdlYkZyYW1lOjphbGxvd3NG
b2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICgh
bV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjc5LDcgKzY3OSw3IEBAIFN0
cmluZyBXZWJGcmFtZTo6cHJvdmlzaW9uYWxVUkwoKSBjb25zdAogICAgIHJldHVybiBwcm92aXNp
b25hbERvY3VtZW50TG9hZGVyLT51cmwoKS5zdHJpbmcoKTsKIH0KIAotU3RyaW5nIFdlYkZyYW1l
OjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBLVVJMJiB1cmwpIGNv
bnN0CitTdHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJM
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTcwMCw3ICs3MDAsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnN1
Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QK
ICAgICByZXR1cm4gcGFnZSgpLT5jYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTCh1cmwpOwog
fQogCi1TdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJGcmFtZTo6bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhV
UkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAppbmRleCA3OWZhNWNiLi42ODc2MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKIGNsYXNzIEludFBvaW50OwogY2xhc3Mg
SW50UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTE2LDExICsxMTYsMTEgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIHBlbmRp
bmdVbmxvYWRDb3VudCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgYWxsb3dzRm9sbG93aW5nTGlu
ayhjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdM
aW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogCiAgICAgU3RyaW5nIHByb3Zpc2lvbmFs
VVJMKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRo
VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKLSAgICBTdHJpbmcgbWltZVR5cGVGb3JS
ZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OworICAgIFN0cmluZyBz
dWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBj
b25zdDsKKyAgICBTdHJpbmcgbWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5n
Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA4OThkMDg0Li5hYTc4MWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5k
Q2xvc2UoKQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ29yZUlQ
Qzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgbG9hZFVSTFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCB1cmwpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZGVj
b2Rlcik7CisgICAgbG9hZFVSTFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KFVSTChVUkwoKSwgdXJs
KSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6
OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDb3JlSVBDOjpN
ZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKQEAgLTkzMCw3ICs5MzAsNyBAQCB2b2lkIFdlYlBhZ2U6
OmxvYWRVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2Fu
ZGJveEV4dGVucwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVxdWVzdCkpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hh
cmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVVUkwsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUlt
cGwoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCiB7CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXIodGhpcyk7CiAK
QEAgLTk1MywzNSArOTUzLDM1IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYKIHZvaWQgV2ViUGFn
ZTo6bG9hZERhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7
Ci0gICAgS1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogS1VSTChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRC
dWZmZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIEtVUkwoKSwgZGVjb2Rlcik7
CisgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZm
ZXIsIE1JTUVUeXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBkZWNvZGVyKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpsb2FkSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5j
aGFyYWN0ZXJzKCkpLCBodG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAg
S1VSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogS1VS
TChLVVJMKCksIGJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIs
ICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgS1VSTCgpLCBkZWNvZGVyKTsKKyAgICBV
UkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVSTChV
UkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRl
eHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCBVUkwoKSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3QgU3RyaW5nJiBodG1sU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVV
UkxTdHJpbmcsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVycygpKSwgaHRtbFN0
cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwotICAgIEtVUkwgYmFzZVVSTCA9IGJhc2VV
UkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgpLCBiYXNlVVJMU3Ry
aW5nKTsKLSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gdW5yZWFjaGFibGVVUkxTdHJpbmcuaXNF
bXB0eSgpID8gS1VSTCgpIDogS1VSTChLVVJMKCksIHVucmVhY2hhYmxlVVJMU3RyaW5nKTsKKyAg
ICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gdW5yZWFj
aGFibGVVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIHVucmVhY2hhYmxl
VVJMU3RyaW5nKTsKICAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9odG1sIiwg
InV0Zi0xNiIsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDb3JlSVBD
OjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBz
aGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRleHQvcGxhaW4iLCAidXRm
LTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsKKyAgICBsb2FkRGF0YUltcGwoc2hh
cmVkQnVmZmVyLCAidGV4dC9wbGFpbiIsICJ1dGYtMTYiLCBibGFua1VSTCgpLCBVUkwoKSwgZGVj
b2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFdlYkFyY2hpdmVEYXRhKGNvbnN0IENvcmVJ
UEM6OkRhdGFSZWZlcmVuY2UmIHdlYkFyY2hpdmVEYXRhLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih3ZWJBcmNo
aXZlRGF0YS5kYXRhKCkpLCB3ZWJBcmNoaXZlRGF0YS5zaXplKCkgKiBzaXplb2YodWludDhfdCkp
OwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hp
dmUiLCAidXRmLTE2IiwgYmxhbmtVUkwoKSwgS1VSTCgpLCBkZWNvZGVyKTsKKyAgICBsb2FkRGF0
YUltcGwoc2hhcmVkQnVmZmVyLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgInV0Zi0xNiIs
IGJsYW5rVVJMKCksIFVSTCgpLCBkZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsaW5rQ2xp
Y2tlZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCkBAIC0y
MzUzLDcgKzIzNTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgY2FsbGJhY2tJRCkp
OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZy
YW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0yMzY5
LDcgKzIzNjksNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0
YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcgogdm9pZCBXZWJQYWdlOjpnZXRS
ZXNvdXJjZURhdGFGcm9tRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZVVSTFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgS1VSTCByZXNvdXJjZVVSTChLVVJMKCksIHJl
c291cmNlVVJMU3RyaW5nKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwoVVJMKCksIHJlc291cmNlVVJM
U3RyaW5nKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoV2Vi
RnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsK
QEAgLTMzMDksNyArMzMwOSw3IEBAIHZvaWQgV2ViUGFnZTo6U2FuZGJveEV4dGVuc2lvblRyYWNr
ZXI6OmRpZEZhaWxQcm92aXNpb25hbExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIC8vIGJlY2F1
c2UgaXQgZG9lcyBub3QgcGVydGFpbiB0byB0aGUgZmFpbGVkIGxvYWQsIGFuZCB3aWxsIGJlIG5l
ZWRlZC4KIH0KIAotYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgS1VSTCYg
dXJsKQorYm9vbCBXZWJQYWdlOjpoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDIzYWJjYTUuLmIw
YjY3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtNDEzLDEwICs0MTMsMTAgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHRNZW51KiBjb250ZXh0
TWVudUF0UG9pbnRJbldpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VuZGlmCiAg
ICAgCi0gICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIFN0cmluZyBjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjYWNo
ZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIGJvb2wgaGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFN0cmluZyBjYWNoZWRS
ZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIFN0cmluZyBj
YWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIApAQCAtNjg2LDkgKzY4Niw5IEBA
IHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAg
IHZvaWQgbG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZhaWxpbmdVUkwsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisgICAgdm9pZCBsb2FkRGF0YUltcGwoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKLSAg
ICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCmluZGV4IDg0
MjRjNmIuLmM5ZTRkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9lZmwvV2ViUGFnZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgYm9vbCBXZWJQ
YWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRF
dmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFnZTo6cGxhdGZv
cm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNl
TUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9vbCBXZWJQYWdlOjpw
bGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9y
VVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
U3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRS
ZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCmluZGV4IDY2ZmQzMmYuLjI3ODVh
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQYWdlR3RrLmNwcApAQCAtMTI2LDEzICsxMjYsMTMgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3Jt
RGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9h
cmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2Fs
RGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERh
dGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JV
UkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZv
clVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0
cmluZygpOwpAQCAtMTQ0LDEzICsxNDQsMTMgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhh
bmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IEtV
UkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0
IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFG
b3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2Fj
aGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCAyNzIyZjdlLi5jZTFkOTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC03MTcsNyArNzE3LDcgQEAgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogV2ViUGFnZTo6
YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpCiAgICAgcmV0dXJuIG1fbW9ja0FjY2Vzc2liaWxp
dHlFbGVtZW50LmdldCgpOwogfQogICAgICAgICAgCi1ib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFz
TG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2Jvb2wgV2ViUGFnZTo6
cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gaW5pdFdpdGhVUkw6dXJsXTsKICAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcq
KXVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKQEAgLTczMSw3
ICs3MzEsNyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmIHVybCkKICAgICByZXR1cm4gY2FjaGVkUmVzcG9uc2U7CiB9CiAKLXN0
YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVSTChXZWJQYWdlKiB3
ZWJQYWdlLCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2Fj
aGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXSk7CiAgICAgW3JlcXVlc3Qu
Z2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+dXNlckFnZW50KCkgZm9ySFRUUEhl
YWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwpAQCAtNzQyLDE3ICs3NDIsMTcgQEAgc3RhdGljIE5T
Q2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdlYlBhZ2Us
IGNvbnN0IEtVUkwmIHUKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBj
YWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CiB9CiAKLVN0cmluZyBXZWJQ
YWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgV2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIFtbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywgdXJsKSByZXNwb25z
ZV0gc3VnZ2VzdGVkRmlsZW5hbWVdOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGFnZTo6Y2FjaGVk
UmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gW1tj
YWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIHJlc3BvbnNlXSBNSU1FVHlwZV07CiB9CiAK
LVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JV
UkwoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNh
Y2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtjYWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIGRh
dGFdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9x
dC9XZWJQYWdlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dl
YlBhZ2VRdC5jcHAKaW5kZXggOGZlYjEzNi4uNmVlOGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKQEAgLTI2OCwxMyArMjY4
LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNv
bnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitib29s
IFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0cmluZyBXZWJQYWdl
OjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTI4NiwxMyArMjg2LDEzIEBA
IGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdn
ZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBXZWJQYWdlOjpjYWNoZWRT
dWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBV
UkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQppbmRleCA4MGRiNDMxLi5i
ODcwNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NN
YWMubW0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZUFjdGl2ZVBh
Z2VzKCkKICAgICAgICAgaWYgKCFtYWluRnJhbWVPcmlnaW4tPmlzVW5pcXVlKCkpCiAgICAgICAg
ICAgICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBtYWluRnJhbWVPcmlnaW4tPnRvUmF3U3RyaW5n
KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1haW5GcmFtZU9yaWdpblN0cmluZyA9IEtV
UkwoS1VSTCgpLCBtYWluRnJhbWUtPnVybCgpKS5wcm90b2NvbCgpICsgJzonOyAvLyB0b1Jhd1N0
cmluZygpIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggdW5pcXVlIG9yaWdpbnMsIGFuZCB3
b3VsZCBqdXN0IHJldHVybiAiOi8vIi4KKyAgICAgICAgICAgIG1haW5GcmFtZU9yaWdpblN0cmlu
ZyA9IFVSTChVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSkucHJvdG9jb2woKSArICc6JzsgLy8gdG9S
YXdTdHJpbmcoKSBpcyBub3Qgc3VwcG9zZWQgdG8gd29yayB3aXRoIHVuaXF1ZSBvcmlnaW5zLCBh
bmQgd291bGQganVzdCByZXR1cm4gIjovLyIuCiAKICAgICAgICAgTlNVUkwgKm9yaWdpbkFzTlNV
UkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzptYWluRnJhbWVPcmlnaW5TdHJpbmddOwogICAgICAg
ICAvLyArW05TVVJMIFVSTFdpdGhTdHJpbmc6XSByZXR1cm5zIG5pbCB3aGVuIGl0cyBhcmd1bWVu
dCBpcyBtYWxmb3JtZWQuIEl0J3MgdW5jbGVhciBob3cgd2UgY2FuIHBvc3NpYmx5IGhhdmUgYSBt
YWxmb3JtZWQgVVJMIGhlcmUsCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggN2I5NzA1Yi4uYjNmYTU3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBV
UkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIG1hbnkg
ZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNyAgRGVuaXMgTm9taXlh
bWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHVEtdW1dLMl0gTG9nZ2lu
ZyBvZiBhY2Nlc3NpYmlsaXR5IGV2ZW50cyBpcyBub3QgZGlzYWJsZWQgYmV0d2VlbiB0ZXN0cwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxh
Y2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJC
bGFja0JlcnJ5LmNwcAppbmRleCAwNGEyMTVlLi42MDg0OWQ0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcApA
QCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCkBAIC0xNTksOCArMTU5LDggQEAg
dm9pZCBUZXN0UnVubmVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0
YXJnZXQpCiAgICAgT3duQXJyYXlQdHI8Y2hhcj4gdXJsQXJyID0gYWRvcHRBcnJheVB0cihuZXcg
Y2hhclt1cmxBcnJTaXplXSk7CiAgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyh1cmwsIHVybEFy
ci5nZXQoKSwgdXJsQXJyU2l6ZSk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGJhc2UgPSBtYWluRnJh
bWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpOwotICAgIFdl
YkNvcmU6OktVUkwgYWJzb2x1dGUoYmFzZSwgdXJsQXJyLmdldCgpKTsKKyAgICBXZWJDb3JlOjpV
UkwgYmFzZSA9IG1haW5GcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
KCkudXJsKCk7CisgICAgV2ViQ29yZTo6VVJMIGFic29sdXRlKGJhc2UsIHVybEFyci5nZXQoKSk7
CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gYWJzb2x1dGVVUkwoQWRvcHQsIEpTU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGFic29sdXRlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
KTsKICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgTG9hZEl0ZW0oYWJzb2x1dGVV
UkwuZ2V0KCksIHRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9Xb3JrUXVldWVJdGVtQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ibGFja2JlcnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCA4MjdiNWViLi41
YjQxZDdlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtR
dWV1ZUl0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2Jl
cnJ5L1dvcmtRdWV1ZUl0ZW1CbGFja0JlcnJ5LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1
ZGUgIkR1bXBSZW5kZXJUcmVlQmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+
CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBMb2FkSXRlbTo6aW52b2tlKCkgY29uc3QKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGt1cmwgPSBLVVJM
KEtVUkwoKSwgdXJsLmdldCgpKTsKKyAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgdXJsLmdldCgp
KTsKICAgICBmcmFtZS0+bG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdChmcmFtZSwgUmVz
b3VyY2VSZXF1ZXN0KGt1cmwpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCBkMjI1NTk0
Li41ZjhiNGRjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRl
clRyZWVDaHJvbWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVy
VHJlZUNocm9tZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJFZGl0aW5nQ2FsbGJh
Y2tzLmgiCiAjaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAjaW5jbHVkZSAiVGV4dElucHV0
Q29udHJvbGxlci5oIgpAQCAtMzM3LDE0ICszMzcsMTQgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6cmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpCiAKIHN0YXRpYyBTdHJpbmcg
cGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlTdHJpbmcpCiB7Ci0gICAg
S1VSTCB1cmkgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJpU3RyaW5nKTsKKyAgICBVUkwgdXJp
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJpU3RyaW5nKTsKICAgICBpZiAodXJpLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuICIobnVsbCkiOwogCiAgICAgaWYgKCF1cmkuaXNMb2NhbEZpbGUo
KSkKICAgICAgICAgcmV0dXJuIHVyaS5zdHJpbmcoKTsKIAotICAgIEtVUkwgbWFpbkZyYW1lVVJM
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGV3a19mcmFtZV91cmlfZ2V0KGJyb3dzZXItPm1haW5G
cmFtZSgpKSk7CisgICAgVVJMIG1haW5GcmFtZVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIGV3
a19mcmFtZV91cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSk7CiAgICAgaWYgKG1haW5GcmFt
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIG1haW5GcmFtZVVSTCA9IER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoYnJvd3Nlci0+bWFpbkZyYW1lKCkpOwogCkBAIC01NTUs
NyArNTU1LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZUNocm9tZTo6b25XaWxsU2VuZFJlcXVlc3Qo
dm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmYKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIEtVUkwgdXJsID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1lc3NhZ2VzLT5yZXF1
ZXN0LT51cmwpOworICAgIFVSTCB1cmwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBtZXNzYWdlcy0+
cmVxdWVzdC0+dXJsKTsKIAogICAgIGlmICh1cmwuaXNWYWxpZCgpCiAgICAgICAgICYmIHVybC5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkKQEAgLTgwMCw3ICs4MDAsNyBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlQ2hyb21lOjpvblJlc3BvbnNlUmVjZWl2ZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCogZXZlbnRJbgogCiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpKSB7CiAgICAgICAgIHByaW50ZigiJXMgaGFzIE1JTUUgdHlwZSAl
c1xuIiwKLSAgICAgICAgICAgICAgIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZS0+dXJs
KS5sYXN0UGF0aENvbXBvbmVudCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICBVUkwo
UGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZS0+dXJsKS5sYXN0UGF0aENvbXBvbmVudCgpLnV0Zjgo
KS5kYXRhKCksCiAgICAgICAgICAgICAgICByZXNwb25zZS0+bWltZV90eXBlKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggOWY2NmU5
NS4uMDc0NmU1MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5u
ZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNw
cApAQCAtNTAsNyArNTAsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRy
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgotI2luY2x1ZGUgPEtVUkwuaD4KKyNpbmNs
dWRlIDxVUkwuaD4KICNpbmNsdWRlIDxlZGl0aW5nL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE1Nyw4ICsxNTcs
OCBAQCBKU1N0cmluZ1JlZiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB1cgogCiB2b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9h
ZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKIHsKLSAgICBXZWJDb3JlOjpL
VVJMIGJhc2VVUkwoV2ViQ29yZTo6S1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGV3a19mcmFtZV91
cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSkpOwotICAgIFdlYkNvcmU6OktVUkwgYWJzb2x1
dGVVUkwoYmFzZVVSTCwgdXJsLT5zdHJpbmcoKSk7CisgICAgV2ViQ29yZTo6VVJMIGJhc2VVUkwo
V2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgoZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nl
ci0+bWFpbkZyYW1lKCkpKSk7CisgICAgV2ViQ29yZTo6VVJMIGFic29sdXRlVVJMKGJhc2VVUkws
IHVybC0+c3RyaW5nKCkpOwogCiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzQWJzb2x1
dGVVUkwoCiAgICAgICAgIEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhYnNv
bHV0ZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRTY3JvbGxiYXJQb2xpY3koSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVm
KQogCiB2b2lkIFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3Ry
aW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgcHJvdG9jb2wsIEpTU3RyaW5nUmVmIGhv
c3QsIGJvb2wgaW5jbHVkZVN1YmRvbWFpbnMpCiB7Ci0gICAgV2ViQ29yZTo6S1VSTCBrdXJsOwor
ICAgIFdlYkNvcmU6OlVSTCBrdXJsOwogICAgIGt1cmwuc2V0UHJvdG9jb2woU3RyaW5nKHByb3Rv
Y29sLT5jaGFyYWN0ZXJzKCksIHByb3RvY29sLT5sZW5ndGgoKSkpOwogICAgIGt1cmwuc2V0SG9z
dChTdHJpbmcoaG9zdC0+Y2hhcmFjdGVycygpLCBob3N0LT5sZW5ndGgoKSkpOwogCkBAIC0yMDUs
NyArMjA1LDcgQEAgdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW4KIAogdm9pZCBUZXN0UnVubmVyOjpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4s
IEpTU3RyaW5nUmVmIHByb3RvY29sLCBKU1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVTdWJk
b21haW5zKQogewotICAgIFdlYkNvcmU6OktVUkwga3VybDsKKyAgICBXZWJDb3JlOjpVUkwga3Vy
bDsKICAgICBrdXJsLnNldFByb3RvY29sKFN0cmluZyhwcm90b2NvbC0+Y2hhcmFjdGVycygpLCBw
cm90b2NvbC0+bGVuZ3RoKCkpKTsKICAgICBrdXJsLnNldEhvc3QoU3RyaW5nKGhvc3QtPmNoYXJh
Y3RlcnMoKSwgaG9zdC0+bGVuZ3RoKCkpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9k
by13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKaW5kZXgg
NmJkZmRkZS4uYWI1NTIyZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJl
bmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBAIC03NCw2ICs3NCw3
IEBAIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViQ29yZSIpOwogZmluZChcJndhbnRlZCwgIlNv
dXJjZS9XZWJLaXQiKTsKIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0MiIpOwogZmluZChc
JndhbnRlZCwgIlRvb2xzL0R1bXBSZW5kZXJUcmVlIik7CitmaW5kKFwmd2FudGVkLCAiVG9vbHMv
VGVzdFdlYktpdEFQSSIpOwogCiBzdWIgd2FudGVkCiB7CkBAIC05MywxMSArOTQsMTUgQEAgc3Vi
IHdhbnRlZAogCiAjIFNldHRpbmcgaXNET01UeXBlUmVuYW1lIHRvIDEgcmF0aGVyIHRoYW4gMCBl
eHBhbmRzIHRoZSByZWdleHBzIHVzZWQKICMgYmVsb3cgdG8gaGFuZGxlIGN1c3RvbSBKYXZhU2Ny
aXB0IGJpbmRpbmdzLgotbXkgJGlzRE9NVHlwZVJlbmFtZSA9IDE7CitteSAkaXNET01UeXBlUmVu
YW1lID0gMDsKIG15ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBm
b3JtIG9mOgotICAgICJpc1RyYW5zZm9ybUludmVydGlibGUiID0+ICJoYXNJbnZlcnRpYmxlVHJh
bnNmb3JtIiwKLSAgICAibV9pbnZlcnRpYmxlQ1RNIiA9PiAibV9oYXNJbnZlcnRpYmxlVHJhbnNm
b3JtIiwKKyAgICAiV0tVUkwiID0+ICJXS1VSTCIsCisgICAgIktVUkwiID0+ICJVUkwiLAorICAg
ICJLVVJMQ0ZOZXQiID0+ICJVUkxDRiIsCisgICAgIktVUkxIYXNoIiA9PiAiVVJMSGFzaCIsCisg
ICAgIktVUkxNYWMiID0+ICJVUkxNYWMiLAorICAgICJLVVJMX2giID0+ICJVUkxfaCIsCiApOwog
CiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgKQEAgLTEwOCwxMiArMTEz
LDYgQEAgbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JUaGVGdXR1cmUgPSAoCiAgICAgIkRhdGVJ
bnN0YW5jZSIgPT4gIkpTRGF0ZSIsCiAgICAgIkVycm9ySW5zdGFuY2UiID0+ICJKU0Vycm9yIiwK
IAotICAgICJLVVJMIiA9PiAiVVJMIiwKLSAgICAiS1VSTENGTmV0IiA9PiAiVVJMQ0YiLAotICAg
ICJLVVJMSGFzaCIgPT4gIlVSTEhhc2giLAotICAgICJLVVJMTWFjIiA9PiAiVVJMTWFjIiwKLSAg
ICAiS1VSTF9oIiA9PiAiVVJMX2giLAotCiAgICAgIlRyZWVTaGFyZWQiID0+ICJUcmVlUmVmQ291
bnRlZCIsCiAKICAgICAiU3RyaW5nSW1wbCIgPT4gIlNoYXJlZFN0cmluZyIsCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmIyZDZlYS4uZjAzM2E3NCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0dOVW1ha2VmaWxlLmFtCkBAIC0xNjYsNyArMTY2LDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQ
SV9UZXN0V2ViQ29yZV9MREZMQUdTID0gXAogCS1uby1mYXN0LWluc3RhbGwKIAogUHJvZ3JhbXNf
VGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9TT1VSQ0VTID0gXAotCVRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBcCisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1VSTC5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlv
dXRVbml0LmNwcAogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RHdGtfQ1BQRkxBR1MgPSBc
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlMmU1NmZhLi42NWEzNzdh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ5LDcgKzQ5LDcgQEAg
c2V0KHdlYmtpdDJfYXBpX2hhcm5lc3NfU09VUkNFUwogCiBzZXQodGVzdF93ZWJjb3JlX0JJTkFS
SUVTCiAgICAgTGF5b3V0VW5pdAotICAgIEtVUkwKKyAgICBVUkwKICkKIAogIyBJbiBoZXJlIHdl
IGxpc3QgdGhlIGJ1bmRsZXMgdGhhdCBhcmUgdXNlZCBieSBvdXIgc3BlY2lmaWMgV0syIEFQSSBU
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMGEwYjI2Yy4uYjNk
ODFjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02NCw3ICs2NCw3
IEBAIGxpc3QoQVBQRU5EIHRlc3Rfd2ViY29yZV9MSUJSQVJJRVMKIAogc2V0KHRlc3Rfd2ViY29y
ZV9CSU5BUklFUwogICAgIExheW91dFVuaXQKLSAgICBLVVJMCisgICAgVVJMCiApCiAKIHNldCh0
ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4NDBj
YmUuLjZkNzljOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NSw3ICs3NSw3IEBACiAJ
CTM3RTEwNjRDMTY5NzY4MTgwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxB
Ym92ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVu
dENlbGxBYm92ZS5odG1sICovOyB9OwogCQkzN0UxMDY0RDE2OTc2Qzg1MDBCNzhCRDAgLyogRE9N
SFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAvKiBET01IVE1MVGFibGVD
ZWxsQ2VsbEFib3ZlLm1tICovOyB9OwogCQkzN0UzOEMzNDE2OUI3RDAxMDA4NEMyOEMgLyogV2Vi
Vmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovOyB9OwotCQk0NDBBMUQzOTE0QTAx
MDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi87IH07
CisJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8q
IFVSTC5jcHAgKi87IH07CiAJCTRCQjQxNjAyMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJG
b3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5X
ZWJGcmFtZS5tbSAqLzsgfTsKIAkJNEJCNDE2MDQxNjgxNUY5MTAwODI0MjM4IC8qIEVsZW1lbnRB
dFBvaW50SW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQjQxNjAzMTY4MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2Vi
RnJhbWUubW0gKi87IH07CiAJCTRCRkRGRkE3MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVz
dWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHRO
b2RlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CkBAIC0zODAsNyArMzgwLDcgQEAKIAkJMzdFMTA2
NEExNjk3Njc2NDAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVGFibGVDZWxsQ2VsbEFi
b3ZlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UxMDY0QjE2OTc2N0Y3MDBC
NzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAv
KiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2
NkYyIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1VS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0MEExRDM4MTRBMDEwM0EwMDhB
NjZGMiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1
MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEJCNDE2MDExNjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNXcmFwcGVyRm9yTm9k
ZUluV2ViRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQjQxNjAzMTY4
MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDYsNyArNjQ2LDcgQEAKIAkJNDQwQTFE
MzYxNEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNw
cCAqLywKKwkJCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLywKIAkJCQkx
NDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IFdlYkNvcmU7CkBAIC0xMTQyLDcgKzExNDIsNyBAQAogCQkJCUMwQURCRTdDMTJGQ0E0
RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDgx
MjI0MjEzRkMxNzI0MDBEQzM5QUUgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0QkI0MTYwMjE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2Vi
RnJhbWUubW0gaW4gU291cmNlcyAqLywKLQkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyog
S1VSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyog
VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY0MDEzMTY3QTgzMDUwMDBCRDIxOCAvKiBM
YXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENjQwQjU1MTc4NzVERkYwMEJGQUY5
OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MzAw
QjE4MTY3NTVDRDkwMDY2ODg2RCAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmVhZGU1NS4uMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldURlN0cmlu
Z1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7Ci0KLWNsYXNzIEtVUkxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qgewot
cHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgfQotfTsKLQotVEVTVF9GKEtVUkxUZXN0LCBLVVJM
Q29uc3RydWN0b3JEZWZhdWx0KQotewotICAgIEtVUkwga3VybDsKLQotICAgIEVYUEVDVF9UUlVF
KGt1cmwuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmlzTnVsbCgpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uoa3VybC5pc1ZhbGlkKCkpOwotfQotCi1URVNUX0YoS1VSTFRlc3QsIEtVUkxD
b25zdHJ1Y3RvckNvbnN0Q2hhcikKLXsKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCAi
aHR0cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/
dmFyPXZhbCNmcmFnbWVudCIpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5p
c1ZhbGlkKCkpOwotCi0gICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBrdXJsLnByb3RvY29s
KCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBrdXJsLmhvc3Qo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5oYXNQb3J0KCkpOwotICAgIEVYUEVDVF9FUSg4MDgw
LCBrdXJsLnBvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwga3VybC51
c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsK
LSAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7Ci0gICAg
RVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkp
OwotICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKLSAgICBF
WFBFQ1RfVFJVRShrdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJmcmFnbWVudCIpLCBrdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKLX0KLQotVEVT
VF9GKEtVUkxUZXN0LCBLVVJMRGF0YVVSSVN0cmluZ1NoYXJpbmcpCi17Ci0gICAgS1VSTCBiYXNl
VVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKLSAgICBTdHJp
bmcgdGhyZWVBcHBsZXMgPSAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2
Ty83Nk8vNzZPLyI7Ci0KLSAgICBLVVJMIHVybChiYXNlVVJMLCB0aHJlZUFwcGxlcyk7Ci0gICAg
RVhQRUNUX0VRKHRocmVlQXBwbGVzLmltcGwoKSwgdXJsLnN0cmluZygpLmltcGwoKSk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212809</attachid>
            <date>2013-09-27 07:55:18 -0700</date>
            <delta_ts>2013-09-27 08:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-16214-20130927075515.patch</filename>
            <type>text/plain</type>
            <size>1591844</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyYTNkNzFkMDU0NWE5
NGY3OTg5NjU4YThmMjQ5NjNkYTE5Y2YyMS4uYjhkODMxZmExZjg1ZmNiNDJiM2E5ZGVmZmEwNzA0
MjFhNjRlYjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZp
bGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtlIE1l
ZGlhU3RyZWFtIHRlc3RhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRlN2E2ZjQ3ZDI3ODA3N2FhYzI0NDhmYjZj
Y2E0Y2ZhZDRmYzNmZGUuLmZlNzMwZGQ4OWZlNTk4YWJiZTA5ODM4ZjU2OTJlOGI0MGY3ZDE0MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKyAgICAgICAgTGV0IHRoZSBz
Y3JpcHQgdG8gdHJ5IHRvIHJlbmFtZSBoZXJlLgorCiAyMDEzLTA5LTI2ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gbWFrZSBN
ZWRpYVN0cmVhbSB0ZXN0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggYzg2
ZDA5ODVjYTA5ZDlkZWUxZDY5MTMwYjRmYzZhMjI4NGY3YWIyZS4uOTY3NjMzZDU2NmJkZWEwMmEy
MjA2MjNjMGFkOWEyODRkOWM5YmNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlw
dC4KKwogMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCmluZGV4IDI3ODM0NDM1NjE0NmZlMmEyZWUxYmNlZDg4NTg2YmI1YTdmYTRm
OTYuLmIzZGFhYTcwOTlmNGY5NTg3ZDgwM2E5NmE3Y2ZjNTk4MGM3NDM5YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNp
bmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5n
bGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYTQyMWI1ZTkyYzc3OTllZTgwYjA0MzJiMzdjYzQ0
MTNkZjU2YmEzMy4uNjk4MzAzMzBjNzZkOWVlODZmMzQ0MDk5ZjUxMDI1NzkzYzQ0OGI2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5h
bWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBh
cyBhIFNpbmdsZXRvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYjEwYzA0MmNkMDU3NDViMGIzZmUy
NjIzYTU0MjAxOTUyM2ZjNWMzLi43NjY3MTAyYjA2OGZmYjczNDEwM2VlYzA4NTk0NGRhODc5N2Qx
OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmls
ZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNiAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFTdHJlYW1dIG1ha2UgTWVk
aWFTdHJlYW0gdGVzdGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWM5MzIwY2MwZjVlNjc1ZTU4MmRl
NWYyMjk4YWI1MmNlYWVlZWRmMC4uYTk5Y2IyN2RhNTkyODgzN2NkMmMyMmJiMDFjYTdjMmE0ZTM0
NDQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxl
czogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNGZjNWNmZmI0YjQyYzNh
MjQzM2E4YWQ3NTFlOWUyZDIxOGEwZjg0OS4uYmJlNGRkMGZkMTBkMThmYmFmYzNhOWU1ZTJhYzU4
MmVkZTlhYzIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0
byBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
YW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjUgIFJvZ2VyIEZv
bmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQXR0ZW1wdGlu
ZyB0byBzY3JvbGwgZnJvbSBhIG5vbi1zY3JvbGxhYmxlIGxheWVyIHJlc3VsdHMgdGhlIG1haW4g
ZG9jdW1lbnQgZ2V0dGluZyBzY3JvbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKaW5kZXggZTU4YmQ4
ZmY3MWE1OWFhOGQ3YmIxOGJhNTMzNGE3OGQ2MWM1YmZjMi4uNGJmYzAzYjAwM2M5NTNlMTMzNTBk
OTVmYjRiMWQ5MmJhMWY4YWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
cmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5
LTE2ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IHVudXNlZCBmdW5jdGlvbiBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQgZnJvbSBF
ZGl0b3JDbGllbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODE2ZDJjOWEyYTVmYzE2ZTFjYzUzODRmYjg0YmFi
M2U0NmZhMzYwYS4uZDQ3NjliM2JhNmUyMzFhZmE4NDA0OWE3NTdlMjQ5NDBjZDQyZWNhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1
c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgV2luZG93cyBjb2RlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IDExNjMwMjA3NTc4ZGE3NDMzZWQzNWQ1ZjVhYWVmZjk1ZTFkNTliMDguLjU0ZWM0YzFi
Mzc3MGE0ZTY2ZmU0OTFiZDFiNmE3ZWVjOWRhYmE2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC0xODE2LDcgKzE4MTYsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vRmls
ZVN0cmVhbS5jcHAKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcAogICAgIHBsYXRmb3JtL0hp
c3RvZ3JhbVN1cHBvcnQuY3BwCi0gICAgcGxhdGZvcm0vS1VSTC5jcHAKKyAgICBwbGF0Zm9ybS9V
UkwuY3BwCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNwcAogICAgIHBsYXRmb3JtL0xhbmd1
YWdlLmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IGYxZmY4M2Y1MGE1YzdjZDQ2YzZiMzgwMzAyNTk3YjI0MzE2OTQ4NmUuLjBmYWJi
NjVmZmY1NzJiNzU1YzA3OThiODYzZDQ0MmU5Zjc0NTEzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNjA1Nyw5ICs2MDU3LDkgQEAgcGxhdGZvcm1fc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3VwcG9ydC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vSG9zdFdpbmRvdy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBc
Ci0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMSGFzaC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMSGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LaWxsUmluZy5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MYW5ndWFnZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
aWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGRkODgxZjdjNGNkNGZlZjAyNDAwYTlj
OTZkNTc5MjY3MGM1MWFlYzkuLjJmYzFmODMxZGVmYWRmZTVmYzkzN2YwMGNjMzczOGRkY2NjNTVl
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmls
ZVN5c3RlbS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8g
c3RhdGljCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERPTUZp
bGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250
ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CiAgICAgZmlsZVN5
c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CkBAIC04MywxMCArODMsMTAgQEAgUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJc29sYXRlZEZpbGVTeXN0ZW0oU2Ny
aXB0RXhlY3V0aW8KICAgICByb290VVJMLmFwcGVuZChmaWxlc3lzdGVtSWQpOwogICAgIHJvb3RV
UkwuYXBwZW5kKCIvIik7CiAKLSAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRl
eHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5nKCkpLCBBc3luY0ZpbGVTeXN0ZW06
OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZp
bGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRl
KCkpOwogfQogCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmls
ZVN5c3RlbSkKK0RPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBj
b25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVT
eXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290
VVJMLCBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgLCBBY3RpdmVET01PYmplY3QoY29udGV4dCkKIHsK
QEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgewogCiBjbGFzcyBTbmFwc2hvdEZpbGVDYWxs
YmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8U25hcHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERP
TUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRy
PEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8U25h
cHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8Rmls
ZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJy
b3JDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU25hcHNob3RG
aWxlQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgdXJsLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2spKTsKICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBTbmFwc2hvdEZpbGVDYWxsYmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgIGNvbnN0IEtVUkwmIHVybCwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIFNuYXBzaG90RmlsZUNhbGxiYWNrKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBuYW1lLCAgY29uc3Qg
VVJMJiB1cmwsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICAgICAgOiBGaWxlU3lzdGVt
Q2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAgICAsIG1fZmlsZXN5c3RlbShmaWxl
c3lzdGVtKQogICAgICAgICAsIG1fbmFtZShuYW1lKQpAQCAtMTk1LDcgKzE5NSw3IEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwogICAgIFN0cmlu
ZyBtX25hbWU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgUmVmUHRyPEZp
bGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CiB9OwogCkBAIC0yMDMsNyArMjAzLDcgQEAg
cHJpdmF0ZToKIAogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRy
eSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgS1VSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOworICAgIFVSTCBmaWxl
U3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxlRW50cnkpOwogICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVS
TCwgU25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwg
ZmlsZVN5c3RlbVVSTCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5oCmlu
ZGV4IGFlODExM2Y3MzZlYzcxZWMyMDNhMzE0NTNlMmFmMGNkNjMyN2Y1ZGYuLjc5YWZjODhlMzdk
OTVhODQ4Y2MwMDM0MDNhNmM2NThlNmRmZjg0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMgRE9N
RmlsZVN5c3RlbUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYgcm9v
dFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0
cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIENyZWF0ZXMgYSBuZXcgaXNvbGF0ZWQgZmls
ZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQuCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlSXNvbGF0ZWRGaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1JZCk7CkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRE9NRmlsZVN5c3RlbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3Qg
S1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01GaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Pik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgbWV0aG9kcy4KICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKaW5kZXggN2VmYWFjZWMwYmY2YTU3OGJhOTU3
ZjkyMTNiNzAyMDRhZTRiM2I3NC4uZjZhNTIxNTE0NzhjNDRlMmVjMGJiZTE4MmFlMTM4OTY1OTAy
NGJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZp
bGVTeXN0ZW1CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0IHNpemVfdCBET01G
aWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxl
U3lzdGVtCiBjb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNlOjppc29sYXRlZFBhdGhQcmVmaXhb
XSA9ICJpc29sYXRlZCI7CiBjb25zdCBzaXplX3QgRE9NRmlsZVN5c3RlbUJhc2U6Omlzb2xhdGVk
UGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtQmFzZTo6aXNvbGF0ZWRQYXRo
UHJlZml4KSAtIDE7CiAKLURPTUZpbGVTeXN0ZW1CYXNlOjpET01GaWxlU3lzdGVtQmFzZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0
ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitET01GaWxlU3lzdGVtQmFzZTo6RE9NRmlsZVN5c3RlbUJh
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBG
aWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fbmFtZShuYW1lKQogICAgICwgbV90eXBlKHR5cGUpCkBAIC03OSw3ICs3OSw3IEBAIGJv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiB9
CiAKIC8vIHN0YXRpYwotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxlU3lzdGVtVVJM
KGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5cGUsIFN0cmluZyYgZmlsZVBhdGgp
Citib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgVVJMJiB1
cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGlmICgh
dXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTA1LDEwICsxMDUsMTAgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6c3VwcG9ydHNUb1VSTCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNy
ZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3QKK1VSTCBET01G
aWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRo
KSBjb25zdAogewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShmdWxsUGF0aCkp
OwotICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAgICBVUkwgdXJsID0gbV9m
aWxlc3lzdGVtUm9vdFVSTDsKICAgICAvLyBSZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2gu
CiAgICAgdXJsLnNldFBhdGgodXJsLnBhdGgoKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMoZnVsbFBhdGguc3Vic3RyaW5nKDEpKSk7CiAgICAgcmV0dXJuIHVybDsKQEAgLTEyMCw3ICsx
MjAsNyBAQCBTZWN1cml0eU9yaWdpbiogRE9NRmlsZVN5c3RlbUJhc2U6OnNlY3VyaXR5T3JpZ2lu
KCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwogfQogCi1L
VVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IEVudHJ5QmFz
ZSogZW50cnkpIGNvbnN0CitVUkwgRE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1V
UkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKIHsKICAgICByZXR1cm4gY3JlYXRlRmls
ZVN5c3RlbVVSTChlbnRyeS0+ZnVsbFBhdGgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCmluZGV4IDNiNDI0NmE5
MTA2ZjM4ZTdkNWEyZjAxMzRjNmFjYWQwZmY5MmY5ODQuLjI4NzI4MzcwZGRhODA0YzAxMzEwZmFm
ZWUxOGY0MmQxNDBlMWMwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVk
ZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbUZsYWdzLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjYsNyArNjYsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgaXNvbGF0ZWRQYXRoUHJlZml4W107CiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBpc29sYXRlZFBhdGhQcmVmaXhMZW5ndGg7CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmls
ZVN5c3RlbSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmls
ZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3lu
Y0ZpbGVTeXN0ZW0pKTsKICAgICB9CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAgIEZpbGVTeXN0
ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBLVVJMIHJvb3RVUkwo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJMOyB9CisgICAgVVJMIHJvb3RVUkwo
KSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJMOyB9CiAgICAgQXN5bmNGaWxlU3lz
dGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVybiBtX2FzeW5jRmlsZVN5c3RlbS5n
ZXQoKTsgfQogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCkBA
IC04NSwxMCArODUsMTAgQEAgcHVibGljOgogICAgIGJvb2wgY2xvbmFibGUoKSBjb25zdCB7IHJl
dHVybiBtX2Nsb25hYmxlOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVHlwZShGaWxlU3lz
dGVtVHlwZSk7Ci0gICAgc3RhdGljIGJvb2wgY3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwm
LCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmlsZVBhdGgpOworICAgIHN0YXRpYyBib29sIGNy
YWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwmLCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmls
ZVBhdGgpOwogICAgIGJvb2wgc3VwcG9ydHNUb1VSTCgpIGNvbnN0OwotICAgIEtVUkwgY3JlYXRl
RmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25zdDsKLSAgICBLVVJMIGNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3Q7CisgICAgVVJMIGNyZWF0
ZUZpbGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKikgY29uc3Q7CisgICAgVVJMIGNyZWF0ZUZp
bGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkgY29uc3Q7CiAKICAgICAvLyBBY3R1
YWwgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRpb25zLiBBbGwgdGhlIHZhbGlkaXR5IGNoZWNr
cyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25lIGF0IHRoaXMgbGV2ZWwuCiAgICAgLy8gVGhleSBy
ZXR1cm4gZmFsc2UgZm9yIGltbWVkaWF0ZSBlcnJvcnMgdGhhdCBkb24ndCBpbnZvbHZlIGxvd2Vy
IEFzeW5jRmlsZVN5c3RlbSBsYXllciAoZS5nLiBmb3IgbmFtZSB2YWxpZGF0aW9uIGVycm9ycyku
IE90aGVyd2lzZSB0aGV5IHJldHVybiB0cnVlIChidXQgbGF0ZXIgbWF5IGNhbGwgYmFjayB3aXRo
IGFuIHJ1bnRpbWUgZXJyb3IpLgpAQCAtMTAzLDEzICsxMDMsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgcmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9yeVJlYWRlckJhc2U+LCBjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJv
ckNhbGxiYWNrPik7CiAKIHByb3RlY3RlZDoKLSAgICBET01GaWxlU3lzdGVtQmFzZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29u
c3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01G
aWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4pOwogICAgIGZyaWVuZCBjbGFzcyBET01GaWxlU3lzdGVtU3luYzsKIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAg
IEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKLSAgICBLVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7Cisg
ICAgVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7CiAgICAgYm9vbCBtX2Nsb25hYmxlOwogCiAgICAg
bXV0YWJsZSBPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBtX2FzeW5jRmlsZVN5c3RlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCmluZGV4IDBjNmVhZTllYTBmN2EyOTA1MTZkNDU3Yzg4NTk3YzAwODNiMTdkMjYuLmRk
ODYwMmQzNDg4MjBiMDdlNmVkYTAwMjczNDdlZDhkY2NkYzczMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW1TeW5jPiBET01GaWxlU3lz
dGVtU3luYzo6Y3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBmaWxlUwogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMoZmlsZVN5c3RlbS0+bV9jb250ZXh0LCBmaWxlU3lz
dGVtLT5uYW1lKCksIGZpbGVTeXN0ZW0tPnR5cGUoKSwgZmlsZVN5c3RlbS0+cm9vdFVSTCgpLCBm
aWxlU3lzdGVtLT5tX2FzeW5jRmlsZVN5c3RlbS5yZWxlYXNlKCkpKTsKIH0KIAotRE9NRmlsZVN5
c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RP
TUZpbGVTeXN0ZW1TeW5jOjpET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0
IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKICAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQsIG5hbWUsIHR5cGUsIHJvb3RVUkws
IGFzeW5jRmlsZVN5c3RlbSkKIHsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAg
ICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPENyZWF0ZUZpbGVSZXN1bHQ+OwogICAgIH07
CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcmVhdGVGaWxlSGVscGVyPiBjcmVhdGUoUGFzc1Jl
ZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENy
ZWF0ZUZpbGVIZWxwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+IHJlc3Vs
dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUgdHlw
ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3JlYXRlRmlsZUhlbHBlcihy
ZXN1bHQsIG5hbWUsIHVybCwgdHlwZSkpOwogICAgIH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiBwcml2YXRlOgotICAgIENyZWF0ZUZpbGVIZWxwZXIoUGFz
c1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQorICAgIENyZWF0ZUZpbGVIZWxwZXIo
UGFzc1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUpCiAgICAgICAgIDogbV9yZXN1bHQo
cmVzdWx0KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAg
LTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPENyZWF0ZUZpbGVSZXN1bHQ+
IG1fcmVzdWx0OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwg
bV91cmw7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwogfTsKIApAQCAtMTU1LDcgKzE1NSw3
IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVG
aWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgZWMgPSAwOwotICAgIEtVUkwgZmlsZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoZmlsZUVudHJ5KTsKKyAgICBVUkwgZmlsZVN5c3RlbVVSTCA9IGNyZWF0ZUZpbGVTeXN0ZW1V
UkwoZmlsZUVudHJ5KTsKICAgICBSZWZQdHI8Q3JlYXRlRmlsZUhlbHBlcjo6Q3JlYXRlRmlsZVJl
c3VsdD4gcmVzdWx0KENyZWF0ZUZpbGVIZWxwZXI6OkNyZWF0ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgp
KTsKICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFk
YXRhKGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZpbGVIZWxwZXI6OmNyZWF0ZShyZXN1bHQsIGZpbGVF
bnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCB0eXBlKCkpKTsKICAgICBpZiAoIW1fYXN5bmNG
aWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCmluZGV4
IDI0ZmJkMTU5NGJhODVjMmJiNmFkY2M0MDE4ZjFlOTYyYzEwY2VkMmYuLjI2MjliZGY2NGZkMWJj
NmNiY2EyNTAxYTJmYTcxODMxOTJkNTEyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5oCkBAIC00Niw3ICs0Niw3IEBA
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW1TeW5jIDog
cHVibGljIERPTUZpbGVTeXN0ZW1CYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUg
dHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5
bmNGaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxl
U3lzdGVtU3luYyhjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0p
KTsKICAgICB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEZpbGVX
cml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5U3luYyosIEV4Y2VwdGlvbkNv
ZGUmKTsKIAogcHJpdmF0ZToKLSAgICBET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKKyAgICBET01GaWxlU3lzdGVt
U3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lz
dGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4p
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVt
L0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lz
dGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDE3OWVjZTZmNDQ5MTc3NzE2NThiZTIw
NGMxNmYyZGI5NzM3MWU1MmQuLjgyM2E1ZWQxNmI1MzkyMjNhZDU5NDdlOGM1YmJhNWI1MjZjZDg1
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01XaW5k
b3dGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
RE9NV2luZG93RmlsZVN5c3RlbS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBET01XaW5kb3dG
aWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKERPTVdpbmRvdyogd2lu
ZG93LCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgS1VSTCBjb21wbGV0ZWRV
UkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0g
ZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFBc3luY0ZpbGVTeXN0ZW06Omlz
QXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwg
IXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKICAgICAgICAgRE9N
RmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVudCwgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0
ZW1DYWxsYmFja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVT
eXN0ZW1DYWxsYmFja3MuY3BwCmluZGV4IDlkODFhMjI0NmMzMjViZmJiOTllY2YzM2NlODIwYzk0
ZTY5NzZiNGIuLjQyYjRhZmRhNzBjYzEzYTk0YTdhMDBiYzMxNDc0Zjg1OGY3MjgzNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJh
Y2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3Rl
bUNhbGxiYWNrcy5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBGaWxlU3lzdGVtQ2FsbGJhY2tzOjpG
aWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5c3RlbUNhbGxiYWNrPiBzdWNjZXNz
QwogewogfQogCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK3ZvaWQgRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
T3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiB7CiAgICAgaWYgKG1f
c3VjY2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChhc3luY0ZpbGVTeXN0ZW0pOwpAQCAt
MjExLDcgKzIxMSw3IEBAIFJlc29sdmVVUklDYWxsYmFja3M6OlJlc29sdmVVUklDYWxsYmFja3Mo
UGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhCiB7CiB9CiAKLXZvaWQgUmVz
b2x2ZVVSSUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxl
U3lzdGVtKQordm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBBU1NFUlQoYXN5bmNGaWxlU3lzdGVtKTsK
ICAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBET01GaWxlU3lzdGVtOjpjcmVhdGUo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1lLCBtX3R5cGUsIHJvb3RVUkwsIGFz
eW5jRmlsZVN5c3RlbSktPnJvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IDI1ZmUzNjg1YzgzNjBj
YWI3ZTljODY3NzM1NDgyZWY1ZDIyZDQyN2UuLjM5OWM1OTBiY2M0OGZjY2MzMmI4NTYxYzAyMzVi
Y2YzZDhlMGRjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3Rl
bS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxl
c3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6
CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NC
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5cGUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CisgICAgdmlydHVh
bCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBy
b290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogCiBwcml2YXRlOgogICAgIEZp
bGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJhY2s+LCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN5c3RlbVR5
cGUpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiBjbGFzcyBSZXNvbHZlVVJJQ2FsbGJh
Y2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxFbnRy
eUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJM
JiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogcHJpdmF0ZToKICAgICBSZXNvbHZl
VVJJQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4sIFBhc3NSZWZQdHI8RXJyb3JD
YWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBGaWxlU3lzdGVtVHlwZSwgY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zp
bGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCmluZGV4
IDdkMmFlYTRiODBlZGZjZTVlMDRjZWIyNGEzYTcwNmMzNWQ0MTljMTEuLjZkOTg0YWNhOTE3Njgz
NTBhNzYxMDY4MmZjYmQ4NTgxN2FiZWIwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZpbGVTeXN0
ZW0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbVN5bmM+IFdv
cmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVxdWVzdEZpbGVTeXN0CiAKIHZvaWQg
V29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lzdGVt
VVJMKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVm
UHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIEtVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5j
b21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSB3b3JrZXItPmNvbXBsZXRl
VVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2VjdXJlQ29udGV4dCA9IHdv
cmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghQXN5bmNGaWxlU3lzdGVt
Ojppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBET01GaWxlU3lzdGVtOjpzY2hlZHVs
ZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVy
cm9yOjpTRUNVUklUWV9FUlIpKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTChXb3JrZXJH
bG9iYWxTYwogUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3Rl
bTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNVUkwoV29ya2VyR2xvYmFsU2NvcGUq
IHdvcmtlciwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVj
ID0gMDsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtlci0+Y29tcGxldGVVUkwodXJsKTsK
KyAgICBVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQgPSB3b3JrZXItPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKSB8
fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzRmlsZVN5c3RlbSgp
IHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
ZFVSTCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpTRUNVUklUWV9FUlI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZVJlZ2lzdHJ5LmNwcAppbmRleCBkYjQ3NTFlMDA1YmM1ZTIwYTQ4NDNmZjBiNGM3NjFjOWM5MWYz
YzgxLi5hNjdlYzBmZjk4OWFkZTZlYWQwMDMxNzMyYzY5NmM4NTViOWExYjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VS
ZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVkaWFT
b3VyY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDYsNyArNDYs
NyBAQCBNZWRpYVNvdXJjZVJlZ2lzdHJ5JiBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgp
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi12b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJl
Z2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYgdXJsLCBVUkxSZWdpc3RyYWJs
ZSogcmVnaXN0cmFibGUpCit2b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiByZWdpc3RyYWJs
ZSkKIHsKICAgICBBU1NFUlQoJnJlZ2lzdHJhYmxlLT5yZWdpc3RyeSgpID09IHRoaXMpOwogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgTWVkaWFTb3Vy
Y2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiB1cmws
IFVSTFJlZ2lzCiAgICAgbV9tZWRpYVNvdXJjZXMuc2V0KHVybC5zdHJpbmcoKSwgc291cmNlKTsK
IH0KIAotdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwm
IHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPiA+OjppdGVyYXRvciBpdGVyID0gbV9tZWRpYVNvdXJj
ZXMuZmluZCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAppbmRleCA0NmMyNGQ0ZTAzMDVm
NmRkZGU5MWNmNGU4NDQxZjQ3N2M5NjQ4YTY2Li43OGQyN2UwMDY1YzQ3MWNjNzVjYWQyYmQ4MjJh
YmY3MGNkMDYzMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaApAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBNZWRpYVNv
dXJjZUJhc2U7CiAKIGNsYXNzIE1lZGlhU291cmNlUmVnaXN0cnkgOiBwdWJsaWMgVVJMUmVnaXN0
cnkgewpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhU291cmNlUmVn
aXN0cnkmIHJlZ2lzdHJ5KCk7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCByZWZlcnJp
bmcgdG8gdGhlIHNwZWNpZmllZCBtZWRpYSBzb3VyY2UuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBVUkxSZWdpc3RyYWJs
ZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5jcHAKaW5kZXggMzZkMjdlNmZjODg4NGEzYWY5NzQ0ODI2OWQyYjNhMTU3NzJmMTdlNi4u
Mjk2NzE4MWM5ZjdiZjdiZGY1YmY1ZmU3M2JlNzhmNDllZTE1NTI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDEsMTQgKzQxLDE0IEBAIE1l
ZGlhU3RyZWFtUmVnaXN0cnkmIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkKICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiBzdHJl
YW0pCit2b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiBzdHJlYW0pCiB7CiAgICAgQVNTRVJU
KCZzdHJlYW0tPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBtX3N0cmVhbURlc2NyaXB0b3JzLnNldCh1cmwuc3RyaW5nKCksIHN0YXRpY19jYXN0
PE1lZGlhU3RyZWFtKj4oc3RyZWFtKS0+ZGVzY3JpcHRvcigpKTsKIH0KIAotdm9pZCBNZWRpYVN0
cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgTWVkaWFT
dHJlYW1SZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMucmVtb3ZlKHVybC5z
dHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4IGU4YmU0YzFiNDkwZjkzMGIxYTEzMDRkMGIx
Y2M2YTI3M2NlYmVmN2EuLmU0NmMyYjJkY2QwYWE1OTgyNGY1ZWEyNzVjZDcwY2Q1NzE2NDU5MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogY2xhc3Mg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCkBAIC00NCw4ICs0NCw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgTWVkaWFTdHJlYW1SZWdpc3RyeSYgcmVnaXN0cnkoKTsKIAogICAgIC8vIFJlZ2lzdGVy
cyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIHN0cmVhbSBkYXRhLgotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBV
UkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJM
KGNvbnN0IEtVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogCiAgICAg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3Qg
U3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGNlZDAyMzMyMWMyNjQ2MDViMjFh
NzIyZGU4Njg5ZTlkMDZlNTE1YTEuLjA1MWUwZGRhNWFkMjE2NTY2ZWIyNGU5MWRkY2NmN2ZiYWU2
NDZlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC05OSw3ICs5OSw3IEBAIFBhc3NSZWZQdHI8UlRD
Q29uZmlndXJhdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBhcnNlQ29uZmlndXJhdGlvbihjb25z
dCBEaWN0aW9uCiAgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJp
bmcpOworICAgICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJpbmcpOwogICAgICAgICBpZiAoIXVy
bC5pc1ZhbGlkKCkgfHwgISh1cmwucHJvdG9jb2xJcygidHVybiIpIHx8IHVybC5wcm90b2NvbElz
KCJzdHVuIikpKSB7CiAgICAgICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmln
YXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmNw
cAppbmRleCA5OWI5NmNmOThhYTg0ZmMzNmJkZjMxOTcwMTFiMWE4ZGMwOTU5NjhkLi5mM2IxZGI4
Njk2MjhjMGQxMmU0OThiNDQyZWUyMGM3YjE1N2RkMmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05h
dmlnYXRvckNvbnRlbnRVdGlscy5jcHAKQEAgLTg2LDggKzg2LDggQEAgc3RhdGljIGJvb2wgdmVy
aWZ5Q3VzdG9tSGFuZGxlclVSTChjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
dXJsLCBFeGMKICAgICBTdHJpbmcgbmV3VVJMID0gdXJsOwogICAgIG5ld1VSTC5yZW1vdmUoaW5k
ZXgsIFdURl9BUlJBWV9MRU5HVEgodG9rZW4pIC0gMSk7CiAKLSAgICBLVVJMIGJhc2UoUGFyc2Vk
VVJMU3RyaW5nLCBiYXNlVVJMKTsKLSAgICBLVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKKyAgICBV
UkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOworICAgIFVSTCBrdXJsKGJhc2UsIG5l
d1VSTCk7CiAKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYWFiNTY0OWZlNGZlNzJiZGQw
NDIxYjI2MmFjY2YzNDI2OGNlMzQ0YS4uZjYyOWVjNzcwYzM5NmIzNjIzZTJiMGVlMjEyODE3NzBj
YTZjOTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgTm90aWZpY2F0aW9uOjpOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBT
dHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faWNvbiA9IGljb25VUkkuaXNF
bXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChp
Y29uVVJJKTsKKyAgICBtX2ljb24gPSBpY29uVVJJLmlzRW1wdHkoKSA/IFVSTCgpIDogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKICAgICBpZiAoIW1faWNv
bi5pc0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMjAsNyArMTIwLDcgQEAgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGMKICAgICBpZiAob3B0aW9ucy5nZXQoImRpciIsIGFyZ3VtZW50KSkKICAgICAgICAg
bm90aWZpY2F0aW9uLT5zZXREaXIoYXJndW1lbnQpOwogICAgIGlmIChvcHRpb25zLmdldCgiaWNv
biIsIGFyZ3VtZW50KSkgewotICAgICAgICBLVVJMIGljb25VUkkgPSBhcmd1bWVudC5pc0VtcHR5
KCkgPyBLVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTChhcmd1bWVudCk7CisgICAgICAgIFVS
TCBpY29uVVJJID0gYXJndW1lbnQuaXNFbXB0eSgpID8gVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0
ZVVSTChhcmd1bWVudCk7CiAgICAgICAgIGlmICghaWNvblVSSS5pc0VtcHR5KCkgJiYgaWNvblVS
SS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBub3RpZmljYXRpb24tPnNldEljb25VUkwoaWNvblVS
SSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCmluZGV4IDUwN2E3ZmEzMGZiM2Q3ZmZjNTJlNWQ5NjU1NzFmZWIwYTcx
ZjFkYzIuLjc5NjcwOTFiZDYzODMzMmM5YTRiNTA3YTc4MTRhNDNkNTljMjkzNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAj
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgpAQCAt
ODMsOCArODMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBL
VVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KLSAgICB2b2lkIHNldEljb25V
UkwoY29uc3QgS1VSTCYgdXJsKSB7IG1faWNvbiA9IHVybDsgfQorICAgIFVSTCBpY29uVVJMKCkg
Y29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFVSTCYg
dXJsKSB7IG1faWNvbiA9IHVybDsgfQogCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1
cm4gbV90aXRsZTsgfQogICAgIFN0cmluZyBib2R5KCkgY29uc3QgeyByZXR1cm4gbV9ib2R5OyB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gVGV4dCBub3Rp
ZmljYXRpb25zLgotICAgIEtVUkwgbV9pY29uOworICAgIFVSTCBtX2ljb247CiAgICAgU3RyaW5n
IG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKICAgICBTdHJpbmcgbV9kaXJlY3Rpb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2xpZW50LmgKaW5kZXggOWU5MjgzNmU1NjRjYWM5NmE5MGYzZjE1ZDljZDI5NmM1OWM0
NWIwNC4uMjI4MTViZjdhNDBiYTNmM2U0YjZlNWQ0MjA0YTA1ZTIyNDA0ZDlhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb3RpZmljYXRpb247
CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKaW5kZXggNTlkNDJmOTg4
MDIzNDc3MTY5NWIyYjE0MjZlNWUxYTk5NjkxY2FjNS4uY2RjMWYyMjcyYjIyYmNjMDIxNGE4Y2I5
MzUwMjcxZTMwODZkN2IxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoR3JhbW1hci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxTcGVlY2hHcmFt
bWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3Bl
ZWNoR3JhbW1hcik7CiB9CiAKLVBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1h
cjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCkKK1Bhc3NSZWZQdHI8U3Bl
ZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNvbnN0IFVSTCYgc3JjLCBkb3VibGUg
d2VpZ2h0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hcihzcmMsIHdl
aWdodCkpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFy
KCkKIHsKIH0KIAotU3BlZWNoR3JhbW1hcjo6U3BlZWNoR3JhbW1hcihjb25zdCBLVVJMJiBzcmMs
IGRvdWJsZSB3ZWlnaHQpCitTcGVlY2hHcmFtbWFyOjpTcGVlY2hHcmFtbWFyKGNvbnN0IFVSTCYg
c3JjLCBkb3VibGUgd2VpZ2h0KQogICAgIDogbV9zcmMoc3JjKQogICAgICwgbV93ZWlnaHQod2Vp
Z2h0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
R3JhbW1hci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5o
CmluZGV4IDc0YjAwYWQ3NjY2ZTE0MzQ4ZTYzNDMyODlkOTVjZWQ4OTEzNTdiNGYuLjQ5NDFmYjQy
ZmJjM2IzMmViMTRiOWNhZTA3MDY5OWQ3YTI1MTA1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVO
QUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiBjbGFzcyBTcGVlY2hHcmFtbWFyIDogcHVibGljIFJlZkNvdW50ZWQ8U3BlZWNoR3JhbW1h
cj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaEdyYW1tYXI+IGNyZWF0
ZSgpOyAvLyBGSVhNRTogVGhlIHNwZWMgaXMgbm90IGNsZWFyIG9uIHdoYXQgdGhlIGNvbnN0cnVj
dG9yIHNob3VsZCBsb29rIGxpa2UuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1h
cj4gY3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdlaWdodCk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRlKGNvbnN0IFVSTCYgc3JjLCBkb3VibGUgd2Vp
Z2h0KTsKIAotICAgIGNvbnN0IEtVUkwmIHNyYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29u
c3QgeyByZXR1cm4gbV9zcmM7IH0KLSAgICBjb25zdCBLVVJMJiBzcmMoKSBjb25zdCB7IHJldHVy
biBtX3NyYzsgfQorICAgIGNvbnN0IFVSTCYgc3JjKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBj
b25zdCB7IHJldHVybiBtX3NyYzsgfQorICAgIGNvbnN0IFVSTCYgc3JjKCkgY29uc3QgeyByZXR1
cm4gbV9zcmM7IH0KICAgICB2b2lkIHNldFNyYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBzcmMpOwogCiAgICAgZG91YmxlIHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2VpZ2h0OyB9CkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTcGVl
Y2hHcmFtbWFyKCk7Ci0gICAgU3BlZWNoR3JhbW1hcihjb25zdCBLVVJMJiBzcmMsIGRvdWJsZSB3
ZWlnaHQpOworICAgIFNwZWVjaEdyYW1tYXIoY29uc3QgVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQp
OwogCi0gICAgS1VSTCBtX3NyYzsKKyAgICBVUkwgbV9zcmM7CiAgICAgZG91YmxlIG1fd2VpZ2h0
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
R3JhbW1hckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3Jh
bW1hckxpc3QuY3BwCmluZGV4IGMzZGRiZTExZjg5YWIzOWUzNTc1NzdiOWNjNzEzNzljMmJlNDk5
ZTIuLjJkYWE3OTNiMjJiMTIwNWY5Njc1NWMwMGY5YTBmNWYxYTZlNzI0YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXJMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyTGlzdC5jcHAKQEAg
LTU1LDcgKzU1LDcgQEAgdm9pZCBTcGVlY2hHcmFtbWFyTGlzdDo6YWRkRnJvbVVyaShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXgKIHZvaWQgU3BlZWNoR3JhbW1h
ckxpc3Q6OmFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGRvdWJsZSB3ZWlnaHQp
CiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IFN0cmluZygiZGF0YTphcHBsaWNhdGlvbi94bWws
IikgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHN0cmluZyk7Ci0gICAgbV9ncmFtbWFy
cy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKEtVUkwoS1VSTCgpLCB1cmxTdHJpbmcpLCB3
ZWlnaHQpKTsKKyAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVlY2hHcmFtbWFyOjpjcmVhdGUoVVJM
KFVSTCgpLCB1cmxTdHJpbmcpLCB3ZWlnaHQpKTsKIH0KIAogU3BlZWNoR3JhbW1hckxpc3Q6OlNw
ZWVjaEdyYW1tYXJMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZmY3Mjgz
ZDg1N2Y4ZTJjZGUzOGNmMDIzMzU4NDliYjdiZTQxZWZkZC4uZGVkMzRjODViYzI4NWZhZjk4Zjgz
ZDBlNzE0ODQyYzFmODZlYTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3OwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCbG9iOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwogCkBAIC02MSw3ICs2
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW52YWxpZE1lc3NhZ2UKICAgICB9OwogCi0gICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdp
bGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgog
ICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxl
IGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgU2Vu
ZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkOTYwNjQxMmM2NmY0
NzgwMDg0NjgzZDU3YzNmMWMyNjcwMTQzZDM2Li5hNDJiOWFiOWRmY2JiNDI2OTE4Y2RjN2FlN2Qx
OTg4ODkwZTY4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2Rl
CiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJsLnV0ZjgoKS5k
YXRhKCkpOwotICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVybCk7CisgICAgbV91cmwgPSBVUkwo
VVJMKCksIHVybCk7CiAKICAgICBpZiAoIW1fdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0ICIgKyBtX3VybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0K
IAotY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBXZWJTb2Nr
ZXQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGQ2N2M1NGNmODlhNGJhZTlh
NDM1ZjBlYjY5ZjQ5NjljYjIzYzk1MGMuLjQwNDhjY2QyNWRkNDhmMjIyZDViNGUwNTQ1YmViYmVm
ZWM5ZjkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIK
ICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9u
Q29kZSYgZWMpIHsgY2xvc2UoV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVj
aWZpZWQsIFN0cmluZygpLCBlYyk7IH0KICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykgeyBjbG9zZShjb2RlLCBTdHJpbmcoKSwgZWMpOyB9CiAKLSAgICBjb25zdCBL
VVJMJiB1cmwoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkg
Y29uc3Q7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCiAgICAgU3RhdGUgbV9zdGF0ZTsKLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICB1bnNpZ25lZCBsb25nIG1fYnVmZmVy
ZWRBbW91bnQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZlcmVkQW1vdW50QWZ0ZXJDbG9zZTsK
ICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBlN2Y4ZGJkYWRi
ZDEzMWY4YmQwM2Y3NGY1NDc3ZWU0MmI0NDlmMGRhLi5hOTMyYjNjMWZjNzBmNmZiNjczOGY4NGM1
ZjkxNzg2ZDIzMzQwMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05OSw3ICs5OSw3IEBAIFdlYlNvY2tl
dENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKIHsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3Zv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCkKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29u
bmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBmMTQ4
Y2Q5MWIwODEwMDhmOGJhZjUwMDVmZTA5YTQ5NzQ4MzcxNTA4Li4zOTY0NjQ3ODUwOWI3MzA4MjZi
YjQwMDU2MDZmOGViYTU3Y2JiMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8v
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDU2M2Q3MTQwOGE3MTg2Njkz
MWEzNWFkMGVhOTY3ZDhlMzc2YzM2NWYuLjFlYzEyNzdkMzEwODc5M2VkYjUxOWRhY2Y5NmE2MDQz
OTQ1NGU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBjb25zdCBjaGFyIHJhbmRvbUNoYXJhY3RlckluU2VjV2ViU29ja2V0S2V5W10gPSAiIVwi
IyQlJicoKSorLC0uLzo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4iOwogCi1zdGF0aWMgU3RyaW5nIHJlc291cmNlTmFt
ZShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBVUkwm
IHVybCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG5hbWU7CiAgICAgbmFtZS5hcHBlbmQodXJsLnBh
dGgoKSk7CkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0
IEtVUkwmIHVybCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgU3RyaW5nIGhvc3RO
YW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCitzdGF0aWMgU3RyaW5nIGhvc3ROYW1l
KGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3VyZSkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29s
SXMoIndzcyIpID09IHNlY3VyZSk7CiAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwpAQCAtMTIx
LDcgKzEyMSw3IEBAIFN0cmluZyBXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0CiAgICAgcmV0dXJuIGJhc2U2NEVu
Y29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihoYXNoLmRhdGEoKSksIHNoYTFIYXNo
U2l6ZSk7CiB9CiAKLVdlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2ViU29ja2V0SGFuZHNoYWtlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9jbGllbnRQcm90b2NvbChwcm90
b2NvbCkKICAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29sSXMoIndzcyIpKQpAQCAtMTM2LDEy
ICsxMzYsMTIgQEAgV2ViU29ja2V0SGFuZHNoYWtlOjp+V2ViU29ja2V0SGFuZHNoYWtlKCkKIHsK
IH0KIAotY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtlOjp1cmwoKSBjb25zdAorY29uc3Qg
VVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJs
OwogfQogCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
bV91cmwgPSB1cmwuY29weSgpOwogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIENTdHJpbmcgV2ViU29j
a2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdlKCkgY29uc3QKICAgICBpZiAoIW1f
Y2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICBmaWVsZHMuYXBwZW5kKCJTZWMtV2Vi
U29ja2V0LVByb3RvY29sOiAiICsgbV9jbGllbnRQcm90b2NvbCk7CiAKLSAgICBLVVJMIHVybCA9
IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKKyAgICBVUkwgdXJsID0gaHR0
cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwogICAgIGlmIChtX2NvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
Y29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCBSZXNvdXJjZVJlcXVl
c3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKICAg
ICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LmFkZEhU
VFBIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1Qcm90b2NvbCIsIG1fY2xpZW50UHJvdG9jb2wp
OwogCi0gICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCk7
CisgICAgVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKTsKICAg
ICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQpOwogICAgICAgICBTdHJpbmcgY29va2llID0gY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZG9jdW1lbnQsIHVybCk7CkBAIC0zODYsOSArMzg2
LDkgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmFkZEV4dGVuc2lvblByb2Nlc3NvcihQYXNz
T3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2MKICAgICBtX2V4dGVuc2lvbkRpc3BhdGNoZXIu
YWRkUHJvY2Vzc29yKHByb2Nlc3Nvcik7CiB9CiAKLUtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpo
dHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKK1VSTCBXZWJTb2NrZXRI
YW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogewot
ICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgpOworICAgIFVSTCB1cmwgPSBtX3VybC5jb3B5KCk7
CiAgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNldFByb3RvY29sKG1fc2VjdXJlID8g
Imh0dHBzIiA6ICJodHRwIik7CiAgICAgQVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBj
b3VsZFNldFByb3RvY29sKTsKICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IGM4N2Fj
NmJhNjMxNmZlZTg2ODBhNzYyMWQ0Yjk5MTYxM2ExNDFhZjYuLmNjYWIwNDUwMTQxMzQ3OWNkNmM2
Y2FhNDA3YWRiNmZiYWNmM2Q2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEV4dGVuc2lvblByb2Nl
c3Nvci5oIgpAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAgICBlbnVtIE1vZGUgewogICAg
ICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIEZhaWxlZCwgQ29ubmVjdGVkCiAgICAgfTsKLSAgICBX
ZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IH5XZWJTb2NrZXRIYW5kc2hha2UoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0Owot
ICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYpOwogICAgIGNvbnN0IFN0cmluZyBob3N0KCkg
Y29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFByb3RvY29sKCkgY29uc3Q7CkBAIC05
MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGdldEV4cGVjdGVkV2ViU29j
a2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0S2V5KTsKIAogcHJpdmF0ZToKLSAg
ICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKKyAgICBV
UkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCiAgICAgaW50
IHJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwg
aW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOwogCkBAIC0xMDAsNyArMTAwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NIZWFkZXJzKCk7CiAgICAgYm9vbCBjaGVja1Jl
c3BvbnNlSGVhZGVycygpOwogCi0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAg
U3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CiAgICAgYm9vbCBtX3NlY3VyZTsKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBjOTM2ZWUwOTgwNGFlOWY4YWU5YzhjYjFhZjMxMjdkZWRhN2I1
MDIzLi5iNmJhMmQ2ZmE5NDI3YzY2NzRiZmNiYzJlYzJiNWM1ZjFmY2UyOTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6On5Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCgpCiAgICAgICAgIG1fYnJpZGdlLT5kaXNjb25uZWN0KCk7CiB9CiAKLXZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsK
ICAgICBpZiAobV9icmlkZ2UpCiAgICAgICAgIG1fYnJpZGdlLT5jb25uZWN0KHVybCwgcHJvdG9j
b2wpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjp+UGVlcigpCiAgICAgICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmRpc2Nvbm5l
Y3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCit2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjb25uZWN0KGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQpAQCAtNDI4LDcgKzQyOCw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6
ZSgpCiAgICAgICAgIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RmFpbGVkV2ViU29ja2V0Q2hh
bm5lbENyZWF0aW9uKCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpAQCAtNDM3
LDcgKzQzNyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgcGVlci0+Y29ubmVjdCh1
cmwsIHByb3RvY29sKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBBU1NFUlQo
bV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBpZiAoIW1fcGVlcikKQEAgLTQ2NCw3ICs0NjQs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2Vu
ZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbgogICAgIHBlZXItPnNlbmQoKmFycmF5QnVmZmVy
KTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKK3ZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQmxvYihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDE5YWM0
MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYyZGJhMC4uZmY5ODlkZjkwODc1ZjI3YjAxMzIw
Y2NiNGFlY2Q4MzI2MjA4YTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjsKIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5l
Y3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBl
eHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB+UGVlcigpOwogCi0g
ICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7
CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZv
aWQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7CiAgICAgICAgIHZvaWQgc2VuZChjb25z
dCBCbG9iJik7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAg
ICB+QnJpZGdlKCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwotICAgICAgICB2b2lkIGNv
bm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOworICAgICAgICB2b2lk
IGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQg
c2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwpAQCAtMTY5LDEwICsxNjksMTAgQEAgcHJpdmF0ZToK
IAogICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3Bl
KiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0cmluZyYgdGFza01vZGUpOwogCi0g
ICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWlu
VGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4pOwot
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXpl
KTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBz
aXplKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNTA0
ZDkyZDA1MmZjMDQ2MmUwYjFiYjgzMTQyOWY5NzcyMDAwZTVmZC4uYjY4MzgxNGFhZDIwYWQ5NzM2
NzgyMWJmNTEwZWNmMzBhZWFlOWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0xMDI2LDcgKzEwMjYsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmNwcFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3BwIFwKLSAgICBwbGF0Zm9ybS9L
VVJMLmNwcCBcCisgICAgcGxhdGZvcm0vVVJMLmNwcCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2Uu
Y3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3gu
Y3BwIFwKQEAgLTIyNDMsNyArMjI0Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIFwKICAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmgg
XAotICAgIHBsYXRmb3JtL0tVUkwuaCBcCisgICAgcGxhdGZvcm0vVVJMLmggXAogICAgIHBsYXRm
b3JtL0xlbmd0aC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhCb3guaCBcCiAgICAgcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCQ29tcGFyYXRvci5oIFwKQEAgLTI5MDQsNyArMjkwNCw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3Bw
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TaW1wbGVGb250RGF0YVF0LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcCBcCi0gICAgcGxhdGZvcm0vcXQvS1VSTFF0
LmNwcCBcCisgICAgcGxhdGZvcm0vcXQvVVJMUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9NSU1F
VHlwZVJlZ2lzdHJ5UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZlbnRRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBmMGFhYjg2MTUyZjJiOGJkNDdhYWVkNDI5YTg4ODQwMTExNmJkNWI2Li5i
MGI2OTdlM2IwYWI3YTc0OGU5MzllM2EzYjdiNGZhZGUwMDZkN2MwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtNjcsNyArNjcsNiBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbGN2UDhOU1N0cmluZ0V2
CiBfX1pOM1dURjEyQXRvbWljU3RyaW5nM2FkZEVQSzEwX19DRlN0cmluZwogX19aTjNXVEY2U3Ry
aW5nQzFFUDhOU1N0cmluZwogX19aTjNXVEY2U3RyaW5nQzFFUEsxMF9fQ0ZTdHJpbmcKLV9fWk43
V2ViQ29yZThHcmFkaWVudEQxRXYKIF9fWk43V2ViQ29yZTEwQ2xpZW50UmVjdEMxRVJLTlNfN0lu
dFJlY3RFCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVSS05TXzlGbG9hdFJlY3RFCiBfX1pO
N1dlYkNvcmUxMENsaWVudFJlY3RDMUV2CkBAIC04OSw2ICs4OCw4IEBAIF9fWk43V2ViQ29yZTEw
U2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xs
VmlldzIzc2V0UGFpbnRzRW50aXJlQ29udGVudHNFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3
aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NGhpZGVF
dgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NHNob3dFdgogX19aTjdXZWJDb3JlMTBTY3JvbGxW
aWV3NXBhaW50RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3OGFkZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRySU5TXzZXaWRnZXRFRUUK
IF9fWk43V2ViQ29yZTEwU3RvcmFnZU1hcDEwcmVtb3ZlSXRlbUVSS04zV1RGNlN0cmluZ0VSUzJf
CkBAIC05OSwxMSArMTAwLDExIEBAIF9fWk43V2ViQ29yZTEwU3RvcmFnZU1hcDZjcmVhdGVFagog
X19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwN3NldEl0ZW1FUktOM1dURjZTdHJpbmdFUzRfUlMyX1Ji
CiBfX1pON1dlYkNvcmUxMGRlbGV0ZUZpbGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUx
MGZpbGVFeGlzdHNFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxMHNldENvb2tpZXNFUE5T
XzhEb2N1bWVudEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTBzZXRD
b29raWVzRVBOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCitfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdl
MTNnZXRDR0ltYWdlUmVmRXYKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQ
TlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUMxRVBOU18xM0lt
YWdlT2JzZXJ2ZXJFCi1fX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMTNnZXRDR0ltYWdlUmVmRXYK
IF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRXYKIF9f
Wk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhRU4zV1RG
MTBQYXNzT3duUHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGFFRUUKIF9fWk43V2ViQ29y
ZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOM1dURjZTdHJpbmdFCkBAIC0xMTEsMTQgKzEx
MiwxMyBAQCBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFjaG9vc2VGaWxlc0VSS04zV1RGNlZl
Y3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3JhcwogX19aTjdXZWJDb3JlMTFGaWxlQ2hvb3Nl
ckQxRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMWxvYWRBcmNoaXZlRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzdBcmNoaXZlRUVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTFzaG91bGRD
bG9zZUV2Ci1fX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3RlZEVSS05TXzRLVVJM
RVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQdHJJTlNfNUV2ZW50RUVFYmJOU18xOFNob3Vs
ZFNlbmRSZWZlcnJlckUKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMnNob3VsZFJlbG9hZEVS
S05TXzRLVVJMRVMzXworX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExdXJsU2VsZWN0ZWRFUktO
U18zVVJMRVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQdHJJTlNfNUV2ZW50RUVFYmJOU18x
OFNob3VsZFNlbmRSZWZlcnJlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENo
aWxkcmVuRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5TXzI2
Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZk
ZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJl
cXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZl
bnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKIF9fWk43
V2ViQ29yZTExRnJhbWVMb2FkZXIxN3N0b3BGb3JVc2VyQ2FuY2VsRWIKLV9fWk43V2ViQ29yZTEx
RnJhbWVMb2FkZXIyMWxvYWRVUkxJbnRvQ2hpbGRGcmFtZUVSS05TXzRLVVJMRVJLTjNXVEY2U3Ry
aW5nRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjFsb2FkVVJMSW50b0No
aWxkRnJhbWVFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVBOU181RnJhbWVFCiBfX1pON1dlYkNv
cmUxMUZyYW1lTG9hZGVyMjJmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uRVJLTjNXVEYxMkF0b21pY1N0
cmluZ0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjIzdGltZU9mTGFz
dENvbXBsZXRlZExvYWRFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjI2cmVsb2FkV2l0aE92
ZXJyaWRlRW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCkBAIC0xNDYsMTMgKzE0NiwxMiBAQCBfX1pO
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRPcmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNX
VEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjFkZWNv
ZGVCYWNrRm9yd2FyZFRyZWVFUktOM1dURjZTdHJpbmdFUzRfUzRfUk5TMV83RGVjb2RlckUKIF9f
Wk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMm1lcmdlQXV0b0NvbXBsZXRlSGludHNFUFMwXwotX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbTZzZXRVUkxFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW03dmlzaXRlZEVSS04zV1RGNlN0cmluZ0VkTlNfMThWaXNpdENvdW50QmVoYXZp
b3JFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW04c2V0VGl0bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfUzRfZAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRl
bUMxRVJLTjNXVEY2U3RyaW5nRVM0X2QKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW1DMUVSS05T
XzRLVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XworX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMx
RVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0VTN19TN18KIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW1DMUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtRDFFdgogX19aTjdXZWJDb3JlMTFKU0RP
TVdpbmRvdzZzX2luZm9FCkBAIC0xNjAsNyArMTU5LDcgQEAgX19aTjdXZWJDb3JlMTFNZW1vcnlD
YWNoZTExc2V0RGlzYWJsZWRFYgogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTEzZ2V0U3RhdGlz
dGljc0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNzZXRDYXBhY2l0aWVzRWpqagogX19a
TjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0ZXZpY3RSZXNvdXJjZXNFdgotX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTExTWVt
b3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTExTWVtb3J5
Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RQogX19aTjdX
ZWJDb3JlMTFNZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhDYWNoZUVSTjNXVEY3SGFzaFNldElO
UzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNfMThTZWN1cml0eU9yaWdpbkhhc2hF
TlMxXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjVyZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQpAQCAtMTY4LDggKzE2
Nyw4IEBAIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyMXNob3VsZFByaW50RXhjZXB0aW9uc0V2
CiBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91bGRQcmludEV4Y2VwdGlvbnNFYgog
X19aTjdXZWJDb3JlMTFTUUxSZXN1bHRPa0UKIF9fWk43V2ViQ29yZTExVVJMV2l0aERhdGFFUDZO
U0RhdGFQNU5TVVJMCi1fX1pON1dlYkNvcmUxMWdldFVSTEJ5dGVzRVBLN19fQ0ZVUkxSTjNXVEY3
Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNFUEs3X19DRlVSTFJOM1dURjZWZWN0
b3JJY0xtNTEyRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTFnZXRVUkxC
eXRlc0VQSzdfX0NGVVJMUk4zV1RGN0NTdHJpbmdFCiBfX1pON1dlYkNvcmUxMWlCZWFtQ3Vyc29y
RXYKIF9fWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdgogX19aTjdXZWJDb3JlMTFzdGFydE9mTGlu
ZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQpAQCAtMjM0LDcgKzIzMyw3IEBAIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJVVEY4RW5jb2RpbmdFdgogX19aTjdX
ZWJDb3JlMTJjYWNoZVN0b3JhZ2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU181
UmFuZ2VFUE4zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VF
RU5TXzIzRUFubm90YXRlRm9ySW50ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43
V2ViQ29yZTEyZGVsZXRlQ29va2llRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180
S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEyZGVsZXRlQ29va2llRVJLTlNfMjFO
ZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTJnY0NvbnRyb2xsZXJFdgogX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VFdgogX19aTjdX
ZWJDb3JlMTNBWE9iamVjdENhY2hlMTByb290T2JqZWN0RXYKQEAgLTI2MSw2ICsyNjAsNyBAQCBf
X1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOHNldEJhY2tncm91bmRDb2xvckVSS05TXzVDb2xv
ckUKIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjIwc2V0UmVwbGljYXRlZEJ5TGF5ZXJFUFMw
XwogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyNTRub3RlRGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkSW5jbHVkaW5nRGVzY2VuZGFudHNFdgogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xh
eWVyNmNyZWF0ZUVQTlNfMjBHcmFwaGljc0xheWVyRmFjdG9yeUVQTlNfMTlHcmFwaGljc0xheWVy
Q2xpZW50RQorX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyN3NldFNpemVFUktOU185RmxvYXRT
aXplRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyOGFkZENoaWxkRVBTMF8KIF9fWk43V2Vi
Q29yZTEzR3JhcGhpY3NMYXllckMyRVBOU18xOUdyYXBoaWNzTGF5ZXJDbGllbnRFCiBfX1pON1dl
YkNvcmUxM0dyYXBoaWNzTGF5ZXJEMkV2CkBAIC0yODIsMTEgKzI4MiwxMyBAQCBfX1pON1dlYkNv
cmUxM1F1YWxpZmllZE5hbWVEMUV2CiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQN05T
RXJyb3IKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA5X19DRkVycm9yCiBfX1pON1dl
YkNvcmUxM1NRTFJlc3VsdERvbmVFCitfX1pON1dlYkNvcmUxM1NjcmlwdEdDRXZlbnQxMWdldEhl
YXBTaXplRVJOU184SGVhcEluZm9FCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnQyMnNldElu
bGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERVJLTjNXVEY2U3RyaW5nRWIKIF9f
Wk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIyc2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NT
U1Byb3BlcnR5SURFZE5TXzE3Q1NTUHJpbWl0aXZlVmFsdWU5VW5pdFR5cGVzRWIKLV9fWk43V2Vi
Q29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtV
UkxFUzVfCitfX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01FUktOU18yMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNv
cmUxM2RpcmVjdG9yeU5hbWVFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxM2dldFJhd0Nv
b2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfUk4zV1RGNlZl
Y3RvcklOU182Q29va2llRUxtMEVOUzZfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29y
ZTEzbGlzdERpcmVjdG9yeUVSS04zV1RGNlN0cmluZ0VTM18KIF9fWk43V2ViQ29yZTEzcG9pbnRl
ckN1cnNvckV2CiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKQEAg
LTM5MCwxMCArMzkyLDkgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxiYXJUaGVtZTV0aGVtZUV2CiBf
X1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9tU3RyaW5nRVJLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllckVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTjNXVEY2U3RyaW5nRVM0X2kKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3Jl
YXRlRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05T
XzNVUkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzZXRMb2NhbExvYWRQb2xpY3lF
TlMwXzE1TG9jYWxMb2FkUG9saWN5RQotX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTE4c2hv
dWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUx
NFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVhZGVyRU5TXzE0UmVmZXJyZXJQb2xp
Y3lFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xp
Y3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZlcnJlclBvbGljeUVSS05TXzNVUkxF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjdyZXNldE9yaWdp
bkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTI5YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3VyaXR5T3JpZ2luRVJLTjNXVEY2U3Ry
aW5nRVM3X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdpbkVSS04zV1RGNlN0cmluZ0VTN19i
CkBAIC00MDUsNyArNDA2LDcgQEAgX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjMyc3luY0Zp
bGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tl
cjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdpbkVF
RUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNr
ZXI3dHJhY2tlckV2CiBfX1pON1dlYkNvcmUxNFN1YmZyYW1lTG9hZGVyMTJhbGxvd1BsdWdpbnNF
TlNfMjhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zRQotX19aTjdXZWJDb3JlMTRjb29raWVz
RW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCitfX1pO
N1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U18zVVJMRVM1XwogX19aTjdXZWJDb3JlMTRkZWNvZGVIb3N0TmFtZUVQOE5TU3RyaW5nCiBfX1pO
N1dlYkNvcmUxNGVuY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcKIF9fWk43V2ViQ29yZTE0ZW5kT2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18yN0VkaXRpbmdCb3VuZGFyeUNyb3Nz
aW5nUnVsZUUKQEAgLTQxNyw3ICs0MTgsMjMgQEAgX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zv
cm04bXVsdGlwbHlFUktTMF8KIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXRyYW5zbGF0
ZUVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1DMUVkZGRkZGQKIF9fWk43V2ViQ29y
ZTE1QWZmaW5lVHJhbnNmb3JtQzFFdgotX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3Jl
YXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU180S1VSTEVSS05T
MV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQorX19aTjdXZWJDb3JlMTVB
cmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVmZmVy
RUVFUktOU18zVVJMRVJLTlMxXzZTdHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VF
CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5
SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTBzZXRFbmFibGVkRWIKK19fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CitfX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1FdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxMXNldENhcGFjaXR5RWkKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTJjb250YWlu
c0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDE3
YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5
SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19fWk43V2ViQ29yZTE1QmFja0Zv
cndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0
cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Y2xvc2VkRXYKK19fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0NmdvQmFja0V2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDdlbmFibGVkRXYK
K19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VudHJpZXNFdgorX19aTjdXZWJDb3JlMTVC
YWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q4
Y2FwYWNpdHlFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q5Z29Gb3J3YXJkRXYKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQYWdlRQogX19aTjdXZWJDb3JlMTVE
T01XcmFwcGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19aTjdXZWJDb3JlMTVET01XcmFwcGVy
V29ybGREMUV2CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjEwaW5pdGlhbGl6ZUVSS04z
V1RGNlN0cmluZ0UKQEAgLTQzNSw5ICs0NTIsOSBAQCBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFu
YWdlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaQog
X19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI4c2V0UXVvdGFFUE5TXzE0U2VjdXJpdHlPcmln
aW5FeQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI5c2V0Q2xpZW50RVBOU18yMURhdGFi
YXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTBzZXRGb2N1
c2VkRWIKLV9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTdzZXRGb2N1c2VkRWxlbWVudEVQ
TlNfN0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFTlNfMTRGb2N1c0RpcmVj
dGlvbkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTVzZXRGb2N1c2VkRnJhbWVFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dlYkNvcmUxNUZvY3VzQ29udHJvbGxl
cjE1c2V0SW5pdGlhbEZvY3VzRU5TXzE0Rm9jdXNEaXJlY3Rpb25FUE5TXzEzS2V5Ym9hcmRFdmVu
dEUKK19fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTdzZXRGb2N1c2VkRWxlbWVudEVQTlNf
N0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFTlNfMTRGb2N1c0RpcmVjdGlv
bkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMjhzZXRDb250YWluaW5nV2luZG93SXNW
aXNpYmxlRWIKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyOXNldEFjdGl2ZUViCiBfX1pO
N1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEwc3Ryb2tlUmVjdEVSS05TXzlGbG9hdFJlY3RFZgpA
QCAtNDk3LDcgKzUxNCw3IEBAIF9fWk43V2ViQ29yZTE1U3RyaW5nVHJ1bmNhdG9yNXdpZHRoRVJL
TjNXVEY2U3RyaW5nRVJLTlNfNEZvbnRFTlMwXzI0RW5hYmxlUm91bmRpCiBfX1pON1dlYkNvcmUx
NVZpc2libGVQb3NpdGlvbkMxRVJLTlNfOFBvc2l0aW9uRU5TXzlFQWZmaW5pdHlFCiBfX1pON1dl
YkNvcmUxNWRlZmF1bHRMYW5ndWFnZUV2CiBfX1pON1dlYkNvcmUxNWxvY2FsaXplZFN0cmluZ0VQ
S2MKLV9fWk43V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJLTlNfNEtVUkxFCitfX1pON1dlYkNv
cmUxNW1pbWVUeXBlRnJvbVVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUxNW9yaWdpbmFsVVJM
RGF0YUVQNU5TVVJMCiBfX1pON1dlYkNvcmUxNXBhdGhHZXRGaWxlTmFtZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTE1cmVwb3J0RXhjZXB0aW9uRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdK
U1ZhbHVlRVBOU18xMkNhY2hlZFNjcmlwdEUKQEAgLTUwNyw3ICs1MjQsNyBAQCBfX1pON1dlYkNv
cmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdl
Rm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlv
bkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKLV9fWk43
V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9jdW1lbnRFUktOU180S1VSTEVSS04z
V1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9jdW1l
bnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZEYXRhYmFzZVN0cmF0
ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGEx
MkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRh
dGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCkBAIC01OTMsNyArNjEwLDcgQEAgX19aTjdX
ZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5TXzVGcmFtZUVQTlNfMTRDYWNoZWRS
ZXNvdXJjZUVSS05TXzE1UmUKIF9fWk43V2ViQ29yZTE3Y2FjaGVET01TdHJ1Y3R1cmVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQS05TMl85Q2xhc3NJbmZvRQogX19a
TjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3Jh
cnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCi1fX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9N
RVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV9SS04zV1RGNlN0cmlu
Z0UKK19fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbkVSS05TXzNVUkxFUzVfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxN3VzZXJW
aXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFF
UE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3Jt
UGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CkBAIC02MTYsNDAgKzYzMywyMiBAQCBfX1pON1dlYkNv
cmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKIF9fWk43V2ViQ29yZTE4aXNTdGFydE9mUGFyYWdy
YXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1
bGVFCiBfX1pON1dlYkNvcmUxOG1ha2VBbGxEaXJlY3Rvcmllc0VSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEzSlNI
VE1MRWxlbWVudEUKLV9fWk43V2ViQ29yZTE4cHJveHlTZXJ2ZXJzRm9yVVJMRVJLTlNfNEtVUkxF
UEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQotX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJv
bGxlcjExaXNTdXNwZW5kZWRFdgorX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNGb3JVUkxFUktO
U18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9u
Q29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNv
bnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29u
dHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNl
VHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOM1dURjZTdHJpbmdFZAogX19a
TjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hp
bGVTdXNwZW5kZWRFYgotX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjMzYWxsb3dz
TmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0MTByZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3QxMHNldEVuYWJsZWRFYgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWN1
cnJlbnRJdGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFmb3J3YXJkSXRlbUV2
Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExc2V0Q2FwYWNpdHlFaQotX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3QxMmNvbnRhaW5zSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKLV9f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVy
Zmxvd0VFRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExp
bWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9z
ZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKLV9fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJsZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3Q3ZW50cmllc0V2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhiYWNrSXRlbUV2Ci1f
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhjYXBhY2l0eUV2Ci1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3RD
MUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUxOUhUTUxUZXh0QXJlYUVsZW1lbnQ4c2V0VmFsdWVF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXIxMGludmFs
aWRhdGVFdgorX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyMjNydW5Mb29wT2JzZXJ2
ZXJDYWxsYmFja0V2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXI2cmVzdW1lRXYK
IF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjdzdXNwZW5kRXYKIF9fWk43V2ViQ29y
ZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjhzY2hlZHVsZUV2CitfX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50RQogX19aTjdXZWJD
b3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzJFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVu
dEUKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckQxRXYKIF9fWk43V2ViQ29yZTE5
TGF5ZXJGbHVzaFNjaGVkdWxlckQyRXYKLV9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxl
cjIzcnVuTG9vcE9ic2VydmVyQ2FsbGJhY2tFdgotX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyQzFFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9fWk43V2ViQ29yZTE5
UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0SFRUUEJvZHlFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOEZv
cm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxM3NldEhUVFBNZXRo
b2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxOHNl
dEhUVFBIZWFkZXJGaWVsZEVQS2NSS04zV1RGNlN0cmluZ0UKQEAgLTY1OCw3ICs2NTcsNyBAQCBf
X1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMmRlZmF1bHRUaW1lb3V0SW50ZXJ2YWxF
dgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMjRzX2RlZmF1bHRUaW1lb3V0SW50
ZXJ2YWxFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyNXNldERlZmF1bHRUaW1l
b3V0SW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlNTBzZXRSZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheUVSS04zV1RGNlN0cmlu
Z0VTNF9TNF8KLV9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTZzZXRVUkxFUktOU180
S1VSTEUKK19fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTZzZXRVUkxFUktOU18zVVJM
RQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyNWZsdXNoRXYKIF9fWk43V2ViQ29y
ZTE5VGV4dFJlc291cmNlRGVjb2RlcjZkZWNvZGVFUEtjbQogX19aTjdXZWJDb3JlMTlUZXh0UmVz
b3VyY2VEZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18xMlRleHRFbmNvZGluZ0ViCkBAIC02
NzIsNyArNjcxLDYgQEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9f
Wk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QyOXNldFBsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uRQogX19aTjdXZWJDb3JlMjBS
ZW5kZXJFbWJlZGRlZE9iamVjdDM3c2V0VW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc0hpZGRl
bkViCiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0NDRzZXRQbHVnaW5VbmF2YWls
YWJpbGl0eVJlYXNvbldpdGhEZXNjcmlwdGlvbkVOUzBfMjZQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbkVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2JqZWN0
MjFpc1JlcGxhY2VtZW50T2JzY3VyZWRFdgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNs
aWVudDE2ZGlkUmVjZWl2ZUJ1ZmZlckVQTlNfMTRSZXNvdXJjZUhhbmRsZUVOM1dURjEwUGFzc1Jl
ZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRWkKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVD
bGllbnQyMHdpbGxTZW5kUmVxdWVzdEFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVJLTlNfMTVS
ZXNvdXJjZVJlcXVlc3RFUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUyMFJl
c291cmNlSGFuZGxlQ2xpZW50MjJ3aWxsQ2FjaGVSZXNwb25zZUFzeW5jRVBOU18xNFJlc291cmNl
SGFuZGxlRVAxOU5TQ2FjaGVkVVJMUmVzcG9uc2UKQEAgLTY4OCw5ICs2ODYsOCBAQCBfX1pON1dl
YkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMThzZXRIVFRQSGVhZGVyRmllbGRFUktOM1dURjEy
QXRvbWljU3RyaW5nRVJLTgogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE5c2V0
VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1lRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoRXgK
LV9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2c2V0VVJMRVJLTlNfNEtVUkxFCitf
X1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNnNldFVSTEVSS05TXzNVUkxFCiBfX1pO
N1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJFdgotX19aTjdXZWJDb3JlMjBSZXNvdXJj
ZVJlc3BvbnNlQmFzZUMyRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFeFM3X1M3XwogX19aTjdX
ZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRlRQogX19aTjdXZWJDb3JlMjBVc2Vy
R2VzdHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGVFCiBfX1pO
N1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpAQCAtNzExLDcgKzcwOCw2IEBAIF9f
Wk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjFyZXN1bWVQZW5kaW5nUmVxdWVzdHNF
dgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMnN1c3BlbmRQZW5kaW5nUmVx
dWVzdHNFdgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyM3NjaGVkdWxlU3Vi
cmVzb3VyY2VMb2FkRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVkUmVzb3VyY2VFUktOU18xNVJlc291
cmNlUmVxdWVzdEVOU18yMFJlc291cmNlTG9hZFByaW9yaXR5RVJLTlNfMjFSZXNvdXJjZUxvYWRl
ck9wdGlvbnNFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjI0c2NoZWR1bGVQ
bHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKLV9fWk43V2ViQ29yZTIxUmVzb3VyY2VM
b2FkU2NoZWR1bGVyMjdjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWRFUE5TXzE0UmVzb3VyY2VM
b2FkZXJFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMzJu
b3RpZnlEaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9f
Wk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyNnJlbW92ZUVQTlNfMTRSZXNvdXJjZUxv
YWRlckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyQzJFdgpAQCAtODAzLDEz
ICs3OTksMTMgQEAgX19aTjdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2VDMkV2
CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3JpZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrQzFFdgotX19aTjdXZWJDb3JlMjdwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWxFUktOU180S1VSTEVTMl8KK19fWk43V2ViQ29yZTI3cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsRVJLTlNfM1VSTEVTMl8KIF9fWk43V2ViQ29yZTI3c3RhcnRPYnNlcnZpbmdDb29raWVDaGFu
Z2VzRVBGdnZFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24xMmFk
ZFVzZXJTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQog
X19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVl
dEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJD
b3JlMjhlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2Ci1fX1pON1dlYkNvcmUyOWNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25F
UktOU180S1VSTEVTNV8KK19fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNv
cmUyOWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0RWliCiBfX1pON1dlYkNvcmUzMGhvc3RO
YW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNv
cmUzMGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZUVQOE5TU3RyaW5nOF9OU1JhbmdlCkBA
IC04MTksNiArODE1LDExIEBAIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1
bHRDYWNoZTZzaGFyZWRFdgogX19aTjdXZWJDb3JlMzNzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzN1dpZGdldEhpZXJhcmNoeVVw
ZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1vdmVXaWRnZXRzRXYKIF9fWk43V2ViQ29yZTM3V2lkZ2V0
SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTM1c193aWRnZXRIaWVyYXJjaHlVcGRhdGVT
dXNwZW5kQ291bnRFCitfX1pON1dlYkNvcmUzVVJMMTBpbnZhbGlkYXRlRXYKK19fWk43V2ViQ29y
ZTNVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0cmluZ0UKK19fWk43V2Vi
Q29yZTNVUkxDMUVQNU5TVVJMCitfX1pON1dlYkNvcmUzVVJMQzFFUEs3X19DRlVSTAorX19aTjdX
ZWJDb3JlM1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUzbWFjRVJLTlNf
MTBDcmVkZW50aWFsRQogX19aTjdXZWJDb3JlM21hY0VSS05TXzIzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VFCiBfX1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9y
dFNpemVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJbnRTaXplRWYKQEAgLTgzMywxMSAr
ODM0LDYgQEAgX19aTjdXZWJDb3JlNEZvbnRDMUV2CiBfX1pON1dlYkNvcmU0Rm9udGFTRVJLUzBf
CiBfX1pON1dlYkNvcmU0SWNvbjE4Y3JlYXRlSWNvbkZvckZpbGVzRVJLTjNXVEY2VmVjdG9ySU5T
MV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTRJY29u
RDFFdgotX19aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVFdgotX19aTjdXZWJDb3JlNEtVUkxD
MUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTRL
VVJMQzFFUDVOU1VSTAotX19aTjdXZWJDb3JlNEtVUkxDMUVQSzdfX0NGVVJMCi1fX1pON1dlYkNv
cmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0Tm9kZTEwcmVuZGVy
UmVjdEVQYgogX19aTjdXZWJDb3JlNE5vZGUxMWFwcGVuZENoaWxkRU4zV1RGMTBQYXNzUmVmUHRy
SVMwX0VFUmlOU18xNEF0dGFjaEJlaGF2aW9yRQogX19aTjdXZWJDb3JlNE5vZGUxMXJlbW92ZUNo
aWxkRVBTMF9SaQpAQCAtMTA0MSwyMiArMTAzNywyMyBAQCBfX1pON1dlYkNvcmU3UnVuTG9vcDlU
aW1lckJhc2VEMkV2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjE5YWxsb3dzUm91bmRpbmdIYWNrc0V2
CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxvd3NSb3VuZGluZ0hhY2tzRQogX19aTjdXZWJD
b3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5nSGFja3NFYgotX19aTjdXZWJDb3JlN2Nvb2tp
ZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTdjb29raWVzRVBLTlNf
OERvY3VtZW50RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTdqc0FycmF5RVBOM0pTQzlFeGVjU3Rh
dGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTNET01TdHJp
bmdMaXN0RUVFCiBfX1pON1dlYkNvcmU3bWFrZVJHQkVpaWkKIF9fWk43V2ViQ29yZTdyZXBsYWNl
RVJOM1dURjZTdHJpbmdFUktOU18xN1JlZ3VsYXJFeHByZXNzaW9uRVJLUzFfCiBfX1pON1dlYkNv
cmU3dG9JbnQ2NEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOU18zMEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbkUKIF9fWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pTVmFsdWVF
CiBfX1pON1dlYkNvcmU3dG9VSW50OEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVOU18z
MEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkUKK19fWk43V2ViQ29yZThCbG9iRGF0YTEw
YXBwZW5kQmxvYkVSS05TXzNVUkxFeHgKIF9fWk43V2ViQ29yZThCbG9iRGF0YTE0c2V0Q29udGVu
dFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4Q1NTVmFsdWU3ZGVzdHJveUV2CiBf
X1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43V2ViQ29yZThEb2N1bWVu
dDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzY3JlYXRlRWxlbWVudEVS
S05TXzEzUXVhbGlmaWVkTmFtZUViCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNGNyZWF0ZVRleHRO
b2RlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlOERvY3VtZW50MTdzZXRGb2N1c2VkRWxl
bWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVFRU5TXzE0Rm9jdXNEaXJlY3Rpb25F
CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNmlzUGFnZUJveFZpc2libGVFaQogX19aTjdXZWJDb3Jl
OERvY3VtZW50MTZzaG9ydGN1dEljb25VUkxzRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDE3c2V0
Rm9jdXNlZEVsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfN0VsZW1lbnRFRUVOU18xNEZvY3Vz
RGlyZWN0aW9uRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjBzdHlsZVJlc29sdmVyQ2hhbmdlZEVO
U18yM1N0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJjcmVh
dGVEb2N1bWVudEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDIzZGlkQWRkV2hlZWxF
dmVudEhhbmRsZXJFdgpAQCAtMTA3NSw4ICsxMDcyLDExIEBAIF9fWk43V2ViQ29yZThGb3JtRGF0
YTZkZWNvZGVFUk4zV1RGN0RlY29kZXJFCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBfX1pO
N1dlYkNvcmU4R3JhZGllbnQxMmFkZENvbG9yU3RvcEVmUktOU181Q29sb3JFCiBfX1pON1dlYkNv
cmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18KK19fWk43V2ViQ29yZThHcmFkaWVu
dEQxRXYKIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFaU5TMF8xMEFuY2hvclR5cGVFCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxM2dRVEtpdEVuYWJs
ZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKK19fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0
SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKQEAgLTExMDQsNyAr
MTEwNCw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxl
RWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzRWIKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI1c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFByaXZhdGVCcm93c2luZ0VuYWJsZWRFYgotX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjVzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uRVJLTlNfNEtVUkxFCitfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU18zVVJMRQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyN3NldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlc0ViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyN3NldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUViCkBAIC0xMTQyLDcgKzEx
NDIsNiBAQCBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjlwdXJnZUluYWN0aXZlRm9udERhdGFJZk5l
ZWRlZEV2CiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlMTFhcHBlbmRDaGlsZEVOM1dURjEwUGFzc1Jl
ZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTlGcmFtZVRyZWU3c2V0TmFtZUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlOWNsZWFyTmFtZUV2Ci1fX1pO
N1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVSTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzExZm9yY2VMYXlvdXRFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEyc2V0TWVkaWFUeXBl
RVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEydGlsZWRCYWNraW5nRXYK
QEAgLTExNjIsMTIgKzExNjEsMTIgQEAgX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3c2V0VHJhY2tz
UmVwYWludHNFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3d2lsbEVuZExpdmVSZXNpemVFdgog
X19aTjdXZWJDb3JlOUZyYW1lVmlldzE4ZW5hYmxlQXV0b1NpemVNb2RlRWJSS05TXzdJbnRTaXpl
RVMzXwogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRlQ29udHJvbFRpbnRzRXYKLV9fWk43
V2ViQ29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEUK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKK19fWk43V2Vi
Q29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwcmVt
b3ZlU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFyZWFFCiBfX1pON1dlYkNvcmU5RnJh
bWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50c0V2CitfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBz
ZXRDYW5IYXZlU2Nyb2xsYmFyc0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjFmbHVzaERlZmVy
cmVkUmVwYWludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIxcmVzdW1lQW5pbWF0aW5nSW1h
Z2VzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJhc2VCYWNrZ3JvdW5kQ29sb3JFUktO
U181Q29sb3JFCkBAIC0xMTc3LDEzICsxMTc2LDE0IEBAIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcy
NHBhaW50Q29udGVudHNGb3JTbmFwc2hvdEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183SW50
CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjRzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3JFTlNfMjFT
Y3JvbGxQaW5uaW5nQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjZhZGp1c3RQYWdl
SGVpZ2h0RGVwcmVjYXRlZEVQZmZmZgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI2YWRqdXN0VGls
ZWRCYWNraW5nQ292ZXJhZ2VFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBk
YXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0QXV0b1NpemVG
aXhlZE1pbmltdW1IZWlnaHRFaQorX19aTjdXZWJDb3JlOUZyYW1lVmlldzI5c2V0U2hvdWxkVXBk
YXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzMxc2V0VmlzdWFsVXBk
YXRlc0FsbG93ZWRCeUNsaWVudEViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MzdzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczN3Vw
ZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVFdgogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzM4c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRFdgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzM5Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzRXYK
K19fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181RnJhbWVFCiBfX1pON1dlYkNvcmU5
SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczExdGV4dGFyZWFU
YWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTJzZWxlY3RlZEF0dHJFCkBAIC0xMjUzLDE0ICsx
MjUzLDE0IEBAIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxNnN5bmNMb2NhbFN0b3JhZ2VFdgogX19a
TjdXZWJDb3JlOVBhZ2VHcm91cDE3Y2xvc2VMb2NhbFN0b3JhZ2VFdgogX19aTjdXZWJDb3JlOVBh
Z2VHcm91cDE4YWRkVmlzaXRlZExpbmtIYXNoRXkKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxOG51
bWJlck9mUGFnZUdyb3Vwc0V2Ci1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBhZGRVc2VyU2NyaXB0
VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEVS
S05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKK19fWk43
V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJX
b3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNfNlZlY3RvcklTNF9MbTBFTlMzXzE1
Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjNVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUVOU18yNVVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjByZW1vdmVB
bGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjFyZW1vdmVBbGxWaXNpdGVk
TGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI0YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
RVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzRLVVJMRVJLTlMzXzZW
ZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVNFX05TXzI1VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHlsZUxldmVsRU5TXzIyVXNlclN0eWxlSW5qZWN0aW9u
VGltZUUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGRF
UE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MjRhZGRVc2VyU3R5bGVTaGVldFRvV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTjNXVEY2
U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZs
b3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZl
bEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCitfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjVy
ZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzNVUkxF
CiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZyZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZEVQTlNf
MTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rc0ViCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjlyZW1vdmVVc2VyU3R5bGVT
aGVldEZyb21Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOU180S1VSTEUKK19fWk43V2Vi
Q29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkRVBOU18xNURPTVdy
YXBwZXJXb3JsZEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMzBjbG9zZUlkbGVM
b2NhbFN0b3JhZ2VEYXRhYmFzZXNFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDMwcmVtb3ZlVXNl
clN0eWxlU2hlZXRzRnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29y
ZTlQYWdlR3JvdXA5cGFnZUdyb3VwRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTI4Niw3ICsxMjg2LDYg
QEAgX19aTjdXZWJDb3JlOXBhZ2VDYWNoZUV2CiBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNf
NVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFYgogX19aTjdXZWJDb3JlOXRvRWxlbWVu
dEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOXVuaW9uUmVjdEVSS04zV1RGNlZlY3RvcklO
U185RmxvYXRSZWN0RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTEz
U2NyaXB0R0NFdmVudDExZ2V0SGVhcFNpemVFUk5TXzhIZWFwSW5mb0UKIF9fWk5LM0pTQzhCaW5k
aW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9fWk5LM1dURjZTdHJpbmcxNGNyZWF0
ZUNGU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRpYWwxMWhhc1Bhc3N3b3JkRXYKQEAg
LTEzMTUsOCArMTMxNCw2IEBAIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOGNvbnRlbnRzVG9S
b290Vmlld0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXcxOHZpc2li
bGVDb250ZW50UmVjdEVOU18xNFNjcm9sbGFibGVBcmVhMzZWaXNpYmxlQ29udGVudFJlY3RJbmNs
dWRlc1Njcm9sbGJhcnNFCiBfX1pOSzdXZWJDb3JlMTBTY3JvbGxWaWV3MjNyb290Vmlld1RvVG90
YWxDb250ZW50c0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmUxMFNjcm9sbFZpZXczMHNj
cm9sbE9mZnNldFJlbGF0aXZlVG9Eb2N1bWVudEV2Ci1fX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0
aGlkZUV2Ci1fX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hvd0V2CiBfX1pOSzdXZWJDb3JlMTBT
dG9yYWdlTWFwNmxlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdlTWFwN2dldEl0ZW1FUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdlTWFwOGNvbnRhaW5zRVJLTjNXVEY2
U3RyaW5nRQpAQCAtMTM3Myw3ICsxMzcwLDYgQEAgX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
NG5vZGVFdgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNXJhbmdlRXYKIF9fWk5LN1dlYkNv
cmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYKIF9fWk5LN1dlYkNvcmUxM0NvbnRh
aW5lck5vZGU5Y2hpbGROb2RlRWoKLV9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjdzZXRTaXpl
RVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk5LN1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOGFjY3VtdWxh
dGVkT3BhY2l0eUV2CiBfX1pOSzdXZWJDb3JlMTNHcmFwaGljc0xheWVyMThnZXREZWJ1Z0JvcmRl
ckluZm9FUk5TXzVDb2xvckVSZgogX19aTks3V2ViQ29yZTEzR3JhcGhpY3NMYXllcjI2YmFja2lu
Z1N0b3JlTWVtb3J5RXN0aW1hdGVFdgpAQCAtMTQwNiw3ICsxNDAyLDcgQEAgX19aTks3V2ViQ29y
ZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9h
ZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxv
YWRlckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExcmVzcG9uc2VVUkxFdgotX19a
Tks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMXN1YnJlc291cmNlRVJLTlNfNEtVUkxFCitfX1pO
SzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3VyY2VFUktOU18zVVJMRQogX19aTks3
V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMm1haW5SZXNvdXJjZUV2CiBfX1pOSzdXZWJDb3JlMTRE
b2N1bWVudExvYWRlcjEzdXJsRm9ySGlzdG9yeUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjE0dW5yZWFjaGFibGVVUkxFdgpAQCAtMTQxNyw3ICsxNDEzLDYgQEAgX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIxN3BhcnNlZEFyY2hpdmVEYXRhRXYKIF9fWk5LN1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyMThtYWluUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZTE0RG9jdW1l
bnRMb2FkZXIxOWlzTG9hZGluZ0luQVBJU2Vuc2VFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRM
b2FkZXIxOW9yaWdpbmFsUmVxdWVzdENvcHlFdgotX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2Fk
ZXIyMWFyY2hpdmVSZXNvdXJjZUZvclVSTEVSS05TXzRLVVJMRQogX19aTks3V2ViQ29yZTE0RG9j
dW1lbnRMb2FkZXIyOHVybEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmVFdgogX19aTks3V2ViQ29y
ZTE0RG9jdW1lbnRMb2FkZXIzdXJsRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyOWlz
TG9hZGluZ0V2CkBAIC0xNDMwLDYgKzE0MjUsNyBAQCBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVj
dGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xlc0VSTjNXVEY2VmVjdG9ySU5TXwog
X19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RFZGl0YWJsZUVsZW1lbnRPckRvY3Vt
ZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZib3VuZHNFYgogX19a
Tks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVFdgorX19aTks3V2ViQ29yZTE0SW5z
cGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRl
bTEwbWFya2VyVGV4dEV2CiBfX1pOSzdXZWJDb3JlMTRSZXNvdXJjZUJ1ZmZlcjRkYXRhRXYKIF9f
Wk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVFdgpAQCAtMTQ0Myw3ICsxNDM5LDcgQEAg
X19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMW1vdXNlRW50ZXJlZFNjcm9sbGJhckVQTlNf
OVNjcm9sbGJhckUKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjJtb3VzZUV4aXRlZENv
bnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjNtb3VzZUVudGVyZWRD
b250ZW50QXJlYUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTIzbW91c2VNb3ZlZElu
Q29udGVudEFyZWFFdgotX19aTks3V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4xMGNhbkRpc3BsYXlF
UktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTBjYW5EaXNwbGF5RVJL
TlNfM1VSTEUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTF0b1Jhd1N0cmluZ0V2CiBf
X1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk5LN1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMTZjYW5BY2Nlc3NTdG9yYWdlRVBLUzBfTlMwXzI1U2hvdWxkQWxs
b3dGcm9tVGhpcmRQYXJ0eUUKQEAgLTE1MDMsMTAgKzE0OTksMTEgQEAgX19aTks3V2ViQ29yZTE3
UmVzb3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTks3V2ViQ29yZTE4UGxhdGZvcm1QYXN0
ZWJvYXJkMTFjaGFuZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3JlMThSZW5kZXJMYXllckJhY2tpbmcx
MWNvbnRlbnRzQm94RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRlckxheWVyQmFja2luZzIwY29tcG9z
aXRpbmdMYXllclR5cGVFdgorX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjExaXNT
dXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjI0bnVtYmVyT2ZB
Y3RpdmVBbmltYXRpb25zRVBOU184RG9jdW1lbnRFCitfX1pOSzdXZWJDb3JlMTlBbmltYXRpb25D
b250cm9sbGVyMzNhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFdgogX19aTks3V2Vi
Q29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0SGlnaGxpZ2h0RVBOU185SGlnaGxpZ2h0RQog
X19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI5YnVpbGRPYmplY3RGb3JIaWdobGln
aHRlZE5vZGVFdgotX19aTks3V2ViQ29yZTE0SW5zcGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2
CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlMTBodHRwTWV0aG9kRXYKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBIZWFkZXJGaWVsZEVQS2MKIF9fWk5L
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMGZpcnN0UGFydHlGb3JDb29raWVzRXYKQEAg
LTE1MTYsNiArMTUxMyw3IEBAIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2U3aXNF
bXB0eUV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlOGh0dHBCb2R5RXYKIF9f
Wk5LN1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMTFpc1ByZWxvYWRlZEVSS04zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmUyMEhUTUxUYWJsZUNlbGxFbGVtZW50OWNlbGxBYm92ZUV2Citf
X1pOSzdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVk
RXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMTJpc0F0dGFjaG1lbnRFdgog
X19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UxMmxhc3RNb2RpZmllZEV2CiBfX1pO
SzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE0aHR0cFN0YXR1c0NvZGVFdgpAQCAtMTUz
Myw3ICsxNTMxLDcgQEAgX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVyOWJhY2tD
b3VudEV2CiBfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tpZVN0b3Jh
Z2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxMYXllckV2
CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJMYXllckV2
Ci1fX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05TXzRLVVJM
RQorX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0ZXJuN21hdGNoZXNFUktOU18zVVJM
RQogX19aTks3V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxMW1heGltdW1TaXplRXYK
IF9fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlMjBhdXRoZW50aWNhdGlvbkNs
aWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRlclN0YXRlTWFjaGluZTE1Zmlyc3RMYXlv
dXREb25lRXYKQEAgLTE1NDcsMzMgKzE1NDUsMjkgQEAgX19aTks3V2ViQ29yZTI3QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VCYXNlMThwcm9wb3NlZENyZWRlbnRpYWxFdgogX19aTks3V2ViQ29yZTI3
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlMjBwcmV2aW91c0ZhaWx1cmVDb3VudEV2CiBfX1pO
SzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2U1ZXJyb3JFdgogX19aTks3V2Vi
Q29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlzTnVsbEV2CitfX1pOSzdXZWJDb3Jl
M1VSTDEwcHJvdG9jb2xJc0VQS2MKK19fWk5LN1dlYkNvcmUzVVJMMTFjcmVhdGVDRlVSTEV2Citf
X1pOSzdXZWJDb3JlM1VSTDExaXNMb2NhbEZpbGVFdgorX19aTks3V2ViQ29yZTNVUkwxMmJhc2VB
c1N0cmluZ0V2CitfX1pOSzdXZWJDb3JlM1VSTDE0ZmlsZVN5c3RlbVBhdGhFdgorX19aTks3V2Vi
Q29yZTNVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKK19fWk5LN1dlYkNvcmUzVVJMMThmcmFnbWVu
dElkZW50aWZpZXJFdgorX19aTks3V2ViQ29yZTNVUkwyMWhhc0ZyYWdtZW50SWRlbnRpZmllckV2
CitfX1pOSzdXZWJDb3JlM1VSTDRob3N0RXYKK19fWk5LN1dlYkNvcmUzVVJMNHBhc3NFdgorX19a
Tks3V2ViQ29yZTNVUkw0cGF0aEV2CitfX1pOSzdXZWJDb3JlM1VSTDRwb3J0RXYKK19fWk5LN1dl
YkNvcmUzVVJMNHVzZXJFdgorX19aTks3V2ViQ29yZTNVUkw1cXVlcnlFdgorX19aTks3V2ViQ29y
ZTNVUkw4cHJvdG9jb2xFdgorX19aTks3V2ViQ29yZTNVUkxjdlA1TlNVUkxFdgogX19aTks3V2Vi
Q29yZTRGb250NXdpZHRoRVJLTlNfN1RleHRSdW5FUE4zV1RGN0hhc2hTZXRJUEtOU18xNFNpbXBs
ZUZvbnREYXRhRU5TNF83UHRySGFzaElTOF9FRU5TNF8xMEhhc2hUcmFpdHNJUzhfRUVFRVBOU18x
M0dseXBoT3ZlcmZsb3dFCiBfX1pOSzdXZWJDb3JlNEZvbnQ4ZHJhd1RleHRFUE5TXzE1R3JhcGhp
Y3NDb250ZXh0RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0UG9pbnRFaWlOUzBfMjRDdXN0b21G
b250Tm90UmVhZHlBY3Rpb25FCiBfX1pOSzdXZWJDb3JlNEZvbnRlcUVSS1MwXwotX19aTks3V2Vi
Q29yZTRLVVJMMTBwcm90b2NvbElzRVBLYwotX19aTks3V2ViQ29yZTRLVVJMMTFjcmVhdGVDRlVS
TEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxMWlzTG9jYWxGaWxlRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDEyYmFzZUFzU3RyaW5nRXYKLV9fWk5LN1dlYkNvcmU0S1VSTDE0ZmlsZVN5c3RlbVBhdGhFdgot
X19aTks3V2ViQ29yZTRLVVJMMTdsYXN0UGF0aENvbXBvbmVudEV2Ci1fX1pOSzdXZWJDb3JlNEtV
UkwxOGZyYWdtZW50SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwyMWhhc0ZyYWdtZW50
SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0aG9zdEV2Ci1fX1pOSzdXZWJDb3JlNEtV
Ukw0cGFzc0V2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0cGF0aEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0
cG9ydEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0dXNlckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw1cXVl
cnlFdgotX19aTks3V2ViQ29yZTRLVVJMOHByb3RvY29sRXYKLV9fWk5LN1dlYkNvcmU0S1VSTGN2
UDVOU1VSTEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNv
cmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2VuZGFu
dE9mRVBLUzBfCi1fX1pOSzdXZWJDb3JlNE5vZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNXVEYx
MUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2RU5TXzhLVVJMSGFzaEVFRQogX19aTks3V2ViQ29y
ZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2RlRXYKLSNpZiBFTkFCTEUoU1RZTEVf
U0NPUEVEKQotX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxk
cmVuRXYKLSNlbmRpZgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CiBfX1pOSzdXZWJD
b3JlNE5vZGU5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNfN0ludFJlY3RFTG0wRU5TMV8xNUNy
YXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTRQYWdlMTBwbHVnaW5EYXRhRXYKQEAgLTE3
MjgsOSArMTcyMiwxMiBAQCBfaGFzQ2FzZUluc2Vuc2l0aXZlU3Vic3RyaW5nCiBfaGFzQ2FzZUlu
c2Vuc2l0aXZlU3VmZml4CiBfc3RyaW5nSXNDYXNlSW5zZW5zaXRpdmVFcXVhbFRvU3RyaW5nCiBf
c3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUKK193a0NBTGF5ZXJFbnVtZXJhdGVSZWN0c0Jl
aW5nRHJhd25XaXRoQmxvY2sKK193a0NGVVJMUmVxdWVzdEFsbG93QWxsUG9zdENhY2hpbmcKIF93
a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzCiBfd2tDR0NvbnRleHRJc1BERkNvbnRleHQK
IF93a0NHQ29udGV4dFJlc2V0Q2xpcAorX3drQ0dQYXRoQWRkUm91bmRlZFJlY3QKIF93a0NHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybQogX3drQ1RSdW5HZXRJbml0aWFsQWR2YW5j
ZQogX3drQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZQpAQCAtMTc0MSw2ICsxNzM4LDcg
QEAgX3drQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNoYWluCiBfd2tDb3B5TlNVUkxSZXNw
b25zZVN0YXR1c0xpbmUKIF93a0NvcHlSZXF1ZXN0V2l0aFN0b3JhZ2VTZXNzaW9uCiBfd2tDcmVh
dGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyCitfd2tDcmVhdGVDVFR5cGVzZXR0ZXJXaXRoVW5p
Q2hhclByb3ZpZGVyQW5kT3B0aW9ucwogX3drQ3JlYXRlQ3VzdG9tQ0ZSZWFkU3RyZWFtCiBfd2tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24KIF93a0RlbGV0ZUFsbEhUVFBDb29raWVzCkBAIC0x
ODY1LDkgKzE4NjMsOCBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjdtb3VzZVVwRVA3TlNF
dmVudAogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXI4a2V5RXZlbnRFUDdOU0V2ZW50CiBfX1pO
N1dlYkNvcmUxMkV2ZW50SGFuZGxlcjltb3VzZURvd25FUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUx
M3RvRGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNXaW5kb3cKLV9fWk43V2ViQ29yZTEz
Z2V0UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVf
Uk4zV1RGNlZlY3RvcklOU182Q29va2llRUxtMEVOUzZfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9f
Wk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1
R3JhcGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdDR0ltYWdlUktOU185RmxvYXRTaXpl
RU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlfTlNfMTdDb21wb3NpdGVPcGVyYXRv
ckVOU185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlvbkUKK19fWk43V2ViQ29yZTE1R3Jh
cGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0
Mzl1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHlFUktTMF8KIF9fWk43V2Vi
Q29yZTE2Rm9udFBsYXRmb3JtRGF0YUMxRVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9u
RU5TXzE2Rm9udFdpZHRoVmFyaWFudEUKIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRmb3JtRGF0YUMy
RVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9uRU5TXzE2Rm9udFdpZHRoVmFyaWFudEUK
QEAgLTE4NzYsOCArMTg3Myw4IEBAIF9fWk43V2ViQ29yZTE2ZW5jbG9zaW5nSW50UmVjdEVSSzdf
TlNSZWN0CiBfX1pON1dlYkNvcmUxOWFwcGxpY2F0aW9uSXNTYWZhcmlFdgogX19aTjdXZWJDb3Jl
MjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50RVA3TlNFdmVu
dFA2TlNWaWV3CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZlbnRGYWN0b3J5MjdjcmVhdGVQbGF0
Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50Ci1fX1pON1dlYkNvcmUyMGJ1aWx0SW5QREZQbHVn
aW5OYW1lRXYKIF9fWk43V2ViQ29yZTIwYXBwbGljYXRpb25Jc0hSQmxvY2tFdgorX19aTjdXZWJD
b3JlMjBidWlsdEluUERGUGx1Z2luTmFtZUV2CiBfX1pON1dlYkNvcmUyMURldmljZU9yaWVudGF0
aW9uRGF0YTZjcmVhdGVFYmRiZGJkYmIKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc0FwZXJ0
dXJlRXYKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc1ZlcnNpb25zRXYKQEAgLTE5MjQsOCAr
MTkyMSw4IEBAIF9fWk43V2ViQ29yZTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZ0V2
CiBfX1pON1dlYkNvcmUzMmFwcGxpY2F0aW9uSXNBT0xJbnN0YW50TWVzc2VuZ2VyRXYKIF9fWk43
V2ViQ29yZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnRFdgogX19aTjdXZWJDb3Jl
MzJjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2Ci1fX1pON1dlYkNvcmUzM3Bvc3RT
Y3JpcHREb2N1bWVudFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pON1dlYkNvcmUzM2NvbnRleHRNZW51
SXRlbVRhZ1RleHRSZXBsYWNlbWVudEV2CitfX1pON1dlYkNvcmUzM3Bvc3RTY3JpcHREb2N1bWVu
dFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pON1dlYkNvcmUzM3NldERlZmF1bHRUaHJlYWRWaW9sYXRp
b25CZWhhdmlvckVOU18yM1RocmVhZFZpb2xhdGlvbkJlaGF2aW9yRU5TXzIwVGhyZWFkVmlvbGF0
aW9uUm91bmRFCiBfX1pON1dlYkNvcmUzNGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rp
b25FdgogX19aTjdXZWJDb3JlMzVjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbEVi
CkBAIC0xOTUxLDggKzE5NDgsOCBAQCBfX1pON1dlYkNvcmU2RWRpdG9yMjhzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkRXYKIF9fWk43V2ViQ29yZTZXaWRnZXQxN3NldFBsYXRmb3JtV2lkZ2V0
RVA2TlNWaWV3CiBfX1pON1dlYkNvcmU2V2lkZ2V0QzJFUDZOU1ZpZXcKIF9fWk43V2ViQ29yZTdu
c0NvbG9yRVJLTlNfNUNvbG9yRQotX19aTjdXZWJDb3JlOEludFBvaW50QzFFUks4X05TUG9pbnQK
IF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLN0NHUG9pbnQKK19fWk43V2ViQ29yZThJbnRQb2lu
dEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUks3X05TUmVjdAogX19a
Tks3V2ViQ29yZTEwRmxvYXRQb2ludGN2OF9OU1BvaW50RXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9s
bGFibGVBcmVhMTh2aXNpYmxlQ29udGVudFJlY3RFTlMwXzM2VmlzaWJsZUNvbnRlbnRSZWN0SW5j
bHVkZXNTY3JvbGxiYXJzRQpAQCAtMTk2MiwxMCArMTk1OSwxMiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFNpemVjdjZDR1NpemVFdgogX19aTks3V2ViQ29yZThJbnRQb2ludGN2OF9OU1BvaW50RXYKIF9f
Wk5LN1dlYkNvcmU5RmxvYXRSZWN0Y3Y3X05TUmVjdEV2CiBfc3RyaW5nRW5jb2RpbmdGb3JSZXNv
dXJjZQorX3drQVZBc3NldFJlc29sdmVkVVJMCiBfd2tBY2Nlc3NpYmlsaXR5SGFuZGxlRm9jdXND
aGFuZ2VkCiBfd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNlQW5pbWF0aW9uCiBfd2tDb3B5QVhU
ZXh0TWFya2VyUmFuZ2VFbmQKIF93a0NvcHlBWFRleHRNYXJrZXJSYW5nZVN0YXJ0Citfd2tDb3B5
RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUKIF93a0NyZWF0ZUFYVGV4dE1hcmtlcgog
X3drQ3JlYXRlQVhUZXh0TWFya2VyUmFuZ2UKIF93a0NyZWF0ZUFYVUlFbGVtZW50UmVmCkBAIC0x
OTczLDYgKzE5NzIsOCBAQCBfd2tDcmVhdGVNZWRpYVVJQmFja2dyb3VuZFZpZXcKIF93a0NyZWF0
ZU1lZGlhVUlDb250cm9sCiBfd2tDcmVhdGVVUkxOUGFzdGVib2FyZEZsYXZvclR5cGVOYW1lCiBf
d2tDcmVhdGVVUkxQYXN0ZWJvYXJkRmxhdm9yVHlwZU5hbWUKK193a0NyZWF0ZVZNUHJlc3N1cmVE
aXNwYXRjaE9uTWFpblF1ZXVlCitfd2tDdXJzb3IKIF93a0RyYXdCZXplbGVkVGV4dEFyZWEKIF93
a0RyYXdCZXplbGVkVGV4dEZpZWxkQ2VsbAogX3drRHJhd0NhcHNMb2NrSW5kaWNhdG9yCkBAIC0x
OTgwLDYgKzE5ODEsNyBAQCBfd2tEcmF3Rm9jdXNSaW5nCiBfd2tEcmF3TWVkaWFTbGlkZXJUcmFj
awogX3drRHJhd01lZGlhVUlQYXJ0CiBfd2tEcmF3VGV4dEZpZWxkQ2VsbEZvY3VzUmluZworX3dr
RXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVvcGFyZAogX3drR2V0QVhUZXh0TWFy
a2VyUmFuZ2VUeXBlSUQKIF93a0dldEFYVGV4dE1hcmtlclR5cGVJRAogX3drR2V0Qnl0ZXNGcm9t
QVhUZXh0TWFya2VyCkBAIC0yMDEzLDcgKzIwMTUsOSBAQCBfd2tRVE1vdmllUmVzb2x2ZWRVUkwK
IF93a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVzCiBfd2tRVE1vdmllU2V0U2hvd0Ns
b3NlZENhcHRpb25zCiBfd2tRVE1vdmllVmlld1NldERyYXdTeW5jaHJvbm91c2x5Citfd2tSZWNv
bW1lbmRlZFNjcm9sbGVyU3R5bGUKIF93a1NldENHRm9udFJlbmRlcmluZ01vZGUKK193a1NldENy
YXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uCiBfd2tTZXREcmFnSW1hZ2UK
IF93a1NldE1ldGFkYXRhVVJMCiBfd2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcK
QEAgLTIxMTAsMTAgKzIxMTQsOCBAQCBfX1pON1dlYkNvcmUxMUltYWdlU291cmNlMjZzX2FjY2Vs
ZXJhdGVkSW1hZ2VEZWNvZGluZ0UKIF9fWk43V2ViQ29yZTExSW1hZ2VTb3VyY2UzM21heGltdW1J
bWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0V2CiBfX1pON1dlYkNvcmUxMUltYWdlU291cmNlMzZz
ZXRNYXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmdFagogX19aTjdXZWJDb3JlMTFNYXRo
TUxOYW1lczRpbml0RXYKLV9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNWFkZEltYWdlVG9DYWNo
ZUVQN0NHSW1hZ2VSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE4cHJ1bmVE
ZWFkUmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHBydW5lTGl2ZVJlc291
cmNlc0ViCi1fX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjByZW1vdmVJbWFnZUZyb21DYWNoZUVS
S05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTFpc0VuZE9mTGluZUVSS05TXzE1VmlzaWJsZVBvc2l0
aW9uRQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMG1vdXNlTW92ZWRFUDhXZWJFdmVudAog
X19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMHdoZWVsRXZlbnRFUDhXZWJFdmVudApAQCAtMjIw
MCw3ICsyMjAyLDYgQEAgX19aTjdXZWJDb3JlMjhjcmVhdGVDR0NvbG9yV2l0aERldmljZVdoaXRl
RWZmCiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JDMUVQS3Rp
CiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3JEMUV2CiBfX1pO
N1dlYkNvcmUzMWFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rpb25hcnlFdgotX19aTjdXZWJDb3Jl
MzJlbmFibGVLVVJMU2NoZW1lQ2Fub25pY2FsaXphdGlvbkViCiBfX1pON1dlYkNvcmUzM2FwcGxp
Y2F0aW9uSXNUaGVFY29ub21pc3RPbklQaG9uZUV2CiBfX1pON1dlYkNvcmU0MWluaXRpYWxpemVI
VFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwRXYKIF9fWk43V2ViQ29yZTRGb250QzFFUktO
U18xNkZvbnRQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJGb250U2VsZWN0b3JF
RUUKQEAgLTIyMTQsNyArMjIxNSw2IEBAIF9fWk43V2ViQ29yZTVGcmFtZTIwZG9jdW1lbnRTY2Fs
ZUNoYW5nZWRFdgogX19aTjdXZWJDb3JlNUZyYW1lMjBzZXRWaWV3cG9ydEFyZ3VtZW50c0VSS05T
XzE3Vmlld3BvcnRBcmd1bWVudHNFCiBfX1pON1dlYkNvcmU1RnJhbWUyMWRlZXBlc3ROb2RlQXRM
b2NhdGlvbkVQN0NHUG9pbnQKIF9fWk43V2ViQ29yZTVGcmFtZTIxdmlld3BvcnRPZmZzZXRDaGFu
Z2VkRXYKLV9fWk43V2ViQ29yZTVGcmFtZTI2aW5pdFdpdGhTaW1wbGVIVE1MRG9jdW1lbnRFUktO
M1dURjZTdHJpbmdFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTVGcmFtZTI3bm9kZVJlc3BvbmRp
bmdUb0NsaWNrRXZlbnRzRVA3Q0dQb2ludAogX19aTjdXZWJDb3JlNUZyYW1lMzBzZXRTaW5nbGVM
aW5lU2VsZWN0aW9uQmVoYXZpb3JFYgogX19aTjdXZWJDb3JlNUZyYW1lMzJkaXNwYXRjaFBhZ2VI
aWRlRXZlbnRCZWZvcmVQYXVzZUV2CkBAIC0yMjUxLDkgKzIyNTEsNiBAQCBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjRyZW5kZXJlZENoYXJhY3RlcnNFeGNlZWRFagogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzMwZ3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0RVA3V0FLVmlldwogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzMyc2V0Q3VzdG9tRml4ZWRQb3NpdGlvbkxheW91dFJlY3RFUktOU183SW50
UmVjdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczNXNldFVzZUN1c3RvbUZpeGVkUG9zaXRpb25M
YXlvdXRSZWN0RWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAxN3JlbW92ZVZpc2l0ZWRMaW5rRVJL
TlNfNEtVUkxFCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBhZGRVc2VyU2NyaXB0VG9Xb3JsZEVQ
TlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVj
dG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmpl
Y3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0UKLV9fWk43V2ViQ29yZTlQ
YWdlR3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRF
UktOM1dURjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFz
aE9uT3ZlcmZsb3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFTlNfMTRVc2Vy
U3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCiBfX1pON1dlYkNvcmU5VGls
ZUNhY2hlMTRkcmFpbkxheWVyUG9vbEV2CiBfX1pON1dlYkNvcmU5VGlsZUNhY2hlMjBzZXRMYXll
clBvb2xDYXBhY2l0eUVqCiBfX1pOSzdXZWJDb3JlMTBGbG9hdFBvaW50Y3Y3Q0dQb2ludEV2CkBA
IC0yMzE1LDUyICsyMzEyLDMxIEBAIF9fWk5LN1dlYkNvcmU3RWxlbWVudDI2ZmFzdEF0dHJpYnV0
ZUxvb2t1cEFsbG93ZWRFUktOU18xM1F1YWxpZmllZE5hbWVFCiBfX1pON1dlYkNvcmUyMExvZ05v
dFlldEltcGxlbWVudGVkRQogX19aTjdXZWJDb3JlMjhub3RJbXBsZW1lbnRlZExvZ2dpbmdDaGFu
bmVsRXYKIF9fWk43V2ViQ29yZTM2aW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5
RXYKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisjZW5kaWYKIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKIF9fWk43V2ViQ29yZTI3Tm9FeGNlcHRpb25Bc3NlcnRpb25DaGVja2VyQzFFUEtjaQogX19a
TjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNrZXJEMUV2Ci0jZW5kaWYgLy8gIUFT
U0VSVF9ESVNBQkxFRAorI2VuZGlmCiAKICNpZiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NB
TUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykgJiYgIVBMQVRGT1JNKElPUykKIF9fWk43V2ViQ29yZTdJ
bnRTaXplQzFFUks3X05TU2l6ZQogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiAj
ZW5kaWYKIAotX3drQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bldpdGhCbG9jawotX3dr
Q0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZwotX3drQ0dQYXRoQWRkUm91bmRlZFJlY3QK
LV93a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJvdmlkZXJBbmRPcHRpb25zCi0KICNp
ZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIF93a0lPU3VyZmFjZUNvbnRleHRDcmVhdGUKIF93
a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZQogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9T
KQotX3drQVZBc3NldFJlc29sdmVkVVJMCi1fd2tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlz
cGxheU5hbWUKLV93a1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9u
Ci1fd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5RdWV1ZQotX3drQ3Vyc29yCi1fd2tF
eGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9wYXJkCi1fd2tSZWNvbW1lbmRlZFNj
cm9sbGVyU3R5bGUKLSNlbmRpZgotCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDcmVhdGVNZW1vcnlTdGF0dXNQcmVzc3Vy
ZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZQotI2VuZGlmCi0KLSNpZiBVU0UoQ09OVEVOVF9G
SUxURVJJTkcpCi1fd2tGaWx0ZXJBZGREYXRhCi1fd2tGaWx0ZXJDcmVhdGVJbnN0YW5jZQotX3dr
RmlsdGVyRGF0YUNvbXBsZXRlCi1fd2tGaWx0ZXJJc0J1ZmZlcmluZwotX3drRmlsdGVySXNNYW5h
Z2VkU2Vzc2lvbgotX3drRmlsdGVyV2FzQmxvY2tlZAotI2VuZGlmCi0KICNpZiAhUExBVEZPUk0o
SU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODAKK19fWk43V2Vi
Q29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9O
U1JhbmdlCitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0
ZXJuYXRpdmVzRVJLTjNXVEY5UmV0YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKK19fWk43
V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMTZzaG93QWx0ZXJuYXRpdmVzRVA2
TlNWaWV3UktOU185RmxvYXRSZWN0RXlVMTNibG9ja19wb2ludGVyRnZQOE5TU3RyaW5nRQorX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxOHJlbW92ZUFsdGVybmF0aXZl
c0V5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjIyYWx0ZXJuYXRp
dmVzRm9yQ29udGV4dEV5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxl
cjVjbGVhckV2CitfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVz
RVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVX
aXRoUmFuZ2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VFRQogX3drQ0dDb250ZXh0RHJhd3NX
aXRoQ29ycmVjdFNoYWRvd09mZnNldHMKIF93a0V4ZWN1dGFibGVXYXNMaW5rZWRPbk9yQmVmb3Jl
TGlvbgogX3drTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEKQEAgLTIzNjgsMjggKzIzNDQs
MTggQEAgX3drTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEKIF93a05TUmVib3VuZERlbHRhRm9y
RWxhc3RpY0RlbHRhCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDVEZvbnRUcmFuc2Zvcm1HbHlwaHMKKyNp
ZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
OTAKK193a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNzdXJlQ3JpdGljYWxEaXNwYXRjaE9uTWFpblF1
ZXVlCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwCi1fX1pON1dlYkNvcmUyN0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0YWluUHRy
STE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKLV9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlD
b250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkKLV9fWk43V2ViQ29yZTI3QWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKLV9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVU
ZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNFeQotX19aTjdXZWJDb3JlMjdBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5hdGl2ZXNFUDZOU1ZpZXdSS05TXzlG
bG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJpbmdFCi1fX1pON1dlYkNvcmUyNFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQot
X19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJp
YnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxt
MEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKKyNpZiBQTEFURk9STShJT1MpIHx8IF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorX3drQ1RGb250VHJhbnNmb3JtR2x5cGhz
CiAjZW5kaWYKIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCiBfV2ViQ29yZUhhczNEUmVuZGVy
aW5nCiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLV9fWk43V2ViQ29yZTE2Rmls
dGVyT3BlcmF0aW9uc2FTRVJLUzBfCi0jZW5kaWYKLQogI2lmIFVTRShBUFBLSVQpCiBfX1pON1dl
YkNvcmU2RWRpdG9yMTNsb3dlcmNhc2VXb3JkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxM3VwcGVy
Y2FzZVdvcmRFdgpAQCAtMjQwMSw5ICsyMzY3LDIyIEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczIw
Z0FWRm91bmRhdGlvbkVuYWJsZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldEFWRm91bmRh
dGlvbkVuYWJsZWRFYgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi1fX1pON1dlYkNvcmU4
U2V0dGluZ3MxM2dRVEtpdEVuYWJsZWRFCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFFUS2l0
RW5hYmxlZEViCisjaWYgRU5BQkxFKEJMT0IpCitfX1pON1dlYkNvcmUxMmJsb2JSZWdpc3RyeUV2
CitfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgorX19a
TjdXZWJDb3JlN1Jhd0RhdGFDMUV2CitfX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAorX19aTjdXZWJDb3JlOEJsb2JEYXRh
MTBhcHBlbmRGaWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAorX19aTjdXZWJDb3JlOEJsb2JEYXRhNmNy
ZWF0ZUV2CitfX1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZpbGVFCitfX1pON1dl
YkNvcmUxMkJsb2JSZWdpc3RyeUQyRXYKK19fWlRWTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlFCitf
X1pUVk43V2ViQ29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNlbmRpZgorCisjaWYgRU5BQkxFKENB
Q0hFX1BBUlRJVElPTklORykKK19fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTNwYXJ0aXRp
b25OYW1lRVJLTjNXVEY2U3RyaW5nRQorX3drQ2FjaGVQYXJ0aXRpb25LZXkKICNlbmRpZgogCiAj
aWYgVVNFKENGTkVUV09SSykKQEAgLTI0MjEsMTggKzI0MDAsMTMgQEAgX3drU2V0Q0ZVUkxSZXF1
ZXN0U2hvdWxkQ29udGVudFNuaWZmCiBfd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEJMT0IpCi1fX1pON1dlYkNvcmUxMmJsb2JSZWdpc3RyeUV2Ci1fX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9iUmVnaXN0cnlFdgotX19aTjdXZWJD
b3JlN1Jhd0RhdGFDMUV2Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZEJsb2JFUktOU180
S1VSTEV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmREYXRhRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzdSYXdEYXRhRUVFeHgKLV9fWk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kRmlsZUVS
S04zV1RGNlN0cmluZ0V4eGQKLV9fWk43V2ViQ29yZThCbG9iRGF0YTZjcmVhdGVFdgotX19aTjdX
ZWJDb3JlMTJCbG9iRGF0YUl0ZW0xMXRvRW5kT2ZGaWxlRQotX19aTjdXZWJDb3JlMTJCbG9iUmVn
aXN0cnlEMkV2Ci1fX1pUVk43V2ViQ29yZTEyQmxvYlJlZ2lzdHJ5RQotX19aVFZON1dlYkNvcmUx
NkJsb2JSZWdpc3RyeUltcGxFCisjaWYgVVNFKENPTlRFTlRfRklMVEVSSU5HKQorX3drRmlsdGVy
QWRkRGF0YQorX3drRmlsdGVyQ3JlYXRlSW5zdGFuY2UKK193a0ZpbHRlckRhdGFDb21wbGV0ZQor
X3drRmlsdGVySXNCdWZmZXJpbmcKK193a0ZpbHRlcklzTWFuYWdlZFNlc3Npb24KK193a0ZpbHRl
cldhc0Jsb2NrZWQKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0yNDU0
LDEzICsyNDI4LDE3IEBAIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTV0aXRsZUV2CiBf
X1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0aW9uRXYKIF9fWk5LN1dlYkNvcmUxNUNv
bnRleHRNZW51SXRlbTdjaGVja2VkRXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdl
bmFibGVkRXYKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNlbmRpZgorCisjaWYg
RU5BQkxFKENTU19GSUxURVJTKQorX19aTjdXZWJDb3JlMTZGaWx0ZXJPcGVyYXRpb25zYVNFUktT
MF8KKyNlbmRpZgogCiAjaWYgRU5BQkxFKENTUzNfQ09ORElUSU9OQUxfUlVMRVMpCiAub2JqY19j
bGFzc19uYW1lX0RPTUNTU1N1cHBvcnRzUnVsZQogX19aTjdXZWJDb3JlMTJET01XaW5kb3dDU1M2
Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01H
bG9iYWxPYmplY3RFUE5TXzEyRE9NV2luZG93Q1NTRQotI2VuZGlmIC8vIEVOQUJMRShDU1MzX0NP
TkRJVElPTkFMX1JVTEVTKQorI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
IHx8IEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogX19aTks3V2ViQ29yZThEb2N1bWVudDE2YW5u
b3RhdGVkUmVnaW9uc0V2CkBAIC0yNDc5LDYgKzI0NTcsMTAgQEAgX19aTjdXZWJDb3JlOERyYWdE
YXRhQzFFUDExb2JqY19vYmplY3RSS05TXzhJbnRQb2ludEVTNV9OU18xM0RyYWdPcGVyYXRpb25F
TlNfMjAKIF9fWk43V2ViQ29yZThEcmFnRGF0YUMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfOEludFBv
aW50RVM3X05TXzEzRHJhZ09wZXJhdGlvbkVOU18yMERyYWdBcHBsaWNhdGlvbkZsYWdzRQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorX19aTjdXZWJDb3JlM0NETTE4
cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50
ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCisjZW5kaWYKKwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIF9fWk43V2ViQ29yZThEb2N1bWVudDIyd2Via2l0Q2Fu
Y2VsRnVsbFNjcmVlbkV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzM3dlYmtpdERpZEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCkBAIC0yNTI4LDcgKzI1MTAsNyBAQCBfX1pO
N1dlYkNvcmUxMkljb25EYXRhYmFzZUMxRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTEy
ZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTI0c2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25EYXRhYmFzZTlpc0VuYWJsZWRFdgot
I2VuZGlmIC8vIEVOQUJMRShJQ09OREFUQUJBU0UpCisjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogX19aTjdXZWJDb3JlNUNvbG9yQzFFUDdDR0NvbG9yCkBAIC0yNTk2LDYg
KzI1NzgsMTkgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMmNvbnRhaW5zUXVhZEVSS1MwXwog
X19aTks3V2ViQ29yZTlGbG9hdFF1YWQxM2NvbnRhaW5zUG9pbnRFUktOU18xMEZsb2F0UG9pbnRF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQorX19aTjdXZWJDb3Jl
MTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4dEF1dG9zaXppbmdFdgorX19aTjdXZWJDb3JlNUZyYW1l
MjJzZXRUZXh0QXV0b3NpemluZ1dpZHRoRWYKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDIydXNlck1lZGlhQWNjZXNzR3Jh
bnRlZEV2CitfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMXVzZXJNZWRpYUFjY2Vzc0Rl
bmllZEV2CitfX1pON1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVkaWFUb0VQTlNfNFBhZ2VFUE5TXzE1
VXNlck1lZGlhQ2xpZW50RQorX19aTks3V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVzdDE0c2VjdXJp
dHlPcmlnaW5FdgorX19aTjdXZWJDb3JlMjFNb2NrTWVkaWFTdHJlYW1DZW50ZXIyOXJlZ2lzdGVy
TW9ja01lZGlhU3RyZWFtQ2VudGVyRXYKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiBfX05QTl9Db25zdHJ1Y3QKIF9fTlBOX0NyZWF0ZU9iamVjdApAQCAtMjY4OSw2
ICsyNjg0LDEyIEBAIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTIwYXV0aGVudGljYXRp
b25TY2hlbWVFdgogX19aTjdXZWJDb3JlOGNyZWF0ZUNGRVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VF
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCitfX1pON1dlYkNvcmUx
NGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjh0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQorX3drSXNQdWJsaWNTdWZmaXgKKyNl
bmRpZgorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBfX1pON1dlYkNvcmUyN3FsUHJldmlld0NvbnZl
cnRlclVUSUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUzMHJlbW92ZVFMUHJldmlld0NvbnZl
cnRlckZvclVSTEVQNU5TVVJMCkBAIC0yNzAwLDE4ICsyNzAxLDMxIEBAIF9fWk43V2ViQ29yZTMz
UUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNFZAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoUlVC
QkVSX0JBTkRJTkcpCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzMxc2V0V2FudHNMYXllckZvclRv
cE92ZXJIYW5nQXJlYUViCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzM0c2V0V2FudHNMYXllckZv
ckJvdHRvbU92ZXJIYW5nQXJlYUViCisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
X19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQTlNfMTBTaGFkb3dSb290RQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKK19fWk43V2ViQ29yZTE1U3BlZWNoU3ludGhlc2lzMjJzZXRQbGF0Zm9ybVN5bnRoZXNpemVy
RU4zV1RGMTBQYXNzT3duUHRySU5TXzI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVFRQorX19a
TjdXZWJDb3JlMjRET01XaW5kb3dTcGVlY2hTeW50aGVzaXMxNXNwZWVjaFN5bnRoZXNpc0VQTlNf
OURPTVdpbmRvd0UKK19fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckMyRVBO
U18zMVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRFCitfX1pUVk43V2ViQ29yZTI1UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckUKK19fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplckQyRXYKK19fWk43V2ViQ29yZTI4UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTZj
cmVhdGVFUktOM1dURjZTdHJpbmdFUzRfUzRfYmIKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFNWRykK
IF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU9TX1RF
WFRfQVVUT1NJWklORykKLV9fWk43V2ViQ29yZTEyUmVuZGVyT2JqZWN0MTlyZXNldFRleHRBdXRv
c2l6aW5nRXYKLV9fWk43V2ViQ29yZTVGcmFtZTIyc2V0VGV4dEF1dG9zaXppbmdXaWR0aEVmCisj
aWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKK19fWk5LN1dlYkNvcmU0Tm9kZTMxbnVtYmVyT2ZTY29w
ZWRIVE1MU3R5bGVDaGlsZHJlbkV2CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUSFJFQURFRF9TQ1JP
TExJTkcpCkBAIC0yNzYyLDQ5ICsyNzc2LDEyIEBAIF9fWk5LN1dlYkNvcmUxNkhUTUxNZWRpYUVs
ZW1lbnQ2cGF1c2VkRXYKIAogI2lmIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQogX19aTjdX
ZWJDb3JlNFBhZ2UxMXNldFZpZXdNb2RlRU5TMF84Vmlld01vZGVFCi0jZW5kaWYgLy8gRU5BQkxF
KFZJRVdfTU9ERV9DU1NfTUVESUEpCisjZW5kaWYKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogX19a
TjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVhZENvdW50RXYKICNlbmRpZgogCi0j
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLV9fWk43V2ViQ29yZTNDRE0xOHJlZ2lzdGVy
Q0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJpdmF0ZUludGVyZmFjZUVF
RVBTMF9FUEZiUktOUzFfNlN0cmluZ0VFUEZiU0FfU0FfRQotI2VuZGlmCi0KICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNF
dgogI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKLV9fWk43V2ViQ29yZTE1
U3BlZWNoU3ludGhlc2lzMjJzZXRQbGF0Zm9ybVN5bnRoZXNpemVyRU4zV1RGMTBQYXNzT3duUHRy
SU5TXzI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVFRQotX19aTjdXZWJDb3JlMjRET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMxNXNwZWVjaFN5bnRoZXNpc0VQTlNfOURPTVdpbmRvd0UKLV9fWk43
V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckMyRVBOU18zMVBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDbGllbnRFCi1fX1pUVk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplckUKLV9fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckQyRXYKLV9fWk43
V2ViQ29yZTI4UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFUzRfUzRfYmIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotX19aTks3
V2ViQ29yZTlGcmFtZVZpZXczMXNldFdhbnRzTGF5ZXJGb3JUb3BPdmVySGFuZ0FyZWFFYgotX19a
Tks3V2ViQ29yZTlGcmFtZVZpZXczNHNldFdhbnRzTGF5ZXJGb3JCb3R0b21PdmVySGFuZ0FyZWFF
YgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotX19aTjdXZWJDb3Jl
MTRpc1B1YmxpY1N1ZmZpeEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTI4dG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbkVSS04zV1RGNlN0cmluZ0UKLV93a0lzUHVibGljU3VmZml4Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi1fX1pON1dlYkNvcmUxNVJl
c291cmNlUmVxdWVzdDEzcGFydGl0aW9uTmFtZUVSS04zV1RGNlN0cmluZ0UKLV93a0NhY2hlUGFy
dGl0aW9uS2V5Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1fX1pON1dlYkNv
cmUxNlVzZXJNZWRpYVJlcXVlc3QyMnVzZXJNZWRpYUFjY2Vzc0dyYW50ZWRFdgotX19aTjdXZWJD
b3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjF1c2VyTWVkaWFBY2Nlc3NEZW5pZWRFdgotX19aTjdXZWJD
b3JlMThwcm92aWRlVXNlck1lZGlhVG9FUE5TXzRQYWdlRVBOU18xNVVzZXJNZWRpYUNsaWVudEUK
LV9fWk5LN1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QxNHNlY3VyaXR5T3JpZ2luRXYKLV9fWk43
V2ViQ29yZTIxTW9ja01lZGlhU3RyZWFtQ2VudGVyMjlyZWdpc3Rlck1vY2tNZWRpYVN0cmVhbUNl
bnRlckV2Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCmluZGV4IGUzZGZlYjkxNTFkODI4ZDA5NWY1NjNkMmI1MWUwOTc2OTY2NWMzMjIu
LmQ1ODY5OWZmY2E2MjFmNWQ2M2I5NDE1MmI4NTUxMWYyNGI3MTliNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNzQyMCw3ICs3NDIw
LDcgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXEhpc3RvZ3JhbVN1cHBvcnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cS2lsbFJpbmdOb25lLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEtVUkwuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZv
cm1cVVJMLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExhbmd1
YWdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aC5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxMZW5ndGhCb3guY3Bw
IiAvPgpAQCAtNzYwNCw3ICs3NjA0LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRyYXMuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcRmlsZVN5c3RlbUNGLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEtVUkxDRk5ldC5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxVUkxDRi5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxTaGFyZWRCdWZmZXJDRi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlx3aW5cQ2VydGlmaWNhdGVDRldp
bi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xC
aXRtYXBJbWFnZS5jcHAiIC8+CkBAIC0xOTAxNSw4ICsxOTAxNSw4IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIaXN0b2dyYW1TdXBwb3J0LmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxsUmluZy5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cS1VSTEhhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXFVSTC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMSGFz
aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExheW91dFVuaXQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXExlbmd0aC5oIiAvPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCmluZGV4IDFmMGNkOTQ3NDQ5OGI3OWU3MzlkMzY2ZWVjMDgyOGRkZjA2OTc0YmYuLmZhMDA1
MjlkYTI0ZTg4OTRiMzE5OTMzZGI4OGFiYjJkMThmOWY2NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEx
MjUsNyArMTEyNSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxs
UmluZ05vbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtVUkwuY3BwIj4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5jcHAiPgogICAgICAgPEZp
bHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuY3BwIj4KQEAgLTUxMDksNyArNTEwOSw3IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxGaWxlU3lzdGVtQ0YuY3Bw
Ij4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
LSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEtVUkxDRk5ldC5jcHAiPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcVVJMQ0YuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxDZXJ0aWZpY2F0ZUNGV2luLmNwcCI+
CkBAIC04MTE1LDEwICs4MTE1LDEwIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxLaWxsUmluZy5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm08L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtVUkwuaCI+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxVUkwuaCI+CiAgICAgICA8Rmls
dGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxLVVJMSGFzaC5oIj4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXFVSTEhhc2guaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxM
YW5ndWFnZS5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAwYzRmYjU0Y2UyOTBmYjVkN2FkZjU5MWJjYWQwYjM1OGQ5Y2UyOWU2
Li4wZDBhYTZlNjhjMGY4MDVhZDZjYWYxZmZmODMyNWEzMzBmMDMxZGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NTIsNyAr
NjUyLDcgQEAKIAkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4IC8qIG5wYXBpLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkyN0ZDRjE0MTZBMTVCMDAz
QTgzQzggLyogbnBhcGkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQTkyN0ZEMzE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkyN0ZEMDE0MTZBMTVC
MDAzQTgzQzggLyogbnBydW50aW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUE5MjdGRDQxNDE2QTE1QjAwM0E4M0M4IC8qIG5wdHlwZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTI3RkQxMTQx
NkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVGIC8qIEtVUkxDRk5l
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTk4
OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNwcCAqLzsgfTsKKwkJMUE5ODk1NkIw
QUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAg
Ki87IH07CiAJCTFBQTIxMjUwMTYzRjBEQTgwMDAwRTYzRiAvKiBBdG9taWNTdHJpbmdDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUEyMTI0RjE2
M0YwREE4MDAwMEU2M0YgLyogQXRvbWljU3RyaW5nQ0YuY3BwICovOyB9OwogCQkxQUE3MTYwQTE0
OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwODE0OUJDNERBMDAxNkVDMTkgLyogVGls
ZUNvbnRyb2xsZXIubW0gKi87IH07CiAJCTFBQTcxNjBCMTQ5QkM0REIwMDE2RUMxOSAvKiBUaWxl
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBNzE2MDkxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggKi87IH07CkBA
IC0xODkwLDkgKzE4OTAsOSBAQAogCQk2NTdFREEwODEzODVDQjk3MDA0RTA2NDUgLyogTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1N0VEQTA2MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuY3BwICovOyB9OwogCQk2NTdFREEwQjEzODVDQkQ4MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1
cmVIYW5kbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU3RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlck1h
Yy5tbSAqLzsgfTsKIAkJNjU4NDM2ODYwQUUwMUI3NDAwRTUzNzUzIC8qIEZyYW1lTG9hZFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1ODQz
Njg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNjU5MzkyMzcwOUFFNDM0NjAwMkM1
MzFGIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovOyB9OwotCQk2NTkz
OTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk2NTkzOTIz
QTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBLVVJMTWFj
Lm1tICovOyB9OworCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM1MDlBRTQzNDYw
MDJDNTMxRiAvKiBVUkwuY3BwICovOyB9OworCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyog
VVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTkz
OTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIFVSTE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5
MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi87IH07CiAJCTY1OTZGMkIzMEI4NzMx
REYwMDEzMjZCRCAvKiBET01IVE1MSW5wdXRFbGVtZW50SW50ZXJuYWwuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMTY0
MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSW5wdXRFbGVtZW50SW50ZXJuYWwuaCAqLzsgfTsK
IAkJNjU5NkYyQzEwQjg3MzI1QzAwMTMyNkJEIC8qIERPTUhUTUxUZXh0QXJlYUVsZW1lbnRJbnRl
cm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODVFNzExN0YwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTlBN0QxMzBCNkRCNEQ5MDAxMTU1QjMgLyogU3Vi
c3RpdHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJzdGl0dXRlRGF0YS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MDQwLDcgKzUwNDAs
NyBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI1MTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
QkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JCOEFCQjEzRjFBRkIwMDA3
MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tU
cmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyog
S1VSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDIxQUEwRTQxN0FENDAwQTA3MEYy
IC8qIFVSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQTBE
Q0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi87IH07CiAJCUJDQkZCNTNE
MERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUzQjBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNET01XaW5kb3dTaGVsbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQzA2NTc3MEYz
Q0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLzsgfTsKQEAgLTcxMTQsNyArNzExNCw3
IEBACiAJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBucGFwaS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0eXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkxDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMQ0YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUEyMTI0RjE2M0YwREE4MDAwMEU2M0YgLyogQXRvbWljU3Ry
aW5nQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXRvbWljU3Ry
aW5nQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE3MTYwODE0OUJDNERB
MDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBUaWxlQ29udHJvbGxlci5tbTsgcGF0aCA9IGNhL21hYy9UaWxlQ29udHJv
bGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBNzE2MDkxNDlCQzREQjAw
MTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFRpbGVDb250cm9sbGVyLmg7IHBhdGggPSBjYS9tYWMvVGlsZUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0ODcsOSArODQ4Nyw5IEBACiAJCTY1N0VEQTA3
MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1N0VEQTBBMTM4NUNCRDgwMDRFMDY0NSAvKiBNZW1vcnlQcmVz
c3VyZUhhbmRsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1ZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxvYWRSZXF1ZXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLVVJMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtVUkwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IEtVUkxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0
aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OworCQk2NTkzOTIzNTA5QUU0MzQ2
MDAyQzUzMUYgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NTkzOTIzNjA5QUU0MzQ2
MDAyQzUzMUYgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVUkwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5MzkyMzkwOUFFNDM1QzAwMkM1MzFG
IC8qIFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGxpbmVFbmRp
bmcgPSAwOyBwYXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1
YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9iamNwcDsgfTsKIAkJNjU5
QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVEYXRhLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0dXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYgLyogSlNEb2N1bWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgxMDlFMTk4QkEwMDFCRjNDNiAvKiBKU0Rv
Y3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RvY3VtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTkzNiw3ICsxMTkzNiw3IEBACiAJCUJD
QkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3MzRERjAgLyogUE9ESW50ZXJ2YWxUcmVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREludGVydmFsVHJlZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNzEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxh
Y2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPRFJlZEJsYWNrVHJl
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcw
RjIgLyogS1VSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1VSTEhh
c2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNCRDIxQUEwRTQxN0FENDAwQTA3
MEYyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVVJMSGFz
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIz
RTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVdpbmRvd1NoZWxsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5kb3dTaGVsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQ0MwNjU3NzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGllbnRSZWN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTU1LDcgKzEzOTU1LDcgQEAKIAkJ
CQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxFeHRyYXMuY3BwICovLAogCQkJCUUx
QThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCTUxNjAzMDZC
MENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAotCQkJCTFBOTg5NTZBMEFB
NzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAorCQkJCTFBOTg5NTZBMEFBNzhGODAw
MDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkJMjlBMzA5QUIxNTYxQzk5QjAwQkJEOEU1IC8q
IFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJNTEyREQ4RTIwRDkxRTJCNDAwMEY4OUVFIC8qIFNoYXJl
ZEJ1ZmZlckNGLmNwcCAqLywKIAkJCSk7CkBAIC0xNTE0Niw3ICsxNTE0Niw3IEBACiAJCQkJQzUz
OTJEMzQxMzI2QUQwMTAwMDQzRDM1IC8qIEhUTUxDb252ZXJ0ZXIubW0gKi8sCiAJCQkJOTM1QzQ3
NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1tICovLAogCQkJCTUyMUQ0NkY1MTFB
RUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5tbSAqLywKLQkJCQk2NTkzOTIzOTA5QUU0MzVD
MDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLywKKwkJCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYg
LyogVVJMTWFjLm1tICovLAogCQkJCTkzNTIwODQ0MDlCRDQzQjkwMEYyMDM4RCAvKiBMYW5ndWFn
ZS5tbSAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4MzcgLyogTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0LmggKi8sCiAJCQkJMDZFODFFRUIwQUI1REE5NzAwQzg3ODM3IC8qIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKQEAgLTE5ODU2LDkgKzE5ODU2LDkgQEAKIAkJ
CQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCTUyMUQ0
NkY3MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oICovLAogCQkJCTQzMDZFNEU1MTQ5NTU1
NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwICovLAotCQkJCTY1OTM5MjM1MDlBRTQzNDYw
MDJDNTMxRiAvKiBLVVJMLmNwcCAqLywKLQkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyog
S1VSTC5oICovLAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oICov
LAorCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICovLAorCQkJCTY1OTM5
MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKKwkJCQlCQ0JEMjFBQTBFNDE3QUQ0MDBB
MDcwRjIgLyogVVJMSGFzaC5oICovLAogCQkJCUUxODc3MkYwMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgKi8sCiAJCQkJODVFQzlBRjkwQTcxQTJDNjAwRUVFQUVEIC8qIExhbmd1YWdl
LmggKi8sCiAJCQkJMTQxREMwNDcxNjQ4MzQ4RjAwMzcxRTVBIC8qIExheW91dFVuaXQuaCAqLywK
QEAgLTIzNDA3LDggKzIzNDA3LDggQEAKIAkJCQkzMTZGRTExQTBFNkUxREE3MDBCRjYwODggLyog
S2V5ZnJhbWVBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCQTExMEU4MjNFNDcw
MEIyNTk2NSAvKiBLZXlmcmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyMUQ0NkY4MTFB
RUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjU5MzkyMzgw
OUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQkQyMUFCMEU0
MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjU5MzkyMzgw
OUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCRDIxQUIwRTQx
N0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1MENFQkYxMTUw
NzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBMYW5ndWFnZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjY5Niw5ICsyNjY5Niw5IEBACiAJCQkJQkM1RUJBMTAwRTgyM0U0NzAwQjI1OTY1
IC8qIEtleWZyYW1lTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjFENDZGNjExQUVDOTgx
MDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MzA2RTRFNjE0
OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTY1
OTM5MjM3MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTFB
OTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxNYWMubW0gaW4gU291cmNlcyAqLywK
KwkJCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExhYmVsYWJsZUVsZW1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAwMjBCNDIwIC8qIExhYmVsc05vZGVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYxMTI2RTI2MjkwMDNERDU4NiAvKiBM
YW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IDFjYjFj
NjljNTM0MzM2ZjlkYTFjZThiYjU4MzlhZWM1YzBmZjAyZWIuLjc5MWJmMWM0ZWNiZmZmMjFiZjY3
NzczZmUzYmVhMDgxMTM5NTNlY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtODcsMTAgKzg3
LDEwIEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmFuY2hvckVsZW1lbnQo
KSBjb25zdAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50LmdldCgpOwogfQogCi1LVVJMIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbms6OnVybCgpIGNvbnN0CitVUkwgQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluazo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYXJlYUVsZW1lbnQuZ2V0KCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICAKICAgICBy
ZXR1cm4gbV9hcmVhRWxlbWVudC0+aHJlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAppbmRleCA3YTNl
YzA4MmRlMDJlZTZhOTg3YjdjMGI3YjEwMGQzOTMxMTBhMmVlLi4yZjFmYjBiNzI3MjQ1MmI2YjNi
YmFkZTgxNDBkZWNmYTQxNDIyNGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBLVVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9IAogICAgIHZpcnR1
YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyB0aXRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA1MjdkZDRhZDFjYzFlM2RkNjA4ZGY4MmNiOTVk
MjczMTg2ZWY5OTVjLi5iYmExODVmOTdiNjk0MmI0MzJhOWIyZGMyZjFlMjNkYjlhZmVjNDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaApAQCAtNjQyLDcgKzY0Miw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzZWxlY3Rpb25T
dGFydCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCkuc3RhcnQ7IH0KICAgICB1
bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBzZWxlY3RlZFRleHRSYW5nZSgp
Lmxlbmd0aDsgfQogICAgIAotICAgIHZpcnR1YWwgS1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBL
VVJMKCk7IH0KKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBVUkwoKTsgfQog
ICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBj
b25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBhY2Nlc3NLZXkoKSBjb25zdCB7IHJldHVybiBudWxsQXRvbTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKaW5kZXggYTRlYzBhMGE4N2RhOWVlYWQ5N2NlNjNmMzAzNDRlMTM2MzlmNjlhMi4uMmU0MTgz
Y2RjYjZmNDFkZTlkMTAwYjkzNjVkYTRkNmZlMTE4YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CkBAIC04OTYsMTMgKzg5NiwxMyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHRvSFRNTEFuY2hvckVsZW1lbnQo
ZWxlbWVudCk7CiAgICAgCi0gICAgS1VSTCBsaW5rVVJMID0gYW5jaG9yLT5ocmVmKCk7CisgICAg
VVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlm
aWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBpZiAoZnJhZ21lbnRJZGVu
dGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgLy8gY2hlY2sg
aWYgVVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0gICAgS1VSTCBkb2N1bWVudFVSTCA9
IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CisgICAgVVJMIGRvY3VtZW50VVJMID0gbV9y
ZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICAKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmIHJhbmdlCiAgICAgICAg
IFBvc2l0aW9uKG5vZGUsIHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3RoLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc09mZnNldEluQW5jaG9yKSwgRE9XTlNUUkVBTSkpOwogfQogCi1LVVJMIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CitVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoaXNBbmNob3IoKSAmJiBpc0hUTUxBbmNob3JF
bGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKICAgICAgICAgaWYgKEhUTUxBbmNob3JFbGVt
ZW50KiBhbmNob3IgPSB0b0hUTUxBbmNob3JFbGVtZW50KGFuY2hvckVsZW1lbnQoKSkpCkBAIC0x
NDY0LDcgKzE0NjQsNyBAQCBLVVJMIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNv
bnN0CiAgICAgaWYgKGlzSW5wdXRJbWFnZSgpKQogICAgICAgICByZXR1cm4gdG9IVE1MSW5wdXRF
bGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSktPnNyYygpOwogICAgIAotICAgIHJldHVybiBLVVJM
KCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmlzVW52aXNpdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKaW5kZXggYjA5ZDFjZWUzZGMx
N2JiODU5NDRhODZiZWFjMGZiY2MxYTA1ZjVkZC4uMGZlMDMyNzUwNzg5YTg1N2RiYjY1MTBmNThl
ZjdlNGU2ZDZhNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJs
aWM6CiAgICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29uc3Q7CiAgICAgSFRNTExhYmVsRWxl
bWVudCogbGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBL
VVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0OwogICAgIHZpcnR1
YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFs
IFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcg
c3RyaW5nVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KaW5kZXggZGQ1YmE5ZDQyMGJlMzgzZmU2NjQ0ZDFmODY2YjhiZjdhMjIwNTM5NC4uYmI1NGUy
YzNiMWE3NzkyNTc2ZDUwZTUzYjBjYzIwYjM0ZjM5NWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTk3OSw3ICs5NzksNyBAQCAtIChOU1VSTCAqKWFjY2Vz
c2liaWxpdHlVUkwKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJlQWNjZXNzaWJpbGl0eUNhbGxdKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIEtVUkwgdXJsID0gbV9vYmplY3QtPnVybCgp
OworICAgIFVSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CiAgICAgaWYgKHVybC5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gKE5TVVJMKil1cmw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDJkOGJiODMwODc5MmMzN2ExZmQxZWVi
ZmY3ZTI3NmVjZWRmYjZmMmIuLjlkZDZmOGUyYmU4NDk1NjhlNmRlMGM2ZjBhZTZlNDg3YWY3YzQy
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0yMTM4LDcg
KzIxMzgsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nKilh
dHRyaWJ1dGVOYW1lCiAgICAgfQogICAgIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgS1VSTCB1
cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgICAgIFVSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7
CiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICByZXR1cm4gKE5TVVJMKil1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHAKaW5kZXggMDVjMzBkZWE2N2IyYjUwMDdlYTk1OTE1MjQ2
ZmVhYWQwNDZmYWRkYy4uNzRhNTI2MmExNWViZjMxODRhZTg1ZDgzYjFmMjkwMGIwYzkxNzFhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNw
cApAQCAtNzMsNyArNzMsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgcmV0dXJuIGV2
YWx1YXRlKHNvdXJjZUNvZGUpOwogfQogCi1ib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJ
ZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkph
dmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQorYm9vbCBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYgdXJsLCBT
aG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50
SWZKYXZhU2NyaXB0VVJMKQogewogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAKaW5kZXggMTgxZmMyYWEzNTIzNWEz
MWMzMjMyMWMwYTRkNmI5NjUzMDAzMDg2OC4uMTRkZjNhNjlkYWYxNzU5MTAyNjgyNTY5OTlhNjc1
ZTIwY2IzMzI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9D
b252ZXJ0VG9VVEY4U3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0cmluZy5oIgogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzIsNyArMzIsNyBAQCBnY2hh
ciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmluZyBjb25zdCYgcykKICAgICByZXR1cm4g
Z19zdHJkdXAocy51dGY4KCkuZGF0YSgpKTsKIH0KIAotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJp
bmcoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2djaGFyKiBjb252ZXJ0VG9VVEY4U3RyaW5nKFdl
YkNvcmU6OlVSTCBjb25zdCYgcykKIHsKICAgICByZXR1cm4gZ19zdHJkdXAocy5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKaW5kZXggYmMyMzRjZmRlMjgzOTZkNmJjYmVmYzBj
OGQxMTg2NzE1ZTM5OWYyNC4uZTQ5NDExM2EzZjhmZjZlOWM0ZGJlNjhhZjlmMWQ4YTJlMjIyZmVj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9V
VEY4U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0
VG9VVEY4U3RyaW5nLmgKQEAgLTI0LDEyICsyNCwxMiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAK
IHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV1RGOjpT
dHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6S1VS
TCBjb25zdCYgcyk7CitnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXZWJDb3JlOjpVUkwgY29u
c3QmIHMpOwogCiAjZW5kaWYgLyogQ29udmVydFRvVVRGOFN0cmluZ19oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBiNTA0YTRkZTY5NGRmMWY5
MjkzNDkxMjM0MTVkNDdkMDBkZTNjNzY4Li4xMGVhZjMyZmUyMGM2MWRmZWQ2MDVjY2MzYmI3OGRj
YjU0NTZhYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKQEAgLTc1LDE5ICs3NSwxOSBAQCBKU1ZhbHVlIGpzU3RyaW5nT3JVbmRlZmluZWQoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIHMpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
S1VSTCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCB1cmwuc3RyaW5nKCkp
OwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VS
TCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVS
TCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgdXJsLnN0cmluZygpKTsKIH0K
IAotSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VS
TCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmlu
ZGV4IGFmODU5NTUxNDNiYmU5ODIxM2RkNDBkM2MyODNiNmRjMzg3NDIwMzMuLjAwODcxNjc4ODlh
NTZlMDc2Mjk4Y2ZhY2VjMGZhNjY3YWZmM2Y5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIERPTVN0cmluZ0xpc3Q7
CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSFRNTERv
Y3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIE5vZGU7
CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpAQCAtMjQzLDE3ICsyNDMsMTcgQEAg
Y2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogCiAgICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nV2l0aENh
Y2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgSlNDOjpKU1ZhbHVlIGpz
U3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYpOyAvLyBlbXB0eSBpZiB0aGUgVVJM
IGlzIG51bGwKKyAgICBKU0M6OkpTVmFsdWUganNTdHJpbmcoSlNDOjpFeGVjU3RhdGUqLCBjb25z
dCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVSTCBpcyBudWxsCiAgICAgaW5saW5lIEpTQzo6SlNW
YWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWlj
U3RyaW5nJiBzKQogICAgIHsgCiAgICAgICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBzLnN0cmluZygpKTsKICAgICB9CiAgICAgICAgIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmlu
Z09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOyAvLyBudWxsIGlmIHRoZSBz
dHJpbmcgaXMgbnVsbAotICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gbnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKKyAgICBKU0M6
OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8g
bnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKIAogICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5k
ZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7IC8vIHVuZGVmaW5lZCBpZiB0
aGUgc3RyaW5nIGlzIG51bGwKLSAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdPclVuZGVmaW5lZChK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gdW5kZWZpbmVkIGlmIHRoZSBVUkwgaXMg
bnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgVVJMJik7IC8vIHVuZGVmaW5lZCBpZiB0aGUgVVJMIGlzIG51bGwKIAogICAgIC8v
IFNlZSBKYXZhU2NyaXB0Q29yZSBmb3IgZXhwbGFuYXRpb246IFNob3VsZCBiZSB1c2VkIGZvciBh
bnkgc3RyaW5nIHRoYXQgaXMgYWxyZWFkeSBvd25lZCBieSBhbm90aGVyCiAgICAgLy8gb2JqZWN0
LCB0byBsZXQgdGhlIGVuZ2luZSBrbm93IHRoYXQgY29sbGVjdGluZyB0aGUgSlNTdHJpbmcgd3Jh
cHBlciBpcyB1bmxpa2VseSB0byBzYXZlIG1lbW9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggMzBmY2YzZWIz
ZTY1MGM3ZTNiOTM5MzZmNTM2MjFiYTMzMjY5YmRkMy4uNzA0MTU3NzZiMTdmNzBiZmY0Y2VmNGE1
ODQ3NGMxZjY1Y2MwZTE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRl
VVJMKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKICAgICBTdHJpbmcgbWV0aG9kID0gZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgK
aW5kZXggMDMxNTE2ZTBmYzZmODgxMzgxZDVhMjY3YmI1N2M2MGZkYzE5NGFlMy4uOTNiOGUwNjFk
YTlkNjBlOGNlY2IwODhiMzBhYWUzZjlhMmUwYzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKIAogICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQgVVJMLgotICAgIGJv
b2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgU2hvdWxkUmVwbGFjZURvY3Vt
ZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCA9
IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CisgICAgYm9vbCBleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPSBSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAg
ICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IGl0IGlzIE9LIHRvIGNh
bGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2ZW4gcmVlbnRyYW50bHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgKaW5kZXggNTE2MzU4
MWNjODE3OGFiODg5YzhhNDYyMTYxODY1ZTQ1ZDNkODYwZS4uMmQzYzE1OTcwZGUxYzYxOGIzNDdm
NTVmYTQzZDExMDMxY2Y2ZDYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiQ2FjaGVk
U2NyaXB0U291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUgewogcHVi
bGljOgotICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtV
UkwmIHVybCA9IEtVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uID0gVGV4
dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpKQogICAg
ICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJj
ZSwgdXJsLmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24p
KQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVC
YXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAg
ICwgbV91cmwodXJsKQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRTY3Jp
cHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkU2NyaXB0LmdldCgpOyB9
CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNv
bnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAKIHByaXZhdGU6CiAg
ICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CkBAIC03Niw3ICs3Niw3
IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3JpcHQ+IG1f
Y2FjaGVkU2NyaXB0OwogCi0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IGI4NTMyZDM2NTU4YTQwYTU5NWMyOTMyZGI2N2E3MmRiYTc4NGNhY2MuLjQ1
ZDM1YmMwZmUyYmE4NGUxZTFkNDk5MTY5MWE2OGRhMDNhYWNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTM4
Myw3ICsxMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YSh0eXBl
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAobV9pc0RPTUdsb2JhbE9iamVj
dCkKLSAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpjcmVhdGUocGF0aC0+c3RyaW5nKCksIEtVUkwo
S1VSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCkpOworICAgICAgICAgICAgZmls
ZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygp
KSwgdHlwZS0+c3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE1
NzcsNyArMTU3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9iamVjdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0SlNWYWx1ZShCbG9iOjpj
cmVhdGUoS1VSTChLVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSku
Z2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6Y3JlYXRlKFVSTChV
UkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBzaXplKS5nZXQoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdUYWc6IHsKICAgICAgICAgICAgIENhY2hlZFN0cmlu
Z1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXggYzM5YTc3NDE1MjVlYzM2NjQxZjZkYjg4YzA0
NGZlMGEzNDVjNTBmYi4uMmJjYWQ4YzgwNDA1OTNkZjQ3NTMxZWI1YjcxOGNiMTUyYWI5NDBlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
Q1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckNQUC5wbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKIAogICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJ
bmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0g
MTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siV2ViRE9NU3RyaW5nLmgifSA9IDE7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC01NzMsNyArNTczLDcgQEAgc3ViIEFkZFJldHVyblN0YXRlbWVu
dAogICAgIG15ICR0eXBlSW5mbyA9IHNoaWZ0OwogICAgIG15ICRyZXR1cm5WYWx1ZSA9IHNoaWZ0
OwogCi0gICAgIyBVc2VkIHRvIGludm9rZSBLVVJMcyAiY29uc3QgU3RyaW5nJiIgb3BlcmF0b3IK
KyAgICAjIFVzZWQgdG8gaW52b2tlIFVSTHMgImNvbnN0IFN0cmluZyYiIG9wZXJhdG9yCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGVJbmZvLT5zaWduYXR1cmUtPnR5
cGUpKSB7CiAgICAgICAgIHJldHVybiAiICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBXVEY6
OlN0cmluZyY+KCRyZXR1cm5WYWx1ZSk7XG4iOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggODFlZGEzZDlmZjg5
M2JiNTUxMTYwZjcxOWY0NWVkMTY4MjAwOWIyZC4uYjlkYjZkYzBhZjA4ZWMwMTFiY2MyMjM4MDUw
ZjAyMzY4ZmRkNTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI1MDEsNyArMjUwMSw3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1l
fSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmosIGluZm8oKSk7XG4iKTsKICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVVJM
LmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNT
dHJpbmdPclVuZGVmaW5lZChleGVjLCB0aGlzT2JqLT5pbXBsKCktPml0ZW0oaW5kZXgpKTtcbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwo
KS0+aXRlbShpbmRleCkpO1xuIik7CkBAIC0zNDM2LDcgKzM0MzYsNyBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlCiAgICAgfQogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5
cGUpKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJLVVJMLmgiLCAkY29uZGl0aW9uYWwp
OworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVVJMLmgiLCAkY29uZGl0aW9uYWwpOwogICAg
ICAgICBteSAkY29udiA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdFJl
dHVybmVkTnVsbFN0cmluZ0FzIn07CiAgICAgICAgIGlmIChkZWZpbmVkICRjb252KSB7CiAgICAg
ICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JOdWxsKGV4ZWMsICR2YWx1ZSkiIGlmICRjb252IGVx
ICJOdWxsIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtCmluZGV4IGVkZjExOWQzMWY5MzFlNGNmZTUxZWMyMTgxMDQ5ZmU5YmFj
ZjczZDcuLjQ4NWIwYzRhMGI0ZWY5NzkzMTEwNzcyZmEyOGNkYWIwMTBkZTFkODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQpAQCAtNjE4LDcgKzYxOCw3IEBAIHN1YiBBZGRJbmNsdWRlc0ZvclR5cGUKICAgICB9CiAKICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgJGlt
cGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9
ID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYjliOTJjNjg2ZjdjZDU0NjYxN2MwNTM2YjRjYjIwNTBj
YTI1NDZmNS4uNjhkNzk0ZWI0MTM3NzIwZDJmZWU1NzE4NDY1YTQ3NGJkMWJlZTE3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0yMSw3ICsyMSw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVj
dC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJUZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViRE9N
Tm9kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwCmluZGV4IGZlMzVkMmI1NjVjNDNh
NzNkZDJjYmQxMTA5NDdlY2NjMjM5MzhkZGIuLjRkYmE3ZjdjZjhkM2Y0YWYzNDMyMGQ1YzlmNDli
MDUwZmQ3YzQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxsYmFjay5jcHAKQEAgLTI2LDEwICsy
NiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkZsb2F0MzJB
cnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNpbmNsdWRlICJUZXN0Tm9kZS5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA1M2QyNTVi
ZTI1NDIyZmNiNTVlZGEwYzkyYTE1MWE4MzFkNDkxZmIzLi41YjE5OTFlZTBiMDZhNTM3Mjk4N2I1
MWUyYTgyMjY5MWVlOTdhYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAj
aW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViRXhjZXB0aW9uSGFuZGxlci5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyNzgw
NmYwNGJlMTY1MzI3ZjJhNTk2MDM5ODQ5OTdiZDFkZjg3Nzc4Li5hZDRiNTIyYjE1M2RhYzA0MmYx
ODUyYjI4OGU0MzZkYjQ5NThhMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIldlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggZjNlYWMwYmZiMTc2NTk0
ZTNhOTE1YTFiMGQ5NjQ0ODAzOTg1MWE4NS4uMGJhNDE3NzVmMTI1Zjg3YTljN2VhYTRjOWY5NTNk
MWMzYmMxOWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjIs
NyArMjIsNyBAQAogI2luY2x1ZGUgIldlYkRPTVRlc3RFdmVudFRhcmdldC5oIgogCiAjaW5jbHVk
ZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIldlYkRP
TUV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXhjZXB0aW9uLmNwcAppbmRleCA5MjM1YjNhMzA1
Yzc4NDg1ZTBmMTM3YTllNGM5YjNlNzFmYmEwMzE5Li45NGY5ZTY5MWI4MTAxYzYzYzNjMzJiNGZi
NmVkMmVjYmUwNWNmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTIx
LDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0RXhj
ZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiVGVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgogI2luY2x1ZGUg
IldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IDA5YWQzMzdkYWE3OTJkMzBkNWM1N2U5ZTBjNjVhNGVjNDI0NzAwODguLjM0NDRmYjQzYTNi
ZmRlYjA0ZTNjYjNkNDVjMzZkOWExZmQ0OWM0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0SW50ZXJm
YWNlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEludGVyZmFj
ZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiVGVzdFN1cHBsZW1l
bnRhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggZmU1NTQ0OTRjZjhlNTA3NDk5ZmEyNTIy
MTI5NDE3MGNmNWRkODhhNC4uMDk1ZjYzZjMyOWU0YzhhMGYxMTQyM2Y3YTU4YmJjNjdhZjAzODMz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiRGlj
dGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIK
ICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0VHlwZWRlZnMuY3BwCmluZGV4IDc0Zjc3M2M5YzdlYzIzNDE1YTJj
NDFlMzYyYmI0YmU5ZjA0MTcwYWIuLjYxODNhNjM0NDg1MDJjMTdmYzNmOWVlYTRlMGFhZGUxOGFj
NzZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RUeXBlZGVmcy5jcHAKQEAgLTIxLDcgKzIxLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJET01UZXN0VHlwZWRlZnMuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTVkdQb2ludC5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIlRlc3RUeXBl
ZGVmcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDA5MDJlNjky
ZTE2NDcwNGYyMTY0NmQ3ZTQ0ZjQyNzc3MjQwOTY5NzIuLjU0YjQyMWQ0ZGZlYzIyNDUwZDhjZWI0
OTFlZWIzZWM0N2QzZmJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAK
ICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAppbmRleCAyZTkzZTFhOGM5N2E1MWNiNTc2ZjFhZTZkMmNmYWI0YWJlOTcxZjAwLi5j
MTE0MjcxZWVjNDM4ZmZiZWJlYWFiZDZhYTM3N2MyNmUyOTVlN2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkpTVGVzdEV4Y2VwdGlvbi5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBm
MTQwMWEwMmViNzkzYjhiNDM4NmI5YmI0ZDNjOGMxOWI0YWI3MTk1Li4yNzNlOWI1ZGU0MWI0NjNm
NDEyM2Y1YjgyYjlhYjZiYzZiMTUwZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpIHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQogI2luY2x1
ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2OWE2YzE4
MTU4MmFmNTE3NzdhZjdiNzdmZGY0MTVkODE1ZWM1NjQzLi43YmIyZjQyMDg3YmJjYTNlZjhlNGFl
NzVhM2YxNGFiNDM2MjE5NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1
ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIkpT
Ym9vbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJT
VkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RhdGlj
UHJvcGVydHlUZWFyT2ZmLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA0ZjQ2NmM1ZWJjZjY2
NDc0NjlmZWM3YWE0NzY5YjM5MmE2ZDBmNGJiLi42MTcwNWQxYjI0NTVlZTE1ZDI1NjIxNmFmMzVj
Zjg4NTBmY2Q3YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJKU1Rlc3RDYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50VGFyZ2V0Lmgi
CiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdFR5cGVkZWZzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5tbQppbmRleCBhYjI4NjQxZDc1YWZlNjQyMjFkMjlkMWViYzRjZDgzNTVm
YjM2OWUxLi43ZGExNGIwZmQxZGIyZjI2NDgxNTQ2ODIyZjJlYjBjZGI0OTI0MTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0QWN0
aXZlRE9NT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNpbXBv
cnQgIkRPTVRlc3RBY3RpdmVET01PYmplY3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9u
SGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAi
S1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNr
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdENh
bGxiYWNrLm1tCmluZGV4IDkzYWRmOGM0OGY2YWY2YWY1NmU3YzdiYzAxOWJiYjhlMGY4MjZlOTku
LjRkZDk2ZTU5MDY0YjBhOGYxZGM3YTIxMDAwNjhhMWE3ODNmMDgwOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDYWxsYmFjay5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0
Q2FsbGJhY2subW0KQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBvcnQgIkRPTVRlc3ROb2RlSW50ZXJu
YWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJl
YWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9y
dCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJUZXN0Q2FsbGJhY2suaCIKICNp
bXBvcnQgIlRlc3ROb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
bW0KaW5kZXggMTBhOTBhNWE5YWE0ZTNjODMxNzQxN2YxOGMzMDRhMmJjYTc2NjY0Ny4uOWMyOTFk
NWY0YjUxNDBjN2QxYWJlNGY3M2E3NGJhZjI1ZWFiNjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RDdXN0b21OYW1lZEdldHRlci5tbQpAQCAtMzMsNyArMzMsNyBAQAogI2ltcG9ydCAiRE9NVGVz
dEN1c3RvbU5hbWVkR2V0dGVySW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJz
LmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIK
KyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW1w
b3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RF
dmVudENvbnN0cnVjdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KaW5kZXggODA5ZDU1MzdhNTc1ODNlZDc0
OWI2ZDRjN2JlNTIwZDc0YWY4MTA0Ny4uNzFkYWI1MDQwZTdjNDNiNTNmYWVmNjAyMmJjMTRkZTJk
NzE4ZDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KQEAgLTM0
LDcgKzM0LDcgQEAKICNpbXBvcnQgIkRPTVRlc3RFdmVudENvbnN0cnVjdG9ySW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVj
U3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBvcnQgIlRocmVhZENoZWNrLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlT2JqQ0V4dHJhcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0Lm1tCmluZGV4IGZh
MjQ0N2Q4ZTdmNGYxNGQzYTJmM2M1ZTgxMjVlZWJlZjg5ZTk1YzUuLjdlOWY0OWU0YmY2OGUwZGE3
ZjhmZGNmOTA4ZGQ1NjQyMzQzZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRhcmdldC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRUYXJnZXQubW0K
QEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIkV2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNp
bXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTm9kZS5oIgogI2ltcG9y
dCAiT2JqQ0V2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIlRlc3RFdmVudFRhcmdldC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RFeGNlcHRpb24ubW0KaW5kZXggZDJiOTU0ODJiZDRmYzI0MDcxY2VlYmYxMDk1MTQw
N2Q4MjdjNzgzOC4uMWRmYjc5MmY2NzNiYWRlZTVmMGNmZDE5NGJkN2RmY2I3MGRmMmU4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXhjZXB0aW9uLm1tCkBAIC0zMyw3ICszMyw3IEBACiAjaW1wb3J0ICJET01U
ZXN0RXhjZXB0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAj
aW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEV4Y2VwdGlvbi5oIgogI2ltcG9ydCAiVGhyZWFkQ2hl
Y2suaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEludGVyZmFj
ZS5tbQppbmRleCAyZTIxYmZkOTFkNzIzODY3MTJkN2Y0NzAyMjlmNzY4ZjUyN2M2NmZkLi5iNGU0
ZGE2ZDk0NmVjYjJkMjk2NDYzMTVjODViMzg3YzU2ZDVmMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SW50ZXJmYWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RJbnRl
cmZhY2UubW0KQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQgIkRPTVRlc3RPYmpJbnRlcm5hbC5o
IgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
b2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJUZXN0T2JqLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQppbmRleCAzMzFhYzY2MzU2OWVkMGJiOWRiNmI1YzZiZjM4NzlkMmZlYzM3NzAy
Li5kOGNlMzQ0YTg5OWU1MmM3NTQyNGFlNWNiODQwYjYxY2JkYmZhNTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2lt
cG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0
ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZHRG9jdW1lbnQuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBl
ZGVmcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RUeXBlZGVmcy5tbQppbmRleCA3ZTNkODM4ZjBiMjdjYzZkODA5YWJlNTY2YzkyZmRiNTgwYjUw
NzgzLi5iZDU4Y2UwNzNmOTYxMjNjOTlhNmJjNTFlMmQyMTQ2YWI4ZTU0MzI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0VHlwZWRl
ZnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdFR5cGVkZWZzLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJET01UZXN0VHlwZWRl
ZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgi
CiAjaW1wb3J0ICJTVkdQb2ludC5oIgogI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAjaW1wb3J0ICJUZXN0VHlwZWRlZnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJ
bWFnZVZhbHVlLmNwcAppbmRleCA0OTZmZDhjNTkwOGJkYjkxYzg1NGRhYzU3ZjNhZmQ3MDE3ZjAz
ODc1Li5kMTM3YjAzY2JjMjUwODFlMWJhY2NiY2JhNDBhOGNiODJmZmJmNjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAg
Ym9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjppc1NWR0N1cnNvcigpIGNvbnN0CiB7CiAgICAgaWYg
KG1faW1hZ2VWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpIHsKICAgICAgICAgUmVmUHRyPENTU0ltYWdl
VmFsdWU+IGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NJbWFnZVZhbHVlKj4obV9pbWFnZVZh
bHVlLmdldCgpKTsKLSAgICAgICAgS1VSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgaW1hZ2VWYWx1
ZS0+dXJsKCkpOworICAgICAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIGltYWdlVmFsdWUt
PnVybCgpKTsKICAgICAgICAgcmV0dXJuIGt1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmNwcAppbmRleCA0MDM3NDJkNDVlNmVmYzZjYTU4Y2JlYzNkNmVhYjViMDNlNzYwMzg0
Li42ZTY1MzU2N2FlY2FiNGE5MjA4ZDBiNzM4MjAwZjc0N2QxN2VmNTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmlu
ZyBDU1NGb250RmFjZVNyY1ZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
cmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5
bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIGlmICghaXNMb2NhbCgp
KQogICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBzdHlsZVNoZWV0LT5jb21wbGV0ZVVS
TChtX3Jlc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApp
bmRleCA0MjliYmI0ZTZlN2VmYmE1MTZiOTc4Zjk1ZGEyMDg2ZTQ3MzZmNTc5Li45OWExMTQ0MjNj
YjliNDhkYjQxYTJmZTg1N2YwNmMzNjk0NmFhZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsK
KyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBjb25z
dCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IDcyNjhlZTBlZDQ2OWI1YWVkYWNmYzY5MTQ5ZjQyNjBkMzg3ZWQ1MTUuLjM0YTYxODYwZTYwMDM5
N2MyNWQ0Y2Q1NDlmNjQzMjY1YmM1YmY3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBA
IC0yNTQsNyArMjU0LDcgQEAgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2Vy
Q29udGV4dCgpCiAgICAgcmV0dXJuIHN0cmljdENvbnRleHQ7CiB9CiAKLUNTU1BhcnNlckNvbnRl
eHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBtb2RlLCBjb25zdCBLVVJMJiBiYXNl
VVJMKQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChDU1NQYXJzZXJNb2RlIG1v
ZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCkKICAgICA6IGJhc2VVUkwoYmFzZVVSTCkKICAgICAsIG1v
ZGUobW9kZSkKICAgICAsIGlzSFRNTERvY3VtZW50KGZhbHNlKQpAQCAtMjcyLDcgKzI3Miw3IEBA
IENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBtb2RlLCBj
b25zdCBLVVJMJiBiYXNlVVJMKQogewogfQogCi1DU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJD
b250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0KQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQog
ICAgIDogYmFzZVVSTChiYXNlVVJMLmlzTnVsbCgpID8gZG9jdW1lbnQuYmFzZVVSTCgpIDogYmFz
ZVVSTCkKICAgICAsIGNoYXJzZXQoY2hhcnNldCkKICAgICAsIG1vZGUoZG9jdW1lbnQuaW5RdWly
a3NNb2RlKCkgPyBDU1NRdWlya3NNb2RlIDogQ1NTU3RyaWN0TW9kZSkKQEAgLTE2MTUsMTYgKzE2
MTUsMTYgQEAgdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGllcygpCiAgICAgbV9oYXNGb250
RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KIAotS1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRlVVJM
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQorVVJM
IENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIGlmIChjb250ZXh0LmNoYXJz
ZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChjb250ZXh0LmJhc2VVUkwsIHVybCk7
Ci0gICAgcmV0dXJuIEtVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNldCk7
CisgICAgICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwpOworICAgIHJldHVybiBV
UkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hhcnNldCk7CiB9CiAKLUtVUkwgQ1NT
UGFyc2VyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1VSTCBDU1NQYXJz
ZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBj
b21wbGV0ZVVSTChtX2NvbnRleHQsIHVybCk7CiB9CkBAIC04Nzg0LDcgKzg3ODQsNyBAQCBQYXNz
UmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VNaXhGdW5j
dGlvbihDU1NQYXJzZXJWYWx1ZQogICAgICAgICB1bnNpZ25lZCBhcmdOdW1iZXIgPSBhcmdzTGlz
dC0+Y3VycmVudEluZGV4KCk7CiAgICAgICAgIGlmICghYXJnTnVtYmVyKSB7CiAgICAgICAgICAg
ICBpZiAoYXJnLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAg
ICAgICAgICAgS1VSTCBzaGFkZXJVUkwgPSBjb21wbGV0ZVVSTChhcmctPnN0cmluZyk7CisgICAg
ICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IFdlYktpdENTU1NoYWRlclZhbHVlOjpjcmVhdGUoc2hhZGVy
VVJMLnN0cmluZygpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChhcmdOdW1i
ZXIgPT0gMSB8fCBhcmdOdW1iZXIgPT0gMikgewpAQCAtODk3NCw3ICs4OTc0LDcgQEAgUGFzc1Jl
ZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUN1c3RvbUZpbHRlckZ1
bmN0aW9uV2l0aElubGluZVMKICAgICAgICAgaWYgKGFyZy0+aWQgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVOb25lKTsKICAgICAgICAgZWxzZSBpZiAoYXJnLT51bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICBLVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRl
VVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgIFVSTCBzaGFkZXJVUkwgPSBjb21wbGV0ZVVS
TChhcmctPnN0cmluZyk7CiAgICAgICAgICAgICB2YWx1ZSA9IFdlYktpdENTU1NoYWRlclZhbHVl
OjpjcmVhdGUoc2hhZGVyVVJMLnN0cmluZygpKTsKICAgICAgICAgICAgIGhhZEF0TGVhc3RPbmVD
dXN0b21TaGFkZXIgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGFyZ3NMaXN0LT5jdXJyZW50
SW5kZXgoKSA9PSAxICYmIGFyZy0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBmZmQxZDllMTc2MzIzNjJiM2E2ZjczMmJjNDMxNWVj
ODdhMWYyZWNlLi42Y2MxNDM5NWY0OGZkNDQ1OWRmNjNiYzhkNTMwNjIyZTkyNWNiYmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCkBAIC00MjIsNyArNDIyLDcgQEAgcHVibGljOgogICAgIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1pdGl2ZVZhcmlhYmxlTmFtZVZhbHVl
KENTU1BhcnNlclZhbHVlKik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBLVVJMIGNvbXBsZXRlVVJM
KGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgc3RhdGlj
IFVSTCBjb21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29uc3QgU3RyaW5nJiB1
cmwpOwogCiAgICAgTG9jYXRpb24gY3VycmVudExvY2F0aW9uKCk7CiAKQEAgLTUwMiw3ICs1MDIs
NyBAQCBwcml2YXRlOgogICAgIGlubGluZSBib29sIGluU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGV4dC5tb2RlID09IENTU1N0cmljdE1vZGUgfHwgbV9jb250ZXh0Lm1vZGUgPT0g
U1ZHQXR0cmlidXRlTW9kZTsgfQogICAgIGlubGluZSBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IENTU1F1aXJrc01vZGU7IH0KICAgICAKLSAgICBL
VVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKKyAgICBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogCiAgICAgdm9pZCByZWNoZWNrQXRLZXl3
b3JkKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlck1v
ZGUuaAppbmRleCA1NzM1N2Y1ODBkYjUwMGNkOGEyMzZkMjM5MTQ2MTFiNjNjMjgyYTIxLi5iNDdj
MDE5NTM0Njc5YWRmMzM5OGQ1NWJhNWIwZjg5MTg5YmZjYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXJNb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQ1NTUGFyc2VyTW9kZV9oCiAj
ZGVmaW5lIENTU1BhcnNlck1vZGVfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3LDEwICs1NywxMCBAQCBpbmxpbmUg
Ym9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogc3Ry
dWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgS1VSTCYgYmFz
ZVVSTCA9IEtVUkwoKSk7Ci0gICAgQ1NTUGFyc2VyQ29udGV4dChEb2N1bWVudCYsIGNvbnN0IEtV
UkwmIGJhc2VVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5n
KCkpOworICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBiYXNl
VVJMID0gVVJMKCkpOworICAgIENTU1BhcnNlckNvbnRleHQoRG9jdW1lbnQmLCBjb25zdCBVUkwm
IGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7
CiAKLSAgICBLVVJMIGJhc2VVUkw7CisgICAgVVJMIGJhc2VVUkw7CiAgICAgU3RyaW5nIGNoYXJz
ZXQ7CiAgICAgQ1NTUGFyc2VyTW9kZSBtb2RlOwogICAgIGJvb2wgaXNIVE1MRG9jdW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCBiZjIyMGNmYjNlODBh
NzU4MzBhMWVjYmE1ZmRiYmMzODZmMmRiNTU1Li5iNTllODA4YWI5MWVlZGZlOGRjNDcxMzI5NTY5
YzlhYThhNGYxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
QEAgLTEyMDMsNyArMTIwMyw3IEBAIGJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6Omhhc1ZhcmlhYmxl
UmVmZXJlbmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjph
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5
bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NQcmltaXRpdmVWYWx1
ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgY29uc3Qg
U3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAogewogICAgIGlmIChtX3ByaW1p
dGl2ZVVuaXRUeXBlID09IENTU19VUkkpCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMs
IHN0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKG1fdmFsdWUuc3RyaW5nKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDY0MjA2ZjhjOTQxYTJjZDU1MGEzNmM1NmNhMDRm
NmJkMjg3Y2I5YzcuLjY0OWE3NGI4YTNiOTE3OTEzZWFmMDZhNGM5NzRmMjlkZTM2MGNhMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMzAsNyArMzMwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBpc1F1aXJrVmFsdWUoKSB7IHJldHVybiBtX2lzUXVpcmtWYWx1
ZTsgfQogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50
cyopIGNvbnN0OwogCiAgICAgTGVuZ3RoIHZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBjZjcxNDk1
ZDk4MWVmMDczNTM3M2ZkZGU2Njc1MGQ1MmVlNTI2M2ViLi4xNWFlOGZhZmIzOGE5NTMzNjNlMThj
ZDRmYzNjOTY5ODU3ZWE0ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVm
bGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNw
cApAQCAtNDksNyArNDksNyBAQCBTdHJpbmcgQ1NTUmVmbGVjdFZhbHVlOjpjdXN0b21TZXJpYWxp
emVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdAogfQogI2VuZGlmCiAK
LXZvaWQgQ1NTUmVmbGVjdFZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25z
dAordm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29u
c3QKIHsKICAgICBpZiAobV9tYXNrKQogICAgICAgICBtX21hc2stPmFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5o
CmluZGV4IDBlZjExY2U0YjE0YWU4MjNlZDNlMTgxOTY2NGVlNmMyZjU3MjA3YmQuLjgxZmJlOWY0
NmMxYjM4YTVlYzBkMDUwMTA0ZWVmNzljMWIwZWY4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVm
bGVjdFZhbHVlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjdXN0b21T
ZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0
cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0Owor
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
UmVmbGVjdFZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApp
bmRleCA0Y2Q1NmJhYTc5NmZmNWJkMzZhNTc3MWQwYjQ2MDhkNWE5ODQxZTNjLi5lOGNjZjI4ZTUx
ZTcwZTFkMjcxNzBiZjE5MWNlNjJmYWJmNTUwY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NT
U3R5bGVTaGVldDo6Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBzCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KHNoZWV0LCBvd25lck5vZGUsIGZhbHNl
KSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
SW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZykKK1Bhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3Jl
YXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nKQogewogICAgIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChvd25l
ck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZW5jb2RpbmcpOwogICAgIFJlZlB0cjxTdHlsZVNo
ZWV0Q29udGVudHM+IHNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoYmFzZVVSTC5z
dHJpbmcoKSwgcGFyc2VyQ29udGV4dCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgYm9vbCBDU1NTdHls
ZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNJbmxpbmVTdHls
ZXNoZWV0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBLVVJMIGJhc2VVUkwgPSBtX2NvbnRl
bnRzLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VVUkwgPSBtX2NvbnRlbnRzLT5iYXNlVVJMKCk7
CiAgICAgaWYgKGJhc2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBvd25lckRvY3VtZW50KCk7CkBAIC0zNjMsNyArMzYzLDcgQEAg
U3RyaW5nIENTU1N0eWxlU2hlZXQ6OmhyZWYoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRz
LT5vcmlnaW5hbFVSTCgpOwogfQogCi1LVVJMIENTU1N0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25z
dAorVVJMIENTU1N0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX2Nv
bnRlbnRzLT5iYXNlVVJMKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBi
MzA4YmQxZDg1MmNhYmE4MzJhMWUyOWZiN2RlZWE0ZDk2MzRiMzU3Li4zMmI1Y2UxMGEzNDU3ZWFi
YjIxN2FiMTFjYTgzYjMxZGJmNDNkMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldCBGSU5BTCA6IHB1YmxpYyBTdHls
ZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBj
cmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+LCBDU1NJbXBvcnRSdWxlKiBvd25l
clJ1bGUgPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUo
UGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+LCBOb2RlKiBvd25lck5vZGUpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZUlubGluZShOb2RlJiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJpbmcoKSk7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5lKE5vZGUmLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwogCiAgICAgdmlydHVhbCB+Q1NTU3R5
bGVTaGVldCgpOwogCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9vd25lclJ1bGU7IH0KLSAgICB2
aXJ0dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgpIHsgbV9vd25lclJ1
bGUgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBiMzY5OTBkODkxM2FlODQ3NDFh
NTFiZDQwZTA5OGU1ODBmNWUwNzJkLi43NTE3NWU1OWVhMWRmYzZkMmFjNDA3ZGUxMDFiZjgwYzEw
NDdmNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDU1NW
YWx1ZTo6VHlwZSBDU1NWYWx1ZTo6Y3NzVmFsdWVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gQ1NT
X0NVU1RPTTsKIH0KIAotdm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVl
dCkgY29uc3QKK3ZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29u
c3QKIHsKICAgICAvLyBUaGlzIHNob3VsZCBnZXQgY2FsbGVkIGZvciBpbnRlcm5hbCBpbnN0YW5j
ZXMgb25seS4KICAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApp
bmRleCA3ZTQ4MDI3ODc5Y2Q5MjU1YTJhN2QwZDU5NzdjNGFjMDExMTUzYTc0Li41MDZlMjVkODVh
ZDEzYjE1OWI1NTgyMGY3ODRlZjllMmVmMmQ5YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaApAQCAt
MjIsNyArMjIsNyBAQAogI2RlZmluZSBDU1NWYWx1ZV9oCiAKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogCiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCi0gICAgdm9pZCBh
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggNDlmNWM3Yzc0MWY5MWE5ZWQ0N2JmOGI5MTE5ZTNj
N2IzY2Y4NjRlYi4uNzczZTY0MjUxMTlmMzUzNzlkZWJmNGY4N2Q5MmRjZmNjMWRiNTJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBTdHJpbmcg
Q1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbgogfQogI2VuZGlmCiAKLXZvaWQgQ1NTVmFsdWVMaXN0OjphZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVl
dENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRD
b250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fdmFsdWVz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuaAppbmRleCA5ZWUxYWZhOTI5YTc1ODAxMTY5ZTI5MjdiMjY3M2Q2Zjlm
MGJiZWU4Li4yYmRkOWU1NmVjOGM1NzM0ZGU1MjVkZWVkOTQ5ODU2ODBmZDU3NGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBTdHJp
bmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKGNvbnN0IEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMq
KSBjb25zdDsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAogICAgIGJvb2wgaGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDcxMWRhZmRkNGM3NWI1MTgz
Y2NjNjIxMDgxZDg1ZGUyMzliOGNiOTkuLmIyYTBmYTc0Njc5ZGNhZDhiNTBiMjUzMDUyYTVmM2M2
N2I4NDAwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRl
ci5jcHAKQEAgLTE5OTgsNyArMTk5OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAg
ICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAgICAgICAgIFN0cmluZyBjc3NVUkxW
YWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICAgICAgICAg
IEtVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChjc3NVUkxW
YWx1ZSk7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50
KCkuY29tcGxldGVVUkwoY3NzVVJMVmFsdWUpOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJ
dCBkb2Vzbid0IHdvcmsgd2l0aCBmb3J3YXJkIG9yIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzIChz
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDA1KQogICAgICAg
ICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIFJlZmVyZW5jZUNsaXBQ
YXRoT3BlcmF0aW9uOjpjcmVhdGUoY3NzVVJMVmFsdWUsIHVybC5mcmFnbWVudElkZW50aWZpZXIo
KSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
CmluZGV4IDVmNzEwMzIyMTM1NmRmODZhY2JiNjI5MzIxMjhjMjA5MzlkMDcwODQuLjFmNWMxNWIy
ZWYwY2RlNmJlNDZkYWVlYTI4YTYzNjQ4MWY4Y2VhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgTXV0YWJsZVN0eWxl
UHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZsaWN0KGNvbnN0IFN0eWxlUHJvcGVy
dHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KG90aGVyLnByb3BlcnR5QXQoaSkudG9D
U1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBTdHlsZVByb3BlcnR5U2V0OjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRzKiBj
b250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscywgU3R5bGVTaGVldENvbnRlbnRz
KiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVy
dHlDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA0ZWFiYjNiYzU0MmMyYmJiMzY2NGNm
MWIzNGZhZWVlMWJlYzE5Y2I5Li4yMjE2YTA0ZmI1NTIzNDZiM2ViMzUwMTlkNWI0N2Q5M2M4ZmNj
ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOwogY2xhc3MgSW1tdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldDsKIGNs
YXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENTU1BhcnNlck1vZGU+KG1fY3NzUGFy
c2VyTW9kZSk7IH0KIAotICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBjb25zdDsK
KyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBTdHls
ZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBjb25zdDsKIAogICAgIFBhc3NSZWZQ
dHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVDb3B5KCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBpbW11dGFibGVDb3B5SWZOZWVkZWQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2ZjQ1YWEzYjI5
MGIwYzEwNDM5NjU5ZDljODY2YTgxNjBiNTA2OTg0Li5mYWFhYzA5MmYzYzdiN2MzMGE4NWFjOTgy
YmY5ZmE4NzhjNzA4YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0z
NDIwLDggKzM0MjAsOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IFN0eWxlUmVz
b2x2ZXI6Omxvb2t1cEN1c3RvbUZpbHRlclByb2dyYW0oV2ViS2l0QwogICAgIEN1c3RvbUZpbHRl
clByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKIHsKICAg
ICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX3N0YXRlLmRv
Y3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBLVVJMIHZlcnRleFNoYWRlclVS
TCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpIDogS1VSTCgpOwotICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwgPSBmcmFnbWVu
dFNoYWRlciA/IGZyYWdtZW50U2hhZGVyLT5jb21wbGV0ZVVSTChjYWNoZWRSZXNvdXJjZUxvYWRl
cikgOiBLVVJMKCk7CisgICAgVVJMIHZlcnRleFNoYWRlclVSTCA9IHZlcnRleFNoYWRlciA/IHZl
cnRleFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogVVJMKCk7Cisg
ICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMID0gZnJhZ21lbnRTaGFkZXIgPyBmcmFnbWVudFNoYWRl
ci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogVVJMKCk7CiAgICAgUmVmUHRy
PFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsKICAgICBpZiAobV9jdXN0b21GaWx0
ZXJQcm9ncmFtQ2FjaGUpCiAgICAgICAgIHByb2dyYW0gPSBtX2N1c3RvbUZpbHRlclByb2dyYW1D
YWNoZS0+bG9va3VwKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclVSTCwgZnJh
Z21lbnRTaGFkZXJVUkwsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKQEAg
LTM3ODAsNyArMzc4MCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0
aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSogc3Zn
RG9jdW1lbnRWYWx1ZSA9IHN0YXRpY19jYXN0PFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUqPihh
cmd1bWVudCk7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IG1fc3RhdGUuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChzdmdEb2N1bWVudFZhbHVlLT51cmwoKSk7CisgICAgICAgICAgICBVUkwgdXJsID0g
bV9zdGF0ZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN2Z0RvY3VtZW50VmFsdWUtPnVybCgpKTsK
IAogICAgICAgICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9u
ID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoc3ZnRG9jdW1lbnRWYWx1ZS0+dXJs
KCksIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSwgb3BlcmF0aW9uVHlwZSk7CiAgICAgICAgICAg
ICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKHN2Z0RvY3VtZW50
VmFsdWUtPnVybCgpLCBtX3N0YXRlLmRvY3VtZW50KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAppbmRleCA2YTE2MTk2Y2MyYzRiZDBhZTFlMjhmYmE0ZWRlODhmOThiODVmMGVmLi42
NzU0ZDdkZDViZWE1MDNmZGI5YzM5NzU4OTMxOWJlMzEyYWJhOWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGVwcmVjYXRlZFN0eWxlQnVp
bGRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKLWNs
YXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBLZXlmcmFt
ZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZUltcG9ydC5jcHAKaW5kZXggMDk1NjYwOTk5N2YyMmI3MGQ2MmJiZDdiMTcyOWFhNzZkM2M2
NTdiMi4uNWY0MzA2ZjdkOTkyMzQxZmE4NmZlNDdiOGE3OGQyMzkxMWM1NTZiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU3R5bGVSdWxl
SW1wb3J0Ojp+U3R5bGVSdWxlSW1wb3J0KCkKICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVtb3Zl
Q2xpZW50KCZtX3N0eWxlU2hlZXRDbGllbnQpOwogfQogCi12b2lkIFN0eWxlUnVsZUltcG9ydDo6
c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVk
U3R5bGVTaGVldCkKK3ZvaWQgU3R5bGVSdWxlSW1wb3J0OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYg
KG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5jbGVhck93bmVyUnVsZSgpOwpA
QCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVlc3RTdHlsZVNo
ZWV0KCkKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBLVVJMIGFic1VSTDsKKyAgICBVUkwgYWJzVVJMOwogICAgIGlmICghbV9wYXJlbnRTdHls
ZVNoZWV0LT5iYXNlVVJMKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVo
ZWV0J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNVUkwgPSBLVVJMKG1fcGFyZW50
U3R5bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOworICAgICAgICBhYnNVUkwgPSBVUkwo
bV9wYXJlbnRTdHlsZVNoZWV0LT5iYXNlVVJMKCksIG1fc3RySHJlZik7CiAgICAgZWxzZQogICAg
ICAgICBhYnNVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobV9zdHJIcmVmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCmluZGV4IGVlNTRkYjllNmI5MDcwN2E2ODRiMTIwMWRl
ZWQzMGE3NTQ5MjFjZGUuLjQ1MjEyNGZlMWYxN2EyMjU1YzczYWYxZmFjNjJmMzljMzIxMDY3NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJp
dmF0ZToKICAgICBwdWJsaWM6CiAgICAgICAgIEltcG9ydGVkU3R5bGVTaGVldENsaWVudChTdHls
ZVJ1bGVJbXBvcnQqIG93bmVyUnVsZSkgOiBtX293bmVyUnVsZShvd25lclJ1bGUpIHsgfQogICAg
ICAgICB2aXJ0dWFsIH5JbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoKSB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hl
ZXQqIHNoZWV0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKICAgICAgICAgewogICAgICAgICAgICAg
bV9vd25lclJ1bGUtPnNldENTU1N0eWxlU2hlZXQoaHJlZiwgYmFzZVVSTCwgY2hhcnNldCwgc2hl
ZXQpOwogICAgICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN0eWxl
UnVsZUltcG9ydCogbV9vd25lclJ1bGU7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0Q1NTU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmlu
ZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOworICAgIHZvaWQgc2V0Q1NT
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CiAgICAgZnJpZW5k
IGNsYXNzIEltcG9ydGVkU3R5bGVTaGVldENsaWVudDsKIAogICAgIFN0eWxlUnVsZUltcG9ydChj
b25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0LmgKaW5kZXggNjBiYmI1ZjI2N2U4YmNkM2ZjNmQzYWIzNWU1NDZiYzRlYzQ4ZWFk
OC4uMzg5OTE2YWQ3NDdmZTc0ZDQ5MDQ3MDI0Mzg5NzM3OTQ4YTRlNzM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVTaGVldC5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hlZXRfaAogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVk
ZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0xp
c3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkgPSAwOwot
ICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXgg
ZWY1ZDUzOTdiNDNiMDRkNDQ5ZmYzMmU3ZWNjMjYwNzVkZjU5ZmRmOS4uZjU1Zjc0OGZlYTk5OGNl
MGQ2N2UzNjUwNzdkMDU0MjRmM2NlMjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAKQEAgLTM5NywxMiArMzk3LDEyIEBAIERvY3VtZW50KiBTdHlsZVNoZWV0
Q29udGVudHM6OnNpbmdsZU93bmVyRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBvd25lck5v
ZGUgPyAmb3duZXJOb2RlLT5kb2N1bWVudCgpIDogMDsKIH0KIAotS1VSTCBTdHlsZVNoZWV0Q29u
dGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIFN0eWxlU2hl
ZXRDb250ZW50czo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIENTU1BhcnNlcjo6Y29tcGxldGVVUkwobV9wYXJzZXJDb250ZXh0LCB1cmwpOwogfQog
Ci12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKIHsKICAgICBEZXF1ZTxTdHlsZVNo
ZWV0Q29udGVudHMqPiBzdHlsZVNoZWV0UXVldWU7CiAgICAgc3R5bGVTaGVldFF1ZXVlLmFwcGVu
ZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAppbmRleCA2YjQ5
Nzk2MjhiMmRhZDQ4NmVlNDhmNDg4NDk2OGEwZTE4ZDUwZmE0Li5mOWU2OTQ1YzY5Njg4OGQ1YzNm
N2I0YzZhNzE1ODM2NzBjYmIwNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hlZXRDb250ZW50c19oCiAK
ICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTgwLDggKzgwLDggQEAgcHVi
bGljOgogICAgIGJvb2wgbG9hZENvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZENvbXBs
ZXRlZDsgfQogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0
OwogCi0gICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7Ci0gICAg
dm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOworICAgIFVS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CisgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jik7CiAKICAgICB2b2lkIHNldElzVXNl
clN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNVc2VyU3R5bGVTaGVldCA9IGI7IH0KICAgICBib29s
IGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlclN0eWxlU2hlZXQ7IH0K
QEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhpcyBzdHlsZSBzaGVldC4gVGhp
cyBwcm9wZXJ0eSBwcm9iYWJseSBpc24ndCB1c2VmdWwgZm9yIG11Y2ggZXhjZXB0CiAgICAgLy8g
dGhlIEphdmFTY3JpcHQgYmluZGluZyAod2hpY2ggbmVlZHMgdG8gdXNlIHRoaXMgdmFsdWUgZm9y
IHNlY3VyaXR5KS4KICAgICBTdHJpbmcgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX29y
aWdpbmFsVVJMOyB9Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CisgICAgY29uc3QgVVJMJiBiYXNlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZXJDb250ZXh0LmJhc2VVUkw7IH0KIAogICAgIHVuc2lnbmVkIHJ1bGVD
b3VudCgpIGNvbnN0OwogICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGVBdCh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRl
eCAxZDNhZDI4NzNjNDg4MmExYWE1Yjk2YzNjZjBiZDdkZGI1ZGZmNTk5Li41Yzk2MmM1OTYwZGJk
ZjNhOTA3NDMzNmMyOGRjNDlhYzlhYTgxYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0
b3JzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHls
ZVBlbmRpbmdTaGFkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC01NSw3ICs1NSw3IEBAIFdlYktpdENTU1NoYWRlclZhbHVlOjp+V2ViS2l0Q1NTU2hhZGVyVmFs
dWUoKQogewogfQogCi1LVVJMIFdlYktpdENTU1NoYWRlclZhbHVlOjpjb21wbGV0ZVVSTChDYWNo
ZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAorVVJMIFdlYktpdENTU1NoYWRlclZhbHVl
Ojpjb21wbGV0ZVVSTChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAogewogICAg
IHJldHVybiBsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggNjliZTUxNmZhMjVmY2I2
ODVkNGFmNGQxODgwNmRlYzczOWI3MzY4NS4uNDJiYTdkZmQxZmQxZTNmZTQzYjliOTAzYjEyMzZl
OGE5Y2Q2MDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU3R5bGVDYWNoZWRT
aGFkZXI7CiBjbGFzcyBTdHlsZVNoYWRlcjsKIApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3RyaW5nJiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAg
IHZvaWQgc2V0Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KSB7IG1fZm9ybWF0ID0gZm9ybWF0
OyB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29uc3Q7
CisgICAgVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29uc3Q7CiAgICAg
U3R5bGVDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlciopOwog
ICAgIFN0eWxlU2hhZGVyKiBjYWNoZWRPclBlbmRpbmdTaGFkZXIoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1NzRhYTE1MTkyZWJiZmZjNmJlYzQw
NWYyZGFkYTZkYjlkYjcwNi4uODhjZDY2ZGY1NmZkZTExNjEzZmNkYjJhNDQ4YmIyYjhhOTE3NGFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0yMzMsMTMg
KzIzMywxMyBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUgogICAgIFJlZlB0cjxEb2N1bWVudD4g
ZG9jOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBTVkdOYW1lczo6
c3ZnTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIEtV
UkwoKSk7CisgICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogICAg
IGVsc2UKICNlbmRpZgogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVzOjp4aHRtbE5h
bWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1MKDAsIEtVUkwo
KSk7CisgICAgICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwoKSk7CiAgICAg
ZWxzZQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7CisgICAgICAg
IGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogCiAgICAgZG9jLT5zZXRTZWN1cml0
eU9yaWdpbihtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOwogCkBAIC0zMTAsNyArMzEwLDcg
QEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIAogUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBSZWZQdHI8SFRN
TERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICBSZWZQ
dHI8SFRNTERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogICAg
IGQtPm9wZW4oKTsKICAgICBkLT53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iKTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQpAQCAtMzE5LDcgKzMxOSw3
IEBAIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlSFRN
TERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0CiAgICAgcmV0dXJuIGQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
Y29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBp
blZpZXdTb3VyY2VNb2RlKQorUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246
OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogewogICAgIGlmIChpblZpZXdTb3VyY2VN
b2RlKQogICAgICAgICByZXR1cm4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3JlYXRlKGZyYW1l
LCB1cmwsIHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAppbmRleCBm
OWFjNmZmNTk2N2FkZDFmZTNlNjE2ZGRiYjI2ZTAwY2I5Njg1YTFlLi5hYmFmY2E1M2YzMGFmMzZk
MzI5Y2Q4MmFlNTg2MWQyYzk0OGRjNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50
VHlwZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxIVE1MRG9j
dW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogICAgIC8v
IE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
b2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUqLCBj
b25zdCBLVVJMJiwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgRnJhbWUq
LCBjb25zdCBVUkwmLCBib29sIGluVmlld1NvdXJjZU1vZGUpOwogCiAgICAgc3RhdGljIGJvb2wg
aXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKICAgICBzdGF0aWMgYm9vbCBp
c1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDMyMzA1NDk2YzFjOTk4MTJiNDFhOGVhZTJlNmZiNGQwNTM2Yjk4MDMuLjBiMTlj
ZmJkNDc0ZThhYWExZDlmMDY5NTBjZmEyZjExZTM1Yjg2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkTmFtZVBh
cnQoVUNoYXIzMiBjKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRJ
bmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIGJv
b2wgc2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI29yaWdpbi0wCiAgICAgLy8KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBjYW5B
Y2Nlc3NBbmNlc3Rvcihjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlU2VjdXJpdHlPcmlnaW4s
IEZyYW1lKgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0
aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgYWN0aXZlVVJMLCBjb25z
dCBjaGFyKiByZWFzb24pCitzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2Uo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29uc3QgY2hhciogcmVhc29uKQog
ewogICAgIFN0cmluZyBtZXNzYWdlID0gIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5p
dGlhdGUgbmF2aWdhdGlvbiBmb3IgZnJhbWUgd2l0aCBVUkwgJyIgKyBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkgKyAiJyBmcm9tIGZyYW1lIHdpdGggVVJMICciICsgYWN0aXZlVVJM
LnN0cmluZygpICsgIicuICIgKyByZWFzb24gKyAiXG4iOwogCkBAIC00MDAsNyArNDAwLDcgQEAg
Ym9vbCBUZXh0QXV0b1NpemluZ1RyYWl0czo6aXNEZWxldGVkVmFsdWUoY29uc3QgVGV4dEF1dG9T
aXppbmdLZXkmIHZhbHVlKQogfQogI2VuZGlmCiAKLURvY3VtZW50OjpEb2N1bWVudChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzKQorRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3Vt
ZW50Q2xhc3NlcykKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1lbnQpCiAgICAg
LCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fc3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyKHRo
aXMsICZEb2N1bWVudDo6c3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyRmlyZWQsIHRpbWVCZWZv
cmVUaHJvd2luZ0F3YXlTdHlsZVJlc29sdmVyQWZ0ZXJMYXN0VXNlSW5TZWNvbmRzKQpAQCAtMTM5
NCw3ICsxMzk0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1lbnRVUkkoY29uc3QgU3RyaW5n
JiB1cmkpCiAgICAgdXBkYXRlQmFzZVVSTCgpOwogfQogCi1LVVJMIERvY3VtZW50OjpiYXNlVVJJ
KCkgY29uc3QKK1VSTCBEb2N1bWVudDo6YmFzZVVSSSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YmFzZVVSTDsKIH0KQEAgLTI2MjMsOSArMjYyMyw5IEBAIHZvaWQgRG9jdW1lbnQ6OmxvZ0V4Y2Vw
dGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
CiAgICAgYWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJv
ck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjYWxsU3RhY2sp
OwogfQogCi12b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1
bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9
IHVybC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogdXJsOworICAgIGNvbnN0IFVSTCYgbmV3VVJM
ID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CiAgICAgaWYgKG5ld1VSTCA9PSBt
X3VybCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNl
VVJMKCkKIHsKLSAgICBLVVJMIG9sZEJhc2VVUkwgPSBtX2Jhc2VVUkw7CisgICAgVVJMIG9sZEJh
c2VVUkwgPSBtX2Jhc2VVUkw7CiAgICAgLy8gRE9NIDMgQ29yZTogV2hlbiB0aGUgRG9jdW1lbnQg
c3VwcG9ydHMgdGhlIGZlYXR1cmUgIkhUTUwiIFtET00gTGV2ZWwgMiBIVE1MXSwgdGhlIGJhc2Ug
VVJJIGlzIGNvbXB1dGVkIHVzaW5nCiAgICAgLy8gZmlyc3QgdGhlIHZhbHVlIG9mIHRoZSBocmVm
IGF0dHJpYnV0ZSBvZiB0aGUgSFRNTCBCQVNFIGVsZW1lbnQgaWYgYW55LCBhbmQgdGhlIHZhbHVl
IG9mIHRoZSBkb2N1bWVudFVSSSBhdHRyaWJ1dGUKICAgICAvLyBmcm9tIHRoZSBEb2N1bWVudCBp
bnRlcmZhY2Ugb3RoZXJ3aXNlLgpAQCAtMjY0OCwxNCArMjY0OCwxNCBAQCB2b2lkIERvY3VtZW50
Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgLy8gVGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0ZSBp
cyByZWFkLW9ubHkgZnJvbSBKYXZhU2NyaXB0LCBidXQgd3JpdGFibGUgZnJvbSBPYmplY3RpdmUg
Qywgc28gd2UgbmVlZCB0byByZXRhaW4KICAgICAgICAgLy8gdGhpcyBmYWxsYmFjayBiZWhhdmlv
ci4gV2UgdXNlIGEgbnVsbCBiYXNlIFVSTCwgc2luY2UgdGhlIGRvY3VtZW50VVJJIGF0dHJpYnV0
ZSBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nCiAgICAgICAgIC8vIGFuZCBET00gMyBDb3JlIGRvZXMg
bm90IHNwZWNpZnkgaG93IGl0IHNob3VsZCBiZSByZXNvbHZlZC4KLSAgICAgICAgbV9iYXNlVVJM
ID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGRvY3VtZW50VVJJKCkpOworICAgICAgICBtX2Jhc2VV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBkb2N1bWVudFVSSSgpKTsKICAgICB9CiAKICAgICBp
ZiAobV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCiAgICAgICAgIG1fc2VsZWN0b3JRdWVyeUNhY2hlLT5p
bnZhbGlkYXRlKCk7CiAKICAgICBpZiAoIW1fYmFzZVVSTC5pc1ZhbGlkKCkpCi0gICAgICAgIG1f
YmFzZVVSTCA9IEtVUkwoKTsKKyAgICAgICAgbV9iYXNlVVJMID0gVVJMKCk7CiAKICAgICBpZiAo
bV9lbGVtZW50U2hlZXQpIHsKICAgICAgICAgLy8gRWxlbWVudCBzaGVldCBpcyBzaWxseS4gSXQg
bmV2ZXIgY29udGFpbnMgYW55dGhpbmcuCkBAIC0yNjc1LDcgKzI2NzUsNyBAQCB2b2lkIERvY3Vt
ZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldEJhc2VV
UkxPdmVycmlkZShjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRCYXNlVVJMT3Zl
cnJpZGUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9iYXNlVVJMT3ZlcnJpZGUgPSB1cmw7CiAg
ICAgdXBkYXRlQmFzZVVSTCgpOwpAQCAtMjcwMSwxMSArMjcwMSwxMSBAQCB2b2lkIERvY3VtZW50
Ojpwcm9jZXNzQmFzZUVsZW1lbnQoKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlz
IGRvZXNuJ3Qgc2hhcmUgY29kZSB3aXRoIGNvbXBsZXRlVVJMIGl0IG1heSBub3QgaGFuZGxlIGVu
Y29kaW5ncyBjb3JyZWN0bHkuCi0gICAgS1VSTCBiYXNlRWxlbWVudFVSTDsKKyAgICBVUkwgYmFz
ZUVsZW1lbnRVUkw7CiAgICAgaWYgKGhyZWYpIHsKICAgICAgICAgU3RyaW5nIHN0cmlwcGVkSHJl
ZiA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcygqaHJlZik7CiAgICAgICAgIGlm
ICghc3RyaXBwZWRIcmVmLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJhc2VFbGVtZW50VVJMID0g
S1VSTCh1cmwoKSwgc3RyaXBwZWRIcmVmKTsKKyAgICAgICAgICAgIGJhc2VFbGVtZW50VVJMID0g
VVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwogICAgIH0KICAgICBpZiAobV9iYXNlRWxlbWVudFVS
TCAhPSBiYXNlRWxlbWVudFVSTCAmJiBjb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dCYXNl
VVJJKGJhc2VFbGVtZW50VVJMKSkgewogICAgICAgICBtX2Jhc2VFbGVtZW50VVJMID0gYmFzZUVs
ZW1lbnRVUkw7CkBAIC0yNzE1LDcgKzI3MTUsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzQmFz
ZUVsZW1lbnQoKQogICAgIG1fYmFzZVRhcmdldCA9IHRhcmdldCA/ICp0YXJnZXQgOiBudWxsQXRv
bTsKIH0KIAotU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKSBjb25z
dAorU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS51c2VyQWdlbnQodXJsKSA6IFN0
cmluZygpOwogfQpAQCAtMzcyNiw3ICszNzI2LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb29raWUo
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9
CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOworICAgIFVSTCBjb29r
aWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0zNzQ3LDcgKzM3NDcsNyBAQCB2b2lkIERv
Y3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNv
b2tpZVVSTCgpOworICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBp
ZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zOTcxLDIwICsz
OTcxLDIwIEBAIHZvaWQgRG9jdW1lbnQ6OnNldERlY29kZXIoUGFzc1JlZlB0cjxUZXh0UmVzb3Vy
Y2VEZWNvZGVyPiBkZWNvZGVyKQogICAgIG1fZGVjb2RlciA9IGRlY29kZXI7CiB9CiAKLUtVUkwg
RG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBLVVJMJiBiYXNl
VVJMT3ZlcnJpZGUpIGNvbnN0CitVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKIHsKICAgICAvLyBBbHdh
eXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4KLSAgICAvLyBG
SVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMg
YmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVSTCBjb25zdHJ1
Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgLy8gU2VlIGFsc28gW0NTU11TdHlsZVNo
ZWV0Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAgIGlmICh1cmwuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBLVVJMKCk7Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCA9ICgoYmFzZVVS
TE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtVUkwoKSkgJiYg
cGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkgOiBiYXNlVVJM
T3ZlcnJpZGU7CisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBjb25zdCBVUkwmIGJhc2VVUkwg
PSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRlID09IGJsYW5r
VVJMKCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+YmFzZVVSTCgp
IDogYmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4g
S1VSTChiYXNlVVJMLCB1cmwpOwotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVybCwgbV9kZWNv
ZGVyLT5lbmNvZGluZygpKTsKKyAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmwpOworICAg
IHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkpOwogfQogCi1L
VVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1VSTCBE
b2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMKTsKIH0KQEAgLTQxOTksMjEgKzQxOTksMjEg
QEAgU3RyaW5nIERvY3VtZW50OjpxdWVyeUNvbW1hbmRWYWx1ZShjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lKQogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS52YWx1ZSgpOwog
fQogCi1LVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQorVVJMIERvY3Vt
ZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQogewogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBvcGVuU2VhcmNoTUlNRVR5cGUgPSAiYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2Ny
aXB0aW9uK3htbCI7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5TZWFyY2hSZWxh
dGlvbiA9ICJzZWFyY2giOwogCiAgICAgLy8gRklYTUU6IFdoeSBkbyBvbmx5IHRvcC1sZXZlbCBm
cmFtZXMgaGF2ZSBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkxzPwogICAgIGlmICghZnJhbWUoKSB8
fCBmcmFtZSgpLT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAg
ICAgIHJldHVybiBVUkwoKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0byB3YWl0
IGZvciBGcmFtZVN0YXRlQ29tcGxldGU/CiAgICAgaWYgKGZyYW1lKCktPmxvYWRlcigpLnN0YXRl
KCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gVVJMKCk7CiAKICAgICBpZiAoIWhlYWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBj
aGlsZHJlbiA9IGhlYWQoKS0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBO
b2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKQEAgLTQyMjcsNyArNDIyNyw3
IEBAIEtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpCiAgICAgICAgIHJl
dHVybiBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgIH0KIAotICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgcmV0dXJuIFVSTCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVudFNjcmlwdChQ
YXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBuZXdDdXJyZW50U2NyaXB0KQpAQCAtNDU2Niw3
ICs0NTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgaWYg
KCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3IgYSBzZWN1cml0eSBjb250ZXh0
LgogICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
Y3JlYXRlRG9jdW1lbnQoKS4KLSAgICAgICAgbV9jb29raWVVUkwgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIG1fY29va2llVVJMID0gVVJMKFBhcnNlZFVS
TFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRTZWN1cml0eVBv
bGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTQ2NTIsNyArNDY1Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzQ29udGV4dFRocmVhZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi12b2lkIERvY3VtZW50Ojp1
cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1
bWVudDo6dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIEZyYW1lKiBmID0gZnJhbWUoKTsKICAgICBpZiAoIWYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDQxMGFmYWViZDY4MTAwMWE2MzExOTBjNGZkMzNhZGFjYWZmMDkwMGQuLjczYTc4NTNiZDQ3
MmExNWFiNTdiZmMwNjYyOTRmMzUwMTU2ZDcyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0y
MzYsMTEgKzIzNiwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgRG9jdW1lbnRDbGFzc0ZsYWdz
OwogCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNj
b3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvY3Vt
ZW50KGZyYW1lLCB1cmwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+
IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVudChmcmFtZSwg
dXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CkBAIC00MTQsNyArNDE0LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRV
Ukk7IH0KICAgICB2b2lkIHNldERvY3VtZW50VVJJKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmly
dHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29u
c3Q7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICBTdHJpbmcgdmlzaWJp
bGl0eVN0YXRlKCkgY29uc3Q7CkBAIC01ODQsMjIgKzU4NCwyMiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0KIAotICAgIHZp
cnR1YWwgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV91
cmw7IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgdm9p
ZCBzZXRVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhvdyB0aGVzZSBj
b25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAgICAgLy8gY29t
bWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCi0gICAgY29uc3QgS1VSTCYgYmFz
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQotICAgIHZvaWQgc2V0QmFzZVVSTE92
ZXJyaWRlKGNvbnN0IEtVUkwmKTsKLSAgICBjb25zdCBLVVJMJiBiYXNlVVJMT3ZlcnJpZGUoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlkZTsgfQotICAgIGNvbnN0IEtVUkwmIGJhc2VF
bGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVSTDsgfQorICAgIGNvbnN0
IFVSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQorICAgIHZvaWQgc2V0
QmFzZVVSTE92ZXJyaWRlKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgYmFzZVVSTE92ZXJy
aWRlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMT3ZlcnJpZGU7IH0KKyAgICBjb25zdCBVUkwm
IGJhc2VFbGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVSTDsgfQogICAg
IGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVRhcmdldDsg
fQogICAgIHZvaWQgcHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIEtVUkwgY29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0gICAgS1VSTCBj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNv
bnN0OworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdl
bnQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKQEAgLTgxNyw4ICs4MTcsOCBAQCBwdWJsaWM6CiAgICAgLy8g
ICAgZG9jdW1lbnQgaW5oZXJpdHMgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgYW5vdGhlciBkb2N1
bWVudCwgaXQKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29va2llVVJMIGJ1dCBub3QgaXRzIFVS
TC4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGNvb2tpZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29va2llVVJMOyB9Ci0gICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1f
Y29va2llVVJMID0gdXJsOyB9CisgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2Nvb2tpZVVSTDsgfQorICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IFVSTCYgdXJs
KSB7IG1fY29va2llVVJMID0gdXJsOyB9CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMgaXMgdXNlZCB0byBjb21wdXRlIHdoZXRoZXIgdGhpcyBkb2N1bWVudAogICAgIC8vIGFwcGVh
cnMgaW4gYSAidGhpcmQtcGFydHkiIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXJkLXBh
cnR5CkBAIC04MzAsOCArODMwLDggQEAgcHVibGljOgogICAgIC8vICAgICAgIGZpcnN0UGFydHlG
b3JDb29raWVzIGhhdmUgYSBkaWZmZXJlbnQgcmVnaXN0cnktY29udHJvbGxlZAogICAgIC8vICAg
ICAgIGRvbWFpbi4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQotICAgIHZvaWQgc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKSB7IG1fZmlyc3RQYXJ0eUZvckNv
b2tpZXMgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIHZvaWQgc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpIHsgbV9maXJzdFBhcnR5Rm9yQ29va2llcyA9
IHVybDsgfQogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyB0aGUgcnVsZSBm
cm9tIEhUTUwgNCBmb3Igd2hhdCB2YWxpZCBuYW1lcyBhcmUuCiAgICAgLy8gVG8gZ2V0IHRoaXMg
cmlnaHQgZm9yIGFsbCB0aGUgWE1MIGNhc2VzLCB3ZSBwcm9iYWJseSBoYXZlIHRvIGltcHJvdmUg
dGhpcyBvciBtb3ZlIGl0CkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcXVl
cnlDb21tYW5kU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAgU3RyaW5nIHF1
ZXJ5Q29tbWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAKLSAgICBLVVJMIG9wZW5T
ZWFyY2hEZXNjcmlwdGlvblVSTCgpOworICAgIFVSTCBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwo
KTsKIAogICAgIC8vIGRlc2lnbk1vZGUgc3VwcG9ydAogICAgIGVudW0gSW5oZXJpdGVkQm9vbCB7
IG9mZiA9IGZhbHNlLCBvbiA9IHRydWUsIGluaGVyaXQgfTsgICAgCkBAIC0xMDA3LDcgKzEwMDcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAgICAgdm9pZCBp
bml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZVVSTEZvclB1c2hP
clJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJik7CisgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JS
ZXBsYWNlU3RhdGUoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzdGF0ZVBvcHBlZChQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCiAgICAgYm9vbCBwcm9jZXNzaW5nTG9hZEV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CkBAIC0xMTg3LDcgKzEx
ODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50
KGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJiwg
dW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcyk7CisgICAgRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKIAogICAgIHZvaWQg
Y2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQogCkBAIC0xMjkz
LDEyICsxMjkzLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dlbGxGb3JtZWQ7CiAKICAgICAv
LyBEb2N1bWVudCBVUkxzLgotICAgIEtVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVS
TCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KLSAgICBLVVJMIG1fYmFz
ZVVSTDsgLy8gTm9kZS5iYXNlVVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29sdmluZyByZWxh
dGl2ZSBVUkxzLgotICAgIEtVUkwgbV9iYXNlVVJMT3ZlcnJpZGU7IC8vIEFuIGFsdGVybmF0aXZl
IGJhc2UgVVJMIHRoYXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1fYmFzZVVSTCAoYnV0IG5vdCBt
X2Jhc2VFbGVtZW50VVJMKS4KLSAgICBLVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8vIFRoZSBVUkwg
c2V0IGJ5IHRoZSA8YmFzZT4gZWxlbWVudC4KLSAgICBLVVJMIG1fY29va2llVVJMOyAvLyBUaGUg
VVJMIHRvIHVzZSBmb3IgY29va2llIGFjY2Vzcy4KLSAgICBLVVJMIG1fZmlyc3RQYXJ0eUZvckNv
b2tpZXM7IC8vIFRoZSBwb2xpY3kgVVJMIGZvciB0aGlyZC1wYXJ0eSBjb29raWUgYmxvY2tpbmcu
CisgICAgVVJMIG1fdXJsOyAvLyBEb2N1bWVudC5VUkw6IFRoZSBVUkwgZnJvbSB3aGljaCB0aGlz
IGRvY3VtZW50IHdhcyByZXRyaWV2ZWQuCisgICAgVVJMIG1fYmFzZVVSTDsgLy8gTm9kZS5iYXNl
VVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29sdmluZyByZWxhdGl2ZSBVUkxzLgorICAgIFVS
TCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtl
cyBwcmVjZWRlbmNlIG92ZXIgbV9iYXNlVVJMIChidXQgbm90IG1fYmFzZUVsZW1lbnRVUkwpLgor
ICAgIFVSTCBtX2Jhc2VFbGVtZW50VVJMOyAvLyBUaGUgVVJMIHNldCBieSB0aGUgPGJhc2U+IGVs
ZW1lbnQuCisgICAgVVJMIG1fY29va2llVVJMOyAvLyBUaGUgVVJMIHRvIHVzZSBmb3IgY29va2ll
IGFjY2Vzcy4KKyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsgLy8gVGhlIHBvbGljeSBV
UkwgZm9yIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KIAogICAgIC8vIERvY3VtZW50LmRv
Y3VtZW50VVJJOgogICAgIC8vIEFsdGhvdWdoIFVSTC1saWtlLCBEb2N1bWVudC5kb2N1bWVudFVS
SSBjYW4gYWN0dWFsbHkgYmUgc2V0IHRvIGFueQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNw
cAppbmRleCBhY2VmYTY3M2M0OTc0M2QxOWM5Mjc2MGU1NmJlZmYzYTYyMGYxMzhlLi40NzJmODRl
MGM4MjVmMDljMzU4M2VhNjBjOTJkMjY5NzkyMjRlMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcApAQCAtMzYsOSArMzYsOSBAQCBEb2N1bWVudFR5cGU6OkRvY3VtZW50VHlwZShE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJgogewog
fQogCi1LVVJMIERvY3VtZW50VHlwZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgRG9jdW1lbnRUeXBl
OjpiYXNlVVJJKCkgY29uc3QKIHsKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBVUkwo
KTsKIH0KIAogU3RyaW5nIERvY3VtZW50VHlwZTo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50VHlwZS5oCmluZGV4IDFkYjYzMjdjZGRiZDFlMzFlOTA0OGY0ZmMwODhhNDRhYTEy
ZjdlYWUuLjY1MDE4MDc3MDQ4ZWVhNGY5ZWU4MzlkMmVjN2MzMTgzOGVmMzgzODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBEb2N1bWVudFR5cGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOwogCi0gICAgdmlydHVhbCBL
VVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIE5vZGVUeXBl
IG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+IGNsb25lTm9k
ZShib29sIGRlZXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDM2NjEwYjQ2NWJhYjQyMjQ5
YWM0OTY1YTkwYTliODYxYTFlNGUyYmQuLjJlMDExN2ExYTdlMjhmOTlmZGE3YzNjYTFiODI3MDQ0
NThhODk1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyNDYsMTAgKzEyNDYsMTAgQEAg
dm9pZCBFbGVtZW50OjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVmaXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgIG1fdGFnTmFtZS5zZXRQcmVmaXgocHJlZml4LmlzRW1wdHkoKSA/
IEF0b21pY1N0cmluZygpIDogcHJlZml4KTsKIH0KIAotS1VSTCBFbGVtZW50OjpiYXNlVVJJKCkg
Y29uc3QKK1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKIHsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGJhc2VBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUoYmFzZUF0dHIpOwotICAgIEtVUkwg
YmFzZShLVVJMKCksIGJhc2VBdHRyaWJ1dGUpOworICAgIFVSTCBiYXNlKFVSTCgpLCBiYXNlQXR0
cmlidXRlKTsKICAgICBpZiAoIWJhc2UucHJvdG9jb2woKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBiYXNlOwogCkBAIC0xMjU3LDExICsxMjU3LDExIEBAIEtVUkwgRWxlbWVudDo6YmFzZVVS
SSgpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBiYXNlOwogCi0gICAg
Y29uc3QgS1VSTCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOworICAgIGNvbnN0IFVS
TCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOwogICAgIGlmIChwYXJlbnRCYXNlLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gYmFzZTsKIAotICAgIHJldHVybiBLVVJMKHBhcmVudEJh
c2UsIGJhc2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBVUkwocGFyZW50QmFzZSwgYmFzZUF0dHJp
YnV0ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwo
KSBjb25zdApAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgRE9NU3RyaW5nTWFwKiBFbGVtZW50OjpkYXRh
c2V0KCkKICAgICByZXR1cm4gZGF0YS5kYXRhc2V0KCk7CiB9CiAKLUtVUkwgRWxlbWVudDo6Z2V0
VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitVUkwgRWxlbWVu
dDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CkBAIC0yNTAxLDcg
KzI1MDEsNyBAQCBLVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUobmFtZSkpKTsKIH0KIAot
S1VSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAorVVJMIEVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IGlmIChlbGVtZW50RGF0YSgpKSB7CkBAIC0yNTExLDcgKzI1MTEsNyBAQCBLVVJMIEVsZW1lbnQ6
OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAjZW5kaWYKICAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgcmV0dXJuIGRv
Y3VtZW50KCkuY29tcGxldGVVUkwodmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCA2
NDAyZDUyZTg3ZjEzZjdhOWQwOTE4NTZhZjc2OTVlZjg0NzM2MjIzLi4zNDI2YWQ5NTZkNThiODQz
NzVjYTYzNjcyZDEzODJkODRhYmM3ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTI1Myw3ICsy
NTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHByZWZpeCgp
IGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdGFnTmFtZS5wcmVmaXgoKTsgfQogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCBPVkVSUklE
RSBGSU5BTCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJKCk7IH0KIAotICAgIHZpcnR1
YWwgS1VSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmlydHVhbCBVUkwg
YmFzZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbm9k
ZU5hbWUoKSBjb25zdDsKIApAQCAtMzg0LDggKzM4NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgS1VSTCBnZXRVUkxBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIEtVUkwgZ2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBnZXRVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBnZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0
cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
Y3BwCmluZGV4IDAzYmIzYmYzMDI4YzA0ZWIxNTYyNjAzNmYwZjM5MDNiYWY1YzgzZGQuLjY0NmY2
YzVhMGIwMjJjMjk1MWViZTI2YmZlMjYyOGFlMTJhYmUxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9JY29uVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNvblVSTC5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JY29uVVJMIElj
b25VUkw6OmRlZmF1bHRJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUgdHlwZSkKK0lj
b25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29uc3QgVVJMJiB1cmwsIEljb25UeXBlIHR5
cGUpCiB7CiAgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmlu
ZygpLCB0eXBlKTsKICAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vSWNv
blVSTC5oCmluZGV4IDFmYjM1NzhkMjA0OTg5ZmNiNjNhOWEyODI2NjRhZTA5NzkxODIzOWMuLjc5
MTZhZTBmNzY0ZTVkZjVmMzhiYTczOTJlM2NmNDVmNDU3MmMxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwu
aApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBJY29uVVJMX2gKICNkZWZpbmUgSWNvblVSTF9o
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgSWNvblR5cGUg
bV9pY29uVHlwZTsKICAgICBTdHJpbmcgbV9zaXplczsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
LSAgICBLVVJMIG1faWNvblVSTDsKKyAgICBVUkwgbV9pY29uVVJMOwogICAgIGJvb2wgbV9pc0Rl
ZmF1bHRJY29uOwogCiAgICAgSWNvblVSTCgpCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBJY29u
VVJMIHsKICAgICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBlIHR5cGUpCisg
ICAgSWNvblVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX2ljb25UeXBlKHR5cGUp
CiAgICAgICAgICwgbV9zaXplcyhzaXplcykKICAgICAgICAgLCBtX21pbWVUeXBlKG1pbWVUeXBl
KQpAQCAtNzAsNyArNzAsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgewogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgSWNvblVSTCBkZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiwgSWNvblR5cGUp
OworICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJMKGNvbnN0IFVSTCYsIEljb25UeXBl
KTsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJY29uVVJMJiwgY29uc3QgSWNvblVSTCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hlZXRPd25lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAppbmRleCA0
MTg5M2ExZTA0OGQ3YTYyY2Y1MmU5NGZiZDMwYmM0ZGU3M2E5YzYwLi43MTMyYzQ3Nzk4NDY0MDEx
MjkzNDQ0NDVhMWE3YTA3NDY4MTFjYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
SW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5l
U3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSW5saW5lU3R5bGVT
aGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHRl
eHQpCiAKICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCi0gICAgbV9zaGVldCA9IENTU1N0eWxlU2hl
ZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBLVVJMKCksIGRvY3VtZW50LmlucHV0RW5jb2Rpbmco
KSk7CisgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBV
UkwoKSwgZG9jdW1lbnQuaW5wdXRFbmNvZGluZygpKTsKICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1
ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgbV9zaGVldC0+c2V0VGl0bGUoZWxl
bWVudC50aXRsZSgpKTsKICAgICBtX3NoZWV0LT5jb250ZW50cygpLT5wYXJzZVN0cmluZ0F0TGlu
ZSh0ZXh0LCBtX3N0YXJ0TGluZU51bWJlci56ZXJvQmFzZWRJbnQoKSwgbV9pc1BhcnNpbmdDaGls
ZHJlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjg5ZTdkM2UxMDUyM2NkZjM3Mzk2M2VlYjQyMTVl
NWM5YzkxNDg5OS4uYWEyMTk2ZTU0MzZiZTczNzhhOGVmZDBmMWEzNWZmZTk3YmVjMTcwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtMTEzOCw5ICsxMTM4LDkgQEAgRG9jdW1lbnQgKk5vZGU6Om93bmVy
RG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb2MgPT0gdGhpcyA/IDAgOiBkb2M7CiB9CiAK
LUtVUkwgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVSSSgpIDogS1VS
TCgpOworICAgIHJldHVybiBwYXJlbnROb2RlKCkgPyBwYXJlbnROb2RlKCktPmJhc2VVUkkoKSA6
IFVSTCgpOwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUqIG90aGVyKSBjb25zdApA
QCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52YWxpZGF0ZUNh
Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKICAgICAgICAgaXQtPnZhbHVlLT5p
bnZhbGlkYXRlQ2FjaGUoKTsKIH0KIAotdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJjZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIE5vZGU6OmdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyh1cmxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGNmMTUwNzI5ZDk4ZjEwNDYxNzhm
ZmRhZTgyNDM3N2ZhNzg4ODYxZDUuLjUxM2Q2YmI2YjRhMGVjMjM3YTBhN2M5ODUxZWQxZDc2ZWYz
Zjc3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVkZSAiRWRpdGlu
Z0JvdW5kYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJLVVJMSGFz
aC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5j
bHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCkBAIC0xOTEsOSArMTkxLDkgQEAgcHVibGljOgogICAgIE5vZGUqIHBzZXVkb0F3YXJlRmly
c3RDaGlsZCgpIGNvbnN0OwogICAgIE5vZGUqIHBzZXVkb0F3YXJlTGFzdENoaWxkKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGJh
c2VVUkkoKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGdldFN1YnJlc291cmNlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxzKExpc3RIYXNo
U2V0PFVSTD4mKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIHNob3VsZCBhbGwgYWN0dWFsbHkgcmV0
dXJuIGEgbm9kZSwgYnV0IHRoaXMgaXMgb25seSBpbXBvcnRhbnQgZm9yIGxhbmd1YWdlIGJpbmRp
bmdzLAogICAgIC8vIHdoaWNoIHdpbGwgYWxyZWFkeSBrbm93IGFuZCBob2xkIGEgcmVmIG9uIHRo
ZSByaWdodCBub2RlIHRvIHJldHVybi4gUmV0dXJuaW5nIGJvb2wgYWxsb3dzCkBAIC02NjQsNyAr
NjY0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0IHsgfQorICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0IHsgfQogCiAgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdl
dEZsYWcoSGFzUmFyZURhdGFGbGFnKTsgfQogCkBAIC03MzcsNyArNzM3LDcgQEAgcHJvdGVjdGVk
OgogfTsKIAogLy8gVXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoKSBh
bmQgaW4gYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoKQotaW5saW5lIHZvaWQgYWRkU3VicmVzb3Vy
Y2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKK2lubGluZSB2
b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIGlmICghdXJsLmlzTnVsbCgpKQogICAgICAgICB1cmxzLmFkZCh1cmwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCBlMjg4
MjU5M2JiZDFhYzI0ZGYwNGFhZjViODk0YzE3NjIxYjE4ZDY0Li41MTA4OTFmMWNiMjZkZjgxYWQy
ZTMyNTdmZGQ4ZDIyY2EzNjI2YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBtYWtl
IGEgc3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4gIEl0IG5lZWRzIHRv
IGJlIGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9pbmNsdWRlIGxvYWRz
IHRoYXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAgICAgICAgaWYgKG1f
aXNYU0wpIHsKLSAgICAgICAgICAgICAgICBLVVJMIGZpbmFsVVJMKFBhcnNlZFVSTFN0cmluZywg
bV9sb2NhbEhyZWYpOworICAgICAgICAgICAgICAgIFVSTCBmaW5hbFVSTChQYXJzZWRVUkxTdHJp
bmcsIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVl
dDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgZmluYWxVUkwpOwogICAgICAgICAgICAgICAgIG1fbG9h
ZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uOjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpCit2b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlv
bjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVl
dCkKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkgewogICAgICAgICBBU1NFUlQoIW1fc2hlZXQp
OwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzCiB9CiAKICNpZiBF
TkFCTEUoWFNMVCkKLXZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBz
aGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KQog
ewogICAgIEFTU0VSVChtX2lzWFNMKTsKICAgICBtX3NoZWV0ID0gWFNMU3R5bGVTaGVldDo6Y3Jl
YXRlKHRoaXMsIGhyZWYsIGJhc2VVUkwpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gc2hlZXQpCiAgICAgc2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsKIH0KIAotdm9p
ZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QK
IHsKICAgICBpZiAoIXNoZWV0KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBkYjI5NDUyMGE5OGRmMzNjMzI4NmE0Y2E0
ODQxMjhkOWQ5OTkzYWFiLi40NzE5Njk5MmNkOWEwOTBlZTMzNmMxZGIzZjhjZTVkYjQ0NGFlZWEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oCkBAIC02NCwx
NSArNjQsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdm9pZCBjaGVja1N0eWxlU2hlZXQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtV
UkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVT
aGVldCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqKTsKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNo
ZWV0KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgc2hlZXRMb2FkZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAog
ICAgIHZvaWQgcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggOTAwMjBlYmI1
OTU1NTE0ZTk3NGQzZDkzZDM3YWJjMWQwNzExYzM3NS4uZjc0OGFjOWUwZjk1MDRiOTkzMWU3MmE5
ZTU5ZWU1NzMyMWE4ZDQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y2xvc2VNZXNzYWdlUG9ydHMoKSB7CiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c2FuaXRpemVTY3JpcHRFcnJvcihTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50JiBsaW5lTnVt
YmVyLCBpbnQmIGNvbHVtbk51bWJlciwgU3RyaW5nJiBzb3VyY2VVUkwsIENhY2hlZFNjcmlwdCog
Y2FjaGVkU2NyaXB0KQogewotICAgIEtVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVVUkwoc291cmNl
VVJMKTsKKyAgICBVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVVUkwoc291cmNlVVJMKTsKICAgICBp
ZiAoc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh0YXJnZXRVUkwpIHx8IChjYWNoZWRTY3Jp
cHQgJiYgY2FjaGVkU2NyaXB0LT5wYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soc2VjdXJpdHlPcmln
aW4oKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZXJyb3JNZXNzYWdlID0gIlNjcmlw
dCBlcnJvci4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgK
aW5kZXggYTllOWUzYjliZjdkYjEyYjQ4ODU1MTBmMWZlYjA2YWMzM2ZmNDM2ZC4uMWMzZWNjY2M0
OTAyMTc3NzVlZjc4MzhjNTM1MmU1ZjQ4NmRlMjc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmgiCiAj
aW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAt
NjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZXh0VGhyZWFk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0pTRXhlY3V0aW9u
Rm9yYmlkZGVuKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBjb25zdCBLVVJMJiB1cmwoKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJs
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBVUkwmIHVybCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCmluZGV4IDc0ZDNlM2IwMDM3
NWMzOGRiYTJmZmM3MWMwMDk5YWZjNDMxODA4OTUuLmQ4M2ZkZjIyYzdlZjJiYjRmNGMzZDgxOTdj
MjhjNDJiNmNiNGViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCkBA
IC01Niw3ICs1Niw3IEBAIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+CiAgICAgbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9CiAKLWJvb2wgU2VjdXJpdHlD
b250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29s
IFNlY3VyaXR5Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBpbml0aWFsaXplZCBvdXIgc2VjdXJpdHkgb3Jp
Z2luIGJ5IG5vdywgdGhpcyBpcyBwcm9iYWJseQogICAgIC8vIGEgbmV3IHdpbmRvdyBjcmVhdGVk
IHZpYSB0aGUgQVBJIChpLmUuLCB0aGF0IGxhY2tzIGFuIG9yaWdpbiBhbmQgbGFja3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCAzMmFlMGRmOTk0MzlmY2Y1ZWQ4NmZjNGY1
ZTgxM2QzYTgyMmVmNzkxLi4yZGI1ZDBkMjk2Mjc2MjE4ODlhY2M3ODE4Nzk2MmVjNjc5NjNkYmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0zNSw3ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBDb250ZW50
U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBlbnVtIFNhbmRib3hG
bGFnIHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBmb3IgYSBsaXN0IG9mIHRoZSBzYW5kYm94
IGZsYWdzLgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEZsYWdzIHNhbmRi
b3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAgICAgQ29udGVudFNl
Y3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeS5nZXQoKTsgfQogCi0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhj
b25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBV
UkwmKSBjb25zdDsKIAogICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3Mg
bWFzayk7CiAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3MgbWFzaykgY29uc3QgeyBy
ZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKaW5kZXggZTQ1ZmI4MDNhYWViNjdhNmFmMDcwNmJlYjI0YzM5ZTAyMTc0NmVkYy4uOWNj
M2VmODQ0MDYxMDQ5YjU2NmY1OTNhMWY1MjM3NDRmNDhjYjFmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6
cmVtb3ZlQWxsSW5saW5lU3R5bGVQcm9wZXJ0aWVzKCkKICAgICBpbmxpbmVTdHlsZUNoYW5nZWQo
KTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewog
ICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGVsZW1lbnREYXRh
KCkgPyBlbGVtZW50RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkKICAgICAgICAgaW5saW5lU3R5
bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIGRvY3VtZW50KCkuZWxlbWVudFNoZWV0
KCkuY29udGVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCAwY2MwYjky
MDU3Y2I3OTVlMDYzYmY2ODY3MzVjODVhYjgxN2ExNzgyLi4xOGM2ZTk5YzZmNzBkYjU5NjM0MDRi
NzMwZDE3YjdlMTY2NTk5NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwg
ZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKICAgICB2b2lkIGFk
ZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5bGVQcm9wZXJ0
eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcsIEF0dHJpYnV0ZU1vZGlm
aWNhdGlvblJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZWI2Zjg2NGRh
MjllNmJkMDJhM2Q4MGIyMWMxNjM2OWQxZTQ1Njg5YS4uYTMwNGI5M2M1ZWY3MmIxYWNhNGRhYmZk
M2IzMWQ3NTU5YjU3NzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTE3NCwx
MiArMTE3NCwxMiBAQCB2b2lkIEVkaXRvcjo6c2ltcGxpZnlNYXJrdXAoTm9kZSogc3RhcnROb2Rl
LCBOb2RlKiBlbmROb2RlKQogICAgIGFwcGx5Q29tbWFuZChTaW1wbGlmeU1hcmt1cENvbW1hbmQ6
OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE5vZGUsIChlbmROb2RlKSA/IE5vZGVUcmF2ZXJzYWw6
Om5leHQoZW5kTm9kZSkgOiAwKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjpjb3B5VVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGNvcHlVUkwodXJsLCB0aXRs
ZSwgKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAotdm9pZCBFZGl0
b3I6OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBQYXN0ZWJv
YXJkJiBwYXN0ZWJvYXJkKQordm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAgICAgUGFzdGVi
b2FyZFVSTCBwYXN0ZWJvYXJkVVJMOwogICAgIHBhc3RlYm9hcmRVUkwudXJsID0gdXJsOwpAQCAt
MTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQpCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBL
VVJMIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBVUkwgdXJsID0gcmVzdWx0
LmFic29sdXRlTGlua1VSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICB1cmwg
PSByZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRl
eCBhYjA5ZWJiYTBmNTA2OTVlZTA5MzEzNTdjYTg2OGJmM2E3ZWJhOTZjLi5iNWFmNzc0MTg2MjQ0
Mzk1OTJjOWRlZTYxMzkwMmVjYTE4YWZiNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KCk7CiAg
ICAgdm9pZCBwZXJmb3JtRGVsZXRlKCk7CiAKLSAgICB2b2lkIGNvcHlVUkwoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgY29weVVSTChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOworICAgIHZvaWQgY29weVVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIGNvcHlVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwogICAgIHZvaWQgY29weUltYWdlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmKTsKIAogICAgIFN0cmluZyByZWFkUGxhaW5UZXh0RnJvbVBhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYpOwotICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFzdGVib2FyZChQ
YXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSk7CisgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
LCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCmluZGV4IDlkZjU5NTI0OTczNWYzY2VkYTdlMDg0MmNjZmM2OTMwMWY3MzBk
MGMuLjVlOGFiZDQ0Nzk0ZTM1ZDYxODZiYjQ0ZThmYWE2ZjI3YTk3ZTYwOGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNs
dWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlhM
aW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9lZmwvRWRpdG9yRWZsLmNwcAppbmRleCBmYzc4MWMyYmQ2ZmU2NDMzYTBhMmY0ODk1M2MwNWI3
MzA5NWY3NDQ4Li5mMzUwOWUyYzY3YjMyZmVlMzVlMWFlYTg1MGU4OGEzODNiZTAxOWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
dm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2
b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBmZDdmMGFjOWJjYzI4
ODhmNjBjNGJhZTlkZmEzYmI3ZWE1YjhmNmZjLi40NGFiNWJiZTU1Yzk3NDY5YTk0NGU1Y2FiZjk2
MzZjZTMyMThhYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBA
IC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYgaW1hZ2VFbGVt
ZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJgogICAgIGNhY2hlZEltYWdl
ID0gdGVudGF0aXZlQ2FjaGVkSW1hZ2U7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVkaXRvcjo6d3JpdGVJbWFn
ZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1l
bnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgUGFzdGVib2FyZElt
YWdlIHBhc3RlYm9hcmRJbWFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCmluZGV4IGJmYjZhNDY3OTFhZmU4MTQ2OGNhN2U2ZDY1ZDMwODU0MzU2N2IzY2QuLmRkNDQz
NjM3YzlkNjY4ZDJjZjY4MTAwZjgzNTBjZDBlMGQyYjI4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTM4Niw3ICszODYsNyBAQCBTdHJpbmcgRWRpdG9yOjpw
bGFpblRleHRGcm9tUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQog
ICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0LnRleHQ7CiAKICAgICAvLyBGSVhNRTogSXQncyBub3Qg
Y2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJMIFVSTFdpdGhT
dHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKLSAgICAvLyBhbGwgdGhlIHNhbWUgY2FzZXMgd2UgaGFu
ZGxlIHdlbGwgaW4gdGhlIEtVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCisgICAgLy8g
YWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29kZSBmb3IgY3Jl
YXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCiAgICAgICAgIHN0cmluZyA9IGNs
aWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpzdHJpbmddKTsK
IApAQCAtMzk0LDcgKzM5NCw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJv
YXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgcmV0dXJuIFsoTlNTdHJp
bmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107CiB9CiAK
LXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9h
cmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQordm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYg
cGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdlOwog
CkBAIC00MzcsNyArNDM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVhZFJURkQo
UGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFJURihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVh
ZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hpdmUoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikKICAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBhcmNo
aXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEtVUkwoKSwgYnVmZmVyLmdldCgpKTsKKyAg
ICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShVUkwoKSwgYnVmZmVyLmdldCgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNTM1LDEzICs1MzUsMTMgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRl
bnRSZWFkZXI6OnJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBjb25z
dAogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwogICAgIFN0cmluZyB0eXBlQXNGaWxl
bmFtZVdpdGhFeHRlbnNpb24gPSB0eXBlOwogICAgIHR5cGVBc0ZpbGVuYW1lV2l0aEV4dGVuc2lv
bi5yZXBsYWNlKCcvJywgJy4nKTsKLSAgICBLVVJMIGltYWdlVVJMID0gS1VSTChLVVJMKCksICJ3
ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsgJy8nICsg
dHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKKyAgICBVUkwgaW1hZ2VVUkwgPSBVUkwoVVJM
KCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpICsg
Jy8nICsgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKIAogICAgIGZyYWdtZW50ID0gZnJh
bWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Uo
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBpbWFnZVVSTCwgdHlwZSwgZW1wdHlTdHJp
bmcoKSwgZW1wdHlTdHJpbmcoKSkpOwogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAotYm9vbCBF
ZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQorYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVybC5zdHJpbmco
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcAppbmRleCBkMmZmZjhjN2UyMzdlYmMzMzY5MDQyM2ZiNzE0MTZiYzUwMTA5YTY3Li41MWVm
M2YyZWM5ZWVkMjBiZjc4MDM4MzE2Y2M0MjFiMjZmMTY0NjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCkBAIC00OCw3ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJNYXJrdXBBY2N1bXVsYXRvci5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdm9pZCBjb21w
bGV0ZVVSTHMoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCkKIHsKICAgICBWZWN0b3I8QXR0cmlidXRlQ2hhbmdlPiBjaGFuZ2VzOwogCi0gICAgS1VSTCBw
YXJzZWRCYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJMIHBhcnNlZEJh
c2VVUkwoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKIAogICAgIGZvciAoYXV0byBlbGVtZW50
ID0gZWxlbWVudERlc2NlbmRhbnRzKGZyYWdtZW50KS5iZWdpbigpLCBlbmQgPSBlbGVtZW50RGVz
Y2VuZGFudHMoZnJhZ21lbnQpLmVuZCgpOyBlbGVtZW50ICE9IGVuZDsgKytlbGVtZW50KSB7CiAg
ICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQpAQCAtMTA5LDcgKzEwOSw3IEBA
IHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgY29u
c3QgU3RyaW5nJiBiYXNlVVJMKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlID0gZWxl
bWVudC0+YXR0cmlidXRlQXQoaSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNVUkxBdHRy
aWJ1dGUoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZSgmKmVsZW1lbnQsIGF0dHJp
YnV0ZS5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmlu
ZygpKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0cmlidXRlQ2hhbmdlKCYq
ZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgVVJMKHBhcnNlZEJhc2VVUkwsIGF0dHJpYnV0ZS52
YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MjMsNyArNzIzLDcg
QEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBX
aXRoQ29udGV4dChEb2N1bWVudCogZG9jdW0KICAgICB0YWdnZWRNYXJrdXAuYXBwZW5kKG1hcmt1
cC5zdWJzdHJpbmcoZnJhZ21lbnRFbmQpKTsKIAogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiB0YWdnZWRGcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCwgdGFn
Z2VkTWFya3VwLnRvU3RyaW5nKCksIGJhc2VVUkwsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwotICAg
IFJlZlB0cjxEb2N1bWVudD4gdGFnZ2VkRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtV
UkwoKSk7CisgICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWREb2N1bWVudCA9IERvY3VtZW50Ojpj
cmVhdGUoMCwgVVJMKCkpOwogICAgIHRhZ2dlZERvY3VtZW50LT50YWtlQWxsQ2hpbGRyZW5Gcm9t
KHRhZ2dlZEZyYWdtZW50LmdldCgpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBub2RlQmVmb3JlQ29u
dGV4dDsKQEAgLTk1Miw3ICs5NTIsNyBAQCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25zdCBS
YW5nZSogcmFuZ2UpCiAgICAgcmV0dXJuIGRvY3VtZW50VHlwZVN0cmluZyhub2RlLT5kb2N1bWVu
dCgpKSArIGNyZWF0ZU1hcmt1cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSk7CiB9
CiAKLVN0cmluZyB1cmxUb01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCitTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0
bGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7CiAgICAgbWFya3VwLmFwcGVuZCgiPGEg
aHJlZj1cIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggY2ExMjBhNDcyY2U4MmVhZmJk
MzBjZTMyN2Y0YWRiMjA0ZDU0ZDZmZS4uMTU2NWJhMTYyYTQzNGFiZTVkZTgzZTljOGQ5NjdmMTc0
ZmM3MjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBIVE1MRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFJhbmdlOwpAQCAtNzAsNyArNzAsNyBAQCBTdHJpbmcg
Y3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZl
Y3RvcjxOb2RlKj4qID0gMAogU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgTm9kZSopOwog
U3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgUmFuZ2UqKTsKIAotU3RyaW5nIHVybFRvTWFy
a3VwKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK1N0cmluZyB1cmxUb01hcmt1
cChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogU3RyaW5nIGRvY3VtZW50VHlw
ZVN0cmluZyhjb25zdCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKaW5kZXggNjQyNTI2NzBkMmE1OGFiMGEwYzAwMGIyNjlhZDhlMDU3NDAz
Y2MyNS4uYzZiNDhkYWZjMWJlMzU0YzBhNzI0Yjc5ODYyNTIwZTRjNTFlMDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMjAzLDEyICsyMDMsMTIg
QEAgc3RhdGljIHZvaWQgZGlkV3JpdGUoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwgaW50IGJ5dGVz
V3JpdHRlbikKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRXcml0ZShieXRlc1dyaXR0ZW4p
OwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwg
bG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQordm9pZCBBc3luY0ZpbGVTdHJlYW06Ondy
aXRlKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQog
ewogICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRhc2sodGhpcywg
JkFzeW5jRmlsZVN0cmVhbTo6d3JpdGVPbkZpbGVUaHJlYWQsIGJsb2JVUkwsIHBvc2l0aW9uLCBs
ZW5ndGgpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxlVGhyZWFkKGNv
bnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKK3ZvaWQg
QXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZChjb25zdCBVUkwmIGJsb2JVUkwsIGxv
bmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNXcml0dGVuID0g
bV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAgIGNhbGxPbk1h
aW5UaHJlYWQoZGlkV3JpdGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGJ5dGVzV3Jp
dHRlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA2OGYy
M2U5OWMwYWZkZTQ2YjAzMTRiNjhlODY2ZjY1YmM5NjQwMDFjLi44NDllYTJiYzk0NzI0MDVmYjA0
ZDVhNzE2ZDU2OTZhMmM3ZDU4M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0FzeW5jRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBG
aWxlU3RyZWFtQ2xpZW50OwogY2xhc3MgRmlsZVN0cmVhbTsKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiAKIGNsYXNzIEFzeW5jRmlsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEFzeW5jRmls
ZVN0cmVhbT4gewogcHVibGljOgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBv
cGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGNsb3NlKCk7CiAgICAg
dm9pZCByZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCk7Ci0gICAgdm9pZCB3cml0ZShjb25z
dCBLVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpOworICAgIHZv
aWQgd3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5n
dGgpOwogICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKTsKIAogICAgIC8vIFN0
b3BzIHRoZSBwcm94eSBhbmQgc2NoZWR1bGVzIGl0IHRvIGJlIGRlc3RydWN0ZWQuIEFsbCB0aGUg
cGVuZGluZyB0YXNrcyB3aWxsIGJlIGFib3J0ZWQgYW5kIHRoZSBmaWxlIHN0cmVhbSB3aWxsIGJl
IGNsb3NlZC4KQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9wZW5Gb3JXcml0
ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xvc2VPbkZpbGVU
aHJlYWQoKTsKICAgICB2b2lkIHJlYWRPbkZpbGVUaHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVu
Z3RoKTsKLSAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxv
bmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgdm9pZCB3cml0ZU9uRmlsZVRocmVh
ZChjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CiAg
ICAgdm9pZCB0cnVuY2F0ZU9uRmlsZVRocmVhZChsb25nIGxvbmcgcG9zaXRpb24pOwogCiAgICAg
UmVmUHRyPEZpbGVTdHJlYW0+IG1fc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXgg
YzAzNzg0ZjQzMDZiYTZkMDZlOTI3MTBiN2FkMzk2YTU5MjY0ZjVlNy4uNDU0NzE4MDdhOGZjMzBh
ZWNlNTlhNTZmZDY0OTY1ZjFmZmI3NWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC01
NCwyMCArNTQsMjAgQEAgZW51bSBTbGljZUhpc3RvZ3JhbUVudW0gewogCiBjbGFzcyBCbG9iVVJM
UmVnaXN0cnkgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBVUkxSZWdpc3RyYWJs
ZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogCiAgICAgc3RhdGljIFVSTFJl
Z2lzdHJ5JiByZWdpc3RyeSgpOwogfTsKIAogCi12b2lkIEJsb2JVUkxSZWdpc3RyeTo6cmVnaXN0
ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgcHVibGljVVJMLCBVUkxS
ZWdpc3RyYWJsZSogYmxvYikKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVnaXN0cmFibGUq
IGJsb2IpCiB7CiAgICAgQVNTRVJUKCZibG9iLT5yZWdpc3RyeSgpID09IHRoaXMpOwogICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChvcmlnaW4sIHB1YmxpY1VSTCwg
c3RhdGljX2Nhc3Q8QmxvYio+KGJsb2IpLT51cmwoKSk7CiB9CiAKLXZvaWQgQmxvYlVSTFJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CkBAIC0xMDAsNyArMTAwLDcgQEAgQmxv
Yjo6QmxvYihQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSwgbG9uZyBsb25nIHNpemUpCiAg
ICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkws
IGJsb2JEYXRhKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0
cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCitCbG9iOjpCbG9iKGNvbnN0IFVSTCYgc3JjVVJM
LCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQogICAgIDogbV90eXBlKEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXplKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaAppbmRleCAyMWIzMWI0MTNhY2Y3ZTQ4Y2Y5MjViZTkyZjFiYjUwMmNkZDY0
ZGYxLi4wMzU5ZDQyMzA4ODQ0OGQzM2Q2YTVhNDIxZTRlMjJhMTViMGJmNjkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBCbG9iX2gKIAogI2luY2x1ZGUg
IkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QmxvYj4g
Y3JlYXRlKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcg
c2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3QgVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgewogICAgICAgICBB
U1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEJsb2Ioc3JjVVJMLCB0eXBlLCBzaXplKSk7CkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBs
b25nIHNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KG1fc2l6ZSk7IH0KQEAgLTkxLDEyICs5MSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgQmxvYihQYXNz
T3duUHRyPEJsb2JEYXRhPiwgbG9uZyBsb25nIHNpemUpOwogCiAgICAgLy8gRm9yIGRlc2VyaWFs
aXphdGlvbi4KLSAgICBCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBl
LCBsb25nIGxvbmcgc2l6ZSk7CisgICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICAvLyBUaGlzIGlzIGFuIGludGVybmFs
IFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpl
Y3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoaXMgYmxvYi4gVGhl
IGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJjZSB0aGUgYmxvYidzIGNvbnRlbnQK
ICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFkJ2luZywgcHVibGljIGJsb2IgVVJM
cyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgotICAgIEtVUkwgbV9pbnRlcm5hbFVS
TDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgbG9u
ZyBsb25nIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVS
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4IDY1OTAwN2Ix
NDk1ZDFiNzc0ZjU2ZGM3OTlmNzc1N2RkNTA3ZDEyMjQuLjNkZWJmMzgzMWY2ZjBiMWIyZjUwZWFk
ZTgwZGE5ZmFiNTVhNjM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
YlVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcApAQCAtMzIs
NyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAi
VVVJRC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDEsMTggKzQxLDE4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciBCbG9iVVJMOjprQmxvYlByb3Rv
Y29sW10gPSAiYmxvYiI7CiAKLUtVUkwgQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJMKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK1VSTCBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEFTU0VSVChzZWN1cml0eU9yaWdp
bik7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoc2VjdXJpdHlPcmlnaW4tPnRvU3RyaW5nKCkp
OwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKK1VSTCBCbG9iVVJMOjpj
cmVhdGVJbnRlcm5hbFVSTCgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoImJsb2JpbnRl
cm5hbDovLyIpOwogfQogCi1TdHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjEsNyArNjEsNyBAQCBT
dHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gdXJs
LnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0SW5kZXggLSAx
KTsKIH0KIAotU3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNT
RVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjksMTEgKzY5LDExIEBA
IFN0cmluZyBCbG9iVVJMOjpnZXRJZGVudGlmaWVyKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1
cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4KTsKIH0KIAotS1VSTCBCbG9iVVJM
OjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQorVVJMIEJsb2JVUkw6
OmNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAgICAgQVNTRVJU
KCFvcmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5nID0gImJsb2I6
IiArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMob3JpZ2luU3RyaW5nKSArICcvJyArIGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKLSAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
Zyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgK
aW5kZXggMmNhZWMyOTU3ZjZiOWZiYWE0MTZjY2YyZTdhNTFkMmJmNWFmZjlmMC4uYzdmYTRmZTc0
NDc2YzNjNjg5ZTYwMDcyZGM3ZWEzYjI1OGZmZmIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJM
LmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQmxvYlVSTF9oCiAjZGVmaW5lIEJsb2JVUkxf
aAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIC8vIGJl
IHVzZWQgd2l0aCBSZXNvdXJjZUhhbmRsZSBvciBGaWxlUmVhZGVyLgogY2xhc3MgQmxvYlVSTCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlUHVibGljVVJMKFNlY3VyaXR5T3JpZ2lu
Kik7Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBzdGF0aWMgU3Ry
aW5nIGdldE9yaWdpbihjb25zdCBLVVJMJik7Ci0gICAgc3RhdGljIFN0cmluZyBnZXRJZGVudGlm
aWVyKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgVVJMIGNyZWF0ZVB1YmxpY1VSTChTZWN1cml0
eU9yaWdpbiopOworICAgIHN0YXRpYyBVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsKKyAgICBzdGF0
aWMgU3RyaW5nIGdldE9yaWdpbihjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGdldElk
ZW50aWZpZXIoY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJsb2JQcm90b2Nv
bCgpIHsgcmV0dXJuIGtCbG9iUHJvdG9jb2w7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgS1VS
TCBjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAgICBzdGF0aWMg
VVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyIGtCbG9iUHJvdG9jb2xbXTsKICAgICBCbG9iVVJMKCkgeyB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNTRlNWE5MDAxNmE1MDA3YTU3Y2UwOTRjMmVmZTY3MmRk
ZDkyN2ViNi4uNzRiMDFiOGUzZjE4YjA3ODA0NjM0ZjVmZDJjM2IzZmM0NDhiZTJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPEJs
b2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBm
aWxlCiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NPd25Q
dHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiBm
aWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3RhdGljIFBhc3NP
d25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChjb25zdCBVUkwm
IGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgT3du
UHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAgICBibG9iRGF0
YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmlsZVN5c3RlbVVS
TC5wYXRoKCksIEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHlwZUxvb2t1cFBvbGlj
eSBwb2xpY3kpCiB7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIDogQmxvYih1cmws
IHR5cGUsIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQpA
QCAtMTQyLDcgKzE0Miw3IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBG
aWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0IEtVUkwmIGZp
bGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCitGaWxlOjpGaWxlKGNv
bnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAg
ICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0ZW1VUkwsIG1l
dGFkYXRhKSwgbWV0YWRhdGEubGVuZ3RoKQogICAgICwgbV9maWxlU3lzdGVtVVJMKGZpbGVTeXN0
ZW1VUkwpCiAgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZS5oCmluZGV4IGFiZTU1NDRlM2QwNDdiODAwMGE5ZWY5NzQ3NTBiOGMxNWM5YmYzZmUuLjVl
YjZmOWNiYmY1N2FlNDkyYzMyMWJmYjNjMTdhMzZkM2Y5NjkxODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZS5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGaWxl
TWV0YWRhdGE7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBGaWxlIDogcHVibGlj
IEJsb2IgewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAg
Ly8gRm9yIGRlc2VyaWFsaXphdGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYg
dHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIHNyY1VSTCwgdHlwZSkpOwogICAgIH0K
QEAgLTY4LDEyICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RmlsZShuYW1lLCBtZXRhZGF0YSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZp
bGU+IGNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgRmlsZU1l
dGFkYXRhJiBtZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGVGb3JG
aWxlU3lzdGVtRmlsZShjb25zdCBVUkwmIHVybCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0
YSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZSh1cmwsIG1ldGFkYXRh
KSk7CiAgICAgfQogCi0gICAgS1VSTCBmaWxlU3lzdGVtVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
aWxlU3lzdGVtVVJMOyB9CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7IHJldHVybiBt
X2ZpbGVTeXN0ZW1VUkw7IH0KICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIGEgZmlsZSB3aXRoIGEg
bmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFzc29jaWF0ZWQg
RE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlkZWQgaW4gdGhl
IHBhdGguCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgogICAgIEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBDb250ZW50VHlwZUxvb2t1cFBvbGljeSk7CiAKICAgICAvLyBGb3IgZGVzZXJp
YWxpemF0aW9uLgotICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNV
UkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnRlbnRUeXBlTG9va3VwUG9saWN5KTsK
IAogIyBpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotICAgIEZpbGUoY29uc3QgS1VSTCYgZmlsZVN5c3RlbVVS
TCwgY29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBVUkwmIGZpbGVTeXN0ZW1V
UkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
aGFzIGEgdmFsaWQgc25hcHNob3QgbWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hvdFNpemUgPj0gMCku
CiAgICAgYm9vbCBoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX3Nu
YXBzaG90U2l6ZSA+PSAwOyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9uYW1lOwogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEtVUkwgbV9maWxlU3lz
dGVtVVJMOworICAgIFVSTCBtX2ZpbGVTeXN0ZW1VUkw7CiAKICAgICAvLyBJZiBtX3NuYXBzaG90
U2l6ZSBpcyBuZWdhdGl2ZSAoaW5pdGlhbGl6ZWQgdG8gLTEgYnkgZGVmYXVsdCksIHRoZSBzbmFw
c2hvdCBtZXRhZGF0YSBpcyBpbnZhbGlkIGFuZCB3ZSByZXRyaWV2ZSB0aGUgbGF0ZXN0IG1ldGFk
YXRhIHN5bmNocm9ub3VzbHkgaW4gc2l6ZSgpLCBsYXN0TW9kaWZpZWRUaW1lKCkgYW5kIHNsaWNl
KCkuCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc25hcHNob3QgbWV0YWRhdGEgYXJlIHVzZWQgZGly
ZWN0bHkgaW4gdGhvc2UgbWV0aG9kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKaW5kZXggMjRmMWU3ZjFiZGE4NmEzNDc3NzE4ZjE3MWFmMDcyY2JlYzlmOTUzNS4u
ODBlMTM0M2ZmMTdhMmQ3MmIzMmUxM2IzNDViYjdkYzk0YTk0MDZhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAKICNpZiBFTkFC
TEUoQkxPQikKIAogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlICJUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTEwNiw3
ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIFRleHRFbmNvZGluZyBtX2VuY29kaW5nOwogICAgIFN0
cmluZyBtX2RhdGFUeXBlOwogCi0gICAgS1VSTCBtX3VybEZvclJlYWRpbmc7CisgICAgVVJMIG1f
dXJsRm9yUmVhZGluZzsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9sb2FkZXI7CiAK
ICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTBiZmIyZWUw
ZWFhNzA2NGZjN2YzNzE5MWEzNmI3YmVlM2VlYzZiZS4uMjBkY2RkNzE2MzFiMzEyY2Q4ZWVhMmVl
YTA1OTcyMDE4NDc2OGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVh
ZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC00OSwyNiArNDksMjYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RydWN0IEJsb2JSZWdpc3RyeUNvbnRleHQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgS1VSTCYgdXJs
LCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKKyAgICBCbG9iUmVnaXN0cnlDb250ZXh0
KGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKICAgICAgICAg
OiB1cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBibG9iRGF0YShibG9iRGF0YSkKICAgICB7CiAg
ICAgICAgIHRoaXMtPmJsb2JEYXRhLT5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgpOwogICAgIH0K
IAotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBz
cmNVUkwpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCiAgICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgICAgICwgc3JjVVJMKHNy
Y1VSTC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29u
c3QgS1VSTCYgdXJsKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJMJiB1cmwpCiAg
ICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEtVUkwgdXJsOwot
ICAgIEtVUkwgc3JjVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIHNyY1VSTDsKICAgICBPd25Q
dHI8QmxvYkRhdGE+IGJsb2JEYXRhOwogfTsKIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9p
ZCByZWdpc3RlckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCiAgICAgYmxvYlJlZ2lzdHJ5KCku
cmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5Q29u
dGV4dC0+YmxvYkRhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRh
PiBibG9iRGF0YSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBp
ZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVS
TCh1cmwsIGJsb2JEYXRhKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJsb2JVUkxGcm9tVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJsb2JSZWdpc3RyeUNvbnRleHQt
PnNyY1VSTCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYg
c3JjVVJMKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoU2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQog
ewogICAgIC8vIElmIHRoZSBibG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwgYXMgaW4gdGhl
IGNvbnRleHQgd2l0aCB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJMLCBzYXZlIHRo
ZSBtYXBwaW5nIGJldHdlZW4gdXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3JpZ2luIGNhbiBi
ZSByZXRyaXZlZCB3aGVuIGRvaW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAgICBpZiAob3Jp
Z2luICYmIEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKQEAgLTEyMyw3ICsxMjMs
NyBAQCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTFRhc2sodm9pZCogY29udGV4dCkKICAg
ICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51
cmwpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6OmdldE9yaWdpbih1
cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwuc3RyaW5nKCkp
OwpAQCAtMTM2LDI2ICsxMzYsMjYgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRPcmlnaW4oY29u
c3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBv
cmlnaW5NYXAoKS0+Z2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKICNlbHNlCiAKLXZvaWQgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRy
PEJsb2JEYXRhPikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KQogewogfQogCi12b2lkIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJikKIHsKIH0KIAot
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJikKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVS
TCYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGY2NmJkMTBjNGViN2IzNTYxYWMzZDUzMDdhZmEw
MjY0YmZiOTU1MTIuLjgzZTU1Y2M3YTdhNTY2YTk2MTBiODdmODI3YWQxZDFjY2NhNmRmMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCkBA
IC0zNywxOCArMzcsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYkRhdGE7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNz
IFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyQmxvYlVSTChjb25zdCBLVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pOwotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiBzcmNVUkwpOwotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFz
c093blB0cjxCbG9iRGF0YT4pOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBzdGF0aWMg
dm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFJldHVybnMgdGhl
IG9yaWdpbiBmb3IgdGhlIGdpdmVuIGJsb2IgVVJMLiBUaGlzIGlzIGJlY2F1c2Ugd2UgYXJlIG5v
dCBhYmxlIHRvIGVtYmVkIHRoZSB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIHRoZSBvcmlnaW4g
b2YgZmlsZSBVUkwKICAgICAvLyBpbiB0aGUgYmxvYiBVUkwuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBVUkwm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKaW5kZXggYzUyOGNhMWU4M2M5OTUyMzI5ZDQ1YzE2YmQ5NmJkZjZmOGVlZTY2
YS4uYjg1MzM4MzViZmFhODliYzYyYmM2MjJiZDQ2NDA1NTZmNzM2YTY3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIENhY2hl
ZEZyYW1lOjpjbGVhcigpCiAgICAgbV9kb2N1bWVudCA9IDA7CiAgICAgbV92aWV3ID0gMDsKICAg
ICBtX21vdXNlUHJlc3NOb2RlID0gMDsKLSAgICBtX3VybCA9IEtVUkwoKTsKKyAgICBtX3VybCA9
IFVSTCgpOwogCiAgICAgbV9jYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5jbGVhcigpOwogICAgIG1f
Y2FjaGVkRnJhbWVTY3JpcHREYXRhLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmgKaW5kZXggOTgzOGY3M2M0YmUyMmZmNWY3N2UzNGUxZTYyYjQ2ZDM2NzUyNTk1Mi4uMzg2
NGNhNDcyYmJjNzc4MDFjNGNiOGIzODIwNDE4ZGVlMDQ0ZjM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBDYWNoZWRGcmFtZV9o
CiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXcuZ2V0KCk7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBib29s
IGlzTWFpbkZyYW1lKCkgeyByZXR1cm4gbV9pc01haW5GcmFtZTsgfQogCiBwcm90ZWN0ZWQ6CkBA
IC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1f
ZG9jdW1lbnRMb2FkZXI7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV92aWV3OwogICAgIFJlZlB0
cjxOb2RlPiBtX21vdXNlUHJlc3NOb2RlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJs
OwogICAgIE93blB0cjxTY3JpcHRDYWNoZWRGcmFtZURhdGE+IG1fY2FjaGVkRnJhbWVTY3JpcHRE
YXRhOwogICAgIE93blB0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4gbV9jYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YTsKICAgICBib29sIG1faXNNYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uY3BwCmluZGV4IDFjYjU2YmZjNTJlOWZiMDcwNmM3MDJhYmNjNzczYmY5MjE2
MjE4ZDkuLmI0ZjA1ZGYyOWVhZjc2NDQ2Y2M0OThiNjExYTljMzYyZmQwMjE0MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgSGlzdG9y
eUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHIKICAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29uRm9yUGFnZVVS
TChtX3VybFN0cmluZyk7CiB9CiAKLUhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKK0hpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygpKQogICAgICwgbV9vcmlnaW5h
bFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQpCkBAIC0yNDAs
MTQgKzI0MCwxNCBAQCBkb3VibGUgSGlzdG9yeUl0ZW06Omxhc3RWaXNpdGVkVGltZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbGFzdFZpc2l0ZWRUaW1lOwogfQogCi1LVVJMIEhpc3RvcnlJdGVtOjp1
cmwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAogewotICAgIHJldHVybiBL
VVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CiB9CiAKLUtVUkwgSGlzdG9yeUl0ZW06Om9yaWdpbmFs
VVJMKCkgY29uc3QKK1VSTCBIaXN0b3J5SXRlbTo6b3JpZ2luYWxVUkwoKSBjb25zdAogewotICAg
IHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmluZyk7CisgICAg
cmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fb3JpZ2luYWxVUkxTdHJpbmcpOwogfQogCiBj
b25zdCBTdHJpbmcmIEhpc3RvcnlJdGVtOjpyZWZlcnJlcigpIGNvbnN0CkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKQogICAgIG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCh0aGlzKTsKIH0KIAotdm9pZCBIaXN0
b3J5SXRlbTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldFVS
TChjb25zdCBVUkwmIHVybCkKIHsKICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKHRoaXMpOwogICAg
IHNldFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCmluZGV4IDU3M2MxYjE2YjQ3OGM2YjVjYmMwNzg4MjRkOGNmNWEyMmYxZTE3NTEuLjBjMzQ4
ODE3MzM5MDdjMmM4NjkyOTc5NmU2YmNkZGMyOGMwZTQ0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBG
b3JtRGF0YTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0odXJs
U3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUsIGxhc3RWaXNpdGVkKSk7CiAgICAgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25z
dCBTdHJpbmcmIHRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0
b3J5SXRlbSh1cmwsIHRhcmdldCwgcGFyZW50LCB0aXRsZSkpOwogICAgIH0KQEAgLTEwOSw4ICsx
MDksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSgpIGNvbnN0
OwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgcGFyZW50KCkgY29uc3Q7Ci0gICAgS1VSTCB1cmwo
KSBjb25zdDsKLSAgICBLVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CisgICAgVVJMIHVybCgpIGNv
bnN0OworICAgIFVSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0OwogICAgIGJv
b2wgaXNUYXJnZXRJdGVtKCkgY29uc3Q7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RG9jdW1lbnRTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQg
Y2xlYXJEb2N1bWVudFN0YXRlKCk7CiAKLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJik7Cisg
ICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzZXRVUkxTdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRPcmlnaW5hbFVSTFN0cmluZyhjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHNldFJlZmVycmVyKGNvbnN0IFN0cmluZyYpOwpAQCAtMjIyLDcgKzIyMiw3IEBA
IHByaXZhdGU6CiAgICAgSGlzdG9yeUl0ZW0oKTsKICAgICBIaXN0b3J5SXRlbShjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGxhc3RWaXNpdGVkKTsK
ICAgICBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwgZG91YmxlIGxhc3RWaXNpdGVkKTsK
LSAgICBIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgSGlzdG9y
eUl0ZW0oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBTdHJp
bmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBleHBsaWNpdCBIaXN0b3J5
SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5j
cHAKaW5kZXggYzcxNjRjZjYyNzZlZmUzMzhlNGM0ZmNjMzJlYzYzZjlkODIyMTI1Yi4uMzEwNjFm
YjVhODMyYmQxYjM0MWQ2MzQ0ODhlZDkwOWVjNDU2NzdkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcApAQCAtOTUsOCArOTUsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9nQ2FuQ2Fj
aGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQogICAgICAgICBy
ZXR1cm4gMSA8PCBOb0RvY3VtZW50TG9hZGVyOwogICAgIH0KIAotICAgIEtVUkwgY3VycmVudFVS
TCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKTsKLSAgICBLVVJMIG5l
d1VSTCA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgPyBmcmFt
ZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6IEtVUkwoKTsK
KyAgICBVUkwgY3VycmVudFVSTCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKTsKKyAgICBVUkwgbmV3VVJMID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkt
PnVybCgpIDogVVJMKCk7CiAgICAgaWYgKCFuZXdVUkwuaXNFbXB0eSgpKQogICAgICAgICBQQ0xP
RygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGluZyBmcm9tICgi
LCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygpLCAiKToiKTsK
ICAgICBlbHNlCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ2FuQ2FjaGVQYWdl
RGVjaXNpb24oUGFnZSogcGFnZSkKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5nIGZvciBtYWlu
IGZyYW1lcyB0aGF0IGhhdmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRlbnQuCiAgICAg
aWYgKHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLT5jcmVhdGluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIGN1cnJlbnRV
UkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID8gcGFnZS0+
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkgOiBLVVJMKCk7Cisg
ICAgVVJMIGN1cnJlbnRVUkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpID8gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJs
KCkgOiBVUkwoKTsKICAgICBpZiAoY3VycmVudFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhZTM2OTM4MjRiM2U5NTgxZjI0MTQw
YjVjODE5ZTJkM2QyOTdlNzNiLi5hYzllNzQxZGI5MjBlZjY0NDI3N2RjMGM3YjExMWZkOGMwZmNj
NGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkJsb2JVUkwu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VSZXF1ZXN0LmgiCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBCCiAK
IFN0cmluZyBET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCiB7Ci0g
ICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgVVJMIHB1YmxpY1VSTCA9IEJsb2JV
Ukw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdp
bigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgRE9NVVJMOjpyZXZva2VPYmplY3RVUkwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uCiAgICAgaWYg
KCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVy
bChLVVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3RyaW5nKTsKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuaAppbmRl
eCBiMzU4MjYzMjQwODQyNDA2ZWU4NTkwOGVjMDVhNmVlYmQ0MDYwMDgyLi43ZDIxNGQxY2I5ZWU2
NGVkNDVkNDQyYjg0ZjBlMmJhZmU0ZmEwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0RPTVVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggNWJhYTRj
OGQ0OGQ2MDkwOWZiOGViMDcxYjUxN2U4MzQwZmViNTI1ZS4uOTQyMTM3MTcyNzlmYTFhYzU0MTky
M2Y3NzU0MTZhYWEzMjk3MDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBE
aXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3Vt
ZW50UGFyc2VyOjpmaW5pc2goKQogICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCk7CiB9
CiAKLUZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50
KGZyYW1lLCB1cmwpCiB7CiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5oCmluZGV4IGU3ZTUyZjdhNzI0YjExM2EwMjAzOGI3NDMyZTU2
NTk3YmQ0NzFmZjkuLjBkOTEwMTRhMjFiZmUyZTY3Yjg1NmFmYzdhYzViYWViMjgwNzY1ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKQEAgLTMzLDEzICsz
MywxMyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKICAgICAKIGNsYXNzIEZUUERpcmVjdG9y
eURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlEb2N1bWVudD4g
Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJM
Jik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigpOwogfTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggMjRhMzczODBjNTk5
YzVkZTIyZDY5Mzc1OTRiNDQzNjUwZTMyMTZhOS4uZTIxNWNmYjBmYjQzNDFiOWQ0MTY4NTJhOWVj
YjdmNjdhMjM2MzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAg
LTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkRm9ybVN0cnVjdHVyZShj
b25zdCBIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ0J1aWxkZQogCiBzdGF0aWMgaW5saW5l
IFN0cmluZyBmb3JtU2lnbmF0dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9ybSkKIHsKLSAg
ICBLVVJMIGFjdGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0dHIpOworICAg
IFVSTCBhY3Rpb25VUkwgPSBmb3JtLmdldFVSTEF0dHJpYnV0ZShhY3Rpb25BdHRyKTsKICAgICAv
LyBSZW1vdmUgdGhlIHF1ZXJ5IHBhcnQgYmVjYXVzZSBpdCBtaWdodCBjb250YWluIHZvbGF0aWxl
IHBhcmFtZXRlcnMgc3VjaAogICAgIC8vIGFzIGEgc2Vzc2lvbiBrZXkuCiAgICAgYWN0aW9uVVJM
LnNldFF1ZXJ5KFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKaW5kZXggNzg0YmIwZWUwODI0MDhjMWFlNTFhNzYyN2RjZDBhOTBjMGI4ZmZjNy4uMTlk
NjVkNjUwNjMyOTU1NzY2MDU1ZmEzMzk4YWE1ZmM3N2UxMjQyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBib29sIEhUTUxB
bmNob3JFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogICAgIHJldHVybiBoYXNBdHRyaWJ1dGUo
aHJlZkF0dHIpOwogfQogCi1LVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKK1VS
TCBIVE1MQW5jaG9yRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50
KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJp
YnV0ZShocmVmQXR0cikpKTsKIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgSFRNTEFuY2hv
ckVsZW1lbnQ6Omhhc2goKSBjb25zdAogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRIYXNo
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJM
IHVybCA9IGhyZWYoKTsKICAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQogICAgICAgICB1cmwuc2V0
RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CiAgICAgZWxzZQpAQCAtMzUx
LDcgKzM1MSw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIAogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkgY29uc3QKIHsKLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBocmVmKCk7
CiAgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBhdGhTdGFydCgpKQogICAgICAgICByZXR1
cm4gdXJsLmhvc3QoKTsKICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0
KCksIHVybC5wcm90b2NvbCgpKSkKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVS
TCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50Ojpz
ZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChpID09IGhvc3RMZW5ndGgp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwg
PSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTQyMyw3ICs0MjMsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6OnBhdGhu
YW1lKCkgY29uc3QKIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UGF0aG5hbWUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0g
aHJlZigpOwogICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNDQ1LDcgKzQ0NSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6cG9ydCgpIGNv
bnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBvcnQoY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJlZigpOwogICAg
IGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00Njgs
NyArNDY4LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwcm90b2NvbCgpIGNvbnN0CiAK
IHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICB1
cmwuc2V0UHJvdG9jb2wodmFsdWUpOwogICAgIHNldEhyZWYodXJsLnN0cmluZygpKTsKIH0KQEAg
LTQ4Nyw3ICs0ODcsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Om9yaWdpbigpIGNvbnN0
CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAg
U3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vic3RyaW5nKDEp
IDogdmFsdWU7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVyeSBkb2VzIG5v
dCBsZWFrIHRvIHRoZSBoYXNoLgogICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gucmVwbGFjZVdp
dGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCBib29sIEhUTUxBbmNo
b3JFbGVtZW50Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICByZXR1cm4gaXNMaW5rKCkgJiYgdHJl
YXRMaW5rQXNMaXZlRm9yRXZlbnRUeXBlKG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURvd24gPyBN
b3VzZUV2ZW50V2l0aFNoaWZ0S2V5IDogTW91c2VFdmVudFdpdGhvdXRTaGlmdEtleSk7CiB9CiAK
LXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBLVVJMJiBkZXN0aW5hdGlv
blVSTCkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3Rp
bmF0aW9uVVJMKQogewogICAgIGlmICghaGFzQXR0cmlidXRlKHBpbmdBdHRyKSB8fCAhZG9jdW1l
bnQoKS5zZXR0aW5ncygpIHx8ICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBI
VE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQqIGV2ZW50KQogICAgIFN0cmluZ0J1
aWxkZXIgdXJsOwogICAgIHVybC5hcHBlbmQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGZhc3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKSk7CiAgICAgYXBwZW5kU2VydmVyTWFwTW91
c2VQb3NpdGlvbih1cmwsIGV2ZW50KTsKLSAgICBLVVJMIGt1cmwgPSBkb2N1bWVudCgpLmNvbXBs
ZXRlVVJMKHVybC50b1N0cmluZygpKTsKKyAgICBVUkwga3VybCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwodXJsLnRvU3RyaW5nKCkpOwogCiAjaWYgRU5BQkxFKERPV05MT0FEX0FUVFJJQlVURSkK
ICAgICBpZiAoaGFzQXR0cmlidXRlKGRvd25sb2FkQXR0cikpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBmODJmNDBmMjc2NTg4MDZkZGRlOTI5NTVlNTcxZGY3
ZWQ5Y2IzYjVkLi5mNmI3OTkxN2JmMGNjMjIzZDczNTk5NjFiMzQzYzU0YjQwNDZhZjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkhUTUxBbmNob3JFbGVtZW50KCk7CiAKLSAgICBLVVJMIGhy
ZWYoKSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJlZihjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0
OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzaG9ydCB0YWJJbmRl
eCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBj
b25zdDsKIAotICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsK
KyAgICB2b2lkIHNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIAogICAgIHZv
aWQgaGFuZGxlQ2xpY2soRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQmFzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1l
bnQuY3BwCmluZGV4IDFmYzhkNjM0MmVkYTBkZWNmOTMxNDQ0YzkxOTQxZWFlYmJiNmU0NjcuLjg0
MmI3MDBlYTFhZGU1ZWNmNTlmOTJkMjc4OWY5NDM2NWI0OWRlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU3RyaW5nIEhUTUxCYXNl
RWxlbWVudDo6dGFyZ2V0KCkgY29uc3QKICAgICByZXR1cm4gZmFzdEdldEF0dHJpYnV0ZSh0YXJn
ZXRBdHRyKTsKIH0KIAotS1VSTCBIVE1MQmFzZUVsZW1lbnQ6OmhyZWYoKSBjb25zdAorVVJMIEhU
TUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkb2VzIG5vdCB1c2Ug
dGhlIGdldFVSTEF0dHJpYnV0ZSBmdW5jdGlvbiBiZWNhdXNlIHRoYXQgd2lsbCByZXNvbHZlIHJl
bGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJMOwogICAgIC8vIGJhc2UgZWxlbWVudHMg
bGlrZSB0aGlzIG9uZSBjYW4gYmUgdXNlZCB0byBzZXQgdGhhdCBiYXNlIFVSTC4gVGh1cyB3ZSBu
ZWVkIHRvIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3MKQEAgLTg3LDEyICs4Nywx
MiBAQCBLVVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgaWYgKGF0dHJpYnV0
ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS51cmwoKTsKIAotICAg
IEtVUkwgdXJsID0gIWRvY3VtZW50KCkuZGVjb2RlcigpID8KLSAgICAgICAgS1VSTChkb2N1bWVu
dCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFs
dWUpKSA6Ci0gICAgICAgIEtVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9jdW1lbnQoKS5kZWNvZGVyKCktPmVu
Y29kaW5nKCkpOworICAgIFVSTCB1cmwgPSAhZG9jdW1lbnQoKS5kZWNvZGVyKCkgPworICAgICAg
ICBVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGF0dHJpYnV0ZVZhbHVlKSkgOgorICAgICAgICBVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9jdW1lbnQoKS5k
ZWNvZGVyKCktPmVuY29kaW5nKCkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQotICAgICAg
ICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICByZXR1cm4gdXJs
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKaW5kZXggYmM2M2Q0ZjNlM2Rh
NmIyMDliMDhmMzY5NmVkYTRjODM1OTc3MzVhNi4uMGNkZTlmMDc1MTcxZDk1MjJlZWZlMzU0ZGNi
NDUwNTg1Y2E4YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCkBAIC0z
MSw3ICszMSw3IEBAIGNsYXNzIEhUTUxCYXNlRWxlbWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBLVVJMIGhyZWYo
KSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJlZihjb25zdCBB
dG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVt
ZW50LmNwcAppbmRleCAzOWNiMDdiNmYwOTc4MDM5YTI3ZDNhNzEyZWFhOTk5NjE2MTViNmI4Li4y
ZjNlYWE0OTU3NTcyNDU0M2U2N2Y4NDM2M2QzMzNhNTJkMjkyMzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgaW50IEhUTUxCb2R5
RWxlbWVudDo6c2Nyb2xsV2lkdGgoKQogICAgIHJldHVybiBhZGp1c3RGb3Jab29tKHZpZXctPmNv
bnRlbnRzV2lkdGgoKSwgKmZyYW1lKTsKIH0KIAotdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTEJvZHlFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaApp
bmRleCA4MzBmOTE2YWJhNzdlYmY0ODBiNWNhMzQ2NmE3ODY3MmM4OGMyYTdiLi5iZWE0MjMyMzJi
N2NiYTkyZGY2ZWZmNmRlYzkxZDQ2ODQ4ZTM3ODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGludCBz
Y3JvbGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwZWYxM2MyYmJmYjcyZTBlMmY4ZDZh
NTNiZDZkMjRiYzA5Li4zMzhmNDZmMTdmYmU3MzQyMWNhZjlhN2UzYmMyMTNjMDc5ZjZlZTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBACiAjaW5j
bHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTERvY3VtZW50
OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1bWVudChGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFz
c2VzKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2VzIHwgSFRNTERv
Y3VtZW50Q2xhc3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaAppbmRleCAyNWM0YjU4YjU4NTExNWY3YjUzOWQ2NTU0MzRiYzUxNGU3OGE3ZGY4
Li4wNDc5YmQ1ZjhmMjZhMDg5MjRmZTJjYmE1NDU3Zjg4ZDE4ZjM2ODc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTERvY3VtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBDYWNoZWRSZXNv
dXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50KGZyYW1lLCB1
cmwpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3VtZW50Q2xhc3NG
bGFncyA9IDApOworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIERvY3VtZW50
Q2xhc3NGbGFncyA9IDApOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKaW5kZXggYzU0
N2U0NjlhN2I2Y2ZhMjViMWVkM2NlNzY5YTdiYjQ1NGQyYWE5Mi4uZWY2M2FlMGFlY2FiYWQ3MWJj
ZWNiNzI5ZGZhMTRhNjYzNjBhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVs
ZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRW1i
ZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0
ZShzcmNBdHRyKTsKIH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxFbWJl
ZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1
cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQu
aAppbmRleCAyZTk5ZTJjMDllNGQyMTg2ZDcyNWJjZDBiMDliZGQ2Yjg3NjYyNmMwLi43Zjg2NTY2
MmUzYmIyMjFmY2RmMmQ5ZTlhNmI4YzA3YWI4NDE1YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2b2lkIHBhcmFtZXRlcnNGb3JQbHVnaW4oVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcyk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAppbmRleCAzMDAx
OTJkZjE4MTk4YTE1ODhhMDdiZTg2NzE0ZTU0OWY1MWY0NTJiLi5iODFhYWQwMjNkZDM0NWUwYzRh
ZmUxNjlmY2FhNDFlZDNjZTNhNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
QEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2Vk
KCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCht
X1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVV
UkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKSkg
eyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0aGlzLT5jb250ZW50RG9jdW1lbnQo
KTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmRpZEF0
dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjps
b2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmxvY2F0aW9uKCkgY29u
c3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNkb2NBdHRyKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CisgICAgICAgIHJldHVy
biBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDMxYTU0ZjcxNWI5NjBiZWNk
ZTQ5ODIyNTY1YWM0MDhhYjAyNmU4MjkuLjIzMDMzYWFiODBlMGYwMmQzNjAxZTBmYmQzOGQxYzAx
MDExNjAwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MRnJhbWVF
bGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewogcHVibGljOgotICAg
IEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBjb25zdDsKICAgICB2
b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBTY3JvbGxiYXJN
b2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5OGI0ODg0NGFmYjhh
Y2Y5MjU4Njk5OTg3ZDcyMzIxYzk3My4uMjVmNTE2NmY2ZjMwMDE2ZTcyZTg2OWU2MGM5MTdlNDc3
OTUzMDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0z
MDksNyArMzA5LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQoaW50IHZhbHVl
KQogICAgIHNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2YWx1ZSkpOwog
fQogCi1LVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTEltYWdlRWxl
bWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChn
ZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJvb2wgSFRNTElt
YWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLmlt
YWdlQ29tcGxldGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXgg
NzQ3OGNlNDc0MDk2ZDYxM2ZjYjUyNDBkYTMzZDA5MDA5Yzk0MTQzMi4uN2ZjN2M0Mjc4MzkwOTg5
NjFhNmU3MzA2NzQxYTQ2NGNkYzdhOWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRIZWlnaHQo
aW50KTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAg
IHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0aChpbnQpOwpA
QCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxl
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXgg
NTRkOTFmMDNhZmU0ZTkzNzQ3Y2QxMDcyYThhMzdhYzRlZGI5YzZkMC4uZjVmZTAzNGEzMWZmYWFm
NjgwMzQwNDY4Zjk1ZjNjZDJhZWRkMjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFNpemUodW5zaWduZWQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldFNp
emUoc2l6ZSk7CiB9CiAKLUtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBI
VE1MSW5wdXRFbGVtZW50OjpzcmMoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMTU3MCw3ICsxNTcw
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCogb2xkRG9jdW1lbnQpCiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojph
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0
Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZGE4ZThlNTAwZGY0ODc2M2Y3YjkwZGY5N2U3MDk1
NDU0MjlmMTQwNy4uOWEzMGQxZmQxYjQyNTgxNTg5ZWFkYzBmNTZkODJmYjAwOTMxNmU4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xh
c3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBJY29u
OwogY2xhc3MgSW5wdXRUeXBlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIExpc3RB
dHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
OwogCkBAIC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6ZSh1bnNpZ25l
ZCk7CiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBL
VVJMIHNyYygpIGNvbnN0OworICAgIFVSTCBzcmMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgaW50
IG1heExlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9u
Q29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRv
Y3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgYm9vbCBuZWVkc1N1c3BlbnNpb25DYWxs
YmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGIzMzk4Njg3N2Rk
MDc3MWJjYWJhNzllYjNkMDllM2E2OWE4ZWFiZTYuLmM5MDhkYTNiNDQxYTI5ZDBiNDVlMmMyZmNj
NzVmZDVkMTllZTVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAg
fQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKLSAgICBLVVJMIHVybCA9IGdl
dE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBVUkwgdXJsID0gZ2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAgaWYgKCFtX2xpbmtMb2FkZXIubG9hZExp
bmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMtPnRvU3RyaW5nKCksIHVybCwgJmRvY3Vt
ZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBIVE1MTGlu
a0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlz
aFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVkU3R5bGVTaGVl
dCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
aHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENh
Y2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFpbkRvY3Vt
ZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0KTsKQEAgLTM5NSw3ICszOTUsNyBAQCBi
b29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkubG9jYWxOYW1lKCkgPT0g
aHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0ZSk7CiB9CiAK
LUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKK1VSTCBIVE1MTGlua0VsZW1lbnQ6
OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGdldEF0
dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcgKzQyNSw3IEBAIFN0cmluZyBIVE1MTGlu
a0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZXMtPnRvU3RyaW5n
KCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxMaW5rRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0
CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMGJhMzUwZjE0MDM1OGY5
MWRjMzZlZjkyMjUyNTQ5NTZhNTRkZTkxNC4uZGNjMDgzODRhMjgwZjljZTM0MzQ0ZjhlZDA3ZTJi
ODJiYjE1ODEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMaW5rRWxlbWVudDsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV2
ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+IExpbmtFdmVu
dFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTGlua0VsZW1lbnQoKTsK
IAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7CkBA
IC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2FjaGVkUmVzb3VyY2VDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0
KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNo
YXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKICAgICB2aXJ0dWFsIGJv
b2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVkU2hlZXRBbmRB
bGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2
YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiNTlhMjllNGVm
ZTQ3YmU5NDE2OThjZjNhNWNmOWQ0ZDBjYmVlYjA3Li41OWFjNjAxOTZiODI0M2I1NWQwYzQzYzg2
ZGM0ZDAwOTkwMzIxZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVuc2lnbmVkJiB2
YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAotc3RhdGlj
IFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmlu
ZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBAIC03NDAsNyAr
NzQwLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRpYUVsZW1lbnQ6
Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOwogfQogCi1T
dHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmlu
ZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlw
ZShDb250ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsKICAgICBTdHJp
bmcgY2FuUGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRpbmdGcm9tU3Jj
QXR0cjsKIAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVlIGlzIHRoZSBl
bXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVsb3cKLSAgICAg
ICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAg
ICAgICBVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAg
ICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3JjJyIpOwpA
QCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRTb3VyY2VD
aGlsZCgpCiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygpKSk7CiAgICAg
U3RyaW5nIGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4dFNvdXJjZUNo
aWxkKCZjb250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVSTCBtZWRpYVVS
TCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0ZW0sIENvbXBs
YWluKTsKICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3YWl0Rm9yU291
cmNlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAsMTggQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBsb2FkUmVzb3Vy
Y2UobWVkaWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0aWMgS1VSTCBj
cmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3N0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShj
b25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBhIGZ1bmN0aW9u
IHRvIGNyZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBUaGlzIGZ1bmN0
aW9uCi0gICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0aCB1c2VzIGVu
Y29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAgLy8gVVJMIHNo
b3VsZCBoYXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRoLCBidXQgaXQg
ZG9lcyBub3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZSBV
Ukw6OnNldFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3aGljaCBpdCBu
b3RlcwogICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAnPycuIFRoaXMg
ZnVuY3Rpb24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8gYXBwIGNhY2hl
IG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZpbGVOYW1lKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBMQVRGT1JNKFdJ
TikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdp
bmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOworICAg
IFVSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJs
OwogCiAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKICAgICB1cmwu
c2V0UGF0aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZp
bGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IHJldHVybiB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
dCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0aWFsVVJMLCBD
b21wbGFpbikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVu
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0aWFsVVJMOwor
ICAgIFVSTCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRlcigpLndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5nRmFpbGVkKE1l
ZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1MjcsNyArMTUy
Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFj
ayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rp
b24gYWN0aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRV
UkwoY29uc3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewog
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFs
aWQiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTE5ODMsNyAr
MTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRp
YVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2ZW50UXVldWUu
ZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNz
YWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJMKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVu
c2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVSTCYg
ZGVmYXVsdFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXplcjsKICAgICBp
bml0aWFsaXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMxODksNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50
KiB0cmFja0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRyYWNrRWxlbWVu
dC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1l
bnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBVUkwgdXJsID0g
dHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAnc3JjJyBpcyAl
cyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRp
ZgpAQCAtMzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZlUG90ZW50
aWFsU291cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4gY3VycmVudFNv
dXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0Tm9k
ZSA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRVUkwgPSBzZWxl
Y3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4dFVSTCA9IHNl
bGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9jdXJyZW50U291
cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9kZVRvQ29uc2lk
ZXIgPSBuZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVSTC5pc1ZhbGlk
KCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENv
bnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rp
b24gYWN0aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3Vy
Y2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lzdGVtLCBJbnZh
bGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAg
Ly8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJl
IGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICszNDQ2LDEwIEBA
IEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBl
KiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQg
LT4gMHgwMDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7CisgICAgVVJMIG1l
ZGlhVVJMOwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAgIFN0cmluZyB0
eXBlOwogICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBjaGVja19hZ2Fp
bjoKICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50U291cmNlTm9k
ZS5nZXQoKSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRpYShtZWRpYVVS
TCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5Vc2VTb3VyY2VF
bGVtZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNvdXJjZUVsZW1l
bnQgPyBtZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcgKzM1NTIsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50
KiBzb3VyY2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFt
ZShzb3VyY2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVkaWEo
dXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyArMzYwMCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291cmNlRWxlbWVu
dCogc291cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2UtPmhhc1RhZ05h
bWUoc291cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2UtPmdldE5vbkVt
cHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nTWVk
aWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEsNyArNDMxMSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShXZWJNZWRpYVBs
YXllclByb3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQcm94eShwcm94
eSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQYXJhbXMoS1VS
TCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYgdXJsLCBWZWN0
b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAgICAgUmVmPEhU
TUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291cmNlQ2hpbGQg
bWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0
aW9ucy4KIApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpnZXRQ
bHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmUKIAog
ICAgIGlmIChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCogdmlkZW8gPSB0
b0hUTUxWaWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJMID0gdmlkZW8t
PnBvc3RlckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRlby0+cG9zdGVy
SW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYmIGZyYW1lICYm
IGZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJVUkwpKSB7CiAg
ICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxlbWVudF9wb3N0
ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3RyaW5nKCkpOwpA
QCAtNDM1NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBs
YXllclByb3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhUGxheWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgVmVj
dG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsK
IApAQCAtNDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVXaWRn
ZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsK
ICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTogUmVuYW1lIGt1
cmwgdG8gc29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOworICAgIFVSTCBr
dXJsOwogCiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhrdXJsLCBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9jdW1lbnQoKS5m
cmFtZSgpIGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGNm
NmU4OTY2MzMyMzA1YWJkN2UyNDI3Yjg2NTk0NWYzMjJkMDhjMjkuLmQ1NWMwNDE2YTUzZjg2MDMw
YWUyYjBmZDA2NmZmYjUwZjA3OGUwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVHJh
Y2tFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlhQ29udHJvbGxl
cjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAtMTM4LDcgKzEz
OCw3IEBAIHB1YmxpYzoKIAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0U3JjKGNvbnN0
IFN0cmluZyYpOwotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRTcmM7IH0KKyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRTcmM7IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVUV09SS19FTVBU
WSwgTkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09VUkNFIH07CiAg
ICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsK
ICAgICB2b2lkIGxvYWQoKTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29uc3QgS1VSTCYg
PSBLVVJMKCkpIGNvbnN0OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0g
VVJMKCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0OwpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRX
aWRnZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdldFVwZGF0ZSA9
IG5lZWRXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRpb24oTWVkaWFQ
bGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2b2lkIHNldE1l
ZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAgIHZvaWQgZ2V0
UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3Rv
cjxTdHJpbmc+JiB2YWx1ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoVVJMJiB1
cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVlcyk7CiAgICAg
dm9pZCBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVXaWRnZXQoUGx1
Z2luQ3JlYXRpb25PcHRpb24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWlu
IH07Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVUkxBY3Rp
b24pOworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFsaWRVUkxBY3Rp
b24pOwogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
S2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5z
aWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlh
UGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5z
aWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWdu
ZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZh
dWx0VVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQo
TWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxl
bmd0aCkgT1ZFUlJJREU7CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgLy8gbG9hZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotICAg
IHZvaWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50
VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVkdWxlTmV4dFNv
dXJjZUNoaWxkKCk7CiAgICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCB1
c2VyQ2FuY2VsbGVkTG9hZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB3YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAg
ICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmluZyoga2V5U3lz
dGVtLCBJbnZhbGlkVVJMQWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENv
bnRlbnRUeXBlKiwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24pOwogCiAgICAg
dm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKQEAg
LTYzNCw3ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0
ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlT
dGF0ZU1heGltdW07Ci0gICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1fY3VycmVudFNy
YzsKIAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGIzYzA0N2FiNGVkMjgyMGU5YzEyNzM1ZWYy
MTMyNTdmOWVkOGM3ODQuLjJmZDM4YmM0NzJhZjllYmU0ZGQ3N2JhMTRiNTY1NjEyYmQwNzc2ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC00NjYsNyAr
NDY2LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbGV0KCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oCmluZGV4IDQ0MTUzNTU1MTA0NWJkMThlNjg5OTQyMGQ1ZmY2ZmEzMzkz
MDFlN2EuLmNjZTNmYmYwMDhiNWQwMGZlYWMwNWRmN2ZkMzY3MmEzMDlmMzYyMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JKU0JpbmRpbmdz
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKICAgICB2b2lkIHVwZGF0
ZURvY05hbWVkSXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFy
YW1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVudC5jcHAK
aW5kZXggNjk4YmExMjhhMDE3NTljY2YxYzU1N2E5NTcwYTQxZDVmMzVkYjI3Yy4uZDEwZjQ2MmVk
ZDkxZmU2ZGM3NGFmMzY4MzQxNmMzZDYzNjE0NTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgSFRNTFBhcmFtRWxlbWVu
dDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAg
cmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogfQogCi12b2lk
IEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFBhcmFtRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRN
TEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRleCBlNjJmODRhMWFmY2Y3Y2VlNjY1NTQ5MGE3
YjFiYzljMTBmYmY3NDNiLi4zMmM2MzllMGU5ZWUwNWU5ZDY3ODNiYTNhYTdjYzVhNjg5ZWU1YTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaApAQCAtNDAsNyArNDAsNyBA
QCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBh
ZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogfTsK
IAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0Y2FmNGM5NWE1NmI0MmZl
NjQ4YjUzMDc4ZTRkODNiZWVhNGY3ZDdkLi5hNmZkYzg2YzZkMmExYWQwYjljNDhmZmIwMzg3YmMw
ZTBkYzcwMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OmlzSW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBlRnJvbURhdGFV
UkwobV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkg
ewotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwobV91
cmwpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCht
X3VybCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkub2JqZWN0Q29u
dGVudFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVmZXJQbHVnSW5z
Rm9ySW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAgLTE3MCw3ICsx
NzAsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKIC8vIGRl
cGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIEtVUkwgY29t
cGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGNvbXBsZXRl
VVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNvbnRlbnRGcmFt
ZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAgICAmJiAhZG9j
dW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKQpAQCAtMTg0LDcgKzE4NCw3IEBAIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogYm9vbCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2luKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFTU0VSVChkb2N1
bWVudCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0
ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBk
b2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMSw3ICs0MzEsNyBAQCBzdGF0aWMg
dm9pZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4oSFRNTFBsdWdJ
bkltYWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdJbkVs
ZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAgaWYgKHBsdWdJ
bkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9hZGVkVVJMID0g
cGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBV
UkwmIGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7CiAgICAgICAg
ICAgICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRl
ZE1pbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9PSBsb2FkZWRV
UkwuaG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAgICAgICAgICAg
ICAgIHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01NzEsNyArNTcx
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFuZ2VGb3JTbmFw
c2hvdHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJlZ2luU25hcHNo
b3R0aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwpCit2b2lkIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25z
dCBVUkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJMOiAlcyIsIHRo
aXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAgQWN0dWFsIFVS
TDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWNmMzkzZGYxZDQ3OTU3YjBl
ZWExNWYxMzEwZjQ0MGUxNTkuLjcxYmEwNTk2ZGE2NmQwOWYzM2RlZWFlOGEwMDk3NTM5YmZhYjAy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRlZFVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2FkZWRVcmwoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5nIGxvYWRlZE1p
bWVUeXBlKCkgY29uc3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBVUkwgbWlnaHQg
bm90IGJlIHRoZSBzYW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0ZXJzLgotICAg
IHZvaWQgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHBsdWdJblVS
TCk7CisgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29uc3QgVVJMJiBw
bHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3Qg
V2lkZ2V0Kik7CiAKICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKGJvb2wp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRNTEltYWdlTG9h
ZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwogICAgIFN0cmlu
ZyBtX3VybDsKLSAgICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRlZFVybDsKIAog
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNpZ25lZCA9IDAp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRlMmRmMTkwZTlm
MDg2NzcwNzk1NjcwNTFlMTk2ZWRhZTQ2Yi4uNjYxZTM4MjI0ODhmNmI0NjVlNDdmYTA3OWFhM2U1
YWIwNzQ1MzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAK
QEAgLTEwNSwxMiArMTA1LDEyIEBAIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmFzeW5jKCkgY29u
c3QKICAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShhc3luY0F0dHIpIHx8IGZvcmNlQXN5bmMo
KTsKIH0KIAotS1VSTCBIVE1MU2NyaXB0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VSTCBIVE1MU2Ny
aXB0RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpKTsKIH0KIAotdm9pZCBIVE1MU2NyaXB0RWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Ny
aXB0RWxlbWVudC5oCmluZGV4IGFlNWNhMWJiM2VjYjM4NjI2NTQ0M2IxMmRhNmYyNTFiYWRhNGVh
MGIuLjY3MjI4ZjhhZjZhMjBkYWRjZTllMzQyNGQ2MjA5Njg1YzlmZDRhMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgpOyB9CiAgICAg
dm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgS1VSTCBzcmMoKSBjb25zdDsKKyAg
ICBVUkwgc3JjKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEFzeW5jKGJvb2wpOwogICAgIGJvb2wg
YXN5bmMoKSBjb25zdDsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hhcnNldEF0dHJp
YnV0ZVZhbHVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNw
cAppbmRleCAxODI4NGM4ZmE3MDhlYWY2M2RmNmM5MzI0ODhjOTI0MDE1ZGQ2YmY2Li5hOThiZjE0
ODk5OTU3NjNlZjg1NzFlNzA0ZTAwZmRiYWFhNTY5YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEhUTUxTdHlsZUVs
ZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBl
cnJvck9jYwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMp
IGNvbnN0Cit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogeyAgICAKICAgICBIVE1MRWxlbWVudDo6
YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5oCmluZGV4IDhmOTQzODhjYmFhZDFhOTIyMDc3NWJkNTMyODA3MjkzMDY2
MjFlZmEuLmZiYTBhMDNhMjk3MTc2Y2NjZWNlYzQyNzg0ODIwZTU5NTI5YzUyZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNv
dXJjZXMoYm9vbCBlcnJvck9jY3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5n
RHluYW1pY1NoZWV0KCkgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hl
ZXQoZG9jdW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogI2lm
IEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgdm9pZCBzY29wZWRBdHRyaWJ1dGVDaGFuZ2VkKGJv
b2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAppbmRl
eCA3ZmIyZGFlYzMzZDViZjZjM2NkNzBkNDQxOTAxMWY3YzllMDQ1MmEyLi5mMzU3MjYwNjA4MThk
NWYzM2UyOWIxZTU5OGRkNzNhOTMxNTgyNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFN0cmluZyBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6c2NvcGUoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc2Nv
cGVBdHRyKTsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBIVE1MVGFi
bGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVS
TD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5oCmluZGV4IDk4MjcwZTNjNTRkZjFmOGI5MDE5YmU4NWUwY2NhMzUzZmY4ZjIy
MTguLmZlMDE2NzZlMjdlYjRlYzdiNDk0MDE5ZTFkMGNlN2IxMDBlMWE0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAK
IEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KE5vZGUqIG5vZGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggYTAyOWI1MDgz
YzUzM2IzYzM5OTcwMGVlY2Y0YWIyY2VlZGIzOGE5Ni4uOTdiM2IwODM5MGY2Njk4MDZiMTZlNGQ0
Njg1NWQzNjg5YjYxNWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCkBAIC01NzAsNyArNTcwLDcgQEAgU3RyaW5nIEhUTUxUYWJsZUVsZW1lbnQ6OnN1bW1hcnko
KSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwogfQogCi12b2lk
IEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRN
TEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCAwOGQyM2UzYTMzMmE5M2U5ODk4MTYzNTAx
MjA1YWRlYzg3ODU2MmFlLi5lY2U1MTVkNDcwNDU1YjgwNTk0YjRlZDA4MTZlYzVkMTlkYjA3ZGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogICAgIC8vIFVzZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlkIG9yIG91dHNl
dCBib3JkZXIgZGVjbCBhbmQgdG8gZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVsZXMgYXR0cmli
dXRlcy4KICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0aW9uYWxQcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0OwogCiAgICAgZW51bSBUYWJsZVJ1bGVzIHsgVW5zZXRSdWxlcywgTm9uZVJ1bGVz
LCBHcm91cHNSdWxlcywgUm93c1J1bGVzLCBDb2xzUnVsZXMsIEFsbFJ1bGVzIH07CiAgICAgZW51
bSBDZWxsQm9yZGVycyB7IE5vQm9yZGVycywgU29saWRCb3JkZXJzLCBJbnNldEJvcmRlcnMsIFNv
bGlkQm9yZGVyc0NvbHNPbmx5LCBTb2xpZEJvcmRlcnNSb3dzT25seSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggODU3ZTIwZjI3MzBlMzc3Y2IzOTVlYTgz
NzNlOGZhYzExN2Y1MDY5My4uZGIzMWUyMDA4M2YxMjk2OTUyZmQ0ZTgxZGRiY2U2NjZiZWExYTg3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
ICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25zdCBVUkwm
IHVybCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVVSTExlbmd0aEZvckxv
Z2dpbmcgPSAxMjg7CiAgICAgCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHIKICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQog
Ci1LVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFRyYWNrRWxlbWVu
dDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRB
dHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTFRyYWNrRWxlbWVudD4qKQogICAgIHNl
dFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6TE9BRElORyk7CiAKICAgICAvLyA3LiBMZXQg
VVJMIGJlIHRoZSB0cmFjayBVUkwgb2YgdGhlIHRyYWNrIGVsZW1lbnQuCi0gICAgS1VSTCB1cmwg
PSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBVUkwgdXJsID0gZ2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAKICAgICAvLyA4LiBJZiB0aGUgdHJhY2sgZWxl
bWVudCdzIHBhcmVudCBpcyBhIG1lZGlhIGVsZW1lbnQgdGhlbiBsZXQgQ09SUyBtb2RlIGJlIHRo
ZSBzdGF0ZSBvZiB0aGUgcGFyZW50IG1lZGlhCiAgICAgLy8gZWxlbWVudCdzIGNyb3Nzb3JpZ2lu
IGNvbnRlbnQgYXR0cmlidXRlLiBPdGhlcndpc2UsIGxldCBDT1JTIG1vZGUgYmUgTm8gQ09SUy4K
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVk
KFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+KikKICAgICBlbnN1cmVUcmFjaygpLnNjaGVkdWxlTG9h
ZCh1cmwpOwogfQogCi1ib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCmluZGV4IDNiOWM0ZjcyY2I0YjI3NTRkNDY4MTA3
OWJlMjVjOWUyYmNjOTcxY2EuLmI3NjE1MWI2ZDE4NTdkMGFjNzAzZTQ4NzU4OWNiMmY0OGZkMWVi
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1
YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
IAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGtpbmQoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRU
cmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKICAgICBMb2FkYWJsZVRleHRUcmFj
ayYgZW5zdXJlVHJhY2soKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChjb25zdCBLVVJM
Jik7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoY29uc3QgVVJMJik7CiAKICAgICBSZWZQ
dHI8TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CiAgICAgVGltZXI8SFRNTFRyYWNrRWxlbWVu
dD4gbV9sb2FkVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApp
bmRleCBhMTAzNjgzYzkxYTMxN2M1ZmNmZWIzZDQ0ODQ5OTZkZTgxMDA1YWMxLi5lZDY3YzZiZTQ2
NDYyNjhlYmEyNTkzODk1ODJjOTY3YTUwN2QyYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIHsKICAgICBEaXNwbGF5
TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBLVVJMIHBvc3RlciA9IHBvc3Rlcklt
YWdlVVJMKCk7CisgICAgVVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJMKCk7CiAKICAgICBpZiAo
IXBvc3Rlci5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHBvc3RlciBwYXRoLCBi
dXQgb25seSBzaG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRpc3BsYXkgYnkgcGxheWlu
ZyBvciBzZWVraW5nIGFuZCB0aGUKQEAgLTMxNSwxMSArMzE1LDExIEBAIHVuc2lnbmVkIEhUTUxW
aWRlb0VsZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0KICNlbmRpZgog
Ci1LVVJMIEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkgY29uc3QKK1VSTCBIVE1M
VmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHVybCA9
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVNvdXJjZVVSTCgpKTsKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggOGVlMjAyZWY5Y2Y0NWQ2
ZDJhZTY4NTFmNGIyZDVmNTA4MWQxZTY1NC4uYmEwZjViNGNiOWJkOGRmMjQzODBiYjg3NjQ2MjA2
YjAzMjdkOGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2Uo
KSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgp
ID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCi0gICAgS1VSTCBwb3N0ZXJJbWFnZVVSTCgp
IGNvbnN0OworICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IEhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRl
eCA3NjI0ZmU5MjkwY2FkNmY5ZjRkMzBmYzEzOWZlZmIzYjUwYzA3ZjFiLi5kYjM1NWFjNGI3Mzcw
N2I3ZTVlMzZjNTM1YTUzNDVkMTdjNGIyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MVmlld1NvdXJjZURv
Y3VtZW50OjpIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6SFRN
TFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiAgICAgLCBt
X3R5cGUobWltZVR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VE
b2N1bWVudC5oCmluZGV4IGNlZDU5ZGYzM2Y3NjkwZTY4MDhkYjg3ODNjY2VhMmEzM2RmOGViODAu
LmM0ZWY1ZDBmNmE4NDM3NTcyOTJlZmUwNzMyMWUxMmQ1MjJjN2Y5MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIGNs
YXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCBGSU5BTCA6IHB1
YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxW
aWV3U291cmNlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVmlld1Nv
dXJjZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOwogICAgIH0KQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU291cmNlKGNvbnN0IFN0cmluZyYsIEhU
TUxUb2tlbiYpOwogCiBwcml2YXRlOgotICAgIEhUTUxWaWV3U291cmNlRG9jdW1lbnQoRnJhbWUq
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwog
CiAgICAgLy8gUmV0dXJucyBIVE1MVmlld1NvdXJjZVBhcnNlciBvciBUZXh0RG9jdW1lbnRQYXJz
ZXIgYmFzZWQgb24gbV90eXBlLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNl
cj4gY3JlYXRlUGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRl
eCBkYWVhMDFlZThlYzdmYTBmOWMwMmNkY2E3YzExOTg5MTZhZmZmZTRhLi5hY2I2NzJkYTJlNjVl
NmM2NTIwNjlkNDVlNDg5OTAxYmEyODU3MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1
bWVudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnRQYXJzZXI6OmZp
bmlzaCgpCiAgICAgCiAvLyAtLS0tLS0tLQogCi1JbWFnZURvY3VtZW50OjpJbWFnZURvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorSW1hZ2VEb2N1bWVudDo6SW1hZ2VEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZy
YW1lLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykKICAgICAsIG1faW1hZ2VFbGVtZW50KDApCiAg
ICAgLCBtX2ltYWdlU2l6ZUlzS25vd24oZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVu
dC5oCmluZGV4IDMyMDRkMDE2ZDJjYzZmODdjOTFjYjI1MTU5YmM3MWYyYzI4MDZlOWIuLmVkNTMz
OWNhODY1MzIyOGJlZWE5ODMwODk3NGE2MTkyZjdkM2Q5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEltYWdlRG9jdW1lbnRFbGVtZW50
OwogCiBjbGFzcyBJbWFnZURvY3VtZW50IEZJTkFMIDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlRG9j
dW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdlQ2xpY2tlZChpbnQgeCwg
aW50IHkpOwogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJM
Jik7CisgICAgSW1hZ2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGQ4ZGM1ZjkwNjFhNDQyZmYwNjBlNzg1
MjNmMGMyMzhlYzI4NTRkMzcuLjdmMGVkZmIwODQ4OWNmOTdkZmRmNDQzNzdlZTU4MDA5NjJlYjgy
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTE4LDcgKzExOCw3
IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXIq
LCBjb25zdCBjaGFyKiwgc2l6ZV90KQogICAgIGZpbmlzaCgpOwogfQogICAgIAotTWVkaWFEb2N1
bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK01lZGlh
RG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3VtZW50Q2xhc3MpCiAgICAgLCBt
X3JlcGxhY2VNZWRpYUVsZW1lbnRUaW1lcih0aGlzLCAmTWVkaWFEb2N1bWVudDo6cmVwbGFjZU1l
ZGlhRWxlbWVudFRpbWVyRmlyZWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCmlu
ZGV4IDNhZjU1MGUyZmEyOWUzNDNhNzcyMjQ4ZmY3NjNlMGM0MWU3ZDU4NzAuLjVmNjExYjA5MGJl
YTVjZjA0YWVkYmE2MTVhZTkxMzQ5NDE0M2JlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVk
aWFEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50PiBjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRlZFRyYWNrcygp
OwogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7Cisg
ICAgTWVkaWFEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5kZXggMzk1OWRkYTRmMDZjMzVj
ZWI0YmFiYjdlNzNlMDdkZjRiYWZlNTM4Ny4uMjVhYWJiOTY2NTI2NTFlNDBkODEzYjU3OWIxZmQz
NTEyYTAyOWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50
VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQ
YXJzZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGRvdWJsZSBNZWRpYUZyYWdtZW50VVJJUGFyc2Vy
OjppbnZhbGlkVGltZVZhbHVlKCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1l
KCk7CiB9CiAKLU1lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRVUklQYXJzZXIo
Y29uc3QgS1VSTCYgdXJsKQorTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6TWVkaWFGcmFnbWVudFVS
SVBhcnNlcihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fdGltZUZv
cm1hdChOb25lKQogICAgICwgbV9zdGFydFRpbWUoTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDE3
ZGZjM2Y3OTAwNjVkM2Y0MTQ0OWM0NjhhZTU4ZmQ5OGM4ZDhkM2QuLjkzMmM3OTQ5YTVmYTQ0YWJj
OWQ5ZDNjYzE0YWNjOTg3YjRhNGZkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFG
cmFnbWVudFVSSVBhcnNlci5oCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShWSURF
TykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIAogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBGSU5BTCB7CiBwdWJsaWM6CiAgICAg
Ci0gICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlcihjb25zdCBLVVJMJik7CisgICAgTWVkaWFGcmFn
bWVudFVSSVBhcnNlcihjb25zdCBVUkwmKTsKIAogICAgIGRvdWJsZSBzdGFydFRpbWUoKTsKICAg
ICBkb3VibGUgZW5kVGltZSgpOwpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
cGFyc2VOUFRGcmFnbWVudChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgZG91YmxlJiBz
dGFydFRpbWUsIGRvdWJsZSYgZW5kVGltZSk7CiAgICAgYm9vbCBwYXJzZU5QVFRpbWUoY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBvZmZzZXQsIGRvdWJsZSYgdGltZSk7
CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBUaW1lRm9ybWF0IG1fdGlt
ZUZvcm1hdDsKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1fZW5kVGltZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNTI5M2RjZDFhODVlNjE3
MTViZDhhMWY4NmEyMTNlNDcwNzE4YjZhOC4uMmMzYjRiMjgyMjk5NDlmYzY3ODc5NWFhM2U5MjE0
MjRkZWFkZTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyhEb2N1
bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpCiAgICAgfQogfQogCi1QbHVnaW5Eb2N1
bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCitQbHVn
aW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkK
ICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBQbHVnaW5Eb2N1bWVudENsYXNzKQogICAg
ICwgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkodHJ1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1
Z2luRG9jdW1lbnQuaAppbmRleCBlMGJiZDk2ZmU5MTM1ZTIyM2NkODFlM2ExMGQwNGY3NzUzYzEz
NDk4Li4yMGU0YzhjNjRhOGI0ZWFlMmEyMjBmYTZjZWZmOGI3ZDRhNTQyM2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFdpZGdldDsK
IAogY2xhc3MgUGx1Z2luRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpbkRv
Y3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAg
IH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkTG9hZFBsdWdpbk1h
bnVhbGx5KCkgeyByZXR1cm4gbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHk7IH0KIAogcHJpdmF0
ZToKLSAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBQbHVnaW5E
b2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERv
Y3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggNWFkOGZjNjM4NWM3MjQ5NzM2Y2Y1ZGM1M2Y3
Mjc2YTA4MWVhZjIyMS4uMmJmN2Q3MGNmNGIyM2NmY2E1MDJkMmVhMjM0ZDhhN2VkMWViNzkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0yOSwyMCArMjks
MjAgQEAKIAogI2lmIEVOQUJMRShCTE9CKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUHVibGljVVJMTWFuYWdl
cjo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBV
UkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCit2b2lkIFB1YmxpY1VSTE1hbmFnZXI6OnJlZ2lz
dGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBVUkxSZWdpc3Ry
YWJsZSogcmVnaXN0cmFibGUpCiB7CiAgICAgUmVnaXN0cnlVUkxNYXA6Oml0ZXJhdG9yIGZvdW5k
ID0gbV9yZWdpc3RyeVRvVVJMLmFkZCgmcmVnaXN0cmFibGUtPnJlZ2lzdHJ5KCksIFVSTFNldCgp
KS5pdGVyYXRvcjsKICAgICBmb3VuZC0+a2V5LT5yZWdpc3RlclVSTChvcmlnaW4sIHVybCwgcmVn
aXN0cmFibGUpOwogICAgIGZvdW5kLT52YWx1ZS5hZGQodXJsLnN0cmluZygpKTsKIH0KIAotdm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgS1VSTCYgdXJsKQordm9pZCBQdWJsaWNV
UkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChSZWdpc3RyeVVS
TE1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9IG1fcmVnaXN0
cnlUb1VSTC5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmIChpLT52YWx1ZS5jb250YWlucyh1cmwu
c3RyaW5nKCkpKSB7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUHVibGljVVJMTWFuYWdlcjo6Y29u
dGV4dERlc3Ryb3llZCgpCiB7CiAgICAgZm9yIChSZWdpc3RyeVVSTE1hcDo6aXRlcmF0b3IgaSA9
IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9IG1fcmVnaXN0cnlUb1VSTC5lbmQoKTsgKytp
KSB7CiAgICAgICAgIGZvciAoVVJMU2V0OjppdGVyYXRvciBqID0gaS0+dmFsdWUuYmVnaW4oKTsg
aiAhPSBpLT52YWx1ZS5lbmQoKTsgKytqKQotICAgICAgICAgICAgaS0+a2V5LT51bnJlZ2lzdGVy
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikpOworICAgICAgICAgICAgaS0+a2V5LT51bnJl
Z2lzdGVyVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICpqKSk7CiAgICAgfQogCiAgICAgbV9yZWdp
c3RyeVRvVVJMLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1Ymxp
Y1VSTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCmlu
ZGV4IGExMDkxMTE2YmVjYmE1ODBmMjhlOTNmNjAzZTE0ZThhNmRjNjc2ZTEuLjlhZDAxYmQ0NTg5
ZTQ0NWZlMTQzZjE4ZWQxZmIxM2ZiODRkZjE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUHVibGljVVJMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGlj
VVJMTWFuYWdlci5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTFJlZ2lzdHJ5OwpAQCAtNDYsOCArNDYsOCBA
QCBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgT3duUHRyPFB1
YmxpY1VSTE1hbmFnZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdWJsaWNVUkxN
YW5hZ2VyKTsgfQogCi0gICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmLCBVUkxSZWdpc3RyYWJsZSopOwotICAgIHZvaWQgcmV2b2tlKGNvbnN0IEtVUkwmKTsK
KyAgICB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVn
aXN0cmFibGUqKTsKKyAgICB2b2lkIHJldm9rZShjb25zdCBVUkwmKTsKICAgICB2b2lkIGNvbnRl
eHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNw
cAppbmRleCA5MzM0YTM5N2JlZGYyOWM3NmUyM2NjYWM1MGNjMmYxZTk3OWNkYTVkLi44M2VmMTMx
YzViZWQyMTdmZGMwNTQ2MThjYzA2MzZkZjc0YzJkYmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RG9jdW1lbnQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwp
CitUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0Q29tcGF0aWJpbGl0
eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRE
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaAppbmRleCBlZWI2
MDEwZWI4MDBlYmRkMTg5NDVmYzAwYTU4NjEyMzU2NTg3YjNkLi5mNGE4MzJkNzBlZDc1NjA4YTk3
YzUzZjQ5ODY1NGE0Y2FjYWMxMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHREb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmgKQEAg
LTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRleHREb2N1bWVu
dCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHREb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFRleHREb2N1
bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNy
ZWF0ZVBhcnNlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAppbmRleCBl
YjVhOTdiZDMzY2E5NThmOGQ0M2I5NmE4ODAzMmM2N2JmODgzM2ExLi4xYjU1ZGM4ZTU2NmUzNDI5
YjM0MjAxYzliYjY5YjE2Yjg0ZTc3MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUu
Y3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBib29s
IFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgIUtVUkwoS1VSTCgpLCB2YWx1ZSku
aXNWYWxpZCgpOworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFVUkwoVVJMKCksIHZh
bHVlKS5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCmluZGV4IDY2ODdjOWM5M2Y5MmQwNWE0ZWY5
ZmQxNWYzMzM1Y2MzODUzMmIwY2IuLjZlZTU3ZTIxY2Y5OWQyZmIyNTRmOTNiMWZhNzZlNmIwZDJh
OGExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0cnkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKQEAgLTM1LDcgKzM1LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKIApAQCAtNDksOCArNDksOCBAQCBjbGFz
cyBVUkxSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+VVJMUmVnaXN0cnkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJV
UkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgVVJMUmVnaXN0cmFibGUqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdp
c3RyYWJsZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwm
KSA9IDA7CiAKICAgICAvLyBUaGlzIGlzIGFuIG9wdGlvbmFsIEFQSQogICAgIHZpcnR1YWwgVVJM
UmVnaXN0cmFibGUqIGxvb2t1cChjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyNmJjNGViOTExOWVjZjUwNTMyZDk4ZmMzZjli
ZjU4YmVjODE4M2Q3Li5kZmE5MjBlMzRmM2YwMDU2NjA1NTZhMDY0MDk2MWNmZmVkN2ZhMjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNyArOTEsNyBAQCBib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZpZGVvRWxlbWVu
dCogdmlkZW8pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorYm9vbCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlm
ICghY2FudmFzKCktPm9yaWdpbkNsZWFuKCkgfHwgbV9jbGVhblVSTHMuY29udGFpbnModXJsLnN0
cmluZygpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBLVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNo
ZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6
Y2hlY2tPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4o
dXJsKSkKICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCA4
ZTg0OWJkZThmYjFjNGQ4MGVlYTUyOWJiNTcyZDZkOTNmZTFiZmJkLi5iNWIyNzgxZjcwOTViZDQy
NzA4M2U4MTY1ZmQ1ZjZkZGRhOGYwNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNz
IENhbnZhc1BhdHRlcm47CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFn
ZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIFdlYkdMT2JqZWN0OwogCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDog
cHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CkBAIC02NywxNCArNjcsMTQgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCopOwogICAg
IGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7CiAgICAgYm9v
bCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKLSAgICBib29sIHdv
dWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIGJvb2wgd291bGRUYWludE9yaWdpbihj
b25zdCBVUkwmKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgY2hlY2tPcmlnaW4oY29u
c3QgVCogYXJnKQogICAgIHsKICAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4oYXJnKSkKICAg
ICAgICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVkKCk7CiAgICAgfQotICAgIHZvaWQg
Y2hlY2tPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVVJM
Jik7CiAKIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNmQwNDBkNDc0NmRjMzVhNTBlNmE0OTMzNjg5YzZmOWQ3ZjdlYzA2NS4uYzBmMjg4Mzhm
M2ZmNTEwMjhhYWU1NTYxNGMwNDA3YTJjYjQ0NWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NTU5LDcgKzU1
NTksNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVIVE1MSW1hZ2VFbGVt
ZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSAogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAibm8gaW1h
Z2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjb25zdCBLVVJMJiB1cmwg
PSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKKyAgICBjb25zdCBVUkwm
IHVybCA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5yZXNwb25zZSgpLnVybCgpOwogICAgIGlmICh1
cmwuaXNOdWxsKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkgewogICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVu
Y3Rpb25OYW1lLCAiaW52YWxpZCBpbWFnZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXgg
NjdmNmJjYjE4Y2Q1Y2RkZTgxNTY3N2ZmMDZiMzc0ZTYwNGUyYzMyZi4uM2U3MGI3OTkxOGQ1Nzg5
MDdkZTM1YTAzYjkwN2Y1NGNmZjk2YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgQ1NT
UHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICBpZiAocnVsZUVxdWFsSWdub3JpbmdDYXNl
KG1fcnVsZSwgImltcG9ydCIpKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBwYXJzZUNTU1N0cmlu
Z09yVVJMKG1fcnVsZVZhbHVlLmRhdGEoKSwgbV9ydWxlVmFsdWUuc2l6ZSgpKTsKICAgICAgICAg
aWYgKCF1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGJhc2VFbGVtZW50VVJMOyAv
LyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQcmVsb2FkU2Nh
bmVyIHZpYSBzY2FuKCkhCisgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7IC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRTY2FuZXIgdmlh
IHNjYW4oKSEKICAgICAgICAgICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IFBy
ZWxvYWRSZXF1ZXN0OjpjcmVhdGUoImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkwsIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVzdD8KICAgICAg
ICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChyZXF1ZXN0LnJlbGVhc2UoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IGE3Y2I3MmUy
ZmI5N2Q2YjU2MjE2MGI0MWMxZGQyZTg5ODQ3NmRkNWQuLjc4ZDFmMTM1Y2FiYzUxNzQ2YjBlODQz
NzQ5MzY3ZTljOWYxZTQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJEZWNpbWFs
LmgiCiAjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgPGxpbWl0
cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNDFlZTIwMTYxYmU3NmRhNjlk
OGFiMDk2ZDJiMWY1OWYxZjY2NzM4Ni4uNjQyMzU5Mzk4OTkzNWM4YjZmMzkzOWIyNWYxZmFhMmYw
ODU1YWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxv
YWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9h
ZFNjYW5uZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgog
Ci0gICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGVQcmVsb2FkUmVxdWVzdChjb25zdCBL
VVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQorICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRl
UHJlbG9hZFJlcXVlc3QoY29uc3QgVVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQogICAgIHsKICAgICAg
ICAgaWYgKCFzaG91bGRQcmVsb2FkKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7
CiB9OwogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK1Rva2VuUHJlbG9hZFNj
YW5uZXI6OlRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBtX2RvY3VtZW50VVJMKGRvY3VtZW50VVJMKQogICAg
ICwgbV9pblN0eWxlKGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2Fs
ZUZhY3RvcikKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6
dXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYgdG9rZW4pCiB7CiAgICAgQVNTRVJU
KG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwuaXNFbXB0eSgpKTsKICAgICBpZiAoY29uc3QgdHlw
ZW5hbWUgVG9rZW46OkF0dHJpYnV0ZSogaHJlZkF0dHJpYnV0ZSA9IHRva2VuLmdldEF0dHJpYnV0
ZUl0ZW0oaHJlZkF0dHIpKQotICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMID0gS1VS
TChtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZkF0
dHJpYnV0ZS0+dmFsdWUpKS5jb3B5KCk7CisgICAgICAgIG1fcHJlZGljdGVkQmFzZUVsZW1lbnRV
UkwgPSBVUkwobV9kb2N1bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29weSgpOwogfQogCi1IVE1MUHJlbG9hZFNjYW5uZXI6
OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQorSFRNTFByZWxv
YWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQog
ICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICAsIG1f
dG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zKSkKIHsKQEAgLTM5OSw3ICsz
OTksNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7CiB9CiAKLXZv
aWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRlciogcHJlbG9h
ZGVyLCBjb25zdCBLVVJMJiBzdGFydGluZ0Jhc2VFbGVtZW50VVJMKQordm9pZCBIVE1MUHJlbG9h
ZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiBwcmVsb2FkZXIsIGNvbnN0IFVS
TCYgc3RhcnRpbmdCYXNlRWxlbWVudFVSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OyAvLyBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciBvbmx5IHdvcmtzIG9uIHRoZSBtYWlu
IHRocmVhZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNj
YW5uZXIuaAppbmRleCA3YzNmNTM1YzU3N2Q4MTdjZTMyMGUyZjYzNmE5MzU4NjI0MmQxZDk3Li40
ZmFmN2ZhZmM0Mzg3ZTc2M2QzMTAwZmI5MGQ5MWViZWRmMWMwNzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaApAQCAtNDQsNyArNDQsNyBA
QCBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUb2tlblByZWxvYWRTY2FubmVyKTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVG9rZW5QcmVsb2FkU2Nhbm5lcihj
b25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwor
ICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1bWVudFVSTCwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwogICAgIH5Ub2tlblByZWxvYWRTY2FubmVy
KCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJl
YW0mIHJlcXVlc3RzKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nhbihj
b25zdCBDb21wYWN0SFRNTFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsK
ICNlbmRpZgogCi0gICAgdm9pZCBzZXRQcmVkaWN0ZWRCYXNlRWxlbWVudFVSTChjb25zdCBLVVJM
JiB1cmwpIHsgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHVybDsgfQorICAgIHZvaWQgc2V0
UHJlZGljdGVkQmFzZUVsZW1lbnRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9wcmVkaWN0ZWRCYXNl
RWxlbWVudFVSTCA9IHVybDsgfQogCiAgICAgLy8gQSBUb2tlblByZWxvYWRTY2FubmVyQ2hlY2tw
b2ludCBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvIHJld2luZFRvLAogICAgIC8vIGF0
IHdoaWNoIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52YWxpZGF0ZWQu
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVkaWN0ZWRCYXNl
VVJMKGNvbnN0IFRva2VuJik7CiAKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7Ci0gICAgICAgIENo
ZWNrcG9pbnQoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwsIGJvb2wgaW5TdHls
ZQorICAgICAgICBDaGVja3BvaW50KGNvbnN0IFVSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkws
IGJvb2wgaW5TdHlsZQogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgICAgICAgICAg
LCBzaXplX3QgdGVtcGxhdGVDb3VudAogI2VuZGlmCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgS1VSTCBwcmVkaWN0ZWRCYXNlRWxl
bWVudFVSTDsKKyAgICAgICAgVVJMIHByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwogICAgICAgICBi
b29sIGluU3R5bGU7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIHNpemVf
dCB0ZW1wbGF0ZUNvdW50OwpAQCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgfTsKIAog
ICAgIENTU1ByZWxvYWRTY2FubmVyIG1fY3NzU2Nhbm5lcjsKLSAgICBjb25zdCBLVVJMIG1fZG9j
dW1lbnRVUkw7Ci0gICAgS1VSTCBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMOworICAgIGNvbnN0
IFVSTCBtX2RvY3VtZW50VVJMOworICAgIFVSTCBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwog
ICAgIGJvb2wgbV9pblN0eWxlOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0b3I7CiAKQEAg
LTEzMCwxMSArMTMwLDExIEBAIHByaXZhdGU6CiBjbGFzcyBIVE1MUHJlbG9hZFNjYW5uZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxQcmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1M
UGFyc2VyT3B0aW9ucyYsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IDEuMCk7CisgICAgSFRNTFByZWxvYWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJP
cHRpb25zJiwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSAxLjApOwogICAgIH5IVE1MUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kVG9F
bmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdm9pZCBzY2FuKEhUTUxSZXNvdXJjZVBy
ZWxvYWRlciosIGNvbnN0IEtVUkwmIGRvY3VtZW50QmFzZUVsZW1lbnRVUkwpOworICAgIHZvaWQg
c2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBVUkwmIGRvY3VtZW50QmFzZUVsZW1l
bnRVUkwpOwogCiBwcml2YXRlOgogICAgIFRva2VuUHJlbG9hZFNjYW5uZXIgbV9zY2FubmVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRl
ci5jcHAKaW5kZXggMzYzMzQxYWEwMDNiYmU2NTkwNmIxNTc2ZWU0OTE0YmJlMDdiZDczNy4uYjEw
MDk5NzhhNjFhZTIzYWI2MDEwMGFjYmY2YjRhNWExMjg5NGQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIGJvb2wgUHJlbG9hZFJlcXVlc3Q6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVh
ZCgpIGNvbnN0CiAgICAgICAgICYmIG1fYmFzZVVSTC5pc1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJl
YWQoKTsKIH0KIAotS1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVVUkwoRG9jdW1lbnQqIGRv
Y3VtZW50KQorVVJMIFByZWxvYWRSZXF1ZXN0Ojpjb21wbGV0ZVVSTChEb2N1bWVudCogZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlVVJMLCBt
X2Jhc2VVUkwuaXNFbXB0eSgpID8gZG9jdW1lbnQtPnVybCgpIDogbV9iYXNlVVJMKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgK
aW5kZXggZWY5MzM5NWIxMzA2YjhiZTkyZDY0NDFiMWQ5YzUyY2U5ZWFjNTYzZi4uYWFhODdlYTMy
MzU4YWFjOWI3ZDJiZGM4OTIyNmM0YjIzNzM3NDRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKQEAgLTMzLDEyICszMywxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZWxvYWRSZXF1ZXN0IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBp
bml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBtZWRpYUF0
dHJpYnV0ZSkKKyAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25zdCBTdHJpbmcm
IG1lZGlhQXR0cmlidXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQcmVs
b2FkUmVxdWVzdChpbml0aWF0b3IsIHJlc291cmNlVVJMLCBiYXNlVVJMLCByZXNvdXJjZVR5cGUs
IG1lZGlhQXR0cmlidXRlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVx
dWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291
cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJj
ZVR5cGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25zdCBVUkwmIGJh
c2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCByZXNvdXJjZVVS
TCwgYmFzZVVSTCwgcmVzb3VyY2VUeXBlLCBTdHJpbmcoKSkpOwogICAgIH0KQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAgUHJlbG9hZFJl
cXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkws
IGNvbnN0IEtVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwg
Y29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSkKKyAgICBQcmVsb2FkUmVxdWVzdChjb25zdCBT
dHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29uc3QgVVJMJiBi
YXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0IFN0cmluZyYg
bWVkaWFBdHRyaWJ1dGUpCiAgICAgICAgIDogbV9pbml0aWF0b3IoaW5pdGlhdG9yKQogICAgICAg
ICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkpCiAgICAgICAgICwg
bV9iYXNlVVJMKGJhc2VVUkwuY29weSgpKQpAQCAtNjQsMTEgKzY0LDExIEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAotICAgIEtVUkwgY29tcGxldGVVUkwoRG9jdW1lbnQqKTsKKyAgICBVUkwg
Y29tcGxldGVVUkwoRG9jdW1lbnQqKTsKIAogICAgIFN0cmluZyBtX2luaXRpYXRvcjsKICAgICBT
dHJpbmcgbV9yZXNvdXJjZVVSTDsKLSAgICBLVVJMIG1fYmFzZVVSTDsKKyAgICBVUkwgbV9iYXNl
VVJMOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgbV9y
ZXNvdXJjZVR5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWFBdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDQ5MWRiZDM4MmNh
NzJhNmUwNGYyNWJhOGYwMDI5MDJiNTEyMDkyNzAuLjVlNGY3ZWNkNDg2OWVjY2UyOGQ5ZDRhZDcx
NWZkMWY3MGI1NDQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
Y3JpcHRSdW5uZXIuY3BwCkBAIC03NCwxMCArNzQsMTAgQEAgdm9pZCBIVE1MU2NyaXB0UnVubmVy
OjpkZXRhY2goKQogICAgIG1fZG9jdW1lbnQgPSAwOwogfQogCi1zdGF0aWMgS1VSTCBkb2N1bWVu
dFVSTEZvclNjcmlwdEV4ZWN1dGlvbihEb2N1bWVudCogZG9jdW1lbnQpCitzdGF0aWMgVVJMIGRv
Y3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8gVXNlIHRoZSBVUkwgb2YgdGhlIGN1
cnJlbnRseSBhY3RpdmUgZG9jdW1lbnQgZm9yIHRoaXMgZnJhbWUuCiAgICAgcmV0dXJuIGRvY3Vt
ZW50LT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggM2UzOTMzNDUyYWZhNDRhYzQyMmZhZWYxMjNjMDRmNzE4
YjQxNDRhOC4uODRlYWMzNDZkY2VkMjYyNDFkNDgzYTc2MjcwY2Q0NTgwM2UyNGUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTE1Niw4ICsxNTYs
OCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBkZWNvZGUxNkJpdFVuaWNvZGVFc2NhcGVTZXF1ZW5j
ZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGRlY29kZVN0
YW5kYXJkVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIFdlIHVzZSBkZWNvZGVFc2NhcGVTZXF1ZW5j
ZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygpIChkZWNsYXJlZCBpbiBL
VVJMLmgpIHRvCi0gICAgLy8gYXZvaWQgcGxhdGZvcm0tc3BlY2lmaWMgVVJMIGRlY29kaW5nIGRp
ZmZlcmVuY2VzIChlLmcuIEtVUkxHb29nbGUpLgorICAgIC8vIFdlIHVzZSBkZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygpIChkZWNsYXJl
ZCBpbiBVUkwuaCkgdG8KKyAgICAvLyBhdm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBVUkwgZGVjb2Rp
bmcgZGlmZmVyZW5jZXMgKGUuZy4gVVJMR29vZ2xlKS4KICAgICByZXR1cm4gZGVjb2RlRXNjYXBl
U2VxdWVuY2VzPFVSTEVzY2FwZVNlcXVlbmNlPihzdHJpbmcsIGVuY29kaW5nKTsKIH0KIApAQCAt
Mjc4LDcgKzI3OCw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQs
IFhTU0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRlbGVnYXRlKQogICAgICAgICBTdHJpbmcgZXJy
b3JEZXRhaWxzOwogICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsKICAgICAgICAg
U3RyaW5nIHJlcG9ydFVSTDsKLSAgICAgICAgS1VSTCB4c3NQcm90ZWN0aW9uUmVwb3J0VVJMOwor
ICAgICAgICBVUkwgeHNzUHJvdGVjdGlvblJlcG9ydFVSTDsKIAogICAgICAgICAvLyBQcm9jZXNz
IHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciwgdGhlbiBtaXggaW4gdGhlIENTUCBoZWFkZXIn
cyB2YWx1ZS4KICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0ZWRYU1NEaXNw
b3NpdGlvbiB4c3NQcm90ZWN0aW9uSGVhZGVyID0gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGhl
YWRlclZhbHVlLCBlcnJvckRldGFpbHMsIGVycm9yUG9zaXRpb24sIHJlcG9ydFVSTCk7CkBAIC0y
ODgsNyArMjg4LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBkb2N1bWVudCwg
WFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgICAgICBpZiAoTWl4
ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkwpKSB7CiAgICAgICAgICAgICAgICAgZXJyb3JEZXRh
aWxzID0gImluc2VjdXJlIHJlcG9ydGluZyBVUkwgZm9yIHNlY3VyZSBwYWdlIjsKICAgICAgICAg
ICAgICAgICB4c3NQcm90ZWN0aW9uSGVhZGVyID0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZs
ZWN0ZWRYU1NJbnZhbGlkOwotICAgICAgICAgICAgICAgIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkwg
PSBLVVJMKCk7CisgICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVSTCA9IFVSTCgp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICh4c3NQcm90ZWN0aW9uSGVh
ZGVyID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTSW52YWxpZCkKQEAgLTcy
MCw3ICs3MjAsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJlc291cmNlKGNvbnN0
IFN0cmluZyYgdXJsKQogICAgIGlmIChtX2RvY3VtZW50VVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgcmVzb3VyY2VVUkwobV9kb2N1bWVudFVS
TCwgdXJsKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwobV9kb2N1bWVudFVSTCwgdXJsKTsKICAgICBy
ZXR1cm4gKG1fZG9jdW1lbnRVUkwuaG9zdCgpID09IHJlc291cmNlVVJMLmhvc3QoKSAmJiByZXNv
dXJjZVVSTC5xdWVyeSgpLmlzRW1wdHkoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuaAppbmRleCAwNjkwYmU5MjhiMzcyMzgyYzc3Mzg2NzRiMTEyMjE3ZjVlMDYx
YTg1Li4zMjFlNmUxYTVmMzBlOGQxNTRhOTAzMDc2MWU2MTE3MWVhNzlkNTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdWZmaXhUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTEwNCw3
ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDb250YWluZWRJblJlcXVlc3QoY29uc3Qg
U3RyaW5nJik7CiAgICAgYm9vbCBpc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHVy
bCk7CiAKLSAgICBLVVJMIG1fZG9jdW1lbnRVUkw7CisgICAgVVJMIG1fZG9jdW1lbnRVUkw7CiAg
ICAgYm9vbCBtX2lzRW5hYmxlZDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVj
dGVkWFNTRGlzcG9zaXRpb24gbV94c3NQcm90ZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAppbmRleCAxZDhjN2Q4ODBlZDRiMmY4NDFm
YzgyNzUyYTE0YTdkODc3MTczNTkzLi42NTFjNTBlZjY3YzI3OGQxYTA3NWE5ZDczOTliMDMyZDI4
MjcyMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVs
ZWdhdGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBYU1NBdWRpdG9yRGVsZWdhdGVfaAog
I2RlZmluZSBYU1NBdWRpdG9yRGVsZWdhdGVfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50Kik7CiAKICAgICB2
b2lkIGRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mKTsKLSAgICB2b2lkIHNldFJlcG9ydFVS
TChjb25zdCBLVVJMJiB1cmwpIHsgbV9yZXBvcnRVUkwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFJl
cG9ydFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3JlcG9ydFVSTCA9IHVybDsgfQogCiBwcml2YXRl
OgogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGdlbmVyYXRlVmlvbGF0aW9uUmVwb3J0KCk7CiAK
ICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBib29sIG1fZGlkU2VuZE5vdGlmaWNhdGlv
bnM7Ci0gICAgS1VSTCBtX3JlcG9ydFVSTDsKKyAgICBVUkwgbV9yZXBvcnRVUkw7CiB9OwogCiB0
eXBlZGVmIFZlY3RvcjxPd25QdHI8WFNTSW5mbz4gPiBYU1NJbmZvU3RyZWFtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRleCBjZTUxZjY1
NWZlZGY1NzY3YTMxNTZkNzU2MDlmNTYxZTJhMGE0MmRmLi5jZWQ2Yzg2MmU4MDMxOGEzYTkwMGM1
NzI1NDI3OTk0ZDQ0NmUzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xv
YWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRy
YWNrOjpjbGVhckNsaWVudCgpCiAgICAgVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpOwogfQogCi12
b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGlmICh1cmwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAppbmRleCAxODhlYWQxMzc1OGUwYjFjYWM2YWRj
NjUwMDM4MjA2MmE0YzUxM2Y2Li5hYmJjNzg3YTczYjgwZmM2NDc2YTBmODNiMjBmMWE5YWU1MWMz
YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50IDogcHVibGlj
IFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJh
Y2tDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJs
ZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgVVJMJikgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRU
cmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9OwogCkBAIC01Myw3ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKIAot
ICAgIHZvaWQgc2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9h
ZChjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpOwogCkBAIC04
Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1l
bnQ7CiAgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOwogICAgIE93blB0
cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1f
dXJsOwogICAgIGJvb2wgbV9pc0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCBjMWMy
ODhkYzdiYWI2OGMyY2E3YWM5NWYwOWUwZGM3ZmFjODM4ZDg1Li4yZWVkNzQ2OTZmNmRhYjUwMjQz
MzU0NTRkNzU3YzhiZGExZTI3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcApAQCAtOTEsMTIgKzkxLDEyIEBAIHZvaWQgRE9NUGF0Y2hTdXBwb3J0
OjpwYXRjaERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFJlZlB0cjxEb2N1
bWVudD4gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
Ci0gICAgICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
KyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBVUkwoKSk7CiAg
ICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIG5ld0Rv
Y3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBLVVJMKCkpOworICAgICAgICBu
ZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgVVJMKCkpOwogI2lmIEVO
QUJMRShTVkcpCiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVudCgpKQotICAg
ICAgICBuZXdEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKKyAgICAgICAg
bmV3RG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKICNlbmRpZgogCiAgICAg
QVNTRVJUKG5ld0RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwCmluZGV4IDBjZTFlOTY3NzhjZDQ5MDkzNmNkYTA0ZjI0Yjc4OTM2YjUyNTljYmIu
LmZiNWI2OTMzYzRkNmU5NzA3YTY1YTJiMWExZTE1MTQ3M2Y4MjhiODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZv
aWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCkKICAgICBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmNsZWFySW5zcGVjdGVk
T2JqZWN0cygpOwogfQogCi1ib29sIEluc3BlY3RvckFnZW50Ojppc01haW5SZXNvdXJjZUxvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKQorYm9vbCBJ
bnNwZWN0b3JBZ2VudDo6aXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKQogewogICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2Ut
PmZyYW1lSXNNYWluRnJhbWUobG9hZGVyLT5mcmFtZSgpKSAmJiByZXF1ZXN0VXJsID09IGxvYWRl
ci0+cmVxdWVzdFVSTCgpOwogfQpAQCAtMTY5LDE0ICsxNjksMTQgQEAgdm9pZCBJbnNwZWN0b3JB
Z2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmpl
Y3Q+IG9iamUKICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNvbmQgPSBoaW50czsKIH0KIAot
S1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKK1VSTCBJbnNwZWN0b3JB
Z2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAotS1VSTCBJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKK1VSTCBJbnNwZWN0b3JBZ2Vu
dDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKIHsKLSAgICBLVVJMIHVybCA9
IGluc3BlY3RlZFVSTCgpOworICAgIFVSTCB1cmwgPSBpbnNwZWN0ZWRVUkwoKTsKICAgICB1cmwu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggYTBlZTBmNzUzZmZlZmU4Nzhl
ZTZiYmRiOTYyOGJlZmRkMTdmNTUyNy4uNzcyYzkyYmJmMTY0MDg2MTkxYTE1NGFhODFkNmUyODU4
NTc2ZmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiAKIHR5cGVkZWYg
U3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBl
bmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKIAot
ICAgIEtVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7Ci0gICAgS1VSTCBpbnNwZWN0ZWRVUkxXaXRo
b3V0RnJhZ21lbnQoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7CisgICAg
VVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0OwogCiAgICAgSW5zcGVjdG9y
RnJvbnRlbmQqIGZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9mcm9udGVuZDsgfQogCkBAIC05
OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0b24oYm9vbCk7
CiAjZW5kaWYKIAotICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKTsKKyAgICBib29sIGlzTWFpblJlc291cmNlTG9hZGVy
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKTsKIAogICAgIFBhZ2UqIG1f
aW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCBhMjllNTRiMjVkOWUxMTAxZmQ4MzE4YTdjY2FkNWQ5ODY0M2I1NzFlLi41MGY3ZDRjNDc4
NjNhYjViYjFhMGRlZDUyMjcxOGYxZDRjZWYzMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02ODMsNyArNjgzLDcg
QEAgU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChj
b25zdCBTY3JpcHQmIHNjcmlwdCkKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkgewotICAgICAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShwYWdlQWdlbnQtPm1h
aW5GcmFtZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOworICAgICAgICAg
ICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShw
YWdlQWdlbnQtPm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3JpcHQudXJsKSk7
CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgc291
cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJj
ZU1hcEhUVFBIZWFkZXIpOwogICAgICAgICAgICAgICAgIGlmICghc291cmNlTWFwSGVhZGVyLmlz
RW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
aWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZp
bGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggNmUyODhhZGNmZTk4OWQ1MWNjYTdjODYzMTdjYzE3ZDI5
ZDYxY2RiYi4uNDBhZDM3MDc1ZGNmZGU5YTE5YWJjNDBlODJlYWYyMmFkYTkzODNjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0ZW1BZ2Vu
dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2Vu
dHMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9j
YWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1ldGFkYXRhLmgiCkBAIC0yMTcsNyArMjE3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWRE
aXJlY3RvcnlFbnRyaWVzKCk7CiAKICAgICBSZWZQdHI8UmVxdWVzdERpcmVjdG9yeUNvbnRlbnRD
YWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpFbnRyeT4gPiBt
X2VudHJpZXM7CiAgICAgUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gbV9kaXJlY3RvcnlSZWFkZXI7
CiB9OwpAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV91cmwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmwpIHsgfQogCiAgICAgUmVmUHRyPFJlcXVlc3RNZXRhZGF0YUNhbGxiYWNr
PiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9pc0RpcmVjdG9yeTsKIH07CkBAIC00NDIsNyAr
NDQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkgeyB9CiAKICAg
ICBSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwot
ICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9yZWFkQXNUZXh0Owog
ICAgIGludCBtX3N0YXJ0OwogICAgIGxvbmcgbG9uZyBtX2VuZDsKQEAgLTUyMiw3ICs1MjIsNyBA
QCB2b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkUmVhZCgpCiAKIGNsYXNzIERlbGV0ZUVudHJ5
UmVxdWVzdCA6IHB1YmxpYyBWb2lkQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPERlbGV0ZUVudHJ5UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8RGVsZXRlRW50cnlD
YWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxEZWxldGVFbnRy
eUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVFbnRyeVJlcXVlc3QocmVxdWVzdENhbGxiYWNr
LCB1cmwpKTsKICAgICB9CkBAIC01NTQsMTIgKzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nhc3Q8aW50PihlcnJvckNvZGUp
KTsKICAgICB9CiAKLSAgICBEZWxldGVFbnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxEZWxldGVFbnRy
eUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEtVUkwmIHVybCkKKyAgICBEZWxldGVF
bnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJh
Y2ssIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RD
YWxsYmFjaykKICAgICAgICAgLCBtX3VybCh1cmwpIHsgfQogCiAgICAgUmVmUHRyPERlbGV0ZUVu
dHJ5Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogfTsKIAogdm9pZCBEZWxldGVFbnRyeVJlcXVlc3Q6OnN0YXJ0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC02ODYsNyArNjg2LDcgQEAg
dm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRlbGV0ZUVudHJ5KEVycm9yU3RyaW5nKiBl
cnJvciwgY29uc3QgU3RyaW5nJiB1cmwKICAgICBpZiAoIWFzc2VydEVuYWJsZWQoZXJyb3IpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
Zyk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CiAKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNzZXJ0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1
cmwpLmdldCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDAz
YjY0MTVmNzFjM2FkMTE2ZGM3YzU1NzcwZTFkNjg1Nzc4YTQwYzUuLjRmZTY4M2YxNTZkM2E0N2Jl
NmFhMGI3NDBlZjBhN2JhZGRjNGFjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlbW92ZUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxl
U3lzdGVtUGF0aCkKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Ojppc29sYXRlZEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwgY29u
c3QgU3RyaW5nJiByb290VVJMKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICByZXR1cm4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVTeXN0ZW1OYW1lLCBGaWxlU3lzdGVt
VHlwZUlzb2xhdGVkLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcm9vdFVSTCksIEFzeW5jRmlsZVN5
c3RlbTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVhdGUoY29udGV4
dCwgZmlsZVN5c3RlbU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRVUkxT
dHJpbmcsIHJvb3RVUkwpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCmluZGV4IGQ1NTMyYzBiNDhlM2ViZWIxNDYzNDk2ZWFhMmFmOWFjYWI5Njg2MDYu
LmNmZmI3M2YxMTEzODgwYTgzMDM1MjBmZmFkNmJlZmQyY2M1NWI0ZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBA
IC03OTcsNyArNzk3LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW0KICAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQo
aWRlbnRpZmllciwgY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRh
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMs
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJl
c291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbExvYWRYSFIoY2xpZW50
LCBtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlh
bHMpOwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFy
dFdvcmtlckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29wZVByb3h5LCBj
b25zdCBLVVJMJiB1cmwpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU3RhcnRX
b3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQcm94eSwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3b3JrZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvcldvcmtlckFnZW50KCkpCiAgICAgICAg
IHdvcmtlckFnZW50LT5kaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3Bl
UHJveHksIHVybCk7CkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwm
IHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBEb2N1bWVu
dCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2Vi
U29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckFnZW50KCk7CiAgICAgaWYgKCFpbnNwZWN0b3JBZ2VudCB8fCAhaW5zcGVjdG9yQWdlbnQtPmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkZjZmYTFlMmUyZjY4ZmY1MDUxNmY0
MmM3ZTM0ZjY5NDFmNDg2ZTJiLi5kZjNlYTI4MGUxMWVmODI0ODliOWMyZmQ0NzM4NTdiNTViM2Rm
ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIEluc3BlY3RvckNTU09NV3JhcHBl
cnM7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNzIFJlbmRlckxh
eWVyOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhG
cmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
U3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwotICAgIHN0YXRpYyB2
b2lkIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CisgICAgc3RhdGljIHZvaWQgd2ls
bExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
Y29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJM
b2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcik7CkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoV09SS0VSUykKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRlZFdvcmtlck9u
U3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0
V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckdsb2JhbFNj
b3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnRXb3JrZXJH
bG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94
eSosIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNjb3BlVGVybWlu
YXRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVdvcmtlclNjcmlwdChXb3JrZXJHbG9iYWxTY29w
ZSosIGludCB3b3JrZXJUaHJlYWRTdGFydE1vZGUpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBL
VVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgc3RhdGljIHZv
aWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdChEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlKERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXQoRG9j
dW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDA2LDcgKzQwNiw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3Vi
bGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0g
ICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIGJvb2wsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CisgICAgc3Rh
dGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwgUGFzc1JlZlB0
cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDYzLDEyICs0NjMsMTIgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIHN0YXRpYyBib29sIHNob3VsZFBhdXNl
RGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0
YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2
b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBX
b3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0g
ICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRG9jdW1lbnQqKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQqKTsKQEAgLTE1MDQsNyArMTUwNCw3
IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRY
SFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC0xODA2LDcgKzE4MDYsNyBA
QCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNh
dGVkV29ya2VyT25TdGFydChTY3JpcHRFeAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3Bl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlckdsb2JhbFNjb3BlUHJveHkq
IHByb3h5LCBjb25zdCBLVVJMJiB1cmwpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHksIGNvbnN0IFVSTCYgdXJsKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0
KSkKQEAgLTE4MzMsNyArMTgzMyw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1dGlvCiAKIAogI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVS
TCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1l
bnRVUkwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDgyMDI4ZGQ2ODA5MzJlYjRi
YTg5OGM0MTA4M2UzMjViNDc4YzY0MDkuLjMzZGFjNGEzMjk3MDYxNGU0NGE0NzUxMWMxZjg2MWVh
ODc5ZjA4ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgUGFzc093blB0cjxJbnNwZWN0b3JQYWdlQWdl
bnQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGkKIH0K
IAogLy8gc3RhdGljCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIFN0
cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQordm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQog
ewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBhc3NlcnREb2N1bWVudExvYWRlcihlcnJv
clN0cmluZywgZnJhbWUpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMjk4LDcgKzI5OCw3IEBAIFN0
cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1DYWNoZWRS
ZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCkKK0NhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNh
Y2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJj
ZSkgewpAQCAtNTYxLDkgKzU2MSw5IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBj
YWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIFZlY3RvcjxLVVJMPiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoRnJhbWUq
IGZyYW1lKQorc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JGcmFtZShGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgVmVjdG9yPEtVUkw+IHJlc3VsdDsKKyAgICBWZWN0b3I8VVJMPiBy
ZXN1bHQ7CiAKICAgICByZXN1bHQuYXBwZW5kKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT51cmwoKSk7CiAKQEAgLTU4OSwxMCArNTg5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUoKSkpIHsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgICAgIFZlY3RvcjxLVVJM
PiBhbGxVUkxzID0gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKTsKLSAgICAgICAgZm9y
IChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsVVJMcy5iZWdpbigpOyBpdCAh
PSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFZlY3RvcjxVUkw+IGFsbFVSTHMgPSBh
bGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBmb3IgKFZlY3RvcjxVUkw+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFsbFVSTHMuYmVnaW4oKTsgaXQgIT0gYWxsVVJMcy5lbmQo
KTsgKytpdCkgewogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2llc0xpc3Q7Ci0g
ICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50
LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOworICAgICAgICAg
ICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcyhkb2N1bWVudCwgVVJMKFBh
cnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOwogICAgICAgICAgICAgaWYgKCFy
YXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgbmVl
ZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBj
b29raWVzLgogICAgICAgICAgICAgICAgIC8vCkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGUKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNvb2tpZShF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwp
CiB7Ci0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOworICAgIFVSTCBw
YXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
Jm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCZtX3BhZ2UtPm1haW5GcmFtZSgpKSkKICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwogfQpAQCAtNjM3
LDcgKzYzNyw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJjZUNvbnRlbnQo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5nLCBmcmFtZSwg
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOworICAg
IHJlc291cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOwogfQogCiBzdGF0aWMgYm9vbCB0ZXh0Q29u
dGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSwgU3Ry
aW5nKiByZXN1bHQpCkBAIC02NjgsNyArNjY4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGMK
ICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBrdXJsKFBhcnNl
ZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAK
ICAgICBTdHJpbmcgY29udGVudDsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBkZDAxODc0Y2M5
MGI1YjlkNjMyYTZlY2VmNTVkZmMzNTRmN2FlZThjLi4yYjAyZWM3ZTgwZGY0ZWFiOGZkMTdkNDdj
ODI4ZGM1ZjQ5Nzk1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIEluc3BlY3Rvck9iamVjdDsKIGNs
YXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUGFnZTsKIGNs
YXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtODYsMTEgKzg2
LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0
RW5jb2RlZCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nKiwg
RnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7
CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGEo
RnJhbWUqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgS1VSTCYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhKEZyYW1lKiwg
Y29uc3QgVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBzdGF0aWMgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGlj
IFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlSnNvbihS
ZXNvdXJjZVR5cGUpOwogICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3VyY2VUeXBl
KGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAgICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpS
ZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNv
dXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBy
b2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwCmluZGV4IGZkODg5NGVmMjJlNDljNzU2NGFiZDk4MGM4MjJiMDQwYTU3NDU2
MjIuLmIwOTU4MDU2ZDEyYWEzYmY3MTA4MTZmOTYyYWJiNjllMDVkMDQwNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hv
dC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCmluZGV4IDM3M2NhNWRhMDY0MWU5OTkxYmQ3ZWI1ZjExMDg2NjJmZmFkMGI5NmQu
Ljk4YmE1MjU2MDQwODA4ZWViYjRjMGFiYzcyN2RjY2Q4NzI2Y2JkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KHVucwogICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHhoclJlcGxheURhdGEpOwogfQogCi12b2lk
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBh
c3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQordm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Ojp3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzKQogewogICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiB4aHJSZXBsYXlE
YXRhID0gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKG1ldGhvZCwgdXJsLCBhc3luYywgZm9ybURhdGEs
IGluY2x1ZGVDcmVkZW50aWFscyk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gaGVhZGVycy5lbmQoKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmJ1aWxk
SW5pdGlhdAogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCi12b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZENy
ZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCkKIHsKICAgICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRDcmVhdGVkKElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmlu
ZGV4IDNkN2E2N2QwZGE2NjNiMzA0NTA0NmU4ZTA1OGIwZTNlMjQxNDU5YTMuLjU3YTIxZmE5MzU4
NDE0ZDFiMzZkOWZkYzk0NDY0YTUyNTdhMTE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNjAsNyArNjAsNyBAQCBjbGFz
cyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBQYWdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0gICAgdm9pZCB3
aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBtZXRob2Qs
IGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBib2R5LCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlhbHMpOworICAg
IHZvaWQgd2lsbExvYWRYSFIoVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBib2R5
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlhbHMp
OwogICAgIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwog
ICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKQEAg
LTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6TmV0
d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCopOwogCiAjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7CisgICAgdm9pZCBkaWRD
cmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVl
c3RVUkwpOwogICAgIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tl
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDdjYzEwZjUyNzI2YjNjYzI5ZjFiZGYx
ZjBjYzY2YTdlZWU4YTgxYTguLjEzOTBhMDFlMmMwOTU5OTU3NDQ3YzI0MmUyZmEwODgwYThiOTIz
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKQEAgLTEzODIsNyArMTM4Miw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6cmVz
b3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIAogICAgIFN0cmluZyBl
cnJvcjsKICAgICBib29sIGJhc2U2NEVuY29kZWQ7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50Ojpy
ZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCksIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQsICZiYXNlNjRF
bmNvZGVkKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudCgmZXJyb3Is
IG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgbV9wYWdlU3R5
bGVTaGVldC0+aHJlZigpKSwgcmVzdWx0LCAmYmFzZTY0RW5jb2RlZCk7CiAgICAgcmV0dXJuIGVy
cm9yLmlzRW1wdHkoKSAmJiAhYmFzZTY0RW5jb2RlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDI2NTE0ZTYz
YTRiZjA0ZWI5NmNmNDZkNWY5NzM5MTdhYWYzNzkyNjMuLjdhZmFmYzA5NDQyZmIyZDBkMGYyZDZk
NTQ0ZDA3ZjJjYjBjNDYwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSgpCiB9CiAKICNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZENyZWF0ZVdl
YlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQogewogICAgIGFw
cGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tldENyZWF0ZURh
dGEoaWRlbnRpZmllciwgdXJsLCBwcm90b2NvbCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6V2ViU29j
a2V0Q3JlYXRlLCB0cnVlLCBmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBiYmUwMGI2NGVmODRlOGVlMTFhMzIw
YjVkZWZiMjJmMGQ4ZDk0Nzk5Li40NTkyY2IxNjc1ODE4ZGI0MWFjZjYzZmEyYmU3MGQ0MGI0MWNk
YmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xh
c3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgSW50
UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCiAjaWYgRU5BQkxFKFdFQl9T
T0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEZyYW1lKik7CisgICAg
dm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSopOwogICAgIHZvaWQgd2lsbFNlbmRX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUq
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDhhYWE3YzY3MzcwNzg4
YzBmN2JkMjRjNjBiMWIzZjI4Njk0MWQ0YzYuLjZiN2ZkZWI4Y2VjMTFlMjY3NjY4ZGU4ODEyODlm
MzU0NDY1MDY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvclN0
YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBJbnNw
ZWN0b3JXb3JrZXJBZ2VudDo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0YXJ0KCkKICAg
ICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0YXRlOjphdXRvY29ubmVj
dFRvV29ya2Vycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpZFN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQ
cm94eSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlkU3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxT
Y29wZVByb3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX2RlZGljYXRlZFdvcmtlcnMuc2V0
KHdvcmtlckdsb2JhbFNjb3BlUHJveHksIHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKG1faW5zcGVj
dG9yRnJvbnRlbmQgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0YXRlOjp3b3Jr
ZXJJbnNwZWN0aW9uRW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDUxZjkwNmU2M2JmYzE3OGM5MjgxNjZjOWZmMDRmN2Vi
OTA4MTIwNjAuLjg5N2RlMzZlMjQ1YmQ0MTNlMzVjYTM3OGRkZGE3ZmFlMzQ5MjhjMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5zcGVjdG9yT2Jq
ZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlUHJveHk7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICBib29sIHNo
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpOwotICAgIHZvaWQgZGlkU3RhcnRXb3Jr
ZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VSTCYpOworICAg
IHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5Kiwg
Y29uc3QgVVJMJik7CiAgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0ZWQoV29ya2Vy
R2xvYmFsU2NvcGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCmluZGV4IDNmYzM1MDIwNmNjOGMwYTAyZTMzMDE3ODlhMGFjODYwNzJhNGY1
YmEuLjk2OWQzMGQ3ZTAxZjQzZDIyMWIxMDAzOWQyN2I5N2NhOTkyMjY3MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDks
NyArNDksNyBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
ID0gMTAgKiAxMDAwICogMTAwMDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCi1QYXNzUmVmUHRy
PFhIUlJlcGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhv
ZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3Jt
RGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+
IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1
cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1
ZGVDcmVkZW50aWFscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEo
bWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxzKSk7CiB9CkBA
IC01OSw3ICs1OSw3IEBAIHZvaWQgWEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKGNvbnN0IEF0b21p
Y1N0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faGVhZGVycy5zZXQoa2V5
LCB2YWx1ZSk7CiB9CiAKLVhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5n
ICZtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZm9ybURhdGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQorWEhSUmVwbGF5RGF0YTo6WEhS
UmVwbGF5RGF0YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50aWFs
cykKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fdXJsKHVybCkKICAgICAsIG1fYXN5
bmMoYXN5bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCmluZGV4IDQxNmQ1M2RmZDFhOTIzZWVkNjEwY2NmNzM4NzBkM2EyZWE3YmMyYjcuLjFh
NDI5NDgxYTk4MmE4OTQyNjVjMzVlM2VkYmE1Mjc2ZDBkNzdiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3ICszMSw3IEBA
CiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFn
ZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRl
eHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtNTEsMjAgKzUxLDIwIEBAIGNsYXNzIFRleHRSZXNvdXJjZURlY29k
ZXI7CiAKIGNsYXNzIFhIUlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxYSFJSZXBsYXlE
YXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0
IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscyk7CiAKICAgICB2b2lkIGFkZEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nJiBtZXRob2QoKSBjb25zdCB7
IHJldHVybiBtX21ldGhvZDsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgIGJvb2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CiAgICAgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRhOyB9CiAgICAg
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyczsg
fQogICAgIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRl
Q3JlZGVudGlhbHM7IH0KIHByaXZhdGU6Ci0gICAgWEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcg
Jm1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBi
b29sIGluY2x1ZGVDcmVkZW50aWFscyk7CisgICAgWEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcg
Jm1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJv
b2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKIAogICAgIFN0cmluZyBtX21ldGhvZDsKLSAgICBLVVJM
IG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fYXN5bmM7CiAgICAgUmVmUHRyPEZv
cm1EYXRhPiBtX2Zvcm1EYXRhOwogICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IDI4
NzJmMjZhNDkwMGRjZWEwZDUwNzcwZjI2NDc0YjlmNTU2NDNkOWIuLmNhMzM0MWJlZGUyOWRmODFl
OTlkOTE2YWRhZmUwZDZhMGI3MzlkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMg
dm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29uc3QgRmxvYXRR
dWFkJik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHN0YXRpYyBpbmxpbmUg
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICAgICAgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBpZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKaW5kZXggOWNiMWRjZWI2M2NkOTc1OWM2
N2VjNjUzMjAwMWNjYmNjYzk1MzgzMS4uZTkzZDFjYTIwMTY1YTU2ZGFjZjk1ZjljOTZiYzdhNzUz
YTVmODBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTU5LDEzICs1OSwx
MyBAQCBpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQpCiAjZGVmaW5lIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiBzZXNzaW9uKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSk7CiAj
ZW5kaWYKIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpCiAgICAgcmV0dXJuIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2llc0ZvckRPTShzZXNz
aW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKIH0KIAotdm9pZCBz
ZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBMT0NBTF9T
RVNTSU9OKGRvY3VtZW50KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRl
Z3koKS0+c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKQEAgLTc3LDE5ICs3NywxOSBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRW5hYmxlZChzZXNzaW9u
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgp
KTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKIH0KIAotYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykK
IHsKICAgICBMT0NBTF9TRVNTSU9OKGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZG9jdW1l
bnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCwgY29va2llcyk7CiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAg
ICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29v
a2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDYwZGVkMTQwY2UwZWIzMjEwMzJkODY0YTY1
MTkyNTQxMmZmYmY2YmQuLmE5NmFlNDVhY2VmMzkzYTRkN2NhNjgwNDQ4YWI0N2U1ZjNmNTU2NTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTM0LDE5ICszNCwxOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiBzdHJ1Y3QgQ29va2llOwogCiAvLyBGdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHRha2UgYSBEb2N1
bWVudCBwb2ludGVyIHRvIGRldGVybWluZSB3aGljaCBjb29raWUgc3RvcmFnZSB0byB1c2UuIFdl
IHNob3VsZCBtZXJnZSB0aGF0IGludG8gY2FsbCBzaXRlcywgYW5kIHVzZSBQbGF0Zm9ybUNvb2tp
ZUphciBkaXJlY3RseS4KIAogLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBpbXBsZW1lbnQgZG9jdW1l
bnQuY29va2llIEFQSSwgd2l0aCBzcGVjaWFsIHJ1bGVzIGZvciBIdHRwT25seSBjb29raWVzLgot
U3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Ci12b2lkIHNldENv
b2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcp
OworU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmKTsKK3ZvaWQgc2V0
Q29va2llcyhEb2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KTsKIAogYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopOwotU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwot
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIFZlY3RvcjxD
b29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Citib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpOwordm9pZCBk
ZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA0YTE3ZGZkZGZkMWE1OTcz
NDVjZTI0ZDFmZDAwZjlhYmIyOWExYTJkLi4zNTgwYTUwNGZkZDcyYWQyMDdmYTU3MzcwZTFjNDE4
MTVmYTNjYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0xNTQsMTMgKzE1NCwxMyBAQCBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlJiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlOjpzaGFyZWQoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAotdm9pZCBDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29u
c3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJ
dGVtPiBwcmVmbGlnaHRSZXN1bHQpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmIHVybCwgUGFz
c093blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gcHJlZmxpZ2h0UmVz
dWx0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wcmVmbGlnaHRIYXNo
TWFwLnNldChtYWtlX3BhaXIob3JpZ2luLCB1cmwpLCBwcmVmbGlnaHRSZXN1bHQpOwogfQogCi1i
b29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgU3RvcmVkQ3JlZGVudGlhbHMgaW5j
bHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1h
cCYgcmVxdWVzdEhlYWRlcnMpCitib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6
OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBT
dG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFzaE1hcDo6aXRl
cmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0SGFzaE1hcC5maW5kKG1ha2VfcGFpcihvcmlnaW4s
IHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgKaW5kZXggMGQ2NDMzOGIyNjMxMjBlYTM1Y2FlNjJlMjQ3OTQ3
MjQ5ZjJjNzRhNy4uZDRjNDgyY2U0OGZjMDdjNWZmYzY2YWFlNTAyZGIzOTczMjc5NmIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGVfaAogI2RlZmluZSBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hl
X2gKIAotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03MCwxNSArNzAsMTUgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUmIHNoYXJlZCgpOwogCi0gICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGVJdGVtPik7Ci0gICAgICAgIGJvb2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFN0b3JlZENyZWRlbnRpYWxzLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpOworICAgICAg
ICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmLCBQYXNz
T3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPik7CisgICAgICAgIGJv
b2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgVVJMJiwgU3Rv
cmVkQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVycyk7CiAKICAgICAgICAgdm9pZCBlbXB0eSgpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSgpIHsgfQogCi0gICAg
ICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwgT3duUHRyPENyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiA+IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0SGFzaE1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFVS
TD4sIE93blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gPiBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA7CiAKICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRIYXNoTWFwIG1fcHJlZmxpZ2h0SGFzaE1hcDsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcAppbmRleCA0YjIyZjcyM2JmODQ3MjIz
NTg5YWU1NzY0ZjdmYzhiYWIxMDJkZDM2Li4zYTAyYjIzMTBlOTI4YzllYzRjMmNmM2Y2NDY1YzU0
OTk2ZmRmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
VGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5n
LmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6c2V0TmF2aWdh
dGlvblN0YXJ0KGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQpCiAgICAgbV9uYXZpZ2F0aW9uU3RhcnQg
PSBuYXZpZ2F0aW9uU3RhcnQ7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRp
cmVjdChjb25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVy
bCkKK3ZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGly
ZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpCiB7CiAgICAgbV9yZWRpcmVjdENv
dW50Kys7CiAgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkVGltaW5nLmgKaW5kZXggNjQ0OTQzMzBkNTA2Yzg3ZWY5OTEyNGIyMzY5Yjg3
NWU0ODJmNWU1MC4uODU0MDkwMWViMzZkMzhmNWE3NGRlNjg3YTYwY2E1MTM5ZDc3M2YyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaApAQCAtMzEsNyArMzEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAKIGNsYXNzIERvY3VtZW50TG9hZFRpbWluZyB7CiBwdWJsaWM6CkBAIC00Miw3
ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFya05hdmlnYXRpb25TdGFydCgpOwogICAg
IHZvaWQgc2V0TmF2aWdhdGlvblN0YXJ0KGRvdWJsZSk7Ci0gICAgdm9pZCBhZGRSZWRpcmVjdChj
b25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3RlZFVybCk7Cisg
ICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwm
IHJlZGlyZWN0ZWRVcmwpOwogCiAgICAgdm9pZCBtYXJrVW5sb2FkRXZlbnRTdGFydCgpIHsgbV91
bmxvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KICAgICB2
b2lkIG1hcmtVbmxvYWRFdmVudEVuZCgpIHsgbV91bmxvYWRFdmVudEVuZCA9IG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcAppbmRleCBmMjhiMGQ1N2E0Yzc5ZjJmOTM5MTJmYWI1ZWQzNDVjN2YyZTc2Y2JmLi5iYmZi
YTEzNWE3YmRjY2U0ZWM0ZGVjN2UxYWE0YTFjZjU4MGMzYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4MywxMiArMTgzLDEyIEBAIFJlc291cmNlUmVx
dWVzdCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3QoKQogICAgIHJldHVybiBtX3JlcXVlc3Q7CiB9
CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBE
b2N1bWVudExvYWRlcjo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgp
OwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1bWVudExvYWRlcjo6cmVw
bGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIG1fb3JpZ2luYWxSZXF1ZXN0Q29weS5zZXRVUkwodXJsKTsKICAgICBtX3JlcXVlc3Qu
c2V0VVJMKHVybCk7CkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNQ
b3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QK
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KERvY3Vt
ZW50TG9hZGVyVGltZXIqKQogewotICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRlRGF0YS5yZXNw
b25zZVVSTCgpOworICAgIFVSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3BvbnNlVVJMKCk7
CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1fcmVxdWVzdC51cmwoKTsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRlRGF0YS5taW1l
VHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1YnN0aXR1dGVE
YXRhLnRleHRFbmNvZGluZygpLCAiIik7CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkK
ICAgICBpZiAoaXNTdG9wcGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9
IG1fcmVxdWVzdC51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgCiAgICAg
c3dpdGNoIChwb2xpY3kpIHsKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRh
LCBpbgogI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKE1BQykKICAgICAvLyBXb3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjA2MDc4Mj4KICAgICBpZiAobV9yZXNwb25zZS5pc051
bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoS1VSTCgpLCAidGV4
dC9odG1sIiwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgbV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2UoVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkp
OwogI2VuZGlmCiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2Fs
bGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBA
IC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3Vy
Y2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlKQogICAgIG1fYXJjaGl2ZVJl
c291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi1QYXNzUmVmUHRy
PEFyY2hpdmU+IERvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9yU3ViZnJhbWUoY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8QXJjaGl2ZT4gRG9j
dW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVj
dGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVBcmNoaXZlKGZy
YW1lTmFtZSwgdXJsKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CiB9CkBAIC0xMDI5LDcgKzEw
MjksNyBAQCBTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNoaXZlRGF0YSgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwp
CiAKLUFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNvdXJjZUZvclVS
TChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50TG9hZGVy
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTA1
MSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVy
OjptYWluUmVzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZShkYXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFt
ZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNDb21taXR0ZWQoKSkKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpnZXRT
dWJyZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZQog
ICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxS
ZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsK
ICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3Vy
Y2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCBpdC0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoVVJMKFBhcnNlZFVSTFN0cmluZywgaXQt
PnZhbHVlLT51cmwoKSkpOwogICAgICAgICBpZiAoc3VicmVzb3VyY2UpCiAgICAgICAgICAgICBz
dWJyZXNvdXJjZXMuYXBwZW5kKHN1YnJlc291cmNlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtMTIx
MCw3ICsxMjEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
V2l0aERpcmVjdGlvbiYgdGl0bGUpCiAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlVGl0bGUo
dGhpcyk7CiB9CiAKLUtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAor
VVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAgICAvLyBSZXR1
cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4KICAgICAvLyBS
ZXR1cm5zIG5pbCBmb3IgV2ViRGF0YVByb3RvY29sIFVSTHMgdGhhdCBhcmVuJ3QgYWx0ZXJuYXRl
cwpAQCAtMTIyNiwyNCArMTIyNiwyNCBAQCBib29sIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgfHwgbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMDsKIH0KIAotY29u
c3QgS1VSTCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKK2NvbnN0IFVSTCYg
RG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vcmln
aW5hbFJlcXVlc3RDb3B5LnVybCgpOwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6
cmVxdWVzdFVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpyZXF1ZXN0VVJM
KCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgpOwogfQogCi1jb25zdCBLVVJM
JiBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVu
dExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX3Jlc3BvbnNlLnVy
bCgpOwogfQogCi1LVVJMIERvY3VtZW50TG9hZGVyOjpkb2N1bWVudFVSTCgpIGNvbnN0CitVUkwg
RG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKIHsKLSAgICBLVVJMIHVybCA9IHN1
YnN0aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKKyAgICBVUkwgdXJsID0gc3Vic3RpdHV0ZURh
dGEoKS5yZXNwb25zZVVSTCgpOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkKICAgICBpZiAodXJs
LmlzRW1wdHkoKSAmJiBtX2FyY2hpdmUgJiYgbV9hcmNoaXZlLT50eXBlKCkgPT0gQXJjaGl2ZTo6
V2ViQXJjaGl2ZSkKICAgICAgICAgdXJsID0gbV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKS0+dXJs
KCk7CkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBjb25zdCBTdHJpbmcmIERvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5taW1lVHlwZSgp
OwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVVUkwoKSBjb25z
dAorY29uc3QgVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVVUkwoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNGJkMmM3YWU0NzkzNWYxYzRiNTU0MjI3YWFm
ZWY3MWQxYTZkOTE2ZS4uZTI3ZWQ0OGIwOTkzNWE3NmMwYmU1ZjIwNGJhN2ViN2M1N2U1MjUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTEwOSwxNSArMTA5LDE1
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YTsgfQogCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSBzYW1lIGFzIHJlcXVlc3RVUkwoKS4gV2Ugc2hvdWxk
IHJlbW92ZSBvbmUgb2YgdGhlbS4KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7Ci0g
ICAgICAgIGNvbnN0IEtVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBj
b25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0OwotICAgICAg
ICBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJl
c3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwoKSBjb25z
dDsKKyAgICAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5nJiByZXNwb25z
ZU1JTUVUeXBlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZXBsYWNlUmVxdWVzdFVSTEZvclNh
bWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYpOworICAgICAgICB2b2lkIHJlcGxhY2VS
ZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsKICAgICAgICAg
Ym9vbCBpc1N0b3BwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BwaW5nOyB9CiAgICAgICAg
IHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBzZXRDb21taXR0ZWQoYm9vbCBjb21t
aXR0ZWQpIHsgbV9jb21taXR0ZWQgPSBjb21taXR0ZWQ7IH0KQEAgLTE0MiwyMCArMTQyLDIwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBcmNoaXZlKFBhc3NSZWZQdHI8
QXJjaGl2ZT4pOwogICAgICAgICB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMoQXJjaGl2ZSop
OwogICAgICAgICB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4pOwotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFt
ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgS1VSTCYpOworICAgICAgICBQYXNzUmVm
UHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgVVJMJik7CiAgICAgICAgIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJjaGl2ZURhdGEo
KSBjb25zdDsKIAogICAgICAgICBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FSQ0hJ
VkUpIHx8IEVOQUJMRShNSFRNTCkKIAogICAgICAgICAvLyBSZXR1cm4gdGhlIEFyY2hpdmVSZXNv
dXJjZSBmb3IgdGhlIFVSTCBvbmx5IHdoZW4gbG9hZGluZyBhbiBBcmNoaXZlCi0gICAgICAgIEFy
Y2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKSBjb25zdDsK
KyAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJM
JikgY29uc3Q7CiAKICAgICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNv
dXJjZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybiBhbiBBcmNoaXZlUmVzb3VyY2UgZm9y
IHRoZSBVUkwsIGVpdGhlciBjcmVhdGluZyBmcm9tIGxpdmUgZGF0YSBvcgogICAgICAgICAvLyBw
dWxsaW5nIGZyb20gdGhlIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24KLSAgICAgICAgUGFzc1Jl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAg
ICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0IFVSTCYp
IGNvbnN0OwogICAgICAgICB2b2lkIGdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFzc1JlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+ID4mKSBjb25zdDsKIAogCkBAIC0xNzYsNyArMTc2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VUaXRsZTsgfQogCi0gICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OworICAg
ICAgICBVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3Rv
cnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBUaGVzZSBhY2Nlc3NvcnMg
YWNjb21tb2RhdGUgV2ViQ29yZSdzIHNvbWV3aGF0IGZpY2tsZSBjdXN0b20gb2YgY3JlYXRpbmcg
aGlzdG9yeQpAQCAtMjU3LDcgKzI1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2
YXRlOgogCiAgICAgICAgIC8vIFRoZSBVUkwgb2YgdGhlIGRvY3VtZW50IHJlc3VsdGluZyBmcm9t
IHRoaXMgRG9jdW1lbnRMb2FkZXIuCi0gICAgICAgIEtVUkwgZG9jdW1lbnRVUkwoKSBjb25zdDsK
KyAgICAgICAgVVJMIGRvY3VtZW50VVJMKCkgY29uc3Q7CiAgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggM2ZlNTZmM2YyNGQ0ZDQ3ZjRjN2E1ZjEyZWI2ZWUxZGY2MTI5M2Ez
YS4uYjBkODYxNjJhZDVlZDU5OWUxY2Y3Mjc4ZjBjNTRjZDQzNWE2MjNmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTM2
MSw3ICszNjEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFp
bHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
ZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgLy8gQW55IGNyZWRlbnRp
YWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNpdGUgcmVxdWVzdHMu
Ci0gICAgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3Qg
VVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBtX29wdGlvbnMuc2VjdXJpdHlD
aGVjayA9IHNlY3VyaXR5Q2hlY2s7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwg
cmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9zYW1lT3JpZ2luUmVx
dWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOwpAQCAtNDI5LDcgKzQyOSw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVy
LCAwLjApOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNBbGxvd2VkUmVk
aXJlY3QoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omlz
QWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX29wdGlvbnMuY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0cykKICAgICAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmgKaW5kZXggMGNlOTk3YTdmNmZjZmFmYjFjMzdhY2U5NGY2NjlkYjZhMDdl
MTE1OS4uYmYzMWJhMzEwYWNjODNmMmJkNDY1Zjc3ODFkNDQ0M2VjMDViZTc1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtNDUs
NyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlOwogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
ICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OwpAQCAtOTUsNyArOTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGVycm9yRGVz
Y3JpcHRpb24pOwogCiAgICAgICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7Ci0gICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJl
Y3QoY29uc3QgS1VSTCYpOworICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVS
TCYpOwogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCAxYWMxNDc0YjQy
OTM4OTA4Mzg4N2FiMWYxZWY3NGM4NzU2MDM3NmM0Li4zZTYxNDVlNTE1NzBlNjA1MTc5YTQ0YjMx
YjI1ZjZlNmE5OTI4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmNsZWFyKCkKIAog
dm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKQogewotICAgIGJlZ2luKEtVUkwoKSk7CisgICAg
YmVnaW4oVVJMKCkpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6
Y3JlYXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxEb2N1bWVudD4gRG9j
dW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICgh
bV9mcmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWluZ0luaXRpYWxFbXB0
eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkQWx3YXlzVXNl
UGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBQbHVnaW5Eb2N1bWVu
dDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CkBAIC0xMTIsMTIgKzExMiwxMiBAQCBQYXNzUmVmUHRy
PERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJs
KQogICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQobV9taW1lVHlw
ZSwgbV9mcmFtZSwgdXJsLCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpOwogfQogCi12b2lk
IERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlz
cGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQordm9pZCBEb2N1bWVudFdyaXRlcjo6YmVn
aW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25l
ckRvY3VtZW50KQogewogICAgIC8vIFdlIGdyYWIgYSBsb2NhbCBjb3B5IG9mIHRoZSBVUkwgYmVj
YXVzZSBpdCdzIGVhc3kgZm9yIGNhbGxlcnMgdG8gc3VwcGx5CiAgICAgLy8gYSBVUkwgdGhhdCB3
aWxsIGJlIGRlYWxsb2NhdGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoaXMgZnVuY3Rpb24u
CiAgICAgLy8gRm9yIGV4YW1wbGUsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY2MzYwPi4KLSAgICBLVVJMIHVybCA9IHVybFJlZmVyZW5jZTsKKyAgICBVUkwg
dXJsID0gdXJsUmVmZXJlbmNlOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGRvY3VtZW50IGJlZm9y
ZSBjbGVhcmluZyB0aGUgZnJhbWUsIGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8KICAgICAvLyBpbmhl
cml0IGFuIGFsaWFzZWQgc2VjdXJpdHkgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50V3JpdGVyLmgKaW5kZXggM2Q5MGI5ZDg3M2ZlMDRiNzlkMTg2ODkxYTc4MWM3ZjdjNjM2OGE2
OS4uODFkMGYxMjlkZmUzYzViOTU1NDcwYzlmNWQyMDM0YzkzZmYwNmE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgRG9j
dW1lbnRXcml0ZXJfaAogI2RlZmluZSBEb2N1bWVudFdyaXRlcl9oCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50KiBvd25lckRvY3VtZW50KTsK
IAogICAgIHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGJlZ2luKGNvbnN0IEtVUkwmLCBib29sIGRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQgPSAwKTsKKyAgICB2b2lkIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dP
YmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IDApOwogICAg
IHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAgICAgdm9p
ZCBlbmQoKTsKICAgICAKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RG9j
dW1lbnRXYXNMb2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oKTsKIAogcHJpdmF0ZToKLSAgICBQYXNz
UmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJik7CisgICAgUGFzc1Jl
ZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJik7CiAgICAgdm9pZCBjbGVh
cigpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCmluZGV4IDBmODhlZWIxOTlmZGQ1ZGFlZWMwZjgwOTU3Y2UwNjdjN2ZiNzdlNTMuLmVm
NjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4YjY4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBQYXNzUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBSZQogICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1
YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQorUGFzc1JlZlB0cjxG
cmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50LCBpbnQpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0
eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICByZXR1cm4gMDsKIH0K
QEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6cmVjcmVh
dGVQbHVnaW4oV2lkZ2V0KikKIHsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxN
ZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5MTljYTg0YTRiOTI3NTc3MmMxZGNiNTc1
NTkxN2NkYTIyNjYzZGUwLi4zM2IyYjkxYzBiYjM0MGFmOGIxMGE3NGZmNmVkMGZiMTFmMmY4NDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNDMsNyArMjQzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlLCBkb3VibGUpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwg
ZG91YmxlLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxv
Y2F0aW9uV2l0aGluUGFnZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hT
dGF0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgeyB9CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZXN0b3JlVmlld1N0YXRlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIHsgfQogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpIE9WRVJSSURFOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3Qg
S1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgVVJMJikgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgS1VSTCYpIHsgcmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIHsgcmV0dXJuICIiOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRm
b3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgeyB9CkBA
IC0zMzgsMTkgKzMzOCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3Rh
dGVUb0l0ZW0oSGlzdG9yeUl0ZW0qKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBj
b25zdCBVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYs
IGJvb2wpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBj
b25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdpZGdldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSBPVkVSUklE
RTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRnZXQqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lkZ2V0KikgeyB9
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5
cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9iamVjdENvbnRl
bnRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRU
eXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9iamVjdENvbnRl
bnRUeXBlKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2lkZ2V0KikgeyB9CkBAIC01MTcsNyArNTE3LDcgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSos
IGNvbnN0IENvbnRleHRNZW51KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwo
Y29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgSGl0VGVz
dFJlc3VsdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZy
YW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXggOWJmNDQyYTll
OTRkNmM1ZmMzOGVmN2NmNzQyNWZhMDA3NzMwZDdmNS4uM2M0MWVmZTEyNjdiMmFiZDY0MTQ3ZTE0
YTBkOWYxODI2NzYxY2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlRm9ybURhdGFJZGVu
dGlmaWVyKCkKICAgICByZXR1cm4gKytuZXh0SWRlbnRpZmllcjsKIH0KIAotc3RhdGljIHZvaWQg
YXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoS1VSTCYgdXJsLCBjb25zdCBGb3JtRGF0YSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCitzdGF0aWMgdm9pZCBhcHBlbmRNYWls
dG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdUeXBlKQogewogICAgIFN0cmluZyBib2R5ID0gZGF0YS5mbGF0dGVu
VG9TdHJpbmcoKTsKIApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRhLCBjb25zdAog
CiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJp
bmcmIGFjdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHBhcnNlIGludG8gYSBLVVJMPwor
ICAgIC8vIEZJWE1FOiBDYW4gd2UgcGFyc2UgaW50byBhIFVSTD8KICAgICBtX2FjdGlvbiA9IHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhY3Rpb24pOwogfQogCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6Y29weUZyb20oY29uc3Qg
QXR0cmlidXRlcyYgb3RoZXIpCiAgICAgbV9hY2NlcHRDaGFyc2V0ID0gb3RoZXIubV9hY2NlcHRD
aGFyc2V0OwogfQogCi1pbmxpbmUgRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNzaW9uKE1ldGhv
ZCBtZXRob2QsIGNvbnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0ZSwgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlz
dG9yeSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCitpbmxpbmUgRm9ybVN1Ym1pc3Npb246OkZv
cm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25zdCBTdHJp
bmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcmIGJvdW5k
YXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICA6IG1f
bWV0aG9kKG1ldGhvZCkKICAgICAsIG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1fdGFyZ2V0KHRh
cmdldCkKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBGb3Jt
U3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQQogICAgIH0K
ICAgICAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmb3JtLT5kb2N1bWVudCgpOwotICAgIEtV
UkwgYWN0aW9uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwoY29waWVkQXR0cmlidXRlcy5hY3Rp
b24oKS5pc0VtcHR5KCkgPyBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSA6IGNvcGllZEF0dHJpYnV0
ZXMuYWN0aW9uKCkpOworICAgIFVSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTChj
b3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50LnVybCgpLnN0cmlu
ZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CiAgICAgYm9vbCBpc01haWx0b0Zvcm0g
PSBhY3Rpb25VUkwucHJvdG9jb2xJcygibWFpbHRvIik7CiAgICAgYm9vbCBpc011bHRpUGFydEZv
cm0gPSBmYWxzZTsKICAgICBTdHJpbmcgZW5jb2RpbmdUeXBlID0gY29waWVkQXR0cmlidXRlcy5l
bmNvZGluZ1R5cGUoKTsKQEAgLTIyMiwxMiArMjIyLDEyIEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1p
c3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25z
dCBBCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlzc2lvbihjb3BpZWRBdHRyaWJ1
dGVzLm1ldGhvZCgpLCBhY3Rpb25VUkwsIHRhcmdldE9yQmFzZVRhcmdldCwgZW5jb2RpbmdUeXBl
LCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5kYXJ5LCBsb2Nr
SGlzdG9yeSwgZXZlbnQpKTsKIH0KIAotS1VSTCBGb3JtU3VibWlzc2lvbjo6cmVxdWVzdFVSTCgp
IGNvbnN0CitVUkwgRm9ybVN1Ym1pc3Npb246OnJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIGlm
IChtX21ldGhvZCA9PSBGb3JtU3VibWlzc2lvbjo6UG9zdE1ldGhvZCkKICAgICAgICAgcmV0dXJu
IG1fYWN0aW9uOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKKyAgICBVUkwgcmVx
dWVzdFVSTChtX2FjdGlvbik7CiAgICAgcmVxdWVzdFVSTC5zZXRRdWVyeShtX2Zvcm1EYXRhLT5m
bGF0dGVuVG9TdHJpbmcoKSk7ICAgIAogICAgIHJldHVybiByZXF1ZXN0VVJMOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCA0ZDM1OTNiNDZlNWUyYjBmMTZkMDZl
OGY0OGY5OThiMThjY2FlZDg2Li5jMmY4M2Q1M2Y4OTE1MGVmOTFhZjA5ZWYzY2Q5ZDYzMTk0OWFm
ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtMzIsNyArMzIs
NyBAQAogI2RlZmluZSBGb3JtU3VibWlzc2lvbl9oCiAKICNpbmNsdWRlICJGb3JtU3RhdGUuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtOTIsMTAgKzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9wdWxhdGVGcmFt
ZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmKTsKICAgICAKLSAgICBLVVJMIHJlcXVlc3RV
UkwoKSBjb25zdDsKKyAgICBVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgTWV0aG9kIG1l
dGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VSTCYgYWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KKyAgICBjb25zdCBVUkwmIGFjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0YXJnZXQoKSBjb25z
dCB7IHJldHVybiBtX3RhcmdldDsgfQogICAgIHZvaWQgY2xlYXJUYXJnZXQoKSB7IG1fdGFyZ2V0
ID0gU3RyaW5nKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50VHlwZTsgfQpAQCAtMTExLDExICsxMTEsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2luID0gb3JpZ2lu
OyB9CiAKIHByaXZhdGU6Ci0gICAgRm9ybVN1Ym1pc3Npb24oTWV0aG9kLCBjb25zdCBLVVJMJiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQ
YXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBTdHJpbmcm
IGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50Pik7CisgICAgRm9y
bVN1Ym1pc3Npb24oTWV0aG9kLCBjb25zdCBVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wgbG9ja0hpc3Rv
cnksIFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBIb2xkIGFuIGluc3RhbmNl
IG9mIEF0dHJpYnV0ZXMgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIG1lbWJlcnMuCiAgICAgTWV0aG9k
IG1fbWV0aG9kOwotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9uOwogICAgIFN0
cmluZyBtX3RhcmdldDsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBSZWZQdHI8Rm9y
bVN0YXRlPiBtX2Zvcm1TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDRiNzhlNGE0NmRjZDdlNzE0ZGFhYzBmMzY5YWYyMDUyOWQ5NjBkYTkuLjE5MTRjYmUxMmYy
ZjZhYmU1MjQzODdjYTk0MmRmZjMyNzkzMDZkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEZyYW1lTG9hZGVyOjp+RnJhbWVMb2FkZXIo
KQogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiB7CiAgICAgLy8gVGhpcyBzb21ld2hhdCBvZGQg
c2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRvY3VtZW50Lgot
ICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVy
KFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSkpLCBT
dWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobV9j
bGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQYXJzZWRVUkxT
dHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkpOwogICAgIHNl
dFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRlci5nZXQoKSk7
CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2UoKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKQEAgLTI4Nywx
MyArMjg3LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZl
cnMpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBib29s
IHJlZnJlc2gpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgcmVmcmVz
aCkKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KHNlY3VyaXR5T3JpZ2luLCBS
ZXNvdXJjZVJlcXVlc3QodXJsLCByZWZlcnJlciwgcmVmcmVzaCA/IFJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSksICJfc2VsZiIpLAogICAgICAgICAwLCBs
b2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgTWF5YmVTZW5kUmVmZXJyZXIsIFJlcGxh
Y2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNl
bGVjdGVkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NS
ZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyKQor
dm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
IHNob3VsZFNlbmRSZWZlcnJlcikKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0
KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVy
bCksIHBhc3NlZFRhcmdldCksCiAgICAgICAgIHRyaWdnZXJpbmdFdmVudCwgbG9ja0hpc3Rvcnks
IGxvY2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgRG9Ob3RSZXBsYWNlRG9j
dW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKICAg
ICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlzc2lvbi0+YWN0aW9uKCkp
KSB7Ci0gICAgICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dGb3JtQWN0aW9uKEtVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKKyAgICAg
ICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7CiAg
ICAgICAgIG1fZnJhbWUuc2NyaXB0KCkuZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChzdWJtaXNzaW9u
LT5hY3Rpb24oKSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtNjQ4
LDcgKzY0OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBt
X2ZyYW1lLm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KGRlbGF5LCB1cmwp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJyZXIoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gdXJsLnN0cmlwcGVkRm9yVXNlQXNSZWZl
cnJlcigpOwogfQpAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ2Fs
bEltcGxpY2l0Q2xvc2UoKQogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW1wbGljaXRDbG9zZSgp
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQordm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewogICAgIEFTU0VSVChjaGlsZEZy
YW1lKTsKIApAQCAtODg2LDcgKzg4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRBcmNoaXZl
KFBhc3NSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSkKICAgICBpZiAoIW1haW5SZXNvdXJjZSkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0
YShtYWluUmVzb3VyY2UtPmRhdGEoKSwgbWFpblJlc291cmNlLT5taW1lVHlwZSgpLCBtYWluUmVz
b3VyY2UtPnRleHRFbmNvZGluZygpLCBLVVJMKCkpOworICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0
aXR1dGVEYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1pbWVUeXBlKCks
IG1haW5SZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIFVSTCgpKTsKICAgICAKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChtYWluUmVzb3VyY2UtPnVybCgpKTsKICNpZiBQTEFURk9STShNQUMp
CkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1Jl
ZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVJDSElWRSkg
fHwgRU5BQkxFKE1IVE1MKQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlcjo6ZGVmYXVs
dE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlw
ZSBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cykKIHsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZUluOwogCkBAIC05NTMsNyArOTUz
LDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbigpIGNvbnN0CiAgICAgcmV0
dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29uc3Qg
S1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxv
d2VkQnlDU1AoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3VibWl0dGVkRm9y
bVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAwMCw3ICsxMDAwLDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiAKIHZvaWQgRnJh
bWVMb2FkZXI6OnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24oKQogewotICAg
IG1fc3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKKyAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBV
UkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMo
KQpAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0
eUZvckNvb2tpZXMoKQogICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLmRv
Y3VtZW50KCktPnVybCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQYXJ0
eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoJm1fZnJh
bWUpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
dXJsKTsKQEAgLTEwMTksMTMgKzEwMTksMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQogCiAvLyBUaGlzIGRvZXMgdGhlIHNhbWUg
a2luZCBvZiB3b3JrIHRoYXQgZGlkT3BlblVSTCBkb2VzLCBleGNlcHQgaXQgcmVsaWVzIG9uIHRo
ZSBmYWN0CiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBV
UkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0aGluZyB0byBkby4KLXZv
aWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBLVVJMJiB1cmwsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBpc05ld05hdmln
YXRpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgVVJMJiB1
cmwsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBp
c05ld05hdmlnYXRpb24pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXRlIG9iamVjdCwgd2Ug
Y2Fubm90IGFsc28gYmUgYSBuZXcgbmF2aWdhdGlvbi4KICAgICBBU1NFUlQoIXN0YXRlT2JqZWN0
IHx8IChzdGF0ZU9iamVjdCAmJiAhaXNOZXdOYXZpZ2F0aW9uKSk7CiAKICAgICAvLyBVcGRhdGUg
dGhlIGRhdGEgc291cmNlJ3MgcmVxdWVzdCB3aXRoIHRoZSBuZXcgVVJMIHRvIGZha2UgdGhlIFVS
TCBjaGFuZ2UKLSAgICBLVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7Cisg
ICAgVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgbV9mcmFtZS5k
b2N1bWVudCgpLT5zZXRVUkwodXJsKTsKICAgICBzZXRPdXRnb2luZ1JlZmVycmVyKHVybCk7CiAg
ICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKHVybCk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2Fk
RnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hp
cwogICAgIC8vIFByb3RlY3QgZnJhbWUgZnJvbSBnZXR0aW5nIGJsb3duIGF3YXkgaW5zaWRlIGRp
c3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIuCiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogCi0gICAgS1VSTCB1cmwgPSByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVz
dCgpLnVybCgpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgaWYgKCFy
ZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsKQEAgLTExOTksNyArMTE5OSw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVy
Ojpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbmV3
TG9hZFR5cGUsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IFVSTCYgbmV3VVJMLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2Nr
SGlzdG9yeSwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKICAgICBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKIHsKICAgICBpZiAo
bV9pblN0b3BBbGxMb2FkZXJzKQpAQCAtMTI3MiwxNCArMTI3MiwxNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Y29uc3QgU3RyaQogICAgIH0KIH0KIAotU3Vic3RpdHV0ZURhdGEgRnJhbWVMb2FkZXI6OmRlZmF1
bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdWJzdGl0dXRlRGF0YSBG
cmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCkpCiAgICAgICAg
IHJldHVybiBTdWJzdGl0dXRlRGF0YSgpOwogICAgIFN0cmluZyBzcmNkb2MgPSBtX2ZyYW1lLm93
bmVyRWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHNyY2RvY0F0dHIpOwogICAgIEFTU0VSVCgh
c3JjZG9jLmlzTnVsbCgpKTsKICAgICBDU3RyaW5nIGVuY29kZWRTcmNkb2MgPSBzcmNkb2MudXRm
OCgpOwotICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6OmNyZWF0ZShlbmNv
ZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0ZXh0L2h0bWwiLCAi
VVRGLTgiLCBLVVJMKCkpOworICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6
OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0
ZXh0L2h0bWwiLCAiVVRGLTgiLCBVUkwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQo
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCkKQEAgLTEzODYsNyArMTM4Niw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0
YXRlID0gcHJwRm9ybVN0YXRlOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9IGZvcm1TdGF0
ZTsKIAotICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9IGxvYWRlci0+cmVxdWVzdCgpLnVybCgpOwor
ICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCk7CiAgICAgY29u
c3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCkuaHR0cE1ldGhvZCgpOwog
CiAgICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNGb3JtU3VibWlzc2lv
biwgaHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5ld1VSTCkpIHsKQEAg
LTE0MzgsNyArMTQzOCw3IEBAIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVMb2FkZXI6Omlu
aXRpYWxSZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
b3JpZ2luYWxSZXF1ZXN0KCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFF
bGVtZW50VVJMKEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKFVSTCYgdXJsKQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAK
QEAgLTE0NTQsNyArMTQ1NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKEtVUkwmIHVybCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkVG9IYW5k
bGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciogZG9jTG9hZGVyKQogewotICAgIEtVUkwg
dW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgVVJMIHVu
cmVhY2hhYmxlVVJMID0gZG9jTG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogCiAgICAgaWYgKHVu
cmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ4Miw3
ICsxNDgyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rpbmco
Y29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7Ci0gICAgS1VSTCB1
bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAg
VVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
ICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmVxdWVzdC5zZXRV
UkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKQog
ICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBGcmFtZUxvYWRUeXBlUmVs
b2FkLCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNv
bnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkKQordm9pZCBGcmFtZUxv
YWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYgb3ZlcnJpZGVVcmwsIGJvb2wg
ZW5kVG9FbmRSZWxvYWQpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9v
bCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIFJlcGxhY2UgZXJyb3ItcGFnZSBVUkwgd2l0aCB0
aGUgVVJMIHdlIHdlcmUgdHJ5aW5nIHRvIHJlYWNoLgogICAgIFJlc291cmNlUmVxdWVzdCBpbml0
aWFsUmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKTsKLSAgICBLVVJMIHVucmVh
Y2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBVUkwg
dW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogICAg
IGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5z
ZXRVUkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRo
TG9hZEluUHJvZ3JlcwogICAgIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uID0gZmFsc2U7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VSTCYgdXJsLCBk
b3VibGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qp
Cit2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3Vi
bGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7
CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVybCwgc2Vj
b25kcywgZmlyZURhdGUpOwogICAgIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBzZWNvbmRzLCBk
b3VibGUgZmlyZUQKICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJk
TGlzdCB8fCBoaXN0b3J5KCkuY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkpICYmIG1fZG9j
dW1lbnRMb2FkZXIgJiYgIW1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKIH0KIAot
Ym9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkKGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwsIGNv
bnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2Fk
KGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCkKIHsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHJ1bGU6ICJEb24ndCByZWxvYWQgaWYg
bmF2aWdhdGluZyBieSBmcmFnbWVudCB3aXRoaW4KICAgICAvLyB0aGUgc2FtZSBVUkwsIGJ1dCBk
byByZWxvYWQgaWYgZ29pbmcgdG8gYSBuZXcgVVJMIG9yIHRvIHRoZSBzYW1lIFVSTCB3aXRoIG5v
CkBAIC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1l
QmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gRG9uJ3QgcmUtZW1pdCB0aGUgbG9hZCBldmVudC4K
ICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAotICAgIEtVUkwgdXJsID0gY2Fj
aGVkRnJhbWUudXJsKCk7CisgICAgVVJMIHVybCA9IGNhY2hlZEZyYW1lLnVybCgpOwogCiAgICAg
Ly8gRklYTUU6IEkgc3VzcGVjdCB0aGlzIGJsb2NrIG9mIGNvZGUgZG9lc24ndCBkbyBhbnl0aGlu
Zy4KICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhdXJsLmhvc3QoKS5p
c0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5pc0VtcHR5KCkpCkBAIC0yMTQyLDcgKzIxNDIsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgICAg
ICAgICAgICAgaWYgKHBkbCA9PSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBLVVJM
IHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwo
KTsKKyAgICAgICAgICAgICAgICAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1l
bnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF1
bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFibGVVUkwgPT0gcGRsLT5yZXF1ZXN0
KCkudXJsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZXNldCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTIyMzAsMTIgKzIyMzAsMTIgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KIAotc3RhdGljIEtV
Ukwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCitzdGF0aWMg
VVJMIG9yaWdpbmF0aW5nVVJMRnJvbUJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdlKQogewogICAg
IC8vIEZJWE1FOiBDYW4gdGhpcyBsb2dpYyBiZSByZXBsYWNlZCB3aXRoIG1fZnJhbWUuZG9jdW1l
bnQoKS0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKT8KICAgICAvLyBJdCBoYXMgdGhlIHNhbWUgbWVh
bmluZyBvZiAicGFnZSBhIHVzZXIgdGhpbmtzIGlzIHRoZSBjdXJyZW50IG9uZSIuCiAKLSAgICBL
VVJMIG9yaWdpbmFsVVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICBpbnQgYmFja0NvdW50
ID0gcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrQ291bnQoKTsKICAgICBmb3IgKGludCBiYWNrSW5k
ZXggPSAwOyBiYWNrSW5kZXggPD0gYmFja0NvdW50OyBiYWNrSW5kZXgrKykgewogICAgICAgICAv
LyBGSVhNRTogQXQgb25lIHBvaW50IHdlIGhhZCBjb2RlIGhlcmUgdG8gY2hlY2sgYSAid2FzIHVz
ZXIgZ2VzdHVyZSIgZmxhZy4KQEAgLTIyNDksMTIgKzIyNDksMTIgQEAgc3RhdGljIEtVUkwgb3Jp
Z2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCiAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWxVUkw7CiAgICAgfQogCi0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1
cm4gVVJMKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93bmxv
YWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBLVVJMIG9yaWdpbmFs
VVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICAKICAgICAvLyBJZiB0aGVyZSBpcyBubyBy
ZWZlcnJlciwgYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBpbml0aWF0ZWQgZGlyZWN0bHks
IHNvIGN1cnJlbnQgZG9jdW1lbnQgaXMKICAgICAvLyBjb21wbGV0ZWx5IHVucmVsYXRlZCB0byBp
dC4gU2VlIDxyZGFyOi8vcHJvYmxlbS81Mjk0NjkxPi4KQEAgLTIyODAsNyArMjI4MCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgICAgIGhvc3RPbmx5VVJMU3RyaW5nID0gbWFrZVN0
cmluZyhvcmlnaW5hbFVSTC5wcm90b2NvbCgpLCAiOi8vIiwgb3JpZ2luYWxVUkwuaG9zdCgpKTsK
IAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGZpcnN0UGFydHlGb3JDb29raWVzIGJhY2sgdG8g
bWFpbkRvY3VtZW50VVJMLiBJdCB3YXMgYSBtaXN0YWtlIHRvIHRoaW5rIHRoYXQgaXQgd2FzIG9u
bHkgdXNlZCBmb3IgY29va2llcy4KLSAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhLVVJMKEtVUkwoKSwgaG9zdE9ubHlVUkxTdHJpbmcpKTsKKyAgICAgICAgcmVxdWVzdC5z
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoVVJMKCksIGhvc3RPbmx5VVJMU3RyaW5nKSk7CiAg
ICAgfQogfQogCkBAIC0yMzcyLDcgKzIzNzIsNyBAQCBpbnQgRnJhbWVMb2FkZXI6Om51bVBlbmRp
bmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2UpIGNvbnN0CiAgICAgcmV0dXJuIGNvdW50
OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpIGNv
bnN0CitTdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9jbGllbnQudXNlckFnZW50KHVybCk7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRlKCZtX2ZyYW1l
LCAmdXNlckFnZW50KTsKQEAgLTI1MzksNyArMjUzOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwgY29uc3QgU3Ry
aW5nCiAgICAgLy8gYnVuY2ggb2YgcGFyYW1ldGVycyB0aGF0IHdvdWxkIGNvbWUgaW4gaGVyZSBh
bmQgdGhlbiBiZSBidWlsdCBiYWNrIHVwIHRvIGEgUmVzb3VyY2VSZXF1ZXN0LiAgSW4gY2FzZQog
ICAgIC8vIGFueSBjYWxsZXIgZGVwZW5kcyBvbiB0aGUgaW1tdXRhYmlsaXR5IG9mIHRoZSBvcmln
aW5hbCBSZXNvdXJjZVJlcXVlc3QsIEknbSByZWJ1aWxkaW5nIGEgUmVzb3VyY2VSZXF1ZXN0CiAg
ICAgLy8gZnJvbSBzY3JhdGNoIGFzIGl0IGRpZCBhbGwgYWxvbmcuCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gaW5SZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gaW5SZXF1ZXN0LnVy
bCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpblJlcXVlc3QuaHR0cEJvZHko
KTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gaW5SZXF1ZXN0Lmh0dHBDb250ZW50
VHlwZSgpOwogICAgIFN0cmluZyBvcmlnaW4gPSBpblJlcXVlc3QuaHR0cE9yaWdpbigpOwpAQCAt
MjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRNYWluUmVzb3VyY2VF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIGlmIChtX3N0YXRlID09IEZy
YW1lU3RhdGVQcm92aXNpb25hbCAmJiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpIHsKICAg
ICAgICAgaWYgKG1fc3VibWl0dGVkRm9ybVVSTCA9PSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS51cmwoKSkKLSAgICAgICAgICAgIG1fc3VibWl0dGVk
Rm9ybVVSTCA9IEtVUkwoKTsKKyAgICAgICAgICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IFVSTCgp
OwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgbWFkZSBhIHBhZ2UgY2Fj
aGUgaXRlbSwgYnV0IG5vdyB3ZSdyZSBiYWlsaW5nIG91dCBkdWUgdG8gYW4gZXJyb3IgYmVmb3Jl
IHdlIGV2ZXIKICAgICAgICAgLy8gdHJhbnNpdGlvbmVkIHRvIHRoZSBuZXcgcGFnZSAoYmVmb3Jl
IFdlYkZyYW1lU3RhdGUgPT0gY29tbWl0KS4gIFRoZSBnb2FsIGhlcmUgaXMgdG8gcmVzdG9yZSBh
bnkgc3RhdGUKQEAgLTI2NzEsNyArMjY3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
RnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1CiAg
ICAgbG9hZEluU2FtZURvY3VtZW50KHJlcXVlc3QudXJsKCksIDAsICFpc1JlZGlyZWN0KTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29s
IGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlw
ZSBsb2FkVHlwZSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVy
Zm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmlu
ZyYgaHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBpZiB3ZSBhcmUgc3VibWl0dGluZyBhIGZvcm0gd2l0
aCBtZXRob2Qgb3RoZXIgdGhhbiAiR0VUIiwgZXhwbGljaXRseSByZWxvYWRpbmcsCiAgICAgLy8g
Y3VycmVudGx5IGRpc3BsYXlpbmcgYSBmcmFtZXNldCwgb3IgaWYgdGhlIFVSTCBkb2VzIG5vdCBo
YXZlIGEgZnJhZ21lbnQuCkBAIC0yNjg5LDcgKzI2ODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpz
aG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29u
c3QgUwogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCk7CiB9CiAK
LXZvaWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29u
c3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJl
bnRCb3VuZGFyeShjb25zdCBVUkwmIHVybCkKIHsKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2Zy
YW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0yNzQ1LDcgKzI3NDUsNyBAQCBib29sIEZy
YW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAgICAgfQogCiAgICAgaWYgKCFzaG91bGRDbG9zZSkK
LSAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICBtX3N1Ym1pdHRl
ZEZvcm1VUkwgPSBVUkwoKTsKIAogICAgIG1fY3VycmVudE5hdmlnYXRpb25IYXNTaG93bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCA9IGZhbHNlOwogICAgIHJldHVybiBzaG91bGRDbG9zZTsKQEAg
LTI5NzcsNyArMjk3Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50KFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQodXNlckFn
ZW50KTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBLVVJMJiB1cmwsIHVuc2lnbmVk
IGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCitib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIEZlYXR1cmVPYnNl
cnZlcjo6b2JzZXJ2ZShtX2ZyYW1lLmRvY3VtZW50KCksIEZlYXR1cmVPYnNlcnZlcjo6WEZyYW1l
T3B0aW9ucyk7CiAKQEAgLTMwMzUsMTQgKzMwMzUsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKICAgICBjb21taXRQcm92aXNpb25hbExv
YWQoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFoaXN0
b3J5KCkuY3VycmVudEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB1
cmwgPT0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCktPnVybCgpIHx8IHVybCA9PSBoaXN0b3J5KCku
Y3VycmVudEl0ZW0oKS0+b3JpZ2luYWxVUkwoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wg
RnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHVybC5zdHJpbmcoKSwgImFi
b3V0OnNyY2RvYyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTMxLDkgKzMxMzEsOSBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhpc3RvcnlJdGVt
KiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
S1VSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7Ci0gICAgS1VSTCBpdGVtT3JpZ2luYWxVUkwgPSBp
dGVtLT5vcmlnaW5hbFVSTCgpOwotICAgIEtVUkwgY3VycmVudFVSTDsKKyAgICBVUkwgaXRlbVVS
TCA9IGl0ZW0tPnVybCgpOworICAgIFVSTCBpdGVtT3JpZ2luYWxVUkwgPSBpdGVtLT5vcmlnaW5h
bFVSTCgpOworICAgIFVSTCBjdXJyZW50VVJMOwogICAgIGlmIChkb2N1bWVudExvYWRlcigpKQog
ICAgICAgICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAgICAgUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YSA9IGl0ZW0tPmZvcm1EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5oCmluZGV4IGY1N2U1ZWY5MGUyNjMyMGRjYTMzMWYyMDVmYmU3OGRiZTI3OTVj
NjUuLjg2NGRiNjU5NTA2Y2ExZGNjOGZiOGE3Y2IxYTM4OTJhNTQ4N2I2ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0dXBGb3JSZXBsYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGFsbCBmdW5j
dGlvbnMgd2hpY2ggc3RhcnQgbG9hZHMuIFdlIGhhdmUgdG9vIG1hbnkuCi0gICAgdm9pZCBsb2Fk
VVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJh
bWUqKTsKKyAgICB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7CiAgICAgdm9pZCBsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsICAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RSZXF1ZXN0IGFu
ZCBsb2FkVVJMLgogICAgICAgICBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQ
b2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBk
YXRhKTsKIAotICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSA9IHRydWUsIGJv
b2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJvb2wgcmVmcmVzaCA9IGZhbHNlKTsKLSAg
ICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFz
c1JlZlB0cjxFdmVudD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgU2hvdWxkU2VuZFJlZmVycmVyKTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlz
dG9yeSA9IHRydWUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJvb2wgcmVmcmVz
aCA9IGZhbHNlKTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2Nr
QmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogICAgIHZvaWQgc3VibWl0Rm9y
bShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHJlbG9hZChib29sIGVu
ZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJyaWRlRW5jb2Rp
bmcoY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKTsKLSAgICB2b2lkIHJlbG9hZFdpdGhP
dmVycmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0VuZFJlbG9hZCA9
IGZhbHNlKTsKKyAgICB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBVUkwmIG92ZXJy
aWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogCiAgICAgdm9pZCBvcGVuKENh
Y2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0qLCBGcmFtZUxv
YWRUeXBlKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCgpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2ZWRNYWluUmVz
b3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIHdpbGxMb2FkTWVk
aWFFbGVtZW50VVJMKEtVUkwmKTsKKyAgICBib29sIHdpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVS
TCYpOwogCiAgICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIApAQCAtMTc1LDcgKzE3
NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSk7CiAKLSAgICBib29sIHNob3VsZFRy
ZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBzaG91
bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWNlaXZlZEZpcnN0RGF0YSgpOwogCiAgICAgdm9pZCBoYW5kbGVkT25sb2Fk
RXZlbnRzKCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKik7CiAgICAgdm9pZCBk
aXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CkBAIC0yMTksNyArMjE5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIGZs
YWdzKSB7IG1fZm9yY2VkU2FuZGJveEZsYWdzIHw9IGZsYWdzOyB9CiAgICAgU2FuZGJveEZsYWdz
IGVmZmVjdGl2ZVNhbmRib3hGbGFncygpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVja0lmRm9ybUFj
dGlvbkFsbG93ZWRCeUNTUChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBjaGVja0lmRm9y
bUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIEZyYW1lKiBvcGVu
ZXIoKTsKICAgICB2b2lkIHNldE9wZW5lcihGcmFtZSopOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZnJhbWVEZXRhY2hlZCgpOwogCi0gICAgdm9pZCBzZXRPdXRnb2lu
Z1JlZmVycmVyKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNldE91dGdvaW5nUmVmZXJyZXIoY29u
c3QgVVJMJik7CiAKICAgICB2b2lkIGxvYWREb25lKCk7CiAgICAgdm9pZCBmaW5pc2hlZFBhcnNp
bmcoKTsKQEAgLTI0OCwxMSArMjQ4LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHlVc2Vy
QWdlbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBib29sIHNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmLCB1bnNpZ25lZCBsb25n
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJh
bWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjb21wbGV0ZWQoKTsKICAgICBib29sIGFsbEFuY2Vz
dG9yc0FyZUNvbXBsZXRlKCkgY29uc3Q7IC8vIGluY2x1ZGluZyB0aGlzCi0gICAgdm9pZCBjbGll
bnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICB2b2lkIGNsaWVudFJlZGlyZWN0ZWQoY29u
c3QgVVJMJiwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCk7CiAgICAgdm9pZCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9v
bCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlc3MpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgcHVi
bGljIGJlY2F1c2UgdGhpcyBhc3luY2hyb25vdXMgY2FsbGJhY2sgZnJvbSB0aGUgRnJhbWVMb2Fk
ZXJDbGllbnQKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHN1cHByZXNz
T3BlbmVySW5OZXdGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0Zy
YW1lOyB9CiAKLSAgICBzdGF0aWMgT2JqZWN0Q29udGVudFR5cGUgZGVmYXVsdE9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFBy
ZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHN0YXRpYyBPYmplY3RDb250ZW50VHlwZSBkZWZh
dWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIGJvb2wgcXVpY2tSZWRp
cmVjdENvbWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tSZWRpcmVjdENvbWluZzsgfQogCkBA
IC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3NpbmdTdGF0
dXNDaGFuZ2VkKCk7CiAKLSAgICBjb25zdCBLVVJMJiBwcmV2aW91c1VSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJldmlvdXNVUkw7IH0KKyAgICBjb25zdCBVUkwmIHByZXZpb3VzVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmV2aW91c1VSTDsgfQogCiAgICAgdm9pZCBmb3JjZVBhZ2VUcmFuc2l0aW9u
SWZOZWVkZWQoKTsKIApAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsb2Fk
UHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKTsKIAogICAgIHZvaWQgdXBkYXRlRmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKTsKLSAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0
IEtVUkwmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYpOwog
ICAgIAogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jiwg
RnJhbWVMb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSk7CiAKQEAgLTMxMiw3ICszMTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hlZFBhZ2UqKTsK
ICAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOwogCi0gICAgU3Vic3RpdHV0ZURhdGEgZGVm
YXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBTdWJzdGl0dXRlRGF0
YSBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMg
dm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hvdWxkQ29udGlu
dWUpOwogICAgIHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGlj
eSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hv
dWxkQ29udGludWUpOwpAQCAtMzI0LDggKzMyNCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250
aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgdm9pZCBjb250aW51ZUZyYWdt
ZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgc2hvdWxkQ29udGludWUpOwogCi0gICAgYm9vbCBzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZp
Z2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBG
cmFtZUxvYWRUeXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0ZyYWdtZW50V2l0
aFBhcmVudEJvdW5kYXJ5KGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHNob3VsZFBlcmZvcm1GcmFn
bWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJpbmcmIGh0dHBN
ZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IFVSTCYpOworICAgIHZvaWQgc2Nyb2xsVG9GcmFn
bWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgY2hlY2tMb2Fk
Q29tcGxldGVGb3JUaGlzRnJhbWUoKTsKIApAQCAtMzUyLDE5ICszNTIsMTkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsICAgICAgICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVS
ZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KICAgICAgICAgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwotICAgIHZvaWQgbG9hZFVSTChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUs
ICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5h
dmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0
ZQorICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxvYWRGcmFtZVJl
cXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbiBvciBkaXNwYXRjaGVzIHRvIG5h
dmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCiAgICAgICAgIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1l
TG9hZFR5cGUsIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogCiAg
ICAgdm9pZCByZWxvYWRXaXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29sIGVu
ZFRvRW5kUmVsb2FkKTsKIAotICAgIGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0IEtVUkwmIGN1cnJl
bnRVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBib29sIHNob3VsZFJlbG9h
ZChjb25zdCBVUkwmIGN1cnJlbnRVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwogCiAg
ICAgdm9pZCByZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcmIGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgZGV0YWNoQ2hpbGRy
ZW4oKTsKICAgICB2b2lkIGNsb3NlQW5kUmVtb3ZlQ2hpbGQoRnJhbWUqKTsKIAotICAgIHZvaWQg
bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKKyAgICB2b2lkIGxv
YWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvckxvYWRTdGFydCgpOwogICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwpA
QCAtMzc2LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNoZWNrTG9hZENv
bXBsZXRlKCk7CiAgICAgdm9pZCBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOwogCi0gICAgYm9v
bCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmKSBjb25zdDsKIAog
ICAgIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJbkFsbFdvcmxkcygpOwogCkBA
IC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9uZWVkc0NsZWFyOwogCi0g
ICAgS1VSTCBtX3N1Ym1pdHRlZEZvcm1VUkw7CisgICAgVVJMIG1fc3VibWl0dGVkRm9ybVVSTDsK
IAogICAgIFRpbWVyPEZyYW1lTG9hZGVyPiBtX2NoZWNrVGltZXI7CiAgICAgYm9vbCBtX3Nob3Vs
ZENhbGxDaGVja0NvbXBsZXRlZDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRlOgogCiAgICAg
UmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRleHQ7CiAKLSAg
ICBLVVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAgICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwogICAgIE93blB0cjxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eUFzc2VydGlvbjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmNzZiYjQ2YTg4MzA5OWIzMGQ3
ZDc4NWNmYWQ5Y2ZlNWQ1ZGU3MTMuLmRjN2Q5ZTk5ODllOTMzZWIyNDZiOTI5ZTgyZjcyZmU3OTBh
Y2EzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03
Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIGNsYXNzIEhUTUxQ
bHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBj
bGFzcyBVUkw7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50OwogICAgIGNsYXNzIE5hdmlnYXRpb25B
Y3Rpb247CiAgICAgY2xhc3MgUGFnZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlIGlu
dGVydmFsLCBkb3VibGUgZmlyZURhdGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUgaW50ZXJ2YWws
IGRvdWJsZSBmaXJlRGF0ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRO
YXZpZ2F0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgPSAwOwpAQCAtMjE0LDggKzIxNCw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gVGhlIGluZGljYXRlZCBzZWN1cml0eSBvcmln
aW4gaGFzIHJ1biBhY3RpdmUgY29udGVudCAoc3VjaCBhcyBhCiAgICAgICAgIC8vIHNjcmlwdCkg
ZnJvbSBhbiBpbnNlY3VyZSBzb3VyY2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQg
Y2FuCiAgICAgICAgIC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2lu
LgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVS
TCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JikgPSAwOwpAQCAtMjQyLDkgKzI0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
LCBjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpID0gMDsKIAotICAgICAgICB2aXJ0dWFs
IFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFVSTCYpID0gMDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShD
YWNoZWRGcmFtZSopID0gMDsKQEAgLTI1OCwyMSArMjU4LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVu
dExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsK
KyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBt
YXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkgPSAwOwogCi0g
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcykgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqKSBjb25zdCB7
IH0KICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOworICAgICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNv
bnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdldCopID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdpZGdl
dCopID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2Jq
ZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOworICAgICAgICB2aXJ0dWFsIE9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0ID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3Jh
cHBlcldvcmxkKikgPSAwOwpAQCAtMjk0LDE2ICsyOTQsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c1VzZVBsdWdpbkRv
Y3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBL
VVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
TG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpIHsgfQogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykgeyBy
ZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1Nj
cmlwdEZyb21Tb3VyY2UoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IEtVUkwmKSB7IHJl
dHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFsbG93U2Ny
aXB0RnJvbVNvdXJjZShib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgVVJMJikgeyByZXR1
cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1BsdWdp
bnMoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbWFnZShib29sIGVuYWJsZWRQZXJTZXR0aW5n
cywgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQotICAgICAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZFBl
clNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBlbmFibGVk
UGVyU2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmluZ0luc2VjdXJl
Q29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBL
VVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwmKSB7IHJldHVy
biBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFsbG93RGlzcGxh
eWluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJT
ZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVy
U2V0dGluZ3M7IH0KIAogICAgICAgICAvLyBUaGlzIGNhbGxiYWNrIG5vdGlmaWVzIHRoZSBjbGll
bnQgdGhhdCB0aGUgZnJhbWUgd2FzIGFib3V0IHRvIHJ1bgogICAgICAgICAvLyBKYXZhU2NyaXB0
IGJ1dCBkaWQgbm90IGJlY2F1c2UgYWxsb3dTY3JpcHQgcmV0dXJuZWQgZmFsc2UuIFdlCkBAIC0z
MTUsMTEgKzMxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7IH0KIAogICAgICAgICAvLyBDbGllbnRzIHRoYXQgZ2Vu
ZXJhbGx5IGRpc2FsbG93IHVuaXZlcnNhbCBhY2Nlc3MgY2FuIG1ha2UgZXhjZXB0aW9ucyBmb3Ig
cGFydGljdWxhciBVUkxzLgotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJz
YWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChj
b25zdCBVUkwmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpID0gMDsK
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJM
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZShjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBlbWJlZGRlciBpbnRlcmNlcHRlZCB0aGUgcG9zdE1l
c3NhZ2UgY2FsbAogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNz
YWdlRXZlbnQoU2VjdXJpdHlPcmlnaW4qIC8qdGFyZ2V0Ki8sIE1lc3NhZ2VFdmVudCopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAppbmRleCBmOThjMzhjMzcyNjQ0MzhlODdhOTIzMjFjNDA1YWRjOWYzNjE1OGRjLi43
MTU2M2E5NTJhOGE4MjZlZGNiYWUyN2MzMTYzYTk5ZTRmNGIwMDA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRlZExpbmsoUGFn
ZSogcGFnZSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIGlubGluZSB2b2lkIGFkZFZpc2l0ZWRM
aW5rKFBhZ2UqIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBsYXRmb3JtU3RyYXRlZ2ll
cygpLT52aXNpdGVkTGlua1N0cmF0ZWd5KCktPmFkZFZpc2l0ZWRMaW5rKHBhZ2UsIHZpc2l0ZWRM
aW5rSGFzaCh1cmwuc3RyaW5nKCkpKTsKIH0KQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBk
YXRlVHlwZSkKICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigp
OwogCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVy
LmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBjb25zdCBVUkwmIGhpc3Rv
cnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAK
ICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3Qo
KSkgewogICAgICAgICBpZiAoIWhpc3RvcnlVUkwuaXNFbXB0eSgpKSB7CkBAIC0zODQsNyArMzg0
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2Vk
QmFja0ZvcndhcmRMaXN0KCkKICNlbmRpZgogICAgIAogICAgIGJvb2wgbmVlZFByaXZhY3kgPSBt
X2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGNvbnN0IEtV
UkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZv
ckhpc3RvcnkoKTsKKyAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1lLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewogICAgICAgICBp
ZiAoIW1fY3VycmVudEl0ZW0gJiYgIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpKSB7CkBAIC00MzIs
NyArNDMyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJl
Y3QoKQogICAgIH0KIAogICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGNvbnN0IEtVUkwmIGhpc3RvcnlVUkwgPSBt
X2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBj
b25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkt
PnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghaGlzdG9yeVVSTC5pc0VtcHR5KCkgJiYgIW5l
ZWRQcml2YWN5KSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCkBA
IC02MDMsMTAgKzYwMywxMCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0aWFsaXplSXRl
bShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgQVNTRVJUKGRvY3VtZW50
TG9hZGVyKTsKIAotICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVudExvYWRlci0+dW5y
ZWFjaGFibGVVUkwoKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVudExvYWRlci0+
dW5yZWFjaGFibGVVUkwoKTsKIAotICAgIEtVUkwgdXJsOwotICAgIEtVUkwgb3JpZ2luYWxVUkw7
CisgICAgVVJMIHVybDsKKyAgICBVUkwgb3JpZ2luYWxVUkw7CiAKICAgICBpZiAoIXVucmVhY2hh
YmxlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICB1cmwgPSB1bnJlYWNoYWJsZVVSTDsKQEAgLTg1
Miw3ICs4NTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogICAgIGlmIChtX2ZyYW1lLnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhZGRWaXNpdGVkTGluayhwYWdlLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7
CisgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5n
KSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7
CiAKIH0KQEAgLTg3Myw3ICs4NzMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNl
U3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwotICAgIGFkZFZpc2l0ZWRM
aW5rKG1fZnJhbWUucGFnZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7Cisg
ICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5wYWdlKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bFN0cmluZykpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlz
dG9yeSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5kZXggYjliY2Nk
OWIyYTA0NTMxNTI0ZmU4YjJjNGZmMzAyOTFhMTg2MzFmYS4uMTdjNzMzZDNlMzMzY2NkZDQ4Yzlh
ZWZlMzJmNGI2NTI0ZDdmNjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xp
bmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcApA
QCAtODYsNyArODYsNyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGluayhjb25zdCBM
aW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3QgS1VSTCYgaHJl
ZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHNpemVzLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAg
ICAvLyBXZSdsbCByZWNvcmQgdGhpcyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlmIHdlIGxhdGVy
IG9ubHkgdXNlIGl0IGluIHRvcCBsZXZlbCBmcmFtZXMKICAgICBpZiAocmVsQXR0cmlidXRlLm1f
aWNvblR5cGUgIT0gSW52YWxpZEljb24gJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhyZWYuaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBlMjUxMzU3MjExOGZjOThh
OGNmNzEwMmRlZjE0YjFiOGIyM2MzNjU5Li4yNzdlYzQzODI3NDg2NmEzNmFhYmI1NGU3OTE5Y2Nh
MGUyMTY2YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQyLDcgKzQyLDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGU7CiAKIC8vIFRoZSBMaW5rTG9hZGVy
IGNhbiBsb2FkIGxpbmsgcmVsIHR5cGVzIGljb24sIGRucy1wcmVmZXRjaCwgc3VicmVzb3VyY2Ug
YW5kIHByZWZldGNoLgpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lkIHJlbGVhc2VkKCk7
Ci0gICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiwgRG9jdW1lbnQqKTsKKyAg
ICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFVSTCYsIERvY3VtZW50Kik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRlcj4qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCBjZTBh
OGRjZTIzNzU2MDQ5OTI4YjRmZGJiNDgzZGU0M2E1YTM2N2UzLi41NmEyNDZmNDdlN2MwMDc5ZWQ0
YTZmZDYxZTRjMmE2ZDk3NGI1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50JiBN
aXhlZENvbnRlbnRDaGVja2VyOjpjbGllbnQoKSBjb25zdAogfQogCiAvLyBzdGF0aWMKLWJvb2wg
TWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCitib29sIE1peGVkQ29udGVudENoZWNrZXI6Omlz
TWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpICE9ICJodHRwcyIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2Ugb25seSBjYXJlIGFib3V0IEhUVFBTIHNlY3VyaXR5
IG9yaWdpbnMuCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNN
aXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLCiAgICAg
cmV0dXJuICFTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUodXJsKTsKIH0KIAotYm9vbCBNaXhlZENv
bnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBNaXhlZENvbnRlbnRD
aGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVu
dChzZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03Nyw3ICs3
Nyw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnCiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAK
LWJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWlzTWl4ZWRD
b250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTkx
LDcgKzkxLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRl
bnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAgIHJldHVybiBhbGxvd2VkOwog
fQogCi12b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBj
b25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYgdGFyZ2V0KSBjb25zdAordm9pZCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5nJiBh
Y3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KSBjb25zdAogewogICAgIFN0cmluZyBtZXNzYWdlID0g
bWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIs
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpLCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVz
c2FnZUxldmVsLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
aXhlZENvbnRlbnRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5oCmluZGV4IGQwZDdiMWUxYzExNjY1ODc1ZGNmZTUwYjViY2NhMmVkNmJmNDEwY2Qu
LjhlNGYzMDAxYTBlZTBmMWQwMDk0YTliMzAzMzIyZmUyMjIzNzgyODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNsYXNz
IE1peGVkQ29udGVudENoZWNrZXIgewpAQCAtNDYsMTUgKzQ2LDE1IEBAIGNsYXNzIE1peGVkQ29u
dGVudENoZWNrZXIgewogcHVibGljOgogICAgIE1peGVkQ29udGVudENoZWNrZXIoRnJhbWUqKTsK
IAotICAgIGJvb2wgY2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNv
bnN0IEtVUkwmKSBjb25zdDsKLSAgICBib29sIGNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IEtVUkwmKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29u
dGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKKyAgICBib29sIGNhbkRpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBi
b29sIGNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIGNv
bnN0OworICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IGhhdmUgYSBzZXBhcmF0ZSBjbGllbnQgZnJvbSBGcmFtZUxvYWRlci4KICAgICBGcmFtZUxvYWRl
ckNsaWVudCYgY2xpZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIGxvZ1dhcm5pbmcoYm9vbCBhbGxv
d2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZvaWQg
bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBjb25zdCBVUkwm
KSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGMzNmIxNzBlZWJmYTZkZDQ2YmQ0M2JhN2QxMzIxM2M4
YjhiM2MxYjIuLjVlMjFlMDE0MGYxMzQ5Y2E2NWI5YTFjM2E1OWRkMGM3ZTI4NmE4NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAog
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VSZXF1ZXN0LnVybCgpLmlzRW1wdHkoKTsgfQogCi0gICAgICAgIEtVUkwgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KKyAgICAgICAgVVJMIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpOyB9CiAgICAgICAgIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXNvdXJjZVJlcXVlc3Q7IH0KIAogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNj
aGVkdWxlci5jcHAKaW5kZXggMjJkMTNmYTk2ZWE0ZTU5YTY5Y2VkNTg3ZWM5NzJiN2Q0ZjgxZDZh
YS4uOWFiOTU5ZjcwMTBhNzkyYWE1NmYyOWRjODIwMzg2MzEwYTk1ZDQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAgICAg
ewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJH
ZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5v
dFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VM
b2NhdGlvbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91
cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIGZh
bHNlKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKG1fc2VjdXJpdHlP
cmlnaW4uZ2V0KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZlcnJlciwgbG9j
a0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxOYXZpZ2F0aW9u
U2NoZWR1bGVyPiogdGltZXIpCkBAIC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBtX2hhdmVUb2xkQ2xpZW50ID0gdHJ1ZTsKIAogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnRSZWRpcmVjdGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBtX3VybCksIGRlbGF5KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZh
bCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCkpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50UmVkaXJlY3RlZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIGRlbGF5KCksIGN1cnJl
bnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJhbWUqIGZyYW1l
LCBib29sIG5ld0xvYWRJblByb2dyZXNzKQpAQCAtMTYwLDggKzE2MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAgICAgewogICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7Ci0gICAgICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KCkpKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3Jp
Z2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCksIGxvY2tIaXN0
b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgcmVmcmVzaCk7CisgICAgICAgIGJvb2wgcmVm
cmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSkpOworICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4oKSwgVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKCkpLCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0
KCksIHJlZnJlc2gpOwogICAgIH0KIH07CiAKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5p
dGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdl
c3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlP
cmlnaW4oKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hp
c3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB0cnVlKTsKKyAgICAgICAgZnJhbWUtPmxv
YWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCgpLCB0cnVlKTsKICAgICB9CiB9OwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbiwKIAogICAgIC8vIElmIHRoZSBVUkwgd2UncmUgZ29pbmcgdG8gbmF2aWdhdGUg
dG8gaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lLCBleGNlcHQgZm9yIHRoZQogICAgIC8v
IGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUgdGhlIGxvY2F0aW9uIGNo
YW5nZS4KLSAgICBLVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJM
IHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgaWYgKHBhcnNlZFVSTC5oYXNG
cmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBwYXJzZWRVUkwpKSB7CiAgICAgICAgIGxvYWRlci5j
aGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWZyZXNoKCkKIHsKICAgICBpZiAoIXNob3VsZFNjaGVkdWxlTmF2aWdh
dGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKaW5kZXggMzEwZWNhZmQwNTRhNmRhNzVlNDdm
N2RjMGI4NWI4ZTJhMDk1ZDlkNy4uNGIyNDNmNzM5NTc0ODYzNmU0ODFkZWRlMmJkYzFkZDE0MzE4
ZWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApAQCAtNTAsNyArNTAsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUGluZ0xvYWRlcjo6bG9hZEltYWdlKEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2Uo
RnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsKTsKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1
cmwpCiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50
LXdvcmsvbXVsdGlwYWdlL2xpbmtzLmh0bWwjaHlwZXJsaW5rLWF1ZGl0aW5nCi12b2lkIFBpbmdM
b2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGluZ1VSTCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25VUkwpCit2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKQogewog
ICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHBpbmdVUkwpOwogI2lmIFBMQVRGT1JNKEJMQUNL
QkVSUlkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBpbmdVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmEKICAgICBV
TlVTRURfUEFSQU0obGVha2VkUGluZ0xvYWRlcik7CiB9CiAKLXZvaWQgUGluZ0xvYWRlcjo6c2Vu
ZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9u
UmVwb3J0KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IHJlcG9ydCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChyZXBvcnRVUkwp
OwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuaApp
bmRleCA0ZmUxN2FkZTAzYzdmMjlhZjYwZDIzODJiZDAyNTA2M2IxMWFhNzNhLi42OTM5YTIzZjkx
YjM1M2FkZjQ5NzVkYTM4YzhmZTM3NDUyZGQxNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb3Jt
RGF0YTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CkBAIC01NCw5ICs1NCw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBQaW5nTG9h
ZGVyIDogcHJpdmF0ZSBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGluZ0xvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7Ci0gICAgc3Rh
dGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBjb25zdCBLVVJM
JiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZpb2xhdGlvblJlcG9ydChG
cmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0
KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBVUkwmIHVybCk7Cisg
ICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBVUkwmIHBpbmdVUkwsIGNvbnN0
IFVSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9sYXRpb25SZXBv
cnQoRnJhbWUqLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVw
b3J0KTsKIAogICAgIHZpcnR1YWwgflBpbmdMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKaW5kZXggZDNhYjc0MTVmMWExOTUxZDZkMDgyMTA2
NTcwYmY5ZmY5ZmFhNTQ3Yy4uY2UyMzI3ODI3YTZhODBiZDU0OWY2NWIwODllZWMzZjA2N2FkMDVh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVudC5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhY2Vob2xkZXJEb2N1
bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGxhY2Vob2xkZXJEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VS
TCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYWNlaG9sZGVyRG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbGFjZWhvbGRlckRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVJl
bmRlclRyZWUoKSBPVkVSUklERTsKIAotICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQoRnJhbWUqIGZy
YW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgUGxhY2Vob2xkZXJEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IERvY3VtZW50KGZyYW1lLCB1cmwpCiAgICAg
ewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKaW5kZXggMWQyNDNiNTVkNWUyNGVkMTM4OWU0Mzk4NjM1MDVkZDNiZjQ4NjA5NC4uYThk
MjE4ZGNiYTk0Y2RkNmUyMTkxY2JmYTM2ZmJjMWQ4YWYxYzA0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgiCkBAIC00OCw3ICs0OCw3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZXF1ZXN0c0luRmxpZ2h0Rm9yTm9uSFRUUFBy
b3RvY29scyA9IDIwOwogLy8gTWF0Y2ggdGhlIHBhcmFsbGVsIGNvbm5lY3Rpb24gY291bnQgdXNl
ZCBieSB0aGUgbmV0d29ya2luZyBsYXllci4KIHN0YXRpYyB1bnNpZ25lZCBtYXhSZXF1ZXN0c0lu
RmxpZ2h0UGVySG9zdDsKIAotUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb24q
IFJlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25zdCBLVVJMJiB1cmwsIENyZWF0
ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKK1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6SG9z
dEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwoY29uc3QgVVJM
JiB1cmwsIENyZWF0ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKIHsKICAgICBpZiAoIXVy
bC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVybiBtX25vbkhUVFBQcm90
b2NvbEhvc3Q7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgc2NoZWR1bGVTZXJ2
ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwg
Y29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBIb3N0SW5mb3JtYXRpb24qIG9sZEhvc3Qg
PSBob3N0Rm9yVVJMKHJlc291cmNlTG9hZGVyLT51cmwoKSk7CiAgICAgQVNTRVJUKG9sZEhvc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4
IDJhMWU0MTMzNTVhZTA3Y2RhZjc2YjZhZDBmY2FkZDNjM2FlNWI5Y2IuLjJkYmY2NTA2YThkOGU0
YjhiZGM1NmIzMDkyZDA2ZDAzNjY2NDVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwogY2xhc3MgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5LCBjb25zdCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSosIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwotICAgIHZpcnR1YWwgdm9pZCBj
cm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJiBy
ZWRpcmVjdFVSTCk7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZl
ZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5p
bXVtUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC0xMDQsNyArMTA0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhvc3RJbmZvcm1hdGlvbiog
aG9zdEZvclVSTChjb25zdCBLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKKyAg
ICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgVVJMJiwgQ3JlYXRlSG9zdFBvbGlj
eSA9IEZpbmRPbmx5KTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKEhvc3RJbmZvcm1h
dGlvbiosIFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIEhvc3RJbmZvcm1hdGlvbiosIFN0cmluZ0hhc2g+IEhvc3RNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGQ4MmFhODJjYTYyNGI3ODNiMmQ1MmJhMTJjMjM5
YmRkMzZmYjMxZTMuLmMzMWYyN2VkZjk3NDdlNGRmMTVhNWE5Yzg1MTc5NzY2ZjFkMDBhYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUmVz
b3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsKICNlbmRpZgog
Ci0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9
IAorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0LnVybCgpOyB9
IAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZS5n
ZXQoKTsgfQogICAgIGJvb2wgc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0
IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tzOyB9
CiAgICAgdm9pZCBzZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrUG9saWN5IHNlbmRM
b2FkQ2FsbGJhY2tzKSB7IG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHNlbmRMb2FkQ2Fs
bGJhY2tzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lua0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmluZGV4IDQ4NGQy
Mzg5YTU3MGEzYzZmNDlhNjVjYWQ3MTYxNmY4MTkwMTY2NGQuLjYwNTFkN2RkZGJlMDA5MTNkMTFk
YWU1NjJkMzY1N2UzZjNkMGMyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
aW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5
dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiB9OwogCi1TaW5r
RG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Np
bmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICAgICBzZXRDb21wYXRpYmlsaXR5TW9k
ZShRdWlya3NNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaAppbmRleCA3NmQ5
YTgzNDgzZjk0M2EzMzI5MGFmYzljMDU3NTg1YzJkODMwMmQ4Li4yNDY2ODg0MjFiNDdiZDUyZTYx
NGQyYmVlMjU5YWI1MDIyNmVmYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U2lua0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtEb2N1bWVudC5o
CkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaW5rRG9j
dW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTaW5rRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTaW5r
RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgU2lua0RvY3VtZW50KEZyYW1lKiwg
Y29uc3QgVVJMJik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2Vy
PiBjcmVhdGVQYXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcAppbmRleCA4ZjhiYzMzNmE0NDBmNDI3YWFkYzEyYjBkNzMzNmZmYmM1MTkxNzAzLi44Yzlm
MTIyMmVmNDIyMGJmNjhhMzMwNTI4ZDEzNDk4YmI5YTYxYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBTdWJmcmFtZUxv
YWRlcjo6Y2xlYXIoKQogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCkKIHsKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUgc3JjPSJqYXZhc2Ny
aXB0OnN0cmluZyI+Ci0gICAgS1VSTCBzY3JpcHRVUkw7Ci0gICAgS1VSTCB1cmw7CisgICAgVVJM
IHNjcmlwdFVSTDsKKyAgICBVUkwgdXJsOwogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1
cmxTdHJpbmcpKSB7CiAgICAgICAgIHNjcmlwdFVSTCA9IGNvbXBsZXRlVVJMKHVybFN0cmluZyk7
IC8vIGNvbXBsZXRlVVJMKCkgZW5jb2RlcyB0aGUgVVJMLgogICAgICAgICB1cmwgPSBibGFua1VS
TCgpOwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cgogICAgIAogYm9v
bCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkw7CisgICAgVVJMIGNvbXBsZXRlZFVSTDsKICAg
ICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNvbXBsZXRlVVJM
KHVybCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXNvdXJj
ZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZQogICAg
IHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwgc2hvdWxkUHJl
ZmVyUGx1Z0luc0ZvckltYWdlcywgZmFsc2UsIHVzZUZhbGxiYWNrKTsKIH0KIAotYm9vbCBTdWJm
cmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVn
aW5FbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitib29s
IFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxlKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQq
IHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQog
ewogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShtaW1lVHlw
ZSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzSmF2YUVuYWJsZWQoKSkK
QEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxl
KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbgogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQorYm9vbCBTdWJmcmFtZUxv
YWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25lckVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29s
IHVzZUZhbGxiYWNrKQogewogICAgIC8vIEFwcGxpY2F0aW9uIHBsdWctaW5zIGFyZSBwbHVnLWlu
cyBpbXBsZW1lbnRlZCBieSB0aGUgdXNlciBhZ2VudCwgZm9yIGV4YW1wbGUgUXQgcGx1Zy1pbnMs
CiAgICAgLy8gYXMgb3Bwb3NlZCB0byB0aGlyZC1wYXJ0eSBjb2RlIHN1Y2ggYXMgRmxhc2guIFRo
ZSB1c2VyIGFnZW50IGRlY2lkZXMgd2hldGhlciBvciBub3QgdGhleSBhcmUKQEAgLTIxOSw3ICsy
MTksNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUwogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21w
bGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwg
PSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yMzcsMTIgKzIzNywxMiBAQCBib29sIFN1YmZyYW1l
TG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIG93bmVyRWxlbWVu
dCwgY29uc3QgUwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNz
UmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2lu
KE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBTdWJmcmFt
ZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSogbm9kZSwgY29uc3QgVVJM
JiB1cmwsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBBU1NFUlQobm9kZS0+aGFzVGFnTmFtZSh2
aWRlb1RhZykgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG5vZGUpKTsKIAotICAgIEtVUkwgY29tcGxl
dGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQog
ICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yOTIsNyArMjky
LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0
V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICB9CiAKICAgICBpZiAoIWNvZGVCYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGNvZGVCYXNlVVJMID0gY29tcGxl
dGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOworICAgICAgICBVUkwgY29kZUJhc2VVUkwgPSBjb21w
bGV0ZVVSTChjb2RlQmFzZVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghZWxlbWVudC0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNvZGVCYXNlVVJMKSkgewogICAgICAg
ICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1lLCBjb2RlQmFz
ZVVSTC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMwNiw3ICszMDYsNyBA
QCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRn
ZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSAogCiAgICAgaWYgKGJhc2VVUkxTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICBiYXNlVVJMU3RyaW5nID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVS
TCgpLnN0cmluZygpOwotICAgIEtVUkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJp
bmcpOworICAgIFVSTCBiYXNlVVJMID0gY29tcGxldGVVUkwoYmFzZVVSTFN0cmluZyk7CiAKICAg
ICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQ7CiAgICAgaWYgKGFsbG93UGx1Z2lucyhBYm91dFRvSW5z
dGFudGlhdGVQbHVnaW4pKQpAQCAtMzI2LDcgKzMyNiw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBT
dWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzaXpl
LCBICiAgICAgcmV0dXJuIHdpZGdldDsKIH0KIAotRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2Fk
T3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tI
aXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCitGcmFtZSogU3ViZnJhbWVMb2FkZXI6
OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBs
b2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IG93bmVyRWxlbWVudC0+Y29udGVudEZyYW1lKCk7CiAgICAgaWYgKGZyYW1lKQpAQCAtMzM4
LDcgKzMzOCw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJlY3RTdWJmcmFt
ZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVuCiAgICAgcmV0dXJuIG93bmVyRWxl
bWVudC0+Y29udGVudEZyYW1lKCk7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1
YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK0ZyYW1lKiBT
dWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIApAQCAt
NDAzLDcgKzQwMyw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmFsbG93UGx1Z2lucyhSZWFzb25G
b3JDYWxsaW5nQWxsb3dQbHVnaW5zIHJlYXNvbikKICAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAot
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzLCBi
b29sIGhhc0ZhbGxiYWNrLCBib29sJiB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6
OnNob3VsZFVzZVBsdWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzLCBib29sIGhhc0ZhbGxiYWNrLCBib29s
JiB1c2VGYWxsYmFjaykKIHsKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobWltZVR5cGUpKSB7CiAgICAgICAgIHVzZUZhbGxi
YWNrID0gZmFsc2U7CkBAIC00MzAsNyArNDMwLDcgQEAgRG9jdW1lbnQqIFN1YmZyYW1lTG9hZGVy
Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7CiB9CiAK
LWJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCog
cGx1Z2luRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAor
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBw
bHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwKICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQogewogICAgIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0KiByZW5kZXJlciA9IHBsdWdpbkVsZW1lbnQtPnJlbmRlckVtYmVkZGVkT2JqZWN0KCk7CkBA
IC00NjIsNyArNDYyLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBLVVIKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotS1VSTCBTdWJmcmFtZUxvYWRlcjo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0CitVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYg
dXJsKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggZDhlMDNjMTAyMzY2NWRlNGRlNmJhODQ2Y2VjMTg3
MzIxYTBhZDQxYS4uMmU4NDBlOTJmZGI4NDE0YTFiZjBkODU3NzBkNjA0N2UyZDM3OTBmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgSFRNTEFwcGxldEVsZW1lbnQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFz
cyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiBjbGFzcyBOb2Rl
OwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoUExVR0lOX1BS
T1hZX0ZPUl9WSURFTykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBFbGVtZW50KiBp
bnN0ZWFkIG9mIE5vZGUqLCBvciBiZXR0ZXIgeWV0IHRoZQogICAgIC8vIHNwZWNpZmljIHR5cGUg
b2YgRWxlbWVudCB3aGljaCB0aGlzIGNvZGUgZGVwZW5kcyBvbi4KLSAgICBQYXNzUmVmUHRyPFdp
ZGdldD4gbG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSosIGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKKyAgICBQYXNzUmVmUHRyPFdpZGdldD4gbG9hZE1lZGlhUGxheWVyUHJveHlQbHVn
aW4oTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogI2VuZGlmCiAKICAgICBQYXNzUmVm
UHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKQEAgLTgwLDIxICs4MCwyMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCByZXNvdXJjZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAKIHBy
aXZhdGU6Ci0gICAgYm9vbCByZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgYm9vbCB1
c2VGYWxsYmFjayk7Ci0gICAgRnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1l
T3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwotICAgIEZyYW1l
KiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7Ci0gICAgYm9vbCBsb2FkUGx1
Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwKKyAgICBib29sIHJlcXVlc3RQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wg
dXNlRmFsbGJhY2spOworICAgIEZyYW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFt
ZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOworICAgIEZyYW1l
KiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBib29sIGxvYWRQbHVn
aW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCi0gICAgYm9v
bCBzaG91bGRVc2VQbHVnaW4oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYg
dXNlRmFsbGJhY2spOwotICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIGJvb2wg
c2hvdWxkVXNlUGx1Z2luKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywgYm9vbCYgdXNl
RmFsbGJhY2spOworICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgbV9jb250YWluc1BsdWdpbnM7CiAgICAg
RnJhbWUqIG1fZnJhbWU7CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGUwNzdiZmFhZGY1MTA4NGNlMmQ3ZTVmOGMzYmNhNmU5MzZjMTMxMGMu
LmZhNTllODdkZDU2NzJiYTE3OTYxYjY0Y2EyNWQ4NjI0MmNlZWE0MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIGJv
b2wgU3VicmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKQogdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICAvLyBTdG9y
ZSB0aGUgcHJldmlvdXMgVVJMIGJlY2F1c2UgdGhlIGNhbGwgdG8gUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdCB3aWxsIG1vZGlmeSBpdC4KLSAgICBLVVJMIHByZXZpb3VzVVJMID0gcmVx
dWVzdCgpLnVybCgpOworICAgIFVSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKICAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAgQVNTRVJUKCFu
ZXdSZXF1ZXN0LmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgK
aW5kZXggNTIwZWY1ODA1NDk5NmM5OTZiNzcxZjcwN2UxZDE3MWE1ZDMzNTMyYS4uMjk1OWRlN2E4
ZmNhYTNmYzBlN2IzYTc5N2E0ODllMjJiNTY3YWNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU3Vic3RpdHV0ZURhdGFf
aAogI2RlZmluZSBTdWJzdGl0dXRlRGF0YV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSw4ICs0MSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFN1YnN0aXR1dGVEYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgS1VS
TCYgZmFpbGluZ1VSTCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9u
c2VVUkwgPSBLVVJMKCksIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSA9IGZhbHNl
KQorICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBVUkwm
IGZhaWxpbmdVUkwsCisgICAgICAgICAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IFVS
TCgpLCBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPSBmYWxzZSkKICAgICAgICAg
ICAgIDogbV9jb250ZW50KGNvbnRlbnQpCiAgICAgICAgICAgICAsIG1fbWltZVR5cGUobWltZVR5
cGUpCiAgICAgICAgICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTYwLDE1
ICs2MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFNoYXJlZEJ1ZmZl
ciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQogICAgICAgICBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlwZTsgfQogICAg
ICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVu
Y29kaW5nOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IHJldHVy
biBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlVVJMOyB9CisgICAgICAgIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAgICBjb25zdCBVUkwmIHJl
c3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQogICAgICAgICAKICAg
ICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRlbnQ7CiAgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7Ci0g
ICAgICAgIEtVUkwgbV9mYWlsaW5nVVJMOwotICAgICAgICBLVVJMIG1fcmVzcG9uc2VVUkw7Cisg
ICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFVSTCBtX3Jlc3BvbnNlVVJMOwogICAg
ICAgICBib29sIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggMTVjYmM2ZjZlOGFm
MjFlMTlmYzE1MmU0ZGUyYTA5YTZhMDg2YTBlMS4uOThjODdhMjM1NTcwZTk2OWY5MmE4N2M1YTRi
YTE5NjliNDkxMzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3Vy
Y2UuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
c3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKQEAgLTQwLDEyICs0MCwxMiBA
QCBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdWJzdGl0dXRl
UmVzb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdWJzdGl0dXRlUmVzb3VyY2UoKSB7
IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAg
IFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQogICAgICAg
ICA6IG1fdXJsKHVybCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgICAgICAs
IG1fZGF0YShkYXRhKQpAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIAog
cHJpdmF0ZToKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZjZlYzZlZDcy
YzNhNTFhYmU0OWRkOWM3MGE5ZTFkMjhiZmZkNzJmMS4uNGZhMDc2OGUzYjgxNWM2MTBjMmZkMjQx
NTEzZWJkYzg5ZDBjYzk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRl
ci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGNhbmNlbExvYWQoKTsKIH0KIAot
Ym9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSkKK2Jvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKIHsKICAgICBjYW5jZWxMb2FkKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAppbmRleCAzNmYzZWYwOWVj
MmQxMThjZjMyNDkzZTJmMGE2Y2IyYzJmNjAyMmE0Li45MzU3ZTEwYzk2MGU1MjBhY2U1YmJlMjIy
MDA1MjhlNjc3OGE4NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5o
CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNr
TG9hZGVyKCk7CiAgICAgCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IGNyb3NzT3JpZ2luTW9kZSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKICAgICB2b2lkIGdl
dE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpOwogI2lm
IEVOQUJMRShXRUJWVFRfUkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA2MTgyOWIyNzYwNzhjYzAwMGZmOTI3
NTY0NWM4NmUxOWI2NDRlNDliLi44NTI4OWIzMzk4MjM4MjNkZGQyZDcwYWRlYzE0YWYyOTZmNDlh
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAK
LXN0YXRpYyBpbmxpbmUgYm9vbCBmYWxsYmFja1VSTExvbmdlclRoYW4oY29uc3Qgc3RkOjpwYWly
PEtVUkwsIEtVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiYgcmhzKQorc3Rh
dGljIGlubGluZSBib29sIGZhbGxiYWNrVVJMTG9uZ2VyVGhhbihjb25zdCBzdGQ6OnBhaXI8VVJM
LCBVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxVUkwsIFVSTD4mIHJocykKIHsKICAgICByZXR1
cm4gbGhzLmZpcnN0LnN0cmluZygpLmxlbmd0aCgpID4gcmhzLmZpcnN0LnN0cmluZygpLmxlbmd0
aCgpOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIHVuc2lnbmVkIEFwcGxpY2F0aW9uQ2FjaGU6OnJl
bW92ZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIAogQXBwbGljYXRpb25DYWNoZVJl
c291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBTdHJpbmcmIHVy
bCkKIHsKLSAgICBBU1NFUlQoIUtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBtX3Jlc291cmNlcy5nZXQodXJsKTsK
IH0gICAgCiAKQEAgLTEzOCwyMCArMTM4LDIwIEBAIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSog
QXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxCiAg
ICAgaWYgKCFyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChyZXF1ZXN0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBLVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsKHJlcXVlc3Qu
dXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVy
bC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIHJldHVybiByZXNvdXJjZUZvclVS
TCh1cmwpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdoaXRlbGlzdChj
b25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKK3ZvaWQgQXBwbGljYXRpb25DYWNo
ZTo6c2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3Qp
CiB7CiAgICAgQVNTRVJUKG1fb25saW5lV2hpdGVsaXN0LmlzRW1wdHkoKSk7CiAgICAgbV9vbmxp
bmVXaGl0ZWxpc3QgPSBvbmxpbmVXaGl0ZWxpc3Q7IAogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGU6OmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBBcHBsaWNh
dGlvbkNhY2hlOjppc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHNpemVfdCB3aGl0ZWxpc3RTaXplID0gbV9vbmxpbmVXaGl0ZWxpc3Quc2l6ZSgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVsaXN0U2l6ZTsgKytpKSB7CkBAIC0xNjksNyArMTY5
LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRGYWxsYmFja1VSTHMoY29uc3QgRmFsbGJh
Y2tVUkxWZWN0b3ImIGZhbGxiYWNrVVJMcykKICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fZmFsbGJh
Y2tVUkxzLmJlZ2luKCksIG1fZmFsbGJhY2tVUkxzLmVuZCgpLCBmYWxsYmFja1VSTExvbmdlclRo
YW4pOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGU6OnVybE1hdGNoZXNGYWxsYmFja05hbWVz
cGFjZShjb25zdCBLVVJMJiB1cmwsIEtVUkwqIGZhbGxiYWNrVVJMKQorYm9vbCBBcHBsaWNhdGlv
bkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgVVJMJiB1cmwsIFVSTCog
ZmFsbGJhY2tVUkwpCiB7CiAgICAgc2l6ZV90IGZhbGxiYWNrQ291bnQgPSBtX2ZhbGxiYWNrVVJM
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmYWxsYmFja0NvdW50OyArK2kp
IHsKQEAgLTE5MywxMyArMTkzLDEzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6Y2xlYXJTdG9y
YWdlSUQoKQogICAgIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNoZUZvck9yaWdp
bihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAg
IFZlY3RvcjxVUkw+IHVybHM7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2UoKS5tYW5pZmVzdFVSTHMo
JnVybHMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0
aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
S1VSTCBvcmlnaW5VUkwoS1VSTCgpLCBvcmlnaW4tPnRvU3RyaW5nKCkpOworICAgIFVSTCBvcmln
aW5VUkwoVVJMKCksIG9yaWdpbi0+dG9TdHJpbmcoKSk7CiAKICAgICBzaXplX3QgY291bnQgPSB1
cmxzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oCmlu
ZGV4IDI1MWJlYTMyM2JhYzMwYWZlYTA3N2I1MzNlZGEyNWNiNzc0M2IyMmMuLmZmZTQ4MjE4NzBi
Njk1YzIzODEzZGU3MzY3ZjkwM2ZmMDEyOGZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzgsMTEgKzM4LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsKIGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8S1VSTCwgS1VSTD4gPiBGYWxsYmFja1VS
TFZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFVSTD4gPiBGYWxsYmFja1VS
TFZlY3RvcjsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFw
cGxpY2F0aW9uQ2FjaGU+IHsKIHB1YmxpYzoKQEAgLTY4LDEzICs2OCwxMyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhib29sIHZhbHVlKSB7IG1fYWxs
b3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB2YWx1ZTsgfQogICAgIGJvb2wgYWxsb3dzQWxsTmV0d29y
a1JlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0FsbE5ldHdvcmtSZXF1ZXN0czsgfQot
ICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxLVVJMPiYgb25saW5lV2hp
dGVsaXN0KTsKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAgYm9vbCBpc1VSTEluT25saW5lV2hp
dGVsaXN0KGNvbnN0IEtVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25saW5lIHdoaXRl
bGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3MgVVJMIGFuZCB0
aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCisgICAgdm9pZCBz
ZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCk7Cisg
ICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b25saW5lV2hpdGVsaXN0OyB9CisgICAgYm9vbCBpc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0
IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBlbnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0IHRoYXQgaGFz
IHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcmVzb3VyY2UncyBVUkwgYW5kIHRoYXQgaXMgYSBwcmVm
aXggbWF0Y2ggZm9yIHRoZSByZXNvdXJjZSdzIFVSTC4KIAogICAgIHZvaWQgc2V0RmFsbGJhY2tV
UkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJik7CiAgICAgY29uc3QgRmFsbGJhY2tVUkxWZWN0
b3ImIGZhbGxiYWNrVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fZmFsbGJhY2tVUkxzOyB9Ci0gICAg
Ym9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgS1VSTCYsIEtVUkwqIGZhbGxi
YWNrVVJMID0gMCk7CisgICAgYm9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3Qg
VVJMJiwgVVJMKiBmYWxsYmFja1VSTCA9IDApOwogICAgIAogI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGR1bXAoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbV9tYW5pZmVzdDsKIAogICAgIGJvb2wgbV9hbGxvd0FsbE5ldHdvcmtS
ZXF1ZXN0czsKLSAgICBWZWN0b3I8S1VSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CisgICAgVmVjdG9y
PFVSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3IgbV9mYWxsYmFj
a1VSTHM7CiAKICAgICAvLyBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzb3VyY2VzIGJlbG9uZ2lu
ZyB0byB0aGlzIEFwcGxpY2F0aW9uIENhY2hlIGluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRl
eCBkNmJmOTg3MGM0YjNiNDI1OTBjOWRjOTY1MzM1MGIyZDQ4ZTMyZWI5Li41OWIzYmRiYzdhNmE2
NTllMWE1NGY5MTM0N2M3MjBjZmVhNmJkM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNTYsNyAr
NTYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBib29sIGlzQ29w
eSkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IFVS
TCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5KQogICAgIDogbV9tYW5pZmVzdFVSTChtYW5pZmVz
dFVSTCkKICAgICAsIG1fb3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFuaWZlc3RVUkwp
KQogICAgICwgbV91cGRhdGVTdGF0dXMoSWRsZSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBBcHBsaWNh
dGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZQogICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRU
UE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwo
cmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJs
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdQog
ICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVz
dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwocmVxdWVzdC51cmwoKSk7Cisg
ICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTEz
NCw3ICsxMzQsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZh
bGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdQogICAgIHJldHVybiAwOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBj
b25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdFVSTCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVUkwp
CiB7CiAgICAgQVNTRVJUKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpOwogICAgIApAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBLVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJMKTsKKyAgICBVUkwgbWFu
aWZlc3RVUkwocGFzc2VkTWFuaWZlc3RVUkwpOwogICAgIGlmIChtYW5pZmVzdFVSTC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSkKICAgICAgICAgbWFuaWZlc3RVUkwucmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCk7CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdAog
ICAgICAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdyb3VwKCktPnVwZGF0ZShmcmFtZSwgQXBw
bGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBmcm9tIGNhY2hl
LCBzbyB0aGUgY2FjaGUgbXVzdCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBpdCBhcyBmb3Jl
aWduLgotICAgICAgICAgICAgS1VSTCByZXNvdXJjZVVSTChkb2N1bWVudExvYWRlci0+cmVzcG9u
c2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgcmVzb3VyY2VVUkwoZG9jdW1lbnRMb2FkZXItPnJl
c3BvbnNlVVJMKCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlVVJMLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQogICAgICAgICAgICAgICAgIHJlc291cmNlVVJMLnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcigpOwogICAgICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJj
ZSA9IG1haW5SZXNvdXJjZUNhY2hlLT5yZXNvdXJjZUZvclVSTChyZXNvdXJjZVVSTCk7CkBAIC0y
MzUsNyArMjM1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlzaGVkTG9hZGlu
Z01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVChtX3Bl
bmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMobG9hZGVyKSk7CiAgICAgQVNTRVJU
KG1fY29tcGxldGlvblR5cGUgPT0gTm9uZSB8fCBtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7
Ci0gICAgS1VSTCB1cmwgPSBsb2FkZXItPnVybCgpOworICAgIFVSTCB1cmwgPSBsb2FkZXItPnVy
bCgpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5y
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjphYm9ydChGcmFtZSogZnJhbWUpCiAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpCitQYXNzUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0
IFVSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNl
KQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgbV9mcmFtZS0+bG9h
ZGVyKCkuYXBwbHlVc2VyQWdlbnQocmVxdWVzdCk7CkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXMKICAgICAKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3VycmVudEhh
bmRsZSk7CiAKLSAgICBLVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAg
ICBVUkwgdXJsKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKICAgICAKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgog
ICAgIEFTU0VSVChoYW5kbGUgPT0gbV9jdXJyZW50SGFuZGxlKTsKIAogICAgIHVuc2lnbmVkIHR5
cGUgPSBtX2N1cnJlbnRSZXNvdXJjZSA/IG1fY3VycmVudFJlc291cmNlLT50eXBlKCkgOiBtX3Bl
bmRpbmdFbnRyaWVzLmdldChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKLSAgICBLVVJM
IHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICBVUkwgdXJsKGhhbmRsZS0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtMTAyNCw3
ICsxMDI0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZ0VudHJ5
KCkKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKLSAgICBtX2N1cnJlbnRI
YW5kbGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShLVVJMKFBhcnNlZFVSTFN0cmluZywgaXQtPmtl
eSksIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVSTChpdC0+a2V5
KSA6IDApOworICAgIG1fY3VycmVudEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFuZGxlKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdlc3RDYWNoZS0+
cmVzb3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpCkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWluUmVzb3VyY2Vz
KCkKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25zdCBTdHJpbmcmIHVy
bCwgdW5zaWduZWQgdHlwZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZUJlaW5nVXBkYXRlZCk7Ci0g
ICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKTsKICAgICAKICAgICAvLyBEb24ndCBhZGQgdGhlIFVSTCBpZiB3ZSBhbHJl
YWR5IGhhdmUgYW4gbWFzdGVyIHJlc291cmNlIGluIHRoZSBjYWNoZQogICAgIC8vIChpLmUuLCB0
aGUgbWFpbiByZXNvdXJjZSBmaW5pc2hlZCBsb2FkaW5nIGJlZm9yZSB0aGUgbWFuaWZlc3QpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5oCmluZGV4IDFhNGFmODYwNTFjNjQ2ZDU4ZDJmOWEwZThhMTZjNjMwZTU4N2MxYWQu
LjMyNzA4NDlkOGVlMDE5MTU0YTJkNWI5ZjBlZGNhZGE1N2UwYWQzZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgQXBwbGljYXRpb25DYWNoZUdyb3VwX2gKIAogI2lu
Y2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTUzLDcgKzUz
LDcgQEAgZW51bSBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHsKIGNsYXNzIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCA6IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShBcHBsaWNhdGlvbkNhY2hlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAgICAKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAgIAogICAgIH5B
cHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7IElk
bGUsIENoZWNraW5nLCBEb3dubG9hZGluZyB9OwpAQCAtNjEsMTAgKzYxLDEwIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogY2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyBBcHBsaWNhdGlv
bkNhY2hlKiBmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBzZWxlY3RDYWNoZShG
cmFtZSosIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBzdGF0aWMgdm9pZCBzZWxlY3RD
YWNoZShGcmFtZSosIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOwogICAgIHN0YXRpYyB2b2lkIHNl
bGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKik7CiAgICAgCi0gICAgY29uc3QgS1VS
TCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0VVJMOyB9CisgICAgY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuaWZlc3RVUkw7IH0KICAg
ICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW4u
Z2V0KCk7IH0KICAgICBVcGRhdGVTdGF0dXMgdXBkYXRlU3RhdHVzKCkgY29uc3QgeyByZXR1cm4g
bV91cGRhdGVTdGF0dXM7IH0KICAgICB2b2lkIHNldFVwZGF0ZVN0YXR1cyhVcGRhdGVTdGF0dXMg
c3RhdHVzKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY2hlZHVs
ZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogCi0gICAgUGFzc1JlZlB0cjxSZXNv
dXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOworICAgIFBhc3NSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFVSTCYsIEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwogCiAgICAgLy8gRm9yIG5vcm1h
bCByZXNvdXJjZSBsb2FkaW5nLCBXZWJLaXQgY2xpZW50IGlzIGFza2VkIGFib3V0IGVhY2ggcmVz
b3VyY2UgaW5kaXZpZHVhbGx5LiBTaW5jZSBhcHBsaWNhdGlvbiBjYWNoZSBkb2VzIG5vdCBiZWxv
bmcgdG8gYW55IHBhcnRpY3VsYXIgZG9jdW1lbnQsCiAgICAgLy8gdGhlIGV4aXN0aW5nIGNsaWVu
dCBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNsaWVudCB0aGF0
IGVuYWJsZXMgYXBwbGljYXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2UgY3JlZGVudGlh
bCBzdG9yYWdlLgpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBz
dG9wTG9hZGluZygpOwogICAgIAotICAgIEtVUkwgbV9tYW5pZmVzdFVSTDsKKyAgICBVUkwgbV9t
YW5pZmVzdFVSTDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2luOwogICAgIFVw
ZGF0ZVN0YXR1cyBtX3VwZGF0ZVN0YXR1czsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDRjNjk4
MDk5MzY5NGJiYTA1YjJhMDVmNTY3OTQ1NTc4MmIzNWJhZTIuLjQzM2JmMjY5M2VhNjI2YjcwNDU3
MWM3NDk0N2FjMDdmNTM1NjYxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdCgpCiAg
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTCht
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpCit2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25zdCBVUkwm
IG1hbmlmZXN0VVJMKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUo
bV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgbWFuaWZlc3RVUkwpOwogfQpAQCAtODYsOCArODYs
OCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRNYWluUmVzb3VyY2UoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdWJzdAogICAgICAgICAgICAgc3Vic3RpdHV0ZURhdGEg
PSBTdWJzdGl0dXRlRGF0YShyZXNvdXJjZS0+ZGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVz
cG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEtVUkwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS1VSTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVVJMKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1
YnN0aXR1dGVEYXRhOjpTaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpmaW5p
c2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgICAgICBncm91cC0+ZmluaXNoZWRMb2FkaW5n
TWFpblJlc291cmNlKG1fZG9jdW1lbnRMb2FkZXIpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjptYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKQorYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIG9yaWdpbmFsVVJMKQogewogICAg
IGlmICghaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMDMsNyArMzAzLDcgQEAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hlSW5mbyBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6YXBwbGljYXRpb25DYWNoZUluZm8oKQogewogICAgIEFwcGxpY2F0
aW9uQ2FjaGUqIGNhY2hlID0gYXBwbGljYXRpb25DYWNoZSgpOwogICAgIGlmICghY2FjaGUgfHwg
IWNhY2hlLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIHJldHVybiBDYWNoZUluZm8oS1VSTCgpLCAw
LCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIENhY2hlSW5mbyhVUkwoKSwgMCwgMCwgMCk7CiAgIAog
ICAgIC8vIEZJWE1FOiBBZGQgIkNyZWF0aW9uIFRpbWUiIGFuZCAiVXBkYXRlIFRpbWUiIHRvIEFw
cGxpY2F0aW9uIENhY2hlcy4KICAgICByZXR1cm4gQ2FjaGVJbmZvKGNhY2hlLT5tYW5pZmVzdFJl
c291cmNlKCktPnVybCgpLCAwLCAwLCBjYWNoZS0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKTsK
QEAgLTM3OCw3ICszNzgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpnZXRBcHBsaWNh
dGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcQogICAgIGlmICghQXBw
bGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgZmFsbGJhY2tVUkw7CisgICAgVVJMIGZhbGxiYWNr
VVJMOwogICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1ZXN0LnVybCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2FjaGUtPnVybE1hdGNoZXNGYWxs
YmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpLCAmZmFsbGJhY2tVUkwpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRl
eCA2NTIwY2NjNDgwM2ZmOTA5NDVlZGUzZjQ2MGU3NDE2ZGY5ZDBhNDA3Li5mNmUwZDBiOTQxZTJm
YTIzYTI1MjZmMmY3YzE2OWE0OWQ4NTVkZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMzEsNyArMzEsNyBA
QAogI2lmbmRlZiBBcHBsaWNhdGlvbkNhY2hlSG9zdF9oCiAjZGVmaW5lIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KQEAgLTc4LDE5ICs3OCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBzdHJ1Y3QgQ2FjaGVJbmZvIHsKLSAgICAgICAg
ICAgIENhY2hlSW5mbyhjb25zdCBLVVJMJiBtYW5pZmVzdCwgZG91YmxlIGNyZWF0aW9uVGltZSwg
ZG91YmxlIHVwZGF0ZVRpbWUsIGxvbmcgbG9uZyBzaXplKQorICAgICAgICAgICAgQ2FjaGVJbmZv
KGNvbnN0IFVSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGRvdWJsZSB1cGRhdGVU
aW1lLCBsb25nIGxvbmcgc2l6ZSkKICAgICAgICAgICAgICAgICA6IG1fbWFuaWZlc3QobWFuaWZl
c3QpCiAgICAgICAgICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShjcmVhdGlvblRpbWUpCiAgICAg
ICAgICAgICAgICAgLCBtX3VwZGF0ZVRpbWUodXBkYXRlVGltZSkKICAgICAgICAgICAgICAgICAs
IG1fc2l6ZShzaXplKSB7IH0KLSAgICAgICAgICAgIEtVUkwgbV9tYW5pZmVzdDsKKyAgICAgICAg
ICAgIFVSTCBtX21hbmlmZXN0OwogICAgICAgICAgICAgZG91YmxlIG1fY3JlYXRpb25UaW1lOwog
ICAgICAgICAgICAgZG91YmxlIG1fdXBkYXRlVGltZTsKICAgICAgICAgICAgIGxvbmcgbG9uZyBt
X3NpemU7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0IFJlc291cmNlSW5mbyB7Ci0gICAg
ICAgICAgICBSZXNvdXJjZUluZm8oY29uc3QgS1VSTCYgcmVzb3VyY2UsIGJvb2wgaXNNYXN0ZXIs
IGJvb2wgaXNNYW5pZmVzdCwgYm9vbCBpc0ZhbGxiYWNrLCBib29sIGlzRm9yZWlnbiwgYm9vbCBp
c0V4cGxpY2l0LCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIFJlc291cmNlSW5mbyhjb25z
dCBVUkwmIHJlc291cmNlLCBib29sIGlzTWFzdGVyLCBib29sIGlzTWFuaWZlc3QsIGJvb2wgaXNG
YWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJvb2wgaXNFeHBsaWNpdCwgbG9uZyBsb25nIHNpemUp
CiAgICAgICAgICAgICAgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQogICAgICAgICAgICAgICAg
ICwgbV9pc01hc3Rlcihpc01hc3RlcikKICAgICAgICAgICAgICAgICAsIG1faXNNYW5pZmVzdChp
c01hbmlmZXN0KQpAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICAgICAgLCBtX2lzRm9yZWlnbihpc0ZvcmVpZ24pCiAgICAgICAgICAgICAgICAgLCBtX2lz
RXhwbGljaXQoaXNFeHBsaWNpdCkKICAgICAgICAgICAgICAgICAsIG1fc2l6ZShzaXplKSB7IH0K
LSAgICAgICAgICAgIEtVUkwgbV9yZXNvdXJjZTsKKyAgICAgICAgICAgIFVSTCBtX3Jlc291cmNl
OwogICAgICAgICAgICAgYm9vbCBtX2lzTWFzdGVyOwogICAgICAgICAgICAgYm9vbCBtX2lzTWFu
aWZlc3Q7CiAgICAgICAgICAgICBib29sIG1faXNGYWxsYmFjazsKQEAgLTExNCw3ICsxMTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5BcHBsaWNhdGlvbkNhY2hlSG9zdCgpOwog
CiAgICAgICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKTsKLSAgICAgICAgdm9p
ZCBzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCk7CisgICAg
ICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7
CiAKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0Jiwg
U3Vic3RpdHV0ZURhdGEmKTsKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JS
ZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAtMTIzLDcgKzEy
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdN
YWluUmVzb3VyY2UoKTsKICAgICAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJlc291cmNlKCk7
CiAKLSAgICAgICAgYm9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKTsKKyAgICAgICAgYm9vbCBtYXli
ZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFVS
TCYgb3JpZ2luYWxVUkwpOwogICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJl
Y3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShSZXNvdXJj
ZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgYm9vbCBtYXliZUxv
YWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCA5OTc2NmUzYTY2YmQzNmViNDJmZWQyYTkyNjlk
MzRiMDY2MTk0ZDdmLi40ZmNiOGYyZjEwZmE0NjA2NDI4ZjgwOWYxNDU1ZWEzYWUwZWU1ZTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291
cmNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVu
c2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2ln
bmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0YSkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaAppbmRl
eCBkMWRmZWE0OGNkZmE4ZTU3ZDdmMjAxNzY0ZTllZGNiMjYyZjkwNjZjLi5kOGQzZjFhYTA5NGFk
MjBkZDkyYjhjZjAzZDEzMjI2NGEwMmY5ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCkBAIC00MCw3
ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAgICB9OwogICAg
ICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IGNy
ZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1
bnNpZ25lZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29u
c3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NFUlQoIXVybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGJ1ZmZlciwgcGF0aCkp
OwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZhdGU6Ci0gICAg
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEtVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBVUkwmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdW5zaWduZWQgbV90eXBlOwogICAgIHVu
c2lnbmVkIG1fc3RvcmFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDNjNzMxMjllYjk5
YzJhZjViMTdjM2MzNjgxOTgwOTA4YWU4Yzk4YS4uM2M2MjRkZjQ0N2JmZTFhYTMyNTk3MTFmZGJh
MmNlYzkyNDIyZDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rpb24uaCIKQEAg
LTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVjb3JkPiBtX3JlY29yZHM7CiB9
OwogCi1zdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2goY29uc3QgS1VSTCYgdXJsKQorc3RhdGlj
IHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVuc2lnbmVkIGhv
c3RTdGFydCA9IHVybC5ob3N0U3RhcnQoKTsKICAgICB1bnNpZ25lZCBob3N0RW5kID0gdXJsLmhv
c3RFbmQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2go
Y29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBBbHJlYWR5SGFzaGVkOjphdm9pZERlbGV0ZWRW
YWx1ZShTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVybFN0cmluZy5j
aGFyYWN0ZXJzMTYoKSArIGhvc3RTdGFydCwgaG9zdEVuZCAtIGhvc3RTdGFydCkpOwogfQogCi1B
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGVH
cm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwpCiB7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNP
cGVuKCkpCkBAIC0xMzUsNyArMTM1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWYKICAgICBy
ZXR1cm4gZ3JvdXA7CiB9ICAgIAogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0
VVJMKQorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIEFTU0VS
VCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCkBAIC0xNjAsNyArMTYw
LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Zmlu
ZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICByZXR1cm4gZ3JvdXA7CiB9CiAKLUFw
cGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZpbmRJbk1lbW9y
eUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CitBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlDYWNoZUdyb3Vw
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2FjaGVzSW5N
ZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKIH0KQEAgLTE4OSw3ICsxODksNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKICAgICAgICAgbV9j
YWNoZUhvc3RTZXQuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50NjQoMCkpKTsKIH0gICAgCiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSk7CiAgICAgCkBAIC0yMjksNyArMjI5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJMJiB1cmwKICAg
ICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAo
KSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgbWFuaWZlc3RVUkwgPSBLVVJMKFBh
cnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBVUkwg
bWFuaWZlc3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4
dCgxKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVzSW5NZW1vcnkuY29udGFpbnMobWFuaWZlc3RV
UkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjYsNyArMjY2LDcgQEAgQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChj
b25zdCBLVVJMJiB1cmwKICAgICByZXR1cm4gMDsKIH0KIAotQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0
IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NF
UlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmYWxsYmFja0Nh
Y2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRl
KCkpOwogCiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdl
c3RDYWNoZSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAgICAgICAgICAg
VVJMIGZhbGxiYWNrVVJMOwogICAgICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hp
dGVsaXN0KHVybCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAo
IWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UodXJsLCAmZmFsbGJhY2tVUkwpKQpA
QCAtMjk5LDcgKzI5OSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLCiAgICAgCiAgICAgaW50
IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkpID09IFNRTFJl
c3VsdFJvdykgewotICAgICAgICBLVVJMIG1hbmlmZXN0VVJMID0gS1VSTChQYXJzZWRVUkxTdHJp
bmcsIHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1hbmlmZXN0VVJM
ID0gVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAg
ICAgICAgIGlmIChtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJMKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25z
dCBLCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKICAgICAgICAgUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCi0gICAgICAgIEtV
UkwgZmFsbGJhY2tVUkw7CisgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAgICAgaWYgKGNh
Y2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNlKHVybCwgJmZh
bGxiYWNrVVJMKSkKQEAgLTcyOSw3ICs3MjksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9yYWdlSURKbwog
ICAgIH0KICAgICAKICAgICAvLyBTdG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAotICAgIGNvbnN0
IFZlY3RvcjxLVVJMPiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdoaXRlbGlzdCgp
OworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QgPSBjYWNoZS0+b25saW5l
V2hpdGVsaXN0KCk7CiAgICAgewogICAgICAgICBzaXplX3Qgd2hpdGVsaXN0U2l6ZSA9IG9ubGlu
ZVdoaXRlbGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVs
aXN0U2l6ZTsgKytpKSB7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBQYXNzUmVmUHRyPEFwcGxpY2F0
aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5zaWduZWQgc3Rv
cmFnZQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGNhY2hlU3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgdXJsKFBhcnNlZFVS
TFN0cmluZywgY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAgICAgIFVSTCB1
cmwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKTsKICAg
ICAgICAgCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVtZW50LmdldENv
bHVtbkludCgxKTsKIApAQCAtMTE1Niw5ICsxMTU2LDkgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlv
bkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3Jh
Z2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgd2hpdGVsaXN0U3RhdGVtZW50LmJpbmRJbnQ2NCgx
LCBzdG9yYWdlSUQpOwogICAgIAotICAgIFZlY3RvcjxLVVJMPiB3aGl0ZWxpc3Q7CisgICAgVmVj
dG9yPFVSTD4gd2hpdGVsaXN0OwogICAgIHdoaWxlICgocmVzdWx0ID0gd2hpdGVsaXN0U3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSAKLSAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChL
VVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVtblRleHQoMCkp
KTsKKyAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5nLCB3aGl0ZWxp
c3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxS
ZXN1bHREb25lKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNhY2hlIG9ubGlu
ZSB3aGl0ZWxpc3QsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpA
QCAtMTE4OCw3ICsxMTg4LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAgICAKICAgICBG
YWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBmYWxs
YmFja1N0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgCi0gICAgICAgIGZhbGxiYWNr
VVJMcy5hcHBlbmQobWFrZV9wYWlyKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDApKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3Rh
dGVtZW50LmdldENvbHVtblRleHQoMSkpKSk7CisgICAgICAgIGZhbGxiYWNrVVJMcy5hcHBlbmQo
bWFrZV9wYWlyKFVSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3RhdGVtZW50LmdldENvbHVt
blRleHQoMCkpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVudC5nZXRDb2x1
bW5UZXh0KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKQogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGZhbGxiYWNrIFVSTHMsIGVycm9yIFwiJXNcIiIs
IG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5T2ZDYWNoZShjb25zdCBTdHJpbmcmIGNh
Y2hlRGlyZWN0b3J5LCBBcHAKICAgICByZXR1cm4gY29weVN0b3JhZ2Uuc3RvcmVOZXdlc3RDYWNo
ZShncm91cENvcHkuZ2V0KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpt
YW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxzKQorYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxVUkw+KiB1cmxzKQogewogICAgIEFTU0VSVCh1cmxz
KTsKICAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJMPiogdXJscykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUgKHNlbGVjdFVSTHMuc3RlcCgpID09
IFNRTFJlc3VsdFJvdykKLSAgICAgICAgdXJscy0+YXBwZW5kKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgdXJscy0+YXBwZW5kKFVS
TChQYXJzZWRVUkxTdHJpbmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBsb25nIGxvbmcgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQogCiB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiA+JiBvcmlnaW5zKQogewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAgIFZlY3RvcjxV
Ukw+IHVybHM7CiAgICAgaWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7CiAgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IGFmNjQzN2U4NDNiODYyOGYw
NDNmYWFmY2IzNzljYjNjMDM2ZTYwOWQuLmU0YjMxMDQ0ZWRiYzI5ZGI3ZTAyMDUyMDhmZGZlZTBm
NDY0MjE3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFwcGxp
Y2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKLWNsYXNzIEtV
Ukw7CitjbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpAQCAtNjksMTEg
KzY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9yT3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CiAgICAgYm9vbCBjaGVja09yaWdp
blF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIEFwcGxpY2F0aW9uQ2FjaGUqIG9sZENhY2hl
LCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNoZSwgaW50NjRfdCYgdG90YWxTcGFjZU5lZWRlZCk7
CiAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VS
TCYpOyAvLyBDYWNoZSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgotICAgIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtVUkwmKTsgLy8g
Q2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBm
cm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgorICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCog
Y2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBhIG1haW4gcmVz
b3VyY2UgZnJvbS4KKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNrQ2FjaGVHcm91
cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0
byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgogCi0g
ICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtV
UkwmIG1hbmlmZXN0VVJMKTsKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9y
eUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0OworICAgIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9yeUNhY2hlR3JvdXAo
Y29uc3QgVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9pZCBjYWNoZUdyb3VwRGVzdHJv
eWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQgY2FjaGVHcm91cE1hZGVPYnNv
bGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAgCkBAIC04OSw3ICs4OSw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgYm9vbCBzdG9yZUNvcHlPZkNhY2hlKGNvbnN0IFN0
cmluZyYgY2FjaGVEaXJlY3RvcnksIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Kik7CiAKLSAgICBib29s
IG1hbmlmZXN0VVJMcyhWZWN0b3I8S1VSTD4qIHVybHMpOworICAgIGJvb2wgbWFuaWZlc3RVUkxz
KFZlY3RvcjxVUkw+KiB1cmxzKTsKICAgICBib29sIGNhY2hlR3JvdXBTaXplKGNvbnN0IFN0cmlu
ZyYgbWFuaWZlc3RVUkwsIGludDY0X3QqIHNpemUpOwogICAgIGJvb2wgZGVsZXRlQ2FjaGVHcm91
cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKTsKICAgICB2b2lkIHZhY3V1bURhdGFiYXNlRmls
ZSgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UoKTsKICAgICBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IGxvYWRD
YWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwotICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogbG9h
ZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOworICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7CiAgICAgCiAg
ICAgdHlwZWRlZiBTdG9yYWdlSURKb3VybmFsPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gUmVz
b3VyY2VTdG9yYWdlSURKb3VybmFsOwogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91cm5hbDxBcHBs
aWNhdGlvbkNhY2hlR3JvdXA+IEdyb3VwU3RvcmFnZUlESm91cm5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IDk1
ODcxMGNkODRiNjdlMTIxMTRkZTBkNGE5ODFiZDNhODk1OGFmMjYuLmIwNTRjZDI1NWE1M2IyMTU3
YTMwZWI3YWJjNTkyMTk5MDdiMWEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApAQCAtNDEsNyArNDEsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwgb25jZSA8aHR0
cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgogY2xhc3MgRE9NQXBwbGljYXRpb25D
YWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPERPTUFwcGxp
Y2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIERP
TVdpbmRvd1Byb3BlcnR5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
TWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGM5ODVhOWMyYWI0NzE0NmRlNDkxNTQzMjkyYjMxMDdk
OGYzODZiZmYuLmJiMWYwMzkxNmFlNDJjYjkxYzUwZjI2MzNhNWQ1MDE3ZGUxMDI5M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcApA
QCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk1hbmlmZXN0
UGFyc2VyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVj
b2Rlci5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rl
ck5hbWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNrLCBPbmxpbmVX
aGl0ZWxpc3QsIFVua25vd24gfTsKICAgICAKLWJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJM
JiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmIG1h
bmlmZXN0KQorYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGNvbnN0
IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKIHsKICAgICBBU1NF
UlQobWFuaWZlc3QuZXhwbGljaXRVUkxzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0
Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5pc0VtcHR5KCkpOwpAQCAtMTE0LDcgKzExNCw3IEBAIGJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIEtVUkwgdXJsKG1hbmlmZXN0VVJMLCBTdHJpbmcobGluZS5j
aGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOworICAgICAgICAgICAgVVJMIHVy
bChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0
ZXJzKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgcGFyc2VN
YW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxl
bmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIEtVUkwgbmFtZXNwYWNlVVJMKG1hbmlmZXN0VVJMLCBT
dHJpbmcobGluZS5jaGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOworICAgICAg
ICAgICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVy
cygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgICAgIGlmICghbmFtZXNwYWNl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
IChuYW1lc3BhY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCkBAIC0xNjQsNyArMTY0LDcg
QEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmUKICAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZUVu
ZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykgCiAgICAgICAgICAgICAgICAgcCsrOwogCi0g
ICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMKG1hbmlmZXN0VVJMLCBTdHJpbmcoZmFsbGJhY2tT
dGFydCwgcCAtIGZhbGxiYWNrU3RhcnQpKTsKKyAgICAgICAgICAgIFVSTCBmYWxsYmFja1VSTCht
YW5pZmVzdFVSTCwgU3RyaW5nKGZhbGxiYWNrU3RhcnQsIHAgLSBmYWxsYmFja1N0YXJ0KSk7CiAg
ICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmIChmYWxsYmFja1VSTC5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2Vy
LmgKaW5kZXggMzliNzYwZDM2MjNhMjc0OTFjZGZkZTAzNmQyODcwZjA4MTk1ZTJlZi4uMjgzMTVk
ZGU2OGZlMWFlNzhjNjg2NzBmOTFhM2FjYzJhYmUyYzdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAgLTMwLDE2ICszMCwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsK
IAogICAgIHN0cnVjdCBNYW5pZmVzdCB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiBvbmxpbmVXaGl0
ZWxpc3RlZFVSTHM7CisgICAgICAgIFZlY3RvcjxVUkw+IG9ubGluZVdoaXRlbGlzdGVkVVJMczsK
ICAgICAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICAgICAgRmFsbGJhY2tV
UkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgICAgICBib29sIGFsbG93QWxsTmV0d29ya1JlcXVl
c3RzOyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiAgICAgfTsKIAotICAg
IGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmKTsKKyAgICBib29sIHBhcnNlTWFuaWZlc3QoY29u
c3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZl
c3QmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9B
cmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
RmFjdG9yeS5jcHAKaW5kZXggMTRjODFmZGI3YTkzNTkwZTFkMTlmMWUyYzEwY2ViMGJmMTg0NDgz
MC4uZDc3NWJjOTA3NjA5ZmFiYjgyYWM3NGM1MDYwYzJkNGFlMzk2ZTJjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDUsMTIg
KzQ1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBQYXNzUmVmUHRyPEFy
Y2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIq
KTsKK3R5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihj
b25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiBBcmNoaXZlTUlNRVR5cGVzTWFw
OwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFzc2VzIHJldHVy
biBQYXNzUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRoaXMg
YWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBlLgot
dGVtcGxhdGUgPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2
ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGJ1
ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBQYXNzUmVmUHRy
PEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZm
ZXIqIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUodXJsLCBidWZm
ZXIpOwogfQpAQCAtODIsNyArODIsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVN
aW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWltZVR5cGUuaXNF
bXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7CiB9CiAKLVBh
c3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmws
IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1Bhc3NSZWZQdHI8
QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgU2hhcmVkQnVm
ZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIFJhd0RhdGFDcmVhdGlv
bkZ1bmN0aW9uKiBmdW5jdGlvbiA9IG1pbWVUeXBlLmlzRW1wdHkoKSA/IDAgOiBhcmNoaXZlTUlN
RVR5cGVzKCkuZ2V0KG1pbWVUeXBlKTsKICAgICByZXR1cm4gZnVuY3Rpb24gPyBmdW5jdGlvbih1
cmwsIGRhdGEpIDogUGFzc1JlZlB0cjxBcmNoaXZlPigwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IGQwNDA1Y2E1MmM4Y2FiYTFiNDNj
ZTAwOGZhZDVmOGIwYzY0OGZhYWYuLjU0YjY0ZGQ3NzdjZDU5MGU3YzFjMDVlZWI2YmI0YzU0ZTlm
ZjY3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVG
YWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3Rv
cnkuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBBcmNoaXZl
RmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTWltZVR5cGUoY29u
c3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0
IEtVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZm
ZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lz
dGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCA3ZGVkYzkzNGFlNjZhOTkw
NGVlY2FjMGE1M2Q1NmMyZDAwNGM0YzVmLi4yMTAwMGM4MjgzZjIyOWVlMjMyNDI5MDU4NDUxOWNm
MmE2YmQxMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hp
dmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFy
Y2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0YSkKICAgICAsIG1f
bWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5jb2RpbmcpCkBA
IC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZShQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
NTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNl
OjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEsIHVybCwgbWltZVR5cGUsIHRleHRFbmNvZGluZywg
ZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitQYXNzUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKGRhdGEsIHVybCwgcmVzcG9uc2UubWlt
ZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwgcmVzcG9uc2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2Uu
aAppbmRleCA5N2Q2ZTMyZjdkMjA1YzJjNjRlYzdhMzdkNWU5OWQ1YmE4MTBjMTZhLi45YjRiMDFi
OWM5ZjM3YmMwYjQ3ODYxOGVmZjdhYTlmOTE5MTAyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1YmxpYyBTdWJzdGl0
dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgS1VSTCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IEtVUkwmLAorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAKQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0KIAogcHJpdmF0
ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
QXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcg
bV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwCmluZGV4IGFhNGE4NzBmNTdhZDgyZjY0YWZhOTIyNWEyYWViYjY0Njk2MjhiZWEuLjY0ZWMy
OGRhNWNkZDg4Y2ZmNWYyN2JhNGQ5NzUyYzk0MGRmYWUzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwCkBAIC02OCwxMSArNjgsMTEgQEAgdm9pZCBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjph
ZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UKICAgICBpZiAo
IXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXNv
dXJjZS0+dXJsKCk7IC8vIGdldCBiZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3aGljaCBzZXRz
IGl0IHRvIDApCisgICAgY29uc3QgVVJMJiB1cmwgPSByZXNvdXJjZS0+dXJsKCk7IC8vIGdldCBi
ZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3aGljaCBzZXRzIGl0IHRvIDApCiAgICAgbV9zdWJy
ZXNvdXJjZXMuc2V0KHVybCwgcmVzb3VyY2UpOwogfQogCi1BcmNoaXZlUmVzb3VyY2UqIEFyY2hp
dmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBLVVJMJiB1
cmwpCitBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVS
ZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBcmNoaXZlUmVzb3VyY2UqIHJl
c291cmNlID0gbV9zdWJyZXNvdXJjZXMuZ2V0KHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSkKQEAg
LTgxLDcgKzgxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
OjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYgdXIKICAgICByZXR1cm4gcmVzb3Vy
Y2U7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbjo6
cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBLVVJMJiB1
cmwpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OnBvcFN1
YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUgPSBtX3N1YmZyYW1lcy50YWtlKGZyYW1lTmFt
ZSk7CiAgICAgaWYgKGFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXggMTVlZjhiY2M5YWY0
YWRjNGZmM2M1MWU0ZTlhMmIyNmJkMzA5MjVjNy4uNWFlNGIyZDQwNWY4N2JiOGEwMGQwZTMwYzBl
NWE5YTliN2NhNWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzEsNyArMzEsNyBAQAogCiAj
aW5jbHVkZSAiQXJjaGl2ZS5oIgogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPik7CiAg
ICAgdm9pZCBhZGRBbGxSZXNvdXJjZXMoQXJjaGl2ZSopOwogICAgIAotICAgIEFyY2hpdmVSZXNv
dXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKTsKLSAgICBQYXNzUmVmUHRy
PEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgS1VSTCYpOworICAgIEFyY2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNv
bnN0IFVSTCYpOworICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wU3ViZnJhbWVBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAgICAKIHByaXZhdGU6ICAgIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IG1fc3VicmVzb3Vy
Y2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAppbmRleCA0MTAxYWRjYjkyYzllYTVmYzA2ZTkwZGQ4YWY2OTllOTBiNDky
NmE5Li5mYmU5ZTMwZTg1NDI1Zjc0YWM4NGY2YmM5ZjU2ZDE5YWEyMDA4Y2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklj
b25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIK
KyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjI3LDcgKzIyNyw3IEBAIFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJjZShD
RkRpY3Rpb25hcnlSZWYgZGljCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVzb3VyY2VSZXNw
b25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCByZXNvdXJjZVJl
c3BvbnNlVmVyc2lvbik7CiAgICAgfQogICAgIAotICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6
OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEocmVzb3VyY2VEYXRhKSwgS1VSTChLVVJM
KCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVzcG9uc2UpOwor
ICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBDRkRh
dGEocmVzb3VyY2VEYXRhKSwgVVJMKFVSTCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5n
LCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQpAQCAtMjU1LDEwICsyNTUsMTAgQEAgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1JlZlB0
cjxBcmNoaXZlUmVzb3VyY2UKIAogUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lX
ZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJldHVybiBjcmVh
dGUoS1VSTCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRhKTsKIH0KIAot
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29u
c3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK1Bhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1ZmZlciogZGF0
YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJv
bSByYXcgZGF0YSIpOwogICAgIApAQCAtNTAxLDE4ICs1MDEsMTggQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3Bv
bnNlKCk7Ci0gICAgS1VSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOworICAgIFVSTCBy
ZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwogICAgIAogICAgIC8vIGl0J3MgcG9zc2libGUg
dG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKLSAgICAgICAgcmVz
cG9uc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAg
IHJlc3BvbnNlVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAg
ICAgIAogICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIobWFya3VwU3RyaW5nKSwgcmVzcG9uc2VVUkwsIHJl
c3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIsIGZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKTsK
IAogICAgIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4gc3ViZnJhbWVBcmNo
aXZlczsKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4gc3VicmVzb3Vy
Y2VzOwotICAgIEhhc2hTZXQ8S1VSTD4gdW5pcXVlU3VicmVzb3VyY2VzOworICAgIEhhc2hTZXQ8
VVJMPiB1bmlxdWVTdWJyZXNvdXJjZXM7CiAKICAgICBzaXplX3Qgbm9kZXNTaXplID0gbm9kZXMu
c2l6ZSgpOyAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzU2l6ZTsgKytpKSB7
CkBAIC01MzAsMTMgKzUzMCwxMyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlZCB0byBhcmNoaXZlIHN1
YmZyYW1lICVzIiwgY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExpc3RIYXNoU2V0PEtV
Ukw+IHN1YnJlc291cmNlVVJMczsKKyAgICAgICAgICAgIExpc3RIYXNoU2V0PFVSTD4gc3VicmVz
b3VyY2VVUkxzOwogICAgICAgICAgICAgbm9kZS0+Z2V0U3VicmVzb3VyY2VVUkxzKHN1YnJlc291
cmNlVVJMcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwotICAgICAgICAg
ICAgTGlzdEhhc2hTZXQ8S1VSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJyZXNvdXJjZVVSTHMu
ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PEtVUkw+OjppdGVyYXRvciBpdGVy
ID0gc3VicmVzb3VyY2VVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgc3VicmVzb3VyY2VVUkwgPSAqaXRlcjsKKyAgICAg
ICAgICAgIExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJyZXNvdXJjZVVS
THMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0
ZXIgPSBzdWJyZXNvdXJjZVVSTHMuYmVnaW4oKTsgaXRlciAhPSBpdGVyRW5kOyArK2l0ZXIpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMID0gKml0ZXI7CiAgICAg
ICAgICAgICAgICAgaWYgKHVuaXF1ZVN1YnJlc291cmNlcy5jb250YWlucyhzdWJyZXNvdXJjZVVS
TCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01NzMsNyArNTczLDcgQEAg
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgY29uc3QgU3RyaW5nJiBpY29uVVJMID0g
aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChyZXNwb25zZVVSTCk7
CiAgICAgICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYgaWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgewogICAgICAgICAgICAgaWYg
KEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdl
VVJMKHJlc3BvbnNlVVJMLCBJbnRTaXplKDE2LCAxNikpKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVh
dGUoaWNvbkltYWdlLT5kYXRhKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpY29uVVJMKSwgImlt
YWdlL3gtaWNvbiIsICIiLCAiIikpCisgICAgICAgICAgICAgICAgaWYgKFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoaWNvbkltYWdlLT5k
YXRhKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIGljb25VUkwpLCAiaW1hZ2UveC1pY29uIiwgIiIs
ICIiKSkKICAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChyZXNvdXJjZS5y
ZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggY2UxYjcxMjU1
OTBlODEyNjM1MjM4YjQ5YmZiZGVhMjVjZGY0YTk5YS4uZGJhZTlkYzFiYjk3MTU2MDRiMTBlOTc4
MGFjZGFhOGM0ZjcwNDQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBMZWdhY3lX
ZWJBcmNoaXZlIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIqKTsKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBV
UkwmLCBTaGFyZWRCdWZmZXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSwgVmVj
dG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxQ
YXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMpOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlKiwgRnJhbWVGaWx0
ZXIqID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRt
bC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwv
TUhUTUxBcmNoaXZlLmNwcAppbmRleCBmODMxNWM5YTA3NDNmNzM5MGI1YWViNzk4OTRhNDdjYjEx
NjE2MTY4Li42ZWMyMGU5ZWZiZmEzNzdmNzhjZDc4Zjg3YmYyZTM4MTlhN2I5YjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4gTUhUTUxBcmNo
aXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTUhUTUxBcmNoaXZlKTsKIH0K
IAotUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IEtV
UkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhKQorUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1I
VE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7
CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBsb2FkIE1IVE1MIHBhZ2VzIGZy
b20gbG9jYWwgVVJMcy4KICAgICBpZiAoIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCBkZDE0ZDk5YzRhNWM5NjI2ZjI2
MmIwOGQ0MGIyZmMwZGFjYjdkZTM0Li4xNGNkODc1NzIzNWIzNjViNTVjNDU4MDQzNTZkYTk4YWRi
NDExMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTEFyY2hpdmUuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBNSFRNTDsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNSFRNTEFyY2hp
dmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyKik7CiAK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhUTUxEYXRhKFBh
Z2UqKTsKICAgICAvLyBCaW5hcnkgZW5jb2RpbmcgcmVzdWx0cyBpbiBzbWFsbGVyIE1IVE1MIGZp
bGVzIGJ1dCB0aGV5IG1pZ2h0IG5vdCB3b3JrIGluIG90aGVyIGJyb3dzZXJzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4
IDJkNzJhMTJkOWNjMDNjMmY3YTIxYzI2MDVlZTliZTI0NjY4MWMyYjAuLmQ4NzYwZjllZDlkNjI2
MzFmMTBhMDJmYjY2Nzc2NjI0YzkwNWU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4dFBhcnQoY29u
c3QgTUlNRUhlYWRlciYgbWltZUhlYQogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1F
IGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMu
CiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRw
Oi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBG
aXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCi0gICAg
S1VSTCBsb2NhdGlvbiA9IEtVUkwoS1VSTCgpLCBtaW1lSGVhZGVyLmNvbnRlbnRMb2NhdGlvbigp
KTsKKyAgICBVUkwgbG9jYXRpb24gPSBVUkwoVVJMKCksIG1pbWVIZWFkZXIuY29udGVudExvY2F0
aW9uKCkpOwogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShjb250ZW50QnVmZmVy
LCBsb2NhdGlvbiwgbWltZUhlYWRlci5jb250ZW50VHlwZSgpLCBtaW1lSGVhZGVyLmNoYXJzZXQo
KSwgU3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggNzI3M2IwNDhkM2Q4ZTI4YzJjNTIxOWFlZTJiZDI0OTk2N2ZmZDJiNi4uOGM1
NWRkMTlhMjhlZDY1N2M4YzE2ZDhjYTc5ZGRiYmQxNDY0MDRkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEZvbnRQbGF0
Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoZmxvYXQgc2l6
ZSwgYm9vbCBib2xkLCBiCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFp
c0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0g
U1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKIAogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIFN0cmluZyBzdmdTb3VyY2UgPSBkZWNvZGVy
LT5kZWNvZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGYzNjFhZmYzNGUwOTg4
YjMzYTlkMzRhMzRhMGQ4ZTAxNTAwMWQ0NTMuLjgzOWRkNTk5NjA2N2FkMGNjNWM4M2EyNWEzMmM3
Njc3NjdhNGFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKQEAgLTIzMCw3ICsyMzAsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVz
b3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUpCiAKICAgICBp
ZiAoIW1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAg
ICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmxGb3JDYWNoZSA9IE1lbW9yeUNhY2hlOjpyZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSk7CisgICAg
VVJMIHVybEZvckNhY2hlID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklm
TmVlZGVkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsRm9yQ2FjaGUuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2ZyYWdtZW50SWRl
bnRpZmllckZvclJlcXVlc3QgPSBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5mcmFnbWVudElkZW50
aWZpZXIoKTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzbwogICAg
IC8vIFdlIHNob3VsZCBsb29rIGludG8gcmVtb3ZpbmcgdGhlIGV4cGVjdGF0aW9uIG9mIHRoYXQg
a25vd2xlZGdlIGZyb20gdGhlIHBsYXRmb3JtIG5ldHdvcmsgc3RhY2tzLgogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBpZiAoIW1fZnJhZ21lbnRJ
ZGVudGlmaWVyRm9yUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBLVVJMIHVybCA9IHJlcXVl
c3QudXJsKCk7CisgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAgICAgICB1cmwu
c2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdCk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgICAgIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCA4ZWZlOTQ5MjhmZGI3NThmNDVlMTQ5NmFjMTEzYWFjNWVkZmY2
ZmNhLi4wNjYzMjk2MTI4Y2YyYTI4MTEyYmJjMGM4MTgyNzcyZTRiNGQwYmQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEyLDcgKzExMiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVF
cnJvcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpO30KKyAg
ICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgp
O30KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGNvbnN0IFN0cmluZyYgY2Fj
aGVQYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC5jYWNoZVBhcnRp
dGlvbigpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM0NjM3ODYyY2E0YTVhNTEwZmI5NTFjMzU3
ZjJlYTQzYjcyN2YyMTUuLmU0Y2IyNGEzNDdiOWJkOWM2NDBhODdmMzM3YjQ5ZjI4YTY3MmFlMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTQyLDEzICsxNDIsMTMgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6On5D
YWNoZWRSZXNvdXJjZUxvYWRlcigpCiAKIENhY2hlZFJlc291cmNlKiBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCkgY29uc3QgCiB7
Ci0gICAgS1VSTCB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTChyZXNvdXJjZVVSTCk7Cisg
ICAgVVJMIHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHJlc291cmNlVVJMKTsKICAgICBy
ZXR1cm4gY2FjaGVkUmVzb3VyY2UodXJsKTsgCiB9CiAKLUNhY2hlZFJlc291cmNlKiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpIGNv
bnN0CitDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hlZFJlc291cmNl
KGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwgPSBNZW1vcnlD
YWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVzb3VyY2VVUkwpOworICAg
IFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQo
cmVzb3VyY2VVUkwpOwogICAgIHJldHVybiBtX2RvY3VtZW50UmVzb3VyY2VzLmdldCh1cmwpLmdl
dCgpOyAKIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hlZFJlc291CiB7
CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICBpZiAoZi0+bG9hZGVyKCku
cGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2FkZXI6Ok5vRGlz
bWlzc2FsKSB7Ci0gICAgICAgICAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLnVybCgpOworICAgICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3RVUkwuaXNWYWxp
ZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3RV
UkwsIHJlcXVlc3Qub3B0aW9ucygpLCByZXF1ZXN0LmZvclByZWxvYWQoKSkpCiAgICAgICAgICAg
ICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKGYsIHJlcXVlc3RVUkwpOwogICAgICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xOTcsNyArMTk3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NTdHlsZVMKIAog
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgVVJM
IHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJ
T05JTkcpCiAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0Q2FjaGVQYXJ0
aXRpb24oZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkpOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJjCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENhY2hlZFJhd1Jlc291cmNlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpN
YWluUmVzb3VyY2UsIHJlcXVlc3QpLmdldCgpKTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNl
Y3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2Ny
aXB0OgpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNr
SW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKK2Jvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgYm9vbCBmb3JQcmVs
b2FkKQogewogICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQpAQCAtNDM1
LDcgKzQzNSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENvbnRpbnVlQWZ0
ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjCiAKIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKLSAgICBLVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7Cisg
ICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgCiAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3Vy
Y2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0ldSIsIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3Qu
Y2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpLCByZXF1ZXN0LmZv
clByZWxvYWQoKSk7CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2
YWxpZGEKICAgICByZXR1cm4gVXNlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpw
cmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAordm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTcw
MywxMiArNzAzLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJs
ZWQoYm9vbCBlbmFibGUpCiAgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogfQogCi1i
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZlcnNJbWFnZShjb25zdCBLVVJMJiB1
cmwpIGNvbnN0Citib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZlcnNJbWFnZShj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSAmJiAhZnJhbWUoKS0+
bG9hZGVyKCkuY2xpZW50KCkuYWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQsIHVybCk7CiB9CiAK
LWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1h
Z2VMb2FkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBjbGllbnREZWZlcnNJ
bWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOwogfQpAQCAtODg3LDcgKzg4Nyw3IEBAIHZv
aWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmlzUHJl
bG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIGNvbnN0IEtVUkwm
IHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgY29uc3QgVVJM
JiB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCiAgICAgaWYgKG1f
cHJlbG9hZHMpIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPjo6aXRlcmF0
b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ3NjA4MzI1MmI1NjJiOWJhMWFl
MTI4MmUzZTY3NzBkODZiMjMzMDEuLjljOTU5YzQ2YjY0ZWYwNmUwZGU5NmM2M2VkYWU1OTQwYWYx
Y2MyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIAogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIHByb3ZpZGVzIGEg
cGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQogLy8gYW5kIGVuZm9yY2Vz
IGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3IgcmVzb3VyY2UgcmV2YWxp
ZGF0aW9uLgpAQCAtOTcsMTAgKzk3LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gTG9n
cyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRoZSBzcGVjaWZp
ZWQgVVJMLgotICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0IEtVUkwmIHVy
bCkgY29uc3Q7CisgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdDsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UoY29u
c3QgS1VSTCYgdXJsKSBjb25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Uo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0OwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiA+IERvY3VtZW50UmVzb3VyY2VN
YXA7CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2FjaGVkUmVzb3VyY2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQpAQCAtMTEwLDcgKzExMCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKIAotICAgIGJvb2wg
c2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxk
RGVmZXJJbWFnZUxvYWQoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kg
Y2FjaGVQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUpIGNvbnN0OwogICAgIApAQCAtMTMzLDcg
KzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUs
IENhY2hlZFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7CiAgICAgdm9p
ZCBjaGVja0ZvclBlbmRpbmdQcmVsb2FkcygpOwogICAgIHZvaWQgcHJpbnRQcmVsb2FkU3RhdHMo
KTsKLSAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7
CisgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwmLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7CiAK
ICAgICBzdGF0aWMgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBkZWZhdWx0Q2FjaGVkUmVz
b3VyY2VPcHRpb25zKCk7CiAKQEAgLTE1MiwxMiArMTUyLDEyIEBAIHByaXZhdGU6CiAgICAgUmV2
YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJj
ZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNoZWRSZXNvdXJj
ZSogZXhpc3RpbmdSZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpEZWZlck9wdGlvbikg
Y29uc3Q7CiAgICAgCiAgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVk
RnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKik7Ci0gICAgYm9vbCBjaGVja0luc2VjdXJl
Q29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJv
b2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVSTCYp
IGNvbnN0OwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJG
aXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0
TG9hZEFjdGlvbnMoKTsKIAotICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgS1VSTCYp
IGNvbnN0OworICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJikgY29uc3Q7CiAg
ICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxT
dHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCmluZGV4IGE0ODhhZjBkMjE5MWMxOTRkZGZj
Nzc2NTU2OGQzYzVkNmEwNTdhODMuLjAwY2M1NDY5NjA5ZTNiMTJmMmUwYjBhNTE5YzZmOWJlZDlj
NzI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHls
ZVNoZWV0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaApAQCAtMzIsMTUgKzMyLDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
CiBjbGFzcyBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTdHlsZVNoZWV0Q2xpZW50KCkgeyB9
CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJl
dHVybiBTdHlsZVNoZWV0VHlwZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRU
eXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiAvKiBocmVm
ICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQg
Ki8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtVUkwmIC8qIGJh
c2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29uc3QgVVJMJiAv
KiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25z
dCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywgY29uc3QgU3Ry
aW5nJiAvKiBzaGVldCAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBiNjcyMzM4NmEy
MThiMTkzOGM3OTY1MzcwYmZlZDQ1MTM4YTc3Mzg4Li4zN2M3MmM2NDAxZGY0NDliZjlmYzYwNWIw
ZTlmMGI2ZWRjOTgyYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgTWVtb3J5Q2FjaGU6Ok1lbW9yeUNhY2hlKCkKIHsK
IH0KIAotS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQo
Y29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCitVUkwgTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpCiB7CiAgICAgaWYgKCFv
cmlnaW5hbFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgcmV0dXJuIG9yaWdp
bmFsVVJMOwpAQCAtODMsNyArODMsNyBAQCBLVVJMIE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVu
dElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkKICAgICAvLyB0byBi
ZSB1bmlxdWUgZXZlbiB3aGVuIHRoZXkgZGlmZmVyIGJ5IHRoZSBmcmFnbWVudCBpZGVudGlmaWVy
IG9ubHkuCiAgICAgaWYgKCFvcmlnaW5hbFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAg
ICAgICAgIHJldHVybiBvcmlnaW5hbFVSTDsKLSAgICBLVVJMIHVybCA9IG9yaWdpbmFsVVJMOwor
ICAgIFVSTCB1cmwgPSBvcmlnaW5hbFVSTDsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIE1lbW9y
eUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFsaWRhdGluZ1Jl
c291cmNlKQogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVhclJlc291cmNlVG9SZXZhbGlk
YXRlKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JVUkwo
Y29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJl
c291cmNlRm9yVVJMKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgcmV0dXJuIHJlc291
cmNlRm9yUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VVUkwpKTsKIH0KQEAgLTE3MSw3
ICsxNzEsNyBAQCBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNlRm9yVVJMKGNv
bnN0IEtVUkwmIHJlc291cmNlVVJMKQogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNhY2hlOjpyZXNv
dXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFT
U0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBLVVJMIHVybCA9IHJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwgPSByZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKICNpZiBFTkFCTEUoQ0FD
SEVfUEFSVElUSU9OSU5HKQogICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9IG1fcmVzb3Vy
Y2VzLmdldCh1cmwpOwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDJiYTNhZGJhNDYwZTM0ZTA4
YzllMGU4ZjA4N2NjNjJkY2E5NTY4N2EuLjc4NWNkZTIzNWE2MjBlN2U5ZDQxYmQ0Y2YwNzg3MGIx
ZTk0NGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBA
IC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlICB7CiBjbGFzcyBDYWNoZWRDU1NTdHls
ZVNoZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRl
cjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKQEAgLTEx
MiwxMyArMTEyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVN0YXRpc3RpYyBmb250czsKICAg
ICB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKTsK
KyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJik7CiAgICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICAKICAgICBib29sIGFkZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpOwogICAgIHZvaWQg
cmVtb3ZlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgeyBldmljdChyZXNvdXJjZSk7IH0KIAot
ICAgIHN0YXRpYyBLVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IEtV
UkwmIG9yaWdpbmFsVVJMKTsKKyAgICBzdGF0aWMgVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOwogICAgIAogICAgIHZvaWQgcmV2YWxp
ZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFpbGVkKENhY2hl
ZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggYmM3YjljNWIyYTcyMzVjM2YwOGY5Nzc1
YmZmZTJjZTg2NDBmMjFkYS4uYWZlNjdiNzllM2ExYzMxYWQ1NDQ2NzQyOGJmNzQ4OGY2MTllNmNj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApA
QCAtNjAsMTAgKzYwLDEwIEBAIEljb25Db250cm9sbGVyOjp+SWNvbkNvbnRyb2xsZXIoKQogewog
fQogCi1LVVJMIEljb25Db250cm9sbGVyOjp1cmwoKQorVVJMIEljb25Db250cm9sbGVyOjp1cmwo
KQogewogICAgIEljb25VUkxzIGljb25VUkxzID0gdXJsc0ZvclR5cGVzKEZhdmljb24pOwotICAg
IHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBpY29uVVJMc1swXS5tX2ljb25V
Ukw7CisgICAgcmV0dXJuIGljb25VUkxzLmlzRW1wdHkoKSA/IFVSTCgpIDogaWNvblVSTHNbMF0u
bV9pY29uVVJMOwogfQogCiBJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJMKEljb25UeXBl
IGljb25UeXBlKSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBAIEljb25VUkxzIEljb25Db250cm9s
bGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiAgICAgcmV0dXJuIGljb25VUkxz
OwogfQogCi12b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IEtVUkwm
IGljb24pCit2b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNvbnN0IFVSTCYg
aWNvbikKIHsKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29uVVJMICVzIHRv
IGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSwgbV9mcmFtZS0+bG9hZGVyKCkuaW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNv
bi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKICAgICBpZiAo
IWRvY3VtZW50Q2FuSGF2ZUljb24obV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBLVVJMIGljb25VUkwodXJsKCkpOworICAgIFVSTCBpY29uVVJMKHVy
bCgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3RyaW5nKCkpOwogICAgIGlmICh1
cmxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVj
aXNpb24gaWNvbkxvYWREZWNpc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGljb25M
b2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewotICAgICAgICBLVVJMIGljb25VUkwodXJsKCkp
OworICAgICAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAgICAgIFN0cmluZyB1cmxTdHJpbmco
aWNvblVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDExICsyNTMsMTEgQEAgYm9vbCBJY29uQ29udHJvbGxl
cjo6YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMqIGljb25VUkxz
KQogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkK
IHsKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0
dHAgb3IgaHR0cHMKLSAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CiAgICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAg
IHJldHVybiBJY29uVVJMKCk7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIGJv
b2wgY291bGRTZXRQcm90b2NvbCA9IHVybC5zZXRQcm90b2NvbChkb2N1bWVudFVSTC5wcm90b2Nv
bCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxkU2V0UHJvdG9j
b2wpOwogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAppbmRleCA2MWRmYTc2YjZjNGZmY2JmZjc2
ZDU2Yjk2NDNiNWM0ODc1NzA2NjU4Li5jYTljMTRjODUxZWRhMzk3MDY2ZTcxNjBhOGYzZjE4ZmRk
ZGNkZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNpbmNs
dWRlICJJY29uVVJMLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IEljb25Db250cm9sbGVyKEZyYW1lKik7CiAgICAgfkljb25Db250cm9sbGVyKCk7CiAKLSAg
ICBLVVJMIHVybCgpOworICAgIFVSTCB1cmwoKTsKICAgICBJY29uVVJMcyB1cmxzRm9yVHlwZXMo
aW50IGljb25UeXBlc01hc2spOwogICAgIEljb25VUkwgaWNvblVSTChJY29uVHlwZSkgY29uc3Q7
CiAKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERlY2lzaW9uUmVjZWl2
ZWQoSWNvbkxvYWREZWNpc2lvbik7CiAgICAgdm9pZCBjb250aW51ZUxvYWRXaXRoRGVjaXNpb24o
SWNvbkxvYWREZWNpc2lvbik7CiAKLSAgICB2b2lkIGNvbW1pdFRvRGF0YWJhc2UoY29uc3QgS1VS
TCYgaWNvbik7CisgICAgdm9pZCBjb21taXRUb0RhdGFiYXNlKGNvbnN0IFVSTCYgaWNvbik7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBhcHBlbmRUb0ljb25VUkxzKEljb25UeXBlLCBJY29uVVJMcyop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCBhNjIyNmRk
ZjJiZmUyOWI3NWFhNGViNzg5NmVjOGU5OGM3MzM0M2I1Li5jNzc3ZGQ0ZjI3ZjAyNzBkNzhiYmI3
NjNhYmNhNzExMjMwYmEyYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgSWNvbkRhdGFi
YXNlQ2xpZW50OwogY2xhc3MgSWNvblJlY29yZDsKIGNsYXNzIEljb25TbmFwc2hvdDsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlVVJMUmVjb3JkOwogY2xhc3MgUGFnZVVSTFNu
YXBzaG90OwogY2xhc3MgU2hhcmVkQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2VCYXNlLmNwcAppbmRleCA5ZjExNjBjYmNmMjI3NThiMGNhODYyMzhm
YzI2ODQ4MjYxZTEzYjQ0Li41MWNjYjNiMjdkOTRhZmJmZDlmNjVjNmYwY2RiMTUzMTE3MDBiMTY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmNw
cApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKIAogI2lu
Y2x1ZGUgIkljb25EYXRhYmFzZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KaW5kZXggMDgz
YjFlNjAzMzY5YTk4M2JmYWQxODMwYmRlMjEwMWFmMDRiNDc0My4uZDVjYjkwODgzNjRmY2M4ZDgw
MWVhNTMyMTAxNTczNDkxN2JhZjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFj
L0xvYWRlck5TVVJMRXh0cmFzLm1tCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0ICJLVVJMLmgiCisj
aW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbXBvcnQgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIgpAQCAt
NTgsNyArNTgsNyBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoTlNV
UkwgKnVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIGlmIChbZmlsZW5hbWUgbGVu
Z3RoXSA9PSAwIHx8IFtsYXN0UGF0aENvbXBvbmVudCBpc0VxdWFsVG9TdHJpbmc6QCIvIl0pIHsK
ICAgICAgICAgLy8gbGFzdFBhdGhDb21wb25lbnQgaXMgbm8gZ29vZCwgdHJ5IHRoZSBob3N0Lgot
ICAgICAgICBOU1N0cmluZyAqaG9zdCA9IEtVUkwodXJsKS5ob3N0KCk7CisgICAgICAgIE5TU3Ry
aW5nICpob3N0ID0gVVJMKHVybCkuaG9zdCgpOwogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1l
QnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhob3N0KTsKICAgICAgICAgaWYgKFtmaWxlbmFtZSBs
ZW5ndGhdID09IDApIHsKICAgICAgICAgICAgIC8vIENhbid0IG1ha2UgYSBmaWxlbmFtZSB1c2lu
ZyB0aGlzIFVSTCwgdXNlICJ1bmtub3duIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDIzNzVlZDNiNmVkMDliYjA1ODE3YWY1MGYwZDAw
NTQ2NTAwMjc5NGYuLjUxYWEzOGVlNjcwYTdkY2I4ZGI5ZjkyNzU3NGI3M2Y5ZTJhODRlODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAt
MjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0Q2FwdGlvbnNT
dHlsZVNoZWV0T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7CiAgICAgLy8g
SWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUgVVJMIC0gYSBu
ZXcgc2NoZW1lIGFuZCBhIFVVSUQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBjYXB0
aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJ1c2VyLWNhcHRpb25zLW92ZXJy
aWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5n
LCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIz
NERDMjMiKSk7CiAKICAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29y
bGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlh
QUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Ri5jcHAKaW5kZXggNTFiMzZjMmU2YTcxZTg1ODFiMzRlNzhiNGJiMzFiYWJjZmIwNjcxMS4uNzM5
NTU5YzkzYjFjMDlkNWU4NDhkOWE5ZTU2Y2E0ZGNiM2NjNGM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAgLTM1
LDcgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJGbG9h
dENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVk
ZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTFjOTA0NWIxNzg3
YjA3Y2E1YTQ1YTRjMmY0N2UzZmRiYjhkZjE5Li44YzU1NTMwMTg3ZTU4N2ZkYTVlYTQ2ZTA4MDQw
OTVhMGJjMDhkODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQ
b2xpY3kuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGluZ0xv
YWRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgpAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBib29sIG1h
dGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIXNjaGVtZU1h
dGNoZXModXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc2NoZW1lTWF0Y2hlcyhjb25z
dCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9vbCBzY2hlbWVNYXRjaGVzKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgU3RyaW5nIHByb3RlY3RlZFJlc291cmNlU2NoZW1lKG1fcG9saWN5LT5zZWN1cml0eU9y
aWdpbigpLT5wcm90b2NvbCgpKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodXJsLnByb3RvY29sKCksIG1fc2NoZW1lKTsKICAg
ICB9CiAKLSAgICBib29sIGhvc3RNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBi
b29sIGhvc3RNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgY29u
c3QgU3RyaW5nJiBob3N0ID0gdXJsLmhvc3QoKTsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGhvc3QsIG1faG9zdCkpCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToKIAogICAgIH0K
IAotICAgIGJvb2wgcGF0aE1hdGNoZXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorICAgIGJvb2wg
cGF0aE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAobV9w
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg1LDcgKzI4NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwYXRoID09IG1fcGF0aDsKICAgICB9CiAKLSAg
ICBib29sIHBvcnRNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBib29sIHBvcnRN
YXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fcG9ydEhh
c1dpbGRjYXJkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjEsNyArMzIxLDcgQEAg
cHVibGljOgogICAgIENTUFNvdXJjZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgY29uc3Qg
U3RyaW5nJiBkaXJlY3RpdmVOYW1lKTsKIAogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7
Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIG1hdGNoZXMoY29uc3Qg
VVJMJik7CiAgICAgYm9vbCBhbGxvd0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dJbmxp
bmU7IH0KICAgICBib29sIGFsbG93RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dFdmFsOyB9
CiAKQEAgLTM2NCwxMiArMzY0LDEyIEBAIHZvaWQgQ1NQU291cmNlTGlzdDo6cGFyc2UoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICBwYXJzZSh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZhbHVlLmNoYXJh
Y3RlcnMoKSArIHZhbHVlLmxlbmd0aCgpKTsKIH0KIAotYm9vbCBDU1BTb3VyY2VMaXN0OjptYXRj
aGVzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQ1NQU291cmNlTGlzdDo6bWF0Y2hlcyhjb25zdCBV
UkwmIHVybCkKIHsKICAgICBpZiAobV9hbGxvd1N0YXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgS1VSTCBlZmZlY3RpdmVVUkwgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJV
UkwodXJsKSA/IFNlY3VyaXR5T3JpZ2luOjpleHRyYWN0SW5uZXJVUkwodXJsKSA6IHVybDsKKyAg
ICBVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVy
bCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGlzdC5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAo
bV9saXN0W2ldLm1hdGNoZXMoZWZmZWN0aXZlVVJMKSkKQEAgLTgxNCw3ICs4MTQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fc291cmNlTGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgYm9v
bCBhbGxvd3MoY29uc3QgS1VSTCYgdXJsKQorICAgIGJvb2wgYWxsb3dzKGNvbnN0IFVSTCYgdXJs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVzKHVybC5pc0VtcHR5
KCkgPyBwb2xpY3koKS0+dXJsKCkgOiB1cmwpOwogICAgIH0KQEAgLTgzOSwyNSArODM5LDI1IEBA
IHB1YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4
dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dJbmxpbmVT
dHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25z
dDsKICAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSosIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93U2NyaXB0Tm9uY2Uo
Y29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6
Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVB
dHRyaWJ1dGUsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0
YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJM
JiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJv
b2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9t
U291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxs
b3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAg
ICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1Nv
dXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMp
IGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNvbnN0IEtVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VV
UkkoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKKyAgICBib29sIGFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93UGx1Z2luVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3QgVVJMJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworCisgICAgYm9vbCBh
bGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNv
bnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsK
KyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbWFn
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25z
dCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Cisg
ICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0Zvcm1BY3Rpb24o
Y29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0
OworICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKIAogICAgIHZvaWQgZ2F0aGVyUmVwb3J0VVJJcyhE
T01TdHJpbmdMaXN0JikgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBldmFsRGlzYWJsZWRFcnJv
ck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsgfQog
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVj
dGVkWFNTRGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmxlY3RlZFhTU0Rpc3Bvc2l0
aW9uOyB9CiAgICAgYm9vbCBpc1JlcG9ydE9ubHkoKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9u
bHk7IH0KLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHJlcG9ydFVSSXMoKSBjb25zdCB7IHJldHVy
biBtX3JlcG9ydFVSSXM7IH0KKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJcygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCiBwcml2YXRlOgogICAgIENTUERpcmVjdGl2
ZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKQEAgLTg3NiwxMiArODc2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDU1BE
aXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBPd25QdHI8
Q1NQRGlyZWN0aXZlVHlwZT4mKTsKIAogICAgIFNvdXJjZUxpc3REaXJlY3RpdmUqIG9wZXJhdGl2
ZURpcmVjdGl2ZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7Ci0gICAgdm9pZCByZXBvcnRW
aW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYg
YmxvY2tlZFVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0gU3RyaW5nKCks
IGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9yZGluYWxOdW1i
ZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0OworICAgIHZvaWQg
cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5n
JiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0
IFVSTCYgYmxvY2tlZFVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJp
bmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5h
bE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CiAKICAg
ICBib29sIGNoZWNrRXZhbChTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9vbCBj
aGVja0lubGluZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9vbCBjaGVja05v
bmNlKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBjaGVj
a1NvdXJjZShTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJv
b2wgY2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFVSTCYpIGNvbnN0Owog
ICAgIGJvb2wgY2hlY2tNZWRpYVR5cGUoTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUpIGNvbnN0OwogCiAgICAgdm9pZCBz
ZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsg
bV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IH0KQEAgLTg5MCw3ICs4
OTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24o
U291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGlu
ZSwgYm9vbCBpc1NjcmlwdCkgY29uc3Q7CiAgICAgYm9vbCBjaGVja05vbmNlQW5kUmVwb3J0Vmlv
bGF0aW9uKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5n
JiBjb25zb2xlTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lKSBjb25zdDsKIAotICAgIGJvb2wgY2hlY2tTb3VyY2VB
bmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSkgY29uc3Q7CisgICAgYm9vbCBjaGVja1NvdXJj
ZUFuZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tNZWRp
YVR5cGVBbmRSZXBvcnRWaW9sYXRpb24oTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgY29uc29s
ZU1lc3NhZ2UpIGNvbnN0OwogCiAgICAgYm9vbCBkZW55SWZFbmZvcmNpbmdQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KQEAgLTkxOCw3ICs5MTgsNyBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKICAgICBPd25QdHI8
U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zdHlsZVNyYzsKIAotICAgIFZlY3RvcjxLVVJMPiBtX3Jl
cG9ydFVSSXM7CisgICAgVmVjdG9yPFVSTD4gbV9yZXBvcnRVUklzOwogCiAgICAgU3RyaW5nIG1f
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogfTsKQEAgLTk0OSw3ICs5NDksNyBAQCBQYXNzT3du
UHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIHBvbAogICAgIHJldHVybiBkaXJlY3RpdmVzLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5n
JiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnJlcG9ydFZpb2xh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZl
RGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBVUkwmIGJsb2Nr
ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVy
JiBjb250ZXh0TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAogewogICAgIFN0cmlu
ZyBtZXNzYWdlID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNvbnNvbGVNZXNz
YWdlIDogY29uc29sZU1lc3NhZ2U7CiAgICAgbV9wb2xpY3ktPnJlcG9ydFZpb2xhdGlvbihkaXJl
Y3RpdmVUZXh0LCBlZmZlY3RpdmVEaXJlY3RpdmUsIG1lc3NhZ2UsIGJsb2NrZWRVUkwsIG1fcmVw
b3J0VVJJcywgbV9oZWFkZXIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CkBAIC05
NzAsNyArOTcwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja05vbmNlKE5vbmNlRGly
ZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgbm9uY2UKICAgICByZXR1cm4gIWRpcmVj
dGl2ZSB8fCBkaXJlY3RpdmUtPmFsbG93cyhub25jZSk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6Y2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBL
VVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlKFNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICFkaXJlY3RpdmUgfHwgZGlyZWN0aXZlLT5hbGxvd3ModXJsKTsKIH0KQEAgLTk5OCw3
ICs5OTgsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrRXZhbEFuZFJlcG9ydFZpb2xh
dGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdgogICAgIGlmIChkaXJlY3RpdmUgPT0g
bV9kZWZhdWx0U3JjKQogICAgICAgICBzdWZmaXggPSAiIE5vdGUgdGhhdCAnc2NyaXB0LXNyYycg
d2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2RlZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFs
bGJhY2suIjsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0
U3JjLCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsg
c3VmZml4ICsgIlxuIiwgS1VSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwgc3RhdGUpOwor
ICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0U3JjLCBjb25zb2xl
TWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsgc3VmZml4ICsgIlxu
IiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CiAgICAgaWYgKCFtX3Jl
cG9ydE9ubHkpIHsKICAgICAgICAgbV9wb2xpY3ktPnJlcG9ydEJsb2NrZWRTY3JpcHRFeGVjdXRp
b25Ub0luc3BlY3RvcihkaXJlY3RpdmUtPnRleHQoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tOb25jZUFu
ZFJlcG9ydFZpb2xhdGlvbihOb25jZURpcmVjdGl2ZSogZGlyZWN0aXZlLCBjCiB7CiAgICAgaWYg
KGNoZWNrTm9uY2UoZGlyZWN0aXZlLCBub25jZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0Tm9uY2UsIGNvbnNvbGVN
ZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLlxuIiwgS1VSTCgpLCBjb250
ZXh0VVJMLCBjb250ZXh0TGluZSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4
dCgpLCBzY3JpcHROb25jZSwgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0
KCkgKyAiXCIuXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogICAgIHJldHVy
biBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKIH0KIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgYm9v
bCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihNZWRp
YUxpc3REaXJlY3RpdmUqIGRpcmUKICAgICBpZiAodHlwZUF0dHJpYnV0ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgIiBXaGVuIGVuZm9yY2luZyB0aGUgJ3BsdWdpbi10
eXBlcycgZGlyZWN0aXZlLCB0aGUgcGx1Z2luJ3MgbWVkaWEgdHlwZSBtdXN0IGJlIGV4cGxpY2l0
bHkgZGVjbGFyZWQgd2l0aCBhICd0eXBlJyBhdHRyaWJ1dGUgb24gdGhlIGNvbnRhaW5pbmcgZWxl
bWVudCAoZS5nLiAnPG9iamVjdCB0eXBlPVwiW1RZUEUgR09FUyBIRVJFXVwiIC4uLj4nKS4iOwog
Ci0gICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBwbHVnaW5UeXBlcywgbWVz
c2FnZSArICJcbiIsIEtVUkwoKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4
dCgpLCBwbHVnaW5UeXBlcywgbWVzc2FnZSArICJcbiIsIFVSTCgpKTsKICAgICByZXR1cm4gZGVu
eUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMzYsNyArMTAzNiw3IEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6Y2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERp
cmVjdGl2ZSogZGlyZWN0CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCiAgICAg
ICAgIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIiBOb3RlIHRoYXQgJyIsIChpc1NjcmlwdCA/ICJzY3Jp
cHQiIDogInN0eWxlIiksICItc3JjJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBzbyAnZGVmYXVs
dC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iKTsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihk
aXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29uc29s
ZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJc
biIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9ydFZpb2xhdGlv
bihkaXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNyYywgY29u
c29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCAr
ICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7CiAKICAgICBpZiAoIW1fcmVw
b3J0T25seSkgewogICAgICAgICBpZiAoaXNTY3JpcHQpCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBi
b29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJjZUxpc3REaXJl
Y3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2
ZURpcmVjdGl2ZSkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRS
ZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0CiB7CiAgICAgaWYg
KGNoZWNrU291cmNlKGRpcmVjdGl2ZSwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0x
MTI5LDcgKzExMjksNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZhbChKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UgogICAgICAgICBjaGVja0V2
YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSk7CiB9CiAKLWJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExp
bmUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dT
Y3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkws
IGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwg
KEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIHNjcmlwdCBiZWNhdXNlIGl0IHZpb2xh
dGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAiKSkp
OwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMTEzNywyMSArMTEzNywyMSBAQCBib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjb250ZQogICAgIHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9u
KG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29udGV4
dFVSTCwgY29udGV4dExpbmUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1
Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwg
Y29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93UGx1Z2lu
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29u
c3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9y
dGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRl
bnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrTWVkaWFUeXBlQW5k
UmVwb3J0VmlvbGF0aW9uKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5cGVBdHRyaWJ1dGUs
ICJSZWZ1c2VkIHRvIGxvYWQgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkgKyAiJyAoTUlNRSB0eXBlICciICsgdHlwZUF0dHJpYnV0ZSArICInKSBiZWNhdXNlIGl0IHZp
b2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgRGlyZWN0aXZlOiAi
KSA6CiAgICAgICAgIGNoZWNrTWVkaWFUeXBlKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5
cGVBdHRyaWJ1dGUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0RnJv
bVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxs
b3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJl
cG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAg
ICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9z
Y3JpcHRTcmMuZ2V0KCkpLCB1cmwsIHNjcmlwdFNyYykgOgogICAgICAgICBjaGVja1NvdXJjZShv
cGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29u
c3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IFVS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxv
d09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2wKICAg
ICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fb2JqZWN0U3JjLmdldCgpKSwg
dXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJhbWVGcm9tU291
cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0No
aWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5p
c0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2OSwzNSArMTE2OSwzNSBA
QCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3Qg
S1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdAogICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVE
aXJlY3RpdmUobV9mcmFtZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVy
YXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1cmwsIGltZ1NyYykgOgogICAgICAgICBj
aGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1cmwpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJvbVNvdXJjZShj
b25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRS
ZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0KCkpLCB1cmws
IHN0eWxlU3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX3N0
eWxlU3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zv
bnRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwog
ICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJlY3RpdmUo
bV9mb250U3JjLmdldCgpKSwgdXJsLCBmb250U3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9w
ZXJhdGl2ZURpcmVjdGl2ZShtX2ZvbnRTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1ib29sIENTUERp
cmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAor
Ym9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5
UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRp
b24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fbWVkaWFTcmMuZ2V0KCkpLCB1cmwsIG1lZGlhU3JjKSA6
CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlhU3JjLmdldCgp
KSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Nvbm5lY3RUb1NvdXJj
ZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
IHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25u
ZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5n
U3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNo
ZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZShtX2Nvbm5lY3RT
cmMuZ2V0KCkpLCB1cmwsIGNvbm5lY3RTcmMpIDoKQEAgLTEyMTAsMTQgKzEyMTAsMTQgQEAgdm9p
ZCBDU1BEaXJlY3RpdmVMaXN0OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0cmluZ0xpc3QmIGxpc3Qp
IGNvbnN0CiAgICAgICAgIGxpc3QuYXBwZW5kKG1fcmVwb3J0VVJJc1tpXS5zdHJpbmcoKSk7CiB9
CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0IEtVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0Vmlv
bGF0aW9uKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsLCBmb3JtQWN0aW9uKSA6CiAgICAgICAgIGNo
ZWNrU291cmNlKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3Rp
dmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVj
dGl2ZUxpc3Q6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVy
biByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8K
ICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24obV9iYXNlVVJJLmdldCgpLCB1
cmwsIGJhc2VVUkkpIDoKQEAgLTE1MzcsOCArMTUzNyw4IEBAIGJvb2wgaXNBbGxvd2VkQnlBbGxX
aXRoQ29udGV4dChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3Qg
U3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERpcmVjdGl2ZUxp
c3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImLCBjb25zdCBLVVJMJikgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0
aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBjb25zdCBTdHJp
bmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51
bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtVUkwmIHVybCkKK3RlbXBsYXRlPGJvb2wgKENTUERp
cmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImLCBjb25zdCBVUkwmKSBjb25zdD4KK2Jvb2wgaXNBbGxvd2Vk
QnlBbGxXaXRoTm9uY2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNv
bnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpP
cmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwb2xpY2llcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoIShw
b2xpY2llc1tpXS5nZXQoKS0+KmFsbG93ZWQpKG5vbmNlLCBjb250ZXh0VVJMLCBjb250ZXh0TGlu
ZSwgdXJsKSkKQEAgLTE1NDcsOCArMTU0Nyw4IEBAIGJvb2wgaXNBbGxvd2VkQnlBbGxXaXRoTm9u
Y2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0IFN0cmluCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERpcmVjdGl2ZUxpc3Q6Oiph
bGxvd0Zyb21VUkwpKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTChjb25zdCBDU1BEaXJl
Y3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1wbGF0ZTxib29s
IChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Citib29sIGlzQWxsb3dlZEJ5QWxs
V2l0aFVSTChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykKIHsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRl
bnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTU5NiwxMiArMTU5NiwxMiBAQCBTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9saWN5OjpldmFs
RGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5n
JiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1i
ZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBT
dHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUs
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhO
b25jZTwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZT4obV9wb2xpY2llcywgbm9u
Y2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB1cmwpOwogfQogCi1ib29sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX3BvbGljaWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICgh
bV9wb2xpY2llc1tpXS0+YWxsb3dQbHVnaW5UeXBlKHR5cGUsIHR5cGVBdHRyaWJ1dGUsIHVybCwg
cmVwb3J0aW5nU3RhdHVzKSkKQEAgLTE2MTAsNTIgKzE2MTAsNTIgQEAgYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgdHkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd1NjcmlwdEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3Rh
dHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2JqZWN0RnJvbVNv
dXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5Ojph
bGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4g
aXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd09iamVjdEZyb21T
b3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGlsZEZyYW1lRnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFs
bFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2U+KG1f
cG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0
aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5n
U3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U3R5bGVGcm9t
U291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTdHlsZUZyb21T
b3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNv
bnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250RnJvbVNvdXJjZShjb25z
dCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdpdGhVUkw8JkNT
UERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVw
b3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVk
aWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dNZWRp
YUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IEtVUkwm
IHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3Rh
dHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291
cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0
aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2U+KG1fcG9saWNpZXMs
IHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1B
Y3Rpb24+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJMJiB1cmwsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29u
c3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0Jhc2VVUkk+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KQEAg
LTE2ODYsMTIgKzE2ODYsMTIgQEAgU2VjdXJpdHlPcmlnaW4qIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLWNvbnN0IEtVUkwmIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6dXJsKCkgY29uc3QKK2NvbnN0IFVSTCYgQ29udGVudFNlY3VyaXR5UG9saWN5Ojp1
cmwoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnVybCgp
OwogfQogCi1LVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29tcGxldGVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CitVUkwgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogfQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveEZsYWdzIG1h
c2spIGNvbnN0CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5lbmZvcmNlU2FuZGJveEZs
YWdzKG1hc2spOwogfQogCi1zdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHN0cmlwVVJM
Rm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE3MTEs
NyArMTcxMSw3IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBVUkxGb3JVc2VJblJlcG9ydChEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIH0KIAogI2lmIEVOQUJMRShDU1BfTkVYVCkK
LXN0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnREYXRhKFNlY3Vy
aXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3Rp
dmUsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgaGVhZGVyKQorc3RhdGlj
IHZvaWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudEluaXQmIGluaXQsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29u
c3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRlcikKIHsKICAgICBpbml0LmRv
Y3VtZW50VVJJID0gZG9jdW1lbnQtPnVybCgpLnN0cmluZygpOwogICAgIGluaXQucmVmZXJyZXIg
PSBkb2N1bWVudC0+cmVmZXJyZXIoKTsKQEAgLTE3MjksMTQgKzE3MjksMTQgQEAgc3RhdGljIHZv
aWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudEkKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGdl
dEZpcnN0Tm9uTmF0aXZlRnJhbWUoc3RhY2spOwogCiAgICAgaWYgKGNhbGxGcmFtZS5saW5lTnVt
YmVyKCkpIHsKLSAgICAgICAgS1VSTCBzb3VyY2UgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgY2Fs
bEZyYW1lLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQYXJzZWRVUkxT
dHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgIGluaXQuc291cmNlRmlsZSA9
IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSk7CiAgICAgICAgIGluaXQu
bGluZU51bWJlciA9IGNhbGxGcmFtZS5saW5lTnVtYmVyKCk7CiAgICAgfQogfQogI2VuZGlmCiAK
LXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5n
JiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3Qg
U3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVj
dG9yPEtVUkw+JiByZXBvcnRVUklzLCBjb25zdCBTdHJpbmcmIGhlYWRlciwgY29uc3QgU3RyaW5n
JiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVw
b3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBl
ZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2UsIGNvbnN0IFVS
TCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51
bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QKIHsKICAgICBs
b2dUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0
ZSk7CiAKQEAgLTE3ODksNyArMTc4OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpy
ZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTCiAgICAg
ICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lID0gZ2V0Rmlyc3ROb25OYXRpdmVG
cmFtZShzdGFjayk7CiAKICAgICAgICAgaWYgKGNhbGxGcmFtZS5saW5lTnVtYmVyKCkpIHsKLSAg
ICAgICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGNhbGxGcmFtZS5z
b3VyY2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgc291cmNlID0gVVJMKFBhcnNlZFVSTFN0cmlu
ZywgY2FsbEZyYW1lLnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGNzcFJlcG9ydC0+c2V0U3Ry
aW5nKCJzb3VyY2UtZmlsZSIsIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJj
ZSkpOwogICAgICAgICAgICAgY3NwUmVwb3J0LT5zZXROdW1iZXIoImxpbmUtbnVtYmVyIiwgY2Fs
bEZyYW1lLmxpbmVOdW1iZXIoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDljZGFhNzhhOWE3YTVkZDkzZTZjYjE3Yzk4YTc2
NDYzZGZkNTM2YTUuLjJlYTg4ZjIzM2QzOTdmMTBmMGQzZTgzY2Q5NDA5MWM1NzYxMWNmOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApAQCAtMjYsNyAr
MjYsNyBAQAogI2lmbmRlZiBDb250ZW50U2VjdXJpdHlQb2xpY3lfaAogI2RlZmluZSBDb250ZW50
U2VjdXJpdHlQb2xpY3lfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtOTIsMTkgKzkyLDE5IEBAIHB1YmxpYzoKICAg
ICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3Qg
V1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJl
cG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5n
U3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0V2YWwoSlNDOjpFeGVj
U3RhdGUqID0gMCwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9v
bCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29u
dGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgS1VS
TCYgPSBLVVJMKCkpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiwgUmVwb3J0
aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJv
bVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJlcG9ydGluZ1N0
YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lRnJvbVNv
dXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVz
ID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25z
dCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBh
bGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVw
b3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBS
ZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Q29ubmVj
dFRvU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25z
dDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVz
ID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTY3Jp
cHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNv
bnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYgPSBVUkwoKSkg
Y29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNl
bmRSZXBvcnQpIGNvbnN0OworCisgICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxv
d09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9y
dCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dJbWFn
ZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29u
c3Q7CisgICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdT
dGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9udEZyb21Tb3VyY2Uo
Y29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9v
bCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5k
UmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNvbnN0IFVSTCYs
IFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wgYWxsb3dGb3Jt
QWN0aW9uKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRS
ZXBvcnQpIGNvbnN0OwogCiAgICAgUmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVmbGVjdGVkWFNT
RGlzcG9zaXRpb24oKSBjb25zdDsKIApAQCAtMTI0LDEyICsxMjQsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgcmVwb3J0SW52YWxpZFJlZmxlY3RlZFhTUyhjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
dm9pZCByZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAg
ICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0
IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdl
LCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8S1VSTD4mIHJlcG9ydFVSSXMs
IGNvbnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwgPSBTdHJpbmco
KSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6T3JkaW5hbE51
bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7CisgICAgdm9p
ZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29u
c3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJcywgY29uc3Qg
U3RyaW5nJiBoZWFkZXIsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmluZygpLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpi
ZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsKIAogICAgIHZvaWQgcmVw
b3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgZGlyZWN0
aXZlVGV4dCkgY29uc3Q7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICBLVVJM
IGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgdXJsKCkg
Y29uc3Q7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZvaWQgZW5mb3JjZVNh
bmRib3hGbGFncyhTYW5kYm94RmxhZ3MpIGNvbnN0OwogICAgIFN0cmluZyBldmFsRGlzYWJsZWRF
cnJvck1lc3NhZ2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDbGllbnQu
aAppbmRleCAxMjg2ZWNmZTg0MDhlMmM4ZDc5MzdkMWJiZWE2OGI2NDgxMjMyMDVlLi4yM2QzYTVh
YTY5OWY0MzE5YmZjN2NiMTFkODNhY2NmMGUzN2M1MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBDb250ZXh0TWVudUl0ZW07CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3Mg
SGl0VGVzdFJlc3VsdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC01Miw3ICs1Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKSA9IDA7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDQ0ODI5ODI5ZGRkOGM0ZjhkMDNiOWNhNzcx
ZDlkNWMwMzQwN2I3MTguLmRhMjE3ZmZhOWJjYTA1YmY2NDNlOWI2ZmJmZThjMTdhZTBkN2U3ZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAg
LTE3MSw3ICsxNzEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRN
ZW51KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAot
c3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBm
cmFtZSkKK3N0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1cmxUb0xvYWQsIEZy
YW1lKiBmcmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsK
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpKSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBDb250ZXh0TWVu
dUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgIGlmICghbV9oaXRUZXN0UmVzdWx0LmlzQ29u
dGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9IGZyYW1lLT5s
b2FkZXIoKTsKLSAgICAgICAgS1VSTCBsaW5rVVJMID0gbV9oaXRUZXN0UmVzdWx0LmFic29sdXRl
TGlua1VSTCgpOworICAgICAgICBVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0
ZUxpbmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgaWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChs
aW5rVVJMKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5rSXRlbSwgbV9j
b250ZXh0TWVudS5nZXQoKSk7CkBAIC04MzQsNyArODM0LDcgQEAgdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQ29weUxpbmtJdGVt
LCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIEtVUkwgaW1hZ2VV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworICAgICAgICBVUkwgaW1h
Z2VVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogICAgICAgICBpZiAo
IWltYWdlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCksIG1fY29udGV4
dE1lbnUuZ2V0KCkpOwpAQCAtODQ4LDcgKzg0OCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIEtVUkwgbWVkaWFV
UkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworICAgICAgICBVUkwgbWVk
aWFVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOwogICAgICAgICBpZiAo
IW1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHko
KSB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVuZEl0ZW0oKnNl
cGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC05OTEsNyArOTkxLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgfQogCiAgICAg
ICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAgICAgIEtVUkwg
bGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICAgICAgVVJM
IGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlm
ICghbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIuY2xpZW50KCku
Y2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwMGM3NmVlMDA3MjBl
NGY2MDE1OGU2YmE2YWI0NGJiN2RmYzE5MzQyLi43YTI2NGVlNGEyN2Q3Mjg1ODkwZmEyNmZkZGE2
YWJkYzhmYWVkMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5
UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmNw
cApAQCAtNDgsMjIgKzQ4LDIyIEBAIGJvb2wgaXNQb2xpY3lBY3RpdmVJbkNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gY29udGV4dC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmlzQWN0aXZlKCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFR5cGUpKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q+Cit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6OiphbGxvd1dpdGhU
eXBlKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+CiBib29sIGlzQWxsb3dlZFdpdGhU
eXBlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5Db250ZXh0KGNvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiAoY29udGV4dC0+Y29udGVudFNlY3VyaXR5UG9saWN5
KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBLVVJMKCksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6U3VwcHJlc3NSZXBvcnQpOworICAgIHJldHVybiAoY29udGV4dC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBVUkwoKSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpTdXBwcmVzc1JlcG9ydCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENvbnRl
bnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KK3RlbXBsYXRlPGJvb2wgKENvbnRl
bnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgVVJMJiwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgogYm9vbCBpc0FsbG93ZWRXaXRoVVJM
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIGlmICghaXNQb2xpY3lBY3RpdmVJbkNvbnRleHQoY29udGV4dCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgS1VSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OworICAgIFVSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGlm
ICghcGFyc2VkVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTog
RmlndXJlIG91dCBob3cgdG8gdGhyb3cgYSBKYXZhU2NyaXB0IGVycm9yLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKaW5kZXggMzZiZjJiZTBkMDA1Yjc4MmFlMmI0M2E1ZTk2ZDAwYjVlY2E1
NmNjMi4uYjY5YzljODkwZmQxNWJiMTYyM2RiODRhNjViMDA4MmYwZTg2MjM0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNzAsNyArNzAsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVyLmgiCkBAIC0xNzY5LDcgKzE3NjksNyBAQCB2b2lkIERP
TVdpbmRvdzo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdpbmRvdyog
YWN0aXZlV2luZG93LCBETwogICAgIGlmICghZmlyc3RGcmFtZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTCh1cmxTdHJpbmcpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgIGlmIChjb21wbGV0ZWRVUkwuaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBET01X
aW5kb3c6OnByaW50RXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogU3RyaW5n
IERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoRE9NV2luZG93KiBhY3Rp
dmVXaW5kb3cpCiB7Ci0gICAgY29uc3QgS1VSTCYgYWN0aXZlV2luZG93VVJMID0gYWN0aXZlV2lu
ZG93LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIGFjdGl2ZVdpbmRvd1VSTCA9
IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKGFjdGl2ZVdpbmRvd1VS
TC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xODA2LDggKzE4MDYs
OCBAQCBTdHJpbmcgRE9NV2luZG93Ojpjcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2FnZShET01X
aW5kb3cqIGFjdGl2ZVdpbmRvdykKICAgICBTdHJpbmcgbWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJh
bWUgd2l0aCBvcmlnaW4gXCIiICsgYWN0aXZlT3JpZ2luLT50b1N0cmluZygpICsgIlwiIGZyb20g
YWNjZXNzaW5nIGEgZnJhbWUgd2l0aCBvcmlnaW4gXCIiICsgdGFyZ2V0T3JpZ2luLT50b1N0cmlu
ZygpICsgIlwiLiAiOwogCiAgICAgLy8gU2FuZGJveCBlcnJvcnM6IFVzZSB0aGUgb3JpZ2luIG9m
IHRoZSBmcmFtZXMnIGxvY2F0aW9uLCByYXRoZXIgdGhhbiB0aGVpciBhY3R1YWwgb3JpZ2luIChz
aW5jZSB3ZSBrbm93IHRoYXQgYXQgbGVhc3Qgb25lIHdpbGwgYmUgIm51bGwiKS4KLSAgICBLVVJM
IGFjdGl2ZVVSTCA9IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgS1VSTCB0
YXJnZXRVUkwgPSBkb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgYWN0aXZlVVJMID0gYWN0aXZl
V2luZG93LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdGFyZ2V0VVJMID0gZG9jdW1lbnQo
KS0+dXJsKCk7CiAgICAgaWYgKGRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4p
IHx8IGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikp
IHsKICAgICAgICAgbWVzc2FnZSA9ICJCbG9ja2VkIGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShhY3RpdmVVUkwpLT50b1N0cmluZygpICsgIlwiIGZyb20gYWNjZXNzaW5n
IGEgZnJhbWUgYXQgXCIiICsgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0YXJnZXRVUkwpLT50b1N0
cmluZygpICsgIlwiLiAiOwogICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikgJiYgYWN0aXZlV2luZG93LT5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5k
Ym94T3JpZ2luKSkKQEAgLTE4NjIsNyArMTg2Miw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IERPTVdp
bmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNT
CiB7CiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlV2luZG93LT5mcmFtZSgpOwogCi0g
ICAgS1VSTCBjb21wbGV0ZWRVUkwgPSB1cmxTdHJpbmcuaXNFbXB0eSgpID8gS1VSTChQYXJzZWRV
UkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1w
dHkoKSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAoIWNvbXBsZXRlZFVS
TC5pc0VtcHR5KCkgJiYgIWNvbXBsZXRlZFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgLy8gRG9u
J3QgZXhwb3NlIGNsaWVudCBjb2RlIHRvIGludmFsaWQgVVJMcy4KICAgICAgICAgYWN0aXZlV2lu
ZG93LT5wcmludEVycm9yTWVzc2FnZSgiVW5hYmxlIHRvIG9wZW4gYSB3aW5kb3cgd2l0aCBpbnZh
bGlkIFVSTCAnIiArIGNvbXBsZXRlZFVSTC5zdHJpbmcoKSArICInLlxuIik7CkBAIC0xOTQwLDcg
KzE5NDAsNyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAgICBpZiAoIWFjdGl2ZURv
Y3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRGcmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
IAotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgICAgIFVSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZy
YW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCiAgICAgICAgIGlmICh0
YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nl
c3MoYWN0aXZlV2luZG93LCBjb21wbGV0ZWRVUkwpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdl
dEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmlu
ZGV4IDRkZWExOTkzYjY4MzdhNDk0ZGM2MThmYmFiYWFkZGRhZDNhMmFjZGUuLjg4M2ViZTI3M2Jj
NGZlODkwOTQzMjQ2Yjc4MjgxZDQ3ZGU2N2Q2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApA
QCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBjOTdmZjRkZGExZGM5Y2VhYjEzZDdmOWIwOTM4NzRj
MzFiY2NlYWFlLi4xODE4NDg3ODUxYWJlOGE3MTNmYTk2M2JlMTdiZmM2OTY0NTE5MjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzQyLDEyICs3NDIsMTIgQEAg
Ym9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdTdGF0
ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgLy8gaGlkZGVuIG9yIG1vdmVkIG91dCBm
cm9tIHVuZGVyIHRoZSBjdXJzb3IuIFJlZ2FyZGxlc3MsIHdlIGRvbid0IHdhbnQgdG8gc3RhcnQg
YSBkcmFnIG9uCiAgICAgICAgIC8vIHNvbWV0aGluZyB0aGF0J3Mgbm90IGFjdHVhbGx5IHVuZGVy
IHRoZSBkcmFnIG9yaWdpbi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEtVUkwgbGlua1VS
TCA9IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7Ci0gICAgS1VSTCBpbWFnZVVSTCA9
IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworICAgIFVSTCBsaW5rVVJMID0gaGl0
VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBVUkwgaW1hZ2VVUkwgPSBoaXRUZXN0
UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKIAogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBv
aW50ID0gc3JjLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBvc2l0aW9uKCkp
OwogCi0gICAgbV9kcmFnZ2luZ0ltYWdlVVJMID0gS1VSTCgpOworICAgIG1fZHJhZ2dpbmdJbWFn
ZVVSTCA9IFVSTCgpOwogICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHNyY09wOwogCiAgICAg
RHJhZ0ltYWdlUmVmIGRyYWdJbWFnZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmgKaW5kZXggMjgwMzg5ZjU0MWJiMjRmMDE5MGVkZjllMzE2MDcxYTQxNTEwNTZiZi4uM2M2OTEy
OGI0NTQyMzY1ZjM1MzU2YjZjYzQ4MWY0MjU0MzE4YmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkRyYWdBY3Rpb25zLmgi
CiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RGlkSW5p
dGlhdGVEcmFnKGJvb2wgaW5pdGlhdGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVk
OyB9IAogICAgICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlk
SW5pdGlhdGVEcmFnOyB9CiAgICAgICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlvbjsgfQotICAgICAgICBjb25z
dCBLVVJMJiBkcmFnZ2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdl
VVJMOyB9CisgICAgICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29u
c3QgSW50UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICAgICAg
Y29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7
IH0KICAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9CkBAIC0xMDksNyArMTA5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvSW1hZ2VEcmFnKEVsZW1lbnQqLCBjb25zdCBJbnRQ
b2ludCYsIGNvbnN0IEludFJlY3QmLCBDbGlwYm9hcmQqLCBGcmFtZSosIEludFBvaW50Jik7CiAg
ICAgICAgIHZvaWQgZG9TeXN0ZW1EcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBj
b25zdCBJbnRQb2ludCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCBmb3JMaW5rKTsKICAgICAg
ICAgdm9pZCBjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCk7Ci0gICAgICAgIHZvaWQgZGVjbGFyZUFu
ZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCosIEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCk7CisgICAgICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENs
aXBib2FyZCosIEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsKTsKIAog
ICAgICAgICBQYWdlJiBtX3BhZ2U7CiAgICAgICAgIERyYWdDbGllbnQmIG1fY2xpZW50OwpAQCAt
MTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RpZElu
aXRpYXRlRHJhZzsKICAgICAgICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVyYXRpb247
IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3du
IHdpdGhpbiBXZWJLaXQKICAgICAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwotICAgICAgICBL
VVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsKKyAgICAgICAgVVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsK
ICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGFkZTVmYzZk
MjdkNGQ5ODNmMDYzYjAwMDhjZjI4YjRmNWMyOWNmNDkuLjU5MjhjMGVkY2JlY2JmMWFjY2U5N2Uw
NzU3MTg4MDlhOTI0NjVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgdW5zaWduZWQgbG9uZyBs
b25nIEV2ZW50U291cmNlOjpkZWZhdWx0UmVjb25uZWN0RGVsYXkgPSAzMDAwOwogCi1pbmxpbmUg
RXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQoraW5s
aW5lIEV2ZW50U291cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3VybCh1cmwpCiAgICAgLCBt
X3dpdGhDcmVkZW50aWFscyhmYWxzZSkKQEAgLTgwLDcgKzgwLDcgQEAgUGFzc1JlZlB0cjxFdmVu
dFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb24KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgS1VSTCBmdWxsVVJMID0g
Y29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgZnVsbFVSTCA9IGNvbnRleHQtPmNv
bXBsZXRlVVJMKHVybCk7CiAgICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSkgewogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5oCmluZGV4IDk3ZTdjMTAwZjFhNzE4YzkzZjNmYjYyOTkxZWVlOThhYmNkZDkzZTMuLjc0Nzdl
NmYyMWQ0ZTdlZTQwYWZmMzRmOGU0YzdiNDZhMDgzZmU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJU
aW1lci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRXZlbnRTb3VyY2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBEaWN0aW9uYXJ5Jik7Cisg
ICAgRXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIGNvbnN0
IERpY3Rpb25hcnkmKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJS
SURFIEZJTkFMIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IE9WRVJSSURFIEZJTkFMIHsgZGVyZWYoKTsgfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwYXJzZUV2ZW50U3RyZWFtTGluZSh1bnNpZ25lZCBwb3MsIGludCBmaWVsZExl
bmd0aCwgaW50IGxpbmVMZW5ndGgpOwogICAgIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBjcmVh
dGVNZXNzYWdlRXZlbnQoKTsKIAotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAg
IGJvb2wgbV93aXRoQ3JlZGVudGlhbHM7CiAgICAgU3RhdGUgbV9zdGF0ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAppbmRleCBlODIxNGU0M2U3ODc5Njc4OWNjNjFlYjViMjNkZGRiYzY3MmQxOTU1Li43
YWZiODdmNjQ1M2MyZTJjNzczNjJkOTRlOTI5YWY5ODY2YjBmMGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcApAQCAtOTQ2LDcgKzk0Niw3IEBAIHZvaWQgRnJhbWU6OmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBGcmFtZTo6aXNVUkxBbGxvd2VkKGNvbnN0
IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICAvLyBXZSBhbGxvdyBvbmUgbGV2ZWwgb2Ygc2VsZi1yZWZlcmVuY2Ug
YmVjYXVzZSBzb21lIHNpdGVzIGRlcGVuZCBvbiB0aGF0LAogICAgIC8vIGJ1dCB3ZSBkb24ndCBh
bGxvdyBtb3JlIHRoYW4gb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDcwMzA2ZDkyN2I1N2E1MmQy
YTFmYjIwYWU0NWFhNjQyMDkzYzAzMGMuLjAwMmUwNTIzZjdjZWM3OTRjNTI5NTg0YzZhYzFhOTQ5
ZmMzMDYzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE5Myw3ICsxOTMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKTsKICAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5k
ZWRDb3VudCA+IDA7IH0KIAotICAgICAgICBib29sIGlzVVJMQWxsb3dlZChjb25zdCBLVVJMJikg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNVUkxBbGxvd2VkKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAg
ICAgLy8gPT09PT09PT0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDRmYmYxNDIw
NmViYWQxYjc2YzJkZjZlYWEzMjU3Mzk1MzZhZmIyMDkuLjNlMmY5NDQ0MzFlYWJhYTA0YWVmNWE5
YzM2YzU4OTkxZmEyNjc0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE4MjQs
NyArMTgyNCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXN0b3JlU2Nyb2xsYmFyKCkKICAgICBzZXRT
Y3JvbGxiYXJzU3VwcHJlc3NlZChmYWxzZSk7CiB9CiAKLWJvb2wgRnJhbWVWaWV3OjpzY3JvbGxU
b0ZyYWdtZW50KGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxUb0ZyYWdt
ZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIElmIG91ciBVUkwgaGFzIG5vIHJlZiwgdGhl
biB3ZSBoYXZlIG5vIHBsYWNlIHdlIG5lZWQgdG8ganVtcCB0by4KICAgICAvLyBPVE9IIElmIENT
UyB0YXJnZXQgd2FzIHNldCBwcmV2aW91c2x5LCB3ZSB3YW50IHRvIHNldCBpdCB0byAwLCByZWNh
bGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDAzZmMyMjI2MWY1YzkwNzVjOGJiOWRhMjY4
MTdmNmM1Nzc1NDMwNjMuLjRjYzdmNjcxZWJiNzY1NmFlODI5NjVmYTVkNjc2ZGJlYzhiOGE4NzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBFdmVudDsK
IGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVt
ZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwog
Y2xhc3MgUmVuZGVyQm94OwpAQCAtMzI1LDcgKzMyNSw3IEBAIHB1YmxpYzoKICAgICAvLyBOTyBP
VEhFUiBQTEFURk9STSBCRVNJREVTIE1BQyBTSE9VTEQgVVNFIFRISVMgTUVUSE9ELgogICAgIHZv
aWQgYWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQoZmxvYXQqIG5ld0JvdHRvbSwgZmxvYXQgb2xk
VG9wLCBmbG9hdCBvbGRCb3R0b20sIGZsb2F0IGJvdHRvbUxpbWl0KTsKIAotICAgIGJvb2wgc2Ny
b2xsVG9GcmFnbWVudChjb25zdCBLVVJMJik7CisgICAgYm9vbCBzY3JvbGxUb0ZyYWdtZW50KGNv
bnN0IFVSTCYpOwogICAgIGJvb2wgc2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBtYWludGFpblNjcm9sbFBvc2l0aW9uQXRBbmNob3IoTm9kZSopOwogICAgIHZvaWQgc2Ny
b2xsRWxlbWVudFRvUmVjdChFbGVtZW50KiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAKaW5kZXggMjVjMWZlNGIwNWI2ZGMyOGMzMDJhYmNjZWFiNzgwNzU2ZTcxNjYyYy4u
ZDNlMzE2NDFjY2I2NjViNzAxZTk5OGVjYWNkNGExOTAyNTNjYWIyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwCkBAIC0xMjcsMTMgKzEyNywxMyBAQCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICBtX2ZyYW1lLT5uYXZp
Z2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihkaXN0YW5jZSk7CiB9
CiAKLUtVUkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCitV
UkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAg
S1VSTCBiYXNlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOworICAgIFVSTCBi
YXNlVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOwogICAgIGlmICh1cmxTdHJp
bmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gYmFzZVVSTDsKIAotICAgIHJldHVybiBLVVJM
KGJhc2VVUkwsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1cmxTdHJpbmcp
OwogfQogCiB2b2lkIEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBTdGF0ZU9iamVjdFR5cGUgc3RhdGVPYmplY3RUeXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cgogICAgIGlm
ICghbV9mcmFtZSB8fCAhbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgS1VSTCBmdWxsVVJMID0gdXJsRm9yU3RhdGUodXJsU3RyaW5nKTsKKyAgICBVUkwgZnVsbFVS
TCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7CiAgICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSB8
fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChmdWxs
VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0hpc3RvcnkuaAppbmRleCBjYTk3NmE5NmM3MTYwZjQwZmIzMTMwODQ0NDIyZDNhYjNhNjhl
M2NiLi44MGI2OGQ2YzUyYTcwOGRkOTY4NDg0Zjc0ZWM0MGM4YTVlNDJmMDQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuaApAQCAtMjcsOSArMjcsOSBAQAogI2RlZmluZSBIaXN0b3J5X2gKIAogI2luY2x1
ZGUgIkRPTVdpbmRvd1Byb3BlcnR5LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjYsNyArNjYsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEhpc3RvcnkoRnJhbWUqKTsKIAotICAg
IEtVUkwgdXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIFVSTCB1cmxGb3JTdGF0
ZShjb25zdCBTdHJpbmcmIHVybCk7CiAKICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gc3RhdGVJbnRlcm5hbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmlu
ZGV4IGQ4NDM0NzhhNmIxODc5YWJmNzZmMGFkNWQ1ZmU0YTQ2YjhjYmNlNDcuLmI3NWIxZjg0OWY1
OTc3YWJiOGZiZjVhZjNjZThkNjMwYTVjNTcyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDQsMTEgKzQ0LDExIEBAIExvY2F0aW9uOjpMb2NhdGlvbihGcmFtZSog
ZnJhbWUpCiB7CiB9CiAKLWlubGluZSBjb25zdCBLVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QK
K2lubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAgIEFTU0VSVCht
X2ZyYW1lKTsKIAotICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gYmxhbmtVUkwoKTsgLy8gVXNl
ICJhYm91dDpibGFuayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdl
IGhhdmUgYSBmcmFtZSkuCiAKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpob3N0
KCkgY29uc3QKIAogICAgIC8vIE5vdGU6IHRoaXMgaXMgdGhlIElFIHNwZWMuIFRoZSBOUyBzcGVj
IHN3YXBzIHRoZSB0d28sIGl0IHNheXMKICAgICAvLyAiVGhlIGhvc3RuYW1lIHByb3BlcnR5IGlz
IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBob3N0IGFuZCBwb3J0IHByb3BlcnRpZXMsIHNlcGFy
YXRlZCBieSBhIGNvbG9uLiIKLSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAg
ICBjb25zdCBVUkwmIHVybCA9IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwuaGFzUG9ydCgp
ID8gdXJsLmhvc3QoKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHVybC5wb3J0KCkpIDogdXJsLmhv
c3QoKTsKIH0KIApAQCAtOTUsNyArOTUsNyBAQCBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25z
dAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51
cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQoKSA/IFN0cmluZzo6bnVtYmVyKHVybC5wb3J0
KCkpIDogIiI7CiB9CiAKQEAgLTEwNCw3ICsxMDQsNyBAQCBTdHJpbmcgTG9jYXRpb246OnBhdGhu
YW1lKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdGhpcy0+dXJsKCk7CiAgICAgcmV0dXJuIHVybC5wYXRoKCkuaXNFbXB0eSgpID8gIi8iIDog
dXJsLnBhdGgoKTsKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBAIFN0cmluZyBMb2NhdGlvbjo6c2Vh
cmNoKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIGNvbnN0IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJs
ID0gdGhpcy0+dXJsKCk7CiAgICAgcmV0dXJuIHVybC5xdWVyeSgpLmlzRW1wdHkoKSA/IGVtcHR5
U3RyaW5nKCkgOiAiPyIgKyB1cmwucXVlcnkoKTsKIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIHZv
aWQgTG9jYXRpb246OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIERPTVdpbmRv
dyogYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9j
b2wocHJvdG9jb2wpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgTG9jYXRpb246OnNldEhvc3QoY29uc3QgU3RyaW5n
JiBob3N0LCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93KiBmCiB7CiAgICAgaWYg
KCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwogICAgIHNldExvY2F0aW9uKHVybC5zdHJp
bmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAg
dm9pZCBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgRE9NV2lu
ZG93KiBhY3RpdmVXaW5kb3csIERPTVcKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJl
dHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVS
TCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0SG9zdChob3N0
bmFtZSk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93KTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQb3J0KGNv
bnN0IFN0cmluZyYgcG9ydFN0cmluZywgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbgog
ewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOwogICAgIGludCBwb3J0ID0gcG9ydFN0cmluZy50b0ludCgpOwogICAgIGlmIChw
b3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8IHBvcnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAg
ICB1cmwucmVtb3ZlUG9ydCgpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgTG9jYXRpb246OnNl
dFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgcGF0aG5hbWUsIERPTVdpbmRvdyogYWN0aXZlV2luZG93
LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBhdGgocGF0aG5hbWUpOwogICAgIHNldExv
Y2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0y
MDYsNyArMjA2LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0U2VhcmNoKGNvbnN0IFN0cmluZyYgc2Vh
cmNoLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2luZG8KIHsKICAgICBpZiAoIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1
cmwuc2V0UXVlcnkoc2VhcmNoKTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2
ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTG9jYXRp
b246OnNldEhhc2goY29uc3QgU3RyaW5nJiBoYXNoLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93KiBmCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
S1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgU3RyaW5nIG9sZEZyYWdtZW50SWRlbnRpZmll
ciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBTdHJpbmcgbmV3RnJhZ21lbnRJZGVu
dGlmaWVyID0gaGFzaDsKICAgICBpZiAoaGFzaFswXSA9PSAnIycpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmgKaW5kZXggYjRmOWE0YzE3OTBjZDNlM2NlYjM3YmQwNTU2ZGQzYTVlMjViMGIzNS4uOTViMDdm
OTU3NTAwOWQ1ZGFjOWU0OTM5ZDgwZjQ4OWE5ZWFlMjcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Mb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
aApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTVdpbmRv
dzsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogdHlwZWRlZiBpbnQg
RXhjZXB0aW9uQ29kZTsKIApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
ZXRMb2NhdGlvbihjb25zdCBTdHJpbmcmLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93KiBmaXJzdFdpbmRvdyk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggN2MxOGFiOTliY2E0OWU3YjNjN2E4Yzk0ZmMzOTM0NTU2ZWQwMmVj
Ny4uZjAxOWM3MDI5ZDhkNTYxZWY5MmUwMjZmOWI5YjM1YzZkYTM2MWQ5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC05NjEsNyArOTYxLDcgQEAgdm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0
aW9uQ2hhbmdlZCgpCiB7CiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIHRv
IGEgbW9kZWwgb2YganVzdCBiZWluZyBoYW5kZWQgdGhlIHNoZWV0CiAgICAgLy8gdGV4dCBpbnN0
ZWFkIG9mIGxvYWRpbmcgdGhlIFVSTCBvdXJzZWx2ZXMuCi0gICAgS1VSTCB1cmwgPSBtX3NldHRp
bmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CisgICAgVVJMIHVybCA9IG1fc2V0dGluZ3Mt
PnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKICAgICAKICAgICAvLyBBbGxvdyBhbnkgbG9jYWwg
ZmlsZSBVUkwgc2NoZW1lIHRvIGJlIGxvYWRlZC4KICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VHcm91cC5jcHAKaW5kZXggMWFkMWE1NmY2YTkxZjE3YTg0ZDQwNzA5NGM2N2Q1ZWRkNzk4NDQx
ZS4uMTU1ZjIxMDRkYTg0ZTA0ZTdkMDYxYTVlZDU3OTJiNDVjNzU1Y2QyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGlubGluZSB2b2lkIFBhZ2VHcm91
cDo6YWRkVmlzaXRlZExpbmsoTGlua0hhc2ggaGFzaCkKICAgICBwYWdlQ2FjaGUoKS0+bWFya1Bh
Z2VzRm9yVmlzdGVkTGlua1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRW
aXNpdGVkTGluayhjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhZ2VHcm91cDo6YWRkVmlzaXRlZExp
bmsoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFzaG91bGRUcmFja1Zpc2l0ZWRMaW5rcykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjczLDcgKzI3Myw3IEBAIFN0b3JhZ2VOYW1lc3BhY2UqIFBh
Z2VHcm91cDo6dHJhbnNpZW50TG9jYWxTdG9yYWdlKFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLXZvaWQgUGFn
ZUdyb3VwOjphZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25z
dCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLAordm9pZCBQYWdlR3JvdXA6OmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBVUkwmIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTY3Jp
cHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMg
aW5qZWN0ZWRGcmFtZXMpCiB7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBQYWdlR3JvdXA6OmFk
ZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYg
c291cmMKICAgICBzY3JpcHRzSW5Xb3JsZC0+YXBwZW5kKHVzZXJTY3JpcHQucmVsZWFzZSgpKTsK
IH0KIAotdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVy
V29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLAordm9p
ZCBQYWdlR3JvdXA6OmFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdv
cmxkLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxp
c3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHls
ZUxldmVsIGxldmVsLApAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgUGFnZUdyb3VwOjphZGRVc2Vy
U3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBz
CiAgICAgICAgIGludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZUluQWxsRnJhbWVzKCk7
CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBw
ZXJXb3JsZCogd29ybGQsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFnZUdyb3VwOjpyZW1vdmVV
c2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKIApAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3Js
ZCogd29ybGQsIGNvbnN0IEtVUkwmIHVyCiAgICAgICAgIG1fdXNlclNjcmlwdHMtPnJlbW92ZShp
dCk7CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjpyZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChE
T01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhZ2VHcm91cDo6
cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAppbmRleCAwMzQyMTYzOTM0YWExZTc4NzE1ZDE5ODc0YzhjZjRiNmJjMDhk
Y2MwLi45YTFkYTg1Y2E3OWQ1YjRjNTJjOWVlODBlMWU5MTYyNTc4NzFlNDIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWRMaXN0ZW5lcjsKICAgICBjbGFzcyBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOwogI2VuZGlmCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBV
Ukw7CiAgICAgY2xhc3MgR3JvdXBTZXR0aW5nczsKICAgICBjbGFzcyBJREJGYWN0b3J5QmFja2Vu
ZEludGVyZmFjZTsKICAgICBjbGFzcyBQYWdlOwpAQCAtNzMsNyArNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBpc0xpbmtWaXNpdGVkKExpbmtIYXNoKTsKIAotICAg
ICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCBhZGRW
aXNpdGVkTGluayhjb25zdCBVUkwmKTsKICAgICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25z
dCBVQ2hhciosIHNpemVfdCk7CiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoKExpbmtI
YXNoKTsKICAgICAgICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua3MoKTsKQEAgLTg5LDE2ICs4OSwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RvcmFnZU5hbWVzcGFjZSogdHJh
bnNpZW50TG9jYWxTdG9yYWdlKFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCi0gICAgICAg
IHZvaWQgYWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IEtVUkwmLAorICAgICAgICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxk
KERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0
ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUsIFVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXMpOwotICAgICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01X
cmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYsCisgICAgICAg
IHZvaWQgYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0
cmluZyYgc291cmNlLCBjb25zdCBVUkwmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxhY2tsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVc2VyU3R5bGVMZXZlbCBsZXZlbCA9IFVzZXJTdHlsZVVzZXJMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlclN0eWxlSW5qZWN0aW9uVGltZSBp
bmplY3Rpb25UaW1lID0gSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7Ci0gICAgICAgIHZvaWQg
cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBLVVJMJik7
Ci0gICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2b2lkIHJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVVJMJik7CisgICAgICAgIHZvaWQgcmVtb3ZlVXNl
clN0eWxlU2hlZXRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVVJMJik7CiAKICAg
ICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0c0Zyb21Xb3JsZChET01XcmFwcGVyV29ybGQqKTsK
ICAgICAgICAgdm9pZCByZW1vdmVVc2VyU3R5bGVTaGVldHNGcm9tV29ybGQoRE9NV3JhcHBlcldv
cmxkKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDliOTBmY2I1
NTE5MzVmMTBiYjgzZjJmYTQ0YjZmNDc0MDM4ZjgzNjYuLmQxYWQxYWE4ZTFhMzZiNDEyZTk1ZTE2
NWM2YTM0NzhlNWFmYWJiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNl
cmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
CkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBTZXJpYWxpemVyTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZEN1c3RvbUF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRlciYgb3V0LCBFbGUKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlm
ICh1cmwuaXNWYWxpZCgpICYmICF1cmwuaXNCbGFua1VSTCgpKQogICAgICAgICByZXR1cm47CiAK
QEAgLTE3NSw3ICsxNzUsNyBAQCBQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U6OlJlc291cmNlKCkK
IHsKIH0KIAotUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQorUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpCiAgICAg
OiB1cmwodXJsKQogICAgICwgbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBkYXRhKGRhdGEpCkBA
IC0xOTYsNyArMTk2LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplKFBhZ2UqIHBh
Z2UpCiB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiB7
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgS1VSTCB1
cmwgPSBkb2N1bWVudC0+dXJsKCk7CisgICAgVVJMIHVybCA9IGRvY3VtZW50LT51cmwoKTsKICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzQmxhbmtVUkwoKSkgewogICAgICAgICAvLyBG
b3IgYmxhbmsgZnJhbWVzIHdlIGdlbmVyYXRlIGEgZmFrZSBVUkwgc28gdGhleSBjYW4gYmUgcmVm
ZXJlbmNlZCBieSB0aGVpciBjb250YWluaW5nIGZyYW1lLgogICAgICAgICB1cmwgPSB1cmxGb3JC
bGFua0ZyYW1lKGZyYW1lKTsKQEAgLTIzNCwxOSArMjM0LDE5IEBAIHZvaWQgUGFnZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFtZSkKIAogICAgICAgICBpZiAoaXNIVE1MSW1h
Z2VFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFn
ZUVsZW1lbnQgPSB0b0hUTUxJbWFnZUVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgICAgICBLVVJM
IHVybCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbWFnZUVsZW1lbnQtPmdldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OnNyY0F0dHIpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29t
cGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyKSk7
CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNh
Y2hlZEltYWdlKCk7CiAgICAgICAgICAgICBhZGRJbWFnZVRvUmVzb3VyY2VzKGNhY2hlZEltYWdl
LCBpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCksIHVybCk7CiAgICAgICAgIH0gZWxzZSBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmxpbmtUYWcpKSB7CiAgICAgICAgICAgICBIVE1M
TGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4o
ZWxlbWVudCk7CiAgICAgICAgICAgICBpZiAoQ1NTU3R5bGVTaGVldCogc2hlZXQgPSBsaW5rRWxl
bWVudC0+c2hlZXQoKSkgewotICAgICAgICAgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGxpbmtFbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikp
OworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobGlua0Vs
ZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSk7CiAgICAgICAgICAgICAg
ICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwgdXJsKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVVSTHMuY29udGFpbnModXJsKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSBpZiAoaXNIVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQpKSB7CiAgICAgICAgICAg
ICBpZiAoQ1NTU3R5bGVTaGVldCogc2hlZXQgPSB0b0hUTUxTdHlsZUVsZW1lbnQoZWxlbWVudCkt
PnNoZWV0KCkpCi0gICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwg
S1VSTCgpKTsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KHNoZWV0LCBV
UkwoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBhZ2VT
ZXJpYWxpemVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgICAgIHNlcmlhbGl6
ZUZyYW1lKGNoaWxkRnJhbWUpOwogfQogCi12b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEtVUkwmIHVybCkK
K3ZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBjc3NU
ZXh0OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZVNoZWV0LT5sZW5ndGgoKTsg
KytpKSB7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
Q1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICAg
ICAgLy8gU29tZSBydWxlcyBoYXZlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlbSB0aGF0
IHdlIG5lZWQgdG8gcmV0cmlldmUuCiAgICAgICAgIGlmIChydWxlLT50eXBlKCkgPT0gQ1NTUnVs
ZTo6SU1QT1JUX1JVTEUpIHsKICAgICAgICAgICAgIENTU0ltcG9ydFJ1bGUqIGltcG9ydFJ1bGUg
PSBzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4ocnVsZSk7Ci0gICAgICAgICAgICBLVVJMIGlt
cG9ydFVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbXBvcnRSdWxlLT5ocmVmKCkpOworICAg
ICAgICAgICAgVVJMIGltcG9ydFVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChpbXBvcnRSdWxl
LT5ocmVmKCkpOwogICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKGltcG9y
dFVSTCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzZXJpYWxpemVD
U1NTdHlsZVNoZWV0KGltcG9ydFJ1bGUtPnN0eWxlU2hlZXQoKSwgaW1wb3J0VVJMKTsKQEAgLTI5
MSw3ICsyOTEsNyBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0
KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIGNvbnN0IEtVUgogICAgIH0KIH0KIAotdm9pZCBQ
YWdlU2VyaWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJl
bmRlck9iamVjdCogaW1hZ2VSZW5kZXJlciwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQYWdlU2Vy
aWFsaXplcjo6YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlck9i
amVjdCogaW1hZ2VSZW5kZXJlciwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpIHx8IG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTM0MCwxOCArMzQwLDE4IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnJldHJpZXZlUmVzb3Vy
Y2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsCiAKICAgICAgICAg
Q2FjaGVkSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KHN0eWxl
SW1hZ2UpLT5jYWNoZWRJbWFnZSgpOwogCi0gICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGltYWdlLT51cmwoKSk7CisgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+Y29t
cGxldGVVUkwoaW1hZ2UtPnVybCgpKTsKICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhpbWFn
ZSwgMCwgdXJsKTsKICAgICB9CiB9CiAKLUtVUkwgUGFnZVNlcmlhbGl6ZXI6OnVybEZvckJsYW5r
RnJhbWUoRnJhbWUqIGZyYW1lKQorVVJMIFBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFua0ZyYW1l
KEZyYW1lKiBmcmFtZSkKIHsKLSAgICBIYXNoTWFwPEZyYW1lKiwgS1VSTD46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2JsYW5rRnJhbWVVUkxzLmZpbmQoZnJhbWUpOworICAgIEhhc2hNYXA8RnJhbWUqLCBV
Ukw+OjppdGVyYXRvciBpdGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKICAgICBp
ZiAoaXRlciAhPSBtX2JsYW5rRnJhbWVVUkxzLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7CiAgICAgU3RyaW5nIHVybCA9ICJ3eWNpd3lnOi8vZnJhbWUvIiArIFN0cmluZzo6bnVt
YmVyKG1fYmxhbmtGcmFtZUNvdW50ZXIrKyk7Ci0gICAgS1VSTCBmYWtlVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKTsKKyAgICBVUkwgZmFrZVVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAg
bV9ibGFua0ZyYW1lVVJMcy5hZGQoZnJhbWUsIGZha2VVUkwpOwogCiAgICAgcmV0dXJuIGZha2VV
Ukw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggNGU4MTU3OWUyY2ZiOTBm
MGUzMTM2ZGZhYmJlMzJiYzUwMTA3MzIxNy4uMTczMWQzOWUwYjAwNzM1ZjgwYzI0YjY0MjlmMTQx
ZjRhYjlmZjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXpl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtMzEsOCAr
MzEsOCBAQAogI2lmbmRlZiBQYWdlU2VyaWFsaXplcl9oCiAjZGVmaW5lIFBhZ2VTZXJpYWxpemVy
X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJLVVJMSGFzaC5oIgorI2luY2x1ZGUg
IlVSTC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpA
QCAtNTQsMTEgKzU0LDExIEBAIGNsYXNzIFN0eWxlUnVsZTsKIGNsYXNzIFBhZ2VTZXJpYWxpemVy
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgUmVzb3VyY2UgewotICAgICAgICBLVVJMIHVybDsKKyAg
ICAgICAgVVJMIHVybDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogICAgICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhOwogICAgICAgICBSZXNvdXJjZSgpOwotICAgICAgICBSZXNvdXJj
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGEpOworICAgICAgICBSZXNvdXJjZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSk7CiAgICAgfTsKIAogICAg
IGV4cGxpY2l0IFBhZ2VTZXJpYWxpemVyKFZlY3RvcjxSZXNvdXJjZT4qKTsKQEAgLTY4LDIyICs2
OCwyMiBAQCBwdWJsaWM6CiAgICAgLy8gdmVjdG9yIGlzIHRoZSB0b3AgZnJhbWUgc2VyaWFsaXpl
ZCBjb250ZW50LgogICAgIHZvaWQgc2VyaWFsaXplKFBhZ2UqKTsKIAotICAgIEtVUkwgdXJsRm9y
QmxhbmtGcmFtZShGcmFtZSopOworICAgIFVSTCB1cmxGb3JCbGFua0ZyYW1lKEZyYW1lKik7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXJpYWxpemVGcmFtZShGcmFtZSopOwogCiAgICAgLy8gU2Vy
aWFsaXplcyB0aGUgc3R5bGVzaGVldCBiYWNrIHRvIHRleHQgYW5kIGFkZHMgaXQgdG8gdGhlIHJl
c291cmNlcyBpZiBVUkwgaXMgbm90LWVtcHR5LgogICAgIC8vIEl0IGFsc28gYWRkcyBhbnkgcmVz
b3VyY2VzIGluY2x1ZGVkIGluIHRoYXQgc3R5bGVzaGVldCAoaW5jbHVkaW5nIGFueSBpbXBvcnRl
ZCBzdHlsZXNoZWV0cyBhbmQgdGhlaXIgb3duIHJlc291cmNlcykuCi0gICAgdm9pZCBzZXJpYWxp
emVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBLVVJMJik7CisgICAgdm9pZCBz
ZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBVUkwmKTsKIAotICAg
IHZvaWQgYWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSosIFJlbmRlck9iamVjdCosIGNv
bnN0IEtVUkwmKTsKKyAgICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBS
ZW5kZXJPYmplY3QqLCBjb25zdCBVUkwmKTsKICAgICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9y
UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiwgRG9jdW1lbnQqKTsKICAgICB2b2lk
IHJldHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHlsZVJ1bGUqLCBEb2N1bWVudCopOwogCiAgICAg
VmVjdG9yPFJlc291cmNlPiogbV9yZXNvdXJjZXM7Ci0gICAgTGlzdEhhc2hTZXQ8S1VSTD4gbV9y
ZXNvdXJjZVVSTHM7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+IG1fYmxhbmtGcmFtZVVSTHM7
CisgICAgTGlzdEhhc2hTZXQ8VVJMPiBtX3Jlc291cmNlVVJMczsKKyAgICBIYXNoTWFwPEZyYW1l
KiwgVVJMPiBtX2JsYW5rRnJhbWVVUkxzOwogICAgIHVuc2lnbmVkIG1fYmxhbmtGcmFtZUNvdW50
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNl
VGltaW5nLmNwcAppbmRleCA1Mzk4NzhmNmY0NzBjZmE4MGI2YWI5ZjhkMDFhY2M4YTk1ZGVkNzUy
Li5mOGZmYzBjYzc5MTViMmFhZTQ4MmFlZTM0ZGU5MmVmNWY3OTkwNDkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRp
bWluZy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAppbmRleCBlZDI0
NDkyYzM1NTAxMGE4YmNmMDRiN2VjMzI3Yjg4MmY4YzBhMmQ4Li42Mjc2OTQ0Y2EwZmU1MmNiNWYz
NzYyMTVjYjdlMzBkMDE0YzQ5ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNDIsNyArNDIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRUaW1pbmc7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCBjZWJj
ODk2ODQ3N2RlOGMzYzRmMmI1ZTg1MDQ1NjUxN2Q4YmE0YzhjLi5jYzFjYWRhZjJiNWUyYzZiMWU2
YmFlZDRlODg3ZmVkMjIyYWM1OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogI2luY2x1ZGUg
IkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCIKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY29uc3QgaW50IEludmFsaWRQb3J0ID0gMDsKIGNvbnN0IGludCBNYXhB
bGxvd2VkUG9ydCA9IDY1NTM1OwogCi1zdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0hvc3QoY29u
c3QgS1VSTCYgdXJsKQorc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNIb3N0KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFdlIGV4cGVjdCBVUkxzIHdpdGggdGhlc2Ugc2NoZW1lcyB0byBoYXZl
IGF1dGhvcml0eSBjb21wb25lbnRzLiBJZiB0aGUKICAgICAvLyBVUkwgbGFja3MgYW4gYXV0aG9y
aXR5IGNvbXBvbmVudCwgd2UgZ2V0IGNvbmNlcm5lZCBhbmQgbWFyayB0aGUgb3JpZ2luCkBAIC01
Miw3ICs1Miw3IEBAIHN0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzSG9zdChjb25zdCBLVVJMJiB1
cmwpCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgdXJsLnByb3Rv
Y29sSXMoImZ0cCIpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVS
TChjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVS
TChjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoQkxPQikKICAgICAvLyBGSVhNRTogQmxv
YiBVUkxzIGRvbid0IGhhdmUgaW5uZXIgVVJMcy4gVGhlaXIgZm9ybSBpcyAiYmxvYjo8aW5uZXIt
b3JpZ2luPi88VVVJRD4iLCBzbyB0cmVhdGluZyB0aGUgcGFydCBhZnRlciAiYmxvYjoiIGFzIGEg
VVJMIGlzIGluY29ycmVjdC4KQEAgLTcwLDE2ICs3MCwxNiBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpzaG91bGRVc2VJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCiAvLyBJbiBnZW5lcmFsLCBleHRy
YWN0aW5nIHRoZSBpbm5lciBVUkwgdmFyaWVzIGJ5IHNjaGVtZS4gSXQganVzdCBzbyBoYXBwZW5z
CiAvLyB0aGF0IGFsbCB0aGUgVVJMIHNjaGVtZXMgd2UgY3VycmVudGx5IHN1cHBvcnQgdGhhdCB1
c2UgaW5uZXIgVVJMcyBmb3IgdGhlaXIKIC8vIHNlY3VyaXR5IG9yaWdpbiBjYW4gYmUgcGFyc2Vk
IHVzaW5nIHRoaXMgYWxnb3JpdGhtLgotS1VSTCBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVy
VVJMKGNvbnN0IEtVUkwmIHVybCkKK1VSTCBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJM
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwuaW5uZXJVUkwoKSkKICAgICAgICAgcmV0
dXJuICp1cmwuaW5uZXJVUkwoKTsKICAgICAvLyBGSVhNRTogVXBkYXRlIHRoaXMgY2FsbHNpdGUg
dG8gdXNlIHRoZSBpbm5lclVSTCBtZW1iZXIgZnVuY3Rpb24gd2hlbgogICAgIC8vIHdlIGZpbmlz
aCBpbXBsZW1lbnRpbmcgaXQuCi0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOworICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwogfQogCi1z
dGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK3N0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmln
aW4oY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgaWYgKHVybC5wcm90
b2NvbElzKCJibG9iIikpCkBAIC05MCwxOCArOTAsMTggQEAgc3RhdGljIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgS1VS
TCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBVUkwm
IHVybCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8KLSAg
ICBLVVJMIGlubmVyVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVybCkg
PyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CisgICAgVVJMIGlu
bmVyVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBTZWN1cml0
eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7CiAKICAgICAvLyBGSVhNRTogQ2hl
Y2sgd2hldGhlciBpbm5lclVSTCBpcyB2YWxpZC4KIAogICAgIC8vIEZvciBlZGdlIGNhc2UgVVJM
cyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2lu
IGlzIHVuaXF1ZS4KLSAgICAvLyBUaGlzIGlzIGFuIGFkZGl0aW9uYWwgc2FmZXR5IG5ldCBhZ2Fp
bnN0IGJ1Z3MgaW4gS1VSTCBwYXJzaW5nLCBhbmQgZm9yIG5ldHdvcmsgYmFjay1lbmRzIHRoYXQg
cGFyc2UgVVJMcyBkaWZmZXJlbnRseSwKKyAgICAvLyBUaGlzIGlzIGFuIGFkZGl0aW9uYWwgc2Fm
ZXR5IG5ldCBhZ2FpbnN0IGJ1Z3MgaW4gVVJMIHBhcnNpbmcsIGFuZCBmb3IgbmV0d29yayBiYWNr
LWVuZHMgdGhhdCBwYXJzZSBVUkxzIGRpZmZlcmVudGx5LAogICAgIC8vIGFuZCBjb3VsZCBtaXNp
bnRlcnByZXQgYW5vdGhlciBjb21wb25lbnQgZm9yIGhvc3RuYW1lLgogICAgIGlmIChzY2hlbWVS
ZXF1aXJlc0hvc3QoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3QoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRy
ZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK1NlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fcHJvdG9j
b2wodXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkp
CiAgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5sb3dl
cigpKQogICAgICwgbV9wb3J0KHVybC5wb3J0KCkpCkBAIC0xNzIsNyArMTcyLDcgQEAgU2VjdXJp
dHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKIHsK
IH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShj
b25zdCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
Y2FjaGVkT3JpZ2luID0gZ2V0Q2FjaGVkT3JpZ2luKHVybCk7CiAgICAgaWYgKGNhY2hlZE9yaWdp
bi5nZXQoKSkKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXREb21h
aW5Gcm9tRE9NKGNvbnN0IFN0cmluZyYgbmV3RG9tYWluKQogICAgIG1fZG9tYWluID0gbmV3RG9t
YWluLmxvd2VyKCk7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIC8vIEludmFsaWQgVVJMcyBhcmUgc2VjdXJlLCBhcyBhcmUgVVJMcyB3aGljaCBoYXZl
IGEgc2VjdXJlIHByb3RvY29sLgogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCBTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc1NlY3VyZSh1cmwucHJvdG9jb2woKSkpCkBAIC0y
ODcsNyArMjg3LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6cGFzc2VzRmlsZUNoZWNrKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gKG1fZmlsZVBhdGggPT0g
b3RoZXItPm1fZmlsZVBhdGgpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3Qo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKG1fdW5pdmVyc2FsQWNjZXNzKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxNCw3ICszMTQsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2lu
OjpjYW5SZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OnRhaW50c0NhbnZhcyhjb25zdCBLVVJMJiB1cmwpIGNv
bnN0Citib29sIFNlY3VyaXR5T3JpZ2luOjp0YWludHNDYW52YXMoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgaWYgKGNhblJlcXVlc3QodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzQ3LDcgKzM0Nyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJlY2VpdmVEcmFnRGF0
YShjb25zdCBTZWN1cml0eU9yaWdpbiogZHJhZ0luaXRpYXRvcikgY29uCiAvLyBodHRwIG9yIGh0
dHBzLCBvdGhlcndpc2Ugd2UgaWdub3JlIHRoZSBuZXN0aW5nIGZvciB0aGUgcHVycG9zZSBvZiBh
IHNlY3VyaXR5IGNoZWNrLiBXZSBuZWVkCiAvLyBhIGZhY2lsaXR5IGZvciByZWdpc3RlcmluZyBu
ZXN0aW5nIHNjaGVtZXMsIGFuZCBzb21lIGdlbmVyYWxpemVkIGxvZ2ljIGZvciB0aGVtLgogLy8g
VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCBhcyBhbiBvdXRjb21lIG9mIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTE5Ngotc3RhdGljIGJvb2wgaXNGZWVk
V2l0aE5lc3RlZFByb3RvY29sSW5IVFRQRmFtaWx5KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBi
b29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBVUkwmIHVybCkK
IHsKICAgICBjb25zdCBTdHJpbmcmIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKICAgICBpZiAo
IXVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkIiwgZmFsc2UpKQpAQCAtMzU5LDcgKzM1OSw3IEBA
IHN0YXRpYyBib29sIGlzRmVlZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBL
VVJMJiB1cmwpCiAgICAgICAgIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0
dHA6IiwgZmFsc2UpIHx8IHVybFN0cmluZy5zdGFydHNXaXRoKCJmZWVkc2VhcmNoOmh0dHBzOiIs
IGZhbHNlKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBLVVJM
JiB1cmwpIGNvbnN0Citib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC00OTYsNyArNDk2LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1Jhd1N0
cmluZygpIGNvbnN0CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQogewotICAgIHJl
dHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoS1VSTCgpLCBvcmlnaW5TdHJpbmcpKTsK
KyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIG9yaWdpblN0cmlu
ZykpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CkBA
IC01MDYsMzQgKzUwNiwzNCBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdAogICAgIC8vIE1ha2Ug
c3VyZSB0aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBk
YXRhYmFzZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBh
cmF0b3IxID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBNYWtlIHN1cmUgdGhl
cmUncyBhIHNlY29uZCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMiA9IGRhdGFiYXNl
SWRlbnRpZmllci5yZXZlcnNlRmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBh
cmF0b3IyID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAg
ICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAvLyBFbnN1cmUgdGhlcmUg
d2VyZSBhdCBsZWFzdCAyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiBTb21lIGhvc3RuYW1lcyBvbiBp
bnRyYW5ldHMgaGF2ZQogICAgIC8vIHVuZGVyc2NvcmVzIGluIHRoZW0sIHNvIHdlJ2xsIGFzc3Vt
ZSB0aGF0IGFueSBhZGRpdGlvbmFsIHVuZGVyc2NvcmVzIGFyZSBwYXJ0IG9mIHRoZSBob3N0Lgog
ICAgIGlmIChzZXBhcmF0b3IxID09IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUo
S1VSTCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgICAgIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlzIGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9l
c24ndCBleGlzdAogICAgIGJvb2wgcG9ydE9rYXk7CiAgICAgaW50IHBvcnQgPSBkYXRhYmFzZUlk
ZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAt
IDEpLnRvSW50KCZwb3J0T2theSk7CiAgICAgYm9vbCBwb3J0QWJzZW50ID0gKHNlcGFyYXRvcjIg
PT0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgpIC0gMSk7CiAgICAgaWYgKCEocG9ydE9rYXkg
fHwgcG9ydEFic2VudCkpCi0gICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgCiAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiBN
YXhBbGxvd2VkUG9ydCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAgICAgLy8gU3BsaXQgb3V0IHRoZSAzIHNl
Y3Rpb25zIG9mIGRhdGEKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIu
c3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIFN0cmluZyBob3N0ID0gZGF0YWJhc2VJZGVu
dGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEg
LSAxKTsKICAgICAKICAgICBob3N0ID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGhvc3QpOwot
ICAgIHJldHVybiBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsg
IjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKKyAgICByZXR1cm4gY3JlYXRlKFVS
TChVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihw
b3J0KSArICIvIikpOwogfQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwg
aW50IHBvcnQpCkBAIC01NDEsNyArNTQxLDcgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdAogICAg
IGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCiAgICAgICAgIHJldHVybiBj
cmVhdGVVbmlxdWUoKTsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoaG9zdCk7Ci0gICAgcmV0dXJuIGNyZWF0ZShLVVJMKEtVUkwoKSwgcHJvdG9jb2wg
KyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOworICAg
IHJldHVybiBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiAr
IFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7CiB9CiAKIFN0cmluZyBTZWN1cml0eU9yaWdp
bjo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmgKaW5kZXggODU3MmY0Y2U0ZjgzMTA1MzMwZmVlNjVkNDA2MTBkNWNjYmEyY2I4Ni4uZDEx
ODY2ZGUwYmRhNTNkOTA4M2YwNjNkYTg0MzY4ODk4NmRiZWRlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6CkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQmxvY2tBbGxTdG9yYWdlCiAgICAgfTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgS1VSTCYp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgVVJM
Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgp
OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRh
YmFzZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICAvLyBHZW5lcmFsbHksIHdlIGFkZCBVUkwgc2NoZW1lcyB0byB0aGlzIGxpc3Qgd2hlbiBX
ZWJLaXQgc3VwcG9ydCB0aGVtLiBGb3IKICAgICAvLyBleGFtcGxlLCB3ZSBkb24ndCBpbmNsdWRl
IHRoZSAiamFyIiBzY2hlbWUsIGV2ZW4gdGhvdWdoIEZpcmVmb3gKICAgICAvLyB1bmRlcnN0YW5k
cyB0aGF0ICJqYXIiIHVzZXMgYW4gaW5uZXIgVVJMIGZvciBpdCdzIHNlY3VyaXR5IG9yaWdpbi4K
LSAgICBzdGF0aWMgYm9vbCBzaG91bGRVc2VJbm5lclVSTChjb25zdCBLVVJMJik7Ci0gICAgc3Rh
dGljIEtVUkwgZXh0cmFjdElubmVyVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgYm9vbCBz
aG91bGRVc2VJbm5lclVSTChjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgVVJMIGV4dHJhY3RJbm5l
clVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIENyZWF0ZSBhIGRlZXAgY29weSBvZiB0aGlzIFNl
Y3VyaXR5T3JpZ2luLiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwKICAgICAvLyB3aGVuIG1hcnNoYWxs
aW5nIGEgU2VjdXJpdHlPcmlnaW4gdG8gYW5vdGhlciB0aHJlYWQuCkBAIC04OCw3ICs4OCw3IEBA
IHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYSBnaXZlbiBVUkwgaXMgc2VjdXJlLCBi
YXNlZCBlaXRoZXIgZGlyZWN0bHkgb24gaXRzCiAgICAgLy8gb3duIHByb3RvY29sLCBvciwgd2hl
biByZWxldmFudCwgb24gdGhlIHByb3RvY29sIG9mIGl0cyAiaW5uZXIgVVJMIgogICAgIC8vIFBy
b3RvY29scyBsaWtlIGJsb2I6IGFuZCBmaWxlc3lzdGVtOiBmYWxsIGludG8gdGhpcyBsYXR0ZXIg
Y2F0ZWdvcnkuCi0gICAgc3RhdGljIGJvb2wgaXNTZWN1cmUoY29uc3QgS1VSTCYpOworICAgIHN0
YXRpYyBib29sIGlzU2VjdXJlKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHNjcmlwdCBvYmplY3RzIGluIHRoZSBnaXZlbgogICAg
IC8vIFNlY3VyaXR5T3JpZ2luLiBGb3IgZXhhbXBsZSwgY2FsbCB0aGlzIGZ1bmN0aW9uIGJlZm9y
ZSBhbGxvd2luZwpAQCAtOTksMTIgKzk5LDEyIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVhZCBjb250ZW50IHJldHJpZXZlZCBmcm9t
CiAgICAgLy8gdGhlIGdpdmVuIFVSTC4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBi
ZWZvcmUgaXNzdWluZwogICAgIC8vIFhNTEh0dHBSZXF1ZXN0cy4KLSAgICBib29sIGNhblJlcXVl
c3QoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgY2FuUmVxdWVzdChjb25zdCBVUkwmKSBj
b25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBkcmF3aW5nIGFuIGltYWdlIGZyb20gdGhp
cyBVUkwgdGFpbnRzIGEgY2FudmFzIGZyb20KICAgICAvLyB0aGlzIHNlY3VyaXR5IG9yaWdpbi4g
Rm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUKICAgICAvLyBkcmF3aW5nIGFu
IGltYWdlIG9udG8gYW4gSFRNTCBjYW52YXMgZWxlbWVudCB3aXRoIHRoZSBkcmF3SW1hZ2UgQVBJ
LgotICAgIGJvb2wgdGFpbnRzQ2FudmFzKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIHRh
aW50c0NhbnZhcyhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiByZWNlaXZlIGRyYWcgY29udGVudCBmcm9tIHRoZQogICAg
IC8vIGluaXRpYXRvci4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZvcmUgYWxs
b3dpbmcgY29udGVudCB0byBiZQpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgfGRvY3VtZW50fCBjYW4gZGlzcGxheSBjb250ZW50IGZyb20gdGhlIGdp
dmVuIFVSTCAoZS5nLiwKICAgICAvLyBpbiBhbiBpZnJhbWUgb3IgYXMgYW4gaW1hZ2UpLiBGb3Ig
ZXhhbXBsZSwgd2ViIHNpdGVzIGdlbmVyYWxseSBjYW5ub3QKICAgICAvLyBkaXNwbGF5IGNvbnRl
bnQgZnJvbSB0aGUgdXNlcidzIGZpbGVzIHN5c3RlbS4KLSAgICBib29sIGNhbkRpc3BsYXkoY29u
c3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgY2FuRGlzcGxheShjb25zdCBVUkwmKSBjb25zdDsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBsb2FkIGxv
Y2FsIHJlc291cmNlcywgc3VjaAogICAgIC8vIGFzIGltYWdlcywgaWZyYW1lcywgYW5kIHN0eWxl
IHNoZWV0cywgYW5kIGNhbiBsaW5rIHRvIGxvY2FsIFVSTHMuCkBAIC0yMDksNyArMjA5LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgZXhwbGljaXQg
U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFVSTCYpOwogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKik7CiAKICAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgZnVuY3Rpb24gdG8gc29tZXRo
aW5nIG1vcmUgc2VtYW50aWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2gu
aAppbmRleCA0NTRjZjgzZWRlZWY2OThhNGU5NTdmNDQ2MTMyNGNhNzhjMWQxYzBiLi45NmI4NzU0
N2U0YWRiZmRiOTI0MWEzZTE5ODk5Zjk1ZWQ0MDFmYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW5IYXNoLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlP
cmlnaW5IYXNoX2gKICNkZWZpbmUgU2VjdXJpdHlPcmlnaW5IYXNoX2gKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNw
cAppbmRleCA1YjM2ZjRmNzE2YzQ0YmZiMDlmMjBlNjMyY2MwZDAzODZmM2NjYTNjLi5iMjRjYTk0
NDc0NTJiYTMyNGUyZTQzZjVlNmM5NGMzYWRkYzAwZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlICJPcmlnaW5B
Y2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC01MCw3ICs1MCw3
IEBAIHN0YXRpYyBPcmlnaW5BY2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiAgICAgcmV0dXJu
IG9yaWdpbkFjY2Vzc01hcDsKIH0KIAotYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJl
ZmVycmVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK2Jvb2wgU2Vj
dXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcikKIHsKICAgICBib29sIHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2Nv
bElzKHJlZmVycmVyLCAiaHR0cHMiKTsKICAgICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZl
cnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29sSXMocmVmZXJyZXIsICJodHRwIik7CkBAIC02Niw3
ICs2Niw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgcmV0dXJuICFVUkxJc1NlY3Vy
ZVVSTDsKIH0KIAotU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVy
KFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCitTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIFNlY3VyaXR5UG9s
aWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmln
aW4sIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4s
IGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0
ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdldE9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsKTsKICAgICByZXR1cm4gaXNBY2Nlc3NXaGl0ZUxpc3RlZChhY3Rp
dmVPcmlnaW4sIHRhcmdldE9yaWdpbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmgKaW5kZXggMzM3ZWVjMmIzYWRmNWNmMTIwYzQ2ODlmMGZhNmQzNmVhNGU5ZTZiMS4uYjI2
OWMxYWY1MjU0NWZmNDRmOGE0ODVhYjE3ZTZhOTM2MzQ1Zjk5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuaApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIAogY2xh
c3MgU2VjdXJpdHlQb2xpY3kgewpAQCAtNDIsMTIgKzQyLDEyIEBAIHB1YmxpYzoKICAgICAvLyBU
cnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21pdHRlZCBhY2NvcmRpbmcgdG8gdGhlCiAg
ICAgLy8gUmVmZXJyZXJQb2xpY3lEZWZhdWx0LiBJZiB5b3UgaW50ZW5kIHRvIHNlbmQgYSByZWZl
cnJlciBoZWFkZXIsIHlvdQogICAgIC8vIHNob3VsZCB1c2UgZ2VuZXJhdGVSZWZlcnJlckhlYWRl
ciBpbnN0ZWFkLgotICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJl
ZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcnJlciBwb2xp
Y3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRvIGEgZ2l2ZW4gVVJMLiBJZiB0aGUgcmVmZXJy
ZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAgIC8vIHJlZmVycmVyIGhlYWRlciBzaG91bGQg
YmUgb21pdHRlZC4KLSAgICBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVm
ZXJyZXJQb2xpY3ksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3ksIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgZW51bSBMb2NhbExvYWRQb2xp
Y3kgewogICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9u
IGxvY2FsIGxvYWRzLgpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vz
c1doaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pOwotICAgIHN0YXRpYyBib29sIGlzQWNjZXNzVG9V
UkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBL
VVJMJik7CisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFVSTCYpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBjMDQzMmQwMmExZGZm
MTBiNmQ3ZjMwZTRkZWMzZThjMThmODhiZDY2Li4wNGZiYjNmNGFhOTYyMTA4MjUzNWQ4NTJlMjYz
NTk4YzIxNjhhZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNDE0LDcgKzQxNCw3
IEBAIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkKQogICAgIG1fcGFnZS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3Qg
S1VSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKK3ZvaWQgU2V0dGluZ3M6OnNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJiB1c2VyU3R5bGVTaGVldExvY2F0aW9uKQogewogICAg
IGlmIChtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPT0gdXNlclN0eWxlU2hlZXRMb2NhdGlvbikK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGQ4YjdjYTZjMjgyMjU4
MGNmZGE3ZTllMDM0OWJkMjNhZjMzOTA5Y2QuLmVkZjY5OGM4YzdlMTY1N2ExZDU5ZWYxYjE1NzJj
YTdjYjgxZmI5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTMwLDcgKzMwLDcgQEAKICNp
bmNsdWRlICJFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIgogI2luY2x1ZGUgIkZvbnRSZW5kZXJpbmdN
b2RlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdz
TWFjcm9zLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTE1MCw4ICsxNTAsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGJvb2wp
OwogICAgICAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CiAKLSAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKGNvbnN0IEtVUkwmKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQor
ICAgICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJik7CisgICAg
ICAgIGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsgfQogCiAgICAgICAgIHZvaWQgc2V0TmVlZHNBZG9iZUZy
YW1lUmVsb2FkaW5nUXVpcmsoYm9vbCk7CiAgICAgICAgIGJvb2wgbmVlZHNBY3JvYmF0RnJhbWVS
ZWxvYWRpbmdRdWlyaygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNBZG9iZUZyYW1lUmVsb2FkaW5n
UXVpcms7IH0KQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFBhZ2UqIG1fcGFnZTsKIAogICAgICAgICBTdHJpbmcgbV9tZWRpYVR5cGVPdmVycmlkZTsKLSAg
ICAgICAgS1VSTCBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247CisgICAgICAgIFVSTCBtX3VzZXJT
dHlsZVNoZWV0TG9jYXRpb247CiAgICAgICAgIFJlZlB0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBt
X2ZvbnRHZW5lcmljRmFtaWxpZXM7CiAgICAgICAgIFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAjaWYgRU5BQkxFKFRFWFRfQVVU
T1NJWklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cAppbmRleCBjN2Q4MTliMGJkMGJjODdkOTYyMDlhYzkyNTMwYzQ2Y2EyMDJmZTMzLi5mZGFlZDFl
NTA5YjUxMDJmOTJlMmJmZTRhNjIwMDM2NDc3OGVkMjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRl
cm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QpCitib29sIFVzZXJD
b250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0
KQogewogICAgIC8vIEluIG9yZGVyIGZvciBhIFVSTCB0byBiZSBhIG1hdGNoIGl0IGhhcyB0byBi
ZSBwcmVzZW50IGluIHRoZSB3aGl0ZWxpc3QgYW5kIG5vdCBwcmVzZW50IGluIHRoZSBibGFja2xp
c3QuCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gd2hpdGVsaXN0IGF0IGFsbCwgdGhlbiBhbGwgVVJM
cyBhcmUgYXNzdW1lZCB0byBiZSBpbiB0aGUgd2hpdGVsaXN0LgpAQCAtMTEwLDcgKzExMCw3IEBA
IGJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4p
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRj
aGVzKGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6
bWF0Y2hlcyhjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7CiAgICAgaWYgKG1faW52YWxpZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjptYXRjaGVzKGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0CiAgICAgcmV0dXJuIG1h
dGNoZXNQYXRoKHRlc3QpOwogfQogCi1ib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c0hvc3QoY29uc3QgS1VSTCYgdGVzdCkgY29uc3QKK2Jvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJu
OjptYXRjaGVzSG9zdChjb25zdCBVUkwmIHRlc3QpIGNvbnN0CiB7CiAgICAgY29uc3QgU3RyaW5n
JiBob3N0ID0gdGVzdC5ob3N0KCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGhvc3QsIG1f
aG9zdCkpCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RydWN0IE1hdGNoVGVzdGVyCiAgICAgfQogfTsK
IAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0IEtVUkwmIHRl
c3QpIGNvbnN0Citib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hlc1BhdGgoY29uc3Qg
VVJMJiB0ZXN0KSBjb25zdAogewogICAgIE1hdGNoVGVzdGVyIG1hdGNoKG1fcGF0aCwgdGVzdC5w
YXRoKCkpOwogICAgIHJldHVybiBtYXRjaC50ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFVSTFBhdHRlcm4uaAppbmRleCAwZGUwNTVlZjUxNmZlMzk5YTJiYTFkYjc3ZDRm
MzMyZGZmZTM1ZjMyLi5hODY4OTJiY2U5YThlZjFkYzUxOGVjZDAyOGI5ZmNhYzQ0ZGI4OGMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogCiBjbGFzcyBVc2VyQ29udGVudFVSTFBhdHRlcm4gewogcHVibGljOgpAQCAtNDUsNyArNDUs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhbV9pbnZh
bGlkOyB9CiAKLSAgICBib29sIG1hdGNoZXMoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wg
bWF0Y2hlcyhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9zY2hlbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIGhvc3QoKSBjb25z
dCB7IHJldHVybiBtX2hvc3Q7IH0KQEAgLTUzLDEzICs1MywxMyBAQCBwdWJsaWM6CiAKICAgICBi
b29sIG1hdGNoU3ViZG9tYWlucygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0Y2hTdWJkb21haW5zOyB9
CiAgICAgCi0gICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2ts
aXN0KTsKKyAgICBzdGF0aWMgYm9vbCBtYXRjaGVzUGF0dGVybnMoY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlz
dCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBwYXJzZShjb25zdCBTdHJpbmcmIHBhdHRlcm4pOwog
Ci0gICAgYm9vbCBtYXRjaGVzSG9zdChjb25zdCBLVVJMJikgY29uc3Q7Ci0gICAgYm9vbCBtYXRj
aGVzUGF0aChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzSG9zdChjb25zdCBV
UkwmKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXNQYXRoKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAg
ICAgYm9vbCBtX2ludmFsaWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKaW5kZXggOGJiZmE0
OWJiNTUyNDk0ZmU4YzU4ZDJhMWRmOWVjMzM3NzkwMmNkZi4uOGEyYjQxMTg3NGY4ZDkzOTkwZDBl
NzY5MzExYjlmMTA4ZTMzODY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
U2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2NyaXB0LmgKQEAgLTI2LDcg
KzI2LDcgQEAKICNpZm5kZWYgVXNlclNjcmlwdF9oCiAjZGVmaW5lIFVzZXJTY3JpcHRfaAogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50
VHlwZXMuaCIKICNpbmNsdWRlICJVc2VyU2NyaXB0VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgVXNl
clNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVk
RnJhbWVzIGluamVjdGVkRnJhbWVzKQorICAgIFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmpl
Y3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogICAg
ICAgICA6IG1fc291cmNlKHNvdXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgICAgICwg
bV93aGl0ZWxpc3Qod2hpdGVsaXN0KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiB3aGl0ZWxpc3QoKSBjb25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQogICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsg
fQogICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUoKSBjb25zdCB7IHJl
dHVybiBtX2luamVjdGlvblRpbWU7IH0KQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIFN0cmluZyBtX3NvdXJjZTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3Vy
bDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX3doaXRlbGlzdDsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2JsYWNrbGlzdDsKICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBtX2luamVjdGlvblRpbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggZmM2N2Q3YWNhOGYzZTk4MTM1
ZGQ3MjdkNzMwNWEzNGU3MjFjOGVlOS4uNzIzNDQ2MmNiMTk1MjliYzk2ZjVlNjcxZTM4YWFmMGI5
ZDg2ODRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAtMjYsNyArMjYs
NyBAQAogI2lmbmRlZiBVc2VyU3R5bGVTaGVldF9oCiAjZGVmaW5lIFVzZXJTdHlsZVNoZWV0X2gK
IAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQ29u
dGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclN0eWxlU2hlZXRUeXBlcy5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzLCBVc2Vy
U3R5bGVMZXZlbCBsZXZlbCkKKyAgICBVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5q
ZWN0ZWRGcmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsKQogICAgICAgICA6IG1fc291cmNlKHNv
dXJjZSkKICAgICAgICAgLCBtX3VybCh1cmwpCiAgICAgICAgICwgbV93aGl0ZWxpc3Qod2hpdGVs
aXN0KQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5n
JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQotICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7
IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QoKSBj
b25zdCB7IHJldHVybiBtX3doaXRlbGlzdDsgfQogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBi
bGFja2xpc3QoKSBjb25zdCB7IHJldHVybiBtX2JsYWNrbGlzdDsgfQogICAgIFVzZXJDb250ZW50
SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRGcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVk
RnJhbWVzOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ibGFja2xpc3Q7CiAg
ICAgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBtX2luamVjdGVkRnJhbWVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRyb2xsZXJFZmwuY3BwCmluZGV4IDI3NTBlMmUzOWQ2
NzVkYjIyODk3OGZmMTdkNGZlMDRlODhmYzVkOGEuLmE3YTM2MDIwNWM2MzJmMmYwZTU1MWQ4YWU1
NWI5NTExODQ0NDYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdD
b250cm9sbGVyRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFnQ29udHJv
bGxlckVmbC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6Y2xlYW51
cEFmdGVyU3lzdGVtRHJhZygpCiB7CiB9CiAKLXZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2Uo
Q2xpcGJvYXJkKiwgRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCBk
NGRlMjdlMjlhZmJlMTJlOWE3MjQxMTMyYjVlOGVjYmZhNWM3MzRkLi4xNzBlODQxYWQ1NTMyNzk3
YTAwMzI3MzZlOWZhZTU0MjAxZjVhZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsv
RHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xs
ZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVy
OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2Fy
ZCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7CiAgICAgY2xpcGJvYXJkLT5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1cmws
IGxhYmVsKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0KaW5kZXggNjllYmQ2YmE0Yjg4MDgyZWM5MDQyNzljMzA4OWIwNjZkMjhhZDdiOS4uZTdiOGJj
NzdmMzQwZGI0NjZlNzdmZDkzNzU0ZTcyNjQzNGJmZWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBEcmFn
Q29udHJvbGxlcjo6Y2xlYW51cEFmdGVyU3lzdGVtRHJhZygpCiAgICAgICAgIGRyYWdFbmRlZCgp
OwogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xp
cGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV9jbGllbnQuZGVjbGFyZUFuZFdy
aXRlRHJhZ0ltYWdlKGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLm5hbWUoKSwga2l0KGVsZW1lbnQp
LCB1cmwsIGxhYmVsLCBlbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKaW5kZXggY2Q5NjMxMGNmMDMxN2Qw
MWEwYWQyOWI5YTRhZDJmMGFkY2IxNjVmYi4uNTEwZDA3ODllNzdmYmU2ZDk4MWJhYWYxNmJmMjRj
OGU3ZWE1Mjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJv
bGxlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5
c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgY2xpcGJvYXJk
LT5wYXN0ZWJvYXJkKCkud3JpdGVJbWFnZShlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCBiN2JmZWEx
NThiMmRlZTY3Y2JlMjY5YTVlYWNmYzUwZDJjNjg3ZjMzLi5kZjJmMzIwZTI1OGE3NjQxMmFhNzY0
ODliYmJjNGFjZGRmM2YyODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9E
cmFnQ29udHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0Nv
bnRyb2xsZXJXaW4uY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNs
ZWFudXBBZnRlclN5c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRHJhZ0NvbnRy
b2xsZXI6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqIGNsaXBib2FyZCwgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAg
ICAgUGFzdGVib2FyZCYgcGFzdGVib2FyZCA9IGNsaXBib2FyZC0+cGFzdGVib2FyZCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IGFmNWM1MTIzMmE5
NGQ1YzlkM2E4MmQwMjQ1ODkyYTJmYzU2OGYxNjkuLjNiMTY4NDZlOWNmMzZkMDU4ZWZhNDBmYTJi
MTBkY2FhZTA5ZDk5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5j
RmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3Rl
bS5oCkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVk
ZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzIsNTggKzcyLDU4IEBAIHB1YmxpYzoKICAg
ICAvLyBNb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0byBkZXN0UGF0aC4K
ICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzcmNQYXRoLCBjb25zdCBLVVJMJiBkZXN0
UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG1vdmUoY29uc3QgVVJMJiBzcmNQYXRoLCBjb25zdCBVUkwmIGRlc3RQYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENvcGll
cyBhIGZpbGUgb3IgZGlyZWN0b3J5IGZyb20gc3JjUGF0aCB0byBkZXN0UGF0aC4KICAgICAvLyBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUg
b3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFs
IHZvaWQgY29weShjb25zdCBLVVJMJiBzcmNQYXRoLCBjb25zdCBLVVJMJiBkZXN0UGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvcHkoY29uc3QgVVJMJiBzcmNQYXRoLCBjb25zdCBVUkwmIGRlc3RQYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIERlbGV0ZXMgYSBmaWxl
IG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8g
dHJ5IHRvIHJlbW92ZSBhIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBlbXB0eS4KICAgICAvLyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIFJlY3Vy
c2l2ZWx5IGRlbGV0ZXMgYSBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
ID0gMDsKIAogICAgIC8vIFJldHJpZXZlcyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhl
IGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRp
b24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBy
ZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAg
Ly8gQ3JlYXRlcyBhIGZpbGUgYXQgYSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMg
dHJ1ZSwgaXQgZmFpbHMgaWYgdGhlIHBhdGggYWxyZWFkeSBleGlzdHMuCiAgICAgLy8gQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJh
dGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVG
aWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBh
IGdpdmVuIHBhdGguICBJZiBleGNsdXNpdmUgZmxhZyBpcyB0cnVlLCBpdCBmYWlscyBpZiB0aGUg
cGF0aCBhbHJlYWR5IGV4aXN0cy4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMg
Y2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0
IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVS
TCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikgPSAwOwogCiAgICAgLy8gQ2hlY2tzIGlmIGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiBw
YXRoLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNh
bGxlZCBpZiB0aGUgZmlsZSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4
aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ2hlY2tz
IGlmIGEgZGlyZWN0b3J5IGV4aXN0cyBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIGlmIHRoZSBkaXJlY3Rvcnkg
ZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNh
bGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWFkcyBkaXJlY3Rv
cnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBhdCBwYXRoLgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeUVudHJ5KCkgaXMgY2FsbGVkIHdoZW4g
ZWFjaCBkaXJlY3RvcnkgZW50cnkgaXMgY2FsbGVkLiBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZFJlYWREaXJlY3RvcnlFbnRyaWVzKCkgaXMgY2FsbGVkIGFmdGVyIGEgY2h1bmsgb2YgZGly
ZWN0b3J5IGVudHJpZXMgaGF2ZSBiZWVuIHJlYWQuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KLSAgICB2aXJ0dWFs
IHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAw
OwogCiAgICAgLy8gQ3JlYXRlcyBhbiBBc3luY0ZpbGVXcml0ZXIgZm9yIGEgZ2l2ZW4gZmlsZSBw
YXRoLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkQ3JlYXRlRmlsZVdyaXRl
cigpIGlzIGNhbGxlZCB3aGVuIGFuIEFzeW5jRmlsZVdyaXRlciBpcyBjcmVhdGVkIHN1Y2Nlc3Nm
dWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxs
ZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVX
cml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gQ3JlYXRlcyBhIHNuYXBzaG90IGZpbGUgYW5kIHJl
YWQgaXRzIG1ldGFkYXRhIGZvciBhIG5ldyBGaWxlIG9iamVjdC4KICAgICAvLyBJbiBsb2NhbCBm
aWxlc3lzdGVtIGNhc2VzIHRoZSBiYWNrZW5kIG1heSBzaW1wbHkgcmV0dXJuIHRoZSBtZXRhZGF0
YSBvZiB0aGUgZmlsZSBpdHNlbGYgKGFzIHdlbGwgYXMgcmVhZE1ldGFkYXRhIGRvZXMpLApAQCAt
MTMyLDcgKzEzMiw3IEBAIHB1YmxpYzoKICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgogICAgIC8vCiAgICAgLy8gTm90ZTogdGhl
IHJldHVybmVkIG1ldGFkYXRhIGluZm8gaXMgY2FjaGVkIGluIHRoZSBGaWxlIG9iamVjdCBmb3Ig
bm9uLXJlZ3VsYXIgZmlsZXN5c3RlbSB0eXBlcyAobmVpdGhlciBUZW1wb3Jhcnkgbm9yIFBlcnNp
c3RlbnQpLiBUaGUgcG9ydCBjb3VsZCByZXR1cm4gdmFsaWQgbWV0YWRhdGEgaWYgaXQgd2FudHMg
RmlsZSBvYmplY3QgdG8gY2FjaGUgbWV0YWRhdGEgKGUuZy4gaWYgdGhlIGZpbGUgYm9keSBpcyBv
biBhIHJlbW90ZSBzZXJ2ZXIpLCBidXQgb3RoZXJ3aXNlIHNob3VsZCBOT1QgcmV0dXJuIHZhbGlk
IG1ldGFkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRh
ZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgQXN5bmNGaWxlU3lzdGVtKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4
IDAxYmVlODk3MmM0ZTExODhjMzA4NGI5ZTIzNmYwNTYzNzc2YWIxZDYuLjUxOTQ4MjQ5NzExOWE0
MDRhNGNhNmI0MjEyOWVjNzMxM2E2YTg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01MCw3ICs1MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgcmVxdWVzdGVkIGZpbGUgc3lzdGVtIGlzIG9wZW5l
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBu
YW1lICovLCBjb25zdCBLVVJMJiAvKiByb290VVJMICovLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3Bl
bkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiAvKiBuYW1lICovLCBjb25zdCBVUkwmIC8qIHJvb3RV
UkwgKi8sIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPikgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBmaWxlIG1ldGFkYXRhIGlzIHJlYWQgc3VjY2Vz
c2Z1bGx5LgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgRmlsZU1ldGFk
YXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
b29raWVzU3RyYXRlZ3kuaAppbmRleCBjMGU2ZWYyMWVjMGI0ZmI5MTlmNTQ4ZTk0ZjJjMGMzMjIy
ZDRlZThlLi42NTQwNTdkM2Q3YTdhYWJhNGIwNjAzNGE3YmRjOWJjOTVmNjM4ZGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaApAQCAtMzMsMTggKzMzLDE4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIGNsYXNzIENvb2tpZXNT
dHJhdGVneSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
fkNvb2tpZXNTdHJhdGVneSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwCmluZGV4IGMyZGI2M2M5OGFlMWIyNDI4OTVlZjZhNTQ4ZjBkMGEwZDc5
ZjY2NGMuLjJlODYxMWIwYjRjZTQ0MTRmMmFjMTNlMTI1YjEwZDI3MDkxYWJhMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAg
LTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Dcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBLVVJMPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBLVVJMPjo6Y29weShjb25zdCBLVVJMJiB1cmwpCitDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFVSTD46OmNvcHkoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIHVybC5j
b3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApp
bmRleCBiMWMxNGViMzZhYTI0NDQxYmZiYjE0NTMwMDljMTgyYTVhODBjOTVlLi5hZTJlZjI0YTEw
YmE3ZDhiMjVmMjAwZmI3NGUyNjk4YjBmMjA3ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNz
IEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC0xMjAs
OSArMTIwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAgICAgfTsKIAotICAg
IHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEtV
Ukw+IHsKLSAgICAgICAgdHlwZWRlZiBLVVJMIFR5cGU7Ci0gICAgICAgIHN0YXRpYyBUeXBlIGNv
cHkoY29uc3QgS1VSTCYpOworICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIFVSTD4geworICAgICAgICB0eXBlZGVmIFVSTCBUeXBlOworICAg
ICAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFVSTCYpOwogICAgIH07CiAKICAgICB0ZW1wbGF0
ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBTdHJpbmc+IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDI3ZGRkNmUyMzMyYzQwODg4ODY0ZmJi
ZjU2ZDY2NTk0Yjc3NGYyZTMuLjVlNzEwNmNmODY2OGI5OGE1MDM4Y2E5NTU2YmIxOWI2NmI0ZTU1
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNjksNyArNjksNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSYW5nZTsKIAogZW51bSBEcmFnQXBwbGlj
YXRpb25GbGFncyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAppbmRleCAxY2E1
MTJkNWYwMTE5Mzg4NjUzMWJjZWM3MDZlODJkZjczMGQzZDJkLi5iODFhZmQ1NzllODI5M2VlZmEy
YmE5M2I5YmI1NWMxZjUwNzZjZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGMKIH0KIAogI2lmICFQ
TEFURk9STShNQUMpICYmICghUExBVEZPUk0oV0lOKSB8fCBPUyhXSU5DRSkpCi1EcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiwgRm9udFJlbmRl
cmluZ01vZGUpCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmLCBjb25z
dCBTdHJpbmcmLCBGb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICByZXR1cm4gMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggN2MyMjg1ZTEzYWZmNzY0NjBjNDRmMDUzYTMw
ODljMDNiMDY0YzBmNi4uZmFiOTc1NDUyODUyZGIwOGRkOGYzYmNlODllYjJiZDI3ODNlN2VkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKQEAgLTUxLDcgKzUxLDcgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgSW1hZ2U7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdHlwZWRlZiBSZXRhaW5QdHI8TlNJbWFnZT4gRHJh
Z0ltYWdlUmVmOwpAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAg
ICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSosIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbik7CiAgICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUlj
b25Gb3JDYWNoZWRJbWFnZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYpOwotICAgIERyYWdJbWFnZVJl
ZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGb250
UmVuZGVyaW5nTW9kZSk7CisgICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmso
VVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9udFJlbmRlcmluZ01vZGUpOwogICAgIHZvaWQg
ZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN0cmVhbS5jcHAKaW5kZXggNWM4MTdlZGVmZmUxNzQ5NzM2MWZlNTc1MzJmMDk1MmM2ZmZk
ODBjNy4uYWQxNjU3YjAzYjM3OTM4ODg5ZGM0N2E3ZGJiNzVhMmZmZTY0N2QzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBpbnQgRmls
ZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJTaXplKQogICAgIHJldHVybiBi
eXRlc1JlYWQ7CiB9CiAKLWludCBGaWxlU3RyZWFtOjp3cml0ZShjb25zdCBLVVJMJiwgbG9uZyBs
b25nLCBpbnQpCitpbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgVVJMJiwgbG9uZyBsb25nLCBp
bnQpCiB7CiAgICAgLy8gRklYTUU6IHRvIGJlIGltcGxlbWVudGVkLgogICAgIHJldHVybiAtMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCBiYWEzOTQ4ZGMxOWJmMzU3ZTUx
ZmJkMGU3NGViNWE2YjU3ODRhMWMyLi5lZWVhYTBlYTcxZGY1YjYwYjA3NTBiNjNjNTRjMTc3MTRk
NDNhYzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBAIC00MCw3ICs0MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAog
Ly8gQWxsIG1ldGhvZHMgYXJlIHN5bmNocm9ub3VzLgogY2xhc3MgRmlsZVN0cmVhbSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZpbGVTdHJlYW0+IHsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV3JpdGVzIGEgYmxvYiB0byB0aGUgZmlsZS4KICAgICAvLyBSZXR1cm5zIG51bWJlciBv
ZiBieXRlcyBiZWluZyB3cml0dGVuIG9uIHN1Y2Nlc3MuIC0xIG90aGVyd2lzZS4KLSAgICBpbnQg
d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3Ro
KTsKKyAgICBpbnQgd3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpOwogCiAgICAgLy8gVHJ1bmNhdGVzIHRoZSBmaWxlIHRvIHRoZSBzcGVjaWZp
ZWQgcG9zaXRpb24uCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuIEZhbHNlIG90aGVy
d2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJhMDBhYzMyNDZiYmM4NmQ3NzZlMGVmYTRkNjE1ZmMwNjI4YjA2YWIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vS1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTM1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCi0KLSNpbmNsdWRlICJEZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaCIKLSNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCi0j
aW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9IZXhOdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBVU0UoSUNVX1VOSUNPREUp
Ci0jaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgotI2VuZGlmCi0KLS8vIEZJWE1FOiBUaGlzIGZp
bGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJhdG9yIG9uIFN0cmluZy4KLS8vIFdl
IGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0b3Igc28gaXQgZG9lc24ndCBpbnZv
bHZlCi0vLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFuZ2UgdGhpcyB0byB1c2UgU3RyaW5n
QnVmZmVyIGluc3RlYWQuCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2Ug
V1RGOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXR5cGVkZWYgVmVjdG9yPGNoYXIsIDUxMj4g
Q2hhckJ1ZmZlcjsKLXR5cGVkZWYgVmVjdG9yPFVDaGFyLCA1MTI+IFVDaGFyQnVmZmVyOwotCi1z
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVZhbGlkUG9ydE51bWJlciA9IDB4RkZGRTsKLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJlciA9IDB4RkZGRjsKLQotc3RhdGlj
IGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoVUNoYXIgY2hhcmFjdGVyLCBj
aGFyIGxvd2VyY2FzZUxldHRlcikKLXsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKGxvd2VyY2Fz
ZUxldHRlcikpOwotICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkgPT0gbG93ZXJjYXNlTGV0
dGVyOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciB3c1NjaGVtZVtdID0geyd3JywgJ3MnfTsKLXN0
YXRpYyBjb25zdCBjaGFyIGZ0cFNjaGVtZVtdID0geydmJywgJ3QnLCAncCd9Owotc3RhdGljIGNv
bnN0IGNoYXIgZnRwUG9ydFtdID0geycyJywgJzEnfTsKLXN0YXRpYyBjb25zdCBjaGFyIHdzc1Nj
aGVtZVtdID0geyd3JywgJ3MnLCAncyd9Owotc3RhdGljIGNvbnN0IGNoYXIgZmlsZVNjaGVtZVtd
ID0geydmJywgJ2knLCAnbCcsICdlJ307Ci1zdGF0aWMgY29uc3QgY2hhciBodHRwU2NoZW1lW10g
PSB7J2gnLCAndCcsICd0JywgJ3AnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0dHBQb3J0W10gPSB7
JzgnLCAnMCd9Owotc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNTY2hlbWVbXSA9IHsnaCcsICd0Jywg
J3QnLCAncCcsICdzJ307Ci1zdGF0aWMgY29uc3QgY2hhciBodHRwc1BvcnRbXSA9IHsnNCcsICc0
JywgJzMnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGdvcGhlclNjaGVtZVtdID0geydnJywgJ28nLCAn
cCcsICdoJywgJ2UnLCAncid9Owotc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyUG9ydFtdID0geyc3
JywgJzAnfTsKLQotc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
Y2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQotewotICAgIEFTU0VSVChpc0FT
Q0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7Ci0gICAgcmV0dXJuIChjaGFyYWN0ZXIgfCAweDIw
KSA9PSBsb3dlcmNhc2VMZXR0ZXI7Ci19Ci0KLWVudW0gVVJMQ2hhcmFjdGVyQ2xhc3NlcyB7Ci0g
ICAgLy8gYWxwaGEgCi0gICAgU2NoZW1lRmlyc3RDaGFyID0gMSA8PCAwLAotCi0gICAgLy8gKCBh
bHBoYSB8IGRpZ2l0IHwgIisiIHwgIi0iIHwgIi4iICkKLSAgICBTY2hlbWVDaGFyID0gMSA8PCAx
LAotCi0gICAgLy8gbWFyayAgICAgICAgPSAiLSIgfCAiXyIgfCAiLiIgfCAiISIgfCAifiIgfCAi
KiIgfCAiJyIgfCAiKCIgfCAiKSIKLSAgICAvLyB1bnJlc2VydmVkICA9IGFscGhhbnVtIHwgbWFy
awotICAgIC8vICggdW5yZXNlcnZlZCB8IGVzY2FwZWQgfCAiOyIgfCAiOiIgfCAiJiIgfCAiPSIg
fCAiKyIgfCAiJCIgfCAiLCIgKQotICAgIFVzZXJJbmZvQ2hhciA9IDEgPDwgMiwKLQotICAgIC8v
IGFsbnVtIHwgIi4iIHwgIi0iIHwgIiUiCi0gICAgLy8gVGhlIGFib3ZlIGlzIHdoYXQgdGhlIHNw
ZWNpZmljYXRpb24gc2F5cywgYnV0IHdlIGFyZSBsZW5pZW50IHRvCi0gICAgLy8gbWF0Y2ggZXhp
c3RpbmcgcHJhY3RpY2UgYW5kIGFsc28gYWxsb3c6Ci0gICAgLy8gIl8iCi0gICAgSG9zdG5hbWVD
aGFyID0gMSA8PCAzLAotCi0gICAgLy8gaGV4ZGlnaXQgfCAiOiIgfCAiJSIKLSAgICBJUHY2Q2hh
ciA9IDEgPDwgNCwKLQotICAgIC8vICIjIiB8ICI/IiB8ICIvIiB8IG51bAotICAgIFBhdGhTZWdt
ZW50RW5kQ2hhciA9IDEgPDwgNSwKLQotICAgIC8vIG5vdCBhbGxvd2VkIGluIHBhdGgKLSAgICBC
YWRDaGFyID0gMSA8PCA2Ci19OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBjaGFyYWN0
ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7Ci0gICAgLyogMCBudWwgKi8gUGF0aFNlZ21lbnRFbmRDaGFy
LCAgICAvKiAxIHNvaCAqLyBCYWRDaGFyLAotICAgIC8qIDIgc3R4ICovIEJhZENoYXIsICAgIC8q
IDMgZXR4ICovIEJhZENoYXIsCi0gICAgLyogNCBlb3QgKi8gQmFkQ2hhciwgICAgLyogNSBlbnEg
Ki8gQmFkQ2hhciwgICAgLyogNiBhY2sgKi8gQmFkQ2hhciwgICAgLyogNyBiZWwgKi8gQmFkQ2hh
ciwKLSAgICAvKiA4IGJzICovIEJhZENoYXIsICAgICAvKiA5IGh0ICovIEJhZENoYXIsICAgICAv
KiAxMCBubCAqLyBCYWRDaGFyLCAgICAvKiAxMSB2dCAqLyBCYWRDaGFyLAotICAgIC8qIDEyIG5w
ICovIEJhZENoYXIsICAgIC8qIDEzIGNyICovIEJhZENoYXIsICAgIC8qIDE0IHNvICovIEJhZENo
YXIsICAgIC8qIDE1IHNpICovIEJhZENoYXIsCi0gICAgLyogMTYgZGxlICovIEJhZENoYXIsICAg
LyogMTcgZGMxICovIEJhZENoYXIsICAgLyogMTggZGMyICovIEJhZENoYXIsICAgLyogMTkgZGMz
ICovIEJhZENoYXIsCi0gICAgLyogMjAgZGM0ICovIEJhZENoYXIsICAgLyogMjEgbmFrICovIEJh
ZENoYXIsICAgLyogMjIgc3luICovIEJhZENoYXIsICAgLyogMjMgZXRiICovIEJhZENoYXIsCi0g
ICAgLyogMjQgY2FuICovIEJhZENoYXIsICAgLyogMjUgZW0gKi8gQmFkQ2hhciwgICAgLyogMjYg
c3ViICovIEJhZENoYXIsICAgLyogMjcgZXNjICovIEJhZENoYXIsCi0gICAgLyogMjggZnMgKi8g
QmFkQ2hhciwgICAgLyogMjkgZ3MgKi8gQmFkQ2hhciwgICAgLyogMzAgcnMgKi8gQmFkQ2hhciwg
ICAgLyogMzEgdXMgKi8gQmFkQ2hhciwKLSAgICAvKiAzMiBzcCAqLyBCYWRDaGFyLCAgICAvKiAz
MyAgISAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogMzQgICIgKi8gQmFkQ2hhciwgICAgLyogMzUg
ICMgKi8gUGF0aFNlZ21lbnRFbmRDaGFyIHwgQmFkQ2hhciwKLSAgICAvKiAzNiAgJCAqLyBVc2Vy
SW5mb0NoYXIsICAgIC8qIDM3ICAlICovIFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQ
djZDaGFyIHwgQmFkQ2hhciwKLSAgICAvKiAzOCAgJiAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDM5
ICAnICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0MCAgKCAqLyBVc2VySW5mb0NoYXIsICAgIC8q
IDQxICApICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0MiAgKiAqLyBVc2VySW5mb0NoYXIsICAg
IC8qIDQzICArICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIsCi0gICAgLyogNDQgICwgKi8g
VXNlckluZm9DaGFyLAotICAgIC8qIDQ1ICAtICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNDYgIC4gKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDQ3ICAvICovIFBhdGhTZWdtZW50
RW5kQ2hhciwKLSAgICAvKiA0OCAgMCAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDQ5ICAxICovIFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgICAgCi0gICAgLyogNTAgIDIgKi8g
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAg
ICAvKiA1MSAgMyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwg
SVB2NkNoYXIsCi0gICAgLyogNTIgIDQgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA1MyAgNSAqLyBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNTQgIDYgKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAv
KiA1NSAgNyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2
NkNoYXIsCi0gICAgLyogNTYgIDggKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA1NyAgOSAqLyBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNTggIDogKi8gVXNlcklu
Zm9DaGFyIHwgSVB2NkNoYXIsICAgIC8qIDU5ICA7ICovIFVzZXJJbmZvQ2hhciwKLSAgICAvKiA2
MCAgPCAqLyBCYWRDaGFyLCAgICAvKiA2MSAgPSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNjIg
ID4gKi8gQmFkQ2hhciwgICAgLyogNjMgID8gKi8gUGF0aFNlZ21lbnRFbmRDaGFyIHwgQmFkQ2hh
ciwKLSAgICAvKiA2NCAgQCAqLyAwLAotICAgIC8qIDY1ICBBICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgICAg
Ci0gICAgLyogNjYgIEIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDY3ICBDICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2
Q2hhciwKLSAgICAvKiA2OCAgRCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNjkgIEUgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8
IElQdjZDaGFyLAotICAgIC8qIDcwICBGICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA3MSAgRyAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyLAotICAgIC8qIDcyICBIICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzMgIEkgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3NCAg
SiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAotICAgIC8qIDc1ICBLICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzYgIEwgKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA3
NyAgTSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLAotICAgIC8qIDc4ICBOICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzkgIE8gKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAv
KiA4MCAgUCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAotICAgIC8qIDgxICBRICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODIgIFIgKi8gU2NoZW1l
Rmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAg
ICAvKiA4MyAgUyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg0ICBUICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODUgIFUgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
LSAgICAvKiA4NiAgViAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg3ICBXICovIFNjaGVtZUZpcnN0Q2hhciB8IFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogODggIFggKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwgCi0gICAgLyogODkgIFkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA5MCAgWiAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDkxICBb
ICovIDAsCi0gICAgLyogOTIgIFwgKi8gMCwgICAgLyogOTMgIF0gKi8gMCwKLSAgICAvKiA5NCAg
XiAqLyAwLAotICAgIC8qIDk1ICBfICovIFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAg
ICAvKiA5NiAgYCAqLyAwLAotICAgIC8qIDk3ICBhICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA5
OCAgYiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDk5ICBjICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAg
ICAvKiAxMDAgIGQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiAxMDEgIGUgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAotICAgIC8qIDEwMiAgZiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAotICAgIC8qIDEwMyAgZyAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LAotICAgIC8qIDEwNCAgaCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMDUgIGkgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMDYg
IGogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwgCi0gICAgLyogMTA3ICBrICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTA4ICBsICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAg
IC8qIDEwOSAgbSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDExMCAgbiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMTEgIG8gKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKLSAgICAvKiAxMTIgIHAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTEzICBxICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE0
ICByICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsIAotICAgIC8qIDExNSAgcyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDExNiAgdCAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAg
ICAvKiAxMTcgIHUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTggIHYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTE5ICB3ICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogMTIwICB4ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDEyMSAgeSAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEy
MiAgeiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLCAKLSAgICAvKiAxMjMgIHsgKi8gMCwKLSAgICAvKiAxMjQgIHwgKi8gMCwgICAv
KiAxMjUgIH0gKi8gMCwgICAvKiAxMjYgIH4gKi8gVXNlckluZm9DaGFyLCAgIC8qIDEyNyBkZWwg
Ki8gQmFkQ2hhciwKLSAgICAvKiAxMjggKi8gQmFkQ2hhciwgLyogMTI5ICovIEJhZENoYXIsIC8q
IDEzMCAqLyBCYWRDaGFyLCAvKiAxMzEgKi8gQmFkQ2hhciwKLSAgICAvKiAxMzIgKi8gQmFkQ2hh
ciwgLyogMTMzICovIEJhZENoYXIsIC8qIDEzNCAqLyBCYWRDaGFyLCAvKiAxMzUgKi8gQmFkQ2hh
ciwKLSAgICAvKiAxMzYgKi8gQmFkQ2hhciwgLyogMTM3ICovIEJhZENoYXIsIC8qIDEzOCAqLyBC
YWRDaGFyLCAvKiAxMzkgKi8gQmFkQ2hhciwKLSAgICAvKiAxNDAgKi8gQmFkQ2hhciwgLyogMTQx
ICovIEJhZENoYXIsIC8qIDE0MiAqLyBCYWRDaGFyLCAvKiAxNDMgKi8gQmFkQ2hhciwKLSAgICAv
KiAxNDQgKi8gQmFkQ2hhciwgLyogMTQ1ICovIEJhZENoYXIsIC8qIDE0NiAqLyBCYWRDaGFyLCAv
KiAxNDcgKi8gQmFkQ2hhciwKLSAgICAvKiAxNDggKi8gQmFkQ2hhciwgLyogMTQ5ICovIEJhZENo
YXIsIC8qIDE1MCAqLyBCYWRDaGFyLCAvKiAxNTEgKi8gQmFkQ2hhciwKLSAgICAvKiAxNTIgKi8g
QmFkQ2hhciwgLyogMTUzICovIEJhZENoYXIsIC8qIDE1NCAqLyBCYWRDaGFyLCAvKiAxNTUgKi8g
QmFkQ2hhciwKLSAgICAvKiAxNTYgKi8gQmFkQ2hhciwgLyogMTU3ICovIEJhZENoYXIsIC8qIDE1
OCAqLyBCYWRDaGFyLCAvKiAxNTkgKi8gQmFkQ2hhciwKLSAgICAvKiAxNjAgKi8gQmFkQ2hhciwg
LyogMTYxICovIEJhZENoYXIsIC8qIDE2MiAqLyBCYWRDaGFyLCAvKiAxNjMgKi8gQmFkQ2hhciwK
LSAgICAvKiAxNjQgKi8gQmFkQ2hhciwgLyogMTY1ICovIEJhZENoYXIsIC8qIDE2NiAqLyBCYWRD
aGFyLCAvKiAxNjcgKi8gQmFkQ2hhciwKLSAgICAvKiAxNjggKi8gQmFkQ2hhciwgLyogMTY5ICov
IEJhZENoYXIsIC8qIDE3MCAqLyBCYWRDaGFyLCAvKiAxNzEgKi8gQmFkQ2hhciwKLSAgICAvKiAx
NzIgKi8gQmFkQ2hhciwgLyogMTczICovIEJhZENoYXIsIC8qIDE3NCAqLyBCYWRDaGFyLCAvKiAx
NzUgKi8gQmFkQ2hhciwKLSAgICAvKiAxNzYgKi8gQmFkQ2hhciwgLyogMTc3ICovIEJhZENoYXIs
IC8qIDE3OCAqLyBCYWRDaGFyLCAvKiAxNzkgKi8gQmFkQ2hhciwKLSAgICAvKiAxODAgKi8gQmFk
Q2hhciwgLyogMTgxICovIEJhZENoYXIsIC8qIDE4MiAqLyBCYWRDaGFyLCAvKiAxODMgKi8gQmFk
Q2hhciwKLSAgICAvKiAxODQgKi8gQmFkQ2hhciwgLyogMTg1ICovIEJhZENoYXIsIC8qIDE4NiAq
LyBCYWRDaGFyLCAvKiAxODcgKi8gQmFkQ2hhciwKLSAgICAvKiAxODggKi8gQmFkQ2hhciwgLyog
MTg5ICovIEJhZENoYXIsIC8qIDE5MCAqLyBCYWRDaGFyLCAvKiAxOTEgKi8gQmFkQ2hhciwKLSAg
ICAvKiAxOTIgKi8gQmFkQ2hhciwgLyogMTkzICovIEJhZENoYXIsIC8qIDE5NCAqLyBCYWRDaGFy
LCAvKiAxOTUgKi8gQmFkQ2hhciwKLSAgICAvKiAxOTYgKi8gQmFkQ2hhciwgLyogMTk3ICovIEJh
ZENoYXIsIC8qIDE5OCAqLyBCYWRDaGFyLCAvKiAxOTkgKi8gQmFkQ2hhciwKLSAgICAvKiAyMDAg
Ki8gQmFkQ2hhciwgLyogMjAxICovIEJhZENoYXIsIC8qIDIwMiAqLyBCYWRDaGFyLCAvKiAyMDMg
Ki8gQmFkQ2hhciwKLSAgICAvKiAyMDQgKi8gQmFkQ2hhciwgLyogMjA1ICovIEJhZENoYXIsIC8q
IDIwNiAqLyBCYWRDaGFyLCAvKiAyMDcgKi8gQmFkQ2hhciwKLSAgICAvKiAyMDggKi8gQmFkQ2hh
ciwgLyogMjA5ICovIEJhZENoYXIsIC8qIDIxMCAqLyBCYWRDaGFyLCAvKiAyMTEgKi8gQmFkQ2hh
ciwKLSAgICAvKiAyMTIgKi8gQmFkQ2hhciwgLyogMjEzICovIEJhZENoYXIsIC8qIDIxNCAqLyBC
YWRDaGFyLCAvKiAyMTUgKi8gQmFkQ2hhciwKLSAgICAvKiAyMTYgKi8gQmFkQ2hhciwgLyogMjE3
ICovIEJhZENoYXIsIC8qIDIxOCAqLyBCYWRDaGFyLCAvKiAyMTkgKi8gQmFkQ2hhciwKLSAgICAv
KiAyMjAgKi8gQmFkQ2hhciwgLyogMjIxICovIEJhZENoYXIsIC8qIDIyMiAqLyBCYWRDaGFyLCAv
KiAyMjMgKi8gQmFkQ2hhciwKLSAgICAvKiAyMjQgKi8gQmFkQ2hhciwgLyogMjI1ICovIEJhZENo
YXIsIC8qIDIyNiAqLyBCYWRDaGFyLCAvKiAyMjcgKi8gQmFkQ2hhciwKLSAgICAvKiAyMjggKi8g
QmFkQ2hhciwgLyogMjI5ICovIEJhZENoYXIsIC8qIDIzMCAqLyBCYWRDaGFyLCAvKiAyMzEgKi8g
QmFkQ2hhciwKLSAgICAvKiAyMzIgKi8gQmFkQ2hhciwgLyogMjMzICovIEJhZENoYXIsIC8qIDIz
NCAqLyBCYWRDaGFyLCAvKiAyMzUgKi8gQmFkQ2hhciwKLSAgICAvKiAyMzYgKi8gQmFkQ2hhciwg
LyogMjM3ICovIEJhZENoYXIsIC8qIDIzOCAqLyBCYWRDaGFyLCAvKiAyMzkgKi8gQmFkQ2hhciwK
LSAgICAvKiAyNDAgKi8gQmFkQ2hhciwgLyogMjQxICovIEJhZENoYXIsIC8qIDI0MiAqLyBCYWRD
aGFyLCAvKiAyNDMgKi8gQmFkQ2hhciwKLSAgICAvKiAyNDQgKi8gQmFkQ2hhciwgLyogMjQ1ICov
IEJhZENoYXIsIC8qIDI0NiAqLyBCYWRDaGFyLCAvKiAyNDcgKi8gQmFkQ2hhciwKLSAgICAvKiAy
NDggKi8gQmFkQ2hhciwgLyogMjQ5ICovIEJhZENoYXIsIC8qIDI1MCAqLyBCYWRDaGFyLCAvKiAy
NTEgKi8gQmFkQ2hhciwKLSAgICAvKiAyNTIgKi8gQmFkQ2hhciwgLyogMjUzICovIEJhZENoYXIs
IC8qIDI1NCAqLyBCYWRDaGFyLCAvKiAyNTUgKi8gQmFkQ2hhcgotfTsKLQotc3RhdGljIGludCBj
b3B5UGF0aFJlbW92aW5nRG90cyhjaGFyKiBkc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IHNyY1N0
YXJ0LCBpbnQgc3JjRW5kKTsKLXN0YXRpYyB2b2lkIGVuY29kZVJlbGF0aXZlU3RyaW5nKGNvbnN0
IFN0cmluZyYgcmVsLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBDaGFyQnVmZmVyJiBvdXB1dCk7Ci1z
dGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmKTsKLQotc3Rh
dGljIGlubGluZSBib29sIGlzU2NoZW1lRmlyc3RDaGFyKGNoYXIgYykgeyByZXR1cm4gY2hhcmFj
dGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBTY2hlbWVGaXJz
dENoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hhcihVQ2hhciBjKSB7
IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBTY2hlbWVGaXJz
dENoYXIpOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyKGNoYXIgYykgeyByZXR1
cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBT
Y2hlbWVDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVDaGFyKFVDaGFyIGMpIHsg
cmV0dXJuIGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFNjaGVtZUNoYXIp
OyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNVc2VySW5mb0NoYXIodW5zaWduZWQgY2hhciBjKSB7
IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgVXNlckluZm9DaGFyOyB9Ci1zdGF0aWMg
aW5saW5lIGJvb2wgaXNIb3N0bmFtZUNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NdICYgSG9zdG5hbWVDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wg
aXNJUHY2Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVb
Y10gJiBJUHY2Q2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzUGF0aFNlZ21lbnRFbmRDaGFy
KGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihjKV0gJiBQYXRoU2VnbWVudEVuZENoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c1BhdGhTZWdtZW50RW5kQ2hhcihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJh
Y3RlckNsYXNzVGFibGVbY10gJiBQYXRoU2VnbWVudEVuZENoYXIpOyB9Ci1zdGF0aWMgaW5saW5l
IGJvb2wgaXNCYWRDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjXSAmIEJhZENoYXI7IH0KLSAgICAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUNo
YXJhY3Rlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFjdGVyLCBjaGFyIHNjaGVtZUNoYXJh
Y3RlcikKLXsKLSAgICBBU1NFUlQoaXNTY2hlbWVDaGFyKGNoYXJhY3RlcikpOwotICAgIEFTU0VS
VChzY2hlbWVDaGFyYWN0ZXIgJiAweDIwKTsKLSAgICBBU1NFUlQoaXNBU0NJSUxvd2VyKHNjaGVt
ZUNoYXJhY3RlcikgfHwgKCFpc0FTQ0lJVXBwZXIoc2NoZW1lQ2hhcmFjdGVyKSAmJiBpc1NjaGVt
ZUNoYXIoc2NoZW1lQ2hhcmFjdGVyKSkpOwotICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgyMCkg
PT0gc2NoZW1lQ2hhcmFjdGVyOwotfQotCi0vLyBDb3BpZXMgdGhlIHNvdXJjZSB0byB0aGUgZGVz
dGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNoYXJhY3RlcnMgYXJlCi0vLyBBU0NJ
SS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxhcmdlIGVub3VnaC4gTnVsbCBjaGFy
YWN0ZXJzIGFyZSBhbGxvd2VkCi0vLyBpbiB0aGUgc291cmNlIHN0cmluZywgYW5kIG5vIGF0dGVt
cHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVzdWx0Lgotc3RhdGljIHZvaWQgY29w
eUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBkZXN0KQotewotICAgIGlmIChzdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoc3RyaW5nLmlzOEJpdCgp
KQotICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBzcmMgPSBzdHJpbmcuY2hh
cmFjdGVyczE2KCk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBk
ZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIGFwcGVuZEFTQ0lJKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgY2hhciogcmVsLCBzaXpl
X3QgbGVuLCBDaGFyQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgYnVmZmVyLnJlc2l6ZShiYXNlLmxl
bmd0aCgpICsgbGVuICsgMSk7Ci0gICAgY29weUFTQ0lJKGJhc2UsIGJ1ZmZlci5kYXRhKCkpOwot
ICAgIG1lbWNweShidWZmZXIuZGF0YSgpICsgYmFzZS5sZW5ndGgoKSwgcmVsLCBsZW4pOwotICAg
IGJ1ZmZlcltidWZmZXIuc2l6ZSgpIC0gMV0gPSAnXDAnOwotfQotCi0vLyBGSVhNRTogTW92ZSB0
byBXVEZTdHJpbmcuaCBldmVudHVhbGx5LgotLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZp
cnN0IGluZGV4IGluIHN0cmluZyB8c3wgb2YgYW55IG9mIHRoZSBjaGFyYWN0ZXJzCi0vLyBpbiB8
dG9GaW5kfC4gfHRvRmluZHwgc2hvdWxkIGJlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgYWxs
IGNoYXJhY3RlcnMgdXAKLS8vIHRvIHRoZSBudWxsIHdpbGwgYmUgc2VhcmNoZWQuIFJldHVybnMg
aW50IGlmIG5vdCBmb3VuZC4KLXN0YXRpYyBpbnQgZmluZEZpcnN0T2YoY29uc3QgVUNoYXIqIHMs
IGludCBzTGVuLCBpbnQgc3RhcnRQb3MsIGNvbnN0IGNoYXIqIHRvRmluZCkKLXsKLSAgICBmb3Ig
KGludCBpID0gc3RhcnRQb3M7IGkgPCBzTGVuOyBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciog
Y3VyID0gdG9GaW5kOwotICAgICAgICB3aGlsZSAoKmN1cikgewotICAgICAgICAgICAgaWYgKHNb
aV0gPT0gKihjdXIrKykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgY2hlY2tFbmNvZGVk
U3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVF9VTlVTRUQodXJsLCB1cmwu
Y29udGFpbnNPbmx5QVNDSUkoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh1cmwsIHVybC5pc0VtcHR5
KCkgfHwgaXNTY2hlbWVGaXJzdENoYXIodXJsWzBdKSk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6
OnByb3RvY29sSXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHByb3RvY29sKQot
ewotICAgIHJldHVybiBXZWJDb3JlOjpwcm90b2NvbElzKHN0cmluZywgcHJvdG9jb2wpOwotfQot
Ci12b2lkIEtVUkw6OmludmFsaWRhdGUoKQotewotICAgIG1faXNWYWxpZCA9IGZhbHNlOwotICAg
IG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOwotICAgIG1fc2NoZW1lRW5kID0gMDsK
LSAgICBtX3VzZXJTdGFydCA9IDA7Ci0gICAgbV91c2VyRW5kID0gMDsKLSAgICBtX3Bhc3N3b3Jk
RW5kID0gMDsKLSAgICBtX2hvc3RFbmQgPSAwOwotICAgIG1fcG9ydEVuZCA9IDA7Ci0gICAgbV9w
YXRoRW5kID0gMDsKLSAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IDA7Ci0gICAgbV9xdWVyeUVu
ZCA9IDA7Ci0gICAgbV9mcmFnbWVudEVuZCA9IDA7Ci19Ci0KLUtVUkw6OktVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBwYXJzZSh1cmwpOwotICAgIEFT
U0VSVCh1cmwgPT0gbV9zdHJpbmcpOwotfQotCi1LVVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2Us
IGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpCi17Ci0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRG
OEVuY29kaW5nKCkpOwotfQotCi1LVVJMOjpLVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0
cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgLy8g
Rm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkgcGFy
dCBhcyAKLSAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0gd2l0aCBH
RVQgbWV0aG9kCi0gICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBhcyBxdWVy
eSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCi0gICAgLy8gdG8gYmUgY29uc2lzdGVudC4KLSAg
ICBpbml0KGJhc2UsIHJlbGF0aXZlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9u
KCkpOwotfQotCi1zdGF0aWMgYm9vbCBzaG91bGRUcmltRnJvbVVSTCh1bnNpZ25lZCBjaGFyIGMp
Ci17Ci0gICAgLy8gQnJvd3NlcnMgaWdub3JlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBh
bmQgY29udHJvbAotICAgIC8vIGNoYXJhY3RlcnMgZnJvbSBVUkxzLiAgTm90ZSB0aGF0IGMgaXMg
YW4gKnVuc2lnbmVkKiBjaGFyIGhlcmUKLSAgICAvLyBzbyB0aGlzIGNvbXBhcmlzb24gc2hvdWxk
IG9ubHkgY2F0Y2ggY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIHJldHVybiBjIDw9ICcgJzsKLX0K
LQotdm9pZCBLVVJMOjppbml0KGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgLy8gQWxsb3cgcmVzb2x1
dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBhbnkgb3Ro
ZXIgaW52YWxpZCBvbmUuCi0gICAgLy8gRklYTUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/Ci0gICAg
aWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFzZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9zdHJp
bmcgPSByZWxhdGl2ZTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW4gSUUsIHRyZWF0IGJhY2tz
bGFzaGVzIGFzIGlmIHRoZXkgd2VyZSBzbGFzaGVzLAotICAgIC8vIGFzIGxvbmcgYXMgd2UncmUg
bm90IGRlYWxpbmcgd2l0aCBqYXZhc2NyaXB0OiBvciBkYXRhOiBVUkxzLgotICAgIFN0cmluZyBy
ZWwgPSByZWxhdGl2ZTsKLSAgICBpZiAocmVsLmNvbnRhaW5zKCdcXCcpICYmICEocHJvdG9jb2xJ
c0phdmFTY3JpcHQocmVsKSB8fCBwcm90b2NvbElzKHJlbCwgImRhdGEiKSkpCi0gICAgICAgIHJl
bCA9IHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhyZWwpOwotCi0gICAgYm9vbCBhbGxBU0NJSSA9IHJl
bC5jb250YWluc09ubHlBU0NJSSgpOwotICAgIENoYXJCdWZmZXIgc3RyQnVmZmVyOwotICAgIGNo
YXIqIHN0cjsKLSAgICBzaXplX3QgbGVuOwotICAgIGlmIChhbGxBU0NJSSkgewotICAgICAgICBs
ZW4gPSByZWwubGVuZ3RoKCk7Ci0gICAgICAgIHN0ckJ1ZmZlci5yZXNpemUobGVuICsgMSk7Ci0g
ICAgICAgIGNvcHlBU0NJSShyZWwsIHN0ckJ1ZmZlci5kYXRhKCkpOwotICAgICAgICBzdHJCdWZm
ZXJbbGVuXSA9IDA7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRhKCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgZW5jb2RlUmVsYXRpdmVTdHJpbmcocmVsLCBlbmNvZGluZywgc3RyQnVmZmVy
KTsKLSAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKLSAgICAgICAgbGVuID0gc3RybGVu
KHN0cik7Ci0gICAgfQotCi0gICAgLy8gR2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRlc3BhY2UgYW5k
IGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJM
KCpzdHIpKSB7Ci0gICAgICAgIHN0cisrOwotICAgICAgICAtLWxlbjsKLSAgICB9Ci0KLSAgICAv
LyBHZXQgcmlkIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4K
LSAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJMKHN0cltsZW4gLSAxXSkpCi0gICAg
ICAgIHN0clstLWxlbl0gPSAnXDAnOwotCi0gICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBSRkMsIHRo
ZSByZWZlcmVuY2Ugc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGFuCi0gICAgLy8gYWJzb2x1dGUg
VVJJIGlmIHBvc3NpYmxlLCB1c2luZyB0aGUgImxlZnRtb3N0LCBsb25nZXN0IgotICAgIC8vIGFs
Z29yaXRobS4gSWYgdGhlIFVSSSByZWZlcmVuY2UgaXMgYWJzb2x1dGUgaXQgd2lsbCBoYXZlIGEK
LSAgICAvLyBzY2hlbWUsIG1lYW5pbmcgdGhhdCBpdCB3aWxsIGhhdmUgYSBjb2xvbiBiZWZvcmUg
dGhlIGZpcnN0Ci0gICAgLy8gbm9uLXNjaGVtZSBlbGVtZW50LgotICAgIGJvb2wgYWJzb2x1dGUg
PSBmYWxzZTsKLSAgICBjaGFyKiBwID0gc3RyOwotICAgIGlmIChpc1NjaGVtZUZpcnN0Q2hhcigq
cCkpIHsKLSAgICAgICAgKytwOwotICAgICAgICB3aGlsZSAoaXNTY2hlbWVDaGFyKCpwKSkgewot
ICAgICAgICAgICAgKytwOwotICAgICAgICB9Ci0gICAgICAgIGlmICgqcCA9PSAnOicpIHsKLSAg
ICAgICAgICAgIGlmIChwWzFdICE9ICcvJyAmJiBlcXVhbElnbm9yaW5nQ2FzZShiYXNlLnByb3Rv
Y29sKCksIFN0cmluZyhzdHIsIHAgLSBzdHIpKSAmJiBiYXNlLmlzSGllcmFyY2hpY2FsKCkpCi0g
ICAgICAgICAgICAgICAgc3RyID0gcCArIDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgYWJzb2x1dGUgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQ2hhckJ1ZmZl
ciBwYXJzZUJ1ZmZlcjsKLQotICAgIGlmIChhYnNvbHV0ZSkgewotICAgICAgICBwYXJzZShzdHIs
ICZyZWxhdGl2ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gSWYgdGhlIGJhc2UgaXMgZW1w
dHkgb3Igb3BhcXVlIChlLmcuIGRhdGE6IG9yIGphdmFzY3JpcHQ6KSwgdGhlbiB0aGUgVVJMIGlz
IGludmFsaWQKLSAgICAgICAgLy8gdW5sZXNzIHRoZSByZWxhdGl2ZSBVUkwgaXMgYSBzaW5nbGUg
ZnJhZ21lbnQuCi0gICAgICAgIGlmICghYmFzZS5pc0hpZXJhcmNoaWNhbCgpKSB7Ci0gICAgICAg
ICAgICBpZiAoc3RyWzBdID09ICcjJykgewotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJh
c2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIp
OwotICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSByZWxhdGl2
ZTsKLSAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHN0clswXSkgewotICAg
ICAgICBjYXNlICdcMCc6Ci0gICAgICAgICAgICAvLyBUaGUgcmVmZXJlbmNlIGlzIGVtcHR5LCBz
byB0aGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIGRvY3VtZW50IHdpdGggYW55IGZyYWdt
ZW50IGlkZW50aWZpZXIgcmVtb3ZlZC4KLSAgICAgICAgICAgICp0aGlzID0gYmFzZTsKLSAgICAg
ICAgICAgIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgJyMnOiB7Ci0gICAgICAgICAgICAvLyBtdXN0IGJlIGZyYWdtZW50LW9ubHkg
cmVmZXJlbmNlCi0gICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFz
ZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgIHBhcnNl
KHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgJz8nOiB7Ci0gICAgICAgICAgICAvLyBxdWVyeS1vbmx5IHJl
ZmVyZW5jZSwgc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3Igbm9uLVVSTCByZXN1bHRzCi0gICAgICAg
ICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BhdGhFbmQpLCBzdHIs
IGxlbiwgcGFyc2VCdWZmZXIpOwotICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgp
LCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSAnLyc6Ci0gICAgICAgICAgICAvLyBtdXN0IGJlIG5ldC1wYXRoIG9yIGFic29sdXRlLXBhdGgg
cmVmZXJlbmNlCi0gICAgICAgICAgICBpZiAoc3RyWzFdID09ICcvJykgewotICAgICAgICAgICAg
ICAgIC8vIG5ldC1wYXRoCi0gICAgICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmlu
Zy5sZWZ0KGJhc2UubV9zY2hlbWVFbmQgKyAxKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAg
ICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIGFicy1wYXRoCi0gICAgICAgICAg
ICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9wb3J0RW5kKSwgc3Ry
LCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5k
YXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBtdXN0IGJl
IHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlCi0KLSAgICAgICAgICAgICAgICAvLyBCYXNlIHBhcnQg
cGx1cyByZWxhdGl2ZSBwYXJ0IHBsdXMgb25lIHBvc3NpYmxlIHNsYXNoIGFkZGVkIGluIGJldHdl
ZW4gcGx1cyB0ZXJtaW5hdGluZyBcMCBieXRlLgotICAgICAgICAgICAgICAgIGNvbnN0IHNpemVf
dCBidWZmZXJTaXplID0gYmFzZS5tX3BhdGhFbmQgKyAxICsgbGVuICsgMTsKLSAgICAgICAgICAg
ICAgICBwYXJzZUJ1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7Ci0KLSAgICAgICAgICAgICAgICBj
aGFyKiBidWZmZXJQb3MgPSBwYXJzZUJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgY2hh
ciogYnVmZmVyU3RhcnQgPSBidWZmZXJQb3M7Ci0KLSAgICAgICAgICAgICAgICAvLyBmaXJzdCBj
b3B5IGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBwYXRoIGZyb20gdGhlIGJhc2UKLSAgICAgICAgICAg
ICAgICBDaGFyQnVmZmVyIGJhc2VTdHJpbmdCdWZmZXIoYmFzZS5tX3N0cmluZy5sZW5ndGgoKSk7
Ci0gICAgICAgICAgICAgICAgY29weUFTQ0lJKGJhc2UubV9zdHJpbmcsIGJhc2VTdHJpbmdCdWZm
ZXIuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nID0gYmFz
ZVN0cmluZ0J1ZmZlci5kYXRhKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZVN0
cmluZ1N0YXJ0ID0gYmFzZVN0cmluZzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwYXRo
U3RhcnQgPSBiYXNlU3RyaW5nU3RhcnQgKyBiYXNlLm1fcG9ydEVuZDsKLSAgICAgICAgICAgICAg
ICB3aGlsZSAoYmFzZVN0cmluZ1N0YXJ0IDwgcGF0aFN0YXJ0KQotICAgICAgICAgICAgICAgICAg
ICAqYnVmZmVyUG9zKysgPSAqYmFzZVN0cmluZ1N0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgY2hh
ciogYnVmZmVyUGF0aFN0YXJ0ID0gYnVmZmVyUG9zOwotCi0gICAgICAgICAgICAgICAgLy8gbm93
IGNvcHkgdGhlIGJhc2UgcGF0aAotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmdFbmQgPSBiYXNlU3RyaW5nICsgYmFzZS5tX3BhdGhFbmQ7Ci0KLSAgICAgICAgICAgICAgICAv
LyBnbyBiYWNrIHRvIHRoZSBsYXN0IHNsYXNoCi0gICAgICAgICAgICAgICAgd2hpbGUgKGJhc2VT
dHJpbmdFbmQgPiBiYXNlU3RyaW5nU3RhcnQgJiYgYmFzZVN0cmluZ0VuZFstMV0gIT0gJy8nKQot
ICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nRW5kLS07Ci0KLSAgICAgICAgICAgICAgICBp
ZiAoYmFzZVN0cmluZ0VuZCA9PSBiYXNlU3RyaW5nU3RhcnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gbm8gcGF0aCBpbiBiYXNlLCBhZGQgYSBwYXRoIHNlcGFyYXRvciBpZiBuZWNlc3NhcnkK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UubV9zY2hlbWVFbmQgKyAxICE9IGJhc2UubV9w
YXRoRW5kICYmICpzdHIgJiYgKnN0ciAhPSAnPycgJiYgKnN0ciAhPSAnIycpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAqYnVmZmVyUG9zKysgPSAnLyc7Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IGNvcHlQYXRoUmVtb3ZpbmdEb3Rz
KGJ1ZmZlclBvcywgYmFzZVN0cmluZ1N0YXJ0LCAwLCBiYXNlU3RyaW5nRW5kIC0gYmFzZVN0cmlu
Z1N0YXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiByZWxTdHJpbmdTdGFydCA9IHN0cjsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWxT
dHJpbmdQb3MgPSByZWxTdHJpbmdTdGFydDsKLQotICAgICAgICAgICAgICAgIHdoaWxlICgqcmVs
U3RyaW5nUG9zICYmICpyZWxTdHJpbmdQb3MgIT0gJz8nICYmICpyZWxTdHJpbmdQb3MgIT0gJyMn
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWxTdHJpbmdQb3NbMF0gPT0gJy4nICYmIGJ1
ZmZlclBvc1stMV0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXRo
U2VnbWVudEVuZENoYXIocmVsU3RyaW5nUG9zWzFdKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbFN0cmluZ1BvcyArPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZWxTdHJpbmdQb3NbMF0gPT0gJy8nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWxTdHJpbmdQb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVsU3RyaW5nUG9zWzFdID09ICcuJyAm
JiBpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMl0pKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuLiIgc2VnbWVudCBhbmQgcmV3aW5kIHRoZSBs
YXN0IHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZl
cyBpdCB1cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdtZW50cyAtIHdlIGNob29zZSB0byBk
cm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJlbGllcyBvbiB0aGlzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbFN0
cmluZ1BvcyArPSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxTdHJpbmdQ
b3NbMF0gPT0gJy8nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQ
b3MrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyUG9zID4gYnVmZmVy
UGF0aFN0YXJ0ICsgMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9z
LS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlclBvcyA+IGJ1ZmZl
clBhdGhTdGFydCArIDEgICYmIGJ1ZmZlclBvc1stMV0gIT0gJy8nKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWZmZXJQb3MtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgICAgICpidWZmZXJQb3MgPSAqcmVsU3RyaW5nUG9zOwot
ICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MrKzsKLSAgICAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zKys7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gYWxs
IGRvbmUgd2l0aCB0aGUgcGF0aCB3b3JrLCBub3cgY29weSBhbnkgcmVtYWluZGVyCi0gICAgICAg
ICAgICAgICAgLy8gb2YgdGhlIHJlbGF0aXZlIHJlZmVyZW5jZTsgdGhpcyB3aWxsIGFsc28gYWRk
IGEgbnVsbCB0ZXJtaW5hdG9yCi0gICAgICAgICAgICAgICAgc3RybmNweShidWZmZXJQb3MsIHJl
bFN0cmluZ1BvcywgYnVmZmVyU2l6ZSAtIChidWZmZXJQb3MgLSBidWZmZXJTdGFydCkpOwotCi0g
ICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotCi0g
ICAgICAgICAgICAgICAgQVNTRVJUKHN0cmxlbihwYXJzZUJ1ZmZlci5kYXRhKCkpICsgMSA8PSBw
YXJzZUJ1ZmZlci5zaXplKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfQotfQotCi1LVVJMIEtVUkw6OmNvcHkoKSBjb25zdAotewotICAg
IEtVUkwgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0Lm1fc3Ry
aW5nLmlzb2xhdGVkQ29weSgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVN0cmluZyBLVVJM
OjpsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNQYXRoKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHVuc2lnbmVkIGVuZCA9IG1fcGF0aEVuZCAtIDE7
Ci0gICAgaWYgKG1fc3RyaW5nW2VuZF0gPT0gJy8nKQotICAgICAgICAtLWVuZDsKLQotICAgIHNp
emVfdCBzdGFydCA9IG1fc3RyaW5nLnJldmVyc2VGaW5kKCcvJywgZW5kKTsKLSAgICBpZiAoc3Rh
cnQgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9wb3J0RW5kKSkKLSAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgICsrc3RhcnQ7Ci0KLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKHN0
YXJ0LCBlbmQgLSBzdGFydCArIDEpOwotfQotCi1TdHJpbmcgS1VSTDo6cHJvdG9jb2woKSBjb25z
dAotewotICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1fc2NoZW1lRW5kKTsKLX0KLQotU3RyaW5n
IEtVUkw6Omhvc3QoKSBjb25zdAotewotICAgIGludCBzdGFydCA9IGhvc3RTdGFydCgpOwotICAg
IHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcuc3Vic3RyaW5nKHN0YXJ0
LCBtX2hvc3RFbmQgLSBzdGFydCkpOwotfQotCi11bnNpZ25lZCBzaG9ydCBLVVJMOjpwb3J0KCkg
Y29uc3QKLXsKLSAgICAvLyBXZSByZXR1cm4gYSBwb3J0IG9mIDAgaWYgdGhlcmUgaXMgbm8gcG9y
dCBzcGVjaWZpZWQuIFRoaXMgY2FuIGhhcHBlbiBpbiB0d28gc2l0dWF0aW9uczoKLSAgICAvLyAx
KSBUaGUgVVJMIGNvbnRhaW5zIG5vIGNvbG9uIGFmdGVyIHRoZSBob3N0IG5hbWUgYW5kIGJlZm9y
ZSB0aGUgcGF0aCBjb21wb25lbnQgb2YgdGhlIFVSTC4KLSAgICAvLyAyKSBUaGUgVVJMIGNvbnRh
aW5zIGEgY29sb24gYnV0IHRoZXJlJ3Mgbm8gcG9ydCBudW1iZXIgYmVmb3JlIHRoZSBwYXRoIGNv
bXBvbmVudCBvZiB0aGUgVVJMIGJlZ2lucy4KLSAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVu
ZCB8fCBtX2hvc3RFbmQgPT0gbV9wb3J0RW5kIC0gMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBjb25zdCBVQ2hhciogc3RyaW5nRGF0YSA9IG1fc3RyaW5nLmNoYXJhY3RlcnMoKTsKLSAgICBi
b29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtYmVyID0gY2hhcmFjdGVyc1RvVUludFN0
cmljdChzdHJpbmdEYXRhICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5kIC0gbV9ob3N0RW5kIC0g
MSwgJm9rKTsKLSAgICBpZiAoIW9rIHx8IG51bWJlciA+IG1heGltdW1WYWxpZFBvcnROdW1iZXIp
Ci0gICAgICAgIHJldHVybiBpbnZhbGlkUG9ydE51bWJlcjsKLSAgICByZXR1cm4gbnVtYmVyOwot
fQotCi1TdHJpbmcgS1VSTDo6cGFzcygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGFzc3dvcmRFbmQg
PT0gbV91c2VyRW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBt
X3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOyAKLX0KLQotU3RyaW5nIEtVUkw6OnVzZXIo
KSBjb25zdAotewotICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcu
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOwotfQotCi1T
dHJpbmcgS1VSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKLXsKLSAgICBpZiAobV9mcmFn
bWVudEVuZCA9PSBtX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQgKyAxLCBtX2ZyYWdtZW50RW5kIC0g
KG1fcXVlcnlFbmQgKyAxKSk7Ci19Ci0KLWJvb2wgS1VSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kOwotfQot
Ci1TdHJpbmcgS1VSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJp
bmcubGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oUVQpICYm
ICFVU0UoQ0YpCi1TdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewotICAgIGlm
ICghaXNWYWxpZCgpIHx8ICFpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHBhdGgoKSk7Ci19Ci0jZW5k
aWYKLQotI2lmZGVmIE5ERUJVRwotCi1zdGF0aWMgaW5saW5lIHZvaWQgYXNzZXJ0UHJvdG9jb2xJ
c0dvb2QoY29uc3QgY2hhciopCi17Ci19Ci0KLSNlbHNlCi0KLXN0YXRpYyB2b2lkIGFzc2VydFBy
b3RvY29sSXNHb29kKGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIGNvbnN0IGNoYXIqIHAg
PSBwcm90b2NvbDsKLSAgICB3aGlsZSAoKnApIHsKLSAgICAgICAgQVNTRVJUKCpwID4gJyAnICYm
ICpwIDwgMHg3RiAmJiAhKCpwID49ICdBJyAmJiAqcCA8PSAnWicpKTsKLSAgICAgICAgKytwOwot
ICAgIH0KLX0KLQotI2VuZGlmCi0KLWJvb2wgS1VSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBw
cm90b2NvbCkgY29uc3QKLXsKLSAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7Ci0K
LSAgICAvLyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRl
ZCBldmVuIGlmIEtVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgotICAgIC8vIFRoZSBmcmVl
IGZ1bmN0aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4g
Ci0gICAgQVNTRVJUKCFlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgU3RyaW5nKCJqYXZhc2Ny
aXB0IikpKTsKLQotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAvLyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2Jq
ZWN0LgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgewotICAgICAg
ICBpZiAoIXByb3RvY29sW2ldIHx8ICFpc1NjaGVtZUNoYXJhY3Rlck1hdGNoSWdub3JpbmdDYXNl
KG1fc3RyaW5nW2ldLCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotICAgIHJldHVybiAhcHJvdG9jb2xbbV9zY2hlbWVFbmRdOyAvLyBXZSBzaG91bGQgaGF2
ZSBjb25zdW1lZCBhbGwgY2hhcmFjdGVycyBpbiB0aGUgYXJndW1lbnQuCi19Ci0KLVN0cmluZyBL
VVJMOjpxdWVyeSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcXVlcnlFbmQgPT0gbV9wYXRoRW5kKQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcGF0aEVuZCArIDEsIG1fcXVlcnlFbmQgLSAobV9wYXRoRW5kICsgMSkpOyAKLX0KLQotU3Ry
aW5nIEtVUkw6OnBhdGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kLCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOwotfQotCi1ib29sIEtVUkw6OnNldFBy
b3RvY29sKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUg
ZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIHNpemVfdCBzZXBhcmF0b3JQb3Np
dGlvbiA9IHMuZmluZCgnOicpOwotICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5n
KDAsIHNlcGFyYXRvclBvc2l0aW9uKTsKLQotICAgIGlmICghaXNWYWxpZFByb3RvY29sKG5ld1By
b3RvY29sKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2lzVmFsaWQpIHsK
LSAgICAgICAgcGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fc2NoZW1lRW5kKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgS1VSTDo6
c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVu
Y29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8g
YW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSBob3N0LgotCi0gICAgYm9v
bCBzbGFzaFNsYXNoTmVlZGVkID0gbV91c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOwotCi0g
ICAgcGFyc2UobV9zdHJpbmcubGVmdChob3N0U3RhcnQoKSkgKyAoc2xhc2hTbGFzaE5lZWRlZCA/
ICIvLyIgOiAiIikgKyBzICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwotfQotCi12
b2lkIEtVUkw6OnJlbW92ZVBvcnQoKQotewotICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5k
KQotICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldFBvcnQo
dW5zaWduZWQgc2hvcnQgaSkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7Ci0gICAg
aW50IHBvcnRTdGFydCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEp
OwotCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVkID8g
IjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0
RW5kKSk7Ci19Ci0KLXZvaWQgS1VSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0
QW5kUG9ydCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBl
ZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKLSAgICAvLyBhbmQgdG8gYXZvaWQgY2hh
bmdpbmcgbW9yZSB0aGFuIGp1c3QgaG9zdCBhbmQgcG9ydC4KLQotICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKLQotICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIp
ICsgaG9zdEFuZFBvcnQgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7Ci19Ci0KLXZv
aWQgS1VSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCi17Ci0gICAgaWYgKCFtX2lzVmFs
aWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVy
cyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlv
bnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2Vy
IGxvZ2luLgotCi0gICAgaW50IGVuZCA9IG1fdXNlckVuZDsKLSAgICBpZiAoIXVzZXIuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFN0cmluZyB1ID0gdXNlcjsKLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0
ID09IG1fc2NoZW1lRW5kICsgMSkKLSAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKLSAgICAgICAg
Ly8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgotICAgICAgICBpZiAoZW5k
ID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAh
PSAnQCcpKQotICAgICAgICAgICAgdS5hcHBlbmQoJ0AnKTsKLSAgICAgICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX3VzZXJTdGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1
c2VyIG5vciBwYXNzd29yZC4KLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5k
ICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAg
ICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0
cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5n
ZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKLSAgICAgICAgICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwotICAg
IH0KLX0KLQotdm9pZCBLVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCi17Ci0g
ICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFy
c2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhh
biBqdXN0IHRoZSB1c2VyIHBhc3N3b3JkLgotCi0gICAgaW50IGVuZCA9IG1fcGFzc3dvcmRFbmQ7
Ci0gICAgaWYgKCFwYXNzd29yZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHAgPSAiOiIg
KyBwYXNzd29yZCArICJAIjsKLSAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3NjaGVtZUVuZCAr
IDEpCi0gICAgICAgICAgICBwID0gIi8vIiArIHA7Ci0gICAgICAgIC8vIEVhdCB0aGUgZXhpc3Rp
bmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KLSAgICAgICAgaWYgKGVu
ZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQg
Kz0gMTsKLSAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3Ry
aW5nLnN1YnN0cmluZyhlbmQpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0An
IGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmICht
X3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tl
bmRdID09ICdAJykKLSAgICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5v
dCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkK
LSAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1fc3RyaW5nLnN1
YnN0cmluZyhlbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0RnJhZ21lbnRJZGVudGlm
aWVyKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2Rl
ZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucy4KLSAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpICsgIiMiICsgcyk7Ci19Ci0KLXZvaWQgS1VSTDo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAg
cmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwotfQotICAgIAot
dm9pZCBLVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQotewotICAgIGlmICghbV9p
c1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVND
SUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCi0gICAgLy8gVXN1YWxs
eSwgdGhlIHF1ZXJ5IGlzIGVuY29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYt
OCwgYnV0IHdlIGRvbid0IGhhdmUKLSAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRo
aXMgZnVuY3Rpb24uCi0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8n
KSAmJiAhcXVlcnkuaXNOdWxsKCkpCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRo
RW5kKSArICI/IiArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKLSAg
ICBlbHNlCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArIHF1ZXJ5ICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKLQotfQotCi12b2lkIEtVUkw6OnNldFBh
dGgoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBGSVhNRTogZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyBkb2VzIG5v
dCBjb3JyZWN0bHkgZXNjYXBlICcjJyBhbmQgJz8nLCBzbyBmcmFnbWVudCBhbmQgcXVlcnkgcGFy
dHMKLSAgICAvLyBtYXkgYmUgaW5hZHZlcnRlbnRseSBhZmZlY3RlZC4KLSAgICBTdHJpbmcgcGF0
aCA9IHM7Ci0gICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQotICAgICAg
ICBwYXRoID0gIi8iICsgcGF0aDsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5k
KSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCkgKyBtX3N0cmluZy5zdWJzdHJp
bmcobV9wYXRoRW5kKSk7Ci19Ci0KLVN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlczxV
UkxFc2NhcGVTZXF1ZW5jZT4oc3RyaW5nLCBVVEY4RW5jb2RpbmcoKSk7Ci19Ci0KLVN0cmluZyBk
ZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmcpCi17Ci0gICAgcmV0dXJuIGRlY29kZUVzY2FwZVNlcXVlbmNlczxV
UkxFc2NhcGVTZXF1ZW5jZT4oc3RyaW5nLCBlbmNvZGluZyk7Ci19Ci0KLS8vIENhdXRpb246IFRo
aXMgZnVuY3Rpb24gZG9lcyBub3QgYm91bmRzIGNoZWNrLgotc3RhdGljIHZvaWQgYXBwZW5kRXNj
YXBlZENoYXIoY2hhciomIGJ1ZmZlciwgdW5zaWduZWQgY2hhciBjKQotewotICAgICpidWZmZXIr
KyA9ICclJzsKLSAgICBwbGFjZUJ5dGVBc0hleChjLCBidWZmZXIpOwotfQotCi1zdGF0aWMgdm9p
ZCBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0clN0
YXJ0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGNoYXIqIHAgPSBidWZmZXI7Ci0KLSAgICBjb25z
dCBjaGFyKiBzdHIgPSBzdHJTdGFydDsKLSAgICBjb25zdCBjaGFyKiBzdHJFbmQgPSBzdHJTdGFy
dCArIGxlbmd0aDsKLSAgICB3aGlsZSAoc3RyIDwgc3RyRW5kKSB7Ci0gICAgICAgIHVuc2lnbmVk
IGNoYXIgYyA9ICpzdHIrKzsKLSAgICAgICAgaWYgKGlzQmFkQ2hhcihjKSkgewotICAgICAgICAg
ICAgaWYgKGMgPT0gJyUnIHx8IGMgPT0gJz8nKQotICAgICAgICAgICAgICAgICpwKysgPSBjOwot
ICAgICAgICAgICAgZWxzZSBpZiAoYyAhPSAweDA5ICYmIGMgIT0gMHgwYSAmJiBjICE9IDB4MGQp
Ci0gICAgICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgfQotCi0gICAgYnVmZmVyID0gcDsKLX0KLQot
c3RhdGljIHZvaWQgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFyY2hpY2FsUGFydChjaGFyKiYgYnVm
ZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFyKiBw
ID0gYnVmZmVyOwotCi0gICAgY29uc3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29uc3Qg
Y2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVu
ZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIC8vIFN0cmlw
IENSLCBMRiBhbmQgVGFiIGZyb20gZnJhZ21lbnRzLCBwZXI6Ci0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzcwCi0gICAgICAgIGlmIChjID09IDB4
MDkgfHwgYyA9PSAweDBhIHx8IGMgPT0gMHgwZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgIC8vIENocm9tZSBhbmQgSUUgYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gZnJh
Z21lbnRzLCBob3dldmVyIGRvaW5nCi0gICAgICAgIC8vIHNvIHdvdWxkIGhpdCBhbiBBU1NFUlQg
aW4gY2hlY2tFbmNvZGVkU3RyaW5nLCBzbyBmb3Igbm93IHdlIGRvbid0LgotICAgICAgICBpZiAo
YyA8IDB4MjAgfHwgYyA+PSAxMjcpIHsKLSAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRDaGFyKHAs
IGMpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgKnArKyA9IGM7
Ci0gICAgfQotCi0gICAgYnVmZmVyID0gcDsKLX0KLQotLy8gY29weSBhIHBhdGgsIGFjY291bnRp
bmcgZm9yICIuIiBhbmQgIi4uIiBzZWdtZW50cwotc3RhdGljIGludCBjb3B5UGF0aFJlbW92aW5n
RG90cyhjaGFyKiBkc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjRW5k
KQotewotICAgIGNoYXIqIGJ1ZmZlclBhdGhTdGFydCA9IGRzdDsKLQotICAgIC8vIGVtcHR5IHBh
dGggaXMgYSBzcGVjaWFsIGNhc2UsIGFuZCBuZWVkIG5vdCBoYXZlIGEgbGVhZGluZyBzbGFzaAot
ICAgIGlmIChzcmNTdGFydCAhPSBzcmNFbmQpIHsKLSAgICAgICAgY29uc3QgY2hhciogYmFzZVN0
cmluZ1N0YXJ0ID0gc3JjICsgc3JjU3RhcnQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmdFbmQgPSBzcmMgKyBzcmNFbmQ7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdQb3Mg
PSBiYXNlU3RyaW5nU3RhcnQ7Ci0KLSAgICAgICAgLy8gdGhpcyBjb2RlIGlzIHVucHJlcGFyZWQg
Zm9yIHBhdGhzIHRoYXQgZG8gbm90IGJlZ2luIHdpdGggYQotICAgICAgICAvLyBzbGFzaCBhbmQg
d2Ugc2hvdWxkIGFsd2F5cyBoYXZlIG9uZSBpbiB0aGUgc291cmNlIHN0cmluZwotICAgICAgICBB
U1NFUlQoYmFzZVN0cmluZ1Bvc1swXSA9PSAnLycpOwotCi0gICAgICAgIC8vIGNvcHkgdGhlIGxl
YWRpbmcgc2xhc2ggaW50byB0aGUgZGVzdGluYXRpb24KLSAgICAgICAgKmRzdCA9ICpiYXNlU3Ry
aW5nUG9zOwotICAgICAgICBiYXNlU3RyaW5nUG9zKys7Ci0gICAgICAgIGRzdCsrOwotCi0gICAg
ICAgIHdoaWxlIChiYXNlU3RyaW5nUG9zIDwgYmFzZVN0cmluZ0VuZCkgewotICAgICAgICAgICAg
aWYgKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy4nICYmIGRzdFstMV0gPT0gJy8nKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGJhc2VTdHJpbmdQb3NbMV0gPT0gJy8nIHx8IGJhc2VTdHJpbmdQb3MgKyAx
ID09IGJhc2VTdHJpbmdFbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIu
IiBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMjsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiYXNl
U3RyaW5nUG9zWzFdID09ICcuJyAmJiAoYmFzZVN0cmluZ1Bvc1syXSA9PSAnLycgfHwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKyAyID09IGJh
c2VTdHJpbmdFbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4iIHNl
Z21lbnQgYW5kIHJld2luZCB0aGUgbGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBSRkMgbGVhdmVzIGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0
aCBleGNlc3MKLSAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdtZW50cyAtIHdlIGNob29z
ZSB0byBkcm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAotICAgICAgICAgICAgICAgICAg
ICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ1BvcyAr
PSAzOwotICAgICAgICAgICAgICAgICAgICBpZiAoZHN0ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoZHN0ID4gYnVmZmVyUGF0aFN0YXJ0ICYmIGRzdFstMV0gIT0gJy8nKQotICAgICAgICAgICAg
ICAgICAgICAgICAgZHN0LS07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmRzdCA9ICpiYXNlU3Ry
aW5nUG9zOwotICAgICAgICAgICAgYmFzZVN0cmluZ1BvcysrOwotICAgICAgICAgICAgZHN0Kys7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKmRzdCA9ICdcMCc7Ci0gICAgcmV0dXJuIGRzdCAtIGJ1
ZmZlclBhdGhTdGFydDsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNoRG90T3JEb3RE
b3QoY29uc3QgY2hhciogc3RyKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihzdHIpOwotICAgIGlmICghKnApCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBjaGFyIHBjID0gKnA7Ci0gICAgd2hp
bGUgKHVuc2lnbmVkIGNoYXIgYyA9ICorK3ApIHsKLSAgICAgICAgaWYgKGMgPT0gJy4nICYmIChw
YyA9PSAnLycgfHwgcGMgPT0gJy4nKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBwYyA9IGM7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBLVVJMOjpwYXJz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5n
KTsKLQotICAgIENoYXJCdWZmZXIgYnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOwotICAgIGNv
cHlBU0NJSShzdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwotICAgIGJ1ZmZlcltzdHJpbmcubGVuZ3Ro
KCldID0gJ1wwJzsKLSAgICBwYXJzZShidWZmZXIuZGF0YSgpLCAmc3RyaW5nKTsKLX0KLQotdGVt
cGxhdGU8c2l6ZV90IGxlbmd0aD4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFy
KiBhLCBjb25zdCBjaGFyICgmYilbbGVuZ3RoXSkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhW2ldICE9IGJbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTxz
aXplX3QgbGVuZ3RoQj4KLXN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBzdHJp
bmdBLCBzaXplX3QgbGVuZ3RoQSwgY29uc3QgY2hhciAoJnN0cmluZ0IpW2xlbmd0aEJdKQotewot
ICAgIHJldHVybiBsZW5ndGhBID09IGxlbmd0aEIgJiYgZXF1YWwoc3RyaW5nQSwgc3RyaW5nQik7
Ci19Ci0KLS8vIExpc3Qgb2YgZGVmYXVsdCBzY2hlbWVzIGlzIHRha2VuIGZyb20gZ29vZ2xlLXVy
bDoKLS8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtdXJsL3NvdXJjZS9icm93c2Uv
dHJ1bmsvc3JjL3VybF9jYW5vbl9zdGR1cmwuY2MjMTIwCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNE
ZWZhdWx0UG9ydEZvclNjaGVtZShjb25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwg
Y29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIC8vIFRoaXMg
c3dpdGNoIGlzIHRoZW9yZXRpY2FsbHkgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uICBJdCBj
YW1lIG92ZXIgd2hlbgotICAgIC8vIHRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmws
IGJ1dCBtYXkgYmUgcmVtb3ZlZCBsYXRlci4KLSAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgewot
ICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpICYmIGVx
dWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBQb3J0KTsKLSAgICBjYXNlIDM6Ci0gICAgICAgIGlm
IChlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocG9y
dCwgcG9ydExlbmd0aCwgZnRwUG9ydCk7Ci0gICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1Nj
aGVtZSkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQ
b3J0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICByZXR1cm4gZXF1YWwo
c2NoZW1lLCBodHRwU2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7
Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSkg
JiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKLSAgICBjYXNlIDY6Ci0gICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGdvcGhlclNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9y
dExlbmd0aCwgZ29waGVyUG9ydCk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3Rh
dGljIGlubGluZSBib29sIGhvc3RQb3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudChp
bnQgaG9zdFN0YXJ0LCBpbnQgcG9ydEVuZCwgY2hhciB1c2VyaW5mb0VuZENoYXIpCi17Ci0gICAg
cmV0dXJuIHVzZXJpbmZvRW5kQ2hhciA9PSAnQCcgJiYgaG9zdFN0YXJ0ID09IHBvcnRFbmQ7Ci19
Ci0KLXN0YXRpYyBib29sIGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBz
Y2hlbWUsIHNpemVfdCBzY2hlbWVMZW5ndGgpCi17Ci0gICAgc3dpdGNoIChzY2hlbWVMZW5ndGgp
IHsKLSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsK
LSAgICBjYXNlIDM6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwg
ZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpOwotICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgaHR0cFNjaGVtZSk7Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBodHRwc1NjaGVtZSk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1
YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3Qg
Y2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIHN3aXRjaCAoc2NoZW1l
TGVuZ3RoKSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1Nj
aGVtZSk7Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hl
bWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIHJl
dHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgZmlsZVNjaGVt
ZSk7Ci0gICAgY2FzZSA1OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVt
ZSk7Ci0gICAgY2FzZSA2OgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hl
bWUpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgS1VSTDo6cGFyc2UoY29u
c3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQotewotICAgIGlmICgh
dXJsIHx8IHVybFswXSA9PSAnXDAnKSB7Ci0gICAgICAgIC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5v
bi1lbXB0eQotICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3Ry
aW5nIDogdXJsOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkpIHsKLSAgICAgICAgLy8gc2No
ZW1lIG11c3Qgc3RhcnQgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3RlcgotICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwotICAgICAgICBp
bnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgc2NoZW1lRW5k
ID0gMDsKLSAgICB3aGlsZSAoaXNTY2hlbWVDaGFyKHVybFtzY2hlbWVFbmRdKSkKLSAgICAgICAg
c2NoZW1lRW5kKys7Ci0KLSAgICBpZiAodXJsW3NjaGVtZUVuZF0gIT0gJzonKSB7Ci0gICAgICAg
IG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAg
ICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCB1c2Vy
U3RhcnQgPSBzY2hlbWVFbmQgKyAxOwotICAgIGludCB1c2VyRW5kOwotICAgIGludCBwYXNzd29y
ZFN0YXJ0OwotICAgIGludCBwYXNzd29yZEVuZDsKLSAgICBpbnQgaG9zdFN0YXJ0OwotICAgIGlu
dCBob3N0RW5kOwotICAgIGludCBwb3J0U3RhcnQ7Ci0gICAgaW50IHBvcnRFbmQ7Ci0KLSAgICBi
b29sIGhpZXJhcmNoaWNhbCA9IHVybFtzY2hlbWVFbmQgKyAxXSA9PSAnLyc7Ci0gICAgYm9vbCBo
YXNTZWNvbmRTbGFzaCA9IGhpZXJhcmNoaWNhbCAmJiB1cmxbc2NoZW1lRW5kICsgMl0gPT0gJy8n
OwotCi0gICAgYm9vbCBpc0ZpbGUgPSBzY2hlbWVFbmQgPT0gNAotICAgICAgICAmJiBpc0xldHRl
ck1hdGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2YnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFsxXSwgJ2knKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFsyXSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFszXSwgJ2UnKTsKLQotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAgLy8gUGFyc2Ug
bG9jYWw6IHVybHMgdGhlIHNhbWUgYXMgZmlsZTogdXJscy4KLSAgICBpZiAoIWlzRmlsZSkKLSAg
ICAgICAgaXNGaWxlID0gc2NoZW1lRW5kID09IDUKLSAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UodXJsWzBdLCAnbCcpCi0gICAgICAgICAgICAmJiBpc0xldHRlck1hdGNo
SWdub3JpbmdDYXNlKHVybFsxXSwgJ28nKQotICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaEln
bm9yaW5nQ2FzZSh1cmxbMl0sICdjJykKLSAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25v
cmluZ0Nhc2UodXJsWzNdLCAnYScpCi0gICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFs0XSwgJ2wnKTsKLSNlbmRpZgotCi0gICAgbV9wcm90b2NvbElzSW5IVFRQRmFt
aWx5ID0gaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdoJykKLSAgICAgICAgJiYg
aXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMV0sICd0JykKLSAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICd0JykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRj
aElnbm9yaW5nQ2FzZSh1cmxbM10sICdwJykKLSAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwg
KGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzRdLCAncycpICYmIHVybFs1XSA9PSAnOicp
KTsKLQotICAgIGlmICgoaGllcmFyY2hpY2FsICYmIGhhc1NlY29uZFNsYXNoKSB8fCBpc05vbkZp
bGVIaWVyYXJjaGljYWxTY2hlbWUodXJsLCBzY2hlbWVFbmQpKSB7Ci0gICAgICAgIC8vIFRoZSBw
YXJ0IGFmdGVyIHRoZSBzY2hlbWUgaXMgZWl0aGVyIGEgbmV0X3BhdGggb3IgYW4gYWJzX3BhdGgg
d2hvc2UgZmlyc3QgcGF0aCBzZWdtZW50IGlzIGVtcHR5LgotICAgICAgICAvLyBBdHRlbXB0IHRv
IGZpbmQgYW4gYXV0aG9yaXR5LgotICAgICAgICAvLyBGSVhNRTogQXV0aG9yaXR5IGNoYXJhY3Rl
cnMgbWF5IGJlIHNjYW5uZWQgdHdpY2UsIGFuZCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGZhc3Rl
ci4KLQotICAgICAgICBpZiAoaGllcmFyY2hpY2FsKQotICAgICAgICAgICAgdXNlclN0YXJ0Kys7
Ci0gICAgICAgIGlmIChoYXNTZWNvbmRTbGFzaCkKLSAgICAgICAgICAgIHVzZXJTdGFydCsrOwot
ICAgICAgICB1c2VyRW5kID0gdXNlclN0YXJ0OwotCi0gICAgICAgIGludCBjb2xvblBvcyA9IDA7
Ci0gICAgICAgIHdoaWxlIChpc1VzZXJJbmZvQ2hhcih1cmxbdXNlckVuZF0pKSB7Ci0gICAgICAg
ICAgICBpZiAodXJsW3VzZXJFbmRdID09ICc6JyAmJiBjb2xvblBvcyA9PSAwKQotICAgICAgICAg
ICAgICAgIGNvbG9uUG9zID0gdXNlckVuZDsKLSAgICAgICAgICAgIHVzZXJFbmQrKzsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmICh1cmxbdXNlckVuZF0gPT0gJ0AnKSB7Ci0gICAgICAgICAgICAv
LyBhY3R1YWwgZW5kIG9mIHRoZSB1c2VyaW5mbywgc3RhcnQgb24gdGhlIGhvc3QKLSAgICAgICAg
ICAgIGlmIChjb2xvblBvcyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgcGFzc3dvcmRFbmQgPSB1
c2VyRW5kOwotICAgICAgICAgICAgICAgIHVzZXJFbmQgPSBjb2xvblBvczsKLSAgICAgICAgICAg
ICAgICBwYXNzd29yZFN0YXJ0ID0gY29sb25Qb3MgKyAxOwotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3b3JkRW5kID0gdXNlckVuZDsKLQot
ICAgICAgICAgICAgaG9zdFN0YXJ0ID0gcGFzc3dvcmRFbmQgKyAxOwotICAgICAgICB9IGVsc2Ug
aWYgKHVybFt1c2VyRW5kXSA9PSAnWycgfHwgaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3VzZXJF
bmRdKSkgewotICAgICAgICAgICAgLy8gaGl0IHRoZSBlbmQgb2YgdGhlIGF1dGhvcml0eSwgbXVz
dCBoYXZlIGJlZW4gbm8gdXNlcgotICAgICAgICAgICAgLy8gb3IgbG9va3MgbGlrZSBhbiBJUHY2
IGhvc3RuYW1lCi0gICAgICAgICAgICAvLyBlaXRoZXIgd2F5LCB0cnkgdG8gcGFyc2UgaXQgYXMg
YSBob3N0bmFtZQotICAgICAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLSAgICAgICAgICAg
IHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICBob3N0
U3RhcnQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBpbnZh
bGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpv
cmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGhvc3RFbmQgPSBob3N0U3RhcnQ7Ci0K
LSAgICAgICAgLy8gSVBWNiBJUCBhZGRyZXNzCi0gICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0g
J1snKSB7Ci0gICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAgICAgICB3aGlsZSAoaXNJUHY2
Q2hhcih1cmxbaG9zdEVuZF0pKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKLSAgICAgICAg
ICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJ10nKQotICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsK
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVy
Ci0gICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0
cmluZyA6IHVybDsKLSAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
d2hpbGUgKGlzSG9zdG5hbWVDaGFyKHVybFtob3N0RW5kXSkpCi0gICAgICAgICAgICAgICAgaG9z
dEVuZCsrOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09
ICc6JykgewotICAgICAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQgKyAxOwot
IAotICAgICAgICAgICAgLy8gcG9zc2libGUgc3RhcnQgb2YgcG9ydAotICAgICAgICAgICAgcG9y
dEVuZCA9IHBvcnRTdGFydDsKLSAgICAgICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodXJsW3Bv
cnRFbmRdKSkKLSAgICAgICAgICAgICAgICBwb3J0RW5kKys7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQ7Ci0KLSAgICAgICAgaWYgKCFp
c1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbcG9ydEVuZF0pKSB7Ci0gICAgICAgICAgICAvLyBpbnZh
bGlkIGNoYXJhY3RlcgotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpv
cmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChob3N0UG9ydElzRW1wdHlCdXRD
cmVkZW50aWFsc0FyZVByZXNlbnQoaG9zdFN0YXJ0LCBwb3J0RW5kLCB1cmxbcGFzc3dvcmRFbmRd
KSkgewotICAgICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0
cmluZyA6IHVybDsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh1c2VyU3RhcnQgPT0gcG9ydEVuZCAmJiAhbV9w
cm90b2NvbElzSW5IVFRQRmFtaWx5ICYmICFpc0ZpbGUpIHsKLSAgICAgICAgICAgIC8vIE5vIGF1
dGhvcml0eSBmb3VuZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGlzIGlzIG5vdCBhIG5ldF9wYXRoLCBi
dXQgcmF0aGVyIGFuIGFic19wYXRoIHdob3NlIGZpcnN0IHR3bwotICAgICAgICAgICAgLy8gcGF0
aCBzZWdtZW50cyBhcmUgZW1wdHkuIEZvciBmaWxlLCBodHRwIGFuZCBodHRwcyBvbmx5LCBhbiBl
bXB0eSBhdXRob3JpdHkgaXMgYWxsb3dlZC4KLSAgICAgICAgICAgIHVzZXJTdGFydCAtPSAyOwot
ICAgICAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLSAgICAgICAgICAgIHBhc3N3b3JkU3Rh
cnQgPSB1c2VyRW5kOwotICAgICAgICAgICAgcGFzc3dvcmRFbmQgPSBwYXNzd29yZFN0YXJ0Owot
ICAgICAgICAgICAgaG9zdFN0YXJ0ID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgICAgICBob3N0RW5k
ID0gaG9zdFN0YXJ0OwotICAgICAgICAgICAgcG9ydFN0YXJ0ID0gaG9zdEVuZDsKLSAgICAgICAg
ICAgIHBvcnRFbmQgPSBob3N0RW5kOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAg
Ly8gdGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBtdXN0IGJlIGFuIG9wYXF1ZV9wYXJ0IG9yIGFu
IGFic19wYXRoCi0gICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgIHBhc3N3b3Jk
U3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0gICAgICAgIGhvc3RTdGFydCA9IGhvc3RF
bmQgPSBwYXNzd29yZEVuZDsKLSAgICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQ7
Ci0gICAgfQotCi0gICAgaW50IHBhdGhTdGFydCA9IHBvcnRFbmQ7Ci0gICAgaW50IHBhdGhFbmQg
PSBwYXRoU3RhcnQ7Ci0gICAgd2hpbGUgKHVybFtwYXRoRW5kXSAmJiB1cmxbcGF0aEVuZF0gIT0g
Jz8nICYmIHVybFtwYXRoRW5kXSAhPSAnIycpCi0gICAgICAgIHBhdGhFbmQrKzsKLQotICAgIGlu
dCBxdWVyeVN0YXJ0ID0gcGF0aEVuZDsKLSAgICBpbnQgcXVlcnlFbmQgPSBxdWVyeVN0YXJ0Owot
ICAgIGlmICh1cmxbcXVlcnlTdGFydF0gPT0gJz8nKSB7Ci0gICAgICAgIHdoaWxlICh1cmxbcXVl
cnlFbmRdICYmIHVybFtxdWVyeUVuZF0gIT0gJyMnKQotICAgICAgICAgICAgcXVlcnlFbmQrKzsK
LSAgICB9Ci0KLSAgICBpbnQgZnJhZ21lbnRTdGFydCA9IHF1ZXJ5RW5kOwotICAgIGludCBmcmFn
bWVudEVuZCA9IGZyYWdtZW50U3RhcnQ7Ci0gICAgaWYgKHVybFtmcmFnbWVudFN0YXJ0XSA9PSAn
IycpIHsKLSAgICAgICAgZnJhZ21lbnRTdGFydCsrOwotICAgICAgICBmcmFnbWVudEVuZCA9IGZy
YWdtZW50U3RhcnQ7Ci0gICAgICAgIHdoaWxlICh1cmxbZnJhZ21lbnRFbmRdKQotICAgICAgICAg
ICAgZnJhZ21lbnRFbmQrKzsKLSAgICB9Ci0KLSAgICAvLyBhc3NlbWJsZSBpdCBhbGwsIHJlbWVt
YmVyaW5nIHRoZSByZWFsIHJhbmdlcwotCi0gICAgVmVjdG9yPGNoYXIsIDQwOTY+IGJ1ZmZlcihm
cmFnbWVudEVuZCAqIDMgKyAxKTsKLQotICAgIGNoYXIgKnAgPSBidWZmZXIuZGF0YSgpOwotICAg
IGNvbnN0IGNoYXIgKnN0clB0ciA9IHVybDsKLQotICAgIC8vIGNvcHkgaW4gdGhlIHNjaGVtZQot
ICAgIGNvbnN0IGNoYXIgKnNjaGVtZUVuZFB0ciA9IHVybCArIHNjaGVtZUVuZDsKLSAgICB3aGls
ZSAoc3RyUHRyIDwgc2NoZW1lRW5kUHRyKQotICAgICAgICAqcCsrID0gdG9BU0NJSUxvd2VyKCpz
dHJQdHIrKyk7Ci0gICAgbV9zY2hlbWVFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgIGJv
b2wgaG9zdElzTG9jYWxIb3N0ID0gcG9ydEVuZCAtIHVzZXJTdGFydCA9PSA5Ci0gICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydF0sICdsJykKLSAgICAgICAg
JiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzFdLCAnbycpCi0gICAg
ICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCsyXSwgJ2MnKQot
ICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrM10sICdh
JykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzRd
LCAnbCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFy
dCs1XSwgJ2gnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2Vy
U3RhcnQrNl0sICdvJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxb
dXNlclN0YXJ0KzddLCAncycpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2Uo
dXJsW3VzZXJTdGFydCs4XSwgJ3QnKTsKLQotICAgIC8vIEZpbGUgVVJMcyBuZWVkIGEgaG9zdCBw
YXJ0IHVubGVzcyBpdCBpcyBqdXN0IGZpbGU6Ly8gb3IgZmlsZTovL2xvY2FsaG9zdAotICAgIGJv
b2wgZGVnZW5lcmF0ZUZpbGVQYXRoID0gcGF0aFN0YXJ0ID09IHBhdGhFbmQgJiYgKGhvc3RTdGFy
dCA9PSBob3N0RW5kIHx8IGhvc3RJc0xvY2FsSG9zdCk7Ci0KLSAgICAvLyBXZSBkcm9wIGVtcHR5
IGNyZWRlbnRpYWxzLCBidXQga2VlcCBhIGNvbG9uIGluIGFuIGVtcHR5IGhvc3QvcG9ydCBwYWly
LgotICAgIC8vIFJlbW92aW5nIGhvc3RuYW1lIGNvbXBsZXRlbHkgd291bGQgY2hhbmdlIHRoZSBz
dHJ1Y3R1cmUgb2YgdGhlIFVSTCBvbiByZS1wYXJzaW5nLgotICAgIGJvb2wgaGF2ZU5vbkhvc3RB
dXRob3JpdHlQYXJ0ID0gdXNlclN0YXJ0ICE9IHVzZXJFbmQgfHwgcGFzc3dvcmRTdGFydCAhPSBw
YXNzd29yZEVuZCB8fCBob3N0RW5kICE9IHBvcnRFbmQ7Ci0KLSAgICAvLyBhZGQgIjoiIGFmdGVy
IHNjaGVtZQotICAgICpwKysgPSAnOic7Ci0KLSAgICAvLyBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9u
ZSBhdXRob3JpdHkgcGFydCBvciBhIGZpbGUgVVJMIC0gYWRkICIvLyIgYW5kIGF1dGhvcml0eQot
ICAgIGlmIChpc0ZpbGUgPyAhZGVnZW5lcmF0ZUZpbGVQYXRoIDogKGhhdmVOb25Ib3N0QXV0aG9y
aXR5UGFydCB8fCBob3N0U3RhcnQgIT0gaG9zdEVuZCkpIHsKLSAgICAgICAgKnArKyA9ICcvJzsK
LSAgICAgICAgKnArKyA9ICcvJzsKLQotICAgICAgICBtX3VzZXJTdGFydCA9IHAgLSBidWZmZXIu
ZGF0YSgpOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhlIHVzZXIKLSAgICAgICAgc3RyUHRyID0g
dXJsICsgdXNlclN0YXJ0OwotICAgICAgICBjb25zdCBjaGFyKiB1c2VyRW5kUHRyID0gdXJsICsg
dXNlckVuZDsKLSAgICAgICAgd2hpbGUgKHN0clB0ciA8IHVzZXJFbmRQdHIpIHsKLSAgICAgICAg
ICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKLSAgICAgICAgICAgIEFTU0VSVChpc1VzZXJJbmZvQ2hh
cihjKSk7Ci0gICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgfQotICAgICAgICBtX3VzZXJF
bmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRoZSBwYXNzd29y
ZAotICAgICAgICBpZiAocGFzc3dvcmRFbmQgIT0gcGFzc3dvcmRTdGFydCkgewotICAgICAgICAg
ICAgKnArKyA9ICc6JzsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIHBhc3N3b3JkU3RhcnQ7
Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwYXNzd29yZEVuZFB0ciA9IHVybCArIHBhc3N3b3Jk
RW5kOwotICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IHBhc3N3b3JkRW5kUHRyKSB7Ci0gICAg
ICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgIEFTU0VSVChp
c1VzZXJJbmZvQ2hhcihjKSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgbV9wYXNzd29yZEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotCi0gICAgICAgIC8vIElmIHdlIGhhZCBhbnkgdXNlciBpbmZvLCBhZGQgIkAiCi0gICAgICAg
IGlmIChwIC0gYnVmZmVyLmRhdGEoKSAhPSBtX3VzZXJTdGFydCkKLSAgICAgICAgICAgICpwKysg
PSAnQCc7Ci0KLSAgICAgICAgLy8gY29weSBpbiB0aGUgaG9zdCwgZXhjZXB0IGluIHRoZSBjYXNl
IG9mIGEgZmlsZSBVUkwgd2l0aCBhdXRob3JpdHk9ImxvY2FsaG9zdCIKLSAgICAgICAgaWYgKCEo
aXNGaWxlICYmIGhvc3RJc0xvY2FsSG9zdCAmJiAhaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0KSkg
ewotICAgICAgICAgICAgc3RyUHRyID0gdXJsICsgaG9zdFN0YXJ0OwotICAgICAgICAgICAgY29u
c3QgY2hhciogaG9zdEVuZFB0ciA9IHVybCArIGhvc3RFbmQ7Ci0gICAgICAgICAgICBpZiAoaXND
YW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZUZvclNjaGVtZShidWZmZXIuZGF0YSgpLCBtX3NjaGVt
ZUVuZCkpIHsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgewot
ICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSB0b0FTQ0lJTG93ZXIoKnN0clB0cisrKTsKLSAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGlzSG9zdG5hbWVDaGFyKGMpIHx8IGMgPT0gJ1snIHx8
IGMgPT0gJ10nIHx8IGMgPT0gJzonKTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB3
aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgewotICAgICAgICAgICAgICAgICAgICBjaGFyIGMg
PSAqc3RyUHRyKys7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3RuYW1lQ2hhcihj
KSB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAgICAgICAgICAg
ICAgICpwKysgPSBjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBtX2hvc3RFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLQotICAgICAgICAvLyBD
b3B5IGluIHRoZSBwb3J0IGlmIHRoZSBVUkwgaGFzIG9uZSAoYW5kIGl0J3Mgbm90IGRlZmF1bHQp
LiBBbHNvLCBjb3B5IGl0IGlmIHRoZXJlIHdhcyBubyBob3N0bmFtZSwgc28gdGhhdCB0aGVyZSBp
cyBzdGlsbCBzb21ldGhpbmcgaW4gYXV0aG9yaXR5IGNvbXBvbmVudC4KLSAgICAgICAgaWYgKGhv
c3RFbmQgIT0gcG9ydFN0YXJ0KSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwb3J0U3RyID0g
dXJsICsgcG9ydFN0YXJ0OwotICAgICAgICAgICAgc2l6ZV90IHBvcnRMZW5ndGggPSBwb3J0RW5k
IC0gcG9ydFN0YXJ0OwotICAgICAgICAgICAgaWYgKChwb3J0TGVuZ3RoICYmICFpc0RlZmF1bHRQ
b3J0Rm9yU2NoZW1lKHBvcnRTdHIsIHBvcnRMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1l
RW5kKSkKLSAgICAgICAgICAgICAgICB8fCAoaG9zdFN0YXJ0ID09IGhvc3RFbmQgJiYgaG9zdEVu
ZCAhPSBwb3J0U3RhcnQpKSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICc6JzsKLSAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiBwb3J0RW5kUHRyID0gdXJsICsgcG9ydEVuZDsKLSAgICAgICAg
ICAgICAgICB3aGlsZSAocG9ydFN0ciA8IHBvcnRFbmRQdHIpCi0gICAgICAgICAgICAgICAgICAg
ICpwKysgPSAqcG9ydFN0cisrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1f
cG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChp
c0ZpbGUpIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWdlbmVyYXRlRmlsZVBhdGgpOwotICAgICAg
ICAgICAgKnArKyA9ICcvJzsKLSAgICAgICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV91c2VyU3RhcnQgPSBtX3VzZXJFbmQgPSBtX3Bhc3N3b3JkRW5kID0gbV9ob3N0RW5k
ID0gbV9wb3J0RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0gICAgfQotCi0gICAgLy8gRm9yIGNh
bm9uaWNhbGl6YXRpb24sIGVuc3VyZSB3ZSBoYXZlIGEgJy8nIGZvciBubyBwYXRoLgotICAgIC8v
IERvIHRoaXMgb25seSBmb3IgVVJMIHdpdGggcHJvdG9jb2wgZmlsZSwgaHR0cCBvciBodHRwcy4K
LSAgICBpZiAoKG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSB8fCBpc0ZpbGUpICYmIHBhdGhFbmQg
PT0gcGF0aFN0YXJ0KQotICAgICAgICAqcCsrID0gJy8nOwotCi0gICAgLy8gYWRkIHBhdGgsIGVz
Y2FwaW5nIGJhZCBjaGFyYWN0ZXJzCi0gICAgaWYgKCFoaWVyYXJjaGljYWwpCi0gICAgICAgIGVz
Y2FwZUFuZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQocCwgdXJsICsgcGF0aFN0YXJ0LCBwYXRo
RW5kIC0gcGF0aFN0YXJ0KTsKLSAgICBlbHNlIGlmICghaGFzU2xhc2hEb3RPckRvdERvdCh1cmwp
KQotICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHBhdGhTdGFydCwgcGF0
aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIENoYXJCdWZmZXIgcGF0aEJ1
ZmZlcihwYXRoRW5kIC0gcGF0aFN0YXJ0ICsgMSk7Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBj
b3B5UGF0aFJlbW92aW5nRG90cyhwYXRoQnVmZmVyLmRhdGEoKSwgdXJsLCBwYXRoU3RhcnQsIHBh
dGhFbmQpOwotICAgICAgICBhcHBlbmRFc2NhcGluZ0JhZENoYXJzKHAsIHBhdGhCdWZmZXIuZGF0
YSgpLCBsZW5ndGgpOwotICAgIH0KLQotICAgIG1fcGF0aEVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OwotCi0gICAgLy8gRmluZCB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3Qgc2xhc2ggaW4gdGhl
IHBhdGgsIG9yCi0gICAgLy8gdGhlIHBvc2l0aW9uIGJlZm9yZSB0aGUgcGF0aCBpZiB0aGVyZSBh
cmUgbm8gc2xhc2hlcyBpbiBpdC4KLSAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSBtX3BhdGhFbmQ7
IGkgPiBtX3BvcnRFbmQ7IC0taSkgewotICAgICAgICBpZiAoYnVmZmVyW2kgLSAxXSA9PSAnLycp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBp
OwotCi0gICAgLy8gYWRkIHF1ZXJ5LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGFwcGVu
ZEVzY2FwaW5nQmFkQ2hhcnMocCwgdXJsICsgcXVlcnlTdGFydCwgcXVlcnlFbmQgLSBxdWVyeVN0
YXJ0KTsKLSAgICBtX3F1ZXJ5RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAvLyBhZGQg
ZnJhZ21lbnQsIGVzY2FwaW5nIGJhZCBjaGFyYWN0ZXJzCi0gICAgaWYgKGZyYWdtZW50RW5kICE9
IHF1ZXJ5RW5kKSB7Ci0gICAgICAgICpwKysgPSAnIyc7Ci0gICAgICAgIGVzY2FwZUFuZEFwcGVu
ZE5vbkhpZXJhcmNoaWNhbFBhcnQocCwgdXJsICsgZnJhZ21lbnRTdGFydCwgZnJhZ21lbnRFbmQg
LSBmcmFnbWVudFN0YXJ0KTsKLSAgICB9Ci0gICAgbV9mcmFnbWVudEVuZCA9IHAgLSBidWZmZXIu
ZGF0YSgpOwotCi0gICAgQVNTRVJUKHAgLSBidWZmZXIuZGF0YSgpIDw9IHN0YXRpY19jYXN0PGlu
dD4oYnVmZmVyLnNpemUoKSkpOwotICAgIEFTU0VSVChidWZmZXIuc2l6ZSgpID4gMCk7Ci0KLSAg
ICAvLyBJZiB3ZSBkaWRuJ3QgZW5kIHVwIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBvcmlnaW5hbCBz
dHJpbmcgYW5kCi0gICAgLy8gaXQgd2FzIGFscmVhZHkgaW4gYSBTdHJpbmcsIHJldXNlIGl0IHRv
IGF2b2lkIGV4dHJhIGFsbG9jYXRpb24uCi0gICAgaWYgKG9yaWdpbmFsU3RyaW5nICYmIGVxdWFs
KG9yaWdpbmFsU3RyaW5nLT5pbXBsKCksIGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpKQot
ICAgICAgICBtX3N0cmluZyA9ICpvcmlnaW5hbFN0cmluZzsKLSAgICBlbHNlCi0gICAgICAgIG1f
c3RyaW5nID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpOwotCi0gICAgbV9p
c1ZhbGlkID0gdHJ1ZTsKLX0KLQotYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgaWYgKGEubV9xdWVyeUVuZCAh
PSBiLm1fcXVlcnlFbmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB1bnNpZ25lZCBxdWVy
eUxlbmd0aCA9IGEubV9xdWVyeUVuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVl
cnlMZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtp
XSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYg
YikKLXsKLSAgICBpZiAoYS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpbnQgaG9zdFN0YXJ0QSA9IGEuaG9zdFN0YXJ0KCk7Ci0gICAg
aW50IGhvc3RMZW5ndGhBID0gYS5ob3N0RW5kKCkgLSBob3N0U3RhcnRBOwotICAgIGludCBob3N0
U3RhcnRCID0gYi5ob3N0U3RhcnQoKTsKLSAgICBpbnQgaG9zdExlbmd0aEIgPSBiLmhvc3RFbmQo
KSAtIGIuaG9zdFN0YXJ0KCk7Ci0gICAgaWYgKGhvc3RMZW5ndGhBICE9IGhvc3RMZW5ndGhCKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayB0aGUgc2NoZW1lCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBhLm1fc2NoZW1lRW5kOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmlu
ZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBBbmQgdGhlIGhvc3QKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGhvc3RMZW5ndGhBOyAr
K2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2hvc3RTdGFydEEgKyBpXSAhPSBiLnN0cmluZygp
W2hvc3RTdGFydEIgKyBpXSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChh
LnBvcnQoKSAhPSBiLnBvcnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVN0cmluZyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0
cmluZyYgbm90RW5jb2RlZFN0cmluZykKLXsKLSAgICBDU3RyaW5nIGFzVVRGOCA9IG5vdEVuY29k
ZWRTdHJpbmcudXRmOCgpOwotCi0gICAgQ2hhckJ1ZmZlciBidWZmZXIoYXNVVEY4Lmxlbmd0aCgp
ICogMyArIDEpOwotICAgIGNoYXIqIHAgPSBidWZmZXIuZGF0YSgpOwotCi0gICAgY29uc3QgY2hh
ciogc3RyID0gYXNVVEY4LmRhdGEoKTsKLSAgICBjb25zdCBjaGFyKiBzdHJFbmQgPSBzdHIgKyBh
c1VURjgubGVuZ3RoKCk7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVuZCkgewotICAgICAgICB1bnNp
Z25lZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChpc0JhZENoYXIoYykpCi0gICAgICAg
ICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
KnArKyA9IGM7Ci0gICAgfQotCi0gICAgQVNTRVJUKHAgLSBidWZmZXIuZGF0YSgpIDw9IHN0YXRp
Y19jYXN0PGludD4oYnVmZmVyLnNpemUoKSkpOwotCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIu
ZGF0YSgpLCBwIC0gYnVmZmVyLmRhdGEoKSk7Ci19Ci0KLS8vIEFwcGVuZHMgdGhlIHB1bnljb2Rl
ZCBob3N0bmFtZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBzdHJpbmcgYW5kIGxlbmd0aCB0bwot
Ly8gdGhlIG91dHB1dCBidWZmZXIuIFRoZSByZXN1bHQgd2lsbCBub3QgYmUgbnVsbCB0ZXJtaW5h
dGVkLgotc3RhdGljIHZvaWQgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKFVDaGFyQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IFVDaGFyKiBzdHIsIHVuc2lnbmVkIHN0ckxlbikKLXsKLSAgICAvLyBOZWVkcyB0
byBiZSBiaWcgZW5vdWdoIHRvIGhvbGQgYW4gSUROLWVuY29kZWQgbmFtZS4KLSAgICAvLyBGb3Ig
aG9zdCBuYW1lcyBiaWdnZXIgdGhhbiB0aGlzLCB3ZSB3b24ndCBkbyBJRE4gZW5jb2RpbmcsIHdo
aWNoIGlzIGFsbW9zdCBjZXJ0YWlubHkgT0suCi0gICAgY29uc3QgdW5zaWduZWQgaG9zdG5hbWVC
dWZmZXJMZW5ndGggPSAyMDQ4OwotCi0gICAgaWYgKHN0ckxlbiA+IGhvc3RuYW1lQnVmZmVyTGVu
Z3RoIHx8IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShzdHIsIHN0ckxlbikpIHsKLSAgICAgICAgYnVm
ZmVyLmFwcGVuZChzdHIsIHN0ckxlbik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSNpZiBV
U0UoSUNVX1VOSUNPREUpCi0gICAgVUNoYXIgaG9zdG5hbWVCdWZmZXJbaG9zdG5hbWVCdWZmZXJM
ZW5ndGhdOwotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgaW50MzJf
dCBudW1DaGFyYWN0ZXJzQ29udmVydGVkID0gdWlkbmFfSUROVG9BU0NJSShzdHIsIHN0ckxlbiwg
aG9zdG5hbWVCdWZmZXIsCi0gICAgICAgIGhvc3RuYW1lQnVmZmVyTGVuZ3RoLCBVSUROQV9BTExP
V19VTkFTU0lHTkVELCAwLCAmZXJyb3IpOwotICAgIGlmIChlcnJvciA9PSBVX1pFUk9fRVJST1Ip
Ci0gICAgICAgIGJ1ZmZlci5hcHBlbmQoaG9zdG5hbWVCdWZmZXIsIG51bUNoYXJhY3RlcnNDb252
ZXJ0ZWQpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VS
TChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiYg
bmFtZVJhbmdlcykKLXsKLSAgICAvLyBJbiBhIG1haWx0bzogVVJMLCBob3N0IG5hbWVzIGNvbWUg
YWZ0ZXIgYSAnQCcgY2hhcmFjdGVyIGFuZCBlbmQgd2l0aCBhICc+JyBvciAnLCcgb3IgJz8nIG9y
IGVuZCBvZiBzdHJpbmcgY2hhcmFjdGVyLgotICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZ3Mgc28g
dGhhdCBjaGFyYWN0ZXJzIGluIHRoZW0gZG9uJ3QgY29uZnVzZSB1cy4KLSAgICAvLyBXaGVuIHdl
IGZpbmQgYSAnPycgY2hhcmFjdGVyLCB3ZSBhcmUgcGFzdCB0aGUgcGFydCBvZiB0aGUgVVJMIHRo
YXQgY29udGFpbnMgaG9zdCBuYW1lcy4KLQotICAgIG5hbWVSYW5nZXMuY2xlYXIoKTsKLQotICAg
IGludCBwID0gMDsKLSAgICB3aGlsZSAoMSkgewotICAgICAgICAvLyBGaW5kIHN0YXJ0IG9mIGhv
c3QgbmFtZSBvciBvZiBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpbnQgaG9zdG5hbWVPclN0cmlu
Z1N0YXJ0ID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIHAsICJcIkA/Iik7Ci0gICAgICAgIGlm
IChob3N0bmFtZU9yU3RyaW5nU3RhcnQgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIFVDaGFyIGMgPSBzdHJbaG9zdG5hbWVPclN0cmluZ1N0YXJ0XTsKLSAgICAgICAgcCA9IGhv
c3RuYW1lT3JTdHJpbmdTdGFydCArIDE7Ci0KLSAgICAgICAgaWYgKGMgPT0gJz8nKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmIChjID09ICdAJykgewotICAgICAgICAgICAgLy8g
RmluZCBlbmQgb2YgaG9zdCBuYW1lLgotICAgICAgICAgICAgaW50IGhvc3RuYW1lU3RhcnQgPSBw
OwotICAgICAgICAgICAgaW50IGhvc3RuYW1lRW5kID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4s
IHAsICI+LD8iKTsKLSAgICAgICAgICAgIGJvb2wgZG9uZTsKLSAgICAgICAgICAgIGlmIChob3N0
bmFtZUVuZCA9PSAtMSkgewotICAgICAgICAgICAgICAgIGhvc3RuYW1lRW5kID0gc3RyTGVuOwot
ICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBwID0gaG9zdG5hbWVFbmQ7Ci0gICAgICAgICAgICAgICAgZG9uZSA9IGZhbHNl
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuYW1lUmFuZ2VzLmFwcGVuZChtYWtlX3Bh
aXIoaG9zdG5hbWVTdGFydCwgaG9zdG5hbWVFbmQpKTsKLQotICAgICAgICAgICAgaWYgKGRvbmUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
Ly8gU2tpcCBxdW90ZWQgc3RyaW5nLgotICAgICAgICAgICAgQVNTRVJUKGMgPT0gJyInKTsKLSAg
ICAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICAgICAgaW50IGVzY2FwZWRDaGFyYWN0
ZXJPclN0cmluZ0VuZCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiXCJcXCIpOwotICAg
ICAgICAgICAgICAgIGlmIChlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPT0gLTEpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGMgPSBzdHJbZXNjYXBl
ZENoYXJhY3Rlck9yU3RyaW5nRW5kXTsKLSAgICAgICAgICAgICAgICBwID0gZXNjYXBlZENoYXJh
Y3Rlck9yU3RyaW5nRW5kICsgMTsKLQotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSB0aGUg
ZW5kIG9mIHRoZSBzdHJpbmcsIHRoZW4gYnJlYWsgZnJvbSB0aGUgc3RyaW5nIGxvb3AgYmFjayB0
byB0aGUgaG9zdCBuYW1lIGxvb3AuCi0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKQotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8vIFNraXAgZXNjYXBl
ZCBjaGFyYWN0ZXIuCi0gICAgICAgICAgICAgICAgQVNTRVJUKGMgPT0gJ1xcJyk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHAgPT0gc3RyTGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19
Ci0KLXN0YXRpYyBib29sIGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKGNvbnN0IFVDaGFy
KiBzdHIsIGludCBzdHJMZW4sIGludCYgc3RhcnRPZmZzZXQsIGludCYgZW5kT2Zmc2V0KQotewot
ICAgIC8vIEZpbmQgdGhlIGhvc3QgbmFtZSBpbiBhIGhpZXJhcmNoaWNhbCBVUkwuCi0gICAgLy8g
SXQgY29tZXMgYWZ0ZXIgYSAiOi8vIiBzZXF1ZW5jZSwgd2l0aCBzY2hlbWUgY2hhcmFjdGVycyBw
cmVjZWRpbmcsIGFuZAotICAgIC8vIHRoaXMgc2hvdWxkIGJlIHRoZSBmaXJzdCBjb2xvbiBpbiB0
aGUgc3RyaW5nLgotICAgIC8vIEl0IGVuZHMgd2l0aCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3Ig
YSAiOiIgb3IgYSBwYXRoIHNlZ21lbnQgZW5kaW5nIGNoYXJhY3Rlci4KLSAgICAvLyBJZiB0aGVy
ZSBpcyBhICJAIiBjaGFyYWN0ZXIsIHRoZSBob3N0IHBhcnQgaXMganVzdCB0aGUgcGFydCBhZnRl
ciB0aGUgIkAiLgotICAgIGludCBzZXBhcmF0b3IgPSBmaW5kRmlyc3RPZihzdHIsIHN0ckxlbiwg
MCwgIjoiKTsKLSAgICBpZiAoc2VwYXJhdG9yID09IC0xIHx8IHNlcGFyYXRvciArIDIgPj0gc3Ry
TGVuIHx8Ci0gICAgICAgIHN0cltzZXBhcmF0b3IgKyAxXSAhPSAnLycgfHwgc3RyW3NlcGFyYXRv
ciArIDJdICE9ICcvJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhh
dCBhbGwgY2hhcmFjdGVycyBiZWZvcmUgdGhlIDovLyBhcmUgdmFsaWQgc2NoZW1lIGNoYXJhY3Rl
cnMuCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcihzdHJbMF0pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzZXBhcmF0b3I7ICsraSkgewotICAgICAg
ICBpZiAoIWlzU2NoZW1lQ2hhcihzdHJbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIC8vIFN0YXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0gICAgaW50IGF1dGhv
cml0eVN0YXJ0ID0gc2VwYXJhdG9yICsgMzsKLQotICAgIC8vIEZpbmQgdGVybWluYXRpbmcgY2hh
cmFjdGVyLgotICAgIGludCBob3N0bmFtZUVuZCA9IHN0ckxlbjsKLSAgICBmb3IgKGludCBpID0g
YXV0aG9yaXR5U3RhcnQ7IGkgPCBzdHJMZW47ICsraSkgewotICAgICAgICBVQ2hhciBjID0gc3Ry
W2ldOwotICAgICAgICBpZiAoYyA9PSAnOicgfHwgKGlzUGF0aFNlZ21lbnRFbmRDaGFyKGMpICYm
IGMgIT0gMCkpIHsKLSAgICAgICAgICAgIGhvc3RuYW1lRW5kID0gaTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gRmluZCAiQCIgZm9yIHRoZSBzdGFydCBv
ZiB0aGUgaG9zdCBuYW1lLgotICAgIGludCB1c2VySW5mb1Rlcm1pbmF0b3IgPSBmaW5kRmlyc3RP
ZihzdHIsIHN0ckxlbiwgYXV0aG9yaXR5U3RhcnQsICJAIik7Ci0gICAgaW50IGhvc3RuYW1lU3Rh
cnQ7Ci0gICAgaWYgKHVzZXJJbmZvVGVybWluYXRvciA9PSAtMSB8fCB1c2VySW5mb1Rlcm1pbmF0
b3IgPiBob3N0bmFtZUVuZCkKLSAgICAgICAgaG9zdG5hbWVTdGFydCA9IGF1dGhvcml0eVN0YXJ0
OwotICAgIGVsc2UKLSAgICAgICAgaG9zdG5hbWVTdGFydCA9IHVzZXJJbmZvVGVybWluYXRvciAr
IDE7Ci0KLSAgICBzdGFydE9mZnNldCA9IGhvc3RuYW1lU3RhcnQ7Ci0gICAgZW5kT2Zmc2V0ID0g
aG9zdG5hbWVFbmQ7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIENvbnZlcnRzIGFsbCBob3N0
bmFtZXMgZm91bmQgaW4gdGhlIGdpdmVuIGlucHV0IHRvIHB1bnljb2RlLCBwcmVzZXJ2aW5nIHRo
ZQotLy8gcmVzdCBvZiB0aGUgVVJMIHVuY2hhbmdlZC4gVGhlIG91dHB1dCB3aWxsIE5PVCBiZSBu
dWxsLXRlcm1pbmF0ZWQuCi1zdGF0aWMgdm9pZCBlbmNvZGVIb3N0bmFtZXMoY29uc3QgU3RyaW5n
JiBzdHIsIFVDaGFyQnVmZmVyJiBvdXRwdXQpCi17Ci0gICAgb3V0cHV0LmNsZWFyKCk7Ci0KLSAg
ICBpZiAocHJvdG9jb2xJcyhzdHIsICJtYWlsdG8iKSkgewotICAgICAgICBWZWN0b3I8cGFpcjxp
bnQsIGludD4gPiBob3N0bmFtZVJhbmdlczsKLSAgICAgICAgZmluZEhvc3RuYW1lc0luTWFpbFRv
VVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdG5hbWVSYW5nZXMpOwotICAg
ICAgICBpbnQgbiA9IGhvc3RuYW1lUmFuZ2VzLnNpemUoKTsKLSAgICAgICAgaW50IHAgPSAwOwot
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgY29uc3Qg
cGFpcjxpbnQsIGludD4mIHIgPSBob3N0bmFtZVJhbmdlc1tpXTsKLSAgICAgICAgICAgIG91dHB1
dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJzKClbcF0sIHIuZmlyc3QgLSBwKTsKLSAgICAgICAgICAg
IGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW3IuZmlyc3Rd
LCByLnNlY29uZCAtIHIuZmlyc3QpOwotICAgICAgICAgICAgcCA9IHIuc2Vjb25kOwotICAgICAg
ICB9Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBjb3B5IGVpdGhlciBldmVyeXRoaW5nIGFmdGVyIHRo
ZSBsYXN0IGhvc3RuYW1lLCBvciB0aGUKLSAgICAgICAgLy8gd2hvbGUgdGhpbmcgaWYgdGhlcmUg
aXMgbm8gaG9zdG5hbWUuCi0gICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJzKClb
cF0sIHN0ci5sZW5ndGgoKSAtIHApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBob3N0U3Rh
cnQsIGhvc3RFbmQ7Ci0gICAgICAgIGlmIChmaW5kSG9zdG5hbWVJbkhpZXJhcmNoaWNhbFVSTChz
dHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3RTdGFydCwgaG9zdEVuZCkpIHsKLSAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmQoc3RyLmNoYXJhY3RlcnMoKSwgaG9zdFN0YXJ0KTsgLy8g
QmVmb3JlIGhvc3RuYW1lLgotICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKG91dHB1
dCwgJnN0ci5jaGFyYWN0ZXJzKClbaG9zdFN0YXJ0XSwgaG9zdEVuZCAtIGhvc3RTdGFydCk7Ci0g
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW2hvc3RFbmRdLCBzdHIu
bGVuZ3RoKCkgLSBob3N0RW5kKTsgLy8gQWZ0ZXIgaG9zdG5hbWUuCi0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAvLyBObyBob3N0bmFtZSB0byBlbmNvZGUsIHJldHVybiB0aGUgaW5wdXQu
Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGVuY29kZVJlbGF0aXZlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgcmVsLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nLCBDaGFy
QnVmZmVyJiBvdXRwdXQpCi17Ci0gICAgVUNoYXJCdWZmZXIgczsKLSAgICBlbmNvZGVIb3N0bmFt
ZXMocmVsLCBzKTsKLQotICAgIFRleHRFbmNvZGluZyBwYXRoRW5jb2RpbmcoVVRGOEVuY29kaW5n
KCkpOyAvLyBQYXRoIGlzIGFsd2F5cyBlbmNvZGVkIGFzIFVURi04OyBvdGhlciBwYXJ0cyBtYXkg
ZGVwZW5kIG9uIHRoZSBzY2hlbWUuCi0KLSAgICBpbnQgcGF0aEVuZCA9IC0xOwotICAgIGlmIChl
bmNvZGluZyAhPSBwYXRoRW5jb2RpbmcgJiYgZW5jb2RpbmcuaXNWYWxpZCgpICYmICFwcm90b2Nv
bElzKHJlbCwgIm1haWx0byIpICYmICFwcm90b2NvbElzKHJlbCwgImRhdGEiKSAmJiAhcHJvdG9j
b2xJc0phdmFTY3JpcHQocmVsKSkgewotICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBpbnN0YW5j
ZSBvZiBlaXRoZXIgIyBvciA/LCBrZWVwIHBhdGhFbmQgYXQgLTEgb3RoZXJ3aXNlLgotICAgICAg
ICBwYXRoRW5kID0gZmluZEZpcnN0T2Yocy5kYXRhKCksIHMuc2l6ZSgpLCAwLCAiIz8iKTsKLSAg
ICB9Ci0KLSAgICBpZiAocGF0aEVuZCA9PSAtMSkgewotICAgICAgICBDU3RyaW5nIGRlY29kZWQg
PSBwYXRoRW5jb2RpbmcuZW5jb2RlKHMuZGF0YSgpLCBzLnNpemUoKSwgVVJMRW5jb2RlZEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICAgICAgb3V0cHV0LnJlc2l6ZShkZWNvZGVkLmxlbmd0
aCgpKTsKLSAgICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCksIGRlY29kZWQuZGF0YSgpLCBkZWNv
ZGVkLmxlbmd0aCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBDU3RyaW5nIHBhdGhEZWNvZGVk
ID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwgcGF0aEVuZCwgVVJMRW5jb2RlZEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICAgICAgLy8gVW5lbmNvZGFibGUgY2hhcmFjdGVycyBp
biBVUkxzIGFyZSByZXByZXNlbnRlZCBieSBjb252ZXJ0aW5nCi0gICAgICAgIC8vIHRoZW0gdG8g
WE1MIGVudGl0aWVzIGFuZCBlc2NhcGluZyBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuCi0g
ICAgICAgIENTdHJpbmcgb3RoZXJEZWNvZGVkID0gZW5jb2RpbmcuZW5jb2RlKHMuZGF0YSgpICsg
cGF0aEVuZCwgcy5zaXplKCkgLSBwYXRoRW5kLCBVUkxFbmNvZGVkRW50aXRpZXNGb3JVbmVuY29k
YWJsZXMpOwotCi0gICAgICAgIG91dHB1dC5yZXNpemUocGF0aERlY29kZWQubGVuZ3RoKCkgKyBv
dGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSwgcGF0
aERlY29kZWQuZGF0YSgpLCBwYXRoRGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweShv
dXRwdXQuZGF0YSgpICsgcGF0aERlY29kZWQubGVuZ3RoKCksIG90aGVyRGVjb2RlZC5kYXRhKCks
IG90aGVyRGVjb2RlZC5sZW5ndGgoKSk7Ci0gICAgfQotICAgIG91dHB1dC5hcHBlbmQoJ1wwJyk7
IC8vIG51bGwtdGVybWluYXRlIHRoZSBvdXRwdXQuCi19Ci0KLXN0YXRpYyBTdHJpbmcgc3Vic3Rp
dHV0ZUJhY2tzbGFzaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHNpemVfdCBxdWVz
dGlvblBvcyA9IHN0cmluZy5maW5kKCc/Jyk7Ci0gICAgc2l6ZV90IGhhc2hQb3MgPSBzdHJpbmcu
ZmluZCgnIycpOwotICAgIHVuc2lnbmVkIHBhdGhFbmQ7Ci0KLSAgICBpZiAoaGFzaFBvcyAhPSBu
b3RGb3VuZCAmJiAocXVlc3Rpb25Qb3MgPT0gbm90Rm91bmQgfHwgcXVlc3Rpb25Qb3MgPiBoYXNo
UG9zKSkKLSAgICAgICAgcGF0aEVuZCA9IGhhc2hQb3M7Ci0gICAgZWxzZSBpZiAocXVlc3Rpb25Q
b3MgIT0gbm90Rm91bmQpCi0gICAgICAgIHBhdGhFbmQgPSBxdWVzdGlvblBvczsKLSAgICBlbHNl
Ci0gICAgICAgIHBhdGhFbmQgPSBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICByZXR1cm4gc3RyaW5n
LmxlZnQocGF0aEVuZCkucmVwbGFjZSgnXFwnLCcvJykgKyBzdHJpbmcuc3Vic3RyaW5nKHBhdGhF
bmQpOwotfQotCi1ib29sIEtVUkw6OmlzSGllcmFyY2hpY2FsKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEFTU0VSVChtX3N0cmluZ1tt
X3NjaGVtZUVuZF0gPT0gJzonKTsKLSAgICByZXR1cm4gbV9zdHJpbmdbbV9zY2hlbWVFbmQgKyAx
XSA9PSAnLyc7Ci19Ci0KLXZvaWQgS1VSTDo6Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+
JiBidWZmZXIpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhp
Z2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmchCi0gICAgLy8gVGhh
dCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJMLCB3aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9y
IGludmFsaWQgVVJMcy4KLSAgICBidWZmZXIucmVzaXplKG1fc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZlci5kYXRhKCkpOwotfQotCi1ib29sIHByb3RvY29s
SXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKQotewotICAgIC8vIERv
IHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCi0gICAg
YXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwotICAgIGZvciAoaW50IGkgPSAwOyA7ICsr
aSkgewotICAgICAgICBpZiAoIXByb3RvY29sW2ldKQotICAgICAgICAgICAgcmV0dXJuIHVybFtp
XSA9PSAnOic7Ci0gICAgICAgIGlmICghaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbaV0s
IHByb3RvY29sW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLWJv
b2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCi17Ci0gICAgLy8gUkZD
Mzk4NjogQUxQSEEgKiggQUxQSEEgLyBESUdJVCAvICIrIiAvICItIiAvICIuIiApCi0gICAgaWYg
KHByb3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghaXNT
Y2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
dW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBwcm90b2NvbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xMZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoIWlz
U2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotICAgIHJldHVybiB0cnVlOwotfQotCi0jaWZuZGVmIE5ERUJVRwotdm9pZCBLVVJMOjpwcmlu
dCgpIGNvbnN0Ci17Ci0gICAgcHJpbnRmKCIlc1xuIiwgbV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7
Ci19Ci0jZW5kaWYKLQotU3RyaW5nIEtVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNv
bnN0Ci17Ci0gICAgS1VSTCByZWZlcnJlcigqdGhpcyk7Ci0gICAgcmVmZXJyZXIuc2V0VXNlcihT
dHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIuc2V0UGFzcyhTdHJpbmcoKSk7Ci0gICAgcmVmZXJyZXIu
cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygp
OwotfQotCi1ib29sIEtVUkw6OmlzTG9jYWxGaWxlKCkgY29uc3QKLXsKLSAgICAvLyBJbmNsdWRp
bmcgZmVlZCBoZXJlIG1pZ2h0IGJlIGEgYmFkIGlkZWEgc2luY2UgZHJhZyBhbmQgZHJvcCB1c2Vz
IHRoaXMgY2hlY2sKLSAgICAvLyBhbmQgaW5jbHVkaW5nIGZlZWQgd291bGQgYWxsb3cgZmVlZHMg
dG8gcG90ZW50aWFsbHkgbGV0IHNvbWVvbmUncyBibG9nCi0gICAgLy8gcmVhZCB0aGUgY29udGVu
dHMgb2YgdGhlIGNsaXBib2FyZCBvbiBhIGRyYWcsIGV2ZW4gd2l0aG91dCBhIGRyb3AuCi0gICAg
Ly8gTGlrZXdpc2Ugd2l0aCB1c2luZyB0aGUgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNM
b2NhbCgpIGZ1bmN0aW9uLgotICAgIHJldHVybiBwcm90b2NvbElzKCJmaWxlIik7Ci19Ci0KLWJv
b2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgcmV0dXJu
IHByb3RvY29sSXModXJsLCAiamF2YXNjcmlwdCIpOwotfQotCi1jb25zdCBLVVJMJiBibGFua1VS
TCgpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChLVVJMLCBzdGF0aWNCbGFua1VSTCwgKFBh
cnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIikpOwotICAgIHJldHVybiBzdGF0aWNCbGFua1VS
TDsKLX0KLQotYm9vbCBLVVJMOjppc0JsYW5rVVJMKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcHJv
dG9jb2xJcygiYWJvdXQiKTsKLX0KLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodW5z
aWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKLXsKLSAgICBpZiAocHJv
dG9jb2wuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCB1bnNpZ25lZCwgQ2FzZUZvbGRpbmdIYXNoPiBEZWZhdWx0UG9ydHNNYXA7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChEZWZhdWx0UG9ydHNNYXAsIGRlZmF1bHRQb3J0cywg
KCkpOwotICAgIGlmIChkZWZhdWx0UG9ydHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRlZmF1bHRQ
b3J0cy5zZXQoImh0dHAiLCA4MCk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImh0dHBzIiwg
NDQzKTsKLSAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwIiwgMjEpOwotICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJmdHBzIiwgOTkwKTsKLSAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRQb3J0
cy5nZXQocHJvdG9jb2wpID09IHBvcnQ7Ci19Ci0KLWJvb2wgcG9ydEFsbG93ZWQoY29uc3QgS1VS
TCYgdXJsKQotewotICAgIHVuc2lnbmVkIHNob3J0IHBvcnQgPSB1cmwucG9ydCgpOwotCi0gICAg
Ly8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0LCByZXR1cm4gZWFybHkgZm9yIHRo
ZSAibm8gcG9ydCIgY2FzZS4KLSAgICBpZiAoIXBvcnQpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRjaGVzIHRoZSBwb3J0IGJsb2NraW5n
IHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgotICAgIC8vIFNlZSBodHRwOi8vd3d3Lm1vemlsbGEu
b3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9u
LgotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBibG9ja2VkUG9ydExpc3RbXSA9IHsK
LSAgICAgICAgMSwgICAgLy8gdGNwbXV4Ci0gICAgICAgIDcsICAgIC8vIGVjaG8KLSAgICAgICAg
OSwgICAgLy8gZGlzY2FyZAotICAgICAgICAxMSwgICAvLyBzeXN0YXQKLSAgICAgICAgMTMsICAg
Ly8gZGF5dGltZQotICAgICAgICAxNSwgICAvLyBuZXRzdGF0Ci0gICAgICAgIDE3LCAgIC8vIHFv
dGQKLSAgICAgICAgMTksICAgLy8gY2hhcmdlbgotICAgICAgICAyMCwgICAvLyBGVFAtZGF0YQot
ICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAotICAgICAgICAyMiwgICAvLyBTU0gKLSAgICAg
ICAgMjMsICAgLy8gdGVsbmV0Ci0gICAgICAgIDI1LCAgIC8vIFNNVFAKLSAgICAgICAgMzcsICAg
Ly8gdGltZQotICAgICAgICA0MiwgICAvLyBuYW1lCi0gICAgICAgIDQzLCAgIC8vIG5pY25hbWUK
LSAgICAgICAgNTMsICAgLy8gZG9tYWluCi0gICAgICAgIDc3LCAgIC8vIHByaXYtcmpzCi0gICAg
ICAgIDc5LCAgIC8vIGZpbmdlcgotICAgICAgICA4NywgICAvLyB0dHlsaW5rCi0gICAgICAgIDk1
LCAgIC8vIHN1cGR1cAotICAgICAgICAxMDEsICAvLyBob3N0cmlhbWUKLSAgICAgICAgMTAyLCAg
Ly8gaXNvLXRzYXAKLSAgICAgICAgMTAzLCAgLy8gZ3BwaXRucAotICAgICAgICAxMDQsICAvLyBh
Y3ItbmVtYQotICAgICAgICAxMDksICAvLyBQT1AyCi0gICAgICAgIDExMCwgIC8vIFBPUDMKLSAg
ICAgICAgMTExLCAgLy8gc3VucnBjCi0gICAgICAgIDExMywgIC8vIGF1dGgKLSAgICAgICAgMTE1
LCAgLy8gU0ZUUAotICAgICAgICAxMTcsICAvLyB1dWNwLXBhdGgKLSAgICAgICAgMTE5LCAgLy8g
bm50cAotICAgICAgICAxMjMsICAvLyBOVFAKLSAgICAgICAgMTM1LCAgLy8gbG9jLXNydiAvIGVw
bWFwCi0gICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKLSAgICAgICAgMTQzLCAgLy8gSU1BUDIKLSAg
ICAgICAgMTc5LCAgLy8gQkdQCi0gICAgICAgIDM4OSwgIC8vIExEQVAKLSAgICAgICAgNDY1LCAg
Ly8gU01UUCtTU0wKLSAgICAgICAgNTEyLCAgLy8gcHJpbnQgLyBleGVjCi0gICAgICAgIDUxMywg
IC8vIGxvZ2luCi0gICAgICAgIDUxNCwgIC8vIHNoZWxsCi0gICAgICAgIDUxNSwgIC8vIHByaW50
ZXIKLSAgICAgICAgNTI2LCAgLy8gdGVtcG8KLSAgICAgICAgNTMwLCAgLy8gY291cmllcgotICAg
ICAgICA1MzEsICAvLyBDaGF0Ci0gICAgICAgIDUzMiwgIC8vIG5ldG5ld3MKLSAgICAgICAgNTQw
LCAgLy8gVVVDUAotICAgICAgICA1NTYsICAvLyByZW1vdGVmcwotICAgICAgICA1NjMsICAvLyBO
TlRQK1NTTAotICAgICAgICA1ODcsICAvLyBFU01UUAotICAgICAgICA2MDEsICAvLyBzeXNsb2ct
Y29ubgotICAgICAgICA2MzYsICAvLyBMREFQK1NTTAotICAgICAgICA5OTMsICAvLyBJTUFQK1NT
TAotICAgICAgICA5OTUsICAvLyBQT1AzK1NTTAotICAgICAgICAyMDQ5LCAvLyBORlMKLSAgICAg
ICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBhc3N3b3JkU2VydmVyIFtBcHBsZSBhZGRpdGlvbl0K
LSAgICAgICAgNDA0NSwgLy8gbG9ja2QKLSAgICAgICAgNjAwMCwgLy8gWDExCi0gICAgICAgIDY2
NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY2LCAvLyBB
bHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NywgLy8gU3RhbmRhcmQg
SVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2OCwgLy8gQWx0ZXJuYXRlIElSQyBbQXBw
bGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0
aW9uXQotICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52
YWxpZCBwb3J0IG51bWJlcnMKLSAgICB9OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25z
dCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBXVEZfQVJSQVlfTEVOR1RI
KGJsb2NrZWRQb3J0TGlzdCk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgLy8gVGhlIHBvcnQgbGlz
dCBtdXN0IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0byB3b3JrLgotICAgIHN0YXRpYyBi
b29sIGNoZWNrZWRQb3J0TGlzdCA9IGZhbHNlOwotICAgIGlmICghY2hlY2tlZFBvcnRMaXN0KSB7
Ci0gICAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAgPSBibG9ja2VkUG9ydExpc3Q7
IHAgIT0gYmxvY2tlZFBvcnRMaXN0RW5kIC0gMTsgKytwKQotICAgICAgICAgICAgQVNTRVJUKCpw
IDwgKihwICsgMSkpOwotICAgICAgICBjaGVja2VkUG9ydExpc3QgPSB0cnVlOwotICAgIH0KLSNl
bmRpZgotCi0gICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGluIHRoZSBibG9ja2VkIHBvcnQgbGlz
dCwgYWxsb3cgaXQuCi0gICAgaWYgKCFiaW5hcnlfc2VhcmNoKGJsb2NrZWRQb3J0TGlzdCwgYmxv
Y2tlZFBvcnRMaXN0RW5kLCBwb3J0KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBB
bGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBhcyBNb3ppbGxhIGRvZXMuCi0gICAg
aWYgKChwb3J0ID09IDIxIHx8IHBvcnQgPT0gMjIpICYmIHVybC5wcm90b2NvbElzKCJmdHAiKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBBbGxvdyBhbnkgcG9ydCBudW1iZXIgaW4g
YSBmaWxlIFVSTCwgc2luY2UgdGhlIHBvcnQgbnVtYmVyIGlzIGlnbm9yZWQuCi0gICAgaWYgKHVy
bC5wcm90b2NvbElzKCJmaWxlIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0jaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKLSAgICBpZiAodXJsLnByb3RvY29sSXMoImxvY2FsIikpCi0gICAgICAg
IHJldHVybiB0cnVlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVN0cmluZyBt
aW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEFTU0VSVChwcm90
b2NvbElzKHVybCwgImRhdGEiKSk7Ci0gICAgc2l6ZV90IGluZGV4ID0gdXJsLmZpbmQoJzsnKTsK
LSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAgICAgIGluZGV4ID0gdXJsLmZpbmQoJywn
KTsKLSAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgaWYgKGluZGV4ID4gNSkK
LSAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUsIGluZGV4IC0gNSkubG93ZXIoKTsK
LSAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsgLy8gRGF0YSBVUkxzIHdpdGggbm8gTUlNRSB0
eXBlIGFyZSBjb25zaWRlcmVkIHRleHQvcGxhaW4uCi0gICAgfQotICAgIHJldHVybiAiIjsKLX0K
LQotU3RyaW5nIG1pbWVUeXBlRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgU3RyaW5n
IGRlY29kZWRQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwotICAg
IFN0cmluZyBleHRlbnNpb24gPSBkZWNvZGVkUGF0aC5zdWJzdHJpbmcoZGVjb2RlZFBhdGgucmV2
ZXJzZUZpbmQoJy4nKSArIDEpOwotCi0gICAgLy8gV2UgZG9uJ3QgdXNlIE1JTUVUeXBlUmVnaXN0
cnk6OmdldE1JTUVUeXBlRm9yUGF0aCgpIGJlY2F1c2UgaXQgcmV0dXJucyAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIiB1cG9uIGZhaWx1cmUKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKLX0KLQotYm9vbCBLVVJMOjppc1Nh
ZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5p
c1NhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQoKTsKLX0KLQotU3RyaW5nIEtVUkw6OnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0Ci17Ci0gICAgaWYg
KHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHN0cmluZygpOwot
Ci0gICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAtIDEpICsgIi4uLiIgKyBzdHJp
bmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRhOWU2NWMwOTJkZDE3ZjMwMDdkMmNhNmNm
MmRlNWJhODNhMDJjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKKysrIC9kZXYvbnVsbApAQCAtMSwz
NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpZm5kZWYgS1VSTF9oCi0jZGVmaW5lIEtVUkxfaAotCi0jaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIFVTRShD
RikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOwotI2VuZGlmCi0KLSNp
ZiBQTEFURk9STShNQUMpCi1PQkpDX0NMQVNTIE5TVVJMOwotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShRVCkKLVFUX0JFR0lOX05BTUVTUEFDRQotY2xhc3MgUVVybDsKLVFUX0VORF9OQU1FU1BBQ0UK
LSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFRleHRFbmNvZGluZzsKLXN0
cnVjdCBLVVJMSGFzaDsKLQotZW51bSBQYXJzZWRVUkxTdHJpbmdUYWcgeyBQYXJzZWRVUkxTdHJp
bmcgfTsKLQotY2xhc3MgS1VSTCB7Ci1wdWJsaWM6Ci0gICAgLy8gR2VuZXJhdGVzIGEgVVJMIHdo
aWNoIGNvbnRhaW5zIGEgbnVsbCBzdHJpbmcuCi0gICAgS1VSTCgpIHsgaW52YWxpZGF0ZSgpOyB9
Ci0KLSAgICAvLyBUaGUgYXJndW1lbnQgaXMgYW4gYWJzb2x1dGUgVVJMIHN0cmluZy4gVGhlIHN0
cmluZyBpcyBhc3N1bWVkIHRvIGJlIG91dHB1dCBvZiBLVVJMOjpzdHJpbmcoKSBjYWxsZWQgb24g
YSB2YWxpZAotICAgIC8vIEtVUkwgb2JqZWN0LCBvciBpbmRpc2Nlcm5pYmxlIGZyb20gc3VjaC4K
LSAgICAvLyBJdCBpcyB1c3VhbGx5IGJlc3QgdG8gYXZvaWQgcmVwZWF0ZWRseSBwYXJzaW5nIGEg
c3RyaW5nLCB1bmxlc3MgbWVtb3J5IHNhdmluZyBvdXR3ZWlnaCB0aGUgcG9zc2libGUgc2xvdy1k
b3ducy4KLSAgICBLVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJik7Ci0gICAg
ZXhwbGljaXQgS1VSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmco
V1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOyB9Ci0KLSAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdpdmVu
IGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCi0gICAgLy8gVGV4dEVuY29kaW5nIGlzIHVzZWQg
dG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKLSAgICAv
LyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBiZSBp
bnRlcnByZXRlZCBhcwotICAgIC8vIGFic29sdXRlLgotICAgIC8vIEZJWE1FOiBJZiB0aGUgYmFz
ZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCi0gICAgLy8g
VVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBpbnZh
bGlkIGJhc2UgVVJMcwotICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQgZW1w
dHkgYmFzZSBVUkxzLgotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSk7Ci0gICAgS1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQotICAgIFN0cmluZyBzdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKSBjb25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGUgYWJvdmUgZnVuY3Rpb25zIHNo
b3VsZCBiZSBoYXJtb25pemVkIHNvIHRoYXQgcGFzc2luZyBhCi0gICAgLy8gYmFzZSBvZiBudWxs
IG9yIHRoZSBlbXB0eSBzdHJpbmcgZ2l2ZXMgdGhlIHNhbWUgcmVzdWx0IGFzIHRoZQotICAgIC8v
IHN0YW5kYXJkIFN0cmluZyBjb25zdHJ1Y3Rvci4KLQotICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5
LiBIZWxwZnVsIG9ubHkgaWYgeW91IG5lZWQgdG8gdXNlIGEgS1VSTCBvbiBhbm90aGVyCi0gICAg
Ly8gdGhyZWFkLiAgU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBp
bW11dGFibGUsIHRoZXJlJ3MKLSAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIg
Y29weSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCi0gICAgS1VSTCBjb3B5KCkgY29uc3Q7
Ci0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0OwotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Owot
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBj
YW4gc2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMLgotICAgIC8vIE5vbi1oaWVyYXJj
aGljYWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KLSAgICBib29sIGNhblNldEhv
c3RPclBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9Ci0KLSAgICBib29s
IGNhblNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotICAg
IGJvb2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKLQotICAgIGNvbnN0IFN0cmluZyYgc3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQotICAgIFN0cmluZyBzdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7Ci0KLSAgICBT
dHJpbmcgcHJvdG9jb2woKSBjb25zdDsKLSAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIHNob3J0IHBvcnQoKSBjb25zdDsKLSAgICBib29sIGhhc1BvcnQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgdXNlcigpIGNvbnN0OwotICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsK
LSAgICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKLSAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVy
KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKLQotICAg
IFN0cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKLQotICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0OwotCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHBy
b3RvY29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQotICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkg
YXJndW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCi0gICAgYm9vbCBwcm90
b2NvbElzKGNvbnN0IGNoYXIqKSBjb25zdDsKLSAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9Ci0gICAgYm9vbCBwcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OwotICAgIGJv
b2wgaXNCbGFua1VSTCgpIGNvbnN0OwotCi0gICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHJlbW92
ZVBvcnQoKTsKLSAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOwotCi0gICAgLy8gSW5w
dXQgaXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCi0gICAgdm9pZCBzZXRIb3N0
QW5kUG9ydChjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcm
KTsKLSAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7Ci0KLSAgICAvLyBJZiB5b3UgcGFz
cyBhbiBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0
aAotICAgIC8vIHdpbGwgYmUgIi8iLgotICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsK
LQotICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBp
ZiBub3QsIG9uZSB3aWxsIGJlIGFkZGVkCi0gICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVl
cnkgdG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQotICAgIC8vIFVS
TCAod2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVs
bCBzdHJpbmcuCi0gICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKLQotICAgIHZvaWQg
c2V0RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgcmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7Ci0KLSAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21l
bnRJZGVudGlmaWVyKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci0KLSAgICBmcmllbmQgYm9v
bCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsK
LQotICAgIHVuc2lnbmVkIGhvc3RTdGFydCgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGhvc3RFbmQo
KSBjb25zdDsKLQotICAgIHVuc2lnbmVkIHBhdGhTdGFydCgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IHBhdGhFbmQoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25z
dDsKLQotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYoKSBjb25zdCB7IHJldHVybiBzdHJpbmco
KTsgfQotCi0jaWYgVVNFKENGKQotICAgIEtVUkwoQ0ZVUkxSZWYpOwotICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY3JlYXRlQ0ZVUkwoKSBjb25zdDsKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFD
KQotICAgIEtVUkwoTlNVUkwqKTsKLSAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKLSNlbmRp
ZgotI2lmZGVmIF9fT0JKQ19fCi0gICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1
cm4gc3RyaW5nKCk7IH0KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oUVQpCi0gICAgS1VSTChjb25z
dCBRVXJsJik7Ci0gICAgb3BlcmF0b3IgUVVybCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBjb25z
dCBLVVJMKiBpbm5lclVSTCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQotI2lmbmRlZiBOREVCVUcK
LSAgICB2b2lkIHByaW50KCkgY29uc3Q7Ci0jZW5kaWYKLQotICAgIGJvb2wgaXNTYWZlVG9TZW5k
VG9Bbm90aGVyVGhyZWFkKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbnZhbGlkYXRl
KCk7Ci0gICAgc3RhdGljIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFy
Kik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0
RW5jb2RpbmcmKTsKLSAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVm
ZmVyKSBjb25zdDsKLQotICAgIC8vIFBhcnNlcyB0aGUgZ2l2ZW4gVVJMLiBUaGUgb3JpZ2luYWxT
dHJpbmcgcGFyYW1ldGVyIGFsbG93cyBmb3IgYW4KLSAgICAvLyBvcHRpbWl6YXRpb246IFdoZW4g
dGhlIHNvdXJjZSBpcyB0aGUgc2FtZSBhcyB0aGUgZml4ZWQtdXAgc3RyaW5nLAotICAgIC8vIGl0
IHdpbGwgdXNlIHRoZSBwYXNzZWQtaW4gc3RyaW5nIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5l
dyBvbmUuCi0gICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHBhcnNlKGNv
bnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZyA9IDApOwotCi0gICAg
Ym9vbCBoYXNQYXRoKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgbV9zdHJpbmc7Ci0gICAgYm9vbCBt
X2lzVmFsaWQgOiAxOwotICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKLQot
ICAgIGludCBtX3NjaGVtZUVuZDsKLSAgICBpbnQgbV91c2VyU3RhcnQ7Ci0gICAgaW50IG1fdXNl
ckVuZDsKLSAgICBpbnQgbV9wYXNzd29yZEVuZDsKLSAgICBpbnQgbV9ob3N0RW5kOwotICAgIGlu
dCBtX3BvcnRFbmQ7Ci0gICAgaW50IG1fcGF0aEFmdGVyTGFzdFNsYXNoOwotICAgIGludCBtX3Bh
dGhFbmQ7Ci0gICAgaW50IG1fcXVlcnlFbmQ7Ci0gICAgaW50IG1fZnJhZ21lbnRFbmQ7Ci19Owot
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0
b3I9PShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3RyaW5nJiwgY29uc3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwot
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLQotYm9vbCBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci1i
b29sIHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYp
OwotCi1jb25zdCBLVVJMJiBibGFua1VSTCgpOwotCi0vLyBGdW5jdGlvbnMgdG8gZG8gVVJMIG9w
ZXJhdGlvbnMgb24gc3RyaW5ncy4KLS8vIFRoZXNlIGFyZSBvcGVyYXRpb25zIHRoYXQgYXJlbid0
IGZhc3RlciBvbiBhIHBhcnNlZCBVUkwuCi0vLyBUaGVzZSBhcmUgYWxzbyBkaWZmZXJlbnQgZnJv
bSB0aGUgS1VSTCBmdW5jdGlvbnMgaW4gdGhhdCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmlu
ZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJsZSBVUkwuCi0vLyBUaGlzIGlzIGVzcGVjaWFsbHkg
aW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJp
bHkgY29uc2lkZXJlZCB2YWxpZCBieSBLVVJMLgotCi1ib29sIHByb3RvY29sSXMoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3RvY29sKTsKLWJvb2wgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoY29uc3QgU3RyaW5nJiB1cmwpOwotCi1ib29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1
bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKLWJvb2wgcG9ydEFs
bG93ZWQoY29uc3QgS1VSTCYpOyAvLyBCbGFja2xpc3QgcG9ydHMgdGhhdCBzaG91bGQgbmV2ZXIg
YmUgdXNlZCBmb3IgV2ViIHJlc291cmNlcy4KLQotYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3Qg
U3RyaW5nJik7Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJs
KTsKLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3QgS1VSTCYpOwotCi0vLyBVbmVzY2FwZXMg
dGhlIGdpdmVuIHN0cmluZyB1c2luZyBVUkwgZXNjYXBpbmcgcnVsZXMsIGdpdmVuIGFuIG9wdGlv
bmFsCi0vLyBlbmNvZGluZyAoZGVmYXVsdGluZyB0byBVVEYtOCBvdGhlcndpc2UpLiBEQU5HRVI6
IElmIHRoZSBVUkwgaGFzICIlMDAiCi0vLyBpbiBpdCwgdGhlIHJlc3VsdGluZyBzdHJpbmcgd2ls
bCBoYXZlIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycyEKLVN0cmluZyBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwotCi1TdHJpbmcgZW5jb2RlV2l0
aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmKTsKLQotLy8gSW5saW5lcy4KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQotewotICAg
IHJldHVybiBhLnN0cmluZygpID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3QgU3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0
cmluZygpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBLVVJMJiBiKQotewotICAgIHJldHVybiBhID09IGIuc3RyaW5nKCk7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAg
ICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcoKSAhPSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwotfQotCi0v
LyBJbmxpbmUgdmVyc2lvbnMgb2Ygc29tZSBub24tR29vZ2xlVVJMIGZ1bmN0aW9ucyBzbyB3ZSBj
YW4gZ2V0IGlubGluaW5nCi0vLyB3aXRob3V0IGhhdmluZyB0byBoYXZlIGEgbG90IG9mIHVnbHkg
aWZkZWZzIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgotCi1pbmxpbmUgYm9vbCBLVVJMOjppc051
bGwoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc051bGwoKTsKLX0KLQotaW5saW5l
IGJvb2wgS1VSTDo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RyaW5nLmlzRW1w
dHkoKTsKLX0KLQotaW5saW5lIGJvb2wgS1VSTDo6aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faXNWYWxpZDsKLX0KLQotaW5saW5lIGJvb2wgS1VSTDo6aGFzUGF0aCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX3BvcnRFbmQ7Ci19Ci0KLWlubGluZSBib29sIEtV
Ukw6Omhhc1BvcnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2hvc3RFbmQgPCBtX3BvcnRFbmQ7
Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7Ci19Ci0KLWlubGluZSB1bnNp
Z25lZCBLVVJMOjpob3N0U3RhcnQoKSBjb25zdAotewotICAgIHJldHVybiAobV9wYXNzd29yZEVu
ZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29yZEVuZCArIDE7Ci19
Ci0KLWlubGluZSB1bnNpZ25lZCBLVVJMOjpob3N0RW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9ob3N0RW5kOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6cGF0aFN0YXJ0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6cGF0
aEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0aEVuZDsKLX0KLQotaW5saW5lIHVuc2ln
bmVkIEtVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGF0
aEFmdGVyTGFzdFNsYXNoOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFj
ZSBXVEYgewotCi0gICAgLy8gS1VSTEhhc2ggaXMgdGhlIGRlZmF1bHQgaGFzaCBmb3IgU3RyaW5n
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwotICAgIHRlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OktVUkw+IHsKLSAgICAgICAgdHlwZWRl
ZiBXZWJDb3JlOjpLVVJMSGFzaCBIYXNoOwotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgot
Ci0jZW5kaWYgLy8gS1VSTF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjFkZDEzYjJhYzkzYzgzNDE2MTg3Y2EyNjNkZjg5ODQ2NmFk
Mzk5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEtVUkxIYXNoX2gKLSNkZWZpbmUgS1VSTEhhc2hfaAotCi0jaW5jbHVkZSAiS1VSTC5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgc3RydWN0IEtVUkxIYXNoIHsK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgS1VSTCYga2V5KQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4ga2V5LnN0cmluZygpLmltcGwoKS0+aGFzaCgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS1VSTCYgYSwgY29uc3QgS1VS
TCYgYikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEu
c3RyaW5nKCksIGIuc3RyaW5nKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKLSAgICB9OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi0gICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpLVVJMPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxXZWJDb3JlOjpLVVJMPiB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8g
S1VSTEhhc2hfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCmluZGV4IDI1NzNmNjM1
M2ZiMGZiNjFhMGVhYWNmYTM2OWQwNWJlYTYwZWMyYTkuLjJiMmVlMjAwODBjMGU4Mjc3YTA5Y2Yy
NjNjNDQ5YzFkNjEzNzJlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xp
bmtIYXNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAKQEAg
LTIyLDcgKzIyLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgpAQCAtMjI2LDEzICsyMjYsMTMgQEAgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVD
aGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29u
c3QgS1VSTCYgYmFzZSwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQg
bGVuZ3RoLCBWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgNTEyPiYgYnVmZmVyKQorc3RhdGljIEFMV0FZ
U19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQ2hh
cmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8Q2hhcmFjdGVy
VHlwZSwgNTEyPiYgYnVmZmVyKQogewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUaGlzIGlzIGEgcG9vciBtYW4ncyBjb21wbGV0ZVVSTC4gRmFzdGVyIHdpdGgg
bGVzcyBtZW1vcnkgYWxsb2NhdGlvbi4KLSAgICAvLyBGSVhNRTogSXQncyBtaXNzaW5nIGEgbG90
IG9mIHdoYXQgY29tcGxldGVVUkwgZG9lcyBhbmQgYSBsb3Qgb2Ygd2hhdCBLVVJMIGRvZXMuCisg
ICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxvdCBvZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMg
YW5kIGEgbG90IG9mIHdoYXQgVVJMIGRvZXMuCiAgICAgLy8gRm9yIGV4YW1wbGUsIGl0IGRvZXMg
bm90IGhhbmRsZSBpbnRlcm5hdGlvbmFsIGRvbWFpbiBuYW1lcyBwcm9wZXJseS4KIAogICAgIC8v
IEZJWE1FOiBJdCBpcyB3cm9uZyB0aGF0IHdlIGRvIG5vdCBkbyBmdXJ0aGVyIHByb2Nlc3Npbmcg
b24gc3RyaW5ncyB0aGF0IGhhdmUgIjovLyIgaW4gdGhlbToKQEAgLTI4NCwxMiArMjg0LDEyIEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdmlzaXRlZFVSTElubGluZShjb25zdCBLVVJMJiBi
YXNlLCBjb25zdCBDaGFyYWN0ZXJUeXBlCiAgICAgcmV0dXJuOwogfQogCi12b2lkIHZpc2l0ZWRV
UkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZl
Y3RvcjxVQ2hhciwgNTEyPiYgYnVmZmVyKQordm9pZCB2aXNpdGVkVVJMKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYg
YnVmZmVyKQogewogICAgIHJldHVybiB2aXNpdGVkVVJMSW5saW5lKGJhc2UsIGF0dHJpYnV0ZVVS
TC5jaGFyYWN0ZXJzKCksIGF0dHJpYnV0ZVVSTC5sZW5ndGgoKSwgYnVmZmVyKTsKIH0KIAotTGlu
a0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKQorTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgaWYgKGF0dHJpYnV0
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtI
YXNoLmgKaW5kZXggNzhlYWEzYTQzYzZjMmFiOWUwNGIwNjI4YzkwNmJkZTllMDdlYWYyMi4uMjli
Y2ZlMGFlMDAyNDZkYWE5YTI5YWUzMzk2MjBhNmUzNWY4YzRmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MaW5rSGFzaC5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIApA
QCAtNjEsMTIgKzYxLDEyIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVQ2hhciog
dXJsLCB1bnNpZ25lZCBsZW5ndGgpOwogLy8gYmFzZSBVUkwsIGFuZCByZXR1cm5zIHRoZSBoYXNo
IG9mIHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHZpc2l0ZWQKIC8vIGxpbmsgY29s
b3JpbmcuIEl0IHdpbGwgcmV0dXJuIHRoZSBzcGVjaWFsIHZhbHVlIG9mIDAgaWYgYXR0cmlidXRl
VVJMIGRvZXMgbm90CiAvLyBsb29rIGxpa2UgYSByZWxhdGl2ZSBVUkwuCi1MaW5rSGFzaCB2aXNp
dGVkTGlua0hhc2goY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpOworTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVSTCYgYmFzZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogCiAvLyBSZXNvbHZlcyB0aGUgcG90ZW50aWFs
bHkgcmVsYXRpdmUgVVJMICJhdHRyaWJ1dGVVUkwiIHJlbGF0aXZlIHRvIHRoZSBnaXZlbgogLy8g
YmFzZSBVUkwsIGFuZCByZXR1cm5zIHRoZSBoYXNoIG9mIHRoZSBzdHJpbmcgdGhhdCB3aWxsIGJl
IHVzZWQgZm9yIHZpc2l0ZWQuCiAvLyBJdCB3aWxsIHJldHVybiBhbiBlbXB0eSBWZWN0b3IgaW4g
Y2FzZSBvZiBlcnJvcnMuCi12b2lkIHZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYpOwordm9pZCB2
aXNpdGVkVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYpOwogCiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggN2UyNzdjZTE1MzUwMjNkZmZlNDA3
YmRhNjQwZDEzYTllNzQ2YzRlYS4uODkyMTFmMGM2MjVmMzYzZDExNzAwZDczYjQyZTdhNzY0ZWJk
ZjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApAQCAtMjgsNyArMjgsNyBA
QAogCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
ODYsNyArODYsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogfTsKIAogc3RydWN0
IFBhc3RlYm9hcmRVUkwgewotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgU3RyaW5n
IHRpdGxlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKICAgICBTdHJpbmcg
dXNlclZpc2libGVGb3JtOwpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURkQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRSVEYoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7CiAgICAgdmlydHVh
bCBib29sIHJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYg
dHlwZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOwogI2VuZGlmCiAgICAgdmlydHVhbCBib29sIHJlYWRQ
bGFpblRleHQoY29uc3QgU3RyaW5nJikgPSAwOwogfTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpIHx8IFBMQVRG
T1JNKFdJTikKLSAgICB2b2lkIHdyaXRlSW1hZ2UoTm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHRpdGxlKTsgLy8gRklYTUU6IExheWVyaW5nIHZpb2xhdGlvbi4KKyAgICB2b2lkIHdy
aXRlSW1hZ2UoTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOyAvLyBGSVhN
RTogTGF5ZXJpbmcgdmlvbGF0aW9uLgogICAgIHZvaWQgd3JpdGVTZWxlY3Rpb24oUmFuZ2UqLCBi
b29sIGNhblNtYXJ0Q29weU9yRGVsZXRlLCBGcmFtZSosIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckNsaXBib2FyZCA9IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlKTsgLy8gRklYTUU6IExh
eWVyaW5nIHZpb2xhdGlvbi4KICNlbmRpZgogCkBAIC0yMTAsOSArMjEwLDkgQEAgcHVibGljOgog
I2lmIFBMQVRGT1JNKFdJTikKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFPYmplY3Q7IH0KICAgICB2b2lkIHNldEV4dGVybmFsRGF0YU9i
amVjdChJRGF0YU9iamVjdCopOwotICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB3cml0ZVVSTFRvV3JpdGFi
bGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwogICAgIENPTVB0cjxXQ0Rh
dGFPYmplY3Q+IHdyaXRhYmxlRGF0YU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGFibGVE
YXRhT2JqZWN0OyB9Ci0gICAgdm9pZCB3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqLCBj
b25zdCBLVVJMJik7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCisgICAgdm9pZCB3cml0
ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQqLCBjb25zdCBVUkwmKTsgLy8gRklYTUU6IExheWVy
aW5nIHZpb2xhdGlvbi4KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjQwLDcgKzI0MCw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW5nUGFzdGVib2FyZCgpOwogICAgIHZvaWQg
d3JpdGVSYW5nZVRvRGF0YU9iamVjdChSYW5nZSosIEZyYW1lKik7IC8vIEZJWE1FOiBMYXllcmlu
ZyB2aW9sYXRpb24uCi0gICAgdm9pZCB3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHdyaXRlUGxhaW5UZXh0VG9EYXRhT2JqZWN0KGNv
bnN0IFN0cmluZyYsIFNtYXJ0UmVwbGFjZU9wdGlvbik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaAppbmRleCA4MTVjM2Y5ODA1MjVmMzg2
ZWE4ZjQxMWYzMmQ2YjdmMWMzNzg1MTBhLi5iZmYxNmM4NTBkNWI0MDA1OGNkOTRmNjFkMjJkMzhl
YTUxMTdmNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJk
U3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRl
Z3kuaApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb2xv
cjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAgICAgCiBjbGFzcyBQYXN0ZWJvYXJkU3RyYXRl
Z3kgewogcHVibGljOgpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBsb25n
IGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0
dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgQ29sb3IgY29sb3IoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwotICAgIHZpcnR1YWwgS1VSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOworICAgIHZpcnR1YWwgVVJMIHVybChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCBsb25nIGFk
ZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAppbmRleCAyMzYyNTUzNzk3ZGVlYTJlNGM2MWNlOTU0Mjg4ZDI5YjQ4NDgxM2JkLi5kZDY4Njc5
MzY5NjRmNTA4YmEyODA4MGFmZjM0N2M3YTk2MTgzZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAtNDMsNyArNDMsNyBAQCBPQkpDX0NMQVNT
IFVJUGFzdGVib2FyZDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBQbGF0Zm9ybVBhc3RlYm9hcmQgewogcHVibGlj
OgpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgbG9uZyBjaGFuZ2VDb3VudCgpIGNvbnN0
OwogICAgIENvbG9yIGNvbG9yKCk7Ci0gICAgS1VSTCB1cmwoKTsKKyAgICBVUkwgdXJsKCk7CiAK
ICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCwgYW5kIHJldHVybiBuZXcg
Y2hhbmdlIGNvdW50LgogICAgIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xL
ZXlHZW5lcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5o
CmluZGV4IDA2NTE1MjYwNTU4ODhiMTg5OGI0MGMwMDUxMTA3NWY5MjU1MmZiOTguLmRmNjhiZmU3
ZWY2NDg3YWZkODQxYmE0YWNlZGU3ZjY4OTExOTM0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NTTEtleUdlbmVyYXRvci5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAgICAgLy8gUmV0dXJu
cyBzdHJpbmdzIHJlcHJlc2VudGluZyBrZXkgc2l6ZXMgdGhhdCBtYXkgYmUgdXNlZAogICAgIC8v
IGZvciB0aGUgPGtleWdlbj4gdGFnLiBUaGUgZmlyc3Qgc3RyaW5nIGlzIGRpc3BsYXllZCBhcyB0
aGUgZGVmYXVsdApAQCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSA8a2V5Z2VuPiB0YWcgaW4gZm9ybSBlbGVtZW50cy4K
ICAgICAvLyBSZXR1cm5zIGEgc2lnbmVkIGNvcHkgb2YgdGhlIGNvbWJpbmVkIGNoYWxsZW5nZSBz
dHJpbmcgYW5kIHB1YmxpYwogICAgIC8vIGtleSAoZnJvbSBhIG5ld2x5IGdlbmVyYXRlZCBrZXkg
cGFpcikuCi0gICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBL
VVJMJik7CisgICAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNp
Z25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBV
UkwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kOTYxMzdmYzNjN2I1YmRlNzM1NzY1ZDUzZmFmZjExNmUwNTJiZTAxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcApAQCAtMCwwICsx
LDE5MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMTEsIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworI2luY2x1ZGUgIkRlY29kZUVz
Y2FwZVNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRl
ICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKwor
I2lmIFVTRShJQ1VfVU5JQ09ERSkKKyNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+CisjZW5kaWYK
KworLy8gRklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2YgdGhlICsgb3BlcmF0
b3Igb24gU3RyaW5nLgorLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUgdGhhdCBvcGVyYXRv
ciBzbyBpdCBkb2Vzbid0IGludm9sdmUKKy8vIHNvIG1hbnkgYWxsb2NhdGlvbnMsIG9yIGNoYW5n
ZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KKwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRl
ZiBWZWN0b3I8Y2hhciwgNTEyPiBDaGFyQnVmZmVyOwordHlwZWRlZiBWZWN0b3I8VUNoYXIsIDUx
Mj4gVUNoYXJCdWZmZXI7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtVmFsaWRQb3J0
TnVtYmVyID0gMHhGRkZFOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludmFsaWRQb3J0TnVtYmVy
ID0gMHhGRkZGOworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZShVQ2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVyKQoreworICAgIEFTU0VSVChp
c0FTQ0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7CisgICAgcmV0dXJuIChjaGFyYWN0ZXIgfCAw
eDIwKSA9PSBsb3dlcmNhc2VMZXR0ZXI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIHdzU2NoZW1l
W10gPSB7J3cnLCAncyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZnRwU2NoZW1lW10gPSB7J2YnLCAn
dCcsICdwJ307CitzdGF0aWMgY29uc3QgY2hhciBmdHBQb3J0W10gPSB7JzInLCAnMSd9Oworc3Rh
dGljIGNvbnN0IGNoYXIgd3NzU2NoZW1lW10gPSB7J3cnLCAncycsICdzJ307CitzdGF0aWMgY29u
c3QgY2hhciBmaWxlU2NoZW1lW10gPSB7J2YnLCAnaScsICdsJywgJ2UnfTsKK3N0YXRpYyBjb25z
dCBjaGFyIGh0dHBTY2hlbWVbXSA9IHsnaCcsICd0JywgJ3QnLCAncCd9Oworc3RhdGljIGNvbnN0
IGNoYXIgaHR0cFBvcnRbXSA9IHsnOCcsICcwJ307CitzdGF0aWMgY29uc3QgY2hhciBodHRwc1Nj
aGVtZVtdID0geydoJywgJ3QnLCAndCcsICdwJywgJ3MnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGh0
dHBzUG9ydFtdID0geyc0JywgJzQnLCAnMyd9Oworc3RhdGljIGNvbnN0IGNoYXIgZ29waGVyU2No
ZW1lW10gPSB7J2cnLCAnbycsICdwJywgJ2gnLCAnZScsICdyJ307CitzdGF0aWMgY29uc3QgY2hh
ciBnb3BoZXJQb3J0W10gPSB7JzcnLCAnMCd9OworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNoYXJhY3RlciwgY2hhciBsb3dlcmNhc2VMZXR0ZXIp
Cit7CisgICAgQVNTRVJUKGlzQVNDSUlMb3dlcihsb3dlcmNhc2VMZXR0ZXIpKTsKKyAgICByZXR1
cm4gKGNoYXJhY3RlciB8IDB4MjApID09IGxvd2VyY2FzZUxldHRlcjsKK30KKworZW51bSBVUkxD
aGFyYWN0ZXJDbGFzc2VzIHsKKyAgICAvLyBhbHBoYSAKKyAgICBTY2hlbWVGaXJzdENoYXIgPSAx
IDw8IDAsCisKKyAgICAvLyAoIGFscGhhIHwgZGlnaXQgfCAiKyIgfCAiLSIgfCAiLiIgKQorICAg
IFNjaGVtZUNoYXIgPSAxIDw8IDEsCisKKyAgICAvLyBtYXJrICAgICAgICA9ICItIiB8ICJfIiB8
ICIuIiB8ICIhIiB8ICJ+IiB8ICIqIiB8ICInIiB8ICIoIiB8ICIpIgorICAgIC8vIHVucmVzZXJ2
ZWQgID0gYWxwaGFudW0gfCBtYXJrCisgICAgLy8gKCB1bnJlc2VydmVkIHwgZXNjYXBlZCB8ICI7
IiB8ICI6IiB8ICImIiB8ICI9IiB8ICIrIiB8ICIkIiB8ICIsIiApCisgICAgVXNlckluZm9DaGFy
ID0gMSA8PCAyLAorCisgICAgLy8gYWxudW0gfCAiLiIgfCAiLSIgfCAiJSIKKyAgICAvLyBUaGUg
YWJvdmUgaXMgd2hhdCB0aGUgc3BlY2lmaWNhdGlvbiBzYXlzLCBidXQgd2UgYXJlIGxlbmllbnQg
dG8KKyAgICAvLyBtYXRjaCBleGlzdGluZyBwcmFjdGljZSBhbmQgYWxzbyBhbGxvdzoKKyAgICAv
LyAiXyIKKyAgICBIb3N0bmFtZUNoYXIgPSAxIDw8IDMsCisKKyAgICAvLyBoZXhkaWdpdCB8ICI6
IiB8ICIlIgorICAgIElQdjZDaGFyID0gMSA8PCA0LAorCisgICAgLy8gIiMiIHwgIj8iIHwgIi8i
IHwgbnVsCisgICAgUGF0aFNlZ21lbnRFbmRDaGFyID0gMSA8PCA1LAorCisgICAgLy8gbm90IGFs
bG93ZWQgaW4gcGF0aAorICAgIEJhZENoYXIgPSAxIDw8IDYKK307CisKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGNoYXJhY3RlckNsYXNzVGFibGVbMjU2XSA9IHsKKyAgICAvKiAwIG51bCAq
LyBQYXRoU2VnbWVudEVuZENoYXIsICAgIC8qIDEgc29oICovIEJhZENoYXIsCisgICAgLyogMiBz
dHggKi8gQmFkQ2hhciwgICAgLyogMyBldHggKi8gQmFkQ2hhciwKKyAgICAvKiA0IGVvdCAqLyBC
YWRDaGFyLCAgICAvKiA1IGVucSAqLyBCYWRDaGFyLCAgICAvKiA2IGFjayAqLyBCYWRDaGFyLCAg
ICAvKiA3IGJlbCAqLyBCYWRDaGFyLAorICAgIC8qIDggYnMgKi8gQmFkQ2hhciwgICAgIC8qIDkg
aHQgKi8gQmFkQ2hhciwgICAgIC8qIDEwIG5sICovIEJhZENoYXIsICAgIC8qIDExIHZ0ICovIEJh
ZENoYXIsCisgICAgLyogMTIgbnAgKi8gQmFkQ2hhciwgICAgLyogMTMgY3IgKi8gQmFkQ2hhciwg
ICAgLyogMTQgc28gKi8gQmFkQ2hhciwgICAgLyogMTUgc2kgKi8gQmFkQ2hhciwKKyAgICAvKiAx
NiBkbGUgKi8gQmFkQ2hhciwgICAvKiAxNyBkYzEgKi8gQmFkQ2hhciwgICAvKiAxOCBkYzIgKi8g
QmFkQ2hhciwgICAvKiAxOSBkYzMgKi8gQmFkQ2hhciwKKyAgICAvKiAyMCBkYzQgKi8gQmFkQ2hh
ciwgICAvKiAyMSBuYWsgKi8gQmFkQ2hhciwgICAvKiAyMiBzeW4gKi8gQmFkQ2hhciwgICAvKiAy
MyBldGIgKi8gQmFkQ2hhciwKKyAgICAvKiAyNCBjYW4gKi8gQmFkQ2hhciwgICAvKiAyNSBlbSAq
LyBCYWRDaGFyLCAgICAvKiAyNiBzdWIgKi8gQmFkQ2hhciwgICAvKiAyNyBlc2MgKi8gQmFkQ2hh
ciwKKyAgICAvKiAyOCBmcyAqLyBCYWRDaGFyLCAgICAvKiAyOSBncyAqLyBCYWRDaGFyLCAgICAv
KiAzMCBycyAqLyBCYWRDaGFyLCAgICAvKiAzMSB1cyAqLyBCYWRDaGFyLAorICAgIC8qIDMyIHNw
ICovIEJhZENoYXIsICAgIC8qIDMzICAhICovIFVzZXJJbmZvQ2hhciwKKyAgICAvKiAzNCAgIiAq
LyBCYWRDaGFyLCAgICAvKiAzNSAgIyAqLyBQYXRoU2VnbWVudEVuZENoYXIgfCBCYWRDaGFyLAor
ICAgIC8qIDM2ICAkICovIFVzZXJJbmZvQ2hhciwgICAgLyogMzcgICUgKi8gVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIgfCBCYWRDaGFyLAorICAgIC8qIDM4ICAmICovIFVz
ZXJJbmZvQ2hhciwgICAgLyogMzkgICcgKi8gVXNlckluZm9DaGFyLAorICAgIC8qIDQwICAoICov
IFVzZXJJbmZvQ2hhciwgICAgLyogNDEgICkgKi8gVXNlckluZm9DaGFyLAorICAgIC8qIDQyICAq
ICovIFVzZXJJbmZvQ2hhciwgICAgLyogNDMgICsgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciwKKyAgICAvKiA0NCAgLCAqLyBVc2VySW5mb0NoYXIsCisgICAgLyogNDUgIC0gKi8gU2NoZW1l
Q2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA0NiAgLiAqLyBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyog
NDcgIC8gKi8gUGF0aFNlZ21lbnRFbmRDaGFyLAorICAgIC8qIDQ4ICAwICovIFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCisgICAgLyogNDkgIDEg
Ki8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAg
ICAKKyAgICAvKiA1MCAgMiAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDUxICAzICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiA1MiAgNCAqLyBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDUzICA1
ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
KyAgICAvKiA1NCAgNiAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
IHwgSVB2NkNoYXIsIAorICAgIC8qIDU1ICA3ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiA1NiAgOCAqLyBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDU3ICA5ICov
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAg
ICAvKiA1OCAgOiAqLyBVc2VySW5mb0NoYXIgfCBJUHY2Q2hhciwgICAgLyogNTkgIDsgKi8gVXNl
ckluZm9DaGFyLAorICAgIC8qIDYwICA8ICovIEJhZENoYXIsICAgIC8qIDYxICA9ICovIFVzZXJJ
bmZvQ2hhciwKKyAgICAvKiA2MiAgPiAqLyBCYWRDaGFyLCAgICAvKiA2MyAgPyAqLyBQYXRoU2Vn
bWVudEVuZENoYXIgfCBCYWRDaGFyLAorICAgIC8qIDY0ICBAICovIDAsCisgICAgLyogNjUgIEEg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IElQdjZDaGFyLCAgICAKKyAgICAvKiA2NiAgQiAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAg
LyogNjcgIEMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAgIC8qIDY4ICBEICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwK
KyAgICAvKiA2OSAgRSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogNzAgIEYgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZD
aGFyLAorICAgIC8qIDcxICBHICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzIgIEggKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA3MyAg
SSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAorICAgIC8qIDc0ICBKICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBV
c2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzUgIEsgKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA3
NiAgTCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLAorICAgIC8qIDc3ICBNICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzggIE4gKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAv
KiA3OSAgTyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyLAorICAgIC8qIDgwICBQICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNo
YXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODEgIFEgKi8gU2NoZW1l
Rmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAg
ICAvKiA4MiAgUiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDgzICBTICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODQgIFQgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwK
KyAgICAvKiA4NSAgVSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDg2ICBWICovIFNjaGVtZUZpcnN0Q2hhciB8IFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogODcgIFcgKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKKyAgICAvKiA4OCAgWCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiA4OSAgWSAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDkwICBa
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIsCisgICAgLyogOTEgIFsgKi8gMCwKKyAgICAvKiA5MiAgXCAqLyAwLCAgICAvKiA5MyAg
XSAqLyAwLAorICAgIC8qIDk0ICBeICovIDAsCisgICAgLyogOTUgIF8gKi8gVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDk2ICBgICovIDAsCisgICAgLyogOTcgIGEgKi8gU2No
ZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8
IElQdjZDaGFyLAorICAgIC8qIDk4ICBiICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCisgICAgLyogOTkgIGMg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IElQdjZDaGFyLAorICAgIC8qIDEwMCAgZCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8q
IDEwMSAgZSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwg
SG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogMTAyICBmICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwg
CisgICAgLyogMTAzICBnICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogMTA0ICBoICovIFNjaGVtZUZpcnN0Q2hhciB8
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEwNSAg
aSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAorICAgIC8qIDEwNiAgaiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMDcgIGsgKi8gU2NoZW1lRmly
c3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAv
KiAxMDggIGwgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTA5ICBtICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogMTEwICBuICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
IAorICAgIC8qIDExMSAgbyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDExMiAgcCAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMTMg
IHEgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwKKyAgICAvKiAxMTQgIHIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTE1ICBzICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAg
LyogMTE2ICB0ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDExNyAgdSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDExOCAgdiAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LCAKKyAgICAvKiAxMTkgIHcgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiAxMjAgIHggKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTIx
ICB5ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsCisgICAgLyogMTIyICB6ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEyMyAgeyAqLyAwLAorICAg
IC8qIDEyNCAgfCAqLyAwLCAgIC8qIDEyNSAgfSAqLyAwLCAgIC8qIDEyNiAgfiAqLyBVc2VySW5m
b0NoYXIsICAgLyogMTI3IGRlbCAqLyBCYWRDaGFyLAorICAgIC8qIDEyOCAqLyBCYWRDaGFyLCAv
KiAxMjkgKi8gQmFkQ2hhciwgLyogMTMwICovIEJhZENoYXIsIC8qIDEzMSAqLyBCYWRDaGFyLAor
ICAgIC8qIDEzMiAqLyBCYWRDaGFyLCAvKiAxMzMgKi8gQmFkQ2hhciwgLyogMTM0ICovIEJhZENo
YXIsIC8qIDEzNSAqLyBCYWRDaGFyLAorICAgIC8qIDEzNiAqLyBCYWRDaGFyLCAvKiAxMzcgKi8g
QmFkQ2hhciwgLyogMTM4ICovIEJhZENoYXIsIC8qIDEzOSAqLyBCYWRDaGFyLAorICAgIC8qIDE0
MCAqLyBCYWRDaGFyLCAvKiAxNDEgKi8gQmFkQ2hhciwgLyogMTQyICovIEJhZENoYXIsIC8qIDE0
MyAqLyBCYWRDaGFyLAorICAgIC8qIDE0NCAqLyBCYWRDaGFyLCAvKiAxNDUgKi8gQmFkQ2hhciwg
LyogMTQ2ICovIEJhZENoYXIsIC8qIDE0NyAqLyBCYWRDaGFyLAorICAgIC8qIDE0OCAqLyBCYWRD
aGFyLCAvKiAxNDkgKi8gQmFkQ2hhciwgLyogMTUwICovIEJhZENoYXIsIC8qIDE1MSAqLyBCYWRD
aGFyLAorICAgIC8qIDE1MiAqLyBCYWRDaGFyLCAvKiAxNTMgKi8gQmFkQ2hhciwgLyogMTU0ICov
IEJhZENoYXIsIC8qIDE1NSAqLyBCYWRDaGFyLAorICAgIC8qIDE1NiAqLyBCYWRDaGFyLCAvKiAx
NTcgKi8gQmFkQ2hhciwgLyogMTU4ICovIEJhZENoYXIsIC8qIDE1OSAqLyBCYWRDaGFyLAorICAg
IC8qIDE2MCAqLyBCYWRDaGFyLCAvKiAxNjEgKi8gQmFkQ2hhciwgLyogMTYyICovIEJhZENoYXIs
IC8qIDE2MyAqLyBCYWRDaGFyLAorICAgIC8qIDE2NCAqLyBCYWRDaGFyLCAvKiAxNjUgKi8gQmFk
Q2hhciwgLyogMTY2ICovIEJhZENoYXIsIC8qIDE2NyAqLyBCYWRDaGFyLAorICAgIC8qIDE2OCAq
LyBCYWRDaGFyLCAvKiAxNjkgKi8gQmFkQ2hhciwgLyogMTcwICovIEJhZENoYXIsIC8qIDE3MSAq
LyBCYWRDaGFyLAorICAgIC8qIDE3MiAqLyBCYWRDaGFyLCAvKiAxNzMgKi8gQmFkQ2hhciwgLyog
MTc0ICovIEJhZENoYXIsIC8qIDE3NSAqLyBCYWRDaGFyLAorICAgIC8qIDE3NiAqLyBCYWRDaGFy
LCAvKiAxNzcgKi8gQmFkQ2hhciwgLyogMTc4ICovIEJhZENoYXIsIC8qIDE3OSAqLyBCYWRDaGFy
LAorICAgIC8qIDE4MCAqLyBCYWRDaGFyLCAvKiAxODEgKi8gQmFkQ2hhciwgLyogMTgyICovIEJh
ZENoYXIsIC8qIDE4MyAqLyBCYWRDaGFyLAorICAgIC8qIDE4NCAqLyBCYWRDaGFyLCAvKiAxODUg
Ki8gQmFkQ2hhciwgLyogMTg2ICovIEJhZENoYXIsIC8qIDE4NyAqLyBCYWRDaGFyLAorICAgIC8q
IDE4OCAqLyBCYWRDaGFyLCAvKiAxODkgKi8gQmFkQ2hhciwgLyogMTkwICovIEJhZENoYXIsIC8q
IDE5MSAqLyBCYWRDaGFyLAorICAgIC8qIDE5MiAqLyBCYWRDaGFyLCAvKiAxOTMgKi8gQmFkQ2hh
ciwgLyogMTk0ICovIEJhZENoYXIsIC8qIDE5NSAqLyBCYWRDaGFyLAorICAgIC8qIDE5NiAqLyBC
YWRDaGFyLCAvKiAxOTcgKi8gQmFkQ2hhciwgLyogMTk4ICovIEJhZENoYXIsIC8qIDE5OSAqLyBC
YWRDaGFyLAorICAgIC8qIDIwMCAqLyBCYWRDaGFyLCAvKiAyMDEgKi8gQmFkQ2hhciwgLyogMjAy
ICovIEJhZENoYXIsIC8qIDIwMyAqLyBCYWRDaGFyLAorICAgIC8qIDIwNCAqLyBCYWRDaGFyLCAv
KiAyMDUgKi8gQmFkQ2hhciwgLyogMjA2ICovIEJhZENoYXIsIC8qIDIwNyAqLyBCYWRDaGFyLAor
ICAgIC8qIDIwOCAqLyBCYWRDaGFyLCAvKiAyMDkgKi8gQmFkQ2hhciwgLyogMjEwICovIEJhZENo
YXIsIC8qIDIxMSAqLyBCYWRDaGFyLAorICAgIC8qIDIxMiAqLyBCYWRDaGFyLCAvKiAyMTMgKi8g
QmFkQ2hhciwgLyogMjE0ICovIEJhZENoYXIsIC8qIDIxNSAqLyBCYWRDaGFyLAorICAgIC8qIDIx
NiAqLyBCYWRDaGFyLCAvKiAyMTcgKi8gQmFkQ2hhciwgLyogMjE4ICovIEJhZENoYXIsIC8qIDIx
OSAqLyBCYWRDaGFyLAorICAgIC8qIDIyMCAqLyBCYWRDaGFyLCAvKiAyMjEgKi8gQmFkQ2hhciwg
LyogMjIyICovIEJhZENoYXIsIC8qIDIyMyAqLyBCYWRDaGFyLAorICAgIC8qIDIyNCAqLyBCYWRD
aGFyLCAvKiAyMjUgKi8gQmFkQ2hhciwgLyogMjI2ICovIEJhZENoYXIsIC8qIDIyNyAqLyBCYWRD
aGFyLAorICAgIC8qIDIyOCAqLyBCYWRDaGFyLCAvKiAyMjkgKi8gQmFkQ2hhciwgLyogMjMwICov
IEJhZENoYXIsIC8qIDIzMSAqLyBCYWRDaGFyLAorICAgIC8qIDIzMiAqLyBCYWRDaGFyLCAvKiAy
MzMgKi8gQmFkQ2hhciwgLyogMjM0ICovIEJhZENoYXIsIC8qIDIzNSAqLyBCYWRDaGFyLAorICAg
IC8qIDIzNiAqLyBCYWRDaGFyLCAvKiAyMzcgKi8gQmFkQ2hhciwgLyogMjM4ICovIEJhZENoYXIs
IC8qIDIzOSAqLyBCYWRDaGFyLAorICAgIC8qIDI0MCAqLyBCYWRDaGFyLCAvKiAyNDEgKi8gQmFk
Q2hhciwgLyogMjQyICovIEJhZENoYXIsIC8qIDI0MyAqLyBCYWRDaGFyLAorICAgIC8qIDI0NCAq
LyBCYWRDaGFyLCAvKiAyNDUgKi8gQmFkQ2hhciwgLyogMjQ2ICovIEJhZENoYXIsIC8qIDI0NyAq
LyBCYWRDaGFyLAorICAgIC8qIDI0OCAqLyBCYWRDaGFyLCAvKiAyNDkgKi8gQmFkQ2hhciwgLyog
MjUwICovIEJhZENoYXIsIC8qIDI1MSAqLyBCYWRDaGFyLAorICAgIC8qIDI1MiAqLyBCYWRDaGFy
LCAvKiAyNTMgKi8gQmFkQ2hhciwgLyogMjU0ICovIEJhZENoYXIsIC8qIDI1NSAqLyBCYWRDaGFy
Cit9OworCitzdGF0aWMgaW50IGNvcHlQYXRoUmVtb3ZpbmdEb3RzKGNoYXIqIGRzdCwgY29uc3Qg
Y2hhciogc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNFbmQpOworc3RhdGljIHZvaWQgZW5jb2Rl
UmVsYXRpdmVTdHJpbmcoY29uc3QgU3RyaW5nJiByZWwsIGNvbnN0IFRleHRFbmNvZGluZyYsIENo
YXJCdWZmZXImIG91cHV0KTsKK3N0YXRpYyBTdHJpbmcgc3Vic3RpdHV0ZUJhY2tzbGFzaGVzKGNv
bnN0IFN0cmluZyYpOworCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVGaXJzdENoYXIoY2hh
ciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGMpXSAmIFNjaGVtZUZpcnN0Q2hhcjsgfQorc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1l
Rmlyc3RDaGFyKFVDaGFyIGMpIHsgcmV0dXJuIGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjXSAmIFNjaGVtZUZpcnN0Q2hhcik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVt
ZUNoYXIoY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW3N0YXRpY19jYXN0PHVu
c2lnbmVkIGNoYXI+KGMpXSAmIFNjaGVtZUNoYXI7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1Nj
aGVtZUNoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1Rh
YmxlW2NdICYgU2NoZW1lQ2hhcik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1VzZXJJbmZvQ2hh
cih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBVc2Vy
SW5mb0NoYXI7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0hvc3RuYW1lQ2hhcih1bnNpZ25lZCBj
aGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBIb3N0bmFtZUNoYXI7IH0K
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc0lQdjZDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4g
Y2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIElQdjZDaGFyOyB9CitzdGF0aWMgaW5saW5lIGJvb2wg
aXNQYXRoU2VnbWVudEVuZENoYXIoY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxl
W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXSAmIFBhdGhTZWdtZW50RW5kQ2hhcjsgfQor
c3RhdGljIGlubGluZSBib29sIGlzUGF0aFNlZ21lbnRFbmRDaGFyKFVDaGFyIGMpIHsgcmV0dXJu
IGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFBhdGhTZWdtZW50RW5kQ2hh
cik7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0JhZENoYXIodW5zaWduZWQgY2hhciBjKSB7IHJl
dHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgQmFkQ2hhcjsgfQorICAgIAorc3RhdGljIGlu
bGluZSBib29sIGlzU2NoZW1lQ2hhcmFjdGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhciBjaGFyYWN0
ZXIsIGNoYXIgc2NoZW1lQ2hhcmFjdGVyKQoreworICAgIEFTU0VSVChpc1NjaGVtZUNoYXIoY2hh
cmFjdGVyKSk7CisgICAgQVNTRVJUKHNjaGVtZUNoYXJhY3RlciAmIDB4MjApOworICAgIEFTU0VS
VChpc0FTQ0lJTG93ZXIoc2NoZW1lQ2hhcmFjdGVyKSB8fCAoIWlzQVNDSUlVcHBlcihzY2hlbWVD
aGFyYWN0ZXIpICYmIGlzU2NoZW1lQ2hhcihzY2hlbWVDaGFyYWN0ZXIpKSk7CisgICAgcmV0dXJu
IChjaGFyYWN0ZXIgfCAweDIwKSA9PSBzY2hlbWVDaGFyYWN0ZXI7Cit9CisKKy8vIENvcGllcyB0
aGUgc291cmNlIHRvIHRoZSBkZXN0aW5hdGlvbiwgYXNzdW1pbmcgYWxsIHRoZSBzb3VyY2UgY2hh
cmFjdGVycyBhcmUKKy8vIEFTQ0lJLiBUaGUgZGVzdGluYXRpb24gYnVmZmVyIG11c3QgYmUgbGFy
Z2UgZW5vdWdoLiBOdWxsIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQKKy8vIGluIHRoZSBzb3VyY2Ug
c3RyaW5nLCBhbmQgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIG51bGwtdGVybWluYXRlIHRoZSByZXN1
bHQuCitzdGF0aWMgdm9pZCBjb3B5QVNDSUkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNoYXIqIGRl
c3QpCit7CisgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgIG1lbWNweShkZXN0LCBzdHJpbmcuY2hhcmFj
dGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgVUNo
YXIqIHNyYyA9IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIGRlc3RbaV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzcmNbaV0pOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgYXBwZW5kQVNDSUkoY29uc3QgU3RyaW5nJiBiYXNlLCBj
b25zdCBjaGFyKiByZWwsIHNpemVfdCBsZW4sIENoYXJCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBi
dWZmZXIucmVzaXplKGJhc2UubGVuZ3RoKCkgKyBsZW4gKyAxKTsKKyAgICBjb3B5QVNDSUkoYmFz
ZSwgYnVmZmVyLmRhdGEoKSk7CisgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCkgKyBiYXNlLmxlbmd0
aCgpLCByZWwsIGxlbik7CisgICAgYnVmZmVyW2J1ZmZlci5zaXplKCkgLSAxXSA9ICdcMCc7Cit9
CisKKy8vIEZJWE1FOiBNb3ZlIHRvIFdURlN0cmluZy5oIGV2ZW50dWFsbHkuCisvLyBSZXR1cm5z
IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgaW5kZXggaW4gc3RyaW5nIHxzfCBvZiBhbnkgb2YgdGhl
IGNoYXJhY3RlcnMKKy8vIGluIHx0b0ZpbmR8LiB8dG9GaW5kfCBzaG91bGQgYmUgYSBudWxsLXRl
cm1pbmF0ZWQgc3RyaW5nLCBhbGwgY2hhcmFjdGVycyB1cAorLy8gdG8gdGhlIG51bGwgd2lsbCBi
ZSBzZWFyY2hlZC4gUmV0dXJucyBpbnQgaWYgbm90IGZvdW5kLgorc3RhdGljIGludCBmaW5kRmly
c3RPZihjb25zdCBVQ2hhciogcywgaW50IHNMZW4sIGludCBzdGFydFBvcywgY29uc3QgY2hhciog
dG9GaW5kKQoreworICAgIGZvciAoaW50IGkgPSBzdGFydFBvczsgaSA8IHNMZW47IGkrKykgewor
ICAgICAgICBjb25zdCBjaGFyKiBjdXIgPSB0b0ZpbmQ7CisgICAgICAgIHdoaWxlICgqY3VyKSB7
CisgICAgICAgICAgICBpZiAoc1tpXSA9PSAqKGN1cisrKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gaTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbmxp
bmUgdm9pZCBjaGVja0VuY29kZWRTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgQVNT
RVJUX1VOVVNFRCh1cmwsIHVybC5jb250YWluc09ubHlBU0NJSSgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHVybCwgdXJsLmlzRW1wdHkoKSB8fCBpc1NjaGVtZUZpcnN0Q2hhcih1cmxbMF0pKTsKK30K
KworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25z
dCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhzdHJp
bmcsIHByb3RvY29sKTsKK30KKwordm9pZCBVUkw6OmludmFsaWRhdGUoKQoreworICAgIG1faXNW
YWxpZCA9IGZhbHNlOworICAgIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA9IGZhbHNlOworICAg
IG1fc2NoZW1lRW5kID0gMDsKKyAgICBtX3VzZXJTdGFydCA9IDA7CisgICAgbV91c2VyRW5kID0g
MDsKKyAgICBtX3Bhc3N3b3JkRW5kID0gMDsKKyAgICBtX2hvc3RFbmQgPSAwOworICAgIG1fcG9y
dEVuZCA9IDA7CisgICAgbV9wYXRoRW5kID0gMDsKKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9
IDA7CisgICAgbV9xdWVyeUVuZCA9IDA7CisgICAgbV9mcmFnbWVudEVuZCA9IDA7Cit9CisKK1VS
TDo6VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcGFy
c2UodXJsKTsKKyAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKK30KKworVVJMOjpVUkwoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQoreworICAgIGluaXQoYmFzZSwg
cmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKK30KKworVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQor
eworICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhl
IHF1ZXJ5IHBhcnQgYXMgCisgICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS4gQSBm
b3JtIHdpdGggR0VUIG1ldGhvZAorICAgIC8vIGhhcyBpdHMgY29udGVudHMgYWRkZWQgdG8gYSBV
UkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQorICAgIC8vIHRvIGJlIGNvbnNp
c3RlbnQuCisgICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3Jt
U3VibWlzc2lvbigpKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwodW5zaWdu
ZWQgY2hhciBjKQoreworICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdo
aXRlc3BhY2UgYW5kIGNvbnRyb2wKKyAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUg
dGhhdCBjIGlzIGFuICp1bnNpZ25lZCogY2hhciBoZXJlCisgICAgLy8gc28gdGhpcyBjb21wYXJp
c29uIHNob3VsZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICByZXR1cm4gYyA8
PSAnICc7Cit9CisKK3ZvaWQgVVJMOjppbml0KGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5n
JiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKK3sKKyAgICAvLyBBbGxv
dyByZXNvbHV0aW9ucyB3aXRoIGEgbnVsbCBvciBlbXB0eSBiYXNlIFVSTCwgYnV0IG5vdCB3aXRo
IGFueSBvdGhlciBpbnZhbGlkIG9uZS4KKyAgICAvLyBGSVhNRTogSXMgdGhpcyBhIGdvb2QgcnVs
ZT8KKyAgICBpZiAoIWJhc2UubV9pc1ZhbGlkICYmICFiYXNlLmlzRW1wdHkoKSkgeworICAgICAg
ICBtX3N0cmluZyA9IHJlbGF0aXZlOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbiBJRSwgdHJl
YXQgYmFja3NsYXNoZXMgYXMgaWYgdGhleSB3ZXJlIHNsYXNoZXMsCisgICAgLy8gYXMgbG9uZyBh
cyB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGphdmFzY3JpcHQ6IG9yIGRhdGE6IFVSTHMuCisgICAg
U3RyaW5nIHJlbCA9IHJlbGF0aXZlOworICAgIGlmIChyZWwuY29udGFpbnMoJ1xcJykgJiYgIShw
cm90b2NvbElzSmF2YVNjcmlwdChyZWwpIHx8IHByb3RvY29sSXMocmVsLCAiZGF0YSIpKSkKKyAg
ICAgICAgcmVsID0gc3Vic3RpdHV0ZUJhY2tzbGFzaGVzKHJlbCk7CisKKyAgICBib29sIGFsbEFT
Q0lJID0gcmVsLmNvbnRhaW5zT25seUFTQ0lJKCk7CisgICAgQ2hhckJ1ZmZlciBzdHJCdWZmZXI7
CisgICAgY2hhciogc3RyOworICAgIHNpemVfdCBsZW47CisgICAgaWYgKGFsbEFTQ0lJKSB7Cisg
ICAgICAgIGxlbiA9IHJlbC5sZW5ndGgoKTsKKyAgICAgICAgc3RyQnVmZmVyLnJlc2l6ZShsZW4g
KyAxKTsKKyAgICAgICAgY29weUFTQ0lJKHJlbCwgc3RyQnVmZmVyLmRhdGEoKSk7CisgICAgICAg
IHN0ckJ1ZmZlcltsZW5dID0gMDsKKyAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBlbmNvZGVSZWxhdGl2ZVN0cmluZyhyZWwsIGVuY29kaW5nLCBz
dHJCdWZmZXIpOworICAgICAgICBzdHIgPSBzdHJCdWZmZXIuZGF0YSgpOworICAgICAgICBsZW4g
PSBzdHJsZW4oc3RyKTsKKyAgICB9CisKKyAgICAvLyBHZXQgcmlkIG9mIGxlYWRpbmcgd2hpdGVz
cGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgorICAgIHdoaWxlIChsZW4gJiYgc2hvdWxkVHJp
bUZyb21VUkwoKnN0cikpIHsKKyAgICAgICAgc3RyKys7CisgICAgICAgIC0tbGVuOworICAgIH0K
KworICAgIC8vIEdldCByaWQgb2YgdHJhaWxpbmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFy
YWN0ZXJzLgorICAgIHdoaWxlIChsZW4gJiYgc2hvdWxkVHJpbUZyb21VUkwoc3RyW2xlbiAtIDFd
KSkKKyAgICAgICAgc3RyWy0tbGVuXSA9ICdcMCc7CisKKyAgICAvLyBBY2NvcmRpbmcgdG8gdGhl
IFJGQywgdGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYW4KKyAgICAvLyBh
YnNvbHV0ZSBVUkkgaWYgcG9zc2libGUsIHVzaW5nIHRoZSAibGVmdG1vc3QsIGxvbmdlc3QiCisg
ICAgLy8gYWxnb3JpdGhtLiBJZiB0aGUgVVJJIHJlZmVyZW5jZSBpcyBhYnNvbHV0ZSBpdCB3aWxs
IGhhdmUgYQorICAgIC8vIHNjaGVtZSwgbWVhbmluZyB0aGF0IGl0IHdpbGwgaGF2ZSBhIGNvbG9u
IGJlZm9yZSB0aGUgZmlyc3QKKyAgICAvLyBub24tc2NoZW1lIGVsZW1lbnQuCisgICAgYm9vbCBh
YnNvbHV0ZSA9IGZhbHNlOworICAgIGNoYXIqIHAgPSBzdHI7CisgICAgaWYgKGlzU2NoZW1lRmly
c3RDaGFyKCpwKSkgeworICAgICAgICArK3A7CisgICAgICAgIHdoaWxlIChpc1NjaGVtZUNoYXIo
KnApKSB7CisgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpwID09ICc6
JykgeworICAgICAgICAgICAgaWYgKHBbMV0gIT0gJy8nICYmIGVxdWFsSWdub3JpbmdDYXNlKGJh
c2UucHJvdG9jb2woKSwgU3RyaW5nKHN0ciwgcCAtIHN0cikpICYmIGJhc2UuaXNIaWVyYXJjaGlj
YWwoKSkKKyAgICAgICAgICAgICAgICBzdHIgPSBwICsgMTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBhYnNvbHV0ZSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBD
aGFyQnVmZmVyIHBhcnNlQnVmZmVyOworCisgICAgaWYgKGFic29sdXRlKSB7CisgICAgICAgIHBh
cnNlKHN0ciwgJnJlbGF0aXZlKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiB0aGUgYmFz
ZSBpcyBlbXB0eSBvciBvcGFxdWUgKGUuZy4gZGF0YTogb3IgamF2YXNjcmlwdDopLCB0aGVuIHRo
ZSBVUkwgaXMgaW52YWxpZAorICAgICAgICAvLyB1bmxlc3MgdGhlIHJlbGF0aXZlIFVSTCBpcyBh
IHNpbmdsZSBmcmFnbWVudC4KKyAgICAgICAgaWYgKCFiYXNlLmlzSGllcmFyY2hpY2FsKCkpIHsK
KyAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJyMnKSB7CisgICAgICAgICAgICAgICAgYXBwZW5k
QVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJz
ZUJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVs
YXRpdmUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX3N0cmluZyA9
IHJlbGF0aXZlOworICAgICAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoc3RyWzBd
KSB7CisgICAgICAgIGNhc2UgJ1wwJzoKKyAgICAgICAgICAgIC8vIFRoZSByZWZlcmVuY2UgaXMg
ZW1wdHksIHNvIHRoaXMgaXMgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgZG9jdW1lbnQgd2l0aCBh
bnkgZnJhZ21lbnQgaWRlbnRpZmllciByZW1vdmVkLgorICAgICAgICAgICAgKnRoaXMgPSBiYXNl
OworICAgICAgICAgICAgcmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAnIyc6IHsKKyAgICAgICAgICAgIC8vIG11c3QgYmUgZnJhZ21l
bnQtb25seSByZWZlcmVuY2UKKyAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcu
bGVmdChiYXNlLm1fcXVlcnlFbmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOworICAgICAgICAg
ICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAnPyc6IHsKKyAgICAgICAgICAgIC8vIHF1ZXJ5
LW9ubHkgcmVmZXJlbmNlLCBzcGVjaWFsIGNhc2UgbmVlZGVkIGZvciBub24tVVJMIHJlc3VsdHMK
KyAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcGF0aEVu
ZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7CisgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZl
ci5kYXRhKCksICZyZWxhdGl2ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgIC8vIG11c3QgYmUgbmV0LXBhdGggb3IgYWJzb2x1
dGUtcGF0aCByZWZlcmVuY2UKKyAgICAgICAgICAgIGlmIChzdHJbMV0gPT0gJy8nKSB7CisgICAg
ICAgICAgICAgICAgLy8gbmV0LXBhdGgKKyAgICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNl
Lm1fc3RyaW5nLmxlZnQoYmFzZS5tX3NjaGVtZUVuZCArIDEpLCBzdHIsIGxlbiwgcGFyc2VCdWZm
ZXIpOworICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gYWJzLXBhdGgKKyAg
ICAgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BvcnRF
bmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOworICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNl
QnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IG11c3QgYmUgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UKKworICAgICAgICAgICAgICAgIC8vIEJh
c2UgcGFydCBwbHVzIHJlbGF0aXZlIHBhcnQgcGx1cyBvbmUgcG9zc2libGUgc2xhc2ggYWRkZWQg
aW4gYmV0d2VlbiBwbHVzIHRlcm1pbmF0aW5nIFwwIGJ5dGUuCisgICAgICAgICAgICAgICAgY29u
c3Qgc2l6ZV90IGJ1ZmZlclNpemUgPSBiYXNlLm1fcGF0aEVuZCArIDEgKyBsZW4gKyAxOworICAg
ICAgICAgICAgICAgIHBhcnNlQnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKKworICAgICAgICAg
ICAgICAgIGNoYXIqIGJ1ZmZlclBvcyA9IHBhcnNlQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAg
ICAgICBjaGFyKiBidWZmZXJTdGFydCA9IGJ1ZmZlclBvczsKKworICAgICAgICAgICAgICAgIC8v
IGZpcnN0IGNvcHkgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHBhdGggZnJvbSB0aGUgYmFzZQorICAg
ICAgICAgICAgICAgIENoYXJCdWZmZXIgYmFzZVN0cmluZ0J1ZmZlcihiYXNlLm1fc3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICBjb3B5QVNDSUkoYmFzZS5tX3N0cmluZywgYmFzZVN0
cmluZ0J1ZmZlci5kYXRhKCkpOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJp
bmcgPSBiYXNlU3RyaW5nQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBiYXNlU3RyaW5nU3RhcnQgPSBiYXNlU3RyaW5nOworICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHBhdGhTdGFydCA9IGJhc2VTdHJpbmdTdGFydCArIGJhc2UubV9wb3J0RW5kOworICAgICAg
ICAgICAgICAgIHdoaWxlIChiYXNlU3RyaW5nU3RhcnQgPCBwYXRoU3RhcnQpCisgICAgICAgICAg
ICAgICAgICAgICpidWZmZXJQb3MrKyA9ICpiYXNlU3RyaW5nU3RhcnQrKzsKKyAgICAgICAgICAg
ICAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQgPSBidWZmZXJQb3M7CisKKyAgICAgICAgICAgICAg
ICAvLyBub3cgY29weSB0aGUgYmFzZSBwYXRoCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YmFzZVN0cmluZ0VuZCA9IGJhc2VTdHJpbmcgKyBiYXNlLm1fcGF0aEVuZDsKKworICAgICAgICAg
ICAgICAgIC8vIGdvIGJhY2sgdG8gdGhlIGxhc3Qgc2xhc2gKKyAgICAgICAgICAgICAgICB3aGls
ZSAoYmFzZVN0cmluZ0VuZCA+IGJhc2VTdHJpbmdTdGFydCAmJiBiYXNlU3RyaW5nRW5kWy0xXSAh
PSAnLycpCisgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdFbmQtLTsKKworICAgICAgICAg
ICAgICAgIGlmIChiYXNlU3RyaW5nRW5kID09IGJhc2VTdHJpbmdTdGFydCkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBubyBwYXRoIGluIGJhc2UsIGFkZCBhIHBhdGggc2VwYXJhdG9yIGlmIG5l
Y2Vzc2FyeQorICAgICAgICAgICAgICAgICAgICBpZiAoYmFzZS5tX3NjaGVtZUVuZCArIDEgIT0g
YmFzZS5tX3BhdGhFbmQgJiYgKnN0ciAmJiAqc3RyICE9ICc/JyAmJiAqc3RyICE9ICcjJykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICpidWZmZXJQb3MrKyA9ICcvJzsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gY29weVBhdGhSZW1v
dmluZ0RvdHMoYnVmZmVyUG9zLCBiYXNlU3RyaW5nU3RhcnQsIDAsIGJhc2VTdHJpbmdFbmQgLSBi
YXNlU3RyaW5nU3RhcnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIHJlbFN0cmluZ1N0YXJ0ID0gc3RyOworICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHJlbFN0cmluZ1BvcyA9IHJlbFN0cmluZ1N0YXJ0OworCisgICAgICAgICAgICAgICAgd2hp
bGUgKCpyZWxTdHJpbmdQb3MgJiYgKnJlbFN0cmluZ1BvcyAhPSAnPycgJiYgKnJlbFN0cmluZ1Bv
cyAhPSAnIycpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlbFN0cmluZ1Bvc1swXSA9PSAn
LicgJiYgYnVmZmVyUG9zWy0xXSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMV0pKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuIiBzZWdtZW50CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVsU3RyaW5nUG9zICs9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHJlbFN0cmluZ1Bvc1swXSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlbFN0cmluZ1BvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZWxTdHJpbmdQb3NbMV0g
PT0gJy4nICYmIGlzUGF0aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1syXSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdp
bmQgdGhlIGxhc3Qgc2VnbWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBS
RkMgbGVhdmVzIGl0IHVwIHRvIHRoZSBhcHAgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCBleGNl
c3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiLi4iIHNlZ21lbnRzIC0gd2UgY2hv
b3NlIHRvIGRyb3AgdGhlbSBzaW5jZSBzb21lIHdlYiBjb250ZW50CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVsU3RyaW5nUG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
bFN0cmluZ1Bvc1swXSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bFN0cmluZ1BvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJQb3Mg
PiBidWZmZXJQYXRoU3RhcnQgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
dWZmZXJQb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYnVmZmVyUG9z
ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSAgJiYgYnVmZmVyUG9zWy0xXSAhPSAnLycpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcy0tOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlclBvcyA9ICpyZWxTdHJp
bmdQb3M7CisgICAgICAgICAgICAgICAgICAgIHJlbFN0cmluZ1BvcysrOworICAgICAgICAgICAg
ICAgICAgICBidWZmZXJQb3MrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBhbGwgZG9uZSB3aXRoIHRoZSBwYXRoIHdvcmssIG5vdyBjb3B5IGFueSByZW1haW5kZXIK
KyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgcmVsYXRpdmUgcmVmZXJlbmNlOyB0aGlzIHdpbGwg
YWxzbyBhZGQgYSBudWxsIHRlcm1pbmF0b3IKKyAgICAgICAgICAgICAgICBzdHJuY3B5KGJ1ZmZl
clBvcywgcmVsU3RyaW5nUG9zLCBidWZmZXJTaXplIC0gKGJ1ZmZlclBvcyAtIGJ1ZmZlclN0YXJ0
KSk7CisKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2
ZSk7CisKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RybGVuKHBhcnNlQnVmZmVyLmRhdGEoKSkg
KyAxIDw9IHBhcnNlQnVmZmVyLnNpemUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK1VSTCBVUkw6OmNvcHkoKSBjb25zdAor
eworICAgIFVSTCByZXN1bHQgPSAqdGhpczsKKyAgICByZXN1bHQubV9zdHJpbmcgPSByZXN1bHQu
bV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU3RyaW5n
IFVSTDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAoreworICAgIGlmICghaGFzUGF0aCgpKQor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQg
LSAxOworICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKKyAgICAgICAgLS1lbmQ7CisKKyAg
ICBzaXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7CisgICAgaWYg
KHN0YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICArK3N0YXJ0OworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZyhzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKK30KKworU3RyaW5nIFVSTDo6cHJvdG9jb2woKSBj
b25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5sZWZ0KG1fc2NoZW1lRW5kKTsKK30KKworU3Ry
aW5nIFVSTDo6aG9zdCgpIGNvbnN0Cit7CisgICAgaW50IHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Cisg
ICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5zdWJzdHJpbmcoc3Rh
cnQsIG1faG9zdEVuZCAtIHN0YXJ0KSk7Cit9CisKK3Vuc2lnbmVkIHNob3J0IFVSTDo6cG9ydCgp
IGNvbnN0Cit7CisgICAgLy8gV2UgcmV0dXJuIGEgcG9ydCBvZiAwIGlmIHRoZXJlIGlzIG5vIHBv
cnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4gdHdvIHNpdHVhdGlvbnM6CisgICAgLy8g
MSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRlciB0aGUgaG9zdCBuYW1lIGFuZCBiZWZv
cmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwuCisgICAgLy8gMikgVGhlIFVSTCBjb250
YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQgbnVtYmVyIGJlZm9yZSB0aGUgcGF0aCBj
b21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCisgICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRF
bmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAg
Ym9vbCBvayA9IGZhbHNlOworICAgIHVuc2lnbmVkIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAt
IDEsICZvayk7CisgICAgaWYgKCFvayB8fCBudW1iZXIgPiBtYXhpbXVtVmFsaWRQb3J0TnVtYmVy
KQorICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1iZXI7CisgICAgcmV0dXJuIG51bWJlcjsK
K30KKworU3RyaW5nIFVSTDo6cGFzcygpIGNvbnN0Cit7CisgICAgaWYgKG1fcGFzc3dvcmRFbmQg
PT0gbV91c2VyRW5kKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhtX3VzZXJFbmQgKyAxLCBt
X3Bhc3N3b3JkRW5kIC0gbV91c2VyRW5kIC0gMSkpOyAKK30KKworU3RyaW5nIFVSTDo6dXNlcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5z
dWJzdHJpbmcobV91c2VyU3RhcnQsIG1fdXNlckVuZCAtIG1fdXNlclN0YXJ0KSk7Cit9CisKK1N0
cmluZyBVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgaWYgKG1fZnJhZ21l
bnRFbmQgPT0gbV9xdWVyeUVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0
dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSwgbV9mcmFnbWVudEVuZCAtICht
X3F1ZXJ5RW5kICsgMSkpOworfQorCitib29sIFVSTDo6aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9mcmFnbWVudEVuZCAhPSBtX3F1ZXJ5RW5kOworfQorCitT
dHJpbmcgVVJMOjpiYXNlQXNTdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5s
ZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKTsKK30KKworI2lmICFQTEFURk9STShRVCkgJiYgIVVT
RShDRikKK1N0cmluZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWlz
VmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKCkpOworfQorI2VuZGlmCisK
KyNpZmRlZiBOREVCVUcKKworc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFByb3RvY29sSXNHb29k
KGNvbnN0IGNoYXIqKQoreworfQorCisjZWxzZQorCitzdGF0aWMgdm9pZCBhc3NlcnRQcm90b2Nv
bElzR29vZChjb25zdCBjaGFyKiBwcm90b2NvbCkKK3sKKyAgICBjb25zdCBjaGFyKiBwID0gcHJv
dG9jb2w7CisgICAgd2hpbGUgKCpwKSB7CisgICAgICAgIEFTU0VSVCgqcCA+ICcgJyAmJiAqcCA8
IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSk7CisgICAgICAgICsrcDsKKyAgICB9
Cit9CisKKyNlbmRpZgorCitib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBjaGFyKiBwcm90b2Nv
bCkgY29uc3QKK3sKKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2NvbCk7CisKKyAgICAv
LyBKYXZhU2NyaXB0IFVSTHMgYXJlICJ2YWxpZCIgYW5kIHNob3VsZCBiZSBleGVjdXRlZCBldmVu
IGlmIFVSTCBkZWNpZGVzIHRoZXkgYXJlIGludmFsaWQuCisgICAgLy8gVGhlIGZyZWUgZnVuY3Rp
b24gcHJvdG9jb2xJc0phdmFTY3JpcHQoKSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAKKyAgICBB
U1NFUlQoIWVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCBTdHJpbmcoImphdmFzY3JpcHQiKSkp
OworCisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3NjaGVtZUVuZDsgKytpKSB7CisgICAgICAgIGlmICgh
cHJvdG9jb2xbaV0gfHwgIWlzU2NoZW1lQ2hhcmFjdGVyTWF0Y2hJZ25vcmluZ0Nhc2UobV9zdHJp
bmdbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgcmV0dXJuICFwcm90b2NvbFttX3NjaGVtZUVuZF07IC8vIFdlIHNob3VsZCBoYXZlIGNvbnN1
bWVkIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBhcmd1bWVudC4KK30KKworU3RyaW5nIFVSTDo6cXVl
cnkoKSBjb25zdAoreworICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhF
bmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCit9CisKK1N0cmluZyBVUkw6
OnBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5k
LCBtX3BhdGhFbmQgLSBtX3BvcnRFbmQpOworfQorCitib29sIFVSTDo6c2V0UHJvdG9jb2woY29u
c3QgU3RyaW5nJiBzKQoreworICAgIC8vIEZpcmVmb3ggYW5kIElFIHJlbW92ZSBldmVyeXRoaW5n
IGFmdGVyIHRoZSBmaXJzdCAnOicuCisgICAgc2l6ZV90IHNlcGFyYXRvclBvc2l0aW9uID0gcy5m
aW5kKCc6Jyk7CisgICAgU3RyaW5nIG5ld1Byb3RvY29sID0gcy5zdWJzdHJpbmcoMCwgc2VwYXJh
dG9yUG9zaXRpb24pOworCisgICAgaWYgKCFpc1ZhbGlkUHJvdG9jb2wobmV3UHJvdG9jb2wpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1faXNWYWxpZCkgeworICAgICAgICBw
YXJzZShuZXdQcm90b2NvbCArICc6JyArIG1fc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcGFyc2UobmV3UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9z
Y2hlbWVFbmQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBVUkw6OnNldEhvc3QoY29u
c3QgU3RyaW5nJiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBl
c2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9p
ZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgaG9zdC4KKworICAgIGJvb2wgc2xhc2hTbGFz
aE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKKworICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQgPyAiLy8iIDogIiIp
ICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsKK30KKwordm9pZCBVUkw6OnJl
bW92ZVBvcnQoKQoreworICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5kKQorICAgICAgICBy
ZXR1cm47CisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKG1fcG9ydEVuZCkpOworfQorCit2b2lkIFVSTDo6c2V0UG9ydCh1bnNpZ25lZCBzaG9y
dCBpKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsKKyAgICBpbnQgcG9ydFN0YXJ0
ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CisKKyAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIgOiAiIikgKyBT
dHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKK30KKwor
dm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQpCit7Cisg
ICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBOb24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFy
c2UoKSBleHBlY3RhdGlvbnMsCisgICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhh
biBqdXN0IGhvc3QgYW5kIHBvcnQuCisKKyAgICBib29sIHNsYXNoU2xhc2hOZWVkZWQgPSBtX3Vz
ZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KGhv
c3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIiKSArIGhvc3RBbmRQb3J0
ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworfQorCit2b2lkIFVSTDo6c2V0VXNl
cihjb25zdCBTdHJpbmcmIHVzZXIpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCisgICAgLy8gYW5k
IHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2VyIGxvZ2luLgorCisgICAg
aW50IGVuZCA9IG1fdXNlckVuZDsKKyAgICBpZiAoIXVzZXIuaXNFbXB0eSgpKSB7CisgICAgICAg
IFN0cmluZyB1ID0gdXNlcjsKKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5k
ICsgMSkKKyAgICAgICAgICAgIHUgPSAiLy8iICsgdTsKKyAgICAgICAgLy8gQWRkICdAJyBpZiB3
ZSBkaWRuJ3QgaGF2ZSBvbmUgYmVmb3JlLgorICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8
fCAoZW5kID09IG1fcGFzc3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQorICAgICAg
ICAgICAgdS5hcHBlbmQoJ0AnKTsKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJT
dGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29y
ZC4KKyAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hv
c3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBj
YXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KKyAgICAgICAgaWYg
KG1fdXNlclN0YXJ0ICE9IGVuZCkKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91
c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgIH0KK30KKwordm9pZCBV
Ukw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1faXNWYWxp
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJz
IG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9u
cywKKyAgICAvLyBhbmQgdG8gYXZvaWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIHVzZXIg
cGFzc3dvcmQuCisKKyAgICBpbnQgZW5kID0gbV9wYXNzd29yZEVuZDsKKyAgICBpZiAoIXBhc3N3
b3JkLmlzRW1wdHkoKSkgeworICAgICAgICBTdHJpbmcgcCA9ICI6IiArIHBhc3N3b3JkICsgIkAi
OworICAgICAgICBpZiAobV91c2VyRW5kID09IG1fc2NoZW1lRW5kICsgMSkKKyAgICAgICAgICAg
IHAgPSAiLy8iICsgcDsKKyAgICAgICAgLy8gRWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2Ug
YXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgorICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAm
JiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAgICAgICAgICAgIGVuZCArPSAxOworICAgICAgICBw
YXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBwICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUg
bmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KKyAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1f
dXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAg
ICAgICAgICAgZW5kICs9IDE7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4g
dGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2Ug
YSBjaGFuZ2UuCisgICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKQorICAgICAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwor
ICAgIH0KK30KKwordm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcm
IHMpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8g
bWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMuCisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1
ZXJ5RW5kKSArICIjIiArIHMpOworfQorCit2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworICAgIHBhcnNl
KG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOworfQorICAgIAordm9pZCBVUkw6OnNldFF1ZXJ5
KGNvbnN0IFN0cmluZyYgcXVlcnkpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEZJWE1FOiAnIycgYW5kIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3Qg
YmUgZW5jb2RlZCBhbmQgZXNjYXBlZC4KKyAgICAvLyBVc3VhbGx5LCB0aGUgcXVlcnkgaXMgZW5j
b2RlZCB1c2luZyBkb2N1bWVudCBlbmNvZGluZywgbm90IFVURi04LCBidXQgd2UgZG9uJ3QgaGF2
ZQorICAgIC8vIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQgaW4gdGhpcyBmdW5jdGlvbi4KKyAgICBp
ZiAoKHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwo
KSkKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpICsgIj8iICsgcXVlcnkg
KyBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCkpOworICAgIGVsc2UKKyAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpICsgcXVlcnkgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9xdWVyeUVuZCkpOworCit9CisKK3ZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykK
K3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMgZG9lcyBub3QgY29ycmVjdGx5IGVzY2FwZSAn
IycgYW5kICc/Jywgc28gZnJhZ21lbnQgYW5kIHF1ZXJ5IHBhcnRzCisgICAgLy8gbWF5IGJlIGlu
YWR2ZXJ0ZW50bHkgYWZmZWN0ZWQuCisgICAgU3RyaW5nIHBhdGggPSBzOworICAgIGlmIChwYXRo
LmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKKyAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7
CisKKyAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNj
YXBlU2VxdWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOworfQor
CitTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQor
eworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0
cmluZywgVVRGOEVuY29kaW5nKCkpOworfQorCitTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQor
eworICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8VVJMRXNjYXBlU2VxdWVuY2U+KHN0
cmluZywgZW5jb2RpbmcpOworfQorCisvLyBDYXV0aW9uOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90
IGJvdW5kcyBjaGVjay4KK3N0YXRpYyB2b2lkIGFwcGVuZEVzY2FwZWRDaGFyKGNoYXIqJiBidWZm
ZXIsIHVuc2lnbmVkIGNoYXIgYykKK3sKKyAgICAqYnVmZmVyKysgPSAnJSc7CisgICAgcGxhY2VC
eXRlQXNIZXgoYywgYnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kRXNjYXBpbmdCYWRD
aGFycyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJTdGFydCwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBjaGFyKiBwID0gYnVmZmVyOworCisgICAgY29uc3QgY2hhciogc3RyID0gc3RyU3Rh
cnQ7CisgICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyU3RhcnQgKyBsZW5ndGg7CisgICAgd2hp
bGUgKHN0ciA8IHN0ckVuZCkgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAqc3RyKys7Cisg
ICAgICAgIGlmIChpc0JhZENoYXIoYykpIHsKKyAgICAgICAgICAgIGlmIChjID09ICclJyB8fCBj
ID09ICc/JykKKyAgICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGMgIT0gMHgwOSAmJiBjICE9IDB4MGEgJiYgYyAhPSAweDBkKQorICAgICAgICAgICAgICAgIGFw
cGVuZEVzY2FwZWRDaGFyKHAsIGMpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICpwKysg
PSBjOworICAgIH0KKworICAgIGJ1ZmZlciA9IHA7Cit9CisKK3N0YXRpYyB2b2lkIGVzY2FwZUFu
ZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3Ry
U3RhcnQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgY2hhciogcCA9IGJ1ZmZlcjsKKworICAgIGNv
bnN0IGNoYXIqIHN0ciA9IHN0clN0YXJ0OworICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0
YXJ0ICsgbGVuZ3RoOworICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciBjID0gKnN0cisrOworICAgICAgICAvLyBTdHJpcCBDUiwgTEYgYW5kIFRhYiBmcm9t
IGZyYWdtZW50cywgcGVyOgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODc3MAorICAgICAgICBpZiAoYyA9PSAweDA5IHx8IGMgPT0gMHgwYSB8fCBj
ID09IDB4MGQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBDaHJvbWUgYW5k
IElFIGFsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGZyYWdtZW50cywgaG93ZXZlciBkb2lu
ZworICAgICAgICAvLyBzbyB3b3VsZCBoaXQgYW4gQVNTRVJUIGluIGNoZWNrRW5jb2RlZFN0cmlu
Zywgc28gZm9yIG5vdyB3ZSBkb24ndC4KKyAgICAgICAgaWYgKGMgPCAweDIwIHx8IGMgPj0gMTI3
KSB7CisgICAgICAgICAgICBhcHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgICpwKysgPSBjOworICAgIH0KKworICAgIGJ1ZmZl
ciA9IHA7Cit9CisKKy8vIGNvcHkgYSBwYXRoLCBhY2NvdW50aW5nIGZvciAiLiIgYW5kICIuLiIg
c2VnbWVudHMKK3N0YXRpYyBpbnQgY29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25z
dCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0VuZCkKK3sKKyAgICBjaGFyKiBidWZm
ZXJQYXRoU3RhcnQgPSBkc3Q7CisKKyAgICAvLyBlbXB0eSBwYXRoIGlzIGEgc3BlY2lhbCBjYXNl
LCBhbmQgbmVlZCBub3QgaGF2ZSBhIGxlYWRpbmcgc2xhc2gKKyAgICBpZiAoc3JjU3RhcnQgIT0g
c3JjRW5kKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VTdHJpbmdTdGFydCA9IHNyYyArIHNy
Y1N0YXJ0OworICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nRW5kID0gc3JjICsgc3JjRW5k
OworICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nUG9zID0gYmFzZVN0cmluZ1N0YXJ0Owor
CisgICAgICAgIC8vIHRoaXMgY29kZSBpcyB1bnByZXBhcmVkIGZvciBwYXRocyB0aGF0IGRvIG5v
dCBiZWdpbiB3aXRoIGEKKyAgICAgICAgLy8gc2xhc2ggYW5kIHdlIHNob3VsZCBhbHdheXMgaGF2
ZSBvbmUgaW4gdGhlIHNvdXJjZSBzdHJpbmcKKyAgICAgICAgQVNTRVJUKGJhc2VTdHJpbmdQb3Nb
MF0gPT0gJy8nKTsKKworICAgICAgICAvLyBjb3B5IHRoZSBsZWFkaW5nIHNsYXNoIGludG8gdGhl
IGRlc3RpbmF0aW9uCisgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKKyAgICAgICAgYmFz
ZVN0cmluZ1BvcysrOworICAgICAgICBkc3QrKzsKKworICAgICAgICB3aGlsZSAoYmFzZVN0cmlu
Z1BvcyA8IGJhc2VTdHJpbmdFbmQpIHsKKyAgICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzBd
ID09ICcuJyAmJiBkc3RbLTFdID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmIChiYXNlU3Ry
aW5nUG9zWzFdID09ICcvJyB8fCBiYXNlU3RyaW5nUG9zICsgMSA9PSBiYXNlU3RyaW5nRW5kKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAorICAgICAgICAg
ICAgICAgICAgICBiYXNlU3RyaW5nUG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFzZVN0cmluZ1Bvc1sxXSA9PSAnLicg
JiYgKGJhc2VTdHJpbmdQb3NbMl0gPT0gJy8nIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9zICsgMiA9PSBiYXNlU3RyaW5nRW5kKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBzZWdtZW50IGFuZCByZXdpbmQgdGhl
IGxhc3Qgc2VnbWVudAorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUkZDIGxlYXZlcyBpdCB1
cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhjZXNzCisgICAgICAgICAg
ICAgICAgICAgIC8vICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8gZHJvcCB0aGVtIHNpbmNl
IHNvbWUgd2ViIGNvbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVsaWVzIG9uIHRoaXMu
CisgICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MgKz0gMzsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCArIDEpCisgICAgICAgICAgICAgICAgICAg
ICAgICBkc3QtLTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGRzdCA+IGJ1ZmZlclBhdGhT
dGFydCAmJiBkc3RbLTFdICE9ICcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzdC0tOwor
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICpkc3QgPSAqYmFzZVN0cmluZ1BvczsKKyAgICAgICAgICAg
IGJhc2VTdHJpbmdQb3MrKzsKKyAgICAgICAgICAgIGRzdCsrOworICAgICAgICB9CisgICAgfQor
ICAgICpkc3QgPSAnXDAnOworICAgIHJldHVybiBkc3QgLSBidWZmZXJQYXRoU3RhcnQ7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGNvbnN0IGNoYXIqIHN0cikK
K3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oc3RyKTsKKyAgICBpZiAoISpwKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgdW5zaWduZWQgY2hhciBwYyA9ICpwOworICAgIHdoaWxlICh1bnNpZ25lZCBjaGFyIGMg
PSAqKytwKSB7CisgICAgICAgIGlmIChjID09ICcuJyAmJiAocGMgPT0gJy8nIHx8IHBjID09ICcu
JykpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcGMgPSBjOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmlu
ZykKK3sKKyAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5nKTsKKworICAgIENoYXJCdWZmZXIg
YnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOworICAgIGNvcHlBU0NJSShzdHJpbmcsIGJ1ZmZl
ci5kYXRhKCkpOworICAgIGJ1ZmZlcltzdHJpbmcubGVuZ3RoKCldID0gJ1wwJzsKKyAgICBwYXJz
ZShidWZmZXIuZGF0YSgpLCAmc3RyaW5nKTsKK30KKwordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4K
K3N0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBhLCBjb25zdCBjaGFyICgmYilb
bGVuZ3RoXSkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIGlmIChhW2ldICE9IGJbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoQj4KK3N0YXRp
YyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBjaGFyKiBzdHJpbmdBLCBzaXplX3QgbGVuZ3RoQSwg
Y29uc3QgY2hhciAoJnN0cmluZ0IpW2xlbmd0aEJdKQoreworICAgIHJldHVybiBsZW5ndGhBID09
IGxlbmd0aEIgJiYgZXF1YWwoc3RyaW5nQSwgc3RyaW5nQik7Cit9CisKKy8vIExpc3Qgb2YgZGVm
YXVsdCBzY2hlbWVzIGlzIHRha2VuIGZyb20gZ29vZ2xlLXVybDoKKy8vIGh0dHA6Ly9jb2RlLmdv
b2dsZS5jb20vcC9nb29nbGUtdXJsL3NvdXJjZS9icm93c2UvdHJ1bmsvc3JjL3VybF9jYW5vbl9z
dGR1cmwuY2MjMTIwCitzdGF0aWMgaW5saW5lIGJvb2wgaXNEZWZhdWx0UG9ydEZvclNjaGVtZShj
b25zdCBjaGFyKiBwb3J0LCBzaXplX3QgcG9ydExlbmd0aCwgY29uc3QgY2hhciogc2NoZW1lLCBz
aXplX3Qgc2NoZW1lTGVuZ3RoKQoreworICAgIC8vIFRoaXMgc3dpdGNoIGlzIHRoZW9yZXRpY2Fs
bHkgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uICBJdCBjYW1lIG92ZXIgd2hlbgorICAgIC8v
IHRoZSBjb2RlIHdhcyBtb3ZlZCBmcm9tIGdvb2dsZS11cmwsIGJ1dCBtYXkgYmUgcmVtb3ZlZCBs
YXRlci4KKyAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgeworICAgIGNhc2UgMjoKKyAgICAgICAg
cmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgs
IGh0dHBQb3J0KTsKKyAgICBjYXNlIDM6CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIGZ0cFNj
aGVtZSkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgZnRwUG9y
dCk7CisgICAgICAgIGlmIChlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cHNQb3J0KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSA0OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSAm
JiBlcXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7CisgICAgY2FzZSA1OgorICAgICAg
ICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExl
bmd0aCwgaHR0cHNQb3J0KTsKKyAgICBjYXNlIDY6CisgICAgICAgIHJldHVybiBlcXVhbChzY2hl
bWUsIGdvcGhlclNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgZ29waGVyUG9ydCk7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIGhvc3RQ
b3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudChpbnQgaG9zdFN0YXJ0LCBpbnQgcG9y
dEVuZCwgY2hhciB1c2VyaW5mb0VuZENoYXIpCit7CisgICAgcmV0dXJuIHVzZXJpbmZvRW5kQ2hh
ciA9PSAnQCcgJiYgaG9zdFN0YXJ0ID09IHBvcnRFbmQ7Cit9CisKK3N0YXRpYyBib29sIGlzTm9u
RmlsZUhpZXJhcmNoaWNhbFNjaGVtZShjb25zdCBjaGFyKiBzY2hlbWUsIHNpemVfdCBzY2hlbWVM
ZW5ndGgpCit7CisgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKKyAgICBjYXNlIDI6CisgICAg
ICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKTsKKyAgICBjYXNlIDM6CisgICAgICAg
IHJldHVybiBlcXVhbChzY2hlbWUsIGZ0cFNjaGVtZSkgfHwgZXF1YWwoc2NoZW1lLCB3c3NTY2hl
bWUpOworICAgIGNhc2UgNDoKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVt
ZSk7CisgICAgY2FzZSA1OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVt
ZSk7CisgICAgY2FzZSA2OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hl
bWUpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGlzQ2Fub25p
Y2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qg
c2NoZW1lTGVuZ3RoKQoreworICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3RoKSB7CisgICAgY2FzZSAy
OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7CisgICAgY2FzZSAzOgor
ICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwg
d3NzU2NoZW1lKTsKKyAgICBjYXNlIDQ6CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0
dHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgZmlsZVNjaGVtZSk7CisgICAgY2FzZSA1OgorICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwc1NjaGVtZSk7CisgICAgY2FzZSA2OgorICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0
cmluZyogb3JpZ2luYWxTdHJpbmcpCit7CisgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09ICdcMCcp
IHsKKyAgICAgICAgLy8gdmFsaWQgVVJMIG11c3QgYmUgbm9uLWVtcHR5CisgICAgICAgIG1fc3Ry
aW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIGlu
dmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghaXNTY2hlbWVG
aXJzdENoYXIodXJsWzBdKSkgeworICAgICAgICAvLyBzY2hlbWUgbXVzdCBzdGFydCB3aXRoIGFu
IGFscGhhYmV0aWMgY2hhcmFjdGVyCisgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludCBzY2hlbWVFbmQgPSAwOworICAgIHdoaWxlIChpc1Nj
aGVtZUNoYXIodXJsW3NjaGVtZUVuZF0pKQorICAgICAgICBzY2hlbWVFbmQrKzsKKworICAgIGlm
ICh1cmxbc2NoZW1lRW5kXSAhPSAnOicpIHsKKyAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0
cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHVzZXJTdGFydCA9IHNjaGVtZUVuZCArIDE7
CisgICAgaW50IHVzZXJFbmQ7CisgICAgaW50IHBhc3N3b3JkU3RhcnQ7CisgICAgaW50IHBhc3N3
b3JkRW5kOworICAgIGludCBob3N0U3RhcnQ7CisgICAgaW50IGhvc3RFbmQ7CisgICAgaW50IHBv
cnRTdGFydDsKKyAgICBpbnQgcG9ydEVuZDsKKworICAgIGJvb2wgaGllcmFyY2hpY2FsID0gdXJs
W3NjaGVtZUVuZCArIDFdID09ICcvJzsKKyAgICBib29sIGhhc1NlY29uZFNsYXNoID0gaGllcmFy
Y2hpY2FsICYmIHVybFtzY2hlbWVFbmQgKyAyXSA9PSAnLyc7CisKKyAgICBib29sIGlzRmlsZSA9
IHNjaGVtZUVuZCA9PSA0CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
WzBdLCAnZicpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAn
aScpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAnbCcpCisg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAnZScpOworCisjaWYg
UExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICAvLyBQYXJzZSBsb2NhbDogdXJscyB0aGUgc2FtZSBh
cyBmaWxlOiB1cmxzLgorICAgIGlmICghaXNGaWxlKQorICAgICAgICBpc0ZpbGUgPSBzY2hlbWVF
bmQgPT0gNQorICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0s
ICdsJykKKyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAn
bycpCisgICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsyXSwgJ2Mn
KQorICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10sICdhJykK
KyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzRdLCAnbCcpOwor
I2VuZGlmCisKKyAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBpc0xldHRlck1hdGNoSWdu
b3JpbmdDYXNlKHVybFswXSwgJ2gnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdD
YXNlKHVybFsxXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVy
bFsyXSwgJ3QnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwg
J3AnKQorICAgICAgICAmJiAodXJsWzRdID09ICc6JyB8fCAoaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbNF0sICdzJykgJiYgdXJsWzVdID09ICc6JykpOworCisgICAgaWYgKChoaWVyYXJj
aGljYWwgJiYgaGFzU2Vjb25kU2xhc2gpIHx8IGlzTm9uRmlsZUhpZXJhcmNoaWNhbFNjaGVtZSh1
cmwsIHNjaGVtZUVuZCkpIHsKKyAgICAgICAgLy8gVGhlIHBhcnQgYWZ0ZXIgdGhlIHNjaGVtZSBp
cyBlaXRoZXIgYSBuZXRfcGF0aCBvciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCBwYXRoIHNlZ21l
bnQgaXMgZW1wdHkuCisgICAgICAgIC8vIEF0dGVtcHQgdG8gZmluZCBhbiBhdXRob3JpdHkuCisg
ICAgICAgIC8vIEZJWE1FOiBBdXRob3JpdHkgY2hhcmFjdGVycyBtYXkgYmUgc2Nhbm5lZCB0d2lj
ZSwgYW5kIGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgZmFzdGVyLgorCisgICAgICAgIGlmIChoaWVy
YXJjaGljYWwpCisgICAgICAgICAgICB1c2VyU3RhcnQrKzsKKyAgICAgICAgaWYgKGhhc1NlY29u
ZFNsYXNoKQorICAgICAgICAgICAgdXNlclN0YXJ0Kys7CisgICAgICAgIHVzZXJFbmQgPSB1c2Vy
U3RhcnQ7CisKKyAgICAgICAgaW50IGNvbG9uUG9zID0gMDsKKyAgICAgICAgd2hpbGUgKGlzVXNl
ckluZm9DaGFyKHVybFt1c2VyRW5kXSkpIHsKKyAgICAgICAgICAgIGlmICh1cmxbdXNlckVuZF0g
PT0gJzonICYmIGNvbG9uUG9zID09IDApCisgICAgICAgICAgICAgICAgY29sb25Qb3MgPSB1c2Vy
RW5kOworICAgICAgICAgICAgdXNlckVuZCsrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHVy
bFt1c2VyRW5kXSA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIGFjdHVhbCBlbmQgb2YgdGhlIHVz
ZXJpbmZvLCBzdGFydCBvbiB0aGUgaG9zdAorICAgICAgICAgICAgaWYgKGNvbG9uUG9zICE9IDAp
IHsKKyAgICAgICAgICAgICAgICBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7CisgICAgICAgICAgICAg
ICAgdXNlckVuZCA9IGNvbG9uUG9zOworICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBj
b2xvblBvcyArIDE7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXNzd29y
ZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOworCisgICAgICAgICAgICBob3N0U3RhcnQg
PSBwYXNzd29yZEVuZCArIDE7CisgICAgICAgIH0gZWxzZSBpZiAodXJsW3VzZXJFbmRdID09ICdb
JyB8fCBpc1BhdGhTZWdtZW50RW5kQ2hhcih1cmxbdXNlckVuZF0pKSB7CisgICAgICAgICAgICAv
LyBoaXQgdGhlIGVuZCBvZiB0aGUgYXV0aG9yaXR5LCBtdXN0IGhhdmUgYmVlbiBubyB1c2VyCisg
ICAgICAgICAgICAvLyBvciBsb29rcyBsaWtlIGFuIElQdjYgaG9zdG5hbWUKKyAgICAgICAgICAg
IC8vIGVpdGhlciB3YXksIHRyeSB0byBwYXJzZSBpdCBhcyBhIGhvc3RuYW1lCisgICAgICAgICAg
ICB1c2VyRW5kID0gdXNlclN0YXJ0OworICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3
b3JkRW5kID0gdXNlckVuZDsKKyAgICAgICAgICAgIGhvc3RTdGFydCA9IHVzZXJTdGFydDsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCisgICAgICAg
ICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwor
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaG9zdEVuZCA9IGhvc3RTdGFydDsKKworICAgICAgICAvLyBJUFY2IElQIGFk
ZHJlc3MKKyAgICAgICAgaWYgKHVybFtob3N0RW5kXSA9PSAnWycpIHsKKyAgICAgICAgICAgIGhv
c3RFbmQrKzsKKyAgICAgICAgICAgIHdoaWxlIChpc0lQdjZDaGFyKHVybFtob3N0RW5kXSkpCisg
ICAgICAgICAgICAgICAgaG9zdEVuZCsrOworICAgICAgICAgICAgaWYgKHVybFtob3N0RW5kXSA9
PSAnXScpCisgICAgICAgICAgICAgICAgaG9zdEVuZCsrOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gaW52YWxpZCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAg
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAoaXNIb3N0bmFtZUNoYXIo
dXJsW2hvc3RFbmRdKSkKKyAgICAgICAgICAgICAgICBob3N0RW5kKys7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJzonKSB7CisgICAgICAgICAgICBw
b3J0U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVuZCArIDE7CisgCisgICAgICAgICAgICAvLyBwb3Nz
aWJsZSBzdGFydCBvZiBwb3J0CisgICAgICAgICAgICBwb3J0RW5kID0gcG9ydFN0YXJ0OworICAg
ICAgICAgICAgd2hpbGUgKGlzQVNDSUlEaWdpdCh1cmxbcG9ydEVuZF0pKQorICAgICAgICAgICAg
ICAgIHBvcnRFbmQrKzsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb3J0U3RhcnQgPSBw
b3J0RW5kID0gaG9zdEVuZDsKKworICAgICAgICBpZiAoIWlzUGF0aFNlZ21lbnRFbmRDaGFyKHVy
bFtwb3J0RW5kXSkpIHsKKyAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCisgICAgICAg
ICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwor
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGhvc3RQb3J0SXNFbXB0eUJ1dENyZWRlbnRpYWxzQXJlUHJlc2VudCho
b3N0U3RhcnQsIHBvcnRFbmQsIHVybFtwYXNzd29yZEVuZF0pKSB7CisgICAgICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHVzZXJTdGFydCA9PSBwb3J0RW5kICYmICFtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkg
JiYgIWlzRmlsZSkgeworICAgICAgICAgICAgLy8gTm8gYXV0aG9yaXR5IGZvdW5kLCB3aGljaCBt
ZWFucyB0aGF0IHRoaXMgaXMgbm90IGEgbmV0X3BhdGgsIGJ1dCByYXRoZXIgYW4gYWJzX3BhdGgg
d2hvc2UgZmlyc3QgdHdvCisgICAgICAgICAgICAvLyBwYXRoIHNlZ21lbnRzIGFyZSBlbXB0eS4g
Rm9yIGZpbGUsIGh0dHAgYW5kIGh0dHBzIG9ubHksIGFuIGVtcHR5IGF1dGhvcml0eSBpcyBhbGxv
d2VkLgorICAgICAgICAgICAgdXNlclN0YXJ0IC09IDI7CisgICAgICAgICAgICB1c2VyRW5kID0g
dXNlclN0YXJ0OworICAgICAgICAgICAgcGFzc3dvcmRTdGFydCA9IHVzZXJFbmQ7CisgICAgICAg
ICAgICBwYXNzd29yZEVuZCA9IHBhc3N3b3JkU3RhcnQ7CisgICAgICAgICAgICBob3N0U3RhcnQg
PSBwYXNzd29yZEVuZDsKKyAgICAgICAgICAgIGhvc3RFbmQgPSBob3N0U3RhcnQ7CisgICAgICAg
ICAgICBwb3J0U3RhcnQgPSBob3N0RW5kOworICAgICAgICAgICAgcG9ydEVuZCA9IGhvc3RFbmQ7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyB0aGUgcGFydCBhZnRlciB0aGUg
c2NoZW1lIG11c3QgYmUgYW4gb3BhcXVlX3BhcnQgb3IgYW4gYWJzX3BhdGgKKyAgICAgICAgdXNl
ckVuZCA9IHVzZXJTdGFydDsKKyAgICAgICAgcGFzc3dvcmRTdGFydCA9IHBhc3N3b3JkRW5kID0g
dXNlckVuZDsKKyAgICAgICAgaG9zdFN0YXJ0ID0gaG9zdEVuZCA9IHBhc3N3b3JkRW5kOworICAg
ICAgICBwb3J0U3RhcnQgPSBwb3J0RW5kID0gaG9zdEVuZDsKKyAgICB9CisKKyAgICBpbnQgcGF0
aFN0YXJ0ID0gcG9ydEVuZDsKKyAgICBpbnQgcGF0aEVuZCA9IHBhdGhTdGFydDsKKyAgICB3aGls
ZSAodXJsW3BhdGhFbmRdICYmIHVybFtwYXRoRW5kXSAhPSAnPycgJiYgdXJsW3BhdGhFbmRdICE9
ICcjJykKKyAgICAgICAgcGF0aEVuZCsrOworCisgICAgaW50IHF1ZXJ5U3RhcnQgPSBwYXRoRW5k
OworICAgIGludCBxdWVyeUVuZCA9IHF1ZXJ5U3RhcnQ7CisgICAgaWYgKHVybFtxdWVyeVN0YXJ0
XSA9PSAnPycpIHsKKyAgICAgICAgd2hpbGUgKHVybFtxdWVyeUVuZF0gJiYgdXJsW3F1ZXJ5RW5k
XSAhPSAnIycpCisgICAgICAgICAgICBxdWVyeUVuZCsrOworICAgIH0KKworICAgIGludCBmcmFn
bWVudFN0YXJ0ID0gcXVlcnlFbmQ7CisgICAgaW50IGZyYWdtZW50RW5kID0gZnJhZ21lbnRTdGFy
dDsKKyAgICBpZiAodXJsW2ZyYWdtZW50U3RhcnRdID09ICcjJykgeworICAgICAgICBmcmFnbWVu
dFN0YXJ0Kys7CisgICAgICAgIGZyYWdtZW50RW5kID0gZnJhZ21lbnRTdGFydDsKKyAgICAgICAg
d2hpbGUgKHVybFtmcmFnbWVudEVuZF0pCisgICAgICAgICAgICBmcmFnbWVudEVuZCsrOworICAg
IH0KKworICAgIC8vIGFzc2VtYmxlIGl0IGFsbCwgcmVtZW1iZXJpbmcgdGhlIHJlYWwgcmFuZ2Vz
CisKKyAgICBWZWN0b3I8Y2hhciwgNDA5Nj4gYnVmZmVyKGZyYWdtZW50RW5kICogMyArIDEpOwor
CisgICAgY2hhciAqcCA9IGJ1ZmZlci5kYXRhKCk7CisgICAgY29uc3QgY2hhciAqc3RyUHRyID0g
dXJsOworCisgICAgLy8gY29weSBpbiB0aGUgc2NoZW1lCisgICAgY29uc3QgY2hhciAqc2NoZW1l
RW5kUHRyID0gdXJsICsgc2NoZW1lRW5kOworICAgIHdoaWxlIChzdHJQdHIgPCBzY2hlbWVFbmRQ
dHIpCisgICAgICAgICpwKysgPSB0b0FTQ0lJTG93ZXIoKnN0clB0cisrKTsKKyAgICBtX3NjaGVt
ZUVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgYm9vbCBob3N0SXNMb2NhbEhvc3QgPSBw
b3J0RW5kIC0gdXNlclN0YXJ0ID09IDkKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbdXNlclN0YXJ0XSwgJ2wnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3Jp
bmdDYXNlKHVybFt1c2VyU3RhcnQrMV0sICdvJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaEln
bm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzJdLCAnYycpCisgICAgICAgICYmIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCszXSwgJ2EnKQorICAgICAgICAmJiBpc0xldHRl
ck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNF0sICdsJykKKyAgICAgICAgJiYgaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzVdLCAnaCcpCisgICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs2XSwgJ28nKQorICAgICAg
ICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrN10sICdzJykKKyAg
ICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzhdLCAndCcp
OworCisgICAgLy8gRmlsZSBVUkxzIG5lZWQgYSBob3N0IHBhcnQgdW5sZXNzIGl0IGlzIGp1c3Qg
ZmlsZTovLyBvciBmaWxlOi8vbG9jYWxob3N0CisgICAgYm9vbCBkZWdlbmVyYXRlRmlsZVBhdGgg
PSBwYXRoU3RhcnQgPT0gcGF0aEVuZCAmJiAoaG9zdFN0YXJ0ID09IGhvc3RFbmQgfHwgaG9zdElz
TG9jYWxIb3N0KTsKKworICAgIC8vIFdlIGRyb3AgZW1wdHkgY3JlZGVudGlhbHMsIGJ1dCBrZWVw
IGEgY29sb24gaW4gYW4gZW1wdHkgaG9zdC9wb3J0IHBhaXIuCisgICAgLy8gUmVtb3ZpbmcgaG9z
dG5hbWUgY29tcGxldGVseSB3b3VsZCBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgVVJMIG9u
IHJlLXBhcnNpbmcuCisgICAgYm9vbCBoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQgPSB1c2VyU3Rh
cnQgIT0gdXNlckVuZCB8fCBwYXNzd29yZFN0YXJ0ICE9IHBhc3N3b3JkRW5kIHx8IGhvc3RFbmQg
IT0gcG9ydEVuZDsKKworICAgIC8vIGFkZCAiOiIgYWZ0ZXIgc2NoZW1lCisgICAgKnArKyA9ICc6
JzsKKworICAgIC8vIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGF1dGhvcml0eSBwYXJ0IG9yIGEg
ZmlsZSBVUkwgLSBhZGQgIi8vIiBhbmQgYXV0aG9yaXR5CisgICAgaWYgKGlzRmlsZSA/ICFkZWdl
bmVyYXRlRmlsZVBhdGggOiAoaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0IHx8IGhvc3RTdGFydCAh
PSBob3N0RW5kKSkgeworICAgICAgICAqcCsrID0gJy8nOworICAgICAgICAqcCsrID0gJy8nOwor
CisgICAgICAgIG1fdXNlclN0YXJ0ID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAgICAgLy8g
Y29weSBpbiB0aGUgdXNlcgorICAgICAgICBzdHJQdHIgPSB1cmwgKyB1c2VyU3RhcnQ7CisgICAg
ICAgIGNvbnN0IGNoYXIqIHVzZXJFbmRQdHIgPSB1cmwgKyB1c2VyRW5kOworICAgICAgICB3aGls
ZSAoc3RyUHRyIDwgdXNlckVuZFB0cikgeworICAgICAgICAgICAgY2hhciBjID0gKnN0clB0cisr
OworICAgICAgICAgICAgQVNTRVJUKGlzVXNlckluZm9DaGFyKGMpKTsKKyAgICAgICAgICAgICpw
KysgPSBjOworICAgICAgICB9CisgICAgICAgIG1fdXNlckVuZCA9IHAgLSBidWZmZXIuZGF0YSgp
OworCisgICAgICAgIC8vIGNvcHkgaW4gdGhlIHBhc3N3b3JkCisgICAgICAgIGlmIChwYXNzd29y
ZEVuZCAhPSBwYXNzd29yZFN0YXJ0KSB7CisgICAgICAgICAgICAqcCsrID0gJzonOworICAgICAg
ICAgICAgc3RyUHRyID0gdXJsICsgcGFzc3dvcmRTdGFydDsKKyAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHBhc3N3b3JkRW5kUHRyID0gdXJsICsgcGFzc3dvcmRFbmQ7CisgICAgICAgICAgICB3aGls
ZSAoc3RyUHRyIDwgcGFzc3dvcmRFbmRQdHIpIHsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSAq
c3RyUHRyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUKGlzVXNlckluZm9DaGFyKGMpKTsKKyAg
ICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBtX3Bhc3N3b3JkRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAgICAgLy8gSWYgd2Ug
aGFkIGFueSB1c2VyIGluZm8sIGFkZCAiQCIKKyAgICAgICAgaWYgKHAgLSBidWZmZXIuZGF0YSgp
ICE9IG1fdXNlclN0YXJ0KQorICAgICAgICAgICAgKnArKyA9ICdAJzsKKworICAgICAgICAvLyBj
b3B5IGluIHRoZSBob3N0LCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBmaWxlIFVSTCB3aXRoIGF1
dGhvcml0eT0ibG9jYWxob3N0IgorICAgICAgICBpZiAoIShpc0ZpbGUgJiYgaG9zdElzTG9jYWxI
b3N0ICYmICFoYXZlTm9uSG9zdEF1dGhvcml0eVBhcnQpKSB7CisgICAgICAgICAgICBzdHJQdHIg
PSB1cmwgKyBob3N0U3RhcnQ7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBob3N0RW5kUHRyID0g
dXJsICsgaG9zdEVuZDsKKyAgICAgICAgICAgIGlmIChpc0Nhbm9uaWNhbEhvc3RuYW1lTG93ZXJj
YXNlRm9yU2NoZW1lKGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1lRW5kKSkgeworICAgICAgICAgICAg
ICAgIHdoaWxlIChzdHJQdHIgPCBob3N0RW5kUHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGNo
YXIgYyA9IHRvQVNDSUlMb3dlcigqc3RyUHRyKyspOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoaXNIb3N0bmFtZUNoYXIoYykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnOicp
OworICAgICAgICAgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdoaWxlIChzdHJQdHIgPCBob3N0RW5k
UHRyKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGlzSG9zdG5hbWVDaGFyKGMpIHx8IGMgPT0gJ1snIHx8IGMgPT0g
J10nIHx8IGMgPT0gJzonKTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1faG9zdEVuZCA9
IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgICAgIC8vIENvcHkgaW4gdGhlIHBvcnQgaWYgdGhl
IFVSTCBoYXMgb25lIChhbmQgaXQncyBub3QgZGVmYXVsdCkuIEFsc28sIGNvcHkgaXQgaWYgdGhl
cmUgd2FzIG5vIGhvc3RuYW1lLCBzbyB0aGF0IHRoZXJlIGlzIHN0aWxsIHNvbWV0aGluZyBpbiBh
dXRob3JpdHkgY29tcG9uZW50LgorICAgICAgICBpZiAoaG9zdEVuZCAhPSBwb3J0U3RhcnQpIHsK
KyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnRTdHIgPSB1cmwgKyBwb3J0U3RhcnQ7CisgICAg
ICAgICAgICBzaXplX3QgcG9ydExlbmd0aCA9IHBvcnRFbmQgLSBwb3J0U3RhcnQ7CisgICAgICAg
ICAgICBpZiAoKHBvcnRMZW5ndGggJiYgIWlzRGVmYXVsdFBvcnRGb3JTY2hlbWUocG9ydFN0ciwg
cG9ydExlbmd0aCwgYnVmZmVyLmRhdGEoKSwgbV9zY2hlbWVFbmQpKQorICAgICAgICAgICAgICAg
IHx8IChob3N0U3RhcnQgPT0gaG9zdEVuZCAmJiBob3N0RW5kICE9IHBvcnRTdGFydCkpIHsKKyAg
ICAgICAgICAgICAgICAqcCsrID0gJzonOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHBv
cnRFbmRQdHIgPSB1cmwgKyBwb3J0RW5kOworICAgICAgICAgICAgICAgIHdoaWxlIChwb3J0U3Ry
IDwgcG9ydEVuZFB0cikKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwb3J0U3RyKys7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbV9wb3J0RW5kID0gcCAtIGJ1ZmZlci5k
YXRhKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGlzRmlsZSkgeworICAgICAgICAgICAg
QVNTRVJUKGRlZ2VuZXJhdGVGaWxlUGF0aCk7CisgICAgICAgICAgICAqcCsrID0gJy8nOworICAg
ICAgICAgICAgKnArKyA9ICcvJzsKKyAgICAgICAgfQorICAgICAgICBtX3VzZXJTdGFydCA9IG1f
dXNlckVuZCA9IG1fcGFzc3dvcmRFbmQgPSBtX2hvc3RFbmQgPSBtX3BvcnRFbmQgPSBwIC0gYnVm
ZmVyLmRhdGEoKTsKKyAgICB9CisKKyAgICAvLyBGb3IgY2Fub25pY2FsaXphdGlvbiwgZW5zdXJl
IHdlIGhhdmUgYSAnLycgZm9yIG5vIHBhdGguCisgICAgLy8gRG8gdGhpcyBvbmx5IGZvciBVUkwg
d2l0aCBwcm90b2NvbCBmaWxlLCBodHRwIG9yIGh0dHBzLgorICAgIGlmICgobV9wcm90b2NvbElz
SW5IVFRQRmFtaWx5IHx8IGlzRmlsZSkgJiYgcGF0aEVuZCA9PSBwYXRoU3RhcnQpCisgICAgICAg
ICpwKysgPSAnLyc7CisKKyAgICAvLyBhZGQgcGF0aCwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMK
KyAgICBpZiAoIWhpZXJhcmNoaWNhbCkKKyAgICAgICAgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFy
Y2hpY2FsUGFydChwLCB1cmwgKyBwYXRoU3RhcnQsIHBhdGhFbmQgLSBwYXRoU3RhcnQpOworICAg
IGVsc2UgaWYgKCFoYXNTbGFzaERvdE9yRG90RG90KHVybCkpCisgICAgICAgIGFwcGVuZEVzY2Fw
aW5nQmFkQ2hhcnMocCwgdXJsICsgcGF0aFN0YXJ0LCBwYXRoRW5kIC0gcGF0aFN0YXJ0KTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQ2hhckJ1ZmZlciBwYXRoQnVmZmVyKHBhdGhFbmQgLSBwYXRoU3Rh
cnQgKyAxKTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNvcHlQYXRoUmVtb3ZpbmdEb3RzKHBh
dGhCdWZmZXIuZGF0YSgpLCB1cmwsIHBhdGhTdGFydCwgcGF0aEVuZCk7CisgICAgICAgIGFwcGVu
ZEVzY2FwaW5nQmFkQ2hhcnMocCwgcGF0aEJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAgfQor
CisgICAgbV9wYXRoRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAvLyBGaW5kIHRoZSBw
b3NpdGlvbiBhZnRlciB0aGUgbGFzdCBzbGFzaCBpbiB0aGUgcGF0aCwgb3IKKyAgICAvLyB0aGUg
cG9zaXRpb24gYmVmb3JlIHRoZSBwYXRoIGlmIHRoZXJlIGFyZSBubyBzbGFzaGVzIGluIGl0Lgor
ICAgIGludCBpOworICAgIGZvciAoaSA9IG1fcGF0aEVuZDsgaSA+IG1fcG9ydEVuZDsgLS1pKSB7
CisgICAgICAgIGlmIChidWZmZXJbaSAtIDFdID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBtX3BhdGhBZnRlckxhc3RTbGFzaCA9IGk7CisKKyAgICAvLyBhZGQgcXVlcnks
IGVzY2FwaW5nIGJhZCBjaGFyYWN0ZXJzCisgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCB1
cmwgKyBxdWVyeVN0YXJ0LCBxdWVyeUVuZCAtIHF1ZXJ5U3RhcnQpOworICAgIG1fcXVlcnlFbmQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKKworICAgIC8vIGFkZCBmcmFnbWVudCwgZXNjYXBpbmcgYmFk
IGNoYXJhY3RlcnMKKyAgICBpZiAoZnJhZ21lbnRFbmQgIT0gcXVlcnlFbmQpIHsKKyAgICAgICAg
KnArKyA9ICcjJzsKKyAgICAgICAgZXNjYXBlQW5kQXBwZW5kTm9uSGllcmFyY2hpY2FsUGFydChw
LCB1cmwgKyBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCAtIGZyYWdtZW50U3RhcnQpOworICAg
IH0KKyAgICBtX2ZyYWdtZW50RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICBBU1NFUlQo
cCAtIGJ1ZmZlci5kYXRhKCkgPD0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXIuc2l6ZSgpKSk7Cisg
ICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkgPiAwKTsKKworICAgIC8vIElmIHdlIGRpZG4ndCBlbmQg
dXAgYWN0dWFsbHkgY2hhbmdpbmcgdGhlIG9yaWdpbmFsIHN0cmluZyBhbmQKKyAgICAvLyBpdCB3
YXMgYWxyZWFkeSBpbiBhIFN0cmluZywgcmV1c2UgaXQgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlv
bi4KKyAgICBpZiAob3JpZ2luYWxTdHJpbmcgJiYgZXF1YWwob3JpZ2luYWxTdHJpbmctPmltcGwo
KSwgYnVmZmVyLmRhdGEoKSwgbV9mcmFnbWVudEVuZCkpCisgICAgICAgIG1fc3RyaW5nID0gKm9y
aWdpbmFsU3RyaW5nOworICAgIGVsc2UKKyAgICAgICAgbV9zdHJpbmcgPSBTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgbV9mcmFnbWVudEVuZCk7CisKKyAgICBtX2lzVmFsaWQgPSB0cnVlOworfQorCiti
b29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBV
UkwmIGIpCit7CisgICAgaWYgKGEubV9xdWVyeUVuZCAhPSBiLm1fcXVlcnlFbmQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBxdWVyeUxlbmd0aCA9IGEubV9xdWVyeUVuZDsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcXVlcnlMZW5ndGg7ICsraSkKKyAgICAgICAg
aWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJl
RXF1YWwoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEubV9zY2hlbWVF
bmQgIT0gYi5tX3NjaGVtZUVuZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IGhv
c3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOworICAgIGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVu
ZCgpIC0gaG9zdFN0YXJ0QTsKKyAgICBpbnQgaG9zdFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Cisg
ICAgaW50IGhvc3RMZW5ndGhCID0gYi5ob3N0RW5kKCkgLSBiLmhvc3RTdGFydCgpOworICAgIGlm
IChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVt
ZUVuZDsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQW5kIHRoZSBob3N0CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsgKytpKQorICAgICAgICBpZiAoYS5zdHJpbmco
KVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmcoKVtob3N0U3RhcnRCICsgaV0pCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoYS5wb3J0KCkgIT0gYi5wb3J0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgZW5jb2Rl
V2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCit7
CisgICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNvZGVkU3RyaW5nLnV0ZjgoKTsKKworICAgIENo
YXJCdWZmZXIgYnVmZmVyKGFzVVRGOC5sZW5ndGgoKSAqIDMgKyAxKTsKKyAgICBjaGFyKiBwID0g
YnVmZmVyLmRhdGEoKTsKKworICAgIGNvbnN0IGNoYXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Cisg
ICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyICsgYXNVVEY4Lmxlbmd0aCgpOworICAgIHdoaWxl
IChzdHIgPCBzdHJFbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOworICAg
ICAgICBpZiAoaXNCYWRDaGFyKGMpKQorICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwg
Yyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOworICAgIH0KKworICAgIEFT
U0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkp
KTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkp
OworfQorCisvLyBBcHBlbmRzIHRoZSBwdW55Y29kZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0
aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8KKy8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUg
cmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWluYXRlZC4KK3N0YXRpYyB2b2lkIGFwcGVuZEVu
Y29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVmZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNp
Z25lZCBzdHJMZW4pCit7CisgICAgLy8gTmVlZHMgdG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFu
IElETi1lbmNvZGVkIG5hbWUuCisgICAgLy8gRm9yIGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhp
cywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9L
LgorICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1lQnVmZmVyTGVuZ3RoID0gMjA0ODsKKworICAg
IGlmIChzdHJMZW4gPiBob3N0bmFtZUJ1ZmZlckxlbmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVND
SUkoc3RyLCBzdHJMZW4pKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgVVNFKElDVV9VTklDT0RFKQorICAgIFVDaGFy
IGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVyTGVuZ3RoXTsKKyAgICBVRXJyb3JDb2RlIGVy
cm9yID0gVV9aRVJPX0VSUk9SOworICAgIGludDMyX3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9
IHVpZG5hX0lETlRvQVNDSUkoc3RyLCBzdHJMZW4sIGhvc3RuYW1lQnVmZmVyLAorICAgICAgICBo
b3N0bmFtZUJ1ZmZlckxlbmd0aCwgVUlETkFfQUxMT1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsK
KyAgICBpZiAoZXJyb3IgPT0gVV9aRVJPX0VSUk9SKQorICAgICAgICBidWZmZXIuYXBwZW5kKGhv
c3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29udmVydGVkKTsKKyNlbmRpZgorfQorCitzdGF0
aWMgdm9pZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0
ckxlbiwgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4mIG5hbWVSYW5nZXMpCit7CisgICAgLy8gSW4g
YSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21lIGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQg
ZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBvciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4K
KyAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNvIHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRv
bid0IGNvbmZ1c2UgdXMuCisgICAgLy8gV2hlbiB3ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2Ug
YXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCisK
KyAgICBuYW1lUmFuZ2VzLmNsZWFyKCk7CisKKyAgICBpbnQgcCA9IDA7CisgICAgd2hpbGUgKDEp
IHsKKyAgICAgICAgLy8gRmluZCBzdGFydCBvZiBob3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmlu
Zy4KKyAgICAgICAgaW50IGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwg
c3RyTGVuLCBwLCAiXCJAPyIpOworICAgICAgICBpZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09
IC0xKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1l
T3JTdHJpbmdTdGFydF07CisgICAgICAgIHAgPSBob3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwor
CisgICAgICAgIGlmIChjID09ICc/JykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoYyA9PSAnQCcpIHsKKyAgICAgICAgICAgIC8vIEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KKyAg
ICAgICAgICAgIGludCBob3N0bmFtZVN0YXJ0ID0gcDsKKyAgICAgICAgICAgIGludCBob3N0bmFt
ZUVuZCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiPiw/Iik7CisgICAgICAgICAgICBi
b29sIGRvbmU7CisgICAgICAgICAgICBpZiAoaG9zdG5hbWVFbmQgPT0gLTEpIHsKKyAgICAgICAg
ICAgICAgICBob3N0bmFtZUVuZCA9IHN0ckxlbjsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5k
OworICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgbmFtZVJhbmdlcy5hcHBlbmQobWFrZV9wYWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1l
RW5kKSk7CisKKyAgICAgICAgICAgIGlmIChkb25lKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNraXAgcXVvdGVkIHN0cmluZy4KKyAg
ICAgICAgICAgIEFTU0VSVChjID09ICciJyk7CisgICAgICAgICAgICB3aGlsZSAoMSkgeworICAg
ICAgICAgICAgICAgIGludCBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RP
ZihzdHIsIHN0ckxlbiwgcCwgIlwiXFwiKTsKKyAgICAgICAgICAgICAgICBpZiAoZXNjYXBlZENo
YXJhY3Rlck9yU3RyaW5nRW5kID09IC0xKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICBjID0gc3RyW2VzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Cisg
ICAgICAgICAgICAgICAgcCA9IGVzY2FwZWRDaGFyYWN0ZXJPclN0cmluZ0VuZCArIDE7CisKKyAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJy
ZWFrIGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sgdG8gdGhlIGhvc3QgbmFtZSBsb29wLgorICAg
ICAgICAgICAgICAgIGlmIChjID09ICciJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2FwZWQgY2hhcmFjdGVyLgorICAgICAgICAgICAg
ICAgIEFTU0VSVChjID09ICdcXCcpOworICAgICAgICAgICAgICAgIGlmIChwID09IHN0ckxlbikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgKytwOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBmaW5kSG9zdG5h
bWVJbkhpZXJhcmNoaWNhbFVSTChjb25zdCBVQ2hhciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0
YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKK3sKKyAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUg
aW4gYSBoaWVyYXJjaGljYWwgVVJMLgorICAgIC8vIEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2Vx
dWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMgcHJlY2VkaW5nLCBhbmQKKyAgICAvLyB0aGlz
IHNob3VsZCBiZSB0aGUgZmlyc3QgY29sb24gaW4gdGhlIHN0cmluZy4KKyAgICAvLyBJdCBlbmRz
IHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVu
ZGluZyBjaGFyYWN0ZXIuCisgICAgLy8gSWYgdGhlcmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUg
aG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0ZXIgdGhlICJAIi4KKyAgICBpbnQgc2VwYXJh
dG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIDAsICI6Iik7CisgICAgaWYgKHNlcGFyYXRv
ciA9PSAtMSB8fCBzZXBhcmF0b3IgKyAyID49IHN0ckxlbiB8fAorICAgICAgICBzdHJbc2VwYXJh
dG9yICsgMV0gIT0gJy8nIHx8IHN0cltzZXBhcmF0b3IgKyAyXSAhPSAnLycpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIHRoYXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRo
ZSA6Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0ZXJzLgorICAgIGlmICghaXNTY2hlbWVGaXJz
dENoYXIoc3RyWzBdKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgc2VwYXJhdG9yOyArK2kpIHsKKyAgICAgICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ld
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBTdGFydCBhZnRl
ciB0aGUgc2VwYXJhdG9yLgorICAgIGludCBhdXRob3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7
CisKKyAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgICBpbnQgaG9zdG5hbWVF
bmQgPSBzdHJMZW47CisgICAgZm9yIChpbnQgaSA9IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVu
OyArK2kpIHsKKyAgICAgICAgVUNoYXIgYyA9IHN0cltpXTsKKyAgICAgICAgaWYgKGMgPT0gJzon
IHx8IChpc1BhdGhTZWdtZW50RW5kQ2hhcihjKSAmJiBjICE9IDApKSB7CisgICAgICAgICAgICBo
b3N0bmFtZUVuZCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQgb2YgdGhlIGhvc3QgbmFtZS4KKyAgICBpbnQg
dXNlckluZm9UZXJtaW5hdG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0
YXJ0LCAiQCIpOworICAgIGludCBob3N0bmFtZVN0YXJ0OworICAgIGlmICh1c2VySW5mb1Rlcm1p
bmF0b3IgPT0gLTEgfHwgdXNlckluZm9UZXJtaW5hdG9yID4gaG9zdG5hbWVFbmQpCisgICAgICAg
IGhvc3RuYW1lU3RhcnQgPSBhdXRob3JpdHlTdGFydDsKKyAgICBlbHNlCisgICAgICAgIGhvc3Ru
YW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3IgKyAxOworCisgICAgc3RhcnRPZmZzZXQgPSBo
b3N0bmFtZVN0YXJ0OworICAgIGVuZE9mZnNldCA9IGhvc3RuYW1lRW5kOworICAgIHJldHVybiB0
cnVlOworfQorCisvLyBDb252ZXJ0cyBhbGwgaG9zdG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBp
bnB1dCB0byBwdW55Y29kZSwgcHJlc2VydmluZyB0aGUKKy8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNo
YW5nZWQuIFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUgbnVsbC10ZXJtaW5hdGVkLgorc3RhdGljIHZv
aWQgZW5jb2RlSG9zdG5hbWVzKGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0
KQoreworICAgIG91dHB1dC5jbGVhcigpOworCisgICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFp
bHRvIikpIHsKKyAgICAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7
CisgICAgICAgIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIu
bGVuZ3RoKCksIGhvc3RuYW1lUmFuZ2VzKTsKKyAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdl
cy5zaXplKCk7CisgICAgICAgIGludCBwID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBuOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5h
bWVSYW5nZXNbaV07CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygp
W3BdLCByLmZpcnN0IC0gcCk7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0
cHV0LCAmc3RyLmNoYXJhY3RlcnMoKVtyLmZpcnN0XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKKyAg
ICAgICAgICAgIHAgPSByLnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICAvLyBUaGlzIHdpbGwg
Y29weSBlaXRoZXIgZXZlcnl0aGluZyBhZnRlciB0aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCisg
ICAgICAgIC8vIHdob2xlIHRoaW5nIGlmIHRoZXJlIGlzIG5vIGhvc3RuYW1lLgorICAgICAgICBv
dXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpbnQgaG9zdFN0YXJ0LCBob3N0RW5kOworICAgICAgICBpZiAo
ZmluZEhvc3RuYW1lSW5IaWVyYXJjaGljYWxVUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0
aCgpLCBob3N0U3RhcnQsIGhvc3RFbmQpKSB7CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0
ci5jaGFyYWN0ZXJzKCksIGhvc3RTdGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KKyAgICAgICAg
ICAgIGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRwdXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RT
dGFydF0sIGhvc3RFbmQgLSBob3N0U3RhcnQpOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgm
c3RyLmNoYXJhY3RlcnMoKVtob3N0RW5kXSwgc3RyLmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFm
dGVyIGhvc3RuYW1lLgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTm8gaG9zdG5h
bWUgdG8gZW5jb2RlLCByZXR1cm4gdGhlIGlucHV0LgorICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgfQorfQor
CitzdGF0aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ2hhckJ1ZmZlciYgb3V0cHV0KQoreworICAgIFVD
aGFyQnVmZmVyIHM7CisgICAgZW5jb2RlSG9zdG5hbWVzKHJlbCwgcyk7CisKKyAgICBUZXh0RW5j
b2RpbmcgcGF0aEVuY29kaW5nKFVURjhFbmNvZGluZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5j
b2RlZCBhcyBVVEYtODsgb3RoZXIgcGFydHMgbWF5IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgorCisg
ICAgaW50IHBhdGhFbmQgPSAtMTsKKyAgICBpZiAoZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYm
IGVuY29kaW5nLmlzVmFsaWQoKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJv
dG9jb2xJcyhyZWwsICJkYXRhIikgJiYgIXByb3RvY29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKKyAg
ICAgICAgLy8gRmluZCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBw
YXRoRW5kIGF0IC0xIG90aGVyd2lzZS4KKyAgICAgICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMu
ZGF0YSgpLCBzLnNpemUoKSwgMCwgIiM/Iik7CisgICAgfQorCisgICAgaWYgKHBhdGhFbmQgPT0g
LTEpIHsKKyAgICAgICAgQ1N0cmluZyBkZWNvZGVkID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRh
dGEoKSwgcy5zaXplKCksIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAg
ICAgIG91dHB1dC5yZXNpemUoZGVjb2RlZC5sZW5ndGgoKSk7CisgICAgICAgIG1lbWNweShvdXRw
dXQuZGF0YSgpLCBkZWNvZGVkLmRhdGEoKSwgZGVjb2RlZC5sZW5ndGgoKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgQ1N0cmluZyBwYXRoRGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5k
YXRhKCksIHBhdGhFbmQsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAg
ICAgIC8vIFVuZW5jb2RhYmxlIGNoYXJhY3RlcnMgaW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkg
Y29udmVydGluZworICAgICAgICAvLyB0aGVtIHRvIFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcg
bm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgorICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2Rl
ZCA9IGVuY29kaW5nLmVuY29kZShzLmRhdGEoKSArIHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVu
ZCwgVVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKKworICAgICAgICBvdXRwdXQu
cmVzaXplKHBhdGhEZWNvZGVkLmxlbmd0aCgpICsgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKKyAg
ICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCksIHBhdGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29k
ZWQubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkob3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVk
Lmxlbmd0aCgpLCBvdGhlckRlY29kZWQuZGF0YSgpLCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwor
ICAgIH0KKyAgICBvdXRwdXQuYXBwZW5kKCdcMCcpOyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0
cHV0LgorfQorCitzdGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICBzaXplX3QgcXVlc3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycp
OworICAgIHNpemVfdCBoYXNoUG9zID0gc3RyaW5nLmZpbmQoJyMnKTsKKyAgICB1bnNpZ25lZCBw
YXRoRW5kOworCisgICAgaWYgKGhhc2hQb3MgIT0gbm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09
IG5vdEZvdW5kIHx8IHF1ZXN0aW9uUG9zID4gaGFzaFBvcykpCisgICAgICAgIHBhdGhFbmQgPSBo
YXNoUG9zOworICAgIGVsc2UgaWYgKHF1ZXN0aW9uUG9zICE9IG5vdEZvdW5kKQorICAgICAgICBw
YXRoRW5kID0gcXVlc3Rpb25Qb3M7CisgICAgZWxzZQorICAgICAgICBwYXRoRW5kID0gc3RyaW5n
Lmxlbmd0aCgpOworCisgICAgcmV0dXJuIHN0cmluZy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xc
JywnLycpICsgc3RyaW5nLnN1YnN0cmluZyhwYXRoRW5kKTsKK30KKworYm9vbCBVUkw6OmlzSGll
cmFyY2hpY2FsKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIEFTU0VSVChtX3N0cmluZ1ttX3NjaGVtZUVuZF0gPT0gJzonKTsKKyAgICBy
ZXR1cm4gbV9zdHJpbmdbbV9zY2hlbWVFbmQgKyAxXSA9PSAnLyc7Cit9CisKK3ZvaWQgVVJMOjpj
b3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1ZmZlcikgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogVGhpcyB0aHJvd3MgYXdheSB0aGUgaGlnaCBieXRlcyBvZiBhbGwgdGhlIGNoYXJhY3Rl
cnMgaW4gdGhlIHN0cmluZyEKKyAgICAvLyBUaGF0J3MgZmluZSBmb3IgYSB2YWxpZCBVUkwsIHdo
aWNoIGlzIGFsbCBBU0NJSSwgYnV0IG5vdCBmb3IgaW52YWxpZCBVUkxzLgorICAgIGJ1ZmZlci5y
ZXNpemUobV9zdHJpbmcubGVuZ3RoKCkpOworICAgIGNvcHlBU0NJSShtX3N0cmluZywgYnVmZmVy
LmRhdGEoKSk7Cit9CisKK2Jvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
Y2hhciogcHJvdG9jb2wpCit7CisgICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtp
bmcgYSBuZXcgc3RyaW5nIG9iamVjdC4KKyAgICBhc3NlcnRQcm90b2NvbElzR29vZChwcm90b2Nv
bCk7CisgICAgZm9yIChpbnQgaSA9IDA7IDsgKytpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xb
aV0pCisgICAgICAgICAgICByZXR1cm4gdXJsW2ldID09ICc6JzsKKyAgICAgICAgaWYgKCFpc0xl
dHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFtpXSwgcHJvdG9jb2xbaV0pKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBpc1ZhbGlkUHJvdG9jb2woY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKK3sKKyAgICAvLyBSRkMzOTg2OiBBTFBIQSAqKCBBTFBIQSAvIERJR0lU
IC8gIisiIC8gIi0iIC8gIi4iICkKKyAgICBpZiAocHJvdG9jb2wuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcihwcm90b2NvbFswXSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnNpZ25lZCBwcm90b2NvbExlbmd0aCA9IHBy
b3RvY29sLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBwcm90b2NvbExl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghaXNTY2hlbWVDaGFyKHByb3RvY29sW2ldKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNp
Zm5kZWYgTkRFQlVHCit2b2lkIFVSTDo6cHJpbnQoKSBjb25zdAoreworICAgIHByaW50ZigiJXNc
biIsIG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworfQorI2VuZGlmCisKK1N0cmluZyBVUkw6OnN0
cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0Cit7CisgICAgVVJMIHJlZmVycmVyKCp0aGlz
KTsKKyAgICByZWZlcnJlci5zZXRVc2VyKFN0cmluZygpKTsKKyAgICByZWZlcnJlci5zZXRQYXNz
KFN0cmluZygpKTsKKyAgICByZWZlcnJlci5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAg
ICByZXR1cm4gcmVmZXJyZXIuc3RyaW5nKCk7Cit9CisKK2Jvb2wgVVJMOjppc0xvY2FsRmlsZSgp
IGNvbnN0Cit7CisgICAgLy8gSW5jbHVkaW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVh
IHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNlcyB0aGlzIGNoZWNrCisgICAgLy8gYW5kIGluY2x1ZGlu
ZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRzIHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxv
ZworICAgIC8vIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBl
dmVuIHdpdGhvdXQgYSBkcm9wLgorICAgIC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1l
TG9hZGVyOjpzaG91bGRUcmVhdFVSTEFzTG9jYWwoKSBmdW5jdGlvbi4KKyAgICByZXR1cm4gcHJv
dG9jb2xJcygiZmlsZSIpOworfQorCitib29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0
cmluZyYgdXJsKQoreworICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsK
K30KKworY29uc3QgVVJMJiBibGFua1VSTCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChV
UkwsIHN0YXRpY0JsYW5rVVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6YmxhbmsiKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOworfQorCitib29sIFVSTDo6aXNCbGFua1VSTCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHByb3RvY29sSXMoImFib3V0Iik7Cit9CisKK2Jvb2wgaXNEZWZh
dWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpCit7CisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xkaW5n
SGFzaD4gRGVmYXVsdFBvcnRzTWFwOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBv
cnRzTWFwLCBkZWZhdWx0UG9ydHMsICgpKTsKKyAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHko
KSkgeworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwIiwgODApOworICAgICAgICBkZWZh
dWx0UG9ydHMuc2V0KCJodHRwcyIsIDQ0Myk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0
cCIsIDIxKTsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7CisgICAgfQor
ICAgIHJldHVybiBkZWZhdWx0UG9ydHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OworfQorCitib29s
IHBvcnRBbGxvd2VkKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHVuc2lnbmVkIHNob3J0IHBvcnQg
PSB1cmwucG9ydCgpOworCisgICAgLy8gU2luY2UgbW9zdCBVUkxzIGRvbid0IGhhdmUgYSBwb3J0
LCByZXR1cm4gZWFybHkgZm9yIHRoZSAibm8gcG9ydCIgY2FzZS4KKyAgICBpZiAoIXBvcnQpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gVGhpcyBibG9ja2VkIHBvcnQgbGlzdCBtYXRj
aGVzIHRoZSBwb3J0IGJsb2NraW5nIHRoYXQgTW96aWxsYSBpbXBsZW1lbnRzLgorICAgIC8vIFNl
ZSBodHRwOi8vd3d3Lm1vemlsbGEub3JnL3Byb2plY3RzL25ldGxpYi9Qb3J0QmFubmluZy5odG1s
IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBi
bG9ja2VkUG9ydExpc3RbXSA9IHsKKyAgICAgICAgMSwgICAgLy8gdGNwbXV4CisgICAgICAgIDcs
ICAgIC8vIGVjaG8KKyAgICAgICAgOSwgICAgLy8gZGlzY2FyZAorICAgICAgICAxMSwgICAvLyBz
eXN0YXQKKyAgICAgICAgMTMsICAgLy8gZGF5dGltZQorICAgICAgICAxNSwgICAvLyBuZXRzdGF0
CisgICAgICAgIDE3LCAgIC8vIHFvdGQKKyAgICAgICAgMTksICAgLy8gY2hhcmdlbgorICAgICAg
ICAyMCwgICAvLyBGVFAtZGF0YQorICAgICAgICAyMSwgICAvLyBGVFAtY29udHJvbAorICAgICAg
ICAyMiwgICAvLyBTU0gKKyAgICAgICAgMjMsICAgLy8gdGVsbmV0CisgICAgICAgIDI1LCAgIC8v
IFNNVFAKKyAgICAgICAgMzcsICAgLy8gdGltZQorICAgICAgICA0MiwgICAvLyBuYW1lCisgICAg
ICAgIDQzLCAgIC8vIG5pY25hbWUKKyAgICAgICAgNTMsICAgLy8gZG9tYWluCisgICAgICAgIDc3
LCAgIC8vIHByaXYtcmpzCisgICAgICAgIDc5LCAgIC8vIGZpbmdlcgorICAgICAgICA4NywgICAv
LyB0dHlsaW5rCisgICAgICAgIDk1LCAgIC8vIHN1cGR1cAorICAgICAgICAxMDEsICAvLyBob3N0
cmlhbWUKKyAgICAgICAgMTAyLCAgLy8gaXNvLXRzYXAKKyAgICAgICAgMTAzLCAgLy8gZ3BwaXRu
cAorICAgICAgICAxMDQsICAvLyBhY3ItbmVtYQorICAgICAgICAxMDksICAvLyBQT1AyCisgICAg
ICAgIDExMCwgIC8vIFBPUDMKKyAgICAgICAgMTExLCAgLy8gc3VucnBjCisgICAgICAgIDExMywg
IC8vIGF1dGgKKyAgICAgICAgMTE1LCAgLy8gU0ZUUAorICAgICAgICAxMTcsICAvLyB1dWNwLXBh
dGgKKyAgICAgICAgMTE5LCAgLy8gbm50cAorICAgICAgICAxMjMsICAvLyBOVFAKKyAgICAgICAg
MTM1LCAgLy8gbG9jLXNydiAvIGVwbWFwCisgICAgICAgIDEzOSwgIC8vIG5ldGJpb3MKKyAgICAg
ICAgMTQzLCAgLy8gSU1BUDIKKyAgICAgICAgMTc5LCAgLy8gQkdQCisgICAgICAgIDM4OSwgIC8v
IExEQVAKKyAgICAgICAgNDY1LCAgLy8gU01UUCtTU0wKKyAgICAgICAgNTEyLCAgLy8gcHJpbnQg
LyBleGVjCisgICAgICAgIDUxMywgIC8vIGxvZ2luCisgICAgICAgIDUxNCwgIC8vIHNoZWxsCisg
ICAgICAgIDUxNSwgIC8vIHByaW50ZXIKKyAgICAgICAgNTI2LCAgLy8gdGVtcG8KKyAgICAgICAg
NTMwLCAgLy8gY291cmllcgorICAgICAgICA1MzEsICAvLyBDaGF0CisgICAgICAgIDUzMiwgIC8v
IG5ldG5ld3MKKyAgICAgICAgNTQwLCAgLy8gVVVDUAorICAgICAgICA1NTYsICAvLyByZW1vdGVm
cworICAgICAgICA1NjMsICAvLyBOTlRQK1NTTAorICAgICAgICA1ODcsICAvLyBFU01UUAorICAg
ICAgICA2MDEsICAvLyBzeXNsb2ctY29ubgorICAgICAgICA2MzYsICAvLyBMREFQK1NTTAorICAg
ICAgICA5OTMsICAvLyBJTUFQK1NTTAorICAgICAgICA5OTUsICAvLyBQT1AzK1NTTAorICAgICAg
ICAyMDQ5LCAvLyBORlMKKyAgICAgICAgMzY1OSwgLy8gYXBwbGUtc2FzbCAvIFBhc3N3b3JkU2Vy
dmVyIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNDA0NSwgLy8gbG9ja2QKKyAgICAgICAgNjAw
MCwgLy8gWDExCisgICAgICAgIDY2NjUsIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9u
XQorICAgICAgICA2NjY2LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAg
ICAgNjY2NywgLy8gU3RhbmRhcmQgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgNjY2OCwg
Ly8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2NjksIC8vIEFsdGVy
bmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8g
VXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKKyAgICB9OworICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExp
c3QgKyBXVEZfQVJSQVlfTEVOR1RIKGJsb2NrZWRQb3J0TGlzdCk7CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgLy8gVGhlIHBvcnQgbGlzdCBtdXN0IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0
byB3b3JrLgorICAgIHN0YXRpYyBib29sIGNoZWNrZWRQb3J0TGlzdCA9IGZhbHNlOworICAgIGlm
ICghY2hlY2tlZFBvcnRMaXN0KSB7CisgICAgICAgIGZvciAoY29uc3QgdW5zaWduZWQgc2hvcnQq
IHAgPSBibG9ja2VkUG9ydExpc3Q7IHAgIT0gYmxvY2tlZFBvcnRMaXN0RW5kIC0gMTsgKytwKQor
ICAgICAgICAgICAgQVNTRVJUKCpwIDwgKihwICsgMSkpOworICAgICAgICBjaGVja2VkUG9ydExp
c3QgPSB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgLy8gSWYgdGhlIHBvcnQgaXMgbm90IGlu
IHRoZSBibG9ja2VkIHBvcnQgbGlzdCwgYWxsb3cgaXQuCisgICAgaWYgKCFiaW5hcnlfc2VhcmNo
KGJsb2NrZWRQb3J0TGlzdCwgYmxvY2tlZFBvcnRMaXN0RW5kLCBwb3J0KSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICAvLyBBbGxvdyBwb3J0cyAyMSBhbmQgMjIgZm9yIEZUUCBVUkxzLCBh
cyBNb3ppbGxhIGRvZXMuCisgICAgaWYgKChwb3J0ID09IDIxIHx8IHBvcnQgPT0gMjIpICYmIHVy
bC5wcm90b2NvbElzKCJmdHAiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBBbGxv
dyBhbnkgcG9ydCBudW1iZXIgaW4gYSBmaWxlIFVSTCwgc2luY2UgdGhlIHBvcnQgbnVtYmVyIGlz
IGlnbm9yZWQuCisgICAgaWYgKHVybC5wcm90b2NvbElzKCJmaWxlIikpCisgICAgICAgIHJldHVy
biB0cnVlOworCisjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKKyAgICBpZiAodXJsLnByb3RvY29s
SXMoImxvY2FsIikpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIEFTU0VSVChwcm90b2NvbElzKHVybCwgImRhdGEiKSk7CisgICAgc2l6ZV90IGlu
ZGV4ID0gdXJsLmZpbmQoJzsnKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IGluZGV4ID0gdXJsLmZpbmQoJywnKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgaWYgKGluZGV4ID4gNSkKKyAgICAgICAgICAgIHJldHVybiB1cmwuc3Vic3RyaW5nKDUs
IGluZGV4IC0gNSkubG93ZXIoKTsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIjsgLy8gRGF0
YSBVUkxzIHdpdGggbm8gTUlNRSB0eXBlIGFyZSBjb25zaWRlcmVkIHRleHQvcGxhaW4uCisgICAg
fQorICAgIHJldHVybiAiIjsKK30KKworU3RyaW5nIG1pbWVUeXBlRnJvbVVSTChjb25zdCBVUkwm
IHVybCkKK3sKKyAgICBTdHJpbmcgZGVjb2RlZFBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXModXJsLnBhdGgoKSk7CisgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGRlY29kZWRQYXRoLnN1YnN0
cmluZyhkZWNvZGVkUGF0aC5yZXZlcnNlRmluZCgnLicpICsgMSk7CisKKyAgICAvLyBXZSBkb24n
dCB1c2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKCkgYmVjYXVzZSBpdCBy
ZXR1cm5zICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIHVwb24gZmFpbHVyZQorICAgIHJldHVy
biBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwor
fQorCitib29sIFVSTDo6aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Cit9CisKK1N0
cmluZyBVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgp
IGNvbnN0Cit7CisgICAgaWYgKHN0cmluZygpLmxlbmd0aCgpIDw9IGxlbmd0aCkKKyAgICAgICAg
cmV0dXJuIHN0cmluZygpOworCisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAt
IDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYzMTNlOWZlYzgxNjYzMWI0YTg3OGQwMjZkNWJl
ZjU5NTUzMmExOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oCkBAIC0wLDAgKzEsMzU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVUkxfaAorI2RlZmluZSBVUkxfaAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
I2lmIFVTRShDRikKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkwqIENGVVJMUmVmOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCitPQkpDX0NMQVNTIE5TVVJMOworI2VuZGlmCisKKyNp
ZiBQTEFURk9STShRVCkKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9O
QU1FU1BBQ0UKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHRFbmNv
ZGluZzsKK3N0cnVjdCBVUkxIYXNoOworCitlbnVtIFBhcnNlZFVSTFN0cmluZ1RhZyB7IFBhcnNl
ZFVSTFN0cmluZyB9OworCitjbGFzcyBVUkwgeworcHVibGljOgorICAgIC8vIEdlbmVyYXRlcyBh
IFVSTCB3aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgorICAgIFVSTCgpIHsgaW52YWxpZGF0
ZSgpOyB9CisKKyAgICAvLyBUaGUgYXJndW1lbnQgaXMgYW4gYWJzb2x1dGUgVVJMIHN0cmluZy4g
VGhlIHN0cmluZyBpcyBhc3N1bWVkIHRvIGJlIG91dHB1dCBvZiBVUkw6OnN0cmluZygpIGNhbGxl
ZCBvbiBhIHZhbGlkCisgICAgLy8gVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJuaWJsZSBmcm9tIHN1
Y2guCisgICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVhdGVkbHkgcGFyc2lu
ZyBhIHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhlIHBvc3NpYmxlIHNs
b3ctZG93bnMuCisgICAgVVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJik7Cisg
ICAgZXhwbGljaXQgVVJMKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3N0cmlu
ZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkgeyB9CisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpLmlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCk7IH0KKworICAgIC8vIFJlc29sdmVzIHRoZSByZWxhdGl2ZSBVUkwgd2l0aCB0aGUgZ2l2
ZW4gYmFzZSBVUkwuIElmIHByb3ZpZGVkLCB0aGUKKyAgICAvLyBUZXh0RW5jb2RpbmcgaXMgdXNl
ZCB0byBlbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY2Vycy4gVGhlIGJhc2UgVVJMIGNhbiBiZQorICAg
IC8vIG51bGwgb3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJl
IGludGVycHJldGVkIGFzCisgICAgLy8gYWJzb2x1dGUuCisgICAgLy8gRklYTUU6IElmIHRoZSBi
YXNlIFVSTCBpcyBpbnZhbGlkLCB0aGlzIGFsd2F5cyBjcmVhdGVzIGFuIGludmFsaWQKKyAgICAv
LyBVUkwuIEluc3RlYWQgSSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdHJlYXQgYWxsIGlu
dmFsaWQgYmFzZSBVUkxzCisgICAgLy8gdGhlIHNhbWUgd2F5IHdlIHRyZWF0ZSBudWxsIGFuZCBl
bXB0eSBiYXNlIFVSTHMuCisgICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiBy
ZWxhdGl2ZSk7CisgICAgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7CisKKyAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBzaG91
bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQorICAgIC8vIGJhc2Ugb2YgbnVsbCBv
ciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKKyAgICAvLyBz
dGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCisKKyAgICAvLyBNYWtlcyBhIGRlZXAgY29weS4g
SGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIFVSTCBvbiBhbm90aGVyCisgICAgLy8g
dGhyZWFkLiAgU2luY2UgdGhlIHVuZGVybHlpbmcgU3RyaW5nSW1wbCBvYmplY3RzIGFyZSBpbW11
dGFibGUsIHRoZXJlJ3MKKyAgICAvLyBubyBvdGhlciByZWFzb24gdG8gZXZlciBwcmVmZXIgY29w
eSgpIG92ZXIgcGxhaW4gb2xkIGFzc2lnbm1lbnQuCisgICAgVVJMIGNvcHkoKSBjb25zdDsKKwor
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgeW91IGNhbiBz
ZXQgdGhlIGhvc3QgYW5kIHBvcnQgZm9yIHRoZSBVUkwuCisgICAgLy8gTm9uLWhpZXJhcmNoaWNh
bCBVUkxzIGRvbid0IGhhdmUgYSBob3N0IGFuZCBwb3J0LgorICAgIGJvb2wgY2FuU2V0SG9zdE9y
UG9ydCgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KKworICAgIGJvb2wgY2Fu
U2V0UGF0aG5hbWUoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisgICAgYm9v
bCBpc0hpZXJhcmNoaWNhbCgpIGNvbnN0OworCisgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQorCisgICAgU3RyaW5nIHN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGggPSAxMDI0KSBjb25zdDsKKworICAgIFN0cmlu
ZyBwcm90b2NvbCgpIGNvbnN0OworICAgIFN0cmluZyBob3N0KCkgY29uc3Q7CisgICAgdW5zaWdu
ZWQgc2hvcnQgcG9ydCgpIGNvbnN0OworICAgIGJvb2wgaGFzUG9ydCgpIGNvbnN0OworICAgIFN0
cmluZyB1c2VyKCkgY29uc3Q7CisgICAgU3RyaW5nIHBhc3MoKSBjb25zdDsKKyAgICBTdHJpbmcg
cGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCgpIGNvbnN0OworICAg
IFN0cmluZyBxdWVyeSgpIGNvbnN0OworICAgIFN0cmluZyBmcmFnbWVudElkZW50aWZpZXIoKSBj
b25zdDsKKyAgICBib29sIGhhc0ZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0OworCisgICAgU3Ry
aW5nIGJhc2VBc1N0cmluZygpIGNvbnN0OworCisgICAgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoKCkg
Y29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgVVJMJ3MgcHJvdG9j
b2wgaXMgdGhlIHNhbWUgYXMgdGhlIG51bGwtCisgICAgLy8gdGVybWluYXRlZCBBU0NJSSBhcmd1
bWVudC4gVGhlIGFyZ3VtZW50IG11c3QgYmUgbG93ZXItY2FzZS4KKyAgICBib29sIHByb3RvY29s
SXMoY29uc3QgY2hhciopIGNvbnN0OworICAgIGJvb2wgcHJvdG9jb2xJc0RhdGEoKSBjb25zdCB7
IHJldHVybiBwcm90b2NvbElzKCJkYXRhIik7IH0KKyAgICBib29sIHByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSBjb25zdDsKKyAgICBib29sIGlzTG9jYWxGaWxlKCkgY29uc3Q7CisgICAgYm9vbCBp
c0JsYW5rVVJMKCkgY29uc3Q7CisKKyAgICBib29sIHNldFByb3RvY29sKGNvbnN0IFN0cmluZyYp
OworICAgIHZvaWQgc2V0SG9zdChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgcmVtb3ZlUG9y
dCgpOworICAgIHZvaWQgc2V0UG9ydCh1bnNpZ25lZCBzaG9ydCk7CisKKyAgICAvLyBJbnB1dCBp
cyBsaWtlICJmb28uY29tIiBvciAiZm9vLmNvbTo4MDAwIi4KKyAgICB2b2lkIHNldEhvc3RBbmRQ
b3J0KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRVc2VyKGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0UGFzcyhjb25zdCBTdHJpbmcmKTsKKworICAgIC8vIElmIHlvdSBwYXNzIGFu
IGVtcHR5IHBhdGggZm9yIEhUVFAgb3IgSFRUUFMgVVJMcywgdGhlIHJlc3VsdGluZyBwYXRoCisg
ICAgLy8gd2lsbCBiZSAiLyIuCisgICAgdm9pZCBzZXRQYXRoKGNvbnN0IFN0cmluZyYpOworCisg
ICAgLy8gVGhlIHF1ZXJ5IG1heSBiZWdpbiB3aXRoIGEgcXVlc3Rpb24gbWFyaywgb3IsIGlmIG5v
dCwgb25lIHdpbGwgYmUgYWRkZWQKKyAgICAvLyBmb3IgeW91LiBTZXR0aW5nIHRoZSBxdWVyeSB0
byB0aGUgZW1wdHkgc3RyaW5nIHdpbGwgbGVhdmUgYSAiPyIgaW4gdGhlCisgICAgLy8gVVJMICh3
aXRoIG5vdGhpbmcgYWZ0ZXIgaXQpLiBUbyBjbGVhciB0aGUgcXVlcnksIHBhc3MgYSBudWxsIHN0
cmluZy4KKyAgICB2b2lkIHNldFF1ZXJ5KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCBzZXRG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCByZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKKworICAgIGZyaWVuZCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBmcmllbmQgYm9vbCBwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICB1
bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBob3N0RW5kKCkgY29uc3Q7
CisKKyAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYXRoRW5k
KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CisKKyAg
ICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCk7IH0KKwor
I2lmIFVTRShDRikKKyAgICBVUkwoQ0ZVUkxSZWYpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
Y3JlYXRlQ0ZVUkwoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFVS
TChOU1VSTCopOworICAgIG9wZXJhdG9yIE5TVVJMKigpIGNvbnN0OworI2VuZGlmCisjaWZkZWYg
X19PQkpDX18KKyAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBzdHJpbmco
KTsgfQorI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkKKyAgICBVUkwoY29uc3QgUVVybCYpOwor
ICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKKyNlbmRpZgorCisgICAgY29uc3QgVVJMKiBpbm5l
clVSTCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgICB2b2lkIHBy
aW50KCkgY29uc3Q7CisjZW5kaWYKKworICAgIGJvb2wgaXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhy
ZWFkKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgc3Rh
dGljIGJvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CisgICAgdm9p
ZCBpbml0KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNvZGluZyYpOwor
ICAgIHZvaWQgY29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Owor
CisgICAgLy8gUGFyc2VzIHRoZSBnaXZlbiBVUkwuIFRoZSBvcmlnaW5hbFN0cmluZyBwYXJhbWV0
ZXIgYWxsb3dzIGZvciBhbgorICAgIC8vIG9wdGltaXphdGlvbjogV2hlbiB0aGUgc291cmNlIGlz
IHRoZSBzYW1lIGFzIHRoZSBmaXhlZC11cCBzdHJpbmcsCisgICAgLy8gaXQgd2lsbCB1c2UgdGhl
IHBhc3NlZC1pbiBzdHJpbmcgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IG9uZS4KKyAgICB2
b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcGFyc2UoY29uc3QgY2hhciogdXJs
LCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nID0gMCk7CisKKyAgICBib29sIGhhc1BhdGgo
KSBjb25zdDsKKworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICBib29sIG1faXNWYWxpZCA6IDE7
CisgICAgYm9vbCBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgOiAxOworCisgICAgaW50IG1fc2No
ZW1lRW5kOworICAgIGludCBtX3VzZXJTdGFydDsKKyAgICBpbnQgbV91c2VyRW5kOworICAgIGlu
dCBtX3Bhc3N3b3JkRW5kOworICAgIGludCBtX2hvc3RFbmQ7CisgICAgaW50IG1fcG9ydEVuZDsK
KyAgICBpbnQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgaW50IG1fcGF0aEVuZDsKKyAgICBp
bnQgbV9xdWVyeUVuZDsKKyAgICBpbnQgbV9mcmFnbWVudEVuZDsKK307CisKK2Jvb2wgb3BlcmF0
b3I9PShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgb3Bl
cmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKKworYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKK2NvbnN0IFVSTCYgYmxhbmtVUkwo
KTsKKworLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBvcGVyYXRpb25zIG9uIHN0cmluZ3MuCisvLyBU
aGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4ndCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgor
Ly8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZyb20gdGhlIFVSTCBmdW5jdGlvbnMgaW4gdGhh
dCB0aGV5IGRvbid0IHJlcXVpcmUgdGhlIHN0cmluZyB0byBiZSBhIHZhbGlkIGFuZCBwYXJzYWJs
ZSBVUkwuCisvLyBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGJlY2F1c2UgdmFsaWQgamF2
YXNjcmlwdCBVUkxzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lkZXJlZCB2YWxpZCBieSBVUkwu
CisKK2Jvb2wgcHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgY2hhciogcHJvdG9j
b2wpOworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCk7CisKK2Jv
b2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVuc2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOworYm9vbCBwb3J0QWxsb3dlZChjb25zdCBVUkwmKTsgLy8gQmxhY2ts
aXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCisK
K2Jvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0cmluZyYpOworCitTdHJpbmcgbWltZVR5cGVG
cm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CitTdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNv
bnN0IFVSTCYpOworCisvLyBVbmVzY2FwZXMgdGhlIGdpdmVuIHN0cmluZyB1c2luZyBVUkwgZXNj
YXBpbmcgcnVsZXMsIGdpdmVuIGFuIG9wdGlvbmFsCisvLyBlbmNvZGluZyAoZGVmYXVsdGluZyB0
byBVVEYtOCBvdGhlcndpc2UpLiBEQU5HRVI6IElmIHRoZSBVUkwgaGFzICIlMDAiCisvLyBpbiBp
dCwgdGhlIHJlc3VsdGluZyBzdHJpbmcgd2lsbCBoYXZlIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVy
cyEKK1N0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7CitTdHJp
bmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFRleHRFbmNv
ZGluZyYpOworCitTdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJp
bmcmKTsKKworLy8gSW5saW5lcy4KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwm
IGEsIGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygp
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5n
JiBiKQoreworICAgIHJldHVybiBhLnN0cmluZygpID09IGI7Cit9CisKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEg
PT0gYi5zdHJpbmcoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEs
IGNvbnN0IFVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0cmluZygpOwor
fQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgU3RyaW5nJiBi
KQoreworICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Cit9CisKK2lubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEgIT0g
Yi5zdHJpbmcoKTsKK30KKworLy8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVS
TCBmdW5jdGlvbnMgc28gd2UgY2FuIGdldCBpbmxpbmluZworLy8gd2l0aG91dCBoYXZpbmcgdG8g
aGF2ZSBhIGxvdCBvZiB1Z2x5IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KKworaW5s
aW5lIGJvb2wgVVJMOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5pc051
bGwoKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdHJpbmcuaXNFbXB0eSgpOworfQorCitpbmxpbmUgYm9vbCBVUkw6OmlzVmFsaWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX2lzVmFsaWQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6aGFz
UGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZCAhPSBtX3BvcnRFbmQ7Cit9CisK
K2lubGluZSBib29sIFVSTDo6aGFzUG9ydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faG9zdEVu
ZCA8IG1fcG9ydEVuZDsKK30KKworaW5saW5lIGJvb2wgVVJMOjpwcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OworfQor
CitpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0U3RhcnQoKSBjb25zdAoreworICAgIHJldHVybiAo
bV9wYXNzd29yZEVuZCA9PSBtX3VzZXJTdGFydCkgPyBtX3Bhc3N3b3JkRW5kIDogbV9wYXNzd29y
ZEVuZCArIDE7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6Omhvc3RFbmQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2hvc3RFbmQ7Cit9CisKK2lubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhTdGFy
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcG9ydEVuZDsKK30KKworaW5saW5lIHVuc2lnbmVk
IFVSTDo6cGF0aEVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGF0aEVuZDsKK30KKworaW5s
aW5lIHVuc2lnbmVkIFVSTDo6cGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
bmFtZXNwYWNlIFdURiB7CisKKyAgICAvLyBVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9y
IFN0cmluZworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKKyAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpVUkw+IHsKKyAgICAgICAg
dHlwZWRlZiBXZWJDb3JlOjpVUkxIYXNoIEhhc2g7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKKyNlbmRpZiAvLyBVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMSGFzaC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlZGM0ZjM4NTMwNWMzYjJiZWNkMjk2ZjY5ZWU1MmQwOGE4MmY5NjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxIYXNoLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFVSTEhhc2hfaAorI2RlZmluZSBVUkxIYXNoX2gKKworI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgc3RydWN0IFVSTEhhc2ggeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVUkwmIGtleSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaDo6ZXF1YWwoYS5zdHJpbmcoKSwg
Yi5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZl
VG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFdlYkNvcmU6OlVSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8V2ViQ29yZTo6
VVJMPiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gVVJMSGFzaF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WaXNpdGVkTGlua1N0cmF0ZWd5LmgKaW5kZXggNDY5
ZjlkYjU4NDU1Yjc4Y2NmYmVmYWUyZWEyYjcyYmVhMWNmYTMwYy4uOTJkNGY3YzYzYjNmMTBmMzdl
NTE3MzM3ZGFhZTBjZTRiMzBhNjhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Zp
c2l0ZWRMaW5rU3RyYXRlZ3kuaApAQCAtMzAsMTEgKzMwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdHlwZWRlZiB1aW50NjRfdCBMaW5rSGFzaDsKIGNsYXNzIFBhZ2U7Ci1jbGFzcyBLVVJM
OworY2xhc3MgVVJMOwogCiBjbGFzcyBWaXNpdGVkTGlua1N0cmF0ZWd5IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChQYWdlKiwgTGlua0hhc2gsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UqLCBMaW5rSGFzaCkgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9B
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBjMzA5NjQ5ZDljODIyOTA0NDE2MTcx
ODJlNDNiZjE4NGZhNWZlZTg4Li4yMzgyZGI4ODMwNzVlOTBiMTk2NTVmMjhiYTU3NzdlMWY2MjY4
NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTI2LDExICsyNiwxMSBA
QAogI2luY2x1ZGUgIkFzeW5jRmlsZVdyaXRlckNsaWVudC5oIgogI2luY2x1ZGUgIkRPTUZpbGVT
eXN0ZW1CYXNlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0
ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9w
ZW5GaWxlU3lzdGVtKGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgs
IGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxv
bmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgaW50IHBsYXllcklkLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBl
IHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgaW50IHBsYXllcklkLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6d2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNlUGF0aCwgc3RvcmFnZUlk
ZW50aWZpZXIsIHN0YXRpY19jYXN0PEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
OjpUeXBlPih0eXBlKSwgc2l6ZSwgY3JlYXRlLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCByb290VVJMKSwgcGxheWVySWQpOwogfQpAQCAtNzgsNjcgKzc4
LDY3IEBAIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6On5Bc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5KCkKIHsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojptb3ZlKGNvbnN0
IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1Bh
dGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3
IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwg
Y29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0
Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQYXRoKSwgZmls
ZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6cmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlbW92ZShmaWxl
U3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVt
b3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZp
bGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGV4Y2x1c2l2ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShm
aWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5m
aWxlRXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmls
ZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1f
cGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0
aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0K
IAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlV3JpdGVyOjpjcmVhdGVXcml0
ZXIobV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCks
IG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNsaWVudCkp
OwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5
c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcykpOwogfQogCi1TdHJpbmcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Zmls
ZVN5c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZVN5c3RlbVVSTFRvUGF0aChjb25zdCBVUkwmIHVybCkKIHsKICAgICBG
aWxlU3lzdGVtVHlwZSB0eXBlOwogICAgIFN0cmluZyBmdWxsUGF0aDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmgKaW5kZXggOGYzNmVkMmVlZDY5N2FlZGJmNjZkOTFhN2Y3NWYxNDY5MDE1MjM0
ZS4uZjRjZmMzNDcyNDMxMGY2OTExMjk3ZGFjMjg1ZjA2MzQ3YjkzOGFjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVR5
cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgpAQCAtNDgsMjQgKzQ4LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KHBsYXRmb3JtRmlsZVN5c3RlbSkpOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBv
cGVuRmlsZVN5c3RlbShjb25zdCBVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgs
IGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxv
bmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
KCk7Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJl
Y3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJl
Y3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rv
cnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCos
IGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29u
c3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNv
bnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByb3RlY3RlZDoKICAgICBBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5KFBhc3NPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0+IHBsYXRmb3JtRmlsZVN5c3RlbSk7Ci0gICAgc3RhdGljIFN0cmluZyBmaWxlU3lz
dGVtVVJMVG9QYXRoKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgU3RyaW5nIGZpbGVTeXN0ZW1V
UkxUb1BhdGgoY29uc3QgVVJMJik7CiAKICAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0+IG1fcGxhdGZvcm1GaWxlU3lzdGVtOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcAppbmRleCA5OTEwYTY4YTc2ZDM5NzQwZmM1ZDg0MDA2
ZWI0MWMwODM5ODdjMjcwLi5lYmM3NDkyYmZlMzA5ZmU1NjVlYzJhMTA4OTMwYjRkMTAyNWVmZmFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCkBAIC0yMCw3ICsy
MCw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgiCiAKICNp
bmNsdWRlICJDcmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlv
blNwYWNlLmgiCiAKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdHlwZWRl
ZiBIYXNoTWFwPFBhZ2VDbGllbnRCbGFja0JlcnJ5KiwgYm9vbD4gUGFnZVZpc2liaWxpdHlNYXA7
CiAKIHN0cnVjdCBDaGFsbGVuZ2VJbmZvIHsKLSAgICBDaGFsbGVuZ2VJbmZvKGNvbnN0IEtVUkwm
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOworICAgIENoYWxsZW5n
ZUluZm8oY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlh
bCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkq
KTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7CiAgICAgUHJvdGVjdGlvblNwYWNlIHNw
YWNlOwogICAgIENyZWRlbnRpYWwgY3JlZGVudGlhbDsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNsaWVudCogYXV0aENsaWVudDsKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RydWN0IENoYWxsZW5n
ZUluZm8gewogICAgIGJvb2wgYmxvY2tlZDsKIH07CiAKLUNoYWxsZW5nZUluZm86OkNoYWxsZW5n
ZUluZm8oY29uc3QgS1VSTCYgYVVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhU3BhY2UsIGNv
bnN0IENyZWRlbnRpYWwmIGFDcmVkZW50aWFsLAorQ2hhbGxlbmdlSW5mbzo6Q2hhbGxlbmdlSW5m
byhjb25zdCBVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYVNwYWNlLCBjb25zdCBD
cmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVu
dCogYW5BdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSogYVBhZ2VDbGllbnQpCiAgICAg
OiB1cmwoYVVybCkKICAgICAsIHNwYWNlKGFTcGFjZSkKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6cGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBh
Z2VDbGllbnRCbGFja0JlcnJ5KgogICAgIGQtPnJlc3VtZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNsaWVudCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjphdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgc3BhY2UsCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgc3Bh
Y2UsCiAgICAgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQqIGF1dGhDbGllbnQsIFBhZ2VDbGllbnRCbGFja0JlcnJ5KiBwYWdlQ2xpZW50
KQogewogICAgIEJMQUNLQkVSUllfQVNTRVJUKGF1dGhDbGllbnQpOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjpjYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvCiAgICAgICAgIGQtPnN0YXJ0QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UobmV4dCk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5h
Z2VyOjpub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgc3BhY2UsCit2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgc3BhY2Us
CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50
aWFsJiBjcmVkZW50aWFsKQogewogICAgIGQtPm1fYWN0aXZlQ2hhbGxlbmdlID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCmluZGV4IDNhZmM4ZTUyNTNhYTQ3MGRjNzZl
ZmMxYTQ5ODgzZWY2YWE3YzU0MDcuLjg0ZDc5NDRlY2NlM2YyYWE4YWY5ZWI2MWYzZmU4YWYzMDhk
MTkxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaApAQCAtMjgsNyAr
MjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlTWFuYWdlclByaXZhdGU7CiBjbGFzcyBDcmVkZW50aWFsOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIAogZW51bSBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVJlc3VsdCB7CkBAIC0zOCw3ICszOCw3IEBAIGVudW0gQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VSZXN1bHQgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNv
bnN0IENyZWRlbnRpYWwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJl
c3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpID0gMDsKIH07CiAKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlciA6IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VGhyZWFkVW5zYWZlU2luZ2xldG9uPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcj4gewpA
QCAtNDgsOSArNDgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlRGVsZXRlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSopOwogICAgIHZvaWQgcGFnZVZpc2liaWxpdHlDaGFuZ2VkKFBhZ2VDbGllbnRC
bGFja0JlcnJ5KiwgYm9vbCB2aXNpYmxlKTsKIAotICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRp
YWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRCbGFja0JlcnJ5
Kik7CisgICAgdm9pZCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBVUkwmLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJyeSopOwogICAgIHZvaWQgY2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqKTsKLSAgICB2
b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsK
KyAgICB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlh
bCYpOwogCiBwcml2YXRlOgogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdl
ci5jcHAKaW5kZXggMTcyMjY1NTQzZDMwZTAzNTNiMWY3MzIyYjZlZDZlNWVmYzc5OWQ4NS4uOWVi
Zjc3NDY4MjQ0ZjE0MDc5ZDZkM2M0MzNhZGVkNGYyZGM3ZGM5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlU2NoZW1lKGNvbnN0IFN0cmluZyYg
cHJvdG9jb2wpCiAgICAgcmV0dXJuIHByb3RvY29sID09ICJmaWxlIiB8fCBwcm90b2NvbCA9PSAi
bG9jYWwiOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29r
aWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBDb29raWVGaWx0ZXIgZmlsdGVyKQogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3Qg
YmVlbiBzeW5jLWVkIGF0IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFt
X3N5bmNlZFdpdGhEYXRhYmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTE0MCw3ICsxNDAsNyBA
QCB2b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZQogICAgIH0KIH0KIAotdm9pZCBDb29raWVNYW5hZ2Vy
OjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tp
ZXMsIENvb2tpZUZpbHRlciBmaWx0ZXIpCit2b2lkIENvb2tpZU1hbmFnZXI6OnNldENvb2tpZXMo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0
ZXIgZmlsdGVyKQogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3QgYmVlbiBzeW5jLWVk
IGF0IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhE
YXRhYmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIENvb2tp
ZU1hbmFnZXI6OnNldENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgY29va2llcywgQwogICAgIH0KIH0KIAotU3RyaW5nIENvb2tpZU1hbmFnZXI6OmdldENvb2tp
ZShjb25zdCBLVVJMJiB1cmwsIENvb2tpZUZpbHRlciBmaWx0ZXIpIGNvbnN0CitTdHJpbmcgQ29v
a2llTWFuYWdlcjo6Z2V0Q29va2llKGNvbnN0IFVSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVy
KSBjb25zdAogewogICAgIC8vIElmIHRoZSBkYXRhYmFzZSBoYXNuJ3QgYmVlbiBzeW5jLWVkIGF0
IHRoaXMgcG9pbnQsIGZvcmNlIGEgc3luYyBsb2FkCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhEYXRh
YmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCBTdHJpbmcgQ29va2ll
TWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0
cjxQYXJzZWRDb29raWU+ID4gJnN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
LCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAordm9pZCBDb29raWVNYW5hZ2VyOjpnZXRSYXdD
b29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+ICZzdGFja09mQ29va2llcywgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAogewogICAgIC8v
IEZvcmNlIGEgc3luYyBsb2FkIG9mIHRoZSBkYXRhYmFzZQogICAgIGlmICghbV9zeW5jZWRXaXRo
RGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC01ODksMTMgKzU4OSwxMyBAQCBDb29raWVN
YXAqIENvb2tpZU1hbmFnZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcChDb29raWVNYXAqIHByb3Rv
Y29sTWFwLCBjb25zdCBQYQogICAgIHJldHVybiBjdXJNYXA7CiB9CiAKLXZvaWQgQ29va2llTWFu
YWdlcjo6cmVtb3ZlQ29va2llV2l0aE5hbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZU5hbWUpCit2b2lkIENvb2tpZU1hbmFnZXI6OnJlbW92ZUNvb2tpZVdpdGhOYW1lKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgLy8gRGlzcGF0
Y2ggdGhlIG1lc3NhZ2UgYmVjYXVzZSB0aGUgZGF0YWJhc2UgY29va2llcyBhcmUgbm90IGxvYWRl
ZCBpbiBtZW1vcnkgeWV0LgogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYgIW1fcHJp
dmF0ZU1vZGUpIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkIChXZWJDb3JlOjpDb29raWVNYW5hZ2Vy
OjoqRnVuY3Rpb25UeXBlKShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIHR5
cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6KkZ1bmN0aW9uVHlwZSkoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp3ZWJL
aXRUaHJlYWRNZXNzYWdlQ2xpZW50KCktPmRpc3BhdGNoTWVzc2FnZSgKLSAgICAgICAgICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpjcmVhdGVNZXRob2RDYWxsTWVzc2FnZTxGdW5jdGlvblR5cGUs
IENvb2tpZU1hbmFnZXIsIGNvbnN0IEtVUkwsIGNvbnN0IFN0cmluZz4oCisgICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBl
LCBDb29raWVNYW5hZ2VyLCBjb25zdCBVUkwsIGNvbnN0IFN0cmluZz4oCiAgICAgICAgICAgICAg
ICAgJkNvb2tpZU1hbmFnZXI6OnJlbW92ZUNvb2tpZVdpdGhOYW1lLCB0aGlzLCB1cmwsIGNvb2tp
ZU5hbWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKaW5kZXggMGQ2OTBmYzY5MWMyNzUy
N2FjNjI4NTIxMDMyNTdkNTEzNzBhZDk1MS4uZGFmMDFiYjAyNTQ1M2ZmNDYyNzNkODMxMzJmYmRi
MGNhZjBiNjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVNYW5hZ2VyLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU7Ci1jbGFzcyBLVVJMOworY2xhc3Mg
VVJMOwogCiBlbnVtIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kgewogICAgIFJlbW92ZUZyb21C
YWNraW5nU3RvcmUsCkBAIC03MCwxMSArNzAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgY2FuTG9j
YWxBY2Nlc3NBbGxDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGREdW1wQWxsQ29va2ll
czsgfQogICAgIHZvaWQgc2V0Q2FuTG9jYWxBY2Nlc3NBbGxDb29raWVzKGJvb2wgZW5hYmxlZCkg
eyBtX3Nob3VsZER1bXBBbGxDb29raWVzID0gZW5hYmxlZDsgfQogCi0gICAgdm9pZCBzZXRDb29r
aWVzKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgPSBXaXRo
SHR0cE9ubHlDb29raWVzKTsKLSAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgS1VSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0ZXIpOworICAgIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0ZXIgPSBXaXRo
SHR0cE9ubHlDb29raWVzKTsKKyAgICB2b2lkIHNldENvb2tpZXMoY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZXMsIENvb2tpZUZpbHRlcik7CiAKICAgICB2b2lkIHJlbW92
ZUFsbENvb2tpZXMoQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSk7Ci0gICAgdm9pZCByZW1vdmVD
b29raWVXaXRoTmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKKyAg
ICB2b2lkIHJlbW92ZUNvb2tpZVdpdGhOYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSk7CiAKICAgICB1bnNpZ25lZCBzaG9ydCBjb29raWVzQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvdW50OyB9CiAKQEAgLTk2LDEwICs5NiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcml2YXRlTW9kZShib29sKTsKIAogICAgIFN0cmluZyBnZW5lcmF0ZUh0bWxGcmFnbWVudEZv
ckNvb2tpZXMoKTsKLSAgICBTdHJpbmcgZ2V0Q29va2llKGNvbnN0IEtVUkwmIHJlcXVlc3RVUkws
IENvb2tpZUZpbHRlcikgY29uc3Q7CisgICAgU3RyaW5nIGdldENvb2tpZShjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIENvb2tpZUZpbHRlcikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIGFsbCBjb29r
aWVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIFVSTCBhcyByYXcgY29v
a2llcy4KLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+
ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIg
PSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBVUkwmIHJl
cXVlc3RVUkwsIENvb2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBDb29raWVNYW5hZ2VyJiBjb29raWVNYW5hZ2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAK
aW5kZXggZWE5MGNhOGVmMmJhYmJmYWE0ZTRiMzE3NDljMzNmMmVjYTgyMjdjYS4uMTcwMGY0OTlj
OWFjOGYxYmUyNWRkZTc3ODZmOGE0MjhmZmM5OGRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNMaWdodHdlaWdodFNwYWNlKFVDaGFyIGMpCiAgICAgcmV0
dXJuIChjID09ICcgJyB8fCBjID09ICdcdCcpOwogfQogCi1Db29raWVQYXJzZXI6OkNvb2tpZVBh
cnNlcihjb25zdCBLVVJMJiBkZWZhdWx0Q29va2llVVJMKQorQ29va2llUGFyc2VyOjpDb29raWVQ
YXJzZXIoY29uc3QgVVJMJiBkZWZhdWx0Q29va2llVVJMKQogICAgIDogbV9kZWZhdWx0Q29va2ll
VVJMKGRlZmF1bHRDb29raWVVUkwpCiB7CiAgICAgbV9kZWZhdWx0Q29va2llSG9zdCA9IGRlZmF1
bHRDb29raWVVUkwuaG9zdCgpOwpAQCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8UGFyc2Vk
Q29va2llPiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
LCB1bnNpCiAgICAgICAgIGNhc2UgJ1AnOgogICAgICAgICBjYXNlICdwJyA6IHsKICAgICAgICAg
ICAgIGlmIChsZW5ndGggPj0gNCAmJiAoKGNvb2tpZS5maW5kKCJhdGgiLCB0b2tlblN0YXJ0U3Zn
ICsgMSwgZmFsc2UpIC0gdG9rZW5TdGFydFN2ZykgPT0gMSkpIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRoZSBwYXRoIHRvIGJlIGRlY29kZWQgdG8gbWF0Y2ggdGhvc2UgcmV0dXJuZWQg
ZnJvbSBLVVJMOjpwYXRoKCkuCisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0aGUgcGF0aCB0
byBiZSBkZWNvZGVkIHRvIG1hdGNoIHRob3NlIHJldHVybmVkIGZyb20gVVJMOjpwYXRoKCkuCiAg
ICAgICAgICAgICAgICAgLy8gVGhlIHBhdGggYXR0cmlidXRlIG1heSBvciBtYXkgbm90IGluY2x1
ZGUgcGVyY2VudC1lbmNvZGVkIGNoYXJhY3RlcnMuIEZvcnR1bmF0ZWx5CiAgICAgICAgICAgICAg
ICAgLy8gaWYgdGhlcmUgYXJlIG5vIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0ZXJzLCBkZWNvZGlu
ZyB0aGUgdXJsIGlzIGEgbm8tb3AuCiAgICAgICAgICAgICAgICAgcmVzLT5zZXRQYXRoKGRlY29k
ZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXJzZWRWYWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKaW5kZXggYzk0NGY4NjMwMTg1MDE0
N2Y0ZWVkNWZmNTI0Y2I2ZDJiZDlkMDY3Yy4uMmIwYjUyYWUwNzhhNmY0ZWRiYzE1OTg4ZDM4YjZm
NGEyMjY4MGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0Nvb2tpZVBhcnNlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIENvb2tpZVBhcnNlcl9o
CiAjZGVmaW5lIENvb2tpZVBhcnNlcl9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM5
LDcgKzM5LDcgQEAgY2xhc3MgUGFyc2VkQ29va2llOwogCiBjbGFzcyBDb29raWVQYXJzZXIgewog
cHVibGljOgotICAgIENvb2tpZVBhcnNlcihjb25zdCBLVVJMJiBkZWZhdWx0Q29va2llVVJMKTsK
KyAgICBDb29raWVQYXJzZXIoY29uc3QgVVJMJiBkZWZhdWx0Q29va2llVVJMKTsKICAgICB+Q29v
a2llUGFyc2VyKCk7CiAKICAgICAvLyBQYXJzZXMgYSBzZXF1ZW5jZSBvZiAiQ29va2llOiIgaGVh
ZGVyIGFuZCByZXR1cm4gdGhlIHBhcnNlZCBjb29raWVzLgpAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBjdXJUaW1lLCBzdGFydCwgZW5kIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlbW92ZWQuIEFuZCB0aGlzIG1ldGhvZCBjYW4gYmUgcHVibGljLgogICAgIFBhc3NSZWZQ
dHI8UGFyc2VkQ29va2llPiBwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgZG91YmxlIGN1clRpbWUpOwogCi0gICAgS1VSTCBt
X2RlZmF1bHRDb29raWVVUkw7CisgICAgVVJMIG1fZGVmYXVsdENvb2tpZVVSTDsKICAgICBTdHJp
bmcgbV9kZWZhdWx0Q29va2llSG9zdDsKICAgICBib29sIG1fZGVmYXVsdERvbWFpbklzSVBBZGRy
ZXNzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
RE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggYzJhMmIyNDA4MDRhOGEw
MjJmYjkwZDNhMzc3MjcxMjc1NDVmNGUzNy4uY2ZmYjlmYWQ5NTNhNjgzOTZhY2VhYzdlZmM4MjI0
YmZmMDc3M2I4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9ET01GaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1LVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVh
dGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CitVUkwgRE9NRmls
ZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUoZnVsbFBhdGgpKTsK
IApAQCAtMzgsNyArMzgsNyBAQCBLVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lz
dGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Y29tcGxldGVVUkwobV9maWxlc3lzdGVtUm9vdFVSTC5zdHJpbmcoKSArIGVuY29kZVdpdGhV
UkxFc2NhcGVTZXF1ZW5jZXMoZnVsbFBhdGgpKTsKIH0KIAotYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5
cGUsIFN0cmluZyYgZmlsZVBhdGgpCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVT
eXN0ZW1VUkwoY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmICghdXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTQsNyArNTQsNyBAQCBib29sIERPTUZpbGVTeXN0ZW1CYXNl
OjpjcmFja0ZpbGVTeXN0ZW1VUkwoY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlw
ZQogCiAgICAgICAgIGZpbGVQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRo
KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEtVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsLnBhdGgoKSk7CisgICAgICAgIFVSTCBvcmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCB1
cmwucGF0aCgpKTsKICAgICAgICAgU3RyaW5nIHBhdGggPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5j
ZXMob3JpZ2luVVJMLnBhdGgoKSk7CiAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRo
WzBdICE9ICcvJykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJs
YWNrQmVycnkuY3BwCmluZGV4IGJlOGQxYzhkOWI3YzEzYzg3YmU2MGQ1NzdmY2Y3ZDRjZWEzYWM1
OTIuLmQ0ZDEyZWE1MDhiNDA0OGRjYzYxYmI0ODI0N2RiYzMxOTZjMDkyNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZpbGVT
eXN0ZW1DYWxsYmFjay5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNs
dWRlICJGaWxlU3lzdGVtVHlwZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNsaWVudEJsYWNrQmVycnkuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgdm9p
ZCBvcGVuRmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIGJhc2VQYQogICAgIGlmICh0eXBlID09IEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gY29udGV4dC0+dXJsKCk7CisgICAgVVJM
IHVybCA9IGNvbnRleHQtPnVybCgpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICB1cmwuc2V0
UXVlcnkoU3RyaW5nKCkpOwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5
c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGJhc2VQ
YQogICAgIGJ1aWxkZXIuYXBwZW5kKCJmaWxlc3lzdGVtOiIpOwogICAgIGJ1aWxkZXIuYXBwZW5k
KHVybC5zdHJpbmcoKSk7CiAgICAgYnVpbGRlci5hcHBlbmQoZmlsZVN5c3RlbVR5cGVTdHJpbmco
dHlwZSkpOwotICAgIEtVUkwgcm9vdFVSTCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWls
ZGVyLnRvU3RyaW5nKCkpOwogICAgIEFTU0VSVChyb290VVJMLmlzVmFsaWQoKSk7CiAKICAgICAv
LyBUT0RPOiBBc2sgdXNlciBmb3IgZmlsZSBzeXN0ZW0gcGVybWlzc2lvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVy
cnkuaAppbmRleCBkNDBlZjhiZDY0MWU5M2ZjNzY1YzE0Y2M2ODQ5ZmZhNzEzZjA2MmM2Li43MzRk
ZDE1ZDc1ZmIxNzZiOTEwMzc2NDZhMTgwYmRhYWI5ODdiNjU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5o
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Owog
Y2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBQcm90ZWN0aW9uU3Bh
Y2U7CiB9CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzaG93QWxl
cnREaWFsb2coQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlQ2xpZW50OjpBbGVydFR5cGUpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7
CiAgICAgdmlydHVhbCBTYXZlQ3JlZGVudGlhbFR5cGUgbm90aWZ5U2hvdWxkU2F2ZUNyZWRlbnRp
YWwoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJveHlDcmVkZW50aWFsKGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwCmluZGV4IGNmYTc0MzRjZGEzMjZh
NDk4ODNlOTYxMGY2ZWRhMTVkNTVhNjhjMmUuLjhjMTg2NzM2OTIxMTM0NWVjZjRiNTQ4ZGFlNWI5
NWM0NjgxZWYyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvUGFyc2VkQ29va2llLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BhcnNlZENvb2tpZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJQYXJzZWRD
b29raWUuaCIKIAogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPGN1cmwv
Y3VybC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmgKaW5kZXggYmNjNzkxNjhiZGZm
YmIwY2Y0YzhmYjJhNTQ5NzlkMGJhOTYxODBjZi4uNTZjNTI5YWExOTg3OWQ2Y2QzZTM4YWU2N2M4
ZDdlMDdkZWIxMTQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXJzZWRDb29raWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BhcnNlZENvb2tpZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIFN0cmluZzsKIH0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogLy8gVGhpcyBj
bGFzcyByZXByZXNlbnRzIGEgY29va2llIGludGVybmFsbHkKIC8vIEl0IGNhbiBlaXRoZXIgYmUg
Y3JlYXRlZCBieSB0aGUgQ29va2llUGFyc2VyIHdoaWNoIHdpbGwgdGhlbiBmaWxsIGl0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFj
a0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2Fy
ZEJsYWNrQmVycnkuY3BwCmluZGV4IDBiNTNlMWU1YmUxZDM3MDMwODE4ODYyNzAxMDE5MGM3OGNm
NDFmNjUuLmYyNWVlNGIxNDI1OGM3MGRkMzhhODdlNjU5MDAzNmMwZDZkNTQ1OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2FyZEJsYWNrQmVy
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2Fy
ZEJsYWNrQmVycnkuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OmNsZWFyKCkKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpcGJvYXJkOjpjbGVhckNsaXBi
b2FyZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSosIEtVUkwgY29u
c3QmLCBTdHJpbmcgY29uc3QmKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBV
UkwgY29uc3QmLCBTdHJpbmcgY29uc3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXggMWFmYjVmNTk1N2E2
Nzg2NDM4YTBhNmM5ZDU0ODg5NzJiMmY5MTMzNy4uMzQwNDQ5ZjBkYzY0NDg5ODJiODYxNjljOTg5
ZWUwZTE5YzliOWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mu
aApAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUg
IkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYkZpbGVTeXN0ZW0uaD4K
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEFzeW5jRmls
ZVdyaXRlckNsaWVudDsKIAogY2xhc3MgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6
IHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBw
dWJsaWM6Ci0gICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgS1VSTCYgcm9vdFVSTCA9
IEtVUkwoKSkKKyAgICBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBVUkwmIHJvb3RVUkwg
PSBVUkwoKSkKICAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgICAgICwgbV93
cml0ZXJDbGllbnQoMCkKICAgICAgICAgLCBtX3Jvb3RVUkwocm9vdFVSTCkKQEAgLTcwLDcgKzcw
LDcgQEAgcHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVdyaXRlckNsaWVudCogbV93cml0ZXJDbGll
bnQ7CiAKIHByaXZhdGU6Ci0gICAgS1VSTCBtX3Jvb3RVUkw7CisgICAgVVJMIG1fcm9vdFVSTDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9yQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnku
Y3BwCmluZGV4IDFhMzE5ODcxYjZlMDY2YjAwNWVjZDY3Nzk3ZTNkY2EyYzNlMjUwZWQuLmUxZDMz
OTkxMDg3NjNiMzU5NGQzZWE1YWYzNDZhOWRmMjY1MGNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9yQmxhY2tCZXJyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5lcmF0b3JC
bGFja0JlcnJ5LmNwcApAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzEsNyArMzEsNyBAQCB2
b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVu
c2lnbmVkLCBTdHJpbmcgY29uc3QmLCBLVVJMIGNvbnN0JikKK1N0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIFN0cmluZyBjb25zdCYsIFVSTCBjb25zdCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9X
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAppbmRleCBkYTM5MTE1NzIzMWMxNmI1
Y2MwYjAwNzlkZDMxZDVhOTc4MmVkYThhLi41NWZhOWY3YTMzZDNmMDgwZDM0MjYyMzBjN2RiYTg5
Mzk1NDc3MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAK
QEAgLTY5LDY3ICs2OSw2NyBAQCB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmRlbGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aQogICAgIFdlYkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGVTeXN0ZW0od2ViS2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLCBiYXNl
UGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHN0YXRpY19jYXN0PFdlYkZpbGVTeXN0ZW06OlR5cGU+
KHR5cGUpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6Om1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3Qg
S1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpt
b3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBw
bGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5tb3ZlKGZpbGVTeXN0ZW1VUkxUb1Bh
dGgoc291cmNlUGF0aCksIGZpbGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgY2Fs
bGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxi
YWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29weU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxl
U3lzdGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRo
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewog
ICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y29weShmaWxlU3lzdGVtVVJMVG9QYXRoKHNvdXJjZVBh
dGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNhbGxiYWNrcyk7CiB9
CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVT
eXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lz
dGVtLT5yZW1vdmUoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZv
cm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAg
ICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3Rl
bSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZp
bGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBL
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQog
ewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShmaWxlU3lzdGVtVVJMVG9QYXRo
KHBhdGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNr
cykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShmaWxlU3lzdGVt
VVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpmaWxlRXhpc3Rz
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmZp
bGVFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9p
ZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmls
ZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0
Zm9ybUZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25z
dCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KGZpbGVTeXN0
ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQq
LCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KiBjYWxsYmFja3MpCiB7CiAgICAgV2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3JpdGVyKHBsYXRmb3Jt
RmlsZVN5c3RlbSwgZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAot
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVB
bmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0
Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
Om9wZW5GaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBLVVJMJiBy
b290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0
IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZp
bGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFVSTCYgcm9vdFVSTCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwg
Ym9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNy
ZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6b3BlbkZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGJhc2VQYXRoLCBzdG9yYWdlSWRlbnRpZmllciwgdHlwZSwg
c2l6ZSwgY3JlYXRlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
Y2FsbGJhY2tzLCBjb250ZXh0LCBtb2RlLCByb290VVJMKSkpOwpAQCAtMTQxLDYyICsxNDEsNjIg
QEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVGaWxlU3lzdGVt
KFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXgKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmRlbGV0ZUZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQsIGJhc2VQYXRoLCBzdG9yYWdlSWRlbnRpZmllciwgdHlwZSwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgY29u
dGV4dCwgbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
Ojptb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25zdCBVUkwmIHNvdXJjZVBh
dGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0
ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZU9uTWFp
blRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHNvdXJjZVBhdGgsIGRlc3RpbmF0
aW9uUGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxi
YWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6Y29weShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBk
ZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3Qg
VVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFp
blRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNvcHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQ
YXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNr
VG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6cmVtb3ZlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwg
cGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNr
cywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBv
c3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lz
dGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZCwgbV9wbGF0Zm9y
bUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdv
cmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZp
bGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0
ZUZpbGVPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBleGNs
dXNpdmUsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3Zv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0
IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3Rv
cnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBleGNsdXNp
dmUsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3Ms
IG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OmZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJl
YWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpm
aWxlRXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwg
bmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9j
b250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5OjpkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdl
dCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RU
YXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0
ZW0uZ2V0KCksIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyhjYWxsYmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0Zp
bGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLmdldCgpLCBjbGllbnQsIHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNsaWVudCwgbV9jb250ZXh0LCBtX21vZGUpKSk7
CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNo
b3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFP
bk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1f
bW9kZSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgKaW5kZXgg
MTY1MWE1Y2U5YTA1NjliMzRmYTI1YTYwMTQyOGU3OTk5NDE1MmRhZC4uOTQxZjc1N2QwN2RiNzEz
NTBjMWZiMGNiOTg3ZTRkZDEwZTZmMDg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmgKQEAgLTQxLDM5ICs0MSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShjb250ZXh0LCBtb2Rl
LCBwbGF0Zm9ybUZpbGVTeXN0ZW0pKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmls
ZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IEtVUkwmIHJvb3RVUkwsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBv
cGVuRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFVSTCYgcm9vdFVSTCwgY29u
c3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3Jl
YXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogICAgIHN0YXRpYyB2
b2lkIGRlbGV0ZUZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1v
ZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZp
ZXIsIEZpbGVTeXN0ZW1UeXBlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwogICAgIHZpcnR1YWwgfldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoKTsKICAgICB2
aXJ0dWFsIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25Q
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3Qg
S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiBw
YXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3Rv
cnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIG1vdmUo
Y29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weShj
b25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2
b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5j
RmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5k
UmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKIAogcHJpdmF0ZToKICAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5KFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBQYXNzT3duUHRyPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwog
ICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZUZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIEZp
bGVTeXN0ZW1UeXBlLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwot
ICAgIHN0YXRpYyB2b2lkIG1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgc291cmNl
UGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVt
KiwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vy
c2l2ZWx5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgcmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJl
Y3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZv
aWQgZmlsZUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQ
bGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGRpcmVj
dG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0
Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWREaXJl
Y3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVXcml0ZXJP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgS1VSTCYgcGF0
aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMg
dm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKKyAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgc291
cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0
ZW0qLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJz
aXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVT
eXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9y
eU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3Jr
ZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGZp
bGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGRpcmVjdG9yeUV4
aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgcmVhZERpcmVjdG9yeU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVyT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmls
ZVN5c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVh
dGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJM
JiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogCiAgICAg
V29ya2VyR2xvYmFsU2NvcGUqIG1fY29udGV4dDsKICAgICBTdHJpbmcgbV9tb2RlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IGIzNTA4
MmY1YWU1OTZhMTI5YTY1MTdlNWQxYTdiNzI1MmYxNTRjMjguLmRmMTFkN2I5NWM5NmQ5NGM5MWYz
MWNkMDc2ZGMxMTcwYmE5YTMyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTU0LDExICs1NCwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBc3luY0ZpbGVXcml0ZXJDbGll
bnQqPiA6CiAKIHZvaWQgcG9zdFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrPik7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNz
IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOiBwdWJsaWMgUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MsIHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2
ZXIgewogcHVibGljOgotICAgIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckds
b2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IEtVUkwmIHJvb3RV
UkwgPSBLVVJMKCkpCisgICAgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3Mo
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgV29ya2VyR2xv
YmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgVVJMJiByb290VVJM
ID0gVVJMKCkpCiAgICAgICAgIDogUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2Fs
bGJhY2tzLCByb290VVJMKQogICAgICAgICAsIFdvcmtlckdsb2JhbFNjb3BlOjpPYnNlcnZlcihj
b250ZXh0KQogICAgICAgICAsIG1fY29udGV4dChjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VSTENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0tVUkxDRk5ldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYjdj
ZmU5YzhhYjkxNjc2ZTE4ZTI4MDIwNDJmMTBhNTQ2NTU4N2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS1VS
TENGTmV0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVk
ZSAiQ0ZVUkxFeHRyYXMuaCIKLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKENGVVJMUmVmIHVybCkKLXsKLSAgICBpZiAo
IXVybCkgewotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwotICAg
IENTdHJpbmcgdXJsQnl0ZXM7Ci0gICAgZ2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Ci0gICAg
cGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi1SZXRhaW5Q
dHI8Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
V2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIGludmFsaWQgVVJMcz8KLSAgICAvLyBDdXJyZW50
bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhl
IHN0cmluZyBpbiB0aGF0IGNhc2UsCi0gICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KLSAg
ICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKLSAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICBy
ZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkp
OwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Ci17Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTCA9IGNyZWF0ZUNGVVJMKCk7Ci0gICAgaWYgKCFj
ZlVSTCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0jaWYgUExBVEZPUk0oV0lOKQotICAg
IENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7Ci0jZWxz
ZQotICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwot
I2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoY2ZVUkwu
Z2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9V
UkxDRi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMyZWYyODlkMjNhN2U3Zjc1NWJjODkwYTkzZWE5NjlkNTkw
OTY0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1VSTENG
LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlVSTC5oIgorCisjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKyNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitV
Ukw6OlVSTChDRlVSTFJlZiB1cmwpCit7CisgICAgaWYgKCF1cmwpIHsKKyAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdoeSBpcyBp
dCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KKyAgICBDU3RyaW5nIHVybEJ5dGVzOworICAg
IGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOworICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7
Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0
ZUNGVVJMKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4g
Zm9yIGludmFsaWQgVVJMcz8KKyAgICAvLyBDdXJyZW50bHkgaXQgdGhyb3dzIGF3YXkgdGhlIGhp
Z2ggYnl0ZXMgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBpbiB0aGF0IGNhc2UsCisg
ICAgLy8gd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KKyAgICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsK
KyAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKKyAgICByZXR1cm4gY3JlYXRlQ0ZVUkxGcm9tQnVm
ZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworfQorI2VuZGlmCisKK1N0cmluZyBV
Ukw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNm
VVJMID0gY3JlYXRlQ0ZVUkwoKTsKKyAgICBpZiAoIWNmVVJMKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisKKyNpZiBQTEFURk9STShXSU4pCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxl
ID0ga0NGVVJMV2luZG93c1BhdGhTdHlsZTsKKyNlbHNlCisgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0
aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CisjZW5kaWYKKyAgICByZXR1cm4gYWRvcHRD
RihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aChjZlVSTC5nZXQoKSwgcGF0aFN0eWxlKSkuZ2V0KCk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0Zp
bGVTeXN0ZW1FZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5
c3RlbUVmbC5jcHAKaW5kZXggYTY2MDhiYmI0MDI0MDVjZWYzMjQxYzBmNjg1ZjI2N2VkYzZkMDY1
YS4uODBhNTM2MWU4NDgxMmEzYTljOTljNTFhNTJlMGFkMzBjNzM0NmRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5jRmlsZVN5c3RlbUVmbC5jcHAKQEAgLTYz
LDYyICs2Myw2MiBAQCBBc3luY0ZpbGVTeXN0ZW1FZmw6On5Bc3luY0ZpbGVTeXN0ZW1FZmwoKQog
ewogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6bW92ZShjb25zdCBLVVJMJiwgY29uc3Qg
S1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNG
aWxlU3lzdGVtRWZsOjptb3ZlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y29weShjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVt
RWZsOjpjb3B5KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5j
RmlsZVN5c3RlbUVmbDo6cmVtb3ZlKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVtb3ZlKGNvbnN0IFVS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3Zv
aWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1FZmw6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVh
dGVGaWxlKGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3JlYXRlRGly
ZWN0b3J5KGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6ZmlsZUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmZpbGVFeGlzdHMoY29uc3QgVVJM
JiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpkaXJlY3RvcnlFeGlzdHMo
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQg
QXN5bmNGaWxlU3lzdGVtRWZsOjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6cmVhZERpcmVjdG9yeShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0Zp
bGVTeXN0ZW1FZmw6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBL
VVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0Zp
bGVTeXN0ZW1FZmw6OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVNuYXBzaG90
RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZVNuYXBzaG90Rmls
ZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuaAppbmRleCAxOTliN2M0Y2E5NjIz
NDNjZjYwZGI5YmFjYmIxMTZmMzM5MzkyYjY1Li45M2U2YjNhNzZkM2I3MGM0MDU2ZWIxNWE4ZTQw
NDZjYTdhY2JhYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5
bmNGaWxlU3lzdGVtRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0FzeW5j
RmlsZVN5c3RlbUVmbC5oCkBAIC00MCwxOCArNDAsMTggQEAgcHVibGljOgogICAgIEFzeW5jRmls
ZVN5c3RlbUVmbCgpOwogICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbUVmbCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShj
b25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtV
UkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMo
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShj
b25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIG1vdmUo
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmUoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRh
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5
KGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3Rz
KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5j
RmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRN
ZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvRXJyb3JzRWZsLmNwcAppbmRleCAyNjQ4ZjFjMmY2ZjU2ZDU0NjM4Y2E1ZDMxZDUyMjY0MDIx
OGE2ODMxLi5kYTJlMjNkMGFlYjc5OGQzNjcxNjRlMWUwNTk0OGJlNWM0MGVhMmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvRXJyb3JzRWZsLmNwcApAQCAtOTAsMjEgKzkwLDIxIEBA
IFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4
dCwgY29uc3QgU3RyaW5nJiBlcnJvck1lCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50
TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
OwogCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJv
ckdlbmVyYWwsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBlcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJp
bnQsIFByaW50RXJyb3JHZW5lcmFsLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51
cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQogewogICAgIERv
Y3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9y
RG9tYWluUHJpbnQsIFByaW50RXJyb3JQcmludGVyTm90Rm91bmQsIGRvY3VtZW50TG9hZGVyID8g
ZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgpLCBBU0NJSUxpdGVyYWwoIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFBy
aW50RXJyb3JQcmludGVyTm90Rm91bmQsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXIt
PnVybCgpIDogVVJMKCksIEFTQ0lJTGl0ZXJhbCgiUHJpbnRlciBub3QgZm91bmQiKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgUHJpbnRDb250ZXh0
KiBwcmludENvbnRleHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0g
cHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQ
YWdlUmFuZ2UsIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9ySW52YWxpZFBhZ2VSYW5nZSwgZG9j
dW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgQVNDSUlMaXRlcmFs
KCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAK
aW5kZXggMWY5ZDBmNTc5ZjEzNmQwYTlhMmFkMWMzZjFkYmI3MTNjODY4YjVhOC4uNmMyYjcyYzMy
ZmJmZmE3YWM4MTA5ZGEyNDc0MzQyNmJjNmUxOTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJGVFBEaXJlY3RvcnlEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
ICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIGdldFN1
cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikKK1N0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpCiB7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAwZWI1MTM2M2NkZWI2NDkwMGJiNzdhMzE3ZTRi
ZWQ0ZjdiOTM1ZTk1Li45NzNkYmMyMDQ2MGU5YTQ3MWQ2ZTc3MjZiZGNhMDViMDExMGJmZDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW1h
Z2VCdWZmZXI7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBSb3VuZGVkUmVjdDsKLSAg
ICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RDsKICAgICBjbGFzcyBUZXh0UnVuOwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwpA
QCAtNDAwLDcgKzQwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0cmFu
c2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOyB9CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkp
OwogCi0gICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29uc3QgSW50UmVj
dCYpOworICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVj
dCYpOwogCiAgICAgICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgICAgICB2b2lkIHNldENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA0YTUxNTU0
MjAzOTk2MDk4MWMxODQ5OTEyYTQ5MWNmYWEzYjQwNzkwLi4zYmM4YjI5ZmJmMTg1YmUxYzc5YzVi
NzNlYTU5ZTY1ZWU3ODQ5NWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogCiBzdGF0
aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lR2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOwogCi1zdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBi
ZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiwgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gMCk7CitzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBiZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQgPSAwKTsKIHN0YXRpYyBNZWRpYVBsYXllckZhY3Rv
cnkqIG5leHRNZWRpYUVuZ2luZShNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpOwogCiBlbnVt
IFJlcXVlcnlFbmdpbmVPcHRpb25zIHsgRG9Ob3RSZXNldEVuZ2luZXMsIFJlc2V0RW5naW5lcyB9
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNvZGVjcygp
CiAgICAgcmV0dXJuIGNvZGVjczsKIH0KIAotc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSogYmVz
dE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsLCBN
ZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCitzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0b3J5KiBi
ZXN0TWVkaWFFbmdpbmVGb3JUeXBlQW5kQ29kZWNzKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3Qg
U3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCwg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQogewogICAgIGlmICh0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNTksNyArMzU5LDcgQEAgTWVkaWFQbGF5ZXI6On5NZWRp
YVBsYXllcigpCiAgICAgbV9tZWRpYVBsYXllckNsaWVudCA9IDA7CiB9CiAKLWJvb2wgTWVkaWFQ
bGF5ZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5
cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQorYm9vbCBNZWRpYVBsYXllcjo6bG9hZChjb25z
dCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcm
IGtleVN5c3RlbSkKIHsKICAgICBtX2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUo
KS5sb3dlcigpOwogICAgIG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0
ZXIoY29kZWNzKCkpOwpAQCAtMzk0LDcgKzM5NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0
CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotYm9vbCBNZWRpYVBsYXllcjo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZSkK
K2Jvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1l
ZGlhU291cmNlPiBtZWRpYVNvdXJjZSkKIHsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3Vy
Y2U7CiAgICAgbV9jb250ZW50TUlNRVR5cGUgPSAiIjsKQEAgLTc0MCw3ICs3NDAsNyBAQCBib29s
IE1lZGlhUGxheWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y29weVZpZGVvVGV4dHVy
ZVRvUGxhdGZvcm1UZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIGxldmVsLCB0eXBlLCBpbnRlcm5h
bEZvcm1hdCwgcHJlbXVsdGlwbHlBbHBoYSwgZmxpcFkpOwogfQogCi1NZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCogY2xpZW50KQogewogICAgIFN0cmluZyB0
eXBlID0gY29udGVudFR5cGUudHlwZSgpLmxvd2VyKCk7CiAgICAgLy8gVGhlIGNvZGVjcyBzdHJp
bmcgaXMgbm90IGxvd2VyLWNhc2VkIGJlY2F1c2UgTVA0IHZhbHVlcyBhcmUgY2FzZSBzZW5zaXRp
dmUKQEAgLTEwNTIsNyArMTA1Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmtleUVycm9yKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTWVkCiAgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5RXJyb3IodGhpcywga2V5U3lzdGVt
LCBzZXNzaW9uSWQsIGVycm9yQ29kZSwgc3lzdGVtQ29kZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5
ZXI6OmtleU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVu
Z3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0VVJMKQordm9pZCBNZWRpYVBsYXllcjo6a2V5TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVS
TCYgZGVmYXVsdFVSTCkKIHsKICAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKICAgICAgICAg
bV9tZWRpYVBsYXllckNsaWVudC0+bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKHRoaXMsIGtleVN5c3Rl
bSwgc2Vzc2lvbklkLCBtZXNzYWdlLCBtZXNzYWdlTGVuZ3RoLCBkZWZhdWx0VVJMKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDAyY2Nj
NTE5YmNjMzkzMGJlZmI2ZTk5ZGFlMmNjOThhN2RkODg0MDIuLmIzZDg4NDQ3Nzg1MWU4Yzg0MWNj
OWI0Y2RkZDgzODQ1ZGFiYWEwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkF1ZGlvVHJh
Y2tQcml2YXRlLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9U
cmFja1ByaXZhdGUuaCIKQEAgLTE5NCw3ICsxOTQsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBNZWRp
YUtleUVycm9yQ29kZSB7IFVua25vd25FcnJvciA9IDEsIENsaWVudEVycm9yLCBTZXJ2aWNlRXJy
b3IsIE91dHB1dEVycm9yLCBIYXJkd2FyZUNoYW5nZUVycm9yLCBEb21haW5FcnJvciB9OwogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3Ry
aW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlFcnJvcihNZWRpYVBsYXllciosIGNvbnN0
IFN0cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywg
TWVkaWFLZXlFcnJvckNvZGUsIHVuc2lnbmVkIHNob3J0IC8qIHN5c3RlbUNvZGUgKi8pIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25z
dCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8s
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VM
ZW5ndGggKi8sIGNvbnN0IEtVUkwmIC8qIGRlZmF1bHRVUkwgKi8pIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIC8q
IGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8sIGNvbnN0IHVuc2ln
bmVkIGNoYXIqIC8qIG1lc3NhZ2UgKi8sIHVuc2lnbmVkIC8qIG1lc3NhZ2VMZW5ndGggKi8sIGNv
bnN0IFVSTCYgLyogZGVmYXVsdFVSTCAqLykgeyB9CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxh
eWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8s
IGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovLCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBp
bml0RGF0YSAqLywgdW5zaWduZWQgLyogaW5pdERhdGFMZW5ndGggKi8pIHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIApAQCAtMjUzLDcgKzI1Myw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlh
IGVuZ2luZSBzdXBwb3J0LgogICAgIGVudW0gU3VwcG9ydHNUeXBlIHsgSXNOb3RTdXBwb3J0ZWQs
IElzU3VwcG9ydGVkLCBNYXlCZVN1cHBvcnRlZCB9OwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVD
bGllbnQqKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgQ29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJM
JiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mKTsKICAgICBzdGF0aWMgYm9vbCBp
c0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+Jik7CkBAIC0yODAsOSArMjgwLDkgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKTsKIAotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgY29uc3QgQ29udGVudFR5
cGUmLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYs
IGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4pOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4pOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2
b2lkIGtleUFkZGVkKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCk7CiAgICAgdm9pZCBrZXlFcnJvcihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwg
dW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSk7Ci0gICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQg
Y2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVs
dFVSTCk7CisgICAgdm9pZCBrZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWdu
ZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKTsKICAgICBib29sIGtleU5l
ZWRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCk7CiAj
ZW5kaWYKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHByaXZhdGU6CiAgICAgVGltZXI8TWVkaWFQbGF5
ZXI+IG1fcmVsb2FkVGltZXI7CiAgICAgT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhUGxheWVyRmFjdG9yeSogbV9jdXJyZW50TWVkaWFFbmdp
bmU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY29udGVu
dE1JTUVUeXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlQ29kZWNzOwogICAgIFN0cmluZyBt
X2tleVN5c3RlbTsKQEAgLTUyNiw5ICs1MjYsOSBAQCBwcml2YXRlOgogdHlwZWRlZiBQYXNzT3du
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXll
cikoTWVkaWFQbGF5ZXIqKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlw
ZXMpKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
IHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi10eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwm
IHVybCk7Cit0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKTsKICNlbHNlCi10eXBlZGVmIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYgdXJsKTsKK3R5
cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBl
KShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmIHVy
bCk7CiAjZW5kaWYKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2Fj
aGUpKFZlY3RvcjxTdHJpbmc+Jik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggODFmNWJhMDdmODhhZGNkOTViZDBiODQ5NjU4NmIwODcz
YzEyZmMxMi4uODc0MjQ4Nzg4OWUzMDEzMzI1ZjY0YjA3MTE1NTMzOTBjNjdiNmQ5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1
ZGUgIlNvZnRMaW5raW5nLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRleCBjYWNkZGUzYmQwZDJmMzI0
N2RjZTI5OGI2MjRmMmIzZGMzYWE4Y2UzLi5iOTVlOTA0OWY3ZGJjMGU3YTBhYjY0NzNhYTIxNWJl
NjEyNTg5MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNlbHNlCiAj
aW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YuaCIKICNlbmRpZgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKQEAg
LTgyOCw3ICs4MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcgogICAgIHN1cHBvcnRlZFR5
cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYp
CiB7CiAgICAgLy8gT25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2Rl
Y3MgcGFyYW1ldGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIGFzayBpZiBpdCBzdXBw
b3J0cyBhbgogICAgIC8vIGV4dGVuZGVkIE1JTUUgdHlwZSB1bnRpbCByZGFyOi8vODcyMTcxNSBp
cyBmaXhlZC4KQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlQXNz
ZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgQVNTRVJUKCFhdkFzc2V0KCkpOwog
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxSZWYgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsKS5jcmVhdGVDRlVSTCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsKS5jcmVhdGVDRlVSTCgpOwogCiAgICAgQVZDRlVSTEFzc2V0
UmVmIGFzc2V0UmVmID0gQVZDRlVSTEFzc2V0Q3JlYXRlV2l0aFVSTEFuZE9wdGlvbnMoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsUmVmLmdldCgpLCAwLCBtX25vdGlmaWNhdGlvblF1ZXVlKTsKICAg
ICBtX2F2QXNzZXQgPSBhZG9wdENGKGFzc2V0UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25DRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggZGM2MThk
MTRlNmFkNjQ0OGM2Mjc5NDU3MjU4MDIzMDI1ZTViYWJmMC4uODU4YzUyMWE0ZDI3Y2ZmNWJiN2Nk
OWRmM2MyYjMwMmU0ODM2MjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHJp
dmF0ZToKICAgICAvLyBFbmdpbmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGlj
IHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3Rh
dGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVk
aWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFp
bGFibGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKaW5kZXggYjVkMzk0OWVjOGFhMDhhN2Q5ODY1Mzg0YWFiM2U0OWMzYmIwNWI1My4uYWI0
OGQzZDhjMDM1N2NmNWQ0NjBkMGJiNjBlNjlmOWVmMzU2NmFjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUo
TWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBz
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwm
KTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElB
X1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9y
dHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYpOwog
I2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KaW5kZXggZmIwYzc4MDdjN2FhNTk4OWI2NTA4ZWRkZDA3ODJkZDBiMGQ0N2Y3Mi4uNGFi
MGQ3ZGU0MDgzZGUzYjk2NzMxM2RlYTlkOGMzNTM3NDVlNGNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0zNyw3ICszNyw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bXBvcnQgIkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0ICJJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5o
IgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zLmdldCgpIHNldE9iamVjdDpoZWFkZXJGaWVs
ZHMuZ2V0KCkgZm9yS2V5OkAiQVZVUkxBc3NldEhUVFBIZWFkZXJGaWVsZHNLZXkiXTsKICNlbmRp
ZgogCi0gICAgTlNVUkwgKmNvY29hVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7Cisg
ICAgTlNVUkwgKmNvY29hVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBtX2F2
QXNzZXQgPSBhZG9wdE5TKFtbQVZVUkxBc3NldCBhbGxvY10gaW5pdFdpdGhVUkw6Y29jb2FVUkwg
b3B0aW9uczpvcHRpb25zLmdldCgpXSk7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwOTAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgc3Vw
cAogICAgIHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOwogfSAKIAotTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRh
aW5zKHR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwpA
QCAtOTA1LDcgKzkwNSw3IEBAIHN0YXRpYyBib29sIGtleVN5c3RlbUlzU3VwcG9ydGVkKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRl
ZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpleHRlbmRlZFN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRnJvbTogPGh0
dHA6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12MC4xYi9lbmNyeXB0
ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjZG9tLWNhbnBsYXl0eXBlPgogICAgIC8vIElu
IGFkZGl0aW9uIHRvIHRoZSBzdGVwcyBpbiB0aGUgY3VycmVudCBzcGVjaWZpY2F0aW9uLCB0aGlz
IG1ldGhvZCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtMTExNyw3ICsxMTE3LDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX2F2QXNzZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZBc3Nl
dC5nZXQoKSkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tBVkFzc2V0UmVzb2x2ZWRVUkwobV9hdkFzc2V0
LmdldCgpKSkpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoYXNzZXRVUkwoKSk7CiAgICAgcmV0dXJu
IHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4uZ2V0
KCkpOwogfQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgTWVkaWFQbGF5ZXI6Ok1lZGlhS2V5RXhjZXB0
aW9uIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmUKIAog
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZlciA9IEFycmF5QnVmZmVyOjpj
cmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVxdWVzdC5nZXQoKSBsZW5ndGhd
KTsKICAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5UmVxdWVzdEFycmF5ID0gVWludDhBcnJheTo6
Y3JlYXRlKGtleVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7Ci0gICAgcGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtleVJl
cXVlc3RBcnJheS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgS1VSTCgp
KTsKKyAgICBwbGF5ZXIoKS0+a2V5TWVzc2FnZShrZXlTeXN0ZW0sIHNlc3Npb25JRCwga2V5UmVx
dWVzdEFycmF5LT5kYXRhKCksIGtleVJlcXVlc3RBcnJheS0+Ynl0ZUxlbmd0aCgpLCBVUkwoKSk7
CiAKICAgICAvLyBNb3ZlIG93bmVyc2hpcCBvZiB0aGUgQVZBc3NldFJlc291cmNlTG9hZGluZ1Jl
cXVlc3Rmcm9tIHRoZSBrZXlJRFRvUmVxdWVzdE1hcCB0byB0aGUgc2Vzc2lvbklEVG9SZXF1ZXN0
TWFwOgogICAgIG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwLnNldChzZXNzaW9uSUQsIGF2UmVxdWVz
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2Fk
ZXIubW0KaW5kZXggMjg3ZWU4MTIzY2RlNzhkNWI4Y2FmZWNiOTUwNmJjMmRhZDliZTUwNS4uNzU2
MjEwZjAxNGU3OTVlZGVkYTVkNzdkMzhhYjhlZjU1NDI2Mjk4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQpAQCAtNjYsNyArNjYs
NyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICBp
ZiAobV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0g
W1ttX2F2UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOworICAgIFVSTCByZXF1ZXN0VVJMID0g
W1ttX2F2UmVxdWVzdC5nZXQoKSByZXF1ZXN0XSBVUkxdOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNy
ZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNG
b3JUeXBlKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA2YTRj
ZDcwMGVmNDhlMzZiNTg5NzAwN2U0OTg4ODY4MzFhMzIxYTU1Li4zOTFmZmQ0ZmM5MmVjOTBmMGRl
MTI4MzFiODU4NjNlZDc4ODFhNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnku
Y3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29u
dGV4dEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9HcmFwaGljc0NvbnRleHRCbGFja0JlcnJ5LmNwcAppbmRleCBlMmYxYzQzMzNlMDg4
OGMwMDc0ZWVlMmFmYTc0ZmJhZWUyYzQ4NWQyLi44N2U2NjY5Yjk1MWQxYzFmMjllYjAzN2Q5MDkz
ODZjNjdjNTIzM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0QmxhY2tC
ZXJyeS5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIK
ICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgpAQCAtMzg3LDcgKzM4Nyw3IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwQm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludChJTlRfTUlOIC8g
MiwgSU5UX01JTiAvIDIpLCBJbnRTaXplKElOVF9NQVgsIElOVF9NQVgpKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3Qm
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3Qg
SW50UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0
ZUJsYWNrQmVycnkuY3BwCmluZGV4IGU0MWJlNmY5OWU2NDZhMTEzOWE5MzQwNWNmZDhjZjJjNzg4
MmZlNTguLjk2MDYxMGU5NTY4MjFhMmU4OWJhMWYxMTZkODhkNzA1N2UxNzllZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxXVEY6OlN0cmluZz4mIHR5cGVzKQogICAgICAgICB0eXBlcy5hZGQoKmkpOwogfQogCi1N
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZTo6c3VwcG9ydHNUeXBl
KGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmluZyYgY29kZWNzLCBjb25z
dCBLVVJMJiB1cmwpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0cmlu
ZyYgY29kZWNzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBib29sIGlzUlRTUCA9IHVybC5wcm90
b2NvbElzKCJydHNwIik7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYgdXJsKQogICAgIFdURjo6U3RyaW5nIG1vZGlm
aWVkVXJsKHVybCk7CiAKICAgICBpZiAobW9kaWZpZWRVcmwuc3RhcnRzV2l0aCgibG9jYWw6Ly8i
KSkgewotICAgICAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgbW9kaWZpZWRVcmwpOworICAg
ICAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgbW9kaWZpZWRVcmwpOwogICAgICAgICBrdXJsLnNl
dFByb3RvY29sKCJmaWxlIik7CiAgICAgICAgIFdURjo6U3RyaW5nIHRlbXBQYXRoKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKS0+YXBwbGljYXRpb25Mb2NhbERpcmVj
dG9yeSgpLmNfc3RyKCkpOwogICAgICAgICB0ZW1wUGF0aC5hcHBlbmQoa3VybC5wYXRoKCkpOwpA
QCAtMTU3LDggKzE1Nyw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2FkKGNvbnN0IFdU
Rjo6U3RyaW5nJiB1cmwpCiAgICAgLy8gYWxyZWFkeSBkb25lIGEgc2VjdXJpdHkgY2hlY2sgb24g
dGhlIGZpbGVzeXN0ZW06IFVSTCBhcyBwYXJ0IG9mIHRoZQogICAgIC8vIG1lZGlhIHJlc291cmNl
IHNlbGVjdGlvbiBhbGdvcml0aG0sIHdlIHNob3VsZCBiZSBPSyBoZXJlLgogICAgIGlmIChtb2Rp
ZmllZFVybC5zdGFydHNXaXRoKCJmaWxlc3lzdGVtOiIpKSB7Ci0gICAgICAgIEtVUkwga3VybCA9
IEtVUkwoS1VSTCgpLCBtb2RpZmllZFVybCk7Ci0gICAgICAgIEtVUkwgbWVkaWFVUkw7CisgICAg
ICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCBtb2RpZmllZFVybCk7CisgICAgICAgIFVSTCBtZWRp
YVVSTDsKICAgICAgICAgV1RGOjpTdHJpbmcgZnNQYXRoOwogICAgICAgICBGaWxlU3lzdGVtVHlw
ZSBmc1R5cGU7CiAgICAgICAgIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZTsKQEAgLTIwMSw3ICsy
MDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBXVEY6OlN0cmluZyYg
dXJsKQogCiAgICAgV1RGOjpTdHJpbmcgY29va2llUGFpcnM7CiAgICAgaWYgKCF1cmwuaXNFbXB0
eSgpKQotICAgICAgICBjb29raWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgICAgICBj
b29raWVQYWlycyA9IGNvb2tpZU1hbmFnZXIoKS5nZXRDb29raWUoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+bG9h
ZChwbGF5ZXJJRCwgbW9kaWZpZWRVcmwsIG1fd2ViQ29yZVBsYXllci0+dXNlckFnZW50KCksIGNv
b2tpZVBhaXJzKTsKIH0KIApAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlOjpvbkJ1ZmZlcmluZyhib29sIGZsYWcpCiAKIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgZ2Vu
ZXJhdGVQcm90ZWN0aW9uU3BhY2VGcm9tTU1SQXV0aENoYWxsZW5nZShjb25zdCBNTVJBdXRoQ2hh
bGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
V1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7CisgICAgVVJMIHVybChQ
YXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkp
OwogICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKIAogICAgIHJldHVybiBQcm90ZWN0aW9uU3Bh
Y2UodXJsLmhvc3QoKSwgdXJsLnBvcnQoKSwKQEAgLTczOSw3ICs3MzksNyBAQCBzdGF0aWMgUHJv
dGVjdGlvblNwYWNlIGdlbmVyYXRlUHJvdGVjdGlvblNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2Uo
Y29uc3QgTU1SQXV0aAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlv
bk5lZWRlZChNTVJBdXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxlbmdlKQogewotICAgIEtVUkwgdXJs
KFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigp
KSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVu
Z2UudXJsKCkuY19zdHIoKSkpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC03NTUsNyArNzU1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0
aGVudGljYXRpb25OZWVkZWQoTU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKICAgICAg
ICAgdGhpcywgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXll
ckhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQordm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5v
dGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogewogICAgIG1faXNBdXRoZW50aWNhdGlvbkNoYWxsZW5naW5nID0gZmFs
c2U7CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bm90aWZ5
Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUHJvdGVjdGlvbgogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlvbkFjY2VwdGVkKGNvbnN0IE1NUkF1
dGhDaGFsbGVuZ2UmIGF1dGhDaGFsbGVuZ2UpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwoUGFyc2Vk
VVJMU3RyaW5nLCBXVEY6OlN0cmluZyhhdXRoQ2hhbGxlbmdlLnVybCgpLmNfc3RyKCkpKTsKKyAg
ICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwo
KS5jX3N0cigpKSk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKaW5kZXgg
YjM0NjViYjExMTE5MzhkOTk4NWMzNjcwM2E5MDIxODkyMTJhYjQzNy4uNTQ3YjFkNTIwMDRlMzRm
NWNkODAyODdkOTFiMjBiMjRkN2M1OWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBs
YXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlh
UGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxX
VEY6OlN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IEtV
UkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUo
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAg
IHN0YXRpYyB2b2lkIG5vdGlmeUFwcEFjdGl2YXRlZEV2ZW50KGJvb2wpOwogICAgIHN0YXRpYyB2
b2lkIHNldENlcnRpZmljYXRlUGF0aChjb25zdCBXVEY6OlN0cmluZyYpOwogCkBAIC0xNTQsNyAr
MTU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkNyZWF0ZUhvbGVQdW5jaFJlY3Qo
KTsKICAgICB2aXJ0dWFsIHZvaWQgb25EZXN0cm95SG9sZVB1bmNoUmVjdCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdl
c3R1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggYzdlYTc2ZDVkNDQ3NjBhYzUwM2YyZDky
ZmRjNWVlNGRjYjUxZjhmNC4uODQ5MDc4OTcxNzhkODIwYTMzOTE3ZWQ3ZjZhOTIwMzM0NzM0NmQ1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNzU3LDcgKzc1Nyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0
cm9rZVN0eWxlKQogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFVSTEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA0NGJmMmQzZGE5Y2JhZGRkNWM5NmI4
OTUxZTNkYmMzZjliMGY1ZmRlLi5iMDgxNzVlMGI5MDg0YWYwYjE4ZTM2MDAxOTExY2QxZDY4NWI2
Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlICJTaGFkb3dCbHVyLmgiCkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB3
aWR0aCwgYm9vbAogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRBbnRpYWxpYXMocGxhdGZvcm1D
b250ZXh0KCksIHRydWUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVj
dChjb25zdCBLVVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCAxYjdjNTc5MjVkNTkwYzUwNjE2ZDRmNWQ1YTcwYzYzYjU2ZDhkN2JhLi4wMTA3MDIxMDI5ZTQ1
YTJjMWM0YmJkMDU5MDU4M2I5Nzc1ZGNhN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAi
R1N0cmVhbWVyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVn
aXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGt1cmwo
S1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsKFVSTCgpLCB1cmwpOwogICAgIFN0cmluZyBjbGVh
blVybCh1cmwpOwogCiAgICAgLy8gQ2xlYW4gb3V0IGV2ZXJ5dGhpbmcgYWZ0ZXIgZmlsZTovLyB1
cmwgcGF0aC4KQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogICAgIEFTU0VSVChtX3BsYXlCaW4pOwog
Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgY2xlYW5VcmwpOworICAgIG1fdXJsID0gVVJMKFVS
TCgpLCBjbGVhblVybCk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJpbi5nZXQoKSwgInVyaSIs
IGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCksIE5VTEwpOwogCiAgICAgSU5GT19NRURJQV9NRVNTQUdF
KCJMb2FkICVzIiwgY2xlYW5VcmwudXRmOCgpLmRhdGEoKSk7CkBAIC0xNDI4LDggKzE0MjgsOCBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAg
ICAgICAgIC8vIEZvdW5kIGEgY2FuZGlkYXRlLiBuZXctbG9jYXRpb24gaXMgbm90IGFsd2F5cyBh
biBhYnNvbHV0ZSB1cmwKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJh
c2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9m
IG5ldy1sb2NhdGlvbiB0byBpdC4KLSAgICAgICAgS1VSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192
YWxpZChuZXdMb2NhdGlvbikgPyBLVVJMKCkgOiBtX3VybDsKLSAgICAgICAgS1VSTCBuZXdVcmwg
PSBLVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3Rf
dXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7CisgICAgICAgIFVSTCBu
ZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwogCiAgICAgICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJs
KTsKICAgICAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KG5ld1VybCkpIHsKQEAg
LTE2NTMsNyArMTY1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpnZXRT
dXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKQogICAgIHR5cGVzID0gbWltZVR5
cGVDYWNoZSgpOwogfQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewogICAgIGlmICh0eXBlLmlzTnVs
bCgpIHx8IHR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IGQ3ZjZlZDY4ZDJkZDkxMjViOTM2NDRiY2UwMWJjOTVhY2RhMTkzZjcuLjI1YzljNTA2
YWUxYzJkMzk3ZTkyZjA2Yjg0NDNkYzFhMGY1Yzg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
KE1lZGlhUGxheWVyKik7CiAKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBw
b3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3Qg
S1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsK
IAogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKQEAgLTE4MCw3ICsxODAsNyBAQCBw
cml2YXRlOgogICAgIGd1aW50IG1fcmVhZHlUaW1lckhhbmRsZXI7CiAgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICBtdXRhYmxlIGxvbmcgbV90b3RhbEJ5dGVz
OwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXNQ
aXRjaDsKICAgICBHc3RTdGF0ZSBtX3JlcXVlc3RlZFN0YXRlOwogICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gbV9hdXRvQXVkaW9TaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAppbmRleCBmOGM3OTA0NWYzMWU4NTJhYzJkODdlMmFiOWMwODIzZjFhNjhmYzgy
Li43OTY0Mjk1MWRmZTYwNDk5YWRiMWRlMjljMGEzMzI1NTY5YWE2ZjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDk3LDcgKzQ5Nyw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIAogICAg
IEFTU0VSVCghcHJpdi0+Y2xpZW50KTsKIAotICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIHBy
aXYtPnVyaSk7CisgICAgVVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMo
dHJ1ZSk7CkBAIC02ODgsNyArNjg4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1Nl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpLCBHRXIKICAgICBp
ZiAoIXVyaSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCksIHVy
aSk7CisgICAgVVJMIHVybChVUkwoKSwgdXJpKTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8
fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBnX3NldF9lcnJvcihl
cnJvciwgR1NUX1VSSV9FUlJPUiwgR1NUX1VSSV9FUlJPUl9CQURfVVJJLCAiSW52YWxpZCBVUkkg
JyVzJyIsIHVyaSk7CkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1NldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyLCBjb25zdCBnY2hhciogdXJpKQogICAg
IGlmICghdXJpKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwg
dXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIEdTVF9FUlJPUl9P
QkpFQ1Qoc3JjLCAiSW52YWxpZCBVUkkgJyVzJyIsIHVyaSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCmluZGV4IDcyYjIyNTQwMWMwOGQ2YzlhODBkYzY4NWM2NmQ2NDJhMTI3OTNiNDcuLmYz
MGQxMTZkOWFmMWQ3MDQ0ZWIxZmE2ZGE3NzA1NzI3OTRmYTlhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oCkBAIC03NSw5ICs3NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gZW5naW5lIHN1
cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+
IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVz
KEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29k
ZWNzLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IFVSTCYpOwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpIHx8IEVOQUJMRShFTkNSWVBU
RURfTUVESUFfVjIpCi0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQ
bGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
VVJMJik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZl
Y3RvcjxTdHJpbmc+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZjcyMmJk
MGM2YWJmYTg4ZWFkY2Q1YmY5NjBkYmVhNTkxNWI2MTFjYy4uMGM4NGY4YTk4MjU5MWI3MzQ4ZTlm
MjBhNDY2MzUyMWQ1MGRiN2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MzUsNyArMzUsNyBAQAogI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJIb3N0V2luZG93
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTI2NSw3ICsyNjUsNyBAQCBOU011
dGFibGVEaWN0aW9uYXJ5ICpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y29tbW9uTW92aWVBdHRy
aWJ1dGVzKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZShj
b25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBLVVJMIGtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
OworICAgIFVSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBOU1VSTCAqY29jb2FV
UkwgPSBrVVJMOwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKm1vdmllQXR0cmlidXRlcyA9IGNv
bW1vbk1vdmllQXR0cmlidXRlcygpOyAgICAKICAgICBbbW92aWVBdHRyaWJ1dGVzIHNldFZhbHVl
OmNvY29hVVJMIGZvcktleTpRVE1vdmllVVJMQXR0cmlidXRlXTsKQEAgLTE0NjIsNyArMTQ2Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCiAgICAgY29uY2F0ZW5hdGVIYXNoU2V0cyhzdXBw
b3J0ZWRUeXBlcywgbWltZUNvbW1vblR5cGVzQ2FjaGUoKSk7CiB9CiAKLU1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKK01lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZShj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKQogewog
ICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29kZWNzIHBh
cmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQgaWYgaXQgc3VwcG9y
dHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUgeWV0LgpAQCAtMTQ4MCw3ICsxNDgwLDcg
QEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHkKIH0KIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpIHx8IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpleHRlbmRlZFN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3Rl
bSwgY29uc3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFFUS2l0IGRvZXMgbm90IHN1cHBvcnQgYW55IGVuY3J5dHBlZCBtZWRp
YSwgc28gcmV0dXJuIElzTm90U3VwcG9ydGVkIGlmIHRoZSBrZXlTeXN0ZW0gaXMgbm9uLU5VTEw6
CiAgICAgaWYgKCFrZXlTeXN0ZW0uaXNOdWxsKCkgfHwgIWtleVN5c3RlbS5pc0VtcHR5KCkpCkBA
IC0xNjMxLDcgKzE2MzEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpoYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgaWYgKCFtX3F0TW92aWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9xdE1v
dmllLmdldCgpKSkpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVzb2x2ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh3a1FUTW92aWVSZXNvbHZlZFVSTChtX3F0TW92
aWUuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXF1ZXN0ZWRPcmlnaW4g
PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhtX21vdmllVVJMKTsKICAgICByZXR1
cm4gcmVzb2x2ZWRPcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHJlcXVlc3RlZE9yaWdpbi5n
ZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggMTdkYzQxNDJjM2M2MjUzOWU3MzdhMzU3
ZjkzMWE5MzZlZTk3YjMxOC4uMWU2YmVkZTYxMWE0MGQ3NmM5ZTQ0NTU0Y2VlNWI2NjFhMzk3NjU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTUyMSw3ICsxNTIxLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldDNEVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0pCiB9CiAjZW5kaWYKIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3Qo
Y29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVS
TEZvclJlY3QoY29uc3QgVVJMJiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcAppbmRleCA3NWE2ZjNlZGY5NTc3NzM4NjUw
NjZlOGQ1NDYzZTZmZmEyZmI0ZGQzLi4yYzZlYjU0MWUzYzNkNjE0NTg5Mzg3YTY0Zjg0NTk3Yjg1
YjM3YjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9N
ZWRpYVBsYXllclByaXZhdGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUXQ6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiAm
c3VwcG9ydGVkKQogICAgIH0KIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29uc3QgU3Ry
aW5nJiBjb2RlYywgY29uc3QgS1VSTCYpCitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZVF0OjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiBtaW1lLCBjb25zdCBT
dHJpbmcmIGNvZGVjLCBjb25zdCBVUkwmKQogewogICAgIGlmICghbWltZS5zdGFydHNXaXRoKCJh
dWRpby8iKSAmJiAhbWltZS5zdGFydHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVF0Ojpjb21taXRMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgICAgICBt
X3dlYkNvcmVQbGF5ZXItPnJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogCi0gICAgS1VSTCBr
VXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga1VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CiAgICAgY29uc3QgUVVybCByVXJsID0ga1VybDsKICAgICBjb25zdCBRU3RyaW5nIHNj
aGVtZSA9IHJVcmwuc2NoZW1lKCkudG9Mb3dlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAppbmRl
eCA3ZTM4OGM0MDg2MGFhYTgzNTUxOTI4MTA0NTZjZGNmY2QwMDllYzRmLi4xM2U5MDBlMWZjM2Vi
MzVjMzEzNjM5MGUwZThiMjYwZWI5YjgyNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2lu
ZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGhhc1ZpZGVvKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dC5jcHAKaW5kZXggMGIzNTE4NGM4YWQxYjg1MjkxYWQ5MDJiMGE0Nzc0ZWIwNGI5NzE1
Zi4uOWRkMjVmMjQ5MjY5ZWFhZGQ3NjQzZmIyZDU2YTU0YmQ0ZGY5MDc0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1
aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApA
QCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZVRhc2tUaW1lci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJRVENGRGljdGlvbmFyeS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUg
IlNvZnRMaW5raW5nLmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8QXNzZXJ0TWFjcm9zLmg+CiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NHQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQ29udGV4dC5oPgpAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c2V0VXBDb29raWVzRm9yUXVpY2tUaW1lKGNvbnN0
IFN0CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+
c2V0dGluZ3MoKS5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwg
bW92aWVVUkwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwgbW92aWVVUkwgPSBVUkwoVVJM
KCksIHVybCk7CiAgICAgVmVjdG9yPENvb2tpZT4gZG9jdW1lbnRDb29raWVzOwogICAgIGlmICgh
Z2V0UmF3Q29va2llcyhmcmFtZS0+ZG9jdW1lbnQoKSwgbW92aWVVUkwsIGRvY3VtZW50Q29va2ll
cykpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMTUsNyArMTAxNSw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6aXNBdmFpbGFibGUoKQogI2VuZGlmCiB9
CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICAv
LyBvbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBwYXJhbWV0
ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBvcnRzIGFu
CiAgICAgLy8gIGV4dGVuZGVkIE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgKaW5kZXggNjYzMzRmMjQ0YzEzOGQyZWUw
NzhmNGI1NDExODI1ZmIyNzJiN2ZlMS4uMzljY2JhMGVkYzcwMmYzYzMwYTU4NDc1ZTI2NTYyYjk0
ZTRhMWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1l
VmlzdWFsQ29udGV4dC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBlbmdp
bmUgc3VwcG9ydAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5n
JiBjb2RlY3MsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVj
cywgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcApp
bmRleCA5MTFjM2FkNzQ0YzkyN2U2YmUwOWQwZWE2ODAxZTI3NjE3OTMyOGE0Li42ZTUxMjlmYmE0
ZWI3ZGM2NDExNzFlOTNhYzdiMTQyN2Q3ODIzNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2lu
Q0UuY3BwCkBAIC05ODEsNyArOTgxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBL
VVJMJiBsaW5rLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5D
RS5oCmluZGV4IDAwOWYwZDQzMTI2YzgyNzczNmViYjkxZjIyMDQwYTExNzQ4YjZhNTguLjQyZjY3
M2FiZmNjNjQyYTRjM2ZmMWU5YjY1OTlhM2JkYWI2NTI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQ
cml2YXRlV2luQ0UuaApAQCAtMTAwLDcgKzEwMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gZW5naW5lIHN1cHBvcnQKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAg
ICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAgICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwmKTsKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAgICAgICB2aXJ0dWFsIFN0cmluZyBlbmdpbmVE
ZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuICJXaW5DRSI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggNjZhZDY2Mjkx
YzZkMjExMjQ0Zjc4YTcyMmZiZTA5Y2FkMzY4NGIwYi4uZmVhN2YzZmI5NjBlOWNjMTZiYWExOWVi
ZThkZDlmZmRlOGY4YWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0FzeW5jRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTYyLDYzICs2Miw2MyBAQCBBc3luY0ZpbGVTeXN0
ZW1HdGs6On5Bc3luY0ZpbGVTeXN0ZW1HdGsoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNv
bnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjptb3ZlKGNvbnN0IFVS
TCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHkoY29uc3QgS1VSTCYgc291cmNl
UGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNvcHko
Y29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IEtV
UkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
Cit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlUmVjdXJzaXZl
bHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpyZW1vdmVSZWN1cnNpdmVseShj
b25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1HdGs6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJl
YWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBB
c3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRlRmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wg
ZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3Rr
OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmls
ZVN5c3RlbUd0azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmZpbGVF
eGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxlRXhpc3RzKGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6ZGly
ZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IEFzeW5jRmlsZVN5c3RlbUd0azo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0Zp
bGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZVdyaXRlcihBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3Rr
OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3Jl
YXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6Y3JlYXRl
U25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCmluZGV4IDM5
ZjU3MzcwODFjYTY4NGYwMTEzMjFjNzViYThkZmU1ZGE2NTVjNzEuLmRhYTZlMWU4NTI1ZDg3Njg3
NTEyNTRjNjFlMzk2ODlmODVlZGVlMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKQEAgLTM0LDE3ICszNCwxNyBAQCBwdWJsaWM6CiAg
ICAgQXN5bmNGaWxlU3lzdGVtR3RrKCk7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtR3Rr
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURp
cmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25z
dCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVj
dG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29u
c3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lk
IGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RhdGFPYmplY3RHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmpl
Y3RHdGsuY3BwCmluZGV4IDBiZDMwNGJhNjczMjQ0YWYwNzE4MjhjYzM3ZmFmMzY1OGM4NTViOTAu
LjE3OTAxMGRkNDFkZDlmMGI4ZjQwMzI3MmQ0NjY5NmQ3M2Y2MGFmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmlu
ZykKICAgICAgICAgaWYgKGxpbmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgS1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwg
PSBVUkwoVVJMKCksIGxpbmUpOwogICAgICAgICBpZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAg
ICAgICAgaWYgKCFzZXRVUkwpIHsKICAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKQEAgLTEw
NCw3ICsxMDQsNyBAQCB2b2lkIERhdGFPYmplY3RHdGs6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5n
JiB1cmlMaXN0U3RyaW5nKQogICAgIH0KIH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUkwo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQordm9pZCBEYXRhT2JqZWN0R3Rr
OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91
cmwgPSB1cmw7CiAgICAgbV91cmlMaXN0ID0gdXJsOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
RGF0YU9iamVjdEd0azo6Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKQogICAgIG1fdGV4dCA9ICIi
OwogICAgIG1fbWFya3VwID0gIiI7CiAgICAgbV91cmlMaXN0ID0gIiI7Ci0gICAgbV91cmwgPSBL
VVJMKCk7CisgICAgbV91cmwgPSBVUkwoKTsKICAgICBtX2ltYWdlID0gMDsKICAgICBtX3Jhbmdl
ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCmlu
ZGV4IDUyODFiMWUxNzhiZjk0N2RhMmMwODBkMzgzZWFhNTA2YjZhNjM5ODAuLmJjNTVjMmQzMGFj
MWQxZjBmZDZlYzQxNzA4ZDNhMDBmMTdkYWE0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RhdGFPYmplY3RHdGsuaApAQCAtMjAsNyArMjAsNyBAQAogI2RlZmluZSBEYXRhT2Jq
ZWN0R3RrX2gKIAogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0zNiwxMyArMzYsMTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFPYmplY3RHdGsoKSk7
CiAgICAgfQogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3Qg
U3RyaW5nJiB1cmlMaXN0KCkgY29uc3QgeyByZXR1cm4gbV91cmlMaXN0OyB9CiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZW5hbWVzOyB9
CiAgICAgR2RrUGl4YnVmKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
ICAgICB2b2lkIHNldFJhbmdlKFBhc3NSZWZQdHI8UmFuZ2U+IG5ld1JhbmdlKSB7IG1fcmFuZ2Ug
PSBuZXdSYW5nZTsgfQogICAgIHZvaWQgc2V0SW1hZ2UoR2RrUGl4YnVmKiBuZXdJbWFnZSkgeyBt
X2ltYWdlID0gbmV3SW1hZ2U7IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7CiAg
ICAgYm9vbCBoYXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAhbV90ZXh0LmlzRW1w
dHkoKTsgfQogICAgIGJvb2wgaGFzTWFya3VwKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZSB8fCAh
bV9tYXJrdXAuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBoYXNVUklMaXN0KCkgY29uc3QgeyByZXR1
cm4gIW1fdXJpTGlzdC5pc0VtcHR5KCk7IH0KQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRmlsZW5hbWVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5hbWVzLmlzRW1wdHko
KTsgfQogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlOyB9CiAgICAg
dm9pZCBjbGVhclVSSUxpc3QoKSB7IG1fdXJpTGlzdCA9ICIiOyB9Ci0gICAgdm9pZCBjbGVhclVS
TCgpIHsgbV91cmwgPSBLVVJMKCk7IH0KKyAgICB2b2lkIGNsZWFyVVJMKCkgeyBtX3VybCA9IFVS
TCgpOyB9CiAgICAgdm9pZCBjbGVhckltYWdlKCkgeyBtX2ltYWdlID0gMDsgfQogCiAgICAgU3Ry
aW5nIHRleHQoKSBjb25zdDsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBTdHJpbmcgbV90ZXh0OwogICAgIFN0cmluZyBtX21hcmt1cDsKLSAgICBLVVJMIG1fdXJsOwor
ICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV91cmlMaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fZmlsZW5hbWVzOwogICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBtX2ltYWdlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNzk3Yzc4YmYwNWZkY2Q2
NDVkYWRlZTljZGNlMjg0MDQyNzZjZGZmYi4uM2Y5ZGVhM2EyNzIxZTEzZGZiYWUxYWQ0NTE1MjM5
NTFlODJjMjg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdE
YXRhR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0cmluZyBEcmFnRGF0YTo6YXNVUkwoRnJhbWUqLCBGaWxl
bmFtZUNvbnZlcnNpb25Qb2xpY3kgZmlsZW5hbWVQb2xpY3ksIFN0cmluZyoKICAgICBpZiAoIW1f
cGxhdGZvcm1EcmFnRGF0YS0+aGFzVVJMKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAg
ICBpZiAoZmlsZW5hbWVQb2xpY3kgIT0gQ29udmVydEZpbGVuYW1lcykgewotICAgICAgICBLVVJM
IHVybChLVVJMKCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJsKCkpOworICAgICAgICBVUkwgdXJs
KFVSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsKICAgICAgICAgaWYgKHVybC5pc0xv
Y2FsRmlsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKaW5kZXggYmE0N2UyYWJiZmJiMjNmMjQx
NjM1MTA3ODZhYzY4Yjc3ZDA3NDljYy4uM2NmNmIwMDEzYWJmZWU1MjAwODU5YWYzYzI5NzYzYjQ4
ZjcxMWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5jcHAKQEAg
LTk1LDIxICs5NSwyMSBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgUHJpbnRDb250
ZXh0KiBwcmludENvbnRleHQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZQogewogICAgIERvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBy
aW50LCBQcmludEVycm9yR2VuZXJhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVu
dExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVy
LT51cmwoKSA6IFVSTCgpLCBlcnJvck1lc3NhZ2UpOwogfQogCiBSZXNvdXJjZUVycm9yIHByaW50
ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQogewogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvY3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgp
LCBfKCJQcmludGVyIG5vdCBmb3VuZCIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJQcmludGVyIG5v
dCBmb3VuZCIpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChj
b25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJp
bnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRv
Y3VtZW50TG9hZGVyLT51cmwoKSA6IFVSTCgpLCBfKCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBhY2E1MTMyM2VkZmYxNDdmZDhjM2E3ZmIxYmZhMDI3
Yjg3YzY2MjI2Li5jMzkyZTA1N2Y5NzJjMGJkOTI4ZWI2OTU4OGE3MjRjZjI4OWEyOTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0zMSw3
ICszMSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bWFnZS5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAg
ICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhtX2d0a0NsaXBib2FyZCk7CiB9CiAKLXN0YXRpYyBLVVJMIGdldFVSTEZv
ckltYWdlTm9kZShOb2RlKiBub2RlKQorc3RhdGljIFVSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9k
ZSogbm9kZSkKIHsKICAgICAvLyBGSVhNRTogTGF0ZXIgdGhpcyBjb2RlIHNob3VsZCBiZSBzaGFy
ZWQgd2l0aCBDaHJvbWl1bSBzb21laG93LiBDaGFuY2VzIGFyZSBhbGwgcGxhdGZvcm1zIHdhbnQg
aXQuCiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKQEAgLTIwMSwxMCArMjAxLDEwIEBAIHN0
YXRpYyBLVVJMIGdldFVSTEZvckltYWdlTm9kZShOb2RlKiBub2RlKQogICAgICAgICBFbGVtZW50
KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50
LT5pbWFnZVNvdXJjZVVSTCgpOwogICAgIH0KLSAgICByZXR1cm4gdXJsU3RyaW5nLmlzRW1wdHko
KSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOworICAgIHJldHVybiB1cmxTdHJpbmcuaXNF
bXB0eSgpID8gVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC0yMjAsNyArMjIw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogCiAgICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbCgpOwog
Ci0gICAgS1VSTCB1cmwgPSBnZXRVUkxGb3JJbWFnZU5vZGUobm9kZSk7CisgICAgVVJMIHVybCA9
IGdldFVSTEZvckltYWdlTm9kZShub2RlKTsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgbV9kYXRhT2JqZWN0LT5zZXRVUkwodXJsLCB0aXRsZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKaW5kZXggZTM0YzFi
YmUxZDViNmE2NzQ0NzM1YWMxODhiNTk1M2VlNzJlODg0My4uYTBiZjg4ZTQzZGFiYjAyNGEyNTA1
YTdlYTY4ZmMyYjM1ZDg4Mzg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlT
aXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotU3RyaW5n
IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQogewogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
aW5kZXggZDExNWQ2MTFhNmY4MzJiYTliNmY5Y2YwMGNhYjc0ZWY3YWUzMmI5YS4uNzBhZjE3NzZi
ZjZmNjRkNjg3ZDYyYzU0MmEzZWJjMDdmOGRkYTIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTM4LDcgKzM4LDcgQEAKICNpbXBvcnQgIkhU
TUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTGVn
YWN5V2ViQXJjaGl2ZS5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFzdGVib2FyZFN0
cmF0ZWd5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQppbmRleCA5OGNiY2NkMjhlODc1NTQ3NTk4ZTExOGU5MTUyOGQ1YWM0
N2FhMmUxLi44NWU5NTlmYmQ0MzAxNjA0YmVkMGI2Mjc2N2RhYzIyZTZjNmVmYjVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb2xv
ci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJJbWFnZS5o
IgogI2ltcG9ydCAiUGxhdGZvcm1QYXN0ZWJvYXJkLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5o
IgpAQCAtOTksOSArOTksOSBAQCBDb2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKICAg
ICByZXR1cm4gQ29sb3IoKTsKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OnVybCgpCitV
UkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewotICAgIHJldHVybiBLVVJMKCk7CisgICAg
cmV0dXJuIFVSTCgpOwogfQogCiBsb25nIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29weShjb25zdCBT
dHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5k
ZXggMTQ5M2FlNjM4OTY0NDBjNzM2NjA2ZTA3N2RiNmIxNzI0NmNlZDdiNC4uMmUwNWM5ZjUxZjU0
OTk3MmJjYTdhMTUxMzc0YzBlMWJhNWJlYzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJGb250U2Vs
ZWN0b3IuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dC5oIgogI2ltcG9ydCAiSW1hZ2UuaCIK
LSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2ltcG9ydCAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW1wb3J0ICJUZXh0UnVuLmgi
CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0RvdWJsZWRBdFBvaW50KE5TU3Ry
aW5nICpzdHJpbmcsIE5TUG9pbnQgdGV4dFBvaW50LCBOU0NvbG9yICp0b3AKICAgICAgICAgZHJh
d0F0UG9pbnQoc3RyaW5nLCB0ZXh0UG9pbnQsIGZvbnQsIHRvcENvbG9yKTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBGb250UmVuZGVyaW5nTW9kZSkKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBGb250UmVuZGVyaW5nTW9kZSkKIHsK
ICAgICBOU1N0cmluZyAqbGFiZWwgPSBuc1N0cmluZ05pbElmRW1wdHkodGl0bGUpOwogICAgIE5T
VVJMICpjb2NvYVVSTCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9LVVJMTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyMzc1YzdhMzRhMDkzMThmMTZlZmRjYWQ2
MjczNzVlZGE1OTA4ZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KKysrIC9kZXYvbnVs
bApAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0j
aW1wb3J0ICJLVVJMLmgiCi0KLSNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCi0jaW1wb3J0IDx3dGYv
T2JqY1J1bnRpbWVFeHRyYXMuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1LVVJMOjpLVVJMKE5TVVJMICp1cmwpCi17Ci0gICAgaWYgKCF1
cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAgICBD
U3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxS
ZWY+KHVybCksIHVybEJ5dGVzKTsKLSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwotfQotCi1L
VVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKLXsKLSAgICAvLyBDcmVhdGluZyBhIHRvbGwt
ZnJlZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2Vy
dmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KLSAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4g
cm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gQ0ZCcmlkZ2lu
Z1JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwotfQotCi1SZXRhaW5QdHI8Q0ZVUkxS
ZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKLXsKLSAgICBpZiAoaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICAvLyBXZSB1c2Ug
dGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQgQ0ZVUkwgdG8gY3JlYXRlIGEg
Q0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxsIHZhbHVlcy4KLSAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0TlMoW1tOU1VSTCBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCkpOwotICAgIH0KLQotICAgIFVSTENoYXJCdWZmZXIg
YnVmZmVyOwotICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOwotICAgIHJldHVybiBjcmVhdGVDRlVS
TEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci19Ci0KLQotCi19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGU3YWQ2
YTFhODg5NTQyMDA1NjEyZDZiYmRjNmMyOTYwYTExMTg0OWEuLmYzMWY0MjYzNzNkMzQxYmI4ZjRh
MGI3MGFkY2EzYWRjN2E5N2YwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJodG1sZWRpdGluZy5o
IgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJJbWFnZS5oIgotI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJMZWdhY3lXZWJBcmNoaXZlLmgiCiAjaW1w
b3J0ICJMb2FkZXJOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgpA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyKQogICAgIH0KIAogICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJp
bmcoTlNVUkxQYm9hcmRUeXBlKSkpIHsKLSAgICAgICAgS1VSTCB1cmwgPSBzdHJhdGVneS51cmwo
bV9wYXN0ZWJvYXJkTmFtZSk7CisgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS51cmwobV9wYXN0
ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5
cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAo
IXVybC5pc051bGwoKSAmJiByZWFkZXIucmVhZFVSTCh1cmwsIHRpdGxlKSkKICAgICAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVBhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1Q
YXN0ZWJvYXJkTWFjLm1tCmluZGV4IDQwYjQxZTg4MGVmNGE1NDk1MGU1MWZhNjNjMGM3MmEyZTFk
ZGVhZjkuLjAzODc5MGJhOWExNTdlMWI1YzRmNmMxYjZmMWUxNTBlY2Y5ZmYzOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtUGFzdGVib2FyZE1hYy5t
bQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbG9y
LmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
UGFzdGVib2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NCw3ICs5NCw3IEBAIENv
bG9yIFBsYXRmb3JtUGFzdGVib2FyZDo6Y29sb3IoKQogICAgICAgICAgICAgICAgICAgICAoaW50
KShbY29sb3IgYmx1ZUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSksIChpbnQpKFtjb2xvciBhbHBo
YUNvbXBvbmVudF0gKiAyNTUuMCArIDAuNSkpOyAgICAKIH0KIAotS1VSTCBQbGF0Zm9ybVBhc3Rl
Ym9hcmQ6OnVybCgpCitVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQogewogICAgIHJldHVy
biBbTlNVUkwgVVJMRnJvbVBhc3RlYm9hcmQ6bV9wYXN0ZWJvYXJkLmdldCgpXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5k
ZXggZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4ZjVhYmY0ZjNkZC4uZGU4YjFiNDVkZWQ4
MmE4YWRhYzgwZDE2YmE3NDdlMjFiZmY5ZmYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhW
ZWN0b3I8U3RyaW5nPiYgc3VwcG9ydGVkS2V5U2l6ZXMpCiAgICAgc3VwcG9ydGVkS2V5U2l6ZXMu
YXBwZW5kKGtleWdlbk1lbnVJdGVtNTEyKCkpOwogfQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
YWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpCiB7ICAgCiAgICAgLy8gVGhpcyBzd2l0Y2gg
c3RhdGVtZW50IG11c3QgYWx3YXlzIGJlIHN5bmNlZCB3aXRoIHRoZSBVSSBzdHJpbmdzIHJldHVy
bmVkIGJ5IGdldFN1cHBvcnRlZEtleVNpemVzLgogICAgIFVJbnQzMiBrZXlTaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEyZGY1YjJiMmRhNzA4ZjA0
NzMxNGM2YjE3NDczMzkyYmU3MzMzNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9VUkxNYWMubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVVJMLmgiCisKKyNpbXBvcnQgIkNGVVJMRXh0
cmFzLmgiCisjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVUkw6OlVSTChOU1VSTCAq
dXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJh
c2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAgICBnZXRVUkxCeXRlcyhyZWlu
dGVycHJldF9jYXN0PENGVVJMUmVmPih1cmwpLCB1cmxCeXRlcyk7CisgICAgcGFyc2UodXJsQnl0
ZXMuZGF0YSgpKTsKK30KKworVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29uc3QKK3sKKyAgICAv
LyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlkZ2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VS
TCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9yaWdpbmFsIHN0cmluZy4KKyAgICAvLyBXZSdsbCBu
ZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJpcHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KKyAg
ICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOworfQor
CitSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAoreworICAgIGlm
IChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIFdlIHVzZSB0aGUgdG9sbC1mcmVlIGJyaWRnZSBiZXR3ZWVuIE5TVVJMIGFuZCBD
RlVSTCB0byBjcmVhdGUgYSBDRlVSTFJlZiBzdXBwb3J0aW5nIGJvdGggZW1wdHkgYW5kIG51bGwg
dmFsdWVzLgorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlVSTFJlZj4oYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdKS5nZXQoKSk7CisgICAgfQorCisg
ICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7CisgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAg
cmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKK30KKworCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaAppbmRleCA5ZThhZGI0ODRlM2UyYjcxMWI2Y2JmZDBk
YzE5YTliNDdjYTE4ZDljLi4yM2FkYjFlNDZiMDk0MmQ5MjQzNWNiYTliYjU2ZWE2YzdmMThmYTQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
Q29uZmlndXJhdGlvbi5oCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RS
RUFNKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00MywyNSArNDMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSVENJY2VTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENJY2VTZXJ2ZXI+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENJY2VTZXJ2ZXI+IGNyZWF0ZShjb25zdCBL
VVJMJiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiB1c2VybmFt
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENJY2VTZXJ2ZXI+IGNyZWF0ZShjb25zdCBVUkwm
IHVyaSwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENJY2VTZXJ2ZXIodXJpLCBjcmVk
ZW50aWFsLCB1c2VybmFtZSkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5SVENJY2VTZXJ2ZXIoKSB7
IH0KIAotICAgIGNvbnN0IEtVUkwmIHVyaSgpIHsgcmV0dXJuIG1fdXJpOyB9CisgICAgY29uc3Qg
VVJMJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQogICAgIGNvbnN0IFN0cmluZyYgY3JlZGVudGlh
bCgpIHsgcmV0dXJuIG1fY3JlZGVudGlhbDsgfQogICAgIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUo
KSB7IHJldHVybiBtX3VzZXJuYW1lOyB9CiAKIHByaXZhdGU6Ci0gICAgUlRDSWNlU2VydmVyKGNv
bnN0IEtVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVz
ZXJuYW1lKQorICAgIFJUQ0ljZVNlcnZlcihjb25zdCBVUkwmIHVyaSwgY29uc3QgU3RyaW5nJiBj
cmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQogICAgICAgICA6IG1fdXJpKHVyaSkK
ICAgICAgICAgLCBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKICAgICAgICAgLCBtX3VzZXJuYW1l
KHVzZXJuYW1lKQogICAgIHsKICAgICB9CiAKLSAgICBLVVJMIG1fdXJpOworICAgIFVSTCBtX3Vy
aTsKICAgICBTdHJpbmcgbV9jcmVkZW50aWFsOwogICAgIFN0cmluZyBtX3VzZXJuYW1lOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAKaW5kZXggZGQ0
OTZjYThiZWZhNTUzMWRhNzY2YTRhMzZhNjdkYWMzOGI1ZGRmZC4uYmYwMTY2ZmRjNjNjN2VhMzQx
ZWRiZGQ0NzcxNmQ3ODljMTYxODJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YS5jcHAKQEAgLTk0LDEzICs5NCwxMyBAQCB2b2lkIEJsb2JEYXRhOjphcHBl
bmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxl
bmd0aAogICAgIG1faXRlbXMuYXBwZW5kKEJsb2JEYXRhSXRlbShwYXRoLCBvZmZzZXQsIGxlbmd0
aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CiAKLXZvaWQgQmxvYkRhdGE6OmFwcGVu
ZEJsb2IoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KQordm9pZCBCbG9iRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9m
ZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0
ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCkpOwogfQogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
dm9pZCBCbG9iRGF0YTo6YXBwZW5kVVJMKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNl
dCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3Zv
aWQgQmxvYkRhdGE6OmFwcGVuZFVSTChjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwg
bG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAg
ICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0odXJsLCBvZmZzZXQsIGxlbmd0aCwgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JEYXRhLmgKaW5kZXggZmQ5NGY1OTkxZTI2OGFlN2YyMzE5ZDhlM2IwNDIzYzBiOWU2Njc3
NC4uZjYwNTQ4MWRhMWVkMTg1M2UzMTIyZGM2OWI0Y2Q3MmVmYzdiZTI2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaApAQCAtMzIsNyArMzIsNyBAQAogI2Rl
ZmluZSBCbG9iRGF0YV9oCiAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KQEAgLTEwMiw3ICsxMDIsNyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsKICAgICB9CiAKICAg
ICAvLyBDb25zdHJ1Y3RvciBmb3IgQmxvYiB0eXBlLgotICAgIEJsb2JEYXRhSXRlbShjb25zdCBL
VVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCisgICAgQmxvYkRh
dGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KQogICAgICAgICA6IHR5cGUoQmxvYikKICAgICAgICAgLCB1cmwodXJsKQogICAgICAgICAsIG9m
ZnNldChvZmZzZXQpCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgLy8gQ29uc3RydWN0b3IgZm9yIFVSTCB0eXBl
IChlLmcuIEZpbGVTeXN0ZW0gZmlsZXMpLgotICAgIEJsb2JEYXRhSXRlbShjb25zdCBLVVJMJiB1
cmwsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpCisgICAgQmxvYkRhdGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxv
bmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKQogICAgICAgICA6IHR5cGUoVVJMKQogICAgICAgICAsIHVybCh1cmwpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdHJ1Y3QgQmxvYkRhdGFJdGVtIHsK
ICAgICBTdHJpbmcgcGF0aDsKIAogICAgIC8vIEZvciBCbG9iIG9yIFVSTCB0eXBlLgotICAgIEtV
UkwgdXJsOworICAgIFVSTCB1cmw7CiAKICAgICBsb25nIGxvbmcgb2Zmc2V0OwogICAgIGxvbmcg
bG9uZyBsZW5ndGg7CkBAIC0xODQsOSArMTg0LDkgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5k
RGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+LCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKTsKICAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lk
IGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxv
bmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKLSAgICB2b2lkIGFw
cGVuZEJsb2IoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgp
OworICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25n
IGxvbmcgbGVuZ3RoKTsKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgdm9pZCBhcHBlbmRV
UkwoY29uc3QgS1VSTCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IFVS
TCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUpOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0yMTcsNyArMjE3LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIEJsb2JEYXRhSGFuZGxlKFBhc3NPd25QdHI8QmxvYkRh
dGE+LCBsb25nIGxvbmcgc2l6ZSk7Ci0gICAgS1VSTCBtX2ludGVybmFsVVJMOworICAgIFVSTCBt
X2ludGVybmFsVVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKaW5kZXggZTc4YmUyMzJkODJi
YTI2OWFkYjRiMTg1MjgxZDdiYjE1YzhjODE1Zi4uZGIxYzU0NjYxNDAwZDBhMjkzZjI5ODA2YjNk
NDVhYmUwNTAyZTc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZWdpc3RyeS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2JEYXRhOwogY2xhc3MgQmxvYlN0b3JhZ2VEYXRhOwogY2xhc3MgQmxvYlJlZ2lzdHJ5Owot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogQmxvYlJlZ2lzdHJ5JiBibG9iUmVnaXN0cnkoKTsK
IApAQCAtNDYsMTIgKzQ2LDEyIEBAIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7CiBjbGFz
cyBCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJl
ZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEJsb2JEYXRhPikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgUGFzc093blB0cjxCbG9i
RGF0YT4pID0gMDsKICAgICAKICAgICAvLyBSZWdpc3RlcnMgYSBuZXcgYmxvYiBVUkwgcmVmZXJy
aW5nIHRvIHRoZSBibG9iIGRhdGEgaWRlbnRpZmllZCBieSB0aGUgc3BlY2lmaWVkIHNyY1VSTC4K
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiBzcmNVUkwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgc3JjVVJMKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkwoY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5
SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDBiYjY1YWJmMWI0
YWRiYTM2Yzk3MzUxMGRkMjE5YTY4YWM4NTNlNTguLjgzYzE5MTNmNTQwYzBhMjBhZjEzNTJjMmZh
OThhODA4ZDljNjdlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3Jh
Z2VEYXRhLCBjb25zCiAgICAgfQogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQor
dm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFBh
c3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvCiAgICAgbV9ibG9icy5zZXQodXJs
LnN0cmluZygpLCBibG9iU3RvcmFnZURhdGEpOwogfQogCi12b2lkIEJsb2JSZWdpc3RyeUltcGw6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3Zv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHJlZ2lz
dGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKQEAgLTE3NywxMyArMTc3LDEzIEBA
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgS1VSTCYgc3JjVVJMKQogICAgIG1fYmxvYnMuc2V0KHVybC5zdHJpbmcoKSwgc3JjKTsK
IH0KIAotdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9ibG9icy5yZW1v
dmUodXJsLnN0cmluZygpKTsKIH0KIAotQmxvYlN0b3JhZ2VEYXRhKiBCbG9iUmVnaXN0cnlJbXBs
OjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorQmxvYlN0b3JhZ2VE
YXRhKiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJiB1cmwp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICByZXR1cm4gbV9ibG9i
cy5nZXQodXJsLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKaW5kZXggYjM0ZGM3NmYwYTU4ZDY1ODJiMDcxMjE4ZGY4
NzBlNzJhYmZhZTM3Yi4uZTBjMzJiZTMzOGE3N2Q3MGQ4MTJjOTMyYzQ0NjI0OWQ0MGIxMTM4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZUNsaWVudDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKQEAgLTUwLDcgKzUwLDcgQEAgY2xh
c3MgQmxvYlJlZ2lzdHJ5SW1wbCA6IHB1YmxpYyBCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkJsb2JSZWdpc3RyeUltcGwoKTsKIAotICAgIEJsb2JTdG9yYWdlRGF0YSogZ2V0
QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBCbG9iU3RvcmFnZURhdGEq
IGdldEJsb2JEYXRhRnJvbVVSTChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8
UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CiAKQEAgLTU4LDkgKzU4LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqLCBjb25zdCBCbG9i
RGF0YUl0ZW1MaXN0Jik7CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VE
YXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9u
ZyBsZW5ndGgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJM
JiwgUGFzc093blB0cjxCbG9iRGF0YT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckJsb2JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHNyY1VSTCkgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8
QmxvYkRhdGE+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiA+IG1fYmxvYnM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5jcHAKaW5kZXggZGI3NWZiZDIxNWY0MDQ3YWQ1ZGY0ZTRiZTEwZThhOTdhY2Y1YzQ1NC4u
Mzc2OTY0MTJkMWEyNWYwZWUzZTI3ODk5ZTA0YzMxMmY2ODc3ZmYzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApA
QCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKICNpbmNsdWRlICJGaWxl
U3lzdGVtLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCmluZGV4IDU4OGZmNWIyZWMwZjI5ZDIzZTQ2NzI0YzU4YzU0NTViOTI1MGQzYTguLjk1OTU3
MjQ4N2U5OTkzOTFmZTVjMGEzYTczZDdkZjU1ZjI2Yzg5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKIAogI2luY2x1ZGUgIkNy
ZWRlbnRpYWwuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUHJvdGVjdGlvblNwYWNlSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTYxLDcgKzYxLDcgQEAgc3Rh
dGljIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAmIHBhdGhUb0RlZmF1bHRQcm90ZWN0
aW9uU3BhY2VNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXN0YXRpYyBTdHJpbmcgb3JpZ2lu
U3RyaW5nRnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIG9yaWdpblN0cmlu
Z0Zyb21VUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5wb3J0KCkpCiAgICAgICAg
IHJldHVybiB1cmwucHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArICc6JyArIFN0cmlu
Zzo6bnVtYmVyKHVybC5wb3J0KCkpICsgJy8nOwpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgU3Ry
aW5nIG9yaWdpblN0cmluZ0Zyb21VUkwoY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiB1cmwu
cHJvdG9jb2woKSArICI6Ly8iICsgdXJsLmhvc3QoKSArICcvJzsKIH0KIAotc3RhdGljIFN0cmlu
ZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBT
dHJpbmcgcHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQodXJsLmlzVmFsaWQoKSk7CiAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIFN0cmlu
ZyBwcm90ZWN0aW9uU3BhY2VNYXBLZXlGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1
cm4gZGlyZWN0b3J5VVJMOwogfQogCi12b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29uc3Qg
Q3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9u
U3BhY2UsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKHByb3RlY3Rpb25TcGFjZS5p
c1Byb3h5KCkgfHwgdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAgICAgQVNTRVJUKHBy
b3RlY3Rpb25TcGFjZS5pc1Byb3h5KCkgfHwgdXJsLmlzVmFsaWQoKSk7CkBAIC0xMTQsNyArMTE0
LDcgQEAgdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgcHJvdGVjdGlvblNwYWNlKQogICAgIHByb3RlY3Rpb25TcGFjZVRvQ3JlZGVudGlhbE1hcCgp
LnJlbW92ZShwcm90ZWN0aW9uU3BhY2UpOwogfQogCi1zdGF0aWMgUGF0aFRvRGVmYXVsdFByb3Rl
Y3Rpb25TcGFjZU1hcDo6aXRlcmF0b3IgZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwo
Y29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXA6
Oml0ZXJhdG9yIGZpbmREZWZhdWx0UHJvdGVjdGlvblNwYWNlRm9yVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKICAgICBBU1NF
UlQodXJsLmlzVmFsaWQoKSk7CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIFBhdGhUb0RlZmF1
bHRQcm90ZWN0aW9uU3BhY2VNYXA6Oml0ZXJhdG9yIGZpbmREZWZhdWx0UHJvdGVjdGlvblNwYWNl
Rm9yVVIKICAgICB9CiB9CiAKLWJvb2wgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsLCBjb25zdCBLVVJMJiB1cmwpCitib29sIENyZWRlbnRpYWxTdG9y
YWdlOjpzZXQoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVCh1
cmwuaXNWYWxpZCgpKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCBib29sIENyZWRlbnRpYWxTdG9yYWdl
OjpzZXQoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgS1VSTCYgdXJsKQogICAg
IHJldHVybiB0cnVlOwogfQogCi1DcmVkZW50aWFsIENyZWRlbnRpYWxTdG9yYWdlOjpnZXQoY29u
c3QgS1VSTCYgdXJsKQorQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNvbnN0IFVS
TCYgdXJsKQogewogICAgIFBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXA6Oml0ZXJhdG9y
IGl0ZXIgPSBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTCh1cmwpOwogICAgIGlmIChp
dGVyID09IHBhdGhUb0RlZmF1bHRQcm90ZWN0aW9uU3BhY2VNYXAoKS5lbmQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaAppbmRl
eCA0OWFmNDUyNTE5OTA3ZWU2YzgxYjE3ZWFmZmFmZDZiN2M2YjM5Y2VkLi5iM2JkMWZkNzgzOTJh
MjY3ZTMwOWZmY2NjZjQ3YTIxYWUwNmU4OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCkBAIC0yOSwxMyArMjksMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGNsYXNzIENyZWRlbnRpYWxTdG9y
YWdlIHsKIHB1YmxpYzoKICAgICAvLyBXZWJDb3JlIHNlc3Npb24gY3JlZGVudGlhbCBzdG9yYWdl
LgotICAgIHN0YXRpYyB2b2lkIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgUHJvdGVjdGlv
blNwYWNlJiwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyB2b2lkIHNldChjb25zdCBDcmVkZW50
aWFsJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGljIENy
ZWRlbnRpYWwgZ2V0KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKIApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHdvcmsgZm9yIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMg
dGhhdCBzdXBwb3J0IHNlbmRpbmcgY3JlZGVudGlhbHMgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJl
cXVlc3QuIEUuZy4sIGZvciBIVFRQIEJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZQogICAgIC8v
IGEgY2xpZW50IHNob3VsZCBhc3N1bWUgdGhhdCBhbGwgcGF0aHMgYXQgb3IgZGVlcGVyIHRoYW4g
dGhlIGRlcHRoIG9mIGEga25vd24gcHJvdGVjdGVkIHJlc291cmNlIHNoYXJlIGFyZSB3aXRoaW4g
dGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZS4KLSAgICBzdGF0aWMgYm9vbCBzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYsIGNvbnN0IEtVUkwmKTsgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBVUkwgY29ycmVz
cG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNlLCBzbyBjcmVkZW50aWFscyBjb3VsZCBi
ZSB1cGRhdGVkLgotICAgIHN0YXRpYyBDcmVkZW50aWFsIGdldChjb25zdCBLVVJMJik7CisgICAg
c3RhdGljIGJvb2wgc2V0KGNvbnN0IENyZWRlbnRpYWwmLCBjb25zdCBVUkwmKTsgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBVUkwgY29ycmVzcG9uZHMgdG8gYSBrbm93biBwcm90ZWN0aW9uIHNwYWNl
LCBzbyBjcmVkZW50aWFscyBjb3VsZCBiZSB1cGRhdGVkLgorICAgIHN0YXRpYyBDcmVkZW50aWFs
IGdldChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVNb2RlKGJvb2wp
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggNDliZGNhMTBkMTQwYzVjMjFlZDM4NmNlMWQ0MDdjMWUxZGI5ZDk1Mi4uYTUxMzIxZTMzYjcy
OWVjZDBkY2E1N2JlMjhkNzc1Yzk2YzYzYWVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTE3OCwxOCArMTc4LDE4IEBAIHZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uCiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVu
YW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIHNob3VsZEdlbmVy
YXRlRmlsZSkpOwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJs
b2JVUkwpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNvbnN0IFVSTCYgYmxvYlVSTCkKIHsK
ICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoYmxvYlVSTCkpOwogfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotdm9pZCBGb3JtRGF0YTo6YXBwZW5kVVJMKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQodXJsLCAwLCBCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlLCBpbnZhbGlkRmlsZVRpbWUoKSkpOwogfQogCi12b2lkIEZvcm1E
YXRhOjphcHBlbmRVUkxSYW5nZShjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKK3ZvaWQgRm9y
bURhdGE6OmFwcGVuZFVSTFJhbmdlKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAg
bV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwgc3RhcnQsIGxlbmd0aCwgZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKSk7CiB9CkBAIC0zMjYsMTMgKzMyNiwxMyBAQCBTdHJpbmcg
Rm9ybURhdGE6OmZsYXR0ZW5Ub1N0cmluZygpIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoQkxPQikK
LXN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9ybURhdGEsIGNvbnN0
IEtVUkwmIHVybCkKK3N0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9y
bURhdGEsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghYmxvYlJlZ2lzdHJ5KCkuaXNCbG9i
UmVnaXN0cnlJbXBsKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJUcmllZCB0byByZXNvbHZlIGEg
YmxvYiB3aXRob3V0IGEgdXNhYmxlIHJlZ2lzdHJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgQmxvYlN0b3JhZ2VEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3Ry
eUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpKTsKKyAgICBCbG9iU3RvcmFnZURhdGEqIGJsb2JEYXRhID0gc3RhdGljX2Nh
c3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JSZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwo
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSk7CiAgICAgaWYgKCFibG9iRGF0YSkgewogICAgICAg
ICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQgYmxvYiBkYXRhIGZyb20gYSByZWdpc3RyeSIpOwog
ICAgICAgICByZXR1cm47CkBAIC01MjEsNyArNTIxLDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlRWxl
bWVudChEZWNvZGVyJiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiAKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCiAgICAgICAgIGlmICh0eXBlID09IEZvcm1EYXRhRWxlbWVudDo6
ZW5jb2RlZFVSTCkKLSAgICAgICAgICAgIGVsZW1lbnQubV91cmwgPSBLVVJMKEtVUkwoKSwgZmls
ZW5hbWVPclVSTCk7CisgICAgICAgICAgICBlbGVtZW50Lm1fdXJsID0gVVJMKFVSTCgpLCBmaWxl
bmFtZU9yVVJMKTsKICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIGVsZW1lbnQubV9maWxl
bmFtZSA9IGZpbGVuYW1lT3JVUkw7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGJvb2wgZGVj
b2RlRWxlbWVudChEZWNvZGVyJiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgICAgIFN0cmluZyBibG9iVVJMU3RyaW5nOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
U3RyaW5nKGJsb2JVUkxTdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBlbGVtZW50Lm1fdXJsID0gS1VSTChLVVJMKCksIGJsb2JVUkxTdHJpbmcpOworICAgICAgICBl
bGVtZW50Lm1fdXJsID0gVVJMKFVSTCgpLCBibG9iVVJMU3RyaW5nKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5oCmluZGV4IDdjZTQ2ZmE2OWI4NzM1N2E2ZThkNzNkNmIwZWRlMmY3ZTY1MDViM2IuLjk3ZjQ0
YzJkZDU5ZTc5NjY1NTZmMjMyZjJmOTY2ZTc5ZDU4NzdjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgRm9y
bURhdGFfaAogI2RlZmluZSBGb3JtRGF0YV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM5LDEyICszOSwxMiBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgbG9uZyBsb25nIGZpbGVTdGFydCwgbG9uZyBsb25nIGZpbGVMZW5ndGgsIGRv
dWJsZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwgbV9maWxlU3Rh
cnQoZmlsZVN0YXJ0KSwgbV9maWxlTGVuZ3RoKGZpbGVMZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2Vu
ZXJhdGVGaWxlKHNob3VsZEdlbmVyYXRlRmlsZSkgeyB9Ci0gICAgZXhwbGljaXQgRm9ybURhdGFF
bGVtZW50KGNvbnN0IEtVUkwmIGJsb2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9iKSwgbV91cmwo
YmxvYlVSTCkgeyB9CisgICAgZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgYmxv
YlVSTCkgOiBtX3R5cGUoZW5jb2RlZEJsb2IpLCBtX3VybChibG9iVVJMKSB7IH0KICNlbHNlCiAg
ICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2Vu
ZXJhdGVGaWxlKSA6IG1fdHlwZShlbmNvZGVkRmlsZSksIG1fZmlsZW5hbWUoZmlsZW5hbWUpLCBt
X3Nob3VsZEdlbmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQogI2VuZGlmCiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBLVVJMJiB1cmws
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpIDogbV90eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2ZpbGVT
dGFydChzdGFydCksIG1fZmlsZUxlbmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJhdGVG
aWxlKGZhbHNlKSB7IH0KKyAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiB1cmwsIGxvbmcg
bG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUpIDogbV90eXBlKGVuY29kZWRVUkwpLCBtX3VybCh1cmwpLCBtX2ZpbGVTdGFydChz
dGFydCksIG1fZmlsZUxlbmd0aChsZW5ndGgpLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSksIG1fc2hvdWxkR2VuZXJhdGVGaWxlKGZh
bHNlKSB7IH0KICNlbmRpZgogCiAgICAgZW51bSBUeXBlIHsKQEAgLTYwLDcgKzYwLDcgQEAgcHVi
bGljOgogICAgIFZlY3RvcjxjaGFyPiBtX2RhdGE7CiAgICAgU3RyaW5nIG1fZmlsZW5hbWU7CiAj
aWYgRU5BQkxFKEJMT0IpCi0gICAgS1VSTCBtX3VybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgorICAg
IFVSTCBtX3VybDsgLy8gRm9yIEJsb2Igb3IgVVJMLgogICAgIGxvbmcgbG9uZyBtX2ZpbGVTdGFy
dDsKICAgICBsb25nIGxvbmcgbV9maWxlTGVuZ3RoOwogICAgIGRvdWJsZSBtX2V4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWU7CkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIGJvb2wgc2hvdWxkR2VuZXJhdGVG
aWxlID0gZmFsc2UpOwogI2lmIEVOQUJMRShCTE9CKQogICAgIHZvaWQgYXBwZW5kRmlsZVJhbmdl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0
aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBhcHBlbmRCbG9iKGNvbnN0IEtVUkwmIGJsb2JVUkwpOwor
ICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIHZvaWQgYXBwZW5kVVJMKGNvbnN0IEtVUkwmKTsKLSAgICB2
b2lkIGFwcGVuZFVSTFJhbmdlKGNvbnN0IEtVUkwmLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9u
ZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgYXBw
ZW5kVVJMKGNvbnN0IFVSTCYpOworICAgIHZvaWQgYXBwZW5kVVJMUmFuZ2UoY29uc3QgVVJMJiwg
bG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKICNlbmRpZgogICAgIGNoYXIqIGV4cGFuZERhdGFTdG9yZShzaXplX3QpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29v
a2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2ll
SmFyLmgKaW5kZXggOTFkNTFmYzlhMDQwOTY3ZWQ1MGIxOWYyNzE1NGUyMjI0ZWZiNWZjMy4uNWUx
MjJjMTk0ZmM4NjZiMjJjYmYxZDcwMjk5YTlkZTE2NDMwNjRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaApAQCAtMzMsMTgg
KzMzLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIC8vIEZJ
WE1FOiBUaGVzZSBzaG91bGQgcHJvYmFibHkgYmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG1lbWJl
ciBmdW5jdGlvbnMuCiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpOwot
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpOworU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmKTsKK3ZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmKTsKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYpOwogdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7CiB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKIHZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUHJveHlTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlT
ZXJ2ZXIuaAppbmRleCA4Zjc2MTJlNGU5MWJhNmNmMWVjMWMzNjU0YTAyN2RkY2ZjY2U2NjI3Li43
YzE5MTRlYmE4NDU3MzJkY2EyYjViYTFkNzU5OTM2MTc1MGU2ZDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCkBAIC0zMSw3ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwogCiAvLyBSZXByZXNlbnRzIGEgc2luZ2xlIHByb3h5IHNlcnZlci4K
QEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIFJldHVybiBhIHZlY3RvciBvZiBw
cm94eSBzZXJ2ZXJzIGZvciB0aGUgZ2l2ZW4gVVJMLgotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0Kik7CitW
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBO
ZXR3b3JraW5nQ29udGV4dCopOwogCiAvLyBDb252ZXJ0cyB0aGUgZ2l2ZW4gdmVjdG9yIG9mIHBy
b3h5IHNlcnZlcnMgdG8gYSBQQUMgc3RyaW5nLCBhcyBkZXNjcmliZWQgaW4KIC8vIGh0dHA6Ly93
ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMDYwNDI0MDA1MDM3L3dwLm5ldHNjYXBlLmNvbS9lbmcvbW96
aWxsYS8yLjAvcmVsbm90ZXMvZGVtby9wcm94eS1saXZlLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2Q3NjhmMjkw
ZDE4ZTk2YjAzMTQ5YjBjMDQ5NWZhNzg5OWU4M2NhNi4uMjhjZjA5NzM5M2VkZWJhOGRkNjIxMDhj
NGFjZTY4ZjI1MGM5NzU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIFJlc291cmNl
SGFuZGxlOjpzaG91bGRDb250ZW50U25pZmYoKSBjb25zdAogICAgIHJldHVybiBkLT5tX3Nob3Vs
ZENvbnRlbnRTbmlmZjsKIH0KIAotYm9vbCBSZXNvdXJjZUhhbmRsZTo6c2hvdWxkQ29udGVudFNu
aWZmVVJMKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRl
bnRTbmlmZlVSTChjb25zdCBVUkwmIHVybCkKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KHNob3VsZEZvcmNlQ29udGVudFNuaWZmaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IGU5NmFlNzlmYTgyMjIzMzBhMDljMzcx
MDJmNWY0MzY4OTg4MDgxNTguLjkxNjc4NGU1ZWYxZWYxZDczMWZkNWJkYmVlMmVmOTkwMTYwOWQ4
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKQEAgLTgyLDcgKzgyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJhbWU7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYoKSBjb25zdDsKLSAg
ICBzdGF0aWMgYm9vbCBzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgS1VSTCYpOworICAgIHN0
YXRpYyBib29sIHNob3VsZENvbnRlbnRTbmlmZlVSTChjb25zdCBVUkwmKTsKIAogICAgIHN0YXRp
YyB2b2lkIGZvcmNlQ29udGVudFNuaWZmaW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAppbmRleCBjZTEzNDg2
YmVlYmNhYzIzYjY3MTg0NDAxODNiMzYxMWM0ZGVmOGIwLi5jMGNhODhhYzFiNDRmM2MyMmZlNzFl
MDZmNDNmMmQ1N2QwMWVlOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCkBAIC00MSw3ICs0MSw3IEBAIE9CSkNf
Q0xBU1MgTlNDYWNoZWRVUkxSZXNwb25zZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBjbGFzcyBDcmVkZW50aWFsOwotICAgIGNs
YXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAg
ICBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVy
bmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50
ZXJuYWwuaAppbmRleCBkZTUyZDAzZThkNzAzNGY5MmM2NmQwMDljNTYxYjliMzMxMmNiMDczLi4x
NTQ2ODEwN2U0M2I5Yzc3NmE4NjI1ZjUyNjc3Yzk2NWZjZTA0NWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwu
aApAQCAtMTMwLDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwg
bV9zY2hlZHVsZWRGYWlsdXJlVHlwZShSZXNvdXJjZUhhbmRsZTo6Tm9GYWlsdXJlKQogICAgICAg
ICAgICAgLCBtX2ZhaWx1cmVUaW1lcihsb2FkZXIsICZSZXNvdXJjZUhhbmRsZTo6ZmlyZUZhaWx1
cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZmlyc3RSZXF1
ZXN0LnVybCgpOworICAgICAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZpcnN0UmVxdWVzdC51
cmwoKTsKICAgICAgICAgICAgIG1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgICAgICAgICBtX3Bh
c3MgPSB1cmwucGFzcygpOwogICAgICAgICAgICAgbV9maXJzdFJlcXVlc3QucmVtb3ZlQ3JlZGVu
dGlhbHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDE5NWY0YWUxZGQ0M2NiNzQ3NGNjMDI4YjgxOGQ3
YWI5ZjMzZGJmZGYuLjRlZjlmYTlkOWVmMzA1YTAwNDY1YmY0YjY1MDY0NDI3ZGM2YzE0ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcApAQCAtMTEzLDE0ICsxMTMsMTQgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjppc051bGwoKSBjb25zdAogICAgIHJldHVybiBtX3VybC5pc051bGwoKTsKIH0KIAotY29u
c3QgS1VSTCYgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXJsKCkgY29uc3QgCitjb25zdCBVUkwmIFJl
c291cmNlUmVxdWVzdEJhc2U6OnVybCgpIGNvbnN0IAogewogICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKICAgICAKICAgICByZXR1cm4gbV91cmw7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogeyAKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KTsgCiAKQEAgLTE4MiwxNCArMTgyLDE0IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0
VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAgICAgICAgIG1fcGxhdGZv
cm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCi1jb25zdCBLVVJMJiBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0Citjb25zdCBVUkwmIFJlc291cmNl
UmVxdWVzdEJhc2U6OmZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QKIHsKICAgICB1cGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsgCiAgICAgCiAgICAgcmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tp
ZXM7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0Rmlyc3RQYXJ0eUZvckNvb2tp
ZXMoY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCit2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpCiB7IAogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRl
eCAwMTg0NTc0MzM2NTU1MDNhZDg5ZDVhOTI1MzVjNzE2NWE0NWMyYzU3Li4xNDA1N2NiMjdmNGY4
MjNlNTlhYmM0MmE4ODBmODQwMWM1ZTVhMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMzAsNyArMzAsNyBA
QAogCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFByaW9yaXR5LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC02NCw4ICs2NCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmIHVybCk7CisgICAgICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYgdXJsKTsK
IAogICAgICAgICB2b2lkIHJlbW92ZUNyZWRlbnRpYWxzKCk7CiAKQEAgLTc1LDggKzc1LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBkb3VibGUgdGltZW91dEludGVydmFsKCkgY29u
c3Q7IC8vIE1heSByZXR1cm4gMCB3aGVuIHVzaW5nIHBsYXRmb3JtIGRlZmF1bHQuCiAgICAgICAg
IHZvaWQgc2V0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpOwogICAgICAg
ICAKLSAgICAgICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiBmaXJzdFBhcnR5
Rm9yQ29va2llcyk7CisgICAgICAgIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBj
b25zdDsKKyAgICAgICAgdm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzKTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0IFN0cmluZyYgaHR0
cE1ldGhvZCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEhUVFBNZXRob2QoY29uc3QgU3RyaW5n
JiBodHRwTWV0aG9kKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdEJhc2UoY29uc3Qg
S1VSTCYgdXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kpCisgICAgICAgIFJl
c291cmNlUmVxdWVzdEJhc2UoY29uc3QgVVJMJiB1cmwsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSkKICAgICAgICAgICAgIDogbV91cmwodXJsKQogICAgICAgICAgICAgLCBtX2Nh
Y2hlUG9saWN5KHBvbGljeSkKICAgICAgICAgICAgICwgbV90aW1lb3V0SW50ZXJ2YWwoc19kZWZh
dWx0VGltZW91dEludGVydmFsKQpAQCAtMTgxLDExICsxODEsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBUaGUgUmVzb3VyY2VSZXF1ZXN0IHN1YmNsYXNzIG1heSAic2hhZG93
IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgICAg
ICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIEtVUkwgbV91
cmw7CisgICAgICAgIFVSTCBtX3VybDsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBtX2NhY2hlUG9saWN5OwogICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2YWw7IC8v
IDAgaXMgYSBtYWdpYyB2YWx1ZSBmb3IgcGxhdGZvcm0gZGVmYXVsdCBvbiBwbGF0Zm9ybXMgdGhh
dCBoYXZlIG9uZS4KLSAgICAgICAgS1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOworICAgICAg
ICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKICAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhv
ZDsKICAgICAgICAgSFRUUEhlYWRlck1hcCBtX2h0dHBIZWFkZXJGaWVsZHM7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmc+IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXk7CkBAIC0yMTUsMTEgKzIxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2Up
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJhc2UoKSB7IH0KLSAgICAgICAgS1VSTCBtX3VybDsKKyAg
ICAgICAgVVJMIG1fdXJsOwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IG1f
Y2FjaGVQb2xpY3k7CiAgICAgICAgIGRvdWJsZSBtX3RpbWVvdXRJbnRlcnZhbDsKLSAgICAgICAg
S1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOworICAgICAgICBVUkwgbV9maXJzdFBhcnR5Rm9y
Q29va2llczsKIAogICAgICAgICBTdHJpbmcgbV9odHRwTWV0aG9kOwogICAgICAgICBPd25QdHI8
Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gbV9odHRwSGVhZGVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5j
cHAKaW5kZXggZTRlNjNiY2I0YzE4YWRjNzhiZjRlYjgzZTBhM2E3MDM4ZWUyMTc4YS4uNDA1MjJh
MTNkNjM3YWRmYWZlY2FmYzg5NmZkZjVhNzIyNTRiMDhkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNl
KCkKIHsKIH0KIAotUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVk
TGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCitSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0
aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgIDogbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQpAQCAtMTM4LDE0ICsxMzgsMTQg
QEAgYm9vbCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6aXNIVFRQKCkgY29uc3QKICAgICByZXR1cm4g
ZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsICJodHRwIikgIHx8IGVxdWFsSWdub3JpbmdDYXNl
KHByb3RvY29sLCAiaHR0cHMiKTsKIH0KIAotY29uc3QgS1VSTCYgUmVzb3VyY2VSZXNwb25zZUJh
c2U6OnVybCgpIGNvbnN0Citjb25zdCBVUkwmIFJlc291cmNlUmVzcG9uc2VCYXNlOjp1cmwoKSBj
b25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgcmV0dXJuIG1f
dXJsOyAKIH0KIAotdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2V0VVJMKGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkK
IHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKICAgICBtX2lzTnVsbCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCmluZGV4IDQ5YmRjNzAzODk3OGM0Y2ZjZWQ4YWQ2MGEzMzRhNmI3NDZiOGY5
ZjguLjJjZmI1M2E5MzdmYjRhYjdmYTZiODZiNDc5NmJiODZlMjRlYjdlYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNkZWZpbmUgUmVzb3VyY2VSZXNwb25zZUJhc2VfaAogCiAj
aW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRUaW1pbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CiAgICAgYm9vbCBpc0hUVFAoKSBjb25zdDsKIAot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwm
IHVybCk7CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdDsKKyAgICB2b2lkIHNldFVSTChjb25z
dCBVUkwmIHVybCk7CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgfTsKIAogICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKCk7Ci0g
ICAgUmVzb3VyY2VSZXNwb25zZUJhc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSk7CisgICAgUmVzb3VyY2VSZXNwb25zZUJh
c2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBl
Y3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKTsKIAogICAgIHZvaWQgbGF6eUluaXQoSW5pdExldmVsKSBjb25zdDsKIApAQCAt
MTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBUaGUgUmVzb3VyY2VSZXNwb25zZSBz
dWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVj
aWZpYyBmaWVsZHMKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4
dEVuY29kaW5nTmFtZTsKQEAgLTE4NCw3ICsxODQsNyBAQCBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YUJhc2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UoKSB7IH0KLSAg
ICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmcgbV9taW1lVHlwZTsKICAg
ICBsb25nIGxvbmcgbV9leHBlY3RlZENvbnRlbnRMZW5ndGg7CiAgICAgU3RyaW5nIG1fdGV4dEVu
Y29kaW5nTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCmluZGV4IDJjMDI3NGRjNTRjZjQyMmUwYmE2
MmMwMmMyMzg4M2ZhODY4NWI0OGIuLmU3YzExMzlkZGY4MjY4NjQ3YzkzZWRhMTFhMDc1M2E5NzMx
OTQ3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0
U3RyZWFtSGFuZGxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGludCBidWZmZXJTaXplID0gMTAwICogMTAyNCAq
IDEwMjQ7CiAKLVNvY2tldFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2U6OlNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogbV91cmwodXJsKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zdGF0ZShDb25uZWN0aW5nKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJh
c2UuaAppbmRleCA3ZGVkNGRjYjIyNjZkZTNhZWMwYTUwODY5YTE5ZDhmNDUzZmEzZjA2Li5mNzk0
NzIwMjFiYmU5MzU0OTU5YjQwOTYxYjNmMWY1Njg0MDAzNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuaApA
QCAtMzIsNyArMzIsNyBAQAogI2lmbmRlZiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlX2gKICNkZWZp
bmUgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAKICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAKQEAgLTU2LDEzICs1
NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0Q2xpZW50KFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCopOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsK
KyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlQmFzZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqKTsKIAogICAgICAgICBib29sIHNlbmRQZW5kaW5nRGF0YSgpOwogICAgICAg
ICB2aXJ0dWFsIGludCBwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpID0gMDsKIAotICAgICAg
ICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudCogbV9jbGllbnQ7CiAgICAgICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICog
MTAyND4gbV9idWZmZXI7CiAgICAgICAgIFNvY2tldFN0cmVhbVN0YXRlIG1fc3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRs
ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaAppbmRleCBiZmY2Njc2Yjk2YWJkY2FkMmRhNDljNGZkYjRmOTY0Y2QxYTU4
MTAwLi41YThjNGQ1MGVlMmVjMmE3OTE5MDY1NmFhNGZhMTFhMTI2NDNmODg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xh
c3MgVVJMOwogICAgIGNsYXNzIFNvY2tldFN0cmVhbUVycm9yOwogICAgIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVycnkuY3BwCmluZGV4IDY2
MWMwZWYxOGZjZTk2Y2IyODBiZGY0Njg2ZWMwMmExOGYzNWFiZTQuLjYxNTkxZmMzYTMyNDc4YTI4
YjBjZjg2ZDhmZjBhNDUyYTRmZWJkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJy
eS5jcHAKQEAgLTI0LDI4ICsyNCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiB7CiAgICAgY29va2llTWFuYWdlcigpLnNldENvb2tpZXModXJsLCB2YWx1ZSwgTm9IdHRw
T25seUNvb2tpZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyAnSHR0cE9u
bHknIGNvb2tpZXMgc2hvdWxkIG5vIGJlIGFjY2Vzc2libGUgZnJvbSBzY3JpcHRzLCBzbyB3ZSBm
aWx0ZXIgdGhlbSBvdXQgaGVyZS4KICAgICByZXR1cm4gY29va2llTWFuYWdlcigpLmdldENvb2tp
ZSh1cmwsIE5vSHR0cE9ubHlDb29raWUpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gY29va2llTWFuYWdlcigp
LmdldENvb2tpZSh1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOwogfQogCi1ib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBV
UkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuICFjb29raWVNYW5hZ2VyKCkuY29va2llSmFyKCku
aXNFbXB0eSgpOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIFZlY3RvcjxSZWZQdHI8UGFy
c2VkQ29va2llPiA+IHJlc3VsdDsKICAgICBjb29raWVNYW5hZ2VyKCkuZ2V0UmF3Q29va2llcyhy
ZXN1bHQsIHVybCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CkBAIC01NCw3ICs1NCw3IEBAIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBjb29raWVN
YW5hZ2VyKCkucmVtb3ZlQ29va2llV2l0aE5hbWUodXJsLCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFj
a2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcAppbmRleCAxMDM1ODk2YWI3YTU3MmRiYjk5ZGEz
YjY5OWRlZDE5NmQ2M2ZlY2IwLi4xNjYxYjY0ZjI5MWY2MzE4MjdhMGMwMTViOTNmNDIwMjBjNjE3
OGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCkBAIC0yMiw3
ICsyMiw3IEBACiAjaWYgRU5BQkxFKEJMQUNLQkVSUllfQ1JFREVOVElBTF9QRVJTSVNUKQogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQcm90ZWN0aW9uU3Bh
Y2VIYXNoLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtRW5jcnlwdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKaW5kZXggMTZhZTI0YWFj
MWZkZWRjNWU5NmJiZThhZWU0ZjM1ZTlkNGI2YjM0YS4uNzBmM2MzNmFmMWI5YjNmMTRiMDNiN2U3
NWVkMDE2NzFmNTgzZTZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcApAQCAtMjgsNyArMjgsNyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTUlNRVNuaWZmaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtNYW5hZ2VyLmgiCkBAIC0xMTcsNyArMTE3LDcg
QEAgTmV0d29ya0pvYjo6fk5ldHdvcmtKb2IoKQogCiB2b2lkIE5ldHdvcmtKb2I6OmluaXRpYWxp
emUoaW50IHBsYXllcklkLAogICAgIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwKLSAgICBj
b25zdCBLVVJMJiB1cmwsCisgICAgY29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3QgQmxhY2tCZXJy
eTo6UGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0JiByZXF1ZXN0LAogICAgIFBhc3NSZWZQdHI8UmVz
b3VyY2VIYW5kbGU+IGhhbmRsZSwKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1N0
cmVhbUZhY3RvcnkqIHN0cmVhbUZhY3RvcnksCkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBOZXR3
b3JrSm9iOjpoYW5kbGVOb3RpZnlNdWx0aXBhcnRIZWFkZXJSZWNlaXZlZChjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3QKIAogdm9pZCBOZXR3b3JrSm9iOjpoYW5kbGVTZXRDb29raWVIZWFkZXIo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IG1fcmVzcG9uc2UudXJsKCk7
CisgICAgVVJMIHVybCA9IG1fcmVzcG9uc2UudXJsKCk7CiAgICAgQ29va2llTWFuYWdlciYgbWFu
YWdlciA9IGNvb2tpZU1hbmFnZXIoKTsKICAgICBpZiAoKG1hbmFnZXIuY29va2llUG9saWN5KCkg
PT0gQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQog
ICAgICAgICAmJiAobV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVz
KCkgIT0gdXJsKQpAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgTmV0d29ya0pvYjo6cmV0cnlBc0ZU
UERpcmVjdG9yeSgpCiAKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIFJlc291cmNlUmVxdWVz
dCBuZXdSZXF1ZXN0ID0gbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpOwotICAgIEtVUkwgdXJsID0g
bmV3UmVxdWVzdC51cmwoKTsKKyAgICBVUkwgdXJsID0gbmV3UmVxdWVzdC51cmwoKTsKICAgICB1
cmwuc2V0UGF0aCh1cmwucGF0aCgpICsgIi8iKTsKICAgICBuZXdSZXF1ZXN0LnNldFVSTCh1cmwp
OwogICAgIG5ld1JlcXVlc3Quc2V0TXVzdEhhbmRsZUludGVybmFsbHkodHJ1ZSk7CkBAIC02NzIs
NyArNjcyLDcgQEAgYm9vbCBOZXR3b3JrSm9iOjpoYW5kbGVSZWRpcmVjdCgpCiAgICAgaWYgKGxv
Y2F0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIG5ld1VS
TChtX3Jlc3BvbnNlLnVybCgpLCBsb2NhdGlvbik7CisgICAgVVJMIG5ld1VSTChtX3Jlc3BvbnNl
LnVybCgpLCBsb2NhdGlvbik7CiAgICAgaWYgKCFuZXdVUkwuaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTgxMyw3ICs4MTMsNyBAQCBOZXR3b3JrSm9iOjpTZW5kUmVxdWVz
dFJlc3VsdCBOZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFscyhQcm90ZWN0aW9u
UwogICAgIGlmICghbV9oYW5kbGUpCiAgICAgICAgIHJldHVybiBTZW5kUmVxdWVzdENhbmNlbGxl
ZDsKIAotICAgIEtVUkwgbmV3VVJMID0gbV9yZXNwb25zZS51cmwoKTsKKyAgICBVUkwgbmV3VVJM
ID0gbV9yZXNwb25zZS51cmwoKTsKICAgICBpZiAoIW5ld1VSTC5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBTZW5kUmVxdWVzdENhbmNlbGxlZDsKIApAQCAtODMyLDEwICs4MzIsMTAgQEAgTmV0
d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1bHQgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMoUHJvdGVjdGlvblMKICAgICAgICAgICAgIGhvc3QgPSBtX3Jlc3BvbnNlLnVybCgp
Lmhvc3QoKTsKICAgICAgICAgICAgIHBvcnQgPSBtX3Jlc3BvbnNlLnVybCgpLnBvcnQoKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHByb3h5SW5mbyByZXR1cm5zIGhvc3Q6cG9y
dCwgd2l0aG91dCBhIHByb3RvY29sLiBLVVJMIGNhbid0IHBhcnNlIHRoaXMsIHNvIHN0aWNrIGh0
dHAKKyAgICAgICAgICAgIC8vIHByb3h5SW5mbyByZXR1cm5zIGhvc3Q6cG9ydCwgd2l0aG91dCBh
IHByb3RvY29sLiBVUkwgY2FuJ3QgcGFyc2UgdGhpcywgc28gc3RpY2sgaHR0cAogICAgICAgICAg
ICAgLy8gb24gdGhlIGZyb250LgogICAgICAgICAgICAgLy8gKFdlIGNvdWxkIHNwbGl0IGludG8g
aG9zdCBhbmQgcG9ydCBieSBoYW5kLCBidXQgdGhhdCBnZXRzIGhhcmQgdG8gcGFyc2Ugd2l0aCBJ
UHY2IHVybHMsCi0gICAgICAgICAgICAvLyBzbyBiZXR0ZXIgdG8gcmV1c2UgS1VSTCdzIHBhcnNp
bmcuKQorICAgICAgICAgICAgLy8gc28gYmV0dGVyIHRvIHJldXNlIFVSTCdzIHBhcnNpbmcuKQog
ICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBwcm94eUFkZHJlc3M7CiAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBQcm90ZWN0aW9uU3BhY2VQcm94eUhUVFApCiAgICAgICAgICAgICAgICAgcHJveHlB
ZGRyZXNzLmFwcGVuZCgiaHR0cDovLyIpOwpAQCAtODQzLDcgKzg0Myw3IEBAIE5ldHdvcmtKb2I6
OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0aENyZWRlbnRpYWxz
KFByb3RlY3Rpb25TCiAgICAgICAgICAgICAgICAgcHJveHlBZGRyZXNzLmFwcGVuZCgiaHR0cHM6
Ly8iKTsKICAgICAgICAgICAgIHByb3h5QWRkcmVzcy5hcHBlbmQocHJveHlJbmZvLmFkZHJlc3Mp
OwogCi0gICAgICAgICAgICBLVVJMIHByb3h5VVJMKEtVUkwoKSwgcHJveHlBZGRyZXNzLnRvU3Ry
aW5nKCkpOworICAgICAgICAgICAgVVJMIHByb3h5VVJMKFVSTCgpLCBwcm94eUFkZHJlc3MudG9T
dHJpbmcoKSk7CiAgICAgICAgICAgICBob3N0ID0gcHJveHlVUkwuaG9zdCgpOwogICAgICAgICAg
ICAgcG9ydCA9IHByb3h5VVJMLnBvcnQoKTsKICAgICAgICAgfQpAQCAtMTAyOCw3ICsxMDI4LDcg
QEAgdm9pZCBOZXR3b3JrSm9iOjpmaXJlRGVsZXRlSm9iVGltZXIoVGltZXI8TmV0d29ya0pvYj4q
KQogICAgIE5ldHdvcmtNYW5hZ2VyOjppbnN0YW5jZSgpLT5kZWxldGVKb2IodGhpcyk7CiB9CiAK
LXZvaWQgTmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQg
TmV0d29ya0pvYjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VS
ZXN1bHQgcmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogewogICAgIEFTU0VS
VCh1cmwuaXNWYWxpZCgpKTsKICAgICBBU1NFUlQodXJsID09IG1fcmVzcG9uc2UudXJsKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05l
dHdvcmtKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9O
ZXR3b3JrSm9iLmgKaW5kZXggM2VjY2IxYTQyYjc3OWYwODA1ODE0MDI3MjI3NTJkMWFiNTg0Zjcy
NC4uZmEzNGY0OWU1MzkxOGQ2OWQxMGNiODczMzMxNDJlMGU0NmNiMGFkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pv
Yi5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ3JlZGVu
dGlhbDsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3Rl
Y3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemUoaW50IHBsYXllcklkLAogICAgICAgICBjb25z
dCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsCi0gICAgICAgIGNvbnN0IEtVUkwmLAorICAgICAgICBj
b25zdCBVUkwmLAogICAgICAgICBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TmV0d29ya1Jl
cXVlc3QmLAogICAgICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiwKICAgICAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJlYW1GYWN0b3J5KiwKQEAgLTkyLDcgKzkyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fZXh0
ZW5kZWRTdGF0dXNDb2RlOyB9CiAgICAgdmlydHVhbCBjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U3RyaW5nIG1pbWVUeXBlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2hh
bGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNw
YWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsK
IAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciBwdXJl
IHZpcnR1YWxzLgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURlc3Ryb3llZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3
b3JrTWFuYWdlci5jcHAKaW5kZXggOTIzMTRmMDViM2IwN2I1NzJiZTdkMmM1NGZhMzhjMGI1YWQ5
OWU2Ny4uZWFmZGM1N2EyNzI4MzU0ODAxYjEyYWMwNmY4ZTIwMWMzMDQ3NzQzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya01hbmFnZXIuY3BwCkBAIC0xNDIsMTIgKzE0MiwxMiBAQCBpbnQgTmV0d29ya01hbmFn
ZXI6OnN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgY29uc3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLCBQ
YXNzUmVmUAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgUmVzb3VyY2VIYW5kbGUgZG9lc24ndCBnbyBv
dXQgb2Ygc2NvcGUgd2hpbGUgY2FsbGluZyBjYWxsYmFja3MuCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBndWFyZEpvYihqb2IpOwogCi0gICAgS1VSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwor
ICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogCiAgICAgLy8gT25seSBsb2FkIHRoZSBpbml0
aWFsIHVybCBvbmNlLgogICAgIGJvb2wgaXNJbml0aWFsID0gKHVybCA9PSBtX2luaXRpYWxVUkwp
OwogICAgIGlmIChpc0luaXRpYWwpCi0gICAgICAgIG1faW5pdGlhbFVSTCA9IEtVUkwoKTsKKyAg
ICAgICAgbV9pbml0aWFsVVJMID0gVVJMKCk7CiAKICAgICAvLyBBbHdheXMgcmVyZWFkIGNvb2tp
ZXMgb24gYSByZWRpcmVjdAogICAgIGlmIChyZWRpcmVjdENvdW50KQpAQCAtMTU2LDggKzE1Niw4
IEBAIGludCBOZXR3b3JrTWFuYWdlcjo6c3RhcnRKb2IoaW50IHBsYXllcklkLCBjb25zdCBTdHJp
bmcmIHBhZ2VHcm91cE5hbWUsIFBhc3NSZWZQCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5l
dHdvcmtSZXF1ZXN0IHBsYXRmb3JtUmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRpYWxpemVQbGF0
Zm9ybVJlcXVlc3QocGxhdGZvcm1SZXF1ZXN0LCBmcmFtZS0+bG9hZGVyKCkgJiYgZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKSAmJiBzdGF0aWNfY2FzdDxGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+Y29va2llc0VuYWJsZWQoKSwgaXNJbml0
aWFsLCByZXJlYWRDb29raWVzKTsKIAotICAgIC8vIEdVUkwgYW5kIEtVUkwgY29uc2lkZXIgdmFs
aWQgVVJMcyBkaWZmZXJlbnRseSwgZm9yIGV4YW1wbGUgaHR0cDovLyBpcyBwYXJzZWQgYXMKLSAg
ICAvLyBodHRwOi8gYnkgS1VSTCBhbmQgY29uc2lkZXJlZCB2YWxpZCwgd2hpbGUgR1VSTCBjb25z
aWRlcnMgaXQgaW52YWxpZC4KKyAgICAvLyBHVVJMIGFuZCBVUkwgY29uc2lkZXIgdmFsaWQgVVJM
cyBkaWZmZXJlbnRseSwgZm9yIGV4YW1wbGUgaHR0cDovLyBpcyBwYXJzZWQgYXMKKyAgICAvLyBo
dHRwOi8gYnkgVVJMIGFuZCBjb25zaWRlcmVkIHZhbGlkLCB3aGlsZSBHVVJMIGNvbnNpZGVycyBp
dCBpbnZhbGlkLgogICAgIGlmICghcGxhdGZvcm1SZXF1ZXN0LnVybCgpLmlzX3ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFtOjpTdGF0dXNF
cnJvckludmFsaWRVcmw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKaW5kZXggMWQ4MzNkYTJlZTM3
YWI4MWQwZjUwNDExOTYwZTkyYTEyOTliMzQ5OS4uMjg2Y2I5MGE5MDM5NTNjYzMzMWNhNGY4N2U4
NzI4MGQwNTYzMWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmgKQEAgLTE5LDcgKzE5LDcgQEAK
ICNpZm5kZWYgTmV0d29ya01hbmFnZXJfaAogI2RlZmluZSBOZXR3b3JrTWFuYWdlcl9oCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVNpbmdsZXRvbi5oPgpAQCAtNDMs
OCArNDMsOCBAQCB2b2lkIHByb3RlY3Rpb25TcGFjZVRvUGxhdGZvcm1BdXRoKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOgogY2xhc3MgTmV0d29ya01hbmFnZXIg
OiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlRocmVhZFVuc2FmZVNpbmdsZXRvbjxOZXR3
b3JrTWFuYWdlcj4gewogICAgIFNJTkdMRVRPTl9ERUZJTklUSU9OX1RIUkVBRFVOU0FGRShOZXR3
b3JrTWFuYWdlcikKIHB1YmxpYzoKLSAgICB2b2lkIHNldEluaXRpYWxVUkwoY29uc3QgS1VSTCYg
dXJsKSB7IG1faW5pdGlhbFVSTCA9IHVybDsgfQotICAgIEtVUkwgaW5pdGlhbFVSTCgpIHsgcmV0
dXJuIG1faW5pdGlhbFVSTDsgfQorICAgIHZvaWQgc2V0SW5pdGlhbFVSTChjb25zdCBVUkwmIHVy
bCkgeyBtX2luaXRpYWxVUkwgPSB1cmw7IH0KKyAgICBVUkwgaW5pdGlhbFVSTCgpIHsgcmV0dXJu
IG1faW5pdGlhbFVSTDsgfQogICAgIGludCBzdGFydEpvYihpbnQgcGxheWVySWQsIFBhc3NSZWZQ
dHI8UmVzb3VyY2VIYW5kbGU+IGpvYiwgRnJhbWUqLCBib29sIGRlZmVyc0xvYWRpbmcpOwogICAg
IGludCBzdGFydEpvYihpbnQgcGxheWVySWQsIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGpv
YiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqLCBib29sIGRlZmVyc0xvYWRpbmcpOwog
ICAgIGJvb2wgc3RvcEpvYihQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPik7CkBAIC02MCw3ICs2
MCw3IEBAIHByaXZhdGU6CiAgICAgaW50IHN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgY29uc3QgU3Ry
aW5nJiBwYWdlR3JvdXBOYW1lLCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJlYW1GYWN0b3J5
KiwgRnJhbWUqLCBpbnQgZGVmZXJMb2FkaW5nQ291bnQgPSAwLCBpbnQgcmVkaXJlY3RDb3VudCA9
IDAsIGJvb2wgcmVyZWFkQ29va2llcyA9IGZhbHNlKTsKIAogICAgIFZlY3RvcjxOZXR3b3JrSm9i
Kj4gbV9qb2JzOwotICAgIEtVUkwgbV9pbml0aWFsVVJMOworICAgIFVSTCBtX2luaXRpYWxVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUHJveHlTZXJ2ZXJCbGFja0JlcnJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwCmluZGV4IDMzYjIwNjJhNmRiNDMxMDQ2M2Q1ZWRlNTQzZDk1NGYxZTQ0ODc1
ZDcuLmE3MWI5MjkxY2M4MTExOGM5ZTlhYTE4OTZmMzI1OTcyMzE1ZTBmNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Qcm94eVNlcnZlckJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9Qcm94eVNlcnZlckJsYWNrQmVycnkuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JV
UkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNl
cnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250
ZXh0KikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBWZWN0b3I8UHJveHlT
ZXJ2ZXI+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggOTJhYTFkODZlMGM3YmUzZmY5
ZTYyMzZmYTIwZGQwNWI3YTVmYmQyNi4uYmQxM2I2ZDBhMWRkZTlkMGViYzY3MzE3OTJmMjU1MDU2
ZGNmYTg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFRhcmdldElzVW5zcGVjaWZpZWQsCiAgICAgfTsKICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShL
VVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQog
ICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCiAgICAgICAgICwgbV9mb3Jj
ZURvd25sb2FkKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgUmVzb3VyY2VSZXF1
ZXN0KGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBV
c2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAsIG1faXNYTUxIVFRQUmVxdWVzdChmYWxz
ZSkKICAgICAgICAgLCBtX211c3RIYW5kbGVJbnRlcm5hbGx5KGZhbHNlKQpAQCAtNjgsNyArNjgs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1
ZXN0KGZhbHNlKQogICAgICAgICAsIG1fbXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgICwgbV9pc1hNTEhUVFBSZXF1ZXN0KGZhbHNlKQogICAgICAgICAsIG1f
bXVzdEhhbmRsZUludGVybmFsbHkoZmFsc2UpCiAgICAgICAgICwgbV9mb3JjZURvd25sb2FkKGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggNGMxYWQ2OTY1ZWM0Y2FmMDAwYmIz
ZTZjODVjYjdmMjAxOTNmNWI3OS4uY2JmMTdlMWY3OTU1NDJkYTdiNDhmMTZkZWYwZjYwMDQyYjAz
NzFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zMCw3ICszMCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJl
c291cmNlUmVzcG9uc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxv
bmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVy
bCwgbWltZVR5cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkK
ICAgICAgICAgLCBtX2lzTXVsdGlwYXJ0UGF5bG9hZChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFt
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29j
a2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggODBlYzQxYmQ3OTdhM2MxNThlMWQyZmI4NmUxMmZlNDQz
ZGIzYmE4My4uYzgyMmU0NmI3NmVhYTM2YTE2ODYwNDI4MjE4YTA5NmE5MWJhZDllNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0
cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQ7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RmlsdGVyU3RyZWFtLCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUoZ3Jv
dXBOYW1lLCB1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3Ry
ZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3
IFNvY2tldFN0cmVhbUhhbmRsZShncm91cE5hbWUsIHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZp
cnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC02NCw3ICs2NCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCiBwcml2YXRlOgotICAgIFNv
Y2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBT
dHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7
CiAKICAgICBPd25QdHI8QmxhY2tCZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbT4gbV9zb2Nr
ZXRTdHJlYW07CiAgICAgaW50IG1fc3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0
cmVhbUhhbmRsZUJsYWNrQmVycnkuY3BwCmluZGV4IGIxYTRkZWIyZGM0MGE3OThhZWM2ZDk3Yjg4
MDEwNjdiNTRjZGVhMDEuLmNjOTUxOWNjOGYwNWEzNjVmYmViMWE5NDU2ZTc4OGYyMjkxMjQ0OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9T
b2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50KiBjbGllbnQpCitTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkK
IHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVw
IiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5jcHAKaW5kZXgg
NTVjZTNjMzc1YjA0ODg0YWNhNmEwMGIwMzM3ZWIzYWE3YTU0MTkyZS4uMjQyYzkxYTdmZjRlNjM1
MTJkNmQ3N2Y1NGE4NDZmY2Q5M2Q2YTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIFJTU0F0b21QYXJzZXI6OlJTU0F0b21QYXJzZXIoKQogCiBi
b29sIFJTU0F0b21QYXJzZXI6OnBhcnNlQnVmZmVyKGNvbnN0IGNoYXIqIGJ1ZmZlciwgaW50IGxl
bmd0aCwgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBlbmNvZGluZykKIHsKLSAgICBtX3Vy
bCA9IEtVUkwoYmxhbmtVUkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChibGFua1VSTCgpLCB1
cmwpOwogICAgIHJldHVybiBwYXJzZVhtbERvYyh4bWxSZWFkTWVtb3J5KGJ1ZmZlciwgbGVuZ3Ro
LCB1cmwsIGVuY29kaW5nLCBYTUxfUEFSU0VfTk9CTEFOS1MgfCBYTUxfUEFSU0VfTk9ORVQpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaAppbmRleCA4NjVmNTBmMjQyMTQ2NTg2N2U2
YTM3OTVlNWZmMjViZDZkZmIyNjg5Li5jNGQ3OWNlN2I5NmEwYmNhNGJiYmZjNzY1OTcxZGQwNGEy
NTBmNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuaApAQCAtMTksNyArMTksNyBAQAog
I2lmbmRlZiBSU1NBdG9tUGFyc2VyX2gKICNkZWZpbmUgUlNTQXRvbVBhcnNlcl9oCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUlNTUGFyc2VyQmFzZS5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIHBhcnNlQ29udGVudChjb25zdCBTdHJpbmcmIGJhc2UsIHhtbE5vZGUqKTsKICAgICBT
dHJpbmcgcGFyc2VBdXRob3IoeG1sTm9kZSopOwogICAgIFN0cmluZyBwYXJzZUNhdGVnb3J5KHht
bE5vZGUqKTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggNTBmNjk4YmJkNzQ2NzdlNTQyNjc5YWU4NDli
ODQ1MDA2ZTliMjkxZi4uZjM1YzE4MmQ0NjgxNjQyYjMyMmZkMmRlYjFjZWU5MjJmOTMyZDY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVK
YXJDRk5ldC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5j
bHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgi
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CkBAIC05Myw3ICs5Myw3
IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2llcyhDRkFycmF5UmVm
IHVuZmlsdGVyZWRDb29raWVzKQogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQ
Q29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkgY29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50
IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29r
aWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5n
ZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRiA9IHVy
bC5jcmVhdGVDRlVSTCgpOwogCkBAIC0xMjcsNyArMTI3LDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1UKICAgICByZXR1cm4gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRl
ckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gdXJsQ0YgPSB1cmwuY3JlYXRlQ0ZVUkwoKTsKIApAQCAtMTM3LDEzICsxMzcs
MTMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1cm4gKENGU3RyaW5nUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0KIAotYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29r
aWVBY2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVy
biBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRv
Y3VtZW50RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
QWx3YXlzOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdD
b29raWVzLmNsZWFyKCk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBuYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9E
TlNDRk5ldC5jcHAKaW5kZXggMWJhZjU4MTFlOWQ4M2Q1OWVkMDMxMjIyODlmYzUwMTZmZGMxYzZk
YS4uMDc1YWE2YmNhNWUyNTY0N2FlYmU5ZjEyZDY5ZDZhYjZjODNlNDZjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlICJETlMuaCIKICNpbmNsdWRlICJETlNSZXNvbHZlUXVldWUuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAg
LTU1LDggKzU1LDggQEAgYm9vbCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUHJveHlJc0VuYWJs
ZWRJblN5c3RlbVByZWZlcmVuY2VzKCkKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gaHR0cENGVVJMID0gS1VS
TChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vZXhhbXBs
ZS5jb20vIikuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBzQ0ZV
UkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cHM6Ly9leGFtcGxlLmNvbS8iKS5jcmVhdGVD
RlVSTCgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBQcm94eUFycmF5ID0gYWRv
cHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwQ0ZVUkwuZ2V0KCksIHByb3h5U2V0
dGluZ3MuZ2V0KCkpKTsKICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gaHR0cHNQcm94eUFycmF5
ID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5UHJveGllc0ZvclVSTChodHRwc0NGVVJMLmdldCgpLCBw
cm94eVNldHRpbmdzLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAppbmRleCAxMmYzYjExNmYyNjVjMTlj
NGM1MDM0ZDQxZGMwYTRjZmE2YjVhNDU2Li43MTExOGQyZWViMWZmOTUyYTE1OTIzMGMwYmM0Mzg2
MmQ5NDRhNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Byb3h5U2VydmVyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZlci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTE5LDcgKzExOSw3
IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NQcm94eVNlcnZlcnMoVmVjdG9yPFByb3h5U2VydmVyPiYg
cHJveHlTZXJ2ZXJzLCBDRkFycmF5UmVmIHByCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBhZGRQ
cm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgdm9pZCBhZGRQcm94eVNlcnZlcnNGb3JVUkwoVmVjdG9yPFBy
b3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm94eVNldHRpbmdzID0gYWRvcHRDRihDRk5ldHdvcmtDb3B5
U3lzdGVtUHJveHlTZXR0aW5ncygpKTsKICAgICBpZiAoIXByb3h5U2V0dGluZ3MpCkBAIC0xMzMs
NyArMTMzLDcgQEAgc3RhdGljIHZvaWQgYWRkUHJveHlTZXJ2ZXJzRm9yVVJMKFZlY3RvcjxQcm94
eVNlcnZlcj4mIHByb3h5U2VydmVycywgY29uc3QgS1VSTCYKICAgICBwcm9jZXNzUHJveHlTZXJ2
ZXJzKHByb3h5U2VydmVycywgcHJveGllc0ZvclVSTC5nZXQoKSwgY2ZVUkwuZ2V0KCkpOwogfQog
Ci1WZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2
ZXJzRm9yVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAg
ICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5k
ZXggYTJhNmZkN2M1ZGYzYWQzMDljNjY4MjQ1NDJhMzgzYjg0OWUyMjcyNy4uYWUxYzFlYjNiNzVm
ZGIwNzNiNGI4ZTE3NjBlNDJkMWMxZWEzNTA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgVVNFKENGTkVUV09SSykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkVycm9yLmg+CiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGTmV0d29ya0Vycm9ycy5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDcxYWFmMWE4NTdiZTBhNDVmMWM4YjljNmZjZWMyYWRj
ZDE4ZDM2MzAuLjI2ZTczYTU2ZjMyMjJlMWE0ZjQ3ZGQ5ZWIwZWM0NWM4N2I5OGZiMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmNyZWF0ZUNGVVJMQ29ubmVjdGlvbihib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlLCBi
b29sCiB7CiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1w
dHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
ewogICAgICAgICAvLyBDcmVkZW50aWFscyBmb3IgZnRwIGNhbiBvbmx5IGJlIHBhc3NlZCBpbiBV
UkwsIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZGVsZWdhdGUgY2FsbCB3
b24ndCBiZSBtYWRlLgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVl
c3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0
KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIp
OwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAg
ICBmaXJzdFJlcXVlc3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTQ3OSw3ICs0
NzksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogCiB2b2lkIFJlc291cmNlSGFu
ZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewotICAgIGNvbnN0IEtVUkwmIHVybCA9
IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
IGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3MoKTsKICAg
ICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01NDIsNyAr
NTQyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKICAgICBpZiAoIWQtPm1fdXNlci5pc051
bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTENy
ZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+
bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKKyAgICAgICAg
VVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCku
aHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3JlID0gY2hhbGxl
bmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICBDcmVkZW50aWFsU3RvcmFnZTo6
c2V0KGNvcmUoY3JlZGVudGlhbC5nZXQoKSksIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSwg
dXJsVG9TdG9yZSk7CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVj
ZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UK
ICAgICAgICAgQ3JlZGVudGlhbCB3ZWJDcmVkZW50aWFsKGNyZWRlbnRpYWwudXNlcigpLCBjcmVk
ZW50aWFsLnBhc3N3b3JkKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpOwogICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjZkNyZWRlbnRpYWwgPSBhZG9wdENGKGNyZWF0
ZUNGKHdlYkNyZWRlbnRpYWwpKTsKICAgICAgICAgCi0gICAgICAgIEtVUkwgdXJsVG9TdG9yZTsK
KyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAgICAgICB1cmxUb1N0b3Jl
ID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOyAgICAgIAogICAgICAgICBDcmVk
ZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UoKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2MzQ5Y2U4OTE4ZGRiNzBlNDVjYTg3YTM3
MGQ5N2MxNjcwNDA3YzUxLi42Y2YyNmFiNGMzZWY4NGEwNGNlY2U4ZmFkZTk4ZDdkOGNhMjM1ZDcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXF1ZXN0LmgKQEAgLTQyLDIzICs0MiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKSAKLSAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VS
TCYgdXJsKSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKSAKICAgICAg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9s
aWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAorICAgICAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpIAogICAgICAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICB7CiAgICAg
ICAgICAgICBzZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewog
ICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCBlMGE1ZGQ0OGFkZTE3YWI0NmFkMTQ2
ZTk0NDljNDM0ZjQ5MDU0MDcwLi4xM2E1ODExODBlYTY4OGRkZTM3NmUzNWYwN2UyZWUzMTYzOGFk
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVzcG9uc2UuaApAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlm
CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNwb25zZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVk
TGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlwZSwgZXhw
ZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAsIG1faW5p
dExldmVsKENvbW1vbkFuZFVuY29tbW9uRmllbGRzKQogICAgICAgICAsIG1fcGxhdGZvcm1SZXNw
b25zZUlzVXBUb0RhdGUoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCAyNTRiMDM0NWIwZDgxNzVi
MzNjMmZiZTE0NjAzNzE0ZjZlNGQ4OWQ4Li45OWJiZTg4YmIyMWU1YWRjYmY1NGQ2MjMwNjRmNzY4
Yzg1OWFhMjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U29ja2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0
cmVhbUhhbmRsZUJhc2UsIHB1YmxpYyBBdXRoZW50aWNhdGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0
U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVh
bUhhbmRsZSgpOwogCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBpbnQg
cGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VS
TCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0cmVhbUhhbmRsZShj
b25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICB2b2lkIGNyZWF0ZVN0
cmVhbXMoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RyZWFtcygpOwogICAgIHZvaWQgY2hvb3NlUHJv
eHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggOTE0YTU3NTVmNWNhZDQ4MWY4
ZmVmOTc0NDIyYTA3NDYxYWQxZDU0Zi4uZmMyZDI4ZDcyNDE4M2Y1NTRhZWM3NzI3N2U0MWEzMjA1
YTkwMjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
ZXh0ZXJuICJDIiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGU3RyZWFtU29ja2V0U2V0Tm9EZWxheTsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSh1cmwsIGNsaWVudCkKICAgICAsIG1fY29ubmVjdGluZ1N1YnN0YXRlKE5ldykKICAg
ICAsIG1fY29ubmVjdGlvblR5cGUoVW5rbm93bikKQEAgLTY1LDcgKzY1LDcgQEAgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQKIAogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwu
cHJvdG9jb2xJcygid3NzIikpOwogCi0gICAgS1VSTCBodHRwc1VSTChLVVJMKCksICJodHRwczov
LyIgKyBtX3VybC5ob3N0KCkpOworICAgIFVSTCBodHRwc1VSTChVUkwoKSwgImh0dHBzOi8vIiAr
IG1fdXJsLmhvc3QoKSk7CiAgICAgbV9odHRwc1VSTCA9IGh0dHBzVVJMLmNyZWF0ZUNGVVJMKCk7
CiAKICAgICBjcmVhdGVTdHJlYW1zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKaW5kZXggOGQxODFmM2IyYWRiZmJl
YzM2OGI2NGFkNDJkMDk5YjMwMzliNDc1Yy4uOWNkOGE5YjJkNjE4MWJlNzE2MzAzOTUxZThmMzJk
OWJmMmJmODg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgIlBs
YXRmb3JtQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgi
CiAKICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMg
dm9pZCBhZGRNYXRjaGluZ0N1cmxDb29raWUoY29uc3QgY2hhciogY29va2llLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgY29ucwogCiB9CiAKLXN0YXRpYyBTdHJpbmcgZ2V0TmV0c2NhcGVDb29raWVG
b3JtYXQoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQorc3RhdGljIFN0cmlu
ZyBnZXROZXRzY2FwZUNvb2tpZUZvcm1hdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICAvLyBDb25zdHJ1Y3RzIGEgY29va2llIHN0cmluZyBpbiBOZXRzY2FwZSBD
b29raWUgZmlsZSBmb3JtYXQuCiAKQEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgU3RyaW5nIGdl
dE5ldHNjYXBlQ29va2llRm9ybWF0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICByZXR1cm4gY29va2llU3RyLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgQ1VSTCogY3VybCA9IGN1cmxfZWFzeV9pbml0
KCk7CiAKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cgogICAgIGN1
cmxfZWFzeV9jbGVhbnVwKGN1cmwpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgaHR0cG9ubHkpCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsLCBi
b29sIGh0dHBvbmx5KQogewogICAgIFN0cmluZyBjb29raWVzOwogICAgIENVUkwqIGN1cmwgPSBj
dXJsX2Vhc3lfaW5pdCgpOwpAQCAtMjg0LDI5ICsyODQsMjkgQEAgc3RhdGljIFN0cmluZyBjb29r
aWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QKICAgICByZXR1cm4gY29va2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgZmFsc2UpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHRydWUpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8q
dXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xl
YXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQK
IH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFkYzAzZmQ0MGYwYjlm
ZDhkOGM0MzQ5ZTdmZGVlNDE0MjU1NDZlZjMuLmZiMjA5MjJjZDRkMTA1Y2Y5N2ZjMGI0OWE4YTVi
YTY0ZDdkNGVmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0yNDgsNyArMjQ4LDcgQEAgQ3VybERvd25sb2Fk
Ojp+Q3VybERvd25sb2FkKCkKICAgICBtb3ZlRmlsZVRvRGVzdGluYXRpb24oKTsKIH0KIAotdm9p
ZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBjb25z
dCBLVVJMJiB1cmwpCit2b2lkIEN1cmxEb3dubG9hZDo6aW5pdChDdXJsRG93bmxvYWRMaXN0ZW5l
ciogbGlzdGVuZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbGlzdGVuZXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6aW5pdChD
dXJsRG93bmxvYWRMaXN0ZW5lciogbGlzdGVuZXIsIFJlc291cmNlSGFuZGxlKiwgY29uc3QgUgog
CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbXV0ZXgpOwogCi0gICAgS1VSTCB1cmwoUGFyc2Vk
VVJMU3RyaW5nLCByZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsKFBhcnNlZFVSTFN0cmluZywg
cmVxdWVzdC51cmwoKSk7CiAKICAgICBpbml0KGxpc3RlbmVyLCB1cmwpOwogCkBAIC0zOTAsNyAr
MzkwLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDAp
IHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVybCA9IDA7CiAgICAgICAgICAgICBlcnIgPSBj
dXJsX2Vhc3lfZ2V0aW5mbyhtX2N1cmxIYW5kbGUsIENVUkxJTkZPX0VGRkVDVElWRV9VUkwsICZ1
cmwpOwotICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCkpOworICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSk7CiAKICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1U
eXBlIikpKTsKICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRl
bnQtVHlwZSIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKaW5kZXggZjc1YWM4ZjE1M2U4YjdjNWNjYzUxYWYwYjFkNzk5NTEy
ZDg4YjFiNS4uZDkyYjQzY2EyY2YyZGNjNGJhN2E0N2IyYmNlMjBhZDlkMzY5YjlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgQ3VybERvd25sb2FkKCk7CiAgICAgfkN1
cmxEb3dubG9hZCgpOwogCi0gICAgdm9pZCBpbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lcios
IGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5l
ciosIFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgYm9vbCBzdGFydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAppbmRleCAy
MTI3NjhhZGIyZGM1NTMxZjMzNWQ0ZTJhYzZlYmVhYzc3NTc3NWRlLi4xMTczNWFlNmRjMTAxN2E5
MmMzOTY4NzUyYTBkOTM3ZjUyYTA1YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHJveHlTZXJ2ZXJDdXJsLmNwcApAQCAtMjYsMTIgKzI2
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94
eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1Zl
Y3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5l
dHdvcmtpbmdDb250ZXh0KikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIHJldHVy
biBWZWN0b3I8UHJveHlTZXJ2ZXI+KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDdmMzRk
YjI2ZGVkMTIyM2I0N2Q5OWM0M2NjZjA1MTllNTlhNmE4ZTguLmM5MThmMTViODg3Y2MyZTcwOTli
MTcxMDBhMzUzM2IxNzk5ODU0MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKIAogICAgIGlmIChzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZSgpKSB7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNl
KCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpIHsKLSAgICAgICAgICAgIEtVUkwgdXJsVG9TdG9y
ZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKKyAgICAgICAgICAgIFVSTCB1
cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAgICAgICAg
ICAgQ3JlZGVudGlhbFN0b3JhZ2U6OnNldChjcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlKCksIHVybFRvU3RvcmUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcAppbmRleCBhMGYyYTI0OGY4YzQzNTcxMTE5NDEwYzFhNjNmNTQ5ZjFhMjQ2ZWY4
Li43ZGQ1YjZhMDA4NzhiNDk1OGRmZTJiNDg1Y2QxNjQ5Mzc4YzQyMWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVNYW5hZ2VyLmNwcApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUxv
Y2FsUmVjZWl2ZVJlc3BvbnNlIChDVVJMKiBoYW5kbGUsIFJlc291cmNlSGFuZGxlKiBqb2IsIFJl
c291CiAgICAgIGNvbnN0IGNoYXIqIGhkcjsKICAgICAgQ1VSTGNvZGUgZXJyID0gY3VybF9lYXN5
X2dldGluZm8oaGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsKICAgICAgQVNT
RVJUX1VOVVNFRChlcnIsIENVUkxFX09LID09IGVycik7Ci0gICAgIGQtPm1fcmVzcG9uc2Uuc2V0
VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBoZHIpKTsKKyAgICAgZC0+bV9yZXNwb25zZS5zZXRV
UkwoVVJMKFBhcnNlZFVSTFN0cmluZywgaGRyKSk7CiAgICAgIGlmIChkLT5jbGllbnQoKSkKICAg
ICAgICAgIGQtPmNsaWVudCgpLT5kaWRSZWNlaXZlUmVzcG9uc2Uoam9iLCBkLT5tX3Jlc3BvbnNl
KTsKICAgICAgZC0+bV9yZXNwb25zZS5zZXRSZXNwb25zZUZpcmVkKHRydWUpOwpAQCAtMzExLDcg
KzMxMSw3IEBAIHN0YXRpYyBib29sIGdldFByb3RlY3Rpb25TcGFjZShDVVJMKiBoLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUHJvdGVjCiAgICAgaWYgKGVyciAhPSBDVVJMRV9P
SykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCBrdXJsKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKTsKKyAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAKICAgICBTdHJp
bmcgaG9zdCA9IGt1cmwuaG9zdCgpOwogICAgIFN0cmluZyBwcm90b2NvbCA9IGt1cmwucHJvdG9j
b2woKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgc2l6ZV90IGhlYWRlckNhbGxiYWNrKGNo
YXIqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCogZGF0YSkKIAogICAgICAg
ICBjb25zdCBjaGFyKiBoZHI7CiAgICAgICAgIGN1cmxfZWFzeV9nZXRpbmZvKGgsIENVUkxJTkZP
X0VGRkVDVElWRV9VUkwsICZoZHIpOwotICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChLVVJM
KFBhcnNlZFVSTFN0cmluZywgaGRyKSk7CisgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0VVJMKFVS
TChQYXJzZWRVUkxTdHJpbmcsIGhkcikpOwogCiAgICAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoaHR0cENvZGUpOwogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldE1pbWVUeXBl
KGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoIkNvbnRlbnQtVHlwZSIpKS5sb3dlcigpKTsKQEAgLTQxMSw3ICs0MTEsNyBAQCBzdGF0aWMg
c2l6ZV90IGhlYWRlckNhbGxiYWNrKGNoYXIqIHB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVt
Yiwgdm9pZCogZGF0YSkKICAgICAgICAgaWYgKGlzSHR0cFJlZGlyZWN0KGh0dHBDb2RlKSkgewog
ICAgICAgICAgICAgU3RyaW5nIGxvY2F0aW9uID0gZC0+bV9yZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoImxvY2F0aW9uIik7CiAgICAgICAgICAgICBpZiAoIWxvY2F0aW9uLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIEtVUkwgbmV3VVJMID0gS1VSTChqb2ItPmZpcnN0UmVxdWVzdCgpLnVy
bCgpLCBsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgVVJMIG5ld1VSTCA9IFVSTChqb2ItPmZp
cnN0UmVxdWVzdCgpLnVybCgpLCBsb2NhdGlvbik7CiAKICAgICAgICAgICAgICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVkaXJlY3RlZFJlcXVlc3QgPSBqb2ItPmZpcnN0UmVxdWVzdCgpOwogICAgICAg
ICAgICAgICAgIHJlZGlyZWN0ZWRSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwpAQCAtNzg2LDcgKzc4
Niw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpzdGFydFNjaGVkdWxlZEpvYnMoKQog
CiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6ZGlzcGF0Y2hTeW5jaHJvbm91c0pvYihSZXNv
dXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3VybCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgpLnVybCgpOwogCiAgICAg
aWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBoYW5kbGVEYXRhVVJMKGpvYik7
CkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNo
U3luY2hyb25vdXNKb2IoUmVzb3VyY2VIYW5kbGUqIGpvYikKIAogdm9pZCBSZXNvdXJjZUhhbmRs
ZU1hbmFnZXI6OnN0YXJ0Sm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiB7Ci0gICAgS1VSTCBrdXJs
ID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwga3VybCA9IGpvYi0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCk7CiAKICAgICBpZiAoa3VybC5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAg
ICAgIGhhbmRsZURhdGFVUkwoam9iKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlTWFuYWdlcjo6YXBwbHlBdXRoZW50aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmluaXRpYWxpemVIYW5kbGUo
UmVzb3VyY2VIYW5kbGUqIGpvYikKIHsKICAgICBzdGF0aWMgY29uc3QgaW50IGFsbG93ZWRQcm90
b2NvbHMgPSBDVVJMUFJPVE9fRklMRSB8IENVUkxQUk9UT19GVFAgfCBDVVJMUFJPVE9fRlRQUyB8
IENVUkxQUk9UT19IVFRQIHwgQ1VSTFBST1RPX0hUVFBTOwotICAgIEtVUkwga3VybCA9IGpvYi0+
Zmlyc3RSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgp
LnVybCgpOwogCiAgICAgLy8gUmVtb3ZlIGFueSBmcmFnbWVudCBwYXJ0LCBvdGhlcndpc2UgY3Vy
bCB3aWxsIHNlbmQgaXQgYXMgcGFydCBvZiB0aGUgcmVxdWVzdC4KICAgICBrdXJsLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDkxNDcyZTAwNWU1Y2JhNTFlMTFj
ZjAyZDNjZGE5NDUxMmQyZTc1ODUuLmE3NWE3MWFmODA4MjkyNzJkMjZiOWU4ZTY5ZDMzY2NhMWI5
MDE0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM2LDIzICszNiwyMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFJlc291cmNlUmVxdWVzdEJh
c2UgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYg
dXJsKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJj
ZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwpCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkK
ICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgewog
ICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICAgICAgfQogCiAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
S1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAg
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggNDk4NWViMzFjNWI5YzE5NjIzYWI1MjA1MDNiZWU3
MjBhNDdkNzAwOS4uYWUwOWI4MTRmYjAxMTVhMTY4OWNkMjdlYTljNThhZmY4ZWU3MGYwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VSZXNwb25zZS5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0g
ICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdO
YW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0
aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4cGVjdGVk
TGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSksCiAgICAgICAgICAgbV9yZXNwb25z
ZUZpcmVkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA2NDEzOWU1Y2QzMzk4
OWZhOWU0N2IwMmVmY2RkY2M2YmNjMjZhZjMzLi5hODIzMTlmOTQ1MmJkZTM5YjU3ODM5MDdhZTVi
MzFjMWJlZGYxZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVC
YXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVh
bUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBj
bGllbnQpKTsgfQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+
IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsg
fQogCiAgICAgICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwogCkBAIC01NCw3ICs1
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
Q2xvc2UoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgICAg
ICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkg
YXNrIGZvciBjcmVkZW50aWFscy4KICAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVD
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGVDdXJsLmNwcAppbmRleCA4OTFlOTZlNTA2ZjE1MDI0NmEyZmIyMDgwZjlkMTk5NTI0
NTA3NTJhLi43OWFkYzMwM2RmYTA2OGUwZmJlNDYyZDFhZDBiMTkzMWZlMTdiMjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmws
IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZSh1cmwsIGNsaWVudCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhh
bmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCmluZGV4IGJjMjIz
NzUyZTFjOGI2ZWM3OTA0ZTI3Y2M5ZWY2YmNkNWJlZmRhZDIuLjY1Mzc0MGU5YjIzZmNlYjk0OWMz
OTUyZDNiYzAxNWU3ZDVkM2I3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KQEAgLTMxLDcgKzMxLDcgQEAKICNpbXBvcnQg
IkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVT
dG9yYWdlLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29v
a2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcykKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApA
QCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVQogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIApAQCAtODMsNyArODMsNyBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGEKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIApAQCAtMTE2LDcgKzExNiw3IEBAIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCA4MzMxNWIwMTdj
MDM0OGQyZDlkZWNhODRhN2FkYjE0YjI1MTM2ZDU1Li5jZWY2Y2RmMzQ2ZTBkMjNjN2RmMmJjNTcw
ZDBhMmFjNjZmMTRkNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTI3LDcgKzI3LDcgQEAKICNpbXBv
cnQgIlJlc291cmNlRXJyb3IuaCIKIAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCi0jaW1w
b3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NG
RXJyb3IuaD4KICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCmluZGV4IDA5NDAwYTFkMTNmNmE0MjgxZTQ5ZTMzN2QyOWRhMThjZWE0MDU3MzAuLmU3M2M2
NWQyMjc3ZDk4OTIyZTY3OGVjNjViZWY4ZjhjN2E5MGViNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBA
IC05OCw3ICs5OCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGlv
bihpZCBkZWxlZ2F0ZSwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsCiB7CiAgICAgLy8gQ3JlZGVu
dGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4gVVJMLCB0aGUgY29ubmVjdGlvbjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGRlbGVnYXRlIGNhbGwgd29uJ3QgYmUg
bWFkZS4KICAgICBpZiAoKCFkLT5tX3VzZXIuaXNFbXB0eSgpIHx8ICFkLT5tX3Bhc3MuaXNFbXB0
eSgpKSAmJiAhZmlyc3RSZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7
Ci0gICAgICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVzdCgpLnVybCgpKTsK
KyAgICAgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7CiAg
ICAgICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKGQtPm1fdXNlcik7CiAgICAgICAgIHVy
bFdpdGhDcmVkZW50aWFscy5zZXRQYXNzKGQtPm1fcGFzcyk7CiAgICAgICAgIGZpcnN0UmVxdWVz
dCgpLnNldFVSTCh1cmxXaXRoQ3JlZGVudGlhbHMpOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImh0
dHBzIikgJiYgcHJvdG9jb2xJcyhyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpLCAiaHR0cHMiKSAmJiBk
LT5tX2NvbnRleHQtPnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QoKSkK
ICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwogCi0gICAgY29uc3QgS1VSTCYg
dXJsID0gcmVxdWVzdC51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7
CiAgICAgZC0+bV91c2VyID0gdXJsLnVzZXIoKTsKICAgICBkLT5tX3Bhc3MgPSB1cmwucGFzcygp
OwogICAgIGQtPm1fbGFzdEhUVFBNZXRob2QgPSByZXF1ZXN0Lmh0dHBNZXRob2QoKTsKQEAgLTU1
NCw3ICs1NTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQogICAgICAgICAvLyB0byBpZ25v
cmUgaXQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0IChzaG9ydCBvZiByZW1vdmluZyBpdCBhbHRv
Z2V0aGVyKS4KICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzY4Njc1OTg+IGdhbGxlcnkubWUu
Y29tIGlzIHRlbXBvcmFyaWx5IHdoaXRlbGlzdGVkLCBzbyB0aGF0IFF1aWNrVGltZSBwbHVnLWlu
IGNvdWxkIHNlZSB0aGUgY3JlZGVudGlhbHMuCiAgICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVu
dGlhbChjcmVkZW50aWFsLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKLSAgICAgICAgS1VS
TCB1cmxUb1N0b3JlOworICAgICAgICBVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKICAgICAgICAg
ICAgIHVybFRvU3RvcmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CiAgICAg
ICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQod2ViQ3JlZGVudGlhbCwgY29yZShbZC0+bV9jdXJy
ZW50TWFjQ2hhbGxlbmdlIHByb3RlY3Rpb25TcGFjZV0pLCB1cmxUb1N0b3JlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKaW5kZXgg
NTVhZWFjMmVjZGJhN2IyMDhiMDY4ZjI1NGU3ZDBiM2E2NTNlYWNhNS4uOWMyNDY1ZDhmODJkODVj
NmY4OGZhNTc3MmQ2NmU4ODk4YjRhYzljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNs
dWRlICJDb29raWVKYXJRdC5oIgogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKICNpbmNsdWRlICJUaGlyZFBhcnR5Q29va2ll
c1F0LmgiCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNo
YXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tpZUphclF0ID0gMDsKIAotdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/
IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGEKICAgICBqYXItPnNldENvb2tpZXNGcm9tVXJs
KGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBAIC05NCw3ICs5NCw3
IEBAIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9p
bihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFFOZXR3b3Jr
Q29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5u
ZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0Ojpz
aGFyZWQoKTsKICAgICBpZiAoIWphcikKQEAgLTExMSwyMCArMTExLDIwIEBAIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4xU3RyaW5n
KCI7ICIpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykK
IHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNz
aW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFy
ZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgcmV0dXJuICEhamFyOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJs
Ki8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsg
Ly8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikK
K3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlT
ZXJ2ZXJRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2Vy
dmVyUXQuY3BwCmluZGV4IDBiZjM2ODcyNzEwZjNiZjQ1ZjRmMWRhOWNlM2ExMzBjM2NlYmJmNzEu
LmFhZTYxN2FmNTkzMTUyYjJhMjgwMWYwMWVhYjFhZjNlOGJlZThiN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlTZXJ2ZXJRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNlcnZlclF0LmNwcApAQCAt
MjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVy
LmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKIAogI2luY2x1ZGUgPFFOZXR3b3JrQWNjZXNzTWFuYWdlcj4KQEAg
LTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1WZWN0b3I8UHJveHlTZXJ2
ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0KQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAg
IFZlY3RvcjxQcm94eVNlcnZlcj4gc2VydmVyczsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
aW5kZXggYTZlMDg0MGJmMTMxMjAxNTI3NTIxODZhMWM3ZGZmODM1MzRkZTQwOS4uOGI3OTFmNDgy
ZDdiOWQzYjU1ZmZjNmE5NjFiN2Q0YjcwMzJjZmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
QEAgLTU3MCw3ICs1NzAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9u
c2VJZk5lZWRlZCgpCiAgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlN
RVR5cGVGb3JQYXRoKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKS5wYXRoKCkpOwogICAg
IH0KIAotICAgIEtVUkwgdXJsKG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT51cmwoKSk7CisgICAg
VVJMIHVybChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+dXJsKCkpOwogICAgIFJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UodXJsLCBtaW1lVHlwZS5sb3dlcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZXBseVdyYXBwZXItPnJlcGx5KCktPmhlYWRlcihRTmV0d29ya1JlcXVl
c3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVwbHlXcmFwcGVyLT5lbmNvZGluZygpLCBTdHJpbmcoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxl
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRs
ZVF0LmNwcAppbmRleCA4NGFiYTRlZTE4NjViMWNhM2ZkNmE3YzJjMDY0M2E1YjY2Yjk0NGYyLi45
NTViODQ5YTYwZDM4MmZkMDJlNDZmYTBlNjhhODczNmJlMmU4MGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGlmICgh
ZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBJZiBjcmVkZW50aWFscyB3ZXJlIHNwZWNpZmllZCBmb3IgdGhpcyByZXF1ZXN0LCBhZGQgdGhl
bSB0byB0aGUgdXJsLAogICAgICAgICAvLyBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwYXNzZWQgdG8g
UU5ldHdvcmtSZXF1ZXN0LgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJl
cXVlc3QoKS51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1
ZXN0KCkudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3Vz
ZXIpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAg
ICAgICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTEz
Miw3ICsxMzIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleAogICAgIGlmICghZC0+bV91c2Vy
LmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJZiBjcmVk
ZW50aWFscyB3ZXJlIHNwZWNpZmllZCBmb3IgdGhpcyByZXF1ZXN0LCBhZGQgdGhlbSB0byB0aGUg
dXJsLAogICAgICAgICAvLyBzbyB0aGF0IHRoZXkgd2lsbCBiZSBwYXNzZWQgdG8gUU5ldHdvcmtS
ZXF1ZXN0LgotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhkLT5tX2ZpcnN0UmVxdWVz
dC51cmwoKSk7CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZC0+bV9maXJzdFJlcXVl
c3QudXJsKCkpOwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIp
OwogICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAg
ICBkLT5tX2ZpcnN0UmVxdWVzdC5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCmlu
ZGV4IGM4YTk5MDhhYjhhYmEzMzQ3ODQ2NzlmNzljOTkyOTI2ZDZiODkwNGEuLmViN2I3NjcwNDdl
YzdkYWI3MzA5ODdlYjY5MTRiYWMyMTI5ODM4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMzksMjMgKzM5LDIz
IEBAIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6
IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkgCi0gICAgICAgICAgICA6IFJlc291cmNlUmVx
dWVzdEJhc2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCkgCisgICAgICAgIFJlc291
cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkgCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2Nv
bENhY2hlUG9saWN5KSAKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kg
PSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgewogICAgICAgICAgICAgc2V0SFRUUFJlZmVycmVy
KHJlZmVycmVyKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2Nv
bENhY2hlUG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0N2U1
NjZiOTAzYTllZmM5NzZiMjQ4ZDM2NTk5NWZiMDlkOGYxY2Y5Li43ZGVmZjJiNzFkNWQxNDU3Nzcy
NDJlMzY0NDY4MzcwOWE3MDQ0NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1
cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUp
CiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IDllNmVhYzBmYzA1MDllZDBjNDgwMjU2
ZTU1OTdlODU0NGExZTc0ZjIuLjg3MDA4OTI1MDUwNDI1NjYyMDhkYTI2YzM2ZDRiY2MwNTk1MmE3
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0
U3RyZWFtSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9T
b2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNTUsNyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2Nr
ZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoUVRjcFNvY2tldCogc29j
a2V0LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFNvY2tldFN0cmVhbUhhbmRsZShzb2NrZXQsIGNsaWVudCkpOyB9CiAKICAgICAgICAgdmly
dHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwm
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KFFUY3BTb2NrZXQqLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgICAgICAvLyBO
byBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkgYXNrIGZv
ciBjcmVkZW50aWFscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKaW5kZXggZjQ0N2NjMjA2
N2UwNjkyMmFhYTA3OTZmYTE3NThhYmQ3OGRlMGI1ZC4uYzE1NjBlNDkxNTgzZTE5Mzk4ZjJiN2Vi
OTgzYzMzMGZiZjEyNzcxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTsKIGNsYXNzIFNvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIHB1Ymxp
YzoKLSAgICBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNv
bnN0IEtVUkwmKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhh
bmRsZSosIGNvbnN0IFVSTCYpOwogICAgIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0
U3RyZWFtSGFuZGxlKiwgUVRjcFNvY2tldCopOwogICAgIH5Tb2NrZXRTdHJlYW1IYW5kbGVQcml2
YXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
U29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKaW5kZXggMTAzZGMxZmNjMWQyNmQ0YTVkMTA4
Mzk3YmY3NWIzYmM2M2JjMDdhMy4uOTYxOGFlNWJhYzg2NmYxNjYzMmJlMTdhNzU4YjIyNmYxYjJj
NzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1FcnJvci5oIgpAQCAt
NDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRs
ZVByaXZhdGU6OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBz
dHJlYW1IYW5kbGUsIGNvbnN0IEtVUkwmIHVybCkKK1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU6
OlNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUoU29ja2V0U3RyZWFtSGFuZGxlKiBzdHJlYW1IYW5k
bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fc3RyZWFtSGFuZGxlID0gc3RyZWFtSGFuZGxl
OwogICAgIG1fc29ja2V0ID0gMDsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZVByaXZhdGU6OnNvY2tldFNzbEVycm9ycyhjb25zdCBRTGlzdDxRU3NsRXJyb3I+JiBl
cnJvcikKIH0KICNlbmRpZgogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZSh1cmwsIGNsaWVudCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAl
cCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIFNv
Y2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50CiB9CiAKIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlKFFUY3BTb2NrZXQqIHNvY2tldCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBj
bGllbnQpCi0gICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKEtVUkwoKSwgY2xpZW50KQorICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShVUkwoKSwgY2xpZW50KQogewogICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVu
dCk7CiAgICAgbV9wID0gbmV3IFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUodGhpcywgc29ja2V0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVKYXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29r
aWVKYXJTb3VwLmNwcAppbmRleCBlYjZmY2M4OGFlZTEwMTIwZWZlODYyNGY3NmRlNzE0ODIxZTQ3
ODM1Li5kZDVkYmQ1NjdkMzM5OTkxZjgwNThhZGQ2NGIxZWFlNTI0NWU2ZWE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAu
Y3BwCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJH
T3duUHRyU291cC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29u
c3QgZ2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24p
OwogICAgIGlmICghamFyKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhCiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVzKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQorc3RhdGljIFN0cmlu
ZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7CiAgICAgU291cENvb2tpZUph
ciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKQEAg
LTEyOCwyMiArMTI4LDIyIEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMCiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgZmFsc2UpOwogfQogCi1TdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9
CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0
dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIFNvdXBDb29r
aWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CkBAIC0xNjYsNyArMTY2
LDcgQEAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNz
aW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAppbmRleCA1MGIzMmRl
M2Y2OWIxOTRkYWZhY2FiY2M0YTdhMWNjNWIwY2YwZTI2Li5jODVmZTY4OTE5MTVmYzE5YWI5YzBh
YzFhYzA0MTM3ZWRlMmM3MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1W
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBLVVJMJiwgY29uc3Qg
TmV0d29ya2luZ0NvbnRleHQqKQorVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JV
UkwoY29uc3QgVVJMJiwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCiAgICAgcmV0dXJuIFZlY3RvcjxQcm94eVNlcnZlcj4oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKaW5kZXggZjY2MGU5MDRlNTViZTQyNzUwODgxZWUzZDRiZmM2YjQ0ZTJiOWIz
MS4uODQ2ZTI1YThjZjUzODEwYjQ5OTQyM2NkNmE1NGEwYTJiMWVhMmUxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFu
ZGxlU291cC5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUF1dGhlbnRp
Y2F0aW9uVG9SZXF1ZXN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlc291cmNlUmVxdWVzdAog
ICAgIC8vIFdlIGFsd2F5cyBwdXQgdGhlIGNyZWRlbnRpYWxzIGludG8gdGhlIFVSTC4gSW4gdGhl
IENGTmV0d29yay1wb3J0IEhUVFAgZmFtaWx5IGNyZWRlbnRpYWxzIGFyZSBhcHBsaWVkIGluCiAg
ICAgLy8gdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjYWxsYmFjaywgYnV0
IGxpYnNvdXAgcmVxdWlyZXMgdXMgdG8gdXNlIHRoaXMgbWV0aG9kIHRvIG92ZXJyaWRlCiAgICAg
Ly8gYW55IHByZXZpb3VzbHkgcmVtZW1iZXJlZCBjcmVkZW50aWFscy4gSXQgaGFzIGl0cyBvd24g
cGVyLXNlc3Npb24gY3JlZGVudGlhbCBzdG9yYWdlLgotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRp
YWxzKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMocmVxdWVzdC51
cmwoKSk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIodXNlcik7CiAgICAgdXJsV2l0
aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybFdp
dGhDcmVkZW50aWFscyk7CkBAIC00MjIsNyArNDIyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVk
aXJlY3QoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh
dGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChTb3VwTWVzc2FnZSogbWVzc2FnZSwgS1VSTCYg
bmV3VVJMLCBib29sIGNyb3NzT3JpZ2luKQorc3RhdGljIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dF
VChTb3VwTWVzc2FnZSogbWVzc2FnZSwgVVJMJiBuZXdVUkwsIGJvb2wgY3Jvc3NPcmlnaW4pCiB7
CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCA9PSBTT1VQX01FVEhPRF9HRVQgfHwgbWVzc2FnZS0+
bWV0aG9kID09IFNPVVBfTUVUSE9EX0hFQUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2
MCw3ICs0NjAsNyBAQCBzdGF0aWMgdm9pZCBkb1JlZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5k
bGUpCiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QgPSBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpOwogICAgIFNvdXBNZXNzYWdlKiBtZXNzYWdlID0gZC0+bV9zb3VwTWVzc2FnZS5nZXQoKTsK
ICAgICBjb25zdCBjaGFyKiBsb2NhdGlvbiA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUo
bWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIkxvY2F0aW9uIik7Ci0gICAgS1VSTCBuZXdVUkwg
PSBLVVJMKHNvdXBVUklUb0tVUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSkpLCBsb2Nh
dGlvbik7CisgICAgVVJMIG5ld1VSTCA9IFVSTChzb3VwVVJJVG9LVVJMKHNvdXBfbWVzc2FnZV9n
ZXRfdXJpKG1lc3NhZ2UpKSwgbG9jYXRpb24pOwogICAgIGJvb2wgY3Jvc3NPcmlnaW4gPSAhcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCksIG5l
d1VSTCk7CiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKICAgICBuZXdSZXF1ZXN0LnNl
dEZpcnN0UGFydHlGb3JDb29raWVzKG5ld1VSTCk7CkBAIC03NzksNyArNzc5LDcgQEAgc3RhdGlj
IHZvaWQgYWRkRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIG1l
c3NhZ2UsIGNvbnN0IEJsb2IKIAogc3RhdGljIHZvaWQgYWRkRW5jb2RlZEJsb2JUb1NvdXBNZXNz
YWdlQm9keShTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVt
ZW50LCB1bnNpZ25lZCBsb25nJiB0b3RhbEJvZHlTaXplKQogewotICAgIFJlZlB0cjxCbG9iU3Rv
cmFnZURhdGE+IGJsb2JEYXRhID0gc3RhdGljX2Nhc3Q8QmxvYlJlZ2lzdHJ5SW1wbCY+KGJsb2JS
ZWdpc3RyeSgpKS5nZXRCbG9iRGF0YUZyb21VUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1l
bnQubV91cmwpKTsKKyAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBibG9iRGF0YSA9IHN0YXRp
Y19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9t
VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGVsZW1lbnQubV91cmwpKTsKICAgICBpZiAoIWJsb2JE
YXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCBhMGQwYjRjNzUyYTc1NDgx
NjI0NTA1MDliZDlhYWE0ZTIxMjJjMGQyLi5jZjIyNmMxOTBjNTM5MjgxYTdkZGRiYmJiMzNjM2Y2
YmVkNzNhMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zNSwyMCArMzUsMjAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVl
c3RCYXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAg
ICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYg
dXJsKQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgICAg
ICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAg
ICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAgICAsIG1fc291cEZs
YWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGlj
eSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkK
ICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4o
MCkpCkBAIC01NywxNCArNTcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAK
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAg
ICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3Rh
dGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAg
ICAgICAgIFJlc291cmNlUmVxdWVzdChTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UpCi0gICAgICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENh
Y2hlUG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAg
ICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggYjVhNGEwZGRhNzAyMmI2NGJkZTgw
OTY4N2ZkNjljYzc3YTZmYjc2My4uNDMwNzE1YzQ0ZDNjODVlMWM2OGIyN2U4MTBlZjI4ZDE3Yjhh
ZTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIFNvdXBV
UkkqIFJlc291cmNlUmVxdWVzdDo6c291cFVSSSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBzb3Vw
X3VyaV9uZXcodXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAotICAgIEtVUkwgdXJs
ID0gbV91cmw7CisgICAgVVJMIHVybCA9IG1fdXJsOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElk
ZW50aWZpZXIoKTsKICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9uZXcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAzNzBmNDMwYjY5Zjc1YmE2Mjg3
N2U2M2UwZjQ5M2MwOWJmZDIxYTBiLi40ODkxZjkzNWZjYmM3Zjc3MjNhNjYxNTdlZTJlZDkzM2Nm
NTNlMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgICAgICAs
IG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICAs
IG1fdGxzRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPigwKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAppbmRleCBhNmE1MTQ1MjcyODU0ZDUyMGNhYzZkMjRjOWU2MmU1NjQwZTNmY2Nh
Li44NDhmZmNmMGU4ZTk4NTY1YjVlMTc2YWEwM2I0ZmFjYjllMjA1ODY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZS5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRs
ZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtVUkwm
IHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwgU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb2Nr
ZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShHU29ja2V0Q29ubmVjdGlvbiogc29ja2V0Q29u
bmVjdGlvbiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUoc29ja2V0Q29ubmVjdGlvbiwgY2xpZW50KSk7IH0K
IAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKQEAgLTY3LDcgKzY3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjaGFyKiBtX3JlYWRCdWZmZXI7CiAgICAg
ICAgIHZvaWQqIG1faWQ7CiAKLSAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwm
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICAgICAgU29ja2V0U3RyZWFtSGFuZGxl
KGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOwogICAgICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoR1NvY2tldENvbm5lY3Rpb24qLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQq
KTsKIAogICAgICAgICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1
dCBwcm94eSBtYXkgYXNrIGZvciBjcmVkZW50aWFscy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3Vw
LmNwcAppbmRleCBiY2RkOTRiY2QyN2VjNzk0MTlmMzJlODg4YmY2NzNjZWIwODU5YWI4Li41NTA4
ZjM2MDk1NTNkZGE4MmIwYTVlOWRjMmE5MzM3MGExYjYwMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKQEAgLTgwLDcgKzgwLDcgQEAgc3Rh
dGljIHZvaWQqIGFjdGl2YXRlSGFuZGxlKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlKQogICAg
IHJldHVybiBpZDsKIH0KIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1NvY2tl
dFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
dXJsLCBjbGllbnQpCiAgICAgLCBtX3JlYWRCdWZmZXIoMCkKIHsKQEAgLTk2LDcgKzk2LDcgQEAg
U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQKIH0KIAogU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRT
dHJlYW1IYW5kbGUoR1NvY2tldENvbm5lY3Rpb24qIHNvY2tldENvbm5lY3Rpb24sIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQotICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShL
VVJMKCksIGNsaWVudCkKKyAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoVVJMKCksIGNsaWVu
dCkKICAgICAsIG1fcmVhZEJ1ZmZlcigwKQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCmlu
ZGV4IGYwN2FkN2Y2YzRlMjcwMTAyZTBkMTQ4NmFkYjg1ZmFiNDFkMmY5ZTUuLjU1M2JhZDkzODUz
OWYzMDk2ZmYwNWRhYjkwMjUwMTk4MTI3ODY0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuY3BwCkBAIC0yOSwxMCArMjks
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gc291cF91cmlfdG9fc3RyaW5nLCBhbmQgdGh1
cyB0aGUgcmVxdWVzdHMgYXJlIG5vdCBwcm9wZXJseQogLy8gYnVpbHQuIEZpeGluZyBzb3VwX3Vy
aV90b19zdHJpbmcgaXMgYSBuby1ubyBhcyB0aGUgbWFpbnRhaW5lciBkb2VzCiAvLyBub3Qgd2Fu
dCB0byBicmVhayBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgaW1wbGVtZW50YXRpb25zCi1L
VVJMIHNvdXBVUklUb0tVUkwoU291cFVSSSogc291cFVSSSkKK1VSTCBzb3VwVVJJVG9LVVJMKFNv
dXBVUkkqIHNvdXBVUkkpCiB7CiAgICAgR093blB0cjxnY2hhcj4gdXJsU3RyaW5nKHNvdXBfdXJp
X3RvX3N0cmluZyhzb3VwVVJJLCBGQUxTRSkpOwotICAgIEtVUkwgdXJsKEtVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KHVybFN0cmluZy5nZXQoKSkpOwogCiAgICAgaWYgKCFzb3VwVVJJLT5wYXNzd29y
ZCkKICAgICAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb3VwVVJJVXRpbHMuaAppbmRleCA2OTc3MmU3MjY5ODI4MmIwNjI4YWM0
NTc0ZDc4ZGUxNGIzZDRkYzk3Li41ZjZlOGQ1MjI4NWQ2MDE3ODJkMDU4M2RiMDMzNDE3NmZkNjQx
YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cFVSSVV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBVUklVdGlscy5oCkBAIC0yNiwxMiArMjYsMTIgQEAKICNpZm5kZWYgU291cFVSSVV0aWxzX2gK
ICNkZWZpbmUgU291cFVSSVV0aWxzX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKIAogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBVUkkgU291cFVSSTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewotS1VSTCBzb3VwVVJJVG9LVVJMKFNvdXBVUkkqIHNvdXBVUkkpOworVVJMIHNvdXBV
UklUb0tVUkwoU291cFVSSSogc291cFVSSSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKaW5kZXggN2Ix
MjZlMDMxNDM1NDA5MzcwZDRjMjlkMmRmMGRmZDI3MjEwNTU5ZC4uOGM3OTA1NDIzZGQxNmE0YTg5
OGZkY2JjYWNjZGE3MzA2YTU3ZWRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1
ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgpA
QCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBh
cnR5IGFyZ3VtZW50LgogICAgIFN0cmluZyBzdHIgPSB1cmwuc3RyaW5nKCk7CkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVyCiAgICAgSW50ZXJuZXRTZXRDb29raWUoc3Ry
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwLCB2YWwuY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYg
dXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBm
aXJzdFBhcnR5IGFyZ3VtZW50LgogCkBAIC02NSwyNSArNjUsMjUgQEAgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCkKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwogfQogCi1TdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIC8vIEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5IGNvb2tpZQogICAgIHJldHVybiBjb29raWVz
Rm9yRE9NKHNlc3Npb24uY29udGV4dCgpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJl
dHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL1Byb3h5U2VydmVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL1Byb3h5U2VydmVyV2luLmNwcAppbmRleCBjNjEwZTIwYjgxN2QxMWUyMWY4NDEwYTgx
N2NmM2ZkZTE0ZDEzMGMzLi4xNDk1YjQ1YjgxZDRmNmVjNmQ0YjBmNTFjMmJjYTBlMmVmYmQwY2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Qcm94eVNl
cnZlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJv
eHlTZXJ2ZXJXaW4uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNv
bnN0IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJz
Rm9yVVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50LgogICAgIHJldHVybiBWZWN0b3I8UHJveHlTZXJ2ZXI+KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhh
bmRsZVdpbi5jcHAKaW5kZXggMzIwYzQ1ZDY1NTc5MTliZWU3MjJjNDE1OWI4ZmNkMjhmYmFkZWI0
OC4uMGY2NmI3MDdhMGRmOTQ3NWM3NTM0MTIzMjIxOWZlYTRmYWYxZmUxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxl
V2luLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmludGVybmV0
U3RhdHVzQ2FsbGJhY2soSElOVEVSTkVUIGludGVybmV0SGFuZGxlLCBEV09SRF9QVFIKIHZvaWQg
UmVzb3VyY2VIYW5kbGU6Om9uUmVkaXJlY3QoKQogewogICAgIFJlc291cmNlUmVxdWVzdCBuZXdS
ZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCk7Ci0gICAgbmV3UmVxdWVzdC5zZXRVUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIGQtPm1fcmVkaXJlY3RVcmwpKTsKKyAgICBuZXdSZXF1ZXN0LnNldFVSTChV
UkwoUGFyc2VkVVJMU3RyaW5nLCBkLT5tX3JlZGlyZWN0VXJsKSk7CiAKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKGZpcnN0UmVxdWVzdCgpLnVybCgpLCBTdHJpbmcoKSwgMCwgU3RyaW5n
KCksIFN0cmluZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCAxMGI5NTI0N2NhZGNjOTJkZTkxMjNmMmRl
NTVlNzRjOGZjMDRmOTQxLi5kMWViN2Q1NGMwNzI2OGI5ODJkMjllMTFiMTFmNjZlNzg5NzMzODY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZVJlcXVlc3QuaApAQCAtMzMsMjMgKzMzLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKIHB1Ymxp
YzoKICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi0gICAgICAgIDogUmVz
b3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKKyAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgewogICAgIH0KIAotICAg
IFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpCisgICAgUmVzb3VyY2VSZXF1ZXN0KGNv
bnN0IFVSTCYgdXJsKQogICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90
b2NvbENhY2hlUG9saWN5KQogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAg
OiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgIHsKICAgICAgICAgc2V0SFRU
UFJlZmVycmVyKHJlZmVycmVyKTsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQorICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQ
b2xpY3kpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDM4MjY2ODMzMGNhNTFhZTlh
NmM1ZDkwZWQ3OTNiZmY3NjBlNzhkZDMuLmJlYzBlMDQzY2E2M2NkMzdlZGNjNTJiNjVhYzQwYThh
YzY2MjgxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAgUmVzb3VyY2VSZXNw
b25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2UodXJsLCBtaW1lVHlw
ZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1lKQogICAgIHsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Nv
Y2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IDYyODA4ZWM1NTBlZDFmYmYyMzJiZTFiNDYwMGY2ZjAw
OGIzMjQ3MTMuLjAzMzUwYTQ3NTViNzZhMzI4ZjZmZGMxYjJhZDM0ODM1MjkwMzlmZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0
cmVhbUhhbmRsZS5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29j
a2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0
IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNv
Y2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRT
dHJlYW1IYW5kbGUoKTsKIApAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgIFNvY2tldFN0
cmVhbUhhbmRsZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAg
IC8vIE5vIGF1dGhlbnRpY2F0aW9uIGZvciBzdHJlYW1zIHBlciBzZSwgYnV0IHByb3h5IG1heSBh
c2sgZm9yIGNyZWRlbnRpYWxzLgogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxl
V2luLmNwcAppbmRleCBiMmI1NDBmYjI0YzJmYWQ3NmEyODUwOWRlZmI2ZWNhYTZkYzcwOGZiLi4x
NmFjNzg4MmM1ZGViZmVmMTA5ZWE2Y2I2NmU4YjI5ZDg5NmZhODdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhh
bmRsZVdpbi5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2NrZXRTdHJl
YW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKHVybCwg
Y2xpZW50KQogewogICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBj
bGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uaXgvUGFzdGVib2FyZE5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
aXgvUGFzdGVib2FyZE5peC5jcHAKaW5kZXggMzRlYzFjMGUwNTJmM2Q3MjMyNmViNTc3ODM1NGRh
ZGJkMTllNjA3MS4uMDc3YjQwOWYwNWUwOTk3ZWFjNjNjM2FiMmJhMmMyY2M0ODEzODAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcApAQCAtNTYs
NyArNTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShO
b2RlKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
SW1hZ2UoTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tVUkxR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LVVJMUXQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZGNhNGVlZTBiZGRlYjI0Y2Y4OTMxMTE2ZmZmMDA4MjQ0YTZh
ODZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0tVUkxRdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlRleHRFbmNv
ZGluZy5oIgotI2luY2x1ZGUgInF1cmwuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VSTChjb25zdCBRVXJsJiB1cmwpCi17
Ci0gICAgKnRoaXMgPSBLVVJMKEtVUkwoKSwgdXJsLnRvRW5jb2RlZCgpLmNvbnN0RGF0YSgpLCBV
VEY4RW5jb2RpbmcoKSk7Ci19Ci0KLUtVUkw6Om9wZXJhdG9yIFFVcmwoKSBjb25zdAotewotICAg
IHJldHVybiBRVXJsKG1fc3RyaW5nKTsKLX0KLQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRo
KCkgY29uc3QKLXsKLSAgICBpZiAoIWlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotCi0gICAgaWYgKGlzTG9jYWxGaWxlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxR
VXJsPigqdGhpcykudG9Mb2NhbEZpbGUoKTsKLQotICAgIC8vIEEgdmFsaWQgcXJjIHJlc291cmNl
IHBhdGggYmVnaW5zIHdpdGggYSBjb2xvbi4KLSAgICBpZiAocHJvdG9jb2xJcygicXJjIikpCi0g
ICAgICAgIHJldHVybiAiOiIgKyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCgpKTsKLQot
ICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Bhc3RlYm9hcmRRdC5jcHAKaW5kZXggZWI4ZWRmZGIyYTRjMTVkYWMzNDQyMDU1ZjBmNjA2YjRj
ODUwMDkzNi4uYzU1Mzc3NjJjYmI3OGJhNGJmYTFiYjQ4NWUwZWQyYmU2MzlhYTlkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QYXN0ZWJvYXJkUXQuY3BwCkBAIC0yMDUsNyArMjA1
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJv
YXJkVVJMKQogI2VuZGlmCiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBu
b2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJ
bWFnZShOb2RlKiBub2RlLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VS
VChub2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZv
cm1TdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQu
aAppbmRleCA0MjgxY2Q2NzZhMmIwNmE2MTQwNzEwNGQxOGQxZjNiMWJmNDg3MDU3Li5lMmQwODgy
OTQ4NDFmYmZhYTY2MDhhMTFmNmE4MWQ2YzJiOGYzYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBQ
bGF0Zm9ybVN1cHBvcnRfaAogI2RlZmluZSBQbGF0Zm9ybVN1cHBvcnRfaAogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzUXQuY3BwCmluZGV4IGU5M2E3NjM2YzNlZmEwZjFh
NzNiNTNhY2ZmNmMzOGJmNzU1YWQxN2IuLjU5OTVkZmUyY2ZiMmRjZTA3NGIxZmYyNTg2Mzk5MGJk
Y2NhYTI3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFy
eUxpbmtTdHVic1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3Jh
cnlMaW5rU3R1YnNRdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAt
MTA0LDcgKzEwNCw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoVmVjdG9yPFN0cmluZz4m
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmKQorU3Ry
aW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9VUkxRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9VUkxRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc4ZTY1YWM3MDE5NmM4ZjhkNzlkNzdk
OTg0ZGMxNTM5NDA1YWU3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1VSTFF0LmNwcApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSAicXVybC5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitVUkw6
OlVSTChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgKnRoaXMgPSBVUkwoVVJMKCksIHVybC50b0Vu
Y29kZWQoKS5jb25zdERhdGEoKSwgVVRGOEVuY29kaW5nKCkpOworfQorCitVUkw6Om9wZXJhdG9y
IFFVcmwoKSBjb25zdAoreworICAgIHJldHVybiBRVXJsKG1fc3RyaW5nKTsKK30KKworU3RyaW5n
IFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAoreworICAgIGlmICghaXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoaXNMb2NhbEZpbGUoKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFFVcmw+KCp0aGlzKS50b0xvY2FsRmlsZSgpOworCisgICAgLy8g
QSB2YWxpZCBxcmMgcmVzb3VyY2UgcGF0aCBiZWdpbnMgd2l0aCBhIGNvbG9uLgorICAgIGlmIChw
cm90b2NvbElzKCJxcmMiKSkKKyAgICAgICAgcmV0dXJuICI6IiArIGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyhwYXRoKCkpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKaW5kZXggZmUwZmU0Njk1MWZkYjI4NjA4MTA2
Nzk4MjUzYjBmYzE3MTAzYjRjNy4uYTAxY2QwNDQ0YWFlZTkyMmU4NDAxZDFmMDY2MzI3M2I3YmM5
ZjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNwcApAQCAtMjYsNyAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkJTdHJpbmcuaCIKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC02OCw3ICs2OCw3IEBAIEJTdHJpbmc6OkJTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKQogICAgICAgICBtX2JzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbihzLmNoYXJhY3RlcnMoKSwg
cy5sZW5ndGgoKSk7CiB9CiAKLUJTdHJpbmc6OkJTdHJpbmcoY29uc3QgS1VSTCYgdXJsKQorQlN0
cmluZzo6QlN0cmluZyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpKQog
ICAgICAgICBtX2JzdHIgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0JTdHJpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKaW5k
ZXggZGMxYzI3ZDhjOGI3Y2RmMTA0ZjYwYzAwN2FiYWRhMTljZjA5MDhlNi4uNDU3Njc4ZTM3MWFj
YjZhYWNhNTJhYmI0YjBjMzE4MWViODczODVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0JTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
QlN0cmluZy5oCkBAIC0zNiw3ICszNiw3IEBAIHR5cGVkZWYgd2NoYXJfdCogQlNUUjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAKICAg
ICBjbGFzcyBCU3RyaW5nIHsKICAgICBwdWJsaWM6CkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQlN0cmluZyhjb25zdCB3Y2hhcl90Kiwgc2l6ZV90IGxlbmd0
aCk7CiAgICAgICAgIEJTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIEJTdHJpbmcoY29u
c3QgQXRvbWljU3RyaW5nJik7Ci0gICAgICAgIEJTdHJpbmcoY29uc3QgS1VSTCYpOworICAgICAg
ICBCU3RyaW5nKGNvbnN0IFVSTCYpOwogI2lmIFVTRShDRikKICAgICAgICAgQlN0cmluZyhDRlN0
cmluZ1JlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXggYmZhMGI2NzE0NzExMjI1MzA2N2FlNzc3
NWNlZTUwMmFkN2VlMjJjNy4uZjQ1ODM0YTljZTZmNzNjNmQyMWE3NzdmZGZkYmMwNTc0NzViNzY2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxp
dGllc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0
aWxpdGllc1dpbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJDbGlwYm9hcmRVdGls
aXRpZXNXaW4uaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0xNzMsNyArMTczLDcgQEAg
c3RhdGljIEZPUk1BVEVUQyogdGV4dGh0bWxGb3JtYXQoKQogICAgIHJldHVybiAmdGV4dGh0bWxG
b3JtYXQ7CiB9CiAKLUhHTE9CQUwgY3JlYXRlR2xvYmFsRGF0YShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUpCitIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgU3RyaW5nIG11dGFibGVVUkwodXJsLnN0
cmluZygpKTsKICAgICBTdHJpbmcgbXV0YWJsZVRpdGxlKHRpdGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAppbmRleCBlOGQ0
NzU1ZTM3OTgzNjZkOTJjNjcxMWJlMDcyNGEzMDYzOWJhNDc2Li4yYTVlZTAxZjczM2FkMWFiNTQz
YTg3YzNhMDU1ZTE5YTI0MmRhZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCkBAIC0zMywxMSArMzMsMTEgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogCiBIR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgU3RyaW5nJik7CiBIR0xPQkFMIGNy
ZWF0ZUdsb2JhbERhdGEoY29uc3QgVmVjdG9yPGNoYXI+Jik7Ci1IR0xPQkFMIGNyZWF0ZUdsb2Jh
bERhdGEoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK0hHTE9CQUwgY3Jl
YXRlR2xvYmFsRGF0YShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKIEZP
Uk1BVEVUQyogdXJsV0Zvcm1hdCgpOwogRk9STUFURVRDKiB1cmxGb3JtYXQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFnZVdpbi5jcHAKaW5kZXggYzA4ZGE3NGYzNTVm
YjAwMjM4NmFjMzYxNWNmYjg4ODQ1YmEzOThjNi4uMzFhMzJlNGMzYzAyNTNlODE1N2U4NDg1YmQx
M2I1YTExY2VlYTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Ry
YWdJbWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdJbWFn
ZVdpbi5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJIV25kREMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdHJpbmdUcnVuY2F0b3IuaCIKICNpbmNs
dWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiV2ViQ29yZVRleHRSZW5kZXJlci5oIgpAQCAtMTIx
LDcgKzEyMSw3IEBAIHN0YXRpYyBGb250IGRyYWdMYWJlbEZvbnQoaW50IHNpemUsIGJvb2wgYm9s
ZCwgRm9udFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgaW5MYWJlbCwgRm9udFJlbmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCitE
cmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBpbkxhYmVsLCBGb250UmVuZGVyaW5nTW9kZSBmb250UmVuZGVyaW5nTW9kZSkKIHsKICAgICAv
LyBUaGlzIGlzIG1vcmUgb3IgbGVzcyBhbiBleGFjdCBtYXRjaCBmb3IgdGhlIE1hYyBPUyBYIGNv
ZGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApp
bmRleCBlYWFjMTUwNjBmYWM1ZjU4NTY3ODg5YWQyYjllZmU5ZTZiMjYyZDc0Li44MTZhMzE1MDBk
Nzk5Yjk2ZDNlZjNlNDRiMmMwNWU1MThkZDg0YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAi
SFduZERDLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkltYWdlLmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC0zNDQs
NyArMzQ0LDcgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6cmVhZEZpbGVuYW1lcygpCiAj
ZW5kaWYKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25z
dCBLVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoUGxhaW5UZXh0LCBib29sIHdpdGhI
VE1MKQorc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBVUkwm
IHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGhQbGFpblRleHQsIGJvb2wgd2l0aEhUTUwpCiB7
CiAgICAgQVNTRVJUKGRhdGEpOwogCkBAIC0zOTYsNyArMzk2LDcgQEAgYm9vbCBQYXN0ZWJvYXJk
Ojp3cml0ZVN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAg
ICBDbGlwYm9hcmREYXRhVHlwZSB3aW5UeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0
eXBlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKQotICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIEtV
UkwoS1VSTCgpLCBkYXRhKSwgU3RyaW5nKCksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBVUkwoVVJMKCks
IGRhdGEpLCBTdHJpbmcoKSwgZmFsc2UsIHRydWUpOwogCiAgICAgaWYgKHdpblR5cGUgPT0gQ2xp
cGJvYXJkRGF0YVR5cGVUZXh0KSB7CiAgICAgICAgIFNUR01FRElVTSBtZWRpdW0gPSB7MH07CkBA
IC01NjUsNyArNTY1LDcgQEAgc3RhdGljIFN0cmluZyBmaWxlc3lzdGVtUGF0aEZyb21VcmxPclRp
dGxlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKICAgICB9CiAKICAgICBp
ZiAoIWxzdHJsZW4oZnNQYXRoQnVmZmVyKSkgewotICAgICAgICBLVVJMIGt1cmwoS1VSTCgpLCB1
cmwpOworICAgICAgICBVUkwga3VybChVUkwoKSwgdXJsKTsKICAgICAgICAgdXNlZFVSTCA9IHRy
dWU7CiAgICAgICAgIC8vIFRoZSBmaWxlbmFtZSBmb3IgYW55IGNvbnRlbnQgYmFzZWQgZHJhZyBv
ciBmaWxlIHVybCBzaG91bGQgYmUgdGhlIGxhc3QgZWxlbWVudCBvZiAKICAgICAgICAgLy8gdGhl
IHBhdGguIElmIHdlIGNhbid0IGZpbmQgaXQsIG9yIHdlJ3JlIGNvbWluZyB1cCB3aXRoIHRoZSBu
YW1lIGZvciBhIGxpbmsKQEAgLTY0MCwxNCArNjQwLDE0IEBAIGV4aXQ6CiAgICAgcmV0dXJuIGhy
OwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IEtVUkwm
IGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
VG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKIHsK
ICAgICBpZiAoIW1fd3JpdGFibGVEYXRhT2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgV2Vi
Q29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIGt1cmwsIHRpdGxlU3Ry
LCB0cnVlLCB0cnVlKTsKIAogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwotICAgIEFT
U0VSVCh1cmwuY29udGFpbnNPbmx5QVNDSUkoKSk7IC8vIEtVUkw6OnN0cmluZygpIGlzIFVSTCBl
bmNvZGVkLgorICAgIEFTU0VSVCh1cmwuY29udGFpbnNPbmx5QVNDSUkoKSk7IC8vIFVSTDo6c3Ry
aW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKICAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5c3RlbVBh
dGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCBMIi5VUkwiLCB0cnVlKTsKICAgICBTdHJp
bmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxy
XG4iKTsKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgd3JpdGVVUkxUb0RhdGFPYmplY3QocGFz
dGVib2FyZFVSTC51cmwsIHBhc3RlYm9hcmRVUkwudGl0bGUpOwogfQogCi12b2lkIFBhc3RlYm9h
cmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICBBU1NFUlQobm9kZSk7CiAKQEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVDb250ZW50KFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICByZXR1cm4gbWVtT2JqOwogfQogCi1zdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxI
RHJvcENvbnRlbnQoY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZm
ZXIqIGRhdGEpCitzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQoY29uc3Qg
VVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBp
ZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEw
MDEsNyArMTAwMSw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChj
b25zdCBLVVJMJiB1cmwsIFN0cmluZyYgZmlsZU5hbWUsIFNoYXJlCiAgICAgcmV0dXJuIG1lbU9i
ajsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0KEVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRv
RGF0YU9iamVjdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBT
aG92ZSBpbWFnZSBkYXRhIGludG8gYSBEYXRhT2JqZWN0IGZvciB1c2UgYXMgYSBmaWxlCiAgICAg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZ2V0Q2FjaGVkSW1hZ2UoZWxlbWVudCk7CkBAIC0x
MDMyLDcgKzEwMzIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VUb0RhdGFPYmplY3Qo
RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsKQogICAgIHdyaXRlRmlsZVRvRGF0YU9i
amVjdChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgaW1hZ2VGaWxlRGVzY3JpcHRvciwgaW1h
Z2VGaWxlQ29udGVudCwgaERyb3BDb250ZW50KTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBXZWJDb3JlOjp3cml0ZVVS
TChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgdXJsLCB0aXRsZSwgdHJ1ZSwgZmFsc2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRv
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2lu
LmNwcAppbmRleCBiZDQwZjIwYTM0MmIwNzRlODBjOWM5ZmU1MjBmMTllMDIxYzM0OTI1Li40OGRl
Mzg3N2JhYzdiNDlkMGM0NzBkMzIxZjRmMTE0MzA4OGQzMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU1NMS2V5R2VuZXJhdG9yV2luLmNwcApAQCAtMzUsNyArMzUs
NyBAQCB2b2lkIFdlYkNvcmU6OmdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JiB2
KQogICAgIHYuYXBwZW5kKCJNZWRpdW0gR3JhZGUiKTsKIH0KIAotU3RyaW5nIFdlYkNvcmU6OnNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3Ry
aW5nJiBjaGFsbGVuZ2UsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJDb3JlOjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJpbmcga2V5U3RyaW5nOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3Bw
CmluZGV4IDg1NmNlYTk2NWVlYTMzZWU4MDA1YmVlODA0MDU2MDdjYWE3NjQxNWEuLjQwNTZlMzIw
NWMwMTQzMGY3YTVhYzBkOTFlZTMyMWNlNjFkOWIzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIDxrZXlnZW4+Ci1TdHJpbmcgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJM
JikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KK1N0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiB2b2lkIGdldFN1
cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAK
ICNpZiAhVVNFKENGTkVUV09SSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFz
ZS5jcHAKaW5kZXggZjhjYzAxMzg4YTgzZmNmMGZmY2VmNDBiNGRiMWVmMDNjNWY0NGJmYi4uY2M2
MmM5ZWYyZWY0NTI5NWJlNTE2MmUzNjEyZWE5YjkzOWFiOTY2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJQ
bHVnaW5EYXRhYmFzZS5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGx1Z2luUGFja2FnZS5oIgogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgpAQCAtMjgxLDcgKzI4MSw3IEBAIFN0cmluZyBQbHVnaW5EYXRhYmFzZTo6TUlNRVR5cGVGb3JF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIGNvbnN0CiAgICAgcmV0dXJuIG1pbWVU
eXBlRm9yUGx1Z2luLmdldChwbHVnaW5DaG9pY2VzWzBdKTsKIH0KIAotUGx1Z2luUGFja2FnZSog
UGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIG1pbWVU
eXBlKQorUGx1Z2luUGFja2FnZSogUGx1Z2luRGF0YWJhc2U6OmZpbmRQbHVnaW4oY29uc3QgVVJM
JiB1cmwsIFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBwbHVnaW5Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKaW5kZXggNmZhZTVmMDhhNzA4YzA0MTY5ZmZmMjIy
OTQzMjBiNWJkNTcxZThmOC4uOGQ3ZWQwODQwOWQ3MjQyMDE4YTJhMTNjMzlmZTUyYjA3MThkNmI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRWxlbWVudDsKICAgICBjbGFzcyBG
cmFtZTsKICAgICBjbGFzcyBJbnRTaXplOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogICAgIGNsYXNzIFBsdWdpbkRhdGFiYXNlQ2xpZW50OwogICAgIGNsYXNzIFBsdWdpblBhY2th
Z2U7CiAKQEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0
aWMgYm9vbCBpc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSk7CiAgICAgICAgIHN0YXRpYyBpbnQgcHJlZmVycmVkUGx1Z2luQ29tcGFyZShjb25zdCB2b2lk
KiwgY29uc3Qgdm9pZCopOwogCi0gICAgICAgIFBsdWdpblBhY2thZ2UqIGZpbmRQbHVnaW4oY29u
c3QgS1VSTCYsIFN0cmluZyYgbWltZVR5cGUpOworICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5k
UGx1Z2luKGNvbnN0IFVSTCYsIFN0cmluZyYgbWltZVR5cGUpOwogICAgICAgICBQbHVnaW5QYWNr
YWdlKiBwbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAg
dm9pZCBzZXRQcmVmZXJyZWRQbHVnaW5Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0
cmVhbS5jcHAKaW5kZXggNTA1OWFkYmUwYjhjNDRlZTQ5YzFhMjIzNTkyODlhOWE1ZWM3ZmZiZC4u
OGIzYmQ5OTI5NTRhNTllOGJkNTlmMTBkYTYzYjJkMDI5ZTIzNzYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgUGx1Z2lu
U3RyZWFtOjpzdGFydFN0cmVhbSgpCiB7CiAgICAgQVNTRVJUKG1fc3RyZWFtU3RhdGUgPT0gU3Ry
ZWFtQmVmb3JlU3RhcnRlZCk7CiAKLSAgICBjb25zdCBLVVJMJiByZXNwb25zZVVSTCA9IG1fcmVz
b3VyY2VSZXNwb25zZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0gbV9yZXNv
dXJjZVJlc3BvbnNlLnVybCgpOwogCiAgICAgLy8gU29tZSBwbHVnaW5zIChGbGFzaCkgZXhwZWN0
IHRoYXQgamF2YXNjcmlwdCBVUkxzIGFyZSBwYXNzZWQgYmFjayBkZWNvZGVkIGFzIHRoaXMgaXMg
dGhlCiAgICAgLy8gZm9ybWF0IHVzZWQgd2hlbiByZXF1ZXN0aW5nIHRoZSBVUkwuCkBAIC0zODYs
NyArMzg2LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhKCkKICAgICB9IAogfQog
Ci12b2lkIFBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVx
dWVzdFVSTCwgY29uc3QgQ1N0cmluZyYgcmVzdWx0U3RyaW5nKQordm9pZCBQbHVnaW5TdHJlYW06
OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgQ1N0cmlu
ZyYgcmVzdWx0U3RyaW5nKQogewogICAgIGRpZFJlY2VpdmVSZXNwb25zZSgwLCBSZXNvdXJjZVJl
c3BvbnNlKHJlcXVlc3RVUkwsICJ0ZXh0L3BsYWluIiwgcmVzdWx0U3RyaW5nLmxlbmd0aCgpLCAi
IiwgIiIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggNTVkMTcw
MmJmOWI1OWNjYWI0NzVlYzVkM2MzMmZkOWQ2OGNmZWQ3ZC4uN2MwNDg2NmE4OTlmODgyOWVkNWVh
ZDg0ZmZhZTdjYWEzZDdjYzJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5o
CkBAIC0yOCw3ICsyOCw3IEBACiAjZGVmaW5lIFBsdWdpblN0cmVhbV9oCiAKICNpbmNsdWRlICJG
aWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luUXVpcmtT
ZXQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTcwLDcgKzcwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0TG9hZE1hbnVhbGx5KGJvb2wgbG9h
ZE1hbnVhbGx5KSB7IG1fbG9hZE1hbnVhbGx5ID0gbG9hZE1hbnVhbGx5OyB9CiAKLSAgICAgICAg
dm9pZCBzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
VEY6OkNTdHJpbmcmIHJlc3VsdFN0cmluZyk7CisgICAgICAgIHZvaWQgc2VuZEphdmFTY3JpcHRT
dHJlYW0oY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXVEY6OkNTdHJpbmcmIHJlc3VsdFN0
cmluZyk7CiAgICAgICAgIHZvaWQgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShOUFJlYXNvbik7CiAK
ICAgICAgICAgc3RhdGljIE5QUCBvd25lckZvclN0cmVhbShOUFN0cmVhbSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYWZjMGFhYjU5NjYzNjdjOTM4MGQ0MDcyMjQ3
NjIyYmVmMDQ1ODA5My4uMGIyZjg2ZDBhMDkyNTM5ODhkNjU4MmIzMWY5MzkxYmMwYWMzMGFmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAg
c3RhdGljIEluc3RhbmNlTWFwJiBpbnN0YW5jZU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
c3RhdGljIFN0cmluZyBzY3JpcHRTdHJpbmdJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJs
KQorc3RhdGljIFN0cmluZyBzY3JpcHRTdHJpbmdJZkphdmFTY3JpcHRVUkwoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3Jt
UmVxdWVzdChQbHVnaW5SZXF1ZXN0KiByZXF1ZXN0KQogICAgIGlmIChtX3BhcmVudEZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpICE9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCkgJiYgKHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSB8fCBtX3BhcmVu
dEZyYW1lLT50cmVlKCkuZmluZCh0YXJnZXRGcmFtZU5hbWUpICE9IG1fcGFyZW50RnJhbWUpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0LT5mcmFtZUxv
YWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIHJlcXVlc3RVUkwg
PSByZXF1ZXN0LT5mcmFtZUxvYWRSZXF1ZXN0KCkucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAg
ICAgU3RyaW5nIGpzU3RyaW5nID0gc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3RV
UkwpOwogCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihyZXF1ZXN0
LT5zaG91bGRBbGxvd1BvcHVwcygpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6
IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKQEAgLTUxMiw3ICs1MTIsNyBAQCBOUEVy
cm9yIFBsdWdpblZpZXc6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVMb2FkUmVx
dWVzdCwgYm9vbCBzZW5kTm90aQogewogICAgIEFTU0VSVChmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSA9PSAiR0VUIiB8fCBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpOwogCi0gICAgS1VSTCB1cmwg
PSBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwg
PSBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgIAogICAgIGlm
ICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTlBFUlJfSU5WQUxJRF9VUkw7CkBAIC01
NDEsNyArNTQxLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKGNvbnN0IEZyYW1lTG9hZFJl
cXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkKICAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7CiB9CiAKLXN0YXRpYyBLVVJMIG1ha2VVUkwoY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgY2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCitzdGF0aWMgVVJMIG1ha2VVUkwoY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKIHsKICAgICBTdHJp
bmcgdXJsU3RyaW5nID0gcmVsYXRpdmVVUkxTdHJpbmc7CiAKQEAgLTU0OSw3ICs1NDksNyBAQCBz
dGF0aWMgS1VSTCBtYWtlVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IGNoYXIqIHJlbGF0
aXZlVVJMU3RyaW5nKQogICAgIHVybFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJ1xuJywgIiIp
OwogICAgIHVybFN0cmluZy5yZXBsYWNlV2l0aExpdGVyYWwoJ1xyJywgIiIpOwogCi0gICAgcmV0
dXJuIEtVUkwoYmFzZVVSTCwgdXJsU3RyaW5nKTsKKyAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVy
bFN0cmluZyk7CiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6Z2V0VVJMTm90aWZ5KGNvbnN0IGNo
YXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lkKiBub3RpZnlEYXRhKQpAQCAtNzk2LDcg
Kzc5Niw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0UGFyYW1ldGVycyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0CiAgICAgbV9wYXJhbUNvdW50ID0gcGFy
YW1Db3VudDsKIH0KIAotUGx1Z2luVmlldzo6UGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUs
IGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHBsdWdpbiwgSFRNTFBsdWdJbkVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KEZy
YW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgUGx1Z2luUGFja2FnZSogcGx1
Z2luLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogICAgIDogbV9w
YXJlbnRGcmFtZShwYXJlbnRGcmFtZSkKICAgICAsIG1fcGx1Z2luKHBsdWdpbikKICAgICAsIG1f
ZWxlbWVudChlbGVtZW50KQpAQCAtOTQ4LDcgKzk0OCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXND
YWxsaW5nUGx1Z2luKCkKICAgICByZXR1cm4gc19jYWxsaW5nUGx1Z2luID4gMDsKIH0KIAotUGFz
c1JlZlB0cjxQbHVnaW5WaWV3PiBQbHVnaW5WaWV3OjpjcmVhdGUoRnJhbWUqIHBhcmVudEZyYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKK1Bhc3NSZWZQdHI8UGx1Z2luVmlldz4gUGx1Z2luVmlldzo6Y3JlYXRlKEZyYW1l
KiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICAvLyBpZiB3ZSBmYWlsIHRvIGZpbmQgYSBwbHVn
aW4gZm9yIHRoaXMgTUlNRSB0eXBlLCBmaW5kUGx1Z2luIHdpbGwgc2VhcmNoIGZvcgogICAgIC8v
IGEgcGx1Z2luIGJ5IHRoZSBmaWxlIGV4dGVuc2lvbiBhbmQgdXBkYXRlIHRoZSBNSU1FIHR5cGUs
IHNvIHBhc3MgYSBtdXRhYmxlIFN0cmluZwpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgTlBFcnJvciBQ
bHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29uc3Qg
Y2hhciogdXJsLCBjaGEKIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlVS
TFZDb29raWU6IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJh
c2VVUkwoKSwgdXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+
YmFzZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAg
ICAgICAgICBpZiAoZnJhbWUpIHsKQEAgLTE0MDQsNyArMTQwNCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWVGb3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIq
IHVybCwgY2hhCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5QTlVSTFZQcm94eTog
ewotICAgICAgICBLVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1
cmwpOworICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCks
IHVybCk7CiAgICAgICAgIGlmICh1LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgRnJhbWUqIGZy
YW1lID0gZ2V0RnJhbWUocGFyZW50RnJhbWUoKSwgbV9lbGVtZW50KTsKICAgICAgICAgICAgIGNv
bnN0IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IGZyYW1lID8gJmZyYW1lLT5sb2FkZXIoKSA6
IDA7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OnNldFZhbHVlRm9y
VVJMKE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNvbgogCiAgICAg
c3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVVJMVkNvb2tpZTogewotICAgICAgICBL
VVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOworICAgICAg
ICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7CiAgICAg
ICAgIGlmICh1LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nIGNvb2tpZVN0
ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUsIGxlbik7CiAgICAgICAgICAgICBGcmFtZSogZnJh
bWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuaAppbmRleCBjMjQ1ZDMxZjBiMTU2YjJhYWEwODkyZDBlOGM4YTQwODE2ODkw
ZjNiLi4xNjZhNjM3YzkwMGIyM2FmMjlkNmMzMDA2MDE2ODIzMTI1YjA5NmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzksNyArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKICAgICBjbGFzcyBNb3VzZUV2ZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIGNs
YXNzIFBsdWdpbk1lc3NhZ2VUaHJvdHRsZXJXaW47CiAjZW5kaWYKQEAgLTEzMiw3ICsxMzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAsIHB1YmxpYyBQbHVn
aW5NYW51YWxMb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICwgcHJpdmF0ZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1
Z2luVmlldz4gY3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1
Z2luVmlldz4gY3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogICAgICAgICB2aXJ0dWFsIH5QbHVnaW5WaWV3KCk7
CiAKICAgICAgICAgUGx1Z2luUGFja2FnZSogcGx1Z2luKCkgY29uc3QgeyByZXR1cm4gbV9wbHVn
aW4uZ2V0KCk7IH0KQEAgLTIxNyw3ICsyMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBwbHVnaW5zUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2lu
c1BhZ2U7IH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWltZVR5cGU7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4g
bV91cmw7IH0KKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQogCiAjaWYgZGVmaW5lZChYUF9NQUNPU1gpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogICAgICAgICBib29sIHBvcFVwQ29udGV4dE1lbnUoTlBNZW51Kik7CkBAIC0yNTAsNyArMjUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAg
ICBQbHVnaW5WaWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIFBsdWdpblBh
Y2thZ2UqLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgICAgIFBsdWdpblZp
ZXcoRnJhbWUqIHBhcmVudEZyYW1lLCBjb25zdCBJbnRTaXplJiwgUGx1Z2luUGFja2FnZSosIEhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwogCiAgICAgICAgIHZvaWQgc2V0UGFyYW1ldGVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzKTsKICAgICAgICAgYm9vbCBzdGFydE9yQWRkVG9VbnN0YXJ0ZWRMaXN0KCk7
CkBAIC0yODYsNyArMjg2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8
UGx1Z2luUGFja2FnZT4gbV9wbHVnaW47CiAgICAgICAgIEhUTUxQbHVnSW5FbGVtZW50KiBtX2Vs
ZW1lbnQ7CiAgICAgICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7Ci0gICAgICAgIEtVUkwgbV91cmw7Cisg
ICAgICAgIFVSTCBtX3VybDsKICAgICAgICAgUGx1Z2luU3RhdHVzIG1fc3RhdHVzOwogICAgICAg
ICBWZWN0b3I8SW50UmVjdD4gbV9pbnZhbGlkUmVjdHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcAppbmRleCBmYmZmMmU5MTU1YWEzY2I0
MjRmZTI2ZjhjYWEzYTIzNWY2YTFhMGI1Li4zNjYwZTRhYmJjNTM1NjBkMDNjMTFjMzhjOWQ5NTUw
MThmYjJkYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5E
YXRhYmFzZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0
YWJhc2VXaW4uY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2Uu
aCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpbmNsdWRlIDx3dGYvV2luZG93c0V4
dHJhcy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExv
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdExvY2F0aW9uLmgKaW5k
ZXggNWVmZTVmNzdkZDE5MGM5MWNjYzRhNzI5ZTQ3NzVmMDRmN2I5YTg3MS4uZTEyMTkxZmY3NmMw
NGY0MzlkZGMxNjBiMmQxOWI2OTE2ZWU2YjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0TG9jYXRpb24uaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBGcmFtZTsKIGNsYXNz
IEhUTUxNZWRpYUVsZW1lbnQ7CiAjZW5kaWYKIGNsYXNzIEltYWdlOwotY2xhc3MgS1VSTDsKK2Ns
YXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBTY3JvbGxi
YXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggYjM5
YTM4MDM2MTkzMTE2MjQ2M2VkZTMwOWNlOTFlZTZiMGFlZjNhZi4uODY5MmM4ZWNmNTI3MTY5Yjdh
MTRmOGU5YzlkMmI4MDM5OTkwNThiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcApAQCAtMzEwLDEzICszMTAsMTMgQEAgSW50UmVjdCBIaXRUZXN0UmVzdWx0
OjppbWFnZVJlY3QoKSBjb25zdAogICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVu
ZGVyQm94KCktPmFic29sdXRlQ29udGVudFF1YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwog
fQogCi1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAorVVJMIEhp
dFRlc3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjb25zdAogewogICAgIGlmICghbV9pbm5l
ck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBV
UkwoKTsKIAogICAgIGlmICghKG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpICYmIG1f
aW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpLT5pc0ltYWdlKCkpKQotICAgICAgICByZXR1
cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBBdG9taWNTdHJpbmcgdXJs
U3RyaW5nOwogICAgIGlmIChtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShlbWJlZFRh
ZykKQEAgLTMzMCwzNyArMzMwLDM3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFn
ZVVSTCgpIGNvbnN0CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9pbm5l
ck5vblNoYXJlZE5vZGUuZ2V0KCkpOwogICAgICAgICB1cmxTdHJpbmcgPSBlbGVtZW50LT5pbWFn
ZVNvdXJjZVVSTCgpOwogICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAg
ICByZXR1cm4gVVJMKCk7CiAKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0
cmluZykpOwogfQogCi1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlUERGVVJMKCkgY29uc3QK
K1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2lubmVyTm9uU2hhcmVkTm9kZSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogCiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShl
bWJlZFRhZykgJiYgIW1faW5uZXJOb25TaGFyZWROb2RlLT5oYXNUYWdOYW1lKG9iamVjdFRhZykp
Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQo
bV9pbm5lck5vblNoYXJlZE5vZGUuZ2V0KCkpOwotICAgIEtVUkwgdXJsID0gbV9pbm5lck5vblNo
YXJlZE5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGVsZW1lbnQtPnVybCgpKSk7CisgICAgVVJMIHVybCA9IG1faW5uZXJOb25TaGFy
ZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhlbGVtZW50LT51cmwoKSkpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgaWYgKGVsZW1l
bnQtPnNlcnZpY2VUeXBlKCkgPT0gImFwcGxpY2F0aW9uL3BkZiIgfHwgKGVsZW1lbnQtPnNlcnZp
Y2VUeXBlKCkuaXNFbXB0eSgpICYmIHVybC5wYXRoKCkubG93ZXIoKS5lbmRzV2l0aCgiLnBkZiIp
KSkKICAgICAgICAgcmV0dXJuIHVybDsKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJldHVybiBV
UkwoKTsKIH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QK
K1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoVklERU8pCiAgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWx0ID0gbWVkaWFFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiBtZWRpYUVsdC0+Y3VycmVudFNyYygpOwotICAgIHJldHVy
biBLVVJMKCk7CisgICAgcmV0dXJuIFVSTCgpOwogI2Vsc2UKLSAgICByZXR1cm4gS1VSTCgpOwor
ICAgIHJldHVybiBVUkwoKTsKICNlbmRpZgogfQogCkBAIC01MTAsMTAgKzUxMCwxMCBAQCB2b2lk
IEhpdFRlc3RSZXN1bHQ6OnRvZ2dsZU1lZGlhTXV0ZVN0YXRlKCkgY29uc3QKICNlbmRpZgogfQog
Ci1LVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CitVUkwgSGl0VGVz
dFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5uZXJVUkxF
bGVtZW50KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAK
ICAgICBBdG9taWNTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChpc0hUTUxBbmNob3JFbGVtZW50
KG1faW5uZXJVUkxFbGVtZW50LmdldCgpKSB8fCBpc0hUTUxBcmVhRWxlbWVudChtX2lubmVyVVJM
RWxlbWVudC5nZXQoKSkgfHwgbV9pbm5lclVSTEVsZW1lbnQtPmhhc1RhZ05hbWUobGlua1RhZykp
CkBAIC01MjMsNyArNTIzLDcgQEAgS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwo
KSBjb25zdAogICAgICAgICB1cmxTdHJpbmcgPSBtX2lubmVyVVJMRWxlbWVudC0+Z2V0QXR0cmli
dXRlKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJV
UkxFbGVtZW50LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCmluZGV4IGVjNTIwZjgzMDJiOTU0YjZjMWQ4MTYwNWMyMjlkYjM4YmYxNDY0YzMu
LmY1ZDA5NTk0ZjQ5OTE5OGQzNTY4YTNlMGUyNGZiYTgyOWM2OWM2OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAjZW5kaWYKIGNsYXNzIEltYWdlOwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFz
cyBTY3JvbGxiYXI7CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRp
dGxlRGlzcGxheVN0cmluZygpIGNvbnN0OwogICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0OwogICAg
IEludFJlY3QgaW1hZ2VSZWN0KCkgY29uc3Q7Ci0gICAgS1VSTCBhYnNvbHV0ZUltYWdlVVJMKCkg
Y29uc3Q7Ci0gICAgS1VSTCBhYnNvbHV0ZVBERlVSTCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1
dGVNZWRpYVVSTCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVMaW5rVVJMKCkgY29uc3Q7Cisg
ICAgVVJMIGFic29sdXRlSW1hZ2VVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVQREZVUkwo
KSBjb25zdDsKKyAgICBVUkwgYWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0OworICAgIFVSTCBhYnNv
bHV0ZUxpbmtVUkwoKSBjb25zdDsKICAgICBTdHJpbmcgdGV4dENvbnRlbnQoKSBjb25zdDsKICAg
ICBib29sIGlzTGl2ZUxpbmsoKSBjb25zdDsKICAgICBib29sIGlzT3ZlckxpbmsoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0uaAppbmRleCBmYzcxYTA4YzIxYjU3MTUxNGJhM2I4NWY3ZWZhNDAwZjhh
NjczNGJhLi5mOGNiZWE4M2I0OGI4NGIxYzU2NDYzY2E4MDVhM2ViZmE4MWI2Nzc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VI
YW5kbGUuaCIKICNpbmNsdWRlICJDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJDdXN0b21GaWx0
ZXJQcm9ncmFtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlN0eWxlU2hhZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KIApAQCAtNDgs
OCArNDgsOCBAQCBjbGFzcyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTsKIGNsYXNzIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtLCBwdWJs
aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4g
Y3JlYXRlKEtVUkwgdmVydGV4U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0
ZXhTaGFkZXIsIAotICAgICAgICBLVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0
eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3Jh
bVR5cGUsCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBj
cmVhdGUoVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4
U2hhZGVyLCAKKyAgICAgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxl
U2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5
cGUsCiAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0
dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyVVJM
LCB2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyVVJMLCBmcmFnbWVudFNoYWRlciwgcHJvZ3Jh
bVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkpOwpAQCAtMTQzLDExICsxNDMsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2FjaGUoU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUqIGNh
Y2hlKSB7IG1fY2FjaGUgPSBjYWNoZTsgfQogICAgIGJvb2wgaW5DYWNoZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGU7IH0KICAgICAKLSAgICBLVVJMIHZlcnRleFNoYWRlclVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdmVydGV4U2hhZGVyVVJMOyB9Ci0gICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJVUkw7IH0KKyAgICBVUkwgdmVydGV4U2hh
ZGVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJVUkw7IH0KKyAgICBVUkwgZnJh
Z21lbnRTaGFkZXJVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyVVJMOyB9CiAK
IHByaXZhdGU6Ci0gICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKEtVUkwgdmVydGV4U2hhZGVy
VVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIEtVUkwgZnJhZ21lbnRT
aGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCAKKyAgICBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0oVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBVUkwgZnJhZ21lbnRTaGFkZXJVUkwsIFBhc3NSZWZQ
dHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCAKICAgICAgICAgQ3VzdG9tRmlsdGVyUHJv
Z3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyYgbWl4U2V0dGluZ3MsIEN1c3RvbUZpbHRlck1lc2hUeXBlIG1lc2hUeXBlKQogICAgICAgICA6
IEN1c3RvbUZpbHRlclByb2dyYW0ocHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzLCBtZXNoVHlwZSkK
ICAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCkBAIC0xNzAsOCArMTcwLDgg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZSBVUkxzIGZvcm0gdGhlIGtleSBvZiB0aGUgU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtIGluIHRoZSBjYWNoZSBhbmQgYXJlIHVzZWQKICAgICAvLyB0byBs
b29rdXAgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB3aGVuIGl0J3MgcmVtb3ZlZCBmcm9t
IHRoZSBjYWNoZS4KLSAgICBLVVJMIG1fdmVydGV4U2hhZGVyVVJMOwotICAgIEtVUkwgbV9mcmFn
bWVudFNoYWRlclVSTDsKKyAgICBVUkwgbV92ZXJ0ZXhTaGFkZXJVUkw7CisgICAgVVJMIG1fZnJh
Z21lbnRTaGFkZXJVUkw7CiAKICAgICAvLyBUaGUgQ2FjaGUgaXMgcmVzcG9uc2libGUgb2YgaW52
YWxpZGF0aW5nIHRoaXMgcmVmZXJlbmNlLgogICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNh
Y2hlKiBtX2NhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCmluZGV4
IDcwZjk5YWFkZTc2ODdmYjBmNzFjY2Q0YjI5NWZjYjA5YmY4YmRkMWMuLjFjNjJlZjRjMzY5YmZj
ZGYyMTVmOTU0ODIyMjQ2ODRhODQyNWI0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAg
ICgqaXQpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXZvaWQgU1ZHQ3Vyc29yRWxlbWVu
dDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBj
b25zdAordm9pZCBTVkdDdXJzb3JFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5oCmluZGV4IDEzMjgxZDRmMmMzMWMxMGE1ZDE1N2VkZGM0MjM5NTk0MGUzNTM4N2UuLjRm
YzgxMmY4N2RiOTI0Yzc4ZjMzZmMwYjg1ZDE3MzIzZWFjOGNmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBPVkVSUklERSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0N1cnNvckVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50
LmNwcAppbmRleCAwOWVmYzY2YzBlOTJhMjk0MDM1MGRiNTkyOTczOWYyMjdmODY2M2U0Li42MmE1
NmQ5ZTYzY2ExZmMzMjVkYmJhMDRkMDJjYjg2YTA1MjlmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdE
b2N1bWVudC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCitT
VkdEb2N1bWVudDo6U1ZHRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICA6IERvY3VtZW50KGZyYW1lLCB1cmwsIFNWR0RvY3VtZW50Q2xhc3MpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdEb2N1bWVudC5oCmluZGV4IGRjMGQzNDIyYjRlNjU4M2FmMjdjNGRjZDAwNzQ3YTMyMjhj
NDQwY2MuLjY1M2ZhM2I2MTFjNTcxNGYzMDcxMzgwYzcyM2RkYjBhMWE3MThkMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdEb2N1bWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFNWR1NWR0VsZW1lbnQ7
CiAKIGNsYXNzIFNWR0RvY3VtZW50IEZJTkFMIDogcHVibGljIERvY3VtZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0RvY3VtZW50PiBjcmVh
dGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU1ZHRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7
CisgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggNGIxNzU1NDlhMjRkNjNkMzVh
YzYzMjU2Y2Y5OWIwOTdkOTQyOTIyNC4uMWMxYjRhOGU2MTVkNzM2NDhjZWRhZGQyYWQwMDY2ZDFi
ODVhZTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0y
MDksNyArMjA5LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50
OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKiBmaWwKICAgICByZXR1cm4gRkVJbWFn
ZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShmaWx0ZXIsIGRvY3VtZW50KCksIGhyZWYoKSwgcHJl
c2VydmVBc3BlY3RSYXRpbygpKTsKIH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9p
ZCBTVkdGRUltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKaW5kZXggMWRlNmE4M2NkZGY2YjZmMTc0OWE5NjZj
OTgwNDNkMmRjOTNkZjEwOS4uNjk2NmQzMGNkMGE1Nzc1OGY2MWU1OWM3NTY3OWM2MDQ4NWZhY2Zj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCA5ODk0ZWM0ZTViODNlMjJmZGQzZmRmZmY1MjViYjM5
YmJlZWE3NzI0Li44YmJiZjI0NmY2YzU4MzJjMDM1NzJhZDdmZDU4YWUwYzVlZTI1ZjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGNv
bnN0IEF0b21pY1N0cmluZyYgU1ZHSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0
CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiB9CiAKLXZv
aWQgU1ZHSW1hZ2VFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZH
R3JhcGhpY3NFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAppbmRleCBiYTU0Yjk3Mjg1MjEwY2Y1M2M0NTJi
ZTBhMDdhOTBjMTBjZWJkOWJiLi40NGQ2NDJjMjRkNTEyNzU1M2YwZmNkNmMwZTFjNjVkMzhhN2Rm
MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSYsIFJlbmRlclN0eWxlJik7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2Vz
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDc0ZmY2ZTEzYTM2
ODNmY2I4YmJlYjFmN2ExNWJjYTAyNTZkNjRiNDMuLmY2NWY2NzFlZmY0OTlmMjM4ZDE0Yjg4NmRj
NGZiYTkxZmRiMzNiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcApAQCAt
NTAsOSArNTAsOSBAQCB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiAK
IFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlKSBjb25zdAogewotICAgIEtVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwor
ICAgIFVSTCBiYXNlID0gZWxlbWVudCgpLT5iYXNlVVJJKCk7CiAgICAgaWYgKGJhc2UuaXNWYWxp
ZCgpKQotICAgICAgICByZXR1cm4gS1VSTChiYXNlLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0cmlidXRlKSkuc3RyaW5nKCk7CisgICAgICAgIHJldHVybiBVUkwoYmFzZSwg
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOwog
ICAgIHJldHVybiBlbGVtZW50KCktPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggN2Q5MTFmMGRjNjYzMmY5NDVlNjRmM2UzYTNjMTRi
N2I4YzU5MGViNi4uMDk0YTJjODA2YmJkOTNhNDVkYjQxNjJhNDRhMzI5MGE1NWYzYmI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IHZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAg
bV90eXBlID0gdHlwZTsKIH0KIAotdm9pZCBTVkdTY3JpcHRFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+
JiB1cmxzKSBjb25zdAogewogICAgIFNWR0VsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKaW5kZXggZDVj
OTQ2ZDQ5NmQ3NDc4MTQ1ZTMxNjYyZjhkODllNTczMjc1NTQ1Yi4uMzc5M2IwZjUzZjAyNmY1N2Fi
MTg4OWVkMGY3ZWYyZGUzMjBlY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVu
dC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSB7IHJl
dHVybiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNv
dXJjZXMoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IDMw
ZTg0OTliZWE3ZWNlNzhjMDc1NzZkOTQ1NmYzMGQyMjQwMzUwNWMuLmE2NjdlMTFkMjY4YzYxNGIw
MTM1ZmNlZmE0NWEwMzllZDQxOWM5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNTIsOSArNTIsOSBAQCBTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpmcmFnbWVu
dElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bQogICAgIGlm
IChzdGFydCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAg
ICBLVVJMIGJhc2UgPSBzdGFydCA/IEtVUkwoZG9jdW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3Ry
aW5nKDAsIHN0YXJ0KSkgOiBkb2N1bWVudC5iYXNlVVJJKCk7CisgICAgVVJMIGJhc2UgPSBzdGFy
dCA/IFVSTChkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnQpKSA6IGRv
Y3VtZW50LmJhc2VVUkkoKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1
YnN0cmluZyhzdGFydCk7Ci0gICAgS1VSTCBrdXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7
CisgICAgVVJMIGt1cmwoYmFzZSwgZnJhZ21lbnRJZGVudGlmaWVyKTsKICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihrdXJsLCBkb2N1bWVudC51cmwoKSkpCiAgICAgICAg
IHJldHVybiBmcmFnbWVudElkZW50aWZpZXIuc3Vic3RyaW5nKDEpOwogCkBAIC02MiwyOCArNjIs
MjggQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0
cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IH0KIAotc3RhdGljIGlubGluZSBLVVJMIHVybEZyb21JUklTdHJpbmdXaXRoRnJhZ21lbnRJZGVu
dGlmaWVyKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyYgZnJh
Z21lbnRJZGVudGlmaWVyKQorc3RhdGljIGlubGluZSBVUkwgdXJsRnJvbUlSSVN0cmluZ1dpdGhG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5nJiB1cmwsIERvY3VtZW50JiBkb2N1bWVudCwg
U3RyaW5nJiBmcmFnbWVudElkZW50aWZpZXIpCiB7CiAgICAgc2l6ZV90IHN0YXJ0T2ZGcmFnbWVu
dElkZW50aWZpZXIgPSB1cmwuZmluZCgnIycpOwogICAgIGlmIChzdGFydE9mRnJhZ21lbnRJZGVu
dGlmaWVyID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1
cm4gVVJMKCk7CiAKICAgICAvLyBFeGNsdWRlIHRoZSAnIycgY2hhcmFjdGVyIHdoZW4gZGV0ZXJt
aW5pbmcgdGhlIGZyYWdtZW50SWRlbnRpZmllci4KICAgICBmcmFnbWVudElkZW50aWZpZXIgPSB1
cmwuc3Vic3RyaW5nKHN0YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIgKyAxKTsKICAgICBpZiAoc3Rh
cnRPZkZyYWdtZW50SWRlbnRpZmllcikgewotICAgICAgICBLVVJMIGJhc2UoZG9jdW1lbnQuYmFz
ZVVSSSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIpKTsKLSAg
ICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVu
dGlmaWVyKSk7CisgICAgICAgIFVSTCBiYXNlKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0
cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBVUkwo
YmFzZSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIEtVUkwoZG9jdW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3RyaW5nKHN0YXJ0
T2ZGcmFnbWVudElkZW50aWZpZXIpKTsKKyAgICByZXR1cm4gVVJMKGRvY3VtZW50LmJhc2VVUkko
KSwgdXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CiB9CiAKIEVsZW1l
bnQqIFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoY29uc3QgU3Ry
aW5nJiBpcmksIERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nKiBmcmFnbWVudElkZW50aWZpZXIs
IERvY3VtZW50KiBleHRlcm5hbERvY3VtZW50KQogewogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZnJh
Z21lbnQgaWRlbnRpZmllciBjb250YWluZWQgd2l0aGluIHRoZSBJUkkgc3RyaW5nLCB3ZSBjYW4n
dCBsb29rdXAgYW4gZWxlbWVudC4KICAgICBTdHJpbmcgaWQ7Ci0gICAgS1VSTCB1cmwgPSB1cmxG
cm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRlbnRpZmllcihpcmksIGRvY3VtZW50LCBpZCk7Ci0g
ICAgaWYgKHVybCA9PSBLVVJMKCkpCisgICAgVVJMIHVybCA9IHVybEZyb21JUklTdHJpbmdXaXRo
RnJhZ21lbnRJZGVudGlmaWVyKGlyaSwgZG9jdW1lbnQsIGlkKTsKKyAgICBpZiAodXJsID09IFVS
TCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKaW5kZXggMzZlMDExN2Q5NTY0NzA0ZDQwYzk4
NGFmZTZkNmViOTFhNDhkNmVlMS4uZGQ5NTZhZjg3ZjQ5NTgyNDVjNTkxMmFlMjAzZGIyNmRmYjc0
OTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaApAQCAtNDcsNyArNDcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gSWYgdGhl
IFVSSSBtYXRjaGVzIG91ciBkb2N1bWVudHMgVVJMLCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBsb2Nh
bCByZWZlcmVuY2UuCi0gICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQuY29tcGxldGVVUkwodXJp
KTsKKyAgICAgICAgVVJMIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVyaSk7CiAgICAgICAg
IHJldHVybiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIGRvY3VtZW50LnVy
bCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA0YjEx
MGIwNGNkM2NiNDEyODRkODgxMmNmYzMwNDQzYzU4M2UyNDNmLi40Y2VhNjhjZGFlY2M3OWFlM2Y4
ZTg2MGU4YTVhYWQ2OWI4NzczZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVu
Y2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIGJvb2wgaXNFeHRlcm5h
bFJlZmVyZW5jZSA9IGlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoaHJlZigpLCBkb2N1bWVudCgpKTsK
ICAgICAgICAgaWYgKGlzRXh0ZXJuYWxSZWZlcmVuY2UpIHsKLSAgICAgICAgICAgIEtVUkwgdXJs
ID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKCkpOworICAgICAgICAgICAgVVJMIHVybCA9
IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKTsKICAgICAgICAgICAgIGlmICh1cmwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpIHsKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJsLnN0cmluZygpKSk7CiAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCA3NWUxMmJkZWNkNWFkOTZkOTFjMWFkYWQ1NDNiNmRiNTQw
MDg5ZWExLi5mYWExNDEyNjk5MGM1MWI1YmQwYmVkMzMzYmE4Y2RhM2MyNjYwZmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTM3Miw3ICszNzIsNyBAQCBi
b29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIAogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5zZXRNSU1FVHlwZSgiaW1hZ2Uv
c3ZnK3htbCIpOwotICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVy
KCktPmJlZ2luKEtVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKKyAgICAgICAg
bG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLT5iZWdpbihVUkwoKSk7IC8v
IGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLT5hZGREYXRhKGRhdGEoKS0+ZGF0YSgpLCBkYXRhKCktPnNpemUo
KSk7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+ZW5k
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKaW5kZXggNjQ3
MmVkOTA5ZjQwYjg5NTRkMmRmYzMyMDUyZWYzYjQxMWJjYTI1Zi4uOGExZDZmYWMzMDk2NTA3NTQz
YTcyM2FhNWVjMDY2NTgwMmM0NWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFj
dFdvcmtlci5jcHAKQEAgLTYwLDI4ICs2MCwyOCBAQCB2b2lkIEFic3RyYWN0V29ya2VyOjpjb250
ZXh0RGVzdHJveWVkKCkKICAgICBBY3RpdmVET01PYmplY3Q6OmNvbnRleHREZXN0cm95ZWQoKTsg
CiB9CiAKLUtVUkwgQWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1cmws
IEV4Y2VwdGlvbkNvZGUmIGVjKQorVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0
IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAodXJsLmlzRW1wdHko
KSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBLVVJMKCk7Cisg
ICAgICAgIHJldHVybiBVUkwoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
dXNlIHRoZSBkeW5hbWljIGdsb2JhbCBzY29wZSAoYnVnICMyNzg4NykKLSAgICBLVVJMIHNjcmlw
dFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBV
Ukwgc2NyaXB0VVJMID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCh1cmwp
OwogICAgIGlmICghc2NyaXB0VVJMLmlzVmFsaWQoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Ci0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKICAgICB9
CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuUmVxdWVzdChzY3JpcHRVUkwpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAg
ICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAg
aWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkgJiYg
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
U2NyaXB0RnJvbVNvdXJjZShzY3JpcHRVUkwpKSB7CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJS
OwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHNjcmlwdFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3Jr
ZXIuaAppbmRleCA0ZWFjMzIyMDVhZTE1NGJmMjIxNjg3NWE5OTRmNGUxZjQzMjBmYjBjLi41ZGM2
NjRmZGU5ZmJjNzU4ZDA0ZGIzNTExNzk1MjRiM2E0NGVhZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oCkBAIC00NCw3ICs0NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBjbGFzcyBBYnN0cmFjdFdvcmtlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEFic3RyYWN0V29ya2VyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGlj
IEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgewpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0
aGF0IGNvbnZlcnRzIGEgVVJMIHRvIGFuIGFic29sdXRlIFVSTCBhbmQgY2hlY2tzIHRoZSByZXN1
bHQgZm9yIHZhbGlkaXR5LgotICAgICAgICBLVVJMIHJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1
cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgVVJMIHJlc29sdmVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAgaW50cHRyX3QgYXNJRCgpIGNv
bnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRoaXMpOyB9CiAKICAgICBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlLmNwcAppbmRleCAzZWFmZDEzNTdhMjlmZjQxMmZjZGY3YjAwYzkxNzYyNjY4
YjY5ODI3Li45MjQxOTMwZjk2MzY3ZGJkNDVlMDdiNWQ0MmI0YWJkMDU0ZTUzZTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcApAQCAtNDAsMTQgKzQwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNz
T3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRo
cmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBz
ZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKQogewogICAgIFJlZlB0cjxEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9
IGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwg
c2V0dGluZ3MsIHRocmVhZCwgdG9wT3JpZ2luKSk7CiAgICAgY29udGV4dC0+YXBwbHlDb250ZW50
U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5nKGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSk7CiAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwogfQogCi1E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
OjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRl
ZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pCiAgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRo
cmVhZCwgdG9wT3JpZ2luKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGY0Njk0MzJiMzk0MjMxNTlmNDI1OWJi
YWNkNmFiMDIzZmQxZWIxNDkuLjQzYTViNTRjNTViYzM0NWJmYzQxNjIyMGE0ZDJmYjE2NDY4NGRm
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3Bl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgV29ya2VyR2xvYmFsU2NvcGUgQmFzZTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIERlZGljYXRlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVu
dFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVu
dFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2lu
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+
IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250
ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmln
aW4pOwogICAgICAgICB2aXJ0dWFsIH5EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpOwogCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkKCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIERlZGlj
YXRlZFdvcmtlclRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7
CisgICAgICAgIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAppbmRleCBkYzIyMDM4ZWQyZTdiYjMzN2FlZTEwZDZh
MzhiZDM2MDM0MjA1NTE3Li45MjlmZGU3NWI0OGIxZDQ1N2VlZjdhYWNkYmY1ODgzM2MwODU0MDBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQu
Y3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGUo
Y29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3Jv
dXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUg
Y29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdp
bikKK1Bhc3NSZWZQdHI8RGVkaWNhdGVkV29ya2VyVGhyZWFkPiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQ6OmNyZWF0ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0b3BPcmlnaW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQoc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJM
b2FkZXJQcm94eSwgd29ya2VyT2JqZWN0UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKIH0KIAotRGVk
aWNhdGVkV29ya2VyVGhyZWFkOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3Ms
IGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRl
clByb3h5LCBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKK0RlZGljYXRlZFdvcmtlclRo
cmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYg
c291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJP
YmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6IFdvcmtlclRocmVhZCh1cmwsIHVzZXJBZ2Vu
dCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRlclByb3h5LCB3b3JrZXJPYmplY3RQ
cm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUsIHRvcE9yaWdpbikKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkod29ya2VyT2Jq
ZWN0UHJveHkpCiB7CkBAIC01NSw3ICs1NSw3IEBAIERlZGljYXRlZFdvcmtlclRocmVhZDo6fkRl
ZGljYXRlZFdvcmtlclRocmVhZCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2Nv
cGU+IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRp
bmdzPiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCitQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91
cFNldHRpbmdzPiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCiB7CiAgICAgcmV0dXJu
IERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUodXJsLCB1c2VyQWdlbnQsIHNldHRp
bmdzLCB0aGlzLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIHRvcE9yaWdpbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRX
b3JrZXJUaHJlYWQuaAppbmRleCBhNzBiZTZjOGRmNGQxYzk0MjQ1ZDI5ODI2MzhiNGIwNmJkNmFl
MTdmLi4xOTk4ZmU5MmM1N2RkMTA0MDRiMGI2Y2UzMzgxMGM0MDZjODJiN2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmgKQEAgLTQxLDE2ICs0
MSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IEtVUkwmIHNj
cmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0
UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNv
ZGUsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRT
dGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4p
OwogICAgICAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7
IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9CiAgICAgICAgIHZpcnR1YWwgfkRlZGljYXRl
ZFdvcmtlclRocmVhZCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVS
UklERTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
UGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJ1
bkV2ZW50TG9vcCgpIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRGVkaWNhdGVk
V29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CisgICAgICAgIERlZGljYXRl
ZFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVy
VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICAgICAgV29ya2Vy
T2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAK
aW5kZXggOTg1YWYwMDZhZWM2YTRkMzY5MDZiZDA0NTM0MDhhZjkzNWIxOGM3Zi4uNWMyNmM4YzYx
MDE1MjZjMjcyZjhkODY0MjlkZmJhM2FkNjBmMTA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTY0
LDE5ICs2NCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNoYXJlZFdvcmtlclBy
b3h5IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5PiwgcHVi
bGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlclByb3h5KG5hbWUs
IHVybCwgb3JpZ2luKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94
eT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtl
clByb3h5KG5hbWUsIHVybCwgb3JpZ2luKSk7IH0KIAogICAgIHZvaWQgc2V0VGhyZWFkKFBhc3NS
ZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiB0aHJlYWQpIHsgbV90aHJlYWQgPSB0aHJlYWQ7IH0K
ICAgICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkLmdldCgp
OyB9CiAgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nsb3Npbmc7IH0KLSAg
ICBLVVJMIHVybCgpIGNvbnN0CisgICAgVVJMIHVybCgpIGNvbnN0CiAgICAgewogICAgICAgICAv
LyBEb24ndCB1c2UgbV91cmwuY29weSgpIGJlY2F1c2UgaXQgaXNuJ3QgYSB0aHJlYWRzYWZlIG1l
dGhvZC4KLSAgICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybC5zdHJpbmco
KS5pc29sYXRlZENvcHkoKSk7CisgICAgICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCBt
X3VybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7IH0KLSAgICBib29sIG1hdGNo
ZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4s
IGNvbnN0IEtVUkwmIHVybFRvTWF0Y2gpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBT
dHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgVVJM
JiB1cmxUb01hdGNoKSBjb25zdDsKIAogICAgIC8vIFdvcmtlckxvYWRlclByb3h5CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrPik7CkBAIC0xMDMsMTIgKzEwMywxMiBAQCBwdWJsaWM6CiAgICAgR3JvdXBTZXR0
aW5ncyogZ3JvdXBTZXR0aW5ncygpIGNvbnN0OyAvLyBQYWdlIEdyb3VwU2V0dGluZ3MgdXNlZCBi
eSB3b3JrZXIgdGhyZWFkLgogCiBwcml2YXRlOgotICAgIFNoYXJlZFdvcmtlclByb3h5KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsK
KyAgICBTaGFyZWRXb3JrZXJQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAgICBib29s
IG1fY2xvc2luZzsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJM
IG1fdXJsOwogICAgIC8vIFRoZSB0aHJlYWQgaXMgZnJlZWQgd2hlbiB0aGUgcHJveHkgaXMgZGVz
dHJveWVkLCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwcm94eSBzdGF5cyBhcm91
bmQgdW50aWwgdGhlIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlIGV4aXRzLgogICAgIFJlZlB0cjxT
aGFyZWRXb3JrZXJUaHJlYWQ+IG1fdGhyZWFkOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4g
bV9vcmlnaW47CkBAIC0xMTcsNyArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBNdXRleCBtX3dvcmtl
ckRvY3VtZW50c0xvY2s7CiB9OwogCi1TaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJv
eHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IG9yaWdpbikKK1NoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4pCiAgICAgOiBtX2Nsb3NpbmcoZmFsc2UpCiAgICAgLCBtX25hbWUobmFtZS5p
c29sYXRlZENvcHkoKSkKICAgICAsIG1fdXJsKHVybC5jb3B5KCkpCkBAIC0xMjcsNyArMTI3LDcg
QEAgU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtlclByb3h5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmUKICAgICBBU1NFUlQobV9vcmlnaW4tPmhhc09uZVJl
ZigpKTsKIH0KIAotYm9vbCBTaGFyZWRXb3JrZXJQcm94eTo6bWF0Y2hlcyhjb25zdCBTdHJpbmcm
IG5hbWUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgY29uc3QgS1VSTCYgdXJs
VG9NYXRjaCkgY29uc3QKK2Jvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVSTCYg
dXJsVG9NYXRjaCkgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgb3JpZ2lucyBkb24ndCBtYXRjaCwg
b3IgdGhlIG5hbWVzIGRvbid0IG1hdGNoLCB0aGVuIHRoaXMgaXMgbm90IHRoZSBwcm94eSB3ZSBh
cmUgbG9va2luZyBmb3IuCiAgICAgaWYgKCFvcmlnaW4tPmVxdWFsKG1fb3JpZ2luLmdldCgpKSkK
QEAgLTI4OSw3ICsyODksNyBAQCBwcml2YXRlOgogY2xhc3MgU2hhcmVkV29ya2VyU2NyaXB0TG9h
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyPiwgcHJpdmF0
ZSBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsPiwgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4pOwotICAgIHZvaWQgbG9h
ZChjb25zdCBLVVJMJik7CisgICAgdm9pZCBsb2FkKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgog
ICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCBjYWxsYmFja3MKQEAgLTMwOSw3ICszMDks
NyBAQCBTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXI6OlNoYXJlZFdvcmtlclNjcmlwdExvYWRlcihQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29yawogewogfQogCi12b2lkIFNoYXJlZFdvcmtlclNj
cmlwdExvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFNoYXJlZFdvcmtlclNjcmlw
dExvYWRlcjo6bG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBTdGF5IGFsaXZlIChhbmQg
a2VlcCB0aGUgU2hhcmVkV29ya2VyIGFuZCBKUyB3cmFwcGVyIGFsaXZlKSB1bnRpbCB0aGUgbG9h
ZCBmaW5pc2hlcy4KICAgICB0aGlzLT5yZWYoKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIERl
ZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpkb2N1bWVudERldGFjaGVkKERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAgICAgbV9wcm94aWVzW2ldLT5kb2N1bWVudERldGFjaGVkKGRvY3VtZW50
KTsKIH0KIAotdm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdFRvV29y
a2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsPiBwb3J0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25u
ZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWw+IHBvcnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV9sb2NrKTsK
ICAgICBBU1NFUlQod29ya2VyLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2VzcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkuZ2V0KCkpKTsKQEAg
LTQyNiwxMiArNDI2LDEyIEBAIHZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNv
bm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29yCiB9CiAKIC8vIENyZWF0
ZXMgYSBuZXcgU2hhcmVkV29ya2VyUHJveHkgb3IgcmV0dXJucyBhbiBleGlzdGluZyBvbmUgZnJv
bSB0aGUgcmVwb3NpdG9yeS4gTXVzdCBvbmx5IGJlIGNhbGxlZCB3aGlsZSB0aGUgcmVwb3NpdG9y
eSBtdXRleCBpcyBoZWxkLgotUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gRGVmYXVsdFNo
YXJlZFdvcmtlclJlcG9zaXRvcnk6OmdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnk6OmdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgLy8gTG9vayBmb3IgYW4gZXhpc3Rpbmcgd29ya2VyLCBhbmQgY3JlYXRlIG9u
ZSBpZiBpdCBkb2Vzbid0IGV4aXN0LgogICAgIC8vIEl0ZW1zIGluIHRoZSBjYWNoZSBhcmUgZnJl
ZWQgb24gYW5vdGhlciB0aHJlYWQsIHNvIGRvIGEgdGhyZWFkc2FmZSBjb3B5IG9mIHRoZSBVUkwg
YmVmb3JlIGNyZWF0aW5nIHRoZSBvcmlnaW4sCiAgICAgLy8gdG8gbWFrZSBzdXJlIG5vIHJlZmVy
ZW5jZXMgdG8gZXh0ZXJuYWwgc3RyaW5ncyBsaW5nZXIuCi0gICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fcHJveGllcy5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAoIW1fcHJveGllc1tpXS0+
aXNDbG9zaW5nKCkgJiYgbV9wcm94aWVzW2ldLT5tYXRjaGVzKG5hbWUsIG9yaWdpbiwgdXJsKSkK
ICAgICAgICAgICAgIHJldHVybiBtX3Byb3hpZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5kZXggNzA1ZWY0
NzE2NzU3NmY2NzE0YzE3YmUyYTc2ODNkODg0NjBmNTg0Ni4uODI2N2M4MzYzZjEwYmU3ZWFlYmU1
ZTk2MTliMmE1MTJiOTI4MjExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaApAQCAtNDYsNyArNDYsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRG9jdW1lbnQ7Ci0gICAgY2xhc3MgS1VSTDsK
KyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogICAgIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwpAQCAtNjUs
NyArNjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd29ya2VyU2NyaXB0
TG9hZGVkKFNoYXJlZFdvcmtlclByb3h5JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IFN0cmluZyYgd29ya2VyU2NyaXB0LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUpOwogCiAgICAgICAgIC8vIEludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIFNo
YXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3QoKQotICAgICAgICB2b2lkIGNvbm5lY3RUb1dv
cmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsPiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgICAgICB2b2lkIGNvbm5lY3RUb1dvcmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgLy8gTm90aWZpY2F0aW9uIHRoYXQgYSBk
b2N1bWVudCBoYXMgYmVlbiBkZXRhY2hlZC4KICAgICAgICAgdm9pZCBkb2N1bWVudERldGFjaGVk
KERvY3VtZW50Kik7CkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkoKTsKICAgICAgICAgfkRlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAKLSAgICAgICAgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQ
cm94eT4gZ2V0UHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJik7CisgICAgICAg
IFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IGdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgVVJMJik7CiAgICAgICAgIC8vIE11dGV4IHVzZWQgdG8gcHJvdGVjdCBpbnRlcm5h
bCBkYXRhIHN0cnVjdHVyZXMuCiAgICAgICAgIE11dGV4IG1fbG9jazsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDI4YTFlZWQwYTA3ODBiYjBhNmVjNjkwMWZh
NzA2NDg2ODFmNGNkY2YuLmFhNTI1ZjY5MjdkYTRlM2RjMGE3MTZmMTc4MTllMjJiMzY5OWQ3MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRmVhdHVyZU9ic2VydmVy
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VDaGFubmVsLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CkBAIC02Niw3ICs2Niw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAKICAgICB3b3JrZXIt
PnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgS1VSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29s
dmVVUkwodXJsLCBlYyk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHdvcmtlci0+cmVzb2x2ZVVSTCh1
cmwsIGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKaW5kZXggZDcxNjg3MjMwMjcxNzQwMDg5MjgxMTA3ZDhhODZjNzgzMGQ5MjMwNC4uMWNm
NWY4MTQzYmEyZjNiY2YzNmI2NzAyNmJmMzViNmMxYTViN2VjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTUzLDE0ICs1
MywxNCBAQCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3JlYXRlQ29ubmVjdEV2ZW50KFBhc3NS
ZWZQdHI8TWVzc2FnZVBvcnQ+IHBycFBvcnQpCiB9CiAKIC8vIHN0YXRpYwotUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVh
ZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUpCitQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3Jr
ZXJUaHJlYWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBl
KQogewogICAgIFJlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY29udGV4dCA9IGFkb3B0
UmVmKG5ldyBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShuYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0
dGluZ3MsIHRocmVhZCkpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5
RnJvbVN0cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAotU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQpCitTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZTo6U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQogICAgIDog
V29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0aHJlYWQsIDApCiAg
ICAgLCBtX25hbWUobmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA3Y2Q5OWI3NmU5OTdkYzJlZTc1NzBjOWQ0OTZmYjI5
MmY2NTliYTQxLi5lMDEzNmNhNDhmNTI5YjFjNDM1Y2NmMDM4MGYxYWM2ZWM0OTZlY2Y0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4sIFNoYXJlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNl
Y3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNl
Y3VyaXR5UG9saWN5VHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtl
ckdsb2JhbFNjb3BlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgU2hhcmVkV29y
a2VyVGhyZWFkKiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKICAg
ICAgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KQEAgLTU5LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJl
ZFdvcmtlclRocmVhZCopOworICAgICAgICBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3du
UHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pIE9WRVJSSURFOwogCiAgICAgICAgIFN0cmlu
ZyBtX25hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
clJlcG9zaXRvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmNwcAppbmRleCBkZjQ5NTkyNWJkYzQxMGQ0ZTExNDY2Mjg2Yzc0MjU0MTgyNThjOTEx
Li5hM2NkYTViNTA1ZjgxMzAyNWU4N2UzZTdhOGM2YTVmNjFiNTkxMWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgYm9vbCBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojppc0F2YWlsYWJsZSgpCiAgICAg
cmV0dXJuIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjppbnN0YW5jZSgpLmlzQXZhaWxh
YmxlKCk7CiB9CiAKLXZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
cG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KFBhc3NSZWZQdHI8U2hh
cmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS5jb25uZWN0VG9X
b3JrZXIod29ya2VyLCBwb3J0LCB1cmwsIG5hbWUsIGVjKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5kZXggYzNkODdlYzkwZWFjN2Iw
ZDkwMDVlZDE1MjkwMTg0ZWE3NzViM2VhZC4uMDQ5Zjg2YWM5ZTY1M2JmODZjODE2Mjk2OTg0YmYx
YTAxZTBjZTM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5LmgKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNs
YXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBjbGFzcyBTaGFyZWRXb3JrZXI7CiAKQEAgLTUz
LDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgYm9vbCBpc0F2
YWlsYWJsZSgpOwogCiAgICAgICAgIC8vIENvbm5lY3RzIHRoZSBwYXNzZWQgU2hhcmVkV29ya2Vy
IG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQgd29ya2VyIHRocmVhZCwgY3JlYXRpbmcgYSBuZXcg
dGhyZWFkIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgc3RhdGljIHZvaWQgY29ubmVjdChQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiwgY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICBzdGF0
aWMgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiwgUGFzc093blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgICAgICAvLyBJbnZva2VkIHdoZW4gYSBkb2N1bWVudCBoYXMgYmVlbiBk
ZXRhY2hlZC4KICAgICAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCmluZGV4
IGJhYjM5NTg0YTVhNWM3Nzc2NjJmMjAxYjBjN2Y0ZGRiODlhNzc4NzMuLjFhYzE0OGIxZjU4NWE4
YmRmODAzNWI4MmI2ODc2Mjk1MDczMWQzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlclRocmVhZC5jcHAKQEAgLTM4LDEyICszOCwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBTaGFyZWRXb3JrZXJU
aHJlYWQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQ
cm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJU
aHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBv
bGljeVR5cGUpCitQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVkV29ya2VyVGhy
ZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94
eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJUaHJlYWQobmFt
ZSwgc2NyaXB0VVJMLCB1c2VyQWdlbnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2Fk
ZXJQcm94eSwgd29ya2VyUmVwb3J0aW5nUHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5
UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKSk7CiB9CiAKLVNoYXJlZFdvcmtlclRo
cmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGlu
Z3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxv
YWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSkKK1NoYXJlZFdvcmtlclRocmVhZDo6U2hhcmVkV29ya2VyVGhyZWFkKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1By
b3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQogICAgIDogV29ya2Vy
VGhyZWFkKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9hZGVy
UHJveHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgMCkKICAgICAsIG1fbmFtZShuYW1lLmlz
b2xhdGVkQ29weSgpKQogewpAQCAtNTMsNyArNTMsNyBAQCBTaGFyZWRXb3JrZXJUaHJlYWQ6On5T
aGFyZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1QYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3Bl
PiBTaGFyZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4pCitQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBTaGFy
ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5n
cywgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPikKIHsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6OmNy
ZWF0ZShtX25hbWUsIHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhpcywgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oCmluZGV4IGU4NzBkMWZjZmVhODdjMTc4YTJi
ODE2Yjg1YTU0NjI1NDE5OWZiNjAuLmNhMDVhYTczZWRkMjU0ZWU2MjVlOTdmMWNlN2JjM2IwZWQx
NTZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaApA
QCAtMzksMTQgKzM5LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFNoYXJl
ZFdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdy
b3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5
JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3Jr
ZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIZWFkZXJUeXBlKTsKICAgICAgICAgdmlydHVhbCB+U2hhcmVkV29ya2VyVGhyZWFk
KCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJH
bG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBl
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pIE9WRVJSSURFOworICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0
b3BPcmlnaW4pIE9WRVJSSURFOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgU2hhcmVkV29ya2Vy
VGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBX
b3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlKTsKKyAgICAgICAgU2hhcmVkV29ya2VyVGhyZWFkKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUpOwogCiAgICAgICAgIFN0cmluZyBtX25hbWU7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmNwcAppbmRleCBjMmY2MTk2MmRjODM5ZmM1YzA3MmY4YzJmYmE3ZGRmZjhjNTEw
MWJiLi5iYTkyZjI4ZThlOTkyZmNmNTcyNDIzYTMzMzBhM2VlNzQwYWE1ZmMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQdHI8V29ya2VyPiBX
b3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmCiAKICAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgS1VSTCBzY3JpcHRV
UkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHdv
cmtlci0+cmVzb2x2ZVVSTCh1cmwsIGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggYTgzNDZkZDEzZjM1MmEzZDY0ZTNjOGQzYTY3NmYwOWYzMjEwNDFm
OS4uYjdlNmRiOTMxNDUxMmIyODY5MWYxOGI4NTRlOWRmODMwNjkwMmMwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAK
ICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCkBAIC04NCw3ICs4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDbGVhbnVwVGFzaygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKLVdvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+IHNldHRpbmdzLCBXb3JrZXJUaHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQorV29ya2VyR2xvYmFsU2NvcGU6Oldvcmtlckdsb2Jh
bFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0
cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1f
dXNlckFnZW50KHVzZXJBZ2VudCkKICAgICAsIG1fZ3JvdXBTZXR0aW5ncyhzZXR0aW5ncykKQEAg
LTExNywxNyArMTE3LDE3IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFwcGx5Q29udGVudFNl
Y3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHBvbGljCiAgICAgY29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5LCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlKTsKIH0KIAotS1VSTCBXb3JrZXJHbG9iYWxTY29wZTo6Y29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJiB1cmwpIGNvbnN0CitVUkwgV29ya2VyR2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAogewogICAgIC8vIEFsd2F5cyByZXR1cm4gYSBudWxs
IFVSTCB3aGVuIHBhc3NlZCBhIG51bGwgc3RyaW5nLgotICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
Y2hhbmdlIHRoZSBLVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhpcyBiZWhhdmlvcj8KKyAgICAv
LyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgVVJMIGNvbnN0cnVjdG9yIHRvIGhhdmUgdGhp
cyBiZWhhdmlvcj8KICAgICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gS1VSTCgp
OworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgLy8gQWx3YXlzIHVzZSBVVEYtOCBpbiBXb3Jr
ZXJzLgotICAgIHJldHVybiBLVVJMKG1fdXJsLCB1cmwpOworICAgIHJldHVybiBVUkwobV91cmws
IHVybCk7CiB9CiAKLVN0cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IEtV
UkwmKSBjb25zdAorU3RyaW5nIFdvcmtlckdsb2JhbFNjb3BlOjp1c2VyQWdlbnQoY29uc3QgVVJM
JikgY29uc3QKIHsKICAgICByZXR1cm4gbV91c2VyQWdlbnQ7CiB9CkBAIC0yMTcsMTggKzIxNywx
OCBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB1cmxzLCBFeGNlcHRpb25Db2RlJgogICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQ
b2xpY3koKSk7CiAgICAgZWMgPSAwOwogICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
ciB1cmxzRW5kID0gdXJscy5lbmQoKTsKLSAgICBWZWN0b3I8S1VSTD4gY29tcGxldGVkVVJMczsK
KyAgICBWZWN0b3I8VVJMPiBjb21wbGV0ZWRVUkxzOwogICAgIGZvciAoVmVjdG9yPFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdXJscy5iZWdpbigpOyBpdCAhPSB1cmxzRW5kOyArK2l0KSB7
Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29t
cGxldGVVUkwoKml0KTsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmNvbXBsZXRlVVJMKCppdCk7CiAgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkg
ewogICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIGNvbXBsZXRlZFVSTHMuYXBwZW5kKHVybCk7CiAgICAgfQotICAgIFZl
Y3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29tcGxldGVkVVJMcy5lbmQoKTsKKyAg
ICBWZWN0b3I8VVJMPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29tcGxldGVkVVJMcy5lbmQoKTsK
IAotICAgIGZvciAoVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbXBsZXRlZFVS
THMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChWZWN0b3I8VVJMPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRVUkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVyPiBzY3JpcHRMb2FkZXIoV29ya2Vy
U2NyaXB0TG9hZGVyOjpjcmVhdGUoKSk7CiAjaWYgUExBVEZPUk0oQkxBQ0tCRVJSWSkKICAgICAg
ICAgc2NyaXB0TG9hZGVyLT5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNT
Y3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4
IDcyNGI0MGUxMGU1ODk3ZDk3YzYzNmZlYzkxZjE0NTE5ZWFkZjI0Y2YuLjc4YWY3ODIyZTIyZmNi
NWE2YWVhZmRjZDY2M2I4MzcyZjZjMWY3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmgKQEAgLTY1LDExICs2NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgICAgIHZpcnR1YWwg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gbV91cmw7IH0K
LSAgICAgICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9W
RVJSSURFIEZJTkFMOworICAgICAgICB2aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgT1ZF
UlJJREUgRklOQUwgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgdmlydHVhbCBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7CiAKICAgICAgICAgY29u
c3QgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncygpIHsgcmV0dXJuIG1fZ3JvdXBTZXR0aW5n
cy5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29u
c3Q7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKSBPVkVSUklERTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV90b3BPcmlnaW4uZ2V0KCk7IH0KIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBXb3JrZXJUaHJlYWQqLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pOworICAgICAgICBXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNl
dHRpbmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKTsKICAgICAgICAgdm9pZCBhcHBseUNvbnRlbnRTZWN1cml0eVBvbGljeUZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29u
c29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxT
dGFjaz4pIE9WRVJSSURFOwpAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIFdvcmtlckV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBP
VkVSUklERSBGSU5BTDsKIAotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBVUkwgbV91cmw7
CiAgICAgICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICAgICAgT3duUHRyPEdyb3VwU2V0dGlu
Z3M+IG1fZ3JvdXBTZXR0aW5nczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlUHJveHkuaAppbmRleCBkOTdhMDdjYmQ5ZTI3YjE5NzYwYjk4MTk5MTM1NmFl
MTMyM2NkYWQyLi5hOTVkYzc1MmE0Nzg4MjVmMTU3YjAyMDVhMDQ0N2MyZGM5ZWY4OTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlUHJveHkuaApAQCAt
NDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOwor
ICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBXb3JrZXI7CiAKICAgICAvLyBBIHByb3h5IHRvIHRh
bGsgdG8gdGhlIHdvcmtlciBjb250ZXh0LgpAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGVQcm94eSgpIHsgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1v
ZGUpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9j
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTG9jYXRpb24uaAppbmRleCA0
YmQzNTkxODkyZjYxYzkzM2M1NGYyZGVjYTFkOTM5NDYxNTkwZTg5Li4xMTExYjVkMjAzYjEyZTU0
ZTQwMWU1ZWE4NWUzMjhlYmUxNzY4ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckxvY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJM
b2NhdGlvbi5oCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFdv
cmtlckxvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyTG9jYXRpb24+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckxvY2F0aW9uPiBjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlv
bj4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdvcmtlckxvY2F0aW9uKHVybCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICAgICAgY29uc3Qg
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogCiAgICAgICAgIFN0cmluZyBocmVm
KCkgY29uc3Q7CiAKQEAgLTYwLDkgKzYwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBocmVmKCk7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGV4cGxpY2l0IFdvcmtlckxvY2F0aW9uKGNvbnN0IEtVUkwmIHVybCkgOiBt
X3VybCh1cmwpIHsgfQorICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBVUkwm
IHVybCkgOiBtX3VybCh1cmwpIHsgfQogCi0gICAgICAgIEtVUkwgbV91cmw7CisgICAgICAgIFVS
TCBtX3VybDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IGI3NGNlNDE0YzNh
OGE5YzZhNmFmZTYyYmMwMjM0Mzc1MGZhMDZkZTguLjAyZWJjNjUxY2Q2YjhhNjg2Y2Q1MjA3Yjdk
NDZmMGZkYzM2MTk2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgV29ya2VyTWVzc2FnaW5nUHJveHk6
On5Xb3JrZXJNZXNzYWdpbmdQcm94eSgpCiAgICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzV29ya2VyR2xvYmFsU2NvcGUoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc3Rh
dGljX2Nhc3Q8V29ya2VyR2xvYmFsU2NvcGUqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2V0
KCkpLT50aHJlYWQoKS0+dGhyZWFkSUQoKSkpOwogfQogCi12b2lkIFdvcmtlck1lc3NhZ2luZ1By
b3h5OjpzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlIHN0YXJ0TW9kZSkKK3ZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnN0YXJ0V29y
a2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFy
dE1vZGUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZCB0byBiZSByZXZpc2l0ZWQgd2hlbiB3
ZSBzdXBwb3J0IG5lc3RlZCB3b3JrZXIgb25lIGRheQogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXggOGE3ZWM4ZGIwZmQxYmFiNzdmYWE3NTEyYjQ0YmJm
MzZkNTUwMWY4Yi4uMTg5NmE4MTM1MDRhYzE4YWJhY2RkMWZhYzAzMTkwNjlkZmY3NWE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTMs
NyArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgLy8gSW1wbGVtZW50YXRp
b25zIG9mIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVz
ZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgb2JqZWN0IHRocmVhZC4pCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlKSBPVkVSUklERTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyR2xv
YmFsU2NvcGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgT1ZFUlJJREU7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpIE9WRVJS
SURFOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3Bl
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4pIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggOTIyNzIyNjNkZjFiNTAzNDJjNDg4MzIwNDRmZDg5
MWQxNWFlYjdiYy4uOGRhNGVlZmVkNDJjODY1MjRkNmY3MzVkYzk0NDI2YThkOTliMTYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNTcs
NyArNTcsNyBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6On5Xb3JrZXJTY3JpcHRMb2FkZXIoKQogewog
fQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBD
cm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KQordm9pZCBX
b3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9zc09yaWdpblJl
cXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KQogewogICAgIG1fdXJsID0gdXJs
OwogCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpCiAgICAgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2FzdDxX
b3JrZXJHbG9iYWxTY29wZSo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLCAqcmVxdWVzdCwgKnRo
aXMsIG9wdGlvbnMpOwogfQogICAgIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBjb25zdCBLVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJl
cXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQordm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5SZXF1
ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xp
ZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGNsaWVudCk7CiAgICAgbV9jbGllbnQgPSBjbGll
bnQ7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0CiAgICAgbV90aHJl
YWRhYmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KIAotY29uc3QgS1VSTCYgV29ya2Vy
U2NyaXB0TG9hZGVyOjpyZXNwb25zZVVSTCgpIGNvbnN0Citjb25zdCBVUkwmIFdvcmtlclNjcmlw
dExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogewogICAgIEFTU0VSVCghZmFpbGVkKCkpOwog
ICAgIHJldHVybiBtX3Jlc3BvbnNlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKaW5kZXggZGMxYzViYTYyMTE5MzFiYTJjYzVhYTQ5NzNlNGY1ZDg5NDdk
Mjg5OS4uOWNiNGZiZGY0ODExOTUzN2IwZjA1ZWQ4MmVkOGYxMzhkNzhjY2YyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC0zMCw3ICszMCw3IEBA
CiAKICNpZiBFTkFCTEUoV09SS0VSUykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgpAQCAtNTYsMTQg
KzU2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV29ya2VyU2NyaXB0TG9hZGVyKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBs
b2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7Ci0gICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqKTsKKyAgICAgICAgdm9pZCBsb2FkU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVVJMJiwgQ3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5KTsKKyAgICAgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwg
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CiAKICAgICAgICAgdm9pZCBub3RpZnlFcnJvcigp
OwogCiAgICAgICAgIFN0cmluZyBzY3JpcHQoKTsKLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwo
KSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsg
fQorICAgICAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CiAgICAgICAgIGJvb2wg
ZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWQ7IH0KICAgICAgICAgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKQEAgLTkxLDgg
KzkxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9yZXNwb25zZUVu
Y29kaW5nOyAgICAgICAgCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7Ci0gICAgICAgIEtVUkwgbV91
cmw7Ci0gICAgICAgIEtVUkwgbV9yZXNwb25zZVVSTDsKKyAgICAgICAgVVJMIG1fdXJsOworICAg
ICAgICBVUkwgbV9yZXNwb25zZVVSTDsKICAgICAgICAgYm9vbCBtX2ZhaWxlZDsKICAgICAgICAg
dW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXI7CiAgICAgICAgIGJvb2wgbV9maW5pc2hpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTgzZjk5ZDAzZDM4Yjg1
ZTFlMDExMDA2YzdkMjgzYzRjMDRkYjc5YS4uNWU0OTI5YWI1NzhiYzhhMTc0Zjc3ZmFiNGYzODU1
ZWE0ZTNhMWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAt
MzIsMTEgKzMyLDExIEBACiAKICNpbmNsdWRlICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktVUkwu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERh
dGEuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNjks
MTIgKzY5LDEyIEBAIHVuc2lnbmVkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkQ291bnQoKQog
c3RydWN0IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVh
dGUoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhPiBjcmVhdGUoY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5n
cywgc291cmNlQ29kZSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUsIHRvcE9yaWdpbikpOwogICAgIH0KIAotICAgIEtVUkwgbV9zY3Jp
cHRVUkw7CisgICAgVVJMIG1fc2NyaXB0VVJMOwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAg
ICBPd25QdHI8R3JvdXBTZXR0aW5ncz4gbV9ncm91cFNldHRpbmdzOwogICAgIFN0cmluZyBtX3Nv
dXJjZUNvZGU7CkBAIC04MywxMCArODMsMTAgQEAgcHVibGljOgogICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSBtX2NvbnRlbnRTZWN1cml0eVBvbGljeVR5cGU7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX3RvcE9yaWdpbjsKIHByaXZhdGU6Ci0gICAgV29ya2VyVGhy
ZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5
cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogfTsKIAotV29ya2VyVGhyZWFkU3RhcnR1
cERhdGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIHRvcE9yaWdpbikKK1dvcmtlclRocmVhZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFy
dHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3Vy
aXR5UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKICAgICA6IG1f
c2NyaXB0VVJMKHNjcmlwdFVSTC5jb3B5KCkpCiAgICAgLCBtX3VzZXJBZ2VudCh1c2VyQWdlbnQu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3NvdXJjZUNvZGUoc291cmNlQ29kZS5pc29sYXRlZENv
cHkoKSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2Vy
VGhyZWFkU3RhcnR1cERhdGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdAogICAgIG1f
Z3JvdXBTZXR0aW5ncy0+c2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKHNldHRpbmdzLT5pbmRleGVk
REJEYXRhYmFzZVBhdGgoKS5pc29sYXRlZENvcHkoKSk7CiB9CiAKLVdvcmtlclRocmVhZDo6V29y
a2VyVGhyZWFkKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUs
IFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJv
eHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2Rl
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBVUkwm
IHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3Mq
IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3
b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAg
ICAgOiBtX3RocmVhZElEKDApCiAgICAgLCBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRl
clByb3h5KQogICAgICwgbV93b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCmluZGV4IGVhMzQ5NDgwMjNlNTNi
OTVlYTYwY2JmMjRjZDQ3MDQwMGYzMDgyMGQuLmQ1ZGIyYWJjZWVjNzQyMDI4OWU1MWM5MTQ2ZjZm
YThjNmI4MzBhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtMzks
NyArMzksNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAg
IGNsYXNzIFVSTDsKICAgICBjbGFzcyBOb3RpZmljYXRpb25DbGllbnQ7CiAgICAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CkBAIC03MSwxMCArNzEs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNv
bnN0IEdyb3VwU2V0dGluZ3MqLCAgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2Fk
ZXJQcm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAg
V29ya2VyVGhyZWFkKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBH
cm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3Qg
U3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVh
ZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CiAKICAgICAgICAgLy8g
RmFjdG9yeSBtZXRob2QgZm9yIGNyZWF0aW5nIGEgbmV3IHdvcmtlciBjb250ZXh0IGZvciB0aGUg
dGhyZWFkLgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSA9IDA7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOwogCiAg
ICAgICAgIC8vIEV4ZWN1dGVzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd29ya2VyIHRocmVhZC4g
RGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0byBwZXJmb3JtIGFjdGlvbnMgYmVmb3JlL2Fm
dGVyIGVudGVyaW5nIHRoZSBldmVudCBsb29wLgogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuRXZl
bnRMb29wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCmluZGV4IDM4MDY0M2FkNTNiOWRmZjc5
M2I2MTJlMTIxN2Q0Y2ZhODlmMGIyNWMuLjNlMjBkOTdlYjg5Mjk4Y2M5NmRkN2I0ODJkNWJhOGY0
N2FkNzUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IERPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJl
ZlB0cjxEb2N1bWVudD4gZG9jID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNv
bnRlbnRUeXBlLCAwLCBLVVJMKCksIGZhbHNlKTsKKyAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9
IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgVVJMKCks
IGZhbHNlKTsKICAgICBkb2MtPnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVh
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDE5YjE5OTQ5
ZDJjNTUzYzkyMDQwMTMxNWViY2Q2YmE0YjhlMDMzMDMuLmMyNzViMTAzZDIyMDA0YjBiODZmM2Fl
Mjk4ZTFlZmZiMmE3ZTFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtNDY5LDEyICs0NjksMTIgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUEhl
YWRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICYmICFuYW1lLnN0YXJ0c1dpdGgoc3Rh
dGljRGF0YS0+bV9zZWNIZWFkZXJQcmVmaXgsIGZhbHNlKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVx
dWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBFeGNlcHRp
b25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRo
b2QsIGNvbnN0IFVSTCYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBvcGVuKG1ldGhv
ZCwgdXJsLCB0cnVlLCBlYyk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3Qg
U3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29k
ZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBj
b25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaW50
ZXJuYWxBYm9ydCgpOwogICAgIFN0YXRlIHByZXZpb3VzU3RhdGUgPSBtX3N0YXRlOwpAQCAtNTU0
LDE3ICs1NTQsMTcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBFeGMKICAgICAgICAgbV9zdGF0ZSA9
IE9QRU5FRDsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1l
dGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsK
KyAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxz
LnNldFVzZXIodXNlcik7CiAKICAgICBvcGVuKG1ldGhvZCwgdXJsV2l0aENyZWRlbnRpYWxzLCBh
c3luYywgZWMpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBh
c3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOworICAgIFVS
TCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNl
cih1c2VyKTsKICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhwYXNzd29yZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMjQxZWE0NTAyYjVkMGNjMWUyM2IyOGE4
MDZlZTliMzIzMmI5OTYwZC4uZjgwNjRmNWIzZTBkNDQzMTFkODAwZTc2MzQ4MGU1NDlhMDA3MmRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTg2LDE2ICs4NiwxNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0RXZlbnRU
YXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4g
QWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwo
KSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIFN0cmluZyBzdGF0dXNUZXh0KEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKICAgICBpbnQgc3RhdHVzKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAg
ICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCB3aXRoQ3JlZGVudGlhbHMoKSBj
b25zdCB7IHJldHVybiBtX2luY2x1ZGVDcmVkZW50aWFsczsgfQogICAgIHZvaWQgc2V0V2l0aENy
ZWRlbnRpYWxzKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYs
IGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIGNv
bnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJM
JiwgYm9vbCBhc3luYywgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJp
bmcmIG1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBF
eGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25z
dCBVUkwmLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQoRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2VuZChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNlbmQo
Y29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHByaXZh
dGU6CiAKICAgICBPd25QdHI8WE1MSHR0cFJlcXVlc3RVcGxvYWQ+IG1fdXBsb2FkOwogCi0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbWV0aG9kOwogICAgIEhU
VFBIZWFkZXJNYXAgbV9yZXF1ZXN0SGVhZGVyczsKICAgICBSZWZQdHI8Rm9ybURhdGE+IG1fcmVx
dWVzdEVudGl0eUJvZHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0
UnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5jcHAKaW5kZXggNzg3
ODQ2MmRhNTI4Njg0ZDYxNmEzNzUwYzExYmYyYTY1ZGQ3NDhlZi4uZGY4NTM0ZWVmZWFmZjE2ZWVj
NWFjZmUzNWZkN2NlNmFiNmRkMzMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hT
TEltcG9ydFJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmNw
cApAQCAtNDksNyArNDksNyBAQCBYU0xJbXBvcnRSdWxlOjp+WFNMSW1wb3J0UnVsZSgpCiAgICAg
ICAgIG1fY2FjaGVkU2hlZXQtPnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotdm9pZCBYU0xJbXBv
cnRSdWxlOjpzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCkKK3ZvaWQgWFNMSW1wb3J0UnVsZTo6c2V0WFNM
U3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiBzaGVldCkKIHsKICAgICBpZiAobV9zdHlsZVNoZWV0KQogICAgICAgICBtX3N0eWxl
U2hlZXQtPnNldFBhcmVudFN0eWxlU2hlZXQoMCk7CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgWFNM
SW1wb3J0UnVsZTo6bG9hZFNoZWV0KCkKICAgICBYU0xTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCA9
IHBhcmVudFN0eWxlU2hlZXQoKTsKICAgICBpZiAoIXBhcmVudFNoZWV0LT5iYXNlVVJMKCkuaXNO
dWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJlbnQgc3R5bGVoZWV0J3MgVVJMIGFzIHRoZSBiYXNl
IFVSTAotICAgICAgICBhYnNIcmVmID0gS1VSTChwYXJlbnRTaGVldC0+YmFzZVVSTCgpLCBtX3N0
ckhyZWYpLnN0cmluZygpOworICAgICAgICBhYnNIcmVmID0gVVJMKHBhcmVudFNoZWV0LT5iYXNl
VVJMKCksIG1fc3RySHJlZikuc3RyaW5nKCk7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGEgY3lj
bGUgaW4gb3VyIGltcG9ydCBjaGFpbi4gIElmIHdlIGVuY291bnRlciBhIHN0eWxlc2hlZXQKICAg
ICAvLyBpbiBvdXIgcGFyZW50IGNoYWluIHdpdGggdGhlIHNhbWUgVVJMLCB0aGVuIGp1c3QgYmFp
bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oCmluZGV4IDM1MGNkZDliMTY1MzRiNjE3ZjA2
Mjc2MjkzYzQ3NDBlMmNmNmIxOWUuLjcyZTA0MDA4YWQ5NjY2N2VlODkyMmZmZWUxNjQ2OGY0MmJj
MWZlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFhTTEltcG9ydFJ1bGUoWFNMU3R5bGVTaGVldCogcGFyZW50
U2hlZXQsIGNvbnN0IFN0cmluZyYgaHJlZik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0
cmluZyYgc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0
cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KTsKICAg
ICAKICAgICBYU0xTdHlsZVNoZWV0KiBtX3BhcmVudFN0eWxlU2hlZXQ7CiAgICAgU3RyaW5nIG1f
c3RySHJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCmluZGV4IGQzNDZhYWY2YTM1N2Rk
NDUwNGJmMDkyNjUwOWM3ZDU4NjJmMTQ3NTYuLmZkMWUzOTMyMTJmMjVkM2M2YjJjZGMyNzYxMzg4
MTdmZjY0OWZiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtNDAsMjIgKzQw
LDIyIEBAIGNsYXNzIFhTTEltcG9ydFJ1bGU7CiAgICAgCiBjbGFzcyBYU0xTdHlsZVNoZWV0IEZJ
TkFMIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBv
cnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50SW1wb3J0
LCBvcmlnaW5hbFVSTCwgZmluYWxVUkwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
WFNMU3R5bGVTaGVldD4gY3JlYXRlKFByb2Nlc3NpbmdJbnN0cnVjdGlvbiogcGFyZW50Tm9kZSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlKFByb2Nlc3NpbmdJbnN0cnVjdGlv
biogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5h
bFVSTCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChw
YXJlbnROb2RlLCBvcmlnaW5hbFVSTCwgZmluYWxVUkwsIGZhbHNlKSk7CiAgICAgfQotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVkKFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3JlYXRlRW1iZWRkZWQoUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKiBwYXJlbnROb2RlLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudE5vZGUsIGZpbmFsVVJMLnN0
cmluZygpLCBmaW5hbFVSTCwgdHJ1ZSkpOwogICAgIH0KIAogICAgIC8vIFRha2luZyBhbiBhcmJp
dHJhcnkgbm9kZSBpcyB1bnNhZmUsIGJlY2F1c2Ugb3duZXIgbm9kZSBwb2ludGVyIGNhbiBiZWNv
bWUgc3RhbGUuCiAgICAgLy8gWFNMVFByb2Nlc3NvciBlbnN1cmVzIHRoYXQgdGhlIHN0eWxlc2hl
ZXQgZG9lc24ndCBvdXRsaXZlIGl0cyBwYXJlbnQsIGluIHBhcnQgYnkgbm90IGV4cG9zaW5nIGl0
IHRvIEphdmFTY3JpcHQuCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8WFNMU3R5bGVTaGVldD4gY3Jl
YXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdp
bmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYU0xT
dHlsZVNoZWV0PiBjcmVhdGVGb3JYU0xUUHJvY2Vzc29yKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQocGFyZW50Tm9kZSwgb3JpZ2luYWxV
UkwsIGZpbmFsVVJMLCBmYWxzZSkpOwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgY2hlY2tMb2FkZWQoKTsKICAgICAKLSAgICBjb25zdCBLVVJMJiBmaW5h
bFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KKyAgICBjb25zdCBVUkwmIGZpbmFs
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9maW5hbFVSTDsgfQogCiAgICAgdm9pZCBsb2FkQ2hpbGRT
aGVldHMoKTsKICAgICB2b2lkIGxvYWRDaGlsZFNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZik7CkBA
IC05NCwxOCArOTQsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyT3duZXJOb2RlKCkgT1ZFUlJJREUgeyBtX293bmVyTm9kZSA9IDA7IH0KLSAgICB2aXJ0
dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZmluYWxVUkw7IH0K
KyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJMKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9maW5h
bFVSTDsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1hTTFN0eWxlU2hlZXQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biB0cnVlOyB9CiAKIHByaXZhdGU6Ci0gICAgWFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2Rl
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCwgYm9vbCBl
bWJlZGRlZCk7Ci0gICAgWFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRJbXBvcnQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKTsKKyAgICBY
U0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkws
IGNvbnN0IFVSTCYgZmluYWxVUkwsIGJvb2wgZW1iZWRkZWQpOworICAgIFhTTFN0eWxlU2hlZXQo
WFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBj
b25zdCBVUkwmIGZpbmFsVVJMKTsKICAgICAKICAgICBOb2RlKiBtX293bmVyTm9kZTsKICAgICBT
dHJpbmcgbV9vcmlnaW5hbFVSTDsKLSAgICBLVVJMIG1fZmluYWxVUkw7CisgICAgVVJMIG1fZmlu
YWxVUkw7CiAgICAgYm9vbCBtX2lzRGlzYWJsZWQ7CiAKICAgICBWZWN0b3I8T3duUHRyPFhTTElt
cG9ydFJ1bGU+ID4gbV9jaGlsZHJlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0TGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dExpYnhzbHQuY3BwCmluZGV4IDY3ZmYxZWI4OTZkMTRhM2VmNTA4OGYwZjdhOGZhZTJiYTk3NmZk
OTAuLmZlNzRlNDQ4ODU0YzhjN2U5NGVjNjNiYzk1ZmUwYTUxMjJiYmI0YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBT
T0ZUX0xJTksobGlieHNsdCwgeHNsdExvYWRTdHlsZXNoZWV0UEksIHhzbHRTdHlsZXNoZWV0UHRy
LCAoeG1sRG9jUHRyIGRvYyksIChkbwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVhTTFN0eWxl
U2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCitYU0xTdHlsZVNoZWV0OjpY
U0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwpCiAgICAgOiBtX293bmVyTm9kZSgwKQogICAg
ICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkKICAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwp
CkBAIC02Nyw3ICs2Nyw3IEBAIFhTTFN0eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0
UnVsZSogcGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSCiB7CiB9CiAKLVhTTFN0
eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsICBib29sIGVtYmVkZGVkKQorWFNMU3R5
bGVTaGVldDo6WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkKICAgICA6IG1f
b3duZXJOb2RlKHBhcmVudE5vZGUpCiAgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQog
ICAgICwgbV9maW5hbFVSTChmaW5hbFVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNw
cAppbmRleCAwZDA3OTUyMTBmMzkzZTUxNmI3Mjk3ZWVmNjQwZTRmOTI5ZGJmYzIzLi5hZWJhOTQ1
NTg1MjA3NTdmNzQyNjI0ZDdmZjMzZThkYjcyMjFkMWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwCkBAIC03NiwxMCArNzYsMTAgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNM
VFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmMK
IAogICAgIFJlZlB0cjxEb2N1bWVudD4gcmVzdWx0OwogICAgIGlmIChzb3VyY2VNSU1FVHlwZSA9
PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFt
ZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDogS1VSTCgpKTsKKyAg
ICAgICAgcmVzdWx0ID0gRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/
IG93bmVyRG9jdW1lbnQtPnVybCgpIDogVVJMKCkpOwogICAgICAgICB0cmFuc2Zvcm1UZXh0U3Ry
aW5nVG9YSFRNTERvY3VtZW50U3RyaW5nKGRvY3VtZW50U291cmNlKTsKICAgICB9IGVsc2UKLSAg
ICAgICAgcmVzdWx0ID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KHNvdXJjZU1J
TUVUeXBlLCBmcmFtZSwgc291cmNlSXNEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQtPnVybCgpIDog
S1VSTCgpLCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudChzb3VyY2VNSU1FVHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25l
ckRvY3VtZW50LT51cmwoKSA6IFVSTCgpLCBmYWxzZSk7CiAKICAgICAvLyBCZWZvcmUgcGFyc2lu
Zywgd2UgbmVlZCB0byBzYXZlICYgZGV0YWNoIHRoZSBvbGQgZG9jdW1lbnQgYW5kIGdldCB0aGUg
bmV3IGRvY3VtZW50CiAgICAgLy8gaW4gcGxhY2UuIFdlIGhhdmUgdG8gZG8gdGhpcyBvbmx5IGlm
IHdlJ3JlIHJlbmRlcmluZyB0aGUgcmVzdWx0IGRvY3VtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAKaW5kZXggNmYwODQ5ZDdkMzk3OTlmOTBkNzVmMjJj
NDVkMDkwY2Y4NDEzMTJmNC4uZTk1MjRiZTUzNDczZWQ2OWJhMDczZmQ5MWUwZjVlM2ZlNTFiMmFm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCkBAIC0x
MjAsNyArMTIwLDcgQEAgc3RhdGljIHhtbERvY1B0ciBkb2NMb2FkZXJGdW5jKGNvbnN0IHhtbENo
YXIqIHVyaSwKICAgICBjYXNlIFhTTFRfTE9BRF9ET0NVTUVOVDogewogICAgICAgICB4c2x0VHJh
bnNmb3JtQ29udGV4dFB0ciBjb250ZXh0ID0gKHhzbHRUcmFuc2Zvcm1Db250ZXh0UHRyKWN0eHQ7
CiAgICAgICAgIHhtbENoYXIqIGJhc2UgPSB4bWxOb2RlR2V0QmFzZShjb250ZXh0LT5kb2N1bWVu
dC0+ZG9jLCBjb250ZXh0LT5ub2RlKTsKLSAgICAgICAgS1VSTCB1cmwoS1VSTChQYXJzZWRVUkxT
dHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CisgICAgICAgIFVSTCB1cmwoVVJMKFBhcnNlZFVSTFN0
cmluZywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYmFzZSkpLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPih1cmkpKTsKICAgICAgICAgeG1sRnJlZShiYXNlKTsKICAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcjsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAppbmRleCAzMzg3MDkxNDJlZGU4Y2RjZTk0ODU4MTBjYTg3NjA5NGQyZGI0ZTli
Li5iMTg2MTY0MTZiNWNmY2ExMzhkYzg2NGYxM2Q2YThiZGJjZGZiNjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3Bw
CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIHZvaWQgc3dpdGNoVG9VVEYxNih4bWxQYXJzZXJD
dHh0UHRyIGN0eHQpCiAgICAgeG1sU3dpdGNoRW5jb2RpbmcoY3R4dCwgQk9NSGlnaEJ5dGUgPT0g
MHhGRiA/IFhNTF9DSEFSX0VOQ09ESU5HX1VURjE2TEUgOiBYTUxfQ0hBUl9FTkNPRElOR19VVEYx
NkJFKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQoY29uc3QgS1VS
TCYgdXJsKQorc3RhdGljIGJvb2wgc2hvdWxkQWxsb3dFeHRlcm5hbExvYWQoY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKTsKIApAQCAtNDUxLDcg
KzQ1MSw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgQVNT
RVJUKFhNTERvY3VtZW50UGFyc2VyU2NvcGU6OmN1cnJlbnRDYWNoZWRSZXNvdXJjZUxvYWRlcik7
CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBsaWJ4bWxMb2FkZXJUaHJlYWQpOwogCi0g
ICAgS1VSTCB1cmwoS1VSTCgpLCB1cmkpOworICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKICAg
ICBpZiAoIXNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKHVybCkpCiAgICAgICAgIHJldHVybiAmZ2xv
YmFsRGVzY3JpcHRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4KaW5kZXggODNiMzhjNDExMjExNmNmYWZjNWJlZjNmMjA4OTUzMDJlYTM0OTk5Yy4uYzFjN2Zm
NDZmMjA1MzA2MjY3YjE5MGYyNTU2OWYyYzNjNDFhMzhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTM5Myw3ICszOTMsNyBAQCBFWFBPUlRTCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9hZGRBdXRob3JTaGVldEBEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFBRVhWPyRQYXNzUmVmUHRyQFZTdHlsZVNoZWV0Q29udGVu
dHNAV2ViQ29yZUBAQFdURkBAQFosID9hZGRBdXRob3JTaGVldEBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFzc1JlZlB0ckBWU3R5bGVTaGVldENvbnRlbnRz
QFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cGFyc2VTdHJp
bmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQFFBRV9OQUJWU3RyaW5nQFdURkBAQFosID9w
YXJzZVN0cmluZ0BTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUVBQV9OQUVCVlN0cmluZ0BX
VEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZW1wdHlTdHJpbmdAV1RGQEBZQUFC
VlN0cmluZ0AxQFhaLCA/ZW1wdHlTdHJpbmdAV1RGQEBZQUFFQlZTdHJpbmdAMUBYWikKLSAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP2ludmFsaWRhdGVAS1VSTEBXZWJDb3JlQEBBQUVYWFosID9p
bnZhbGlkYXRlQEtVUkxAV2ViQ29yZUBAQUVBQVhYWikKKyAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP2ludmFsaWRhdGVAVVJMQFdlYkNvcmVAQEFBRVhYWiwgP2ludmFsaWRhdGVAVVJMQFdlYkNv
cmVAQEFFQUFYWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/MFN0eWxlU2hlZXRDb250
ZW50c0BXZWJDb3JlQEBBQUVAUEFWU3R5bGVSdWxlSW1wb3J0QDFAQUJWU3RyaW5nQFdURkBAQUJV
Q1NTUGFyc2VyQ29udGV4dEAxQEBaLCA/PzBTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAQUVB
QUBQRUFWU3R5bGVSdWxlSW1wb3J0QDFAQUVCVlN0cmluZ0BXVEZAQEFFQlVDU1NQYXJzZXJDb250
ZXh0QDFAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9hZGRVc2VyU2hlZXRARG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0ckBWU3R5bGVT
aGVldENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkVXNlclNoZWV0QERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUVBQVhWPyRQYXNzUmVmUHRyQFZTdHlsZVNoZWV0
Q29udGVudHNAV2ViQ29yZUBAQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/
MVN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVAWFosID8/MVN0eWxlU2hlZXRDb250ZW50
c0BXZWJDb3JlQEBRRUFBQFhaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJD
b29raWVKYXIuY3BwCmluZGV4IGIzYmE4ZjM3MmViM2RiMDAxMDdlYzYzODBiNGNkYWNiYmMwYmM4
MTguLjE5NDY4ODQ4MjkwMzMyOGU1NjJhOTliYzNmMzRkMzc4NGNlYWZhOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKQEAgLTIxLDcgKzIxLDcg
QEAKICNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKIAogI2luY2x1ZGUgIkNvb2tpZU1hbmFnZXIu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzUs
NyArMzUsNyBAQCBXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcigpCiAKIHN0ZDo6dmVjdG9yPEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+IFdlYkNvb2tpZUphcjo6Y29va2llcyhjb25zdCBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB1cmwpCiB7Ci0gICAgS1VSTCBrdXJsID0gS1VS
TChLVVJMKCksIHVybCk7CisgICAgVVJMIGt1cmwgPSBVUkwoVVJMKCksIHVybCk7CiAKICAgICBW
ZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiByYXdDb29raWVzOwogICAgIGNvb2tpZU1hbmFn
ZXIoKS5nZXRSYXdDb29raWVzKHJhd0Nvb2tpZXMsIGt1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMp
OwpAQCAtNDksNyArNDksNyBAQCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3Ry
aW5nPiBXZWJDb29raWVKYXI6OmNvb2tpZXMoY29uc3QgQmxhY2tCZXJyeQogCiB2b2lkIFdlYkNv
b2tpZUphcjo6c2V0Q29va2llcyhjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiB1
cmwsIGNvbnN0IHN0ZDo6dmVjdG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+JiBjb29r
aWVzKQogewotICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJs
ID0gVVJMKFVSTCgpLCB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+IGNvcmVDb29raWVzOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkKICAgICAgICAgY29y
ZUNvb2tpZXMuYXBwZW5kKGNvb2tpZXNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJLaXRUZXh0Q29kZWMuY3BwCmluZGV4IDJlNjM4ZTZlMTBmZGQxZWEyMDk0NTRm
Y2MxOWRmMzI2NWM2NWY1MDYuLjg3MjI4ZTExMzgxMmIwYThiMDZjYjE1OWRlY2NkMWZiMjRjOTQ1
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENv
ZGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRDb2Rl
Yy5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJX
ZWJLaXRUZXh0Q29kZWMuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJUZXh0Q29kZWNJQ1UuaCIKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1T
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlLmNwcAppbmRleCAwMGU2ODQwNDA4NTY4MmI5YzYxNmYwZDBhMGZiZjg2NjZh
YmIwNGRiLi40OTllZDBjYmEyOWZlM2I2ZmZhODJlNGIxYWJkYzczNDVjNGQyYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTIyNCwxMyArMjI0LDEzIEBA
IGNvbnN0IGRvdWJsZSBtYXhpbXVtSW1hZ2VEb2N1bWVudFpvb21Ub0ZpdFNjYWxlID0gMjsKIGNv
bnN0IGRvdWJsZSB6b29tRmFjdG9yRXBzaWxvbiA9IDAuMDAwMTsKIAogLy8gSGVscGVyIGZ1bmN0
aW9uIHRvIHBhcnNlIGEgVVJMIGFuZCBmaWxsIGluIG1pc3NpbmcgcGFydHMuCi1zdGF0aWMgS1VS
TCBwYXJzZVVybChjb25zdCBTdHJpbmcmIHVybCkKK3N0YXRpYyBVUkwgcGFyc2VVcmwoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyh1cmwpOwotICAgIEtVUkwga3Vy
bCA9IEtVUkwoS1VSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1
cmxTdHJpbmcpOwogICAgIGlmIChrdXJsLnByb3RvY29sKCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
IHVybFN0cmluZy5pbnNlcnQoImh0dHA6Ly8iLCAwKTsKLSAgICAgICAga3VybCA9IEtVUkwoS1VS
TCgpLCB1cmxTdHJpbmcpOworICAgICAgICBrdXJsID0gVVJMKFVSTCgpLCB1cmxTdHJpbmcpOwog
ICAgIH0KIAogICAgIHJldHVybiBrdXJsOwpAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgV2ViUGFn
ZVByaXZhdGU6OmluaXQoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcGFnZUdy
b3VwTmFtZSkKIAogY2xhc3MgRGVmZXJyZWRUYXNrTG9hZE1hbnVhbFNjcmlwdDogcHVibGljIERl
ZmVycmVkVGFzazwmV2ViUGFnZVByaXZhdGU6Om1fd291bGRMb2FkTWFudWFsU2NyaXB0PiB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgRGVmZXJyZWRUYXNrTG9hZE1hbnVhbFNjcmlwdChXZWJQYWdl
UHJpdmF0ZSogd2ViUGFnZVByaXZhdGUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBleHBsaWNpdCBE
ZWZlcnJlZFRhc2tMb2FkTWFudWFsU2NyaXB0KFdlYlBhZ2VQcml2YXRlKiB3ZWJQYWdlUHJpdmF0
ZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIDogRGVmZXJyZWRUYXNrVHlwZSh3ZWJQYWdlUHJp
dmF0ZSkKICAgICB7CiAgICAgICAgIHdlYlBhZ2VQcml2YXRlLT5tX2NhY2hlZE1hbnVhbFNjcmlw
dCA9IHVybDsKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpsb2FkKGNv
bnN0IFBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYgbmV0UmVxLCBib29sIG5lZWRSZWZlcgogICAg
IH0gZWxzZQogICAgICAgICBtX21haW5GcmFtZS0+c2V0SW5WaWV3U291cmNlTW9kZShmYWxzZSk7
CiAKLSAgICBLVVJMIGt1cmwgPSBwYXJzZVVybCh1cmxTdHJpbmcpOworICAgIFVSTCBrdXJsID0g
cGFyc2VVcmwodXJsU3RyaW5nKTsKICAgICBpZiAocHJvdG9jb2xJcyhrdXJsLCAiamF2YXNjcmlw
dCIpKSB7CiAgICAgICAgIC8vIE5ldmVyIHJ1biBqYXZhc2NyaXB0IHdoaWxlIGxvYWRpbmcgaXMg
ZGVmZXJyZWQuCiAgICAgICAgIGlmIChtX3BhZ2UtPmRlZmVyc0xvYWRpbmcoKSkKQEAgLTczOSwx
NCArNzM5LDE0IEBAIHZvaWQgV2ViUGFnZTo6bG9hZChjb25zdCBQbGF0Zm9ybTo6TmV0d29ya1Jl
cXVlc3QmIHJlcXVlc3QsIGJvb2wgbmVlZFJlZmVyZXIpCiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6
OmxvYWRTdHJpbmcoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgc3RyaW5nLCBj
b25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBiYXNlVVJMLCBjb25zdCBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OlN0cmluZyYgZmFpbGluZ1VSTCkKIHsKLSAgICBLVVJMIGt1cmwgPSBwYXJzZVVybChi
YXNlVVJMKTsKKyAgICBVUkwga3VybCA9IHBhcnNlVXJsKGJhc2VVUkwpOwogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KGt1cmwpOwogICAgIFdURjo6UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyCiAgICAgICAgID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RyaW5nLmNfc3RyKCksIHN0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoYnVmZmVyLAog
ICAgICAgICBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKICAgICAg
ICAgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKLSAgICAgICAgIWZh
aWxpbmdVUkwuZW1wdHkoKSA/IHBhcnNlVXJsKGZhaWxpbmdVUkwpIDogS1VSTCgpKTsKKyAgICAg
ICAgIWZhaWxpbmdVUkwuZW1wdHkoKSA/IHBhcnNlVXJsKGZhaWxpbmdVUkwpIDogVVJMKCkpOwog
ICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJh
bWUsIHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAKQEAgLTg1OCwxNCArODU4LDE0IEBA
IGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3Qgc3Rk
Ojp3c3RyaW5nJiBzY3JpcHQsIEphdmFTCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgU3RyaW5nIHN0ciA9IFN0cmluZyhkYXRhLCBsZW5ndGhDb3BpZWQpOwotICAgIFNjcmlwdFNv
dXJjZUNvZGUgc291cmNlQ29kZShzdHIsIEtVUkwoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBz
b3VyY2VDb2RlKHN0ciwgVVJMKCkpOwogICAgIHJldHVybiBkLT5leGVjdXRlSmF2YVNjcmlwdElu
SXNvbGF0ZWRXb3JsZChzb3VyY2VDb2RlLCByZXR1cm5UeXBlLCByZXR1cm5WYWx1ZSk7CiB9CiAK
IGJvb2wgV2ViUGFnZTo6ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoY29uc3QgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgc2NyaXB0VVRGOCwgSmF2YVNjcmlwdERhdGFUeXBl
JiByZXR1cm5UeXBlLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nJiByZXR1cm5WYWx1ZSkK
IHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChzY3JpcHRVVEY4LmlzVXRmOCgpKTsKLSAgICBTY3Jp
cHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0VVRGOCwgS1VSTCgpKTsKKyAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc2NyaXB0VVRGOCwgVVJMKCkpOwogICAgIHJldHVybiBkLT5l
eGVjdXRlSmF2YVNjcmlwdEluSXNvbGF0ZWRXb3JsZChzb3VyY2VDb2RlLCByZXR1cm5UeXBlLCBy
ZXR1cm5WYWx1ZSk7CiB9CiAKQEAgLTk5OCw3ICs5OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRl
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6UwogICAgIGlmIChzb3VyY2UtPmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEtVUkwgZGVzdGluYXRpb24oS1VSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgVVJMIGRl
c3RpbmF0aW9uKFVSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CiAgICAgU2VjdXJpdHlQb2xpY3k6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3Rv
Y29sKCksIGRlc3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwog
fQogCkBAIC0xMDEzLDcgKzEwMTMsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybQogICAgIGlm
IChzb3VyY2UtPmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgZGVzdGlu
YXRpb24oS1VSTCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CisgICAgVVJMIGRlc3RpbmF0aW9uKFVS
TCgpLCBkZXN0aW5hdGlvbk9yaWdpbik7CiAgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRl
c3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCkBAIC0y
MDY0LDcgKzIwNjQsNyBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjppc0FjdGl2ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY2xpZW50LT5pc0FjdGl2ZSgpOwogfQogCi12b2lkIFdlYlBhZ2VQcml2YXRl
OjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBDcmVkZW50aWFsJiBpbnB1dENyZWRlbnRp
YWwpCit2b2lkIFdlYlBhZ2VQcml2YXRlOjphdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBV
UkwmIHVybCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIGNvbnN0IENy
ZWRlbnRpYWwmIGlucHV0Q3JlZGVudGlhbCkKIHsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZU1hbmFnZXIqIGF1dGhtZ3IgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Omluc3Rh
bmNlKCk7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyB1c2VybmFtZTsKQEAgLTIx
NTYsNyArMjE1Niw3IEBAIFBsYXRmb3JtOjpXZWJDb250ZXh0IFdlYlBhZ2VQcml2YXRlOjp3ZWJD
b250ZXh0KFRhcmdldERldGVjdGlvblN0cmF0ZWd5IHN0cmF0ZWd5CiAgICAgTm9kZSogbGlua05v
ZGUgPSBub2RlLT5lbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKTsKICAgICAvLyBTZXQg
bGluayB1cmwgb25seSB3aGVuIHRoZSBub2RlIGlzIGxpbmtlZCBpbWFnZSwgb3IgdGV4dCBpbnNp
ZGUgYW5jaG9yLiBQcmV2ZW50IENDTSBwb3B1cCB3aGVuIGxvbmcgcHJlc3Mgbm9uLWxpbmsgZWxl
bWVudChlZy4gYnV0dG9uKSBpbnNpZGUgYW4gYW5jaG9yLgogICAgIGlmIChsaW5rTm9kZSAmJiAo
bm9kZSA9PSBsaW5rTm9kZSB8fCBub2RlLT5pc1RleHROb2RlKCkgfHwgbm9kZUlzSW1hZ2UpKSB7
Ci0gICAgICAgIEtVUkwgaHJlZjsKKyAgICAgICAgVVJMIGhyZWY7CiAgICAgICAgIGlmIChsaW5r
Tm9kZS0+aXNMaW5rKCkgJiYgbGlua05vZGUtPmhhc0F0dHJpYnV0ZXMoKSkgewogICAgICAgICAg
ICAgaWYgKGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9FbGVtZW50KGxpbmtOb2RlKS0+
ZmluZEF0dHJpYnV0ZUJ5TmFtZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkKICAgICAgICAgICAgICAg
ICBocmVmID0gbGlua05vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUtPnZhbHVlKCkpKTsKQEAgLTQ4OTcsNyArNDg5
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6aW5pdFBvcHVwV2ViVmlldyhCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgZC0+bV9wYWdlUG9wdXAtPmluaXRpYWxpemUod2ViUGFn
ZSk7CiB9CiAKLVN0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRlcm5TdHJpbmdGb3JVcmwo
Y29uc3QgS1VSTCYgdXJsKSBjb25zdAorU3RyaW5nIFdlYlBhZ2VQcml2YXRlOjpmaW5kUGF0dGVy
blN0cmluZ0ZvclVybChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoKG1fd2ViU2V0
dGluZ3MtPnNob3VsZEhhbmRsZVBhdHRlcm5VcmxzKCkgJiYgcHJvdG9jb2xJcyh1cmwsICJwYXR0
ZXJuIikpCiAgICAgICAgIHx8IHByb3RvY29sSXModXJsLCAidGVsIikKQEAgLTU4NDEsNyArNTg0
MSw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OmRpZENoYW5nZVNldHRpbmdzKFdlYlNldHRpbmdz
KiB3ZWJTZXR0aW5ncykKIAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgc3R5bGVz
aGVldFVSTCA9IHdlYlNldHRpbmdzLT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CiAgICAgaWYg
KCFzdHlsZXNoZWV0VVJMLmVtcHR5KCkpCi0gICAgICAgIGNvcmVTZXR0aW5ncy0+c2V0VXNlclN0
eWxlU2hlZXRMb2NhdGlvbihLVVJMKEtVUkwoKSwgc3R5bGVzaGVldFVSTCkpOworICAgICAgICBj
b3JlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBzdHlsZXNo
ZWV0VVJMKSk7CiAKICAgICBjb3JlU2V0dGluZ3MtPnNldEZpcnN0U2NoZWR1bGVkTGF5b3V0RGVs
YXkod2ViU2V0dGluZ3MtPmZpcnN0U2NoZWR1bGVkTGF5b3V0RGVsYXkoKSk7CiAgICAgY29yZVNl
dHRpbmdzLT5zZXRVc2VDYWNoZSh3ZWJTZXR0aW5ncy0+dXNlV2ViS2l0Q2FjaGUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAppbmRleCBhN2U4M2YxMjBhMWI1MTc0
YmY4MWQxMmQ4NzFmMDY0ZWQ3YTg4YTViLi40N2NkOGVjNDBjNzE3Y2MyOTE0OWJiNDU4Yjc2OGE5
NGM0NzY3ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJMYXllclJlbmRlcmVyLmgiCiAjaW5jbHVkZSA8RUdM
L2VnbC5oPgogI2VuZGlmCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKSB8fCBFTkFCTEUoTEVHQUNZX05PVElGSUNBVElPTlMpCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlci5oIgogI2VuZGlmCkBAIC0yMTYsNyArMjE2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNob3dBbGVydERpYWxvZyhXZWJQYWdlQ2xpZW50
OjpBbGVydFR5cGUgYXR5cGUpOwogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFdlYkNvcmU6OkNy
ZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYpOwogICAgIHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5v
dGlmeVNob3VsZFNhdmVDcmVkZW50aWFsKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJv
eHlDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIApAQCAtMzQ5LDcgKzM0
OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElmIHRoaXMgdXJsIHNob3VsZCBiZSBoYW5kbGVkIGFz
IGEgcGF0dGVybiwgcmV0dXJucyB0aGUgcGF0dGVybgogICAgIC8vIG90aGVyd2lzZSwgcmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcuCi0gICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKyAgICBTdHJpbmcgZmluZFBhdHRlcm5TdHJpbmdG
b3JVcmwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICB2b2lkIHN1c3BlbmRCYWNr
aW5nU3RvcmUoKTsKICAgICB2b2lkIHJlc3VtZUJhY2tpbmdTdG9yZSgpOwpAQCAtNjIxLDcgKzYy
MSw3IEBAIHB1YmxpYzoKICAgICBpbnQgbV9jYWNoZWRQb3B1cExpc3RTZWxlY3RlZEluZGV4Owog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbV9jYWNoZWREYXRlVGltZUlucHV0Owog
ICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgbV9jYWNoZWRDb2xvcklucHV0OwotICAg
IFdlYkNvcmU6OktVUkwgbV9jYWNoZWRNYW51YWxTY3JpcHQ7CisgICAgV2ViQ29yZTo6VVJMIG1f
Y2FjaGVkTWFudWFsU2NyaXB0OwogCiAgICAgY2xhc3MgRGVmZXJyZWRUYXNrQmFzZSB7CiAgICAg
cHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDMyMzkzYTdj
MzNkMmRmZjAzZjBjN2JmNmIyY2U5OGQ2ODE2YTM5YWYuLjcxYzcyZDg2ZWI5YTliNDMxMmExZjRj
NmI0ZDRmZGUzMWYyODI1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SWNvbi5oIgogI2luY2x1ZGUgIklucHV0SGFuZGxlci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0yMjIsNyArMjIyLDcgQEAgUGFnZSogQ2hyb21l
Q2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYKICAgICAvLyBCYWlsIG91dCBlYXJseSB3aGVuIHdlIGFyZW4ndCBhbGxvd2Vk
IHRvIGRpc3BsYXkgdGhlIHRhcmdldCBvcmlnaW4sIG90aGVyd2lzZSwKICAgICAvLyBpdCB3b3Vs
ZCBiZSBoYXJtZnVsIGFuZCB0aGUgd2luZG93IHdvdWxkIGJlIHVzZWxlc3MuIFRoaXMgaXMgdGhl
IHNhbWUgY2hlY2sKICAgICAvLyBhcyB0aGUgb25lIGluIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVS
ZXF1ZXN0KCkuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsK
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJs
LnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNwcApp
bmRleCA0MTY5MGJkZmU3OTNhMWE5ZmUzZmZjYjQ5ZDcxYTljYTYzM2Y1MzE0Li43YTAwZGM0ZDIx
NTczMWE2OTg1ODk1YmE5M2JjMDUyZWY4MmYyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5j
cHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJDcmVkZW50aWFsQmFja2luZ1N0b3JlLmgi
CiAjaW5jbHVkZSAiQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaCIKICNpbmNsdWRlICJIVE1MRm9y
bUVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5LmgiCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFs
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKaW5kZXggNTFkMTgxN2ExNzY3OTU0ZjEyMDc3NDhhYWY5ZTBhODJmYmQ5
OTI0Yy4uZDUwNzlkZmM4ZDY2YTQ5MzA5NGVmYzExNWQ0OGY3OTUyOGU1YjhiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxNYW5hZ2VyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgU3RyaW5nOwogfQogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlv
blNwYWNlOwogY2xhc3MgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGEuY3BwCmluZGV4IDhlM2RmNDBiYmM1YmFlNjAzOWM5NmZjZDhjZjAy
NDI1ZjA0NzU4YWIuLjYwYjdkY2MxZGM4YTYwZmJhNDRmY2NhN2IyYmYzZWZjZWQwMDhiODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50
aWFsVHJhbnNmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmNwcApAQCAtMzgsNyArMzgsNyBAQAog
I2luY2x1ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgiCiAKICNpbmNsdWRlICJIVE1MSW5w
dXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksOSArNDksOSBA
QCBuYW1lc3BhY2Ugewogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhQYXNzd29yZHMgPSAzOwogCiAv
LyBIZWxwZXIgbWV0aG9kIHRvIGNsZWFyIHVybCBvZiB1bm5lZWRlZCBwYXJ0cy4KLUtVUkwgc3Ry
aXBVUkwoY29uc3QgS1VSTCYgdXJsKQorVVJMIHN0cmlwVVJMKGNvbnN0IFVSTCYgdXJsKQogewot
ICAgIEtVUkwgc3RyaXBwZWRVUkwgPSB1cmw7CisgICAgVVJMIHN0cmlwcGVkVVJMID0gdXJsOwog
ICAgIHN0cmlwcGVkVVJMLnNldFVzZXIoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFBh
c3MoU3RyaW5nKCkpOwogICAgIHN0cmlwcGVkVVJMLnNldFF1ZXJ5KFN0cmluZygpKTsKQEAgLTc4
LDEzICs3OCwxMyBAQCBDcmVkZW50aWFsVHJhbnNmb3JtRGF0YTo6Q3JlZGVudGlhbFRyYW5zZm9y
bURhdGEoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGlzRgogICAgIEFTU0VSVChmb3JtKTsK
IAogICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgVVJMCi0gICAgS1VSTCBmdWxsT3JpZ2luKFBhcnNl
ZFVSTFN0cmluZywgZm9ybS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKSk7CisgICAgVVJMIGZ1
bGxPcmlnaW4oUGFyc2VkVVJMU3RyaW5nLCBmb3JtLT5kb2N1bWVudCgpLT5kb2N1bWVudFVSSSgp
KTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2Fub25pY2FsIGFjdGlvbiBVUkwKICAgICBTdHJp
bmcgYWN0aW9uID0gZm9ybS0+YWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc051bGwoKSkKICAg
ICAgICAgYWN0aW9uID0gIiI7IC8vIG1pc3NpbmcgJ2FjdGlvbicgYXR0cmlidXRlIGltcGxpZXMg
Y3VycmVudCBVUkwKLSAgICBLVVJMIGZ1bGxBY3Rpb24gPSBmb3JtLT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTChhY3Rpb24pOworICAgIFVSTCBmdWxsQWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoYWN0aW9uKTsKICAgICBpZiAoIWZ1bGxBY3Rpb24uaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTk1LDcgKzk1LDcgQEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6
OkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YK
ICAgICBpZiAoIWlzRm9yU2F2aW5nICYmIG1fb2xkUGFzc3dvcmRFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IHN0cmlwVVJMKGZ1bGxPcmlnaW4pOworICAgIFVSTCB1
cmwgPSBzdHJpcFVSTChmdWxsT3JpZ2luKTsKICAgICBtX2FjdGlvbiA9IHN0cmlwVVJMKGZ1bGxB
Y3Rpb24pOwogICAgIG1fcHJvdGVjdGlvblNwYWNlID0gUHJvdGVjdGlvblNwYWNlKHVybC5ob3N0
KCksIHVybC5wb3J0KCksIFByb3RlY3Rpb25TcGFjZVNlcnZlckhUVFAsICJGb3JtIiwgUHJvdGVj
dGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVE1MRm9ybSk7CiAgICAgbV9jcmVkZW50aWFs
ID0gQ3JlZGVudGlhbChtX3VzZXJOYW1lRWxlbWVudC0+dmFsdWUoKSwgbV9wYXNzd29yZEVsZW1l
bnQtPnZhbHVlKCksIENyZWRlbnRpYWxQZXJzaXN0ZW5jZVBlcm1hbmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5z
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVk
ZW50aWFsVHJhbnNmb3JtRGF0YS5oCmluZGV4IDZkZWU3ZWRiZjFmYzliN2M0MzQ0N2IzY2Y0OTU2
YTVhYjU3NmEwYmIuLjIwYWY1ODc1ZjEyMmZhNjFlMzFkMmRjM2FiYzA0YjE4ZjI4YzVhODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50
aWFsVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5j
bHVkZSAiQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNwYWNlLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBmaW5kUGFzc3dvcmRGb3Jt
RmllbGRzKGNvbnN0IEhUTUxGb3JtRWxlbWVudCopOwogICAgIGJvb2wgbG9jYXRlU3BlY2lmaWNQ
YXNzd29yZHMoY29uc3QgVmVjdG9yPEhUTUxJbnB1dEVsZW1lbnQqPiYgcGFzc3dvcmRzKTsKIAot
ICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9uOwogICAgIFByb3RlY3Rpb25TcGFj
ZSBtX3Byb3RlY3Rpb25TcGFjZTsKICAgICBtdXRhYmxlIENyZWRlbnRpYWwgbV9jcmVkZW50aWFs
OwogICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBtX3VzZXJOYW1lRWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggODM4NTg4MDBiN2Mx
YWJjZGMxZmU4NjI2NzBmODIyZDc1MDg4NGFkZi4uZGJjYmE1NzNmNTRjYjcwMmY5YzIzMDVhYzcz
NDdmNDdjNTc1NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eS5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgbV9jbGllbnRSZWRpcmVj
dElzUGVuZGluZyA9IGZhbHNlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUs
IGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpkaXNwYXRjaFdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAg
aWYgKG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUpCiAgICAgICAgIG1fd2ViUGFn
ZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZERpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdCgpOwpAQCAtMTg2LDEyICsxODYsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVAK
IHsKICAgICBQb2xpY3lBY3Rpb24gZGVjaXNpb24gPSBQb2xpY3lJZ25vcmU7CiAKLSAgICBjb25z
dCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVz
dC51cmwoKTsKICAgICBpZiAoIXVybC5pc051bGwoKSkgewogICAgICAgICAvLyBGcmFnbWVudCBz
Y3JvbGxzIG9uIHRoZSBzYW1lIHBhZ2Ugc2hvdWxkIGFsd2F5cyBiZSBoYW5kbGVkIGludGVybmFs
bHkuCiAgICAgICAgIC8vIChPbmx5IGNvdW50IGFzIGEgZnJhZ21lbnQgc2Nyb2xsIGlmIHdlIGFy
ZSBzY3JvbGxpbmcgdG8gYSAjZnJhZ21lbnQgdXJsLCBub3QgYmFjayB0byB0aGUgdG9wLCBhbmQg
cmVsb2FkaW5nCiAgICAgICAgIC8vIHRoZSBzYW1lIHVybCBpcyBub3QgYSBmcmFnbWVudCBzY3Jv
bGwgZXZlbiBpZiBpdCBoYXMgYSAjZnJhZ21lbnQuKQotICAgICAgICBjb25zdCBLVVJMJiBjdXJy
ZW50VXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgICAgIGNvbnN0IFVSTCYg
Y3VycmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgICAgICBib29sIGlz
RnJhZ21lbnRTY3JvbGwgPSB1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgdXJsICE9IGN1
cnJlbnRVcmwgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjdXJyZW50VXJsLCB1
cmwpOwogICAgICAgICBkZWNpc2lvbiA9IGRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChyZXF1
ZXN0LCBpc0ZyYWdtZW50U2Nyb2xsKTsKIApAQCAtMzEyLDcgKzMxMiw3IEBAIGJvb2wgRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25z
dCBTdHJpbmcmIG1pCiB9CiAKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAotICAgIEhU
TUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbU5hbWVzLAorICAgIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJv
b2wgbG9hZE1hbnVhbGx5KQogewogICAgIFN0cmluZyBtaW1lVHlwZShtaW1lVHlwZUluKTsKQEAg
LTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAgICAgICBpZiAoIXNv
dXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEFsd2F5cyBpZ25vcmUgZXhpc3Rpbmcg
c3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KICAgICAgICAgICAgIFdURjo6UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNlLmlzOEJpdCgpID8gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3RlcnM4KCkpIDogc291cmNl
LmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHN1YnN0aXR1
dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4x
IiwgS1VSTCgpKTsKKyAgICAgICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRl
RGF0YShidWZmZXIsICJ0ZXh0L2h0bWwiLCAibGF0aW4xIiwgVVJMKCkpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC00NjAsNyArNDYwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKQogICAgIH0KIH0KIAotU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQorU3Ry
aW5nIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6dXNlckFnZW50KGNvbnN0IFVSTCYpCiB7
CiAgICAgcmV0dXJuIG1fd2ViUGFnZVByaXZhdGUtPm1fd2ViU2V0dGluZ3MtPnVzZXJBZ2VudFN0
cmluZygpOwogfQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0CiAg
ICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fZHVtcFJlbmRlclRyZWUtPmRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKHRpdGxlLnN0cmluZygpLCBtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIC8q
dGl0bGUqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFj
a0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiAvKnRpdGxlKi8sIGNv
bnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktpdCB0byB1cGRh
dGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAvLyBRdFdlYktp
dCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBpdCBldmVyIGRv
ZXMsCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU3RyaW5nIGVycm9yUGFnZSA9IG1fd2ViUGFnZVByaXZhdGUtPm1fY2xp
ZW50LT5nZXRFcnJvclBhZ2UoZXJyb3IuZXJyb3JDb2RlKCksIGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKCksIGVycm9yLmZhaWxpbmdVUkwoKSk7Ci0gICAgU3Vic3RpdHV0ZURhdGEgZXJyb3JE
YXRhKHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRtbCIsICJ1dGYtOCIsIEtVUkwoS1VS
TCgpLCBlcnJvci5mYWlsaW5nVVJMKCkpKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBlcnJvckRhdGEo
dXRmOEJ1ZmZlcihlcnJvclBhZ2UpLCAidGV4dC9odG1sIiwgInV0Zi04IiwgVVJMKFVSTCgpLCBl
cnJvci5mYWlsaW5nVVJMKCkpKTsKIAogICAgIC8vIExvYWRpbmcgdXNpbmcgU3Vic3RpdHV0ZURh
dGEgd2lsbCByZXBsYWNlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHdpdGggb3VyCiAgICAgLy8gZXJy
b3IgZGF0YS4gVGhpcyBtdXN0IGJlIGRvbmUgd2l0aGluIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZCwKQEAgLTc3Nyw3ICs3NzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeTo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8Rm9ybVN0YQogICAg
IH0KIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5Ojpj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZQorUGFzc1JlZlB0
cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lCiAgICAgLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBpZiAoIW1fd2Vi
UGFnZVByaXZhdGUpCkBAIC04MTUsNyArODE1LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVM
b2FkZXJDbGllbnRCbGFja0JlcnJ5OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnMK
ICAgICByZXR1cm4gY2hpbGRGcmFtZS5yZWxlYXNlKCk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBl
IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eTo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIFN0cmluZyBt
aW1lVHlwZSA9IG1pbWVUeXBlSW47CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKQEAgLTEx
MzksNyArMTEzOSw3IEBAIFBvbGljeUFjdGlvbiBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6
OmRlY2lkZVBvbGljeUZvckV4dGVybmFsTG9hZChjb25zdCBSZXNvCiAgICAgLy8gYW5kIGV4cG9z
ZWQgdG8gY2xpZW50LiBCZWZvcmUgdGhhdCwgZG9uJ3QgcmV0dXJuIFBvbGljeUlnbm9yZSBzbyB3
ZSBjYW4gY29udGludWUgdG8KICAgICAvLyBjcmVhdGUgbmV3IHdpbmRvdyBhbmQgZ2V0IHRvIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigpIHdoZXJlIHRoZSBjbGllbnQK
ICAgICAvLyBpcyBnaXZlbiBhIGNoYW5jZSB0byBkZWNpZGUgaG93IHRvIGhhbmRsZSBwYXR0ZXJu
cyBzdWNoIGFzICdtYWlsdG86Jy4KLSAgICBjb25zdCBLVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgp
OworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBTdHJpbmcgcGF0dGVy
biA9IG1fd2ViUGFnZVByaXZhdGUtPmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJsKHVybCk7CiAgICAg
aWYgKCFwYXR0ZXJuLmlzRW1wdHkoKSkgewogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2Ns
aWVudC0+aGFuZGxlU3RyaW5nUGF0dGVybihwYXR0ZXJuLmNoYXJhY3RlcnMoKSwgcGF0dGVybi5s
ZW5ndGgoKSk7CkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlzcGF0Y2hEaWRMb2FkRnJvbUFwcGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzbwog
ICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fY2xpZW50LT5ub3RpZnlEaWRMb2FkRnJvbUFwcGxpY2F0
aW9uQ2FjaGUoKTsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5OjpzZWN1cml0eU9yaWdpbkZvck5ld0RvY3VtZW50KGNvbnN0IEtVUkwm
IHVybCkKK1Bhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICAvLyBXaGF0IHdlIGFyZSB0cnlpbmcgdG8gZG8gaGVyZSBpcyB0byBrZWVwIHVzaW5nIHRoZSBv
bGQgcGF0aCBhcyBvcmlnaW4gd2hlbiBhIGZpbGUtYmFzZWQgaHRtbCBwYWdlCiAgICAgLy8gY2hh
bmdlcyBpdHMgbG9jYXRpb24gdG8gc29tZSBodG1sIGluIGEgc3ViZm9sZGVyLiBUaGlzIHdpbGwg
YWxsb3cgc29tZSBmaWxlLWJhc2VkIGh0bWwgcGFja2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuaAppbmRleCAzZWFhYWIzNTllYjc0MzZhMGNlM2QzYWY3ZGM1ZDRj
NTEzMDg3MDVlLi5iZmRhNmM4YmVmMzFhMTIwNGY3YzIwM2Q4MDgwOGRkZWI4MzI4NzUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCkBAIC02OCw3ICs2OCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91Ymxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
dXNoU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFj
ZVN0YXRlV2l0aGluUGFnZSgpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJM
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IHRpdGxlLCBjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwpAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsVXBkYXRlQXBwbGljYXRpb25DYWNoZShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRMb2FkRnJvbUFw
cGxpY2F0aW9uQ2FjaGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVy
biBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCkpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJy
b3IoZW1wdHlTdHJpbmcoKSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFJlc291cmNlRXJyb3IoZW1wdHlTdHJpbmco
KSwgMCwgZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7IH0KQEAgLTEzMyw4ICsxMzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVu
dCgpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVu
dExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgS1VSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKTsKQEAgLTE0MywxMyArMTQzLDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGlu
dCwgaW50KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGJvb2wsIGludCwgaW50KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWx3YXlzVXNlUGx1
Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVS
TCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBT
dHJpbmcmLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lk
Z2V0Kik7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50
ZWQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0
IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKICAgICB2aXJ0dWFs
IFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVu
dEVsZW1lbnRBdmFpbGFibGUoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KQEAgLTE1OSw3ICsxNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZExvYWRJY29uRXh0ZXJuYWxseSgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShj
b25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmws
IGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFVSTCYsIGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUlj
b25zKEljb25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCkBAIC0x
NjgsNyArMTY4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luRm9yTmV3RG9jdW1lbnQo
Y29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgcmVhZHlU
b1JlbmRlcihib29sIHBhZ2VJc1Zpc3VhbGx5Tm9uRW1wdHkpOwogCkBAIC0yMDMsOCArMjAzLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fY2hpbGRGcmFtZUNyZWF0aW9uU3VwcHJlc3NlZDsKIAog
ICAgIC8vIFRoaXMgc2V0IGluY2x1ZGVzIHRoZSBvcmlnaW5hbCBhbmQgZmluYWwgdXJscyBmb3Ig
c2VydmVyIHJlZGlyZWN0cy4KLSAgICBIYXNoU2V0PEtVUkw+IG1faGlzdG9yeU5hdmlnYXRpb25T
b3VyY2VVUkxzOwotICAgIEhhc2hTZXQ8S1VSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hp
c3RvcnlOYXZpZ2F0aW9uOworICAgIEhhc2hTZXQ8VVJMPiBtX2hpc3RvcnlOYXZpZ2F0aW9uU291
cmNlVVJMczsKKyAgICBIYXNoU2V0PFVSTD4gbV9yZWRpcmVjdFVSTHNUb1NraXBEdWVUb0hpc3Rv
cnlOYXZpZ2F0aW9uOwogCiAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0by4K
ICAgICBQbHVnaW5WaWV3KiBtX3BsdWdpblZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzQmxhY2tCZXJyeS5jcHAKaW5kZXggZGNmZWY2MDUzMGJmOWZkNTRkOTk0YWVlZWE5NWQx
NzRhYzE0ODJmNi4uNGE2MTJjZDU1MTVlNmNhNTA5ZjFlYmZlMDhiZGI0NmQ2MzdlNDIyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0JsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcApAQCAtODEsMzIg
KzgxLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kK
LVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNCbGFja0JlcnJ5OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzQmxhY2tCZXJyeTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVz
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJy
eTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmdldFBsdWdpbkluZm8oY29u
c3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPgogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSog
cGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFn
ZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAg
ICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKaW5kZXggYzUxNTY0NWQyY2Q0OWM0ZTE2
N2MwYzJkZGQzZGY1ZDRlYTA3ZTJiOC4uZDI0NWZhNTUwY2Q2MGI2NTczMWYwNWNlMzk0Mzc3ZWFm
ZDVkOWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCkBA
IC00NywxMiArNDcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjIs
NyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0
IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8v
IFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5r
SGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29y
ZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCmluZGV4IDZjOGVmOGE0
ZTZkOWRiNjlhOWM2ZTUyYzMzNmM3ZDNjNGQ0NzllZGEuLjRiYzU5OTVlMjAzNGM0ODU5MzQxNDUw
Y2ZhMWIyMmI4ZDdiNzQ3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvUGFnZVBvcHVwLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg
IkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNS
ZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUGFnZVBvcHVwQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgUGFnZVBvcHVwOjp3cml0ZURvY3VtZW50
KERvY3VtZW50V3JpdGVyKiB3cml0ZXIpCiB7CiAgICAgQVNTRVJUKHdyaXRlcik7CiAgICAgd3Jp
dGVyLT5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7Ci0gICAgd3JpdGVyLT5iZWdpbihLVVJMKCkp
OworICAgIHdyaXRlci0+YmVnaW4oVVJMKCkpOwogCiAgICAgLy8gQWxsIHRoZSBwb3B1cHMgaGF2
ZSB0aGUgc2FtZSBodG1sIGhlYWQgYW5kIHRoZSBwYWdlIGNvbnRlbnQgc2hvdWxkIGJlIG5vbi16
b29tYWJsZS4KICAgICBTdHJpbmdCdWlsZGVyIHNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDA4NjczMmEx
ZDgzNDZjZWU4ZmZmMjBkNDM1MjlhMTRlNWM1ZWY5MWMuLjE1NjRmNzE4M2E2NzFiYzc3MjM2YzA1
N2UzYzIzMDczNWZiY2MyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUG9wdXBNZW51RWZsLmgiCkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBDaHJv
bWVDbGllbnRFZmw6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IGhpdCwgdW5zaWduZWQKICAgICAvLyBGSVhNRSwgY29tcGFyZSB3aXRoIG9sZCBsaW5rLCBsb29r
IGF0IFF0IGltcGwuCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGluaygpOwogICAgIGlm
IChpc0xpbmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7Cisg
ICAgICAgIFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICghdXJs
LmlzRW1wdHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAgICAgICAgICAgY29u
c3QgY2hhciogbGlua1syXTsKICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyOwpAQCAtMzc2
LDcgKzM3Niw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVu
dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkCiAgICAgICAgIH0KICAgICB9IGVs
c2UgaWYgKCFpc0xpbmsgJiYgIW1faG92ZXJlZExpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGV3a192aWV3X21vdXNlX2xpbmtfaG92ZXJfb3V0KG1fdmlldyk7Ci0gICAgICAgIG1faG92ZXJl
ZExpbmtVUkwgPSBLVVJMKCk7CisgICAgICAgIG1faG92ZXJlZExpbmtVUkwgPSBVUkwoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmgKaW5kZXggNmVkYmUzN2JkYTYzYWZhZGZkZTQ0Y2M2ZDExZWJmZjljYWVhYzBj
Yi4uODRhMzE5ZmRlNzcxNjY2NDA2ZWRmMzVjNGI1Y2Q4MGQzZDI2NjgxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmgKQEAgLTI1
LDcgKzI1LDcgQEAKICNkZWZpbmUgQ2hyb21lQ2xpZW50RWZsX2gKIAogI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJQb3B1cE1lbnUuaCIKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQpAQCAtMTg4LDcg
KzE4OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRXZhc19PYmplY3QqIG1fdmlldzsKLSAg
ICBLVVJMIG1faG92ZXJlZExpbmtVUkw7CisgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5F
bGVtZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKaW5kZXggY2RlYTNlNDkwYzBkMjI4MTgx
NGFhOTM4MWE4ZjBmYjZkMmJhMjJjNi4uOTRiZTZjNzU0YWUzNzNkMWM3MTE4NTNhN2VlNTEzOTEz
Yjc0MTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0NvbnRleHRNZW51Q2xpZW50RWZsLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q2xpZW50RWZsOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4dE1l
bnVDbGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBDb250ZXh0TWVudUNs
aWVudEVmbDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50RWZsLmgKaW5kZXggNzA4Mzc3ZmMwYmY4NzhmMTRhYTE1YzQwYTUwNDg0N2Uz
MmFmMjQ5My4uNWJlZjI5NjNmOWYxYWY2YTlmMjA2ZTg0NDQwMjZkYzZiZjVhNTgxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNs
aWVudEVmbC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxDb250ZXh0TWVudT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZXh0TWVudSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNv
bnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJik7CiAg
ICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShGcmFtZSopOwogICAgIHZpcnR1YWwg
dm9pZCBzcGVhayhjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggZGMwYzI0MzM1MGU5NjI2Mzk4M2VkZDM0
NmYzMGZhMDZmYzEyZjc0MS4uOWVhNTFkMmJmZmVkYzRlNDFhYzNkYTY5ZjRlNTdlMWIwYzIzYjcx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0yMjEsMTMgKzIyMSwxMyBAQCBTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzdWl0YWJsZURSVEZyYW1lTmFtZShjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbQogICAgIHJldHVybiBTdHJpbmcoImZyYW1lIChhbm9ueW1vdXMp
Iik7CiB9CiAKLWNvbnN0IFdlYkNvcmU6OktVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpw
cm92aXNpb25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCitjb25zdCBXZWJDb3Jl
OjpVUkwgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwcm92aXNpb25hbFVSTChjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVS
Tihld2tGcmFtZSwgZnJhbWUsIFdlYkNvcmU6OktVUkwoKSk7CisgICAgRFJUX1NVUFBPUlRfRlJB
TUVfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgZnJhbWUsIFdlYkNvcmU6OlVSTCgpKTsKIAogICAg
IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIXByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKCk7Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpVUkwoKTsKIAogICAgIHJldHVybiBwcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT51cmwoKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclNjcmlwdChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgUwogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHBhZ2UpOwogCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChXZWJDb3Jl
OjptYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgV2ViQ29yZTo6S1VSTCgpLAor
ICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoV2ViQ29yZTo6bWFpblRocmVh
ZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OlVSTCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgcnVuQXRTdGFydCA/IFdlYkNvcmU6OkluamVjdEF0RG9jdW1lbnRTdGFydCA6IFdlYkNv
cmU6OkluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJbkFsbEZyYW1lcyA6IFdlYkNvcmU6
OkluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KQEAgLTI4Niw3ICsyODYsNyBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbDo6YWRkVXNlclN0eWxlU2hlZXQoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbgogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIHBhZ2UpOwogCi0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
V2ViQ29yZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OktV
UkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2Vi
Q29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7
CisgICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoV2ViQ29yZTo6bWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OlVSTCgpLCBWZWN0b3I8
U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBhbGxGcmFtZXMgPyBXZWJDb3JlOjpJbmplY3RJ
bkFsbEZyYW1lcyA6IFdlYkNvcmU6OkluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIAogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNsZWFyVXNlclN0eWxlU2hlZXRzKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAppbmRleCBjZWY3NmRjZGZkOGE4
OTllNmNhZTRmNWMwZjI3YTBlY2I0MWIyOGM2Li41OGNkNDgzZTE3ZmVjNzY1YWZiYWNmMDlhOGE5
NjJmMWQzMDU4ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaApAQCAtMjIsNyArMjIsNyBAQAog
I2lmbmRlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmxfaAogI2RlZmluZSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxGaW5kT3B0aW9ucy5oPgogI2luY2x1ZGUgPEludFJl
Y3QuaD4KQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgcmVzcG9u
c2VNaW1lVHlwZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOwogICAgIHN0YXRpYyBXZWJD
b3JlOjpJbnRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZShjb25zdCBFdmFzX09iamVjdCogZXdrRnJh
bWUpOwogICAgIHN0YXRpYyBTdHJpbmcgc3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3QgRXZhc19P
YmplY3QqIGV3a0ZyYW1lKTsKLSAgICBzdGF0aWMgY29uc3QgV2ViQ29yZTo6S1VSTCBwcm92aXNp
b25hbFVSTChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpOworICAgIHN0YXRpYyBjb25zdCBX
ZWJDb3JlOjpVUkwgcHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
ICAgICBzdGF0aWMgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChjb25zdCBFdmFzX09iamVjdCogZXdr
RnJhbWUpOwogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhFdmFzX09iamVjdCogZXdrVmlldywgYm9vbCBkZWZlcnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuY3BwCmluZGV4IDkxMTMyMjEzMzhiZTQzNjY0YjRiZmYxYzQwZGQ4MzRiM2Q2
MGQyOTUuLjc3N2IyMzAxMjQzNDE0NjYxZDdmOTg0ZmI5NGI3OWY1NWUyZjZhN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgY29uc3QgU3RyaW5nJiBGcmFtZUxvYWRlckNs
aWVudEVmbDo6Y3VzdG9tVXNlckFnZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9jdXN0b21Vc2Vy
QWdlbnQ7CiB9CiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0
IEtVUkwmKQorU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjp1c2VyQWdlbnQoY29uc3QgVVJM
JikKIHsKICAgICBpZiAoIW1fY3VzdG9tVXNlckFnZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIG1fY3VzdG9tVXNlckFnZW50OwpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIHVuc2lnCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJy
ZXNvdXJjZSxyZXF1ZXN0LHdpbGxzZW5kIiwgJm1lc3NhZ2VzKTsKIAogICAgIGlmIChyZXF1ZXN0
LnVybCAhPSBvcmlnLnVybCkgewotICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoS1VSTChLVVJM
KCksIHJlcXVlc3QudXJsKSk7CisgICAgICAgIGNvcmVSZXF1ZXN0LnNldFVSTChVUkwoVVJMKCks
IHJlcXVlc3QudXJsKSk7CiAKICAgICAgICAgLy8gQ2FsbGluZyBjbGllbnQgbWlnaHQgaGF2ZSBj
aGFuZ2VkIG91ciB1cmwgcG9pbnRlci4KICAgICAgICAgLy8gRnJlZSB0aGUgbmV3IGFsbG9jYXRl
ZCBzdHJpbmcuCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnUKICAg
ICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIHBvbGljeSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
UGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAgICAgQVNTRVJUKG1fdmlldyk7CkBA
IC0zNjYsNyArMzY2LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZSwgbG9hZE1hbnVhbGx5KTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBp
bnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKK1Bhc3NSZWZQdHI8RnJh
bWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJn
aW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7
CiAgICAgQVNTRVJUKG1fdmlldyk7CkBAIC00MDYsMTQgKzQwNiwxNCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkK
ICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsCitQYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgLypwYXJhbU5hbWVzKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiAvKnBhcmFtVmFsdWVzKi8pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
MDsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRFZmw6Om9iamVjdENv
bnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBz
aG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2Fk
ZXJDbGllbnRFZmw6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAg
Ly8gRklYTUU6IG9uY2UgcGx1Z2luIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhpcyBtZXRob2QgbmVl
ZHMgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgJ3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMn
IGZsYWcuIFNlZQogICAgIC8vIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29u
dGVudFR5cGUoKSBmb3IgYW4gZXhhbXBsZS4KQEAgLTU3NSwxMiArNTc1LDEyIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQogICAgIGV3a19m
cmFtZV9taXhlZF9jb250ZW50X2Rpc3BsYXllZF9zZXQobV9mcmFtZSwgdHJ1ZSk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiosIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKIHsKICAgICBld2tfZnJh
bWVfbWl4ZWRfY29udGVudF9ydW5fc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYgaW5zZWN1cmVVUkwsIGJv
b2wgZGlkQmxvY2tFbnRpcmVQYWdlKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQog
ewogICAgIENTdHJpbmcgY3MgPSBpbnNlY3VyZVVSTC5zdHJpbmcoKS51dGY4KCk7CiAgICAgRXdr
X0ZyYW1lX1hzc19Ob3RpZmljYXRpb24geHNzSW5mbyA9IHsgY3MuZGF0YSgpLCBkaWRCbG9ja0Vu
dGlyZVBhZ2UgfTsKQEAgLTYzMCw3ICs2MzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkKICAgICBld2tfZnJhbWVfcmVkaXJl
Y3RfY2FuY2VsbGVkKG1fZnJhbWUpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUs
IGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgZXdr
X2ZyYW1lX3JlZGlyZWN0X3JlcXVlc3RlZChtX2ZyYW1lLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiB9CkBAIC03ODgsNyArNzg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IEtVUkwmKQordm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6c2V0
VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggMjI3MTI5NDg3OGI5NzE0N2U2NWM5MWI3M2EzZmMxMTY4
ZmFlNjg0Yy4uODQ3MDdiZTEzNjczZDcyMTJlNmM2OTlhMDJhMWU5Nzk3MWY3MzE4NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oCkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYsIGRvdWJsZSwgZG91YmxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xv
c2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwpAQCAtMTI4
LDEzICsxMjgsMTMgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVM
b2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5n
ZWROb3RpZmljYXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWRO
b3RpZmljYXRpb24oKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Nj
cm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKIAotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgV1RGOjpWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0
b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2YWlsYWJs
ZSgpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBw
dWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9y
SWNvbk5vdGlmaWNhdGlvbihib29sKTsKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUg
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgdmlydHVhbCBPYmplY3RDb250
ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE1OSw4ICsxNTksOCBA
QCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSk7CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE4Nyw5ICsxODcsOSBAQCBjbGFzcyBGcmFtZUxv
YWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgIHZpcnR1YWwgV1RG
OjpQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3Qg
S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
OwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUo
Q2FjaGVkRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCmluZGV4IDQ5YWEzNTcxYmNkMDg2M2M0
MDNkODFhYzkxOTYwYzE4NTcyNDM2MzQuLjZiZTQ0NzhkMDkzYjE2OTRmMjBjZmZiMzNlZjFhMTY1
ZDUzMjNkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcApAQCAtODcsMzIgKzg3LDMyIEBAIFN0b3Jh
Z2VTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjcmVhdGVTdG9yYWdlU3RyYXRlZ3ko
KQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdl
KiwgVmVjdG9yPFBsdWdpbkluZm8+JiBvdXRQbAogfQogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBM
aW5rSGFzaCBoYXNoLCBjb25zdCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhh
c2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiB7CiAgICAgcmV0dXJuIHBhZ2Ut
Pmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKaW5kZXggNzQ3
MGMyY2E2ZGIzYWNkNGZiYWNiZDk2YzFjOWU2MDE4ZDAyYWFjOS4uMzFiYWVjMjYzNzJiODU0ZTMw
ODY5MjI1MDFkOTZlM2JkMjA3OTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKQEAgLTQ4LDEyICs0OCwx
MiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSog
Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAg
ICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFn
ZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6Vmlz
aXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29s
IGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2Vi
Q29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBmZmE3Mjg5Y2UxNWRkYTI5NTFmNTc0NzRjZTIwYjM4OGJkM2ExZWE4Li4yMjNlMDY4YjUxYmFh
ZjU3ZDg5Nzg4YTM3ODk1YWYxOTkwZjU2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsLmgiCkBAIC0zMzYsNyArMzM2LDcgQEAgRXZhc19PYmplY3QqIGV3a19mcmFt
ZV9jaGlsZF9maW5kKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgY2hhciogbmFtZSkKIEVp
bmFfQm9vbCBld2tfZnJhbWVfdXJpX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNo
YXIqIHVyaSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBmYWxzZSk7Ci0gICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNvcmU6OktVUkwoKSwg
V1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOworICAgIFdlYkNvcmU6OlVSTCBrdXJsKFdlYkNv
cmU6OlVSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcShrdXJsKTsKICAgICBzbWFydERhdGEtPmZyYW1lLT5sb2FkZXIoKS5s
b2FkKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Qoc21hcnREYXRhLT5mcmFtZSwgcmVxKSk7CiAK
QEAgLTQwMiwxMiArNDAyLDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a19mcmFtZV9jb250ZW50
c19zZXRfaW50ZXJuYWwoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHNtYXJ0RGF0CiAgICAgaWYgKCFi
YXNlVXJpKQogICAgICAgICBiYXNlVXJpID0gImFib3V0OmJsYW5rIjsKIAotICAgIFdlYkNvcmU6
OktVUkwgYmFzZUtVUkwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYmFz
ZVVyaSkpOwotICAgIFdlYkNvcmU6OktVUkwgdW5yZWFjaGFibGVLVVJMOworICAgIFdlYkNvcmU6
OlVSTCBiYXNlS1VSTChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGJhc2VV
cmkpKTsKKyAgICBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVLVVJMOwogICAgIGlmICh1bnJlYWNo
YWJsZVVyaSkKLSAgICAgICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6S1VSTChXZWJDb3Jl
OjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVyaSkpOworICAgICAg
ICB1bnJlYWNoYWJsZUtVUkwgPSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVyaSkpOwogICAgIGVsc2UKLSAgICAgICAgdW5yZWFj
aGFibGVLVVJMID0gV2ViQ29yZTo6S1VSTCgpOworICAgICAgICB1bnJlYWNoYWJsZUtVUkwgPSBX
ZWJDb3JlOjpVUkwoKTsKIAogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
YnVmZmVyID0gV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudHMsIGNvbnRlbnRz
U2l6ZSk7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEKQEAgLTE2
OTAsNyArMTY5MCw3IEBAIEV3a19DZXJ0aWZpY2F0ZV9TdGF0dXMgZXdrX2ZyYW1lX2NlcnRpZmlj
YXRlX3N0YXR1c19nZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogCiAgICAgY29uc3QgV2ViQ29y
ZTo6RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCk7
CiAgICAgY29uc3QgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gZnJh
bWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKTsKLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMIGRvY3Vt
ZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVlc3RVUkwoKTsKKyAgICBjb25zdCBXZWJDb3Jl
OjpVUkwgZG9jdW1lbnRVUkwgPSBkb2N1bWVudExvYWRlci0+cmVxdWVzdFVSTCgpOwogCiAgICAg
aWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzKCJodHRwcyIpKQogICAgICAgICByZXR1cm4gRVdL
X0NFUlRJRklDQVRFX1NUQVRVU19OT19DRVJUSUZJQ0FURTsKQEAgLTE3NjMsNyArMTc2Myw3IEBA
IHZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpCiAgKgog
ICogQ3JlYXRlcyBwbHVnaW4uCiAgKi8KLVdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUo
RXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBEQkcoImV3a0ZyYW1lPSVwLCBzaXplPSVkeCVkLCBlbGVtZW50PSVwLCB1
cmw9JXMsIG1pbWVUeXBlPSVzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2
YXRlLmgKaW5kZXggYTE0NDZkZmVlNjQ2YzVjYzJkMWNmNTAwZmM3ZmM0NTA0NDQ2YjZmMi4uN2Q0
MTc2NmU5OWEzODFlM2UwMzNhZDllN2YzYTMyMGIwZTg4MjBkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTMyLDcgKzMyLDcgQEAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRFZmw7CiBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFdpZGdldDsKQEAgLTc2LDcg
Kzc2LDcgQEAgYm9vbCBld2tfZnJhbWVfdXJpX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KTsKIHZvaWQgZXdrX2ZyYW1lX2ZvcmNlX2xheW91dChFdmFzX09iamVjdCogZXdrRnJhbWUpOwog
dm9pZCBld2tfZnJhbWVfaWNvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiAKLVdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwg
V2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFs
bHkpOwogCiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X2NvbnRlbnRzX2NoYW5nZWQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2VkaXRvcl9jbGllbnRfc2VsZWN0
aW9uX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNwcAppbmRleCBkZDNiYTlmYTllYzgyYmJiZjcwM2Y5
NTU1NGY0ZDg3OGFhM2M4ZjNkLi45ZTRkNWE1NjdlNGMxZTc4OWRhODU4NmEwODhmZWQ2NjZhMDk3
MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGlj
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xpY3kuY3Bw
CkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3Nl
Y3VyaXR5X3BvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIK
IApAQCAtMjksNyArMjksNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHZvaWQgZXdrX3Nl
Y3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBzb3VyY2VVcmws
IGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uVXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQog
ewogICAgIGNvbnN0IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlVXJsKTsKLSAgICBjb25zdCBLVVJMIGRlc3RpbmF0
aW9uKEtVUkwoKSwgZGVzdGluYXRpb25VcmwpOworICAgIGNvbnN0IFVSTCBkZXN0aW5hdGlvbihV
UkwoKSwgZGVzdGluYXRpb25VcmwpOwogCiAgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KCpzb3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRlc3Rp
bmF0aW9uLmhvc3QoKSwgYWxsb3dTdWJkb21haW5zKTsKIH0KQEAgLTM3LDcgKzM3LDcgQEAgdm9p
ZCBld2tfc2VjdXJpdHlfcG9saWN5X3doaXRlbGlzdF9vcmlnaW5fYWRkKGNvbnN0IGNoYXIqIHNv
dXJjZVVybCwgY29uc3QgY2hhcioKIHZvaWQgZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rf
b3JpZ2luX2RlbChjb25zdCBjaGFyKiBzb3VyY2VVcmwsIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9u
VXJsLCBFaW5hX0Jvb2wgYWxsb3dTdWJkb21haW5zKQogewogICAgIGNvbnN0IFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc291cmNlID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291
cmNlVXJsKTsKLSAgICBjb25zdCBLVVJMIGRlc3RpbmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25V
cmwpOworICAgIGNvbnN0IFVSTCBkZXN0aW5hdGlvbihVUkwoKSwgZGVzdGluYXRpb25VcmwpOwog
CiAgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpz
b3VyY2UsIGRlc3RpbmF0aW9uLnByb3RvY29sKCksIGRlc3RpbmF0aW9uLmhvc3QoKSwgYWxsb3dT
dWJkb21haW5zKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKaW5kZXgg
NGFiMGFlNzcwMTcxNjQ0NGQyMWI1YmY2MDczZGUxMWJkZTdmMTBmOS4uZDVkMzE2NTNlYzM0YTk4
ZmJmYTI2MTlmYjY1MDk1ODUxZTJmODI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0
aW5ncy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIGV3a19zZXR0aW5nc19sb2NhbF9zdG9yYWdlX2RhdGFiYXNlX29yaWdpbl9jbGVh
cihjb25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4odXJs
KTsKIAotICAgIGNvbnN0IFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBjb25zdCBXZWJDb3JlOjpVUkwga3VybChXZWJD
b3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFdlYkNvcmU6OlN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoa3VybCkuZ2V0KCkpOwogfQogCkBAIC0yMTQsNyArMjE0LDcgQEAgY2Fpcm9f
c3VyZmFjZV90KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9pY29uX3N1cmZhY2VfZ2V0KGNv
bnN0IGNoYXIqIHVybCkKIHsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodXJs
LCAwKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCksIFdURjo6U3Ry
aW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChXZWJDb3JlOjpVUkwo
KSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+IGljb24gPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25G
b3JQYWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUoMTYsIDE2KSk7CiAgICAg
aWYgKCFpY29uKQogICAgICAgICBFUlIoIm5vIGljb24gZm9yIHVybCAlcyIsIHVybCk7CkBAIC0y
MjcsNyArMjI3LDcgQEAgRXZhc19PYmplY3QqIGV3a19zZXR0aW5nc19pY29uX2RhdGFiYXNlX2lj
b25fb2JqZWN0X2dldChjb25zdCBjaGFyKiB1cmwsIEV2YXMqIGMKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwodXJsLCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY2FudmFzLCAwKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChX
ZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVybCkpOwogICAgIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJv
bm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKGt1cmwuc3RyaW5nKCksIFdlYkNvcmU6OkludFNpemUo
MTYsIDE2KSk7CiAKICAgICBpZiAoIXN1cmZhY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IGEwZWY5YzUxYmU4OTA1ZWM4YjIzNjcwODBhN2YwYjNiYWVhYWE2ODMuLjc5OTZk
ZGE0NmUwYWI5OWU5YjgzMjA0ODIzZGZhZjkyZDM0OWY0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcApAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAg
ICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gbmV3IEV3a19WaWV3X1ByaXZhdGVfRGF0
YTsKICAgICBtZW1zZXQocHJpdiwgMCwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpOwog
ICAgIEF0b21pY1N0cmluZyBzdHJpbmc7Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmw7CisgICAgV2Vi
Q29yZTo6VVJMIHVybDsKIAogICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGll
bnRzOwogICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDaHJvbWVD
bGllbnRFZmwoc21hcnREYXRhLT5zZWxmKTsKQEAgLTE3MjgsNyArMTcyOCw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld192aXNpdGVkX2xpbmtfYWRkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBj
aGFyKiB2aXNpdGVkVXJsCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYt
PnBhZ2UsIGZhbHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+
cGFnZS0+Z3JvdXBQdHIoKSwgZmFsc2UpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdlYkNv
cmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZpc2l0ZWRVcmwpKTsKKyAgICBXZWJD
b3JlOjpVUkwga3VybChXZWJDb3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZpc2l0
ZWRVcmwpKTsKICAgICBwcml2LT5wYWdlLT5ncm91cFB0cigpLT5hZGRWaXNpdGVkTGluayhrdXJs
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIwNTUsNyArMjA1NSw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19zZXR0aW5nX3VzZXJfc3R5bGVzaGVldF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGNvbnN0IGNoYXIqCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAgICAgaWYgKGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmcHJpdi0+
c2V0dGluZ3MudXNlclN0eWxlc2hlZXQsIHVyaSkpIHsKLSAgICAgICAgV2ViQ29yZTo6S1VSTCBr
dXJsKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICAgICAgV2Vi
Q29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CiAg
ICAgICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihrdXJs
KTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0zNjYyLDcgKzM2NjIsNyBAQCB2b2lkIGV3
a192aWV3X2ZyYW1lX3JlY3RfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBfZXdr
X3ZpZXdfc21hcnRfY2hhbmdlZChzbWFydERhdGEpOwogfQogCi1XVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKK1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGV3a192aWV3X3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNf
T2JqZWN0KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgREJHKCJld2tWaWV3PSVwLCBmcmFtZT0lcCwg
c2l6ZT0lZHglZCwgZWxlbWVudD0lcCwgdXJsPSVzLCBtaW1lVHlwZT0lcyIsCiAgICAgICAgIGV3
a1ZpZXcsIGZyYW1lLCBwbHVnaW5TaXplLndpZHRoKCksIHBsdWdpblNpemUuaGVpZ2h0KCksIGVs
ZW1lbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZhdGUuaAppbmRleCAzMTNl
ZjdjOTAyMDBkOWU3Y2FmMWQ5NWRlY2FhYjNmYzA3ZGQ4YmUxLi40NDVjMWRkYWUyYzYzM2EwZjFj
MjIxMDYzNDBhMDhiZTQ3ZGFjNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19w
cml2YXRlLmgKQEAgLTExNCw3ICsxMTQsNyBAQCBXZWJDb3JlOjpQYWdlKiBld2tfdmlld19jb3Jl
X3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAogdm9pZCBld2tfdmlld19m
cmFtZV9yZWN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogCi1XVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdp
blNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFdmFzX09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBX
VEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQogdm9pZCBld2tfdmlld19jb2xvcl9jaG9vc2VyX25ldyhFdmFzX09iamVjdCogZXdrVmll
dywgV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBpbml0aWFsQ29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvTkVXUyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL05FV1MKaW5kZXggZWYzZjMxNDFiMWQzZmRkY2ZjYWI4NDgwYmVh
MzI0MjlkNGMzY2E3NC4uMmZjY2Y4MjdkNWY3NzRmY2E5MjkwYzI2MzZkMzE4OTU1NzY0Y2Y1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvTkVXUworKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9ORVdTCkBAIC0zNDQsNyArMzQ0LDcgQEAgV2hhdCdzIG5ldyBpbiBXZWJLaXRHVEsrIDEuOS4z
PwogICAtIEZpeCBjdXJzb3IgdXNlZCBmb3IgbmUtcmVzaXplLgogICAtIEZpeCBjb250cmFjdGlv
bnMgcmVjb2duaXRpb24gYnkgdGhlIHNwZWxsIGNoZWNrZXIuCiAgIC0gRml4IGEgY3Jhc2ggcmVu
ZGVyaW5nIHNjcm9sbGJhcnMgb24gR1RLIHd4V2Via2l0LgotICAtIEZpeCBLVVJMOjpmaWxlU3lz
dGVtUGF0aCgpIGltcGxlbWVudGF0aW9uIHRvIHN0cmlwIHRoZSBxdWVyeSBwYXJ0CisgIC0gRml4
IFVSTDo6ZmlsZVN5c3RlbVBhdGgoKSBpbXBsZW1lbnRhdGlvbiB0byBzdHJpcCB0aGUgcXVlcnkg
cGFydAogICAgIG9mIHRoZSB1cmkuCiAgIC0gQ2hlY2sgZm9yIEdUSzIvR1RLMyBzeW1ib2wgbWlz
bWF0Y2ggZWFybGllciB0byBmaXggcGx1Z2lucyBydW4KICAgICB3aXRoIG5zcGx1Z2lud3JhcHBl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRHdGsuY3BwCmluZGV4IDFjMDk4NWFkZDhiZmY5ODE4OTFhY2FjNjc3ZmFhY2JhMzdlMDA5YTku
LmQ0MDllNWE5ZGU4NGQ5ZjFlNTZjMDllMDA3OTE2OTIyYTExNTliZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAt
NDUsNyArNDUsNyBAQAogI2luY2x1ZGUgIkljb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uQWN0aW9uLmgiCiAjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKQEAgLTc5OCw3ICs3
OTgsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNpZ25lZCBtbwogICAgIC8vIGNoZWNrIGlmIHRoZSBlbGVt
ZW50IGlzIGEgbGluay4uLgogICAgIGJvb2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAg
ICBpZiAoaXNMaW5rKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgp
OworICAgICAgICBVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAo
IXVybC5pc0VtcHR5KCkgJiYgdXJsICE9IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAg
IFRleHREaXJlY3Rpb24gZGlyOwogICAgICAgICAgICAgQ1N0cmluZyB0aXRsZVN0cmluZyA9IGhp
dC50aXRsZShkaXIpLnV0ZjgoKTsKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIENocm9tZUNsaWVu
dDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNp
Z25lZCBtbwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghaXNMaW5rICYmICFtX2hvdmVyZWRM
aW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV93ZWJW
aWV3LCAiaG92ZXJpbmctb3Zlci1saW5rIiwgMCwgMCk7Ci0gICAgICAgIG1faG92ZXJlZExpbmtV
UkwgPSBLVVJMKCk7CisgICAgICAgIG1faG92ZXJlZExpbmtVUkwgPSBVUkwoKTsKICAgICB9CiAK
ICAgICBpZiAoTm9kZSogbm9kZSA9IGhpdC5pbm5lck5vblNoYXJlZE5vZGUoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRl
eCBkMWIwYTU5ZTgyNzViZWFmZTdhZDUxODAzOTcxZWQ4Y2IzODlkM2Y0Li4yYTRhN2ViZWIyODVl
Y2UwYjFjMzI5MDQzZWE0ZDQ4N2Q3Y2IyNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMjUsNyArMjUsNyBAQAogI2lu
Y2x1ZGUgIkd0a0FkanVzdG1lbnRXYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU2Vh
cmNoUG9wdXBNZW51LmgiCkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OwogICAgICAgICBH
dGtBZGp1c3RtZW50V2F0Y2hlciBtX2FkanVzdG1lbnRXYXRjaGVyOwotICAgICAgICBLVVJMIG1f
aG92ZXJlZExpbmtVUkw7CisgICAgICAgIFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogICAgICAgICB1
bnNpZ25lZCBpbnQgbV9jbG9zZVNvb25UaW1lcjsKIAogICAgICAgICBUaW1lciA8Q2hyb21lQ2xp
ZW50PiBtX2Rpc3BsYXlUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmNwcAppbmRleCA0MTcwZjc3ZmY1MmIx
NzE5NTBhNTFjZjE1NTZiMWM5OTIxYjdmZTI5Li45ZWI3NWRlMDMxYjliOTQ4YmQwYjA5NjA4YWU2
ZThmNTVjZmY2NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5j
bHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIENv
bnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
LCBjb25zdCBDb250ZXh0TQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4
dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1l
bnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYktpdE5ldHdv
cmtSZXF1ZXN0KiBuZXR3b3JrUmVxdWVzdCA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfbmV3KHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3RrLmgKaW5kZXggZDY3NzRiNTgz
YzZmODk4OTVjZDRmN2VkZmRjYWEyOWFjNmZiZDQ2Mi4uNDU2YjgxOTJhMWJkZGQ4YjNhYWUzNmI1
MzVlMGIzMGJiMDU3ODkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsYXRmb3JtTWVudURlc2Ny
aXB0aW9uIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYkNvcmU6OkNvbnRleHRNZW51
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2ds
ZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRl
eCBkZGVkOGM0NjdmZmQ5ZTY5YzA4YzBlNTFhOThkZTExNWNiYWQzZTk2Li4wMzZlNjE5MjRmMGYy
NWI2YmFlMDk2NzM3NWUyZDkxYzU4MmRhYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRkVXNl
clNjcmlwdChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqCiAKICAgICBXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgUGFnZSogcGFn
ZSA9IGNvcmUod2ViVmlldyk7Ci0gICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3Js
ZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgS1VSTCgpLCBWZWN0b3I8U3Ry
aW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLAorICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlw
dFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFVSTCgpLCBWZWN0
b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLAogICAgICAgICBydW5BdFN0YXJ0ID8gSW5q
ZWN0QXREb2N1bWVudFN0YXJ0IDogSW5qZWN0QXREb2N1bWVudEVuZCwgYWxsRnJhbWVzID8gSW5q
ZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6YWRkVXNlclN0eWxlU2hlZXQo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBjaAogCiAgICAgV2ViS2l0V2ViVmlldyogd2Vi
VmlldyA9IGdldFZpZXdGcm9tRnJhbWUoZnJhbWUpOwogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdl
YlZpZXcpOwotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCks
IFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0
SW5Ub3BGcmFtZU9ubHkpOyAKKyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTdHlsZVNoZWV0VG9X
b3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgVVJMKCksIFZlY3RvcjxT
dHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVz
IDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOyAKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5k
ZXggMWRjMjA3NjI1OTY3MzNjZWNjYTUzZWVkMjU5ODc3NmVmNWEzMzhkNy4uNDI1OTQ4ZDY2ZGQx
NzkwMjJjYTk0ODg1ZGU4YzA1MTg4NjYyZWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMTIw
LDcgKzEyMCw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogfQog
CiAKLVN0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0
dGluZ3MoZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSk7CiAgICAgR093blB0cjxnY2hhcj4gdXNl
ckFnZW50U3RyaW5nKHdlYmtpdFdlYlNldHRpbmdzVXNlckFnZW50Rm9yVVJJKHNldHRpbmdzLCB1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIsCiAgICAgLy8gRmVlZCBhbnkgY2hhbmdlcyBiYWNrIGludG8gdGhlIFJl
c291cmNlUmVxdWVzdCBvYmplY3QuCiAgICAgU291cE1lc3NhZ2UqIG1lc3NhZ2UgPSB3ZWJraXRf
bmV0d29ya19yZXF1ZXN0X2dldF9tZXNzYWdlKG5ldHdvcmtSZXF1ZXN0LmdldCgpKTsKICAgICBp
ZiAoIW1lc3NhZ2UpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRVUkwoS1VSTChLVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmtSZXF1ZXN0
LmdldCgpKSkpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgpLCBTdHJpbmc6OmZy
b21VVEY4KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShuZXR3b3JrUmVxdWVzdC5nZXQo
KSkpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdAogICAgICAgICB3ZWJraXRfd2ViX3BvbGljeV9kZWNpc2lvbl91
c2UobV9wb2xpY3lEZWNpc2lvbik7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRl
ckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICAvKiBDaGVj
ayBpZiB3ZSB3YW50IHRvIGVtYmVkIGEgR3RrV2lkZ2V0LCBmYWxsYmFjayB0byBwbHVnaW5zIGxh
dGVyICovCiAgICAgQ1N0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCkudXRmOCgpOwpAQCAt
NTE2LDcgKzUxNiw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUCiAgICAgcmV0dXJuIDA7CiB9
CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCitQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRl
RnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkKIHsKICAgICBBU1NFUlQobV9m
cmFtZSk7CkBAIC01NTgsMTIgKzU1OCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpyZWRp
cmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9oYXNTZW50
UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2lu
U2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICByZXR1
cm4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBlbGVtZW50LCBi
YXNlVVJMLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBs
ZXQiLCBmYWxzZSk7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZy
YW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewog
ICAgIHJldHVybiBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKHVybCwgbWlt
ZVR5cGUsIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogfQpAQCAtNjczLDEyICs2NzMs
MTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2so
bV9mcmFtZSwgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpEaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50LCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiBjb3JlT3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNv
cmVPcmlnaW4sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSht
X2ZyYW1lLCAiaW5zZWN1cmUtY29udGVudC1ydW4iLCBraXQoY29yZU9yaWdpbiksIHVybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiB7CiAgICAgaWYgKCFEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSB8fCAhRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAgLTcz
MSw3ICs3MzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2Fk
RXZlbnRDYWxsYmFjayhtX2ZyYW1lLCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRpZENhbmNl
bENsaWVudFJlZGlyZWN0LCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3Vi
bGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGlmICghRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpkdW1wUmVuZGVyVHJlZU1vZGVFbmFibGVkKCkgfHwgIUR1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6c19mcmFtZUxvYWRFdmVudENhbGxiYWNrKQogICAgICAgICBy
ZXR1cm47CkBAIC05NzIsNyArOTcyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6cHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlv
biYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBXZWJLaXRXZWJGcmFtZVByaXZhdGUqIGZyYW1lRGF0YSA9IG1fZnJhbWUtPnByaXY7CiAg
ICAgZ19mcmVlKGZyYW1lRGF0YS0+dGl0bGUpOwpAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgY2hhciogdXJp
ID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJpKHdlYlJlc291cmNlKTsKLSAgICBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBjb3JlUmVzb3VyY2UobG9hZGVyLT5zdWJyZXNvdXJjZShLVVJMKEtV
UkwoKSwgdXJpKSkpOworICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNvcmVSZXNvdXJjZShs
b2FkZXItPnN1YnJlc291cmNlKFVSTChVUkwoKSwgdXJpKSkpOwogCiAgICAgLy8gSWYgY29yZVJl
c291cmNlIGlzIE5VTEwgaGVyZSwgdGhlIHJlc291cmNlIGZhaWxlZCB0byBsb2FkLAogICAgIC8v
IHVubGVzcyBpdCdzIHRoZSBtYWluIHJlc291cmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKaW5kZXggYzc4Mjky
ZmI1YTc1ZWRiNWY4OTViNzMwZmE2YTU2MDc5ZmM2MWQ3OS4uN2I4MmUxMjVhODhkMzk3MTE0YzU5
Nzk0NmI4NDU3Y2ExOWM4ODY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC03Nyw3ICs3Nyw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVP
bmxvYWRFdmVudHMoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRv
dWJsZSwgZG91YmxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUsIGRvdWJsZSk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpOwpAQCAt
MTE1LDEyICsxMTUsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7CiAKLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJD
b3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29u
c3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6VmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiwgYm9vbCk7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxX
VEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6
OlN0cmluZyYsIGJvb2wpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0KikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1Bs
dWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0gICAgICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZh
bHVlcyk7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNh
dGlvbihib29sKTsKIAotICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBl
IG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CisgICAgICAg
IHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3Vs
ZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogCkBAIC0xNDYsOCArMTQ2LDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3Rv
cnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJD
b3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE3NCw5
ICsxNzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmlu
Z1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKLSAgICAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIFdURjo6
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRG
cmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKaW5kZXggZjll
ZDVhZDBkOTljZjc2OWNiYzBiN2M0ZTA1OTI5MGQwMmQ0MzI2OS4uYzZkMWEwYmEwNDcwODNlNjc4
NTZhZTljYWIxNWEzMmQ4ZGIzMGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCkBAIC04MSwzMiAr
ODEsMzIgQEAgVmlzaXRlZExpbmtTdHJhdGVneSogUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0ZWd5Ci1TdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNv
cmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3Ry
aW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFt
ZSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Omdl
dFBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbkluZm8+JgogfQogCiAv
LyBWaXNpdGVkTGlua1N0cmF0ZWd5Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6aXNMaW5r
VmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBLVVJMJiwgY29uc3QgQXRv
bWljU3RyaW5nJikKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
CiB7CiAgICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0d0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmgKaW5kZXggYjVmMDc2MmU1MjQxMzMxNzI3MTlmMWFiOGVlY2Q0ODdiMDgxYzM0
Ni4uN2Y5ODI4NWE1ZGFmYTJhODYyNTA2ZjQ2Y2Q0ZGNjNmE2OTk1YmQ1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
R3RrLmgKQEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwogCiAgICAg
Ly8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbklu
Zm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwog
CiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBp
c0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVS
TCk7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGlu
ayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRlLmgKaW5kZXggMmMzMmYyYzlhNDlm
YzE2MGQzZmNiNjY5ZWNlZTgxM2M5NDE3YTEyNS4uMzdiOTc2Zjc1NWIzZTU2NTM3ZDJlYjNhYjNj
NzM5M2QzMmI2NzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvZ2RvbS9Db252ZXJ0
VG9HQ2hhclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dD
aGFyUHJpdmF0ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIENvbnZlcnRUb0dDaGFyUHJp
dmF0ZV9oCiAjZGVmaW5lIENvbnZlcnRUb0dDaGFyUHJpdmF0ZV9oCiAKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMzAsNyArMzAsNyBAQCBpbmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdURjo6
U3RyaW5nIGNvbnN0JiBzKQogICAgIHJldHVybiBnX3N0cmR1cChzLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1pbmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdlYkNvcmU6OktVUkwgY29uc3QmIHMpCitp
bmxpbmUgZ2NoYXIqIGNvcHlBc0djaGFyKFdlYkNvcmU6OlVSTCBjb25zdCYgcykKIHsKICAgICBy
ZXR1cm4gY29weUFzR2NoYXIocy5zdHJpbmcoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGRvd25sb2FkLmNwcAppbmRleCBkMmQ1NTk3YTViMjg5MzQwM2JjOTJjNjBmZGY2
MDAzNTAzMjFjN2Y1Li5jNzQ4YzY1ODFjZjM3ZjEyNmQxMDdlYmNlNjI0OGUzMTAyYTZhMzFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKQEAgLTYzNSw3
ICs2MzUsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X2Rvd25sb2FkX2dldF9zdWdnZXN0ZWRfZmls
ZW5hbWUoV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkKQogICAgIGlmIChwcml2LT5zdWdnZXN0ZWRG
aWxlbmFtZSkKICAgICAgICAgcmV0dXJuIHByaXYtPnN1Z2dlc3RlZEZpbGVuYW1lOwogCi0gICAg
S1VSTCB1cmwgPSBLVVJMKEtVUkwoKSwgd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHBy
aXYtPm5ldHdvcmtSZXF1ZXN0KSk7CisgICAgVVJMIHVybCA9IFVSTChVUkwoKSwgd2Via2l0X25l
dHdvcmtfcmVxdWVzdF9nZXRfdXJpKHByaXYtPm5ldHdvcmtSZXF1ZXN0KSk7CiAgICAgdXJsLnNl
dFF1ZXJ5KFN0cmluZygpKTsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAg
ICAgcHJpdi0+c3VnZ2VzdGVkRmlsZW5hbWUgPSBnX3N0cmR1cChkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhpdHRlc3RyZXN1bHQuY3BwCmluZGV4IDc5NDM3
OWUxNmU5ZWNiYTNlZDgwMTQwNzY4MDM0YTA2ZTEzNzlkYTMuLmNiNDFlZGQ3ZjdiMWVhOTI2YzQ1
M2M4YjlmYWM4Y2RjOThhMGNmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXRoaXR0ZXN0cmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9N
Tm9kZVByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3
ZWJraXRnbG9iYWxzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0bmV0d29ya3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5l
dHdvcmtyZXF1ZXN0LmNwcAppbmRleCA0OTk2ZGQ5ODExMTc2MmU5Y2M1NGE1NGRiMmJkOWNlZjVi
MGIxNWZhLi4zNmUyOGEwMGE1OGU2MGU3YmYxNWE1N2ZlY2Y1MTYyZjFkYjk0ZmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKQEAg
LTI2Niw3ICsyNjYsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY29yZShXZWJLaXROZXR3
b3JrUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAoc291cE1lc3NhZ2UpCiAgICAgICAgIHJldHVy
biBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qoc291cE1lc3NhZ2UpOwogCi0gICAgV2ViQ29yZTo6
S1VSTCB1cmwgPSBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRG
OCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpKTsKKyAgICBXZWJDb3Jl
OjpVUkwgdXJsID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkpOwogICAgIHJldHVybiBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QodXJsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCmluZGV4IDA3OTIyYjA5ZjA3NzZlNzJk
MThkNWI1ZGQ2YTA1Y2Y3MjIyNTFhN2YuLmQyNzI1YmZjYTRhNDVhYTAzNjNhNTM0ZjdmNGExZTZi
ZjM1NTRjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJk
YXRhc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0
YXNvdXJjZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlckd0
ay5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnRHdGsuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJLaXRXZWJEYXRhU291cmNl
KiB3ZWJraXRfd2ViX2RhdGFfc291cmNlX25ld193aXRoX3JlcXVlc3QoV2ViS2l0TmV0d29ya1Jl
cXVlcwogCiAgICAgY29uc3QgZ2NoYXIqIHVyaSA9IHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0
X3VyaShyZXF1ZXN0KTsKIAotICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgp
LCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKSk7CiAgICAgV2ViS2l0V2ViRGF0YVNvdXJjZSogZGF0
YXNvdXJjZSA9IGtpdE5ldyhXZWJLaXQ6OkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVzb3VyY2VS
ZXF1ZXN0LCBTdWJzdGl0dXRlRGF0YSgpKSk7CiAKICAgICBXZWJLaXRXZWJEYXRhU291cmNlUHJp
dmF0ZSogcHJpdiA9IGRhdGFzb3VyY2UtPnByaXY7CkBAIC0zOTYsNyArMzk2LDcgQEAgY29uc3Qg
Z2NoYXIqIHdlYmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X3VucmVhY2hhYmxlX3VyaShXZWJLaXRX
ZWJEYXRhU291cmNlKiB3ZWIKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0RBVEFfU09VUkNFKHdlYkRhdGFTb3VyY2UpLCBOVUxMKTsKIAogICAgIFdlYktpdFdlYkRhdGFT
b3VyY2VQcml2YXRlKiBwcml2ID0gd2ViRGF0YVNvdXJjZS0+cHJpdjsKLSAgICBjb25zdCBLVVJM
JiB1bnJlYWNoYWJsZVVSTCA9IHByaXYtPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBj
b25zdCBVUkwmIHVucmVhY2hhYmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OwogCiAgICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE5V
TEw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAppbmRleCA2
ZDFmOTQ0MmRjMDZhYmUxZTZjOWMxOTY4YmQ0NGY1MmRlNGY2MmFkLi43MzU3M2RmN2M2YWUyNjMy
ODU0NjExOWU5ZjdjMmM5ZmY2NmEwMmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJmcmFtZS5jcHAKQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfZnJh
bWVfbG9hZF91cmkoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogdXJpKQogICAg
IGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChLVVJM
KEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSkpKTsKKyAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIFJlc291cmNlUmVxdWVzdChVUkwo
VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIq
IGNvbnRlbnQsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSwgY29uc3QgZ2NoYXIqIGVuY29kaW5nLCBj
b25zdCBnY2hhciogYmFzZVVSTCwgY29uc3QgZ2NoYXIqIHVucmVhY2hhYmxlVVJMKQpAQCAtNjg0
LDcgKzY4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGNvbnRlCiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoZnJhbWUpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwogCi0gICAgS1VSTCBiYXNl
S1VSTCA9IGJhc2VVUkwgPyBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMKSkg
OiBibGFua1VSTCgpOworICAgIFVSTCBiYXNlS1VSTCA9IGJhc2VVUkwgPyBVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgoYmFzZVVSTCkpIDogYmxhbmtVUkwoKTsKIAogICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KGJhc2VLVVJMKTsKIApAQCAtNjkyLDggKzY5Miw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9kYXRhKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qg
Z2NoYXIqIGNvbnRlCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoc2hhcmVkQnVm
ZmVyLnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlw
ZSA/IFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpIDogU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9o
dG1sIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPyBTdHJp
bmc6OmZyb21VVEY4KGVuY29kaW5nKSA6IFN0cmluZzo6ZnJvbVVURjgoIlVURi04IiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVU
RjgodW5yZWFjaGFibGVVUkwpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBL
VVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodW5y
ZWFjaGFibGVVUkwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVUkwpKSk7CiAKICAgICBjb3JlRnJhbWUt
PmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChjb3JlRnJhbWUsIHJlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
Ymhpc3RvcnlpdGVtLmNwcAppbmRleCA1YjdkYjIyMjM1NDllMzZhOGI0MGJiNTE5OTAzOGM4OGJh
NGRmNzU1Li4yZjI1MDkyMTQyMDMzNWRmMjdiNTEwMTFjOGQ4OTIyZjhjNGRlNTU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKQEAg
LTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgogCiAjaW5j
bHVkZSAiSGlzdG9yeUl0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJo
aXN0b3J5aXRlbXByaXZhdGUuaCIKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0yOTgsNyArMjk4LDcg
QEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRo
X2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwgY28KICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfV0VCX0hJU1RPUllfSVRFTSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
UHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgV2ViQ29yZTo6S1VS
TCBoaXN0b3J5VXJpKFdlYkNvcmU6OktVUkwoKSwgdXJpKTsKKyAgICBXZWJDb3JlOjpVUkwgaGlz
dG9yeVVyaShXZWJDb3JlOjpVUkwoKSwgdXJpKTsKICAgICBXVEY6OlN0cmluZyBoaXN0b3J5VGl0
bGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodGl0bGUpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4gaXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoaGlzdG9yeVVy
aSwgaGlzdG9yeVRpdGxlLCAwKTsKICAgICBwcml2LT5oaXN0b3J5SXRlbSA9IGl0ZW0ucmVsZWFz
ZSgpLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJyZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2VicmVz
b3VyY2UuY3BwCmluZGV4IDZmYWMzN2JmNmNlM2M0ODE2N2E3ZGNhMTQ4YWEzZDg2MDM2YzYxZjUu
LjQ1Zjg3ODJhZTE1MjMwOTczNWM3MTc5NDgzZjVmNWIzMDgxYzM3N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmNwcApAQCAtMjEsNyArMjEsNyBA
QAogI2luY2x1ZGUgIndlYmtpdHdlYnJlc291cmNlLmgiCiAKICNpbmNsdWRlICJBcmNoaXZlUmVz
b3VyY2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAid2Via2l0ZW51bXR5cGVzLmgiCiAjaW5jbHVkZSAi
d2Via2l0Z2xvYmFsc3ByaXZhdGUuaCIKQEAgLTM1Nyw3ICszNTcsNyBAQCBXZWJLaXRXZWJSZXNv
dXJjZSogd2Via2l0X3dlYl9yZXNvdXJjZV9uZXcoY29uc3QgZ2NoYXIqIGRhdGEsCiAgICAgICAg
IHNpemUgPSBzdHJsZW4oZGF0YSk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKLSAgICBXZWJLaXRXZWJSZXNvdXJj
ZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2NvcmVfcmVzb3Vy
Y2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBLVVJMKEtVUkwoKSwgU3RyaW5nOjpm
cm9tVVRGOCh1cmkpKSwgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIFN0cmluZzo6ZnJvbVVU
RjgoZW5jb2RpbmcpLCBTdHJpbmc6OmZyb21VVEY4KGZyYW1lTmFtZSkpKTsKKyAgICBXZWJLaXRX
ZWJSZXNvdXJjZSogd2ViUmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX25ld193aXRoX2Nv
cmVfcmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBVUkwoVVJMKCksIFN0
cmluZzo6ZnJvbVVURjgodXJpKSksIFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpLCBTdHJpbmc6
OmZyb21VVEY4KGVuY29kaW5nKSwgU3RyaW5nOjpmcm9tVVRGOChmcmFtZU5hbWUpKSk7CiAKICAg
ICByZXR1cm4gd2ViUmVzb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyMmNlNmJiMzYzN2NlMDBhZmJjZGJhMGJhNDI2NWEy
NDc1Y2E3ZWFkLi5hZWVhM2YzNmEwMGI0NmY3NGIwNTE2M2VkMDZmM2U3OWY3YWE2MTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVkaXRpbmdCZWhhdmlvci5oIgogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YWJhc2UuaCIKICNpbmNsdWRlICJVc2VyQWdlbnRHdGsuaCIKICNpbmNsdWRl
ICJ3ZWJraXRlbnVtdHlwZXMuaCIKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHN0YXRpYyBib29sIGlz
R29vZ2xlRG9tYWluKFN0cmluZyBob3N0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IFN0cmluZyB1c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRm9yIEdvb2dsZSBkb21h
aW5zLCBkcm9wIHRoZSBicm93c2VyJ3MgY3VzdG9tIFVzZXIgQWdlbnQgc3RyaW5nLCBhbmQgdXNl
IHRoZQogICAgIC8vIHN0YW5kYXJkIENocm9tZSBvbmUsIHNvIHRoZXkgZG9uJ3QgZ2l2ZSB1cyBh
IGJyb2tlbiBleHBlcmllbmNlLgpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgc3RhdGljIFN0cmluZyB1
c2VyQWdlbnRGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQogY2hhciogd2Via2l0V2ViU2V0dGluZ3NV
c2VyQWdlbnRGb3JVUkkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzLCBjb25zdCBjaGFy
KiB1cmkpCiB7CiAgICAgaWYgKHdlYlNldHRpbmdzLT5wcml2LT5lbmFibGVTaXRlU3BlY2lmaWNR
dWlya3MpIHsKLSAgICAgICAgU3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9IHVzZXJBZ2VudEZvclVS
TChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1cmkpKSk7
CisgICAgICAgIFN0cmluZyB1c2VyQWdlbnRTdHJpbmcgPSB1c2VyQWdlbnRGb3JVUkwoV2ViQ29y
ZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKTsKICAgICAgICAg
aWYgKCF1c2VyQWdlbnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGdfc3Ry
ZHVwKHVzZXJBZ2VudFN0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYzcxMmM5YWRjYjYxMDNlMGNkYjBj
MmY4MTQ3YTJmOTM1MDc1NGMyZi4uOWY4OTllOTI5M2RmYzNlYWRkNDQwMWQ5ZTc5ZWEwZDA3YTYy
MTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAt
MzUzOCw3ICszNTM4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0
aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy5zZXRTY3JpcHRF
bmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlU2NyaXB0cyk7CiAgICAgY29yZVNldHRpbmdz
LnNldFBsdWdpbnNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUGx1Z2lucyk7CiAgICAg
Y29yZVNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShzZXR0aW5nc1ByaXZhdGUtPnJl
c2l6YWJsZVRleHRBcmVhcyk7Ci0gICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24oS1VSTChLVVJMKCksIHNldHRpbmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRVUkkuZGF0
YSgpKSk7CisgICAgY29yZVNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVS
TCgpLCBzZXR0aW5nc1ByaXZhdGUtPnVzZXJTdHlsZXNoZWV0VVJJLmRhdGEoKSkpOwogICAgIGNv
cmVTZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5h
YmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBjb3JlU2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVByaXZhdGVCcm93c2luZyk7CiAgICAgY29y
ZVNldHRpbmdzLnNldENhcmV0QnJvd3NpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxl
Q2FyZXRCcm93c2luZyk7CkBAIC0zNjY2LDcgKzM2NjYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywg
R1BhcgogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJyZXNpemFibGUtdGV4
dC1hcmVhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoZ192
YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJu
X3N0cmluZygidXNlci1zdHlsZXNoZWV0LXVyaSIpKQotICAgICAgICBzZXR0aW5ncy5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnZhbHVl
KSkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwo
KSwgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBlbHNlIGlmIChuYW1lID09IGdf
aW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAgICAgICAgc2V0dGlu
Z3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtcHJpdmF0ZS1i
cm93c2luZyIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0
b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0K
aW5kZXggY2NlYmEwYjZiMjBiNjhjYzEzYWUzMzVlZGZlNzJiZDFjYjJiODU4Ni4uODIyYWRhYTJj
NzU4YzhiZjc3MTE0YTlmMDc1NzVlYzk4YzBhNjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9I
aXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC00NSw3ICs0NSw3IEBACiAjaW1wb3J0ICJXZWJU
eXBlc0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ltYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+CkBAIC01MzUs
NyArNTM1LDcgQEAgLSAodm9pZClzZXRBbHdheXNBdHRlbXB0VG9Vc2VQYWdlQ2FjaGU6KEJPT0wp
ZmxhZwogLSAoTlNVUkwgKilVUkwKIHsKICAgICBBU1NFUlRfTUFJTl9USFJFQUQoKTsKLSAgICBj
b25zdCBLVVJMJiB1cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1
cmwgPSBjb3JlKF9wcml2YXRlKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
Yk5TVVJMRXh0cmFzLm1tCmluZGV4IDBlYjNlYTMwZmRhOGI0MGEzNDFjYjM4YzdjNzMzZmYxYjQ3
ZjQ3YTEuLjA3NzEwMTUwZjQ1MzljYjAwZTZiOWNhOWVhYTc1MWEwNWYwOGY0MGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2lt
cG9ydCAiV2ViTlNEYXRhRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIK
ICNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tV
UkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvYWRlck5T
VVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2lt
cG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xMjcsOSArMTI3LDkgQEAgLSAoTlNV
UkwgKilfd2Via2l0X2Nhbm9uaWNhbGl6ZQogICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAg
ICAgCi0gICAgLy8gVGhpcyBhcHBsaWVzIE5TVVJMJ3MgY29uY2VwdCBvZiBjYW5vbmljYWxpemF0
aW9uLCBidXQgbm90IEtVUkwncyBjb25jZXB0LiBJdCB3b3VsZAorICAgIC8vIFRoaXMgYXBwbGll
cyBOU1VSTCdzIGNvbmNlcHQgb2YgY2Fub25pY2FsaXphdGlvbiwgYnV0IG5vdCBVUkwncyBjb25j
ZXB0LiBJdCB3b3VsZAogICAgIC8vIG1ha2Ugc2Vuc2UgdG8gYXBwbHkgYm90aCwgYnV0IHdoZW4g
d2UgdHJpZWQgdGhhdCBpdCBjYXVzZWQgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbgotICAgIC8v
IChzZWUgNTMxNTkyNikuIEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gYXBwbHkgb25seSB0aGUgS1VS
TCBjb25jZXB0IGFuZCBub3QgdGhlIE5TVVJMCisgICAgLy8gKHNlZSA1MzE1OTI2KS4gSXQgbWln
aHQgbWFrZSBzZW5zZSB0byBhcHBseSBvbmx5IHRoZSBVUkwgY29uY2VwdCBhbmQgbm90IHRoZSBO
U1VSTAogICAgIC8vIGNvbmNlcHQsIGJ1dCBpdCdzIHRvbyByaXNreSB0byBtYWtlIHRoYXQgY2hh
bmdlIGZvciBXZWJLaXQgMy4wLgogICAgIE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCA9IFtjb25j
cmV0ZUNsYXNzIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TVVJM
ICpuZXdVUkwgPSBbbmV3UmVxdWVzdCBVUkxdOyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0KaW5kZXggODgzZjJlNmFlY2YxNTg2MjA0
MzhkOWEzZjNmYTNiZDFiYTI4YThhOC4uZTllZDVjYmViMjk1ZDA2ZGFhZDk2OTU3MjJhMzRmM2Vl
ZTU1NjY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4ubW0KQEAgLTI0LDcgKzI0LDcgQEAKIAogI2ltcG9ydCAiV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCmlu
ZGV4IGNmOWVjN2JlOWYzYjZlZTMxMzU5ODUyN2U2OGUyZjc5NjZjY2M3MjkuLmFiNDcyOTljMzY5
MjcwOGNjZDczZTI0NTFkZTBkZDMzOGRiM2ExZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KQEAgLTUzLDcgKzUzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVUcmVlLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Byb3h5U2VydmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQpp
bmRleCA1ZGI4NDU3NDA3N2E5MzNjMmRmMmZkM2FiYjZiZWNjYmJmM2FiY2EwLi43NDI0OGE3MDk4
YTk4Nzg4NWM1NzYzMDVhNTlhNzlkMGNkYTc1NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC04NDcsNyAr
ODQ3LDcgQEAgLSAoQ1N0cmluZylyZXNvbHZlZFVSTFN0cmluZ0ZvclVSTDooY29uc3QgY2hhciop
dXJsIHRhcmdldDooY29uc3QgY2hhciopdGFyZ2V0CiAgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKICAgCi0gICAgS1VS
TCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChyZWxh
dGl2ZVVSTFN0cmluZyk7CisgICAgVVJMIGFic29sdXRlVVJMID0gdGFyZ2V0RnJhbWUtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMU3RyaW5nKTsKICAgICByZXR1cm4gYWJzb2x1
dGVVUkwuc3RyaW5nKCkudXRmOCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMjBiZWVlMjQwZWU4ZGQxMTIx
ZTE0YmFiYzZmNjJkMTYzMGZkOTM3OS4uNjhhMjkzNjAxZjRmZDhiNjgyZTVlMTVhN2QxZGFlZDRl
NjJjNmNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNh
bmNlbExvYWRBbmREZXN0cm95U3RyZWFtV2l0aEVycm9yKE5TRXJyb3IgKik7CiAKLSAgICB2b2lk
IHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVl
c3RVUkwgPSByZXF1ZXN0VVJMOyB9CisgICAgdm9pZCBzZXRSZXF1ZXN0VVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVxdWVzdFVSTCkgeyBtX3JlcXVlc3RVUkwgPSByZXF1ZXN0VVJMOyB9CiAKICAg
ICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBzdG9wKCk7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0OwogCiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURhdGE+IG1fZGVsaXZlcnlEYXRhOwotICAgIFdlYkNvcmU6OktVUkwgbV9yZXF1
ZXN0VVJMOworICAgIFdlYkNvcmU6OlVSTCBtX3JlcXVlc3RVUkw7CiAgICAgUmV0YWluUHRyPE5T
VVJMPiBtX3Jlc3BvbnNlVVJMOwogICAgIENTdHJpbmcgbV9taW1lVHlwZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmgKaW5kZXggZTUzNmYzYzI0YmU4N2Y3NmMyYmE5MzhjYzc5MDY5NDhiZDgxZjJkZi4uMDE1M2Ey
MzliYmNiOGEwNjJjOGI1MjJkYzcxYTBhNmE5ZjU3MDI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE5TTXV0YWJsZUFycmF5KiBnZXRDdXN0
b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6
OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShX
ZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkg
T1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IGM0Y2M2YzYwMmI0MThiZTFjYzczMTZiZjRi
YzE1YWRlZjk0MmQ5MzkuLmI4MzJlODgyMzY2OWViOTg0YzI0NGM5NWNkMzJjMTlhYjlkYzgyYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tCkBAIC00Myw3ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+Cisj
aW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
QEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBLVVJMJiB1cmwpCit2
b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBbbV93ZWJWaWV3IF9kb3dubG9hZFVSTDp1cmxdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
YWZmZjMwNjNiYmY1YjhmMWUzMGRkMjljMmEzNjQwZDkwMWM3YWVhMi4uNDI5ZjI1ZGUyMjAzYmYy
MzViNDFiNDYwYzY1ZjU4OGI3ZGM4MWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05MSw3ICs5MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBh
Z2UoKSBPVkVSUklERTsKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkBAIC0xNjYsNyArMTY2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1p
dHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwpAQCAt
MTkxLDI2ICsxOTEsMjYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFt
ZU93bmVyRWxlbWVudCosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6
V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgYmFzZVVSTCwKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpI
VE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bVZhbHVlcykgT1ZFUlJJREU7CiAgICAgCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBX
VEY6OlN0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVkaWFQbGF5ZXJQ
cm94eVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAj
ZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxk
UHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFw
cGVyV29ybGQqKSBPVkVSUklERTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBwcml2YXRlOgogCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZShjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICBS
ZXRhaW5QdHI8V2ViRnJhbWU+IG1fd2ViRnJhbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMjIw
YjRkODg0ZTcwNDZmY2FhNWIwYjk0YmJlOWEwZGFlMGI4ZmUyZC4uYWZhYmYyMDRiNDBhMGFmZmUx
Y2E5YWU2ZGMyYTE3NzYzYTY4ZDM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTQxMyw3ICs0MTMs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKERvY3VtZW50TG9hZGVyKgogfQogI2VuZGlmCiAKLWJvb2wgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgS1VSTCYgaW1hZ2VVUkwp
IGNvbnN0Citib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdl
KGNvbnN0IFVSTCYgaW1hZ2VVUkwpIGNvbnN0CiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdl
dFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgV2ViUmVzb3VyY2VEZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkK
ICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6KSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlKQordm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBXZWJG
cmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdl
YlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTk5
Miw3ICs5OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNv
bnN0IEtVUkwmIGluc2VjdXJlVVJMKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgaW5zZWN1
cmVVUkwpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5n
ZXQoKSk7ICAgCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBp
bXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bnMod2ViVmlldyk7CkBAIC0xMDAyLDcgKzEwMDIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
SwogICAgIH0KIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2Vi
VmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKQEAgLTExOTIsNyArMTE5Miw3IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvCiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgV2ViVmlldyogdmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAg
ICAgCkBAIC0xMzIwLDcgKzEzMjAsNyBAQCBSZXRhaW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVwUG9saWN5TGlzdGVuZXIoRnJhbQogICAgIHJl
dHVybiBtX3BvbGljeUxpc3RlbmVyOwogfQogCi1TdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBBU1NFUlQod2ViVmlldyk7CkBAIC0xMzI4
LDcgKzEzMjgsNyBAQCBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25z
dCBLVVJMJiB1cmwpCiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlIHdpdGggbmlsIGZv
ciB0aGUgV2ViVmlldyB1bmxlc3MgdGhlcmUgaXMgYSBidWcgc29tZXdoZXJlIGVsc2UuCiAgICAg
Ly8gQnV0IGlmIHdlIGRvLCBpdCdzIGJldHRlciB0byByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyB0
aGFuIGp1c3QgY3Jhc2hpbmcgb24gdGhlIHNwb3QuCiAgICAgLy8gTW9zdCBvdGhlciBjYWxsIHNp
dGVzIGFyZSB0b2xlcmFudCBvZiBuaWwgYmVjYXVzZSBvZiBPYmplY3RpdmUtQyBiZWhhdmlvciwg
YnV0IHRoaXMgb25lCi0gICAgLy8gaXMgbm90IGJlY2F1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBf
dXNlckFnZW50Rm9yVVJMIGlzIGEgY29uc3QgS1VSTCYuCisgICAgLy8gaXMgbm90IGJlY2F1c2Ug
dGhlIHJldHVybiB2YWx1ZSBvZiBfdXNlckFnZW50Rm9yVVJMIGlzIGEgY29uc3QgVVJMJi4KICAg
ICBpZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC0xMzg5
LDcgKzEzODksNyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5DYWNoZVBhZ2UoKSBj
b25zdAogICAgIHJldHVybiBbW1ttX3dlYkZyYW1lLmdldCgpIF9kYXRhU291cmNlXSByZXByZXNl
bnRhdGlvbl0gaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFJlcHJlc2VudGF0aW9uIGNsYXNzXV07CiB9
CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Ym9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0xNDIzLDcgKzE0MjMsNyBA
QCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbgogICAgIHJldHVybiAwOwogfQogCi1PYmplY3RDb250
ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNG
b3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAKQEAgLTE2NDEsNyArMTY0MSw3IEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJ
bkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhU
TUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwKICAgICBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVz
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CkBAIC0xNzQ2LDkgKzE3NDYsOSBAQCBQYXNzUmVmUHRy
PFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiBzaXplLCBIVE1MUAogICAgIGlmIChlcnJvckNvZGUgJiYgbV93ZWJGcmFtZSkgewogICAgICAg
ICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25z
ID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcp
OwogICAgICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5wbHVnSW5GYWlsZWRXaXRoRXJyb3JGdW5j
KSB7Ci0gICAgICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBhcmFtZXRlclZhbHVlKHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1Z2luc3BhZ2UiKSkpOworICAgICAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHBhcmFtZXRlclZhbHVlKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1
Z2luc3BhZ2UiKSkpOwogICAgICAgICAgICAgaWYgKCFwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgICAgICAgICBwbHVnaW5QYWdlVVJMID0gS1VSTCgpOwor
ICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkwgPSBVUkwoKTsKICAgICAgICAgICAgIE5TU3Ry
aW5nICpwbHVnaW5OYW1lID0gcGx1Z2luUGFja2FnZSA/IChOU1N0cmluZyAqKVtwbHVnaW5QYWNr
YWdlIHBsdWdpbkluZm9dLm5hbWUgOiBuaWw7CiAKICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gW1tOU0Vycm9yIGFsbG9jXSBfaW5pdFdpdGhQbHVnaW5FcnJvckNvZGU6ZXJyb3JDb2RlCkBA
IC0xNzk5LDcgKzE3OTksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERh
dGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogfQogICAgIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxBcHBsZXRF
bGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiBiYXNlVVJMLCAKK1Bhc3NSZWZQdHI8V2lkZ2V0
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiBzaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiBiYXNlVVJM
LCAKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtVmFsdWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
QEAgLTE4NTUsNyArMTg1NSw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBzCiB9CiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBJbnRTaXpl
JiBzaXplLCBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsCitQYXNz
UmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJv
eHlQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4
IDJhNjZjMjk5NDVhMWI4MzFhMTliZmMyMTEyZDhjNGQ3YzRhYzA2NzQuLjIyZjIwZmVjNjVhNGRm
YmI5Nzc4ODhhY2VmZTdkOGI4ODNmNmVkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NywxMiAr
NTcsMTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRl
Z3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNv
cmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNzgsNyArNzgs
NyBAQCBwcml2YXRlOgogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KIAog
ICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNM
aW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Uq
LCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
VEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKSBPVkVS
UklERTsKICAgICAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKQEAgLTk0LDcg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgdW5pcXVl
TmFtZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpL
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLm1tCmluZGV4IGQ4MTE0NDE1NzYyOTBlNmU1ZjM1NTM5ZDVkYjgxYzdjYzVmNjNjYmMuLjhl
ZWM1MWYwMjUzMGMzNWYwNDBjMWZiN2JlOWU0NjVjMzI4ZGQxODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0KQEAgLTkyLDMyICs5MiwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKQogICAgIHJldHVybiB0aGlzOwog
fQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSogcGFnZSwgVmVjdG9yPFBsdWdpbklu
Zm8+JgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLWJvb2wgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNv
bnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtW
aXNpdGVkKGhhc2gpOwogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIENvbG9yIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICByZXR1cm4g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpOyAgICAKIH0KIAotS1VS
TCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiB7CiAgICAgcmV0dXJuIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
dXJsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGI4M2JlMTZlNDdmZTgxYTFjMzE4MTYxZDkxODIyZjk5
ZDUyZmQ2NjcuLmExODAwNDU5NzlmY2IwMWNiY2ZiNTY1YzlkNDJkYjcxMzYyNjY4MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2lu
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3Jp
Z2luLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0ICJXZWJBcHBsaWNhdGlvbkNhY2hlUXVv
dGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJEYXRhYmFzZVF1b3RhTWFuYWdlci5oIgogI2ltcG9y
dCAiV2ViUXVvdGFNYW5hZ2VyLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RhdGFiYXNlTWFuYWdlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCkBAIC00NCw3ICs0NCw3IEBAIC0gKGlk
KWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShLVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRl
VVJMXSkpOwogICAgIG9yaWdpbi0+cmVmKCk7CiAgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9j
YXN0PFdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZSAqPihvcmlnaW4uZ2V0KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggYzVmMmMyNzQ3MGQ3ZDEw
OTAyMzQ0MGIxOTM0NjZjYjJhZDU0MzI3Zi4uODRmYWEyNDFjOTY0MThlNDlhZGRkNmYzZWM2NTc3
NTExM2M5MmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQpAQCAtNDksNyArNDksNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lTG9hZGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
VVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUJ1ZmZl
ci5oPgpAQCAtMzEyLDcgKzMxMiw3IEBAIC0gKERPTUVsZW1lbnQgKilfaW1hZ2VFbGVtZW50V2l0
aEltYWdlUmVzb3VyY2U6KFdlYlJlc291cmNlICopcmVzb3VyY2UKIC8vIE1heSByZXR1cm4gbmls
IGlmIG5vdCBpbml0aWFsaXplZCB3aXRoIGEgVVJMLgogLSAoTlNVUkwgKilfVVJMCiB7Ci0gICAg
Y29uc3QgS1VSTCYgdXJsID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKKyAg
ICBjb25zdCBVUkwmIHVybCA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+dXJsKCk7CiAg
ICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIHVy
bDsKQEAgLTQ2Miw3ICs0NjIsNyBAQCAtIChOU1N0cmluZyAqKXBhZ2VUaXRsZQogCiAtIChOU1VS
TCAqKXVucmVhY2hhYmxlVVJMCiB7Ci0gICAgY29uc3QgS1VSTCYgdW5yZWFjaGFibGVVUkwgPSB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+dW5yZWFj
aGFibGVVUkwoKTsKICAgICBpZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIHJldHVybiB1bnJlYWNoYWJsZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCmluZGV4IDhhZDlkZGE0M2E2NGI5NjkyZWYyZmNjZDljN2VkMWQ5MzJm
NTdkNTIuLjg1NDQyNzcxNzQ0MjZhZThmNWRkMWNiYmM3OGNjODBmMDU1NjI5ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTQxNyw3ICsxNDE3LDcgQEAgLSAodm9p
ZClfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
dGV4dEVuY29kaW5nTmFtZToKICAgICBpZiAoIXB0aHJlYWRfbWFpbl9ucCgpKQogICAgICAgICBy
ZXR1cm4gW1tzZWxmIF93ZWJraXRfaW52b2tlT25NYWluVGhyZWFkXSBfbG9hZERhdGE6ZGF0YSBN
SU1FVHlwZTpNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOmVuY29kaW5nTmFtZSBiYXNlVVJMOmJh
c2VVUkwgdW5yZWFjaGFibGVVUkw6dW5yZWFjaGFibGVVUkxdOwogICAgIAotICAgIEtVUkwgcmVz
cG9uc2VVUkw7CisgICAgVVJMIHJlc3BvbnNlVVJMOwogICAgIGlmICghYmFzZVVSTCkgewogICAg
ICAgICBiYXNlVVJMID0gYmxhbmtVUkwoKTsKICAgICAgICAgcmVzcG9uc2VVUkwgPSBjcmVhdGVV
bmlxdWVXZWJEYXRhVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCAwYjJhNjJkODE5OWJmZjc0ZTU3Yzg0N2IzN2YzYzk5NWFiYWQzYTUyLi5lNzZhNWRj
MTYzNzc3NDExMDRjYjkwNDA0YzIyOTU3MTg2ZjMzZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTM2NzMsNyArMzY3Myw3IEBAIC0gKE5TQXJyYXkgKilu
YW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0
aW5hdGlvbgogICAgICAgICBpZiAoIXBhZ2UpIAogICAgICAgICAgICAgcmV0dXJuIG5pbDsgCiAg
ICAgICAgIAotICAgICAgICBjb25zdCBLVVJMJiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ2dpbmdJbWFnZVVSTCgpOworICAgICAgICBjb25zdCBVUkwmIGltYWdlVVJMID0g
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2luZ0ltYWdlVVJMKCk7CiAgICAgICAgIEFTU0VS
VCghaW1hZ2VVUkwuaXNFbXB0eSgpKTsKICAgICAgICAgZHJhZ2dpbmdJbWFnZVVSTCA9IGltYWdl
VVJMOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KaW5kZXggYTBjYTg1
ZjkzODk2OWRiZmE4ZWIxNGQ5MjA0ODE2ZmNkN2JkYmY3Zi4uMWM5NTc2NmFkMTRhMTQyZDgyMmU0
NDk3MTI3ZGRhODdlODY2NTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmll
dy5tbQpAQCAtNTYsNyArNTYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRN
TEZyYW1lT3duZXJFbGVtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KICNpbXBv
cnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50
RmFjdG9yeU1hYy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVi
dWdnZXIubW0KaW5kZXggYmIxMWNmY2I3NzYxOWI1MmM2MDVkZWI1MjZjODM0NmZmNTI5OGJiYy4u
MTk2MDQyYzg5ZjRmY2Q5NGU3MGFkNjIxYzU3ZTVhNzg0ODhjNmY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCkBAIC0zOSw3ICszOSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgotI2ltcG9ydCA8V2ViQ29yZS9LVVJM
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRDb250
cm9sbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRp
YyBOU1VSTCAqdG9OU1VSTChjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywg
cyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHMpOwogfQogCiBzdGF0aWMgV2Vi
RnJhbWUgKnRvV2ViRnJhbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYTk2ZTAzYzdjZWY0ZTE5NTdmOWFlZmVlOTY0
NDFlMDM1YWQ2ODBmLi44Y2ZlN2ZmZjVmODEyYTU3N2IxMGU0OGM5Y2IwY2Y4ZWVhNzY0MTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02ODIsNyArNjgyLDcgQEAgLSh2
b2lkKV9pbmplY3RPdXRsb29rUXVpcmtzU2NyaXB0CiB7CiAgICAgc3RhdGljIE5TU3RyaW5nICpv
dXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMgPSBsZWFrT3V0bG9va1F1aXJrc1VzZXJTY3JpcHRD
b250ZW50cygpOwogICAgIGNvcmUoc2VsZiktPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQo
Y29yZShbV2ViU2NyaXB0V29ybGQgd29ybGRdKSwKLSAgICAgICAgb3V0bG9va1F1aXJrc1Njcmlw
dENvbnRlbnRzLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIElu
amVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluQWxsRnJhbWVzKTsKKyAgICAgICAgb3V0bG9va1F1
aXJrc1NjcmlwdENvbnRlbnRzLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpOwogfQogCiBzdGF0
aWMgYm9vbCBzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzI3MDgyOTQw
Nzk0YThjNGJhMDFmYmJmYmY1ZWZiNTMxYTc5Y2FlZC4uY2Q1NGYwNzI2OWQ1MWRlYTMyMzhiY2I1
OGU0Yzk4YWI3NjhiODllYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgSGlzdG9yeUl0ZW07Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJM
OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJCb3g7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKaW5kZXggOWQzZjNhYzRkODcwNDZiOWViMzc1
OTI1NWFkZWNiYTU4Mzc2YTI2OC4uYTdiYzgzZTU0YjViYTg0YmYyYTkyNzYyNDMxM2ViNmY1ZWJi
MDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcApAQCAtMjYsNyArMjYsNyBA
QAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgPFFXZWJQ
YWdlQWRhcHRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlw
dHdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzY3JpcHR3b3JsZC5jcHAKaW5k
ZXggYWZlYjViYjJhMThlYTlhMzI4OGMwYjE5MTlhZGEzZTRiMzgwNTJhYy4uYzVhNWZiNDg3MjVm
ZDhjOWQ4ZjA3MWI2MGY1YmM2OWExN2EzOTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNjcmlwdHdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
c2NyaXB0d29ybGQuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAicXdlYnNjcmlwdHdv
cmxkLmgiCiAjaW5jbHVkZSAicXdlYnNjcmlwdHdvcmxkX3AuaCIKIAotI2luY2x1ZGUgIktVUkwu
aCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSA8UVN0cmluZ0xpc3Q+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJzZWN1cml0eW9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlv
cmlnaW4uY3BwCmluZGV4IDU4ZmU3OTUxOWIwZWIyOTdmZGRjZDlkMmJjOWNlMWE5YzU0YzQ1MWQu
LjZlOTM1MGZiZjUyNmQ3ZDM4MTVjYWUyNzAyOGYzZmRlZWE3MmEyNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcApAQCAtMjIsNyArMjIsNyBAQAogCiAj
aW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJEYXRhYmFzZU1h
bmFnZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5UG9saWN5LmgiCkBAIC0yNzMsNyArMjczLDcgQEAgUVN0cmluZ0xpc3QgUVdlYlNl
Y3VyaXR5T3JpZ2luOjpsb2NhbFNjaGVtZXMoKQogKi8KIFFXZWJTZWN1cml0eU9yaWdpbjo6UVdl
YlNlY3VyaXR5T3JpZ2luKGNvbnN0IFFVcmwmIHVybCkKIHsKLSAgICBkID0gbmV3IFFXZWJTZWN1
cml0eU9yaWdpblByaXZhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHVybCkpKTsKKyAg
ICBkID0gbmV3IFFXZWJTZWN1cml0eU9yaWdpblByaXZhdGUoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwodXJsKSkpOwogfQogCiAvKiEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3Bw
CmluZGV4IGU3OTYzM2IxMjA0MDExNjQyZThhMDJiMzFkNGJlMjBmNzEzYWE5ZjEuLjcwN2IwNjU5
YWYzM2UwYWU3ZjZhY2M2ODBmYTc1Njc5ZjRhZWNkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiSW5pdFdl
YkNvcmVRdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U3RhdGVOb3RpZmllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTIyNSw3ICsyMjUsNyBAQCB2
b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKICAgICAgICAgc2V0dGluZ3MtPnNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQodmFsdWUpOwogCiAgICAgICAgIFFVcmwgbG9jYXRpb24gPSAh
dXNlclN0eWxlU2hlZXRMb2NhdGlvbi5pc0VtcHR5KCkgPyB1c2VyU3R5bGVTaGVldExvY2F0aW9u
IDogZ2xvYmFsLT51c2VyU3R5bGVTaGVldExvY2F0aW9uOwotICAgICAgICBzZXR0aW5ncy0+c2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJDb3JlOjpLVVJMKGxvY2F0aW9uKSk7CisgICAgICAg
IHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFdlYkNvcmU6OlVSTChsb2NhdGlv
bikpOwogCiAgICAgICAgIFFTdHJpbmcgZW5jb2RpbmcgPSAhZGVmYXVsdFRleHRFbmNvZGluZy5p
c0VtcHR5KCkgPyBkZWZhdWx0VGV4dEVuY29kaW5nOiBnbG9iYWwtPmRlZmF1bHRUZXh0RW5jb2Rp
bmc7CiAgICAgICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShlbmNvZGlu
Zyk7CkBAIC03NDksNyArNzQ5LDcgQEAgdm9pZCBRV2ViU2V0dGluZ3M6OmNsZWFySWNvbkRhdGFi
YXNlKCkKIFFJY29uIFFXZWJTZXR0aW5nczo6aWNvbkZvclVybChjb25zdCBRVXJsJiB1cmwpCiB7
CiAgICAgV2ViQ29yZTo6aW5pdGlhbGl6ZVdlYkNvcmVRdCgpOwotICAgIFFQaXhtYXAqIGljb24g
PSBXZWJDb3JlOjppY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJM
KFdlYkNvcmU6OktVUkwodXJsKS5zdHJpbmcoKSwKKyAgICBRUGl4bWFwKiBpY29uID0gV2ViQ29y
ZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChXZWJDb3Jl
OjpVUkwodXJsKS5zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6SW50U2l6ZSgxNiwgMTYpKTsKICAgICBpZiAoIWljb24pCiAgICAgICAgIHJldHVybiBR
SWNvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRRdC5oCmluZGV4IDlkNWJhYWNhZTNlYTc1ODYxNGQ5NmIxYzgzYmE1YTI4NTI4MmUwOGIuLjI1
NDlmMmZmYmYyNjkxZmM4MmQyMDI5Y2MxZDFiNTg3ZjRiYzczMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKQEAgLTMxLDcgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJRdFBsYXRmb3Jt
UGx1Z2luLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgpAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICBRV2ViRnVsbFNjcmVl
blZpZGVvSGFuZGxlciogY3JlYXRlRnVsbFNjcmVlblZpZGVvSGFuZGxlcigpOwogCiAgICAgUVdl
YlBhZ2VBZGFwdGVyKiBtX3dlYlBhZ2U7Ci0gICAgS1VSTCBsYXN0SG92ZXJVUkw7CisgICAgVVJM
IGxhc3RIb3ZlclVSTDsKICAgICBTdHJpbmcgbGFzdEhvdmVyVGl0bGU7CiAgICAgU3RyaW5nIGxh
c3RIb3ZlckNvbnRlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCmluZGV4IDcyYTNkYmJkN2Y3ZTNjYTQzNGFi
Yzk5ZTU2OTEzZGNiZGU1NTc3YzEuLjA4OTc1YzFkN2EzMDY4MzVhNjMwMWRjZDFlNTNjM2E5MGZl
ZjMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4
dE1lbnVDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudFF0LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29u
dGV4dE1lbnUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENvbnRleHRNZW51
Q2xpZW50UXQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0
IENvbnRleAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29udGV4dE1lbnVDbGll
bnRRdDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYpCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6
OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGll
bnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0LmgKaW5kZXggZThlZmQyODJmYTIyY2I2Y2FkZjhjNTllOWJmYTUxMzhhNDY5N2Q4NS4uMjE5
MjFjNDEzODE5MzBiZmNkZmUxZjAyOWFlMzNiNTg5ZWQ4NDQ2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmgKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmgKQEAgLTQw
LDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxDb250ZXh0TWVudT4g
Y3VzdG9taXplTWVudShQYXNzT3duUHRyPENvbnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENvbnRleHRN
ZW51Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgS1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQg
bG9va1VwSW5EaWN0aW9uYXJ5KEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0
IFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCmluZGV4IDk2MDA5MjJlNWM0ZDIyNjI2ZjlmNGY2MjI4M2FiZjBkYmY1NWI4OGIuLjI5
ZjVkYWFhMTU2YTc2ZTQ2NGEwMThlNTRjZjlmNzliODEwZDljOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCkBAIC03MzMsNyArNzMzLDcgQEAgUVVybCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
bWVkaWFDb250ZW50VXJsQnlFbGVtZW50SWQoUVdlYkZyYW1lQWRhcHRlciogYWRhcHQKIC8vIEFQ
SSBDYW5kaWRhdGU/CiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRBbHRlcm5hdGVI
dG1sKFFXZWJGcmFtZUFkYXB0ZXIqIGFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcmIGh0bWwsIGNvbnN0
IFFVcmwmIGJhc2VVcmwsIGNvbnN0IFFVcmwmIGZhaWxpbmdVcmwpCiB7Ci0gICAgS1VSTCBrdXJs
KGJhc2VVcmwpOworICAgIFVSTCBrdXJsKGJhc2VVcmwpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBj
b3JlRnJhbWUgPSBhZGFwdGVyLT5mcmFtZTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChrdXJsKTsKICAgICBjb25zdCBRQnl0ZUFycmF5IHV0ZjggPSBodG1sLnRvVXRmOCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKaW5kZXggMTk4MWZkMWJkYWU3ZDIyYjliMmFhNDU0ZDc1MzE3M2JhOTE3
NDQzYi4uMzRmYWVjMDcxNjFjNDJmYWQ0MDlmMTFmMTM1ZThiOTMyMWRhNTg1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIFFTdHJpbmcgZHJ0UHJpbnRGcmFtZVVz
ZXJHZXN0dXJlU3RhdHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1cmUgXCIlMVwiIikuYXJnKFFMYXRp
bjFTdHJpbmcoImZhbHNlIikpOwogfQogCi1zdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpLVVJMJiBrdXJsKQorc3RhdGljIFFT
dHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6
VVJMJiBrdXJsKQogewogICAgIGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc0xvY2FsRmls
ZSgpKQogICAgICAgICByZXR1cm4ga3VybC5zdHJpbmcoKTsKQEAgLTM2NCw3ICszNjQsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Qo
KQogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBV
UkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxi
YWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TDogJXMgXG4iLCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KG1fZnJhbWUpKSwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dCh1cmwpKSk7CkBAIC02ODUsNyArNjg1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpw
cmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29u
c3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRUaXRsZShjb25zdCBT
dHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gVXNl
ZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0
b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBhY2NvbW9kYXRlIHRoaXMgb24gaGlz
dG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLApAQCAtNzAwLDcgKzcwMCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0
bGUsIGNvbnN0IEtVUkwmCiB9CiAKIAotU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJB
Z2VudChjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFn
ZW50KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICByZXR1
cm4gbV93ZWJGcmFtZS0+cGFnZUFkYXB0ZXItPnVzZXJBZ2VudEZvclVybCh1cmwpLnJlbW92ZShR
TGF0aW4xQ2hhcignXG4nKSkucmVtb3ZlKFFMYXRpbjFDaGFyKCdccicpKTsKQEAgLTgzNSw3ICs4
MzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRc
biIpOwpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGV0ZWN0
WFNTKGNvbnN0IFVSTCYsIGJvb2wpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKICAgICAgICAgcHJpbnRmKCJkaWREZXRlY3RYU1NcbiIpOwpAQCAtMTE1Myw4ICsxMTUzLDgg
QEAgYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpjYWxsRXJyb3JQYWdlRXh0ZW5zaW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXBhZ2UtPmVycm9yUGFnZUV4dGVu
c2lvbigmb3B0aW9uLCAmb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VS
TCBiYXNlVXJsKG91dHB1dC5iYXNlVXJsKTsKLSAgICBLVVJMIGZhaWxpbmdVcmwob3B0aW9uLnVy
bCk7CisgICAgVVJMIGJhc2VVcmwob3V0cHV0LmJhc2VVcmwpOworICAgIFVSTCBmYWlsaW5nVXJs
KG9wdGlvbi51cmwpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoYmFz
ZVVybCk7CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShvdXRwdXQuY29udGVudC5jb25zdERhdGEoKSwg
b3V0cHV0LmNvbnRlbnQubGVuZ3RoKCkpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwKICAgICBtX3dlYkZyYW1lLT5wYWdlQWRhcHRlci0+ZW1pdERvd25sb2Fk
UmVxdWVzdGVkKHJlcXVlc3QudG9OZXR3b3JrUmVxdWVzdChtX2ZyYW1lLT5sb2FkZXIoKS5uZXR3
b3JraW5nQ29udGV4dCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdo
dCkKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGlu
ZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIGlmICghbV93ZWJG
cmFtZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZwogCiAgICAgLy8gRklYTUU6IFNldCBvdmVycmlkZSBlbmNvZGluZyBpZiB3
ZSBoYXZlIG9uZS4KIAotICAgIEtVUkwgdXJsVG9Mb2FkID0gdXJsOworICAgIFVSTCB1cmxUb0xv
YWQgPSB1cmw7CiAgICAgaWYgKHVybFRvTG9hZC5pc0VtcHR5KCkpCiAgICAgICAgIHVybFRvTG9h
ZCA9IGJsYW5rVVJMKCk7CiAKQEAgLTEzMzgsNyArMTMzOCw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nCiAgICAgcmV0dXJuIGZyYW1lRGF0YS5mcmFtZS5yZWxlYXNlKCk7CiB9CiAKLU9iamVj
dENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0Ojpv
YmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUlu
LCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgLy8gcURlYnVnKCk8
PCIgKysrKysrKysrKysrKysrKyB1cmwgaXMgIjw8dXJsLnN0cmluZygpPDwiLCBtaW1lID0gIjw8
bWltZVR5cGVJbjsKICAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7CkBAIC0xNDYwLDcgKzE0
NjAsNyBAQCBwcml2YXRlOgogfTsKIAogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIC8vIHFE
ZWJ1ZygpPDwiLS0tLS0tIENyZWF0aW5nIHBsdWdpbiBpbiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVQbHVnaW4gZm9yICI8PHVybC5zdHJpbmcoKSA8PCBtaW1lVHlwZTsKICAgICAvLyBxRGVi
dWcoKTw8Ii0tLS0tLVx0IHVybCA9ICI8PHVybC5zdHJpbmcoKTsKQEAgLTE1NjMsNyArMTU2Myw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0
KiBwbHVnaW5XaWRnZXQpCiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxz
ZTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
TmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lk
Z2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IElu
dFNpemUmIHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICByZXR1cm4gY3JlYXRlUGx1Z2luKHBsdWdpblNpemUs
IGVsZW1lbnQsIHVybCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LWph
dmEtYXBwbGV0IiwgdHJ1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDNlZGIzNjU2MmJkZTkxODFmYzhh
NWQyN2YyYWY3MGU1Y2IxZDU3OTkuLjRlNTZjODhiMzg0NGZiYjljY2FkMjMxODVmNTFjOWQwMjk5
M2ViN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3Jt
RWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgIldlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgiCkBAIC0xMDksNyArMTA5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJl
ZGlyZWN0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdChjb25zdCBLVVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJM
JiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKQEAgLTE2Miw4ICsxNjIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRl
bSopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSk7CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKQEAgLTE5MCw5ICsxOTAsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKTsKIAog
ICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJik7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSop
OwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUo
V2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKQEAgLTIwNiwxNCArMjA2LDE0IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5X
aWR0aCwgaW50IG1hcmdpbkhlaWdodCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCos
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2lu
V2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCop
IHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBw
bGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50Kiwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKKyAgICB2aXJ0dWFs
IE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKICAg
ICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3Js
ZCopOwpAQCAtMjI2LDcgKzIyNiw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0g
ICAgY29uc3QgS1VSTCYgbGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJl
cXVlc3RlZFVybDsgfQorICAgIGNvbnN0IFVSTCYgbGFzdFJlcXVlc3RlZFVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdFJlcXVlc3RlZFVybDsgfQogCiAgICAgUVdlYkZyYW1lQWRhcHRlciogd2Vi
RnJhbWUoKSBjb25zdDsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6UGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VU
b1BsdWdpbjsKIAotICAgIEtVUkwgbV9sYXN0UmVxdWVzdGVkVXJsOworICAgIFVSTCBtX2xhc3RS
ZXF1ZXN0ZWRVcmw7CiAgICAgYm9vbCBtX2lzT3JpZ2luYXRpbmdMb2FkOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0LmNwcAppbmRleCBlODlhMTQzYTkwMzk5MjgzNzMwZmYzOTYx
YTI1MmU5N2VlOWZkODc5Li5lNTdhNmEyNjczYzYwYTQ3YzE2M2QwNTg1NGYxZWJiMjgzMWZhZDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcApAQCAtMzUsNyArMzUsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViRnJhbWVBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUVdlYlBh
Z2VBZGFwdGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCmluZGV4IGFmYjFhZGIyODdjNGU3OTkyMDdhY2Ew
ODYzMzA0ZjkyMDY1YjdjZTEuLmI0MWQyNmZiNmU3NDMyN2ZjN2NlNDE0MmM1ZTUyNzM0MWRkNTg5
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0xMDAsMzIgKzEwMCwzMiBAQCBWaXNpdGVkTGlua1N0
cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgp
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vz
c2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqIHBhZ2Us
IFZlY3RvcjxXZWJDbwogCiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5CiAKLWJvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29u
c3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCitib29s
IFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNo
IGhhc2gsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVV
UkwpCiB7CiAgICAgQVNTRVJUKGhhc2gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKaW5kZXggZGFhYjI1OTJlMmEw
ZDFiMjViZWU0M2I0ZjlhZWI4YjEyNzhiMjI3NC4uOTc5MWU2NGY0MThiMDcyYzA5YmQ3MWZmYmYy
YjdkYjg0NzFhMDczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaApAQCAtNTksMTIgKzU5LDEyIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVk
TGlua1N0cmF0ZWd5KCk7CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVz
aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3Rv
cjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtT
dHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBX
ZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpV
UkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwogICAg
IHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViRnJhbWVBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYkZyYW1lQWRhcHRlci5jcHAKaW5kZXggNzYzM2JmNzhkYWNlMGFkYmRiYmJiODQxMDE2MTA1
MGQwZDVhYTQyNS4uZmY2OWJhZGZkNDhkYjBkZDhkNzZlYmIxNDU3YzRkYWExZjk2Y2RhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0
ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdh
dGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5nIFFXZWJGcmFtZUFkYXB0
ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVBZGFwdGVyOjpzZXRDb250
ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBjb25z
dCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJsKTsKKyAgICBVUkwga3Vy
bChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsK
ICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCkpOwog
ICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3NywxNyBAQCB2b2lkIFFX
ZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJheSAmZGF0YSwgY29uc3Qg
UVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGluZyA9IGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmcoYWN0dWFsTWltZVR5cGUp
LCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBlKSwgZW5jb2RpbmcsIFVS
TCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0
KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2b2lkIFFXZWJGcmFtZUFk
YXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3QgUVVybCAmYmFzZVVybCkK
IHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwoYmFzZVVybCk7CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAgICAgY29uc3QgUUJ5dGVB
cnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmNvbnN0
RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiksIFdURjo6U3RyaW5nKCJ1
dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpTdHJpbmcoInV0Zi04Iiks
IFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1
ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC0zNzYsOCArMzc2
LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6a2l0KGNvbnN0IEZyYW1l
KiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJzb2x1dGVVcmwoY29uc3Qg
UVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxk
IGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJMIGFuZCBiYWNrIHRvIHBy
ZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdo
dHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwpOworICAgIC8vIENvbnZl
cnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4
dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwgdmFsaWRhdGVkVXJsID0g
VVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlkKCkgfHwgIXZhbGlkYXRl
ZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0ZWRVcmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5k
ZXggZDI2NjUyNjYxYzIyNDhjYWVlMzYxMDc0ODBkOWI5MTM1YjU4NzEzZC4uNWFhOWJmNjYyNGZl
YmQ5ODA4MmQ2NWY4YzkyZDgzODJmMzUyZmQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMTA2OCw3ICsxMDY4LDcg
QEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2VBZGFwdGVyOjpN
ZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUubG9hZGVyKCkubG9hZEZy
YW1lUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQtPmxpbmtVcmwsICZmcmFt
ZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0ZvcndhcmRMaXN0Ki8gZmFsc2Us
IC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzogewotICAgICAgICBLVVJM
IHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCk7
CisgICAgICAgIFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJl
YWNoYWJsZVVSTCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHVy
bCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpOwogICAgICAgICBvcGVu
TmV3V2luZG93KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL01h
cnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBl
cnMuY3BwCmluZGV4IDM2MGY3YzI1NjkyZmNiODk5NWQzNWU1NWZhY2QyNTE2ZDgyOGMzZTIuLjQy
ZjZkMTliNDE3ZGMxNzBlODQ4ZGNiZWU1NWRmYzFiMmE1MzMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjksNyArMjksNyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksMTIgKzM5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogQ0ZBcnJheUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBlcnM6OmtJVW5rbm93bkFy
cmF5Q2FsbEJhY2tzID0gezAsIElVbmtub3duUmV0YWluQ2FsbGJhY2ssIElVbmtub3duUmVsZWFz
ZUNhbGxiYWNrLCAwLCAwfTsKIENGRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzIE1hcnNoYWxsaW5n
SGVscGVyczo6a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzID0gezAsIElVbmtub3du
UmV0YWluQ2FsbGJhY2ssIElVbmtub3duUmVsZWFzZUNhbGxiYWNrLCAwLCAwfTsKIAotS1VSTCBN
YXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwoQlNUUiB1cmxTdHIpCitVUkwgTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3RyKQogewotICAgIHJldHVybiBLVVJMKEtV
UkwoKSwgU3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikpKTsKKyAgICByZXR1cm4g
VVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNTdHJpbmdMZW4odXJsU3RyKSkpOwogfQogCi1C
U1RSIE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihjb25zdCBLVVJMJiB1cmwpCitCU1RS
IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJl
dHVybiBCU3RyaW5nKHVybC5zdHJpbmcoKSkucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuaAppbmRleCBiMjEzZmI5MGZhZDExZGEwNmI0M2IzMmVjMGY1YTU5
MTg4YmQwODA4Li41MGUyYzY3NzBiNjJmNDczYmY3MGRkNTI1NmUyNzgxNWUyYmUzYTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaApAQCAtMzEsMTQgKzMxLDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwotICAgIGNsYXNzIEtVUkw7
CisgICAgY2xhc3MgVVJMOwogfQogCiBjbGFzcyBNYXJzaGFsbGluZ0hlbHBlcnMKIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6S1VSTCBCU1RSVG9LVVJMKEJTVFIpOwotICAgIHN0YXRp
YyBCU1RSIEtVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHN0YXRpYyBXZWJD
b3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsKKyAgICBzdGF0aWMgQlNUUiBVUkxUb0JTVFIoY29u
c3QgV2ViQ29yZTo6VVJMJik7CiAgICAgc3RhdGljIENGVVJMUmVmIFBhdGhTdHJpbmdUb0ZpbGVD
RlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBXVEY6OlN0cmluZyBGaWxl
Q0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7CiAgICAgc3RhdGljIENGVVJM
UmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGM3MzM3NzU4
OTUwN2JlNmI5ZTVhN2U1NDQ3N2Q5OGU4ZDg5ZjU2ZDIuLmEyYzNmMjcxZGIwZWE1Y2M2NGEzNWY3
MjU3ZGYyYjk3NjU2MDM5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0CiAgICAgdWlEZWxlZ2F0ZS0+Y29udGV4dE1lbnVJdGVt
U2VsZWN0ZWQobV93ZWJWaWV3LCAmc2VsZWN0ZWRJdGVtLCBwcm9wZXJ0eUJhZy5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVy
bCkKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIG1fd2ViVmlldy0+ZG93bmxvYWRVUkwodXJsKTsKIH0KQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IEZy
YW1lKiBmcmFtZSkKIAogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoRGVmaW5pdGVseVByb2Nlc3NpbmdV
c2VyR2VzdHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnVybFNlbGVj
dGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSwgMCwgZmFsc2UsIGZhbHNl
LCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LnVybFNlbGVjdGVkKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygpLCAwLCBmYWxz
ZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmlu
ZGV4IGVkNDFjNTlkMjRlZjc0NWY3MmFmMmFhMjNhMzRlMDczYWQyODRhNjQuLjIxZTI2N2RhMzIw
YjRkYmQwMmQ0MmQ2YTkwYmIzODg1OTYzMzlmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRN
ZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8V2ViQ29yZTo6Q29udGV4dE1lbnU+KTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViQ29yZTo6Q29udGV4dE1l
bnVJdGVtKiwgY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9p
ZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vh
cmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBs
b29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Bl
YWsoY29uc3QgV1RGOjpTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5jcHAKaW5kZXggYTU2NDZmMjU1NzdlNzMwMmQ0NTdmOTg5NDc4MGZhNTdhZGFhODQ4ZS4uOGRk
ZmRmZGY1MTFkYmU0OTJmZDYxYWVhMzRlN2E1ZTYxMTIyMTliZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5v
dGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJW
aWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJ
RklDQVRJT05TKQogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJEZXNrdG9wTm90aWZpY2F0
aW9uc0RlbGVnYXRlOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oU2NyaXB0RXhlY3V0aW8K
IHsKIH0KIAotTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdlYkRlc2t0b3BOb3RpZmlj
YXRpb25zRGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihjb25zdCBLVVJMJiB1cmwpCitOb3RpZmlj
YXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZTo6
Y2hlY2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGludCBvdXQgPSAwOwogICAg
IEJTdHJpbmcgb3JnKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKS0+dG9TdHJpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90
aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggYjZmOWMyMThmNDMwNDkwN2Y2
NGI1Yzk2MjRkZmI5YmNjMzA5Mzk4MC4uZDcwZmI4ZDkzZGIxZGQzZWM0NWRmYmM0M2I2MWFjYjEy
YjIyMDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGUuaApAQCAtMzgsNyAr
MzgsNyBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25QcmVzZW50ZXI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZSA6IHB1YmxpYyBX
ZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgewpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2s+KTsK
ICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90
aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihjb25zdCBLVVJMJik7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gY2hl
Y2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgaGFzTm90aWZp
Y2F0aW9uRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBhYmE3NGVjMGRjOGQwMzQ0
MmZkNjhiMTUxNjE4YmEyM2FhZjdmYjQ1Li4wY2RmZDg0NjUxZDIzN2E1ZjY4NzM3YWExNmUzOTY1
ODJjNjY4YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1l
KHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUg
ZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVybCwgZG91YmxlIGRlbGF5
LCBkb3VibGUgZmlyZURhdGUpCiB7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUt
PndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWRE
ZWxlZ2F0ZTsKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5k
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50KHdlYlZpZXcpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgS1VSTCYgaW5zZWN1cmVVUkwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiBpbnNl
Y3VyZVVSTCkKIHsKICAgICBDT01QdHI8SVdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9y
aWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShvcmlnaW4pOwogCkBAIC04
NjEsNyArODYxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVD
b250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEsKICAgICBmcmFtZUxvYWREZWxl
Z2F0ZVByaXYyLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmlldywgd2ViU2VjdXJpdHlPcmln
aW4uZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1Mo
Y29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RY
U1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogcHJvcG9nYXRlIGNhbGwgaW50
byB0aGUgcHJpdmF0ZSBkZWxlZ2F0ZS4KIH0KQEAgLTk3OSw3ICs5NzksNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgpOwogfQogCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0
aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAgICAgQ09NUHRy
PElXZWJIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKQEAgLTEwNTYsNyArMTA1Niw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQo
Ym9vbCkKIHsKIH0KIAotU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPndlYlZpZXcoKS0+dXNlckFn
ZW50Rm9yS1VSTCh1cmwpOwogfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xsaW5nKi8sIGludCAvKm1hcmdp
bldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdodCovKQogewogICAgIFJlZlB0cjxGcmFtZT4gcmVz
dWx0ID0gY3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVsZW1lbnQsIHJlZmVycmVyKTsKQEAg
LTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
CitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29u
c3QgVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgRnJhbWUqIGNvcmVG
cmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CkBAIC0xMDk3
LDcgKzEwOTcsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbgogICAgIHJldHVybiBjaGlsZEZy
YW1lLnJlbGVhc2UoKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5
cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFn
ZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29u
dGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9
CkBAIC0xMTE2LDcgKzExMTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgIEFTU0VS
VChmcmFtZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKIAogICAgIGlmICghcGx1Z2lu
Vmlldy0+cGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewotICAgICAgICBLVVJMIHBsdWdpblBhZ2VV
UkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKKyAgICAgICAgVVJMIHBs
dWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKICAgICAg
ICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVT
VFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAg
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5Q
YWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpAQCAtMTE2MCw3ICsxMTYw
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBs
dWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS0+
cGx1Z0luRmFpbGVkV2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgpLCBnZXRXZWJEYXRhU291
cmNlKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
IHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQor
UGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRN
YW51YWxseSkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygp
OwogCkBAIC0xMjE3LDkgKzEyMTcsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRp
cmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9tYW51YWxM
b2FkZXIgPSBzdGF0aWNfY2FzdDxFbWJlZGRlZFdpZGdldCo+KHBsdWdpbldpZGdldCk7CiB9CiAK
LVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxl
dFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxl
bWVudCwgY29uc3QgS1VSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCitQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3Qg
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVS
TCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7Ci0gICAgUmVmUHRyPFBsdWdpblZpZXc+IHBs
dWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6
ZSwgZWxlbWVudCwgS1VSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9u
L3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAgUmVmUHRyPFBsdWdpblZpZXc+IHBsdWdpblZp
ZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwgcGx1Z2luU2l6ZSwgZWxl
bWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZh
LWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBwbHVnaW4gY2FuIGJlIGxv
YWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkgJiYgcGx1Z2lu
Vmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQ5OTE4ZGM3OTg5OTY1
M2U0MWFhMDhhOTNlNTMwNTg4ZWE3NGExODMuLmFlNDI4ZjUzMWViMmQ2MDBlYjEyNTllNzg1ZTNk
NmRhYmIzNWU4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50
ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpVUkwmLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsK
QEAgLTEzNSw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnlJdGVtRm9yUGFnZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJD
b3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9u
VG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklE
RTsKQEAgLTE3NywxNSArMTc3LDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5D
YWNoZVBhZ2UoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICBjb25zdCBXVEY6OlN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYs
IGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0
cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVj
cmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2
b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBP
VkVSUklERTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRn
ZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNv
cmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdl
YkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHBy
b3RlY3RlZDoKICAgICBPd25QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByaXZhdGU+IG1fcG9s
aWN5TGlzdGVuZXJQcml2YXRlOwogCiBwcml2YXRlOgotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJp
bmcmIHJlZmVycmVyKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKICAg
ICBXZWJIaXN0b3J5KiB3ZWJIaXN0b3J5KCkgY29uc3Q7CiAKICAgICBXZWJGcmFtZSogbV93ZWJG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDAxYmI4YjA3NjE4MzlkYTlmMzlhNDM1NDAx
M2FmZTMwNTU4MWE5NjguLmFkYzM3ZjI2M2QxNDM1ZmY4MDI4NzZhOTI3MjQ0NmRhYzM2Yjk5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtODgsMzIgKzg4LDMyIEBAIFZpc2l0ZWRMaW5rU3Ry
YXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgp
CiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAg
ICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmws
IHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBA
QCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3Jl
OjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAgIH0KIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3Qg
S1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0
ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGFiMTRhZmI5YTg3ZWEzNWI5Zjc3YWM2
NDM0OTljNTAwM2VhODBkZTMuLjA5YTgxZDExM2NiYzY5YTY1YjY4NmIzMGViNDcxZmMwOWY0NmFh
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01MywxMiArNTMsMTIgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3Ry
YXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQotICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLgpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6
UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3Ry
aW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJM
LCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoKTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggZmZjYWE4NTYwZmU1YjVjMDQw
YTA4Mjk5ZjUzNDdjYmY1MTA2ODIwYS4uM2FhZTg1MmVlZDNhNjc2NDBlYTMxNzY1ZmVjMmNmMzI5
NzcyN2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTQsNyArMjU0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291cmNlOjpwYWdlVGl0bGUo
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6OnVucmVhY2hhYmxlVVJM
KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkKIHsKLSAgICBLVVJMIHVucmVh
Y2hhYmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CisgICAgVVJMIHVucmVhY2hh
YmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAgICAgQlN0cmluZyB1cmxTdHJp
bmcoKExQT0xFU1RSKXVucmVhY2hhYmxlVVJMLnN0cmluZygpLmNoYXJhY3RlcnMoKSwgdW5yZWFj
aGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkpOwogCiAgICAgKnVybCA9IHVybFN0cmluZy5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYjhmYWJlMjhiYTY4YWU4MzU1
MzQwOGMwNzJiMDFmNDkzZTdmOTVkNC4uM2QxYjJkNmI4YjRhMDVhZWU5OTRkOTkxZjk1MDE4MTJh
MTE0MmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtODIsNyArODIsNyBAQCBX
ZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUgogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAotV2ViRG93
bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZShjb25zdCBLVVJMJiB1cmwsIElXZWJE
b3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKK1dlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3Jl
YXRlSW5zdGFuY2UoY29uc3QgVVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKICAgICBXZWJEb3dubG9hZCogaW5zdGFuY2UgPSBuZXcgV2ViRG93bmxvYWQoKTsKICAg
ICBpbnN0YW5jZS0+QWRkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQuaAppbmRleCA3YTY2ZGYx
NjQ0YTIyMDYyODczZDBhOGVlMTIxZGU5ZDYwNjAwY2MxLi4yMjU0ZGI5NjIzOWI3OTcyMTU2MzJm
OTRlYjllM2YzOGE1ODliYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3du
bG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKQEAgLTM4LDcgKzM4
LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAg
ICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC01MiwxMyArNTIsMTMg
QEAgY2xhc3MgV2ViRG93bmxvYWQKICNlbmRpZgogewogcHVibGljOgotICAgIHN0YXRpYyBXZWJE
b3dubG9hZCogY3JlYXRlSW5zdGFuY2UoY29uc3QgV2ViQ29yZTo6S1VSTCYsIElXZWJEb3dubG9h
ZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVhdGVJbnN0YW5jZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIHN0YXRpYyBXZWJE
b3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2ViRG93bmxvYWQqIGNyZWF0
ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7CiAgICAgdm9pZCBpbml0
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJEb3dubG9hZERlbGVnYXRl
Kik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBJV2ViRG93bmxvYWREZWxl
Z2F0ZSopOworICAgIHZvaWQgaW5pdChjb25zdCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWRE
ZWxlZ2F0ZSopOwogICAgIH5XZWJEb3dubG9hZCgpOwogcHVibGljOgogICAgIC8vIElVbmtub3du
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDRkNTlmODg5OTUxMGM1
Yzg4ODk4MzY3YTAwODZjODAwMTA5MzRkNzkuLjAwODI2YWE1MjUyMWRmNGJjMGI5NDU1NzEzMWIw
MzZlYzBiZjRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0x
MDEsNyArMTAxLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGMKICAgICBDRlJlbGVhc2UoY29u
bmVjdGlvbik7CiB9CiAKLXZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCit2b2lkIFdlYkRvd25sb2FkOjppbml0KGNv
bnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgbV9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6
c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxl
Z2F0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1
cmwuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCBkMTlm
NDIwNGM1MjhiNDBjOTZmZjZiNjY2MTg1MTBlYjRmZDUzMjY2Li45OGU4NWIxNDdmNWYwYjUyYjNk
NTFiNDdkOWYwMjEzYzcyNTUzMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRs
ZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGMKICAgICBzdGFydCgp
OwogfQogCi12b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgSVdlYkRvd25s
b2FkRGVsZWdhdGUqIGRlbGVnYXRlKQordm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBVUkwm
IHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIG1fZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAKaW5kZXggNWMwZGZhMWRjMTJhYTY4N2M3MjY2NWUwN2U3MTIyYjU3NzI4OGIyOC4uNjE5NWZi
ZmQzOTQ0M2Q4NTZiNTkyZTdlN2I2MWI0NjY2Y2UzYWFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyT2JqZWN0
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IGFiNzE5NDVmMWQ1NjYwYjI2NWJkNTMzYmE0NzMzYzgyMjU1MDYzMTIuLjJhMWMwODRlNTAyZGIz
YjIwN2I3YjdlZGVjNTA3NWE2MmUzYTQxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTU2
NywxMSArNTY3LDExIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCCiAgICAgU3RyaW5nIGVuY29k
aW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1l
KSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBiZSB1c2luZyBNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0tVUkwgaGVyZSwKLSAgICAvLyBidXQgdGhhdCB3b3VsZCB0dXJuIGEg
bnVsbCBCU1RSIGludG8gYSBudWxsIEtVUkwsIGFuZCB3ZSBjcmFzaCBpbnNpZGUgb2YKLSAgICAv
LyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgS1VSTCBpbiBjb25zdHJ1Y3RpbmcgdGhlIFJlc291
cmNlUmVxdWVzdC4KLSAgICBLVVJMIGJhc2VLVVJMID0gS1VSTChLVVJMKCksIFN0cmluZyhiYXNl
VVJMID8gYmFzZVVSTCA6IEwiIiwgU3lzU3RyaW5nTGVuKGJhc2VVUkwpKSk7CisgICAgLy8gYnV0
IHRoYXQgd291bGQgdHVybiBhIG51bGwgQlNUUiBpbnRvIGEgbnVsbCBVUkwsIGFuZCB3ZSBjcmFz
aCBpbnNpZGUgb2YKKyAgICAvLyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgVVJMIGluIGNvbnN0
cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgorICAgIFVSTCBiYXNlS1VSTCA9IFVSTChVUkwo
KSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJpbmdMZW4oYmFzZVVSTCkp
KTsKIAotICAgIEtVUkwgZmFpbGluZ0tVUkwgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tV
UkwoZmFpbGluZ1VSTCk7CisgICAgVVJMIGZhaWxpbmdLVVJMID0gTWFyc2hhbGxpbmdIZWxwZXJz
OjpCU1RSVG9LVVJMKGZhaWxpbmdVUkwpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
YmFzZUtVUkwpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGRhdGEsIG1pbWVU
eXBlU3RyaW5nLCBlbmNvZGluZ1N0cmluZywgZmFpbGluZ0tVUkwpOwpAQCAtNzAxLDExICs3MDEs
MTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cHJvdmlzaW9uYWxEYXRh
U291cmNlKAogICAgIHJldHVybiAqc291cmNlID8gU19PSyA6IEVfRkFJTDsKIH0KIAotS1VSTCBX
ZWJGcmFtZTo6dXJsKCkgY29uc3QKK1VSTCBXZWJGcmFtZTo6dXJsKCkgY29uc3QKIHsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNvcmVGcmFtZSkKLSAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuaAppbmRleCA2Mjcw
ZDc4MThlMmZmYTNhMTdjOGUxMDA2OTM3NDU0Y2E1MDg0NjdjLi4zMzY0Y2Q2ZTE1YzUzMTkwM2Mz
M2E3MDFjMDAzN2I4ODRlOGZlMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgKQEAgLTM0LDcgKzM0LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0FkanVzdFZpZXdTaXplT3JOb3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KIAogI2luY2x1ZGUgPFdURi9S
ZWZQdHIuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAgSFJFU1VMVCBtYXRjaExh
YmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50IGNMYWJlbHMsIElET01F
bGVtZW50KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAgICBIUkVTVUxUIGNhblBy
b3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwogCi0gICAgV2ViQ29yZTo6S1VSTCB1
cmwoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7CiAKICAgICBXZWJWaWV3
KiB3ZWJWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKQEAgLTM0
MSw3ICszNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgV2ViRnJhbWVQcml2YXRlOwogICAg
IFdlYkZyYW1lUHJpdmF0ZSogICAgZDsKICAgICBib29sICAgICAgICAgICAgICAgIG1fcXVpY2tS
ZWRpcmVjdENvbWluZzsKLSAgICBXZWJDb3JlOjpLVVJMICAgICAgIG1fb3JpZ2luYWxSZXF1ZXN0
VVJMOworICAgIFdlYkNvcmU6OlVSTCAgICAgICBtX29yaWdpbmFsUmVxdWVzdFVSTDsKICAgICBi
b29sICAgICAgICAgICAgICAgIG1faW5QcmludGluZ01vZGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+IG1fcGFnZVJlY3RzOwogICAgIGludCBtX3BhZ2VIZWlnaHQ7ICAgLy8gaGVpZ2h0
IG9mIHRoZSBwYWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAK
aW5kZXggNTNlMWQ1NDhhYzM4YzkyZjE4ZmE2YmRhZWY4MGUyN2EwMjAyNTRlOC4uN2U2MzcwN2M0
ZDI5YmRmNmQ4YmFiNTFjODBmMzM2ODNmMDYzOTkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5j
cHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAtNTMwLDcgKzUz
MCw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbShJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5
LCBib29sIGRpc2NhcmREdXBsaWNhdGUsIGJvb2wqCiAgICAgcmV0dXJuIGhyOwogfQogCi12b2lk
IFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9vbCBpbmNy
ZWFzZVZpc2l0Q291bnQpCit2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3
YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCkKIHsKICAgICBJV2ViSGlzdG9yeUl0
ZW0qIGVudHJ5ID0gbV9lbnRyaWVzQnlVUkwuZ2V0KHVybC5zdHJpbmcoKSkuZ2V0KCk7CiAgICAg
aWYgKGVudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXggM2M3NWExODBkYzQxNGQ0ZTk1
YWZjNTZiYjk5MGRjYWE1ZDI0OWNjYy4uZmY3NzdjZjNlNjE2MzU4NGZkMzczMmYzYjM5OTVlOGFk
MjFlYjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEtV
Ukw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKIH0KIApAQCAtMTExLDcg
KzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkhpc3RvcnkKICAgICBzdGF0aWMgV2ViSGlz
dG9yeSogc2hhcmVkSGlzdG9yeSgpOwotICAgIHZvaWQgdmlzaXRlZFVSTChjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXVEY6OlN0cmluZyYgaHR0
cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCk7CisgICAg
dm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiB0
aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFpbHVyZSwgYm9v
bCBpbmNyZWFzZVZpc2l0Q291bnQpOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtzVG9QYWdlR3Jv
dXAoV2ViQ29yZTo6UGFnZUdyb3VwJik7CiAKICAgICBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBp
dGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggOGJmZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2
NTI0MzIxYi4uNDUwOGNlNDI2NGVlMmUzYTIxZDEyYmJiZWNiMWRkMjU3NzE3YzcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09NUHRyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDk2NDJlNjg4OWIw
NjBmMzgyMTZkMGI4NzRmYzM4YTZhYWY2YzFmYTcuLjdkY2FiYzQyNDBmNmZiMzhlY2FmNzFhM2Q1
NGM3NGZlYTEyM2M0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVz
dC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11
dGFibGVVUkxSZXF1ZXN0Ojppbml0V2l0aFVSTCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCggCiAgICAgLyogW3JldHZhbF1b
b3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVscGVy
czo6S1VSTFRvQlNUUihtX3JlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgKnJl
c3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKG1fcmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjIyLDcgKzIyMiw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OnRpbWVvdXRJ
bnRlcnZhbCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OlVSTCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJl
c3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihtX3JlcXVlc3QudXJsKCkpOwor
ICAgICpyZXN1bHQgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlVSTFRvQlNUUihtX3JlcXVlc3QudXJs
KCkpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5k
ZXggY2NmZDk1ZDRiYzJlNDVhMWQ3OWZiM2RiODI4MzFlYjZlYTZjM2VlMi4uZTQ2OTkxN2QzZTIy
ZWQzZDYwMTQ3MTQ1MGY2NTUxNGYyYjEyMGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmNw
cApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gV2ViUmVz
b3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5h
bWUpCiAgICAgOiBtX3JlZkNvdW50KDApCiAgICAgLCBtX2RhdGEoZGF0YSkKICAgICAsIG1fdXJs
KHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGQ4ZmI0MzNlMTg1YjBmMTY1YzFkYTY2
YmZjNmFkNmU2MTVkZjE2YTkuLjc5MGJhNDc0MmEzOTNiZDE1MDVhNWVlNGIxODg2YjkzMmNjYTZj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2ViUmVz
b3VyY2UgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUmVz
b3VyY2UqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CiBwcm90ZWN0
ZWQ6Ci0gICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1lKTsKKyAgICBXZWJSZXNv
dXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291cmNlKCk7CiAKIHB1Ymxp
YzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBVTE9ORyBtX3JlZkNv
dW50OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3Vy
bDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV1RGOjpTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBXVEY6OlN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAgV1RGOjpTdHJpbmcgbV9m
cmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggZjBjNDMwMjIw
MGU5NWFiMWY1MTc2YzNiNzQwNmMxZDE5Y2Y3YWQ5ZC4uZmUzMzJhYmVlODA5YzUyMmM2MDE3MDcw
ZWM4YjRiMjg1YTk0MzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAt
MzgsNyArMzgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8c2hsb2JqLmg+CkBAIC0y
MjYsNyArMjI2LDcgQEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0
YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3Bv
bnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2Vi
SFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZShLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly8iKSwgU3RyaW5nKCks
IDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vIiksIFN0
cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCAxYzhjNTY5NDljMzljZDQ0MGVmNTVkYjhkNGMyODZi
MWUzNTdmNGI2Li4wNzljNDAyNjA4Y2VlMTgwYTQ1NjhiNTE5N2NmZmNjMGRmYjUzNWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTI5
LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUv
QlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
VVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDEyNDI5Y2FjYTBkMmQ4MzI3YjM4ODViNjE1Nzc1Yjk3YWIzNTE5MDIuLjU2MzcxYWUzZWY0
OGJhNTJmODkyYjIxMDNiZGUwMTVlNTI5MWYwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0y
MjQsOSArMjI0LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJpbmcoQlNUUiBic3RyKQog
ICAgIHJldHVybiBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBLVVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5saW5lIFVSTCB0b1VSTChC
U1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0cmluZyhic3RyKSk7Cisg
ICAgcmV0dXJuIFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQogCiBjbGFzcyBQcmVmZXJl
bmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2ViTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXIgewpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9u
U3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7CiB9CiAKLWNvbnN0IFN0
cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJMJikKK2NvbnN0IFN0cmlu
ZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQogewogICAgIGlmIChtX3Vz
ZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJBZ2VudEN1c3RvbTsKQEAg
LTQ4NTUsNyArNDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAgICAgc2V0dGluZ3Muc2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAgICBzdHIuY2xlYXIoKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihL
VVJMKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTCgp
KTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFja2dyb3VuZHMoJmVuYWJs
ZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYwLDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdv
cmxkKiBpV29ybGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCks
IHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclNj
cmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvVVJMKHVybCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0cmluZ1ZlY3Rvcih3aGl0
ZWxpc3RDb3VudCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0Q291bnQsIGJs
YWNrbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3Rpb25U
aW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0RG9jdW1lbnRTdGFydCA6
IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbmplY3RJbkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlwdFdv
cmxkKiBpV29ybAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQod29ybGQtPndvcmxkKCks
IHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VHcm91cC0+YWRkVXNlclN0
eWxlU2hlZXRUb1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhzb3VyY2UpLCB0b1VSTCh1
cmwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvU3RyaW5nVmVj
dG9yKHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3RD
b3VudCwgYmxhY2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbmplY3RJbkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3VwTmFtZSwgSVdlYlNjcmlw
dFdvcmxkKiBpV29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndvcmxk
KCksIHRvS1VSTCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQod29ybGQtPndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBA
IC02NDI3LDcgKzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92ZVVzZXJTdHlsZVNoZWV0
RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQqCiAgICAgaWYgKCFwYWdl
R3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVz
ZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tVUkwodXJsKSk7CisgICAg
cGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3b3JsZC0+d29ybGQoKSwg
dG9VUkwodXJsKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1NDksNyArNjU0OSw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZpc2l0ZWRVUkxzLCB1bnNp
Z25lZCB2aXNpdGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXZvaWQgV2ViVmll
dzo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJWaWV3Ojpkb3dubG9hZFVS
TChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxlZ2F0ZSdzIGpvYiB0byBy
ZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhlcndpc2UgaXQgd2lsbCBi
ZQogICAgIC8vIGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuaAppbmRleCBhYjI3MTg3MmQwMDMwNGFkZjM2NzYwMmJmNTNlNDc2NTkzN2QxM2QxLi5jYWQ4
NWIxMjJlZmZmODIwZDNlNzdhOWIwMDE5NTViMjg0NjdjZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5oCkBA
IC05MDgsNyArOTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVuaWVudCB0byBiZSBhYmxl
IHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5IG1vdmVtZW50IHRvIHRo
ZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudEZvcktVUkwoY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50
Rm9yS1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBzdGF0aWMgYm9vbCBjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC05NDcs
NyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3QoV1BBUkFNLCBMUEFSQU0s
IExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1QIEFjY2Vzc2libGVPYmpl
Y3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQsIHZvaWQqKiBwcE9iamVj
dCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3JhcGhpY3NMYXllckNoYW5n
ZXNTb29uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmNwcAppbmRleCBkZGE0ZDI3YTk5OWM5ODBk
ZTk4YTc1YTZlZTc3ODVjZTY3ZDlhYmZiLi43YjVkNjFmMGNkNGY0MmE1YmU3N2Y3MTM1MTg2YTJk
NTA2NGI5OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
dm9pZCBDb250ZXh0TWVudUNsaWVudFdpbkNFOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUl0ZW0qLCBjb25zdCBDb24KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lk
IENvbnRleHRNZW51Q2xpZW50V2luQ0U6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3Zv
aWQgQ29udGV4dE1lbnVDbGllbnRXaW5DRTo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKaW5kZXggOGNk
MTk1MTM5NGQ2MWViMGUxNGYzYWQxNmY2ZDE4NDhjYmQxNDg2Ny4uZGI3NTZmM2QyZTVhZTUzOGYy
MTZiYzYxODQxMzU5NzkyOWIyOWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb250ZXh0
TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRNZW51Pik7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBk
b3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29weUlt
YWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYpOwogICAgIHZpcnR1
YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7CiAgICAgdmly
dHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5jcHAKaW5kZXggODUzYjFiYjVmMDYzNjExMzk3YTk3NDkxNmEzZjJiMTNiYjcz
ZmFmZS4uNmQwMGIwYmM0N2Q4N2Q1ODQxMzJiZDM4MWNhZTQzZmZjYWFkZTg5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6On5GcmFtZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3RyaW5nIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmluZyBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2MiwxMiArMTYyLDEyIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxvYWRlcigpLnBvbGljeUNo
ZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQogCi1QYXNzUmVmUHRyPFdp
ZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUm
LCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKK1Bhc3NSZWZQdHI8
V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpCiB7CiAgICAgcmV0
dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQp
CiB7CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVs
ZW1lbnQsIHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWln
aHQpOwpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpy
ZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAgICAgICAgbV9oYXNT
ZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFw
cGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwog
fQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpvYmplY3RDb250
ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAg
cmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlw
ZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0yNjIsMTIgKzI2MiwxMiBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wp
Cit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBi
b29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcsNyArMzE3LDcgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91Ymxl
LCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRXaW5DRTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpzZXRUaXRsZShjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyArNjMxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpCiAK
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJD
bGllbnRXaW5DRTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewotICAgIHJldHVybiBGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1c2VyQWdlbnQoS1VSTCgp
KSk7CisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5DRTo6Y3JlYXRlKG1fZnJh
bWUsIHVzZXJBZ2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmgKaW5kZXggOTdkYzk1MDQwZWNiOGEwZjM1MDNmMTA5NTFhMDQzYzQyMzQ4
N2I0NS4uYjEwZjAyYjg4ZTA4OWQ3ZWVjYTE5YzlkZTIxOTg3NzM5YzIwYWY1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdp
bkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFdpbkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpL
VVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlLCBkb3VibGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xMDUs
MTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGlt
YXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jlc3NG
aW5pc2hlZE5vdGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+Jiwg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29s
KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxs
b3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlZlY3Rv
cjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpT
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFt
VmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBw
bGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0
b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFU
eXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAgIHZpcnR1YWwgdm9pZCBk
b2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wpOwogCi0g
ICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNo
b3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0
Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3Qg
V1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMp
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAK
QEAgLTEzNiw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdl
YkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQsOSArMTYzLDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7
CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERp
cmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNh
dmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAg
dmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3Jl
OjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAppbmRleCA3MzNhNGVl
MTNkYWVjMDI2ZGFjM2M0YzFmYWVmOWUxMzdmY2RkZTdmLi4yZGM5OWNkZjY2MjdiNzFhNTVmYjg1
ZjVlMDViNjBiNGRhYmE1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcApAQCAtODQs
MzIgKzg0LDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
OjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJu
IFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29r
aWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8oY29uc3QgUGFnZSosIFZl
Y3RvcjxQbHVnaW5JbmZvPiYgb3V0CiAgICAgfQogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtV
UkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6
aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25z
dCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0
ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmggYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKaW5kZXggMTIwODgxMWM0MjBjOWM2
OGY2NzlkOGJkODE1MWY2MDBjY2MwMjhlMS4uOTI1ZjBlODExZTIyZjA1MzEyZjJkNjI0MmFjODgx
MGNiMzliZTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaApAQCAtNTIsMTIgKzUyLDEyIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVh
dGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZp
cnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8v
IC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwg
VmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpB
dG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQ
YWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6
QXRvbWljU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmNwcApp
bmRleCAzNjUwZDgzZjAxZTAyMDk0M2U3MGExZDYzODNmN2ViYjllMTFkMDc5Li5mNTUzMTVkNWFi
MGEzZmUxYmIyNGJjYzFhZTM0MTg2OTUzOGQ3M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5jcHAK
QEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlZpZXc6OmNsZWFudXAoKQogICAgIFVucmVnaXN0
ZXJDbGFzcyhrV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgV2ViQ29yZTo6aW5zdGFuY2VIYW5kbGUo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYlZp
ZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAvKmFsbG93c1Njcm9s
bGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAg
ICBGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luY2UvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKaW5kZXggYjQ0
MDI1MTUyNTI5MTExZmNhZjIxNTIyZjE0ZTVkYzE5MTZhNDNkMy4uOGI2MDY1MWVkMTE3NjliODQ2
ZGU4MTg4YjY4NzAzODIzYTcwYTU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9X
ZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3LmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogY2xhc3MgRnJhbWVWaWV3OwogY2xhc3Mg
SFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGZyYW1lUmVjdChSRUNUKiByZWN0KSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFdURjo6U3RyaW5nJiwg
Ym9vbCwgaW50LCBpbnQpOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViQ29yZTo6SFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBib29sLCBpbnQsIGludCk7
CiAKICAgICAvLyBKYXZhU2NyaXB0IERpYWxvZwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0
KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCmlu
ZGV4IDFlNjBkNDAxYmVkN2RlNTM3MzA3NjMwYWEzMDUyYzEyZDk2ZDI5OGYuLjg1MDc2OGNlZmE3
NTlmODY0YWU2NWRjNjlmOWYwMTA4NjJiOGMwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNw
cApAQCAtNDcsNyArNDcsNyBAQCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpOZXR3b3JrQmxvYlJlZ2lz
dHJ5KCkKIHsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IEtVUkwmIHVy
bCwgUGFzc093blB0cjxCbG9iRGF0YT4gZGF0YSwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94
RXh0ZW5zaW9uPj4mIG5ld1NhbmRib3hFeHRlbnNpb25zKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5l
Y3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBkYXRhLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgbmV3U2FuZGJveEV4dGVuc2lvbnMpCiB7
CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb25zLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkp
OwogCkBAIC02NywxMSArNjcsMTEgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBBU1NF
UlQoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmdldChjb25uZWN0aW9uKS5jb250YWlucyh1cmwpKTsK
ICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwogICAgIGlmIChtYXBJdGVyYXRvciA9PSBt
X2Jsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKSkKLSAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxLVVJMPigpKS5pdGVyYXRvcjsK
KyAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlv
biwgSGFzaFNldDxVUkw+KCkpLml0ZXJhdG9yOwogICAgIG1hcEl0ZXJhdG9yLT52YWx1ZS5hZGQo
dXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKQordm9pZCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCkKIHsKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBzcmNVUkwp
OwogICAgIFNhbmRib3hFeHRlbnNpb25NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3NhbmRib3hFeHRl
bnNpb25zLmZpbmQoc3JjVVJMLnN0cmluZygpKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBOZXR3
b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MqIGNvbm5lY3QKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24p
LT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lz
dGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJs
b2JVUkwodXJsKTsKICAgICBtX3NhbmRib3hFeHRlbnNpb25zLnJlbW92ZSh1cmwuc3RyaW5nKCkp
OwpAQCAtOTgsOCArOTgsOCBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUAogICAgIGlmICghbV9i
bG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEhhc2hTZXQ8S1VSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9IG1fYmxvYnNGb3JDb25u
ZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlOwotICAgIGZvciAoSGFzaFNldDxLVVJMPjo6
aXRlcmF0b3IgaXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigpLCBlbmQgPSBibG9ic0Zv
ckNvbm5lY3Rpb24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKKyAgICBIYXNoU2V0PFVS
TD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVj
dGlvbiktPnZhbHVlOworICAgIGZvciAoSGFzaFNldDxVUkw+OjppdGVyYXRvciBpdGVyID0gYmxv
YnNGb3JDb25uZWN0aW9uLmJlZ2luKCksIGVuZCA9IGJsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKTsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVy
QmxvYlVSTCgqaXRlcik7CiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbnMucmVtb3ZlKCppdGVy
KTsKICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpj
b25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlAKICAg
ICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7CiB9CiAKLWNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRi
b3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2NvbnN0IFZlY3RvcjxSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNhbmRib3hFeHRlbnNp
b25zKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBtX3NhbmRib3hFeHRl
bnNpb25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAppbmRleCA2
ZDcxYmJmYzk2MzEyZmE1ZWRlNmE2NTcyODA1MTE3N2VhOGUwMDkzLi43MzMwNmYyN2RjZTlhMmJm
MzM2ZTY0OTAxNzM1NWY1NmJiOGQ3MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApAQCAtMjgs
NyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEJMT0IpICYmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkxIYXNoLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkxI
YXNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgogCkBAIC00NywxMyArNDcsMTMgQEAgcHVibGljOgogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnko
KTsKICAgICBzdGF0aWMgTmV0d29ya0Jsb2JSZWdpc3RyeSYgc2hhcmVkKCk7CiAKLSAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiwgY29uc3QgVmVjdG9y
PFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBzcmNVUkwpOwotICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVS
TChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAg
ICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9u
Pj4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdl
YkNvcmU6OlVSTCYpOwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxvYlJlZ2lzdHJ5KCk7CkBA
IC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4+IFNhbmRib3hFeHRlbnNpb25NYXA7CiAgICAg
U2FuZGJveEV4dGVuc2lvbk1hcCBtX3NhbmRib3hFeHRlbnNpb25zOwogCi0gICAgdHlwZWRlZiBI
YXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpL
VVJMPj4gQmxvYkZvckNvbm5lY3Rpb25NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpVUkw+PiBCbG9iRm9yQ29u
bmVjdGlvbk1hcDsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Jsb2JzRm9yQ29ubmVjdGlv
bjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA4OWQ0ZWFmYjM3NGI0
OTRlNGRiM2VkYTUyZTM2MWNhZDFkNGZhYmVmLi4wM2FmMWM0ZmYyMThmOWRhZmZlNmIyZTI1ZmY1
OWIxNDNhYjBkMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xODIsMzcg
KzE4MiwzNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbQogICAgIGxvYWRlci0+ZGlkQ29udmVy
dEhhbmRsZVRvRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3Ry
aW5nJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9y
YWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00o
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShz
dG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBib29sJiByZXN1
bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3RvcmFnZVNlc3Np
b24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgU3Ry
aW5nJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omdl
dFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKICAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3Jh
Z2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3Vs
dCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tp
ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVs
ZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3Rv
cmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKIHsKICAgICBWZWN0b3I8UmVm
UHRyPFNhbmRib3hFeHRlbnNpb24+PiBleHRlbnNpb25zOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBjb3VudCA9IGRhdGEuc2FuZGJveEV4dGVuc2lvbnMoKS5zaXplKCk7IGkgPCBjb3VudDsgKytp
KSB7CkBAIC0yMjMsMTIgKzIyMywxMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBCbG9iUgogICAgIE5l
dHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwsIGRh
dGEucmVsZWFzZURhdGEoKSwgZXh0ZW5zaW9ucyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBLVVJMJiBzcmNVUkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkK
IHsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhp
cywgdXJsLCBzcmNVUkwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCkKIHsKICAg
ICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS51bnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1
cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZmJmZDgyMzE1MTZlMmJlYjY4
NDU0ZjVhN2M4Mzg4YjYyNmM2NGEwMy4uZDIyZGQ1MzAwNjhhM2U2Zjc2NTEwZWE5MWI5ODRiNWNj
OWE5OTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03MywyMiArNzMsMjIgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMmLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5Pik7
CiAKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIp
OwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKTsKKyAgICB2b2lkIGNyb3Nz
T3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKHVp
bnQzMl90IHJlc291cmNlTG9hZFByaW9yaXR5KTsKICAgICB2b2lkIHNldFNlcmlhbExvYWRpbmdF
bmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2
NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjb29raWVzRW5hYmxl
ZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQpOwotICAgIHZvaWQgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgU3Ry
aW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29r
aWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYgcmVzdWx0KTsKKyAgICB2
b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOwotICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJM
RnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCk7
CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAg
IFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWZhZTFhMjMwZmFmMzRkN2Fj
OGI4MjM0NmNjNjU0ZjQ0M2U0ZDk0NS4uYTVmN2NjNTJjMGYyNzExM2JmNGU3ZGRmZjg0ZjkzMGIx
ZGViNWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTM1LDE2ICszNSwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93bmxvYWRJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UpCiAKLSAgICBDb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
V2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVybCkgLT4gKFdURjo6U3Ry
aW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwsIFdURjo6
U3RyaW5nIGNvb2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6S1VSTCB1cmwp
IC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdlYkNv
cmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAgIEdldFJhd0Nvb2tpZXMo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZpcnN0UGFydHksIFdl
YkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
KQotICAgIERlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6
OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQorICAgIENvb2tpZXNGb3JET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29y
ZTo6VVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKKyAgICBTZXRDb29raWVzRnJvbURP
TShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBX
ZWJDb3JlOjpVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0Vu
YWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0
eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAgICBDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQor
ICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpV
UkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFdURjo6VmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQogCi0gICAg
UmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJLaXQ6OkJsb2JSZWdpc3RyYXRp
b25EYXRhIGRhdGEpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpLVVJMIHVy
bCwgV2ViQ29yZTo6S1VSTCBzcmNVUkwpCi0gICAgVW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6
S1VSTCB1cmwpCisgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6
QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKKyAgICBSZWdpc3RlckJsb2JVUkxGcm9tVVJMKFdl
YkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCisgICAgVW5yZWdpc3RlckJsb2JV
UkwoV2ViQ29yZTo6VVJMIHVybCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkxODY5N2ExMzFjNmNhYjc5MDFh
MmU5ZmZjM2UzNTkzZDE5YjZmZTIuLmZmNDI3NDNlZGU3MjBiN2E4MzFjNzU2MTdhZWU1ZWE0ZmFj
MDAzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkZXIoUGFzc1JlZlB0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkCiAgICAgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygp
OwogfQogCi1Ib3N0UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9y
VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgQ3JlYXRlSG9zdFBvbGljeSBjcmVhdGVIb3N0
UG9saWN5KQorSG9zdFJlY29yZCogTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZv
clVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ3JlYXRlSG9zdFBvbGljeSBjcmVhdGVIb3N0
UG9saWN5KQogewogICAgIGlmICghdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAg
ICAgcmV0dXJuIG1fbm9uSFRUUFByb3RvY29sSG9zdC5nZXQoKTsKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2FkZXIoTmV0d29ya1Jl
c291cmNlTG9hZGVyKiBsb2FkZXIpCiAgICAgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJl
Y3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJl
ZGlyZWN0VVJMKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJl
ZGlyZWN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHJlZGlyZWN0VVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpyZWNlaXZlZFJlZGlyZWN0IGxvYWRlciBvcmlnaW5hbGx5IGZvciAnJXMnIHJlZGly
ZWN0ZWQgdG8gJyVzJyIsIGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHJlZGlyZWN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlci5oCmluZGV4IGZiNDEwMjc5N2VjNGIwNTdlMzk3MzRjODlhZmE5MjBiMTU1ODQ3MDIu
Ljg0MGEyNzgyOWI1MDU4NzgzYmQwNGI4NjMyMzBjMWNhNWZiMTA0YTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxl
ZCB3aXRoaW4gdGhlIE5ldHdvcmtQcm9jZXNzIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgd2hlbiBh
IHJlc291cmNlIGxvYWQgaGFzIGZpbmlzaGVkLgogICAgIHZvaWQgc2NoZWR1bGVSZW1vdmVMb2Fk
ZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyKik7CiAKLSAgICB2b2lkIHJlY2VpdmVkUmVkaXJlY3Qo
TmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwp
OworICAgIHZvaWQgcmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVl
c3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5ID0gV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
UHJpb3JpdHlWZXJ5TG93KTsKIAogICAgIC8vIEZvciBOZXR3b3JrUHJvY2VzcyBzdGF0aXN0aWNz
IHJlcG9ydGluZy4KQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRmluZE9ubHkK
ICAgICB9OwogICAgIAotICAgIEhvc3RSZWNvcmQqIGhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAgSG9zdFJlY29yZCogaG9z
dEZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0UG9saWN5ID0gRmluZE9ubHkp
OwogICAgIAogICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIHZv
aWQgcmVxdWVzdFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21h
Yy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCAwODg0NTJlMDM2NTliODliMzMxNDQzMGIyOGZl
NTdhZjk4MDVkYzQzLi5lMTk3ZmYzOTZmNzBhNzdhOTU2MmQzNWFiNTNkMmM0NDUzNWNjMDJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nl
c3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVt
UHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1ByCiAg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJveHlTZXR0aW5ncyA9IFtOU011dGFibGVEaWN0aW9u
YXJ5IGRpY3Rpb25hcnldOwogCiAgICAgaWYgKCFodHRwUHJveHkuaXNOdWxsKCkpIHsKLSAgICAg
ICAgS1VSTCBodHRwUHJveHlVUkwoS1VSTCgpLCBodHRwUHJveHkpOworICAgICAgICBVUkwgaHR0
cFByb3h5VVJMKFVSTCgpLCBodHRwUHJveHkpOwogICAgICAgICBpZiAoaHR0cFByb3h5VVJMLmlz
VmFsaWQoKSkgewogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5n
RnJvbVdlYkNvcmVTdHJpbmcoaHR0cFByb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0cmluZyAq
KWtDRk5ldHdvcmtQcm94aWVzSFRUUFByb3h5XTsKICAgICAgICAgICAgIGlmIChodHRwUHJveHlV
UkwuaGFzUG9ydCgpKSB7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lz
dGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3RyaW5nJiBodHRwc1By
CiAgICAgfQogCiAgICAgaWYgKCFodHRwc1Byb3h5LmlzTnVsbCgpKSB7Ci0gICAgICAgIEtVUkwg
aHR0cHNQcm94eVVSTChLVVJMKCksIGh0dHBzUHJveHkpOworICAgICAgICBVUkwgaHR0cHNQcm94
eVVSTChVUkwoKSwgaHR0cHNQcm94eSk7CiAgICAgICAgIGlmIChodHRwc1Byb3h5VVJMLmlzVmFs
aWQoKSkgewogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJv
bVdlYkNvcmVTdHJpbmcoaHR0cHNQcm94eVVSTC5ob3N0KCkpIGZvcktleTooTlNTdHJpbmcgKilr
Q0ZOZXR3b3JrUHJveGllc0hUVFBTUHJveHldOwogICAgICAgICAgICAgaWYgKGh0dHBzUHJveHlV
UkwuaGFzUG9ydCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWQzOGY2ZWJmMmI0MjNhNjY1NGVjZTcz
MTZlZTJlYzMwMjJkMDQwNC4uNmMwNTNjMTFhOTgzNzM0OTBkMzQ5Njc2NTgwMzFiZjVlMWZhNGQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBT
dHJpCiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVzcG9uc2VVUkxTdHJpbmcsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKQogewotICAgIG1fcGx1Z2luLT5z
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBy
ZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5
cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHN0cmVhbUlELCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyks
IHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmlu
ZygpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByZXNwb25zCiAgICAgaWYgKG1f
cGx1Z2luQ2FuY2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwg
bWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlVVJMU3RyaW5n
KSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycywgU3Ry
aW5nKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmlu
ZGV4IGQ1YTg5ODVjMDI1OTllM2U0YjBjMWJmNTYxYjc1MzE1OTFhOWYxZmQuLjVkMTFkOTg2MzJm
NjNjMTlmY2ZkY2YzZmQ3YWVmMmM3NDA3MDBkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMTg5LDExICsxODks
MTEgQEAgc3RhdGljIHZvaWQgY2FyYm9uV2luZG93SGlkZGVuKFdpbmRvd1JlZiB3aW5kb3cpCiBz
dGF0aWMgYm9vbCBvcGVuQ0ZVUkxSZWYoQ0ZVUkxSZWYgdXJsLCBpbnQzMl90JiBzdGF0dXMsIENG
VVJMUmVmKiBsYXVuY2hlZFVSTCkKIHsKICAgICBTdHJpbmcgbGF1bmNoZWRVUkxTdHJpbmc7Ci0g
ICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5vcGVuVVJMKEtVUkwodXJsKS5zdHJpbmco
KSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpz
aGFyZWQoKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMsIGxhdW5jaGVkVVJMU3Ry
aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFsYXVuY2hlZFVSTFN0cmlu
Zy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5jaGVkVVJMID0gS1VSTChQ
YXJzZWRVUkxTdHJpbmcsIGxhdW5jaGVkVVJMU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmxlYWtSZWYo
KTsKKyAgICAgICAgKmxhdW5jaGVkVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbGF1bmNoZWRV
UkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxpY2F0aW9uICpyZXBsYWNl
ZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9uc18KICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5sYXVuY2hBcHBsaWNhdGlv
bkF0VVJMKEtVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRzKSkgeworICAgIGlmIChQbHVnaW5Q
cm9jZXNzOjpzaGFyZWQoKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVSTCh1cmwpLnN0cmluZygp
LCBhcmd1bWVudHMpKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgICplcnJvciA9
IG5pbDsKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggMTE0Yzc0MTkwNTBmOGUzZWZhYmJhMjBhMWVlYjMzOTU2
NjU3MWNjYi4uZjY2MTA4MDQ4NGE4NWNlNjQ3NDQwMDdkZGM3YjlhOTdhNDdkZmY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3Qu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC00
MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJRCgpCiAKIFdLVVJMUmVx
dWVzdFJlZiBXS1VSTFJlcXVlc3RDcmVhdGVXaXRoV0tVUkwoV0tVUkxSZWYgdXJsKQogewotICAg
IHJldHVybiB0b0FQSShXZWJVUkxSZXF1ZXN0OjpjcmVhdGUoS1VSTChLVVJMKCksIHRvSW1wbCh1
cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYlVSTFJlcXVl
c3Q6OmNyZWF0ZShVUkwoVVJMKCksIHRvSW1wbCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3RSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAK
aW5kZXggYzU0OTE4NDBiZGEwNzE5OWEwZjZkN2NkYjk3NDY3MmE3YzM3ZWFmMy4uNDdhZmNhNDBh
ZDQ5ZWM0NTczNTA3ZmIwNDI5ZDRmNTg2YjUwMWMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlIDxX
ZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2Yv
V0tVUkxDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAK
aW5kZXggZjA0ZWNmZDI2YzQ3NmYxYTJkMjM5YjllOWY3M2VkMDEyOWYwZWQ5MC4uNDc1NjRlYmJi
YTc1NThhNWMxYTEyYWQ5MGM2ODAzNzhkZThlOTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9jZi9XS1VSTENGLmNwcApAQCAtNTQsOCArNTQsOCBAQCBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAg
ICAvLyBXZSBmaXJzdCBjcmVhdGUgYSBDU3RyaW5nIGFuZCB0aGVuIGNyZWF0ZSB0aGUgQ0ZVUkwg
ZnJvbSBpdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBDRlVSTCBpcyBzdG9yZWQgaW4gCiAg
ICAgLy8gVVRGLTggd2hpY2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xp
ZW50cyBtaWdodCBleHBlY3QuCiAKLSAgICAvLyBUaGlzIHBhdHRlcm4gb2YgdXNpbmcgVVRGLTgg
YW5kIHRoZW4gZmFsbGluZyBiYWNrIHRvIExhdGluMSBvbiBmYWlsdXJlIG1hdGNoZXMgS1VSTDo6
Y3JlYXRlQ0ZTdHJpbmcgd2l0aCB0aGUKLSAgICAvLyBtYWpvciBkaWZmZXJuY2UgYmVpbmcgdGhh
dCBLVVJMIGRvZXMgbm90IGRvIGEgVVRGLTggY29udmVyc2lvbiBhbmQgaW5zdGVhZCBjaG9wcyBv
ZmYgdGhlIGhpZ2ggYml0cyBvZiB0aGUgVVRGLTE2CisgICAgLy8gVGhpcyBwYXR0ZXJuIG9mIHVz
aW5nIFVURi04IGFuZCB0aGVuIGZhbGxpbmcgYmFjayB0byBMYXRpbjEgb24gZmFpbHVyZSBtYXRj
aGVzIFVSTDo6Y3JlYXRlQ0ZTdHJpbmcgd2l0aCB0aGUKKyAgICAvLyBtYWpvciBkaWZmZXJuY2Ug
YmVpbmcgdGhhdCBVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJzaW9uIGFuZCBpbnN0ZWFk
IGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKICAgICAvLyBjaGFyYWN0ZXIg
c2VxdWVuY2UuCiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHRvSW1wbChVUkxSZWYpLT5zdHJpbmco
KS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3F0
L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9x
dC9RdEZpbGVEb3dubG9hZGVyLmNwcAppbmRleCBjM2IyZThkMGVlMjJhNDc3NTdkM2MwM2RhOGNh
ZGQzMGVkZGYyZWU3Li5mMTZiMGMyZTVkMDljODA3YmNlZmJjZTM1MjU2YzFhMTIzOTMzMWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3F0L1F0RmlsZURvd25s
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvcXQvUXRGaWxl
RG93bmxvYWRlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUVN0cmluZyBRdEZpbGVEb3dubG9hZGVy
OjpkZXRlcm1pbmVGaWxlbmFtZSgpCiAKICAgICBRU3RyaW5nIGZpbGVuYW1lQ2FuZGlkYXRlID0g
ZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5nOjpmcm9tTGF0aW4xKG1f
cmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7CiAgICAgaWYgKGZpbGVu
YW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGt1cmwgPSBtX3JlcGx5LT51
cmwoKTsKKyAgICAgICAgVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsKICAgICAgICAgZmlsZW5h
bWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3VybC5sYXN0UGF0aENvbXBv
bmVudCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggMTFlMGE0MWQ3NDVhODJlZWRmMzVmNjUy
YzQyYjI1MDdmMGE3ZjdlMS4uZDBlZWJiNWRlNTJiMzI5MDM4ZTAxZjVmN2U4NjhiNmU1ODRmZTE1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25s
b2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rv
d25sb2FkU291cC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogCiAgICAgICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAg
ICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEtVUkwg
dXJsID0gcmVzcG9uc2UudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJsID0gcmVzcG9uc2UudXJs
KCk7CiAgICAgICAgICAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOwogICAgICAgICAgICAgdXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5h
bWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlv
bkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkvQmxvYlJlZ2lzdHJhdGlv
bkRhdGEuY3BwCmluZGV4IGEwZGQ0ZGM5YWM5NjZjOWM4YzA4MGZhYTcxN2M5ODZkMmUxYjlmY2Yu
LjQxMzBiMTUyZDM0NjRhNjI5MGE1ODFlMjEwZTA2MGRiYzc3NGUzOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRpb25EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0cmF0aW9uRGF0YS5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEJsb2JSZWdpc3RyYXRpb25EYXRhOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBCbG9iUmVnaXN0cgogICAgICAgICAgICAg
U3RyaW5nIHVybDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXN1bHQubV9kYXRhLT5hcHBl
bmRCbG9iKEtVUkwoS1VSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgICAgICBy
ZXN1bHQubV9kYXRhLT5hcHBlbmRCbG9iKFVSTChVUkwoKSwgdXJsKSwgb2Zmc2V0LCBsZW5ndGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KaW5kZXgg
MjcyNmYxY2NjNTQ4ZDZjYzRlNjFhMzQ1MjU0MDkwYzNlYTQzYjQ1My4uNzk4M2E3N2ZkMzFiN2Uy
NjNiOWU0ZGU5ZTJjN2NmYWI2NDA4MGU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21h
Yy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2ltcG9ydCA8V2ViQ29yZS9L
VVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJB
cmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IGQ4NTVlM2Q5Y2NjNjFiYzdkNjQ0ODg3NTUzNmFjNWJj
M2U2MWNkODkuLjA4M2IyMTA4MzI4YmNjYWJhZjU5ZDU2M2E1ZWI0NzI5NjcyYzI3M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZl
UmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8V2ViQXJjaGl2ZVJlc291cmNlPiBX
ZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvCiB9CiAKIFdl
YkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFdlYkRhdGEqIGRhdGEsIGNvbnN0
IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZykKLSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEtPnNpemUoKSksIEtVUkwo
S1VSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJpbmcoKSkpCisgICAgOiBt
X2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6
VVJMKCksIFVSTCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmluZygpKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRl
eCBhYjY5ZmY2MDA1NzE4YjIxNjkyNDBmYjIzNWEwY2Q5YjQwN2FlZmY5Li43NWQyYjU3NzkzZmE0
MmQ1NTM0ZTYzMGE5NTIwMDA3YmM2Y2Q0MWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTQwNyw3ICs0MDcsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
UmVzb3VyY2VSZQogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcXVlc3Quc2V0
VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgp
LCB1cmwpKTsKIAogICAgICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShodHRwTWV0aG9kKSkKQEAgLTQzMiw3ICs0MzIsNyBAQCBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
UmVzb3VyY2VSZQogICAgICAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eUZvckNvb2tpZXMpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKEtV
UkwoS1VSTCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOworICAgICAgICByZXF1ZXN0LnNldEZp
cnN0UGFydHlGb3JDb29raWVzKFVSTChVUkwoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpKTsKIAog
ICAgICAgICByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIH0KQEAgLTUwMyw3ICs1MDMs
NyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIHJlc3BvbnNlLnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSk7CisgICAgICAgIHJlc3Bv
bnNlLnNldFVSTChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIGludDMyX3QgaHR0cFN0YXR1
c0NvZGU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0YXR1c0NvZGUpKQpAQCAt
MTAzMywxNyArMTAzMywxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ1Nlc3Npb24+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBEcmFnU2Vzc2lvbiYgcgogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8S1VSTD46OmVuY29kZShBcmd1bWVudEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IEtVUkwmIHJlc3VsdCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxVUkw+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVUkwmIHJlc3VsdCkKIHsK
ICAgICBlbmNvZGVyIDw8IHJlc3VsdC5zdHJpbmcoKTsKIH0KICAgICAKLWJvb2wgQXJndW1lbnRD
b2RlcjxLVVJMPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgS1VSTCYgcmVzdWx0
KQorYm9vbCBBcmd1bWVudENvZGVyPFVSTD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFVSTCYgcmVzdWx0KQogewogICAgIFN0cmluZyB1cmxBc1N0cmluZzsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHVybEFzU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
c3VsdCA9IEtVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmxBc1N0cmluZyk7CisgICAg
cmVzdWx0ID0gVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsQXNTdHJpbmcpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBXZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTEwMyw3ICsxMTAzLDcg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlVzZXJTY3JpcHQ+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3IKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJj
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2
MzBiNmI2Y2M2NGE2MDg5ODQ3Y2NkMDU0OGJiMjI3NmUwNDlhNDNlLi4zYjBiYTlkZjNkY2U2MjQ2
Y2E1ZTg3MWFlMGM0ZjlkMDcyNWMwODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgS2V5
ZnJhbWVWYWx1ZUxpc3Q7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xh
c3MgTm90aWZpY2F0aW9uOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKICAgICBjbGFzcyBS
ZXNvdXJjZUVycm9yOwpAQCAtMjU1LDkgKzI1NSw5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6RHJhZ1Nlc3Npb24+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RHJhZ1Nlc3Npb24mKTsKIH07CiAKLXRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewotICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OktVUkwmKTsKK3RlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VVJMPiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpVUkwmKTsKIH07CiAK
IHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA5YzM1
MTUwNzE3ZmE1OGU1ZDc0NTRmMzQwNTc3MWFhNzg4YTZmNTA1Li5jOWQ4NGMwNDJlZGViYjBiNmY1
ZjgxNzFhM2ZiODIwNzQ2ODU3NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRl
c3RSZXN1bHQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRU
ZXN0UmVzdWx0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IDI3YTc0NGUyMTVmYjM2ZmQ2
Njc2OTQ4M2UyZWQ3ODU0MWQ2ZDIxYzAuLmQ3NjE2ZDJlZDMxMWRhOTJhMzM4ZjZhMTkxMWY2NGVl
OGVkNTg2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZp
bmUgV2ViVVJMX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPFdlYkNvcmUv
S1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJVUkw+IGNyZWF0ZShjb25zdCBXZWJVUkwqIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmVVUkwpCiAgICAgewotICAgICAgICB1c2luZyBXZWJDb3JlOjpLVVJMOworICAgICAgICB1c2lu
ZyBXZWJDb3JlOjpVUkw7CiAKICAgICAgICAgQVNTRVJUKGJhc2VVUkwpOwogICAgICAgICBiYXNl
VVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIEtVUkwqIGFic29sdXRlVVJMID0g
bmV3IEtVUkwoKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxhdGl2ZVVSTCk7CisgICAg
ICAgIFVSTCogYWJzb2x1dGVVUkwgPSBuZXcgVVJMKCpiYXNlVVJMLT5tX3BhcnNlZFVSTC5nZXQo
KSwgcmVsYXRpdmVVUkwpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVVJMKGFk
b3B0UHRyKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkwtPnN0cmluZygpKSk7CiAgICAgfQpAQCAt
OTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBXZWJVUkwoUGFzc093
blB0cjxXZWJDb3JlOjpLVVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorICAg
IFdlYlVSTChQYXNzT3duUHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAgICAgICwgbV9wYXJzZWRV
UkwocGFyc2VkVVJMKQogICAgIHsKQEAgLTEwMCwxMSArMTAwLDExIEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fcGFyc2VkVVJMID0gV1RGOjphZG9wdFB0cihuZXcgV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpL
VVJMKCksIG1fc3RyaW5nKSk7CisgICAgICAgIG1fcGFyc2VkVVJMID0gV1RGOjphZG9wdFB0cihu
ZXcgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBtX3N0cmluZykpOwogICAgIH0KIAogICAg
IFN0cmluZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIE93blB0cjxXZWJDb3JlOjpLVVJMPiBtX3Bh
cnNlZFVSTDsKKyAgICBtdXRhYmxlIE93blB0cjxXZWJDb3JlOjpVUkw+IG1fcGFyc2VkVVJMOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVx
dWVzdC5jcHAKaW5kZXggNDhhY2YzNzliZWMyY2U2MjU2MzliYWZiNmNmMThjNWIyYWNlMjEwZC4u
MzA3MmY5NWU5ZjhlZmY1MzFiMzQ0NmZlYjViMzlmMDQzMjc2YmM0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcApAQCAtMTYsNyArMTYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViVVJMUmVx
dWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8
V2ViVVJMUmVxdWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QodXJs
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgKaW5kZXggNGY4YWVmZmZj
MzVlN2RkYWVjYTJjYWE2MWY0MTdjZjk3NWJiZjYzNi4uOWYyZjRmNzA1YzliNzVhOTYzY2MxMjgx
OWE5YmVlOTczMjhiNmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVS
TFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5oCkBA
IC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJVUkxSZXF1ZXN0
IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVVSTFJlcXVlc3Q+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVUkxSZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNy
ZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlVS
TFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5oCmluZGV4IDVjMDhiODBmOWE1OGY3MWIzNjdhNmRhNGY4YTlkNTg3ZDMyOWE4YTUuLmIz
M2Y0OTc3MTZkZGYxOTdmYTUyMGNhNjFkMTBiNzhjMGMwODQ4NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50
VVJMUGF0dGVybi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3QgeyByZXR1cm4gbV9wYXR0
ZXJuLmhvc3QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNVUkwoY29uc3QgU3RyaW5n
JiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdlYkNvcmU6OktVUkwoV2Vi
Q29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsgfQorICAgIGJvb2wgbWF0Y2hlc1VSTChjb25z
dCBTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoZXMoV2ViQ29yZTo6
VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7IH0KICAgICBib29sIG1hdGNoZXNT
dWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNoU3ViZG9tYWlucygpOyB9
CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3Bh
dHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENv
ZGVyc0d0ay5jcHAKaW5kZXggZjdlNzZlNzY0OGFiZmYwNDk1MzQwZTExZjJkMDUwMmYxNjY2NjI5
Ni4uNmUwMWY0OGU5ZWRlOGVlMzA2ZTY2OWQwNzc4NGEwYWZiZGU2MDNjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgUmVmUHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAgICBTdHJpbmcgdXJsOwogICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSwgU3RyaW5nKCkpOworICAg
ICAgICBkYXRhLT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJpbmcoKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBoYXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9Db29raWVTdG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tp
ZVN0b3JhZ2VTaGltLmNwcAppbmRleCA3ZTZhOGMxMzM3OGQ5YWM4NTBiYjBlOTY4NzBhM2M1NWFi
MWVkMGJjLi4wMGJiMTRiZWEwMjc4ZDE1YzQzZGRlMWVjOWVkNWVmNjg5NWJjZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcApAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLSNp
bmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RhdGlj
IENGRGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJlcXVlc3RIZWFkZXJGaWVs
ZHNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVm
IGluUmVxdWVzdFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAgICBLVVJMIGZpcnN0UGFy
dHlGb3JDb29raWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llc1VSTDsKICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNVUkws
IGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAgICByZXR1cm4gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0d29ya1JlcGx5RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAppbmRl
eCA1MTY0MWVkYjRlYmE1MGEyNGJlN2UzNDY1YTcyMjkwMjUzMWM1Mjk1Li5iODM1YWYyYjJiZThl
NTFlZjczMjFkZjgyNTBlZjcyNGI5MWE0ZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUg
IlF0TmV0d29ya1JlcGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNRdC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRNZW1v
cnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlIDxRTmV0
d29ya0FjY2Vzc01hbmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWE1ZDRmNWEyMzdkOTk5NGVi
MmRlZjBkOTYyNjdiYjM3MDkuLjM4NGJkMzc0MmQ5OTQ5YTkwYjNmNGQ1ZWY0NmY4MDA3YjQ5ZThl
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVSSVJlcXVlc3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3JlcXVl
c3Rfc2V0X3VyaShXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBjaGFyKiB1cmkpCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOwogICAg
IGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsKIAotICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAg
ICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJpdi0+cmVz
b3VyY2VSZXF1ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGI4Y2EwMDJmMTQ3
ZjMxMGJmMTlhOGJhMTBmODJmNzIzZDI3NmU4ZTYuLmFhMjU0ZDgxM2U0OTY3NTlkNTNlNWYzYzdl
OTcyMTQ1NzRlMzg4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgUV9RKFFRdWlja1dlYlZpZXcpOwog
Ci0gICAgUVVybCB1cmwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHdlYlBhZ2VQcm94
eS0+dXJsQXRQcm9jZXNzRXhpdCgpKSk7CisgICAgUVVybCB1cmwoVVJMKFdlYkNvcmU6OlBhcnNl
ZFVSTFN0cmluZywgd2ViUGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkpKTsKICAgICBxV2Fy
bmluZygiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVz
Jy4iLCBxUHJpbnRhYmxlKHVybC50b1N0cmluZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKIAog
ICAgIHBhZ2VFdmVudEhhbmRsZXItPnJlc2V0R2VzdHVyZVJlY29nbml6ZXJzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVl
c3QuY3BwCmluZGV4IDVkOWM0YjJlYTNjYzRkMzg4YzM0YjdjOTU4NWM3NjdjOTJjOGRlNjguLmMw
MjZkNzc0NDY0YWM5Zjc0Y2EwOWFkNjRjMTRlMGI1NGFlMDYzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3Bw
CkBAIC03NCw3ICs3NCw3IEBAIHNpemVfdCBIVFRQUmVxdWVzdDo6cGFyc2VSZXF1ZXN0TGluZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhCiB7CiAgICAgU3RyaW5n
IHVybDsKICAgICBzaXplX3QgcmVzdWx0ID0gcGFyc2VIVFRQUmVxdWVzdExpbmUoZGF0YSwgbGVu
Z3RoLCBmYWlsdXJlUmVhc29uLCBtX3JlcXVlc3RNZXRob2QsIHVybCwgbV9odHRwVmVyc2lvbik7
Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBtX3VybCA9IFVSTChVUkwoKSwg
dXJsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgSFRUUFJl
cXVlc3Q6OkhUVFBSZXF1ZXN0KCkKIHsKIH0KIAotSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBIVFRQVmVyc2lvbiB2
ZXJzaW9uKQorSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1l
dGhvZCwgY29uc3QgVVJMJiB1cmwsIEhUVFBWZXJzaW9uIHZlcnNpb24pCiAgICAgOiBtX3VybCh1
cmwpCiAgICAgLCBtX2h0dHBWZXJzaW9uKHZlcnNpb24pCiAgICAgLCBtX3JlcXVlc3RNZXRob2Qo
cmVxdWVzdE1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaAppbmRleCA3MTllMjQxMTRkYTA2MDk3MmNiZWRjZDM1
NjFmNDVhZGI1ZmJmMGY0Li5lY2RhMTRlOTliYzA1MTM5Zjg0NTM5ODYzMGM2NmMzNzU5NDI5MWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hU
VFBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9IVFRQUmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0hU
VFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJzZXJzLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQsMTUgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEhUVFBSZXF1ZXN0PiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBWZXJzaW9uIHZlcnNpb24pIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0TWV0aG9kLCB1cmwsIHZlcnNpb24p
KTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgV2ViQ29yZTo6SFRU
UFZlcnNpb24gdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhUVFBSZXF1ZXN0KHJlcXVl
c3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJl
cXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAgdmlydHVhbCB+SFRUUFJlcXVl
c3QoKTsKIAogICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0TWV0aG9kOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0
aG9kKSB7IG1fcmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQogCi0gICAgV2ViQ29yZTo6S1VSTCB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0VVJMKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAgIFdlYkNvcmU6OlVSTCB1cmwoKSBj
b25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMKGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hh
cj4mIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtNjIsMTQgKzYyLDE0IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1ZXN0KCk7Ci0gICAgSFRUUFJlcXVl
c3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgV2Vi
Q29yZTo6SFRUUFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVz
dE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOwogCiAg
ICAgLy8gUGFyc2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RMaW5lKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAg
c2l6ZV90IHBhcnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJp
bmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJzZVJlcXVlc3RCb2R5KGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBtX3VybDsKKyAg
ICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6SFRUUFZlcnNpb24gbV9odHRwVmVy
c2lvbjsKICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgIFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAgbV9oZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKaW5kZXgg
Y2JiZDczZjY2NjBjYmE3MzUyODg1NDMyMTUyY2JhZmI1MGMwYWQ2ZC4uY2U1MzY4NGFiMzQ4NDA4
ZmI5ZjBjZTY0NDI4NDVlODFkMDQwZjBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpzZW5kTWVzc2Fn
ZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rpb24sCiB2b2lkIFdlYklu
c3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tl
dFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHJl
cXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMgb25seSB0aGUgcGF0aCBl
eHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAvLyBhbmQgS1VSTCBpcyBw
b29yIGF0IHBhcnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0IHRoZSBpbnRlcmVzdGlu
ZyBwYXJ0cyBtYW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQgcGFyc2luZyBpbmNv
bXBsZXRlIFVSTHMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRzIG1hbnVhbGx5Lgog
ICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6ZV90IHBhdGhFbmQgPSBw
YXRoLmZpbmQoJz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3VuZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuY3BwCmluZGV4
IDg2Y2JiYWRiZGVjNzQzODk1ZjkzODZiMjQwMjIzOWM2MzJkMTE4YjAuLjUxY2ZlZTlkNmY4YWJk
ZmI0M2YyOWExZTIzNmQxZDFlMmFmMDJlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAtMjksNyArMjksNyBAQAog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVkZSAiUGx1Z2luTW9kdWxl
SW5mby5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8YWxn
b3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAtMTU4LDcgKzE1OCw3IEBA
IFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1Z2luRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdpbk1vZHVsZUluZm8oKTsK
IH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihjb25zdCBLVVJMJiB1cmwp
CitzdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIFN0cmluZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1lID0gdXJsLmxhc3RQYXRo
Q29tcG9uZW50KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5J
bmZvU3RvcmU6OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKQog
CiAjZW5kaWYKIAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW4o
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5EYXRhOjpBbGxvd2VkUGx1
Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZv
U3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVVJMJiB1cmwsIFBsdWdp
bkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlwZXMpCiB7CiAgICAgbG9h
ZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDljZWE3YjlhYjFkODdiYWI3
MWU2MzNhNTk4ZmFiMWRlMTA0NmFlLi5jZWU3MTg0ZGQ2MDVlNGUxMzQ4YTM3MzA5MjE5NmM5NWQz
OTg2NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5JbmZvU3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2lu
RGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFz
cyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRoYXQgY2FuIGhhbmRsZSB0
aGUgZ2l2ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5cGUgaXMgbnVsbCwgdGhl
IGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1c2VkIHRvIGluZmVyIHRo
ZQogICAgIC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1lVHlwZSB3aWxsIGJlIGZp
bGxlZCBpbiB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1Z2luTW9kdWxlSW5mbyBm
aW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3JlOjpQbHVnaW5EYXRhOjpB
bGxQbHVnaW5zKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW4oU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsb3dlZFBs
dWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lucyk7CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBnaXZlbiBidW5kbGUgaWRl
bnRpZmllci4KICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlN
YWMubW0KaW5kZXggYWMzZGRhOGUyN2YxZWViNzI4Y2Y4MjMwNzAzOWRkZTM1MzdkNDQ4OC4uN2Iw
YzE0YjMwYTJkM2Y1NzY1YWQzMTA4ZWM0NWNkZGE3YTg5OWNkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1By
b3h5TWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29y
ZS9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgog
I2ltcG9ydCA8Y3J0X2V4dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC00NjIs
MTAgKzQ2MiwxMCBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6b3BlblVSTChjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgYm9vbCYgcmVzdWx0LCBpbnQzMl90JgogCiAgICAgcmVzdWx0ID0gdHJ1
ZTsKICAgICBDRlVSTFJlZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMgPSBMU09wZW5DRlVSTFJl
ZihLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpLmdldCgpLCAm
bGF1bmNoZWRVUkwpOworICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVmKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxhdW5jaGVkVVJMKTsKIAog
ICAgIGlmIChsYXVuY2hlZFVSTCkgewotICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IEtVUkwo
bGF1bmNoZWRVUkwpLnN0cmluZygpOworICAgICAgICBsYXVuY2hlZFVSTFN0cmluZyA9IFVSTChs
YXVuY2hlZFVSTCkuc3RyaW5nKCk7CiAgICAgICAgIENGUmVsZWFzZShsYXVuY2hlZFVSTCk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKaW5kZXggZjJiODEzNTc2MjY1Mzg1M2FlMzkxZDMwMjEwN2JjY2QwYWU1MWMyYS4uMmQyZjNi
MzRmMmUxOTE2M2JmMDRhNWI0MTQ0M2E0MjY2MjFlMTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMTYsOSArMzE2LDkgQEAgYm9v
bCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkK
IAogc3RhdGljIGJvb2wgaXNNYWluSW5zcGVjdG9yUGFnZShjb25zdCBXZWJJbnNwZWN0b3JQcm94
eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAg
IC8vIFVzZSBLVVJMIHNvIHdlIGNhbiBjb21wYXJlIGp1c3QgdGhlIHBhdGhzLgotICAgIEtVUkwg
aW5zcGVjdG9yVVJMKEtVUkwoKSwgd2ViSW5zcGVjdG9yUHJveHktPmluc3BlY3RvclBhZ2VVUkwo
KSk7Ci0gICAgS1VSTCByZXF1ZXN0VVJMKEtVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51cmwo
KSk7CisgICAgLy8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFyZSBqdXN0IHRoZSBwYXRocy4KKyAg
ICBVUkwgaW5zcGVjdG9yVVJMKFVSTCgpLCB3ZWJJbnNwZWN0b3JQcm94eS0+aW5zcGVjdG9yUGFn
ZVVSTCgpKTsKKyAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwgdG9JbXBsKHJlcXVlc3RSZWYpLT51
cmwoKSk7CiAKICAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0
VVJMU2NoZW1lQXNMb2NhbChpbnNwZWN0b3JVUkwucHJvdG9jb2woKSkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXJQcm94eS5jcHAKaW5kZXggMjg4YTczNmZiMDMyNzQzMDI4MThmNzZjMzFhMmJjNzI5NDA3MjVh
NC4uNTZkMjAxYWYwM2VmZjc0OWFhMDFmYzE4Y2VlZTEyOGM5YWY1NTBkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiSW1tdXRhYmxlQXJy
YXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRhYmxlQXJyYXkqIGZpbGVV
UkxzQXJyYXkpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgV2ViVVJMKiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5LT5hdDxXZWJVUkw+KGkpOwogICAgICAg
ICBpZiAod2ViVVJMKSB7Ci0gICAgICAgICAgICBLVVJMIHVybChLVVJMKCksIHdlYlVSTC0+c3Ry
aW5nKCkpOyAKKyAgICAgICAgICAgIFVSTCB1cmwoVVJMKCksIHdlYlVSTC0+c3RyaW5nKCkpOyAK
ICAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQodXJsLmZpbGVTeXN0ZW1QYXRo
KCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdy
b3VwLmNwcAppbmRleCAwY2RiZjgxN2RkZWMwOTU4YjYwM2FiZDdkY2I2NzA0MTA3ZTc4NDU5Li43
NTUzZWVlMDNmNzFiODQyZGQ1NjY4NTAwYmMzZTMwZmVlZTcxM2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgV2Vi
UGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0ID0gV2ViQ29y
ZTo6VXNlclN0eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5KCkgPyBXZWJDb3JlOjpi
bGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCksIGJhc2VVUkwpKSwgdG9T
dHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0
ZWRGcmFtZXMsIGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCB1c2VyU3R5bGVT
aGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJhc2VVUkwuaXNFbXB0eSgp
ID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgYmFz
ZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xp
c3QpLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRhLnVzZXJTdHlsZVNoZWV0
cy5hcHBlbmQodXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFByb2Nlc3Nlc0luR3JvdXAo
TWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVTaGVldCh1c2VyU3R5bGVT
aGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBXZWJQ
YWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2ViQ29yZTo6VXNlclNj
cmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBX
ZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3
aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3Rpb25UaW1lLCBpbmpl
Y3RlZEZyYW1lcyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0gV2ViQ29y
ZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6OmJsYW5r
VVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VVUkwpKSwgdG9TdHJpbmdW
ZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGlt
ZSwgaW5qZWN0ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3JpcHRzLmFwcGVuZCh1c2Vy
U2NyaXB0KTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1lc3NhZ2VzOjpXZWJQYWdl
R3JvdXBQcm94eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9kYXRhLnBhZ2VHcm91cElE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjA5MmYy
OTNkMjk5ODAxZTU2NWNkODgxMjRlOTE2M2ZkZGE1ZGIwMC4uYjA2NjJlZGQyNGI0NDAyZTdiMTEx
ZGMxMmM1MzA0ZmI4ZjZkNGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2Uo
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJveHk6Om1heWJlSW5pdGlh
bGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29sIFdlYlBhZ2VQcm94eTo6
bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25zdCBVUkwmIHVybCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogICAgIGlm
ICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY3OSw3ICs2
NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwgQVBJ
T2JqZWN0KiB1c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAogICAg
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGJv
b2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5k
bGUoS1VSTChLVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wg
Y3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUo
VVJMKFVSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBpZiAoY3JlYXRl
ZEV4dGVuc2lvbikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVS
ZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAtNzA2LDE1ICs3MDYsMTUg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAg
cmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVSTCA9IEtVUkwoS1VSTCgp
LCBmaWxlVVJMU3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0
cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJMIHJlc291cmNlRGlyZWN0
b3J5VVJMOwogICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZy5pc051bGwoKSkKLSAg
ICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgQVNDSUlM
aXRlcmFsKCJmaWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwo
UGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikpOwogICAgIGVsc2Ugewot
ICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgpLCByZXNvdXJjZURpcmVj
dG9yeVVSTFN0cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgp
LCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJl
Y3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
OTcsNyArNzk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChib29sIHJlbG9hZEZyb21P
cmlnaW4pCiAgICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVybCk7CiAKICAgICAgICAg
Ly8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFjay9mb3J3YXJkIGxpc3Qg
d2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9yIGEgYnJvd3NlciByZWxh
dW5jaAotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOwogICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgICAgIG1fcHJvY2Vz
cy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24oKTsKICAgICB9
CkBAIC05NTIsNyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNhblNob3dNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9k
dWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCku
ZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIHBs
dWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2lu
KG5ld01pbWVUeXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSAmJiBt
X3BhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xNDI5
LDcgKzE0MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBsdWdpbkxvYWRQb2xp
Y3kgPSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVnaW5EYXRhOjpBbGxvd2Vk
UGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5QXBwbGljYXRpb25QbHVn
aW5zID8gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6IFBsdWdpbkRhdGE6OkFs
bFBsdWdpbnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTChLVVJM
KCksIHVybFN0cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAgUGx1Z2luTW9kdWxlSW5m
byBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBs
dWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBhbGxvd2VkUGx1Z2luVHlw
ZXMpOwogICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1Z2luUHJvY2Vzc1Rva2Vu
ID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVn
aW5VbmF2YWlsYWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2luSW5mb3Jt
YXRpb247CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01p
bWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nl
c3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwg
S1VSTChLVVJMKCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1
Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgpLmZpbmRQbHVnaW4o
bmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CiAgICAgcGx1Z2luSW5m
b3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFt
ZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdpbnNwYWdlQXR0cmlidXRl
VVJMU3RyaW5nLCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAgLTMwMDcsNyArMzAwNyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKHVpbnQ2NF90IGl0ZW1J
RCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1
cm47CiAKLSAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUluaXRpYWxpemVTYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNh
bmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwoKSksIHNhbmRib3hFeHRl
bnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nl
c3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CiAgICAg
bV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4OSwxNSArMzI4OSwxNSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29u
dGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAgICBpZiAoaXRlbS5hY3Rp
b24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0gICAgICAg
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3Rp
dmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAg
ICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVSTChVUkwoKSwgbV9hY3Rp
dmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1hZ2VVUkwpKTsKICAgICAg
ICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4
dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRl
c3RSZXN1bHREYXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBtX3Byb2Nlc3MtPmNvbnRl
eHQoKS0+ZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51SGl0VGVz
dFJlc3VsdERhdGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRv
RGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgS1VS
TChLVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1l
ZGlhVVJMKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBV
UkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0RGF0YS5hYnNvbHV0ZU1l
ZGlhVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7CkBAIC00MTU3
LDcgKzQxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAjaWYgUExBVEZPUk0oTUFD
KSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWltZVR5cGUg
PSBtaW1lVHlwZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29u
dGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtV
UkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1l
VHlwZSwgVVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBwbHVnaW5JbmZvcm1hdGlv
biA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3Ry
aW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNl
bWVudE9ic2N1cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNmY2RmMWU3MmVhMmM2ZTNi
OTRkNmQ2YWNiMzZkZjBkNTQ5Y2RmLi4zNzllYWRjOWE0OWM3MzVkMzg4NDljMzJmMTIzZDQ0YTY5
NGUzNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMDE0
LDcgKzEwMTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5kaW5nQVBJUmVxdWVzdFVS
TCgpIHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9CiAgICAgdm9pZCBzZXRQ
ZW5kaW5nQVBJUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKSB7
IG1fcGVuZGluZ0FQSVJlcXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQogCi0gICAg
Ym9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBib29sIG1heWJlSW5pdGlh
bGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6VVJMJiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdWJzdGl0
dXRpb25zUGFuZWxJc1Nob3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDNhZjNjNzQ0M2Q0Y2E0ZTVjNmUyNzE3Njk2NmUz
MWExYzIyMTlkLi5kNmI2NmE3ZTM1OWI0M2EyODEwYjk5ZTUwZjBlYmJjNzg5ZTQ2Y2NmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDEsNyAr
NDEsNyBAQAogI2luY2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRl
cm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyNSwxMyArMjI1LDEzIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSoKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRB
Y2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgS1VSTCB1cmwo
S1VSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVybFN0cmluZyk7CiAgICAg
aWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlcmUn
cyBhIGNoYW5jZSB0aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0byBhIGRpcmVjdG9yeS4K
ICAgICAvLyBHZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9jYWxQYXRoc1dpdGhBc3N1
bWVkUmVhZEFjY2Vzcy4KLSAgICBLVVJMIGJhc2VVUkwoS1VSTCgpLCB1cmwuYmFzZUFzU3RyaW5n
KCkpOworICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3RyaW5nKCkpOwogICAgIAog
ICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBUaGlzIGRvZXNuJ3QgZ3Jh
bnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2VzcyBpcyBhc3N1bWVkCiAg
ICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBhbHJlYWR5LgpAQCAt
MjQwLDEwICsyNDAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFzc3VtZVJlYWRBY2Nlc3NU
b0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5
OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcp
CiB7Ci0gICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhLVVJMKEtVUkwo
KSwgdXJsU3RyaW5nKSk7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vz
cyhVUkwoVVJMKCksIHVybFN0cmluZykpOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6Y2hl
Y2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNoZWNraW5nIHRoYXQgdGhlIFVSTCBpcyB2YWxp
ZC4gQ3VycmVudGx5LCBXZWJQcm9jZXNzIHNlbmRzIGludmFsaWQgVVJMcyBpbiBtYW55IGNhc2Vz
LCBidXQgaXQgcHJvYmFibHkgZG9lc24ndCBoYXZlIGdvb2QgcmVhc29ucyB0byBkbyB0aGF0Lgog
CkBAIC0yNTYsNyArMjU2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OmNoZWNrVVJMUmVjZWl2
ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gSWYgd2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxlIGJhc2UgVVJMIGJlZm9y
ZSwgbG9hZGluZyByZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9yeSBpcyBmaW5lLgotICAg
IC8vIFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2
ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBLVVJMLCB3aGljaCByZW1vdmVzIHRo
b3NlLgorICAgIC8vIFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2UgYWxsIFVS
THMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBVUkwsIHdoaWNoIHJl
bW92ZXMgdGhvc2UuCiAgICAgU3RyaW5nIHBhdGggPSB1cmwuZmlsZVN5c3RlbVBhdGgoKTsKICAg
ICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fbG9jYWxQYXRo
c1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5iZWdpbigpOyBpdGVyICE9IG1fbG9jYWxQYXRoc1dpdGhB
c3N1bWVkUmVhZEFjY2Vzcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIGlmIChwYXRoLnN0YXJ0
c1dpdGgoKml0ZXIpKQpAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpj
aGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYgdXJsKQogICAgIC8vIEl0
ZW1zIGluIGJhY2svZm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCiAgICAg
Ly8gT25lIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIGZp
bGUgVVJMcyBpbiBiL2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVlbiByZWluc3RhdGVkIGFm
dGVyIGEgY3Jhc2ggb3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9yIChXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmJl
Z2luKCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQoKTsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT51cmwoKSku
ZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoVVJMKFVSTCgpLCBpdGVyLT52
YWx1ZS0+dXJsKCkpLmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVS
TCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCisgICAgICAgIGlmIChVUkwoVVJMKCksIGl0
ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNWQ4ODM5YWE1ZTBmYWU4ZDFhYjY5ODdhMGNkYmNiNzEy
YzkzNjFhLi4xZjg0OTczOWVjZDk3MTBhYTE3NGI5MmY4ZmUwMGNhYzYzNDU4ZGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00Niw3ICs0Niw3IEBA
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsK
IHN0cnVjdCBQbHVnaW5JbmZvOwogfTsKIApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICBi
b29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBTdHJpbmcmKTsKLSAgICBi
b29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgV2ViQ29yZTo6
VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQppbmRleCAw
ZWI1Yjc3NDdiMjcwMjhmM2U5YzA0OTJiYjdiODAyNGI2YWE2Y2FlLi43MzUwNzk2NDA4ZWNjZTZj
YjJhYWJlYjYxOTMwOGQxNTlmYWYxNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02MDAsNyArNjAwLDcgQEAgc3RhdGljIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiBib29sIFdlYkNvbnRleHQ6
OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSBjb25zdAogewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTA5MAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gS1VSTChLVVJMKCks
IHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9
IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpOwogCiAgICAgcmV0dXJuIF9DRk5l
dHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbih1cmwuZ2V0KCksIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPyBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgOiBudWxscHRyKTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5LmNwcAppbmRleCBkNWY4Y2Y1YmJkOTkwOWQ4ODRlZDYzMTE5ZWE0YzlkMjZjODE3MTI4
Li45M2ZjMDEwMGQzZjYyMmRlZjJlYzBjNzZmYThiOTEyN2RlYzQ0NTgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5j
cHAKQEAgLTM5LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhKQordm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRy
PEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2hhcmVkKCku
dXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgQmxvYlJlZ2lzdHJhdGlvbkRh
dGEoYmxvYkRhdGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVy
QmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKK3ZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBz
cmNVUkwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJv
Y2VzcygpKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAwKTsKIH0KIAotdm9pZCBC
bG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdp
c3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuaAppbmRleCA2M2QwZGE0MDA4NTJkZTQwZDcyNzVlNzJmMDc0MzViOTMyZWJmNDI2
Li5jMTUxYzExODUzNTUzNDViZTVkMzBiZDA3MWQ4ZWQ5NzUzYmM2ZTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApA
QCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQmxvYlJlZ2lzdHJ5
UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQYXNzT3duUHRy
PFdlYkNvcmU6OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgUGFzc093
blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpOworICAg
IHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4IDAyNDk2NGE2YzU2NzE3
NGNiNzJjZTE1MTViODg0OTE1N2JkNGUzNWIuLjBlMDQwMmI1MTViMWM2MzllZDI4ZDJlYTNkY2Fk
MDc5MDZkNmNiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApAQCAtMTU5LDcg
KzE1OSw3IEBAIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVGcmFtZUFsbG93c0ZvbGxv
d2luZ0xpbmsoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewot
ICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dpbmdMaW5rKFdlYkNvcmU6
OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CisgICAgcmV0dXJu
IHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJvb2wgV0tCdW5kbGVGcmFt
ZUhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCkBAIC0y
MDQsMTIgKzIwNCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1bWVudEJhY2tncm91bmRD
b2xvcihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAKIFdLU3RyaW5nUmVmIFdL
QnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0
aFVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkp
KTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+c3VnZ2VzdGVkRmls
ZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dU
RlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1J
TUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVmKS0+
bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChm
cmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNvcmU6OlVSTChXZWJDb3Jl
OjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9vbCBXS0J1bmRsZUZyYW1l
Q29udGFpbnNBbnlGb3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2OTE1ZDkwMDAyNmQ0ZmEzNjkyNGE5NTE0MWEz
OWYyOGNhNjJlNzk4Li45MTlmZmM3ZTZiMGUzN2MwN2Q4NWU5NDAyN2Y4MmEwYmNlNGYyNjM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BY2Nlc3NpYmls
aXR5T2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0zNjUsNyArMzY1LDcg
QEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxlUGFnZUhhc0xvY2FsRGF0
YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpLVVJM
KFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOworICAgIHJldHVybiB0b0lt
cGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJM
KCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1bmRsZVBhZ2VDYW5IYW5k
bGVSZXF1ZXN0KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCBjOGMwNzdlMjlhNmU0MjE4YTc5YWE3NWI0MmIzZmNiYjI2NGUwNGEyLi4xOTI1ZjQ4
NzQ5ZjdhZDhlYzhkNTRjN2E0YWM4MWRmNjY0ZTg5NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cApAQCAtNDkyLDI2ICs0OTIsMjYgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHRvU3RyaW5nVmVj
dG9yKEltbXV0YWJsZUFycmF5KiBwYXR0ZXJucykKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRk
VXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFibGVBcnJheSogYmxhY2ts
aXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBXZWJD
b3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKQogewotICAgIC8v
IHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkg
YmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBj
b25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVy
c2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSkt
PmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBL
VVJMKEtVUkwoKSwgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0
b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOworICAgIC8vIHVy
bCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVu
IHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3Ry
dWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4K
KyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJM
KCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNr
bGlzdCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwg
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdoaXRlbGlzdCwgSW1tdXRh
YmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBp
bmplY3RlZEZyYW1lcykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20gS1VSTDo6c3RyaW5nKCks
IGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IEtVUkwsIHNvIHdlIGhhdmUg
dG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIEtVUkwgaW5zdGVhZCBvZiB0
aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCi0gICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAo
cGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoc2NyaXB0
V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2UsIEtVUkwoS1VSTCgpLCB1cmwpLCB0b1N0cmluZ1Zl
Y3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1l
cyk7CisgICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5v
dCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0
aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVSTFN0cmlu
Z1RhZyB2ZXJzaW9uLgorICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRp
ZmllcigpKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQo
KSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRv
U3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3Vw
LCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiB1
cmwpCiB7Ci0gICAgLy8gdXJsIGlzIG5vdCBmcm9tIEtVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhh
cyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBLVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUg
cmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBLVVJMIGluc3RlYWQgb2YgdGhlIFBhcnNlZFVS
TFN0cmluZ1RhZyB2ZXJzaW9uLgotICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+
aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChzY3JpcHRXb3JsZC0+Y29y
ZVdvcmxkKCksIEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJM
OjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBz
byB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5z
dGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCisgICAgUGFnZUdyb3VwOjpw
YWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1vdmVVc2VyU2NyaXB0RnJvbVdv
cmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkq
IHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0
IFN0cmluZyYgdXJsKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwg
aS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0
byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRo
ZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChw
YWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNj
cmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgS1VSTChLVVJMKCksIHVybCkpOworICAgIC8vIHVybCBp
cyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBh
cnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0
b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KKyAg
ICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVz
ZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgp
LCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdHMoV2Vi
UGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2Ny
aXB0V29ybGQpCkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBjb24KIHsK
ICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChw
YWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9yIChIYXNoU2V0PFBhZ2Uq
Pjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gcGFnZXMuZW5kKCk7ICsr
aXRlcikKLSAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uKEtVUkwoS1VSTCgpLCBsb2NhdGlvbikpOworICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygp
LnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBsb2NhdGlvbikpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlOjpzZXRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFsbG93ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggMTdlMmU5NjRmZmEx
MjYzODhkMGNhMzVlYzMxOWY0ZDY4YzgyZjFkNS4uZWY5MmQ5YjY4ZDc3ZmUzZTkyNTgxOGM3NGQy
YmZlN2RhZTU5YzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZp
ZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNw
cAppbmRleCAxZjgwYjIwZmNlNDgzYjZlMmIyYzczMmE0M2I4YmJlMzJjNWUxZDcxLi4zYzk3MDBk
YTQ2MTQ5N2QyMzM0YzU2MTIxNzVhYWQ5MjE1Njk5YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRp
YyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRh
dGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0
YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6
d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwmIHVucmVhY2hhYmxlVVJM
LCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQud2lsbExvYWRE
YXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZTM3ZTFjMmY4NjVhMmZlZmNmYzYxMGU5
NTQwMTZhMzczMC4uYzUzODY4MjNlMWQ3MjI2NTMwZjY1Nzc0ZmI2ZjhlZWEzMTBiMzg0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCkBAIC0zNyw3
ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01XaW5kb3dFeHRlbnNpb247
CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxXS0J1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQsIGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50VmVyc2lvbj4gewogcHVi
bGljOgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2UqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdpbGxMb2FkRGF0YVJlcXVl
c3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91bGRHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtKiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggMTJhZTIzYmVlMGY3MGU4
NGQzYTA0ZTNiYmI3NGZhZjg0ZmU5YzJiYi4uNDUxNjNlMGNjYmE3Y2YyODg3ZTZiZDdkMzQ2NjM5
ZDYxODAzYzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTE4NSw3ICsxODUs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21Db3JlTG9hZGVyKCk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVj
ZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBVUkwmKQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmlnaW4gcmVkaXJlY3RzIGVu
dGlyZWx5IHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8gV2Ugb3ZlcnJpZGUgdGhp
cyBjYWxsIGluIHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1vcC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaAppbmRleCA1NWY2ZTMxN2QzYWQ0OTIxNjBmYjMwOGFlMWE5MzhlNDkzZWJjMThk
Li43ZWUyYTdlZDEzYjEyMzJkZTAwZGY5MjdmYjZiZjZjODQ5ODEyZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7
CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVS
TCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZl
ZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVkaXJlY3RV
UkwpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0
cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkgPSBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmNwcAppbmRleCAyMDU0ZGY5MjJlZmQxNTYxMWIzNzYyN2VmMjYzYmIxNzA3ZmEyNjgx
Li5jNGJhODM1NGEyMTg2MDFhZmU5NmE5OWY0YjI1ZWU4ODE3N2MxYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRlck1hcC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTc5MCw3
ICs3OTAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlcwogICAgICAgICBwbHVnaW5TdHJlYW0t
PnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCit2b2lkIE5ldHNjYXBlUGx1Z2lu
OjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQogewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CkBA
IC04MjMsNyArODIzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50
NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgICAgIHBsdWdpblN0cmVhbS0+
ZGlkRmFpbCh3YXNDYW5jZWxsZWQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90
IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgCit2b2lkIE5ldHNjYXBl
UGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25z
ZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
Lyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNjUxZGM0ZDBlMjFkYWExYTFlMGMwMWFkOTYwMDFhM2My
MzQ1YzFiMS4uNGMxMzdhYTU3MTAzMjE2NzJlYjJhZDhlYWNiODhlZGQ1MzEwNGVlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5MCwxMiArMTkwLDEyIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0Nh
bmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpL
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJD
b3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVj
ZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJl
YW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQs
IGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0
cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmly
dHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMGFlNDRjM2Ni
NDc4OGNmMTY0OTEyY2I2YmZiODc3NWU0ZjZiNjMwYS4uYjE5YzEyYjZhZjgyM2Y1ZmRlYzg0MzNi
NmE1MmJhYTM5NTdlM2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CkBAIC02Myw3ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp+TmV0c2NhcGVQbHVnaW5T
dHJlYW0oKQogICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGhlYWRlcnMpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMpCiB7CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0cmVhbSBjb3VsZCBjYXVzZSB0aGUgcGx1
Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUu
CiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggZmZhNTVjYjI1ZDhjZDg3NDQ2YmE4MzdmZDM5
MGU4M2I4YzRhN2I3Mi4uYjM1MDE4NjM1NmU0OTU2MDNmNGNlMDJmMTk5NGU4Yjk5MzkxYzE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTYsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25zdCB7IHJldHVybiBtX3N0
cmVhbUlEOyB9CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkgY29uc3QgeyByZXR1cm4g
Jm1fbnBTdHJlYW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCisgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMy
X3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxl
bmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBiMjliZWM2MjYyODAw
ODYwZWYyNjNkZDI2ZjY1NDBlMTRmNTUwZGU4Li41NDExOTc0NzY5ZTdjMGE3ZjMzMzViZTAzZjFi
OGU0OTNlNTcxYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBi
b29sIHdhc0NhbmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRl
SmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3Ry
ZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURh
dGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBz
dHJlYW1JRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJM
JiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURp
ZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHBy
aXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OktV
UkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAgICAgU3Ry
aW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+
IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggN2MzNDU0YmQ0ZGVjNDAwODEyOWIwNjg5ZDIyYzA2NGUwYzE0YTBi
YS4uZmEzNjE3Mzg1ODc3NjFhMzRjMzFiNGQ5NmM5YWY4NTE3OTQ5N2NiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTkx
Nyw3ICs5MTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnREaWRMb2FkKCkKICAgICAg
ICAgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnN0cmVh
bURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgS1VSTCYsIHVpbnQz
Ml90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYsIHVpbnQzMl90LCB1
aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKHN0cmVhbUlELCBz
dHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1Miw3ICs5NTIsNyBAQCB2
b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpCiAgICAgbV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAgdWludDMy
X3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogewogICAgIG1fc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLmgKaW5kZXgg
MWQ5ZTk3YzBhZGZmNjg1Yzk1NTNiZDg0MThkNjI2OTEyMzgyMTBiZS4uZjdmMGQzYzliOWM2MDYx
NDI5OTJjMjk2YTI4ODI0ZDU0ZDM2MTdmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5oCkBAIC0xMTMsMTEgKzEx
MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWlu
dDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVz
dWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3Ry
ZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5h
bWUpOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZp
cnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFs
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCk7
CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQp
OwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1f
c2l6ZTsKIAotICAgIFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJM
IG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0
YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KaW5kZXggZDc5
NGYwMjlhN2IyNDg2MDk3NDJlNDZmMjNmMmEzYzA3NmZjOTNjMS4uZDkzMGZiODU4MTk5OWY2ZDll
MzExZDZiY2U4OTVjODhmMWU2OTMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTYxNSw3ICs2MTUs
NyBAQCB2b2lkIFNpbXBsZVBERlBsdWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQo
KQogICAgIG1fZGF0YSA9IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKG1fZGF0YSk7CiB9CiAK
LXZvaWQgU2ltcGxlUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
c3RyZWFtSUQsIGNvbnN0IEtVUkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
Cit2b2lkIFNpbXBsZVBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQgPT0gcGRmRG9jdW1lbnRS
ZXF1ZXN0SUQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTaW1wbGVQREZQbHVnaW46OnN0
cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKQogICAgIG1f
ZGF0YS5jbGVhcigpOwogfQogCi12b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1M
ZW5ndGgsICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
Cit2b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVh
ZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5kZXggOTBlNWU3NmNkMTNlY2VhNTljZjNiOGUzNzc5
NTEzNWQ5YmE3ZTQ0MC4uZTg5ZjkxMTk4MjI3NjJjNzM4YTFhYzM2Nzc1MTQwZjkyODk3YjZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgYm9vbCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1
bWVudERlY29kZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHAKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBGSVhNRTogV2Ug
Y2FuJ3QgYXNzdW1lIHRoYXQgdGhlIHVybCBwYXNzZWQgaW4gaGVyZSBpcyB2YWxpZC4KLSAgICBw
YXJhbWV0ZXJzLnVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHBh
cmFtZXRlcnMudXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKTsKIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBmOGRl
NWE3OTA3MjI3YTI5YzM5ZDBjMmNhNjJlYWVhM2EwYzIxOWU4Li5kOThkYTZjOTIxNzk2YjZjYzM0
ODdiMmQ3OWJhZWIxOTk1YTFmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbmRP
cHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIFBsdWdp
bkNvbnRyb2xsZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMgewotICAgICAgICBXZWJD
b3JlOjpLVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKICAgICAgICAg
U3RyaW5nIG1pbWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3Ry
aW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJl
YW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1l
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWlu
IHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJv
b2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IHRo
ZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNwb25zZS4KLSAgICB2aXJ0
dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9p
ZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0
aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggMjlkYWNiMzNk
YzFiNzU4NzQyNGUwMzc4YzIxYWU0NGJiNDdlNDk2ZS4uMTUxZDNmYzRlNjUyYWNmOTU3N2IyNTc3
MTAyNTVhNzUwZTMxZWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3IEBAIHR5cGVkZWYgdm9p
ZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUVFBIZWFk
ZXJNYXA7CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVS
TDsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGE4ZGU4YjI5NTBlMGU4
MzJhNmU0ZjRmNTlkYzJhNjc2YjVlNWRmZjYuLjhhOGYyNzIzNDVmYjQ5OGFiMDFmNjcxZWIxOTMz
OTg5YThmNmU1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRp
ZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdURjo6U3RyaW5n
JiByCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJlcXVlc3RJRCwgcmVzdWx0
KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBLVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25z
dCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6c3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlc3Bv
bnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25zZVVSTC5zdHJpbmcoKSwg
c3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwgaGVhZGVycyksIG1fcGx1
Z2luSW5zdGFuY2VJRCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6U3RyZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2VsbGVkKSwgbV9wbHVnaW5J
bnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgs
ICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZp
bGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQz
Ml90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUg
Ki8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBs
dWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZFRpbWUsIG1pbWVUeXBl
LCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIzOTUyMzE1OGFjMzVkZGU0
NDhiY2NmOWJkNzQ2MTY1ZTMzZGU0Zi4uMDY2N2Q0OWQ0MzllNzM5OWE4ZmJkYTU2Y2QyM2FlMGRm
NGI3NmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmgKQEAgLTg4LDExICs4OCwxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBm
cmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsKICAgICB2aXJ0dWFsIHZv
aWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQp
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29s
IHdhc0NhbmNlbGxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmluaXNoTG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWls
KGJvb2wgd2FzQ2FuY2VsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBkMzY4M2U3NDEzYmQxNTNmOWQ1NjZmYWQ4MjYwZTQ5
ZTRhOTQ3YTVjLi5kYWQxZDA2YjA2NTJlZjM1NmRkYjIwYjRkOWQyOWY5NDQyMGE3ZjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGUoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gQ29tcHV0ZSB0aGUgc3RyZWFtIHJlbGF0
ZWQgZGF0YSBmcm9tIHRoZSByZXNvdXJjZSByZXNwb25zZS4KLSAgICBjb25zdCBLVVJMJiByZXNw
b25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOworICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwgPSBy
ZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gcmVzcG9uc2UubWlt
ZVR5cGUoKTsKICAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gcmVzcG9uc2Uu
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiAgICAgCkBAIC0zODMsNyArMzgzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIH0KIAogICAgIC8vIENvbXB1dGUgdGhlIHN0cmVhbSByZWxh
dGVkIGRhdGEgZnJvbSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UuCi0gICAgY29uc3QgS1VSTCYgcmVz
cG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAgICBjb25zdCBVUkwmIHJlc3BvbnNlVVJMID0g
cmVzcG9uc2UudXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IHJlc3BvbnNlLm1p
bWVUeXBlKCk7CiAgICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExlbmd0aCA9IHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwogICAgIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAgU3Ry
aW5nIFBsdWdpblZpZXc6OnVzZXJBZ2VudCgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgIAotICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
dXNlckFnZW50KEtVUkwoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS51
c2VyQWdlbnQoVVJMKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdGFyZ2V0LCAKQEAgLTE0ODksMTggKzE0ODksMTggQEAgU3RyaW5nIFBs
dWdpblZpZXc6OnByb3hpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7CiAgICAg
Y29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/ICZmcmFtZSgpLT5sb2Fk
ZXIoKSA6IDA7CiAgICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBmcmFtZUxv
YWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDogMDsKLSAgICBWZWN0b3I8
UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0ZvclVSTChLVVJMKEtVUkwo
KSwgdXJsU3RyaW5nKSwgY29udGV4dCk7CisgICAgVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNl
cnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBjb250ZXh0
KTsKICAgICByZXR1cm4gdG9TdHJpbmcocHJveHlTZXJ2ZXJzKTsKIH0KIAogU3RyaW5nIFBsdWdp
blZpZXc6OmNvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXMoJm1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwgS1VSTChLVVJMKCksIHVy
bFN0cmluZykpOworICAgIHJldHVybiBjb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50
KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6c2V0Q29v
a2llc0ZvclVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0gICAgc2V0Q29va2llcygmbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLCBL
VVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKKyAgICBzZXRDb29raWVzKCZt
X3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSwgY29va2ll
U3RyaW5nKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpnZXRBdXRoZW50aWNhdGlvbkluZm8oY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIFN0cmluZyYgdXNlcm5hbWUsIFN0
cmluZyYgcGFzc3dvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNmFiYmNkNjUzY2U3
YWUwMzIxYTZjNzBkMjBhMDUzMTllYmI1MDM2OC4uN2FiZDc5NjEyMjUwYjE1Yjc1YzMyZTI0OTU2
NmQwNDRiMmM2MjJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtNTM0LDkgKzUzNCw5
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQo
RWxlbWVudCogZWxlbWVudCwgUmVuZGVyRW1iCiAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0g
cGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwogICAgIFN0cmluZyBwYWdlVVJMU3RyaW5nID0g
bV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VV
UkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcgcGx1Z2luVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVu
dC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChwbHVnaW5FbGVtZW50LT51cmwoKSkuc3RyaW5nKCk7
Ci0gICAgS1VSTCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTCA9IGVsZW1lbnQtPmRvY3VtZW50KCku
Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpbkVsZW1l
bnQtPmdldEF0dHJpYnV0ZShwbHVnaW5zcGFnZUF0dHIpKSk7CisgICAgVVJMIHBsdWdpbnNwYWdl
QXR0cmlidXRlVVJMID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luRWxlbWVudC0+Z2V0QXR0cmlidXRlKHBsdWdp
bnNwYWdlQXR0cikpKTsKICAgICBpZiAoIXBsdWdpbnNwYWdlQXR0cmlidXRlVVJMLnByb3RvY29s
SXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkwgPSBLVVJM
KCk7CisgICAgICAgIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gVVJMKCk7CiAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgcGx1Z2luRWxlbWVudC0+c2VydmljZVR5
cGUoKSwgcGx1Z2luVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTC5zdHJpbmcoKSwg
ZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmNwcAppbmRleCBlZWM4MTY4YTRhMmE1NTAzYjJjODQ1NjhkYmM2OWE0Yjk1NmY1
MTA2Li5lMTBiMzIwNmFjOTI3YjQ3NjI3MDgyZmU3NzE3MGQ3MTMzYjUzNzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYkNvbnRl
eHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBj
b25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1l
bnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBXZWJDb250ZXh0TWVudUNs
aWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICAvLyBUaGlzIGlzIGhhbmRsZWQg
aW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04Niw3ICs4
Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3Qg
RnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAg
ICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2Vs
ZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygpLCAwLCBmYWxzZSwgZmFs
c2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgU3RyaW5nKCksIDAsIGZh
bHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYwMTJkYTFjYjI2YWRhN2Q0MjM4ZGQz
ZmY5ZjljN2Q4YTQuLmJkNDNlY2IwM2M5ZjdiNzBjZDk4MGQ0YzlkZmRkMGRiZGQ1YTdmYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURF
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0
IFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGlj
dGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1Nw
ZWFraW5nKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1YzZkMDlmMGFlY2YxYzE5ZWQ3
MWNlMDgzM2U4YjAzZGNkLi5kMjdhMGY5NjNlYmY1NjBkNTA4MGExMGMwNjBjM2RiYzBmMTI4ODYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRXJyb3JzLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgV2ViRXJyb3JzX2gKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNs
YXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CkBAIC00Miw3ICs0Miw3IEBAIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmls
ZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFs
RXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRl
cm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5YjYwOTBlNzlkZGU3MmE5
ZWIyMDJiZjViYWZmNWQ4MTMyMjY5MDVkLi42MjcwYWI0MzAwNzkyNGQxYTZlNjE3MjM5ZGY5OGFm
Yzc5OWE5MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3QoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCku
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lKTsKIH0KIAot
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKQogewog
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdl
KQpAQCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTk5OCw3ICs5OTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKICAgICB3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVj
dFhTUyhjb25zdCBVUkwmLCBib29sKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1l
LT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAgUGFzc1Jl
ZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc28KICAgICByZXR1cm4gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1
ZXN0LCBkYXRhKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRp
dGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSB8fCAhd2ViUGFnZS0+cGFnZUdyb3VwKCktPmlzVmlz
aWJsZVRvSGlzdG9yeUNsaWVudCgpKQpAQCAtMTE2OSw3ICsxMTY5LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IEtVUkwKICAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5zdHJpbmcoKSwgbV9mcmFt
ZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNl
ckFnZW50KGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdl
bnQoY29uc3QgVVJMJikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgp
OwogICAgIGlmICghd2ViUGFnZSkKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExv
YWRlciAqZG9jCiAgICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KGRvY3VtZW50TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJh
bWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCitQ
YXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25l
ckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93c1Njcm9sbGluZyovLCBp
bnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykKIHsKICAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtMTI4Myw3ICsxMjgzLDcgQEAgUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gY29yZVN1YmZyYW1lOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQ
YXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxs
eSkKIHsKICAgICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFyYW1WYWx1ZXMuc2l6ZSgp
KTsKICAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKQEAgLTEzNDYsOSArMTM0Niw5IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1
Z2luV2lkZ2V0KQogICAgICAgICBtX3BsdWdpblZpZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3
Kj4ocGx1Z2luV2lkZ2V0KTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
IEhUTUxBcHBsZXRFbGVtZW50KiBhcHBsZXRFbGVtZW50LCBjb25zdCBLVVJMJiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFw
cGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCog
YXBwbGV0RWxlbWVudCwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKLSAgICBSZWZQdHI8V2lk
Z2V0PiBwbHVnaW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBwbGV0RWxlbWVudCwgS1VS
TCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVudC0+c2VydmljZVR5cGUo
KSwgZmFsc2UpOworICAgIFJlZlB0cjxXaWRnZXQ+IHBsdWdpbiA9IGNyZWF0ZVBsdWdpbihwbHVn
aW5TaXplLCBhcHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsIGFw
cGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKICAgICBpZiAoIXBsdWdpbikgewog
ICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAg
ICAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5nKCk7CkBAIC0xMzYwLDcg
KzEzNjAsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0
ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcAogfQogCiAjaWYgRU5BQkxFKFBMVUdJ
Tl9QUk9YWV9GT1JfVklERU8pCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxNZWRp
YUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpCitQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6ZSYs
IEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiAwOwpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgc3RhdGljIGJvb2wgcGx1
Z2luU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgUGx1Z2luRGF0YSYgcGx1Z2luRGF0YSwgY29uc3Qg
U3RyaW5nJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCitP
YmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtZXJn
ZWQgd2l0aCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlIHdo
ZW4gdGhlIHBsdWdpbiBjb2RlCiAgICAgLy8gaXMgY29uc29saWRhdGVkLgpAQCAtMTU3NSw3ICsx
NTc1LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQoYm9vbCBlbmFi
bGVkUGVyU2V0dGluZ3MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdl
YkNvcmU6OktVUkwmIHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNl
VW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewog
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQxY2E1OGI1ZTZmMjY2ZjZhMGQz
NmIwMzUzODY1OGQwYTJiY2Y2NTYuLjcwMjI2ODFjOWIwOGMzY2NlMDU5MjhlOGJjMTRkNTM0Y2U5
MzEzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgp
IE9WRVJSSURFOwpAQCAtMTMzLDggKzEzMyw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBj
b25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVS
TCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOwogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJ
REU7CkBAIC0xNjEsOSArMTYxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJp
bmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
cm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKQEAgLTE3Nywy
MiArMTc3LDIyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29y
ZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50
IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcm
LCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWRp
cmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldpZGdldCkgT1ZFUlJJREU7
CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxl
dEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJ
REU7CiAgICAgCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdp
bihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZU1lZGlhUGxheWVyUHJv
eHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNo
b3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogI2Vu
ZGlmCiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
Q29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9y
SW1hZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5k
b3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwpAQCAt
MjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dTY3JpcHQo
Ym9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VVbml2ZXJzYWxBY2Nlc3NG
cm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29y
a2luZ0NvbnRleHQoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
Y3BwCmluZGV4IDQ0ZDU5ZjI3ZTEyNGUwM2U1NWNjMjljNTEyMGJkNDcwYWFhNGM5YmYuLjQ0YzE4
MGI2OTg4ZWZkYmIyOTcxNGJkMjk5NjY3ZGRiNzk0Yjc1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtpbmdDb250ZXh0Lmg+CkBAIC0xMjYsNyArMTI2LDcgQEAgVmlzaXRlZExpbmtTdHJhdGVn
eSogV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKIAog
Ly8gQ29va2llc1N0cmF0ZWd5CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewpAQCAtMTQwLDcgKzE0MCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uCiAg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2kKICAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKQEAg
LTE2Niw3ICsxNjYsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLAogICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewpAQCAtMTgwLDcgKzE4MCw3IEBAIFN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlCiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAjaWYgRU5BQkxF
KE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdv
cmtQcm9jZXNzKCkpIHsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKQEAgLTM3MSw3ICszNzEsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZQog
CiAvLyBWaXNpdGVkTGlua1N0cmF0ZWd5CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpp
c0xpbmtWaXNpdGVkKFBhZ2UqLCBMaW5rSGFzaCBsaW5rSGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0
IEF0b21pY1N0cmluZyYpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRl
ZChQYWdlKiwgTGlua0hhc2ggbGlua0hhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmlzTGlua1Zpc2l0ZWQobGlu
a0hhc2gpOwogfQpAQCAtNDQ4LDEyICs0NDgsMTIgQEAgQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJldHVybiBjb2xv
cjsKIH0KIAotS1VSTCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnVybChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKQorVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViQ29udGV4dDo6R2V0UGFzdGVib2FyZFVSTChwYXN0ZWJvYXJkTmFtZSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViQ29u
dGV4dDo6R2V0UGFzdGVib2FyZFVSTDo6UmVwbHkodXJsU3RyaW5nKSwgMCk7Ci0gICAgcmV0dXJu
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCB1cmxTdHJpbmcpOwogfQogCiBsb25nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
YWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4
IDM5MzQ2MDYwMTM2YTQ1Y2U2MjhiMzZmMDZmOGQxMjMxODZhNWRkYTIuLmNiMmYxODU1NTlkYmRl
MzU4ODc1YzBkOWU4NjQ1MTUzOGJiNmQxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaApAQCAtNTYsMTIgKzU2LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpW
aXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7
CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC05MCw3ICs5
MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VO
YW1lc3BhY2U+IHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2UqKSBPVkVSUklE
RTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBj
b25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNo
KSBPVkVSUklERTsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEwNyw3ICsxMDcsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OktVUkwgdXJsKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGxv
bmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNw
cAppbmRleCAzNDVkOWMwNWRlM2ZjZDNjN2U3YjAxYTkwNTI4NDk5NzRhYWJkYTU2Li44MjYwNDdj
Mjc4N2IxZWZkYjZhNjYwYjFjODczYTc2NjBkNDQ4OWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2VmbC9XZWJFcnJvcnNFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dlYkVycm9yc0Vm
bC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9h
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBXZWJD
b3JlOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKHJlc3BvbnNlKTsKIH0KIAotV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK1dl
YkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21h
aW4oKSwga1dLRXJyb3JJbnRlcm5hbCwgdXJsLnN0cmluZygpLCBBU0NJSUxpdGVyYWwoIkludGVy
bmFsIGVycm9yIikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKaW5kZXggYTgyZTdkZWUw
ZTk1ODZkOTE4NmYwZWU4MzY2YTY1NDU4OWFkZmMzZS4uMWI1MjVjMDU0MmI0YjFjZGU4MzQ0M2Rk
Y2FhYTZlZTI5OTFkNjRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gV2ViQ29yZTo6cGx1Z2luV2lsbEhh
bmRsZUxvYWRFcnJvcihyZXNwb25zZSk7CiB9CiAKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50
ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9ySW50
ZXJuYWwsIHVybC5zdHJpbmcoKSwgXygiSW50ZXJuYWwgZXJyb3IiKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFcnJvcnNN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJF
cnJvcnNNYWMubW0KaW5kZXggNzFmYTVlM2ZkY2QyOTFhZGVjNmUwMzNmN2I2NzYwMTg1MDIyMTdj
OC4uNzEzN2FjYzcyYWE5NzBjNGM1ZjM1OWE1YmQyY2I4ZDM1ZTUyM2M4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkVycm9yc01hYy5tbQpAQCAtODcsNyArODcsNyBAQCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoV2ViRXJyb3I6OndlYktpdEVycm9yRG9tYWluKCksIGtXS0Vycm9y
Q29kZVBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwoKSwgV0VCX1VJX1NUUklORygi
UGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVnSW5XaWxsSGFuZGxlTG9hZCBk
ZXNjcmlwdGlvbiIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IEtV
UkwmIHVybCkKK1Jlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBVUkwmIHVybCkKIHsK
ICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSwg
a1dLRXJyb3JJbnRlcm5hbCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQg
YW4gaW50ZXJuYWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IDc4NTdmOGFiNTdjZmFkMDMxYzk2YzQ1YzNjMTI2M2U2MmI2MmZmMWYuLjgwMWVkZTdkNGY1
YTg3YjgwZTk0NjY5MDU4NDM5NWQ1ODRkOTg5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNDUxLDcgKzQ1MSw3IEBAIHVuc2lnbmVk
IFdlYkZyYW1lOjpwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2NvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpOwogfQogCi1ib29sIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNv
cmU6OktVUkwmIHVybCkgY29uc3QKK2Jvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmso
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02NzksNyArNjc5LDcgQEAgU3RyaW5nIFdlYkZyYW1l
Ojpwcm92aXNpb25hbFVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXItPnVybCgpLnN0cmluZygpOwogfQogCi1TdHJpbmcgV2ViRnJhbWU6OnN1Z2dlc3RlZEZp
bGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBX
ZWJGcmFtZTo6c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIFN0cmluZyBXZWJGcmFtZTo6c3VnZ2VzdGVkRmlsZW5h
bWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogICAgIHJldHVybiBw
YWdlKCktPmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKHVybCk7CiB9CiAKLVN0cmluZyBX
ZWJGcmFtZTo6bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgS1VSTCYgdXJsKSBjb25z
dAorU3RyaW5nIFdlYkZyYW1lOjptaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmlu
ZGV4IDc5ZmE1Y2JhOWVjOTA2OGNjMGQzMTk5MmEwNzQ4MzA3YjliOGE1ZDEuLjY4NzYyZmYyYmIz
NzQ5YTU1ZDNjNzIwYzllYjg5NTE5MzE2YzU3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIEZyYW1lOwog
Y2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRS
ZWN0OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC0xMTYsMTEgKzExNiwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgcGVuZGluZ1Vu
bG9hZENvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBhbGxvd3NGb2xsb3dpbmdMaW5rKGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93c0ZvbGxvd2luZ0xpbmso
Y29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJvdmlzaW9uYWxVUkwo
KSBjb25zdDsKLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwo
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OwotICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291
cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0
OworICAgIFN0cmluZyBtaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdDsKIAogICAgIHZvaWQgc2V0VGV4dERpcmVjdGlvbihjb25zdCBTdHJpbmcmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDg5OGQwODQ1NWEzZDRhNThjZjczODQzMzUyYWIzZmZiZmY0ZDk0ODEuLmFhNzgxZjRiYTgwZDRi
MWJhZGE0NTczNGEwMzkzMGEzNGUwZDgzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIFdlYlBhZ2U6
OnNlbmRDbG9zZSgpCiAKIHZvaWQgV2ViUGFnZTo6bG9hZFVSTChjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBsb2FkVVJMUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QoS1VSTChLVVJMKCksIHVybCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBkZWNvZGVyKTsKKyAgICBsb2FkVVJMUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgp
LCB1cmwpKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6bG9hZFVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTMwLDcgKzkzMCw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZFVSTFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTYW5kYm94RXh0ZW5zCiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5s
b2FkKEZyYW1lTG9hZFJlcXVlc3QobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZXF1ZXN0KSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVS
TCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCit2b2lkIFdlYlBhZ2U6OmxvYWRE
YXRhSW1wbChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcih0aGlz
KTsKIApAQCAtOTUzLDM1ICs5NTMsMzUgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJgogdm9pZCBX
ZWJQYWdlOjpsb2FkRGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgU3Ry
aW5nJiBiYXNlVVJMU3RyaW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKTsKLSAgICBLVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5r
VVJMKCkgOiBLVVJMKEtVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKHNo
YXJlZEJ1ZmZlciwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgS1VSTCgpLCBkZWNv
ZGVyKTsKKyAgICBVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYmxhbmtV
UkwoKSA6IFVSTChVUkwoKSwgYmFzZVVSTFN0cmluZyk7CisgICAgbG9hZERhdGFJbXBsKHNoYXJl
ZEJ1ZmZlciwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGRlY29kZXIp
OwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0
cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihodG1sU3Ry
aW5nLmNoYXJhY3RlcnMoKSksIGh0bWxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsK
LSAgICBLVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiBLVVJMKEtVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1
ZmZlciwgInRleHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCBLVVJMKCksIGRlY29kZXIpOwor
ICAgIFVSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDog
VVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVy
LCAidGV4dC9odG1sIiwgInV0Zi0xNiIsIGJhc2VVUkwsIFVSTCgpLCBkZWNvZGVyKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiB1bnJlYWNo
YWJsZVVSTFN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaHRtbFN0cmluZy5jaGFyYWN0ZXJzKCkpLCBo
dG1sU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7Ci0gICAgS1VSTCBiYXNlVVJMID0g
YmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogS1VSTChLVVJMKCksIGJhc2VV
UkxTdHJpbmcpOwotICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSB1bnJlYWNoYWJsZVVSTFN0cmlu
Zy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBLVVJMKEtVUkwoKSwgdW5yZWFjaGFibGVVUkxTdHJpbmcp
OworICAgIFVSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBibGFua1VSTCgp
IDogVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSB1
bnJlYWNoYWJsZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgdW5yZWFj
aGFibGVVUkxTdHJpbmcpOwogICAgIGxvYWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJ0ZXh0L2h0
bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGRlY29kZXIpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OmxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzKCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXpl
b2YoVUNoYXIpKTsKLSAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9wbGFpbiIs
ICJ1dGYtMTYiLCBibGFua1VSTCgpLCBLVVJMKCksIGRlY29kZXIpOworICAgIGxvYWREYXRhSW1w
bChzaGFyZWRCdWZmZXIsICJ0ZXh0L3BsYWluIiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIFVSTCgp
LCBkZWNvZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkV2ViQXJjaGl2ZURhdGEoY29uc3Qg
Q29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgd2ViQXJjaGl2ZURhdGEsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHdl
YkFyY2hpdmVEYXRhLmRhdGEoKSksIHdlYkFyY2hpdmVEYXRhLnNpemUoKSAqIHNpemVvZih1aW50
OF90KSk7Ci0gICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgImFwcGxpY2F0aW9uL3gtd2Vi
YXJjaGl2ZSIsICJ1dGYtMTYiLCBibGFua1VSTCgpLCBLVVJMKCksIGRlY29kZXIpOworICAgIGxv
YWREYXRhSW1wbChzaGFyZWRCdWZmZXIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiLCAidXRm
LTE2IiwgYmxhbmtVUkwoKSwgVVJMKCksIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxp
bmtDbGlja2VkKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkK
QEAgLTIzNTMsNyArMjM1Myw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBjYWxsYmFj
a0lEKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
Rm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiByZXNvdXJjZVVSTCkKK3N0YXRpYyBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIg
PSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAoIWxvYWRlcikKQEAg
LTIzNjksNyArMjM2OSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3Vy
Y2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiByCiB2b2lkIFdlYlBhZ2U6
OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHJlc291cmNlVVJMU3RyaW5nLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICBLVVJMIHJlc291cmNlVVJMKEtVUkwo
KSwgcmVzb3VyY2VVUkxTdHJpbmcpOworICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3Vy
Y2VVUkxTdHJpbmcpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlm
IChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlE
KSkgewpAQCAtMzMwOSw3ICszMzA5LDcgQEAgdm9pZCBXZWJQYWdlOjpTYW5kYm94RXh0ZW5zaW9u
VHJhY2tlcjo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgLy8g
YmVjYXVzZSBpdCBkb2VzIG5vdCBwZXJ0YWluIHRvIHRoZSBmYWlsZWQgbG9hZCwgYW5kIHdpbGwg
YmUgbmVlZGVkLgogfQogCi1ib29sIFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBL
VVJMJiB1cmwpCitib29sIFdlYlBhZ2U6Omhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjNhYmNh
NWJmODJlMzkxNThmMjI3ZGI0M2U0OWFkN2Y1ODc0NDAzZS4uYjBiNjczZjMyMGRhNWFmMWYyOGVm
NWM0NGZjMDMyODA5ODBkMGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00MTMsMTAgKzQxMywxMCBAQCBwdWJsaWM6CiAgICAgV2ViQ29udGV4
dE1lbnUqIGNvbnRleHRNZW51QXRQb2ludEluV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAjZW5kaWYKICAgICAKLSAgICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgU3RyaW5nIGNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29u
c3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIFN0cmluZyBjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZv
clVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgYm9vbCBoYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
U3RyaW5nIGNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgU3RyaW5nIGNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBjYWNoZWRSZXNw
b25zZURhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBj
YW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCkBAIC02
ODYsOSArNjg2LDkgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJG
cmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
ZmFpbGluZ1VSTCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKyAgICB2b2lkIGxvYWREYXRh
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKTsKIAotICAgIGJvb2wgcGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIGJvb2wgcGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJik7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdl
RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2ViUGFnZUVm
bC5jcHAKaW5kZXggODQyNGM2YjRiMmFlYmMwZDhhMjJhY2M1NTcyMjY5ZThlOGQzMzU3NC4uYzll
NGRjNThiYzZjMjBmOTllODJjMjllM2EzOWNhZTQ3YTFhODQ4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwCkBAIC0xMjYs
MTMgKzEyNiwxMyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IEtVUkwm
KQorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcg
V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmlu
ZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNDQsMTMgKzE0
NCwxMyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2Fj
aGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6
Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKK1Bh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwo
Y29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5j
cHAKaW5kZXggNjZmZDMyZjFiN2QzMTI2NzM3N2M0YjI4MWJhZjczYjE2ZTI3ZmE3Ny4uMjc4NWEy
NjNiZmM5M2FkZjk1MzYwZGQ2Zjg1NTFjMmM5NjZmYjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCkBAIC0xMjYsMTMg
KzEyNiwxMyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JGb3JLZXlFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKQor
Ym9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcgV2Vi
UGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJikKK1N0cmluZyBX
ZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xNDQsMTMgKzE0NCwx
MyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViUGFnZTo6Y2FjaGVk
U3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2Fj
aGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJikKK1Bhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29u
c3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDI3MjJmN2U4MTUxYmUxYTM3OWM2ZTA5ZGZiOTk5N2UwMDRkNjE2NmQuLmNlMWQ5NTI0ZDAx
YTE0MzFiZjY2NzMzMDAzYjA4ZWUxNzc1ZWNjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTcxNyw3ICs3MTcsNyBA
QCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVt
b3RlT2JqZWN0KCkKICAgICByZXR1cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7
CiB9CiAgICAgICAgICAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwo
Y29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2Fs
RGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0KiByZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVS
TDp1cmxdOwogICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0cmluZyopdXNlckFnZW50KCkgZm9y
SFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwpAQCAtNzMxLDcgKzczMSw3IEBAIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYg
dXJsKQogICAgIHJldHVybiBjYWNoZWRSZXNwb25zZTsKIH0KIAotc3RhdGljIE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IEtV
UkwmIHVybCkKK3N0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVS
TChXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5QdHI8TlNN
dXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0TlMoW1tOU011dGFibGVVUkxSZXF1ZXN0
IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVxdWVzdC5nZXQoKSBzZXRWYWx1ZToo
TlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2Vy
LUFnZW50Il07CkBAIC03NDIsMTcgKzc0MiwxNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25z
ZSAqY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgS1VSTCYgdQog
ICAgIHJldHVybiBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9y
UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dl
c3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQYWdlOjpjYWNo
ZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
W1tjYWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIHJlc3BvbnNlXSBzdWdnZXN0ZWRGaWxl
bmFtZV07CiB9CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJM
KGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBl
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBbW2NhY2hlZFJlc3BvbnNlRm9y
VVJMKHRoaXMsIHVybCkgcmVzcG9uc2VdIE1JTUVUeXBlXTsKIH0KIAotUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJMJiB1
cmwpCitQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRh
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBO
U0RhdGEoW2NhY2hlZFJlc3BvbnNlRm9yVVJMKHRoaXMsIHVybCkgZGF0YV0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAppbmRl
eCA4ZmViMTM2MGQ5NTQ4ZGU4ODM1NTJhZThjOTljMDdkYzYwNmMyOTM0Li42ZWU4YTFkMTI0Yzk0
N2YwNDZlYjJkYzIyNzFlNDJiZTIzMTYzMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcApAQCAtMjY4LDEzICsyNjgsMTMgQEAg
Ym9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBXZWJQ
YWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBLVVJMJikKK2Jvb2wgV2ViUGFn
ZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hl
ZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2ViUGFnZTo6Y2Fj
aGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMjg2LDEzICsyODYsMTMgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZp
bGVuYW1lRm9yVVJMKGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3Rl
ZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdl
OjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgS1VSTCYpCitQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCmluZGV4IDgwZGI0MzEwN2IzMDA1MTcx
MGE5NGEyMTRiOTE5YjljOTE0ZGNiN2QuLmI4NzA2ZWUzYmI2NTQzY2JhODg5MWFlNGZlMmMwMzk5
NDFmYTlhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c01hYy5tbQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQWN0aXZl
UGFnZXMoKQogICAgICAgICBpZiAoIW1haW5GcmFtZU9yaWdpbi0+aXNVbmlxdWUoKSkKICAgICAg
ICAgICAgIG1haW5GcmFtZU9yaWdpblN0cmluZyA9IG1haW5GcmFtZU9yaWdpbi0+dG9SYXdTdHJp
bmcoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbWFpbkZyYW1lT3JpZ2luU3RyaW5nID0g
S1VSTChLVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpLnByb3RvY29sKCkgKyAnOic7IC8vIHRvUmF3
U3RyaW5nKCkgaXMgbm90IHN1cHBvc2VkIHRvIHdvcmsgd2l0aCB1bmlxdWUgb3JpZ2lucywgYW5k
IHdvdWxkIGp1c3QgcmV0dXJuICI6Ly8iLgorICAgICAgICAgICAgbWFpbkZyYW1lT3JpZ2luU3Ry
aW5nID0gVVJMKFVSTCgpLCBtYWluRnJhbWUtPnVybCgpKS5wcm90b2NvbCgpICsgJzonOyAvLyB0
b1Jhd1N0cmluZygpIGlzIG5vdCBzdXBwb3NlZCB0byB3b3JrIHdpdGggdW5pcXVlIG9yaWdpbnMs
IGFuZCB3b3VsZCBqdXN0IHJldHVybiAiOi8vIi4KIAogICAgICAgICBOU1VSTCAqb3JpZ2luQXNO
U1VSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOm1haW5GcmFtZU9yaWdpblN0cmluZ107CiAgICAg
ICAgIC8vICtbTlNVUkwgVVJMV2l0aFN0cmluZzpdIHJldHVybnMgbmlsIHdoZW4gaXRzIGFyZ3Vt
ZW50IGlzIG1hbGZvcm1lZC4gSXQncyB1bmNsZWFyIGhvdyB3ZSBjYW4gcG9zc2libHkgaGF2ZSBh
IG1hbGZvcm1lZCBVUkwgaGVyZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCAzYzU2YTFkYTRhNTc4ZDY2NWY1OWJiYWEzNmZhYmUwMjczMWEyZTZm
Li5kMDg2Nzc3YmU1MWU0NTc2YzA5NWViYWI3ZmFmNjhkYzEyMTI3YmVhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFt
ZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNiAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVkaWFT
dHJlYW1dIG1ha2UgTWVkaWFTdHJlYW0gdGVzdGFibGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggMDRh
MjE1ZTc1ZmRhYzg2M2MxMDY1OWM2ZmI0N2E1ODZjZWY2OTU4OS4uNjA4NDlkNDlkZjUzM2U5MjRi
Mjg2MTRkMDljNjRlYjQ4Mzc4MDE3YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJKU0VsZW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgpAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgVGVzdFJ1bm5l
cjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogICAgIE93
bkFycmF5UHRyPGNoYXI+IHVybEFyciA9IGFkb3B0QXJyYXlQdHIobmV3IGNoYXJbdXJsQXJyU2l6
ZV0pOwogICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcodXJsLCB1cmxBcnIuZ2V0KCksIHVybEFy
clNpemUpOwogCi0gICAgV2ViQ29yZTo6S1VSTCBiYXNlID0gbWFpbkZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKTsKLSAgICBXZWJDb3JlOjpLVVJMIGFi
c29sdXRlKGJhc2UsIHVybEFyci5nZXQoKSk7CisgICAgV2ViQ29yZTo6VVJMIGJhc2UgPSBtYWlu
RnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLnVybCgpOworICAg
IFdlYkNvcmU6OlVSTCBhYnNvbHV0ZShiYXNlLCB1cmxBcnIuZ2V0KCkpOwogCiAgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGFic29sdXRlVVJMKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhhYnNvbHV0ZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgV29ya1F1
ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3IExvYWRJdGVtKGFic29sdXRlVVJMLmdldCgpLCB0YXJn
ZXQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1
ZXVlSXRlbUJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9X
b3JrUXVldWVJdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggODI3YjVlYmNlOTUzNzdkMTMzMmUxYjk3
YWFiY2ZjMGY1MjIzMTFkNy4uNWI0MWQ3ZTk0MTJlMWUxN2M3MmM3MjVkN2I1NzI3MGY3ZjYyYzQ4
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9Xb3JrUXVldWVJ
dGVtQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9X
b3JrUXVldWVJdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZUJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZFJlcXVlc3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCkBA
IC00Niw3ICs0Niw3IEBAIGJvb2wgTG9hZEl0ZW06Omludm9rZSgpIGNvbnN0CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCBrdXJsID0gS1VSTChLVVJM
KCksIHVybC5nZXQoKSk7CisgICAgVVJMIGt1cmwgPSBVUkwoVVJMKCksIHVybC5nZXQoKSk7CiAg
ICAgZnJhbWUtPmxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUsIFJlc291cmNl
UmVxdWVzdChrdXJsKSkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggZDIyNTU5NDUyYTNi
MzNlMTA5ZDIwZTc0MGI5MWExMjk2NWIwZTBkZi4uNWY4YjRkYzllZTFmMGI5MWY5YzEzNDdkMDVl
MDlkZGE2ZDBjOTk0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJl
bmRlclRyZWVDaHJvbWUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiRWRpdGluZ0Nh
bGxiYWNrcy5oIgogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiR0NDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIlRleHRJ
bnB1dENvbnRyb2xsZXIuaCIKQEAgLTMzNywxNCArMzM3LDE0IEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWVDaHJvbWU6OnJlc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXMoKQogCiBzdGF0aWMgU3Ry
aW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewot
ICAgIEtVUkwgdXJpID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CisgICAgVVJM
IHVyaSA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVyaVN0cmluZyk7CiAgICAgaWYgKHVyaS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAiKG51bGwpIjsKIAogICAgIGlmICghdXJpLmlzTG9jYWxG
aWxlKCkpCiAgICAgICAgIHJldHVybiB1cmkuc3RyaW5nKCk7CiAKLSAgICBLVVJMIG1haW5GcmFt
ZVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBld2tfZnJhbWVfdXJpX2dldChicm93c2VyLT5t
YWluRnJhbWUoKSkpOworICAgIFVSTCBtYWluRnJhbWVVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5n
LCBld2tfZnJhbWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpOwogICAgIGlmIChtYWlu
RnJhbWVVUkwuaXNFbXB0eSgpKQogICAgICAgICBtYWluRnJhbWVVUkwgPSBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnByb3Zpc2lvbmFsVVJMKGJyb3dzZXItPm1haW5GcmFtZSgpKTsKIApAQCAt
NTU1LDcgKzU1NSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uV2lsbFNlbmRSZXF1
ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBLVVJMIHVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtZXNzYWdlcy0+
cmVxdWVzdC0+dXJsKTsKKyAgICBVUkwgdXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgbWVzc2Fn
ZXMtPnJlcXVlc3QtPnVybCk7CiAKICAgICBpZiAodXJsLmlzVmFsaWQoKQogICAgICAgICAmJiB1
cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpCkBAIC04MDAsNyArODAwLDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZUNocm9tZTo6b25SZXNwb25zZVJlY2VpdmVkKHZvaWQqLCBFdmFzX09iamVjdCos
IHZvaWQqIGV2ZW50SW4KIAogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFJlc291
cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSkgewogICAgICAgICBwcmludGYoIiVzIGhhcyBNSU1FIHR5
cGUgJXNcbiIsCi0gICAgICAgICAgICAgICBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2Ut
PnVybCkubGFzdFBhdGhDb21wb25lbnQoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAg
VVJMKFBhcnNlZFVSTFN0cmluZywgcmVzcG9uc2UtPnVybCkubGFzdFBhdGhDb21wb25lbnQoKS51
dGY4KCkuZGF0YSgpLAogICAgICAgICAgICAgICAgcmVzcG9uc2UtPm1pbWVfdHlwZSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDlm
NjZlOTVlOWMzMzg0MmZjZGIwZmE1OThiOTE1NzJiYmM4ZTQ1N2UuLjA3NDZlNTIwZjAyOWExNWMy
M2MzNWNhMTI3OWYyZWYwOGZhNjc1OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVz
dFJ1bm5lckVmbC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1JldGFpblB0ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KLSNpbmNsdWRlIDxL
VVJMLmg+CisjaW5jbHVkZSA8VVJMLmg+CiAjaW5jbHVkZSA8ZWRpdGluZy9GaW5kT3B0aW9ucy5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0xNTcsOCArMTU3LDggQEAgSlNTdHJpbmdSZWYgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNv
dXJjZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdXIKIAogdm9pZCBUZXN0UnVu
bmVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCiB7Ci0g
ICAgV2ViQ29yZTo6S1VSTCBiYXNlVVJMKFdlYkNvcmU6OktVUkwoKSwgU3RyaW5nOjpmcm9tVVRG
OChld2tfZnJhbWVfdXJpX2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpKTsKLSAgICBXZWJDb3Jl
OjpLVVJMIGFic29sdXRlVVJMKGJhc2VVUkwsIHVybC0+c3RyaW5nKCkpOworICAgIFdlYkNvcmU6
OlVSTCBiYXNlVVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGV3a19mcmFtZV91
cmlfZ2V0KGJyb3dzZXItPm1haW5GcmFtZSgpKSkpOworICAgIFdlYkNvcmU6OlVSTCBhYnNvbHV0
ZVVSTChiYXNlVVJMLCB1cmwtPnN0cmluZygpKTsKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBqc0Fic29sdXRlVVJMKAogICAgICAgICBBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYWJzb2x1dGVVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpAQCAtMTk2LDcg
KzE5Niw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2Nyb2xsYmFyUG9saWN5KEpTU3RyaW5nUmVm
LCBKU1N0cmluZ1JlZikKIAogdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIHByb3RvY29sLCBK
U1N0cmluZ1JlZiBob3N0LCBib29sIGluY2x1ZGVTdWJkb21haW5zKQogewotICAgIFdlYkNvcmU6
OktVUkwga3VybDsKKyAgICBXZWJDb3JlOjpVUkwga3VybDsKICAgICBrdXJsLnNldFByb3RvY29s
KFN0cmluZyhwcm90b2NvbC0+Y2hhcmFjdGVycygpLCBwcm90b2NvbC0+bGVuZ3RoKCkpKTsKICAg
ICBrdXJsLnNldEhvc3QoU3RyaW5nKGhvc3QtPmNoYXJhY3RlcnMoKSwgaG9zdC0+bGVuZ3RoKCkp
KTsKIApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluCiAKIHZvaWQg
VGVzdFJ1bm5lcjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoSlNTdHJpbmdSZWYg
c291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBwcm90b2NvbCwgSlNTdHJpbmdSZWYgaG9zdCwgYm9v
bCBpbmNsdWRlU3ViZG9tYWlucykKIHsKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmw7CisgICAgV2Vi
Q29yZTo6VVJMIGt1cmw7CiAgICAga3VybC5zZXRQcm90b2NvbChTdHJpbmcocHJvdG9jb2wtPmNo
YXJhY3RlcnMoKSwgcHJvdG9jb2wtPmxlbmd0aCgpKSk7CiAgICAga3VybC5zZXRIb3N0KFN0cmlu
Zyhob3N0LT5jaGFyYWN0ZXJzKCksIGhvc3QtPmxlbmd0aCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUt
cmVuYW1lCmluZGV4IDZiZGZkZGVhZjQ3OGU2NzRlMTc5OTM0MmUwODg5OTFmZWFhNGI3OTYuLmFi
NTUyMmYwNjM3ZjAxMDU5NDdmNDE3ZGI3ZjU2NjUzMDkwYjcxYWIgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKKysrIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3Jl
LXJlbmFtZQpAQCAtNzQsNiArNzQsNyBAQCBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYkNvcmUi
KTsKIGZpbmQoXCZ3YW50ZWQsICJTb3VyY2UvV2ViS2l0Iik7CiBmaW5kKFwmd2FudGVkLCAiU291
cmNlL1dlYktpdDIiKTsKIGZpbmQoXCZ3YW50ZWQsICJUb29scy9EdW1wUmVuZGVyVHJlZSIpOwor
ZmluZChcJndhbnRlZCwgIlRvb2xzL1Rlc3RXZWJLaXRBUEkiKTsKIAogc3ViIHdhbnRlZAogewpA
QCAtOTMsMTEgKzk0LDE1IEBAIHN1YiB3YW50ZWQKIAogIyBTZXR0aW5nIGlzRE9NVHlwZVJlbmFt
ZSB0byAxIHJhdGhlciB0aGFuIDAgZXhwYW5kcyB0aGUgcmVnZXhwcyB1c2VkCiAjIGJlbG93IHRv
IGhhbmRsZSBjdXN0b20gSmF2YVNjcmlwdCBiaW5kaW5ncy4KLW15ICRpc0RPTVR5cGVSZW5hbWUg
PSAxOworbXkgJGlzRE9NVHlwZVJlbmFtZSA9IDA7CiBteSAlcmVuYW1lcyA9ICgKICAgICAjIFJl
bmFtZXMgZ28gaGVyZSBpbiB0aGUgZm9ybSBvZjoKLSAgICAiaXNUcmFuc2Zvcm1JbnZlcnRpYmxl
IiA9PiAiaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSIsCi0gICAgIm1faW52ZXJ0aWJsZUNUTSIgPT4g
Im1faGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSIsCisgICAgIldLVVJMIiA9PiAiV0tVUkwiLAorICAg
ICJLVVJMIiA9PiAiVVJMIiwKKyAgICAiS1VSTENGTmV0IiA9PiAiVVJMQ0YiLAorICAgICJLVVJM
SGFzaCIgPT4gIlVSTEhhc2giLAorICAgICJLVVJMTWFjIiA9PiAiVVJMTWFjIiwKKyAgICAiS1VS
TF9oIiA9PiAiVVJMX2giLAogKTsKIAogbXkgJXJlbmFtZXNDb250ZW1wbGF0ZWRGb3JUaGVGdXR1
cmUgPSAoCkBAIC0xMDgsMTIgKzExMyw2IEBAIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhl
RnV0dXJlID0gKAogICAgICJEYXRlSW5zdGFuY2UiID0+ICJKU0RhdGUiLAogICAgICJFcnJvcklu
c3RhbmNlIiA9PiAiSlNFcnJvciIsCiAKLSAgICAiS1VSTCIgPT4gIlVSTCIsCi0gICAgIktVUkxD
Rk5ldCIgPT4gIlVSTENGIiwKLSAgICAiS1VSTEhhc2giID0+ICJVUkxIYXNoIiwKLSAgICAiS1VS
TE1hYyIgPT4gIlVSTE1hYyIsCi0gICAgIktVUkxfaCIgPT4gIlVSTF9oIiwKLQogICAgICJUcmVl
U2hhcmVkIiA9PiAiVHJlZVJlZkNvdW50ZWQiLAogCiAgICAgIlN0cmluZ0ltcGwiID0+ICJTaGFy
ZWRTdHJpbmciLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggM2ZiMmQ2ZWE0ZmNj
NmU2MjcxOTQ4YTJiZjgwNTQ1MWU3YmU4MDU4MS4uZjAzM2E3NGY1MGI1NDE5NmVkMmVkNzQzZWVk
ODdmMTdhNWVkOTdjYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmls
ZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0xNjYsNyAr
MTY2LDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9MREZMQUdTID0gXAog
CS1uby1mYXN0LWluc3RhbGwKIAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViQ29yZV9T
T1VSQ0VTID0gXAotCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBc
CisJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAgXAogCVRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9MYXlvdXRVbml0LmNwcAogCiBQcm9ncmFtc19UZXN0
V2ViS2l0QVBJX1Rlc3RHdGtfQ1BQRkxBR1MgPSBcCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCBlMmU1NmZhNDAwNWNhNTdiNzZmNzkzMDQ4OTU2ZWZkOTJkNDhlMzczLi42
NWEzNzdhNzBmMmI1NDI1Y2ZmMmUyZTgwNWMwZTliODg3NjNiNzcwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQ5LDcgKzQ5LDcgQEAgc2V0KHdlYmtpdDJfYXBpX2hh
cm5lc3NfU09VUkNFUwogCiBzZXQodGVzdF93ZWJjb3JlX0JJTkFSSUVTCiAgICAgTGF5b3V0VW5p
dAotICAgIEtVUkwKKyAgICBVUkwKICkKIAogIyBJbiBoZXJlIHdlIGxpc3QgdGhlIGJ1bmRsZXMg
dGhhdCBhcmUgdXNlZCBieSBvdXIgc3BlY2lmaWMgV0syIEFQSSBUZXN0cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMGEwYjI2YzU2M2Q4NjI1MGNiYzUwMTRiM2M5YjI3
NDhlMjkzZWFkNC4uYjNkODFjNTRiYjYyMmY5NzQ0NTNiMzA3MGEwZmJhZDg5M2IyYWRjMCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02NCw3ICs2NCw3IEBAIGxpc3Qo
QVBQRU5EIHRlc3Rfd2ViY29yZV9MSUJSQVJJRVMKIAogc2V0KHRlc3Rfd2ViY29yZV9CSU5BUklF
UwogICAgIExheW91dFVuaXQKLSAgICBLVVJMCisgICAgVVJMCiApCiAKIHNldCh0ZXN0X3dlYmtp
dDJfYXBpX0JJTkFSSUVTCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE4NDBjYmU2MWFlNzcw
NDM1MGU0ZDBkZjMwOTNjOWMwMWRhNTBiZTAuLjZkNzljOTE5YTllNjc3YTNmZjY2YzhmOGIxYTQw
YTA1ZmYwNmJkNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NSw3ICs3NSw3IEBACiAJ
CTM3RTEwNjRDMTY5NzY4MTgwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxB
Ym92ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsRWxlbWVu
dENlbGxBYm92ZS5odG1sICovOyB9OwogCQkzN0UxMDY0RDE2OTc2Qzg1MDBCNzhCRDAgLyogRE9N
SFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAvKiBET01IVE1MVGFibGVD
ZWxsQ2VsbEFib3ZlLm1tICovOyB9OwogCQkzN0UzOEMzNDE2OUI3RDAxMDA4NEMyOEMgLyogV2Vi
Vmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAvKiBXZWJW
aWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovOyB9OwotCQk0NDBBMUQzOTE0QTAx
MDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAgKi87IH07
CisJCTQ0MEExRDM5MTRBMDEwM0EwMDhBNjZGMiAvKiBVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8q
IFVSTC5jcHAgKi87IH07CiAJCTRCQjQxNjAyMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJG
b3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5X
ZWJGcmFtZS5tbSAqLzsgfTsKIAkJNEJCNDE2MDQxNjgxNUY5MTAwODI0MjM4IC8qIEVsZW1lbnRB
dFBvaW50SW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDRCQjQxNjAzMTY4MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2Vi
RnJhbWUubW0gKi87IH07CiAJCTRCRkRGRkE3MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVz
dWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHRO
b2RlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CkBAIC0zODAsNyArMzgwLDcgQEAKIAkJMzdFMTA2
NEExNjk3Njc2NDAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01IVE1MVGFibGVDZWxsQ2VsbEFi
b3ZlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UxMDY0QjE2OTc2N0Y3MDBC
NzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3RTM4QzMzMTY5QjdEMDEwMDg0QzI4QyAv
KiBXZWJWaWV3RGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Lm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNo
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2
NkYyIC8qIEtVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gS1VS
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0MEExRDM4MTRBMDEwM0EwMDhB
NjZGMiAvKiBVUkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1
MTVCIC8qIFdURlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXVEZTdHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NEJCNDE2MDExNjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNXcmFwcGVyRm9yTm9k
ZUluV2ViRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRCQjQxNjAzMTY4
MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFbGVtZW50QXRQb2ludEluV2ViRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDYsNyArNjQ2LDcgQEAKIAkJNDQwQTFE
MzYxNEEwMTAwMDAwOEE2NkYyIC8qIFdlYkNvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAotCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBLVVJMLmNw
cCAqLywKKwkJCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCAqLywKIAkJCQkx
NDQ2NDAxMjE2N0E4MzA1MDAwQkQyMTggLyogTGF5b3V0VW5pdC5jcHAgKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IFdlYkNvcmU7CkBAIC0xMTQyLDcgKzExNDIsNyBAQAogCQkJCUMwQURCRTdDMTJGQ0E0
RDAwMEQyQzEyOSAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMDgx
MjI0MjEzRkMxNzI0MDBEQzM5QUUgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk0QkI0MTYwMjE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2Vi
RnJhbWUubW0gaW4gU291cmNlcyAqLywKLQkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyog
S1VSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyog
VVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NDY0MDEzMTY3QTgzMDUwMDBCRDIxOCAvKiBM
YXlvdXRVbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJENjQwQjU1MTc4NzVERkYwMEJGQUY5
OSAvKiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MzAw
QjE4MTY3NTVDRDkwMDY2ODg2RCAvKiBMaXN0SGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9LVVJMLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmVhZGU1NTg2MWU3NTkxOGI4NjYxZDZmZDQ3NzU2NDEyMjc4ZjM5Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldURlN0cmluZ1V0aWxpdGllcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgotI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLWNsYXNzIEtVUkxUZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgfQotfTsKLQotVEVTVF9GKEtVUkxU
ZXN0LCBLVVJMQ29uc3RydWN0b3JEZWZhdWx0KQotewotICAgIEtVUkwga3VybDsKLQotICAgIEVY
UEVDVF9UUlVFKGt1cmwuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmlzTnVsbCgp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc1ZhbGlkKCkpOwotfQotCi1URVNUX0YoS1VSTFRl
c3QsIEtVUkxDb25zdHJ1Y3RvckNvbnN0Q2hhcikKLXsKLSAgICBLVVJMIGt1cmwoUGFyc2VkVVJM
U3RyaW5nLCAiaHR0cDovL3VzZXJuYW1lOnBhc3N3b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2lu
ZGV4Lmh0bWw/dmFyPXZhbCNmcmFnbWVudCIpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNF
bXB0eSgpKTsKLSAgICBFWFBFQ1RfRkFMU0Uoa3VybC5pc051bGwoKSk7Ci0gICAgRVhQRUNUX1RS
VUUoa3VybC5pc1ZhbGlkKCkpOwotCi0gICAgRVhQRUNUX0VRKFN0cmluZygiaHR0cCIpLCBrdXJs
LnByb3RvY29sKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBr
dXJsLmhvc3QoKSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5oYXNQb3J0KCkpOwotICAgIEVYUEVD
VF9FUSg4MDgwLCBrdXJsLnBvcnQoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUi
KSwga3VybC51c2VyKCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwu
cGFzcygpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgo
KSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygiaW5kZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29t
cG9uZW50KCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgp
KTsKLSAgICBFWFBFQ1RfVFJVRShrdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKLSAgICBF
WFBFQ1RfRVEoU3RyaW5nKCJmcmFnbWVudCIpLCBrdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsK
LX0KLQotVEVTVF9GKEtVUkxUZXN0LCBLVVJMRGF0YVVSSVN0cmluZ1NoYXJpbmcpCi17Ci0gICAg
S1VSTCBiYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsK
LSAgICBTdHJpbmcgdGhyZWVBcHBsZXMgPSAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7
YmFzZTY0LDc2Ty83Nk8vNzZPLyI7Ci0KLSAgICBLVVJMIHVybChiYXNlVVJMLCB0aHJlZUFwcGxl
cyk7Ci0gICAgRVhQRUNUX0VRKHRocmVlQXBwbGVzLmltcGwoKSwgdXJsLnN0cmluZygpLmltcGwo
KSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGE3ZjUzOTc3NjczYzZkMDYwOThi
ODZmMDcyZTcxZjUyMDdhZjgwZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitjbGFzcyBVUkxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CisgICAgfQorfTsKKworVEVTVF9GKFVSTFRlc3QsIFVSTENvbnN0cnVjdG9yRGVmYXVs
dCkKK3sKKyAgICBVUkwga3VybDsKKworICAgIEVYUEVDVF9UUlVFKGt1cmwuaXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfVFJVRShrdXJsLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3VybC5p
c1ZhbGlkKCkpOworfQorCitURVNUX0YoVVJMVGVzdCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIp
Cit7CisgICAgVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL3VzZXJuYW1lOnBhc3N3
b3JkQHd3dy5leGFtcGxlLmNvbTo4MDgwL2luZGV4Lmh0bWw/dmFyPXZhbCNmcmFnbWVudCIpOwor
CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoa3Vy
bC5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5pc1ZhbGlkKCkpOworCisgICAgRVhQ
RUNUX0VRKFN0cmluZygiaHR0cCIpLCBrdXJsLnByb3RvY29sKCkpOworICAgIEVYUEVDVF9FUShT
dHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBrdXJsLmhvc3QoKSk7CisgICAgRVhQRUNUX1RSVUUo
a3VybC5oYXNQb3J0KCkpOworICAgIEVYUEVDVF9FUSg4MDgwLCBrdXJsLnBvcnQoKSk7CisgICAg
RVhQRUNUX0VRKFN0cmluZygidXNlcm5hbWUiKSwga3VybC51c2VyKCkpOworICAgIEVYUEVDVF9F
UShTdHJpbmcoInBhc3N3b3JkIiksIGt1cmwucGFzcygpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCIvaW5kZXguaHRtbCIpLCBrdXJsLnBhdGgoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiaW5k
ZXguaHRtbCIpLCBrdXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgIEVYUEVDVF9FUShTdHJp
bmcoInZhcj12YWwiKSwga3VybC5xdWVyeSgpKTsKKyAgICBFWFBFQ1RfVFJVRShrdXJsLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJmcmFnbWVudCIpLCBr
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKK30KKworVEVTVF9GKFVSTFRlc3QsIFVSTERhdGFV
UklTdHJpbmdTaGFyaW5nKQoreworICAgIFVSTCBiYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgImh0
dHA6Ly93d3cud2Via2l0Lm9yZy8iKTsKKyAgICBTdHJpbmcgdGhyZWVBcHBsZXMgPSAiZGF0YTp0
ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyI7CisKKyAgICBVUkwg
dXJsKGJhc2VVUkwsIHRocmVlQXBwbGVzKTsKKyAgICBFWFBFQ1RfRVEodGhyZWVBcHBsZXMuaW1w
bCgpLCB1cmwuc3RyaW5nKCkuaW1wbCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212811</attachid>
            <date>2013-09-27 08:20:20 -0700</date>
            <delta_ts>2013-09-27 08:23:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-16214-20130927082003.patch</filename>
            <type>text/plain</type>
            <size>1592469</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc1YjkyMjc3ZGE2YmNi
ZjE3NjkxZmE5ZWJkMGRjYWM4MTU3YmMxMC4uODc2YzJlMzBmOTQ2MDg4NWY3N2YyNmEyMWE4NmE0
MGJiZjRjMDQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI2ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICByZW5hbWUgS1VSTCB0byBVUkwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtYW55IGZp
bGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDktMjcgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBlbXB0eSBNYWluRnJhbWUgY2xhc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNGU3YTZmNDdkMjc4MDc3YWFjMjQ0OGZiNmNjYTRjZmFkNGZjM2ZkZS4uZmU3MzBk
ZDg5ZmU1OThhYmJlMDk4MzhmNTY5MmU4YjQwZjdkMTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluOgorICAgICAgICBMZXQgdGhlIHNjcmlwdCB0byB0cnkgdG8gcmVuYW1l
IGhlcmUuCisKIDIwMTMtMDktMjYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01lZGlhU3RyZWFtXSBtYWtlIE1lZGlhU3RyZWFtIHRlc3RhYmxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBjODZkMDk4NWNhMDlkOWRlZTFkNjkxMzBi
NGZjNmEyMjg0ZjdhYjJlLi45Njc2MzNkNTY2YmRlYTAyYTIyMDYyM2MwYWQ5YTI4NGQ5YzliY2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0w
OS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtV
UkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI1ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggMTU3
OTc2MTc4YzFhNjJmYjRhZTM4MDc4MTAxYTFlYjkyYzVlMmIyOC4uOGRiZDZlZDRmNTIwZWNhZGQw
NTcwZmQyYmY2ZjA5MGQ2ZTUyOTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDEzLTA5LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBy
ZW5hbWUgS1VSTCB0byBVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBtYW55IGZpbGVzOiBSZW5hbWVkLCB1c2luZyBzY3JpcHQuCisKIDIwMTMtMDkt
MjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBlbXB0eSBN
YWluRnJhbWUgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAyY2RhYzhmMjIwN2M5ODBlMWY1Y2Mx
YjljN2UyNDkwNDQ2MDM4ZmEzLi5lMWZjM2FmNTE5OWZhOWNiNjQxMDNlNDJhZGQyMTVhM2QyYTA5
YzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmls
ZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNyAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGVtcHR5IE1haW5GcmFtZSBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IGIxMTAxN2E0NDNlMGQxY2JmYzEyMjgyZTM1YjM0MjA4NTY1MWRlNjMu
LjNiMDMwOTk1ZTQwMWNhOWUyM2JlZWIyNjFkYTg4YzFjMjc3MmJlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcg
c2NyaXB0LgorCiAyMDEzLTA5LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgZW1wdHkgTWFpbkZyYW1lIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGQ5ODE2
MDc1NGVhYWFhZjZkODk5M2IxZGViNGJlY2IwN2I0YmRmMzYuLjVlYmRjNzZiNGY1ZTcwZDU1NzBk
OWFhMzIxZTU0MDU3YjA0NWM2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHJlbmFt
ZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVzaW5nIHNjcmlwdC4KKwogMjAxMy0wOS0yNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGVtcHR5IE1haW5G
cmFtZSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGVhMTA2NzU3NDU2YjA0NGVjYjcxOGM4ZmQ1
YTI3ZmY4YjhjZTY3M2MuLmI0YjhhNjY2YWU4MWI2YWNmNjVjZjkxMjk1YTBiYzZjMTUxN2ZhYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczog
UmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI3ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZW1wdHkgTWFpbkZyYW1lIGNsYXNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCmluZGV4IGU1OGJkOGZmNzFhNTlhYThkN2JiMThiYTUzMzRhNzhkNjFjNWJmYzIu
LjRiZmMwM2IwMDNjOTUzZTEzMzUwZDk1ZmI0YjFkOTJiYTFmOGFhY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDktMjYgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIHJlbmFtZSBLVVJMIHRvIFVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1hbnkgZmlsZXM6IFJlbmFtZWQsIHVz
aW5nIHNjcmlwdC4KKwogMjAxMy0wOS0xNiAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZGlkU2V0U2VsZWN0aW9uVHlw
ZXNGb3JQYXN0ZWJvYXJkIGZyb20gRWRpdG9yQ2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDMwMDg4ODA2
NzEwMmQ1ZTEzMzRlYjBkOGRkN2EwNzc2NGRlY2ZmMDAuLjljNzc4MTM0ZmYyNTU5MzIwMzU4YjVm
YjE1NjAxMjNlYjkwNTEzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0y
NiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwg
dG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2NyaXB0LgorCiAyMDEzLTA5LTI3ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZW1wdHkgTWFpbkZyYW1lIGNs
YXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDdjYzYzMjJkMzk4MTViOTM5NDUzNzY0ZjJmODA0
NThhYjg2MzJiYzAuLjdhMjIzODU0NDg0Y2MxMTQ0NzNiOWEwMjg1MTNkOTI5YTFlNDliNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODE3LDcgKzE4MTcsNyBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVt
LmNwcAogICAgIHBsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuY3BwCi0gICAgcGxhdGZvcm0vS1VS
TC5jcHAKKyAgICBwbGF0Zm9ybS9VUkwuY3BwCiAgICAgcGxhdGZvcm0vS2lsbFJpbmdOb25lLmNw
cAogICAgIHBsYXRmb3JtL0xhbmd1YWdlLmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM0YTlhZGNkNDA5NzkwNDYxODhiYjYwZWE5
NDQxZDY0YTg4ODQwMDguLjQ4YzE0ODJlYjkwNDc5NjEzZDNlMzA5ZmUyYWZiOGRmNDBjYzFmMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjA1OSw5ICs2MDU5LDkgQEAgcGxh
dGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSGlzdG9ncmFtU3Vw
cG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hpc3RvZ3JhbVN1cHBvcnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMSGFzaC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkwuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LaWxsUmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LaWxsUmluZ05vbmUuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGRk
ODgxZjdjNGNkNGZlZjAyNDAwYTljOTZkNTc5MjY3MGM1MWFlYzkuLjJmYzFmODMxZGVmYWRmZTVm
YzkzN2YwMGNjMzczOGRkY2NjNTVlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gc3RhdGljCi1QYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERP
TUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkws
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW0+IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNv
bnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihu
ZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVT
eXN0ZW0pKSk7CiAgICAgZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CkBAIC04MywxMCAr
ODMsMTAgQEAgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGVJ
c29sYXRlZEZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW8KICAgICByb290VVJMLmFwcGVuZChmaWxl
c3lzdGVtSWQpOwogICAgIHJvb3RVUkwuYXBwZW5kKCIvIik7CiAKLSAgICByZXR1cm4gRE9NRmls
ZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVT
eXN0ZW1UeXBlSXNvbGF0ZWQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCByb290VVJMLnRvU3RyaW5n
KCkpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gRE9NRmlsZVN5c3Rl
bTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVzeXN0ZW1OYW1lLnRvU3RyaW5nKCksIEZpbGVTeXN0ZW1U
eXBlSXNvbGF0ZWQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHJvb3RVUkwudG9TdHJpbmcoKSksIEFz
eW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOwogfQogCi1ET01GaWxlU3lzdGVtOjpET01GaWxlU3lz
dGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK0RPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0
ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBG
aWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBET01GaWxlU3lzdGVtQmFzZShjb250
ZXh0LCBuYW1lLCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgLCBBY3RpdmVE
T01PYmplY3QoY29udGV4dCkKIHsKQEAgLTE1MCw3ICsxNTAsNyBAQCBuYW1lc3BhY2UgewogCiBj
bGFzcyBTbmFwc2hvdEZpbGVDYWxsYmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U25hcHNob3RGaWxlQ2FsbGJhY2s+
IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAg
c3RhdGljIFBhc3NPd25QdHI8U25hcHNob3RGaWxlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRy
PERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJM
JiB1cmwsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgU25hcHNob3RGaWxlQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgdXJsLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKICAgICB9CkBAIC0xODQsNyArMTg0LDcg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTbmFwc2hvdEZpbGVDYWxsYmFjayhQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYgbmFtZSwg
IGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFj
aywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIFNuYXBzaG90
RmlsZUNhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCAgY29uc3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBz
dWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykK
ICAgICAgICAgOiBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZShlcnJvckNhbGxiYWNrKQogICAgICAg
ICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQogICAgICAgICAsIG1fbmFtZShuYW1lKQpAQCAt
MTk1LDcgKzE5NSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9m
aWxlc3lzdGVtOwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwg
bV91cmw7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CiB9Owog
CkBAIC0yMDMsNyArMjAzLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVh
dGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCiB7Ci0gICAgS1VSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpOworICAgIFVSTCBmaWxlU3lzdGVtVVJMID0gY3JlYXRlRmlsZVN5c3RlbVVSTChmaWxl
RW50cnkpOwogICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFk
TWV0YWRhdGEoZmlsZVN5c3RlbVVSTCwgU25hcHNob3RGaWxlQ2FsbGJhY2s6OmNyZWF0ZSh0aGlz
LCBmaWxlRW50cnktPm5hbWUoKSwgZmlsZVN5c3RlbVVSTCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmls
ZXN5c3RlbS9ET01GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0
ZW0vRE9NRmlsZVN5c3RlbS5oCmluZGV4IGFlODExM2Y3MzZlYzcxZWMyMDNhMzE0NTNlMmFmMGNk
NjMyN2Y1ZGYuLjc5YWZjODhlMzdkOTVhODQ4Y2MwMDM0MDNhNmM2NThlNmRmZjg0NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW0uaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBGaWxlV3JpdGVyQ2FsbGJhY2s7CiAKIGNsYXNzIERPTUZp
bGVTeXN0ZW0gOiBwdWJsaWMgRE9NRmlsZVN5c3RlbUJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVt
VHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUsIGNvbnN0IFVS
TCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAogICAgIC8vIENyZWF0
ZXMgYSBuZXcgaXNvbGF0ZWQgZmlsZSBzeXN0ZW0gZm9yIHRoZSBnaXZlbiBmaWxlc3lzdGVtSWQu
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlSXNvbGF0ZWRGaWxl
U3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGZpbGVzeXN0ZW1J
ZCk7CkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRE9N
RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBG
aWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+KTsKKyAgICBET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBVUkwmIHJvb3RVUkwsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtPik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgbWV0aG9k
cy4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKaW5kZXgg
N2VmYWFjZWMwYmY2YTU3OGJhOTU3ZjkyMTNiNzAyMDRhZTRiM2I3NC4uZjZhNTIxNTE0NzhjNDRl
MmVjMGJiZTE4MmFlMTM4OTY1OTAyNGJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIGNvbnN0IHNpemVfdCBET01GaWxlU3lzdGVtQmFzZTo6dGVtcG9yYXJ5UGF0aFByZWZpeExl
bmd0aCA9IHNpemVvZihET01GaWxlU3lzdGVtCiBjb25zdCBjaGFyIERPTUZpbGVTeXN0ZW1CYXNl
Ojppc29sYXRlZFBhdGhQcmVmaXhbXSA9ICJpc29sYXRlZCI7CiBjb25zdCBzaXplX3QgRE9NRmls
ZVN5c3RlbUJhc2U6Omlzb2xhdGVkUGF0aFByZWZpeExlbmd0aCA9IHNpemVvZihET01GaWxlU3lz
dGVtQmFzZTo6aXNvbGF0ZWRQYXRoUHJlZml4KSAtIDE7CiAKLURPTUZpbGVTeXN0ZW1CYXNlOjpE
T01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG5hbWUsIEZpbGVTeXN0ZW1UeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCitET01GaWxlU3lzdGVt
QmFzZTo6RE9NRmlsZVN5c3RlbUJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBjb25zdCBVUkwmIHJvb3RV
UkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0ZW0pCiAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV90eXBlKHR5cGUp
CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmlzVmFsaWRUeXBlKEZp
bGVTeXN0ZW1UeXBlIHR5cGUpCiB9CiAKIC8vIHN0YXRpYwotYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5
cGUsIFN0cmluZyYgZmlsZVBhdGgpCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmFja0ZpbGVT
eXN0ZW1VUkwoY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0eXBlLCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIGlmICghdXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA1LDEwICsxMDUsMTAgQEAgYm9vbCBET01GaWxlU3lzdGVt
QmFzZTo6c3VwcG9ydHNUb1VSTCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUtVUkwg
RE9NRmlsZVN5c3RlbUJhc2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCkgY29uc3QKK1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5c3RlbVVSTChj
b25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAogewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6
aXNBYnNvbHV0ZShmdWxsUGF0aCkpOwotICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVS
TDsKKyAgICBVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKICAgICAvLyBSZW1vdmUgdGhl
IGV4dHJhIGxlYWRpbmcgc2xhc2guCiAgICAgdXJsLnNldFBhdGgodXJsLnBhdGgoKSArIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoZnVsbFBhdGguc3Vic3RyaW5nKDEpKSk7CiAgICAgcmV0
dXJuIHVybDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBTZWN1cml0eU9yaWdpbiogRE9NRmlsZVN5c3Rl
bUJhc2U6OnNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gbV9jb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpOwogfQogCi1LVVJMIERPTUZpbGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lz
dGVtVVJMKGNvbnN0IEVudHJ5QmFzZSogZW50cnkpIGNvbnN0CitVUkwgRE9NRmlsZVN5c3RlbUJh
c2U6OmNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKiBlbnRyeSkgY29uc3QKIHsK
ICAgICByZXR1cm4gY3JlYXRlRmlsZVN5c3RlbVVSTChlbnRyeS0+ZnVsbFBhdGgoKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NRmlsZVN5c3Rl
bUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVt
QmFzZS5oCmluZGV4IDNiNDI0NmE5MTA2ZjM4ZTdkNWEyZjAxMzRjNmFjYWQwZmY5MmY5ODQuLjI4
NzI4MzcwZGRhODA0YzAxMzEwZmFmZWUxOGY0MmQxNDBlMWMwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtQmFzZS5oCkBAIC0z
Niw3ICszNiw3IEBACiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbUZsYWdzLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgaXNvbGF0
ZWRQYXRoUHJlZml4W107CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpc29sYXRlZFBhdGhQcmVm
aXhMZW5ndGg7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
RmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01G
aWxlU3lzdGVtQmFzZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJM
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtQmFzZShjb250ZXh0LCBuYW1l
LCB0eXBlLCByb290VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKTsKICAgICB9CkBAIC03NCw3ICs3NCw3
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZTsgfQogICAgIEZpbGVTeXN0ZW1UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLSAgICBLVVJMIHJvb3RVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJM
OyB9CisgICAgVVJMIHJvb3RVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVzeXN0ZW1Sb290VVJM
OyB9CiAgICAgQXN5bmNGaWxlU3lzdGVtKiBhc3luY0ZpbGVTeXN0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2FzeW5jRmlsZVN5c3RlbS5nZXQoKTsgfQogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogCkBAIC04NSwxMCArODUsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
Y2xvbmFibGUoKSBjb25zdCB7IHJldHVybiBtX2Nsb25hYmxlOyB9CiAKICAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkVHlwZShGaWxlU3lzdGVtVHlwZSk7Ci0gICAgc3RhdGljIGJvb2wgY3JhY2tGaWxl
U3lzdGVtVVJMKGNvbnN0IEtVUkwmLCBGaWxlU3lzdGVtVHlwZSYsIFN0cmluZyYgZmlsZVBhdGgp
OworICAgIHN0YXRpYyBib29sIGNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBVUkwmLCBGaWxlU3lz
dGVtVHlwZSYsIFN0cmluZyYgZmlsZVBhdGgpOwogICAgIGJvb2wgc3VwcG9ydHNUb1VSTCgpIGNv
bnN0OwotICAgIEtVUkwgY3JlYXRlRmlsZVN5c3RlbVVSTChjb25zdCBFbnRyeUJhc2UqKSBjb25z
dDsKLSAgICBLVVJMIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkg
Y29uc3Q7CisgICAgVVJMIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgRW50cnlCYXNlKikgY29u
c3Q7CisgICAgVVJMIGNyZWF0ZUZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkg
Y29uc3Q7CiAKICAgICAvLyBBY3R1YWwgRmlsZVN5c3RlbSBBUEkgaW1wbGVtZW50YXRpb25zLiBB
bGwgdGhlIHZhbGlkaXR5IGNoZWNrcyBvbiB2aXJ0dWFsIHBhdGhzIGFyZSBkb25lIGF0IHRoaXMg
bGV2ZWwuCiAgICAgLy8gVGhleSByZXR1cm4gZmFsc2UgZm9yIGltbWVkaWF0ZSBlcnJvcnMgdGhh
dCBkb24ndCBpbnZvbHZlIGxvd2VyIEFzeW5jRmlsZVN5c3RlbSBsYXllciAoZS5nLiBmb3IgbmFt
ZSB2YWxpZGF0aW9uIGVycm9ycykuIE90aGVyd2lzZSB0aGV5IHJldHVybiB0cnVlIChidXQgbGF0
ZXIgbWF5IGNhbGwgYmFjayB3aXRoIGFuIHJ1bnRpbWUgZXJyb3IpLgpAQCAtMTAzLDEzICsxMDMs
MTMgQEAgcHVibGljOgogICAgIGJvb2wgcmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9y
eVJlYWRlckJhc2U+LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxi
YWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPik7CiAKIHByb3RlY3RlZDoKLSAgICBET01G
aWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW0+KTsKKyAgICBET01GaWxlU3lzdGVtQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJM
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogICAgIGZyaWVuZCBjbGFzcyBET01GaWxl
U3lzdGVtU3luYzsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIEZpbGVTeXN0ZW1UeXBlIG1fdHlwZTsKLSAgICBLVVJMIG1f
ZmlsZXN5c3RlbVJvb3RVUkw7CisgICAgVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7CiAgICAgYm9v
bCBtX2Nsb25hYmxlOwogCiAgICAgbXV0YWJsZSBPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBtX2Fz
eW5jRmlsZVN5c3RlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9ET01GaWxlU3lzdGVtU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVz
eXN0ZW0vRE9NRmlsZVN5c3RlbVN5bmMuY3BwCmluZGV4IDBjNmVhZTllYTBmN2EyOTA1MTZkNDU3
Yzg4NTk3YzAwODNiMTdkMjYuLmRkODYwMmQzNDg4MjBiMDdlNmVkYTAwMjczNDdlZDhkY2NkYzcz
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxl
U3lzdGVtU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RP
TUZpbGVTeXN0ZW1TeW5jLmNwcApAQCAtNTYsNyArNTYsNyBAQCBQYXNzUmVmUHRyPERPTUZpbGVT
eXN0ZW1TeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlKERPTUZpbGVTeXN0ZW1CYXNlKiBm
aWxlUwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbVN5bmMoZmlsZVN5c3Rl
bS0+bV9jb250ZXh0LCBmaWxlU3lzdGVtLT5uYW1lKCksIGZpbGVTeXN0ZW0tPnR5cGUoKSwgZmls
ZVN5c3RlbS0+cm9vdFVSTCgpLCBmaWxlU3lzdGVtLT5tX2FzeW5jRmlsZVN5c3RlbS5yZWxlYXNl
KCkpKTsKIH0KIAotRE9NRmlsZVN5c3RlbVN5bmM6OkRPTUZpbGVTeXN0ZW1TeW5jKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5
cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGFzeW5jRmlsZVN5c3RlbSkKK0RPTUZpbGVTeXN0ZW1TeW5jOjpET01GaWxlU3lzdGVtU3luYyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEZpbGVT
eXN0ZW1UeXBlIHR5cGUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKICAgICA6IERPTUZpbGVTeXN0ZW1CYXNlKGNvbnRleHQs
IG5hbWUsIHR5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSkKIHsKIH0KQEAgLTk4LDcgKzk4
LDcgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPENyZWF0
ZUZpbGVSZXN1bHQ+OwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDcmVhdGVGaWxl
SGVscGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQorICAg
IHN0YXRpYyBQYXNzT3duUHRyPENyZWF0ZUZpbGVIZWxwZXI+IGNyZWF0ZShQYXNzUmVmUHRyPENy
ZWF0ZUZpbGVSZXN1bHQ+IHJlc3VsdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVy
bCwgRmlsZVN5c3RlbVR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ3JlYXRlRmlsZUhlbHBlcihyZXN1bHQsIG5hbWUsIHVybCwgdHlwZSkpOwogICAgIH0KQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiBwcml2YXRlOgotICAg
IENyZWF0ZUZpbGVIZWxwZXIoUGFzc1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSB0eXBlKQor
ICAgIENyZWF0ZUZpbGVIZWxwZXIoUGFzc1JlZlB0cjxDcmVhdGVGaWxlUmVzdWx0PiByZXN1bHQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlIHR5cGUp
CiAgICAgICAgIDogbV9yZXN1bHQocmVzdWx0KQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAg
ICAgICAsIG1fdXJsKHVybCkKQEAgLTE0Niw3ICsxNDYsNyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPENyZWF0ZUZpbGVSZXN1bHQ+IG1fcmVzdWx0OwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAg
S1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgRmlsZVN5c3RlbVR5cGUgbV90eXBlOwog
fTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPEZpbGU+IERPTUZp
bGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIEtVUkwgZmlsZVN5c3RlbVVS
TCA9IGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVudHJ5KTsKKyAgICBVUkwgZmlsZVN5c3RlbVVS
TCA9IGNyZWF0ZUZpbGVTeXN0ZW1VUkwoZmlsZUVudHJ5KTsKICAgICBSZWZQdHI8Q3JlYXRlRmls
ZUhlbHBlcjo6Q3JlYXRlRmlsZVJlc3VsdD4gcmVzdWx0KENyZWF0ZUZpbGVIZWxwZXI6OkNyZWF0
ZUZpbGVSZXN1bHQ6OmNyZWF0ZSgpKTsKICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlU25h
cHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVTeXN0ZW1VUkwsIENyZWF0ZUZpbGVIZWxwZXI6
OmNyZWF0ZShyZXN1bHQsIGZpbGVFbnRyeS0+bmFtZSgpLCBmaWxlU3lzdGVtVVJMLCB0eXBlKCkp
KTsKICAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9N
RmlsZVN5c3RlbVN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01G
aWxlU3lzdGVtU3luYy5oCmluZGV4IDI0ZmJkMTU5NGJhODVjMmJiNmFkY2M0MDE4ZjFlOTYyYzEw
Y2VkMmYuLjI2MjliZGY2NGZkMWJjNmNiY2EyNTAxYTJmYTcxODMxOTJkNTEyZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3luYy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9ET01GaWxlU3lzdGVtU3lu
Yy5oCkBAIC00Niw3ICs0Niw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IERPTUZpbGVTeXN0ZW1TeW5jIDogcHVibGljIERPTUZpbGVTeXN0ZW1CYXNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3luYz4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRmlsZVN5c3RlbVR5
cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGFzeW5jRmlsZVN5c3RlbSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtU3lu
Yz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtU3luYyhjb250ZXh0LCBuYW1lLCB0eXBlLCByb290
VVJMLCBhc3luY0ZpbGVTeXN0ZW0pKTsKICAgICB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBQYXNzUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVu
dHJ5U3luYyosIEV4Y2VwdGlvbkNvZGUmKTsKIAogcHJpdmF0ZToKLSAgICBET01GaWxlU3lzdGVt
U3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBGaWxlU3lz
dGVtVHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
KTsKKyAgICBET01GaWxlU3lzdGVtU3luYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBGaWxlU3lzdGVtVHlwZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4pOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0RPTVdpbmRvd0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDE3
OWVjZTZmNDQ5MTc3NzE2NThiZTIwNGMxNmYyZGI5NzM3MWU1MmQuLjgyM2E1ZWQxNmI1MzkyMjNh
ZDU5NDdlOGM1YmJhNWI1MjZjZDg1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbS9ET01XaW5kb3dGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRE9NV2luZG93RmlsZVN5c3RlbS5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBET01XaW5kb3dGaWxlU3lzdGVtOjp3ZWJraXRSZXNvbHZlTG9jYWxGaWxlU3lz
dGVtVVJMKERPTVdpbmRvdyogd2luZG93LCBjb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Vj
dXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwodXJsKTsKKyAg
ICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgaWYg
KCFBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5B
Y2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyaXR5T3JpZ2luLT5jYW5SZXF1ZXN0KGNvbXBsZXRl
ZFVSTCkpIHsKICAgICAgICAgRE9NRmlsZVN5c3RlbTo6c2NoZWR1bGVDYWxsYmFjayhkb2N1bWVu
dCwgZXJyb3JDYWxsYmFjaywgRmlsZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9F
UlIpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwCmluZGV4IDlkODFhMjI0NmMz
MjViZmJiOTllY2YzM2NlODIwYzk0ZTY5NzZiNGIuLjQyYjRhZmRhNzBjYzEzYTk0YTdhMDBiYzMx
NDc0Zjg1OGY3MjgzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5
c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RmlsZVN5
c3RlbUNhbGxiYWNrPiBzdWNjZXNzQwogewogfQogCi12b2lkIEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgcm9vdFVS
TCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKK3ZvaWQgRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVT
eXN0ZW0pCiB7CiAgICAgaWYgKG1fc3VjY2Vzc0NhbGxiYWNrKSB7CiAgICAgICAgIEFTU0VSVChh
c3luY0ZpbGVTeXN0ZW0pOwpAQCAtMjExLDcgKzIxMSw3IEBAIFJlc29sdmVVUklDYWxsYmFja3M6
OlJlc29sdmVVUklDYWxsYmFja3MoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhCiB7CiB9CiAKLXZvaWQgUmVzb2x2ZVVSSUNhbGxiYWNrczo6ZGlkT3BlbkZpbGVTeXN0ZW0o
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQordm9pZCBSZXNvbHZlVVJJQ2FsbGJhY2tzOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBBU1NF
UlQoYXN5bmNGaWxlU3lzdGVtKTsKICAgICBSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QgPSBE
T01GaWxlU3lzdGVtOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpLCBuYW1l
LCBtX3R5cGUsIHJvb3RVUkwsIGFzeW5jRmlsZVN5c3RlbSktPnJvb3QoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vRmlsZVN5c3RlbUNhbGxiYWNrcy5o
CmluZGV4IDI1ZmUzNjg1YzgzNjBjYWI3ZTljODY3NzM1NDgyZWY1ZDIyZDQyN2UuLjM5OWM1OTBi
Y2M0OGZjY2MzMmI4NTYxYzAyMzViY2YzZDhlMGRjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmlsZXN5c3RlbS9GaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtMTAy
LDcgKzEwMiw3IEBAIHByaXZhdGU6CiBjbGFzcyBGaWxlU3lzdGVtQ2FsbGJhY2tzIDogcHVibGlj
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0
cjxGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWxlU3lzdGVtQ2FsbGJh
Y2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
RmlsZVN5c3RlbVR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmIHJvb3RVUkwsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtPik7CisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4p
OwogCiBwcml2YXRlOgogICAgIEZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc1JlZlB0cjxGaWxlU3lz
dGVtQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRmlsZVN5c3RlbVR5cGUpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHByaXZhdGU6CiBj
bGFzcyBSZXNvbHZlVVJJQ2FsbGJhY2tzIDogcHVibGljIEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxSZXNvbHZlVVJJQ2FsbGJhY2tzPiBj
cmVhdGUoUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTeXN0ZW1UeXBlLCBjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBLVVJMJiByb290VVJMLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bT4pOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFVSTCYgcm9vdFVSTCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+KTsKIAog
cHJpdmF0ZToKICAgICBSZXNvbHZlVVJJQ2FsbGJhY2tzKFBhc3NSZWZQdHI8RW50cnlDYWxsYmFj
az4sIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBG
aWxlU3lzdGVtVHlwZSwgY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29w
ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDdkMmFlYTRiODBlZGZjZTVlMDRjZWIyNGEzYTcwNmMzNWQ0
MTljMTEuLjZkOTg0YWNhOTE3NjgzNTBhNzYxMDY4MmZjYmQ4NTgxN2FiZWIwZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3JrZXJHbG9iYWxTY29wZUZp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Xb3Jr
ZXJHbG9iYWxTY29wZUZpbGVTeXN0ZW0uY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbVN5bmM+IFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVx
dWVzdEZpbGVTeXN0CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGVGaWxlU3lzdGVtOjp3ZWJraXRS
ZXNvbHZlTG9jYWxGaWxlU3lzdGVtVVJMKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIEtVUkwgY29t
cGxldGVkVVJMID0gd29ya2VyLT5jb21wbGV0ZVVSTCh1cmwpOworICAgIFVSTCBjb21wbGV0ZWRV
UkwgPSB3b3JrZXItPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2VjdXJlQ29udGV4dCA9IHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpIHx8ICFzZWN1cmVDb250ZXh0LT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NGaWxlU3lzdGVtKCkgfHwgIXNlY3VyZUNvbnRleHQt
PnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoY29tcGxldGVkVVJMKSkgewogICAgICAgICBE
T01GaWxlU3lzdGVtOjpzY2hlZHVsZUNhbGxiYWNrKHdvcmtlciwgZXJyb3JDYWxsYmFjaywgRmls
ZUVycm9yOjpjcmVhdGUoRmlsZUVycm9yOjpTRUNVUklUWV9FUlIpKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2Fs
RmlsZVN5c3RlbVVSTChXb3JrZXJHbG9iYWxTYwogUGFzc1JlZlB0cjxFbnRyeVN5bmM+IFdvcmtl
ckdsb2JhbFNjb3BlRmlsZVN5c3RlbTo6d2Via2l0UmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVN5bmNV
UkwoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlciwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IHdvcmtl
ci0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0gd29ya2VyLT5jb21w
bGV0ZVVSTCh1cmwpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNlY3VyZUNvbnRleHQg
PSB3b3JrZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIUFzeW5jRmlsZVN5
c3RlbTo6aXNBdmFpbGFibGUoKSB8fCAhc2VjdXJlQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+
Y2FuQWNjZXNzRmlsZVN5c3RlbSgpIHx8ICFzZWN1cmVDb250ZXh0LT5zZWN1cml0eU9yaWdpbigp
LT5jYW5SZXF1ZXN0KGNvbXBsZXRlZFVSTCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9u
OjpTRUNVUklUWV9FUlI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAppbmRleCBkYjQ3NTFlMDA1YmM1ZTIw
YTQ4NDNmZjBiNGM3NjFjOWM5MWYzYzgxLi5hNjdlYzBmZjk4OWFkZTZlYWQwMDMxNzMyYzY5NmM4
NTViOWExYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VCYXNlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KIApAQCAtNDYsNyArNDYsNyBAQCBNZWRpYVNvdXJjZVJlZ2lzdHJ5JiBNZWRpYVNvdXJj
ZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQogCi12b2lkIE1l
ZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VS
TCYgdXJsLCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCit2b2lkIE1lZGlhU291cmNlUmVn
aXN0cnk6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiB1cmwsIFVSTFJl
Z2lzdHJhYmxlKiByZWdpc3RyYWJsZSkKIHsKICAgICBBU1NFUlQoJnJlZ2lzdHJhYmxlLT5yZWdp
c3RyeSgpID09IHRoaXMpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJiB1cmwsIFVSTFJlZ2lzCiAgICAgbV9tZWRpYVNvdXJjZXMuc2V0KHVy
bC5zdHJpbmcoKSwgc291cmNlKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJl
Z2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5y
ZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPiA+OjppdGVyYXRv
ciBpdGVyID0gbV9tZWRpYVNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnku
aAppbmRleCA0NmMyNGQ0ZTAzMDVmNmRkZGU5MWNmNGU4NDQxZjQ3N2M5NjQ4YTY2Li43OGQyN2Uw
MDY1YzQ3MWNjNzVjYWQyYmQ4MjJhYmY3MGNkMDYzMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaApAQCAt
NDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBNZWRpYVNvdXJjZUJhc2U7CiAKIGNsYXNzIE1lZGlhU291cmNlUmVnaXN0
cnkgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewpAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIE1lZGlhU291cmNlUmVnaXN0cnkmIHJlZ2lzdHJ5KCk7CiAKICAgICAvLyBSZWdpc3Rl
cnMgYSBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBtZWRpYSBzb3VyY2UuCi0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYs
IFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJV
UkwoY29uc3QgS1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBVUkxSZWdpc3RyYWJsZSogbG9va3VwKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKaW5kZXggMzZkMjdlNmZjODg4NGEzYWY5NzQ0
ODI2OWQyYjNhMTU3NzJmMTdlNi4uMjk2NzE4MWM5ZjdiZjdiZGY1YmY1ZmU3M2JlNzhmNDllZTE1
NTI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApA
QCAtNDEsMTQgKzQxLDE0IEBAIE1lZGlhU3RyZWFtUmVnaXN0cnkmIE1lZGlhU3RyZWFtUmVnaXN0
cnk6OnJlZ2lzdHJ5KCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJl
YW1SZWdpc3RyeTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiB1cmws
IFVSTFJlZ2lzdHJhYmxlKiBzdHJlYW0pCit2b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lz
dGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiB1cmwsIFVSTFJlZ2lzdHJhYmxlKiBz
dHJlYW0pCiB7CiAgICAgQVNTRVJUKCZzdHJlYW0tPnJlZ2lzdHJ5KCkgPT0gdGhpcyk7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX3N0cmVhbURlc2NyaXB0b3JzLnNldCh1cmwu
c3RyaW5nKCksIHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4oc3RyZWFtKS0+ZGVzY3JpcHRvcigp
KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtV
UkwmIHVybCkKK3ZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6dW5yZWdpc3RlclVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fc3RyZWFtRGVz
Y3JpcHRvcnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCmluZGV4IGU4YmU0
YzFiNDkwZjkzMGIxYTEzMDRkMGIxY2M2YTI3M2NlYmVmN2EuLmU0NmMyYjJkY2QwYWE1OTgyNGY1
ZWEyNzVjZDcwY2Q1NzE2NDU5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oCkBAIC0zNCw3ICszNCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNz
IE1lZGlhU3RyZWFtOwogY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogCkBAIC00NCw4ICs0
NCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTWVkaWFTdHJlYW1SZWdpc3RyeSYgcmVnaXN0cnko
KTsKIAogICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lm
aWVkIHN0cmVhbSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9y
aWdpbiosIGNvbnN0IEtVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3Ry
YWJsZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVS
TCYpIE9WRVJSSURFOwogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBsb29rdXBNZWRpYVN0
cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4
IGNlZDAyMzMyMWMyNjQ2MDViMjFhNzIyZGU4Njg5ZTlkMDZlNTE1YTEuLjA1MWUwZGRhNWFkMjE2
NTY2ZWIyNGU5MWRkY2NmN2ZiYWU2NDZlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC05OSw3ICs5
OSw3IEBAIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnBh
cnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uCiAgICAgICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgS1VS
TCB1cmwoS1VSTCgpLCB1cmxTdHJpbmcpOworICAgICAgICBVUkwgdXJsKFVSTCgpLCB1cmxTdHJp
bmcpOwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgISh1cmwucHJvdG9jb2xJcygidHVy
biIpIHx8IHVybC5wcm90b2NvbElzKCJzdHVuIikpKSB7CiAgICAgICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOwogICAgICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2
aWdhdG9yQ29udGVudFV0aWxzLmNwcAppbmRleCA5OWI5NmNmOThhYTg0ZmMzNmJkZjMxOTcwMTFi
MWE4ZGMwOTU5NjhkLi5mM2IxZGI4Njk2MjhjMGQxMmU0OThiNDQyZWUyMGM3YjE1N2RkMmZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9O
YXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2
aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKQEAgLTg2LDggKzg2
LDggQEAgc3RhdGljIGJvb2wgdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGMKICAgICBTdHJpbmcgbmV3VVJMID0gdXJsOwog
ICAgIG5ld1VSTC5yZW1vdmUoaW5kZXgsIFdURl9BUlJBWV9MRU5HVEgodG9rZW4pIC0gMSk7CiAK
LSAgICBLVVJMIGJhc2UoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKLSAgICBLVVJMIGt1cmwo
YmFzZSwgbmV3VVJMKTsKKyAgICBVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwor
ICAgIFVSTCBrdXJsKGJhc2UsIG5ld1VSTCk7CiAKICAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwg
IWt1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5k
ZXggYWFiNTY0OWZlNGZlNzJiZGQwNDIxYjI2MmFjY2YzNDI2OGNlMzQ0YS4uZjYyOWVjNzcwYzM5
NmIzNjIzZTJiMGVlMjEyODE3NzBjYTZjOTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDcg
QEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1faWNvbiA9IGljb25VUkkuaXNFbXB0eSgpID8gS1VSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5jb21wbGV0ZVVSTChpY29uVVJJKTsKKyAgICBtX2ljb24gPSBpY29uVVJJLmlzRW1w
dHkoKSA/IFVSTCgpIDogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTChpY29u
VVJJKTsKICAgICBpZiAoIW1faWNvbi5pc0VtcHR5KCkgJiYgIW1faWNvbi5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0xMjAsNyArMTIw
LDcgQEAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICBpZiAob3B0aW9ucy5nZXQoImRpciIs
IGFyZ3VtZW50KSkKICAgICAgICAgbm90aWZpY2F0aW9uLT5zZXREaXIoYXJndW1lbnQpOwogICAg
IGlmIChvcHRpb25zLmdldCgiaWNvbiIsIGFyZ3VtZW50KSkgewotICAgICAgICBLVVJMIGljb25V
UkkgPSBhcmd1bWVudC5pc0VtcHR5KCkgPyBLVVJMKCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTChh
cmd1bWVudCk7CisgICAgICAgIFVSTCBpY29uVVJJID0gYXJndW1lbnQuaXNFbXB0eSgpID8gVVJM
KCkgOiBjb250ZXh0LT5jb21wbGV0ZVVSTChhcmd1bWVudCk7CiAgICAgICAgIGlmICghaWNvblVS
SS5pc0VtcHR5KCkgJiYgaWNvblVSSS5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBub3RpZmljYXRp
b24tPnNldEljb25VUkwoaWNvblVSSSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IDUwN2E3ZmEzMGZiM2Q3
ZmZjNTJlNWQ5NjU1NzFmZWIwYTcxZjFkYzIuLjc5NjcwOTFiZDYzODMzMmM5YTRiNTA3YTc4MTRh
NDNkNTljMjkzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBY3RpdmVE
T01PYmplY3QuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAi
VGV4dERpcmVjdGlvbi5oIgpAQCAtODMsOCArODMsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2
b2lkIGNsb3NlKCk7CiAKLSAgICBLVVJMIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2ljb247
IH0KLSAgICB2b2lkIHNldEljb25VUkwoY29uc3QgS1VSTCYgdXJsKSB7IG1faWNvbiA9IHVybDsg
fQorICAgIFVSTCBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pY29uOyB9CisgICAgdm9pZCBz
ZXRJY29uVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1faWNvbiA9IHVybDsgfQogCiAgICAgU3RyaW5n
IHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQogICAgIFN0cmluZyBib2R5KCkgY29u
c3QgeyByZXR1cm4gbV9ib2R5OyB9CkBAIC0xNjQsNyArMTY0LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgLy8gVGV4dCBub3RpZmljYXRpb25zLgotICAgIEtVUkwgbV9pY29uOworICAgIFVS
TCBtX2ljb247CiAgICAgU3RyaW5nIG1fdGl0bGU7CiAgICAgU3RyaW5nIG1fYm9keTsKICAgICBT
dHJpbmcgbV9kaXJlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggOWU5MjgzNmU1NjRjYWM5
NmE5MGYzZjE1ZDljZDI5NmM1OWM0NWIwNC4uMjI4MTViZjdhNDBiYTNmM2U0YjZlNWQ0MjA0YTA1
ZTIyNDA0ZDlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApAQCAtMzksNyArMzksNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7
CiBjbGFzcyBOb3RpZmljYXRpb247CiBjbGFzcyBQYWdlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aEdyYW1tYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1h
ci5jcHAKaW5kZXggNTlkNDJmOTg4MDIzNDc3MTY5NWIyYjE0MjZlNWUxYTk5NjkxY2FjNS4uY2Rj
MWYyMjcyYjIyYmNjMDIxNGE4Y2I5MzUwMjcxZTMwODZkN2IxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
UGFzc1JlZlB0cjxTcGVlY2hHcmFtbWFyPiBTcGVlY2hHcmFtbWFyOjpjcmVhdGUoKQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3BlZWNoR3JhbW1hcik7CiB9CiAKLVBhc3NSZWZQdHI8U3BlZWNo
R3JhbW1hcj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdl
aWdodCkKK1Bhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKGNv
bnN0IFVSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3BlZWNoR3JhbW1hcihzcmMsIHdlaWdodCkpOwogfQpAQCAtNTQsNyArNTQsNyBAQCBTcGVlY2hH
cmFtbWFyOjpTcGVlY2hHcmFtbWFyKCkKIHsKIH0KIAotU3BlZWNoR3JhbW1hcjo6U3BlZWNoR3Jh
bW1hcihjb25zdCBLVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpCitTcGVlY2hHcmFtbWFyOjpTcGVl
Y2hHcmFtbWFyKGNvbnN0IFVSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KQogICAgIDogbV9zcmMoc3Jj
KQogICAgICwgbV93ZWlnaHQod2VpZ2h0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoR3JhbW1hci5oCmluZGV4IDc0YjAwYWQ3NjY2ZTE0MzQ4ZTYzNDMyODlkOTVj
ZWQ4OTEzNTdiNGYuLjQ5NDFmYjQyZmJjM2IzMmViMTRiOWNhZTA3MDY5OWQ3YTI1MTA1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaEdyYW1tYXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hHcmFtbWFyLmgKQEAgLTI4
LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTcGVlY2hHcmFtbWFyIDogcHVibGljIFJl
ZkNvdW50ZWQ8U3BlZWNoR3JhbW1hcj4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNwZWVjaEdyYW1tYXI+IGNyZWF0ZSgpOyAvLyBGSVhNRTogVGhlIHNwZWMgaXMgbm90IGNsZWFy
IG9uIHdoYXQgdGhlIGNvbnN0cnVjdG9yIHNob3VsZCBsb29rIGxpa2UuCi0gICAgc3RhdGljIFBh
c3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRlKGNvbnN0IEtVUkwmIHNyYywgZG91YmxlIHdl
aWdodCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BlZWNoR3JhbW1hcj4gY3JlYXRlKGNvbnN0
IFVSTCYgc3JjLCBkb3VibGUgd2VpZ2h0KTsKIAotICAgIGNvbnN0IEtVUkwmIHNyYyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgY29uc3QgeyByZXR1cm4gbV9zcmM7IH0KLSAgICBjb25zdCBLVVJM
JiBzcmMoKSBjb25zdCB7IHJldHVybiBtX3NyYzsgfQorICAgIGNvbnN0IFVSTCYgc3JjKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdCB7IHJldHVybiBtX3NyYzsgfQorICAgIGNvbnN0IFVS
TCYgc3JjKCkgY29uc3QgeyByZXR1cm4gbV9zcmM7IH0KICAgICB2b2lkIHNldFNyYyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBzcmMpOwogCiAgICAgZG91YmxlIHdlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VpZ2h0OyB9CkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTcGVlY2hHcmFtbWFyKCk7Ci0gICAgU3BlZWNoR3JhbW1hcihjb25z
dCBLVVJMJiBzcmMsIGRvdWJsZSB3ZWlnaHQpOworICAgIFNwZWVjaEdyYW1tYXIoY29uc3QgVVJM
JiBzcmMsIGRvdWJsZSB3ZWlnaHQpOwogCi0gICAgS1VSTCBtX3NyYzsKKyAgICBVUkwgbV9zcmM7
CiAgICAgZG91YmxlIG1fd2VpZ2h0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoR3JhbW1hckxpc3QuY3BwCmluZGV4IGMzZGRiZTExZjg5YWIzOWUz
NTc1NzdiOWNjNzEzNzljMmJlNDk5ZTIuLjJkYWE3OTNiMjJiMTIwNWY5Njc1NWMwMGY5YTBmNWYx
YTZlNzI0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVj
aEdyYW1tYXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hHcmFtbWFyTGlzdC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTcGVlY2hHcmFtbWFyTGlz
dDo6YWRkRnJvbVVyaShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXgKIHZvaWQgU3BlZWNoR3JhbW1hckxpc3Q6OmFkZEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGRvdWJsZSB3ZWlnaHQpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZyA9IFN0cmluZygi
ZGF0YTphcHBsaWNhdGlvbi94bWwsIikgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHN0
cmluZyk7Ci0gICAgbV9ncmFtbWFycy5hcHBlbmQoU3BlZWNoR3JhbW1hcjo6Y3JlYXRlKEtVUkwo
S1VSTCgpLCB1cmxTdHJpbmcpLCB3ZWlnaHQpKTsKKyAgICBtX2dyYW1tYXJzLmFwcGVuZChTcGVl
Y2hHcmFtbWFyOjpjcmVhdGUoVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCB3ZWlnaHQpKTsKIH0KIAog
U3BlZWNoR3JhbW1hckxpc3Q6OlNwZWVjaEdyYW1tYXJMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKaW5kZXggZmY3MjgzZDg1N2Y4ZTJjZGUzOGNmMDIzMzU4NDliYjdiZTQxZWZkZC4u
ZGVkMzRjODViYzI4NWZhZjk4ZjgzZDBlNzE0ODQyYzFmODZlYTRlOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3Owog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50OwogCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgSW52YWxpZE1lc3Nh
Z2UKICAgICB9OwogCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Vi
cHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBj
YWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwgU3RyaW5nIGV4dGVuc2lvbnMoKSA9IDA7
IC8vIFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZv
a2VkLgogICAgIHZpcnR1YWwgU2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAppbmRleCBkOTYwNjQxMmM2NmY0NzgwMDg0NjgzZDU3YzNmMWMyNjcwMTQzZDM2Li5hNDJiOWFi
OWRmY2JiNDI2OTE4Y2RjN2FlN2QxOTg4ODkwZTY4ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHZv
aWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBFeGNlcHRpb25Db2RlCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMn
IiwgdGhpcywgdXJsLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdXJsID0gS1VSTChLVVJMKCksIHVy
bCk7CisgICAgbV91cmwgPSBVUkwoVVJMKCksIHVybCk7CiAKICAgICBpZiAoIW1fdXJsLmlzVmFs
aWQoKSkgewogICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3Ig
V2ViU29ja2V0ICIgKyBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CkBA
IC0zOTgsNyArMzk4LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fY2hhbm5lbC0+Y2xv
c2UoY29kZSwgcmVhc29uKTsKIH0KIAotY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25z
dAorY29uc3QgVVJMJiBXZWJTb2NrZXQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJs
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmlu
ZGV4IGQ2N2M1NGNmODlhNGJhZTlhNDM1ZjBlYjY5ZjQ5NjljYjIzYzk1MGMuLjQwNDhjY2QyNWRk
NDhmMjIyZDViNGUwNTQ1YmViYmVmZWM5ZjkwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlICJF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpIHsgY2xvc2UoV2ViU29ja2V0Q2hhbm5lbDo6
Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQsIFN0cmluZygpLCBlYyk7IH0KICAgICB2b2lkIGNs
b3NlKGludCBjb2RlLCBFeGNlcHRpb25Db2RlJiBlYykgeyBjbG9zZShjb2RlLCBTdHJpbmcoKSwg
ZWMpOyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CiAKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gbV9jaGFubmVsOwogCiAg
ICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICB1
bnNpZ25lZCBsb25nIG1fYnVmZmVyZWRBbW91bnQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2J1ZmZl
cmVkQW1vdW50QWZ0ZXJDbG9zZTsKICAgICBCaW5hcnlUeXBlIG1fYmluYXJ5VHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCBlN2Y4ZGJkYWRiZDEzMWY4YmQwM2Y3NGY1NDc3ZWU0MmI0NDlmMGRhLi5hOTMy
YjNjMWZjNzBmNmZiNjczOGY4NGM1ZjkxNzg2ZDIzMzQwMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05
OSw3ICs5OSw3IEBAIFdlYlNvY2tldENoYW5uZWw6On5XZWJTb2NrZXRDaGFubmVsKCkKIHsKIH0K
IAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBMT0coTmV0d29yaywgIldl
YlNvY2tldENoYW5uZWwgJXAgY29ubmVjdCgpIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2hhbmRs
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaAppbmRleCBmMTQ4Y2Q5MWIwODEwMDhmOGJhZjUwMDVmZTA5YTQ5NzQ4MzcxNTA4
Li4zOTY0NjQ3ODUwOWI3MzA4MjZiYjQwMDU2MDZmOGViYTU3Y2JiMTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAg
LTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2VuZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9u
cy4KLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3Vi
cHJvdG9jb2woKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmlu
ZGV4IDU2M2Q3MTQwOGE3MTg2NjkzMWEzNWFkMGVhOTY3ZDhlMzc2YzM2NWYuLjFlYzEyNzdkMzEw
ODc5M2VkYjUxOWRhY2Y5NmE2MDQzOTQ1NGU4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00MSw3
ICs0MSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFw
LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgpAQCAtNjMsNyArNjMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyIHJhbmRvbUNoYXJhY3RlckluU2Vj
V2ViU29ja2V0S2V5W10gPSAiIVwiIyQlJicoKSorLC0uLzo7PD0+P0BBQkNERUZHSElKS0xNTk9Q
UVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4iOwogCi1zdGF0
aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHJl
c291cmNlTmFtZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIG5hbWU7CiAg
ICAgbmFtZS5hcHBlbmQodXJsLnBhdGgoKSk7CkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBTdHJp
bmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1zdGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCitz
dGF0aWMgU3RyaW5nIGhvc3ROYW1lKGNvbnN0IFVSTCYgdXJsLCBib29sIHNlY3VyZSkKIHsKICAg
ICBBU1NFUlQodXJsLnByb3RvY29sSXMoIndzcyIpID09IHNlY3VyZSk7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFN0cmluZyBXZWJTb2NrZXRIYW5kc2hh
a2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0
CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPiho
YXNoLmRhdGEoKSksIHNoYTFIYXNoU2l6ZSk7CiB9CiAKLVdlYlNvY2tldEhhbmRzaGFrZTo6V2Vi
U29ja2V0SGFuZHNoYWtlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1dlYlNvY2tldEhhbmRzaGFrZTo6V2Vi
U29ja2V0SGFuZHNoYWtlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogbV91cmwodXJsKQogICAgICwg
bV9jbGllbnRQcm90b2NvbChwcm90b2NvbCkKICAgICAsIG1fc2VjdXJlKG1fdXJsLnByb3RvY29s
SXMoIndzcyIpKQpAQCAtMTM2LDEyICsxMzYsMTIgQEAgV2ViU29ja2V0SGFuZHNoYWtlOjp+V2Vi
U29ja2V0SGFuZHNoYWtlKCkKIHsKIH0KIAotY29uc3QgS1VSTCYgV2ViU29ja2V0SGFuZHNoYWtl
Ojp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBXZWJTb2NrZXRIYW5kc2hha2U6OnVybCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdXJsOwogfQogCi12b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0
VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgbV91cmwgPSB1cmwuY29weSgpOwogfQpAQCAtMTk4LDcgKzE5
OCw3IEBAIENTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hha2VNZXNzYWdl
KCkgY29uc3QKICAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQogICAgICAgICBm
aWVsZHMuYXBwZW5kKCJTZWMtV2ViU29ja2V0LVByb3RvY29sOiAiICsgbV9jbGllbnRQcm90b2Nv
bCk7CiAKLSAgICBLVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMo
KTsKKyAgICBVUkwgdXJsID0gaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpOwog
ICAgIGlmIChtX2NvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSB0b0RvY3VtZW50KG1fY29udGV4dCk7CiAgICAgICAgIFN0cmluZyBjb29raWUgPSBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShkb2N1bWVudCwgdXJsKTsKQEAgLTI1MSw3ICsy
NTEsNyBAQCBSZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGllbnRIYW5kc2hh
a2VSZXF1ZXN0KCkgY29uc3QKICAgICBpZiAoIW1fY2xpZW50UHJvdG9jb2wuaXNFbXB0eSgpKQog
ICAgICAgICByZXF1ZXN0LmFkZEhUVFBIZWFkZXJGaWVsZCgiU2VjLVdlYlNvY2tldC1Qcm90b2Nv
bCIsIG1fY2xpZW50UHJvdG9jb2wpOwogCi0gICAgS1VSTCB1cmwgPSBodHRwVVJMRm9yQXV0aGVu
dGljYXRpb25BbmRDb29raWVzKCk7CisgICAgVVJMIHVybCA9IGh0dHBVUkxGb3JBdXRoZW50aWNh
dGlvbkFuZENvb2tpZXMoKTsKICAgICBpZiAobV9jb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX2NvbnRleHQpOwogICAgICAg
ICBTdHJpbmcgY29va2llID0gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZG9jdW1lbnQs
IHVybCk7CkBAIC0zODYsOSArMzg2LDkgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmFkZEV4
dGVuc2lvblByb2Nlc3NvcihQYXNzT3duUHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2MKICAgICBt
X2V4dGVuc2lvbkRpc3BhdGNoZXIuYWRkUHJvY2Vzc29yKHByb2Nlc3Nvcik7CiB9CiAKLUtVUkwg
V2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkg
Y29uc3QKK1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFu
ZENvb2tpZXMoKSBjb25zdAogewotICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgpOworICAgIFVS
TCB1cmwgPSBtX3VybC5jb3B5KCk7CiAgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJsLnNl
dFByb3RvY29sKG1fc2VjdXJlID8gImh0dHBzIiA6ICJodHRwIik7CiAgICAgQVNTRVJUX1VOVVNF
RChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKICAgICByZXR1cm4gdXJsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5oCmluZGV4IGM4N2FjNmJhNjMxNmZlZTg2ODBhNzYyMWQ0Yjk5MTYxM2ExNDFhZjYu
LmNjYWIwNDUwMTQxMzQ3OWNkNmM2Y2FhNDA3YWRiNmZiYWNmM2Q2ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgK
QEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldl
YlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvci5oIgpAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoK
ICAgICBlbnVtIE1vZGUgewogICAgICAgICBJbmNvbXBsZXRlLCBOb3JtYWwsIEZhaWxlZCwgQ29u
bmVjdGVkCiAgICAgfTsKLSAgICBXZWJTb2NrZXRIYW5kc2hha2UoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBXZWJTb2Nr
ZXRIYW5kc2hha2UoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogICAgIH5XZWJTb2NrZXRIYW5kc2hha2UoKTsKIAotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VVJMKGNvbnN0IEtVUkwmKTsKKyAgICBj
b25zdCBVUkwmIHVybCgpIGNvbnN0OworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYpOwogICAg
IGNvbnN0IFN0cmluZyBob3N0KCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGNsaWVudFBy
b3RvY29sKCkgY29uc3Q7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3Ry
aW5nIGdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KGNvbnN0IFN0cmluZyYgc2VjV2ViU29ja2V0
S2V5KTsKIAogcHJpdmF0ZToKLSAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENv
b2tpZXMoKSBjb25zdDsKKyAgICBVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2ll
cygpIGNvbnN0OwogCiAgICAgaW50IHJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwg
c2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQp
OwogCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NIZWFkZXJz
KCk7CiAgICAgYm9vbCBjaGVja1Jlc3BvbnNlSGVhZGVycygpOwogCi0gICAgS1VSTCBtX3VybDsK
KyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fY2xpZW50UHJvdG9jb2w7CiAgICAgYm9vbCBt
X3NlY3VyZTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBjOTM2ZWUwOTgwNGFlOWY4
YWU5YzhjYjFhZjMxMjdkZWRhN2I1MDIzLi5iNmJhMmQ2ZmE5NDI3YzY2NzRiZmNiYzJlYzJiNWM1
ZjFmY2UyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTY2LDcgKzY2LDcgQEAgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6On5Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpCiAgICAgICAgIG1fYnJpZGdlLT5kaXNjb25u
ZWN0KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNvbm5l
Y3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQordm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICBpZiAobV9icmlkZ2UpCiAgICAgICAgIG1fYnJpZGdl
LT5jb25uZWN0KHVybCwgcHJvdG9jb2wpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjp+UGVlcigpCiAgICAgICAgIG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcHJvdG9jb2wpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
Ojpjb25uZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVs
KQpAQCAtNDI4LDcgKzQyOCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1fd29ya2VyQ2xpZW50V3JhcHBlci0+
c2V0RmFpbGVkV2ViU29ja2V0Q2hhbm5lbENyZWF0aW9uKCk7CiB9CiAKLXZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBl
ZXIsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwpAQCAtNDM3LDcgKzQzNyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
CiAgICAgcGVlci0+Y29ubmVjdCh1cmwsIHByb3RvY29sKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90
b2NvbCkKIHsKICAgICBBU1NFUlQobV93b3JrZXJDbGllbnRXcmFwcGVyKTsKICAgICBpZiAoIW1f
cGVlcikKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbgogICAgIHBl
ZXItPnNlbmQoKmFycmF5QnVmZmVyKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRTZW5kQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBw
ZWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4
dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKaW5kZXggNDE5YWM0MmQ2YmMzOWQ4NmZiNmNjMmZiNzc5ZmMxYzY5ZWYyZGJhMC4u
ZmY5ODlkZjkwODc1ZjI3YjAxMzIwY2NiNGFlY2Q4MzI2MjA4YTI0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIGNsYXNzIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBl
cjsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIC8v
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQg
Y29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2Nv
bCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkgT1ZFUlJJREU7CkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgICAgICB+UGVlcigpOwogCi0gICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSk7CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJik7CiAg
ICAgICAgIHZvaWQgc2VuZChjb25zdCBCbG9iJik7CkBAIC0xMzIsNyArMTMyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICB+QnJpZGdlKCk7CiAgICAgICAgIHZvaWQgaW5pdGlhbGl6
ZSgpOwotICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wpOworICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CiAgICAgICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChjb25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWdu
ZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgICAgIFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgQmxvYiYpOwpAQCAtMTY5LDEw
ICsxNjksMTAgQEAgcHJpdmF0ZToKIAogICAgIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsKFdvcmtlckdsb2JhbFNjb3BlKiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCosIGNvbnN0IFN0
cmluZyYgdGFza01vZGUpOwogCi0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBw
cm90b2NvbCk7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsK
ICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVh
ZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIFBhc3NPd25Q
dHI8VmVjdG9yPGNoYXI+ID4pOwotICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kQmxvYihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZEJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVm
ZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMg
dm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRG
YWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKaW5kZXggOGQwMDBkNTZhMzI1ZmEzNjg5NmY3OTZhYjRiMjM1ZGQzZTgxYzBh
Yy4uMzgxYTRmZDYwZDVlYjRkZjUzN2ZkODZlZjFlOWUyY2VkNDA0OTcyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZ05vbmUu
Y3BwIFwKLSAgICBwbGF0Zm9ybS9LVVJMLmNwcCBcCisgICAgcGxhdGZvcm0vVVJMLmNwcCBcCiAg
ICAgcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9MZW5ndGguY3BwIFwKICAg
ICBwbGF0Zm9ybS9MZW5ndGhCb3guY3BwIFwKQEAgLTIyNDQsNyArMjI0NCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIFwK
ICAgICBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmggXAogICAg
IHBsYXRmb3JtL0tpbGxSaW5nLmggXAotICAgIHBsYXRmb3JtL0tVUkwuaCBcCisgICAgcGxhdGZv
cm0vVVJMLmggXAogICAgIHBsYXRmb3JtL0xlbmd0aC5oIFwKICAgICBwbGF0Zm9ybS9MZW5ndGhC
b3guaCBcCiAgICAgcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCQ29tcGFyYXRvci5oIFwKQEAgLTI5
MDUsNyArMjkwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ds
eXBoUGFnZVRyZWVOb2RlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TaW1wbGVG
b250RGF0YVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcCBcCi0g
ICAgcGxhdGZvcm0vcXQvS1VSTFF0LmNwcCBcCisgICAgcGxhdGZvcm0vcXQvVVJMUXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9xdC9NSU1FVHlwZVJlZ2lzdHJ5UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9x
dC9QYXN0ZWJvYXJkUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkNDY2MzRiYjQ2OGI5N2EyMDZjNzFm
MDQyYTljYzUzODFkNTQ4YTcwLi43NWIzN2E2N2UzYjAyNDM3YjU1YTc4YTdhNjA1NjEwM2E1NDI0
M2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjcsNyArNjcsNiBAQCBfX1pOM1dURjEwU3Ry
aW5nSW1wbGN2UDhOU1N0cmluZ0V2CiBfX1pOM1dURjEyQXRvbWljU3RyaW5nM2FkZEVQSzEwX19D
RlN0cmluZwogX19aTjNXVEY2U3RyaW5nQzFFUDhOU1N0cmluZwogX19aTjNXVEY2U3RyaW5nQzFF
UEsxMF9fQ0ZTdHJpbmcKLV9fWk43V2ViQ29yZThHcmFkaWVudEQxRXYKIF9fWk43V2ViQ29yZTEw
Q2xpZW50UmVjdEMxRVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUVS
S05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxMENsaWVudFJlY3RDMUV2CkBAIC04OSw2ICs4
OCw4IEBAIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWIK
IF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0UGFpbnRzRW50aXJlQ29udGVudHNFYgogX19a
TjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYgogX19aTjdX
ZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENoYW5nZWRFdgorX19aTjdXZWJD
b3JlMTBTY3JvbGxWaWV3NGhpZGVFdgorX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NHNob3dFdgog
X19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3NXBhaW50RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3OGFkZENoaWxkRU4zV1RGMTBQYXNz
UmVmUHRySU5TXzZXaWRnZXRFRUUKIF9fWk43V2ViQ29yZTEwU3RvcmFnZU1hcDEwcmVtb3ZlSXRl
bUVSS04zV1RGNlN0cmluZ0VSUzJfCkBAIC05OSwxMSArMTAwLDExIEBAIF9fWk43V2ViQ29yZTEw
U3RvcmFnZU1hcDZjcmVhdGVFagogX19aTjdXZWJDb3JlMTBTdG9yYWdlTWFwN3NldEl0ZW1FUktO
M1dURjZTdHJpbmdFUzRfUlMyX1JiCiBfX1pON1dlYkNvcmUxMGRlbGV0ZUZpbGVFUktOM1dURjZT
dHJpbmdFCiBfX1pON1dlYkNvcmUxMGZpbGVFeGlzdHNFUktOM1dURjZTdHJpbmdFCi1fX1pON1dl
YkNvcmUxMHNldENvb2tpZXNFUE5TXzhEb2N1bWVudEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5n
RQorX19aTjdXZWJDb3JlMTBzZXRDb29raWVzRVBOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTB0b0RvY3VtZW50RU4zSlNDN0pTVmFsdWVFCitfX1pO
N1dlYkNvcmUxMUJpdG1hcEltYWdlMTNnZXRDR0ltYWdlUmVmRXYKIF9fWk43V2ViQ29yZTExQml0
bWFwSW1hZ2VDMUVQN0NHSW1hZ2VQTlNfMTNJbWFnZU9ic2VydmVyRQogX19aTjdXZWJDb3JlMTFC
aXRtYXBJbWFnZUMxRVBOU18xM0ltYWdlT2JzZXJ2ZXJFCi1fX1pON1dlYkNvcmUxMUJpdG1hcElt
YWdlMTNnZXRDR0ltYWdlUmVmRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyM2NhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkRnJhbWUyNnNldENhY2hlZEZy
YW1lUGxhdGZvcm1EYXRhRU4zV1RGMTBQYXNzT3duUHRySU5TXzIzQ2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGFFRUUKIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMGNob29zZUZpbGVFUktOM1dURjZT
dHJpbmdFCkBAIC0xMTEsMTQgKzExMiwxMyBAQCBfX1pON1dlYkNvcmUxMUZpbGVDaG9vc2VyMTFj
aG9vc2VGaWxlc0VSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3JhcwogX19a
TjdXZWJDb3JlMTFGaWxlQ2hvb3NlckQxRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMWxv
YWRBcmNoaXZlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzdBcmNoaXZlRUVFCiBfX1pON1dlYkNvcmUx
MUZyYW1lTG9hZGVyMTFzaG91bGRDbG9zZUV2Ci1fX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1
cmxTZWxlY3RlZEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQdHJJTlNf
NUV2ZW50RUVFYmJOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKLV9fWk43V2ViQ29yZTExRnJhbWVM
b2FkZXIxMnNob3VsZFJlbG9hZEVSS05TXzRLVVJMRVMzXworX19aTjdXZWJDb3JlMTFGcmFtZUxv
YWRlcjExdXJsU2VsZWN0ZWRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRU5TNF8xMFBhc3NSZWZQ
dHJJTlNfNUV2ZW50RUVFYmJOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKIF9fWk43V2ViQ29yZTEx
RnJhbWVMb2FkZXIxNGRldGFjaENoaWxkcmVuRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIx
NHN0b3BBbGxMb2FkZXJzRU5TXzI2Q2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3lFCiBfX1pON1dl
YkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFyZW50RXYKIF9fWk43V2ViQ29yZTExRnJh
bWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dU
RjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5TXzlGb3JtU3RhdGVFRUVOU18xOFNob3Vs
ZFNlbmRSZWZlcnJlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxN3N0b3BGb3JVc2VyQ2Fu
Y2VsRWIKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIyMWxvYWRVUkxJbnRvQ2hpbGRGcmFtZUVS
S05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRVBOU181RnJhbWVFCitfX1pON1dlYkNvcmUxMUZyYW1l
TG9hZGVyMjFsb2FkVVJMSW50b0NoaWxkRnJhbWVFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRVBO
U181RnJhbWVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjJmaW5kRnJhbWVGb3JOYXZpZ2F0
aW9uRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTFG
cmFtZUxvYWRlcjIzdGltZU9mTGFzdENvbXBsZXRlZExvYWRFdgogX19aTjdXZWJDb3JlMTFGcmFt
ZUxvYWRlcjI2cmVsb2FkV2l0aE92ZXJyaWRlRW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCkBAIC0x
NDYsMTMgKzE0NiwxMiBAQCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRPcmlnaW5hbFVS
TFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldFRy
YW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBfX1pON1dlYkNv
cmUxMUhpc3RvcnlJdGVtMjFkZWNvZGVCYWNrRm9yd2FyZFRyZWVFUktOM1dURjZTdHJpbmdFUzRf
UzRfUk5TMV83RGVjb2RlckUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0yMm1lcmdlQXV0b0Nv
bXBsZXRlSGludHNFUFMwXwotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTZzZXRVUkxFUktOU180
S1VSTEUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW03dmlzaXRlZEVSS04zV1RGNlN0cmluZ0Vk
TlNfMThWaXNpdENvdW50QmVoYXZpb3JFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1E
YXRhRXYKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04c2V0VGl0bGVFUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtQzFFUktOM1dURjZTdHJpbmdFUzRfUzRfZAogX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbUMxRVJLTjNXVEY2U3RyaW5nRVM0X2QKLV9fWk43V2ViQ29y
ZTExSGlzdG9yeUl0ZW1DMUVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRVM3X1M3XworX19aTjdX
ZWJDb3JlMTFIaXN0b3J5SXRlbUMxRVJLTlNfM1VSTEVSS04zV1RGNlN0cmluZ0VTN19TN18KIF9f
Wk43V2ViQ29yZTExSGlzdG9yeUl0ZW1DMUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtRDFF
dgogX19aTjdXZWJDb3JlMTFKU0RPTVdpbmRvdzZzX2luZm9FCkBAIC0xNjAsNyArMTU5LDcgQEAg
X19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTExc2V0RGlzYWJsZWRFYgogX19aTjdXZWJDb3JlMTFN
ZW1vcnlDYWNoZTEzZ2V0U3RhdGlzdGljc0V2CiBfX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMTNz
ZXRDYXBhY2l0aWVzRWpqagogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0ZXZpY3RSZXNvdXJj
ZXNFdgotX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE0cmVzb3VyY2VGb3JVUkxFUktOU180S1VS
TEUKK19fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxNHJlc291cmNlRm9yVVJMRVJLTlNfM1VSTEUK
IF9fWk43V2ViQ29yZTExTWVtb3J5Q2FjaGUxOHJlc291cmNlRm9yUmVxdWVzdEVSS05TXzE1UmVz
b3VyY2VSZXF1ZXN0RQogX19aTjdXZWJDb3JlMTFNZW1vcnlDYWNoZTE5Z2V0T3JpZ2luc1dpdGhD
YWNoZUVSTjNXVEY3SGFzaFNldElOUzFfNlJlZlB0cklOU18xNFNlY3VyaXR5T3JpZ2luRUVFTlNf
MThTZWN1cml0eU9yaWdpbkhhc2hFTlMxXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNv
cmUxMU1lbW9yeUNhY2hlMjVyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luRVBOU18xNFNlY3VyaXR5
T3JpZ2luRQpAQCAtMTY4LDggKzE2Nyw4IEBAIF9fWk43V2ViQ29yZTExUGFnZUNvbnNvbGUyMXNo
b3VsZFByaW50RXhjZXB0aW9uc0V2CiBfX1pON1dlYkNvcmUxMVBhZ2VDb25zb2xlMjRzZXRTaG91
bGRQcmludEV4Y2VwdGlvbnNFYgogX19aTjdXZWJDb3JlMTFTUUxSZXN1bHRPa0UKIF9fWk43V2Vi
Q29yZTExVVJMV2l0aERhdGFFUDZOU0RhdGFQNU5TVVJMCi1fX1pON1dlYkNvcmUxMWdldFVSTEJ5
dGVzRVBLN19fQ0ZVUkxSTjNXVEY3Q1N0cmluZ0UKIF9fWk43V2ViQ29yZTExZ2V0VVJMQnl0ZXNF
UEs3X19DRlVSTFJOM1dURjZWZWN0b3JJY0xtNTEyRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRQor
X19aTjdXZWJDb3JlMTFnZXRVUkxCeXRlc0VQSzdfX0NGVVJMUk4zV1RGN0NTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMWlCZWFtQ3Vyc29yRXYKIF9fWk43V2ViQ29yZTExbWVtb3J5Q2FjaGVFdgogX19a
TjdXZWJDb3JlMTFzdGFydE9mTGluZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQpAQCAtMjM0LDcg
KzIzMyw3IEBAIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJV
VEY4RW5jb2RpbmdFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3JhZ2VFdgogX19aTjdXZWJDb3Jl
MTJjcmVhdGVNYXJrdXBFUEtOU181UmFuZ2VFUE4zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRU5T
M18xNUNyYXNoT25PdmVyZmxvd0VFRU5TXzIzRUFubm90YXRlRm9ySW50ZXJjaGFuZ2VFYk5TXzEz
RUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2llRVJLTlNfMjFOZXR3b3Jr
U3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEy
ZGVsZXRlQ29va2llRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJnY0NvbnRyb2xsZXJFdgogX19aTjdXZWJDb3JlMTJp
Y29uRGF0YWJhc2VFdgogX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMTByb290T2JqZWN0RXYK
QEAgLTI2MSw2ICsyNjAsNyBAQCBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXIxOHNldEJhY2tn
cm91bmRDb2xvckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllcjIwc2V0
UmVwbGljYXRlZEJ5TGF5ZXJFUFMwXwogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyNTRub3Rl
RGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkSW5jbHVkaW5nRGVzY2VuZGFudHNFdgogX19a
TjdXZWJDb3JlMTNHcmFwaGljc0xheWVyNmNyZWF0ZUVQTlNfMjBHcmFwaGljc0xheWVyRmFjdG9y
eUVQTlNfMTlHcmFwaGljc0xheWVyQ2xpZW50RQorX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVy
N3NldFNpemVFUktOU185RmxvYXRTaXplRQogX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyOGFk
ZENoaWxkRVBTMF8KIF9fWk43V2ViQ29yZTEzR3JhcGhpY3NMYXllckMyRVBOU18xOUdyYXBoaWNz
TGF5ZXJDbGllbnRFCiBfX1pON1dlYkNvcmUxM0dyYXBoaWNzTGF5ZXJEMkV2CkBAIC0yODIsMTEg
KzI4MiwxMyBAQCBfX1pON1dlYkNvcmUxM1F1YWxpZmllZE5hbWVEMUV2CiBfX1pON1dlYkNvcmUx
M1Jlc291cmNlRXJyb3JDMUVQN05TRXJyb3IKIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMx
RVA5X19DRkVycm9yCiBfX1pON1dlYkNvcmUxM1NRTFJlc3VsdERvbmVFCitfX1pON1dlYkNvcmUx
M1NjcmlwdEdDRXZlbnQxMWdldEhlYXBTaXplRVJOU184SGVhcEluZm9FCiBfX1pON1dlYkNvcmUx
M1N0eWxlZEVsZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlE
RVJLTjNXVEY2U3RyaW5nRWIKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudDIyc2V0SW5saW5l
U3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFZE5TXzE3Q1NTUHJpbWl0aXZlVmFsdWU5
VW5pdFR5cGVzRWIKLV9fWk43V2ViQ29yZTEzY29va2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCitfX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfCiBfX1pON1dlYkNvcmUx
M2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQ
TlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dURjZTdHJpbmdFCitf
X1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVS
S05TXzNVUkxFUzVfUk4zV1RGNlZlY3RvcklOU182Q29va2llRUxtMEVOUzZfMTVDcmFzaE9uT3Zl
cmZsb3dFRUUKIF9fWk43V2ViQ29yZTEzbGlzdERpcmVjdG9yeUVSS04zV1RGNlN0cmluZ0VTM18K
IF9fWk43V2ViQ29yZTEzcG9pbnRlckN1cnNvckV2CiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5k
b3dFTjNKU0M3SlNWYWx1ZUUKQEAgLTM5MCwxMCArMzkyLDkgQEAgX19aTjdXZWJDb3JlMTRTY3Jv
bGxiYXJUaGVtZTV0aGVtZUV2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVG
cm9tU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4
Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRVM0X2kKLV9fWk43V2ViQ29y
ZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5T3JpZ2luNmNyZWF0ZUVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9saWN5RQotX19aTjdXZWJDb3Jl
MTRTZWN1cml0eVBvbGljeTE4c2hvdWxkSGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dURjZT
dHJpbmdFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MjJnZW5lcmF0ZVJlZmVycmVySGVh
ZGVyRU5TXzE0UmVmZXJyZXJQb2xpY3lFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43
V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyMmdlbmVyYXRlUmVmZXJyZXJIZWFkZXJFTlNfMTRSZWZl
cnJlclBvbGljeUVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3Vy
aXR5UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRT
ZWN1cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktOU18xNFNlY3Vy
aXR5T3JpZ2luRVJLTjNXVEY2U3RyaW5nRVM3X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xp
Y3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLTlNfMTRTZWN1cml0eU9yaWdp
bkVSS04zV1RGNlN0cmluZ0VTN19iCkBAIC00MDUsNyArNDA2LDcgQEAgX19aTjdXZWJDb3JlMTRT
dG9yYWdlVHJhY2tlcjMyc3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2VFdgogX19aTjdX
ZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJ
TlNfMTRTZWN1cml0eU9yaWdpbkVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3dHJhY2tlckV2CiBfX1pON1dlYkNvcmUxNFN1YmZyYW1l
TG9hZGVyMTJhbGxvd1BsdWdpbnNFTlNfMjhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zRQot
X19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9u
RVJLTlNfNEtVUkxFUzVfCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFibGVkRVJLTlNfMjFOZXR3
b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1XwogX19aTjdXZWJDb3JlMTRkZWNvZGVIb3N0
TmFtZUVQOE5TU3RyaW5nCiBfX1pON1dlYkNvcmUxNGVuY29kZUhvc3ROYW1lRVA4TlNTdHJpbmcK
IF9fWk43V2ViQ29yZTE0ZW5kT2ZQYXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkVOU18y
N0VkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZUUKQEAgLTQxNyw3ICs0MTgsMjMgQEAgX19aTjdX
ZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm04bXVsdGlwbHlFUktTMF8KIF9fWk43V2ViQ29yZTE1QWZm
aW5lVHJhbnNmb3JtOXRyYW5zbGF0ZUVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm1D
MUVkZGRkZGQKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtQzFFdgotX19aTjdXZWJDb3Jl
MTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzEyU2hhcmVkQnVm
ZmVyRUVFUktOU180S1VSTEVSS05TMV82U3RyaW5nRVNBX1NBX1JLTlNfMTZSZXNvdXJjZVJlc3Bv
bnNlRQorX19aTjdXZWJDb3JlMTVBcmNoaXZlUmVzb3VyY2U2Y3JlYXRlRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzEyU2hhcmVkQnVmZmVyRUVFUktOU18zVVJMRVJLTlMxXzZTdHJpbmdFU0FfU0FfUktO
U18xNlJlc291cmNlUmVzcG9uc2VFCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEwcmVt
b3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
MTBzZXRFbmFibGVkRWIKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRl
bUV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1FdgorX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMXNldENhcGFjaXR5RWkKK19fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0MTJjb250YWluc0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCitfX1pON1dlYkNv
cmUxNUJhY2tGb3J3YXJkTGlzdDE3YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMx
XzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUK
K19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhMaW1pdEVpUk4z
V1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNo
T25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Y2xvc2VkRXYKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0NmdvQmFja0V2CitfX1pON1dlYkNvcmUxNUJhY2tG
b3J3YXJkTGlzdDdlbmFibGVkRXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VudHJp
ZXNFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q4YmFja0l0ZW1FdgorX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3Q4Y2FwYWNpdHlFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2Fy
ZExpc3Q5Z29Gb3J3YXJkRXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0QzFFUE5TXzRQ
YWdlRQogX19aTjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGQxM2NsZWFyV3JhcHBlcnNFdgogX19a
TjdXZWJDb3JlMTVET01XcmFwcGVyV29ybGREMUV2CiBfX1pON1dlYkNvcmUxNURhdGFiYXNlTWFu
YWdlcjEwaW5pdGlhbGl6ZUVSS04zV1RGNlN0cmluZ0UKQEAgLTQzNSw5ICs0NTIsOSBAQCBfX1pO
N1dlYkNvcmUxNURhdGFiYXNlTWFuYWdlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQ
dHJJTlNfMTRTZWN1cml0eU9yaQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI4c2V0UXVv
dGFFUE5TXzE0U2VjdXJpdHlPcmlnaW5FeQogX19aTjdXZWJDb3JlMTVEYXRhYmFzZU1hbmFnZXI5
c2V0Q2xpZW50RVBOU18yMURhdGFiYXNlTWFuYWdlckNsaWVudEUKIF9fWk43V2ViQ29yZTE1Rm9j
dXNDb250cm9sbGVyMTBzZXRGb2N1c2VkRWIKLV9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVy
MTdzZXRGb2N1c2VkRWxlbWVudEVQTlNfN0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZy
YW1lRUVFTlNfMTRGb2N1c0RpcmVjdGlvbkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVy
MTVzZXRGb2N1c2VkRnJhbWVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1lRUVFCiBfX1pON1dl
YkNvcmUxNUZvY3VzQ29udHJvbGxlcjE1c2V0SW5pdGlhbEZvY3VzRU5TXzE0Rm9jdXNEaXJlY3Rp
b25FUE5TXzEzS2V5Ym9hcmRFdmVudEUKK19fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMTdz
ZXRGb2N1c2VkRWxlbWVudEVQTlNfN0VsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNUZyYW1l
RUVFTlNfMTRGb2N1c0RpcmVjdGlvbkUKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9sbGVyMjhz
ZXRDb250YWluaW5nV2luZG93SXNWaXNpYmxlRWIKIF9fWk43V2ViQ29yZTE1Rm9jdXNDb250cm9s
bGVyOXNldEFjdGl2ZUViCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDEwc3Ryb2tlUmVj
dEVSS05TXzlGbG9hdFJlY3RFZgpAQCAtNDk3LDcgKzUxNCw3IEBAIF9fWk43V2ViQ29yZTE1U3Ry
aW5nVHJ1bmNhdG9yNXdpZHRoRVJLTjNXVEY2U3RyaW5nRVJLTlNfNEZvbnRFTlMwXzI0RW5hYmxl
Um91bmRpCiBfX1pON1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbkMxRVJLTlNfOFBvc2l0aW9uRU5T
XzlFQWZmaW5pdHlFCiBfX1pON1dlYkNvcmUxNWRlZmF1bHRMYW5ndWFnZUV2CiBfX1pON1dlYkNv
cmUxNWxvY2FsaXplZFN0cmluZ0VQS2MKLV9fWk43V2ViQ29yZTE1bWltZVR5cGVGcm9tVVJMRVJL
TlNfNEtVUkxFCitfX1pON1dlYkNvcmUxNW1pbWVUeXBlRnJvbVVSTEVSS05TXzNVUkxFCiBfX1pO
N1dlYkNvcmUxNW9yaWdpbmFsVVJMRGF0YUVQNU5TVVJMCiBfX1pON1dlYkNvcmUxNXBhdGhHZXRG
aWxlTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE1cmVwb3J0RXhjZXB0aW9uRVBO
M0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVBOU18xMkNhY2hlZFNjcmlwdEUKQEAgLTUwNyw3
ICs1MjQsNyBAQCBfX1pON1dlYkNvcmUxNXZpc2l0ZWRMaW5rSGFzaEVQS3RqCiBfX1pON1dlYkNv
cmUxNXZpc2l0ZWRMaW5rSGFzaEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE2QXBwbGlj
YXRpb25DYWNoZTE4ZGlza1VzYWdlRm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19a
TjdXZWJDb3JlMTZBcHBsaWNhdGlvbkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRT
ZWN1cml0eU9yaWdpbkUKLV9fWk43V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9j
dW1lbnRFUktOU180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE2Q1NTUGFyc2Vy
Q29udGV4dEMxRVJOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlMTZEYXRhYmFzZVN0cmF0ZWd5MTdnZXREYXRhYmFzZVNlcnZlckV2CiBfX1pON1dlYkNv
cmUxNkRldmljZU1vdGlvbkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCiBfX1pON1dl
YkNvcmUxNkRldmljZU1vdGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRiZGJkCkBAIC01
OTMsNyArNjEwLDcgQEAgX19aTjdXZWJDb3JlMTdTdWJyZXNvdXJjZUxvYWRlcjZjcmVhdGVFUE5T
XzVGcmFtZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUVSS05TXzE1UmUKIF9fWk43V2ViQ29yZTE3Y2Fj
aGVET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE4zSlNDOVN0cnVjdHVyZUVQ
S05TMl85Q2xhc3NJbmZvRQogX19aTjdXZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pO
N1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCi1fX1pON1dlYkNv
cmUxN3NldENvb2tpZXNGcm9tRE9NRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180
S1VSTEVTNV9SS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE3c2V0Q29va2llc0Zyb21ET01F
UktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzNVUkxFUzVfUktOM1dURjZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4
RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBf
X1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFtZUV2CkBAIC02MTYsNDAg
KzYzMywyMiBAQCBfX1pON1dlYkNvcmUxOFN0eWxlU2hlZXRDb250ZW50c0QxRXYKIF9fWk43V2Vi
Q29yZTE4aXNTdGFydE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNfMjdFZGl0
aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxOG1ha2VBbGxEaXJlY3Rvcmll
c0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4cGx1Z2luU2NyaXB0T2JqZWN0RVBOM0pT
QzlFeGVjU3RhdGVFUE5TXzEzSlNIVE1MRWxlbWVudEUKLV9fWk43V2ViQ29yZTE4cHJveHlTZXJ2
ZXJzRm9yVVJMRVJLTlNfNEtVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQotX19aTks3V2Vi
Q29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjExaXNTdXNwZW5kZWRFdgorX19aTjdXZWJDb3JlMThw
cm94eVNlcnZlcnNGb3JVUkxFUktOU18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKIF9f
Wk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pO
N1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25zRXYKIF9fWk43
V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEy
UmVuZGVyT2JqZWN0RVJLTjNXVEYxMkF0b21pY1N0cmluZ0VkCiBfX1pON1dlYkNvcmUxOUFuaW1h
dGlvbkNvbnRyb2xsZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RF
UktOM1dURjZTdHJpbmdFZAogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRB
bGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5kZWRFYgotX19aTks3V2ViQ29yZTE5QW5pbWF0
aW9uQ29udHJvbGxlcjMzYWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRXYKLV9fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTByZW1vdmVJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQot
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHNldEVuYWJsZWRFYgotX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWN1cnJlbnRJdGVtRXYKLV9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFmb3J3YXJkSXRlbUV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExc2V0
Q2FwYWNpdHlFaQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMmNvbnRhaW5zSXRlbUVQ
TlNfMTFIaXN0b3J5SXRlbUUKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlz
dFdpdGhMaW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVF
TG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QyMGZvcndhcmRMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzEx
SGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUx
NUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2
Z29CYWNrRXYKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0N2VuYWJsZWRFdgotX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW50cmllc0V2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3
YXJkTGlzdDhiYWNrSXRlbUV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDhjYXBhY2l0
eUV2Ci1fX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDlnb0ZvcndhcmRFdgotX19aTjdXZWJD
b3JlMTVCYWNrRm9yd2FyZExpc3RDMUVQTlNfNFBhZ2VFCiBfX1pON1dlYkNvcmUxOUhUTUxUZXh0
QXJlYUVsZW1lbnQ4c2V0VmFsdWVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOUxheWVy
Rmx1c2hTY2hlZHVsZXIxMGludmFsaWRhdGVFdgorX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2No
ZWR1bGVyMjNydW5Mb29wT2JzZXJ2ZXJDYWxsYmFja0V2CiBfX1pON1dlYkNvcmUxOUxheWVyRmx1
c2hTY2hlZHVsZXI2cmVzdW1lRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjdz
dXNwZW5kRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjhzY2hlZHVsZUV2Citf
X1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXJDMUVQTlNfMjVMYXllckZsdXNoU2NoZWR1
bGVyQ2xpZW50RQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzJFUE5TXzI1TGF5
ZXJGbHVzaFNjaGVkdWxlckNsaWVudEUKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxl
ckQxRXYKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlckQyRXYKLV9fWk43V2ViQ29y
ZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjIzcnVuTG9vcE9ic2VydmVyQ2FsbGJhY2tFdgotX19aTjdX
ZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyQzFFUE5TXzI1TGF5ZXJGbHVzaFNjaGVkdWxlckNs
aWVudEUKIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZTExc2V0SFRUUEJvZHlFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVx
dWVzdEJhc2UxM3NldEhUVFBNZXRob2RFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxOVJl
c291cmNlUmVxdWVzdEJhc2UxOHNldEhUVFBIZWFkZXJGaWVsZEVQS2NSS04zV1RGNlN0cmluZ0UK
QEAgLTY1OCw3ICs2NTcsNyBAQCBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMmRl
ZmF1bHRUaW1lb3V0SW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNl
MjRzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWxFCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVz
dEJhc2UyNXNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWxFZAogX19aTjdXZWJDb3JlMTlSZXNvdXJj
ZVJlcXVlc3RCYXNlNTBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJh
Y2tBcnJheUVSS04zV1RGNlN0cmluZ0VTNF9TNF8KLV9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1
ZXN0QmFzZTZzZXRVUkxFUktOU180S1VSTEUKK19fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0
QmFzZTZzZXRVUkxFUktOU18zVVJMRQogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVy
NWZsdXNoRXYKIF9fWk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlcjZkZWNvZGVFUEtjbQog
X19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyQzFFUktOM1dURjZTdHJpbmdFUktOU18x
MlRleHRFbmNvZGluZ0ViCkBAIC02NzIsNyArNjcxLDYgQEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5
U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwUmVuZGVyRW1iZWRkZWRPYmplY3QyOXNl
dFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uRU5TMF8yNlBsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uRQogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDM3c2V0VW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JJc0hpZGRlbkViCiBfX1pON1dlYkNvcmUyMFJlbmRlckVtYmVkZGVkT2Jq
ZWN0NDRzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbldpdGhEZXNjcmlwdGlvbkVOUzBfMjZQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmUy
MFJlbmRlckVtYmVkZGVkT2JqZWN0MjFpc1JlcGxhY2VtZW50T2JzY3VyZWRFdgogX19aTjdXZWJD
b3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDE2ZGlkUmVjZWl2ZUJ1ZmZlckVQTlNfMTRSZXNvdXJj
ZUhhbmRsZUVOM1dURjEwUGFzc1JlZlB0cklOU18xMlNoYXJlZEJ1ZmZlckVFRWkKIF9fWk43V2Vi
Q29yZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQyMHdpbGxTZW5kUmVxdWVzdEFzeW5jRVBOU18xNFJl
c291cmNlSGFuZGxlRVJLTlNfMTVSZXNvdXJjZVJlcXVlc3RFUktOU18xNlJlc291cmNlUmVzcG9u
c2VFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjJ3aWxsQ2FjaGVSZXNwb25z
ZUFzeW5jRVBOU18xNFJlc291cmNlSGFuZGxlRVAxOU5TQ2FjaGVkVVJMUmVzcG9uc2UKQEAgLTY4
OCw5ICs2ODYsOCBAQCBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMThzZXRIVFRQ
SGVhZGVyRmllbGRFUktOM1dURjEyQXRvbWljU3RyaW5nRVJLTgogX19aTjdXZWJDb3JlMjBSZXNv
dXJjZVJlc3BvbnNlQmFzZTE5c2V0VGV4dEVuY29kaW5nTmFtZUVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UyMHNldFN1Z2dlc3RlZEZpbGVuYW1lRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTI0c2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoRXgKLV9fWk43V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2
c2V0VVJMRVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNnNl
dFVSTEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlQzJFdgot
X19aTjdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZUMyRVJLTlNfNEtVUkxFUktOM1dURjZT
dHJpbmdFeFM3X1M3XwogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvcjdzX3N0YXRl
RQogX19aTjdXZWJDb3JlMjBVc2VyR2VzdHVyZUluZGljYXRvckMxRU5TXzI2UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlU3RhdGVFCiBfX1pON1dlYkNvcmUyMFVzZXJHZXN0dXJlSW5kaWNhdG9yRDFFdgpA
QCAtNzExLDcgKzcwOCw2IEBAIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjFy
ZXN1bWVQZW5kaW5nUmVxdWVzdHNFdgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIyMnN1c3BlbmRQZW5kaW5nUmVxdWVzdHNFdgogX19aTjdXZWJDb3JlMjFSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIyM3NjaGVkdWxlU3VicmVzb3VyY2VMb2FkRVBOU181RnJhbWVFUE5TXzE0Q2FjaGVk
UmVzb3VyY2VFUktOU18xNVJlc291cmNlUmVxdWVzdEVOU18yMFJlc291cmNlTG9hZFByaW9yaXR5
RVJLTlNfMjFSZXNvdXJjZUxvYWRlck9wdGlvbnNFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9h
ZFNjaGVkdWxlcjI0c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkRVBOU181RnJhbWVFUE5TXzMyTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnRFUktOU18xNVJlc291cmNlUmVxdWVzdEUKLV9f
Wk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyMjdjcm9zc09yaWdpblJlZGlyZWN0UmVj
ZWl2ZWRFUE5TXzE0UmVzb3VyY2VMb2FkZXJFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTIxUmVz
b3VyY2VMb2FkU2NoZWR1bGVyMzJub3RpZnlEaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEVQTlNf
MTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1bGVyNnJl
bW92ZUVQTlNfMTRSZXNvdXJjZUxvYWRlckUKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2No
ZWR1bGVyQzJFdgpAQCAtODAzLDEzICs3OTksMTMgQEAgX19aTjdXZWJDb3JlMjdBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUJhc2VDMkV2CiBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3JpZW50YXRpb25F
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUKIF9fWk43V2Vi
Q29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgotX19aTjdXZWJDb3JlMjdwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWxFUktOU180S1VSTEVTMl8KK19fWk43V2ViQ29yZTI3cHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsRVJLTlNfM1VSTEVTMl8KIF9fWk43V2ViQ29yZTI3c3Rh
cnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzRVBGdnZFCiBfX1pON1dlYkNvcmUyOERvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24xMmFkZFVzZXJTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0
eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjEwUGFzc1JlZlB0cklOU18xOFN0eWxlU2hlZXRD
b250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzRVJL
TjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVy
RVB2Ci1fX1pON1dlYkNvcmUyOWNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlRVJLTlNfMjFO
ZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2ViQ29yZTI5Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzNVUkxFUzVfCiBfX1pON1dlYkNvcmUyOWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0RWli
CiBfX1pON1dlYkNvcmUzMGhvc3ROYW1lTmVlZHNEZWNvZGluZ1dpdGhSYW5nZUVQOE5TU3RyaW5n
OF9OU1JhbmdlCiBfX1pON1dlYkNvcmUzMGhvc3ROYW1lTmVlZHNFbmNvZGluZ1dpdGhSYW5nZUVQ
OE5TU3RyaW5nOF9OU1JhbmdlCkBAIC04MTksNiArODE1LDExIEBAIF9fWk43V2ViQ29yZTMxQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTZzaGFyZWRFdgogX19aTjdXZWJDb3JlMzNzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUzN1dpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUxMW1vdmVXaWRnZXRzRXYK
IF9fWk43V2ViQ29yZTM3V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZTM1c193
aWRnZXRIaWVyYXJjaHlVcGRhdGVTdXNwZW5kQ291bnRFCitfX1pON1dlYkNvcmUzVVJMMTBpbnZh
bGlkYXRlRXYKK19fWk43V2ViQ29yZTNVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04z
V1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTNVUkxDMUVQNU5TVVJMCitfX1pON1dlYkNvcmUzVVJM
QzFFUEs3X19DRlVSTAorX19aTjdXZWJDb3JlM1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUzbWFjRVJLTlNfMTBDcmVkZW50aWFsRQogX19aTjdXZWJDb3JlM21hY0VSS05T
XzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCiBfX1pON1dlYkNvcmU0MHJlc3RyaWN0TWluaW11
bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVFUk5TXzE4Vmlld3BvcnRBdHRyaWJ1dGVzRU5TXzdJ
bnRTaXplRWYKQEAgLTgzMywxMSArODM0LDYgQEAgX19aTjdXZWJDb3JlNEZvbnRDMUV2CiBfX1pO
N1dlYkNvcmU0Rm9udGFTRVJLUzBfCiBfX1pON1dlYkNvcmU0SWNvbjE4Y3JlYXRlSWNvbkZvckZp
bGVzRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dF
RUUKIF9fWk43V2ViQ29yZTRJY29uRDFFdgotX19aTjdXZWJDb3JlNEtVUkwxMGludmFsaWRhdGVF
dgotX19aTjdXZWJDb3JlNEtVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0
cmluZ0UKLV9fWk43V2ViQ29yZTRLVVJMQzFFUDVOU1VSTAotX19aTjdXZWJDb3JlNEtVUkxDMUVQ
SzdfX0NGVVJMCi1fX1pON1dlYkNvcmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmU0Tm9kZTEwcmVuZGVyUmVjdEVQYgogX19aTjdXZWJDb3JlNE5vZGUxMWFwcGVuZENo
aWxkRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFUmlOU18xNEF0dGFjaEJlaGF2aW9yRQogX19aTjdX
ZWJDb3JlNE5vZGUxMXJlbW92ZUNoaWxkRVBTMF9SaQpAQCAtMTA0MiwyMiArMTAzOCwyMyBAQCBf
X1pON1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2VEMkV2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjE5
YWxsb3dzUm91bmRpbmdIYWNrc0V2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxvd3NSb3Vu
ZGluZ0hhY2tzRQogX19aTjdXZWJDb3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5nSGFja3NF
YgotX19aTjdXZWJDb3JlN2Nvb2tpZXNFUEtOU184RG9jdW1lbnRFUktOU180S1VSTEUKK19fWk43
V2ViQ29yZTdjb29raWVzRVBLTlNfOERvY3VtZW50RVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZTdq
c0FycmF5RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfMTNET01TdHJpbmdMaXN0RUVFCiBfX1pON1dlYkNvcmU3bWFrZVJHQkVpaWkK
IF9fWk43V2ViQ29yZTdyZXBsYWNlRVJOM1dURjZTdHJpbmdFUktOU18xN1JlZ3VsYXJFeHByZXNz
aW9uRVJLUzFfCiBfX1pON1dlYkNvcmU3dG9JbnQ2NEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNW
YWx1ZUVOU18zMEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkUKIF9fWk43V2ViQ29yZTd0
b1JhbmdlRU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU3dG9VSW50OEVQTjNKU0M5RXhlY1N0
YXRlRU5TMF83SlNWYWx1ZUVOU18zMEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbkUKK19f
Wk43V2ViQ29yZThCbG9iRGF0YTEwYXBwZW5kQmxvYkVSS05TXzNVUkxFeHgKIF9fWk43V2ViQ29y
ZThCbG9iRGF0YTE0c2V0Q29udGVudFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4
Q1NTVmFsdWU3ZGVzdHJveUV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYK
IF9fWk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKIF9fWk43V2ViQ29yZThEb2N1
bWVudDEzY3JlYXRlRWxlbWVudEVSS05TXzEzUXVhbGlmaWVkTmFtZUViCiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxNGNyZWF0ZVRleHROb2RlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlOERv
Y3VtZW50MTdzZXRGb2N1c2VkRWxlbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU183RWxlbWVudEVF
RU5TXzE0Rm9jdXNEaXJlY3Rpb25FCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNmlzUGFnZUJveFZp
c2libGVFaQogX19aTjdXZWJDb3JlOERvY3VtZW50MTZzaG9ydGN1dEljb25VUkxzRXYKK19fWk43
V2ViQ29yZThEb2N1bWVudDE3c2V0Rm9jdXNlZEVsZW1lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
N0VsZW1lbnRFRUVOU18xNEZvY3VzRGlyZWN0aW9uRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjBz
dHlsZVJlc29sdmVyQ2hhbmdlZEVOU18yM1N0eWxlUmVzb2x2ZXJVcGRhdGVGbGFnRQogX19aTjdX
ZWJDb3JlOERvY3VtZW50MjJjcmVhdGVEb2N1bWVudEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZThE
b2N1bWVudDIzZGlkQWRkV2hlZWxFdmVudEhhbmRsZXJFdgpAQCAtMTA3Niw4ICsxMDczLDExIEBA
IF9fWk43V2ViQ29yZThGb3JtRGF0YTZkZWNvZGVFUk4zV1RGN0RlY29kZXJFCiBfX1pON1dlYkNv
cmU4Rm9ybURhdGFEMUV2CiBfX1pON1dlYkNvcmU4R3JhZGllbnQxMmFkZENvbG9yU3RvcEVmUktO
U181Q29sb3JFCiBfX1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18K
K19fWk43V2ViQ29yZThHcmFkaWVudEQxRXYKIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RG
MTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5cGVFCitfX1pON1dlYkNvcmU4
U2V0dGluZ3MxM2dRVEtpdEVuYWJsZWRFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFF
bmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0UVRLaXRFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFn
ZUNhY2hlRWIKQEAgLTExMDUsNyArMTEwNSw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0
VGV4dEFyZWFzQXJlUmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VXNlc092
ZXJsYXlTY3JvbGxiYXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0TWluaW11bUxvZ2lj
YWxGb250U2l6ZUVpCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWRFYgotX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
RVJLTlNfNEtVUkxFCitfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb25FUktOU18zVVJMRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZkZWZhdWx0TWluRE9NVGlt
ZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldEphdmFFbmFibGVkRm9yTG9j
YWxGaWxlc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseUViCkBAIC0xMTQzLDcgKzExNDMsNiBAQCBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjlwdXJn
ZUluYWN0aXZlRm9udERhdGFJZk5lZWRlZEV2CiBfX1pON1dlYkNvcmU5RnJhbWVUcmVlMTFhcHBl
bmRDaGlsZEVOM1dURjEwUGFzc1JlZlB0cklOU181RnJhbWVFRUUKIF9fWk43V2ViQ29yZTlGcmFt
ZVRyZWU3c2V0TmFtZUVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pON1dlYkNvcmU5RnJhbWVU
cmVlOWNsZWFyTmFtZUV2Ci1fX1pON1dlYkNvcmU5RnJhbWVWaWV3NmNyZWF0ZUVSTlNfNUZyYW1l
RQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzExZm9yY2VMYXlvdXRFYgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzEyc2V0TWVkaWFUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlOUZyYW1l
VmlldzEydGlsZWRCYWNraW5nRXYKQEAgLTExNjMsMTIgKzExNjIsMTIgQEAgX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzE3c2V0VHJhY2tzUmVwYWludHNFYgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE3
d2lsbEVuZExpdmVSZXNpemVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4ZW5hYmxlQXV0b1Np
emVNb2RlRWJSS05TXzdJbnRTaXplRVMzXwogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE4dXBkYXRl
Q29udHJvbFRpbnRzRXYKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNp
emVFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0Vs
ZW1lbnRFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHNldENhbkhhdmVT
Y3JvbGxiYXJzRWIKK19fWk43V2ViQ29yZTlGcmFtZVZpZXcxOXdpbGxTdGFydExpdmVSZXNpemVF
dgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIwZW50ZXJDb21wb3NpdGluZ01vZGVFdgogX19aTjdX
ZWJDb3JlOUZyYW1lVmlldzIwcmVtb3ZlU2Nyb2xsYWJsZUFyZWFFUE5TXzE0U2Nyb2xsYWJsZUFy
ZWFFCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50c0V2CitfX1pO
N1dlYkNvcmU5RnJhbWVWaWV3MjBzZXRDYW5IYXZlU2Nyb2xsYmFyc0ViCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjFmbHVzaERlZmVycmVkUmVwYWludHNFdgogX19aTjdXZWJDb3JlOUZyYW1lVmll
dzIxcmVzdW1lQW5pbWF0aW5nSW1hZ2VzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMnNldEJh
c2VCYWNrZ3JvdW5kQ29sb3JFUktOU181Q29sb3JFCkBAIC0xMTc4LDEzICsxMTc3LDE0IEBAIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcyNHBhaW50Q29udGVudHNGb3JTbmFwc2hvdEVQTlNfMTVHcmFw
aGljc0NvbnRleHRFUktOU183SW50CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjRzZXRTY3JvbGxQ
aW5uaW5nQmVoYXZpb3JFTlNfMjFTY3JvbGxQaW5uaW5nQmVoYXZpb3JFCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MjZhZGp1c3RQYWdlSGVpZ2h0RGVwcmVjYXRlZEVQZmZmZgogX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzI2YWRqdXN0VGlsZWRCYWNraW5nQ292ZXJhZ2VFdgotX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI5c2V0QXV0b1NpemVGaXhlZE1pbmltdW1IZWlnaHRFaQorX19aTjdXZWJDb3JlOUZy
YW1lVmlldzI5c2V0U2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW5FYgogX19aTjdXZWJDb3JlOUZy
YW1lVmlldzMxc2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVudEViCiBfX1pON1dlYkNvcmU5
RnJhbWVWaWV3MzdzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkRWIKIF9fWk43
V2ViQ29yZTlGcmFtZVZpZXczN3VwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmVF
dgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM4c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZv
cm1XaWRnZXRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzM5Zmx1c2hDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzRXYKK19fWk43V2ViQ29yZTlGcmFtZVZpZXc2Y3JlYXRlRVJOU181
RnJhbWVFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTBsaXN0aW5nVGFnRQogX19aTjdXZWJDb3Jl
OUhUTUxOYW1lczExdGV4dGFyZWFUYWdFCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzMTJzZWxlY3Rl
ZEF0dHJFCkBAIC0xMjU0LDE0ICsxMjU0LDE0IEBAIF9fWk43V2ViQ29yZTlQYWdlR3JvdXAxNnN5
bmNMb2NhbFN0b3JhZ2VFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE3Y2xvc2VMb2NhbFN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlOVBhZ2VHcm91cDE4YWRkVmlzaXRlZExpbmtIYXNoRXkKIF9fWk43
V2ViQ29yZTlQYWdlR3JvdXAxOG51bWJlck9mUGFnZUdyb3Vwc0V2Ci1fX1pON1dlYkNvcmU5UGFn
ZUdyb3VwMjBhZGRVc2VyU2NyaXB0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dU
RjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3Zl
cmZsb3dFRUVTRV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lc0UKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyMGFkZFVzZXJTY3JpcHRUb1dv
cmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmluZ0VSS05TXzNVUkxFUktOUzNf
NlZlY3RvcklTNF9MbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFU0VfTlNfMjNVc2VyU2NyaXB0
SW5qZWN0aW9uVGltZUVOU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXNFCiBfX1pON1dlYkNv
cmU5UGFnZUdyb3VwMjByZW1vdmVBbGxVc2VyQ29udGVudEV2CiBfX1pON1dlYkNvcmU5UGFnZUdy
b3VwMjFyZW1vdmVBbGxWaXNpdGVkTGlua3NFdgotX19aTjdXZWJDb3JlOVBhZ2VHcm91cDI0YWRk
VXNlclN0eWxlU2hlZXRUb1dvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS04zV1RGNlN0cmlu
Z0VSS05TXzRLVVJMRVJLTlMzXzZWZWN0b3JJUzRfTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VF
RVNFX05TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lc0VOU18xNFVzZXJTdHlsZUxldmVsRU5T
XzIyVXNlclN0eWxlSW5qZWN0aW9uVGltZUUKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNXJlbW92
ZVVzZXJTY3JpcHRGcm9tV29ybGRFUE5TXzE1RE9NV3JhcHBlcldvcmxkRVJLTlNfNEtVUkxFCitf
X1pON1dlYkNvcmU5UGFnZUdyb3VwMjRhZGRVc2VyU3R5bGVTaGVldFRvV29ybGRFUE5TXzE1RE9N
V3JhcHBlcldvcmxkRVJLTjNXVEY2U3RyaW5nRVJLTlNfM1VSTEVSS05TM182VmVjdG9ySVM0X0xt
MEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXNFTlNfMTRVc2VyU3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRpbWVFCitfX1pO
N1dlYkNvcmU5UGFnZUdyb3VwMjVyZW1vdmVVc2VyU2NyaXB0RnJvbVdvcmxkRVBOU18xNURPTVdy
YXBwZXJXb3JsZEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmU5UGFnZUdyb3VwMjZyZW1vdmVVc2Vy
U2NyaXB0c0Zyb21Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmU5UGFn
ZUdyb3VwMjZzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rc0ViCi1fX1pON1dlYkNvcmU5UGFnZUdy
b3VwMjlyZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRF
UktOU180S1VSTEUKK19fWk43V2ViQ29yZTlQYWdlR3JvdXAyOXJlbW92ZVVzZXJTdHlsZVNoZWV0
RnJvbVdvcmxkRVBOU18xNURPTVdyYXBwZXJXb3JsZEVSS05TXzNVUkxFCiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwMzBjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRhYmFzZXNFdgogX19aTjdXZWJDb3Jl
OVBhZ2VHcm91cDMwcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkRVBOU18xNURPTVdyYXBw
ZXJXb3JsZEUKIF9fWk43V2ViQ29yZTlQYWdlR3JvdXA5cGFnZUdyb3VwRVJLTjNXVEY2U3RyaW5n
RQpAQCAtMTI4Nyw3ICsxMjg3LDYgQEAgX19aTjdXZWJDb3JlOXBhZ2VDYWNoZUV2CiBfX1pON1dl
YkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJhbmdlRU5TXzIwVGV4dEl0ZXJhdG9yQmVoYXZpb3JFYgog
X19aTjdXZWJDb3JlOXRvRWxlbWVudEVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlOXVuaW9u
UmVjdEVSS04zV1RGNlZlY3RvcklOU185RmxvYXRSZWN0RUxtMEVOUzBfMTVDcmFzaE9uT3ZlcmZs
b3dFRUUKLV9fWk43V2ViQ29yZTEzU2NyaXB0R0NFdmVudDExZ2V0SGVhcFNpemVFUk5TXzhIZWFw
SW5mb0UKIF9fWk5LM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9f
Wk5LM1dURjZTdHJpbmcxNGNyZWF0ZUNGU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxMENyZWRlbnRp
YWwxMWhhc1Bhc3N3b3JkRXYKQEAgLTEzMTYsOCArMTMxNSw2IEBAIF9fWk5LN1dlYkNvcmUxMFNj
cm9sbFZpZXcxOGNvbnRlbnRzVG9Sb290Vmlld0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNv
cmUxMFNjcm9sbFZpZXcxOHZpc2libGVDb250ZW50UmVjdEVOU18xNFNjcm9sbGFibGVBcmVhMzZW
aXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnNFCiBfX1pOSzdXZWJDb3JlMTBTY3Jv
bGxWaWV3MjNyb290Vmlld1RvVG90YWxDb250ZW50c0VSS05TXzhJbnRQb2ludEUKIF9fWk5LN1dl
YkNvcmUxMFNjcm9sbFZpZXczMHNjcm9sbE9mZnNldFJlbGF0aXZlVG9Eb2N1bWVudEV2Ci1fX1pO
N1dlYkNvcmUxMFNjcm9sbFZpZXc0aGlkZUV2Ci1fX1pON1dlYkNvcmUxMFNjcm9sbFZpZXc0c2hv
d0V2CiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdlTWFwNmxlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTBT
dG9yYWdlTWFwN2dldEl0ZW1FUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTBTdG9yYWdl
TWFwOGNvbnRhaW5zRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTM3NCw3ICsxMzcxLDYgQEAgX19aTks3
V2ViQ29yZTEyVGV4dEl0ZXJhdG9yNG5vZGVFdgogX19aTks3V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
NXJhbmdlRXYKIF9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxNGNoaWxkTm9kZUNvdW50RXYK
IF9fWk5LN1dlYkNvcmUxM0NvbnRhaW5lck5vZGU5Y2hpbGROb2RlRWoKLV9fWk43V2ViQ29yZTEz
R3JhcGhpY3NMYXllcjdzZXRTaXplRVJLTlNfOUZsb2F0U2l6ZUUKIF9fWk5LN1dlYkNvcmUxM0dy
YXBoaWNzTGF5ZXIxOGFjY3VtdWxhdGVkT3BhY2l0eUV2CiBfX1pOSzdXZWJDb3JlMTNHcmFwaGlj
c0xheWVyMThnZXREZWJ1Z0JvcmRlckluZm9FUk5TXzVDb2xvckVSZgogX19aTks3V2ViQ29yZTEz
R3JhcGhpY3NMYXllcjI2YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGVFdgpAQCAtMTQwNyw3ICsx
NDAzLDcgQEAgX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJvcmN2UDdOU0Vycm9yRXYKIF9fWk5L
N1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0VVJMRXYKIF9fWk5LN1dlYkNvcmUxNERv
Y3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRl
cjExcmVzcG9uc2VVUkxFdgotX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMXN1YnJlc291
cmNlRVJLTlNfNEtVUkxFCitfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExc3VicmVzb3Vy
Y2VFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMm1haW5SZXNvdXJj
ZUV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEzdXJsRm9ySGlzdG9yeUV2CiBfX1pO
SzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE0dW5yZWFjaGFibGVVUkxFdgpAQCAtMTQxOCw3ICsx
NDE0LDYgQEAgX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxN3BhcnNlZEFyY2hpdmVEYXRh
RXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMThtYWluUmVzb3VyY2VMb2FkZXJFdgog
X19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOWlzTG9hZGluZ0luQVBJU2Vuc2VFdgogX19a
Tks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxOW9yaWdpbmFsUmVxdWVzdENvcHlFdgotX19aTks3
V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyMWFyY2hpdmVSZXNvdXJjZUZvclVSTEVSS05TXzRLVVJM
RQogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIyOHVybEZvckhpc3RvcnlSZWZsZWN0c0Zh
aWx1cmVFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIzdXJsRXYKIF9fWk5LN1dlYkNv
cmUxNERvY3VtZW50TG9hZGVyOWlzTG9hZGluZ0V2CkBAIC0xNDMxLDYgKzE0MjYsNyBAQCBfX1pO
SzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjMxZ2V0Q2xpcHBlZFZpc2libGVUZXh0UmVjdGFuZ2xl
c0VSTjNXVEY2VmVjdG9ySU5TXwogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24zNnJvb3RF
ZGl0YWJsZUVsZW1lbnRPckRvY3VtZW50RWxlbWVudEV2CiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNl
bGVjdGlvbjZib3VuZHNFYgogX19aTks3V2ViQ29yZTE0SW5zZXJ0aW9uUG9pbnQ4aXNBY3RpdmVF
dgorX19aTks3V2ViQ29yZTE0SW5zcGVjdG9yVmFsdWUxMnRvSlNPTlN0cmluZ0V2CiBfX1pOSzdX
ZWJDb3JlMTRSZW5kZXJMaXN0SXRlbTEwbWFya2VyVGV4dEV2CiBfX1pOSzdXZWJDb3JlMTRSZXNv
dXJjZUJ1ZmZlcjRkYXRhRXYKIF9fWk5LN1dlYkNvcmUxNFJlc291cmNlQnVmZmVyNHNpemVFdgpA
QCAtMTQ0NCw3ICsxNDQwLDcgQEAgX19aTks3V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyMW1vdXNl
RW50ZXJlZFNjcm9sbGJhckVQTlNfOVNjcm9sbGJhckUKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFi
bGVBcmVhMjJtb3VzZUV4aXRlZENvbnRlbnRBcmVhRXYKIF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFi
bGVBcmVhMjNtb3VzZUVudGVyZWRDb250ZW50QXJlYUV2CiBfX1pOSzdXZWJDb3JlMTRTY3JvbGxh
YmxlQXJlYTIzbW91c2VNb3ZlZEluQ29udGVudEFyZWFFdgotX19aTks3V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW4xMGNhbkRpc3BsYXlFUktOU180S1VSTEUKK19fWk5LN1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luMTBjYW5EaXNwbGF5RVJLTlNfM1VSTEUKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMTF0b1Jhd1N0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0
ZWRDb3B5RXYKIF9fWk5LN1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjYW5BY2Nlc3NTdG9yYWdl
RVBLUzBfTlMwXzI1U2hvdWxkQWxsb3dGcm9tVGhpcmRQYXJ0eUUKQEAgLTE1MDQsMTAgKzE1MDAs
MTEgQEAgX19aTks3V2ViQ29yZTE3UmVzb3VyY2VFcnJvckJhc2U4bGF6eUluaXRFdgogX19aTks3
V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTFjaGFuZ2VDb3VudEV2CiBfX1pOSzdXZWJDb3Jl
MThSZW5kZXJMYXllckJhY2tpbmcxMWNvbnRlbnRzQm94RXYKIF9fWk5LN1dlYkNvcmUxOFJlbmRl
ckxheWVyQmFja2luZzIwY29tcG9zaXRpbmdMYXllclR5cGVFdgorX19aTks3V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjExaXNTdXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5QW5pbWF0aW9u
Q29udHJvbGxlcjI0bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zRVBOU184RG9jdW1lbnRFCitfX1pO
SzdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzNhbGxvd3NOZXdBbmltYXRpb25zV2hpbGVT
dXNwZW5kZWRFdgogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjEyZ2V0SGlnaGxp
Z2h0RVBOU185SGlnaGxpZ2h0RQogX19aTks3V2ViQ29yZTE5SW5zcGVjdG9yQ29udHJvbGxlcjI5
YnVpbGRPYmplY3RGb3JIaWdobGlnaHRlZE5vZGVFdgotX19aTks3V2ViQ29yZTE0SW5zcGVjdG9y
VmFsdWUxMnRvSlNPTlN0cmluZ0V2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNl
MTBodHRwTWV0aG9kRXYKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UxNWh0dHBI
ZWFkZXJGaWVsZEVQS2MKIF9fWk5LN1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2UyMGZpcnN0
UGFydHlGb3JDb29raWVzRXYKQEAgLTE1MTcsNiArMTUxNCw3IEBAIF9fWk5LN1dlYkNvcmUxOVJl
c291cmNlUmVxdWVzdEJhc2U3aXNFbXB0eUV2CiBfX1pOSzdXZWJDb3JlMTlSZXNvdXJjZVJlcXVl
c3RCYXNlOGh0dHBCb2R5RXYKIF9fWk5LN1dlYkNvcmUyMENhY2hlZFJlc291cmNlTG9hZGVyMTFp
c1ByZWxvYWRlZEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUyMEhUTUxUYWJsZUNlbGxF
bGVtZW50OWNlbGxBYm92ZUV2CitfX1pOSzdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDIx
aXNSZXBsYWNlbWVudE9ic2N1cmVkRXYKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlMTJpc0F0dGFjaG1lbnRFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2Ux
Mmxhc3RNb2RpZmllZEV2CiBfX1pOSzdXZWJDb3JlMjBSZXNvdXJjZVJlc3BvbnNlQmFzZTE0aHR0
cFN0YXR1c0NvZGVFdgpAQCAtMTUzNCw3ICsxNTMyLDcgQEAgX19aTks3V2ViQ29yZTIxQmFja0Zv
cndhcmRDb250cm9sbGVyOWJhY2tDb3VudEV2CiBfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFn
ZVNlc3Npb24xM2Nvb2tpZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21w
b3NpdG9yMTFzY3JvbGxMYXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0
b3IxNXJvb3RSZW5kZXJMYXllckV2Ci1fX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRl
cm43bWF0Y2hlc0VSS05TXzRLVVJMRQorX19aTks3V2ViQ29yZTIxVXNlckNvbnRlbnRVUkxQYXR0
ZXJuN21hdGNoZXNFUktOU18zVVJMRQogX19aTks3V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UxMW1heGltdW1TaXplRXYKIF9fWk5LN1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlMjBhdXRoZW50aWNhdGlvbkNsaWVudEV2CiBfX1pOSzdXZWJDb3JlMjNGcmFtZUxvYWRlclN0
YXRlTWFjaGluZTE1Zmlyc3RMYXlvdXREb25lRXYKQEAgLTE1NDgsMzMgKzE1NDYsMjkgQEAgX19a
Tks3V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlMThwcm9wb3NlZENyZWRlbnRp
YWxFdgogX19aTks3V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlMjBwcmV2aW91
c0ZhaWx1cmVDb3VudEV2CiBfX1pOSzdXZWJDb3JlMjdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJh
c2U1ZXJyb3JFdgogX19aTks3V2ViQ29yZTI3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlNmlz
TnVsbEV2CitfX1pOSzdXZWJDb3JlM1VSTDEwcHJvdG9jb2xJc0VQS2MKK19fWk5LN1dlYkNvcmUz
VVJMMTFjcmVhdGVDRlVSTEV2CitfX1pOSzdXZWJDb3JlM1VSTDExaXNMb2NhbEZpbGVFdgorX19a
Tks3V2ViQ29yZTNVUkwxMmJhc2VBc1N0cmluZ0V2CitfX1pOSzdXZWJDb3JlM1VSTDE0ZmlsZVN5
c3RlbVBhdGhFdgorX19aTks3V2ViQ29yZTNVUkwxN2xhc3RQYXRoQ29tcG9uZW50RXYKK19fWk5L
N1dlYkNvcmUzVVJMMThmcmFnbWVudElkZW50aWZpZXJFdgorX19aTks3V2ViQ29yZTNVUkwyMWhh
c0ZyYWdtZW50SWRlbnRpZmllckV2CitfX1pOSzdXZWJDb3JlM1VSTDRob3N0RXYKK19fWk5LN1dl
YkNvcmUzVVJMNHBhc3NFdgorX19aTks3V2ViQ29yZTNVUkw0cGF0aEV2CitfX1pOSzdXZWJDb3Jl
M1VSTDRwb3J0RXYKK19fWk5LN1dlYkNvcmUzVVJMNHVzZXJFdgorX19aTks3V2ViQ29yZTNVUkw1
cXVlcnlFdgorX19aTks3V2ViQ29yZTNVUkw4cHJvdG9jb2xFdgorX19aTks3V2ViQ29yZTNVUkxj
dlA1TlNVUkxFdgogX19aTks3V2ViQ29yZTRGb250NXdpZHRoRVJLTlNfN1RleHRSdW5FUE4zV1RG
N0hhc2hTZXRJUEtOU18xNFNpbXBsZUZvbnREYXRhRU5TNF83UHRySGFzaElTOF9FRU5TNF8xMEhh
c2hUcmFpdHNJUzhfRUVFRVBOU18xM0dseXBoT3ZlcmZsb3dFCiBfX1pOSzdXZWJDb3JlNEZvbnQ4
ZHJhd1RleHRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN1RleHRSdW5FUktOU18xMEZsb2F0
UG9pbnRFaWlOUzBfMjRDdXN0b21Gb250Tm90UmVhZHlBY3Rpb25FCiBfX1pOSzdXZWJDb3JlNEZv
bnRlcUVSS1MwXwotX19aTks3V2ViQ29yZTRLVVJMMTBwcm90b2NvbElzRVBLYwotX19aTks3V2Vi
Q29yZTRLVVJMMTFjcmVhdGVDRlVSTEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxMWlzTG9jYWxGaWxl
RXYKLV9fWk5LN1dlYkNvcmU0S1VSTDEyYmFzZUFzU3RyaW5nRXYKLV9fWk5LN1dlYkNvcmU0S1VS
TDE0ZmlsZVN5c3RlbVBhdGhFdgotX19aTks3V2ViQ29yZTRLVVJMMTdsYXN0UGF0aENvbXBvbmVu
dEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkwxOGZyYWdtZW50SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJD
b3JlNEtVUkwyMWhhc0ZyYWdtZW50SWRlbnRpZmllckV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0aG9z
dEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0cGFzc0V2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0cGF0aEV2
Ci1fX1pOSzdXZWJDb3JlNEtVUkw0cG9ydEV2Ci1fX1pOSzdXZWJDb3JlNEtVUkw0dXNlckV2Ci1f
X1pOSzdXZWJDb3JlNEtVUkw1cXVlcnlFdgotX19aTks3V2ViQ29yZTRLVVJMOHByb3RvY29sRXYK
LV9fWk5LN1dlYkNvcmU0S1VSTGN2UDVOU1VSTEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRD
b250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTEzb3duZXJEb2N1bWVudEV2CiBfX1pOSzdXZWJD
b3JlNE5vZGUxNGlzRGVzY2VuZGFudE9mRVBLUzBfCi1fX1pOSzdXZWJDb3JlNE5vZGUxOGdldFN1
YnJlc291cmNlVVJMc0VSTjNXVEYxMUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2RU5TXzhLVVJM
SGFzaEVFRQogX19aTks3V2ViQ29yZTROb2RlMjhkZXByZWNhdGVkU2hhZG93QW5jZXN0b3JOb2Rl
RXYKLSNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJP
ZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuRXYKLSNlbmRpZgogX19aTks3V2ViQ29yZTROb2RlOW5v
ZGVJbmRleEV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNf
N0ludFJlY3RFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTRQYWdl
MTBwbHVnaW5EYXRhRXYKQEAgLTE3MjksOSArMTcyMywxMiBAQCBfaGFzQ2FzZUluc2Vuc2l0aXZl
U3Vic3RyaW5nCiBfaGFzQ2FzZUluc2Vuc2l0aXZlU3VmZml4CiBfc3RyaW5nSXNDYXNlSW5zZW5z
aXRpdmVFcXVhbFRvU3RyaW5nCiBfc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUKK193a0NB
TGF5ZXJFbnVtZXJhdGVSZWN0c0JlaW5nRHJhd25XaXRoQmxvY2sKK193a0NGVVJMUmVxdWVzdEFs
bG93QWxsUG9zdENhY2hpbmcKIF93a0NHQ29udGV4dEdldFNob3VsZFNtb290aEZvbnRzCiBfd2tD
R0NvbnRleHRJc1BERkNvbnRleHQKIF93a0NHQ29udGV4dFJlc2V0Q2xpcAorX3drQ0dQYXRoQWRk
Um91bmRlZFJlY3QKIF93a0NHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZUFuZFRyYW5zZm9ybQogX3dr
Q1RSdW5HZXRJbml0aWFsQWR2YW5jZQogX3drQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFt
ZQpAQCAtMTc0Miw2ICsxNzM5LDcgQEAgX3drQ29weU5TVVJMUmVzcG9uc2VDZXJ0aWZpY2F0ZUNo
YWluCiBfd2tDb3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUKIF93a0NvcHlSZXF1ZXN0V2l0aFN0
b3JhZ2VTZXNzaW9uCiBfd2tDcmVhdGVDVExpbmVXaXRoVW5pQ2hhclByb3ZpZGVyCitfd2tDcmVh
dGVDVFR5cGVzZXR0ZXJXaXRoVW5pQ2hhclByb3ZpZGVyQW5kT3B0aW9ucwogX3drQ3JlYXRlQ3Vz
dG9tQ0ZSZWFkU3RyZWFtCiBfd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24KIF93a0RlbGV0
ZUFsbEhUVFBDb29raWVzCkBAIC0xODY2LDkgKzE4NjQsOCBAQCBfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjdtb3VzZVVwRVA3TlNFdmVudAogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXI4a2V5
RXZlbnRFUDdOU0V2ZW50CiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjltb3VzZURvd25FUDdO
U0V2ZW50CiBfX1pON1dlYkNvcmUxM3RvRGV2aWNlU3BhY2VFUktOU185RmxvYXRSZWN0RVA4TlNX
aW5kb3cKLV9fWk43V2ViQ29yZTEzZ2V0UmF3Q29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uRVJLTlNfNEtVUkxFUzVfUk4zV1RGNlZlY3RvcklOU182Q29va2llRUxtMEVOUzZfMTVD
cmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0Nv
bnRleHQKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTVkcmF3TmF0aXZlSW1hZ2VFUDdD
R0ltYWdlUktOU185RmxvYXRTaXplRU5TXzEwQ29sb3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUzlf
TlNfMTdDb21wb3NpdGVPcGVyYXRvckVOU185QmxlbmRNb2RlRU5TXzE2SW1hZ2VPcmllbnRhdGlv
bkUKK19fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0QzFFUDlDR0NvbnRleHQKIF9fWk43V2Vi
Q29yZTE1UmVzb3VyY2VSZXF1ZXN0Mzl1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRU
UEJvZHlFUktTMF8KIF9fWk43V2ViQ29yZTE2Rm9udFBsYXRmb3JtRGF0YUMxRVA2TlNGb250ZmJi
Yk5TXzE1Rm9udE9yaWVudGF0aW9uRU5TXzE2Rm9udFdpZHRoVmFyaWFudEUKIF9fWk43V2ViQ29y
ZTE2Rm9udFBsYXRmb3JtRGF0YUMyRVA2TlNGb250ZmJiYk5TXzE1Rm9udE9yaWVudGF0aW9uRU5T
XzE2Rm9udFdpZHRoVmFyaWFudEUKQEAgLTE4NzcsOCArMTg3NCw4IEBAIF9fWk43V2ViQ29yZTE2
ZW5jbG9zaW5nSW50UmVjdEVSSzdfTlNSZWN0CiBfX1pON1dlYkNvcmUxOWFwcGxpY2F0aW9uSXNT
YWZhcmlFdgogX19aTjdXZWJDb3JlMjBQbGF0Zm9ybUV2ZW50RmFjdG9yeTI0Y3JlYXRlUGxhdGZv
cm1Nb3VzZUV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfX1pON1dlYkNvcmUyMFBsYXRmb3JtRXZl
bnRGYWN0b3J5MjdjcmVhdGVQbGF0Zm9ybUtleWJvYXJkRXZlbnRFUDdOU0V2ZW50Ci1fX1pON1dl
YkNvcmUyMGJ1aWx0SW5QREZQbHVnaW5OYW1lRXYKIF9fWk43V2ViQ29yZTIwYXBwbGljYXRpb25J
c0hSQmxvY2tFdgorX19aTjdXZWJDb3JlMjBidWlsdEluUERGUGx1Z2luTmFtZUV2CiBfX1pON1dl
YkNvcmUyMURldmljZU9yaWVudGF0aW9uRGF0YTZjcmVhdGVFYmRiZGJkYmIKIF9fWk43V2ViQ29y
ZTIxYXBwbGljYXRpb25Jc0FwZXJ0dXJlRXYKIF9fWk43V2ViQ29yZTIxYXBwbGljYXRpb25Jc1Zl
cnNpb25zRXYKQEAgLTE5MjUsOCArMTkyMiw4IEBAIF9fWk43V2ViQ29yZTMxY29udGV4dE1lbnVJ
dGVtVGFnU3RhcnRTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUzMmFwcGxpY2F0aW9uSXNBT0xJbnN0
YW50TWVzc2VuZ2VyRXYKIF9fWk43V2ViQ29yZTMyY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVs
ZW1lbnRFdgogX19aTjdXZWJDb3JlMzJjb250ZXh0TWVudUl0ZW1UYWdTbWFydENvcHlQYXN0ZUV2
Ci1fX1pON1dlYkNvcmUzM3Bvc3RTY3JpcHREb2N1bWVudFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pO
N1dlYkNvcmUzM2NvbnRleHRNZW51SXRlbVRhZ1RleHRSZXBsYWNlbWVudEV2CitfX1pON1dlYkNv
cmUzM3Bvc3RTY3JpcHREb2N1bWVudFR5cGVEZXNjcmlwdGlvbkV2CiBfX1pON1dlYkNvcmUzM3Nl
dERlZmF1bHRUaHJlYWRWaW9sYXRpb25CZWhhdmlvckVOU18yM1RocmVhZFZpb2xhdGlvbkJlaGF2
aW9yRU5TXzIwVGhyZWFkVmlvbGF0aW9uUm91bmRFCiBfX1pON1dlYkNvcmUzNGNvbnRleHRNZW51
SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb25FdgogX19aTjdXZWJDb3JlMzVjb250ZXh0TWVudUl0ZW1U
YWdTaG93U3BlbGxpbmdQYW5lbEViCkBAIC0xOTUyLDggKzE5NDksOCBAQCBfX1pON1dlYkNvcmU2
RWRpdG9yMjhzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkRXYKIF9fWk43V2ViQ29yZTZXaWRn
ZXQxN3NldFBsYXRmb3JtV2lkZ2V0RVA2TlNWaWV3CiBfX1pON1dlYkNvcmU2V2lkZ2V0QzJFUDZO
U1ZpZXcKIF9fWk43V2ViQ29yZTduc0NvbG9yRVJLTlNfNUNvbG9yRQotX19aTjdXZWJDb3JlOElu
dFBvaW50QzFFUks4X05TUG9pbnQKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLN0NHUG9pbnQK
K19fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CiBfX1pON1dlYkNvcmU5RmxvYXRS
ZWN0QzFFUks3X05TUmVjdAogX19aTks3V2ViQ29yZTEwRmxvYXRQb2ludGN2OF9OU1BvaW50RXYK
IF9fWk5LN1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMTh2aXNpYmxlQ29udGVudFJlY3RFTlMwXzM2
VmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzRQpAQCAtMTk2MywxMCArMTk2MCwx
MiBAQCBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjZDR1NpemVFdgogX19aTks3V2ViQ29yZThJbnRQ
b2ludGN2OF9OU1BvaW50RXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0Y3Y3X05TUmVjdEV2CiBf
c3RyaW5nRW5jb2RpbmdGb3JSZXNvdXJjZQorX3drQVZBc3NldFJlc29sdmVkVVJMCiBfd2tBY2Nl
c3NpYmlsaXR5SGFuZGxlRm9jdXNDaGFuZ2VkCiBfd2tBZHZhbmNlRGVmYXVsdEJ1dHRvblB1bHNl
QW5pbWF0aW9uCiBfd2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQKIF93a0NvcHlBWFRleHRNYXJr
ZXJSYW5nZVN0YXJ0Citfd2tDb3B5RGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUKIF93
a0NyZWF0ZUFYVGV4dE1hcmtlcgogX3drQ3JlYXRlQVhUZXh0TWFya2VyUmFuZ2UKIF93a0NyZWF0
ZUFYVUlFbGVtZW50UmVmCkBAIC0xOTc0LDYgKzE5NzMsOCBAQCBfd2tDcmVhdGVNZWRpYVVJQmFj
a2dyb3VuZFZpZXcKIF93a0NyZWF0ZU1lZGlhVUlDb250cm9sCiBfd2tDcmVhdGVVUkxOUGFzdGVi
b2FyZEZsYXZvclR5cGVOYW1lCiBfd2tDcmVhdGVVUkxQYXN0ZWJvYXJkRmxhdm9yVHlwZU5hbWUK
K193a0NyZWF0ZVZNUHJlc3N1cmVEaXNwYXRjaE9uTWFpblF1ZXVlCitfd2tDdXJzb3IKIF93a0Ry
YXdCZXplbGVkVGV4dEFyZWEKIF93a0RyYXdCZXplbGVkVGV4dEZpZWxkQ2VsbAogX3drRHJhd0Nh
cHNMb2NrSW5kaWNhdG9yCkBAIC0xOTgxLDYgKzE5ODIsNyBAQCBfd2tEcmF3Rm9jdXNSaW5nCiBf
d2tEcmF3TWVkaWFTbGlkZXJUcmFjawogX3drRHJhd01lZGlhVUlQYXJ0CiBfd2tEcmF3VGV4dEZp
ZWxkQ2VsbEZvY3VzUmluZworX3drRXhlY3V0YWJsZVdhc0xpbmtlZE9uT3JCZWZvcmVTbm93TGVv
cGFyZAogX3drR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQKIF93a0dldEFYVGV4dE1hcmtlclR5
cGVJRAogX3drR2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyCkBAIC0yMDE0LDcgKzIwMTYsOSBAQCBf
d2tRVE1vdmllUmVzb2x2ZWRVUkwKIF93a1FUTW92aWVTZWxlY3RQcmVmZXJyZWRBbHRlcm5hdGVz
CiBfd2tRVE1vdmllU2V0U2hvd0Nsb3NlZENhcHRpb25zCiBfd2tRVE1vdmllVmlld1NldERyYXdT
eW5jaHJvbm91c2x5Citfd2tSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUKIF93a1NldENHRm9udFJl
bmRlcmluZ01vZGUKK193a1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0
aW9uCiBfd2tTZXREcmFnSW1hZ2UKIF93a1NldE1ldGFkYXRhVVJMCiBfd2tTaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcKQEAgLTIxMTEsMTAgKzIxMTUsOCBAQCBfX1pON1dlYkNvcmUx
MUltYWdlU291cmNlMjZzX2FjY2VsZXJhdGVkSW1hZ2VEZWNvZGluZ0UKIF9fWk43V2ViQ29yZTEx
SW1hZ2VTb3VyY2UzM21heGltdW1JbWFnZVNpemVCZWZvcmVTdWJzYW1wbGluZ0V2CiBfX1pON1dl
YkNvcmUxMUltYWdlU291cmNlMzZzZXRNYXhpbXVtSW1hZ2VTaXplQmVmb3JlU3Vic2FtcGxpbmdF
agogX19aTjdXZWJDb3JlMTFNYXRoTUxOYW1lczRpbml0RXYKLV9fWk43V2ViQ29yZTExTWVtb3J5
Q2FjaGUxNWFkZEltYWdlVG9DYWNoZUVQN0NHSW1hZ2VSS05TXzRLVVJMRQogX19aTjdXZWJDb3Jl
MTFNZW1vcnlDYWNoZTE4cHJ1bmVEZWFkUmVzb3VyY2VzRXYKIF9fWk43V2ViQ29yZTExTWVtb3J5
Q2FjaGUxOHBydW5lTGl2ZVJlc291cmNlc0ViCi1fX1pON1dlYkNvcmUxMU1lbW9yeUNhY2hlMjBy
ZW1vdmVJbWFnZUZyb21DYWNoZUVSS05TXzRLVVJMRQogX19aTjdXZWJDb3JlMTFpc0VuZE9mTGlu
ZUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMG1v
dXNlTW92ZWRFUDhXZWJFdmVudAogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxMHdoZWVsRXZl
bnRFUDhXZWJFdmVudApAQCAtMjIwMSw3ICsyMjAzLDYgQEAgX19aTjdXZWJDb3JlMjhjcmVhdGVD
R0NvbG9yV2l0aERldmljZVdoaXRlRWZmCiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3JDMUVQS3RpCiBfX1pON1dlYkNvcmUzMU5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3JEMUV2CiBfX1pON1dlYkNvcmUzMWFwcGxpY2F0aW9uSXNEYWlqaXNlbkRpY3Rp
b25hcnlFdgotX19aTjdXZWJDb3JlMzJlbmFibGVLVVJMU2NoZW1lQ2Fub25pY2FsaXphdGlvbkVi
CiBfX1pON1dlYkNvcmUzM2FwcGxpY2F0aW9uSXNUaGVFY29ub21pc3RPbklQaG9uZUV2CiBfX1pO
N1dlYkNvcmU0MWluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwRXYKIF9f
Wk43V2ViQ29yZTRGb250QzFFUktOU18xNkZvbnRQbGF0Zm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfMTJGb250U2VsZWN0b3JFRUUKQEAgLTIyMTUsNyArMjIxNiw2IEBAIF9fWk43V2ViQ29y
ZTVGcmFtZTIwZG9jdW1lbnRTY2FsZUNoYW5nZWRFdgogX19aTjdXZWJDb3JlNUZyYW1lMjBzZXRW
aWV3cG9ydEFyZ3VtZW50c0VSS05TXzE3Vmlld3BvcnRBcmd1bWVudHNFCiBfX1pON1dlYkNvcmU1
RnJhbWUyMWRlZXBlc3ROb2RlQXRMb2NhdGlvbkVQN0NHUG9pbnQKIF9fWk43V2ViQ29yZTVGcmFt
ZTIxdmlld3BvcnRPZmZzZXRDaGFuZ2VkRXYKLV9fWk43V2ViQ29yZTVGcmFtZTI2aW5pdFdpdGhT
aW1wbGVIVE1MRG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEUKIF9fWk43V2ViQ29y
ZTVGcmFtZTI3bm9kZVJlc3BvbmRpbmdUb0NsaWNrRXZlbnRzRVA3Q0dQb2ludAogX19aTjdXZWJD
b3JlNUZyYW1lMzBzZXRTaW5nbGVMaW5lU2VsZWN0aW9uQmVoYXZpb3JFYgogX19aTjdXZWJDb3Jl
NUZyYW1lMzJkaXNwYXRjaFBhZ2VIaWRlRXZlbnRCZWZvcmVQYXVzZUV2CkBAIC0yMjUyLDkgKzIy
NTIsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjRyZW5kZXJlZENoYXJhY3RlcnNFeGNlZWRF
agogX19aTjdXZWJDb3JlOUZyYW1lVmlldzMwZ3JhcGhpY3NMYXllckZvclBsYXRmb3JtV2lkZ2V0
RVA3V0FLVmlldwogX19aTjdXZWJDb3JlOUZyYW1lVmlldzMyc2V0Q3VzdG9tRml4ZWRQb3NpdGlv
bkxheW91dFJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXczNXNldFVz
ZUN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0RWIKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAx
N3JlbW92ZVZpc2l0ZWRMaW5rRVJLTlNfNEtVUkxFCi1fX1pON1dlYkNvcmU5UGFnZUdyb3VwMjBh
ZGRVc2VyU2NyaXB0VG9Xb3JsZEVQTlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdF
UktOU180S1VSTEVSS05TM182VmVjdG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVT
RV9OU18yM1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lRU5TXzI1VXNlckNvbnRlbnRJbmplY3RlZEZy
YW1lc0UKLV9fWk43V2ViQ29yZTlQYWdlR3JvdXAyNGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZEVQ
TlNfMTVET01XcmFwcGVyV29ybGRFUktOM1dURjZTdHJpbmdFUktOU180S1VSTEVSS05TM182VmVj
dG9ySVM0X0xtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTRV9OU18yNVVzZXJDb250ZW50SW5q
ZWN0ZWRGcmFtZXNFTlNfMTRVc2VyU3R5bGVMZXZlbEVOU18yMlVzZXJTdHlsZUluamVjdGlvblRp
bWVFCiBfX1pON1dlYkNvcmU5VGlsZUNhY2hlMTRkcmFpbkxheWVyUG9vbEV2CiBfX1pON1dlYkNv
cmU5VGlsZUNhY2hlMjBzZXRMYXllclBvb2xDYXBhY2l0eUVqCiBfX1pOSzdXZWJDb3JlMTBGbG9h
dFBvaW50Y3Y3Q0dQb2ludEV2CkBAIC0yMzE2LDUyICsyMzEzLDMxIEBAIF9fWk5LN1dlYkNvcmU3
RWxlbWVudDI2ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWRFUktOU18xM1F1YWxpZmllZE5hbWVF
CiBfX1pON1dlYkNvcmUyMExvZ05vdFlldEltcGxlbWVudGVkRQogX19aTjdXZWJDb3JlMjhub3RJ
bXBsZW1lbnRlZExvZ2dpbmdDaGFubmVsRXYKIF9fWk43V2ViQ29yZTM2aW5pdGlhbGl6ZUxvZ2dp
bmdDaGFubmVsc0lmTmVjZXNzYXJ5RXYKLSNlbmRpZiAvLyAhTE9HX0RJU0FCTEVECisjZW5kaWYK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKIF9fWk43V2ViQ29yZTI3Tm9FeGNlcHRpb25Bc3NlcnRp
b25DaGVja2VyQzFFUEtjaQogX19aTjdXZWJDb3JlMjdOb0V4Y2VwdGlvbkFzc2VydGlvbkNoZWNr
ZXJEMUV2Ci0jZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAorI2VuZGlmCiAKICNpZiAhZGVmaW5l
ZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykgJiYgIVBMQVRGT1JN
KElPUykKIF9fWk43V2ViQ29yZTdJbnRTaXplQzFFUks3X05TU2l6ZQogX19aTks3V2ViQ29yZTdJ
bnRTaXplY3Y3X05TU2l6ZUV2CiAjZW5kaWYKIAotX3drQ0FMYXllckVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bldpdGhCbG9jawotX3drQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQb3N0Q2FjaGluZwotX3dr
Q0dQYXRoQWRkUm91bmRlZFJlY3QKLV93a0NyZWF0ZUNUVHlwZXNldHRlcldpdGhVbmlDaGFyUHJv
dmlkZXJBbmRPcHRpb25zCi0KICNpZiAhUExBVEZPUk0oSU9TX1NJTVVMQVRPUikKIF93a0lPU3Vy
ZmFjZUNvbnRleHRDcmVhdGUKIF93a0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZQogI2VuZGlm
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQotX3drQVZBc3NldFJlc29sdmVkVVJMCi1fd2tDb3B5RGVm
YXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUKLV93a1NldENyYXNoUmVwb3J0QXBwbGljYXRp
b25TcGVjaWZpY0luZm9ybWF0aW9uCi1fd2tDcmVhdGVWTVByZXNzdXJlRGlzcGF0Y2hPbk1haW5R
dWV1ZQotX3drQ3Vyc29yCi1fd2tFeGVjdXRhYmxlV2FzTGlua2VkT25PckJlZm9yZVNub3dMZW9w
YXJkCi1fd2tSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUKLSNlbmRpZgotCi0jaWYgIVBMQVRGT1JN
KElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDcmVh
dGVNZW1vcnlTdGF0dXNQcmVzc3VyZUNyaXRpY2FsRGlzcGF0Y2hPbk1haW5RdWV1ZQotI2VuZGlm
Ci0KLSNpZiBVU0UoQ09OVEVOVF9GSUxURVJJTkcpCi1fd2tGaWx0ZXJBZGREYXRhCi1fd2tGaWx0
ZXJDcmVhdGVJbnN0YW5jZQotX3drRmlsdGVyRGF0YUNvbXBsZXRlCi1fd2tGaWx0ZXJJc0J1ZmZl
cmluZwotX3drRmlsdGVySXNNYW5hZ2VkU2Vzc2lvbgotX3drRmlsdGVyV2FzQmxvY2tlZAotI2Vu
ZGlmCi0KICNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDEwODAKK19fWk43V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4
TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRpdmVzRVJLTjNXVEY5UmV0YWluUHRySTE4TlNUZXh0
QWx0ZXJuYXRpdmVzRUUKK19fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVy
MTZzaG93QWx0ZXJuYXRpdmVzRVA2TlNWaWV3UktOU185RmxvYXRSZWN0RXlVMTNibG9ja19wb2lu
dGVyRnZQOE5TU3RyaW5nRQorX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIxOHJlbW92ZUFsdGVybmF0aXZlc0V5CitfX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJ
Q29udHJvbGxlcjIyYWx0ZXJuYXRpdmVzRm9yQ29udGV4dEV5CitfX1pON1dlYkNvcmUyN0FsdGVy
bmF0aXZlVGV4dFVJQ29udHJvbGxlcjVjbGVhckV2CitfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0
YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJ
TlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRU5TMl8xNUNyYXNoT25PdmVyZmxvd0VF
RQogX3drQ0dDb250ZXh0RHJhd3NXaXRoQ29ycmVjdFNoYWRvd09mZnNldHMKIF93a0V4ZWN1dGFi
bGVXYXNMaW5rZWRPbk9yQmVmb3JlTGlvbgogX3drTlNFbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVs
dGEKQEAgLTIzNjksMjggKzIzNDUsMTggQEAgX3drTlNFbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEK
IF93a05TUmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi1fd2tDVEZv
bnRUcmFuc2Zvcm1HbHlwaHMKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwOTAKK193a0NyZWF0ZU1lbW9yeVN0YXR1c1ByZXNzdXJlQ3Jp
dGljYWxEaXNwYXRjaE9uTWFpblF1ZXVlCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElPUykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgw
Ci1fX1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjE1YWRkQWx0ZXJuYXRp
dmVzRVJLTjNXVEY5UmV0YWluUHRySTE4TlNUZXh0QWx0ZXJuYXRpdmVzRUUKLV9fWk43V2ViQ29y
ZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMjJhbHRlcm5hdGl2ZXNGb3JDb250ZXh0RXkK
LV9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyNWNsZWFyRXYKLV9fWk43
V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyMThyZW1vdmVBbHRlcm5hdGl2ZXNF
eQotX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIxNnNob3dBbHRlcm5h
dGl2ZXNFUDZOU1ZpZXdSS05TXzlGbG9hdFJlY3RFeVUxM2Jsb2NrX3BvaW50ZXJGdlA4TlNTdHJp
bmdFCi1fX1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFs
dGVybmF0aXZlczhfTlNSYW5nZQotX19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFs
dGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlRUxtMEVOUzJfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKKyNpZiBQTEFU
Rk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAorX3dr
Q1RGb250VHJhbnNmb3JtR2x5cGhzCiAjZW5kaWYKIAogI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcp
CiBfV2ViQ29yZUhhczNEUmVuZGVyaW5nCiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKLV9fWk43V2ViQ29yZTE2RmlsdGVyT3BlcmF0aW9uc2FTRVJLUzBfCi0jZW5kaWYKLQogI2lm
IFVTRShBUFBLSVQpCiBfX1pON1dlYkNvcmU2RWRpdG9yMTNsb3dlcmNhc2VXb3JkRXYKIF9fWk43
V2ViQ29yZTZFZGl0b3IxM3VwcGVyY2FzZVdvcmRFdgpAQCAtMjQwMiw5ICsyMzY4LDIyIEBAIF9f
Wk43V2ViQ29yZThTZXR0aW5nczIwZ0FWRm91bmRhdGlvbkVuYWJsZWRFCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MyMnNldEFWRm91bmRhdGlvbkVuYWJsZWRFYgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MxM2dRVEtpdEVuYWJsZWRFCi1fX1pON1dlYkNv
cmU4U2V0dGluZ3MxNXNldFFUS2l0RW5hYmxlZEViCisjaWYgRU5BQkxFKEJMT0IpCitfX1pON1dl
YkNvcmUxMmJsb2JSZWdpc3RyeUV2CitfX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVh
dGVCbG9iUmVnaXN0cnlFdgorX19aTjdXZWJDb3JlN1Jhd0RhdGFDMUV2CitfX1pON1dlYkNvcmU4
QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfN1Jhd0RhdGFFRUV4eAor
X19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRGaWxlRVJLTjNXVEY2U3RyaW5nRXh4ZAorX19a
TjdXZWJDb3JlOEJsb2JEYXRhNmNyZWF0ZUV2CitfX1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTEx
dG9FbmRPZkZpbGVFCitfX1pON1dlYkNvcmUxMkJsb2JSZWdpc3RyeUQyRXYKK19fWlRWTjdXZWJD
b3JlMTJCbG9iUmVnaXN0cnlFCitfX1pUVk43V2ViQ29yZTE2QmxvYlJlZ2lzdHJ5SW1wbEUKKyNl
bmRpZgorCisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKK19fWk43V2ViQ29yZTE1UmVz
b3VyY2VSZXF1ZXN0MTNwYXJ0aXRpb25OYW1lRVJLTjNXVEY2U3RyaW5nRQorX3drQ2FjaGVQYXJ0
aXRpb25LZXkKICNlbmRpZgogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTI0MjIsMTggKzI0MDEs
MTMgQEAgX3drU2V0Q0ZVUkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmCiBfd2tTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24KICNlbmRpZgogCi0jaWYgRU5BQkxFKEJMT0IpCi1fX1pON1dlYkNvcmUx
MmJsb2JSZWdpc3RyeUV2Ci1fX1pON1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MThjcmVhdGVCbG9i
UmVnaXN0cnlFdgotX19aTjdXZWJDb3JlN1Jhd0RhdGFDMUV2Ci1fX1pON1dlYkNvcmU4QmxvYkRh
dGExMGFwcGVuZEJsb2JFUktOU180S1VSTEV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBl
bmREYXRhRU4zV1RGMTBQYXNzUmVmUHRySU5TXzdSYXdEYXRhRUVFeHgKLV9fWk43V2ViQ29yZThC
bG9iRGF0YTEwYXBwZW5kRmlsZUVSS04zV1RGNlN0cmluZ0V4eGQKLV9fWk43V2ViQ29yZThCbG9i
RGF0YTZjcmVhdGVFdgotX19aTjdXZWJDb3JlMTJCbG9iRGF0YUl0ZW0xMXRvRW5kT2ZGaWxlRQot
X19aTjdXZWJDb3JlMTJCbG9iUmVnaXN0cnlEMkV2Ci1fX1pUVk43V2ViQ29yZTEyQmxvYlJlZ2lz
dHJ5RQotX19aVFZON1dlYkNvcmUxNkJsb2JSZWdpc3RyeUltcGxFCisjaWYgVVNFKENPTlRFTlRf
RklMVEVSSU5HKQorX3drRmlsdGVyQWRkRGF0YQorX3drRmlsdGVyQ3JlYXRlSW5zdGFuY2UKK193
a0ZpbHRlckRhdGFDb21wbGV0ZQorX3drRmlsdGVySXNCdWZmZXJpbmcKK193a0ZpbHRlcklzTWFu
YWdlZFNlc3Npb24KK193a0ZpbHRlcldhc0Jsb2NrZWQKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCkBAIC0yNDU1LDEzICsyNDI5LDE3IEBAIF9fWk5LN1dlYkNvcmUxNUNvbnRl
eHRNZW51SXRlbTV0aXRsZUV2CiBfX1pOSzdXZWJDb3JlMTVDb250ZXh0TWVudUl0ZW02YWN0aW9u
RXYKIF9fWk5LN1dlYkNvcmUxNUNvbnRleHRNZW51SXRlbTdjaGVja2VkRXYKIF9fWk5LN1dlYkNv
cmUxNUNvbnRleHRNZW51SXRlbTdlbmFibGVkRXYKLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorX19aTjdXZWJDb3JlMTZG
aWx0ZXJPcGVyYXRpb25zYVNFUktTMF8KKyNlbmRpZgogCiAjaWYgRU5BQkxFKENTUzNfQ09ORElU
SU9OQUxfUlVMRVMpCiAub2JqY19jbGFzc19uYW1lX0RPTUNTU1N1cHBvcnRzUnVsZQogX19aTjdX
ZWJDb3JlMTJET01XaW5kb3dDU1M2Y3JlYXRlRXYKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEyRE9NV2luZG93Q1NTRQotI2Vu
ZGlmIC8vIEVOQUJMRShDU1MzX0NPTkRJVElPTkFMX1JVTEVTKQorI2VuZGlmCiAKICNpZiBFTkFC
TEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShEUkFHR0FCTEVfUkVHSU9OKQogX19aTks3
V2ViQ29yZThEb2N1bWVudDE2YW5ub3RhdGVkUmVnaW9uc0V2CkBAIC0yNDgwLDYgKzI0NTgsMTAg
QEAgX19aTjdXZWJDb3JlOERyYWdEYXRhQzFFUDExb2JqY19vYmplY3RSS05TXzhJbnRQb2ludEVT
NV9OU18xM0RyYWdPcGVyYXRpb25FTlNfMjAKIF9fWk43V2ViQ29yZThEcmFnRGF0YUMxRVJLTjNX
VEY2U3RyaW5nRVJLTlNfOEludFBvaW50RVM3X05TXzEzRHJhZ09wZXJhdGlvbkVOU18yMERyYWdB
cHBsaWNhdGlvbkZsYWdzRQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1Yy
KQorX19aTjdXZWJDb3JlM0NETTE4cmVnaXN0ZXJDRE1GYWN0b3J5RVBGTjNXVEYxMFBhc3NPd25Q
dHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJmYWNlRUVFUFMwX0VQRmJSS05TMV82U3RyaW5nRUVQRmJT
QV9TQV9FCisjZW5kaWYKKwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIF9fWk43V2ViQ29y
ZThEb2N1bWVudDIyd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkV2CiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQzM3dlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCkBAIC0y
NTI5LDcgKzI1MTEsNyBAQCBfX1pON1dlYkNvcmUxMkljb25EYXRhYmFzZUMxRXYKIF9fWk5LN1dl
YkNvcmUxMkljb25EYXRhYmFzZTEyZGF0YWJhc2VQYXRoRXYKIF9fWk5LN1dlYkNvcmUxMkljb25E
YXRhYmFzZTI0c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5RXYKIF9fWk5LN1dlYkNvcmUxMkljb25E
YXRhYmFzZTlpc0VuYWJsZWRFdgotI2VuZGlmIC8vIEVOQUJMRShJQ09OREFUQUJBU0UpCisjZW5k
aWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogX19aTjdXZWJDb3JlNUNvbG9yQzFF
UDdDR0NvbG9yCkBAIC0yNTk3LDYgKzI1NzksMTkgQEAgX19aTks3V2ViQ29yZTlGbG9hdFF1YWQx
MmNvbnRhaW5zUXVhZEVSS1MwXwogX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxM2NvbnRhaW5zUG9p
bnRFUktOU18xMEZsb2F0UG9pbnRFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQorX19aTjdXZWJDb3JlMTJSZW5kZXJPYmplY3QxOXJlc2V0VGV4dEF1dG9zaXppbmdF
dgorX19aTjdXZWJDb3JlNUZyYW1lMjJzZXRUZXh0QXV0b3NpemluZ1dpZHRoRWYKKyNlbmRpZgor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKK19fWk43V2ViQ29yZTE2VXNlck1lZGlhUmVxdWVz
dDIydXNlck1lZGlhQWNjZXNzR3JhbnRlZEV2CitfX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVl
c3QyMXVzZXJNZWRpYUFjY2Vzc0RlbmllZEV2CitfX1pON1dlYkNvcmUxOHByb3ZpZGVVc2VyTWVk
aWFUb0VQTlNfNFBhZ2VFUE5TXzE1VXNlck1lZGlhQ2xpZW50RQorX19aTks3V2ViQ29yZTE2VXNl
ck1lZGlhUmVxdWVzdDE0c2VjdXJpdHlPcmlnaW5FdgorX19aTjdXZWJDb3JlMjFNb2NrTWVkaWFT
dHJlYW1DZW50ZXIyOXJlZ2lzdGVyTW9ja01lZGlhU3RyZWFtQ2VudGVyRXYKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiBfX05QTl9Db25zdHJ1Y3QKIF9fTlBOX0Ny
ZWF0ZU9iamVjdApAQCAtMjY5MCw2ICsyNjg1LDEyIEBAIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rp
b25TcGFjZTIwYXV0aGVudGljYXRpb25TY2hlbWVFdgogX19aTjdXZWJDb3JlOGNyZWF0ZUNGRVJL
TlNfMTVQcm90ZWN0aW9uU3BhY2VFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShQVUJMSUNfU1VGRklY
X0xJU1QpCitfX1pON1dlYkNvcmUxNGlzUHVibGljU3VmZml4RVJLTjNXVEY2U3RyaW5nRQorX19a
TjdXZWJDb3JlMjh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluRVJLTjNXVEY2U3RyaW5nRQor
X3drSXNQdWJsaWNTdWZmaXgKKyNlbmRpZgorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiBfX1pON1dl
YkNvcmUyN3FsUHJldmlld0NvbnZlcnRlclVUSUZvclVSTEVQNU5TVVJMCiBfX1pON1dlYkNvcmUz
MHJlbW92ZVFMUHJldmlld0NvbnZlcnRlckZvclVSTEVQNU5TVVJMCkBAIC0yNzAxLDE4ICsyNzAy
LDMxIEBAIF9fWk43V2ViQ29yZTMzUUxQcmV2aWV3R2V0U3VwcG9ydGVkTUlNRVR5cGVzU2V0RXYK
IF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyNXNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnNFZAogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCitfX1pOSzdXZWJDb3JlOUZyYW1lVmll
dzMxc2V0V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJlYUViCitfX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzM0c2V0V2FudHNMYXllckZvckJvdHRvbU92ZXJIYW5nQXJlYUViCisjZW5kaWYKKwogI2lm
IEVOQUJMRShTSEFET1dfRE9NKQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKK19fWk43V2ViQ29yZTE1U3BlZWNoU3ludGhlc2lzMjJz
ZXRQbGF0Zm9ybVN5bnRoZXNpemVyRU4zV1RGMTBQYXNzT3duUHRySU5TXzI1UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXplckVFRQorX19aTjdXZWJDb3JlMjRET01XaW5kb3dTcGVlY2hTeW50aGVzaXMx
NXNwZWVjaFN5bnRoZXNpc0VQTlNfOURPTVdpbmRvd0UKK19fWk43V2ViQ29yZTI1UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplckMyRVBOU18zMVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRF
CitfX1pUVk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckUKK19fWk43V2ViQ29y
ZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckQyRXYKK19fWk43V2ViQ29yZTI4UGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfUzRfYmIKKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKFNWRykKIF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9u
c0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKLV9fWk43V2ViQ29yZTEyUmVuZGVy
T2JqZWN0MTlyZXNldFRleHRBdXRvc2l6aW5nRXYKLV9fWk43V2ViQ29yZTVGcmFtZTIyc2V0VGV4
dEF1dG9zaXppbmdXaWR0aEVmCisjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKK19fWk5LN1dlYkNv
cmU0Tm9kZTMxbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbkV2CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCkBAIC0yNzYzLDQ5ICsyNzc3LDEyIEBAIF9fWk5L
N1dlYkNvcmUxNkhUTUxNZWRpYUVsZW1lbnQ2cGF1c2VkRXYKIAogI2lmIEVOQUJMRShWSUVXX01P
REVfQ1NTX01FRElBKQogX19aTjdXZWJDb3JlNFBhZ2UxMXNldFZpZXdNb2RlRU5TMF84Vmlld01v
ZGVFCi0jZW5kaWYgLy8gRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCisjZW5kaWYKIAogI2lm
IEVOQUJMRShXT1JLRVJTKQogX19aTjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVh
ZENvdW50RXYKICNlbmRpZgogCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKLV9fWk43
V2ViQ29yZTNDRE0xOHJlZ2lzdGVyQ0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5
Q0RNUHJpdmF0ZUludGVyZmFjZUVFRVBTMF9FUEZiUktOUzFfNlN0cmluZ0VFUEZiU0FfU0FfRQot
I2VuZGlmCi0KICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBfX1pON1dlYkNvcmU5UGFnZUdyb3Vw
MThjYXB0aW9uUHJlZmVyZW5jZXNFdgogI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKLV9fWk43V2ViQ29yZTE1U3BlZWNoU3ludGhlc2lzMjJzZXRQbGF0Zm9ybVN5bnRoZXNp
emVyRU4zV1RGMTBQYXNzT3duUHRySU5TXzI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckVFRQot
X19aTjdXZWJDb3JlMjRET01XaW5kb3dTcGVlY2hTeW50aGVzaXMxNXNwZWVjaFN5bnRoZXNpc0VQ
TlNfOURPTVdpbmRvd0UKLV9fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckMy
RVBOU18zMVBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnRFCi1fX1pUVk43V2ViQ29yZTI1
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXplckUKLV9fWk43V2ViQ29yZTI1UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplckQyRXYKLV9fWk43V2ViQ29yZTI4UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2lj
ZTZjcmVhdGVFUktOM1dURjZTdHJpbmdFUzRfUzRfYmIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQotX19aTks3V2ViQ29yZTlGcmFtZVZpZXczMXNldFdhbnRzTGF5ZXJGb3JU
b3BPdmVySGFuZ0FyZWFFYgotX19aTks3V2ViQ29yZTlGcmFtZVZpZXczNHNldFdhbnRzTGF5ZXJG
b3JCb3R0b21PdmVySGFuZ0FyZWFFYgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJ
WF9MSVNUKQotX19aTjdXZWJDb3JlMTRpc1B1YmxpY1N1ZmZpeEVSS04zV1RGNlN0cmluZ0UKLV9f
Wk43V2ViQ29yZTI4dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbkVSS04zV1RGNlN0cmluZ0UK
LV93a0lzUHVibGljU3VmZml4Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCi1fX1pON1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEzcGFydGl0aW9uTmFtZUVSS04zV1RG
NlN0cmluZ0UKLV93a0NhY2hlUGFydGl0aW9uS2V5Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi1fX1pON1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QyMnVzZXJNZWRpYUFjY2Vz
c0dyYW50ZWRFdgotX19aTjdXZWJDb3JlMTZVc2VyTWVkaWFSZXF1ZXN0MjF1c2VyTWVkaWFBY2Nl
c3NEZW5pZWRFdgotX19aTjdXZWJDb3JlMThwcm92aWRlVXNlck1lZGlhVG9FUE5TXzRQYWdlRVBO
U18xNVVzZXJNZWRpYUNsaWVudEUKLV9fWk5LN1dlYkNvcmUxNlVzZXJNZWRpYVJlcXVlc3QxNHNl
Y3VyaXR5T3JpZ2luRXYKLV9fWk43V2ViQ29yZTIxTW9ja01lZGlhU3RyZWFtQ2VudGVyMjlyZWdp
c3Rlck1vY2tNZWRpYVN0cmVhbUNlbnRlckV2Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDU4OTUyODViZTllOWQwMmRiYjk4
MDM4Y2M4NjQyODgxNzMwMDNlNzkuLmUyN2Y1OTQxNjhmYTZhZjE1NmIwNTdjMjhhNzAwNzI3ZmFm
OTIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtNzQyMSw3ICs3NDIxLDcgQEAKICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEhpc3RvZ3JhbVN1cHBvcnQuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS2lsbFJpbmdOb25lLmNwcCIgLz4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXEtVUkwuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cVVJMLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXExhbmd1YWdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXExlbmd0aC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxMZW5ndGhCb3guY3BwIiAvPgpAQCAtNzYwNSw3ICs3NjA1LDcgQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXHdpblxXaW5kb3dNZXNzYWdlQnJvYWRjYXN0ZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcQ0ZVUkxFeHRy
YXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cY2ZcRmlsZVN5
c3RlbUNGLmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXEtV
UkxDRk5ldC5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxV
UkxDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxjZlxTaGFy
ZWRCdWZmZXJDRi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxj
Zlx3aW5cQ2VydGlmaWNhdGVDRldpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xCaXRtYXBJbWFnZS5jcHAiIC8+CkBAIC0xOTAxNyw4ICsxOTAx
Nyw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIaXN0b2dyYW1TdXBw
b3J0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxsUmluZy5oIiAv
PgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTC5oIiAvPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cS1VSTEhhc2guaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccGxhdGZvcm1cVVJMSGFzaC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cTGFuZ3VhZ2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXExheW91dFVuaXQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XExlbmd0aC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDI0OGQxYTQ4ODdlOGU4MGFiZDJjMTA4MzBl
YTJlNGZlOGZjNzk4YmQuLjZiM2MwYzg5YTcwOTllZDJhZmQ0ZjkwZjQxMmQ1YjgwN2VjMGZhOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qLmZpbHRlcnMKQEAgLTExMjgsNyArMTEyOCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxLaWxsUmluZ05vbmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZv
cm08L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEtVUkwuY3BwIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XFVSTC5jcHAiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybTwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cTGFuZ3VhZ2UuY3BwIj4K
QEAgLTUxMTIsNyArNTExMiw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxjZlxGaWxlU3lzdGVtQ0YuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGNmXEtVUkxDRk5ldC5jcHAiPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Y2ZcVVJMQ0YuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cY2Y8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGNmXHdpblxD
ZXJ0aWZpY2F0ZUNGV2luLmNwcCI+CkBAIC04MTIxLDEwICs4MTIxLDEwIEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLaWxsUmluZy5oIj4KICAgICAgIDxGaWx0ZXI+cGxh
dGZvcm08L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXEtVUkwuaCI+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxVUkwuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxLVVJMSGFzaC5oIj4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXFVSTEhhc2guaCI+CiAgICAgICA8Rmls
dGVyPnBsYXRmb3JtPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxMYW5ndWFnZS5oIj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NTAzNjY1OTUxYWNkZTEyZTNk
ZDcxM2IxM2MwMDJiMmZkNDA3MDZjLi5kODE1YTcyY2UyNTQ4YWUyMGQ4ZGQxZGY2NTAxNzMwZDJi
OTMxNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NTIsNyArNjUyLDcgQEAKIAkJMUE5MjdGRDIxNDE2QTE1QjAwM0E4M0M4
IC8qIG5wYXBpLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTkyN0ZDRjE0MTZBMTVCMDAzQTgzQzggLyogbnBhcGkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTkyN0ZEMzE0MTZBMTVCMDAzQTgzQzgg
LyogbnBydW50aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50aW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE5MjdGRDQxNDE2QTE1QjAw
M0E4M0M4IC8qIG5wdHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBOTI3RkQxMTQxNkExNUIwMDNBODNDOCAvKiBucHR5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUE5ODk1NkIwQUE3OEY4
MDAwNUVGNUVGIC8qIEtVUkxDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTk4OTU2QTBBQTc4RjgwMDA1RUY1RUYgLyogS1VSTENGTmV0LmNw
cCAqLzsgfTsKKwkJMUE5ODk1NkIwQUE3OEY4MDAwNUVGNUVGIC8qIFVSTENGLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTg5NTZBMEFBNzhGODAw
MDVFRjVFRiAvKiBVUkxDRi5jcHAgKi87IH07CiAJCTFBQTIxMjUwMTYzRjBEQTgwMDAwRTYzRiAv
KiBBdG9taWNTdHJpbmdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUEyMTI0RjE2M0YwREE4MDAwMEU2M0YgLyogQXRvbWljU3RyaW5nQ0YuY3Bw
ICovOyB9OwogCQkxQUE3MTYwQTE0OUJDNERCMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUE3MTYwODE0
OUJDNERBMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gKi87IH07CiAJCTFBQTcxNjBCMTQ5
QkM0REIwMDE2RUMxOSAvKiBUaWxlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBNzE2MDkxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVD
b250cm9sbGVyLmggKi87IH07CkBAIC0xODkwLDkgKzE4OTAsOSBAQAogCQk2NTdFREEwODEzODVD
Qjk3MDA0RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1N0VEQTA2MTM4NUNCOTcwMDRFMDY0NSAv
KiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwICovOyB9OwogCQk2NTdFREEwQjEzODVDQkQ4MDA0
RTA2NDUgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU3RURBMEExMzg1Q0JEODAwNEUwNjQ1IC8qIE1l
bW9yeVByZXNzdXJlSGFuZGxlck1hYy5tbSAqLzsgfTsKIAkJNjU4NDM2ODYwQUUwMUI3NDAwRTUz
NzUzIC8qIEZyYW1lTG9hZFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFtZUxvYWRSZXF1
ZXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NjU5MzkyMzcwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtV
UkwuY3BwICovOyB9OwotCQk2NTkzOTIzODA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU5MzkyMzYwOUFFNDM0
NjAwMkM1MzFGIC8qIEtVUkwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQz
NUMwMDJDNTMxRiAvKiBLVVJMTWFjLm1tICovOyB9OworCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUz
MUYgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuY3BwICovOyB9OworCQk2NTkzOTIz
ODA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjU5MzkyM0EwOUFF
NDM1QzAwMkM1MzFGIC8qIFVSTE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1OTM5MjM5MDlBRTQzNUMwMDJDNTMxRiAvKiBVUkxNYWMubW0gKi87
IH07CiAJCTY1OTZGMkIzMEI4NzMxREYwMDEzMjZCRCAvKiBET01IVE1MSW5wdXRFbGVtZW50SW50
ZXJuYWwuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg1RTcxMTY0MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01IVE1MSW5wdXRFbGVt
ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJNjU5NkYyQzEwQjg3MzI1QzAwMTMyNkJEIC8qIERPTUhU
TUxUZXh0QXJlYUVsZW1lbnRJbnRlcm5hbC5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVFNzExN0YwQUM1RDUzNTAwNTMyNzBG
IC8qIERPTUhUTUxUZXh0QXJlYUVsZW1lbnRJbnRlcm5hbC5oICovOyB9OwogCQk2NTlBN0QxMzBC
NkRCNEQ5MDAxMTU1QjMgLyogU3Vic3RpdHV0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1OUE3RDEyMEI2REI0RDkwMDExNTVCMyAvKiBTdWJz
dGl0dXRlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01MDQyLDcgKzUwNDIsNyBAQAogCQlCQ0JCOEFCOTEzRjFBRkIwMDA3MzRERjAgLyog
UE9ESW50ZXJ2YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZhbC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQkI4QUJBMTNGMUFGQjAw
MDczNERGMCAvKiBQT0RJbnRlcnZhbFRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkI4QUI2MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bFRyZWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQ0JCOEFCQjEzRjFBRkIwMDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JCOEFCNzEzRjFBRkIwMDA3
MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIEtVUkxIYXNo
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JEMjFB
QTBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQ0JEMjFBQjBFNDE3QUQ0MDBBMDcwRjIgLyogVVJM
SGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNC
RDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUgLyog
SlNET01XaW5kb3dTaGVsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5j
cHAgKi87IH07CiAJCUJDQkZCNTNEMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JGQjUz
QjBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4
NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDQzA2NTc3MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLzsg
fTsKQEAgLTcxMTYsNyArNzExNiw3IEBACiAJCTFBOTI3RkNGMTQxNkExNUIwMDNBODNDOCAvKiBu
cGFwaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucGFwaS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkyN0ZEMDE0MTZBMTVCMDAzQTgzQzggLyogbnBydW50
aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG5wcnVudGltZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTkyN0ZEMTE0MTZBMTVCMDAzQTgzQzggLyogbnB0
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBucHR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJM
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkxDRk5l
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOTg5NTZBMEFBNzhGODAwMDVF
RjVFRiAvKiBVUkxDRi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
VVJMQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUEyMTI0RjE2M0YwREE4
MDAwMEU2M0YgLyogQXRvbWljU3RyaW5nQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQXRvbWljU3RyaW5nQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUE3MTYwODE0OUJDNERBMDAxNkVDMTkgLyogVGlsZUNvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUaWxlQ29udHJvbGxlci5tbTsgcGF0
aCA9IGNhL21hYy9UaWxlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUFBNzE2MDkxNDlCQzREQjAwMTZFQzE5IC8qIFRpbGVDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRpbGVDb250cm9sbGVyLmg7IHBhdGggPSBjYS9tYWMv
VGlsZUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0ODksOSAr
ODQ4OSw5IEBACiAJCTY1N0VEQTA3MTM4NUNCOTcwMDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1N0VEQTBBMTM4NUNCRDgw
MDRFMDY0NSAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXJNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1ODQzNjg1MEFFMDFCNzQwMEU1Mzc1MyAvKiBGcmFt
ZUxvYWRSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZUxv
YWRSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTY1OTM5MjM1MDlBRTQz
NDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBLVVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzYwOUFF
NDM0NjAwMkM1MzFGIC8qIEtVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEtVUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU5MzkyMzkwOUFFNDM1QzAw
MkM1MzFGIC8qIEtVUkxNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBs
aW5lRW5kaW5nID0gMDsgcGF0aCA9IEtVUkxNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9
OworCQk2NTkzOTIzNTA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogVVJMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVUkwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjU5
MzkyMzkwOUFFNDM1QzAwMkM1MzFGIC8qIFVSTE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IGxpbmVFbmRpbmcgPSAwOyBwYXRoID0gVVJMTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5s
YW5nLm9iamNwcDsgfTsKIAkJNjU5QTdEMTIwQjZEQjREOTAwMTE1NUIzIC8qIFN1YnN0aXR1dGVE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdWJzdGl0dXRlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTlEREM4MDA5RTE5OEJBMDAxQkYzQzYg
LyogSlNEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1OUREQzgxMDlF
MTk4QkEwMDFCRjNDNiAvKiBKU0RvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTk0
MCw3ICsxMTk0MCw3IEBACiAJCUJDQkI4QUI1MTNGMUFGQjAwMDczNERGMCAvKiBQT0RJbnRlcnZh
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RJbnRlcnZhbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNjEzRjFBRkIwMDA3MzRERjAgLyogUE9E
SW50ZXJ2YWxUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBPREludGVy
dmFsVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JCOEFCNzEzRjFBRkIw
MDA3MzRERjAgLyogUE9EUmVkQmxhY2tUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBPRFJlZEJsYWNrVHJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
Q0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogS1VSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gS1VSTEhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkNCRDIxQUEwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVJMSGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRvd1NoZWxsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCRkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9N
V2luZG93U2hlbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XaW5k
b3dTaGVsbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0MwNjU3NzBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDbGllbnRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEz
OTU5LDcgKzEzOTU5LDcgQEAKIAkJCQlFMUE4RTU2NDE3NTUyQjJBMDA3NDg4RTcgLyogQ0ZVUkxF
eHRyYXMuY3BwICovLAogCQkJCUUxQThFNTY1MTc1NTJCMkEwMDc0ODhFNyAvKiBDRlVSTEV4dHJh
cy5oICovLAogCQkJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3Bw
ICovLAotCQkJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQuY3BwICovLAor
CQkJCTFBOTg5NTZBMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxDRi5jcHAgKi8sCiAJCQkJMjlBMzA5
QUIxNTYxQzk5QjAwQkJEOEU1IC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJNTEyREQ4RTIwRDkx
RTJCNDAwMEY4OUVFIC8qIFNoYXJlZEJ1ZmZlckNGLmNwcCAqLywKIAkJCSk7CkBAIC0xNTE1MCw3
ICsxNTE1MCw3IEBACiAJCQkJQzUzOTJEMzQxMzI2QUQwMTAwMDQzRDM1IC8qIEhUTUxDb252ZXJ0
ZXIubW0gKi8sCiAJCQkJOTM1QzQ3NkUwOUFDNEQ3MzAwQTZBQUI0IC8qIEtleUV2ZW50TWFjLm1t
ICovLAogCQkJCTUyMUQ0NkY1MTFBRUM5ODEwMDUxNDYxMyAvKiBLaWxsUmluZ01hYy5tbSAqLywK
LQkJCQk2NTkzOTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogS1VSTE1hYy5tbSAqLywKKwkJCQk2NTkz
OTIzOTA5QUU0MzVDMDAyQzUzMUYgLyogVVJMTWFjLm1tICovLAogCQkJCTkzNTIwODQ0MDlCRDQz
QjkwMEYyMDM4RCAvKiBMYW5ndWFnZS5tbSAqLywKIAkJCQkwNkU4MUVENjBBQjVENUU5MDBDODc4
MzcgLyogTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggKi8sCiAJCQkJMDZFODFFRUIwQUI1
REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSAqLywKQEAgLTE5
ODYyLDkgKzE5ODYyLDkgQEAKIAkJCQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdp
bmRvdy5oICovLAogCQkJCTUyMUQ0NkY3MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oICov
LAogCQkJCTQzMDZFNEU1MTQ5NTU1NDMwMDdGMTdBQyAvKiBLaWxsUmluZ05vbmUuY3BwICovLAot
CQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLywKLQkJCQk2NTkzOTIz
NjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovLAotCQkJCUJDQkQyMUFBMEU0MTdBRDQwMEEw
NzBGMiAvKiBLVVJMSGFzaC5oICovLAorCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBV
UkwuY3BwICovLAorCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBVUkwuaCAqLywKKwkJ
CQlCQ0JEMjFBQTBFNDE3QUQ0MDBBMDcwRjIgLyogVVJMSGFzaC5oICovLAogCQkJCUUxODc3MkYw
MTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgKi8sCiAJCQkJODVFQzlBRjkwQTcxQTJD
NjAwRUVFQUVEIC8qIExhbmd1YWdlLmggKi8sCiAJCQkJMTQxREMwNDcxNjQ4MzQ4RjAwMzcxRTVB
IC8qIExheW91dFVuaXQuaCAqLywKQEAgLTIzNDE0LDggKzIzNDE0LDggQEAKIAkJCQkzMTZGRTEx
QTBFNkUxREE3MDBCRjYwODggLyogS2V5ZnJhbWVBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNUVCQTExMEU4MjNFNDcwMEIyNTk2NSAvKiBLZXlmcmFtZUxpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyMUQ0NkY4MTFBRUM5QjEwMDUxNDYxMyAvKiBLaWxsUmluZy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNjU5MzkyMzgwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUJDQkQyMUFCMEU0MTdBRDQwMEEwNzBGMiAvKiBLVVJMSGFzaC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNjU5MzkyMzgwOUFFNDM0NjAwMkM1MzFGIC8qIFVSTC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkNCRDIxQUIwRTQxN0FENDAwQTA3MEYyIC8qIFVSTEhhc2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ1MENFQkYxMTUwNzNCQkUwMDJCQjE0OSAvKiBMYWJlbGFibGVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNDU2RkEyNzExQUQ0QTgzMDAyMEI0MjAgLyogTGFiZWxzTm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RUM5QUZCMEE3MUEyQzYwMEVFRUFFRCAvKiBM
YW5ndWFnZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjcwNCw5ICsyNjcwNCw5IEBACiAJCQkJQkM1
RUJBMTAwRTgyM0U0NzAwQjI1OTY1IC8qIEtleWZyYW1lTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MjFENDZGNjExQUVDOTgxMDA1MTQ2MTMgLyogS2lsbFJpbmdNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MzA2RTRFNjE0OTU1NTQzMDA3RjE3QUMgLyogS2lsbFJpbmdOb25lLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTY1OTM5MjM3MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBLVVJMQ0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNjU5MzkyM0EwOUFFNDM1QzAwMkM1MzFGIC8qIEtVUkxN
YWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk2NTkzOTIzNzA5QUU0MzQ2MDAyQzUzMUYgLyogVVJM
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBOTg5NTZCMEFBNzhGODAwMDVFRjVFRiAvKiBVUkxD
Ri5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2NTkzOTIzQTA5QUU0MzVDMDAyQzUzMUYgLyogVVJM
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDUwQ0VCRjAxNTA3M0JCRTAwMkJCMTQ5IC8qIExh
YmVsYWJsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQ1NkZBMjYxMUFENEE4MzAw
MjBCNDIwIC8qIExhYmVsc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxODc3MkYx
MTI2RTI2MjkwMDNERDU4NiAvKiBMYW5ndWFnZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbmsuY3BwCmluZGV4IDFjYjFjNjljNTM0MzM2ZjlkYTFjZThiYjU4MzlhZWM1YzBmZjAyZWIu
Ljc5MWJmMWM0ZWNiZmZmMjFiZjY3NzczZmUzYmVhMDgxMTM5NTNlY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmNwcApAQCAtODcsMTAgKzg3LDEwIEBAIEVsZW1lbnQqIEFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6OmFuY2hvckVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX2FyZWFFbGVtZW50Lmdl
dCgpOwogfQogCi1LVVJMIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnVybCgpIGNvbnN0CitV
UkwgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
YXJlYUVsZW1lbnQuZ2V0KCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVy
biBVUkwoKTsKICAgICAKICAgICByZXR1cm4gbV9hcmVhRWxlbWVudC0+aHJlZigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VN
YXBMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbmsuaAppbmRleCA3YTNlYzA4MmRlMDJlZTZhOTg3YjdjMGI3YjEwMGQzOTMxMTBhMmVl
Li4yZjFmYjBiNzI3MjQ1MmI2YjNiYmFkZTgxNDBkZWNmYTQxNDIyNGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBFbGVtZW50
KiBhbmNob3JFbGVtZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVt
ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwg
VVJMIHVybCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9IAogICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCA1MjdkZDRh
ZDFjYzFlM2RkNjA4ZGY4MmNiOTVkMjczMTg2ZWY5OTVjLi5iYmExODVmOTdiNjk0MmI0MzJhOWIy
ZGMyZjFlMjNkYjlhZmVjNDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNjQyLDcgKzY0Miw3IEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJh
bmdlKCkuc3RhcnQ7IH0KICAgICB1bnNpZ25lZCBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVy
biBzZWxlY3RlZFRleHRSYW5nZSgpLmxlbmd0aDsgfQogICAgIAotICAgIHZpcnR1YWwgS1VSTCB1
cmwoKSBjb25zdCB7IHJldHVybiBLVVJMKCk7IH0KKyAgICB2aXJ0dWFsIFVSTCB1cmwoKSBjb25z
dCB7IHJldHVybiBVUkwoKTsgfQogICAgIHZpcnR1YWwgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7IH0KICAgICB2aXJ0dWFsIFN0
cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nlc3NLZXkoKSBjb25zdCB7IHJldHVybiBudWxsQXRv
bTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggYTRlYzBhMGE4N2RhOWVlYWQ5N2NlNjNmMzAz
NDRlMTM2MzlmNjlhMi4uMmU0MTgzY2RjYjZmNDFkZTlkMTAwYjkzNjVkYTRkNmZlMTE4YzRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC04OTYsMTMgKzg5NiwxMyBAQCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppbnRlcm5hbExpbmtFbGVtZW50KCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9
IHRvSFRNTEFuY2hvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgCi0gICAgS1VSTCBsaW5rVVJMID0g
YW5jaG9yLT5ocmVmKCk7CisgICAgVVJMIGxpbmtVUkwgPSBhbmNob3ItPmhyZWYoKTsKICAgICBT
dHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gbGlua1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsK
ICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgCiAgICAgLy8gY2hlY2sgaWYgVVJMIGlzIHRoZSBzYW1lIGFzIGN1cnJlbnQgVVJMCi0g
ICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fcmVuZGVyZXItPmRvY3VtZW50KCkudXJsKCk7CisgICAg
VVJMIGRvY3VtZW50VVJMID0gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAo
IWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZG9jdW1lbnRVUkwsIGxpbmtVUkwpKQog
ICAgICAgICByZXR1cm4gMDsKICAgICAKQEAgLTE0NDgsNyArMTQ0OCw3IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0
UmFuZ2UmIHJhbmdlCiAgICAgICAgIFBvc2l0aW9uKG5vZGUsIHJhbmdlLnN0YXJ0ICsgcmFuZ2Uu
bGVuZ3RoLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSwgRE9XTlNUUkVBTSkp
OwogfQogCi1LVVJMIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CitVUkwg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29uc3QKIHsKICAgICBpZiAoaXNBbmNo
b3IoKSAmJiBpc0hUTUxBbmNob3JFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSkpIHsKICAgICAg
ICAgaWYgKEhUTUxBbmNob3JFbGVtZW50KiBhbmNob3IgPSB0b0hUTUxBbmNob3JFbGVtZW50KGFu
Y2hvckVsZW1lbnQoKSkpCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCBLVVJMIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnVybCgpIGNvbnN0CiAgICAgaWYgKGlzSW5wdXRJbWFnZSgpKQogICAgICAg
ICByZXR1cm4gdG9IVE1MSW5wdXRFbGVtZW50KG1fcmVuZGVyZXItPm5vZGUoKSktPnNyYygpOwog
ICAgIAotICAgIHJldHVybiBLVVJMKCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzVW52aXNpdGVkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmgKaW5kZXggYjA5ZDFjZWUzZGMxN2JiODU5NDRhODZiZWFjMGZiY2MxYTA1ZjVkZC4uMGZlMDMy
NzUwNzg5YTg1N2RiYjY1MTBmNThlZjdlNGU2ZDZhNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKQEAg
LTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgRG9jdW1lbnQqIHRvcERvY3VtZW50KCkgY29u
c3Q7CiAgICAgSFRNTExhYmVsRWxlbWVudCogbGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3Q7
CiAgICAgCi0gICAgdmlydHVhbCBLVVJMIHVybCgpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIHVy
bCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGxhaW5UZXh0UmFuZ2Ugc2VsZWN0ZWRUZXh0UmFuZ2Uo
KSBjb25zdDsKICAgICB2aXJ0dWFsIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggZGQ1YmE5ZDQyMGJlMzgzZmU2NjQ0ZDFmODY2
YjhiZjdhMjIwNTM5NC4uYmI1NGUyYzNiMWE3NzkyNTc2ZDUwZTUzYjBjYzIwYjM0ZjM5NWY3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTk3OSw3ICs5Nzks
NyBAQCAtIChOU1VSTCAqKWFjY2Vzc2liaWxpdHlVUkwKICAgICBpZiAoIVtzZWxmIF9wcmVwYXJl
QWNjZXNzaWJpbGl0eUNhbGxdKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIEtVUkwg
dXJsID0gbV9vYmplY3QtPnVybCgpOworICAgIFVSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CiAg
ICAgaWYgKHVybC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gKE5T
VVJMKil1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDYw
Yjg4MjU3YTAwNjgxYWFjMTFmMDViNDgzNGNkYjM1YzYwOTRiMzYuLjY5M2NhOThiY2Q4ZTFkNTEx
MzFhY2RiMGU3MzI2YzkwNTE0NTMyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLm1tCkBAIC0yMTM4LDcgKzIxMzgsNyBAQCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiAgICAgfQogICAgIAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgS1VSTCB1cmwgPSBtX29iamVjdC0+dXJsKCk7CisgICAgICAgIFVSTCB1
cmwgPSBtX29iamVjdC0+dXJsKCk7CiAgICAgICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAg
ICAgICByZXR1cm4gbmlsOwogICAgICAgICByZXR1cm4gKE5TVVJMKil1cmw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAKaW5kZXggMDVjMzBk
ZWE2N2IyYjUwMDdlYTk1OTE1MjQ2ZmVhYWQwNDZmYWRkYy4uNzRhNTI2MmExNWViZjMxODRhZTg1
ZDgzYjFmMjkwMGIwYzkxNzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
U2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1Nj
cmlwdENvbnRyb2xsZXJCYXNlLmNwcApAQCAtNzMsNyArNzMsNyBAQCBTY3JpcHRWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUpCiAgICAgcmV0dXJuIGV2YWx1YXRlKHNvdXJjZUNvZGUpOwogfQogCi1ib29sIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYgdXJsLCBTaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZK
YXZhU2NyaXB0VVJMKQorYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0
VVJMKGNvbnN0IFVSTCYgdXJsLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwg
c2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQogewogICAgIGlmICghcHJvdG9j
b2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAK
aW5kZXggMTgxZmMyYWEzNTIzNWEzMWMzMjMyMWMwYTRkNmI5NjUzMDAzMDg2OC4uMTRkZjNhNjlk
YWYxNzU5MTAyNjgyNTY5OTlhNjc1ZTIwY2IzMzI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJpbmcuY3BwCkBAIC0yMSw3
ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udmVydFRvVVRGOFN0
cmluZy5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtMzIsNyArMzIsNyBAQCBnY2hhciogY29udmVydFRvVVRGOFN0cmluZyhXVEY6OlN0cmluZyBj
b25zdCYgcykKICAgICByZXR1cm4gZ19zdHJkdXAocy51dGY4KCkuZGF0YSgpKTsKIH0KIAotZ2No
YXIqIGNvbnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2djaGFyKiBj
b252ZXJ0VG9VVEY4U3RyaW5nKFdlYkNvcmU6OlVSTCBjb25zdCYgcykKIHsKICAgICByZXR1cm4g
Z19zdHJkdXAocy5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKaW5kZXggYmMy
MzRjZmRlMjgzOTZkNmJjYmVmYzBjOGQxMTg2NzE1ZTM5OWYyNC4uZTQ5NDExM2EzZjhmZjZlOWM0
ZGJlNjhhZjlmMWQ4YTJlMjIyZmVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgKQEAgLTI0LDEyICsyNCwxMiBAQAog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtV
Ukw7CitjbGFzcyBVUkw7CiB9CiAKIHR5cGVkZWYgY2hhciBnY2hhcjsKIAogZ2NoYXIqIGNvbnZl
cnRUb1VURjhTdHJpbmcoV1RGOjpTdHJpbmcgY29uc3QmIHMpOwotZ2NoYXIqIGNvbnZlcnRUb1VU
RjhTdHJpbmcoV2ViQ29yZTo6S1VSTCBjb25zdCYgcyk7CitnY2hhciogY29udmVydFRvVVRGOFN0
cmluZyhXZWJDb3JlOjpVUkwgY29uc3QmIHMpOwogCiAjZW5kaWYgLyogQ29udmVydFRvVVRGOFN0
cmluZ19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApp
bmRleCBiNTA0YTRkZTY5NGRmMWY5MjkzNDkxMjM0MTVkNDdkMDBkZTNjNzY4Li4xMGVhZjMyZmUy
MGM2MWRmZWQ2MDVjY2MzYmI3OGRjYjU0NTZhYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTc1LDE5ICs3NSwxOSBAQCBKU1ZhbHVlIGpzU3Ry
aW5nT3JVbmRlZmluZWQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiAgICAgcmV0
dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHMpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgS1VSTCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZShleGVjLCB1cmwuc3RyaW5nKCkpOwogfQogCi1KU1ZhbHVlIGpzU3RyaW5nT3JOdWxsKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgS1VSTCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yTnVsbChFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgdXJsLnN0cmluZygpKTsKIH0KIAotSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgS1VSTCYgdXJsKQorSlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVk
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGFmODU5NTUxNDNiYmU5ODIxM2RkNDBkM2MyODNiNmRj
Mzg3NDIwMzMuLjAwODcxNjc4ODlhNTZlMDc2Mjk4Y2ZhY2VjMGZhNjY3YWZmM2Y5YzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC02MSw3ICs2MSw3IEBA
IGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgRnJh
bWU7CiAgICAgY2xhc3MgSFRNTERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3Mg
VVJMOwogICAgIGNsYXNzIE5vZGU7CiAKICAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwpA
QCAtMjQzLDE3ICsyNDMsMTcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAgICB2b2lkIHNldERP
TUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNvZGUpOwogCiAgICAgSlNDOjpK
U1ZhbHVlIGpzU3RyaW5nV2l0aENhY2hlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7
Ci0gICAgSlNDOjpKU1ZhbHVlIGpzU3RyaW5nKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgS1VSTCYp
OyAvLyBlbXB0eSBpZiB0aGUgVVJMIGlzIG51bGwKKyAgICBKU0M6OkpTVmFsdWUganNTdHJpbmco
SlNDOjpFeGVjU3RhdGUqLCBjb25zdCBVUkwmKTsgLy8gZW1wdHkgaWYgdGhlIFVSTCBpcyBudWxs
CiAgICAgaW5saW5lIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ1dpdGhDYWNoZShKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBzKQogICAgIHsgCiAgICAgICAgIHJldHVybiBq
c1N0cmluZ1dpdGhDYWNoZShleGVjLCBzLnN0cmluZygpKTsKICAgICB9CiAgICAgICAgIAogICAg
IEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYpOyAvLyBudWxsIGlmIHRoZSBzdHJpbmcgaXMgbnVsbAotICAgIEpTQzo6SlNWYWx1ZSBqc1N0
cmluZ09yTnVsbChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gbnVsbCBpZiB0aGUg
VVJMIGlzIG51bGwKKyAgICBKU0M6OkpTVmFsdWUganNTdHJpbmdPck51bGwoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBVUkwmKTsgLy8gbnVsbCBpZiB0aGUgVVJMIGlzIG51bGwKIAogICAgIEpTQzo6
SlNWYWx1ZSBqc1N0cmluZ09yVW5kZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5n
Jik7IC8vIHVuZGVmaW5lZCBpZiB0aGUgc3RyaW5nIGlzIG51bGwKLSAgICBKU0M6OkpTVmFsdWUg
anNTdHJpbmdPclVuZGVmaW5lZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEtVUkwmKTsgLy8gdW5k
ZWZpbmVkIGlmIHRoZSBVUkwgaXMgbnVsbAorICAgIEpTQzo6SlNWYWx1ZSBqc1N0cmluZ09yVW5k
ZWZpbmVkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgVVJMJik7IC8vIHVuZGVmaW5lZCBpZiB0aGUg
VVJMIGlzIG51bGwKIAogICAgIC8vIFNlZSBKYXZhU2NyaXB0Q29yZSBmb3IgZXhwbGFuYXRpb246
IFNob3VsZCBiZSB1c2VkIGZvciBhbnkgc3RyaW5nIHRoYXQgaXMgYWxyZWFkeSBvd25lZCBieSBh
bm90aGVyCiAgICAgLy8gb2JqZWN0LCB0byBsZXQgdGhlIGVuZ2luZSBrbm93IHRoYXQgY29sbGVj
dGluZyB0aGUgSlNTdHJpbmcgd3JhcHBlciBpcyB1bmxpa2VseSB0byBzYXZlIG1lbW9yeS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKaW5kZXggMzBmY2YzZWIzZTY1MGM3ZTNiOTM5MzZmNTM2MjFiYTMzMjY5YmRkMy4uNzA0
MTU3NzZiMTdmNzBiZmY0Y2VmNGE1ODQ3NGMxZjY1Y2MwZTE3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTg4
LDcgKzg4LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBpbXBsKCktPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwoZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBTdHJpbmcgbWV0aG9kID0g
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMDMxNTE2ZTBmYzZmODgxMzgxZDVhMjY3YmI1N2M2
MGZkYzE5NGFlMy4uOTNiOGUwNjFkYTlkNjBlOGNlY2IwODhiMzBhYWUzZjlhMmUwYzgyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2Vz
dHVyZSA9IGZhbHNlKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEph
dmFTY3JpcHQgVVJMLgotICAgIGJvb2wgZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJM
JiwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMIHNob3VsZFJlcGxhY2VEb2N1
bWVudElmSmF2YVNjcmlwdFVSTCA9IFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7Cisg
ICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYsIFNob3VsZFJlcGxhY2VE
b2N1bWVudElmSmF2YVNjcmlwdFVSTCBzaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRV
UkwgPSBSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwogCiAgICAgLy8gVGhpcyBmdW5j
dGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBj
YWxsIGl0IHJlcGVhdGVkbHkuCiAgICAgLy8gRGFyd2luIGlzIGFuIGV4Y2VwdGlvbiB0byB0aGlz
IHJ1bGU6IGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBmcm9tIGFueSB0aHJlYWQsIGV2
ZW4gcmVlbnRyYW50bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRTb3VyY2VDb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3Vy
Y2VDb2RlLmgKaW5kZXggNTE2MzU4MWNjODE3OGFiODg5YzhhNDYyMTYxODY1ZTQ1ZDNkODYwZS4u
MmQzYzE1OTcwZGUxYzYxOGIzNDdmNTVmYTQzZDExMDMxY2Y2ZDYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U291cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZVByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNj
cmlwdFNvdXJjZUNvZGUgewogcHVibGljOgotICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCA9IEtVUkwoKSwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSkKKyAgICBT
Y3JpcHRTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVS
TCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1p
bmltdW1Qb3NpdGlvbigpKQogICAgICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3Ry
aW5nKCksIHN0YXJ0UG9zaXRpb24pKQogICAgICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFy
dFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9u
ZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91cmwodXJsKQpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAKICAgICBDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkU2NyaXB0LmdldCgpOyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJl
dHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IG1fcHJv
dmlkZXI7CkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRTY3JpcHQ+IG1fY2FjaGVkU2NyaXB0OwogCi0gICAgS1VSTCBtX3VybDsKKyAg
ICBVUkwgbV91cmw7CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGI4NTMyZDM2NTU4YTQwYTU5NWMyOTMy
ZGI2N2E3MmRiYTc4NGNhY2MuLjQ1ZDM1YmMwZmUyYmE4NGUxZTFkNDk5MTY5MWE2OGRhMDNhYWNm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMTM4Myw3ICsxMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYg
KCFyZWFkU3RyaW5nRGF0YSh0eXBlKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBp
ZiAobV9pc0RPTUdsb2JhbE9iamVjdCkKLSAgICAgICAgICAgIGZpbGUgPSBGaWxlOjpjcmVhdGUo
cGF0aC0+c3RyaW5nKCksIEtVUkwoS1VSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5n
KCkpOworICAgICAgICAgICAgZmlsZSA9IEZpbGU6OmNyZWF0ZShwYXRoLT5zdHJpbmcoKSwgVVJM
KFVSTCgpLCB1cmwtPnN0cmluZygpKSwgdHlwZS0+c3RyaW5nKCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTE1NzcsNyArMTU3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9pc0RPTUdsb2JhbE9i
amVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0SlNWYWx1ZShCbG9iOjpjcmVhdGUoS1VSTChLVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0
eXBlLT5zdHJpbmcoKSwgc2l6ZSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFs
dWUoQmxvYjo6Y3JlYXRlKFVSTChVUkwoKSwgdXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygp
LCBzaXplKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdUYWc6IHsKICAg
ICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JDUFAucG0KaW5kZXggYzM5YTc3
NDE1MjVlYzM2NjQxZjZkYjg4YzA0NGZlMGEzNDVjNTBmYi4uMmJjYWQ4YzgwNDA1OTNkZjQ3NTMx
ZWI1YjcxOGNiMTUyYWI5NDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yQ1BQLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckNQUC5wbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHN1YiBBZGRJ
bmNsdWRlc0ZvclR5cGUKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0
eXBlKSkgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCJ9
ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAkaW1w
bEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siV2ViRE9NU3Ry
aW5nLmgifSA9IDE7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01NzMsNyArNTczLDcgQEAg
c3ViIEFkZFJldHVyblN0YXRlbWVudAogICAgIG15ICR0eXBlSW5mbyA9IHNoaWZ0OwogICAgIG15
ICRyZXR1cm5WYWx1ZSA9IHNoaWZ0OwogCi0gICAgIyBVc2VkIHRvIGludm9rZSBLVVJMcyAiY29u
c3QgU3RyaW5nJiIgb3BlcmF0b3IKKyAgICAjIFVzZWQgdG8gaW52b2tlIFVSTHMgImNvbnN0IFN0
cmluZyYiIG9wZXJhdG9yCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5
cGVJbmZvLT5zaWduYXR1cmUtPnR5cGUpKSB7CiAgICAgICAgIHJldHVybiAiICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBXVEY6OlN0cmluZyY+KCRyZXR1cm5WYWx1ZSk7XG4iOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggODFlZGEzZDlmZjg5M2JiNTUxMTYwZjcxOWY0NWVkMTY4MjAwOWIyZC4uYjlkYjZk
YzBhZjA4ZWMwMTFiY2MyMjM4MDUwZjAyMzY4ZmRkNTg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI1MDEsNyArMjUw
MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oYXNP
YmplY3Qoc2xvdEJhc2UpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmosIGluZm8oKSk7XG4iKTsKICAgICAgICAg
aWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5n
IikgewotICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siVVJMLmgifSA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4ganNTdHJpbmdPclVuZGVmaW5lZChleGVjLCB0aGlzT2JqLT5pbXBs
KCktPml0ZW0oaW5kZXgpKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2Jq
ZWN0KCksIHRoaXNPYmotPmltcGwoKS0+aXRlbShpbmRleCkpO1xuIik7CkBAIC0zNDM2LDcgKzM0
MzYsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQogCiAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJL
VVJMLmgiLCAkY29uZGl0aW9uYWwpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVVJMLmgi
LCAkY29uZGl0aW9uYWwpOwogICAgICAgICBteSAkY29udiA9ICRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzIn07CiAgICAgICAgIGlmIChk
ZWZpbmVkICRjb252KSB7CiAgICAgICAgICAgICByZXR1cm4gImpzU3RyaW5nT3JOdWxsKGV4ZWMs
ICR2YWx1ZSkiIGlmICRjb252IGVxICJOdWxsIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JPYmpDLnBtCmluZGV4IGVkZjExOWQzMWY5MzFl
NGNmZTUxZWMyMTgxMDQ5ZmU5YmFjZjczZDcuLjQ4NWIwYzRhMGI0ZWY5NzkzMTEwNzcyZmEyOGNk
YWIwMTBkZTFkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvck9iakMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yT2JqQy5wbQpAQCAtNjE4LDcgKzYxOCw3IEBAIHN1YiBBZGRJbmNsdWRl
c0ZvclR5cGUKICAgICB9CiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgk
dHlwZSkpIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siS1VSTC5oIn0gPSAxOworICAgICAgICAk
aW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYjliOTJjNjg2Zjdj
ZDU0NjYxN2MwNTM2YjRjYjIwNTBjYTI1NDZmNS4uNjhkNzk0ZWI0MTM3NzIwZDJmZWU1NzE4NDY1
YTQ3NGJkMWJlZTE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXN0QWN0aXZlRE9NT2JqZWN0
LmgiCiAjaW5jbHVkZSAiV2ViRE9NTm9kZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Q2FsbGJhY2suY3Bw
CmluZGV4IGZlMzVkMmI1NjVjNDNhNzNkZDJjYmQxMTA5NDdlY2NjMjM5MzhkZGIuLjRkYmE3Zjdj
ZjhkM2Y0YWYzNDMyMGQ1YzlmNDliMDUwZmQ3YzQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdENhbGxiYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDYWxs
YmFjay5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5o
IgogI2luY2x1ZGUgIkZsb2F0MzJBcnJheS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJUZXN0Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYkRPTURP
TVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJXZWJET01GbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRl
ICJXZWJET01TdHJpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcAppbmRleCA1M2QyNTViZTI1NDIyZmNiNTVlZGEwYzkyYTE1MWE4MzFkNDkxZmIzLi41
YjE5OTFlZTBiMDZhNTM3Mjk4N2I1MWUyYTgyMjY5MWVlOTdhYjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgi
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uSGFuZGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAppbmRleCAyNzgwNmYwNGJlMTY1MzI3ZjJhNTk2MDM5ODQ5OTdiZDFkZjg3Nzc4
Li5hZDRiNTIyYjE1M2RhYzA0MmYxODUyYjI4OGU0MzZkYjQ5NThhMzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgi
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2
ZW50Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKICNpbmNsdWRlICJX
ZWJFeGNlcHRpb25IYW5kbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFdmVudFRhcmdldC5jcHAK
aW5kZXggZjNlYWMwYmZiMTc2NTk0ZTNhOTE1YTFiMGQ5NjQ0ODAzOTg1MWE4NS4uMGJhNDE3NzVm
MTI1Zjg3YTljN2VhYTRjOWY5NTNkMWMzYmMxOWNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRUYXJnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgIldlYkRPTVRlc3RFdmVu
dFRhcmdldC5oIgogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlRlc3RFdmVudFRhcmdl
dC5oIgogI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXhjZXB0aW9u
LmNwcAppbmRleCA5MjM1YjNhMzA1Yzc4NDg1ZTBmMTM3YTllNGM5YjNlNzFmYmEwMzE5Li45NGY5
ZTY5MWI4MTAxYzYzYzNjMzJiNGZiNmVkMmVjYmUwNWNmNGEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJET01UZXN0RXhjZXB0aW9uLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIldlYkRP
TVN0cmluZy5oIgogI2luY2x1ZGUgIldlYkV4Y2VwdGlvbkhhbmRsZXIuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDA5YWQzMzdkYWE3OTJkMzBkNWM1N2U5ZTBjNjVhNGVj
NDI0NzAwODguLjM0NDRmYjQzYTNiZmRlYjA0ZTNjYjNkNDVjMzZkOWExZmQ0OWM0MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViRE9NVGVzdEludGVyZmFjZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUZXN0SW50ZXJmYWNlLmgiCiAj
aW5jbHVkZSAiVGVzdFN1cHBsZW1lbnRhbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggZmU1
NTQ0OTRjZjhlNTA3NDk5ZmEyNTIyMTI5NDE3MGNmNWRkODhhNC4uMDk1ZjYzZjMyOWU0YzhhMGYx
MTQyM2Y3YTU4YmJjNjdhZjAzODMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yNCw3ICsy
NCw3IEBACiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0VHlwZWRlZnMuY3BwCmluZGV4
IDc0Zjc3M2M5YzdlYzIzNDE1YTJjNDFlMzYyYmI0YmU5ZjA0MTcwYWIuLjYxODNhNjM0NDg1MDJj
MTdmYzNmOWVlYTRlMGFhZGUxOGFjNzZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RUeXBlZGVmcy5j
cHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJE
T01UZXN0VHlwZWRlZnMuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlRlc3RUeXBlZGVmcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IDA5MDJlNjkyZTE2NDcwNGYyMTY0NmQ3ZTQ0ZjQyNzc3MjQwOTY5NzIuLjU0
YjQyMWQ0ZGZlYzIyNDUwZDhjZWI0OTFlZWIzZWM0N2QzZmJiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmgiCiAKICNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGVzdEV2ZW50Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU1N0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAyZTkzZTFhOGM5N2E1MWNiNTc2ZjFh
ZTZkMmNmYWI0YWJlOTcxZjAwLi5jMTE0MjcxZWVjNDM4ZmZiZWJlYWFiZDZhYTM3N2MyNmUyOTVl
N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEV4Y2VwdGlvbi5oIgogCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKICNpbmNs
dWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcAppbmRleCBmMTQwMWEwMmViNzkzYjhiNDM4NmI5YmI0ZDNjOGMxOWI0YWI3
MTk1Li4yNzNlOWI1ZGU0MWI0NjNmNDEyM2Y1YjgyYjlhYjZiYzZiMTUwZjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SW50ZXJmYWNlLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEx
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpIHx8IEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxF
KENvbmRpdGlvbjIzKQogI2luY2x1ZGUgIkpTTm9kZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAppbmRleCA2OWE2YzE4MTU4MmFmNTE3NzdhZjdiNzdmZGY0MTVkODE1ZWM1NjQzLi43
YmIyZjQyMDg3YmJjYTNlZjhlNGFlNzVhM2YxNGFiNDM2MjE5NTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
NDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1
Yk9iai5oIgogI2luY2x1ZGUgIkpTYm9vbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR1BvaW50Lmgi
CiAjaW5jbHVkZSAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAppbmRleCA0ZjQ2NmM1ZWJjZjY2NDc0NjlmZWM3YWE0NzY5YjM5MmE2ZDBmNGJiLi42MTcwNWQx
YjI0NTVlZTE1ZDI1NjIxNmFmMzVjZjg4NTBmY2Q3YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJKU1Rlc3RDYWxsYmFjay5oIgogI2luY2x1ZGUg
IkpTVGVzdEV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNUZXN0U3ViT2JqLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiVGVzdFR5cGVkZWZzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0QWN0aXZlRE9NT2JqZWN0Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEFjdGl2ZURPTU9iamVjdC5tbQppbmRleCBhYjI4NjQxZDc1YWZl
NjQyMjFkMjlkMWViYzRjZDgzNTVmYjM2OWUxLi43ZGExNGIwZmQxZGIyZjI2NDgxNTQ2ODIyZjJl
YjBjZGI0OTI0MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvT2JqQy9ET01UZXN0QWN0aXZlRE9NT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RBY3RpdmVET01PYmplY3QubW0KQEAg
LTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgIkRPTVRlc3RBY3RpdmVET01PYmplY3RJbnRlcm5hbC5o
IgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
b2RlLmgiCiAjaW1wb3J0ICJUZXN0QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW1wb3J0ICJUaHJlYWRD
aGVjay5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdENhbGxiYWNrLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdENhbGxiYWNrLm1tCmluZGV4IDkzYWRmOGM0OGY2YWY2YWY1NmU3
YzdiYzAxOWJiYjhlMGY4MjZlOTkuLjRkZDk2ZTU5MDY0YjBhOGYxZGM3YTIxMDAwNjhhMWE3ODNm
MDgwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RDYWxsYmFjay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0Q2FsbGJhY2subW0KQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbXBv
cnQgIkRPTVRlc3ROb2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgi
CiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNp
bXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0
ICJUZXN0Q2FsbGJhY2suaCIKICNpbXBvcnQgIlRlc3ROb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIubW0KaW5kZXggMTBhOTBhNWE5YWE0ZTNjODMxNzQxN2YxOGMz
MDRhMmJjYTc2NjY0Ny4uOWMyOTFkNWY0YjUxNDBjN2QxYWJlNGY3M2E3NGJhZjI1ZWFiNjExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RDdXN0b21OYW1lZEdldHRlci5tbQpAQCAtMzMsNyArMzMs
NyBAQAogI2ltcG9ydCAiRE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVySW50ZXJuYWwuaCIKICNpbXBv
cnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUu
aCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmgiCiAjaW1wb3J0ICJUaHJlYWRDaGVjay5oIgogI2ltcG9ydCAiV2ViQ29y
ZU9iakNFeHRyYXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9yLm1tIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KaW5k
ZXggODA5ZDU1MzdhNTc1ODNlZDc0OWI2ZDRjN2JlNTIwZDc0YWY4MTA0Ny4uNzFkYWI1MDQwZTdj
NDNiNTNmYWVmNjAyMmJjMTRkZTJkNzE4ZDhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50
Q29uc3RydWN0b3IubW0KQEAgLTM0LDcgKzM0LDcgQEAKICNpbXBvcnQgIkRPTVRlc3RFdmVudENv
bnN0cnVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1w
b3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQg
IlVSTC5oIgogI2ltcG9ydCAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKICNpbXBvcnQgIlRocmVh
ZENoZWNrLmgiCiAjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50VGFyZ2V0
Lm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2
ZW50VGFyZ2V0Lm1tCmluZGV4IGZhMjQ0N2Q4ZTdmNGYxNGQzYTJmM2M1ZTgxMjVlZWJlZjg5ZTk1
YzUuLjdlOWY0OWU0YmY2OGUwZGE3ZjhmZGNmOTA4ZGQ1NjQyMzQzZWY5ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudFRh
cmdldC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0RXZlbnRUYXJnZXQubW0KQEAgLTM2LDcgKzM2LDcgQEAKICNpbXBvcnQgIkV2ZW50TGlz
dGVuZXIuaCIKICNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2lt
cG9ydCAiTm9kZS5oIgogI2ltcG9ydCAiT2JqQ0V2ZW50TGlzdGVuZXIuaCIKICNpbXBvcnQgIlRl
c3RFdmVudFRhcmdldC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb24ubW0KaW5kZXggZDJiOTU0ODJi
ZDRmYzI0MDcxY2VlYmYxMDk1MTQwN2Q4MjdjNzgzOC4uMWRmYjc5MmY2NzNiYWRlZTVmMGNmZDE5
NGJkN2RmY2I3MGRmMmU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uLm1tCkBAIC0zMyw3ICsz
Myw3IEBACiAjaW1wb3J0ICJET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIkV4
Y2VwdGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKLSNp
bXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiVGVzdEV4Y2VwdGlvbi5o
IgogI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKICNpbXBvcnQgIldlYkNvcmVPYmpDRXh0cmFzLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0SW50ZXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEludGVyZmFjZS5tbQppbmRleCAyZTIxYmZkOTFkNzIzODY3MTJkN2Y0NzAy
MjlmNzY4ZjUyN2M2NmZkLi5iNGU0ZGE2ZDk0NmVjYjJkMjk2NDYzMTVjODViMzg3YzU2ZDVmMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0SW50ZXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RJbnRlcmZhY2UubW0KQEAgLTM3LDcgKzM3LDcgQEAKICNpbXBvcnQg
IkRPTVRlc3RPYmpJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFuZGxlcnMuaCIKICNp
bXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9y
dCAiVVJMLmgiCiAjaW1wb3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJUZXN0SW50ZXJmYWNlLmgiCiAj
aW1wb3J0ICJUZXN0T2JqLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQppbmRleCAzMzFhYzY2MzU2OWVkMGJiOWRi
NmI1YzZiZjM4NzlkMmZlYzM3NzAyLi5kOGNlMzQ0YTg5OWU1MmM3NTQyNGFlNWNiODQwYjYxY2Jk
YmZhNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTQ5LDcgKzQ5LDcgQEAKICNpbXBvcnQgIkV4Y2Vw
dGlvbkhhbmRsZXJzLmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKICNpbXBvcnQgIkpTTWFpblRo
cmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1w
b3J0ICJOb2RlLmgiCiAjaW1wb3J0ICJPYmpDRXZlbnRMaXN0ZW5lci5oIgogI2ltcG9ydCAiU1ZH
RG9jdW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RUeXBlZGVmcy5tbQppbmRleCA3ZTNkODM4ZjBiMjdjYzZk
ODA5YWJlNTY2YzkyZmRiNTgwYjUwNzgzLi5iZDU4Y2UwNzNmOTYxMjNjOTlhNmJjNTFlMmQyMTQ2
YWI4ZTU0MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0VHlwZWRlZnMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdFR5cGVkZWZzLm1tCkBAIC0zNCw3ICszNCw3IEBACiAj
aW1wb3J0ICJET01UZXN0VHlwZWRlZnNJbnRlcm5hbC5oIgogI2ltcG9ydCAiRXhjZXB0aW9uSGFu
ZGxlcnMuaCIKICNpbXBvcnQgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgotI2ltcG9ydCAiS1VS
TC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJTVkdQb2ludC5oIgogI2ltcG9ydCAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJUZXN0VHlwZWRlZnMuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRleCA0OTZmZDhjNTkwOGJkYjkx
Yzg1NGRhYzU3ZjNhZmQ3MDE3ZjAzODc1Li5kMTM3YjAzY2JjMjUwODFlMWJhY2NiY2JhNDBhOGNi
ODJmZmJmNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3Bw
CkBAIC0xOTAsNyArMTkwLDcgQEAgYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjppc1NWR0N1cnNv
cigpIGNvbnN0CiB7CiAgICAgaWYgKG1faW1hZ2VWYWx1ZS0+aXNJbWFnZVZhbHVlKCkpIHsKICAg
ICAgICAgUmVmUHRyPENTU0ltYWdlVmFsdWU+IGltYWdlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NJ
bWFnZVZhbHVlKj4obV9pbWFnZVZhbHVlLmdldCgpKTsKLSAgICAgICAgS1VSTCBrdXJsKFBhcnNl
ZFVSTFN0cmluZywgaW1hZ2VWYWx1ZS0+dXJsKCkpOworICAgICAgICBVUkwga3VybChQYXJzZWRV
UkxTdHJpbmcsIGltYWdlVmFsdWUtPnVybCgpKTsKICAgICAgICAgcmV0dXJuIGt1cmwuaGFzRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA0MDM3NDJkNDVlNmVmYzZjYTU4
Y2JlYzNkNmVhYjViMDNlNzYwMzg0Li42ZTY1MzU2N2FlY2FiNGE5MjA4ZDBiNzM4MjAwZjc0N2Qx
N2VmNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIFN0cmluZyBDU1NGb250RmFjZVNyY1ZhbHVlOjpjdXN0b21DU1NUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ1NTRm9u
dEZhY2VTcmNWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
IHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKK3ZvaWQg
Q1NTRm9udEZhY2VTcmNWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAog
ewogICAgIGlmICghaXNMb2NhbCgpKQogICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBz
dHlsZVNoZWV0LT5jb21wbGV0ZVVSTChtX3Jlc291cmNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuaAppbmRleCA0MjliYmI0ZTZlN2VmYmE1MTZiOTc4Zjk1ZGEyMDg2
ZTQ3MzZmNTc5Li45OWExMTQ0MjNjYjliNDhkYjQxYTJmZTg1N2YwNmMzNjk0NmFhZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKQEAgLTY1LDcgKzY1LDcgQEAg
cHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQg
YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25zdCBTdHlsZVNo
ZWV0Q29udGVudHMqKSBjb25zdDsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PFVSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAogICAg
IGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCmluZGV4IDcyNjhlZTBlZDQ2OWI1YWVkYWNmYzY5MTQ5ZjQyNjBkMzg3
ZWQ1MTUuLjM0YTYxODYwZTYwMDM5N2MyNWQ0Y2Q1NDlmNjQzMjY1YmM1YmY3NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0yNTQsNyArMjU0LDcgQEAgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpCiAgICAgcmV0dXJuIHN0cmljdENvbnRleHQ7
CiB9CiAKLUNTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSBt
b2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMKQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29u
dGV4dChDU1NQYXJzZXJNb2RlIG1vZGUsIGNvbnN0IFVSTCYgYmFzZVVSTCkKICAgICA6IGJhc2VV
UkwoYmFzZVVSTCkKICAgICAsIG1vZGUobW9kZSkKICAgICAsIGlzSFRNTERvY3VtZW50KGZhbHNl
KQpAQCAtMjcyLDcgKzI3Miw3IEBAIENTU1BhcnNlckNvbnRleHQ6OkNTU1BhcnNlckNvbnRleHQo
Q1NTUGFyc2VyTW9kZSBtb2RlLCBjb25zdCBLVVJMJiBiYXNlVVJMKQogewogfQogCi1DU1NQYXJz
ZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0KQorQ1NTUGFyc2VyQ29udGV4dDo6Q1NT
UGFyc2VyQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0KQogICAgIDogYmFzZVVSTChiYXNlVVJMLmlzTnVsbCgpID8gZG9j
dW1lbnQuYmFzZVVSTCgpIDogYmFzZVVSTCkKICAgICAsIGNoYXJzZXQoY2hhcnNldCkKICAgICAs
IG1vZGUoZG9jdW1lbnQuaW5RdWlya3NNb2RlKCkgPyBDU1NRdWlya3NNb2RlIDogQ1NTU3RyaWN0
TW9kZSkKQEAgLTE2MTUsMTYgKzE2MTUsMTYgQEAgdm9pZCBDU1NQYXJzZXI6OmNsZWFyUHJvcGVy
dGllcygpCiAgICAgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMgPSBmYWxzZTsKIH0KIAotS1VSTCBD
U1NQYXJzZXI6OmNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgdXJsKQorVVJMIENTU1BhcnNlcjo6Y29tcGxldGVVUkwoY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYgKHVybC5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
ICAgIGlmIChjb250ZXh0LmNoYXJzZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gS1VSTChj
b250ZXh0LmJhc2VVUkwsIHVybCk7Ci0gICAgcmV0dXJuIEtVUkwoY29udGV4dC5iYXNlVVJMLCB1
cmwsIGNvbnRleHQuY2hhcnNldCk7CisgICAgICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJM
LCB1cmwpOworICAgIHJldHVybiBVUkwoY29udGV4dC5iYXNlVVJMLCB1cmwsIGNvbnRleHQuY2hh
cnNldCk7CiB9CiAKLUtVUkwgQ1NTUGFyc2VyOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVy
bCkgY29uc3QKK1VSTCBDU1NQYXJzZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdAogewogICAgIHJldHVybiBjb21wbGV0ZVVSTChtX2NvbnRleHQsIHVybCk7CiB9CkBAIC04
Nzg0LDcgKzg3ODQsNyBAQCBQYXNzUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VNaXhGdW5jdGlvbihDU1NQYXJzZXJWYWx1ZQogICAgICAgICB1bnNpZ25l
ZCBhcmdOdW1iZXIgPSBhcmdzTGlzdC0+Y3VycmVudEluZGV4KCk7CiAgICAgICAgIGlmICghYXJn
TnVtYmVyKSB7CiAgICAgICAgICAgICBpZiAoYXJnLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICAgICAgS1VSTCBzaGFkZXJVUkwgPSBjb21wbGV0ZVVS
TChhcmctPnN0cmluZyk7CisgICAgICAgICAgICAgICAgVVJMIHNoYWRlclVSTCA9IGNvbXBsZXRl
VVJMKGFyZy0+c3RyaW5nKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFdlYktpdENTU1NoYWRl
clZhbHVlOjpjcmVhdGUoc2hhZGVyVVJMLnN0cmluZygpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSBlbHNlIGlmIChhcmdOdW1iZXIgPT0gMSB8fCBhcmdOdW1iZXIgPT0gMikgewpAQCAtODk3
NCw3ICs4OTc0LDcgQEAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZUN1c3RvbUZpbHRlckZ1bmN0aW9uV2l0aElubGluZVMKICAgICAgICAgaWYgKGFyZy0+
aWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgdmFsdWUgPSBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgZWxzZSBpZiAoYXJn
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAgICAgICAgICBLVVJM
IHNoYWRlclVSTCA9IGNvbXBsZXRlVVJMKGFyZy0+c3RyaW5nKTsKKyAgICAgICAgICAgIFVSTCBz
aGFkZXJVUkwgPSBjb21wbGV0ZVVSTChhcmctPnN0cmluZyk7CiAgICAgICAgICAgICB2YWx1ZSA9
IFdlYktpdENTU1NoYWRlclZhbHVlOjpjcmVhdGUoc2hhZGVyVVJMLnN0cmluZygpKTsKICAgICAg
ICAgICAgIGhhZEF0TGVhc3RPbmVDdXN0b21TaGFkZXIgPSB0cnVlOwogICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3NMaXN0LT5jdXJyZW50SW5kZXgoKSA9PSAxICYmIGFyZy0+dW5pdCA9PSBDU1NQYXJz
ZXJWYWx1ZTo6RnVuY3Rpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBmZmQxZDllMTc2
MzIzNjJiM2E2ZjczMmJjNDMxNWVjODdhMWYyZWNlLi42Y2MxNDM5NWY0OGZkNDQ1OWRmNjNiYzhk
NTMwNjIyZTkyNWNiYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC00MjIsNyArNDIyLDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZVByaW1p
dGl2ZVZhcmlhYmxlTmFtZVZhbHVlKENTU1BhcnNlclZhbHVlKik7CiAjZW5kaWYKIAotICAgIHN0
YXRpYyBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJp
bmcmIHVybCk7CisgICAgc3RhdGljIFVSTCBjb21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgTG9jYXRpb24gY3VycmVudExvY2F0aW9u
KCk7CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBwcml2YXRlOgogICAgIGlubGluZSBib29sIGluU3Ry
aWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IENTU1N0cmljdE1vZGUg
fHwgbV9jb250ZXh0Lm1vZGUgPT0gU1ZHQXR0cmlidXRlTW9kZTsgfQogICAgIGlubGluZSBib29s
IGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5tb2RlID09IENTU1F1aXJr
c01vZGU7IH0KICAgICAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBj
b25zdDsKKyAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogCiAg
ICAgdm9pZCByZWNoZWNrQXRLZXl3b3JkKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlck1vZGUuaAppbmRleCA1NzM1N2Y1ODBkYjUwMGNkOGEyMzZkMjM5
MTQ2MTFiNjNjMjgyYTIxLi5iNDdjMDE5NTM0Njc5YWRmMzM5OGQ1NWJhNWIwZjg5MTg5YmZjYTQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyTW9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJNb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgQ1NTUGFyc2VyTW9kZV9oCiAjZGVmaW5lIENTU1BhcnNlck1vZGVfaAogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU3
LDEwICs1NywxMCBAQCBpbmxpbmUgYm9vbCBpc1N0cmljdFBhcnNlck1vZGUoQ1NTUGFyc2VyTW9k
ZSBjc3NQYXJzZXJNb2RlKQogc3RydWN0IENTU1BhcnNlckNvbnRleHQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2Vy
TW9kZSwgY29uc3QgS1VSTCYgYmFzZVVSTCA9IEtVUkwoKSk7Ci0gICAgQ1NTUGFyc2VyQ29udGV4
dChEb2N1bWVudCYsIGNvbnN0IEtVUkwmIGJhc2VVUkwgPSBLVVJMKCksIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOworICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2Vy
TW9kZSwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOworICAgIENTU1BhcnNlckNvbnRleHQo
RG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBjaGFy
c2V0ID0gZW1wdHlTdHJpbmcoKSk7CiAKLSAgICBLVVJMIGJhc2VVUkw7CisgICAgVVJMIGJhc2VV
Ukw7CiAgICAgU3RyaW5nIGNoYXJzZXQ7CiAgICAgQ1NTUGFyc2VyTW9kZSBtb2RlOwogICAgIGJv
b2wgaXNIVE1MRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAppbmRleCBiZjIyMGNmYjNlODBhNzU4MzBhMWVjYmE1ZmRiYmMzODZmMmRiNTU1Li5iNTllODA4
YWI5MWVlZGZlOGRjNDcxMzI5NTY5YzlhYThhNGYxNjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTEyMDMsNyArMTIwMyw3IEBAIGJvb2wgQ1NTUHJpbWl0
aXZlVmFsdWU6Omhhc1ZhcmlhYmxlUmVmZXJlbmNlKCkgY29uc3QKIH0KICNlbmRpZgogCi12b2lk
IENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAor
dm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25z
dAogewogICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19VUkkpCiAgICAgICAgIGFk
ZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKG1fdmFsdWUuc3Ry
aW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDY0MjA2Zjhj
OTQxYTJjZDU1MGEzNmM1NmNhMDRmNmJkMjg3Y2I5YzcuLjY0OWE3NGI4YTNiOTE3OTEzZWFmMDZh
NGM5NzRmMjlkZTM2MGNhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5o
CkBAIC0zMzAsNyArMzMwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1F1aXJrVmFsdWUoKSB7
IHJldHVybiBtX2lzUXVpcmtWYWx1ZTsgfQogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0
OworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNv
bnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAgTGVuZ3RoIHZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcAppbmRleCBjZjcxNDk1ZDk4MWVmMDczNTM3M2ZkZGU2Njc1MGQ1MmVlNTI2M2ViLi4x
NWFlOGZhZmIzOGE5NTMzNjNlMThjZDRmYzNjOTY5ODU3ZWE0ZGIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApAQCAtNDksNyArNDksNyBAQCBTdHJpbmcgQ1NTUmVmbGVj
dFZhbHVlOjpjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxB
dG9taWNTdAogfQogI2VuZGlmCiAKLXZvaWQgQ1NTUmVmbGVjdFZhbHVlOjphZGRTdWJyZXNvdXJj
ZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgU3R5bGVTaGVldENvbnRl
bnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250
ZW50cyogc3R5bGVTaGVldCkgY29uc3QKIHsKICAgICBpZiAobV9tYXNrKQogICAgICAgICBtX21h
c2stPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oCmluZGV4IDBlZjExY2U0YjE0YWU4MjNlZDNlMTgxOTY2NGVl
NmMyZjU3MjA3YmQuLjgxZmJlOWY0NmMxYjM4YTVlYzBkMDUwMTA0ZWVmNzljMWIwZWY4ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIFN0cmluZyBjdXN0b21TZXJpYWxpemVSZXNvbHZpbmdWYXJpYWJsZXMoY29uc3QgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIFN0cmluZz4mKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBh
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCiAgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTUmVmbGVjdFZhbHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA0Y2Q1NmJhYTc5NmZmNWJkMzZhNTc3MWQwYjQ2MDhk
NWE5ODQxZTNjLi5lOGNjZjI4ZTUxZTcwZTFkMjcxNzBiZjE5MWNlNjJmYWJmNTUwY2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFBhc3NSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVT
aGVldENvbnRlbnRzPiBzCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NTdHlsZVNoZWV0KHNo
ZWV0LCBvd25lck5vZGUsIGZhbHNlKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgS1VSTCYg
YmFzZVVSTCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZykKK1Bhc3NSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJM
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKQogewogICAgIENTU1BhcnNlckNvbnRl
eHQgcGFyc2VyQ29udGV4dChvd25lck5vZGUuZG9jdW1lbnQoKSwgYmFzZVVSTCwgZW5jb2Rpbmcp
OwogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IHNoZWV0ID0gU3R5bGVTaGVldENvbnRl
bnRzOjpjcmVhdGUoYmFzZVVSTC5zdHJpbmcoKSwgcGFyc2VyQ29udGV4dCk7CkBAIC0yNTEsNyAr
MjUxLDcgQEAgYm9vbCBDU1NTdHlsZVNoZWV0OjpjYW5BY2Nlc3NSdWxlcygpIGNvbnN0CiB7CiAg
ICAgaWYgKG1faXNJbmxpbmVTdHlsZXNoZWV0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBL
VVJMIGJhc2VVUkwgPSBtX2NvbnRlbnRzLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VVUkwgPSBt
X2NvbnRlbnRzLT5iYXNlVVJMKCk7CiAgICAgaWYgKGJhc2VVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBvd25lckRvY3VtZW50KCk7
CkBAIC0zNjMsNyArMzYzLDcgQEAgU3RyaW5nIENTU1N0eWxlU2hlZXQ6OmhyZWYoKSBjb25zdAog
ICAgIHJldHVybiBtX2NvbnRlbnRzLT5vcmlnaW5hbFVSTCgpOwogfQogCi1LVVJMIENTU1N0eWxl
U2hlZXQ6OmJhc2VVUkwoKSBjb25zdAorVVJMIENTU1N0eWxlU2hlZXQ6OmJhc2VVUkwoKSBjb25z
dAogewogICAgIHJldHVybiBtX2NvbnRlbnRzLT5iYXNlVVJMKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaAppbmRleCBiMzA4YmQxZDg1MmNhYmE4MzJhMWUyOWZiN2RlZWE0ZDk2MzRi
MzU3Li4zMmI1Y2UxMGEzNDU3ZWFiYjIxN2FiMTFjYTgzYjMxZGJmNDNkMDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ1NTU3R5bGVTaGVl
dCBGSU5BTCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+
LCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+LCBOb2Rl
KiBvd25lck5vZGUpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+IGNyZWF0
ZUlubGluZShOb2RlJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcgPSBTdHJp
bmcoKSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVldD4gY3JlYXRlSW5saW5l
KE5vZGUmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nID0gU3RyaW5nKCkpOwog
CiAgICAgdmlydHVhbCB+Q1NTU3R5bGVTaGVldCgpOwogCkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9vd25lclJ1bGU7IH0KLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgVVJMIGJhc2VVUkwoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdm9pZCBjbGVhck93
bmVyUnVsZSgpIHsgbV9vd25lclJ1bGUgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRl
eCBlYmE5MzdjYzY4OGYxYjM5MjZhZWI4ZTg5OGIzZTM5ZWRlZTgwNjgzLi5lYjYxMTRiMWM2NjVh
YTc3N2YwOGNlNDkzZmI3ZTRkY2Q2ODYwNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAg
LTExMSw3ICsxMTEsNyBAQCBDU1NWYWx1ZTo6VHlwZSBDU1NWYWx1ZTo6Y3NzVmFsdWVUeXBlKCkg
Y29uc3QKICAgICByZXR1cm4gQ1NTX0NVU1RPTTsKIH0KIAotdm9pZCBDU1NWYWx1ZTo6YWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hl
ZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXRDb250
ZW50cyogc3R5bGVTaGVldCkgY29uc3QKIHsKICAgICAvLyBUaGlzIHNob3VsZCBnZXQgY2FsbGVk
IGZvciBpbnRlcm5hbCBpbnN0YW5jZXMgb25seS4KICAgICBBU1NFUlQoIWlzQ1NTT01TYWZlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA3ZTQ4MDI3ODc5Y2Q5MjU1YTJhN2QwZDU5NzdjNGFj
MDExMTUzYTc0Li41MDZlMjVkODVhZDEzYjE1OWI1NTgyMGY3ODRlZjllMmVmMmQ5YjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBDU1NWYWx1ZV9oCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNs
dWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMjIsNyArMTIy
LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgp
IGNvbnN0OwogCi0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworICAgIHZvaWQgYWRkU3Vi
cmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250
ZW50cyopIGNvbnN0OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggNDlmNWM3Yzc0
MWY5MWE5ZWQ0N2JmOGI5MTE5ZTNjN2IzY2Y4NjRlYi4uNzczZTY0MjUxMTlmMzUzNzlkZWJmNGY4
N2Q5MmRjZmNjMWRiNTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBTdHJpbmcgQ1NTVmFsdWVMaXN0OjpjdXN0b21TZXJpYWxpemVSZXNvbHZp
bmdWYXJpYWJsZXMoY29uc3QgSGFzaE1hcDxBdG9taWNTdHJpbgogfQogI2VuZGlmCiAKLXZvaWQg
Q1NTVmFsdWVMaXN0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYg
dXJscywgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KSBjb25zdAordm9pZCBD
U1NWYWx1ZUxpc3Q6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVy
bHMsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkgY29uc3QKIHsKICAgICBz
aXplX3Qgc2l6ZSA9IG1fdmFsdWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCA5ZWUxYWZhOTI5YTc1
ODAxMTY5ZTI5MjdiMjY3M2Q2ZjlmMGJiZWU4Li4yYmRkOWU1NmVjOGM1NzM0ZGU1MjVkZWVkOTQ5
ODU2ODBmZDU3NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC02Niw3ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY3VzdG9tU2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVz
KGNvbnN0IEhhc2hNYXA8QXRvbWljU3RyaW5nLCBTdHJpbmc+JikgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25z
dCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5
bGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25z
dDsKIAogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Owog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmlu
ZGV4IDcxMWRhZmRkNGM3NWI1MTgzY2NjNjIxMDgxZDg1ZGUyMzliOGNiOTkuLmIyYTBmYTc0Njc5
ZGNhZDhiNTBiMjUzMDUyYTVmM2M2N2I4NDAwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTE5OTgsNyArMTk5OCw3IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewogICAgICAgICAg
ICAgICAgIFN0cmluZyBjc3NVUkxWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1
ZSgpOwotICAgICAgICAgICAgICAgIEtVUkwgdXJsID0gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChjc3NVUkxWYWx1ZSk7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IHN0
eWxlUmVzb2x2ZXItPmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVVJMVmFsdWUpOwogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJdCBkb2Vzbid0IHdvcmsgd2l0aCBmb3J3YXJkIG9yIGV4dGVy
bmFsIFNWRyByZWZlcmVuY2VzIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNDA1KQogICAgICAgICAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0
eWxlKCksIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoY3NzVVJMVmFsdWUsIHVy
bC5mcmFnbWVudElkZW50aWZpZXIoKSkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDVmNzEwMzIyMTM1NmRmODZhY2JiNjI5MzIxMjhj
MjA5MzlkMDcwODQuLjFmNWMxNWIyZWYwY2RlNmJlNDZkYWVlYTI4YTYzNjQ4MWY4Y2VhN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwNDEsNyArMTA0MSw3
IEBAIHZvaWQgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6Om1lcmdlQW5kT3ZlcnJpZGVPbkNvbmZs
aWN0KGNvbnN0IFN0eWxlUHJvcGVydHlTZXQmCiAgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KG90
aGVyLnByb3BlcnR5QXQoaSkudG9DU1NQcm9wZXJ0eSgpKTsKIH0KIAotdm9pZCBTdHlsZVByb3Bl
cnR5U2V0OjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywg
U3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKK3ZvaWQgU3R5bGVQ
cm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJs
cywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCkgY29uc3QKIHsKICAgICB1
bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAppbmRleCA0
ZWFiYjNiYzU0MmMyYmJiMzY2NGNmMWIzNGZhZWVlMWJlYzE5Y2I5Li4yMjE2YTA0ZmI1NTIzNDZi
M2ViMzUwMTlkNWI0N2Q5M2M4ZmNjZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ1NTUnVsZTsKIGNsYXNzIENTU1N0eWxlRGVj
bGFyYXRpb247CiBjbGFzcyBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOwogY2xhc3MgSW1tdXRhYmxl
U3R5bGVQcm9wZXJ0eVNldDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBNdXRhYmxl
U3R5bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjsK
IGNsYXNzIFN0eWxlZEVsZW1lbnQ7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIAogICAgIENT
U1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENT
U1BhcnNlck1vZGU+KG1fY3NzUGFyc2VyTW9kZSk7IH0KIAotICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRl
eHRTdHlsZVNoZWV0KSBjb25zdDsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PFVSTD4mLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KSBj
b25zdDsKIAogICAgIFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IG11dGFibGVD
b3B5KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJbW11dGFibGVTdHlsZVByb3BlcnR5U2V0PiBp
bW11dGFibGVDb3B5SWZOZWVkZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAppbmRleCA1ZGVlODRkNzczMWM0MTFmZTNkNjAxMTA1NWI3ODEzYmVlMjRmYTE4Li5jMWI2
YTMwZGE2M2U0NzU3YTA3MDdlM2U1YzA0MTJmMzQ2ODE5Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCkBAIC0zNDIwLDggKzM0MjAsOCBAQCBQYXNzUmVmUHRyPEN1c3RvbUZp
bHRlclByb2dyYW0+IFN0eWxlUmVzb2x2ZXI6Omxvb2t1cEN1c3RvbUZpbHRlclByb2dyYW0oV2Vi
S2l0QwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNo
VHlwZSBtZXNoVHlwZSkKIHsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgPSBtX3N0YXRlLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAg
ICBLVVJMIHZlcnRleFNoYWRlclVSTCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNoYWRlci0+Y29t
cGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIpIDogS1VSTCgpOwotICAgIEtVUkwgZnJhZ21l
bnRTaGFkZXJVUkwgPSBmcmFnbWVudFNoYWRlciA/IGZyYWdtZW50U2hhZGVyLT5jb21wbGV0ZVVS
TChjYWNoZWRSZXNvdXJjZUxvYWRlcikgOiBLVVJMKCk7CisgICAgVVJMIHZlcnRleFNoYWRlclVS
TCA9IHZlcnRleFNoYWRlciA/IHZlcnRleFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpIDogVVJMKCk7CisgICAgVVJMIGZyYWdtZW50U2hhZGVyVVJMID0gZnJhZ21lbnRT
aGFkZXIgPyBmcmFnbWVudFNoYWRlci0+Y29tcGxldGVVUkwoY2FjaGVkUmVzb3VyY2VMb2FkZXIp
IDogVVJMKCk7CiAgICAgUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbTsK
ICAgICBpZiAobV9jdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGUpCiAgICAgICAgIHByb2dyYW0gPSBt
X2N1c3RvbUZpbHRlclByb2dyYW1DYWNoZS0+bG9va3VwKEN1c3RvbUZpbHRlclByb2dyYW1JbmZv
KHZlcnRleFNoYWRlclVSTCwgZnJhZ21lbnRTaGFkZXJVUkwsIHByb2dyYW1UeXBlLCBtaXhTZXR0
aW5ncywgbWVzaFR5cGUpKTsKQEAgLTM3ODgsNyArMzc4OCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZl
cjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0
aW9ucyYKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZSogc3ZnRG9jdW1lbnRWYWx1ZSA9IHRvV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZShhcmd1bWVudCk7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IG1fc3RhdGUuZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTChzdmdEb2N1bWVudFZhbHVlLT51cmwoKSk7CisgICAgICAgICAgICBV
UkwgdXJsID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN2Z0RvY3VtZW50VmFsdWUt
PnVybCgpKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4g
b3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoc3ZnRG9jdW1lbnRW
YWx1ZS0+dXJsKCksIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSwgb3BlcmF0aW9uVHlwZSk7CiAg
ICAgICAgICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0V4dGVybmFsVVJJUmVmZXJlbmNlKHN2
Z0RvY3VtZW50VmFsdWUtPnVybCgpLCBtX3N0YXRlLmRvY3VtZW50KCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAppbmRleCA2YTE2MTk2Y2MyYzRiZDBhZTFlMjhmYmE0ZWRlODhmOThi
ODVmMGVmLi42NzU0ZDdkZDViZWE1MDNmZGI5YzM5NzU4OTMxOWJlMzEyYWJhOWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgY2xhc3MgRGVwcmVjYXRl
ZFN0eWxlQnVpbGRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1l
VmlldzsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFz
cyBLZXlmcmFtZVZhbHVlOwogY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKaW5kZXggMDk1NjYwOTk5N2YyMmI3MGQ2MmJiZDdiMTcy
OWFhNzZkM2M2NTdiMi4uNWY0MzA2ZjdkOTkyMzQxZmE4NmZlNDdiOGE3OGQyMzkxMWM1NTZiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5jcHAKQEAgLTYwLDcgKzYwLDcgQEAg
U3R5bGVSdWxlSW1wb3J0Ojp+U3R5bGVSdWxlSW1wb3J0KCkKICAgICAgICAgbV9jYWNoZWRTaGVl
dC0+cmVtb3ZlQ2xpZW50KCZtX3N0eWxlU2hlZXRDbGllbnQpOwogfQogCi12b2lkIFN0eWxlUnVs
ZUltcG9ydDo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVl
dCogY2FjaGVkU3R5bGVTaGVldCkKK3ZvaWQgU3R5bGVSdWxlSW1wb3J0OjpzZXRDU1NTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcm
IGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7
CiAgICAgaWYgKG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHlsZVNoZWV0LT5jbGVhck93bmVy
UnVsZSgpOwpAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBTdHlsZVJ1bGVJbXBvcnQ6OnJlcXVl
c3RTdHlsZVNoZWV0KCkKICAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBLVVJMIGFic1VSTDsKKyAgICBVUkwgYWJzVVJMOwogICAgIGlmICghbV9w
YXJlbnRTdHlsZVNoZWV0LT5iYXNlVVJMKCkuaXNOdWxsKCkpCiAgICAgICAgIC8vIHVzZSBwYXJl
bnQgc3R5bGVoZWV0J3MgVVJMIGFzIHRoZSBiYXNlIFVSTAotICAgICAgICBhYnNVUkwgPSBLVVJM
KG1fcGFyZW50U3R5bGVTaGVldC0+YmFzZVVSTCgpLCBtX3N0ckhyZWYpOworICAgICAgICBhYnNV
UkwgPSBVUkwobV9wYXJlbnRTdHlsZVNoZWV0LT5iYXNlVVJMKCksIG1fc3RySHJlZik7CiAgICAg
ZWxzZQogICAgICAgICBhYnNVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwobV9zdHJIcmVmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZUltcG9ydC5oCmluZGV4IGVlNTRkYjllNmI5MDcwN2E2
ODRiMTIwMWRlZWQzMGE3NTQ5MjFjZGUuLjQ1MjEyNGZlMWYxN2EyMjU1YzczYWYxZmFjNjJmMzlj
MzIxMDY3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlSW1wb3J0LmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHJpdmF0ZToKICAgICBwdWJsaWM6CiAgICAgICAgIEltcG9ydGVkU3R5bGVTaGVldENs
aWVudChTdHlsZVJ1bGVJbXBvcnQqIG93bmVyUnVsZSkgOiBtX293bmVyUnVsZShvd25lclJ1bGUp
IHsgfQogICAgICAgICB2aXJ0dWFsIH5JbXBvcnRlZFN0eWxlU2hlZXRDbGllbnQoKSB7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENT
U1N0eWxlU2hlZXQqIHNoZWV0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkKICAgICAgICAgewogICAg
ICAgICAgICAgbV9vd25lclJ1bGUtPnNldENTU1N0eWxlU2hlZXQoaHJlZiwgYmFzZVVSTCwgY2hh
cnNldCwgc2hlZXQpOwogICAgICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFN0eWxlUnVsZUltcG9ydCogbV9vd25lclJ1bGU7CiAgICAgfTsKIAotICAgIHZvaWQgc2V0
Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCopOworICAgIHZv
aWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kik7CiAg
ICAgZnJpZW5kIGNsYXNzIEltcG9ydGVkU3R5bGVTaGVldENsaWVudDsKIAogICAgIFN0eWxlUnVs
ZUltcG9ydChjb25zdCBTdHJpbmcmIGhyZWYsIFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0LmgKaW5kZXggNjBiYmI1ZjI2N2U4YmNkM2ZjNmQzYWIzNWU1NDZi
YzRlYzQ4ZWFkOC4uMzg5OTE2YWQ3NDdmZTc0ZDQ5MDQ3MDI0Mzg5NzM3OTQ4YTRlNzM0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVTaGVldC5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hl
ZXRfaAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgotI2luY2x1ZGUgIktVUkxIYXNoLmgi
CisjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1
bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2Rl
KCkgPSAwOwotICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJMKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgVVJMIGJhc2VVUkwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzTG9hZGluZygp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHAKaW5kZXggZWY1ZDUzOTdiNDNiMDRkNDQ5ZmYzMmU3ZWNjMjYwNzVkZjU5ZmRmOS4uZjU1Zjc0
OGZlYTk5OGNlMGQ2N2UzNjUwNzdkMDU0MjRmM2NlMjVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTM5NywxMiArMzk3LDEyIEBAIERvY3VtZW50KiBT
dHlsZVNoZWV0Q29udGVudHM6OnNpbmdsZU93bmVyRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVy
biBvd25lck5vZGUgPyAmb3duZXJOb2RlLT5kb2N1bWVudCgpIDogMDsKIH0KIAotS1VSTCBTdHls
ZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJM
IFN0eWxlU2hlZXRDb250ZW50czo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIENTU1BhcnNlcjo6Y29tcGxldGVVUkwobV9wYXJzZXJDb250ZXh0LCB1
cmwpOwogfQogCi12b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpCit2b2lkIFN0eWxlU2hlZXRDb250ZW50czo6YWRk
U3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykKIHsKICAgICBEZXF1
ZTxTdHlsZVNoZWV0Q29udGVudHMqPiBzdHlsZVNoZWV0UXVldWU7CiAgICAgc3R5bGVTaGVldFF1
ZXVlLmFwcGVuZCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNo
ZWV0Q29udGVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApp
bmRleCA2YjQ5Nzk2MjhiMmRhZDQ4NmVlNDhmNDg4NDk2OGEwZTE4ZDUwZmE0Li5mOWU2OTQ1YzY5
Njg4OGQ1YzNmN2I0YzZhNzE1ODM2NzBjYmIwNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIFN0eWxlU2hlZXRDb250
ZW50c19oCiAKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTgwLDggKzgw
LDggQEAgcHVibGljOgogICAgIGJvb2wgbG9hZENvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9hZENvbXBsZXRlZDsgfQogICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNl
cygpIGNvbnN0OwogCi0gICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3Q7Ci0gICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYp
OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CisgICAgdm9p
ZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jik7CiAKICAgICB2b2lk
IHNldElzVXNlclN0eWxlU2hlZXQoYm9vbCBiKSB7IG1faXNVc2VyU3R5bGVTaGVldCA9IGI7IH0K
ICAgICBib29sIGlzVXNlclN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX2lzVXNlclN0eWxl
U2hlZXQ7IH0KQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhpcyBzdHlsZSBz
aGVldC4gVGhpcyBwcm9wZXJ0eSBwcm9iYWJseSBpc24ndCB1c2VmdWwgZm9yIG11Y2ggZXhjZXB0
CiAgICAgLy8gdGhlIEphdmFTY3JpcHQgYmluZGluZyAod2hpY2ggbmVlZHMgdG8gdXNlIHRoaXMg
dmFsdWUgZm9yIHNlY3VyaXR5KS4KICAgICBTdHJpbmcgb3JpZ2luYWxVUkwoKSBjb25zdCB7IHJl
dHVybiBtX29yaWdpbmFsVVJMOyB9Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VyQ29udGV4dC5iYXNlVVJMOyB9CisgICAgY29uc3QgVVJMJiBiYXNlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZXJDb250ZXh0LmJhc2VVUkw7IH0KIAogICAgIHVuc2ln
bmVkIHJ1bGVDb3VudCgpIGNvbnN0OwogICAgIFN0eWxlUnVsZUJhc2UqIHJ1bGVBdCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
U2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVl
LmNwcAppbmRleCAxZDNhZDI4NzNjNDg4MmExYWE1Yjk2YzNjZjBiZDdkZGI1ZGZmNTk5Li41Yzk2
MmM1OTYwZGJkZjNhOTA3NDMzNmMyOGRjNDlhYzlhYTgxYWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVl
c3RJbml0aWF0b3JzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNs
dWRlICJTdHlsZVBlbmRpbmdTaGFkZXIuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC01NSw3ICs1NSw3IEBAIFdlYktpdENTU1NoYWRlclZhbHVlOjp+V2ViS2l0Q1NT
U2hhZGVyVmFsdWUoKQogewogfQogCi1LVVJMIFdlYktpdENTU1NoYWRlclZhbHVlOjpjb21wbGV0
ZVVSTChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25zdAorVVJMIFdlYktpdENTU1No
YWRlclZhbHVlOjpjb21wbGV0ZVVSTChDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyKSBjb25z
dAogewogICAgIHJldHVybiBsb2FkZXItPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggYTY1NTVm
MmNhY2Y0YTU3NzY4YTFlNjhjMjVhNmZkNDQ2MmU5NGYyZS4uNDBlZDdiMjkyZjA5ZmI5YzZlY2Q4
MWE2YmUxZjJkNzQ3NzdlOWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1NoYWRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRl
clZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU3R5
bGVDYWNoZWRTaGFkZXI7CiBjbGFzcyBTdHlsZVNoYWRlcjsKIApAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1h
dDsgfQogICAgIHZvaWQgc2V0Rm9ybWF0KGNvbnN0IFN0cmluZyYgZm9ybWF0KSB7IG1fZm9ybWF0
ID0gZm9ybWF0OyB9CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVy
KikgY29uc3Q7CisgICAgVVJMIGNvbXBsZXRlVVJMKENhY2hlZFJlc291cmNlTG9hZGVyKikgY29u
c3Q7CiAgICAgU3R5bGVDYWNoZWRTaGFkZXIqIGNhY2hlZFNoYWRlcihDYWNoZWRSZXNvdXJjZUxv
YWRlciopOwogICAgIFN0eWxlU2hhZGVyKiBjYWNoZWRPclBlbmRpbmdTaGFkZXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5kZXggNWM1NzRhYTE1MTkyZWJi
ZmZjNmJlYzQwNWYyZGFkYTZkYjlkYjcwNi4uODhjZDY2ZGY1NmZkZTExNjEzZmNkYjJhNDQ4YmIy
YjhhOTE3NGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBA
IC0yMzMsMTMgKzIzMywxMyBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlv
bjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUgogICAgIFJlZlB0cjxE
b2N1bWVudD4gZG9jOwogI2lmIEVOQUJMRShTVkcpCiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBT
VkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQotICAgICAgICBkb2MgPSBTVkdEb2N1bWVudDo6Y3Jl
YXRlKDAsIEtVUkwoKSk7CisgICAgICAgIGRvYyA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgVVJM
KCkpOwogICAgIGVsc2UKICNlbmRpZgogICAgIGlmIChuYW1lc3BhY2VVUkkgPT0gSFRNTE5hbWVz
Ojp4aHRtbE5hbWVzcGFjZVVSSSkKLSAgICAgICAgZG9jID0gRG9jdW1lbnQ6OmNyZWF0ZVhIVE1M
KDAsIEtVUkwoKSk7CisgICAgICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBVUkwo
KSk7CiAgICAgZWxzZQotICAgICAgICBkb2MgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7
CisgICAgICAgIGRvYyA9IERvY3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogCiAgICAgZG9jLT5z
ZXRTZWN1cml0eU9yaWdpbihtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkpOwogCkBAIC0zMTAs
NyArMzEwLDcgQEAgYm9vbCBET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKIAogUGFzc1JlZlB0cjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBS
ZWZQdHI8SFRNTERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
KyAgICBSZWZQdHI8SFRNTERvY3VtZW50PiBkID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwgVVJM
KCkpOwogICAgIGQtPm9wZW4oKTsKICAgICBkLT53cml0ZSgiPCFkb2N0eXBlIGh0bWw+PGh0bWw+
PGJvZHk+PC9ib2R5PjwvaHRtbD4iKTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQpAQCAtMzE5
LDcgKzMxOSw3IEBAIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0CiAgICAgcmV0dXJuIGQucmVsZWFz
ZSgpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRl
RG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKQorUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1l
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogewogICAgIGlmIChpblZp
ZXdTb3VyY2VNb2RlKQogICAgICAgICByZXR1cm4gSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6Y3Jl
YXRlKGZyYW1lLCB1cmwsIHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
aAppbmRleCBmOWFjNmZmNTk2N2FkZDFmZTNlNjE2ZGRiYjI2ZTAwY2I5Njg1YTFlLi5hYmFmY2E1
M2YzMGFmMzZkMzI5Y2Q4MmFlNTg2MWQyYzk0OGRjNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERvY3VtZW50VHlwZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSFRNTERvY3VtZW50OwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwpAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxIVE1MRG9jdW1lbnQ+IGNyZWF0ZUhUTUxEb2N1bWVudChjb25zdCBTdHJpbmcmIHRpdGxlKTsK
IAogICAgIC8vIE90aGVyIG1ldGhvZHMgKG5vdCBwYXJ0IG9mIERPTSkKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
RnJhbWUqLCBjb25zdCBLVVJMJiwgYm9vbCBpblZpZXdTb3VyY2VNb2RlKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgRnJhbWUqLCBjb25zdCBVUkwmLCBib29sIGluVmlld1NvdXJjZU1vZGUpOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNYTUxNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKICAgICBzdGF0
aWMgYm9vbCBpc1RleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGMwZDEzODQzMTFjOTJkMWVkYzgwYTU1ZGEzM2RlMTM4ODk3MDg3
NWQuLjgxN2Y4Mzk2OGNkZDliODFlNmZmOTgwMGMxZTM2M2ViOTVhODJlMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Zh
bGlkTmFtZVBhcnQoVUNoYXIzMiBjKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCBzaG91bGRJbmhlcml0U2VjdXJpdHlPcmlnaW5Gcm9tT3duZXIoY29uc3QgS1VSTCYgdXJsKQor
c3RhdGljIGJvb2wgc2hvdWxkSW5oZXJpdFNlY3VyaXR5T3JpZ2luRnJvbU93bmVyKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvI29yaWdpbi0wCiAgICAgLy8KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMg
Ym9vbCBjYW5BY2Nlc3NBbmNlc3Rvcihjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlU2VjdXJp
dHlPcmlnaW4sIEZyYW1lKgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgcHJp
bnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgYWN0aXZl
VVJMLCBjb25zdCBjaGFyKiByZWFzb24pCitzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJv
ck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29uc3QgY2hhciog
cmVhc29uKQogewogICAgIFN0cmluZyBtZXNzYWdlID0gIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gaW5pdGlhdGUgbmF2aWdhdGlvbiBmb3IgZnJhbWUgd2l0aCBVUkwgJyIgKyBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkgKyAiJyBmcm9tIGZyYW1lIHdpdGggVVJMICciICsg
YWN0aXZlVVJMLnN0cmluZygpICsgIicuICIgKyByZWFzb24gKyAiXG4iOwogCkBAIC00MDAsNyAr
NDAwLDcgQEAgYm9vbCBUZXh0QXV0b1NpemluZ1RyYWl0czo6aXNEZWxldGVkVmFsdWUoY29uc3Qg
VGV4dEF1dG9TaXppbmdLZXkmIHZhbHVlKQogfQogI2VuZGlmCiAKLURvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2Vz
KQorRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2ln
bmVkIGRvY3VtZW50Q2xhc3NlcykKICAgICA6IENvbnRhaW5lck5vZGUoMCwgQ3JlYXRlRG9jdW1l
bnQpCiAgICAgLCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fc3R5bGVSZXNvbHZlclRocm93YXdh
eVRpbWVyKHRoaXMsICZEb2N1bWVudDo6c3R5bGVSZXNvbHZlclRocm93YXdheVRpbWVyRmlyZWQs
IHRpbWVCZWZvcmVUaHJvd2luZ0F3YXlTdHlsZVJlc29sdmVyQWZ0ZXJMYXN0VXNlSW5TZWNvbmRz
KQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1lbnRVUkkoY29u
c3QgU3RyaW5nJiB1cmkpCiAgICAgdXBkYXRlQmFzZVVSTCgpOwogfQogCi1LVVJMIERvY3VtZW50
OjpiYXNlVVJJKCkgY29uc3QKK1VSTCBEb2N1bWVudDo6YmFzZVVSSSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fYmFzZVVSTDsKIH0KQEAgLTI2MjMsOSArMjYyMyw5IEBAIHZvaWQgRG9jdW1lbnQ6
OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzCiAgICAgYWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCBlcnJvck1lc3NhZ2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBj
YWxsU3RhY2spOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQor
dm9pZCBEb2N1bWVudDo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsKQogewotICAgIGNvbnN0IEtVUkwm
IG5ld1VSTCA9IHVybC5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogdXJsOworICAgIGNvbnN0IFVS
TCYgbmV3VVJMID0gdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkgOiB1cmw7CiAgICAgaWYgKG5l
d1VSTCA9PSBtX3VybCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgS1VSTCYgdXJsKQogCiB2b2lkIERvY3VtZW50Ojp1
cGRhdGVCYXNlVVJMKCkKIHsKLSAgICBLVVJMIG9sZEJhc2VVUkwgPSBtX2Jhc2VVUkw7CisgICAg
VVJMIG9sZEJhc2VVUkwgPSBtX2Jhc2VVUkw7CiAgICAgLy8gRE9NIDMgQ29yZTogV2hlbiB0aGUg
RG9jdW1lbnQgc3VwcG9ydHMgdGhlIGZlYXR1cmUgIkhUTUwiIFtET00gTGV2ZWwgMiBIVE1MXSwg
dGhlIGJhc2UgVVJJIGlzIGNvbXB1dGVkIHVzaW5nCiAgICAgLy8gZmlyc3QgdGhlIHZhbHVlIG9m
IHRoZSBocmVmIGF0dHJpYnV0ZSBvZiB0aGUgSFRNTCBCQVNFIGVsZW1lbnQgaWYgYW55LCBhbmQg
dGhlIHZhbHVlIG9mIHRoZSBkb2N1bWVudFVSSSBhdHRyaWJ1dGUKICAgICAvLyBmcm9tIHRoZSBE
b2N1bWVudCBpbnRlcmZhY2Ugb3RoZXJ3aXNlLgpAQCAtMjY0OCwxNCArMjY0OCwxNCBAQCB2b2lk
IERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICAgICAgLy8gVGhlIGRvY3VtZW50VVJJIGF0
dHJpYnV0ZSBpcyByZWFkLW9ubHkgZnJvbSBKYXZhU2NyaXB0LCBidXQgd3JpdGFibGUgZnJvbSBP
YmplY3RpdmUgQywgc28gd2UgbmVlZCB0byByZXRhaW4KICAgICAgICAgLy8gdGhpcyBmYWxsYmFj
ayBiZWhhdmlvci4gV2UgdXNlIGEgbnVsbCBiYXNlIFVSTCwgc2luY2UgdGhlIGRvY3VtZW50VVJJ
IGF0dHJpYnV0ZSBpcyBhbiBhcmJpdHJhcnkgc3RyaW5nCiAgICAgICAgIC8vIGFuZCBET00gMyBD
b3JlIGRvZXMgbm90IHNwZWNpZnkgaG93IGl0IHNob3VsZCBiZSByZXNvbHZlZC4KLSAgICAgICAg
bV9iYXNlVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGRvY3VtZW50VVJJKCkpOworICAgICAg
ICBtX2Jhc2VVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBkb2N1bWVudFVSSSgpKTsKICAgICB9
CiAKICAgICBpZiAobV9zZWxlY3RvclF1ZXJ5Q2FjaGUpCiAgICAgICAgIG1fc2VsZWN0b3JRdWVy
eUNhY2hlLT5pbnZhbGlkYXRlKCk7CiAKICAgICBpZiAoIW1fYmFzZVVSTC5pc1ZhbGlkKCkpCi0g
ICAgICAgIG1fYmFzZVVSTCA9IEtVUkwoKTsKKyAgICAgICAgbV9iYXNlVVJMID0gVVJMKCk7CiAK
ICAgICBpZiAobV9lbGVtZW50U2hlZXQpIHsKICAgICAgICAgLy8gRWxlbWVudCBzaGVldCBpcyBz
aWxseS4gSXQgbmV2ZXIgY29udGFpbnMgYW55dGhpbmcuCkBAIC0yNjc1LDcgKzI2NzUsNyBAQCB2
b2lkIERvY3VtZW50Ojp1cGRhdGVCYXNlVVJMKCkKICAgICB9CiB9CiAKLXZvaWQgRG9jdW1lbnQ6
OnNldEJhc2VVUkxPdmVycmlkZShjb25zdCBLVVJMJiB1cmwpCit2b2lkIERvY3VtZW50OjpzZXRC
YXNlVVJMT3ZlcnJpZGUoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgbV9iYXNlVVJMT3ZlcnJpZGUg
PSB1cmw7CiAgICAgdXBkYXRlQmFzZVVSTCgpOwpAQCAtMjcwMSwxMSArMjcwMSwxMSBAQCB2b2lk
IERvY3VtZW50Ojpwcm9jZXNzQmFzZUVsZW1lbnQoKQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBT
aW5jZSB0aGlzIGRvZXNuJ3Qgc2hhcmUgY29kZSB3aXRoIGNvbXBsZXRlVVJMIGl0IG1heSBub3Qg
aGFuZGxlIGVuY29kaW5ncyBjb3JyZWN0bHkuCi0gICAgS1VSTCBiYXNlRWxlbWVudFVSTDsKKyAg
ICBVUkwgYmFzZUVsZW1lbnRVUkw7CiAgICAgaWYgKGhyZWYpIHsKICAgICAgICAgU3RyaW5nIHN0
cmlwcGVkSHJlZiA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcygqaHJlZik7CiAg
ICAgICAgIGlmICghc3RyaXBwZWRIcmVmLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGJhc2VFbGVt
ZW50VVJMID0gS1VSTCh1cmwoKSwgc3RyaXBwZWRIcmVmKTsKKyAgICAgICAgICAgIGJhc2VFbGVt
ZW50VVJMID0gVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwogICAgIH0KICAgICBpZiAobV9iYXNl
RWxlbWVudFVSTCAhPSBiYXNlRWxlbWVudFVSTCAmJiBjb250ZW50U2VjdXJpdHlQb2xpY3koKS0+
YWxsb3dCYXNlVVJJKGJhc2VFbGVtZW50VVJMKSkgewogICAgICAgICBtX2Jhc2VFbGVtZW50VVJM
ID0gYmFzZUVsZW1lbnRVUkw7CkBAIC0yNzE1LDcgKzI3MTUsNyBAQCB2b2lkIERvY3VtZW50Ojpw
cm9jZXNzQmFzZUVsZW1lbnQoKQogICAgIG1fYmFzZVRhcmdldCA9IHRhcmdldCA/ICp0YXJnZXQg
OiBudWxsQXRvbTsKIH0KIAotU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYg
dXJsKSBjb25zdAorU3RyaW5nIERvY3VtZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZyYW1lKCkgPyBmcmFtZSgpLT5sb2FkZXIoKS51c2VyQWdlbnQo
dXJsKSA6IFN0cmluZygpOwogfQpAQCAtMzcyNiw3ICszNzI2LDcgQEAgU3RyaW5nIERvY3VtZW50
Ojpjb29raWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICB9CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9IHRoaXMtPmNvb2tpZVVSTCgpOworICAg
IFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwoKTsKICAgICBpZiAoY29va2llVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0zNzQ3LDcgKzM3NDcsNyBA
QCB2b2lkIERvY3VtZW50OjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBLVVJMIGNvb2tpZVVSTCA9
IHRoaXMtPmNvb2tpZVVSTCgpOworICAgIFVSTCBjb29raWVVUkwgPSB0aGlzLT5jb29raWVVUkwo
KTsKICAgICBpZiAoY29va2llVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
OTcxLDIwICszOTcxLDIwIEBAIHZvaWQgRG9jdW1lbnQ6OnNldERlY29kZXIoUGFzc1JlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKQogICAgIG1fZGVjb2RlciA9IGRlY29kZXI7CiB9
CiAKLUtVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBL
VVJMJiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0CitVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3QKIHsKICAg
ICAvLyBBbHdheXMgcmV0dXJuIGEgbnVsbCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4K
LSAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNoYW5nZSB0aGUgS1VSTCBjb25zdHJ1Y3RvciB0byBo
YXZlIHRoaXMgYmVoYXZpb3I/CisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVS
TCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CiAgICAgLy8gU2VlIGFsc28gW0NT
U11TdHlsZVNoZWV0Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKQogICAgIGlmICh1cmwuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBLVVJMKCk7Ci0gICAgY29uc3QgS1VSTCYgYmFzZVVSTCA9
ICgoYmFzZVVSTE92ZXJyaWRlLmlzRW1wdHkoKSB8fCBiYXNlVVJMT3ZlcnJpZGUgPT0gYmxhbmtV
UkwoKSkgJiYgcGFyZW50RG9jdW1lbnQoKSkgPyBwYXJlbnREb2N1bWVudCgpLT5iYXNlVVJMKCkg
OiBiYXNlVVJMT3ZlcnJpZGU7CisgICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBjb25zdCBVUkwm
IGJhc2VVUkwgPSAoKGJhc2VVUkxPdmVycmlkZS5pc0VtcHR5KCkgfHwgYmFzZVVSTE92ZXJyaWRl
ID09IGJsYW5rVVJMKCkpICYmIHBhcmVudERvY3VtZW50KCkpID8gcGFyZW50RG9jdW1lbnQoKS0+
YmFzZVVSTCgpIDogYmFzZVVSTE92ZXJyaWRlOwogICAgIGlmICghbV9kZWNvZGVyKQotICAgICAg
ICByZXR1cm4gS1VSTChiYXNlVVJMLCB1cmwpOwotICAgIHJldHVybiBLVVJMKGJhc2VVUkwsIHVy
bCwgbV9kZWNvZGVyLT5lbmNvZGluZygpKTsKKyAgICAgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1
cmwpOworICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsLCBtX2RlY29kZXItPmVuY29kaW5nKCkp
OwogfQogCi1LVVJMIERvY3VtZW50Ojpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QKK1VSTCBEb2N1bWVudDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMKTsKIH0KQEAgLTQxOTksMjEg
KzQxOTksMjEgQEAgU3RyaW5nIERvY3VtZW50OjpxdWVyeUNvbW1hbmRWYWx1ZShjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS52
YWx1ZSgpOwogfQogCi1LVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQor
VVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoKQogewogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBjb25zdCBvcGVuU2VhcmNoTUlNRVR5cGUgPSAiYXBwbGljYXRpb24vb3BlbnNl
YXJjaGRlc2NyaXB0aW9uK3htbCI7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IG9wZW5T
ZWFyY2hSZWxhdGlvbiA9ICJzZWFyY2giOwogCiAgICAgLy8gRklYTUU6IFdoeSBkbyBvbmx5IHRv
cC1sZXZlbCBmcmFtZXMgaGF2ZSBvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkxzPwogICAgIGlmICgh
ZnJhbWUoKSB8fCBmcmFtZSgpLT50cmVlKCkucGFyZW50KCkpCi0gICAgICAgIHJldHVybiBLVVJM
KCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIC8vIEZJWE1FOiBXaHkgZG8gd2UgbmVl
ZCB0byB3YWl0IGZvciBGcmFtZVN0YXRlQ29tcGxldGU/CiAgICAgaWYgKGZyYW1lKCktPmxvYWRl
cigpLnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKQotICAgICAgICByZXR1cm4gS1VSTCgp
OworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBpZiAoIWhlYWQoKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgUmVmUHRyPEhUTUxDb2xs
ZWN0aW9uPiBjaGlsZHJlbiA9IGhlYWQoKS0+Y2hpbGRyZW4oKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKQEAgLTQyMjcs
NyArNDIyNyw3IEBAIEtVUkwgRG9jdW1lbnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpCiAg
ICAgICAgIHJldHVybiBsaW5rRWxlbWVudC0+aHJlZigpOwogICAgIH0KIAotICAgIHJldHVybiBL
VVJMKCk7CisgICAgcmV0dXJuIFVSTCgpOwogfQogCiB2b2lkIERvY3VtZW50OjpwdXNoQ3VycmVu
dFNjcmlwdChQYXNzUmVmUHRyPEhUTUxTY3JpcHRFbGVtZW50PiBuZXdDdXJyZW50U2NyaXB0KQpA
QCAtNDU2Niw3ICs0NTY2LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgp
CiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3IgYSBzZWN1cml0
eSBjb250ZXh0LgogICAgICAgICAvLyBUaGlzIGNhbiBvY2N1ciB2aWEgZG9jdW1lbnQuaW1wbGVt
ZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoKS4KLSAgICAgICAgbV9jb29raWVVUkwgPSBLVVJMKFBh
cnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIG1fY29va2llVVJMID0gVVJM
KFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7CiAgICAgICAgIHNldFNlY3VyaXR5T3Jp
Z2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiAgICAgICAgIHNldENvbnRlbnRT
ZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTQ2NTIsNyArNDY1Miw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzQ29udGV4
dFRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOwogfQogCi12b2lkIERv
Y3VtZW50Ojp1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYgdXJsKQor
dm9pZCBEb2N1bWVudDo6dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIEZyYW1lKiBmID0gZnJhbWUoKTsKICAgICBpZiAoIWYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCmluZGV4IDQxMGFmYWViZDY4MTAwMWE2MzExOTBjNGZkMzNhZGFjYWZmMDkwMGQuLjcz
YTc4NTNiZDQ3MmExNWFiNTdiZmMwNjYyOTRmMzUwMTU2ZDcyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCkBAIC0yMzYsMTEgKzIzNiwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgRG9jdW1lbnRD
bGFzc0ZsYWdzOwogCiBjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJs
aWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1l
KiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IERvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
RG9jdW1lbnQ+IGNyZWF0ZVhIVE1MKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVYSFRNTChGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb2N1bWVu
dChmcmFtZSwgdXJsLCBYSFRNTERvY3VtZW50Q2xhc3MpKTsKICAgICB9CkBAIC00MTQsNyArNDE0
LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBkb2N1bWVudFVSSSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnRVUkk7IH0KICAgICB2b2lkIHNldERvY3VtZW50VVJJKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgdmlydHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNl
VVJJKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICBTdHJp
bmcgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC01ODQsMjIgKzU4NCwyMiBAQCBwdWJsaWM6
CiAKICAgICBib29sIHdlbGxGb3JtZWQoKSBjb25zdCB7IHJldHVybiBtX3dlbGxGb3JtZWQ7IH0K
IAotICAgIHZpcnR1YWwgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyBy
ZXR1cm4gbV91cmw7IH0KLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVh
bCBjb25zdCBVUkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBUbyB1bmRlcnN0YW5kIGhv
dyB0aGVzZSBjb25jZXB0cyByZWxhdGUgdG8gb25lIGFub3RoZXIsIHBsZWFzZSBzZWUgdGhlCiAg
ICAgLy8gY29tbWVudHMgc3Vycm91bmRpbmcgdGhlaXIgZGVjbGFyYXRpb24uCi0gICAgY29uc3Qg
S1VSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQotICAgIHZvaWQgc2V0
QmFzZVVSTE92ZXJyaWRlKGNvbnN0IEtVUkwmKTsKLSAgICBjb25zdCBLVVJMJiBiYXNlVVJMT3Zl
cnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VVUkxPdmVycmlkZTsgfQotICAgIGNvbnN0IEtV
UkwmIGJhc2VFbGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVSTDsgfQor
ICAgIGNvbnN0IFVSTCYgYmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVVSTDsgfQorICAg
IHZvaWQgc2V0QmFzZVVSTE92ZXJyaWRlKGNvbnN0IFVSTCYpOworICAgIGNvbnN0IFVSTCYgYmFz
ZVVSTE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVVJMT3ZlcnJpZGU7IH0KKyAgICBj
b25zdCBVUkwmIGJhc2VFbGVtZW50VVJMKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlRWxlbWVudFVS
TDsgfQogICAgIGNvbnN0IFN0cmluZyYgYmFzZVRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
ZVRhcmdldDsgfQogICAgIHZvaWQgcHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFs
IEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklOQUw7Ci0g
ICAgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiBiYXNlVVJMT3Zl
cnJpZGUpIGNvbnN0OworICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYp
IGNvbnN0IE9WRVJSSURFIEZJTkFMOworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
LCBjb25zdCBVUkwmIGJhc2VVUkxPdmVycmlkZSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmlu
ZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJB
Z2VudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKQEAgLTgxNyw4ICs4MTcsOCBAQCBwdWJsaWM6
CiAgICAgLy8gICAgZG9jdW1lbnQgaW5oZXJpdHMgdGhlIHNlY3VyaXR5IGNvbnRleHQgb2YgYW5v
dGhlciBkb2N1bWVudCwgaXQKICAgICAvLyAgICBpbmhlcml0cyBpdHMgY29va2llVVJMIGJ1dCBu
b3QgaXRzIFVSTC4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGNvb2tpZVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29va2llVVJMOyB9Ci0gICAgdm9pZCBzZXRDb29raWVVUkwoY29uc3QgS1VSTCYg
dXJsKSB7IG1fY29va2llVVJMID0gdXJsOyB9CisgICAgY29uc3QgVVJMJiBjb29raWVVUkwoKSBj
b25zdCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQorICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0
IFVSTCYgdXJsKSB7IG1fY29va2llVVJMID0gdXJsOyB9CiAKICAgICAvLyBUaGUgZmlyc3RQYXJ0
eUZvckNvb2tpZXMgaXMgdXNlZCB0byBjb21wdXRlIHdoZXRoZXIgdGhpcyBkb2N1bWVudAogICAg
IC8vIGFwcGVhcnMgaW4gYSAidGhpcmQtcGFydHkiIGNvbnRleHQgZm9yIHRoZSBwdXJwb3NlIG9m
IHRoaXJkLXBhcnR5CkBAIC04MzAsOCArODMwLDggQEAgcHVibGljOgogICAgIC8vICAgICAgIGZp
cnN0UGFydHlGb3JDb29raWVzIGhhdmUgYSBkaWZmZXJlbnQgcmVnaXN0cnktY29udHJvbGxlZAog
ICAgIC8vICAgICAgIGRvbWFpbi4KICAgICAvLwotICAgIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQotICAg
IHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKSB7IG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXMgPSB1cmw7IH0KKyAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29r
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQorICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpIHsgbV9maXJzdFBhcnR5Rm9y
Q29va2llcyA9IHVybDsgfQogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50cyB0
aGUgcnVsZSBmcm9tIEhUTUwgNCBmb3Igd2hhdCB2YWxpZCBuYW1lcyBhcmUuCiAgICAgLy8gVG8g
Z2V0IHRoaXMgcmlnaHQgZm9yIGFsbCB0aGUgWE1MIGNhc2VzLCB3ZSBwcm9iYWJseSBoYXZlIHRv
IGltcHJvdmUgdGhpcyBvciBtb3ZlIGl0CkBAIC04NjYsNyArODY2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgcXVlcnlDb21tYW5kU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAgICAg
U3RyaW5nIHF1ZXJ5Q29tbWFuZFZhbHVlKGNvbnN0IFN0cmluZyYgY29tbWFuZCk7CiAKLSAgICBL
VVJMIG9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCgpOworICAgIFVSTCBvcGVuU2VhcmNoRGVzY3Jp
cHRpb25VUkwoKTsKIAogICAgIC8vIGRlc2lnbk1vZGUgc3VwcG9ydAogICAgIGVudW0gSW5oZXJp
dGVkQm9vbCB7IG9mZiA9IGZhbHNlLCBvbiA9IHRydWUsIGluaGVyaXQgfTsgICAgCkBAIC0xMDA3
LDcgKzEwMDcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7CiAg
ICAgdm9pZCBpbml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKLSAgICB2b2lkIHVwZGF0ZVVS
TEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJik7CisgICAgdm9pZCB1cGRhdGVVUkxG
b3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzdGF0ZVBvcHBlZChQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogCiAgICAgYm9vbCBwcm9jZXNzaW5n
TG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CkBAIC0x
MTg3LDcgKzExODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dl
ZEJ5Q2xpZW50KGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBLVVJMJiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcyk7CisgICAgRG9jdW1lbnQo
RnJhbWUqLCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9IERlZmF1bHREb2N1bWVudENsYXNzKTsKIAog
ICAgIHZvaWQgY2xlYXJYTUxWZXJzaW9uKCkgeyBtX3htbFZlcnNpb24gPSBTdHJpbmcoKTsgfQog
CkBAIC0xMjkzLDEyICsxMjkzLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3dlbGxGb3JtZWQ7
CiAKICAgICAvLyBEb2N1bWVudCBVUkxzLgotICAgIEtVUkwgbV91cmw7IC8vIERvY3VtZW50LlVS
TDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZlZC4KLSAgICBL
VVJMIG1fYmFzZVVSTDsgLy8gTm9kZS5iYXNlVVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29s
dmluZyByZWxhdGl2ZSBVUkxzLgotICAgIEtVUkwgbV9iYXNlVVJMT3ZlcnJpZGU7IC8vIEFuIGFs
dGVybmF0aXZlIGJhc2UgVVJMIHRoYXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG1fYmFzZVVSTCAo
YnV0IG5vdCBtX2Jhc2VFbGVtZW50VVJMKS4KLSAgICBLVVJMIG1fYmFzZUVsZW1lbnRVUkw7IC8v
IFRoZSBVUkwgc2V0IGJ5IHRoZSA8YmFzZT4gZWxlbWVudC4KLSAgICBLVVJMIG1fY29va2llVVJM
OyAvLyBUaGUgVVJMIHRvIHVzZSBmb3IgY29va2llIGFjY2Vzcy4KLSAgICBLVVJMIG1fZmlyc3RQ
YXJ0eUZvckNvb2tpZXM7IC8vIFRoZSBwb2xpY3kgVVJMIGZvciB0aGlyZC1wYXJ0eSBjb29raWUg
YmxvY2tpbmcuCisgICAgVVJMIG1fdXJsOyAvLyBEb2N1bWVudC5VUkw6IFRoZSBVUkwgZnJvbSB3
aGljaCB0aGlzIGRvY3VtZW50IHdhcyByZXRyaWV2ZWQuCisgICAgVVJMIG1fYmFzZVVSTDsgLy8g
Tm9kZS5iYXNlVVJJOiBUaGUgVVJMIHRvIHVzZSB3aGVuIHJlc29sdmluZyByZWxhdGl2ZSBVUkxz
LgorICAgIFVSTCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwg
dGhhdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbV9iYXNlVVJMIChidXQgbm90IG1fYmFzZUVsZW1l
bnRVUkwpLgorICAgIFVSTCBtX2Jhc2VFbGVtZW50VVJMOyAvLyBUaGUgVVJMIHNldCBieSB0aGUg
PGJhc2U+IGVsZW1lbnQuCisgICAgVVJMIG1fY29va2llVVJMOyAvLyBUaGUgVVJMIHRvIHVzZSBm
b3IgY29va2llIGFjY2Vzcy4KKyAgICBVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsgLy8gVGhl
IHBvbGljeSBVUkwgZm9yIHRoaXJkLXBhcnR5IGNvb2tpZSBibG9ja2luZy4KIAogICAgIC8vIERv
Y3VtZW50LmRvY3VtZW50VVJJOgogICAgIC8vIEFsdGhvdWdoIFVSTC1saWtlLCBEb2N1bWVudC5k
b2N1bWVudFVSSSBjYW4gYWN0dWFsbHkgYmUgc2V0IHRvIGFueQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRUeXBlLmNwcAppbmRleCBhY2VmYTY3M2M0OTc0M2QxOWM5Mjc2MGU1NmJlZmYzYTYyMGYxMzhl
Li40NzJmODRlMGM4MjVmMDljMzU4M2VhNjBjOTJkMjY5NzkyMjRlMjhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRUeXBlLmNwcApAQCAtMzYsOSArMzYsOSBAQCBEb2N1bWVudFR5cGU6OkRvY3Vt
ZW50VHlwZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJgogewogfQogCi1LVVJMIERvY3VtZW50VHlwZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgRG9j
dW1lbnRUeXBlOjpiYXNlVVJJKCkgY29uc3QKIHsKLSAgICByZXR1cm4gS1VSTCgpOworICAgIHJl
dHVybiBVUkwoKTsKIH0KIAogU3RyaW5nIERvY3VtZW50VHlwZTo6bm9kZU5hbWUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCmluZGV4IDFkYjYzMjdjZGRiZDFlMzFlOTA0OGY0ZmMw
ODhhNDRhYTEyZjdlYWUuLjY1MDE4MDc3MDQ4ZWVhNGY5ZWU4MzlkMmVjN2MzMTgzOGVmMzgzODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBlLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBEb2N1bWVudFR5cGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgcHVibGljSWQsIGNvbnN0IFN0cmluZyYgc3lzdGVtSWQpOwogCi0gICAg
dmlydHVhbCBLVVJMIGJhc2VVUkkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFVSTCBiYXNlVVJJKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5vZGU+
IGNsb25lTm9kZShib29sIGRlZXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDM2NjEwYjQ2
NWJhYjQyMjQ5YWM0OTY1YTkwYTliODYxYTFlNGUyYmQuLjJlMDExN2ExYTdlMjhmOTlmZGE3YzNj
YTFiODI3MDQ0NThhODk1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyNDYsMTAgKzEy
NDYsMTAgQEAgdm9pZCBFbGVtZW50OjpzZXRQcmVmaXgoY29uc3QgQXRvbWljU3RyaW5nJiBwcmVm
aXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fdGFnTmFtZS5zZXRQcmVmaXgocHJlZml4Lmlz
RW1wdHkoKSA/IEF0b21pY1N0cmluZygpIDogcHJlZml4KTsKIH0KIAotS1VSTCBFbGVtZW50Ojpi
YXNlVVJJKCkgY29uc3QKK1VSTCBFbGVtZW50OjpiYXNlVVJJKCkgY29uc3QKIHsKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGJhc2VBdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGUoYmFzZUF0dHIpOwot
ICAgIEtVUkwgYmFzZShLVVJMKCksIGJhc2VBdHRyaWJ1dGUpOworICAgIFVSTCBiYXNlKFVSTCgp
LCBiYXNlQXR0cmlidXRlKTsKICAgICBpZiAoIWJhc2UucHJvdG9jb2woKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBiYXNlOwogCkBAIC0xMjU3LDExICsxMjU3LDExIEBAIEtVUkwgRWxlbWVu
dDo6YmFzZVVSSSgpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiBiYXNl
OwogCi0gICAgY29uc3QgS1VSTCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOworICAg
IGNvbnN0IFVSTCYgcGFyZW50QmFzZSA9IHBhcmVudC0+YmFzZVVSSSgpOwogICAgIGlmIChwYXJl
bnRCYXNlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gYmFzZTsKIAotICAgIHJldHVybiBLVVJM
KHBhcmVudEJhc2UsIGJhc2VBdHRyaWJ1dGUpOworICAgIHJldHVybiBVUkwocGFyZW50QmFzZSwg
YmFzZUF0dHJpYnV0ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6aW1hZ2VT
b3VyY2VVUkwoKSBjb25zdApAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgRE9NU3RyaW5nTWFwKiBFbGVt
ZW50OjpkYXRhc2V0KCkKICAgICByZXR1cm4gZGF0YS5kYXRhc2V0KCk7CiB9CiAKLUtVUkwgRWxl
bWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CitV
UkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0CiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CkBA
IC0yNTAxLDcgKzI1MDEsNyBAQCBLVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRl
VVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRyaWJ1dGUobmFtZSkp
KTsKIH0KIAotS1VSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lKSBjb25zdAorVVJMIEVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIGlmIChlbGVtZW50RGF0YSgpKSB7CkBAIC0yNTExLDcgKzI1MTEsNyBAQCBLVVJM
IEVsZW1lbnQ6OmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiAjZW5kaWYKICAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAg
cmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwodmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA2NDAyZDUyZTg3ZjEzZjdhOWQwOTE4NTZhZjc2OTVlZjg0NzM2MjIzLi4zNDI2YWQ5
NTZkNThiODQzNzVjYTYzNjcyZDEzODJkODRhYmM3ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdGFnTmFtZS5wcmVmaXgo
KTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25z
dCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJKCk7IH0KIAot
ICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7CisgICAgdmly
dHVhbCBVUkwgYmFzZVVSSSgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgdmlydHVhbCBT
dHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIApAQCAtMzg0LDggKzM4NCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgS1VSTCBnZXRV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwotICAgIEtVUkwgZ2V0Tm9u
RW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBn
ZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIFVSTCBnZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ljb25VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuY3BwCmluZGV4IDAzYmIzYmYzMDI4YzA0ZWIxNTYyNjAzNmYwZjM5MDNiYWY1Yzgz
ZGQuLjY0NmY2YzVhMGIwMjJjMjk1MWViZTI2YmZlMjYyOGFlMTJhYmUxODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
SWNvblVSTC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1J
Y29uVVJMIEljb25VUkw6OmRlZmF1bHRJY29uVVJMKGNvbnN0IEtVUkwmIHVybCwgSWNvblR5cGUg
dHlwZSkKK0ljb25VUkwgSWNvblVSTDo6ZGVmYXVsdEljb25VUkwoY29uc3QgVVJMJiB1cmwsIElj
b25UeXBlIHR5cGUpCiB7CiAgICAgSWNvblVSTCByZXN1bHQodXJsLCBlbXB0eVN0cmluZygpLCBl
bXB0eVN0cmluZygpLCB0eXBlKTsKICAgICByZXN1bHQubV9pc0RlZmF1bHRJY29uID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vSWNvblVSTC5oCmluZGV4IDFmYjM1NzhkMjA0OTg5ZmNiNjNhOWEyODI2NjRhZTA5Nzkx
ODIzOWMuLjc5MTZhZTBmNzY0ZTVkZjVmMzhiYTczOTJlM2NmNDVmNDU3MmMxZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JY29uVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0ljb25VUkwuaApAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBJY29uVVJMX2gKICNkZWZpbmUg
SWNvblVSTF9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAg
SWNvblR5cGUgbV9pY29uVHlwZTsKICAgICBTdHJpbmcgbV9zaXplczsKICAgICBTdHJpbmcgbV9t
aW1lVHlwZTsKLSAgICBLVVJMIG1faWNvblVSTDsKKyAgICBVUkwgbV9pY29uVVJMOwogICAgIGJv
b2wgbV9pc0RlZmF1bHRJY29uOwogCiAgICAgSWNvblVSTCgpCkBAIC02MSw3ICs2MSw3IEBAIHN0
cnVjdCBJY29uVVJMIHsKICAgICB7CiAgICAgfQogCi0gICAgSWNvblVSTChjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEljb25UeXBl
IHR5cGUpCisgICAgSWNvblVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzaXplcywg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgSWNvblR5cGUgdHlwZSkKICAgICAgICAgOiBtX2ljb25U
eXBlKHR5cGUpCiAgICAgICAgICwgbV9zaXplcyhzaXplcykKICAgICAgICAgLCBtX21pbWVUeXBl
KG1pbWVUeXBlKQpAQCAtNzAsNyArNzAsNyBAQCBzdHJ1Y3QgSWNvblVSTCB7CiAgICAgewogICAg
IH0KICAgICAKLSAgICBzdGF0aWMgSWNvblVSTCBkZWZhdWx0SWNvblVSTChjb25zdCBLVVJMJiwg
SWNvblR5cGUpOworICAgIHN0YXRpYyBJY29uVVJMIGRlZmF1bHRJY29uVVJMKGNvbnN0IFVSTCYs
IEljb25UeXBlKTsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJY29uVVJMJiwgY29uc3Qg
SWNvblVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0lubGluZVN0eWxlU2hl
ZXRPd25lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNw
cAppbmRleCA0MTg5M2ExZTA0OGQ3YTYyY2Y1MmU5NGZiZDMwYmM0ZGU3M2E5YzYwLi43MTMyYzQ3
Nzk4NDY0MDExMjkzNDQ0NDVhMWE3YTA3NDY4MTFjYzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vSW5saW5lU3R5bGVTaGVldE93bmVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgSW5s
aW5lU3R5bGVTaGVldE93bmVyOjpjcmVhdGVTaGVldChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBT
dHJpbmcmIHRleHQpCiAKICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCi0gICAgbV9zaGVldCA9IENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShlbGVtZW50LCBLVVJMKCksIGRvY3VtZW50LmlucHV0
RW5jb2RpbmcoKSk7CisgICAgbV9zaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZUlubGluZShl
bGVtZW50LCBVUkwoKSwgZG9jdW1lbnQuaW5wdXRFbmNvZGluZygpKTsKICAgICBtX3NoZWV0LT5z
ZXRNZWRpYVF1ZXJpZXMobWVkaWFRdWVyaWVzLnJlbGVhc2UoKSk7CiAgICAgbV9zaGVldC0+c2V0
VGl0bGUoZWxlbWVudC50aXRsZSgpKTsKICAgICBtX3NoZWV0LT5jb250ZW50cygpLT5wYXJzZVN0
cmluZ0F0TGluZSh0ZXh0LCBtX3N0YXJ0TGluZU51bWJlci56ZXJvQmFzZWRJbnQoKSwgbV9pc1Bh
cnNpbmdDaGlsZHJlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYjg5ZTdkM2UxMDUyM2NkZjM3Mzk2
M2VlYjQyMTVlNWM5YzkxNDg5OS4uYWEyMTk2ZTU0MzZiZTczNzhhOGVmZDBmMWEzNWZmZTk3YmVj
MTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTEzOCw5ICsxMTM4LDkgQEAgRG9jdW1lbnQgKk5v
ZGU6Om93bmVyRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBkb2MgPT0gdGhpcyA/IDAgOiBk
b2M7CiB9CiAKLUtVUkwgTm9kZTo6YmFzZVVSSSgpIGNvbnN0CitVUkwgTm9kZTo6YmFzZVVSSSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhcmVudE5vZGUoKSA/IHBhcmVudE5vZGUoKS0+YmFzZVVS
SSgpIDogS1VSTCgpOworICAgIHJldHVybiBwYXJlbnROb2RlKCkgPyBwYXJlbnROb2RlKCktPmJh
c2VVUkkoKSA6IFVSTCgpOwogfQogCiBib29sIE5vZGU6OmlzRXF1YWxOb2RlKE5vZGUqIG90aGVy
KSBjb25zdApAQCAtMTc5OSw3ICsxNzk5LDcgQEAgdm9pZCBOb2RlTGlzdHNOb2RlRGF0YTo6aW52
YWxpZGF0ZUNhY2hlcyhjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyTmFtZSkKICAgICAgICAgaXQt
PnZhbHVlLT5pbnZhbGlkYXRlQ2FjaGUoKTsKIH0KIAotdm9pZCBOb2RlOjpnZXRTdWJyZXNvdXJj
ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIE5vZGU6OmdldFN1YnJl
c291cmNlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGNmMTUwNzI5ZDk4
ZjEwNDYxNzhmZmRhZTgyNDM3N2ZhNzg4ODYxZDUuLjUxM2Q2YmI2YjRhMGVjMjM3YTBhN2M5ODUx
ZWQxZDc2ZWYzZjc3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiRWRpdGluZ0JvdW5kYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRl
ICJLVVJMSGFzaC5oIgorI2luY2x1ZGUgIlVSTEhhc2guaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxl
Q29uc3RhbnRzLmgiCkBAIC0xOTEsOSArMTkxLDkgQEAgcHVibGljOgogICAgIE5vZGUqIHBzZXVk
b0F3YXJlRmlyc3RDaGlsZCgpIGNvbnN0OwogICAgIE5vZGUqIHBzZXVkb0F3YXJlTGFzdENoaWxk
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEtVUkwgYmFzZVVSSSgpIGNvbnN0OworICAgIHZpcnR1
YWwgVVJMIGJhc2VVUkkoKSBjb25zdDsKICAgICAKLSAgICB2b2lkIGdldFN1YnJlc291cmNlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZvaWQgZ2V0U3VicmVzb3VyY2VVUkxz
KExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIHNob3VsZCBhbGwgYWN0
dWFsbHkgcmV0dXJuIGEgbm9kZSwgYnV0IHRoaXMgaXMgb25seSBpbXBvcnRhbnQgZm9yIGxhbmd1
YWdlIGJpbmRpbmdzLAogICAgIC8vIHdoaWNoIHdpbGwgYWxyZWFkeSBrbm93IGFuZCBob2xkIGEg
cmVmIG9uIHRoZSByaWdodCBub2RlIHRvIHJldHVybi4gUmV0dXJuaW5nIGJvb2wgYWxsb3dzCkBA
IC02NjQsNyArNjY0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCk7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0IHsgfQogCiAgICAgYm9vbCBoYXNSYXJlRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoSGFzUmFyZURhdGFGbGFnKTsgfQogCkBAIC03MzcsNyArNzM3LDcgQEAg
cHJvdGVjdGVkOgogfTsKIAogLy8gVXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoKSBhbmQgaW4gYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoKQotaW5saW5lIHZvaWQgYWRk
U3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkK
K2lubGluZSB2b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNoU2V0PFVSTD4mIHVybHMsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzTnVsbCgpKQogICAgICAgICB1cmxzLmFk
ZCh1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApp
bmRleCBlMjg4MjU5M2JiZDFhYzI0ZGYwNGFhZjViODk0YzE3NjIxYjE4ZDY0Li41MTA4OTFmMWNi
MjZkZjgxYWQyZTMyNTdmZGQ4ZDIyY2EzNjI2YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgUHJvY2Vz
c2luZ0luc3RydWN0aW9uOjpjaGVja1N0eWxlU2hlZXQoKQogICAgICAgICAgICAgLy8gV2UgbmVl
ZCB0byBtYWtlIGEgc3ludGhldGljIFhTTFN0eWxlU2hlZXQgdGhhdCBpcyBlbWJlZGRlZC4gIEl0
IG5lZWRzIHRvIGJlIGFibGUKICAgICAgICAgICAgIC8vIHRvIGtpY2sgb2ZmIGltcG9ydC9pbmNs
dWRlIGxvYWRzIHRoYXQgY2FuIGhhbmcgb2ZmIHNvbWUgcGFyZW50IHNoZWV0LgogICAgICAgICAg
ICAgaWYgKG1faXNYU0wpIHsKLSAgICAgICAgICAgICAgICBLVVJMIGZpbmFsVVJMKFBhcnNlZFVS
TFN0cmluZywgbV9sb2NhbEhyZWYpOworICAgICAgICAgICAgICAgIFVSTCBmaW5hbFVSTChQYXJz
ZWRVUkxTdHJpbmcsIG1fbG9jYWxIcmVmKTsKICAgICAgICAgICAgICAgICBtX3NoZWV0ID0gWFNM
U3R5bGVTaGVldDo6Y3JlYXRlRW1iZWRkZWQodGhpcywgZmluYWxVUkwpOwogICAgICAgICAgICAg
ICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTg4LDcgKzE4OCw3IEBA
IGJvb2wgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzaGVldExvYWRlZCgpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChj
b25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hh
cnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpCit2b2lkIFByb2Nlc3NpbmdJ
bnN0cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNo
ZWV0KiBzaGVldCkKIHsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkgewogICAgICAgICBBU1NFUlQo
IW1fc2hlZXQpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9u
OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzCiB9
CiAKICNpZiBFTkFCTEUoWFNMVCkKLXZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiBzaGVldCkKK3ZvaWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRYU0xTdHlsZVNo
ZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcm
IHNoZWV0KQogewogICAgIEFTU0VSVChtX2lzWFNMKTsKICAgICBtX3NoZWV0ID0gWFNMU3R5bGVT
aGVldDo6Y3JlYXRlKHRoaXMsIGhyZWYsIGJhc2VVUkwpOwpAQCAtMjU0LDcgKzI1NCw3IEBAIHZv
aWQgUHJvY2Vzc2luZ0luc3RydWN0aW9uOjpzZXRDU1NTdHlsZVNoZWV0KFBhc3NSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gc2hlZXQpCiAgICAgc2hlZXQtPnNldERpc2FibGVkKG1fYWx0ZXJuYXRlKTsK
IH0KIAotdm9pZCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb246OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJs
cykgY29uc3QKIHsKICAgICBpZiAoIXNoZWV0KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaAppbmRleCBkYjI5NDUyMGE5OGRmMzNj
MzI4NmE0Y2E0ODQxMjhkOWQ5OTkzYWFiLi40NzE5Njk5MmNkOWEwOTBlZTMzNmMxZGIzZjhjZTVk
YjQ0NGFlZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
CkBAIC02NCwxNSArNjQsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZy
b20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgdm9pZCBjaGVja1N0eWxlU2hlZXQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYs
IGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVk
Q1NTU3R5bGVTaGVldCopOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKICNpZiBFTkFCTEUoWFNMVCkKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRYU0xT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIHNoZWV0KTsKICNlbmRpZgogCiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBj
b25zdDsKIAogICAgIHZvaWQgcGFyc2VTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc2hlZXQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXgg
OTAwMjBlYmI1OTU1NTE0ZTk3NGQzZDkzZDM3YWJjMWQwNzExYzM3NS4uZjc0OGFjOWUwZjk1MDRi
OTkzMWU3MmE5ZTU5ZWU1NzMyMWE4ZDQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6Y2xvc2VNZXNzYWdlUG9ydHMoKSB7CiAKIGJvb2wgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c2FuaXRpemVTY3JpcHRFcnJvcihTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
JiBsaW5lTnVtYmVyLCBpbnQmIGNvbHVtbk51bWJlciwgU3RyaW5nJiBzb3VyY2VVUkwsIENhY2hl
ZFNjcmlwdCogY2FjaGVkU2NyaXB0KQogewotICAgIEtVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVV
Ukwoc291cmNlVVJMKTsKKyAgICBVUkwgdGFyZ2V0VVJMID0gY29tcGxldGVVUkwoc291cmNlVVJM
KTsKICAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdCh0YXJnZXRVUkwpIHx8IChj
YWNoZWRTY3JpcHQgJiYgY2FjaGVkU2NyaXB0LT5wYXNzZXNBY2Nlc3NDb250cm9sQ2hlY2soc2Vj
dXJpdHlPcmlnaW4oKSkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZXJyb3JNZXNzYWdl
ID0gIlNjcmlwdCBlcnJvci4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggYTllOWUzYjliZjdkYjEyYjQ4ODU1MTBmMWZlYjA2YWMzM2ZmNDM2ZC4u
MWMzZWNjY2M0OTAyMTc3NzVlZjc4MzhjNTM1MmU1ZjQ4NmRlMjc0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlDb250
ZXh0LmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgpAQCAtNjYsMTAgKzY2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNDb250
ZXh0VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBjb25zdCBLVVJM
JiB1cmwoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYgdXJsKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBVUkwmIHVybCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29u
c3QgPSAwOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwmKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuY3BwCmluZGV4IDc0
ZDNlM2IwMDM3NWMzOGRiYTJmZmM3MWMwMDk5YWZjNDMxODA4OTUuLmQ4M2ZkZjIyYzdlZjJiYjRm
NGMzZDgxOTdjMjhjNDJiNmNiNGViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWN1cml0eUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRl
eHQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3koUGFzc093blB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+CiAgICAgbV9j
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiB9CiAKLWJvb2wg
U2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJiB1cmwpIGNv
bnN0Citib29sIFNlY3VyaXR5Q29udGV4dDo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiB7CiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBpbml0aWFsaXplZCBvdXIgc2Vj
dXJpdHkgb3JpZ2luIGJ5IG5vdywgdGhpcyBpcyBwcm9iYWJseQogICAgIC8vIGEgbmV3IHdpbmRv
dyBjcmVhdGVkIHZpYSB0aGUgQVBJIChpLmUuLCB0aGF0IGxhY2tzIGFuIG9yaWdpbiBhbmQgbGFj
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAppbmRleCAzMmFlMGRmOTk0MzlmY2Y1
ZWQ4NmZjNGY1ZTgxM2QzYTgyMmVmNzkxLi4yZGI1ZDBkMjk2Mjc2MjE4ODlhY2M3ODE4Nzk2MmVj
Njc5NjNkYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFz
cyBDb250ZW50U2VjdXJpdHlQb2xpY3k7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBlbnVt
IFNhbmRib3hGbGFnIHsKICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dl
Yi1hcHBzL2N1cnJlbnQtd29yay8jYXR0ci1pZnJhbWUtc2FuZGJveCBmb3IgYSBsaXN0IG9mIHRo
ZSBzYW5kYm94IGZsYWdzLgpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgU2FuZGJveEZs
YWdzIHNhbmRib3hGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzOyB9CiAgICAg
Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQb2xpY3koKSB7IHJldHVybiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeS5nZXQoKTsgfQogCi0gICAgYm9vbCBpc1NlY3VyZVRyYW5z
aXRpb25Ubyhjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25U
byhjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5k
Ym94RmxhZ3MgbWFzayk7CiAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5kYm94RmxhZ3MgbWFzaykg
Y29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKaW5kZXggZTQ1ZmI4MDNhYWViNjdhNmFmMDcwNmJlYjI0YzM5ZTAyMTc0
NmVkYy4uOWNjM2VmODQ0MDYxMDQ5YjU2NmY1OTNhMWY1MjM3NDRmNDhjYjFmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgU3R5bGVk
RWxlbWVudDo6cmVtb3ZlQWxsSW5saW5lU3R5bGVQcm9wZXJ0aWVzKCkKICAgICBpbmxpbmVTdHls
ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIFN0eWxlZEVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBj
b25zdAogewogICAgIGlmIChjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGVs
ZW1lbnREYXRhKCkgPyBlbGVtZW50RGF0YSgpLT5pbmxpbmVTdHlsZSgpIDogMCkKICAgICAgICAg
aW5saW5lU3R5bGUtPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIGRvY3VtZW50KCkuZWxl
bWVudFNoZWV0KCkuY29udGVudHMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRl
eCAwY2MwYjkyMDU3Y2I3OTVlMDYzYmY2ODY3MzVjODVhYjgxN2ExNzgyLi4xOGM2ZTk5YzZmNzBk
YjU5NjM0MDRiNzMwZDE3YjdlMTY2NTk5NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJv
cGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKICAg
ICB2b2lkIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShNdXRhYmxlU3R5
bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHZvaWQgc3R5bGVB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcsIEF0dHJp
YnV0ZU1vZGlmaWNhdGlvblJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
ZWI2Zjg2NGRhMjllNmJkMDJhM2Q4MGIyMWMxNjM2OWQxZTQ1Njg5YS4uYTMwNGI5M2M1ZWY3MmIx
YWNhNGRhYmZkM2IzMWQ3NTU5YjU3NzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtMTE3NCwxMiArMTE3NCwxMiBAQCB2b2lkIEVkaXRvcjo6c2ltcGxpZnlNYXJrdXAoTm9kZSog
c3RhcnROb2RlLCBOb2RlKiBlbmROb2RlKQogICAgIGFwcGx5Q29tbWFuZChTaW1wbGlmeU1hcmt1
cENvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydE5vZGUsIChlbmROb2RlKSA/IE5vZGVU
cmF2ZXJzYWw6Om5leHQoZW5kTm9kZSkgOiAwKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpjb3B5VVJM
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgRWRpdG9yOjpjb3B5
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIGNvcHlVUkwo
dXJsLCB0aXRsZSwgKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSgpKTsKIH0KIAot
dm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQordm9pZCBFZGl0b3I6OmNvcHlVUkwoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAg
ICAgUGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMOwogICAgIHBhc3RlYm9hcmRVUkwudXJsID0g
dXJsOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBFZGl0b3I6OmNvcHlJbWFnZShjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICBLVVJMIHVybCA9IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAgICBVUkwgdXJs
ID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAg
ICAgICB1cmwgPSByZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuaAppbmRleCBhYjA5ZWJiYTBmNTA2OTVlZTA5MzEzNTdjYTg2OGJmM2E3ZWJhOTZjLi5iNWFm
Nzc0MTg2MjQ0Mzk1OTJjOWRlZTYxMzkwMmVjYTE4YWZiNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKQEAgLTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5U
ZXh0KCk7CiAgICAgdm9pZCBwZXJmb3JtRGVsZXRlKCk7CiAKLSAgICB2b2lkIGNvcHlVUkwoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgY29weVVSTChjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOworICAgIHZvaWQgY29weVVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICB2b2lkIGNvcHlVUkwoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUGFzdGVib2FyZCYpOwogICAgIHZvaWQgY29w
eUltYWdlKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKIAogICAgIFN0cmluZyByZWFkUGxhaW5UZXh0
RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHB1YmxpYzoK
IAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgd3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwotICAgIHZvaWQgd3JpdGVJbWFnZVRvUGFz
dGVib2FyZChQYXN0ZWJvYXJkJiwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgdm9pZCB3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmLCBFbGVtZW50JiBpbWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDlkZjU5NTI0OTczNWYzY2VkYTdlMDg0MmNjZmM2
OTMwMWY3MzBkMGMuLjVlOGFiZDQ0Nzk0ZTM1ZDYxODZiYjQ0ZThmYWE2ZjI3YTk3ZTYwOGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNpbmNsdWRlICJYTUxOU05hbWVzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcAppbmRleCBmYzc4MWMyYmQ2ZmU2NDMzYTBhMmY0
ODk1M2MwNWI3MzA5NWY3NDQ4Li5mMzUwOWUyYzY3YjMyZmVlMzVlMWFlYTg1MGU4OGEzODNiZTAx
OWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKQEAgLTM3LDcg
KzM3LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9h
cmQmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdl
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmLCBFbGVtZW50JiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYpCit2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiwg
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBmZDdm
MGFjOWJjYzI4ODhmNjBjNGJhZTlkZmEzYmI3ZWE1YjhmNmZjLi40NGFiNWJiZTU1Yzk3NDY5YTk0
NGU1Y2FiZjk2MzZjZTMyMThhYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tCkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIHZvaWQgZ2V0SW1hZ2UoRWxlbWVudCYg
aW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2UqJgogICAgIGNh
Y2hlZEltYWdlID0gdGVudGF0aXZlQ2FjaGVkSW1hZ2U7CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0
ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdl
RWxlbWVudCwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCit2b2lkIEVkaXRvcjo6
d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBp
bWFnZUVsZW1lbnQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgUGFz
dGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCmluZGV4IGJmYjZhNDY3OTFhZmU4MTQ2OGNhN2U2ZDY1ZDMwODU0MzU2N2Iz
Y2QuLmRkNDQzNjM3YzlkNjY4ZDJjZjY4MTAwZjgzNTBjZDBlMGQyYjI4YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTM4Niw3ICszODYsNyBAQCBTdHJpbmcg
RWRpdG9yOjpwbGFpblRleHRGcm9tUGFzdGVib2FyZChjb25zdCBQYXN0ZWJvYXJkUGxhaW5UZXh0
JiB0ZXh0KQogICAgIFN0cmluZyBzdHJpbmcgPSB0ZXh0LnRleHQ7CiAKICAgICAvLyBGSVhNRTog
SXQncyBub3QgY2xlYXIgdGhpcyBpcyAxMDAlIGNvcnJlY3Qgc2luY2Ugd2Uga25vdyAtW05TVVJM
IFVSTFdpdGhTdHJpbmc6XSBkb2VzIG5vdCBoYW5kbGUKLSAgICAvLyBhbGwgdGhlIHNhbWUgY2Fz
ZXMgd2UgaGFuZGxlIHdlbGwgaW4gdGhlIEtVUkwgY29kZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwu
CisgICAgLy8gYWxsIHRoZSBzYW1lIGNhc2VzIHdlIGhhbmRsZSB3ZWxsIGluIHRoZSBVUkwgY29k
ZSBmb3IgY3JlYXRpbmcgYW4gTlNVUkwuCiAgICAgaWYgKHRleHQuaXNVUkwpCiAgICAgICAgIHN0
cmluZyA9IGNsaWVudCgpLT51c2VyVmlzaWJsZVN0cmluZyhbTlNVUkwgVVJMV2l0aFN0cmluZzpz
dHJpbmddKTsKIApAQCAtMzk0LDcgKzM5NCw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZy
b21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgcmV0dXJu
IFsoTlNTdHJpbmcgKilzdHJpbmcgcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGlu
Z107CiB9CiAKLXZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
IHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQordm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFz
dGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2Fy
ZEltYWdlOwogCkBAIC00MzcsNyArNDM3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
cmVhZFJURkQoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFJURihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVhZFVS
TChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgcmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIH07CiAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFdlYkFyY2hp
dmUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcikKICAgICBpZiAoIWZyYW1lLmRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBhcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEtVUkwoKSwgYnVmZmVyLmdl
dCgpKTsKKyAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gYXJjaGl2ZSA9IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZShVUkwoKSwgYnVmZmVyLmdldCgpKTsKICAgICBpZiAoIWFyY2hpdmUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTM1LDEzICs1MzUsMTMgQEAgYm9vbCBFZGl0b3I6
OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyLCBjb25zdAogICAgIEFTU0VSVCh0eXBlLmNvbnRhaW5zKCcvJykpOwogICAgIFN0cmluZyB0
eXBlQXNGaWxlbmFtZVdpdGhFeHRlbnNpb24gPSB0eXBlOwogICAgIHR5cGVBc0ZpbGVuYW1lV2l0
aEV4dGVuc2lvbi5yZXBsYWNlKCcvJywgJy4nKTsKLSAgICBLVVJMIGltYWdlVVJMID0gS1VSTChL
VVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
ICsgJy8nICsgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKKyAgICBVUkwgaW1hZ2VVUkwg
PSBVUkwoVVJMKCksICJ3ZWJraXQtZmFrZS11cmw6Ly8iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpICsgJy8nICsgdHlwZUFzRmlsZW5hbWVXaXRoRXh0ZW5zaW9uKTsKIAogICAgIGZyYWdt
ZW50ID0gZnJhbWUuZWRpdG9yKCkuY3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRk
UmVzb3VyY2UoQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoYnVmZmVyLCBpbWFnZVVSTCwgdHlwZSwg
ZW1wdHlTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSkpOwogICAgIHJldHVybiBmcmFnbWVudDsKIH0K
IAotYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlKQorYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYgKHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAppbmRleCBkMmZmZjhjN2UyMzdlYmMzMzY5MDQyM2ZiNzE0MTZiYzUwMTA5
YTY3Li41MWVmM2YyZWM5ZWVkMjBiZjc4MDM4MzE2Y2M0MjFiMjZmMTY0NjU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCkBAIC00OCw3ICs0OCw3IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJNYXJrdXBBY2N1bXVsYXRvci5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMg
dm9pZCBjb21wbGV0ZVVSTHMoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCkKIHsKICAgICBWZWN0b3I8QXR0cmlidXRlQ2hhbmdlPiBjaGFuZ2VzOwogCi0g
ICAgS1VSTCBwYXJzZWRCYXNlVVJMKFBhcnNlZFVSTFN0cmluZywgYmFzZVVSTCk7CisgICAgVVJM
IHBhcnNlZEJhc2VVUkwoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKIAogICAgIGZvciAoYXV0
byBlbGVtZW50ID0gZWxlbWVudERlc2NlbmRhbnRzKGZyYWdtZW50KS5iZWdpbigpLCBlbmQgPSBl
bGVtZW50RGVzY2VuZGFudHMoZnJhZ21lbnQpLmVuZCgpOyBlbGVtZW50ICE9IGVuZDsgKytlbGVt
ZW50KSB7CiAgICAgICAgIGlmICghZWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQpAQCAtMTA5LDcg
KzEwOSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlVVJMcyhEb2N1bWVudEZyYWdtZW50KiBmcmFn
bWVudCwgY29uc3QgU3RyaW5nJiBiYXNlVVJMKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmli
dXRlID0gZWxlbWVudC0+YXR0cmlidXRlQXQoaSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+
aXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKEF0dHJpYnV0ZUNoYW5nZSgmKmVsZW1l
bnQsIGF0dHJpYnV0ZS5uYW1lKCksIEtVUkwocGFyc2VkQmFzZVVSTCwgYXR0cmlidXRlLnZhbHVl
KCkpLnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlcy5hcHBlbmQoQXR0cmlidXRl
Q2hhbmdlKCYqZWxlbWVudCwgYXR0cmlidXRlLm5hbWUoKSwgVVJMKHBhcnNlZEJhc2VVUkwsIGF0
dHJpYnV0ZS52YWx1ZSgpKS5zdHJpbmcoKSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03MjMs
NyArNzIzLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXBXaXRoQ29udGV4dChEb2N1bWVudCogZG9jdW0KICAgICB0YWdnZWRNYXJrdXAuYXBw
ZW5kKG1hcmt1cC5zdWJzdHJpbmcoZnJhZ21lbnRFbmQpKTsKIAogICAgIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiB0YWdnZWRGcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1
bWVudCwgdGFnZ2VkTWFya3VwLnRvU3RyaW5nKCksIGJhc2VVUkwsIHBhcnNlckNvbnRlbnRQb2xp
Y3kpOwotICAgIFJlZlB0cjxEb2N1bWVudD4gdGFnZ2VkRG9jdW1lbnQgPSBEb2N1bWVudDo6Y3Jl
YXRlKDAsIEtVUkwoKSk7CisgICAgUmVmUHRyPERvY3VtZW50PiB0YWdnZWREb2N1bWVudCA9IERv
Y3VtZW50OjpjcmVhdGUoMCwgVVJMKCkpOwogICAgIHRhZ2dlZERvY3VtZW50LT50YWtlQWxsQ2hp
bGRyZW5Gcm9tKHRhZ2dlZEZyYWdtZW50LmdldCgpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBub2Rl
QmVmb3JlQ29udGV4dDsKQEAgLTk1Miw3ICs5NTIsNyBAQCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1
cChjb25zdCBSYW5nZSogcmFuZ2UpCiAgICAgcmV0dXJuIGRvY3VtZW50VHlwZVN0cmluZyhub2Rl
LT5kb2N1bWVudCgpKSArIGNyZWF0ZU1hcmt1cChyYW5nZSwgMCwgQW5ub3RhdGVGb3JJbnRlcmNo
YW5nZSk7CiB9CiAKLVN0cmluZyB1cmxUb01hcmt1cChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCitTdHJpbmcgdXJsVG9NYXJrdXAoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUpCiB7CiAgICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7CiAgICAgbWFya3VwLmFw
cGVuZCgiPGEgaHJlZj1cIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggY2ExMjBhNDcy
Y2U4MmVhZmJkMzBjZTMyN2Y0YWRiMjA0ZDU0ZDZmZS4uMTU2NWJhMTYyYTQzNGFiZTVkZTgzZTlj
OGQ5NjdmMTc0ZmM3MjBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC0zOCw3ICszOCw3
IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBO
b2RlOwogY2xhc3MgUXVhbGlmaWVkTmFtZTsKIGNsYXNzIFJhbmdlOwpAQCAtNzAsNyArNzAsNyBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVk
ZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gMAogU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3Qg
Tm9kZSopOwogU3RyaW5nIGNyZWF0ZUZ1bGxNYXJrdXAoY29uc3QgUmFuZ2UqKTsKIAotU3RyaW5n
IHVybFRvTWFya3VwKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKK1N0cmluZyB1
cmxUb01hcmt1cChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAogU3RyaW5nIGRv
Y3VtZW50VHlwZVN0cmluZyhjb25zdCBEb2N1bWVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggNjQyNTI2NzBkMmE1OGFiMGEwYzAwMGIyNjlh
ZDhlMDU3NDAzY2MyNS4uYzZiNDhkYWZjMWJlMzU0YzBhNzI0Yjc5ODYyNTIwZTRjNTFlMDhkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMjAzLDEy
ICsyMDMsMTIgQEAgc3RhdGljIHZvaWQgZGlkV3JpdGUoQXN5bmNGaWxlU3RyZWFtKiBwcm94eSwg
aW50IGJ5dGVzV3JpdHRlbikKICAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRXcml0ZShieXRl
c1dyaXR0ZW4pOwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYg
YmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQordm9pZCBBc3luY0ZpbGVT
dHJlYW06OndyaXRlKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKQogewogICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlRmlsZVRocmVhZFRh
c2sodGhpcywgJkFzeW5jRmlsZVN0cmVhbTo6d3JpdGVPbkZpbGVUaHJlYWQsIGJsb2JVUkwsIHBv
c2l0aW9uLCBsZW5ndGgpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlT25GaWxl
VGhyZWFkKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0
aCkKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjp3cml0ZU9uRmlsZVRocmVhZChjb25zdCBVUkwmIGJs
b2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCkKIHsKICAgICBpbnQgYnl0ZXNX
cml0dGVuID0gbV9zdHJlYW0tPndyaXRlKGJsb2JVUkwsIHBvc2l0aW9uLCBsZW5ndGgpOwogICAg
IGNhbGxPbk1haW5UaHJlYWQoZGlkV3JpdGUsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IGJ5dGVzV3JpdHRlbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaApp
bmRleCA2OGYyM2U5OWMwYWZkZTQ2YjAzMTRiNjhlODY2ZjY1YmM5NjQwMDFjLi44NDllYTJiYzk0
NzI0MDVmYjA0ZDVhNzE2ZDU2OTZhMmM3ZDU4M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBGaWxlU3RyZWFtQ2xpZW50OwogY2xhc3MgRmlsZVN0cmVhbTsKLWNsYXNzIEtVUkw7
CitjbGFzcyBVUkw7CiAKIGNsYXNzIEFzeW5jRmlsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVk
PEFzeW5jRmlsZVN0cmVhbT4gewogcHVibGljOgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKICAgICB2b2lkIGNsb3Nl
KCk7CiAgICAgdm9pZCByZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCk7Ci0gICAgdm9pZCB3
cml0ZShjb25zdCBLVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgp
OworICAgIHZvaWQgd3JpdGUoY29uc3QgVVJMJiBibG9iVVJMLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpOwogICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25nIHBvc2l0aW9uKTsKIAog
ICAgIC8vIFN0b3BzIHRoZSBwcm94eSBhbmQgc2NoZWR1bGVzIGl0IHRvIGJlIGRlc3RydWN0ZWQu
IEFsbCB0aGUgcGVuZGluZyB0YXNrcyB3aWxsIGJlIGFib3J0ZWQgYW5kIHRoZSBmaWxlIHN0cmVh
bSB3aWxsIGJlIGNsb3NlZC4KQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG9w
ZW5Gb3JXcml0ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIHZvaWQgY2xv
c2VPbkZpbGVUaHJlYWQoKTsKICAgICB2b2lkIHJlYWRPbkZpbGVUaHJlYWQoY2hhciogYnVmZmVy
LCBpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFkKGNvbnN0IEtVUkwmIGJs
b2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0aCk7CisgICAgdm9pZCB3cml0ZU9u
RmlsZVRocmVhZChjb25zdCBVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxl
bmd0aCk7CiAgICAgdm9pZCB0cnVuY2F0ZU9uRmlsZVRocmVhZChsb25nIGxvbmcgcG9zaXRpb24p
OwogCiAgICAgUmVmUHRyPEZpbGVTdHJlYW0+IG1fc3RyZWFtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggYzAzNzg0ZjQzMDZiYTZkMDZlOTI3MTBiN2FkMzk2YTU5MjY0ZjVlNy4uNDU0NzE4
MDdhOGZjMzBhZWNlNTlhNTZmZDY0OTY1ZjFmZmI3NWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC01NCwyMCArNTQsMjAgQEAgZW51bSBTbGljZUhpc3RvZ3JhbUVudW0gewogCiBjbGFz
cyBCbG9iVVJMUmVnaXN0cnkgOiBwdWJsaWMgVVJMUmVnaXN0cnkgewogcHVibGljOgotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBVUkxS
ZWdpc3RyYWJsZSopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNv
bnN0IEtVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBVUkwmLCBVUkxSZWdpc3RyYWJsZSopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogCiAgICAgc3Rh
dGljIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpOwogfTsKIAogCi12b2lkIEJsb2JVUkxSZWdpc3Ry
eTo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgcHVibGlj
VVJMLCBVUkxSZWdpc3RyYWJsZSogYmxvYikKK3ZvaWQgQmxvYlVSTFJlZ2lzdHJ5OjpyZWdpc3Rl
clVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBVUkwmIHB1YmxpY1VSTCwgVVJMUmVn
aXN0cmFibGUqIGJsb2IpCiB7CiAgICAgQVNTRVJUKCZibG9iLT5yZWdpc3RyeSgpID09IHRoaXMp
OwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChvcmlnaW4sIHB1
YmxpY1VSTCwgc3RhdGljX2Nhc3Q8QmxvYio+KGJsb2IpLT51cmwoKSk7CiB9CiAKLXZvaWQgQmxv
YlVSTFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQmxvYlVS
TFJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKHVybCk7CiB9CkBAIC0xMDAsNyArMTAw
LDcgQEAgQmxvYjo6QmxvYihQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSwgbG9uZyBsb25n
IHNpemUpCiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50
ZXJuYWxVUkwsIGJsb2JEYXRhKTsKIH0KIAotQmxvYjo6QmxvYihjb25zdCBLVVJMJiBzcmNVUkws
IGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCitCbG9iOjpCbG9iKGNvbnN0IFVS
TCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQogICAgIDogbV90
eXBlKEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSkKICAgICAsIG1fc2l6ZShzaXpl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCAyMWIzMWI0MTNhY2Y3ZTQ4Y2Y5MjViZTkyZjFi
YjUwMmNkZDY0ZGYxLi4wMzU5ZDQyMzA4ODQ0OGQzM2Q2YTVhNDIxZTRlMjJhMTViMGJmNjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuaApAQCAtMzIsNyArMzIsNyBAQAogI2RlZmluZSBCbG9iX2gKIAog
I2luY2x1ZGUgIkJsb2JEYXRhLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIC8vIEZvciBkZXNlcmlhbGl6YXRpb24uCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QmxvYj4gY3JlYXRlKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlLCBs
b25nIGxvbmcgc2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCbG9iPiBjcmVhdGUoY29uc3Qg
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNpemUpCiAgICAgewog
ICAgICAgICBBU1NFUlQoQmxvYjo6aXNOb3JtYWxpemVkQ29udGVudFR5cGUodHlwZSkpOwogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2Ioc3JjVVJMLCB0eXBlLCBzaXplKSk7CkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJsb2IoKTsKIAotICAgIGNvbnN0
IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KKyAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxVUkw7IH0KICAgICBjb25zdCBTdHJp
bmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBsb25nIHNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KG1fc2l6ZSk7IH0KQEAgLTkxLDEyICs5MSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAg
QmxvYihQYXNzT3duUHRyPEJsb2JEYXRhPiwgbG9uZyBsb25nIHNpemUpOwogCiAgICAgLy8gRm9y
IGRlc2VyaWFsaXphdGlvbi4KLSAgICBCbG9iKGNvbnN0IEtVUkwmIHNyY1VSTCwgY29uc3QgU3Ry
aW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CisgICAgQmxvYihjb25zdCBVUkwmIHNyY1VSTCwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSk7CiAKICAgICAvLyBUaGlzIGlzIGFu
IGludGVybmFsIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBvYmplY3QuIEl0IHNlcnZlcwogICAgIC8vIGFzIGFuIGlkZW50aWZpZXIgZm9yIHRoaXMg
YmxvYi4gVGhlIGludGVybmFsIFVSTCBpcyBuZXZlciB1c2VkIHRvIHNvdXJjZSB0aGUgYmxvYidz
IGNvbnRlbnQKICAgICAvLyBpbnRvIGFuIEhUTUwgb3IgZm9yIEZpbGVSZWFkJ2luZywgcHVibGlj
IGJsb2IgVVJMcyBtdXN0IGJlIHVzZWQgZm9yIHRob3NlIHB1cnBvc2VzLgotICAgIEtVUkwgbV9p
bnRlcm5hbFVSTDsKKyAgICBVUkwgbV9pbnRlcm5hbFVSTDsKIAogICAgIFN0cmluZyBtX3R5cGU7
CiAgICAgbG9uZyBsb25nIG1fc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYlVSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCmluZGV4
IDY1OTAwN2IxNDk1ZDFiNzc0ZjU2ZGM3OTlmNzc1N2RkNTA3ZDEyMjQuLjNkZWJmMzgzMWY2ZjBi
MWIyZjUwZWFkZTgwZGE5ZmFiNTVhNjM3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvQmxvYlVSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNw
cApAQCAtMzIsNyArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmxvYlVSTC5oIgogCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAj
aW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDEs
MTggKzQxLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY29uc3QgY2hhciBCbG9iVVJMOjpr
QmxvYlByb3RvY29sW10gPSAiYmxvYiI7CiAKLUtVUkwgQmxvYlVSTDo6Y3JlYXRlUHVibGljVVJM
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKK1VSTCBCbG9iVVJMOjpjcmVhdGVQdWJs
aWNVUkwoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogewogICAgIEFTU0VSVChzZWN1
cml0eU9yaWdpbik7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwoc2VjdXJpdHlPcmlnaW4tPnRv
U3RyaW5nKCkpOwogfQogCi1LVVJMIEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCkKK1VSTCBC
bG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZUJsb2JVUkwo
ImJsb2JpbnRlcm5hbDovLyIpOwogfQogCi1TdHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBCbG9iVVJMOjpnZXRPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjEsNyAr
NjEsNyBAQCBTdHJpbmcgQmxvYlVSTDo6Z2V0T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICBy
ZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4LCBlbmRJbmRleCAtIHN0YXJ0
SW5kZXggLSAxKTsKIH0KIAotU3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIEJsb2JVUkw6OmdldElkZW50aWZpZXIoY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzKGtCbG9iUHJvdG9jb2wpKTsKIApAQCAtNjksMTEg
KzY5LDExIEBAIFN0cmluZyBCbG9iVVJMOjpnZXRJZGVudGlmaWVyKGNvbnN0IEtVUkwmIHVybCkK
ICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZyhzdGFydEluZGV4KTsKIH0KIAotS1VS
TCBCbG9iVVJMOjpjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKQorVVJM
IEJsb2JVUkw6OmNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpCiB7CiAg
ICAgQVNTRVJUKCFvcmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5n
ID0gImJsb2I6IiArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMob3JpZ2luU3RyaW5nKSAr
ICcvJyArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKLSAgICByZXR1cm4gS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybFN0cmluZyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYlVSTC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iVVJMLmgKaW5kZXggMmNhZWMyOTU3ZjZiOWZiYWE0MTZjY2YyZTdhNTFkMmJmNWFmZjlmMC4u
YzdmYTRmZTc0NDc2YzNjNjg5ZTYwMDcyZGM3ZWEzYjI1OGZmZmIyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iVVJMLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgQmxvYlVSTF9oCiAjZGVmaW5l
IEJsb2JVUkxfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDE0ICs0OCwxNCBAQCBjbGFzcyBTZWN1cml0eU9yaWdp
bjsKIC8vIGJlIHVzZWQgd2l0aCBSZXNvdXJjZUhhbmRsZSBvciBGaWxlUmVhZGVyLgogY2xhc3Mg
QmxvYlVSTCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlUHVibGljVVJMKFNlY3Vy
aXR5T3JpZ2luKik7Ci0gICAgc3RhdGljIEtVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBz
dGF0aWMgU3RyaW5nIGdldE9yaWdpbihjb25zdCBLVVJMJik7Ci0gICAgc3RhdGljIFN0cmluZyBn
ZXRJZGVudGlmaWVyKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgVVJMIGNyZWF0ZVB1YmxpY1VS
TChTZWN1cml0eU9yaWdpbiopOworICAgIHN0YXRpYyBVUkwgY3JlYXRlSW50ZXJuYWxVUkwoKTsK
KyAgICBzdGF0aWMgU3RyaW5nIGdldE9yaWdpbihjb25zdCBVUkwmKTsKKyAgICBzdGF0aWMgU3Ry
aW5nIGdldElkZW50aWZpZXIoY29uc3QgVVJMJik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJs
b2JQcm90b2NvbCgpIHsgcmV0dXJuIGtCbG9iUHJvdG9jb2w7IH0KIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgS1VSTCBjcmVhdGVCbG9iVVJMKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nKTsKKyAg
ICBzdGF0aWMgVVJMIGNyZWF0ZUJsb2JVUkwoY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcpOwog
ICAgIHN0YXRpYyBjb25zdCBjaGFyIGtCbG9iUHJvdG9jb2xbXTsKICAgICBCbG9iVVJMKCkgeyB9
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggNTRlNWE5MDAxNmE1MDA3YTU3Y2UwOTRj
MmVmZTY3MmRkZDkyN2ViNi4uNzRiMDFiOGUzZjE4YjA3ODA0NjM0ZjVmZDJjM2IzZmM0NDhiZTJl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBQYXNz
T3duUHRyPEJsb2JEYXRhPiBjcmVhdGVCbG9iRGF0YUZvckZpbGVXaXRoTWV0YWRhdGEoY29uc3Qg
U3RyaW5nJiBmaWxlCiAgICAgcmV0dXJuIGJsb2JEYXRhLnJlbGVhc2UoKTsKIH0KIAotc3RhdGlj
IFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChjb25z
dCBLVVJMJiBmaWxlU3lzdGVtVVJMLCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQorc3Rh
dGljIFBhc3NPd25QdHI8QmxvYkRhdGE+IGNyZWF0ZUJsb2JEYXRhRm9yRmlsZVN5c3RlbVVSTChj
b25zdCBVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7
CiAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKICAg
ICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoZ2V0Q29udGVudFR5cGVGcm9tRmlsZU5hbWUoZmls
ZVN5c3RlbVVSTC5wYXRoKCksIEZpbGU6OldlbGxLbm93bkNvbnRlbnRUeXBlcykpOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHlwZUxv
b2t1cFBvbGljeSBwb2xpY3kpCiB7CiB9CiAKLUZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0ZpbGU6OkZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIDog
QmxvYih1cmwsIHR5cGUsIC0xKQogICAgICwgbV9wYXRoKHBhdGgpCiAjaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQpAQCAtMTQyLDcgKzE0Miw3IEBAIEZpbGU6OkZpbGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogfQogCi1GaWxlOjpGaWxlKGNvbnN0
IEtVUkwmIGZpbGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYgbWV0YWRhdGEpCitGaWxl
OjpGaWxlKGNvbnN0IFVSTCYgZmlsZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRh
ZGF0YSkKICAgICA6IEJsb2IoY3JlYXRlQmxvYkRhdGFGb3JGaWxlU3lzdGVtVVJMKGZpbGVTeXN0
ZW1VUkwsIG1ldGFkYXRhKSwgbWV0YWRhdGEubGVuZ3RoKQogICAgICwgbV9maWxlU3lzdGVtVVJM
KGZpbGVTeXN0ZW1VUkwpCiAgICAgLCBtX3NuYXBzaG90U2l6ZShtZXRhZGF0YS5sZW5ndGgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5oCmluZGV4IGFiZTU1NDRlM2QwNDdiODAwMGE5ZWY5NzQ3NTBiOGMxNWM5
YmYzZmUuLjVlYjZmOWNiYmY1N2FlNDkyYzMyMWJmYjNjMTdhMzZkM2Y5NjkxODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5oCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBGaWxlTWV0YWRhdGE7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBGaWxl
IDogcHVibGljIEJsb2IgewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgLy8gRm9yIGRlc2VyaWFsaXphdGlvbi4KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBLVVJMJiBzcmNVUkwsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBVUkwmIHNyY1VSTCwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIHNyY1VSTCwgdHlwZSkp
OwogICAgIH0KQEAgLTY4LDEyICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZShuYW1lLCBtZXRhZGF0YSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZpbGU+IGNyZWF0ZUZvckZpbGVTeXN0ZW1GaWxlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlPiBj
cmVhdGVGb3JGaWxlU3lzdGVtRmlsZShjb25zdCBVUkwmIHVybCwgY29uc3QgRmlsZU1ldGFkYXRh
JiBtZXRhZGF0YSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZSh1cmws
IG1ldGFkYXRhKSk7CiAgICAgfQogCi0gICAgS1VSTCBmaWxlU3lzdGVtVVJMKCkgY29uc3QgeyBy
ZXR1cm4gbV9maWxlU3lzdGVtVVJMOyB9CisgICAgVVJMIGZpbGVTeXN0ZW1VUkwoKSBjb25zdCB7
IHJldHVybiBtX2ZpbGVTeXN0ZW1VUkw7IH0KICNlbmRpZgogCiAgICAgLy8gQ3JlYXRlIGEgZmls
ZSB3aXRoIGEgbmFtZSBleHBvc2VkIHRvIHRoZSBhdXRob3IgKHZpYSBGaWxlLm5hbWUgYW5kIGFz
c29jaWF0ZWQgRE9NIHByb3BlcnRpZXMpIHRoYXQgZGlmZmVycyBmcm9tIHRoZSBvbmUgcHJvdmlk
ZWQgaW4gdGhlIHBhdGguCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgogICAgIEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50VHlwZUxvb2t1cFBvbGljeSk7CiAKICAgICAvLyBG
b3IgZGVzZXJpYWxpemF0aW9uLgotICAgIEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBL
VVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbnRlbnRUeXBlTG9va3Vw
UG9saWN5KTsKIAogIyBpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAgICAgRmlsZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwotICAgIEZpbGUoY29uc3QgS1VSTCYgZmls
ZVN5c3RlbVVSTCwgY29uc3QgRmlsZU1ldGFkYXRhJik7CisgICAgRmlsZShjb25zdCBVUkwmIGZp
bGVTeXN0ZW1VUkwsIGNvbnN0IEZpbGVNZXRhZGF0YSYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoaXMgaGFzIGEgdmFsaWQgc25hcHNob3QgbWV0YWRhdGEgKGkuZS4gbV9zbmFwc2hvdFNp
emUgPj0gMCkuCiAgICAgYm9vbCBoYXNWYWxpZFNuYXBzaG90TWV0YWRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX3NuYXBzaG90U2l6ZSA+PSAwOyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9uYW1lOwogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIEtVUkwg
bV9maWxlU3lzdGVtVVJMOworICAgIFVSTCBtX2ZpbGVTeXN0ZW1VUkw7CiAKICAgICAvLyBJZiBt
X3NuYXBzaG90U2l6ZSBpcyBuZWdhdGl2ZSAoaW5pdGlhbGl6ZWQgdG8gLTEgYnkgZGVmYXVsdCks
IHRoZSBzbmFwc2hvdCBtZXRhZGF0YSBpcyBpbnZhbGlkIGFuZCB3ZSByZXRyaWV2ZSB0aGUgbGF0
ZXN0IG1ldGFkYXRhIHN5bmNocm9ub3VzbHkgaW4gc2l6ZSgpLCBsYXN0TW9kaWZpZWRUaW1lKCkg
YW5kIHNsaWNlKCkuCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc25hcHNob3QgbWV0YWRhdGEgYXJl
IHVzZWQgZGlyZWN0bHkgaW4gdGhvc2UgbWV0aG9kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggMjRmMWU3ZjFiZGE4NmEzNDc3NzE4ZjE3MWFmMDcyY2Jl
YzlmOTUzNS4uODBlMTM0M2ZmMTdhMmQ3MmIzMmUxM2IzNDViYjdkYzk0YTk0MDZhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpZiBFTkFCTEUoQkxPQikKIAogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAgIFRleHRFbmNvZGluZyBtX2VuY29kaW5n
OwogICAgIFN0cmluZyBtX2RhdGFUeXBlOwogCi0gICAgS1VSTCBtX3VybEZvclJlYWRpbmc7Cisg
ICAgVVJMIG1fdXJsRm9yUmVhZGluZzsKICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9s
b2FkZXI7CiAKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9yYXdEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKaW5kZXgg
MTBiZmIyZWUwZWFhNzA2NGZjN2YzNzE5MWEzNmI3YmVlM2VlYzZiZS4uMjBkY2RkNzE2MzFiMzEy
Y2Q4ZWVhMmVlYTA1OTcyMDE4NDc2OGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCkBAIC00OSwyNiArNDksMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IEJsb2JSZWdpc3RyeUNvbnRleHQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3Qg
S1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKKyAgICBCbG9iUmVnaXN0
cnlDb250ZXh0KGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkK
ICAgICAgICAgOiB1cmwodXJsLmNvcHkoKSkKICAgICAgICAgLCBibG9iRGF0YShibG9iRGF0YSkK
ICAgICB7CiAgICAgICAgIHRoaXMtPmJsb2JEYXRhLT5kZXRhY2hGcm9tQ3VycmVudFRocmVhZCgp
OwogICAgIH0KIAotICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBLVVJMJiBzcmNVUkwpCisgICAgQmxvYlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiBzcmNVUkwpCiAgICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgICAgICwg
c3JjVVJMKHNyY1VSTC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEJsb2JSZWdpc3RyeUNv
bnRleHQoY29uc3QgS1VSTCYgdXJsKQorICAgIEJsb2JSZWdpc3RyeUNvbnRleHQoY29uc3QgVVJM
JiB1cmwpCiAgICAgICAgIDogdXJsKHVybC5jb3B5KCkpCiAgICAgewogICAgIH0KIAotICAgIEtV
UkwgdXJsOwotICAgIEtVUkwgc3JjVVJMOworICAgIFVSTCB1cmw7CisgICAgVVJMIHNyY1VSTDsK
ICAgICBPd25QdHI8QmxvYkRhdGE+IGJsb2JEYXRhOwogfTsKIApAQCAtODcsNyArODcsNyBAQCBz
dGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCiAgICAgYmxvYlJl
Z2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJl
Z2lzdHJ5Q29udGV4dC0+YmxvYkRhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRy
PEJsb2JEYXRhPiBibG9iRGF0YSkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkK
IHsKICAgICBpZiAoaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lz
dGVyQmxvYlVSTCh1cmwsIGJsb2JEYXRhKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9p
ZCByZWdpc3RlckJsb2JVUkxGcm9tVGFzayh2b2lkKiBjb250ZXh0KQogICAgIGJsb2JSZWdpc3Ry
eSgpLnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJsb2JSZWdpc3Ry
eUNvbnRleHQtPnNyY1VSTCk7CiB9CiAKLXZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgS1VSTCYgc3JjVVJMKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYg
c3JjVVJMKQogewogICAgIC8vIElmIHRoZSBibG9iIFVSTCBjb250YWlucyBudWxsIG9yaWdpbiwg
YXMgaW4gdGhlIGNvbnRleHQgd2l0aCB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIGZpbGUgVVJM
LCBzYXZlIHRoZSBtYXBwaW5nIGJldHdlZW4gdXJsIGFuZCBvcmlnaW4gc28gdGhhdCB0aGUgb3Jp
Z2luIGNhbiBiZSByZXRyaXZlZCB3aGVuIGRvaW5nIHNlY3VyaXR5IG9yaWdpbiBjaGVjay4KICAg
ICBpZiAob3JpZ2luICYmIEJsb2JVUkw6OmdldE9yaWdpbih1cmwpID09ICJudWxsIikKQEAgLTEy
Myw3ICsxMjMsNyBAQCBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTFRhc2sodm9pZCogY29u
dGV4dCkKICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlD
b250ZXh0LT51cmwpOwogfQogCi12b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEJsb2JVUkw6Omdl
dE9yaWdpbih1cmwpID09ICJudWxsIikKICAgICAgICAgb3JpZ2luTWFwKCktPnJlbW92ZSh1cmwu
c3RyaW5nKCkpOwpAQCAtMTM2LDI2ICsxMzYsMjYgQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgfQogfQogCi1QYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpnZXRDYWNoZWRP
cmlnaW4oY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogewogICAg
IHJldHVybiBvcmlnaW5NYXAoKS0+Z2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKICNlbHNlCiAKLXZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBQ
YXNzT3duUHRyPEJsb2JEYXRhPikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KQogewogfQogCi12b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbios
IGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJikK
IHsKIH0KIAotdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChj
b25zdCBLVVJMJikKK3ZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckJsb2JV
UkwoY29uc3QgVVJMJikKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2luKGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6Z2V0Q2FjaGVkT3JpZ2lu
KGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCmluZGV4IGY2NmJkMTBjNGViN2IzNTYxYWMz
ZDUzMDdhZmEwMjY0YmZiOTU1MTIuLjgzZTU1Y2M3YTdhNTY2YTk2MTBiODdmODI3YWQxZDFjY2Nh
NmRmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JS
ZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdp
c3RyeS5oCkBAIC0zNywxOCArMzcsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
QmxvYkRhdGE7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGNsYXNzIFRocmVhZGFibGVCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pOwot
ICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJiBzcmNVUkwpOwotICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pOworICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxv
YlVSTChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAg
ICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIG9yaWdpbiBmb3IgdGhlIGdpdmVuIGJsb2IgVVJMLiBUaGlzIGlzIGJlY2F1c2Ug
d2UgYXJlIG5vdCBhYmxlIHRvIGVtYmVkIHRoZSB1bmlxdWUgc2VjdXJpdHkgb3JpZ2luIG9yIHRo
ZSBvcmlnaW4gb2YgZmlsZSBVUkwKICAgICAvLyBpbiB0aGUgYmxvYiBVUkwuCi0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBLVVJMJik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihj
b25zdCBVUkwmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggOWY0ODY0YjFkZDY1YWI0MTMyMDIzNDBiMTc1ZmY2
Y2FkYzExY2M2My4uZWQxMzVhNzFlYzg1MzdhZGYyNDU2ZGMxMzYxMjgxOGU3MzUzZDNmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2
b2lkIENhY2hlZEZyYW1lOjpjbGVhcigpCiAgICAgbV9kb2N1bWVudCA9IDA7CiAgICAgbV92aWV3
ID0gMDsKICAgICBtX21vdXNlUHJlc3NOb2RlID0gMDsKLSAgICBtX3VybCA9IEtVUkwoKTsKKyAg
ICBtX3VybCA9IFVSTCgpOwogCiAgICAgbV9jYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5jbGVhcigp
OwogICAgIG1fY2FjaGVkRnJhbWVTY3JpcHREYXRhLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmgKaW5kZXggOTgzOGY3M2M0YmUyMmZmNWY3N2UzNGUxZTYyYjQ2ZDM2NzUy
NTk1Mi4uMzg2NGNhNDcyYmJjNzc4MDFjNGNiOGIzODIwNDE4ZGVlMDQ0ZjM0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBDYWNo
ZWRGcmFtZV9oCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fZG9jdW1lbnQuZ2V0KCk7IH0KICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3ZpZXcuZ2V0KCk7IH0KLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0K
ICAgICBib29sIGlzTWFpbkZyYW1lKCkgeyByZXR1cm4gbV9pc01haW5GcmFtZTsgfQogCiBwcm90
ZWN0ZWQ6CkBAIC01OCw3ICs1OCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gbV92aWV3Owog
ICAgIFJlZlB0cjxOb2RlPiBtX21vdXNlUHJlc3NOb2RlOwotICAgIEtVUkwgbV91cmw7CisgICAg
VVJMIG1fdXJsOwogICAgIE93blB0cjxTY3JpcHRDYWNoZWRGcmFtZURhdGE+IG1fY2FjaGVkRnJh
bWVTY3JpcHREYXRhOwogICAgIE93blB0cjxDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YT4gbV9jYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YTsKICAgICBib29sIG1faXNNYWluRnJhbWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDFjYjU2YmZjNTJlOWZiMDcwNmM3MDJhYmNj
NzczYmY5MjE2MjE4ZDkuLmI0ZjA1ZGYyOWVhZjc2NDQ2Y2M0OThiNjExYTljMzYyZmQwMjE0MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHIKICAgICBpY29uRGF0YWJhc2UoKS5yZXRhaW5JY29u
Rm9yUGFnZVVSTChtX3VybFN0cmluZyk7CiB9CiAKLUhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHBhcmVu
dCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKK0hpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25z
dCBTdHJpbmcmIHRpdGxlKQogICAgIDogbV91cmxTdHJpbmcodXJsLnN0cmluZygpKQogICAgICwg
bV9vcmlnaW5hbFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQp
CkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBkb3VibGUgSGlzdG9yeUl0ZW06Omxhc3RWaXNpdGVkVGlt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdFZpc2l0ZWRUaW1lOwogfQogCi1LVVJMIEhpc3Rv
cnlJdGVtOjp1cmwoKSBjb25zdAorVVJMIEhpc3RvcnlJdGVtOjp1cmwoKSBjb25zdAogewotICAg
IHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmxTdHJpbmcpOworICAgIHJldHVybiBV
UkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybFN0cmluZyk7CiB9CiAKLUtVUkwgSGlzdG9yeUl0ZW06
Om9yaWdpbmFsVVJMKCkgY29uc3QKK1VSTCBIaXN0b3J5SXRlbTo6b3JpZ2luYWxVUkwoKSBjb25z
dAogewotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV9vcmlnaW5hbFVSTFN0cmlu
Zyk7CisgICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fb3JpZ2luYWxVUkxTdHJpbmcp
OwogfQogCiBjb25zdCBTdHJpbmcmIEhpc3RvcnlJdGVtOjpyZWZlcnJlcigpIGNvbnN0CkBAIC0y
ODIsNyArMjgyLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0VVJMU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKQogICAgIG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCh0aGlzKTsKIH0KIAot
dm9pZCBIaXN0b3J5SXRlbTo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgSGlzdG9yeUl0
ZW06OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBwYWdlQ2FjaGUoKS0+cmVtb3ZlKHRo
aXMpOwogICAgIHNldFVSTFN0cmluZyh1cmwuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9I
aXN0b3J5SXRlbS5oCmluZGV4IDU3M2MxYjE2YjQ3OGM2YjVjYmMwNzg4MjRkOGNmNWEyMmYxZTE3
NTEuLjBjMzQ4ODE3MzM5MDdjMmM4NjkyOTc5NmU2YmNkZGMyOGMwZTQ0M2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSW1hZ2U7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogCiB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1WZWN0b3I7CkBAIC04MSw3ICs4
MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9y
eUl0ZW0odXJsU3RyaW5nLCB0aXRsZSwgYWx0ZXJuYXRlVGl0bGUsIGxhc3RWaXNpdGVkKSk7CiAg
ICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGUoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBwYXJlbnQsIGNvbnN0
IFN0cmluZyYgdGl0bGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgcGFy
ZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIaXN0b3J5SXRlbSh1cmwsIHRhcmdldCwgcGFyZW50LCB0aXRsZSkpOwogICAgIH0KQEAg
LTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRs
ZSgpIGNvbnN0OwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgcGFyZW50KCkgY29uc3Q7Ci0gICAg
S1VSTCB1cmwoKSBjb25zdDsKLSAgICBLVVJMIG9yaWdpbmFsVVJMKCkgY29uc3Q7CisgICAgVVJM
IHVybCgpIGNvbnN0OworICAgIFVSTCBvcmlnaW5hbFVSTCgpIGNvbnN0OwogICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHRhcmdldCgpIGNvbnN0
OwogICAgIGJvb2wgaXNUYXJnZXRJdGVtKCkgY29uc3Q7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0RG9jdW1lbnRTdGF0ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwog
ICAgIHZvaWQgY2xlYXJEb2N1bWVudFN0YXRlKCk7CiAKLSAgICB2b2lkIHNldFVSTChjb25zdCBL
VVJMJik7CisgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7CiAgICAgdm9pZCBzZXRVUkxTdHJp
bmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRPcmlnaW5hbFVSTFN0cmluZyhjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldFJlZmVycmVyKGNvbnN0IFN0cmluZyYpOwpAQCAtMjIyLDcg
KzIyMiw3IEBAIHByaXZhdGU6CiAgICAgSGlzdG9yeUl0ZW0oKTsKICAgICBIaXN0b3J5SXRlbShj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGxhc3RW
aXNpdGVkKTsKICAgICBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSwgZG91YmxlIGxhc3RW
aXNpdGVkKTsKLSAgICBIaXN0b3J5SXRlbShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Cisg
ICAgSGlzdG9yeUl0ZW0oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKICAgICBleHBsaWNp
dCBIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAKaW5kZXggYWNiM2U1N2JiNjFhZTA0ZTQ0ZDc5NmJiOGQzZDI4NmEzZDNlODA4
OC4uNmEyMzdmM2M2NTlkZTE4MDYzNDU2MDY1MGViNWNkNGFhMGIzMGQxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtOTUsOCArOTUsOCBAQCBzdGF0aWMgdW5zaWduZWQg
bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKEZyYW1lKiBmcmFtZSwgaW50IGluZGVudExldmVsKQog
ICAgICAgICByZXR1cm4gMSA8PCBOb0RvY3VtZW50TG9hZGVyOwogICAgIH0KIAotICAgIEtVUkwg
Y3VycmVudFVSTCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKTsKLSAg
ICBLVVJMIG5ld1VSTCA9IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KCkgPyBmcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKSA6
IEtVUkwoKTsKKyAgICBVUkwgY3VycmVudFVSTCA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT51cmwoKTsKKyAgICBVUkwgbmV3VVJMID0gZnJhbWUtPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSA/IGZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCktPnVybCgpIDogVVJMKCk7CiAgICAgaWYgKCFuZXdVUkwuaXNFbXB0eSgpKQogICAg
ICAgICBQQ0xPRygiIERldGVybWluaW5nIGlmIGZyYW1lIGNhbiBiZSBjYWNoZWQgbmF2aWdhdGlu
ZyBmcm9tICgiLCBjdXJyZW50VVJMLnN0cmluZygpLCAiKSB0byAoIiwgbmV3VVJMLnN0cmluZygp
LCAiKToiKTsKICAgICBlbHNlCkBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIHZvaWQgbG9nQ2Fu
Q2FjaGVQYWdlRGVjaXNpb24oUGFnZSogcGFnZSkKICAgICAvLyBPbmx5IGJvdGhlciBsb2dnaW5n
IGZvciBtYWluIGZyYW1lcyB0aGF0IGhhdmUgYWN0dWFsbHkgbG9hZGVkIGFuZCBoYXZlIGNvbnRl
bnQuCiAgICAgaWYgKHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLT5j
cmVhdGluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJM
IGN1cnJlbnRVUkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
ID8gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkgOiBL
VVJMKCk7CisgICAgVVJMIGN1cnJlbnRVUkwgPSBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpID8gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsKCkgOiBVUkwoKTsKICAgICBpZiAoY3VycmVudFVSTC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAppbmRleCBhZTM2OTM4MjRiM2U5
NTgxZjI0MTQwYjVjODE5ZTJkM2QyOTdlNzNiLi5hYzllNzQxZGI5MjBlZjY0NDI3N2RjMGM3YjEx
MWZkOGMwZmNjNGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUg
IkJsb2JVUkwuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBCCiAKIFN0cmluZyBET01VUkw6OmNyZWF0ZVB1YmxpY1VSTChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFi
bGUpCiB7Ci0gICAgS1VSTCBwdWJsaWNVUkwgPSBCbG9iVVJMOjpjcmVhdGVQdWJsaWNVUkwoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgVVJMIHB1YmxpY1VS
TCA9IEJsb2JVUkw6OmNyZWF0ZVB1YmxpY1VSTChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zZWN1
cml0eU9yaWdpbigpKTsKICAgICBpZiAocHVibGljVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgRE9NVVJMOjpyZXZva2VPYmpl
Y3RVUkwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBLVVJMIHVybChLVVJMKCksIHVybFN0cmluZyk7CisgICAgVVJMIHVybChVUkwoKSwgdXJsU3Ry
aW5nKTsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCiAgICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihzY3JpcHRFeGVj
dXRpb25Db250ZXh0LT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01V
UkwuaAppbmRleCBiMzU4MjYzMjQwODQyNDA2ZWU4NTkwOGVjMDVhNmVlYmQ0MDYwMDgyLi43ZDIx
NGQxY2I5ZWU2NGVkNDVkNDQyYjg0ZjBlMmJhZmU0ZmEwMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgRE9NVVJMX2gKICNkZWZpbmUgRE9NVVJMX2gKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5k
ZXggNWJhYTRjOGQ0OGQ2MDkwOWZiOGViMDcxYjUxN2U4MzQwZmViNTI1ZS4uOTQyMTM3MTcyNzlm
YTFhYzU0MTkyM2Y3NzU0MTZhYWEzMjk3MDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
VFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIEZUUERpcmVj
dG9yeURvY3VtZW50UGFyc2VyOjpmaW5pc2goKQogICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6Zmlu
aXNoKCk7CiB9CiAKLUZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBEaXJlY3RvcnlEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK0ZUUERpcmVjdG9yeURvY3VtZW50OjpGVFBE
aXJlY3RvcnlEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRN
TERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAjaWYgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5oCmluZGV4IGU3ZTUyZjdhNzI0YjExM2EwMjAz
OGI3NDMyZTU2NTk3YmQ0NzFmZjkuLjBkOTEwMTRhMjFiZmUyZTY3Yjg1NmFmYzdhYzViYWViMjgw
NzY1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKQEAg
LTMzLDEzICszMywxMyBAQCBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKICAgICAKIGNsYXNzIEZU
UERpcmVjdG9yeURvY3VtZW50IDogcHVibGljIEhUTUxEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RlRQRGlyZWN0b3J5RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGVFBEaXJlY3RvcnlE
b2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZUUERpcmVjdG9yeURvY3VtZW50KGZyYW1lLCB1cmwp
KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBLVVJMJik7CisgICAgRlRQRGlyZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigp
OwogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggMjRh
MzczODBjNTk5YzVkZTIyZDY5Mzc1OTRiNDQzNjUwZTMyMTZhOS4uZTIxNWNmYjBmYjQzNDFiOWQ0
MTY4NTJhOWVjYjdmNjdhMjM2MzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9G
b3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxl
ci5jcHAKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVjb3JkRm9ybVN0
cnVjdHVyZShjb25zdCBIVE1MRm9ybUVsZW1lbnQmIGZvcm0sIFN0cmluZ0J1aWxkZQogCiBzdGF0
aWMgaW5saW5lIFN0cmluZyBmb3JtU2lnbmF0dXJlKGNvbnN0IEhUTUxGb3JtRWxlbWVudCYgZm9y
bSkKIHsKLSAgICBLVVJMIGFjdGlvblVSTCA9IGZvcm0uZ2V0VVJMQXR0cmlidXRlKGFjdGlvbkF0
dHIpOworICAgIFVSTCBhY3Rpb25VUkwgPSBmb3JtLmdldFVSTEF0dHJpYnV0ZShhY3Rpb25BdHRy
KTsKICAgICAvLyBSZW1vdmUgdGhlIHF1ZXJ5IHBhcnQgYmVjYXVzZSBpdCBtaWdodCBjb250YWlu
IHZvbGF0aWxlIHBhcmFtZXRlcnMgc3VjaAogICAgIC8vIGFzIGEgc2Vzc2lvbiBrZXkuCiAgICAg
YWN0aW9uVVJMLnNldFF1ZXJ5KFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAKaW5kZXggNzg0YmIwZWUwODI0MDhjMWFlNTFhNzYyN2RjZDBhOTBjMGI4
ZmZjNy4uMTlkNjVkNjUwNjMyOTU1NzY2MDU1ZmEzMzk4YWE1ZmM3N2UxMjQyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBi
b29sIEhUTUxBbmNob3JFbGVtZW50OjpkcmFnZ2FibGUoKSBjb25zdAogICAgIHJldHVybiBoYXNB
dHRyaWJ1dGUoaHJlZkF0dHIpOwogfQogCi1LVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkg
Y29uc3QKK1VSTCBIVE1MQW5jaG9yRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KGdldEF0dHJpYnV0ZShocmVmQXR0cikpKTsKIH0KQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcg
SFRNTEFuY2hvckVsZW1lbnQ6Omhhc2goKSBjb25zdAogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50
OjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7
CisgICAgVVJMIHVybCA9IGhyZWYoKTsKICAgICBpZiAodmFsdWVbMF0gPT0gJyMnKQogICAgICAg
ICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKHZhbHVlLnN1YnN0cmluZygxKSk7CiAgICAgZWxz
ZQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldEhhc2goY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIAogU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpob3N0KCkgY29u
c3QKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBocmVmKCk7CisgICAgY29uc3QgVVJMJiB1cmwg
PSBocmVmKCk7CiAgICAgaWYgKHVybC5ob3N0RW5kKCkgPT0gdXJsLnBhdGhTdGFydCgpKQogICAg
ICAgICByZXR1cm4gdXJsLmhvc3QoKTsKICAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29s
KHVybC5wb3J0KCksIHVybC5wcm90b2NvbCgpKSkKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIEhU
TUxBbmNob3JFbGVtZW50OjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gaHJlZigp
OworICAgIFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIGlmIChpID09IGhv
c3RMZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAg
IFVSTCB1cmwgPSBocmVmKCk7CiAgICAgaWYgKCF1cmwuY2FuU2V0SG9zdE9yUG9ydCgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTQyMyw3ICs0MjMsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1l
bnQ6OnBhdGhuYW1lKCkgY29uc3QKIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0UGF0aG5h
bWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBV
UkwgdXJsID0gaHJlZigpOwogICAgIGlmICghdXJsLmNhblNldFBhdGhuYW1lKCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIFN0cmluZyBIVE1MQW5jaG9yRWxlbWVudDo6
cG9ydCgpIGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFBvcnQoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBLVVJMIHVybCA9IGhyZWYoKTsKKyAgICBVUkwgdXJsID0gaHJl
ZigpOwogICAgIGlmICghdXJsLmNhblNldEhvc3RPclBvcnQoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC00NjgsNyArNDY4LDcgQEAgU3RyaW5nIEhUTUxBbmNob3JFbGVtZW50Ojpwcm90b2NvbCgp
IGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1cmwgPSBocmVmKCk7CisgICAgVVJMIHVybCA9IGhyZWYo
KTsKICAgICB1cmwuc2V0UHJvdG9jb2wodmFsdWUpOwogICAgIHNldEhyZWYodXJsLnN0cmluZygp
KTsKIH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBTdHJpbmcgSFRNTEFuY2hvckVsZW1lbnQ6Om9yaWdp
bigpIGNvbnN0CiAKIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNldFNlYXJjaChjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIEtVUkwgdXJsID0gaHJlZigpOworICAgIFVSTCB1cmwgPSBocmVm
KCk7CiAgICAgU3RyaW5nIG5ld1NlYXJjaCA9ICh2YWx1ZVswXSA9PSAnPycpID8gdmFsdWUuc3Vi
c3RyaW5nKDEpIDogdmFsdWU7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgJyMnIGluIHRoZSBxdWVy
eSBkb2VzIG5vdCBsZWFrIHRvIHRoZSBoYXNoLgogICAgIHVybC5zZXRRdWVyeShuZXdTZWFyY2gu
cmVwbGFjZVdpdGhMaXRlcmFsKCcjJywgIiUyMyIpKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCBib29s
IEhUTUxBbmNob3JFbGVtZW50Ojppc0xpdmVMaW5rKCkgY29uc3QKICAgICByZXR1cm4gaXNMaW5r
KCkgJiYgdHJlYXRMaW5rQXNMaXZlRm9yRXZlbnRUeXBlKG1fd2FzU2hpZnRLZXlEb3duT25Nb3Vz
ZURvd24gPyBNb3VzZUV2ZW50V2l0aFNoaWZ0S2V5IDogTW91c2VFdmVudFdpdGhvdXRTaGlmdEtl
eSk7CiB9CiAKLXZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBLVVJMJiBk
ZXN0aW5hdGlvblVSTCkKK3ZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OnNlbmRQaW5ncyhjb25zdCBV
UkwmIGRlc3RpbmF0aW9uVVJMKQogewogICAgIGlmICghaGFzQXR0cmlidXRlKHBpbmdBdHRyKSB8
fCAhZG9jdW1lbnQoKS5zZXR0aW5ncygpIHx8ICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01MzEsNyArNTMxLDcg
QEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2soRXZlbnQqIGV2ZW50KQogICAg
IFN0cmluZ0J1aWxkZXIgdXJsOwogICAgIHVybC5hcHBlbmQoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGZhc3RHZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKSk7CiAgICAgYXBwZW5kU2Vy
dmVyTWFwTW91c2VQb3NpdGlvbih1cmwsIGV2ZW50KTsKLSAgICBLVVJMIGt1cmwgPSBkb2N1bWVu
dCgpLmNvbXBsZXRlVVJMKHVybC50b1N0cmluZygpKTsKKyAgICBVUkwga3VybCA9IGRvY3VtZW50
KCkuY29tcGxldGVVUkwodXJsLnRvU3RyaW5nKCkpOwogCiAjaWYgRU5BQkxFKERPV05MT0FEX0FU
VFJJQlVURSkKICAgICBpZiAoaGFzQXR0cmlidXRlKGRvd25sb2FkQXR0cikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCBmODJmNDBmMjc2NTg4MDZkZGRlOTI5
NTVlNTcxZGY3ZWQ5Y2IzYjVkLi5mNmI3OTkxN2JmMGNjMjIzZDczNTk5NjFiMzQzYzU0YjQwNDZh
ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkhUTUxBbmNob3JFbGVtZW50KCk7CiAKLSAg
ICBLVVJMIGhyZWYoKSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0
SHJlZihjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSgpIGNvbnN0OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzaG9y
dCB0YWJJbmRleCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgYm9vbCBkcmFn
Z2FibGUoKSBjb25zdDsKIAotICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IEtVUkwmIGRlc3RpbmF0
aW9uVVJMKTsKKyAgICB2b2lkIHNlbmRQaW5ncyhjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsK
IAogICAgIHZvaWQgaGFuZGxlQ2xpY2soRXZlbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QmFzZUVsZW1lbnQuY3BwCmluZGV4IDFmYzhkNjM0MmVkYTBkZWNmOTMxNDQ0YzkxOTQxZWFlYmJi
NmU0NjcuLjg0MmI3MDBlYTFhZGU1ZWNmNTlmOTJkMjc4OWY5NDM2NWI0OWRlNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgU3RyaW5n
IEhUTUxCYXNlRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QKICAgICByZXR1cm4gZmFzdEdldEF0dHJp
YnV0ZSh0YXJnZXRBdHRyKTsKIH0KIAotS1VSTCBIVE1MQmFzZUVsZW1lbnQ6OmhyZWYoKSBjb25z
dAorVVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBkb2Vz
IG5vdCB1c2UgdGhlIGdldFVSTEF0dHJpYnV0ZSBmdW5jdGlvbiBiZWNhdXNlIHRoYXQgd2lsbCBy
ZXNvbHZlIHJlbGF0aXZlIHRvIHRoZSBkb2N1bWVudCdzIGJhc2UgVVJMOwogICAgIC8vIGJhc2Ug
ZWxlbWVudHMgbGlrZSB0aGlzIG9uZSBjYW4gYmUgdXNlZCB0byBzZXQgdGhhdCBiYXNlIFVSTC4g
VGh1cyB3ZSBuZWVkIHRvIHJlc29sdmUgcmVsYXRpdmUgdG8gdGhlIGRvY3VtZW50J3MKQEAgLTg3
LDEyICs4NywxMiBAQCBLVVJMIEhUTUxCYXNlRWxlbWVudDo6aHJlZigpIGNvbnN0CiAgICAgaWYg
KGF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS51cmwo
KTsKIAotICAgIEtVUkwgdXJsID0gIWRvY3VtZW50KCkuZGVjb2RlcigpID8KLSAgICAgICAgS1VS
TChkb2N1bWVudCgpLnVybCgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlVmFsdWUpKSA6Ci0gICAgICAgIEtVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9jdW1lbnQoKS5kZWNv
ZGVyKCktPmVuY29kaW5nKCkpOworICAgIFVSTCB1cmwgPSAhZG9jdW1lbnQoKS5kZWNvZGVyKCkg
PworICAgICAgICBVUkwoZG9jdW1lbnQoKS51cmwoKSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSkgOgorICAgICAgICBVUkwoZG9jdW1lbnQoKS51cmwo
KSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKSwgZG9j
dW1lbnQoKS5kZWNvZGVyKCktPmVuY29kaW5nKCkpOwogCiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBy
ZXR1cm4gdXJsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKaW5kZXggYmM2
M2Q0ZjNlM2RhNmIyMDliMDhmMzY5NmVkYTRjODM1OTc3MzVhNi4uMGNkZTlmMDc1MTcxZDk1MjJl
ZWZlMzU0ZGNiNDUwNTg1Y2E4YzIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQmFzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVu
dC5oCkBAIC0zMSw3ICszMSw3IEBAIGNsYXNzIEhUTUxCYXNlRWxlbWVudCBGSU5BTCA6IHB1Ymxp
YyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEJhc2VF
bGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICBL
VVJMIGhyZWYoKSBjb25zdDsKKyAgICBVUkwgaHJlZigpIGNvbnN0OwogICAgIHZvaWQgc2V0SHJl
Zihjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcAppbmRleCAzOWNiMDdiNmYwOTc4MDM5YTI3ZDNhNzEyZWFhOTk5NjE2
MTViNmI4Li4yZjNlYWE0OTU3NTcyNDU0M2U2N2Y4NDM2M2QzMzNhNTJkMjkyMzkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zMjcsNyArMzI3LDcgQEAgaW50
IEhUTUxCb2R5RWxlbWVudDo6c2Nyb2xsV2lkdGgoKQogICAgIHJldHVybiBhZGp1c3RGb3Jab29t
KHZpZXctPmNvbnRlbnRzV2lkdGgoKSwgKmZyYW1lKTsKIH0KIAotdm9pZCBIVE1MQm9keUVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykg
Y29uc3QKK3ZvaWQgSFRNTEJvZHlFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMo
TGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgY29uc3QKIHsKICAgICBIVE1MRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuaAppbmRleCA4MzBmOTE2YWJhNzdlYmY0ODBiNWNhMzQ2NmE3ODY3MmM4OGMyYTdiLi5i
ZWE0MjMyMzJiN2NiYTkyZGY2ZWZmNmRlYzkxZDQ2ODQ4ZTM3ODZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxIZWlnaHQoKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxXaWR0aCgpOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIH07CiAKIH0gLy9uYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAppbmRleCBjZDUzMTkwZWYxM2MyYmJmYjcy
ZTBlMmY4ZDZhNTNiZDZkMjRiYzA5Li4zMzhmNDZmMTdmYmU3MzQyMWNhZjlhN2UzYmMyMTNjMDc5
ZjZlZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3
IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC04Miw3ICs4Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRN
TERvY3VtZW50OjpIVE1MRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIERv
Y3VtZW50Q2xhc3NGbGFncyBkb2N1bWVudENsYXNzZXMpCitIVE1MRG9jdW1lbnQ6OkhUTUxEb2N1
bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9j
dW1lbnRDbGFzc2VzKQogICAgIDogRG9jdW1lbnQoZnJhbWUsIHVybCwgZG9jdW1lbnRDbGFzc2Vz
IHwgSFRNTERvY3VtZW50Q2xhc3MpCiB7CiAgICAgY2xlYXJYTUxWZXJzaW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCAyNWM0YjU4YjU4NTExNWY3YjUzOWQ2NTU0MzRiYzUx
NGU3OGE3ZGY4Li4wNDc5YmQ1ZjhmMjZhMDg5MjRmZTJjYmE1NDU3Zjg4ZDE4ZjM2ODc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBIVE1MRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1lbnQsIHB1YmxpYyBD
YWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTERvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTERvY3VtZW50
KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBpc0Nhc2VTZW5zaXRpdmVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgSFRNTERvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYsIERvY3Vt
ZW50Q2xhc3NGbGFncyA9IDApOworICAgIEhUTUxEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYs
IERvY3VtZW50Q2xhc3NGbGFncyA9IDApOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwg
RXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAK
aW5kZXggYzU0N2U0NjlhN2I2Y2ZhMjViMWVkM2NlNzY5YTdiYjQ1NGQyYWE5Mi4uZWY2M2FlMGFl
Y2FiYWQ3MWJjZWNiNzI5ZGZhMTRhNjYzNjBhMmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgY29uc3QgQXRvbWljU3RyaW5n
JiBIVE1MRW1iZWRFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShzcmNBdHRyKTsKIH0KIAotdm9pZCBIVE1MRW1iZWRFbGVtZW50OjphZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lk
IEhUTUxFbWJlZEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuaAppbmRleCAyZTk5ZTJjMDllNGQyMTg2ZDcyNWJjZDBiMDliZGQ2Yjg3NjYyNmMw
Li43Zjg2NTY2MmUzYmIyMjFmY2RmMmQ5ZTlhNmI4YzA3YWI4NDE1YjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAgICB2b2lkIHBhcmFtZXRlcnNGb3JQbHVn
aW4oVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApp
bmRleCAzMDAxOTJkZjE4MTk4YTE1ODhhMDdiZTg2NzE0ZTU0OWY1MWY0NTJiLi5iODFhYWQwMjNk
ZDM0NWUwYzRhZmUxNjlmY2FhNDFlZDNjZTNhNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNV
UkxBbGxvd2VkKCkgY29uc3QKICAgICBpZiAobV9VUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGNvbnN0IEtVUkwmIGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChtX1VSTCk7CisgICAgY29uc3QgVVJMJiBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCku
Y29tcGxldGVVUkwobV9VUkwpOwogCiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBs
ZXRlVVJMKSkgeyAKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2MgPSB0aGlzLT5jb250ZW50
RG9jdW1lbnQoKTsKQEAgLTE4MSwxMCArMTgxLDEwIEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJh
c2U6OmRpZEF0dGFjaFJlbmRlcmVycygpCiAgICAgfQogfQogCi1LVVJMIEhUTUxGcmFtZUVsZW1l
bnRCYXNlOjpsb2NhdGlvbigpIGNvbnN0CitVUkwgSFRNTEZyYW1lRWxlbWVudEJhc2U6OmxvY2F0
aW9uKCkgY29uc3QKIHsKICAgICBpZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNkb2NBdHRyKSkKLSAg
ICAgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CisgICAg
ICAgIHJldHVybiBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiYWJvdXQ6c3JjZG9jIik7CiAgICAgcmV0
dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKHNyY0F0dHIpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IDMxYTU0Zjcx
NWI5NjBiZWNkZTQ5ODIyNTY1YWM0MDhhYjAyNmU4MjkuLjIzMDMzYWFiODBlMGYwMmQzNjAxZTBm
YmQzOGQxYzAxMDExNjAwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
VE1MRnJhbWVFbGVtZW50QmFzZSA6IHB1YmxpYyBIVE1MRnJhbWVPd25lckVsZW1lbnQgewogcHVi
bGljOgotICAgIEtVUkwgbG9jYXRpb24oKSBjb25zdDsKKyAgICBVUkwgbG9jYXRpb24oKSBjb25z
dDsKICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBT
Y3JvbGxiYXJNb2RlIHNjcm9sbGluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZzsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzJhODM5OGI0
ODg0NGFmYjhhY2Y5MjU4Njk5OTg3ZDcyMzIxYzk3My4uMjVmNTE2NmY2ZjMwMDE2ZTcyZTg2OWU2
MGM5MTdlNDc3OTUzMDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRIZWlnaHQo
aW50IHZhbHVlKQogICAgIHNldEF0dHJpYnV0ZShoZWlnaHRBdHRyLCBTdHJpbmc6Om51bWJlcih2
YWx1ZSkpOwogfQogCi1LVVJMIEhUTUxJbWFnZUVsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRN
TEltYWdlRWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMzUxLDcgKzM1MSw3IEBAIGJv
b2wgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdl
TG9hZGVyLmltYWdlQ29tcGxldGUoKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjphZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2
b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxFbGVtZW50OjphZGRTdWJyZXNvdXJj
ZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKaW5kZXggNzQ3OGNlNDc0MDk2ZDYxM2ZjYjUyNDBkYTMzZDA5MDA5Yzk0MTQzMi4uN2ZjN2M0
Mjc4MzkwOTg5NjFhNmU3MzA2NzQxYTQ2NGNkYzdhOWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRIZWlnaHQoaW50KTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNv
bnN0OwogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzZXRXaWR0
aChpbnQpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhZ2dhYmxlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFp
bmVyTm9kZSopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggNTRkOTFmMDNhZmU0ZTkzNzQ3Y2QxMDcyYThhMzdhYzRlZGI5YzZkMC4uZjVmZTAz
NGEzMWZmYWFmNjgwMzQwNDY4Zjk1ZjNjZDJhZWRkMjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMzQwLDcgKzEzNDAsNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnNldFNpemUodW5zaWduZWQgc2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ICAgIHNldFNpemUoc2l6ZSk7CiB9CiAKLUtVUkwgSFRNTElucHV0RWxlbWVudDo6c3JjKCkgY29u
c3QKK1VSTCBIVE1MSW5wdXRFbGVtZW50OjpzcmMoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMTU3
MCw3ICsxNTcwLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaWRNb3ZlVG9OZXdEb2N1bWVu
dChEb2N1bWVudCogb2xkRG9jdW1lbnQpCiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmRpZE1vdmVUb05ld0RvY3VtZW50KG9sZERvY3VtZW50KTsKIH0KIAotdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVy
bHMpIGNvbnN0Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHModXJscyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZGE4ZThlNTAwZGY0ODc2M2Y3Yjkw
ZGY5N2U3MDk1NDU0MjlmMTQwNy4uOWEzMGQxZmQxYjQyNTgxNTg5ZWFkYzBmNTZkODJmYjAwOTMx
NmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM5LDcgKzM5
LDcgQEAgY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBj
bGFzcyBJY29uOwogY2xhc3MgSW5wdXRUeXBlOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIExpc3RBdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKIHN0cnVjdCBEYXRlVGltZUNob29zZXJQ
YXJhbWV0ZXJzOwogCkBAIC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2l6
ZSh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXRTaXplKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBLVVJMIHNyYygpIGNvbnN0OworICAgIFVSTCBzcmMoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgaW50IG1heExlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF4TGVuZ3RoKGludCwg
RXhjZXB0aW9uQ29kZSYpOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUoKSBPVkVSUklERTsKICNlbmRp
ZgogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgYm9vbCBuZWVkc1N1c3Bl
bnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IGIz
Mzk4Njg3N2RkMDc3MWJjYWJhNzllYjNkMDllM2E2OWE4ZWFiZTYuLmM5MDhkYTNiNDQxYTI5ZDBi
NDVlMmMyZmNjNzVmZDVkMTllZTVmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vz
cygpCiAgICAgfQogCiAgICAgU3RyaW5nIHR5cGUgPSBtX3R5cGUubG93ZXIoKTsKLSAgICBLVVJM
IHVybCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBVUkwgdXJsID0g
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoaHJlZkF0dHIpOwogCiAgICAgaWYgKCFtX2xpbmtMb2Fk
ZXIubG9hZExpbmsobV9yZWxBdHRyaWJ1dGUsIHR5cGUsIG1fc2l6ZXMtPnRvU3RyaW5nKCksIHVy
bCwgJmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm47CkBAIC0yOTEsNyArMjkxLDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1l
bnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhUTUxMaW5rRWxlbWVudDo6
c2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogY2FjaGVk
U3R5bGVTaGVldCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0
IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIGNhY2hlZFN0eWxlU2hlZXQpCiB7CiAgICAgaWYg
KCFpbkRvY3VtZW50KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0KTsKQEAgLTM5NSw3ICsz
OTUsNyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS5uYW1lKCkubG9jYWxO
YW1lKCkgPT0gaHJlZkF0dHIgfHwgSFRNTEVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGF0dHJpYnV0
ZSk7CiB9CiAKLUtVUkwgSFRNTExpbmtFbGVtZW50OjpocmVmKCkgY29uc3QKK1VSTCBIVE1MTGlu
a0VsZW1lbnQ6OmhyZWYoKSBjb25zdAogewogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRl
VVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOwogfQpAQCAtNDI1LDcgKzQyNSw3IEBAIFN0cmlu
ZyBIVE1MTGlua0VsZW1lbnQ6Omljb25TaXplcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZXMt
PnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgSFRNTExpbmtFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxMaW5r
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVy
bHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMGJhMzUw
ZjE0MDM1OGY5MWRjMzZlZjkyMjUyNTQ5NTZhNTRkZTkxNC4uZGNjMDgzODRhMjgwZjljZTM0MzQ0
ZjhlZDA3ZTJiODJiYjE1ODEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxMaW5r
RWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIEV2ZW50U2VuZGVyOwogdHlwZWRlZiBFdmVudFNlbmRlcjxIVE1MTGlua0VsZW1lbnQ+
IExpbmtFdmVudFNlbmRlcjsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxMaW5rRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKICAgICB2aXJ0dWFsIH5IVE1MTGlua0Vs
ZW1lbnQoKTsKIAotICAgIEtVUkwgaHJlZigpIGNvbnN0OworICAgIFVSTCBocmVmKCkgY29uc3Q7
CiAgICAgU3RyaW5nIHJlbCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkg
Y29uc3Q7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKIAogICAgIC8vIGZyb20gQ2FjaGVkUmVz
b3VyY2VDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29u
c3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NT
dHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TG9hZGVk
U2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpOwogICAg
IHZpcnR1YWwgdm9pZCBzdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKTsKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwcml2YXRlOgogcHJpdmF0ZToKICAgICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBi
NTlhMjllNGVmZTQ3YmU5NDE2OThjZjNhNWNmOWQ0ZDBjYmVlYjA3Li41OWFjNjAxOTZiODI0M2I1
NWQwYzQzYzg2ZGM0ZDAwOTkwMzIxZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCBjbGVhckZsYWdzKHVu
c2lnbmVkJiB2YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiB9CiAgICAgCiAjaWYgIUxPR19ESVNBQkxF
RAotc3RhdGljIFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgS1VSTCYgdXJsKQorc3Rh
dGljIFN0cmluZyB1cmxGb3JMb2dnaW5nTWVkaWEoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nID0gMTI4OwogCkBA
IC03NDAsNyArNzQwLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6TmV0d29ya1N0YXRlIEhUTUxNZWRp
YUVsZW1lbnQ6Om5ldHdvcmtTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRl
OwogfQogCi1TdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK1N0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0ID0gTWVkaWFQbGF5ZXI6OnN1
cHBvcnRzVHlwZShDb250ZW50VHlwZShtaW1lVHlwZSksIGtleVN5c3RlbSwgdXJsLCB0aGlzKTsK
ICAgICBTdHJpbmcgY2FuUGxheTsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICBtX2xvYWRTdGF0ZSA9IExvYWRp
bmdGcm9tU3JjQXR0cjsKIAogICAgICAgICAvLyBJZiB0aGUgc3JjIGF0dHJpYnV0ZSdzIHZhbHVl
IGlzIHRoZSBlbXB0eSBzdHJpbmcgLi4uIGp1bXAgZG93biB0byB0aGUgZmFpbGVkIHN0ZXAgYmVs
b3cKLSAgICAgICAgS1VSTCBtZWRpYVVSTCA9IGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0
dHIpOworICAgICAgICBVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNB
dHRyKTsKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbWVk
aWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAn
c3JjJyIpOwpAQCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5l
eHRTb3VyY2VDaGlsZCgpCiB7CiAgICAgQ29udGVudFR5cGUgY29udGVudFR5cGUoKFN0cmluZygp
KSk7CiAgICAgU3RyaW5nIGtleVN5c3RlbTsKLSAgICBLVVJMIG1lZGlhVVJMID0gc2VsZWN0TmV4
dFNvdXJjZUNoaWxkKCZjb250ZW50VHlwZSwgJmtleVN5c3RlbSwgQ29tcGxhaW4pOworICAgIFVS
TCBtZWRpYVVSTCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgmY29udGVudFR5cGUsICZrZXlTeXN0
ZW0sIENvbXBsYWluKTsKICAgICBpZiAoIW1lZGlhVVJMLmlzVmFsaWQoKSkgewogICAgICAgICB3
YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMTggKzEwMDAs
MTggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFNvdXJjZUNoaWxkKCkKICAgICBs
b2FkUmVzb3VyY2UobWVkaWFVUkwsIGNvbnRlbnRUeXBlLCBrZXlTeXN0ZW0pOwogfQogCi1zdGF0
aWMgS1VSTCBjcmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0
cmluZyYgcGF0aCkKK3N0YXRpYyBVUkwgY3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgLy8gS1VSTCBzaG91bGQgaGF2ZSBh
IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHVybCBmcm9tIGEgcGF0aCwgYnV0IGl0IGRvZXMgbm90LiBU
aGlzIGZ1bmN0aW9uCi0gICAgLy8gaXMgbm90IHN1aXRhYmxlIGJlY2F1c2UgS1VSTDo6c2V0UGF0
aCB1c2VzIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMsIHdoaWNoIGl0IG5vdGVzCisgICAg
Ly8gVVJMIHNob3VsZCBoYXZlIGEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIGZyb20gYSBwYXRo
LCBidXQgaXQgZG9lcyBub3QuIFRoaXMgZnVuY3Rpb24KKyAgICAvLyBpcyBub3Qgc3VpdGFibGUg
YmVjYXVzZSBVUkw6OnNldFBhdGggdXNlcyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzLCB3
aGljaCBpdCBub3RlcwogICAgIC8vIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgJyMnIGFuZCAn
PycuIFRoaXMgZnVuY3Rpb24gd29ya3MgZm9yIG91ciBwdXJwb3NlcyBiZWNhdXNlCiAgICAgLy8g
YXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBM
QVRGT1JNKFdJTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Ci0gICAgS1VSTCB1cmwoY2ZVUkwuZ2V0
KCkpOworICAgIFVSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKLSAgICBLVVJMIHVybDsKKyAg
ICBVUkwgdXJsOwogCiAgICAgdXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsK
ICAgICB1cmwuc2V0UGF0aChwYXRoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIHN0YXRpYyBLVVJM
IGNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIHJldHVybiB1cmw7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJl
c291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNv
dXJjZShjb25zdCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGlzU2FmZVRvTG9hZFVSTChpbml0
aWFsVVJMLCBDb21wbGFpbikpOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlw
ZSYgY29udGVudAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgS1VSTCB1cmwgPSBpbml0
aWFsVVJMOworICAgIFVSTCB1cmwgPSBpbml0aWFsVVJMOwogICAgIGlmICghZnJhbWUtPmxvYWRl
cigpLndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKHVybCkpIHsKICAgICAgICAgbWVkaWFMb2FkaW5n
RmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE1
MjcsNyArMTUyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vl
KFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjCiAKICNlbmRpZgogCi1ib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFs
aWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1Nh
ZmVUb0xvYWRVUkwoY29uc3QgVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZh
bGlkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJs
IGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAg
LTE5ODMsNyArMTk4Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlF
cnJvcihNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtCiAgICAgbV9hc3luY0V2
ZW50UXVldWUuZW5xdWV1ZUV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBLVVJMJiBkZWZhdWx0
VVJMKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcktleU1lc3NhZ2UoTWVkaWFQ
bGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNv
bnN0IFVSTCYgZGVmYXVsdFVSTCkKIHsKICAgICBNZWRpYUtleUV2ZW50SW5pdCBpbml0aWFsaXpl
cjsKICAgICBpbml0aWFsaXplci5rZXlTeXN0ZW0gPSBrZXlTeXN0ZW07CkBAIC0zMTg5LDcgKzMx
ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayhIVE1MVHJh
Y2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHRy
YWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0
cmFja0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBV
UkwgdXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsK
ICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVHJhY2sgLSAn
c3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmdNZWRpYSh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0KICNlbmRpZgpAQCAtMzQyNCw3ICszNDI0LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpo
YXZlUG90ZW50aWFsU291cmNlQ2hpbGQoKQogICAgIFJlZlB0cjxIVE1MU291cmNlRWxlbWVudD4g
Y3VycmVudFNvdXJjZU5vZGUgPSBtX2N1cnJlbnRTb3VyY2VOb2RlOwogICAgIFJlZlB0cjxOb2Rl
PiBuZXh0Tm9kZSA9IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXI7CiAKLSAgICBLVVJMIG5leHRV
UkwgPSBzZWxlY3ROZXh0U291cmNlQ2hpbGQoMCwgMCwgRG9Ob3RoaW5nKTsKKyAgICBVUkwgbmV4
dFVSTCA9IHNlbGVjdE5leHRTb3VyY2VDaGlsZCgwLCAwLCBEb05vdGhpbmcpOwogCiAgICAgbV9j
dXJyZW50U291cmNlTm9kZSA9IGN1cnJlbnRTb3VyY2VOb2RlOwogICAgIG1fbmV4dENoaWxkTm9k
ZVRvQ29uc2lkZXIgPSBuZXh0Tm9kZTsKQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aGF2ZVBvdGVudGlhbFNvdXJjZUNoaWxkKCkKICAgICByZXR1cm4gbmV4dFVS
TC5pc1ZhbGlkKCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJj
ZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFs
aWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVj
dE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyoga2V5U3lz
dGVtLCBJbnZhbGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0
IGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0zNDQ2LDEwICsz
NDQ2LDEwIEBAIEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENv
bnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgICAgIGlmIChzaG91bGRMb2cp
CiAgICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291
cmNlQ2hpbGQgLT4gMHgwMDAwLCBcIlwiIik7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAotICAgIEtVUkwgbWVkaWFVUkw7Cisg
ICAgVVJMIG1lZGlhVVJMOwogICAgIEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UgPSAwOwogICAg
IFN0cmluZyB0eXBlOwogICAgIFN0cmluZyBzeXN0ZW07CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBj
aGVja19hZ2FpbjoKICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gJXAsICVzIiwgbV9jdXJyZW50
U291cmNlTm9kZS5nZXQoKSwgY2FuVXNlU291cmNlRWxlbWVudCA/IHVybEZvckxvZ2dpbmdNZWRp
YShtZWRpYVVSTCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgotICAgIHJldHVybiBjYW5V
c2VTb3VyY2VFbGVtZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CisgICAgcmV0dXJuIGNhblVzZVNv
dXJjZUVsZW1lbnQgPyBtZWRpYVVSTCA6IFVSTCgpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCkBAIC0zNTUyLDcg
KzM1NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3Vy
Y2VFbGVtZW50KiBzb3VyY2UpCiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+
aGFzVGFnTmFtZShzb3VyY2VUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXRO
b25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgVVJMIHVybCA9IHNvdXJjZS0+
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dn
aW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTM2MDAsNyAr
MzYwMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzUmVtb3ZlZChIVE1MU291
cmNlRWxlbWVudCogc291cmNlKQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChzb3VyY2Ut
Pmhhc1RhZ05hbWUoc291cmNlVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0
Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgIFVSTCB1cmwgPSBzb3VyY2Ut
PmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JM
b2dnaW5nTWVkaWEodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQzMTEs
NyArNDMxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFQbGF5ZXJQcm94eShX
ZWJNZWRpYVBsYXllclByb3h5KiBwcm94eSkKICAgICBtX3BsYXllci0+c2V0TWVkaWFQbGF5ZXJQ
cm94eShwcm94eSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0UGx1Z2luUHJveHlQ
YXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2
YWx1ZXMpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFBsdWdpblByb3h5UGFyYW1zKFVSTCYg
dXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFtZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpCiB7CiAg
ICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBzZWxlY3ROZXh0U291
cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkg
RE9NIG11dGF0aW9ucy4KIApAQCAtNDMxOSw3ICs0MzE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpnZXRQbHVnaW5Qcm94eVBhcmFtcyhLVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1l
cywgVmUKIAogICAgIGlmIChpc1ZpZGVvKCkpIHsKICAgICAgICAgSFRNTFZpZGVvRWxlbWVudCog
dmlkZW8gPSB0b0hUTUxWaWRlb0VsZW1lbnQodGhpcyk7Ci0gICAgICAgIEtVUkwgcG9zdGVyVVJM
ID0gdmlkZW8tPnBvc3RlckltYWdlVVJMKCk7CisgICAgICAgIFVSTCBwb3N0ZXJVUkwgPSB2aWRl
by0+cG9zdGVySW1hZ2VVUkwoKTsKICAgICAgICAgaWYgKCFwb3N0ZXJVUkwuaXNFbXB0eSgpICYm
IGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS53aWxsTG9hZE1lZGlhRWxlbWVudFVSTChwb3N0ZXJV
UkwpKSB7CiAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJfbWVkaWFfZWxl
bWVudF9wb3N0ZXJfIikpOwogICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChwb3N0ZXJVUkwuc3Ry
aW5nKCkpOwpAQCAtNDM1NSw3ICs0MzU1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVh
dGVNZWRpYVBsYXllclByb3h5KCkKIAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZU1lZGlhUGxheWVyUHJveHkiKTsKIAotICAgIEtVUkwgdXJsOworICAgIFVSTCB1cmw7
CiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJh
bVZhbHVlczsKIApAQCAtNDM3NSw3ICs0Mzc1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1
cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFy
YW1OYW1lczsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICAvLyBGSVhNRTog
UmVuYW1lIGt1cmwgdG8gc29tZXRoaW5nIG1vcmUgc2Vuc2libGUuCi0gICAgS1VSTCBrdXJsOwor
ICAgIFVSTCBrdXJsOwogCiAgICAgbWVkaWFFbGVtZW50LT5nZXRQbHVnaW5Qcm94eVBhcmFtcyhr
dXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAgICAgLy8gRklYTUU6IFdoYXQgaWYgZG9j
dW1lbnQoKS5mcmFtZSgpIGlzIDA/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IGNmNmU4OTY2MzMyMzA1YWJkN2UyNDI3Yjg2NTk0NWYzMjJkMDhjMjkuLmQ1NWMwNDE2
YTUzZjg2MDMwYWUyYjBmZDA2NmZmYjUwZjA3OGUwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZTsKIGNsYXNzIEV2ZW50OwogY2xhc3MgSFRNTFNvdXJjZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVHJhY2tFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE1lZGlh
Q29udHJvbGxlcjsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwpAQCAt
MTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogLy8gbmV0d29yayBzdGF0ZQogICAgIHZvaWQgc2V0
U3JjKGNvbnN0IFN0cmluZyYpOwotICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRTcmMoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRTcmM7IH0KKyAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRTcmM7IH0KIAogICAgIGVudW0gTmV0d29ya1N0YXRlIHsgTkVU
V09SS19FTVBUWSwgTkVUV09SS19JRExFLCBORVRXT1JLX0xPQURJTkcsIE5FVFdPUktfTk9fU09V
UkNFIH07CiAgICAgTmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0OwpAQCAtMTQ4LDcg
KzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQo
KSBjb25zdDsKICAgICB2b2lkIGxvYWQoKTsKLSAgICBTdHJpbmcgY2FuUGxheVR5cGUoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0gPSBTdHJpbmcoKSwgY29u
c3QgS1VSTCYgPSBLVVJMKCkpIGNvbnN0OworICAgIFN0cmluZyBjYW5QbGF5VHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSA9IFN0cmluZygpLCBjb25z
dCBVUkwmID0gVVJMKCkpIGNvbnN0OwogCiAvLyByZWFkeSBzdGF0ZQogICAgIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0OwpAQCAtMzIwLDcgKzMyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE5lZWRXaWRnZXRVcGRhdGUoYm9vbCBuZWVkV2lkZ2V0VXBkYXRlKSB7IG1fbmVlZFdpZGdl
dFVwZGF0ZSA9IG5lZWRXaWRnZXRVcGRhdGU7IH0KICAgICB2b2lkIGRlbGl2ZXJOb3RpZmljYXRp
b24oTWVkaWFQbGF5ZXJQcm94eU5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKTsKICAgICB2
b2lkIHNldE1lZGlhUGxheWVyUHJveHkoV2ViTWVkaWFQbGF5ZXJQcm94eSogcHJveHkpOwotICAg
IHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJhbXMoS1VSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYgbmFt
ZXMsIFZlY3RvcjxTdHJpbmc+JiB2YWx1ZXMpOworICAgIHZvaWQgZ2V0UGx1Z2luUHJveHlQYXJh
bXMoVVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiBuYW1lcywgVmVjdG9yPFN0cmluZz4mIHZhbHVl
cyk7CiAgICAgdm9pZCBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAgICAgdm9pZCB1cGRhdGVX
aWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pOwogI2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcs
IENvbXBsYWluIH07Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFs
aWRVUkxBY3Rpb24pOworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IFVSTCYsIEludmFs
aWRVUkxBY3Rpb24pOwogCiAgICAgY29uc3QgU3RyaW5nJiBtZWRpYUdyb3VwKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRNZWRpYUdyb3VwKGNvbnN0IFN0cmluZyYpOwpAQCAtNDgzLDcgKzQ4Myw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG1l
ZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9y
Q29kZSwgdW5zaWduZWQgc2hvcnQgc3lzdGVtQ29kZSkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVz
c2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVzc2FnZShNZWRpYVBsYXll
ciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29u
c3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxlbmd0aCwgY29uc3Qg
VVJMJiBkZWZhdWx0VVJMKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJL
ZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXREYXRhLCB1bnNpZ25lZCBp
bml0RGF0YUxlbmd0aCkgT1ZFUlJJREU7CiAjZW5kaWYKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgLy8gbG9hZGluZwogICAgIHZvaWQgc2VsZWN0TWVkaWFSZXNvdXJj
ZSgpOwotICAgIHZvaWQgbG9hZFJlc291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50VHlwZSYsIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShjb25zdCBVUkwm
LCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICAgICB2b2lkIHNjaGVk
dWxlTmV4dFNvdXJjZUNoaWxkKCk7CiAgICAgdm9pZCBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CiAg
ICAgdm9pZCB1c2VyQ2FuY2VsbGVkTG9hZCgpOwpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5
KCk7CiAKLSAgICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIFN0cmlu
Zyoga2V5U3lzdGVtLCBJbnZhbGlkVVJMQWN0aW9uKTsKKyAgICBVUkwgc2VsZWN0TmV4dFNvdXJj
ZUNoaWxkKENvbnRlbnRUeXBlKiwgU3RyaW5nKiBrZXlTeXN0ZW0sIEludmFsaWRVUkxBY3Rpb24p
OwogCiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0
ZSk7CiAKQEAgLTYzNCw3ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtTdGF0ZSBtX25l
dHdvcmtTdGF0ZTsKICAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZU1heGltdW07Ci0gICAgS1VSTCBtX2N1cnJlbnRTcmM7CisgICAgVVJMIG1f
Y3VycmVudFNyYzsKIAogICAgIFJlZlB0cjxNZWRpYUVycm9yPiBtX2Vycm9yOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGIzYzA0N2FiNGVkMjgyMGU5
YzEyNzM1ZWYyMTMyNTdmOWVkOGM3ODQuLjJmZDM4YmM0NzJhZjllYmU0ZGQ3N2JhMTRiNTY1NjEy
YmQwNzc2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBA
IC00NjYsNyArNDY2LDcgQEAgYm9vbCBIVE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBw
bGV0KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRNTE9iamVjdEVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykg
Y29uc3QKK3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDQ0MTUzNTU1MTA0NWJkMThlNjg5OTQyMGQ1
ZmY2ZmEzMzkzMDFlN2EuLmNjZTNmYmYwMDhiNWQwMGZlYWMwNWRmN2ZkMzY3MmEzMDlmMzYyMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTgyLDcgKzgyLDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRGb3JK
U0JpbmRpbmdzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKTsKICAgICB2
b2lkIHVwZGF0ZURvY05hbWVkSXRlbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGFyYW1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxl
bWVudC5jcHAKaW5kZXggNjk4YmExMjhhMDE3NTljY2YxYzU1N2E5NTcwYTQxZDVmMzVkYjI3Yy4u
ZDEwZjQ2MmVkZDkxZmU2ZGM3NGFmMzY4MzQxNmMzZDYzNjE0NTI0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgSFRNTFBh
cmFtRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNv
bnN0CiAgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOwog
fQogCi12b2lkIEhUTUxQYXJhbUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFBhcmFtRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7
CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRleCBlNjJmODRhMWFmY2Y3Y2Vl
NjY1NTQ5MGE3YjFiYzljMTBmYmY3NDNiLi4zMmM2MzllMGU5ZWUwNWU5ZDY3ODNiYTNhYTdjYzVh
Njg5ZWU1YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaApAQCAtNDAs
NyArNDAsNyBAQCBwcml2YXRlOgogICAgIEhUTUxQYXJhbUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNv
bnN0OwogfTsKIAogRUxFTUVOVF9UWVBFX0NBU1RTKEhUTUxQYXJhbUVsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCA2Y2ZhZTVh
NzdlODM3ZjIxMzQzMWEyY2ExZWFlNmRjMTczOTZhMjg2Li5mZGNjYjcyN2Q1ZThkNTU2YjA2OWZk
NWQwOGEwNGEwZWNjNjFmNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmlzSW1hZ2VUeXBlKCkKICAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IG1pbWVUeXBl
RnJvbURhdGFVUkwobV91cmwpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCku
ZnJhbWUoKSkgewotICAgICAgICBLVVJMIGNvbXBsZXRlZFVSTCA9IGRvY3VtZW50KCkuY29tcGxl
dGVVUkwobV91cmwpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTChtX3VybCk7CiAgICAgICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
b2JqZWN0Q29udGVudFR5cGUoY29tcGxldGVkVVJMLCBtX3NlcnZpY2VUeXBlLCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKCkpID09IE9iamVjdENvbnRlbnRJbWFnZTsKICAgICB9CiAKQEAg
LTE3MSw3ICsxNzEsNyBAQCBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmlzSW1hZ2VUeXBl
KCkKIC8vIGRlcGVuZGluZyBvbiA8cGFyYW0+IHZhbHVlcy4KIGJvb2wgSFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAg
IEtVUkwgY29tcGxldGVVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJM
IGNvbXBsZXRlVVJMID0gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogCiAgICAgaWYgKGNv
bnRlbnRGcmFtZSgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbXBsZXRlVVJMKQogICAgICAg
ICAmJiAhZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MoY29udGVudERvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQpAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJs
KQogYm9vbCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp3b3VsZExvYWRBc05ldHNjYXBlUGx1Z2lu
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlKQogewogICAgIEFT
U0VSVChkb2N1bWVudCgpLmZyYW1lKCkpOwotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAgIFVS
TCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21wbGV0
ZWRVUkwgPSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCk7CiAKQEAgLTQzMiw3ICs0MzIsNyBA
QCBzdGF0aWMgdm9pZCBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQbHVnSW5PcmlnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudExpcwogICAgICAgICAgICAgSFRNTFBsdWdJbkVsZW1lbnQq
IHBsdWdJbkVsZW1lbnQgPSB0b0hUTUxQbHVnSW5FbGVtZW50KG5vZGUpOwogICAgICAgICAgICAg
aWYgKHBsdWdJbkVsZW1lbnQtPmlzUGx1Z0luSW1hZ2VFbGVtZW50KCkpIHsKICAgICAgICAgICAg
ICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnSW5JbWFnZUVsZW1lbnQgPSB0b0hUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQobm9kZSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgbG9h
ZGVkVVJMID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRVcmwoKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBVUkwmIGxvYWRlZFVSTCA9IHBsdWdJbkltYWdlRWxlbWVudC0+bG9hZGVkVXJsKCk7
CiAgICAgICAgICAgICAgICAgU3RyaW5nIG90aGVyTWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1l
bnQtPmxvYWRlZE1pbWVUeXBlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHBsdWdJbk9yaWdpbiA9
PSBsb2FkZWRVUkwuaG9zdCgpICYmIG1pbWVUeXBlID09IG90aGVyTWltZVR5cGUpCiAgICAgICAg
ICAgICAgICAgICAgIHBsdWdJbkxpc3QuYXBwZW5kKHBsdWdJbkltYWdlRWxlbWVudCk7CkBAIC01
NzIsNyArNTcyLDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjaGVja1NpemVDaGFu
Z2VGb3JTbmFwc2hvdHRpbmcoKQogICAgICAgICB0b1BsdWdpblZpZXdCYXNlKHdpZGdldCktPmJl
Z2luU25hcHNob3R0aW5nUnVubmluZ1BsdWdpbigpOwogfQogCi12b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBs
dWdJbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gVVJM
OiAlcyIsIHRoaXMsIG1fdXJsLnV0ZjgoKS5kYXRhKCkpOwogICAgIExPRyhQbHVnaW5zLCAiICAg
QWN0dWFsIFVSTDogJXMiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCmluZGV4IDkwMzA3NWNmMzkzZGYx
ZDQ3OTU3YjBlZWExNWYxMzEwZjQ0MGUxNTkuLjcxYmEwNTk2ZGE2NmQwOWYzM2RlZWFlOGEwMDk3
NTM5YmZhYjAyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgc2Vy
dmljZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VUeXBlOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIGNvbnN0IEtVUkwmIGxvYWRl
ZFVybCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVkVXJsOyB9CisgICAgY29uc3QgVVJMJiBsb2Fk
ZWRVcmwoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlZFVybDsgfQogCiAgICAgY29uc3QgU3RyaW5n
IGxvYWRlZE1pbWVUeXBlKCkgY29uc3QKICAgICB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc3RhcnRTbmFwc2hvdHRlZFBsdWdJbigpOwogCiAgICAgLy8gUGx1Zy1pbiBV
UkwgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHVybCgpIHdpdGggb3ZlcnJpZGluZyBwYXJhbWV0
ZXJzLgotICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwm
IHBsdWdJblVSTCk7CisgICAgdm9pZCBzdWJmcmFtZUxvYWRlcldpbGxDcmVhdGVQbHVnSW4oY29u
c3QgVVJMJiBwbHVnSW5VUkwpOwogICAgIHZvaWQgc3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVn
SW4oY29uc3QgV2lkZ2V0Kik7CiAKICAgICB2b2lkIHNldElzUHJpbWFyeVNuYXBzaG90dGVkUGx1
Z0luKGJvb2wpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8SFRN
TEltYWdlTG9hZGVyPiBtX2ltYWdlTG9hZGVyOwogICAgIFN0cmluZyBtX3NlcnZpY2VUeXBlOwog
ICAgIFN0cmluZyBtX3VybDsKLSAgICBLVVJMIG1fbG9hZGVkVXJsOworICAgIFVSTCBtX2xvYWRl
ZFVybDsKIAogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqLCB1bnNp
Z25lZCA9IDApOwogICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggY2VhYzRl
MmRmMTkwZTlmMDg2NzcwNzk1NjcwNTFlMTk2ZWRhZTQ2Yi4uNjYxZTM4MjI0ODhmNmI0NjVlNDdm
YTA3OWFhM2U1YWIwNzQ1MzJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxl
bWVudC5jcHAKQEAgLTEwNSwxMiArMTA1LDEyIEBAIGJvb2wgSFRNTFNjcmlwdEVsZW1lbnQ6OmFz
eW5jKCkgY29uc3QKICAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShhc3luY0F0dHIpIHx8IGZv
cmNlQXN5bmMoKTsKIH0KIAotS1VSTCBIVE1MU2NyaXB0RWxlbWVudDo6c3JjKCkgY29uc3QKK1VS
TCBIVE1MU2NyaXB0RWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpKTsKIH0KIAotdm9pZCBIVE1MU2Ny
aXB0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JiB1cmxzKSBjb25zdAordm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTEVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IGFlNWNhMWJiM2VjYjM4NjI2NTQ0M2IxMmRhNmYy
NTFiYWRhNGVhMGIuLjY3MjI4ZjhhZjZhMjBkYWRjZTllMzQyNGQ2MjA5Njg1YzlmZDRhMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAg
cHVibGljOgogICAgIFN0cmluZyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gc2NyaXB0Q29udGVudCgp
OyB9CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogCi0gICAgS1VSTCBzcmMoKSBj
b25zdDsKKyAgICBVUkwgc3JjKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEFzeW5jKGJvb2wpOwog
ICAgIGJvb2wgYXN5bmMoKSBjb25zdDsKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVS
UklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VB
dHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIHNvdXJjZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgY2hh
cnNldEF0dHJpYnV0ZVZhbHVlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcAppbmRleCAxODI4NGM4ZmE3MDhlYWY2M2RmNmM5MzI0ODhjOTI0MDE1ZGQ2YmY2
Li5hOThiZjE0ODk5OTU3NjNlZjg1NzFlNzA0ZTAwZmRiYWFhNTY5YTdkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEhU
TUxTdHlsZUVsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJj
ZXMoYm9vbCBlcnJvck9jYwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIAotdm9pZCBIVE1M
U3R5bGVFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMpIGNvbnN0Cit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogeyAgICAKICAgICBIVE1M
RWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDhmOTQzODhjYmFhZDFhOTIyMDc3NWJkNTMy
ODA3MjkzMDY2MjFlZmEuLmZiYTBhMDNhMjk3MTc2Y2NjZWNlYzQyNzg0ODIwZTU5NTI5YzUyZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGlj
YWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3VycmVkKTsKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdE
eW5hbWljU2hlZXQoZG9jdW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAgICAgdm9pZCBzY29wZWRBdHRyaWJ1dGVD
aGFuZ2VkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
ZWxsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50
LmNwcAppbmRleCA3ZmIyZGFlYzMzZDViZjZjM2NkNzBkNDQxOTAxMWY3YzllMDQ1MmEyLi5mMzU3
MjYwNjA4MThkNWYzM2UyOWIxZTU5OGRkNzNhOTMxNTgyNGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFN0cmlu
ZyBIVE1MVGFibGVDZWxsRWxlbWVudDo6c2NvcGUoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRy
aWJ1dGUoc2NvcGVBdHRyKTsKIH0KIAotdm9pZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9p
ZCBIVE1MVGFibGVDZWxsRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RI
YXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6OmFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5oCmluZGV4IDk4MjcwZTNjNTRkZjFmOGI5MDE5YmU4NWUwY2Nh
MzUzZmY4ZjIyMTguLmZlMDE2NzZlMjdlYjRlYzdiNDk0MDE5ZTFkMGNlN2IxMDBlMWE0MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dDsKIH07CiAKIEhUTUxUYWJsZUNlbGxFbGVtZW50KiB0b0hUTUxUYWJsZUNlbGxFbGVtZW50KE5v
ZGUqIG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXgg
YTAyOWI1MDgzYzUzM2IzYzM5OTcwMGVlY2Y0YWIyY2VlZGIzOGE5Ni4uOTdiM2IwODM5MGY2Njk4
MDZiMTZlNGQ0Njg1NWQzNjg5YjYxNWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgU3RyaW5nIEhUTUxUYWJsZUVsZW1lbnQ6
OnN1bW1hcnkoKSBjb25zdAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoc3VtbWFyeUF0dHIpOwog
fQogCi12b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3ZvaWQgSFRNTFRhYmxlRWxlbWVudDo6YWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7
CiAgICAgSFRNTEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyh1cmxzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCAwOGQyM2UzYTMzMmE5M2U5
ODk4MTYzNTAxMjA1YWRlYzg3ODU2MmFlLi5lY2U1MTVkNDcwNDU1YjgwNTk0YjRlZDA4MTZlYzVk
MTlkYjA3ZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaApAQCAtNzks
NyArNzksNyBAQCBwcml2YXRlOgogICAgIC8vIFVzZWQgdG8gb2J0YWluIGVpdGhlciBhIHNvbGlk
IG9yIG91dHNldCBib3JkZXIgZGVjbCBhbmQgdG8gZGVhbCB3aXRoIHRoZSBmcmFtZSBhbmQgcnVs
ZXMgYXR0cmlidXRlcy4KICAgICB2aXJ0dWFsIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIGFkZGl0
aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhh
c2hTZXQ8VVJMPiYpIGNvbnN0OwogCiAgICAgZW51bSBUYWJsZVJ1bGVzIHsgVW5zZXRSdWxlcywg
Tm9uZVJ1bGVzLCBHcm91cHNSdWxlcywgUm93c1J1bGVzLCBDb2xzUnVsZXMsIEFsbFJ1bGVzIH07
CiAgICAgZW51bSBDZWxsQm9yZGVycyB7IE5vQm9yZGVycywgU29saWRCb3JkZXJzLCBJbnNldEJv
cmRlcnMsIFNvbGlkQm9yZGVyc0NvbHNPbmx5LCBTb2xpZEJvcmRlcnNSb3dzT25seSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggODU3ZTIwZjI3MzBlMzc3
Y2IzOTVlYTgzNzNlOGZhYzExN2Y1MDY5My4uZGIzMWUyMDA4M2YxMjk2OTUyZmQ0ZTgxZGRiY2U2
NjZiZWExYTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKICNpZiAhTE9HX0RJU0FCTEVECi1zdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdU
cmFjayhjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhj
b25zdCBVUkwmIHVybCkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVVSTExl
bmd0aEZvckxvZ2dpbmcgPSAxMjg7CiAgICAgCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHIKICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQogCi1LVVJMIEhUTUxUcmFja0VsZW1lbnQ6OnNyYygpIGNvbnN0CitVUkwgSFRNTFRy
YWNrRWxlbWVudDo6c3JjKCkgY29uc3QKIHsKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChnZXRBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQg
SFRNTFRyYWNrRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTFRyYWNrRWxlbWVudD4q
KQogICAgIHNldFJlYWR5U3RhdGUoSFRNTFRyYWNrRWxlbWVudDo6TE9BRElORyk7CiAKICAgICAv
LyA3LiBMZXQgVVJMIGJlIHRoZSB0cmFjayBVUkwgb2YgdGhlIHRyYWNrIGVsZW1lbnQuCi0gICAg
S1VSTCB1cmwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBVUkwgdXJs
ID0gZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAKICAgICAvLyA4LiBJZiB0aGUg
dHJhY2sgZWxlbWVudCdzIHBhcmVudCBpcyBhIG1lZGlhIGVsZW1lbnQgdGhlbiBsZXQgQ09SUyBt
b2RlIGJlIHRoZSBzdGF0ZSBvZiB0aGUgcGFyZW50IG1lZGlhCiAgICAgLy8gZWxlbWVudCdzIGNy
b3Nzb3JpZ2luIGNvbnRlbnQgYXR0cmlidXRlLiBPdGhlcndpc2UsIGxldCBDT1JTIG1vZGUgYmUg
Tm8gQ09SUy4KQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRU
aW1lckZpcmVkKFRpbWVyPEhUTUxUcmFja0VsZW1lbnQ+KikKICAgICBlbnN1cmVUcmFjaygpLnNj
aGVkdWxlTG9hZCh1cmwpOwogfQogCi1ib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwo
Y29uc3QgS1VSTCYgdXJsKQorYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0
IFVSTCYgdXJsKQogewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCmluZGV4IDNiOWM0ZjcyY2I0YjI3
NTRkNDY4MTA3OWJlMjVjOWUyYmNjOTcxY2EuLmI3NjE1MWI2ZDE4NTdkMGFjNzAzZTQ4NzU4OWNi
MmY0OGZkMWViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKIAotICAgIEtVUkwgc3JjKCkgY29uc3Q7CisgICAgVVJMIHNyYygpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogCiAgICAgU3RyaW5nIGtpbmQoKTsKQEAg
LTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAKICAgICBMb2FkYWJs
ZVRleHRUcmFjayYgZW5zdXJlVHJhY2soKTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChj
b25zdCBLVVJMJik7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoY29uc3QgVVJMJik7CiAK
ICAgICBSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CiAgICAgVGltZXI8SFRNTFRy
YWNrRWxlbWVudD4gbV9sb2FkVGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAppbmRleCBhMTAzNjgzYzkxYTMxN2M1ZmNmZWIzZDQ0ODQ5OTZkZTgxMDA1YWMxLi5l
ZDY3YzZiZTQ2NDYyNjhlYmEyNTkzODk1ODJjOTY3YTUwN2QyYWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxWaWRlb0VsZW1lbnQ6OmltYWdlU291cmNlVVJMKCkgY29uc3QKIHZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkKIHsKICAg
ICBEaXNwbGF5TW9kZSBvbGRNb2RlID0gZGlzcGxheU1vZGUoKTsKLSAgICBLVVJMIHBvc3RlciA9
IHBvc3RlckltYWdlVVJMKCk7CisgICAgVVJMIHBvc3RlciA9IHBvc3RlckltYWdlVVJMKCk7CiAK
ICAgICBpZiAoIXBvc3Rlci5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIHBvc3Rl
ciBwYXRoLCBidXQgb25seSBzaG93IGl0IHVudGlsIHRoZSB1c2VyIHRyaWdnZXJzIGRpc3BsYXkg
YnkgcGxheWluZyBvciBzZWVraW5nIGFuZCB0aGUKQEAgLTMxNSwxMSArMzE1LDExIEBAIHVuc2ln
bmVkIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdERyb3BwZWRGcmFtZUNvdW50KCkgY29uc3QKIH0K
ICNlbmRpZgogCi1LVVJMIEhUTUxWaWRlb0VsZW1lbnQ6OnBvc3RlckltYWdlVVJMKCkgY29uc3QK
K1VSTCBIVE1MVmlkZW9FbGVtZW50Ojpwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVNvdXJjZVVS
TCgpKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAg
ICAgICAgcmV0dXJuIFVSTCgpOwogICAgIHJldHVybiBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVy
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggOGVlMjAy
ZWY5Y2Y0NWQ2ZDJhZTY4NTFmNGIyZDVmNTA4MWQxZTY1NC4uYmEwZjViNGNiOWJkOGRmMjQzODBi
Yjg3NjQ2MjA2YjAzMjdkOGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9z
dGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNw
bGF5TW9kZSgpID09IFBvc3RlcldhaXRpbmdGb3JWaWRlbzsgfQogCi0gICAgS1VSTCBwb3N0ZXJJ
bWFnZVVSTCgpIGNvbnN0OworICAgIFVSTCBwb3N0ZXJJbWFnZVVSTCgpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIEhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
JiwgYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNl
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50
LmNwcAppbmRleCA3NjI0ZmU5MjkwY2FkNmY5ZjRkMzBmYzEzOWZlZmIzYjUwYzA3ZjFiLi5kYjM1
NWFjNGI3MzcwN2I3ZTVlMzZjNTM1YTUzNDVkMTdjNGIyY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MVmll
d1NvdXJjZURvY3VtZW50OjpIVE1MVmlld1NvdXJjZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorSFRNTFZpZXdTb3VyY2VEb2N1
bWVudDo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwp
CiAgICAgLCBtX3R5cGUobWltZVR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZXdTb3VyY2VEb2N1bWVudC5oCmluZGV4IGNlZDU5ZGYzM2Y3NjkwZTY4MDhkYjg3ODNjY2VhMmEz
M2RmOGViODAuLmM0ZWY1ZDBmNmE4NDM3NTcyOTJlZmUwNzMyMWUxMmQ1MjJjN2Y5MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCBG
SU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxWaWV3U291cmNlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MVmlld1NvdXJjZURvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSFRNTFZpZXdTb3VyY2VEb2N1bWVudChmcmFtZSwgdXJsLCBtaW1lVHlwZSkpOwogICAg
IH0KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkU291cmNlKGNvbnN0IFN0
cmluZyYsIEhUTUxUb2tlbiYpOwogCiBwcml2YXRlOgotICAgIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgSFRN
TFZpZXdTb3VyY2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOwogCiAgICAgLy8gUmV0dXJucyBIVE1MVmlld1NvdXJjZVBhcnNlciBvciBUZXh0RG9j
dW1lbnRQYXJzZXIgYmFzZWQgb24gbV90eXBlLgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50
LmNwcAppbmRleCBkYWVhMDFlZThlYzdmYTBmOWMwMmNkY2E3YzExOTg5MTZhZmZmZTRhLi5hY2I2
NzJkYTJlNjVlNmM2NTIwNjlkNDVlNDg5OTAxYmEyODU3MThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW1hZ2VEb2N1bWVudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnRQ
YXJzZXI6OmZpbmlzaCgpCiAgICAgCiAvLyAtLS0tLS0tLQogCi1JbWFnZURvY3VtZW50OjpJbWFn
ZURvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorSW1hZ2VEb2N1bWVudDo6
SW1hZ2VEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIDogSFRNTERv
Y3VtZW50KGZyYW1lLCB1cmwsIEltYWdlRG9jdW1lbnRDbGFzcykKICAgICAsIG1faW1hZ2VFbGVt
ZW50KDApCiAgICAgLCBtX2ltYWdlU2l6ZUlzS25vd24oZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VEb2N1bWVudC5oCmluZGV4IDMyMDRkMDE2ZDJjYzZmODdjOTFjYjI1MTU5YmM3MWYyYzI4MDZl
OWIuLmVkNTMzOWNhODY1MzIyOGJlZWE5ODMwODk3NGE2MTkyZjdkM2Q5ZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VEb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEltYWdlRG9jdW1l
bnRFbGVtZW50OwogCiBjbGFzcyBJbWFnZURvY3VtZW50IEZJTkFMIDogcHVibGljIEhUTUxEb2N1
bWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEltYWdlRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURvY3VtZW50KGZyYW1lLCB1cmwp
KTsKICAgICB9CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGltYWdlQ2xpY2tl
ZChpbnQgeCwgaW50IHkpOwogCiBwcml2YXRlOgotICAgIEltYWdlRG9jdW1lbnQoRnJhbWUqLCBj
b25zdCBLVVJMJik7CisgICAgSW1hZ2VEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCmluZGV4IGQ4ZGM1ZjkwNjFhNDQy
ZmYwNjBlNzg1MjNmMGMyMzhlYzI4NTRkMzcuLjdmMGVkZmIwODQ4OWNmOTdkZmRmNDQzNzdlZTU4
MDA5NjJlYjgyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6YXBwZW5kQnl0ZXMoRG9jdW1l
bnRXcml0ZXIqLCBjb25zdCBjaGFyKiwgc2l6ZV90KQogICAgIGZpbmlzaCgpOwogfQogICAgIAot
TWVkaWFEb2N1bWVudDo6TWVkaWFEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVy
bCkKK01lZGlhRG9jdW1lbnQ6Ok1lZGlhRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwm
IHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBNZWRpYURvY3VtZW50Q2xhc3Mp
CiAgICAgLCBtX3JlcGxhY2VNZWRpYUVsZW1lbnRUaW1lcih0aGlzLCAmTWVkaWFEb2N1bWVudDo6
cmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1
bWVudC5oCmluZGV4IDNhZjU1MGUyZmEyOWUzNDNhNzcyMjQ4ZmY3NjNlMGM0MWU3ZDU4NzAuLjVm
NjExYjA5MGJlYTVjZjA0YWVkYmE2MTVhZTkxMzQ5NDE0M2JlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFEb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgTWVkaWFEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYURvY3VtZW50
PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTWVkaWFEb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQpAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtZWRpYUVsZW1lbnRTYXdVbnN1cHBvcnRl
ZFRyYWNrcygpOwogCiBwcml2YXRlOgotICAgIE1lZGlhRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBL
VVJMJik7CisgICAgTWVkaWFEb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUZyYWdtZW50VVJJUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5jcHAKaW5kZXggMzk1OWRk
YTRmMDZjMzVjZWI0YmFiYjdlNzNlMDdkZjRiYWZlNTM4Ny4uMjVhYWJiOTY2NTI2NTFlNDBkODEz
YjU3OWIxZmQzNTEyYTAyOWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUZyYWdtZW50VVJJUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJh
Z21lbnRVUklQYXJzZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGRvdWJsZSBNZWRpYUZyYWdtZW50
VVJJUGFyc2VyOjppbnZhbGlkVGltZVZhbHVlKCkKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Omlu
dmFsaWRUaW1lKCk7CiB9CiAKLU1lZGlhRnJhZ21lbnRVUklQYXJzZXI6Ok1lZGlhRnJhZ21lbnRV
UklQYXJzZXIoY29uc3QgS1VSTCYgdXJsKQorTWVkaWFGcmFnbWVudFVSSVBhcnNlcjo6TWVkaWFG
cmFnbWVudFVSSVBhcnNlcihjb25zdCBVUkwmIHVybCkKICAgICA6IG1fdXJsKHVybCkKICAgICAs
IG1fdGltZUZvcm1hdChOb25lKQogICAgICwgbV9zdGFydFRpbWUoTWVkaWFQbGF5ZXI6OmludmFs
aWRUaW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRV
UklQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5o
CmluZGV4IDE3ZGZjM2Y3OTAwNjVkM2Y0MTQ0OWM0NjhhZTU4ZmQ5OGM4ZDhkM2QuLjkzMmM3OTQ5
YTVmYTQ0YWJjOWQ5ZDNjYzE0YWNjOTg3YjRhNGZkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCkBAIC0yOCwxNyArMjgsMTcgQEAKIAogI2lmIEVO
QUJMRShWSURFTykKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIAogY2xhc3MgTWVkaWFGcmFnbWVudFVSSVBhcnNlciBGSU5BTCB7CiBwdWJs
aWM6CiAgICAgCi0gICAgTWVkaWFGcmFnbWVudFVSSVBhcnNlcihjb25zdCBLVVJMJik7CisgICAg
TWVkaWFGcmFnbWVudFVSSVBhcnNlcihjb25zdCBVUkwmKTsKIAogICAgIGRvdWJsZSBzdGFydFRp
bWUoKTsKICAgICBkb3VibGUgZW5kVGltZSgpOwpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgcGFyc2VOUFRGcmFnbWVudChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwg
ZG91YmxlJiBzdGFydFRpbWUsIGRvdWJsZSYgZW5kVGltZSk7CiAgICAgYm9vbCBwYXJzZU5QVFRp
bWUoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkJiBvZmZzZXQsIGRvdWJs
ZSYgdGltZSk7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBUaW1lRm9y
bWF0IG1fdGltZUZvcm1hdDsKICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAgICAgZG91YmxlIG1f
ZW5kVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHAKaW5kZXggNTI5M2Rj
ZDFhODVlNjE3MTViZDhhMWY4NmEyMTNlNDcwNzE4YjZhOC4uMmMzYjRiMjgyMjk5NDlmYzY3ODc5
NWFhM2U5MjE0MjRkZWFkZTU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFBsdWdpbkRvY3VtZW50UGFyc2VyOjphcHBlbmRC
eXRlcyhEb2N1bWVudFdyaXRlciosIGNvbnN0IGNoYXIqLCBzaXplX3QpCiAgICAgfQogfQogCi1Q
bHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1
cmwpCitQbHVnaW5Eb2N1bWVudDo6UGx1Z2luRG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHVybCkKICAgICA6IEhUTUxEb2N1bWVudChmcmFtZSwgdXJsLCBQbHVnaW5Eb2N1bWVudENs
YXNzKQogICAgICwgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkodHJ1ZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRleCBlMGJiZDk2ZmU5MTM1ZTIyM2NkODFlM2ExMGQw
NGY3NzUzYzEzNDk4Li4yMGU0YzhjNjRhOGI0ZWFlMmEyMjBmYTZjZWZmOGI3ZDRhNTQyM2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNz
IFdpZGdldDsKIAogY2xhc3MgUGx1Z2luRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3Vt
ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Eb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsdWdpbkRvY3VtZW50PiBjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luRG9jdW1lbnQoZnJhbWUsIHVy
bCkpOwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkTG9h
ZFBsdWdpbk1hbnVhbGx5KCkgeyByZXR1cm4gbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHk7IH0K
IAogcHJpdmF0ZToKLSAgICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAg
ICBQbHVnaW5Eb2N1bWVudChGcmFtZSosIGNvbnN0IFVSTCYpOwogCiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBPVkVSUklERTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5jcHAKaW5kZXggNWFkOGZjNjM4NWM3MjQ5NzM2
Y2Y1ZGM1M2Y3Mjc2YTA4MWVhZjIyMS4uMmJmN2Q3MGNmNGIyM2NmY2E1MDJkMmVhMjM0ZDhhN2Vk
MWViNzkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QdWJsaWNVUkxNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1B1YmxpY1VSTE1hbmFnZXIuY3BwCkBAIC0y
OSwyMCArMjksMjAgQEAKIAogI2lmIEVOQUJMRShCTE9CKQogCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUHVibGlj
VVJMTWFuYWdlcjo6cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VS
TCYgdXJsLCBVUkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCit2b2lkIFB1YmxpY1VSTE1hbmFn
ZXI6OnJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBV
UkxSZWdpc3RyYWJsZSogcmVnaXN0cmFibGUpCiB7CiAgICAgUmVnaXN0cnlVUkxNYXA6Oml0ZXJh
dG9yIGZvdW5kID0gbV9yZWdpc3RyeVRvVVJMLmFkZCgmcmVnaXN0cmFibGUtPnJlZ2lzdHJ5KCks
IFVSTFNldCgpKS5pdGVyYXRvcjsKICAgICBmb3VuZC0+a2V5LT5yZWdpc3RlclVSTChvcmlnaW4s
IHVybCwgcmVnaXN0cmFibGUpOwogICAgIGZvdW5kLT52YWx1ZS5hZGQodXJsLnN0cmluZygpKTsK
IH0KIAotdm9pZCBQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgS1VSTCYgdXJsKQordm9p
ZCBQdWJsaWNVUkxNYW5hZ2VyOjpyZXZva2UoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChS
ZWdpc3RyeVVSTE1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9
IG1fcmVnaXN0cnlUb1VSTC5lbmQoKTsgKytpKSB7CiAgICAgICAgIGlmIChpLT52YWx1ZS5jb250
YWlucyh1cmwuc3RyaW5nKCkpKSB7CkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUHVibGljVVJMTWFu
YWdlcjo6Y29udGV4dERlc3Ryb3llZCgpCiB7CiAgICAgZm9yIChSZWdpc3RyeVVSTE1hcDo6aXRl
cmF0b3IgaSA9IG1fcmVnaXN0cnlUb1VSTC5iZWdpbigpOyBpICE9IG1fcmVnaXN0cnlUb1VSTC5l
bmQoKTsgKytpKSB7CiAgICAgICAgIGZvciAoVVJMU2V0OjppdGVyYXRvciBqID0gaS0+dmFsdWUu
YmVnaW4oKTsgaiAhPSBpLT52YWx1ZS5lbmQoKTsgKytqKQotICAgICAgICAgICAgaS0+a2V5LT51
bnJlZ2lzdGVyVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaikpOworICAgICAgICAgICAgaS0+
a2V5LT51bnJlZ2lzdGVyVVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsICpqKSk7CiAgICAgfQogCiAg
ICAgbV9yZWdpc3RyeVRvVVJMLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1B1YmxpY1VSTE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFu
YWdlci5oCmluZGV4IGExMDkxMTE2YmVjYmE1ODBmMjhlOTNmNjAzZTE0ZThhNmRjNjc2ZTEuLjlh
ZDAxYmQ0NTg5ZTQ0NWZlMTQzZjE4ZWQxZmIxM2ZiODRkZjE4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUHVibGljVVJMTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvUHVibGljVVJMTWFuYWdlci5oCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTFJlZ2lzdHJ5OwpAQCAtNDYs
OCArNDYsOCBAQCBjbGFzcyBQdWJsaWNVUkxNYW5hZ2VyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
T3duUHRyPFB1YmxpY1VSTE1hbmFnZXI+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
dWJsaWNVUkxNYW5hZ2VyKTsgfQogCi0gICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0eU9yaWdp
biosIGNvbnN0IEtVUkwmLCBVUkxSZWdpc3RyYWJsZSopOwotICAgIHZvaWQgcmV2b2tlKGNvbnN0
IEtVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJM
JiwgVVJMUmVnaXN0cmFibGUqKTsKKyAgICB2b2lkIHJldm9rZShjb25zdCBVUkwmKTsKICAgICB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dERvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERv
Y3VtZW50LmNwcAppbmRleCA5MzM0YTM5N2JlZGYyOWM3NmUyM2NjYWM1MGNjMmYxZTk3OWNkYTVk
Li44M2VmMTMxYzViZWQyMTdmZGMwNTQ2MThjYzA2MzZkZjc0YzJkYmY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0RG9jdW1lbnQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotVGV4dERvY3VtZW50OjpUZXh0RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBL
VVJMJiB1cmwpCitUZXh0RG9jdW1lbnQ6OlRleHREb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsKQogICAgIDogSFRNTERvY3VtZW50KGZyYW1lLCB1cmwpCiB7CiAgICAgc2V0Q29t
cGF0aWJpbGl0eU1vZGUoUXVpcmtzTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHREb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RG9jdW1lbnQuaApp
bmRleCBlZWI2MDEwZWI4MDBlYmRkMTg5NDVmYzAwYTU4NjEyMzU2NTg3YjNkLi5mNGE4MzJkNzBl
ZDc1NjA4YTk3YzUzZjQ5ODY1NGE0Y2FjYWMxMGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHREb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dERvY3Vt
ZW50LmgKQEAgLTMxLDEzICszMSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRl
eHREb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBIVE1MRG9jdW1lbnQgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHREb2N1bWVudD4gY3JlYXRlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRleHREb2N1bWVudChmcmFtZSwgdXJsKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAg
IFRleHREb2N1bWVudChGcmFtZSosIGNvbnN0IEtVUkwmKTsKKyAgICBUZXh0RG9jdW1lbnQoRnJh
bWUqLCBjb25zdCBVUkwmKTsKICAgICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRQ
YXJzZXI+IGNyZWF0ZVBhcnNlcigpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNw
cAppbmRleCBlYjVhOTdiZDMzY2E5NThmOGQ0M2I5NmE4ODAzMmM2N2JmODgzM2ExLi4xYjU1ZGM4
ZTU2NmUzNDI5YjM0MjAxYzliYjY5YjE2Yjg0ZTc3MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJ
bnB1dFR5cGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIklucHV0VHlwZU5hbWVzLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3Ry
aW5ncy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw3ICs1Nyw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25z
dAogCiBib29sIFVSTElucHV0VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgIUtVUkwoS1VSTCgp
LCB2YWx1ZSkuaXNWYWxpZCgpOworICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmICFVUkwo
VVJMKCksIHZhbHVlKS5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3Ry
eS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxSZWdpc3RyeS5oCmluZGV4IDY2ODdjOWM5M2Y5
MmQwNWE0ZWY5ZmQxNWYzMzM1Y2MzODUzMmIwY2IuLjZlZTU3ZTIxY2Y5OWQyZmIyNTRmOTNiMWZh
NzZlNmIwZDJhOGExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMUmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTFJlZ2lzdHJ5LmgKQEAgLTM1LDcgKzM1
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwog
Y2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBVUkxSZWdpc3RyeTsKIApAQCAtNDksOCArNDks
OCBAQCBjbGFzcyBVUkxSZWdpc3RyeSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+VVJMUmVnaXN0cnkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgVVJMUmVnaXN0cmFibGUq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgS1VSTCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwm
LCBVUkxSZWdpc3RyYWJsZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChj
b25zdCBVUkwmKSA9IDA7CiAKICAgICAvLyBUaGlzIGlzIGFuIG9wdGlvbmFsIEFQSQogICAgIHZp
cnR1YWwgVVJMUmVnaXN0cmFibGUqIGxvb2t1cChjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyNmJjNGViOTExOWVjZjUwNTMy
ZDk4ZmMzZjliZjU4YmVjODE4M2Q3Li5kZmE5MjBlMzRmM2YwMDU2NjA1NTZhMDY0MDk2MWNmZmVk
N2ZhMjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFn
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTEsNyArOTEsNyBAQCBi
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgSFRNTFZp
ZGVvRWxlbWVudCogdmlkZW8pCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQorYm9vbCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGlmICghY2FudmFzKCktPm9yaWdpbkNsZWFuKCkgfHwgbV9jbGVhblVSTHMuY29udGFp
bnModXJsLnN0cmluZygpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA2LDcgKzEwNiw3
IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6d291bGRUYWludE9yaWdpbihjb25zdCBL
VVJMJiB1cmwpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OmNoZWNrT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDo6Y2hlY2tPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHdvdWxkVGFp
bnRPcmlnaW4odXJsKSkKICAgICAgICAgY2FudmFzKCktPnNldE9yaWdpblRhaW50ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAppbmRleCA4ZTg0OWJkZThmYjFjNGQ4MGVlYTUyOWJiNTcyZDZkOTNmZTFiZmJkLi5iNWIyNzgx
ZjcwOTViZDQyNzA4M2U4MTY1ZmQ1ZjZkZGRhOGYwNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIENhbnZhc1BhdHRlcm47CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNz
IEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwotY2xhc3MgS1VSTDsK
K2NsYXNzIFVSTDsKIGNsYXNzIFdlYkdMT2JqZWN0OwogCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdD
b250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CkBAIC02NywxNCArNjcsMTQgQEAgcHJv
dGVjdGVkOgogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MQ2FudmFzRWxlbWVu
dCopOwogICAgIGJvb2wgd291bGRUYWludE9yaWdpbihjb25zdCBIVE1MSW1hZ2VFbGVtZW50Kik7
CiAgICAgYm9vbCB3b3VsZFRhaW50T3JpZ2luKGNvbnN0IEhUTUxWaWRlb0VsZW1lbnQqKTsKLSAg
ICBib29sIHdvdWxkVGFpbnRPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIGJvb2wgd291bGRUYWlu
dE9yaWdpbihjb25zdCBVUkwmKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgY2hlY2tP
cmlnaW4oY29uc3QgVCogYXJnKQogICAgIHsKICAgICAgICAgaWYgKHdvdWxkVGFpbnRPcmlnaW4o
YXJnKSkKICAgICAgICAgICAgIGNhbnZhcygpLT5zZXRPcmlnaW5UYWludGVkKCk7CiAgICAgfQot
ICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgS1VSTCYpOworICAgIHZvaWQgY2hlY2tPcmlnaW4o
Y29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggNmQwNDBkNDc0NmRjMzVhNTBlNmE0OTMzNjg5YzZmOWQ3ZjdlYzA2NS4u
YzBmMjg4MzhmM2ZmNTEwMjhhYWU1NTYxNGMwNDA3YTJjYjQ0NWI2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01
NTU5LDcgKzU1NTksNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVIVE1M
SW1hZ2VFbGVtZW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgSAogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1l
LCAibm8gaW1hZ2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBjb25zdCBL
VVJMJiB1cmwgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+cmVzcG9uc2UoKS51cmwoKTsKKyAgICBj
b25zdCBVUkwmIHVybCA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5yZXNwb25zZSgpLnVybCgpOwog
ICAgIGlmICh1cmwuaXNOdWxsKCkgfHwgdXJsLmlzRW1wdHkoKSB8fCAhdXJsLmlzVmFsaWQoKSkg
ewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCBpbWFnZSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5j
cHAKaW5kZXggNjdmNmJjYjE4Y2Q1Y2RkZTgxNTY3N2ZmMDZiMzc0ZTYwNGUyYzMyZi4uM2U3MGI3
OTkxOGQ1Nzg5MDdkZTM1YTAzYjkwN2Y1NGNmZjk2YWEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0NTU1ByZWxvYWRTY2FubmVyLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBA
IHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKCkKICAgICBpZiAocnVsZUVxdWFsSWdu
b3JpbmdDYXNlKG1fcnVsZSwgImltcG9ydCIpKSB7CiAgICAgICAgIFN0cmluZyB1cmwgPSBwYXJz
ZUNTU1N0cmluZ09yVVJMKG1fcnVsZVZhbHVlLmRhdGEoKSwgbV9ydWxlVmFsdWUuc2l6ZSgpKTsK
ICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGJhc2VFbGVt
ZW50VVJMOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFzc2VkIGluIGZyb20gdGhlIEhUTUxQ
cmVsb2FkU2NhbmVyIHZpYSBzY2FuKCkhCisgICAgICAgICAgICBVUkwgYmFzZUVsZW1lbnRVUkw7
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwYXNzZWQgaW4gZnJvbSB0aGUgSFRNTFByZWxvYWRT
Y2FuZXIgdmlhIHNjYW4oKSEKICAgICAgICAgICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVx
dWVzdCA9IFByZWxvYWRSZXF1ZXN0OjpjcmVhdGUoImNzcyIsIHVybCwgYmFzZUVsZW1lbnRVUkws
IENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgdGhpcyBiZSBpbmNsdWRpbmcgdGhlIGNoYXJzZXQgaW4gdGhlIHByZWxvYWQgcmVxdWVz
dD8KICAgICAgICAgICAgIG1fcmVxdWVzdHMtPmFwcGVuZChyZXF1ZXN0LnJlbGVhc2UoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4
IGE3Y2I3MmUyZmI5N2Q2YjU2MjE2MGI0MWMxZGQyZTg5ODQ3NmRkNWQuLjc4ZDFmMTM1Y2FiYzUx
NzQ2YjBlODQzNzQ5MzY3ZTljOWYxZTQ3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJEZWNpbWFsLmgiCiAjaW5jbHVkZSAiSFRNTElkZW50aWZpZXIuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1
ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggNDFlZTIwMTYx
YmU3NmRhNjlkOGFiMDk2ZDJiMWY1OWYxZjY2NzM4Ni4uNjQyMzU5Mzk4OTkzNWM4YjZmMzkzOWIy
NWYxZmFhMmYwODU1YWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogCi0gICAgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGVQcmVsb2FkUmVxdWVz
dChjb25zdCBLVVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQorICAgIE93blB0cjxQcmVsb2FkUmVxdWVz
dD4gY3JlYXRlUHJlbG9hZFJlcXVlc3QoY29uc3QgVVJMJiBwcmVkaWN0ZWRCYXNlVVJMKQogICAg
IHsKICAgICAgICAgaWYgKCFzaG91bGRQcmVsb2FkKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZGV2aWNlU2Nh
bGVGYWN0b3I7CiB9OwogCi1Ub2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2FubmVy
KGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK1Rva2Vu
UHJlbG9hZFNjYW5uZXI6OlRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1bWVudFVS
TCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgOiBtX2RvY3VtZW50VVJMKGRvY3VtZW50
VVJMKQogICAgICwgbV9pblN0eWxlKGZhbHNlKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihk
ZXZpY2VTY2FsZUZhY3RvcikKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgVG9rZW5QcmVsb2Fk
U2Nhbm5lcjo6dXBkYXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYgdG9rZW4pCiB7CiAg
ICAgQVNTRVJUKG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwuaXNFbXB0eSgpKTsKICAgICBpZiAo
Y29uc3QgdHlwZW5hbWUgVG9rZW46OkF0dHJpYnV0ZSogaHJlZkF0dHJpYnV0ZSA9IHRva2VuLmdl
dEF0dHJpYnV0ZUl0ZW0oaHJlZkF0dHIpKQotICAgICAgICBtX3ByZWRpY3RlZEJhc2VFbGVtZW50
VVJMID0gS1VSTChtX2RvY3VtZW50VVJMLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoaHJlZkF0dHJpYnV0ZS0+dmFsdWUpKS5jb3B5KCk7CisgICAgICAgIG1fcHJlZGljdGVkQmFz
ZUVsZW1lbnRVUkwgPSBVUkwobV9kb2N1bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29weSgpOwogfQogCi1IVE1MUHJlbG9h
ZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQor
SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9w
dGlvbnMmIG9wdGlvbnMsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yKQogICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3RvcikK
ICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zKSkKIHsKQEAg
LTM5OSw3ICszOTksNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6YXBwZW5kVG9FbmQoY29u
c3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgbV9zb3VyY2UuYXBwZW5kKHNvdXJjZSk7
CiB9CiAKLXZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjpzY2FuKEhUTUxSZXNvdXJjZVByZWxvYWRl
ciogcHJlbG9hZGVyLCBjb25zdCBLVVJMJiBzdGFydGluZ0Jhc2VFbGVtZW50VVJMKQordm9pZCBI
VE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4oSFRNTFJlc291cmNlUHJlbG9hZGVyKiBwcmVsb2FkZXIs
IGNvbnN0IFVSTCYgc3RhcnRpbmdCYXNlRWxlbWVudFVSTCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOyAvLyBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvciBvbmx5IHdvcmtzIG9u
IHRoZSBtYWluIHRocmVhZC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFByZWxvYWRTY2FubmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UHJlbG9hZFNjYW5uZXIuaAppbmRleCA3YzNmNTM1YzU3N2Q4MTdjZTMyMGUyZjYzNmE5MzU4NjI0
MmQxZDk3Li40ZmFmN2ZhZmM0Mzg3ZTc2M2QzMTAwZmI5MGQ5MWViZWRmMWMwNzBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuaApAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CiBjbGFzcyBUb2tlblByZWxvYWRTY2Fu
bmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUb2tlblByZWxvYWRTY2FubmVyKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVG9rZW5QcmVsb2Fk
U2Nhbm5lcihjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSAxLjApOworICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgVVJMJiBkb2N1
bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwogICAgIH5Ub2tlblByZWxv
YWRTY2FubmVyKCk7CiAKICAgICB2b2lkIHNjYW4oY29uc3QgSFRNTFRva2VuJiwgUHJlbG9hZFJl
cXVlc3RTdHJlYW0mIHJlcXVlc3RzKTsKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2Nhbihjb25zdCBDb21wYWN0SFRNTFRva2VuJiwgUHJlbG9hZFJlcXVlc3RTdHJlYW0mIHJl
cXVlc3RzKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRQcmVkaWN0ZWRCYXNlRWxlbWVudFVSTChj
b25zdCBLVVJMJiB1cmwpIHsgbV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCA9IHVybDsgfQorICAg
IHZvaWQgc2V0UHJlZGljdGVkQmFzZUVsZW1lbnRVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV9wcmVk
aWN0ZWRCYXNlRWxlbWVudFVSTCA9IHVybDsgfQogCiAgICAgLy8gQSBUb2tlblByZWxvYWRTY2Fu
bmVyQ2hlY2twb2ludCBpcyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBjYWxsIHRvIHJld2luZFRvLAog
ICAgIC8vIGF0IHdoaWNoIHBvaW50IGFsbCBvdXRzdGFuZGluZyBjaGVja3BvaW50cyBhcmUgaW52
YWxpZGF0ZWQuCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVk
aWN0ZWRCYXNlVVJMKGNvbnN0IFRva2VuJik7CiAKICAgICBzdHJ1Y3QgQ2hlY2twb2ludCB7Ci0g
ICAgICAgIENoZWNrcG9pbnQoY29uc3QgS1VSTCYgcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwsIGJv
b2wgaW5TdHlsZQorICAgICAgICBDaGVja3BvaW50KGNvbnN0IFVSTCYgcHJlZGljdGVkQmFzZUVs
ZW1lbnRVUkwsIGJvb2wgaW5TdHlsZQogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAg
ICAgICAgICAgLCBzaXplX3QgdGVtcGxhdGVDb3VudAogI2VuZGlmCkBAIC0xMDcsNyArMTA3LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgS1VSTCBwcmVkaWN0
ZWRCYXNlRWxlbWVudFVSTDsKKyAgICAgICAgVVJMIHByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwog
ICAgICAgICBib29sIGluU3R5bGU7CiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAg
ICAgIHNpemVfdCB0ZW1wbGF0ZUNvdW50OwpAQCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAg
ICAgfTsKIAogICAgIENTU1ByZWxvYWRTY2FubmVyIG1fY3NzU2Nhbm5lcjsKLSAgICBjb25zdCBL
VVJMIG1fZG9jdW1lbnRVUkw7Ci0gICAgS1VSTCBtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMOwor
ICAgIGNvbnN0IFVSTCBtX2RvY3VtZW50VVJMOworICAgIFVSTCBtX3ByZWRpY3RlZEJhc2VFbGVt
ZW50VVJMOwogICAgIGJvb2wgbV9pblN0eWxlOwogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVGYWN0
b3I7CiAKQEAgLTEzMCwxMSArMTMwLDExIEBAIHByaXZhdGU6CiBjbGFzcyBIVE1MUHJlbG9hZFNj
YW5uZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxQcmVsb2FkU2Nhbm5lcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEhUTUxQcmVsb2FkU2Nhbm5lcihj
b25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IDEuMCk7CisgICAgSFRNTFByZWxvYWRTY2FubmVyKGNvbnN0IEhU
TUxQYXJzZXJPcHRpb25zJiwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSAxLjApOwogICAgIH5IVE1MUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQg
YXBwZW5kVG9FbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJik7Ci0gICAgdm9pZCBzY2FuKEhUTUxS
ZXNvdXJjZVByZWxvYWRlciosIGNvbnN0IEtVUkwmIGRvY3VtZW50QmFzZUVsZW1lbnRVUkwpOwor
ICAgIHZvaWQgc2NhbihIVE1MUmVzb3VyY2VQcmVsb2FkZXIqLCBjb25zdCBVUkwmIGRvY3VtZW50
QmFzZUVsZW1lbnRVUkwpOwogCiBwcml2YXRlOgogICAgIFRva2VuUHJlbG9hZFNjYW5uZXIgbV9z
Y2FubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291
cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJj
ZVByZWxvYWRlci5jcHAKaW5kZXggMzYzMzQxYWEwMDNiYmU2NTkwNmIxNTc2ZWU0OTE0YmJlMDdi
ZDczNy4uYjEwMDk5NzhhNjFhZTIzYWI2MDEwMGFjYmY2YjRhNWExMjg5NGQ2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIGJvb2wgUHJlbG9hZFJlcXVlc3Q6OmlzU2FmZVRvU2VuZFRvQW5v
dGhlclRocmVhZCgpIGNvbnN0CiAgICAgICAgICYmIG1fYmFzZVVSTC5pc1NhZmVUb1NlbmRUb0Fu
b3RoZXJUaHJlYWQoKTsKIH0KIAotS1VSTCBQcmVsb2FkUmVxdWVzdDo6Y29tcGxldGVVUkwoRG9j
dW1lbnQqIGRvY3VtZW50KQorVVJMIFByZWxvYWRSZXF1ZXN0Ojpjb21wbGV0ZVVSTChEb2N1bWVu
dCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5jb21wbGV0ZVVSTChtX3Jlc291
cmNlVVJMLCBtX2Jhc2VVUkwuaXNFbXB0eSgpID8gZG9jdW1lbnQtPnVybCgpIDogbV9iYXNlVVJM
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJj
ZVByZWxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJl
bG9hZGVyLmgKaW5kZXggZWY5MzM5NWIxMzA2YjhiZTkyZDY0NDFiMWQ5YzUyY2U5ZWFjNTYzZi4u
YWFhODdlYTMyMzU4YWFjOWI3ZDJiZGM4OTIyNmM0YjIzNzM3NDRlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmgKQEAgLTMzLDEy
ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFByZWxvYWRSZXF1ZXN0IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSwgY29uc3QgU3RyaW5n
JiBtZWRpYUF0dHJpYnV0ZSkKKyAgICBzdGF0aWMgT3duUHRyPFByZWxvYWRSZXF1ZXN0PiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkwsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgcmVzb3VyY2VUeXBlLCBjb25z
dCBTdHJpbmcmIG1lZGlhQXR0cmlidXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBQcmVsb2FkUmVxdWVzdChpbml0aWF0b3IsIHJlc291cmNlVVJMLCBiYXNlVVJMLCByZXNv
dXJjZVR5cGUsIG1lZGlhQXR0cmlidXRlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIE93blB0cjxQ
cmVsb2FkUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJp
bmcmIHJlc291cmNlVVJMLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlw
ZSByZXNvdXJjZVR5cGUpCisgICAgc3RhdGljIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yLCBjb25zdCBTdHJpbmcmIHJlc291cmNlVVJMLCBjb25z
dCBVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNlVHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHJlbG9hZFJlcXVlc3QoaW5pdGlhdG9yLCBy
ZXNvdXJjZVVSTCwgYmFzZVVSTCwgcmVzb3VyY2VUeXBlLCBTdHJpbmcoKSkpOwogICAgIH0KQEAg
LTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291cmNl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VUeXBlOyB9CiAKIHByaXZhdGU6Ci0gICAg
UHJlbG9hZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBpbml0aWF0b3IsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VVUkwsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIENhY2hlZFJlc291cmNlOjpUeXBlIHJlc291
cmNlVHlwZSwgY29uc3QgU3RyaW5nJiBtZWRpYUF0dHJpYnV0ZSkKKyAgICBQcmVsb2FkUmVxdWVz
dChjb25zdCBTdHJpbmcmIGluaXRpYXRvciwgY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCwgY29u
c3QgVVJMJiBiYXNlVVJMLCBDYWNoZWRSZXNvdXJjZTo6VHlwZSByZXNvdXJjZVR5cGUsIGNvbnN0
IFN0cmluZyYgbWVkaWFBdHRyaWJ1dGUpCiAgICAgICAgIDogbV9pbml0aWF0b3IoaW5pdGlhdG9y
KQogICAgICAgICAsIG1fcmVzb3VyY2VVUkwocmVzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCkpCiAg
ICAgICAgICwgbV9iYXNlVVJMKGJhc2VVUkwuY29weSgpKQpAQCAtNjQsMTEgKzY0LDExIEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEtVUkwgY29tcGxldGVVUkwoRG9jdW1lbnQqKTsK
KyAgICBVUkwgY29tcGxldGVVUkwoRG9jdW1lbnQqKTsKIAogICAgIFN0cmluZyBtX2luaXRpYXRv
cjsKICAgICBTdHJpbmcgbV9yZXNvdXJjZVVSTDsKLSAgICBLVVJMIG1fYmFzZVVSTDsKKyAgICBV
UkwgbV9iYXNlVVJMOwogICAgIFN0cmluZyBtX2NoYXJzZXQ7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgbV9yZXNvdXJjZVR5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWFBdHRyaWJ1dGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCmluZGV4IDQ5
MWRiZDM4MmNhNzJhNmUwNGYyNWJhOGYwMDI5MDJiNTEyMDkyNzAuLjVlNGY3ZWNkNDg2OWVjY2Uy
OGQ5ZDRhZDcxNWZkMWY3MGI1NDQ4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwCkBAIC03NCwxMCArNzQsMTAgQEAgdm9pZCBIVE1MU2Ny
aXB0UnVubmVyOjpkZXRhY2goKQogICAgIG1fZG9jdW1lbnQgPSAwOwogfQogCi1zdGF0aWMgS1VS
TCBkb2N1bWVudFVSTEZvclNjcmlwdEV4ZWN1dGlvbihEb2N1bWVudCogZG9jdW1lbnQpCitzdGF0
aWMgVVJMIGRvY3VtZW50VVJMRm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkK
IHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgLy8gVXNlIHRoZSBVUkwg
b2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgZG9jdW1lbnQgZm9yIHRoaXMgZnJhbWUuCiAgICAgcmV0
dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKaW5kZXggM2UzOTMzNDUyYWZhNDRhYzQyMmZhZWYx
MjNjMDRmNzE4YjQxNDRhOC4uODRlYWMzNDZkY2VkMjYyNDFkNDgzYTc2MjcwY2Q0NTgwM2UyNGUx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyYW1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKQEAgLTE1
Niw4ICsxNTYsOCBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBkZWNvZGUxNkJpdFVuaWNvZGVFc2Nh
cGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5n
IGRlY29kZVN0YW5kYXJkVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIFdlIHVzZSBkZWNvZGVFc2Nh
cGVTZXF1ZW5jZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygpIChkZWNs
YXJlZCBpbiBLVVJMLmgpIHRvCi0gICAgLy8gYXZvaWQgcGxhdGZvcm0tc3BlY2lmaWMgVVJMIGRl
Y29kaW5nIGRpZmZlcmVuY2VzIChlLmcuIEtVUkxHb29nbGUpLgorICAgIC8vIFdlIHVzZSBkZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMoKSBpbnN0ZWFkIG9mIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcygp
IChkZWNsYXJlZCBpbiBVUkwuaCkgdG8KKyAgICAvLyBhdm9pZCBwbGF0Zm9ybS1zcGVjaWZpYyBV
UkwgZGVjb2RpbmcgZGlmZmVyZW5jZXMgKGUuZy4gVVJMR29vZ2xlKS4KICAgICByZXR1cm4gZGVj
b2RlRXNjYXBlU2VxdWVuY2VzPFVSTEVzY2FwZVNlcXVlbmNlPihzdHJpbmcsIGVuY29kaW5nKTsK
IH0KIApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCog
ZG9jdW1lbnQsIFhTU0F1ZGl0b3JEZWxlZ2F0ZSogYXVkaXRvckRlbGVnYXRlKQogICAgICAgICBT
dHJpbmcgZXJyb3JEZXRhaWxzOwogICAgICAgICB1bnNpZ25lZCBlcnJvclBvc2l0aW9uID0gMDsK
ICAgICAgICAgU3RyaW5nIHJlcG9ydFVSTDsKLSAgICAgICAgS1VSTCB4c3NQcm90ZWN0aW9uUmVw
b3J0VVJMOworICAgICAgICBVUkwgeHNzUHJvdGVjdGlvblJlcG9ydFVSTDsKIAogICAgICAgICAv
LyBQcm9jZXNzIHRoZSBYLVhTUy1Qcm90ZWN0aW9uIGhlYWRlciwgdGhlbiBtaXggaW4gdGhlIENT
UCBoZWFkZXIncyB2YWx1ZS4KICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWZsZWN0
ZWRYU1NEaXNwb3NpdGlvbiB4c3NQcm90ZWN0aW9uSGVhZGVyID0gcGFyc2VYU1NQcm90ZWN0aW9u
SGVhZGVyKGhlYWRlclZhbHVlLCBlcnJvckRldGFpbHMsIGVycm9yUG9zaXRpb24sIHJlcG9ydFVS
TCk7CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBYU1NBdWRpdG9yOjppbml0KERvY3VtZW50KiBk
b2N1bWVudCwgWFNTQXVkaXRvckRlbGVnYXRlKiBhdWRpdG9yRGVsZWdhdGUpCiAgICAgICAgICAg
ICBpZiAoTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCksIHhzc1Byb3RlY3Rpb25SZXBvcnRVUkwpKSB7CiAgICAgICAgICAgICAgICAg
ZXJyb3JEZXRhaWxzID0gImluc2VjdXJlIHJlcG9ydGluZyBVUkwgZm9yIHNlY3VyZSBwYWdlIjsK
ICAgICAgICAgICAgICAgICB4c3NQcm90ZWN0aW9uSGVhZGVyID0gQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZWZsZWN0ZWRYU1NJbnZhbGlkOwotICAgICAgICAgICAgICAgIHhzc1Byb3RlY3Rpb25S
ZXBvcnRVUkwgPSBLVVJMKCk7CisgICAgICAgICAgICAgICAgeHNzUHJvdGVjdGlvblJlcG9ydFVS
TCA9IFVSTCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmICh4c3NQcm90
ZWN0aW9uSGVhZGVyID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTSW52YWxp
ZCkKQEAgLTcyMCw3ICs3MjAsNyBAQCBib29sIFhTU0F1ZGl0b3I6OmlzTGlrZWx5U2FmZVJlc291
cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmIChtX2RvY3VtZW50VVJMLmhvc3QoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgcmVzb3VyY2VVUkwobV9k
b2N1bWVudFVSTCwgdXJsKTsKKyAgICBVUkwgcmVzb3VyY2VVUkwobV9kb2N1bWVudFVSTCwgdXJs
KTsKICAgICByZXR1cm4gKG1fZG9jdW1lbnRVUkwuaG9zdCgpID09IHJlc291cmNlVVJMLmhvc3Qo
KSAmJiByZXNvdXJjZVVSTC5xdWVyeSgpLmlzRW1wdHkoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAppbmRleCAwNjkwYmU5MjhiMzcyMzgyYzc3Mzg2NzRiMTEy
MjE3ZjVlMDYxYTg1Li4zMjFlNmUxYTVmMzBlOGQxNTRhOTAzMDc2MWU2MTE3MWVhNzlkNTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJIVE1MVG9rZW4uaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTdWZmaXhUcmVlLmgi
CiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
QEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNDb250YWluZWRJblJlcXVl
c3QoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc0xpa2VseVNhZmVSZXNvdXJjZShjb25zdCBT
dHJpbmcmIHVybCk7CiAKLSAgICBLVVJMIG1fZG9jdW1lbnRVUkw7CisgICAgVVJMIG1fZG9jdW1l
bnRVUkw7CiAgICAgYm9vbCBtX2lzRW5hYmxlZDsKIAogICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gbV94c3NQcm90ZWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuaAppbmRleCAxZDhjN2Q4ODBl
ZDRiMmY4NDFmYzgyNzUyYTE0YTdkODc3MTczNTkzLi42NTFjNTBlZjY3YzI3OGQxYTA3NWE5ZDcz
OTliMDMyZDI4MjcyMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NB
dWRpdG9yRGVsZWdhdGUuaApAQCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBYU1NBdWRpdG9yRGVs
ZWdhdGVfaAogI2RlZmluZSBYU1NBdWRpdG9yRGVsZWdhdGVfaAogCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYzLDE0ICs2Mywx
NCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgWFNTQXVkaXRvckRlbGVnYXRlKERvY3VtZW50Kik7
CiAKICAgICB2b2lkIGRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mKTsKLSAgICB2b2lkIHNl
dFJlcG9ydFVSTChjb25zdCBLVVJMJiB1cmwpIHsgbV9yZXBvcnRVUkwgPSB1cmw7IH0KKyAgICB2
b2lkIHNldFJlcG9ydFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3JlcG9ydFVSTCA9IHVybDsgfQog
CiBwcml2YXRlOgogICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGdlbmVyYXRlVmlvbGF0aW9uUmVw
b3J0KCk7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBib29sIG1fZGlkU2VuZE5v
dGlmaWNhdGlvbnM7Ci0gICAgS1VSTCBtX3JlcG9ydFVSTDsKKyAgICBVUkwgbV9yZXBvcnRVUkw7
CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxPd25QdHI8WFNTSW5mbz4gPiBYU1NJbmZvU3RyZWFtOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAppbmRl
eCBjZTUxZjY1NWZlZGY1NzY3YTMxNTZkNzU2MDlmNTYxZTJhMGE0MmRmLi5jZWQ2Yzg2MmU4MDMx
OGEzYTkwMGM1NzI1NDI3OTk0ZDQ0NmUzNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCiAgICAgVGV4dFRyYWNrOjpjbGVhckNsaWVudCgp
OwogfQogCi12b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYg
dXJsKQordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIGlmICh1cmwgPT0gbV91cmwpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAppbmRleCAxODhlYWQxMzc1OGUw
YjFjYWM2YWRjNjUwMDM4MjA2MmE0YzUxM2Y2Li5hYmJjNzg3YTczYjgwZmM2NDc2YTBmODNiMjBm
MWE5YWU1MWMzYWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRh
YmxlVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRl
eHRUcmFjay5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50
IDogcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVy
bChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwgY29uc3QgVVJMJikg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2Fk
YWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9OwogCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJh
Y2soKTsKIAotICAgIHZvaWQgc2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNj
aGVkdWxlTG9hZChjb25zdCBVUkwmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgp
OwogCkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgSFRNTFRyYWNrRWxlbWVudCogbV90
cmFja0VsZW1lbnQ7CiAgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOwog
ICAgIE93blB0cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwotICAgIEtVUkwgbV91cmw7Cisg
ICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9pc0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApp
bmRleCBjMWMyODhkYzdiYWI2OGMyY2E3YWM5NWYwOWUwZGM3ZmFjODM4ZDg1Li4yZWVkNzQ2OTZm
NmRhYjUwMjQzMzU0NTRkNzU3YzhiZGExZTI3ZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtOTEsMTIgKzkxLDEyIEBAIHZvaWQgRE9NUGF0
Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFJl
ZlB0cjxEb2N1bWVudD4gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG1fZG9jdW1lbnQtPmlzSFRNTERv
Y3VtZW50KCkpCi0gICAgICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUoMCwg
S1VSTCgpKTsKKyAgICAgICAgbmV3RG9jdW1lbnQgPSBIVE1MRG9jdW1lbnQ6OmNyZWF0ZSgwLCBV
UkwoKSk7CiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCi0gICAg
ICAgIG5ld0RvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGVYSFRNTCgwLCBLVVJMKCkpOwor
ICAgICAgICBuZXdEb2N1bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlWEhUTUwoMCwgVVJMKCkp
OwogI2lmIEVOQUJMRShTVkcpCiAgICAgZWxzZSBpZiAobV9kb2N1bWVudC0+aXNTVkdEb2N1bWVu
dCgpKQotICAgICAgICBuZXdEb2N1bWVudCA9IERvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
KyAgICAgICAgbmV3RG9jdW1lbnQgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKICNlbmRp
ZgogCiAgICAgQVNTRVJUKG5ld0RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IDczMDJhZTE3ZDdjN2JhYjNhYWNkZWZkOTVhMTllNWM0
NmViNWVjOGMuLjI3MzI0Mjk5NDEzYzZjYzk3ZDA3MmY1YjY1ZWNmYTQ5ODI0ZWU3MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcApAQCAtMTM5LDcgKzEz
OSw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCkK
ICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmNsZWFy
SW5zcGVjdGVkT2JqZWN0cygpOwogfQogCi1ib29sIEluc3BlY3RvckFnZW50Ojppc01haW5SZXNv
dXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJs
KQorYm9vbCBJbnNwZWN0b3JBZ2VudDo6aXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKQogewogICAgIHJldHVybiBtX2luc3Bl
Y3RlZFBhZ2UtPmZyYW1lSXNNYWluRnJhbWUobG9hZGVyLT5mcmFtZSgpKSAmJiByZXF1ZXN0VXJs
ID09IGxvYWRlci0+cmVxdWVzdFVSTCgpOwogfQpAQCAtMTY5LDE0ICsxNjksMTQgQEAgdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6aW5zcGVjdChQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+IG9iamUKICAgICBtX3BlbmRpbmdJbnNwZWN0RGF0YS5zZWNvbmQgPSBoaW50
czsKIH0KIAotS1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKK1VSTCBJ
bnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbnNw
ZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAotS1VSTCBJbnNw
ZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKK1VSTCBJbnNw
ZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QKIHsKLSAgICBL
VVJMIHVybCA9IGluc3BlY3RlZFVSTCgpOworICAgIFVSTCB1cmwgPSBpbnNwZWN0ZWRVUkwoKTsK
ICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggYTBlZTBmNzUz
ZmZlZmU4NzhlZTZiYmRiOTYyOGJlZmRkMTdmNTUyNy4uNzcyYzkyYmJmMTY0MDg2MTkxYTE1NGFh
ODFkNmUyODU4NTc2ZmI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xh
c3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnN0
cnVtZW50aW5nQWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFBhZ2U7CiAK
IHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcqKTsKIAotICAgIEtVUkwgaW5zcGVjdGVkVVJMKCkgY29uc3Q7Ci0gICAgS1VSTCBpbnNwZWN0
ZWRVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdDsKKyAgICBVUkwgaW5zcGVjdGVkVVJMKCkgY29u
c3Q7CisgICAgVVJMIGluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0OwogCiAgICAg
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9mcm9udGVuZDsg
fQogCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRCdXR0
b24oYm9vbCk7CiAjZW5kaWYKIAotICAgIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBLVVJMJiByZXF1ZXN0VXJsKTsKKyAgICBib29sIGlzTWFpblJlc291
cmNlTG9hZGVyKERvY3VtZW50TG9hZGVyKiwgY29uc3QgVVJMJiByZXF1ZXN0VXJsKTsKIAogICAg
IFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCBhMjllNTRiMjVkOWUxMTAxZmQ4MzE4YTdjY2FkNWQ5ODY0M2I1NzFlLi41
MGY3ZDRjNDc4NjNhYjViYjFhMGRlZDUyMjcxOGYxZDRjZWYzMmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC02ODMs
NyArNjgzLDcgQEAgU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZv
clNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKIAogICAgIGlmICghc2NyaXB0LnVybC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkgewotICAgICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShwYWdl
QWdlbnQtPm1haW5GcmFtZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgc2NyaXB0LnVybCkpOwor
ICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcGFnZUFnZW50LT5jYWNoZWRS
ZXNvdXJjZShwYWdlQWdlbnQtPm1haW5GcmFtZSgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzY3Jp
cHQudXJsKSk7CiAgICAgICAgICAgICBpZiAocmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmcgc291cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZp
ZWxkKHNvdXJjZU1hcEhUVFBIZWFkZXIpOwogICAgICAgICAgICAgICAgIGlmICghc291cmNlTWFw
SGVhZGVyLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZpbGVTeXN0ZW1BZ2VudC5jcHAKaW5kZXggNmUyODhhZGNmZTk4OWQ1MWNjYTdjODYz
MTdjYzE3ZDI5ZDYxY2RiYi4uNDBhZDM3MDc1ZGNmZGU5YTE5YWJjNDBlODJlYWYyMmFkYTkzODNj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVTeXN0
ZW1BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZpbGVT
eXN0ZW1BZ2VudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdl
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3RydW1l
bnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTG9jYWxGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIk1ldGFkYXRhLmgiCkBAIC0yMTcsNyArMjE3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlYWREaXJlY3RvcnlFbnRyaWVzKCk7CiAKICAgICBSZWZQdHI8UmVxdWVzdERpcmVjdG9y
eUNvbnRlbnRDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7Ci0gICAgS1VSTCBtX3VybDsKKyAg
ICBVUkwgbV91cmw7CiAgICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpGaWxlU3lzdGVtOjpF
bnRyeT4gPiBtX2VudHJpZXM7CiAgICAgUmVmUHRyPERpcmVjdG9yeVJlYWRlcj4gbV9kaXJlY3Rv
cnlSZWFkZXI7CiB9OwpAQCAtMzQyLDcgKzM0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV91
cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpIHsgfQogCiAgICAgUmVmUHRyPFJlcXVlc3RNZXRhZGF0
YUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBt
X3VybDsKICAgICBTdHJpbmcgbV9wYXRoOwogICAgIGJvb2wgbV9pc0RpcmVjdG9yeTsKIH07CkBA
IC00NDIsNyArNDQyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX2NoYXJzZXQoY2hhcnNldCkg
eyB9CiAKICAgICBSZWZQdHI8UmVxdWVzdEZpbGVDb250ZW50Q2FsbGJhY2s+IG1fcmVxdWVzdENh
bGxiYWNrOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIGJvb2wgbV9yZWFk
QXNUZXh0OwogICAgIGludCBtX3N0YXJ0OwogICAgIGxvbmcgbG9uZyBtX2VuZDsKQEAgLTUyMiw3
ICs1MjIsNyBAQCB2b2lkIEZpbGVDb250ZW50UmVxdWVzdDo6ZGlkUmVhZCgpCiAKIGNsYXNzIERl
bGV0ZUVudHJ5UmVxdWVzdCA6IHB1YmxpYyBWb2lkQ2FsbGJhY2sgewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPERlbGV0ZUVudHJ5UmVxdWVzdD4gY3JlYXRlKFBhc3NSZWZQdHI8RGVs
ZXRlRW50cnlDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBLVVJMJiB1cmwpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RGVsZXRlRW50cnlSZXF1ZXN0PiBjcmVhdGUoUGFzc1JlZlB0cjxE
ZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFVSTCYgdXJsKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVFbnRyeVJlcXVlc3QocmVxdWVz
dENhbGxiYWNrLCB1cmwpKTsKICAgICB9CkBAIC01NTQsMTIgKzU1NCwxMiBAQCBwcml2YXRlOgog
ICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3Moc3RhdGljX2Nhc3Q8aW50Pihl
cnJvckNvZGUpKTsKICAgICB9CiAKLSAgICBEZWxldGVFbnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxE
ZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEtVUkwmIHVybCkKKyAg
ICBEZWxldGVFbnRyeVJlcXVlc3QoUGFzc1JlZlB0cjxEZWxldGVFbnRyeUNhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2ssIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNr
KHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgLCBtX3VybCh1cmwpIHsgfQogCiAgICAgUmVmUHRy
PERlbGV0ZUVudHJ5Q2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwotICAgIEtVUkwgbV91cmw7
CisgICAgVVJMIG1fdXJsOwogfTsKIAogdm9pZCBEZWxldGVFbnRyeVJlcXVlc3Q6OnN0YXJ0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC02ODYsNyAr
Njg2LDcgQEAgdm9pZCBJbnNwZWN0b3JGaWxlU3lzdGVtQWdlbnQ6OmRlbGV0ZUVudHJ5KEVycm9y
U3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB1cmwKICAgICBpZiAoIWFzc2VydEVuYWJsZWQo
ZXJyb3IpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcs
IHVybFN0cmluZyk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gYXNz
ZXJ0U2NyaXB0RXhlY3V0aW9uQ29udGV4dEZvck9yaWdpbihlcnJvciwgU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh1cmwpLmdldCgpKTsKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3Bw
CmluZGV4IGQ5N2ZkNzJjMzRjNDUyYTFiYjEyYzdiYmExMjBjNjc4YjcwMDNlMDQuLjU3ZWE4NDRi
NmJhYTQ2MWQ5MTAxNzM4ZDIwMmQxNGJmOTNiYzEzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0zMjIsNyArMzIyLDcg
QEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlbW92ZUZpbGVTeXN0ZW0oY29uc3QgU3Ry
aW5nJiBmaWxlU3lzdGVtUGF0aCkKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gSW5zcGVjdG9y
RnJvbnRlbmRIb3N0Ojppc29sYXRlZEZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBmaWxlU3lzdGVt
TmFtZSwgY29uc3QgU3RyaW5nJiByb290VVJMKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAg
ICByZXR1cm4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGNvbnRleHQsIGZpbGVTeXN0ZW1OYW1lLCBG
aWxlU3lzdGVtVHlwZUlzb2xhdGVkLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcm9vdFVSTCksIEFz
eW5jRmlsZVN5c3RlbTo6Y3JlYXRlKCkpOworICAgIHJldHVybiBET01GaWxlU3lzdGVtOjpjcmVh
dGUoY29udGV4dCwgZmlsZVN5c3RlbU5hbWUsIEZpbGVTeXN0ZW1UeXBlSXNvbGF0ZWQsIFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHJvb3RVUkwpLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSgpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDg4ZmY4NjJjZTg1MDNhYWNmMzNkY2U1ZGIwMGQ5ZmZm
NzdhMTUwN2QuLmM3YzUzOGVhMjUyNmM2OTBiYThkYjk3ZDI5NDY1OTRjOTBiY2MyZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW0KICAgICAg
ICAgcmVzb3VyY2VBZ2VudC0+ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdG
b3JDbGllbnQoaWRlbnRpZmllciwgY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxMb2FkWEhSSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJv
b2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbExvYWRY
SFIoY2xpZW50LCBtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRl
Q3JlZGVudGlhbHMpOwpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVu
dGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3JrZXJHbG9iYWxTY29w
ZVByb3h5LCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xvYmFsU2NvcGVQ
cm94eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKEluc3BlY3RvcldvcmtlckFnZW50KiB3
b3JrZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvcldvcmtlckFnZW50KCkp
CiAgICAgICAgIHdvcmtlckFnZW50LT5kaWRTdGFydFdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckds
b2JhbFNjb3BlUHJveHksIHVybCk7CkBAIC0xMTU2LDcgKzExNTYsNyBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEtVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
LCBEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9jdW1lbnQqIGRvY3VtZW50KQogewog
ICAgIEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckFnZW50KCk7CiAgICAgaWYgKCFpbnNwZWN0b3JBZ2VudCB8fCAhaW5zcGVjdG9y
QWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkZjZmYTFlMmUyZjY4
ZmY1MDUxNmY0MmM3ZTM0ZjY5NDFmNDg2ZTJiLi5kZjNlYTI4MGUxMWVmODI0ODliOWMyZmQ0NzM4
NTdiNTViM2RmZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02OCw3ICs2OCw3IEBAIGNsYXNzIEluc3BlY3RvckNT
U09NV3JhcHBlcnM7CiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKLWNsYXNzIEtV
Ukw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUHNldWRvRWxlbWVudDsKIGNsYXNz
IFJlbmRlckxheWVyOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWls
TG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOwotICAg
IHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYsIGJvb2wsIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7CisgICAgc3RhdGlj
IHZvaWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZhaWxYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CkBAIC0yNjIsMTMgKzI2MiwxMyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBzdGF0aWMgYm9vbCBzaG91bGRQYXVzZURlZGljYXRl
ZFdvcmtlck9uU3RhcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHkqLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIHZvaWQgZGlkU3Rh
cnRXb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFs
U2NvcGVQcm94eSosIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyB2b2lkIHdvcmtlckdsb2JhbFNj
b3BlVGVybWluYXRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eSopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVdvcmtlclNjcmlwdChXb3JrZXJH
bG9iYWxTY29wZSosIGludCB3b3JrZXJUaHJlYWRTdGFydE1vZGUpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KERv
Y3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJM
LCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CisgICAg
c3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgZG9jdW1lbnRVUkws
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdChEb2N1bWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlKERvY3VtZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2xvc2VXZWJT
b2NrZXQoRG9jdW1lbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDA2LDcgKzQw
Niw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHN0YXRpYyB2b2lkIGRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCk7
CisgICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgYm9vbCwg
UGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVt
YmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpAQCAtNDYzLDEyICs0NjMs
MTIgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIHN0YXRpYyBib29sIHNo
b3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyop
OwotICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VSTCYpOworICAg
IHN0YXRpYyB2b2lkIGRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgVVJMJik7CiAgICAgc3RhdGlj
IHZvaWQgd29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0
VVJMLCBjb25zdCBLVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9j
dW1lbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgVVJMJiBkb2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRG9j
dW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRG9jdW1l
bnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDbG9zZVdlYlNvY2tldEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnQqKTsKQEAgLTE1MDQs
NyArMTUwNCw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDCiAjZW5kaWYKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGlu
Y2x1ZGVDcmVkZW50aWFscykKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmws
IGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCkBAIC0xODA2LDcg
KzE4MDYsNyBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNob3VsZFBh
dXNlRGVkaWNhdGVkV29ya2VyT25TdGFydChTY3JpcHRFeAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTdGFydFdvcmtlckds
b2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlckdsb2JhbFNj
b3BlUHJveHkqIHByb3h5LCBjb25zdCBLVVJMJiB1cmwpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgV29ya2VyR2xvYmFsU2NvcGVQcm94eSogcHJveHksIGNvbnN0IFVS
TCYgdXJsKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4
dChjb250ZXh0KSkKQEAgLTE4MzMsNyArMTgzMyw3IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFNjcmlwdEV4ZWN1dGlv
CiAKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBLVVJMJiBk
b2N1bWVudFVSTCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV2ViU29ja2V0KERvY3VtZW50KiBkb2N1bWVudCwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVS
TCYgZG9jdW1lbnRVUkwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGQ1NTAwMTQ4
ZDRhNDk4YTU1ZGU5NTJkMGQ4ZWM4ZWM1OWRiMWVjMWIuLjEwNzIwYTA0NjQ3OTkzNTEyNzJmMWI4
YWExZTM0Mjg3OTMyNGQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgUGFzc093blB0cjxJbnNwZWN0
b3JQYWdlQWdlbnQ+IEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGkKIH0KIAogLy8gc3RhdGljCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VD
b250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKQordm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRF
bmNvZGVkKQogewogICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBhc3NlcnREb2N1bWVudExv
YWRlcihlcnJvclN0cmluZywgZnJhbWUpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMjk5LDcgKzI5
OSw3IEBAIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNl
KENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1DYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKK0NhY2hlZFJlc291cmNlKiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZSkgewpAQCAtNTYyLDkgKzU2Miw5IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVz
b3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RhdGljIFZlY3RvcjxLVVJMPiBhbGxSZXNvdXJjZXNVUkxzRm9yRnJh
bWUoRnJhbWUqIGZyYW1lKQorc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJlc291cmNlc1VSTHNGb3JG
cmFtZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgVmVjdG9yPEtVUkw+IHJlc3VsdDsKKyAgICBWZWN0
b3I8VVJMPiByZXN1bHQ7CiAKICAgICByZXN1bHQuYXBwZW5kKGZyYW1lLT5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT51cmwoKSk7CiAKQEAgLTU5MCwxMCArNTkwLDEwIEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dChtYWluRnJhbWUoKSkpIHsKICAg
ICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgICAgIFZl
Y3RvcjxLVVJMPiBhbGxVUkxzID0gYWxsUmVzb3VyY2VzVVJMc0ZvckZyYW1lKGZyYW1lKTsKLSAg
ICAgICAgZm9yIChWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsVVJMcy5iZWdp
bigpOyBpdCAhPSBhbGxVUkxzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIFZlY3RvcjxVUkw+IGFs
bFVSTHMgPSBhbGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpOworICAgICAgICBmb3IgKFZl
Y3RvcjxVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFsbFVSTHMuYmVnaW4oKTsgaXQgIT0gYWxs
VVJMcy5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgVmVjdG9yPENvb2tpZT4gZG9jQ29va2ll
c0xpc3Q7Ci0gICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVz
KGRvY3VtZW50LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOwor
ICAgICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcyhkb2N1bWVu
dCwgVVJMKFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOwogICAgICAgICAg
ICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRh
dGlvbiBvZiBjb29raWVzLgogICAgICAgICAgICAgICAgIC8vCkBAIC02MjIsNyArNjIyLDcgQEAg
dm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0
ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3Ry
aW5nJiB1cmwpCiB7Ci0gICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwor
ICAgIFVSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCZtX3BhZ2UtPm1haW5GcmFtZSgpKSkKICAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKGZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwog
fQpAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRSZXNvdXJj
ZUNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzb3VyY2VDb250ZW50KGVycm9yU3RyaW5n
LCBmcmFtZSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29k
ZWQpOworICAgIHJlc291cmNlQ29udGVudChlcnJvclN0cmluZywgZnJhbWUsIFVSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCksIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpOwogfQogCiBzdGF0aWMgYm9v
bCB0ZXh0Q29udGVudEZvckNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNv
dXJjZSwgU3RyaW5nKiByZXN1bHQpCkBAIC02NjksNyArNjY5LDcgQEAgdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZy
YW1lSWQsIGMKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBr
dXJsKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKKyAgICBVUkwga3VybChQYXJzZWRVUkxTdHJpbmcs
IHVybCk7CiAKICAgICBTdHJpbmcgY29udGVudDsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBk
ZDAxODc0Y2M5MGI1YjlkNjMyYTZlY2VmNTVkZmMzNTRmN2FlZThjLi4yYjAyZWM3ZTgwZGY0ZWFi
OGZkMTdkNDdjODI4ZGM1ZjQ5Nzk1ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIEluc3BlY3Rvck9i
amVjdDsKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3Mg
UGFnZTsKIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAt
ODYsMTEgKzg2LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNl
Q29udGVudChDYWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNv
ZGVkKTsKICAgICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNl
NjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKLSAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRl
bnQoRXJyb3JTdHJpbmcqLCBGcmFtZSosIGNvbnN0IEtVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9v
bCogYmFzZTY0RW5jb2RlZCk7CisgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VDb250ZW50KEVycm9y
U3RyaW5nKiwgRnJhbWUqLCBjb25zdCBVUkwmLCBTdHJpbmcqIHJlc3VsdCwgYm9vbCogYmFzZTY0
RW5jb2RlZCk7CiAgICAgc3RhdGljIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNv
dXJjZURhdGEoRnJhbWUqLCBjb25zdCBLVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsK
LSAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3Qg
S1VSTCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRh
KEZyYW1lKiwgY29uc3QgVVJMJiwgU3RyaW5nKiB0ZXh0RW5jb2RpbmdOYW1lKTsKKyAgICBzdGF0
aWMgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKEZyYW1lKiwgY29uc3QgVVJMJik7CiAg
ICAgc3RhdGljIFR5cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VU
eXBlSnNvbihSZXNvdXJjZVR5cGUpOwogICAgIHN0YXRpYyBSZXNvdXJjZVR5cGUgY2FjaGVkUmVz
b3VyY2VUeXBlKGNvbnN0IENhY2hlZFJlc291cmNlJik7CiAgICAgc3RhdGljIFR5cGVCdWlsZGVy
OjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gY2FjaGVkUmVzb3VyY2VUeXBlSnNvbihjb25zdCBD
YWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGZkODg5NGVmMjJlNDljNzU2NGFiZDk4MGM4MjJi
MDQwYTU3NDU2MjIuLmIwOTU4MDU2ZDEyYWEzYmY3MTA4MTZmOTYyYWJiNjllMDVkMDQwNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhl
YXBTbmFwc2hvdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCmluZGV4IDM3M2NhNWRhMDY0MWU5OTkxYmQ3ZWI1ZjExMDg2NjJm
ZmFkMGI5NmQuLjk4YmE1MjU2MDQwODA4ZWViYjRjMGFiYzcyN2RjY2Q4NzI2Y2JkMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAKQEAgLTUxLDcgKzUxLDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VzRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KHVucwogICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHhoclJlcGxheURhdGEpOwog
fQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQordm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiB4
aHJSZXBsYXlEYXRhID0gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKG1ldGhvZCwgdXJsLCBhc3luYywg
Zm9ybURhdGEsIGluY2x1ZGVDcmVkZW50aWFscyk7CiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKQEAgLTQ4MCw3ICs0ODAsNyBAQCBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmJ1aWxkSW5pdGlhdAogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IEtVUkwmIHJlcXVlc3RVUkwpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OmRpZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCkKIHsKICAgICBtX2Zyb250ZW5kLT53ZWJTb2NrZXRDcmVhdGVkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCByZXF1ZXN0VVJMLnN0cmluZygp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCmluZGV4IDNkN2E2N2QwZGE2NjNiMzA0NTA0NmU4ZTA1OGIwZTNlMjQxNDU5YTMuLjU3
YTIxZmE5MzU4NDE0ZDFiMzZkOWZkYzk0NDY0YTUyNTdhMTE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNjAsNyArNjAs
NyBAQCBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBj
bGFzcyBJbnNwZWN0b3JTdGF0ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBL
VVJMOworY2xhc3MgVVJMOwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGE7CiBjbGFzcyBQYWdl
OwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
IAogICAgIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGll
bnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7Ci0g
ICAgdm9pZCB3aWxsTG9hZFhIUihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBi
b2R5LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlh
bHMpOworICAgIHZvaWQgd2lsbExvYWRYSFIoVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBib2R5LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVu
ZGVudGlhbHMpOwogICAgIHZvaWQgZGlkRmFpbFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNs
aWVudCopOwogICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
Zyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCop
OwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCk7CisgICAg
dm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwpOwogICAgIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRDbG9z
ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDdjYzEwZjUyNzI2YjNj
YzI5ZjFiZGYxZjBjYzY2YTdlZWU4YTgxYTguLjEzOTBhMDFlMmMwOTU5OTU3NDQ3YzI0MmUyZmEw
ODgwYThiOTIzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKQEAgLTEzODIsNyArMTM4Miw3IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVT
aGVldDo6cmVzb3VyY2VTdHlsZVNoZWV0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3QKIAogICAg
IFN0cmluZyBlcnJvcjsKICAgICBib29sIGJhc2U2NEVuY29kZWQ7Ci0gICAgSW5zcGVjdG9yUGFn
ZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoJmVycm9yLCBvd25lckRvY3VtZW50KCktPmZyYW1lKCks
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3BhZ2VTdHlsZVNoZWV0LT5ocmVmKCkpLCByZXN1bHQs
ICZiYXNlNjRFbmNvZGVkKTsKKyAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc291cmNlQ29udGVu
dCgmZXJyb3IsIG93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywg
bV9wYWdlU3R5bGVTaGVldC0+aHJlZigpKSwgcmVzdWx0LCAmYmFzZTY0RW5jb2RlZCk7CiAgICAg
cmV0dXJuIGVycm9yLmlzRW1wdHkoKSAmJiAhYmFzZTY0RW5jb2RlZDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4
IDI2NTE0ZTYzYTRiZjA0ZWI5NmNmNDZkNWY5NzM5MTdhYWYzNzkyNjMuLjdhZmFmYzA5NDQyZmIy
ZDBkMGYyZDZkNTQ0ZDA3ZjJjYjBjNDYwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCB2
b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSgpCiB9CiAK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRp
ZENyZWF0ZVdlYlNvY2tldCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQordm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRnJhbWUqIGZyYW1lKQog
ewogICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVdlYlNvY2tl
dENyZWF0ZURhdGEoaWRlbnRpZmllciwgdXJsLCBwcm90b2NvbCksIFRpbWVsaW5lUmVjb3JkVHlw
ZTo6V2ViU29ja2V0Q3JlYXRlLCB0cnVlLCBmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBiYmUwMGI2NGVmODRl
OGVlMTFhMzIwYjVkZWZiMjJmMGQ4ZDk0Nzk5Li40NTkyY2IxNjc1ODE4ZGI0MWFjZjYzZmEyYmU3
MGQ0MGI0MWNkYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgSW5zcGVjdG9yUGFnZUFn
ZW50OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwog
Y2xhc3MgSW50UmVjdDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlOwogY2xh
c3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwpAQCAtMjE2LDcgKzIxNiw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQotICAgIHZvaWQgZGlkQ3JlYXRlV2ViU29ja2V0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEZyYW1l
Kik7CisgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBGcmFtZSopOwogICAgIHZvaWQg
d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRnJhbWUqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIEZyYW1lKik7CiAgICAgdm9pZCBkaWREZXN0cm95
V2ViU29ja2V0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCmluZGV4IDhhYWE3
YzY3MzcwNzg4YzBmN2JkMjRjNjBiMWIzZjI4Njk0MWQ0YzYuLjZiN2ZkZWI4Y2VjMTFlMjY3NjY4
ZGU4ODEyODlmMzU0NDY1MDY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIklu
c3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAi
SW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5LmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yMDQsNyArMjA0LDcgQEAg
Ym9vbCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2hvdWxkUGF1c2VEZWRpY2F0ZWRXb3JrZXJPblN0
YXJ0KCkKICAgICByZXR1cm4gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0YXRlOjph
dXRvY29ubmVjdFRvV29ya2Vycyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRp
ZFN0YXJ0V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyR2xvYmFsU2NvcGVQcm94eSogd29ya2VyR2xv
YmFsU2NvcGVQcm94eSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2Vu
dDo6ZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiB3b3Jr
ZXJHbG9iYWxTY29wZVByb3h5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX2RlZGljYXRlZFdv
cmtlcnMuc2V0KHdvcmtlckdsb2JhbFNjb3BlUHJveHksIHVybC5zdHJpbmcoKSk7CiAgICAgaWYg
KG1faW5zcGVjdG9yRnJvbnRlbmQgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihXb3JrZXJBZ2VudFN0
YXRlOjp3b3JrZXJJbnNwZWN0aW9uRW5hYmxlZCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4IDUxZjkwNmU2M2JmYzE3OGM5MjgxNjZj
OWZmMDRmN2ViOTA4MTIwNjAuLjg5N2RlMzZlMjQ1YmQ0MTNlMzVjYTM3OGRkZGE3ZmFlMzQ5Mjhj
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwogY2xhc3MgSW5z
cGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5n
QWdlbnRzOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3Bl
UHJveHk7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwpAQCAtNTgsNyArNTgsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBDYWxsZWQgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAg
ICBib29sIHNob3VsZFBhdXNlRGVkaWNhdGVkV29ya2VyT25TdGFydCgpOwotICAgIHZvaWQgZGlk
U3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZVByb3h5KiwgY29uc3QgS1VS
TCYpOworICAgIHZvaWQgZGlkU3RhcnRXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29w
ZVByb3h5KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZVRlcm1pbmF0
ZWQoV29ya2VyR2xvYmFsU2NvcGVQcm94eSopOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDNmYzM1MDIwNmNjOGMwYTAyZTMzMDE3ODlhMGFj
ODYwNzJhNGY1YmEuLjk2OWQzMGQ3ZTAxZjQzZDIyMWIxMDAzOWQyN2I5N2NhOTkyMjY3MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNv
bnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogCi1Q
YXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJp
bmcgJm1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCitQYXNzUmVmUHRyPFhIUlJl
cGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29u
c3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBi
b29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJl
cGxheURhdGEobWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxz
KSk7CiB9CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgWEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKGNv
bnN0IEF0b21pY1N0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faGVhZGVy
cy5zZXQoa2V5LCB2YWx1ZSk7CiB9CiAKLVhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoY29u
c3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQorWEhSUmVwbGF5
RGF0YTo6WEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiB1cmws
IGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVD
cmVkZW50aWFscykKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fdXJsKHVybCkKICAg
ICAsIG1fYXN5bmMoYXN5bmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCmluZGV4IDQxNmQ1M2RmZDFhOTIzZWVkNjEwY2NmNzM4NzBkM2EyZWE3
YmMyYjcuLjFhNDI5NDgxYTk4MmE4OTQyNjVjMzVlM2VkYmE1Mjc2ZDBkNzdiYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMSw3
ICszMSw3IEBACiAKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yUGFnZUFnZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNTEsMjAgKzUxLDIwIEBAIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiAKIGNsYXNzIFhIUlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxY
SFJSZXBsYXlEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5
RGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRo
b2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBib29sIGlu
Y2x1ZGVDcmVkZW50aWFscyk7CiAKICAgICB2b2lkIGFkZEhlYWRlcihjb25zdCBBdG9taWNTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nJiBtZXRob2Qo
KSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsgfQotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIGJvb2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CiAgICAg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRh
OyB9CiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGVyczsgfQogICAgIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KIHByaXZhdGU6Ci0gICAgWEhSUmVwbGF5RGF0YShjb25z
dCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9y
bURhdGE+LCBib29sIGluY2x1ZGVDcmVkZW50aWFscyk7CisgICAgWEhSUmVwbGF5RGF0YShjb25z
dCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKIAogICAgIFN0cmluZyBtX21ldGhvZDsK
LSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fYXN5bmM7CiAgICAg
UmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOwogICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFj
dG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5o
CmluZGV4IDI4NzJmMjZhNDkwMGRjZWEwZDUwNzcwZjI2NDc0YjlmNTU2NDNkOWIuLmNhMzM0MWJl
ZGUyOWRmODFlOTlkOTE2YWRhZmUwZDZhMGI3MzlkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNk
ZWZpbmUgVGltZWxpbmVSZWNvcmRGYWN0b3J5X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVl
cy5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBzdGF0aWMgdm9pZCBhcHBlbmRMYXlvdXRSb290KEluc3BlY3Rvck9iamVjdCogZGF0YSwgY29u
c3QgRmxvYXRRdWFkJik7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgICAgIHN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0
ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCisgICAgICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IGNyZWF0ZVdlYlNvY2tldENyZWF0ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKICAgICAgICAgewog
ICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXROdW1iZXIoImlkZW50aWZpZXIiLCBp
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKaW5kZXggOWNiMWRjZWI2
M2NkOTc1OWM2N2VjNjUzMjAwMWNjYmNjYzk1MzgzMS4uZTkzZDFjYTIwMTY1YTU2ZGFjZjk1Zjlj
OTZiYzdhNzUzYTVmODBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tp
ZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTU5
LDEzICs1OSwxMyBAQCBpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
bihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiAjZGVmaW5lIExPQ0FMX1NFU1NJT04oZG9jdW1l
bnQpIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBzZXNzaW9uKG5ldHdvcmtpbmdDb250ZXh0KGRvY3Vt
ZW50KSk7CiAjZW5kaWYKIAotU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIExPQ0FMX1NFU1NJT04oZG9jdW1lbnQpCiAgICAg
cmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2llc0Zv
ckRPTShzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKIH0K
IAotdm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAg
ICBMT0NBTF9TRVNTSU9OKGRvY3VtZW50KQogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29r
aWVzU3RyYXRlZ3koKS0+c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZG9jdW1lbnQtPmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKQEAgLTc3LDE5ICs3NywxOSBA
QCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKICAgICByZXR1
cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNv
b2tpZVVSTCgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICByZXR1cm4gcGxhdGZv
cm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShzZXNzaW9uLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsK
IH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYg
Y29va2llcykKIHsKICAgICBMT0NBTF9TRVNTSU9OKGRvY3VtZW50KQogICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoc2Vzc2lv
biwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCwgY29va2llcyk7CiB9CiAK
LXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAgICAgTE9DQUxfU0VTU0lPTihkb2N1bWVudCkKICAgICBwbGF0Zm9ybVN0cmF0ZWdp
ZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tp
ZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDYwZGVkMTQwY2UwZWIzMjEw
MzJkODY0YTY1MTkyNTQxMmZmYmY2YmQuLmE5NmFlNDVhY2VmMzkzYTRkN2NhNjgwNDQ4YWI0N2U1
ZjNmNTU2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTM0LDE5ICszNCwxOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBzdHJ1Y3QgQ29va2llOwogCiAvLyBGdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHRh
a2UgYSBEb2N1bWVudCBwb2ludGVyIHRvIGRldGVybWluZSB3aGljaCBjb29raWUgc3RvcmFnZSB0
byB1c2UuIFdlIHNob3VsZCBtZXJnZSB0aGF0IGludG8gY2FsbCBzaXRlcywgYW5kIHVzZSBQbGF0
Zm9ybUNvb2tpZUphciBkaXJlY3RseS4KIAogLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBpbXBsZW1l
bnQgZG9jdW1lbnQuY29va2llIEFQSSwgd2l0aCBzcGVjaWFsIHJ1bGVzIGZvciBIdHRwT25seSBj
b29raWVzLgotU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJik7Ci12
b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpOworU3RyaW5nIGNvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmKTsK
K3ZvaWQgc2V0Q29va2llcyhEb2N1bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKTsKIAogYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCopOwotU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3Qg
S1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYs
IFZlY3RvcjxDb29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOworU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiwgY29uc3QgVVJMJik7Citib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYp
Owordm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA0YTE3ZGZk
ZGZkMWE1OTczNDVjZTI0ZDFmZDAwZjlhYmIyOWExYTJkLi4zNTgwYTUwNGZkZDcyYWQyMDdmYTU3
MzcwZTFjNDE4MTVmYTNjYmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0xNTQsMTMgKzE1NCwx
MyBAQCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlJiBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlOjpzaGFyZWQoKQogICAgIHJldHVybiBjYWNoZTsKIH0KIAotdm9pZCBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG9y
aWdpbiwgY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtPiBwcmVmbGlnaHRSZXN1bHQpCit2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwm
IHVybCwgUGFzc093blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gcHJl
ZmxpZ2h0UmVzdWx0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wcmVm
bGlnaHRIYXNoTWFwLnNldChtYWtlX3BhaXIob3JpZ2luLCB1cmwpLCBwcmVmbGlnaHRSZXN1bHQp
OwogfQogCi1ib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVm
bGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgU3RvcmVkQ3JlZGVu
dGlhbHMgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRU
UEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMpCitib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFVS
TCYgdXJsLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycykKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0SGFz
aE1hcDo6aXRlcmF0b3IgY2FjaGVJdCA9IG1fcHJlZmxpZ2h0SGFzaE1hcC5maW5kKG1ha2VfcGFp
cihvcmlnaW4sIHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKaW5kZXggMGQ2NDMzOGIyNjMxMjBlYTM1Y2Fl
NjJlMjQ3OTQ3MjQ5ZjJjNzRhNy4uZDRjNDgyY2U0OGZjMDdjNWZmYzY2YWFlNTAyZGIzOTczMjc5
NmIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaWZuZGVmIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVfaAogI2RlZmluZSBDcm9zc09yaWdpblByZWZsaWdodFJl
c3VsdENhY2hlX2gKIAotI2luY2x1ZGUgIktVUkxIYXNoLmgiCisjaW5jbHVkZSAiVVJMSGFzaC5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC03MCwxNSArNzAsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUmIHNoYXJlZCgpOwogCi0gICAgICAgIHZvaWQgYXBwZW5kRW50cnko
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPik7Ci0gICAgICAgIGJvb2wgY2FuU2tpcFByZWZsaWdo
dChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYsIFN0b3JlZENyZWRlbnRpYWxzLCBj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMp
OworICAgICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBV
UkwmLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPik7Cisg
ICAgICAgIGJvb2wgY2FuU2tpcFByZWZsaWdodChjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
VVJMJiwgU3RvcmVkQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyk7CiAKICAgICAgICAgdm9pZCBlbXB0eSgpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSgpIHsg
fQogCi0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCBLVVJMPiwgT3du
UHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiA+IENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0SGFzaE1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxT
dHJpbmcsIFVSTD4sIE93blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4g
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA7CiAKICAgICAgICAgQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRIYXNoTWFwIG1fcHJlZmxpZ2h0SGFzaE1hcDsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcAppbmRleCA0YjIyZjcy
M2JmODQ3MjIzNTg5YWU1NzY0ZjdmYzhiYWIxMDJkZDM2Li4zYTAyYjIzMTBlOTI4YzllYzRjMmNm
M2Y2NDY1YzU0OTk2ZmRmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkVGltaW5nLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIERvY3VtZW50TG9hZFRpbWluZzo6
c2V0TmF2aWdhdGlvblN0YXJ0KGRvdWJsZSBuYXZpZ2F0aW9uU3RhcnQpCiAgICAgbV9uYXZpZ2F0
aW9uU3RhcnQgPSBuYXZpZ2F0aW9uU3RhcnQ7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkVGltaW5n
OjphZGRSZWRpcmVjdChjb25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVk
aXJlY3RlZFVybCkKK3ZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRpcmVjdChjb25zdCBV
UkwmIHJlZGlyZWN0aW5nVXJsLCBjb25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpCiB7CiAgICAgbV9y
ZWRpcmVjdENvdW50Kys7CiAgICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmgKaW5kZXggNjQ0OTQzMzBkNTA2Yzg3ZWY5OTEy
NGIyMzY5Yjg3NWU0ODJmNWU1MC4uODU0MDkwMWViMzZkMzhmNWE3NGRlNjg3YTYwY2E1MTM5ZDc3
M2YyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRpbWlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaApAQCAt
MzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiAKIGNsYXNzIERvY3VtZW50TG9hZFRpbWluZyB7CiBwdWJsaWM6
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFya05hdmlnYXRpb25TdGFy
dCgpOwogICAgIHZvaWQgc2V0TmF2aWdhdGlvblN0YXJ0KGRvdWJsZSk7Ci0gICAgdm9pZCBhZGRS
ZWRpcmVjdChjb25zdCBLVVJMJiByZWRpcmVjdGluZ1VybCwgY29uc3QgS1VSTCYgcmVkaXJlY3Rl
ZFVybCk7CisgICAgdm9pZCBhZGRSZWRpcmVjdChjb25zdCBVUkwmIHJlZGlyZWN0aW5nVXJsLCBj
b25zdCBVUkwmIHJlZGlyZWN0ZWRVcmwpOwogCiAgICAgdm9pZCBtYXJrVW5sb2FkRXZlbnRTdGFy
dCgpIHsgbV91bmxvYWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
IH0KICAgICB2b2lkIG1hcmtVbmxvYWRFdmVudEVuZCgpIHsgbV91bmxvYWRFdmVudEVuZCA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCBmMjhiMGQ1N2E0Yzc5ZjJmOTM5MTJmYWI1ZWQzNDVjN2YyZTc2
Y2JmLi5iYmZiYTEzNWE3YmRjY2U0ZWM0ZGVjN2UxYWE0YTFjZjU4MGMzYWQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE4MywxMiArMTgzLDEyIEBAIFJl
c291cmNlUmVxdWVzdCYgRG9jdW1lbnRMb2FkZXI6OnJlcXVlc3QoKQogICAgIHJldHVybiBtX3Jl
cXVlc3Q7CiB9CiAKLWNvbnN0IEtVUkwmIERvY3VtZW50TG9hZGVyOjp1cmwoKSBjb25zdAorY29u
c3QgVVJMJiBEb2N1bWVudExvYWRlcjo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVz
dCgpLnVybCgpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZv
clNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYgdXJsKQordm9pZCBEb2N1bWVudExv
YWRlcjo6cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIG1fb3JpZ2luYWxSZXF1ZXN0Q29weS5zZXRVUkwodXJsKTsKICAgICBt
X3JlcXVlc3Quc2V0VVJMKHVybCk7CkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6aXNQb3N0T3JSZWRpcmVjdEFmdGVyUG9zdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2Fk
Tm93KERvY3VtZW50TG9hZGVyVGltZXIqKQogewotICAgIEtVUkwgdXJsID0gbV9zdWJzdGl0dXRl
RGF0YS5yZXNwb25zZVVSTCgpOworICAgIFVSTCB1cmwgPSBtX3N1YnN0aXR1dGVEYXRhLnJlc3Bv
bnNlVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHVybCA9IG1fcmVxdWVz
dC51cmwoKTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHVybCwgbV9zdWJzdGl0dXRl
RGF0YS5taW1lVHlwZSgpLCBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+c2l6ZSgpLCBtX3N1
YnN0aXR1dGVEYXRhLnRleHRFbmNvZGluZygpLCAiIik7CkBAIC02NTMsNyArNjUzLDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9u
IHBvbGljeSkKICAgICBpZiAoaXNTdG9wcGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBL
VVJMIHVybCA9IG1fcmVxdWVzdC51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9yZXF1ZXN0LnVybCgp
OwogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUgPSBtX3Jlc3BvbnNlLm1pbWVUeXBlKCk7CiAg
ICAgCiAgICAgc3dpdGNoIChwb2xpY3kpIHsKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbgogI2lmIFVTRShDRk5FVFdPUkspIHx8IFBMQVRGT1JNKE1BQykKICAgICAv
LyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjA2MDc4Mj4KICAgICBpZiAobV9yZXNw
b25zZS5pc051bGwoKSkKLSAgICAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoS1VS
TCgpLCAidGV4dC9odG1sIiwgMCwgU3RyaW5nKCksIFN0cmluZygpKTsKKyAgICAgICAgbV9yZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2UoVVJMKCksICJ0ZXh0L2h0bWwiLCAwLCBTdHJpbmcoKSwg
U3RyaW5nKCkpOwogI2VuZGlmCiAKICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsg
d2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVm
ZXJyZWQuCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNo
aXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlKQogICAgIG1f
YXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3VyY2UocmVzb3VyY2UpOwogfQogCi1Q
YXNzUmVmUHRyPEFyY2hpdmU+IERvY3VtZW50TG9hZGVyOjpwb3BBcmNoaXZlRm9yU3ViZnJhbWUo
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8QXJj
aGl2ZT4gRG9jdW1lbnRMb2FkZXI6OnBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fYXJjaGl2ZVJlc291
cmNlQ29sbGVjdGlvbiA/IG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+cG9wU3ViZnJhbWVB
cmNoaXZlKGZyYW1lTmFtZSwgdXJsKSA6IFBhc3NSZWZQdHI8QXJjaGl2ZT4oMCk7CiB9CkBAIC0x
MDI5LDcgKzEwMjksNyBAQCBTaGFyZWRCdWZmZXIqIERvY3VtZW50TG9hZGVyOjpwYXJzZWRBcmNo
aXZlRGF0YSgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFC
TEUoTUhUTUwpCiAKLUFyY2hpdmVSZXNvdXJjZSogRG9jdW1lbnRMb2FkZXI6OmFyY2hpdmVSZXNv
dXJjZUZvclVSTChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CitBcmNoaXZlUmVzb3VyY2UqIERvY3Vt
ZW50TG9hZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24pCiAgICAgICAgIHJldHVybiAw
OwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3Vt
ZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25zdAogICAgIHJldHVybiBBcmNoaXZlUmVzb3Vy
Y2U6OmNyZWF0ZShkYXRhLCByLnVybCgpLCByLm1pbWVUeXBlKCksIHIudGV4dEVuY29kaW5nTmFt
ZSgpLCBmcmFtZSgpLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KIAotUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjpzdWJyZXNvdXJjZShjb25zdCBLVVJMJiB1cmwp
IGNvbnN0CitQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gRG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghaXNDb21taXR0ZWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpnZXRTdWJyZXNvdXJjZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+
JiBzdWJyZQogICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNl
TWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNv
dXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
YWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1YnJlc291cmNlKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCBpdC0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgIFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+IHN1YnJlc291cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoVVJMKFBhcnNlZFVSTFN0
cmluZywgaXQtPnZhbHVlLT51cmwoKSkpOwogICAgICAgICBpZiAoc3VicmVzb3VyY2UpCiAgICAg
ICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHN1YnJlc291cmNlLnJlbGVhc2UoKSk7CiAgICAg
fQpAQCAtMTIxMCw3ICsxMjEwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29u
c3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCiAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hh
bmdlVGl0bGUodGhpcyk7CiB9CiAKLUtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3Rvcnko
KSBjb25zdAorVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAg
ICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4K
ICAgICAvLyBSZXR1cm5zIG5pbCBmb3IgV2ViRGF0YVByb3RvY29sIFVSTHMgdGhhdCBhcmVuJ3Qg
YWx0ZXJuYXRlcwpAQCAtMTIyNiwyNCArMTIyNiwyNCBAQCBib29sIERvY3VtZW50TG9hZGVyOjp1
cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkgfHwgbV9yZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID49IDQwMDsK
IH0KIAotY29uc3QgS1VSTCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKK2Nv
bnN0IFVSTCYgRG9jdW1lbnRMb2FkZXI6Om9yaWdpbmFsVVJMKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9vcmlnaW5hbFJlcXVlc3RDb3B5LnVybCgpOwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVu
dExvYWRlcjo6cmVxdWVzdFVSTCgpIGNvbnN0Citjb25zdCBVUkwmIERvY3VtZW50TG9hZGVyOjpy
ZXF1ZXN0VVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gcmVxdWVzdCgpLnVybCgpOwogfQogCi1j
b25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJM
JiBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAogewogICAgIHJldHVybiBtX3Jl
c3BvbnNlLnVybCgpOwogfQogCi1LVVJMIERvY3VtZW50TG9hZGVyOjpkb2N1bWVudFVSTCgpIGNv
bnN0CitVUkwgRG9jdW1lbnRMb2FkZXI6OmRvY3VtZW50VVJMKCkgY29uc3QKIHsKLSAgICBLVVJM
IHVybCA9IHN1YnN0aXR1dGVEYXRhKCkucmVzcG9uc2VVUkwoKTsKKyAgICBVUkwgdXJsID0gc3Vi
c3RpdHV0ZURhdGEoKS5yZXNwb25zZVVSTCgpOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSAmJiBtX2FyY2hpdmUgJiYgbV9hcmNoaXZlLT50eXBlKCkgPT0g
QXJjaGl2ZTo6V2ViQXJjaGl2ZSkKICAgICAgICAgdXJsID0gbV9hcmNoaXZlLT5tYWluUmVzb3Vy
Y2UoKS0+dXJsKCk7CkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBjb25zdCBTdHJpbmcmIERvY3VtZW50
TG9hZGVyOjpyZXNwb25zZU1JTUVUeXBlKCkgY29uc3QKICAgICByZXR1cm4gbV9yZXNwb25zZS5t
aW1lVHlwZSgpOwogfQogCi1jb25zdCBLVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVV
UkwoKSBjb25zdAorY29uc3QgVVJMJiBEb2N1bWVudExvYWRlcjo6dW5yZWFjaGFibGVVUkwoKSBj
b25zdAogewogICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmZhaWxpbmdVUkwoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggNGJkMmM3YWU0NzkzNWYxYzRi
NTU0MjI3YWFmZWY3MWQxYTZkOTE2ZS4uZTI3ZWQ0OGIwOTkzNWE3NmMwYmU1ZjIwNGJhN2ViN2M1
N2U1MjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTEwOSwx
NSArMTA5LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zdWJzdGl0dXRlRGF0YTsg
fQogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRoZSBzYW1lIGFzIHJlcXVlc3RVUkwoKS4g
V2Ugc2hvdWxkIHJlbW92ZSBvbmUgb2YgdGhlbS4KLSAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkg
Y29uc3Q7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3Q7CisgICAg
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFi
bGVVUkwoKSBjb25zdDsKIAotICAgICAgICBjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0
OwotICAgICAgICBjb25zdCBLVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0
IEtVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgb3JpZ2luYWxV
UkwoKSBjb25zdDsKKyAgICAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAg
ICAgIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwoKSBjb25zdDsKICAgICAgICAgY29uc3QgU3RyaW5n
JiByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CiAKLSAgICAgICAgdm9pZCByZXBsYWNlUmVxdWVz
dFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgS1VSTCYpOworICAgICAgICB2b2lk
IHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBVUkwmKTsK
ICAgICAgICAgYm9vbCBpc1N0b3BwaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BwaW5nOyB9
CiAgICAgICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKICAgICAgICAgdm9pZCBzZXRDb21taXR0ZWQo
Ym9vbCBjb21taXR0ZWQpIHsgbV9jb21taXR0ZWQgPSBjb21taXR0ZWQ7IH0KQEAgLTE0MiwyMCAr
MTQyLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRBcmNoaXZlKFBh
c3NSZWZQdHI8QXJjaGl2ZT4pOwogICAgICAgICB2b2lkIGFkZEFsbEFyY2hpdmVSZXNvdXJjZXMo
QXJjaGl2ZSopOwogICAgICAgICB2b2lkIGFkZEFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4pOwotICAgICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVG
b3JTdWJmcmFtZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgS1VSTCYpOworICAgICAg
ICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcEFyY2hpdmVGb3JTdWJmcmFtZShjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgICAgIFNoYXJlZEJ1ZmZlciogcGFyc2VkQXJj
aGl2ZURhdGEoKSBjb25zdDsKIAogICAgICAgICBib29sIHNjaGVkdWxlQXJjaGl2ZUxvYWQoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKIAogICAgICAgICAvLyBSZXR1cm4gdGhlIEFy
Y2hpdmVSZXNvdXJjZSBmb3IgdGhlIFVSTCBvbmx5IHdoZW4gbG9hZGluZyBhbiBBcmNoaXZlCi0g
ICAgICAgIEFyY2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwm
KSBjb25zdDsKKyAgICAgICAgQXJjaGl2ZVJlc291cmNlKiBhcmNoaXZlUmVzb3VyY2VGb3JVUkwo
Y29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IG1haW5SZXNvdXJjZSgpIGNvbnN0OwogCiAgICAgICAgIC8vIFJldHVybiBhbiBBcmNoaXZlUmVz
b3VyY2UgZm9yIHRoZSBVUkwsIGVpdGhlciBjcmVhdGluZyBmcm9tIGxpdmUgZGF0YSBvcgogICAg
ICAgICAvLyBwdWxsaW5nIGZyb20gdGhlIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24KLSAgICAg
ICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNvbnN0IEtVUkwmKSBj
b25zdDsKKyAgICAgICAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291cmNlKGNv
bnN0IFVSTCYpIGNvbnN0OwogICAgICAgICB2b2lkIGdldFN1YnJlc291cmNlcyhWZWN0b3I8UGFz
c1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mKSBjb25zdDsKIAogCkBAIC0xNzYsNyArMTc2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25z
ZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VUaXRsZTsgfQogCi0gICAgICAgIEtVUkwgdXJsRm9ySGlzdG9yeSgpIGNv
bnN0OworICAgICAgICBVUkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVy
bEZvckhpc3RvcnlSZWZsZWN0c0ZhaWx1cmUoKSBjb25zdDsKIAogICAgICAgICAvLyBUaGVzZSBh
Y2Nlc3NvcnMgYWNjb21tb2RhdGUgV2ViQ29yZSdzIHNvbWV3aGF0IGZpY2tsZSBjdXN0b20gb2Yg
Y3JlYXRpbmcgaGlzdG9yeQpAQCAtMjU3LDcgKzI1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwcml2YXRlOgogCiAgICAgICAgIC8vIFRoZSBVUkwgb2YgdGhlIGRvY3VtZW50IHJlc3Vs
dGluZyBmcm9tIHRoaXMgRG9jdW1lbnRMb2FkZXIuCi0gICAgICAgIEtVUkwgZG9jdW1lbnRVUkwo
KSBjb25zdDsKKyAgICAgICAgVVJMIGRvY3VtZW50VVJMKCkgY29uc3Q7CiAgICAgICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgc2V0UmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggM2ZlNTZmM2YyNGQ0ZDQ3ZjRjN2E1ZjEyZWI2ZWUx
ZGY2MTI5M2EzYS4uYjBkODYxNjJhZDVlZDU5OWUxY2Y3Mjc4ZjBjNTRjZDQzNWE2MjNmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTM2MSw3ICszNjEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJl
ZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2spCiB7CiAgICAgLy8gQW55
IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3NzLXNpdGUg
cmVxdWVzdHMuCi0gICAgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3QudXJsKCk7Cisg
ICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBtX29wdGlvbnMu
c2VjdXJpdHlDaGVjayA9IHNlY3VyaXR5Q2hlY2s7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJl
cXVlc3QgfHwgcmVxdWVzdFVSTC51c2VyKCkuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV9zYW1l
T3JpZ2luUmVxdWVzdCB8fCByZXF1ZXN0VVJMLnBhc3MoKS5pc0VtcHR5KCkpOwpAQCAtNDI5LDcg
KzQyOSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgZGlkRmluaXNoTG9hZGluZyhp
ZGVudGlmaWVyLCAwLjApOwogfQogCi1ib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6aXNB
bGxvd2VkUmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmlzQWxsb3dlZFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChtX29w
dGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID09IEFsbG93Q3Jvc3NPcmlnaW5SZXF1ZXN0
cykKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggMGNlOTk3YTdmNmZjZmFmYjFjMzdhY2U5NGY2
NjlkYjZhMDdlMTE1OS4uYmYzMWJhMzEwYWNjODNmMmJkNDY1Zjc3ODFkNDQ0M2VjMDViZTc1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aApAQCAtNDUsNyArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hl
ZFJhd1Jlc291cmNlOwogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7CisgICAg
Y2xhc3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKICAgICBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OwpAQCAtOTUsNyArOTUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcHJlZmxpZ2h0RmFpbHVyZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGVycm9yRGVzY3JpcHRpb24pOwogCiAgICAgICAgIHZvaWQgbG9hZFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7Ci0gICAgICAgIGJvb2wgaXNBbGxv
d2VkUmVkaXJlY3QoY29uc3QgS1VSTCYpOworICAgICAgICBib29sIGlzQWxsb3dlZFJlZGlyZWN0
KGNvbnN0IFVSTCYpOwogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCAx
YWMxNDc0YjQyOTM4OTA4Mzg4N2FiMWYxZWY3NGM4NzU2MDM3NmM0Li4zZTYxNDVlNTE1NzBlNjA1
MTc5YTQ0YjMxYjI1ZjZlNmE5OTI4ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5jcHAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmNs
ZWFyKCkKIAogdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKQogewotICAgIGJlZ2luKEtVUkwo
KSk7CisgICAgYmVnaW4oVVJMKCkpOwogfQogCi1QYXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVu
dFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxEb2N1
bWVudD4gRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxk
QWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobV9taW1lVHlwZSkpCiAgICAgICAgIHJldHVybiBQbHVn
aW5Eb2N1bWVudDo6Y3JlYXRlKG1fZnJhbWUsIHVybCk7CkBAIC0xMTIsMTIgKzExMiwxMiBAQCBQ
YXNzUmVmUHRyPERvY3VtZW50PiBEb2N1bWVudFdyaXRlcjo6Y3JlYXRlRG9jdW1lbnQoY29uc3Qg
S1VSTCYgdXJsKQogICAgIHJldHVybiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQo
bV9taW1lVHlwZSwgbV9mcmFtZSwgdXJsLCBtX2ZyYW1lLT5pblZpZXdTb3VyY2VNb2RlKCkpOwog
fQogCi12b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1cmxSZWZlcmVuY2Us
IGJvb2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd25lckRvY3VtZW50KQordm9pZCBEb2N1bWVudFdy
aXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJvb2wgZGlzcGF0Y2gsIERvY3Vt
ZW50KiBvd25lckRvY3VtZW50KQogewogICAgIC8vIFdlIGdyYWIgYSBsb2NhbCBjb3B5IG9mIHRo
ZSBVUkwgYmVjYXVzZSBpdCdzIGVhc3kgZm9yIGNhbGxlcnMgdG8gc3VwcGx5CiAgICAgLy8gYSBV
UkwgdGhhdCB3aWxsIGJlIGRlYWxsb2NhdGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoaXMg
ZnVuY3Rpb24uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY2MzYwPi4KLSAgICBLVVJMIHVybCA9IHVybFJlZmVyZW5jZTsK
KyAgICBVUkwgdXJsID0gdXJsUmVmZXJlbmNlOwogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGRvY3Vt
ZW50IGJlZm9yZSBjbGVhcmluZyB0aGUgZnJhbWUsIGJlY2F1c2UgaXQgbWF5IG5lZWQgdG8KICAg
ICAvLyBpbmhlcml0IGFuIGFsaWFzZWQgc2VjdXJpdHkgY29udGV4dC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggM2Q5MGI5ZDg3M2ZlMDRiNzlkMTg2ODkxYTc4MWM3
ZjdjNjM2OGE2OS4uODFkMGYxMjlkZmUzYzViOTU1NDcwYzlmNWQyMDM0YzkzZmYwNmE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNp
Zm5kZWYgRG9jdW1lbnRXcml0ZXJfaAogI2RlZmluZSBEb2N1bWVudFdyaXRlcl9oCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYsIERvY3VtZW50KiBvd25lckRv
Y3VtZW50KTsKIAogICAgIHZvaWQgYmVnaW4oKTsKLSAgICB2b2lkIGJlZ2luKGNvbnN0IEtVUkwm
LCBib29sIGRpc3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93
bmVyRG9jdW1lbnQgPSAwKTsKKyAgICB2b2lkIGJlZ2luKGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0
Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBEb2N1bWVudCogb3duZXJEb2N1bWVudCA9
IDApOwogICAgIHZvaWQgYWRkRGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7
CiAgICAgdm9pZCBlbmQoKTsKICAgICAKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0RG9jdW1lbnRXYXNMb2FkZWRBc1BhcnRPZk5hdmlnYXRpb24oKTsKIAogcHJpdmF0ZToK
LSAgICBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGVEb2N1bWVudChjb25zdCBLVVJMJik7Cisg
ICAgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnQoY29uc3QgVVJMJik7CiAgICAg
dm9pZCBjbGVhcigpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCmluZGV4IDBmODhlZWIxOTlmZGQ1ZGFlZWMwZjgwOTU3Y2UwNjdjN2Zi
NzdlNTMuLmVmNjAyZDY2MTI2YzUwYzlkMzAwZGRiNDg5YzA2MzE1OGQ4YjY4ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC0xMzUsMTIgKzEzNSwxMiBAQCBQYXNz
UmVmUHRyPERvY3VtZW50TG9hZGVyPiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1
bWVudExvYWRlcihjb25zdCBSZQogICAgIHJldHVybiBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJl
cXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgaW50KQorUGFz
c1JlZlB0cjxGcmFtZT4gRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5n
JiwgYm9vbCwgaW50LCBpbnQpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8V2lk
Z2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYs
IEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKQorUGFzc1JlZlB0cjxX
aWRnZXQ+IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkKIHsKICAgICByZXR1
cm4gMDsKIH0KQEAgLTE0OSwxMyArMTQ5LDEzIEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6cmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikKIHsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6
ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxB
cHBsZXRFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKLVBhc3NSZWZQdHI8V2lkZ2V0PiBFbXB0eUZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVk
aWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50U2l6
ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAgICByZXR1cm4gMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5MTljYTg0YTRiOTI3NTc3
MmMxZGNiNTc1NTkxN2NkYTIyNjYzZGUwLi4zM2IyYjkxYzBiYjM0MGFmOGIxMGE3NGZmNmVkMGZi
MTFmMmY4NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0yNDMsNyAr
MjQzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9h
ZEV2ZW50cygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91YmxlLCBkb3VibGUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgVVJMJiwgZG91YmxlLCBkb3VibGUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgeyB9CkBAIC0zMTIsMTQgKzMxMiwxNCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb3Zpc2lv
bmFsTG9hZFN0YXJ0ZWQoKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJlYXRVUkxBc1Nh
bWVBc0N1cnJlbnQoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KGNvbnN0IFVSTCYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIHsgfQog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiwgY29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgVVJMJikgeyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgS1VSTCYpIHsgcmV0dXJuICIiOyB9CisgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIHsgcmV0dXJuICIiOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1l
KikgeyB9CkBAIC0zMzgsMTkgKzMzOCwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNh
dmVWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0qKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q2FjaGVQYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25z
dCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFVSTCYsIGJvb2wpIHsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRl
RnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBs
ZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBj
cmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCos
IGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
KSBPVkVSUklERTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0
IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihXaWRn
ZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvd01lZGlhUGxheWVyUHJveHlQbHVnaW4oV2lk
Z2V0KikgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9i
amVjdENvbnRlbnRUeXBlKCk7IH0KKyAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIHsgcmV0dXJuIE9i
amVjdENvbnRlbnRUeXBlKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJl
Y3REYXRhVG9QbHVnaW4oV2lkZ2V0KikgeyB9CkBAIC01MTcsNyArNTE3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRN
ZW51SXRlbSosIGNvbnN0IENvbnRleHRNZW51KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93
bmxvYWRVUkwoY29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBVUkwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29u
c3QgSGl0VGVzdFJlc3VsdCYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xl
KGNvbnN0IEZyYW1lKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShG
cmFtZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
OWJmNDQyYTllOTRkNmM1ZmMzOGVmN2NmNzQyNWZhMDA3NzMwZDdmNS4uM2M0MWVmZTEyNjdiMmFi
ZDY0MTQ3ZTE0YTBkOWYxODI2NzYxY2JmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBpbnQ2NF90IGdlbmVyYXRlRm9y
bURhdGFJZGVudGlmaWVyKCkKICAgICByZXR1cm4gKytuZXh0SWRlbnRpZmllcjsKIH0KIAotc3Rh
dGljIHZvaWQgYXBwZW5kTWFpbHRvUG9zdEZvcm1EYXRhVG9VUkwoS1VSTCYgdXJsLCBjb25zdCBG
b3JtRGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ1R5cGUpCitzdGF0aWMgdm9pZCBh
cHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRh
dGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdUeXBlKQogewogICAgIFN0cmluZyBib2R5ID0gZGF0
YS5mbGF0dGVuVG9TdHJpbmcoKTsKIApAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSTChLVVJMJiB1cmwsIGNvbnN0IEZvcm1EYXRhJiBkYXRh
LCBjb25zdAogCiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihj
b25zdCBTdHJpbmcmIGFjdGlvbikKIHsKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHBhcnNlIGludG8g
YSBLVVJMPworICAgIC8vIEZJWE1FOiBDYW4gd2UgcGFyc2UgaW50byBhIFVSTD8KICAgICBtX2Fj
dGlvbiA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhY3Rpb24pOwogfQogCkBA
IC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0cmlidXRlczo6Y29weUZy
b20oY29uc3QgQXR0cmlidXRlcyYgb3RoZXIpCiAgICAgbV9hY2NlcHRDaGFyc2V0ID0gb3RoZXIu
bV9hY2NlcHRDaGFyc2V0OwogfQogCi1pbmxpbmUgRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNz
aW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IEtVUkwmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBzdGF0
ZSwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZGF0YSwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9v
bCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCitpbmxpbmUgRm9ybVN1Ym1p
c3Npb246OkZvcm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBj
b25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJp
bmcmIGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
ICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fYWN0aW9uKGFjdGlvbikKICAgICAsIG1f
dGFyZ2V0KHRhcmdldCkKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPEZvcm1TdWJtaXNz
aW9uPiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3Qg
QQogICAgIH0KICAgICAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmb3JtLT5kb2N1bWVudCgp
OwotICAgIEtVUkwgYWN0aW9uVVJMID0gZG9jdW1lbnQuY29tcGxldGVVUkwoY29waWVkQXR0cmli
dXRlcy5hY3Rpb24oKS5pc0VtcHR5KCkgPyBkb2N1bWVudC51cmwoKS5zdHJpbmcoKSA6IGNvcGll
ZEF0dHJpYnV0ZXMuYWN0aW9uKCkpOworICAgIFVSTCBhY3Rpb25VUkwgPSBkb2N1bWVudC5jb21w
bGV0ZVVSTChjb3BpZWRBdHRyaWJ1dGVzLmFjdGlvbigpLmlzRW1wdHkoKSA/IGRvY3VtZW50LnVy
bCgpLnN0cmluZygpIDogY29waWVkQXR0cmlidXRlcy5hY3Rpb24oKSk7CiAgICAgYm9vbCBpc01h
aWx0b0Zvcm0gPSBhY3Rpb25VUkwucHJvdG9jb2xJcygibWFpbHRvIik7CiAgICAgYm9vbCBpc011
bHRpUGFydEZvcm0gPSBmYWxzZTsKICAgICBTdHJpbmcgZW5jb2RpbmdUeXBlID0gY29waWVkQXR0
cmlidXRlcy5lbmNvZGluZ1R5cGUoKTsKQEAgLTIyMiwxMiArMjIyLDEyIEBAIFBhc3NSZWZQdHI8
Rm9ybVN1Ym1pc3Npb24+IEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBm
b3JtLCBjb25zdCBBCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGb3JtU3VibWlzc2lvbihjb3Bp
ZWRBdHRyaWJ1dGVzLm1ldGhvZCgpLCBhY3Rpb25VUkwsIHRhcmdldE9yQmFzZVRhcmdldCwgZW5j
b2RpbmdUeXBlLCBmb3JtU3RhdGUucmVsZWFzZSgpLCBmb3JtRGF0YS5yZWxlYXNlKCksIGJvdW5k
YXJ5LCBsb2NrSGlzdG9yeSwgZXZlbnQpKTsKIH0KIAotS1VSTCBGb3JtU3VibWlzc2lvbjo6cmVx
dWVzdFVSTCgpIGNvbnN0CitVUkwgRm9ybVN1Ym1pc3Npb246OnJlcXVlc3RVUkwoKSBjb25zdAog
ewogICAgIGlmIChtX21ldGhvZCA9PSBGb3JtU3VibWlzc2lvbjo6UG9zdE1ldGhvZCkKICAgICAg
ICAgcmV0dXJuIG1fYWN0aW9uOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMKG1fYWN0aW9uKTsKKyAg
ICBVUkwgcmVxdWVzdFVSTChtX2FjdGlvbik7CiAgICAgcmVxdWVzdFVSTC5zZXRRdWVyeShtX2Zv
cm1EYXRhLT5mbGF0dGVuVG9TdHJpbmcoKSk7ICAgIAogICAgIHJldHVybiByZXF1ZXN0VVJMOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCA0ZDM1OTNiNDZlNWUy
YjBmMTZkMDZlOGY0OGY5OThiMThjY2FlZDg2Li5jMmY4M2Q1M2Y4OTE1MGVmOTFhZjA5ZWYzY2Q5
ZDYzMTk0OWFmZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1p
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAt
MzIsNyArMzIsNyBAQAogI2RlZmluZSBGb3JtU3VibWlzc2lvbl9oCiAKICNpbmNsdWRlICJGb3Jt
U3RhdGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtOTIsMTAgKzkyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcG9w
dWxhdGVGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QmKTsKICAgICAKLSAgICBLVVJM
IHJlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBVUkwgcmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAg
TWV0aG9kIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9Ci0gICAgY29uc3QgS1VS
TCYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb247IH0KKyAgICBjb25zdCBVUkwmIGFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgY29uc3QgU3RyaW5nJiB0YXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldDsgfQogICAgIHZvaWQgY2xlYXJUYXJnZXQoKSB7
IG1fdGFyZ2V0ID0gU3RyaW5nKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZTsgfQpAQCAtMTExLDExICsxMTEsMTEgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKSB7IG1fb3JpZ2lu
ID0gb3JpZ2luOyB9CiAKIHByaXZhdGU6Ci0gICAgRm9ybVN1Ym1pc3Npb24oTWV0aG9kLCBjb25z
dCBLVVJMJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25z
dCBTdHJpbmcmIGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50Pik7
CisgICAgRm9ybVN1Ym1pc3Npb24oTWV0aG9kLCBjb25zdCBVUkwmIGFjdGlvbiwgY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0
YXRlPiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIGJvb2wg
bG9ja0hpc3RvcnksIFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAogICAgIC8vIEZJWE1FOiBIb2xkIGFu
IGluc3RhbmNlIG9mIEF0dHJpYnV0ZXMgaW5zdGVhZCBvZiBpbmRpdmlkdWFsIG1lbWJlcnMuCiAg
ICAgTWV0aG9kIG1fbWV0aG9kOwotICAgIEtVUkwgbV9hY3Rpb247CisgICAgVVJMIG1fYWN0aW9u
OwogICAgIFN0cmluZyBtX3RhcmdldDsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZTsKICAgICBS
ZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCmluZGV4IDM4ZDdjYTVlZWExNGVkNWUzYzkxODJmODlhNDE0YTIwY2Q0Yjk0MTcuLmYz
ZWY2OWU3YTUxOTQ3ODQyZDljMGU3YWUyMDhmMTA5ZGNjYmIzODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIEZyYW1lTG9hZGVyOjp+RnJh
bWVMb2FkZXIoKQogdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiB7CiAgICAgLy8gVGhpcyBzb21l
d2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0aWFsIGVtcHR5IGRv
Y3VtZW50LgotICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0ZURvY3Vt
ZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJp
bmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CisgICAgc2V0UG9saWN5RG9jdW1lbnRM
b2FkZXIobV9jbGllbnQuY3JlYXRlRG9jdW1lbnRMb2FkZXIoUmVzb3VyY2VSZXF1ZXN0KFVSTChQ
YXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKSwgU3Vic3RpdHV0ZURhdGEoKSkuZ2V0KCkp
OwogICAgIHNldFByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIobV9wb2xpY3lEb2N1bWVudExvYWRl
ci5nZXQoKSk7CiAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdN
YWluUmVzb3VyY2UoKTsKICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsK
QEAgLTI4NywxMyArMjg3LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERlZmVyc0xvYWRpbmco
Ym9vbCBkZWZlcnMpCiAgICAgfQogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlv
bihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBib29sIHJlZnJlc2gpCit2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1
cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QsIGJv
b2wgcmVmcmVzaCkKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0KHNlY3VyaXR5
T3JpZ2luLCBSZXNvdXJjZVJlcXVlc3QodXJsLCByZWZlcnJlciwgcmVmcmVzaCA/IFJlbG9hZEln
bm9yaW5nQ2FjaGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSksICJfc2VsZiIpLAogICAg
ICAgICAwLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgTWF5YmVTZW5kUmVmZXJy
ZXIsIFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXI6OnVybFNlbGVjdGVkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJn
ZXQsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJl
ZmVycmVyKQordm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZl
bnQsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2Vu
ZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlcikKIHsKICAgICB1cmxTZWxlY3RlZChGcmFtZUxv
YWRSZXF1ZXN0KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VS
ZXF1ZXN0KHVybCksIHBhc3NlZFRhcmdldCksCiAgICAgICAgIHRyaWdnZXJpbmdFdmVudCwgbG9j
a0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgRG9Ob3RS
ZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwpOwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlz
c2lvbikKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlzc2lvbi0+
YWN0aW9uKCkpKSB7Ci0gICAgICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2Vj
dXJpdHlQb2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKEtVUkwoc3VibWlzc2lvbi0+YWN0aW9uKCkp
KSkKKyAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd0Zvcm1BY3Rpb24oVVJMKHN1Ym1pc3Npb24tPmFjdGlvbigpKSkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9
IHRydWU7CiAgICAgICAgIG1fZnJhbWUuc2NyaXB0KCkuZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChz
dWJtaXNzaW9uLT5hY3Rpb24oKSwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwp
OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRh
KCkKICAgICBtX2ZyYW1lLm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KGRl
bGF5LCB1cmwpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzZXRPdXRnb2luZ1JlZmVycmVyKGNv
bnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldE91dGdvaW5nUmVmZXJyZXIoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgbV9vdXRnb2luZ1JlZmVycmVyID0gdXJsLnN0cmlwcGVkRm9y
VXNlQXNSZWZlcnJlcigpOwogfQpAQCAtODUwLDcgKzg1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKQogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW1wbGlj
aXRDbG9zZSgpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxkRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1l
KQordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQogewogICAgIEFTU0VS
VChjaGlsZEZyYW1lKTsKIApAQCAtODg2LDcgKzg4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRBcmNoaXZlKFBhc3NSZWZQdHI8QXJjaGl2ZT4gYXJjaGl2ZSkKICAgICBpZiAoIW1haW5SZXNv
dXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShtYWluUmVzb3VyY2UtPmRhdGEoKSwgbWFpblJlc291cmNlLT5taW1lVHlwZSgp
LCBtYWluUmVzb3VyY2UtPnRleHRFbmNvZGluZygpLCBLVVJMKCkpOworICAgIFN1YnN0aXR1dGVE
YXRhIHN1YnN0aXR1dGVEYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UtPm1p
bWVUeXBlKCksIG1haW5SZXNvdXJjZS0+dGV4dEVuY29kaW5nKCksIFVSTCgpKTsKICAgICAKICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChtYWluUmVzb3VyY2UtPnVybCgpKTsKICNpZiBQTEFU
Rk9STShNQUMpCkBAIC04OTksNyArODk5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hp
dmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNoaXZlKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRl
cjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCitPYmplY3RD
b250ZW50VHlwZSBGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcykKIHsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBtaW1lVHlwZUluOwogCkBAIC05
NTMsNyArOTUzLDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbigpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJp
bmcoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlD
U1AoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1B
Y3Rpb25BbGxvd2VkQnlDU1AoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKG1fc3Vi
bWl0dGVkRm9ybVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTAwMCw3
ICsxMDAwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiAK
IHZvaWQgRnJhbWVMb2FkZXI6OnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rpb24o
KQogewotICAgIG1fc3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKKyAgICBtX3N1Ym1pdHRlZEZv
cm1VUkwgPSBVUkwoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKQpAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRl
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoKQogICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyht
X2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c2V0Rmly
c3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbV9mcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoJm1fZnJhbWUpKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXModXJsKTsKQEAgLTEwMTksMTMgKzEwMTksMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKQogCiAvLyBUaGlzIGRvZXMg
dGhlIHNhbWUga2luZCBvZiB3b3JrIHRoYXQgZGlkT3BlblVSTCBkb2VzLCBleGNlcHQgaXQgcmVs
aWVzIG9uIHRoZSBmYWN0CiAvLyB0aGF0IGEgaGlnaGVyIGxldmVsIGFscmVhZHkgY2hlY2tlZCB0
aGF0IHRoZSBVUkxzIG1hdGNoIGFuZCB0aGUgc2Nyb2xsaW5nIGlzIHRoZSByaWdodCB0aGluZyB0
byBkby4KLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBLVVJMJiB1
cmwsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwgYm9vbCBp
c05ld05hdmlnYXRpb24pCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29u
c3QgVVJMJiB1cmwsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVj
dCwgYm9vbCBpc05ld05hdmlnYXRpb24pCiB7CiAgICAgLy8gSWYgd2UgaGF2ZSBhIHN0YXRlIG9i
amVjdCwgd2UgY2Fubm90IGFsc28gYmUgYSBuZXcgbmF2aWdhdGlvbi4KICAgICBBU1NFUlQoIXN0
YXRlT2JqZWN0IHx8IChzdGF0ZU9iamVjdCAmJiAhaXNOZXdOYXZpZ2F0aW9uKSk7CiAKICAgICAv
LyBVcGRhdGUgdGhlIGRhdGEgc291cmNlJ3MgcmVxdWVzdCB3aXRoIHRoZSBuZXcgVVJMIHRvIGZh
a2UgdGhlIFVSTCBjaGFuZ2UKLSAgICBLVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLT5zZXRVUkwodXJsKTsKICAgICBzZXRPdXRnb2luZ1JlZmVycmVy
KHVybCk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKHVybCk7CkBAIC0xMTU4LDcgKzExNTgsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJv
b2wgbG9ja0hpcwogICAgIC8vIFByb3RlY3QgZnJhbWUgZnJvbSBnZXR0aW5nIGJsb3duIGF3YXkg
aW5zaWRlIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGluIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIu
CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogCi0gICAgS1VSTCB1cmwgPSByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnVybCgpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CiAg
ICAgaWYgKCFyZXF1ZXN0LnJlcXVlc3RlcigpLT5jYW5EaXNwbGF5KHVybCkpIHsKQEAgLTExOTks
NyArMTE5OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBsb2NrSGlzCiAgICAgfQogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9h
ZFR5cGUgbmV3TG9hZFR5cGUsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IFVSTCYg
bmV3VVJMLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
Ym9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlwZSBuZXdMb2FkVHlwZSwKICAgICBQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IHBycEZvcm1TdGF0ZSkKIHsK
ICAgICBpZiAobV9pblN0b3BBbGxMb2FkZXJzKQpAQCAtMTI3MiwxNCArMTI3MiwxNCBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkVVJMKGNvbnN0IEtVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgY29uc3QgU3RyaQogICAgIH0KIH0KIAotU3Vic3RpdHV0ZURhdGEgRnJhbWVMb2Fk
ZXI6OmRlZmF1bHRTdWJzdGl0dXRlRGF0YUZvclVSTChjb25zdCBLVVJMJiB1cmwpCitTdWJzdGl0
dXRlRGF0YSBGcmFtZUxvYWRlcjo6ZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IFVS
TCYgdXJsKQogewogICAgIGlmICghc2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KHVybCkp
CiAgICAgICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YSgpOwogICAgIFN0cmluZyBzcmNkb2MgPSBt
X2ZyYW1lLm93bmVyRWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKHNyY2RvY0F0dHIpOwogICAg
IEFTU0VSVCghc3JjZG9jLmlzTnVsbCgpKTsKICAgICBDU3RyaW5nIGVuY29kZWRTcmNkb2MgPSBz
cmNkb2MudXRmOCgpOwotICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5ndGgoKSksICJ0ZXh0
L2h0bWwiLCAiVVRGLTgiLCBLVVJMKCkpOworICAgIHJldHVybiBTdWJzdGl0dXRlRGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShlbmNvZGVkU3JjZG9jLmRhdGEoKSwgZW5jb2RlZFNyY2RvYy5sZW5n
dGgoKSksICJ0ZXh0L2h0bWwiLCAiVVRGLTgiLCBVUkwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCkKQEAgLTEzODYs
NyArMTM4Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgRnJhbWVMb2FkVHlwZSB0CiAgICAgUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlID0gcHJwRm9ybVN0YXRlOwogICAgIGJvb2wgaXNGb3JtU3VibWlzc2lvbiA9
IGZvcm1TdGF0ZTsKIAotICAgIGNvbnN0IEtVUkwmIG5ld1VSTCA9IGxvYWRlci0+cmVxdWVzdCgp
LnVybCgpOworICAgIGNvbnN0IFVSTCYgbmV3VVJMID0gbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCk7
CiAgICAgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kID0gbG9hZGVyLT5yZXF1ZXN0KCkuaHR0cE1l
dGhvZCgpOwogCiAgICAgaWYgKHNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oaXNGb3Jt
U3VibWlzc2lvbiwgaHR0cE1ldGhvZCwgcG9saWN5Q2hlY2tlcigpLmxvYWRUeXBlKCksIG5ld1VS
TCkpIHsKQEAgLTE0MzgsNyArMTQzOCw3IEBAIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgRnJhbWVM
b2FkZXI6OmluaXRpYWxSZXF1ZXN0KCkgY29uc3QKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OndpbGxM
b2FkTWVkaWFFbGVtZW50VVJMKEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2Fk
TWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsKQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0
KHVybCk7CiAKQEAgLTE0NTQsNyArMTQ1NCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OndpbGxMb2Fk
TWVkaWFFbGVtZW50VVJMKEtVUkwmIHVybCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVs
b2FkVG9IYW5kbGVVbnJlYWNoYWJsZVVSTChEb2N1bWVudExvYWRlciogZG9jTG9hZGVyKQogewot
ICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2NMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7Cisg
ICAgVVJMIHVucmVhY2hhYmxlVVJMID0gZG9jTG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOwogCiAg
ICAgaWYgKHVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTQ4Miw3ICsxNDgyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRl
RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXF1ZXN0KCk7Ci0g
ICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9IG1fZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJM
KCk7CisgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFi
bGVVUkwoKTsKICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmVx
dWVzdC5zZXRVUkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpyZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVu
Y29kaW5nKQogICAgIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIobG9hZGVyLmdldCgpLCBGcmFtZUxv
YWRUeXBlUmVsb2FkLCAwKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJy
aWRlVVJMKGNvbnN0IEtVUkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkKQordm9p
ZCBGcmFtZUxvYWRlcjo6cmVsb2FkV2l0aE92ZXJyaWRlVVJMKGNvbnN0IFVSTCYgb3ZlcnJpZGVV
cmwsIGJvb2wgZW5kVG9FbmRSZWxvYWQpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKQog
ICAgICAgICByZXR1cm47CkBAIC0xNTIzLDcgKzE1MjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZWxvYWQoYm9vbCBlbmRUb0VuZFJlbG9hZCkKIAogICAgIC8vIFJlcGxhY2UgZXJyb3ItcGFnZSBV
Ukwgd2l0aCB0aGUgVVJMIHdlIHdlcmUgdHJ5aW5nIHRvIHJlYWNoLgogICAgIFJlc291cmNlUmVx
dWVzdCBpbml0aWFsUmVxdWVzdCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlcXVlc3QoKTsKLSAgICBL
VVJMIHVucmVhY2hhYmxlVVJMID0gbV9kb2N1bWVudExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsK
KyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBtX2RvY3VtZW50TG9hZGVyLT51bnJlYWNoYWJsZVVS
TCgpOwogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFs
UmVxdWVzdC5zZXRVUkwodW5yZWFjaGFibGVVUkwpOwogCkBAIC0xOTE3LDcgKzE5MTcsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9vbCBj
YW5jZWxXaXRoTG9hZEluUHJvZ3JlcwogICAgIG1fc2VudFJlZGlyZWN0Tm90aWZpY2F0aW9uID0g
ZmFsc2U7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNsaWVudFJlZGlyZWN0ZWQoY29uc3QgS1VS
TCYgdXJsLCBkb3VibGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QpCit2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYg
dXJsLCBkb3VibGUgc2Vjb25kcywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2Fy
ZExpc3QpCiB7CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KHVybCwgc2Vjb25kcywgZmlyZURhdGUpOwogICAgIApAQCAtMTkzMiw3ICsxOTMyLDcgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBLVVJMJiB1cmwsIGRvdWJsZSBz
ZWNvbmRzLCBkb3VibGUgZmlyZUQKICAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0Jh
Y2tGb3J3YXJkTGlzdCB8fCBoaXN0b3J5KCkuY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkp
ICYmIG1fZG9jdW1lbnRMb2FkZXIgJiYgIW1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlv
bjsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUmVsb2FkKGNvbnN0IEtVUkwmIGN1cnJl
bnRVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKQorYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkUmVsb2FkKGNvbnN0IFVSTCYgY3VycmVudFVSTCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVS
TCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHJ1bGU6ICJEb24ndCBy
ZWxvYWQgaWYgbmF2aWdhdGluZyBieSBmcmFnbWVudCB3aXRoaW4KICAgICAvLyB0aGUgc2FtZSBV
UkwsIGJ1dCBkbyByZWxvYWQgaWYgZ29pbmcgdG8gYSBuZXcgVVJMIG9yIHRvIHRoZSBzYW1lIFVS
TCB3aXRoIG5vCkBAIC0xOTgyLDcgKzE5ODIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENh
Y2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gRG9uJ3QgcmUtZW1pdCB0aGUgbG9h
ZCBldmVudC4KICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsKIAotICAgIEtVUkwg
dXJsID0gY2FjaGVkRnJhbWUudXJsKCk7CisgICAgVVJMIHVybCA9IGNhY2hlZEZyYW1lLnVybCgp
OwogCiAgICAgLy8gRklYTUU6IEkgc3VzcGVjdCB0aGlzIGJsb2NrIG9mIGNvZGUgZG9lc24ndCBk
byBhbnl0aGluZy4KICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhdXJs
Lmhvc3QoKS5pc0VtcHR5KCkgJiYgdXJsLnBhdGgoKS5pc0VtcHR5KCkpCkBAIC0yMTQyLDcgKzIx
NDIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZUZvclRoaXNGcmFtZSgp
CiAgICAgICAgICAgICAgICAgaWYgKHBkbCA9PSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIp
CiAgICAgICAgICAgICAgICAgICAgIGNsZWFyUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkgewotICAgICAgICAgICAgICAg
ICAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFj
aGFibGVVUkwoKTsKKyAgICAgICAgICAgICAgICAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgJiYgdW5yZWFjaGFibGVVUkwgPT0gcGRs
LT5yZXF1ZXN0KCkudXJsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSZXNldCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KQEAgLTIyMzAsMTIgKzIyMzAsMTIgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgbV9wcm92
aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKIH0KIAot
c3RhdGljIEtVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2Up
CitzdGF0aWMgVVJMIG9yaWdpbmF0aW5nVVJMRnJvbUJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdl
KQogewogICAgIC8vIEZJWE1FOiBDYW4gdGhpcyBsb2dpYyBiZSByZXBsYWNlZCB3aXRoIG1fZnJh
bWUuZG9jdW1lbnQoKS0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKT8KICAgICAvLyBJdCBoYXMgdGhl
IHNhbWUgbWVhbmluZyBvZiAicGFnZSBhIHVzZXIgdGhpbmtzIGlzIHRoZSBjdXJyZW50IG9uZSIu
CiAKLSAgICBLVVJMIG9yaWdpbmFsVVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICBpbnQg
YmFja0NvdW50ID0gcGFnZS0+YmFja0ZvcndhcmQoKS5iYWNrQ291bnQoKTsKICAgICBmb3IgKGlu
dCBiYWNrSW5kZXggPSAwOyBiYWNrSW5kZXggPD0gYmFja0NvdW50OyBiYWNrSW5kZXgrKykgewog
ICAgICAgICAvLyBGSVhNRTogQXQgb25lIHBvaW50IHdlIGhhZCBjb2RlIGhlcmUgdG8gY2hlY2sg
YSAid2FzIHVzZXIgZ2VzdHVyZSIgZmxhZy4KQEAgLTIyNDksMTIgKzIyNDksMTIgQEAgc3RhdGlj
IEtVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0KFBhZ2UqIHBhZ2UpCiAgICAg
ICAgICAgICByZXR1cm4gb3JpZ2luYWxVUkw7CiAgICAgfQogCi0gICAgcmV0dXJuIEtVUkwoKTsK
KyAgICByZXR1cm4gVVJMKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJM
Rm9yRG93bmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBLVVJM
IG9yaWdpbmFsVVJMOworICAgIFVSTCBvcmlnaW5hbFVSTDsKICAgICAKICAgICAvLyBJZiB0aGVy
ZSBpcyBubyByZWZlcnJlciwgYXNzdW1lIHRoYXQgdGhlIGRvd25sb2FkIHdhcyBpbml0aWF0ZWQg
ZGlyZWN0bHksIHNvIGN1cnJlbnQgZG9jdW1lbnQgaXMKICAgICAvLyBjb21wbGV0ZWx5IHVucmVs
YXRlZCB0byBpdC4gU2VlIDxyZGFyOi8vcHJvYmxlbS81Mjk0NjkxPi4KQEAgLTIyODAsNyArMjI4
MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgICAgIGhvc3RPbmx5VVJMU3RyaW5n
ID0gbWFrZVN0cmluZyhvcmlnaW5hbFVSTC5wcm90b2NvbCgpLCAiOi8vIiwgb3JpZ2luYWxVUkwu
aG9zdCgpKTsKIAogICAgICAgICAvLyBGSVhNRTogUmVuYW1lIGZpcnN0UGFydHlGb3JDb29raWVz
IGJhY2sgdG8gbWFpbkRvY3VtZW50VVJMLiBJdCB3YXMgYSBtaXN0YWtlIHRvIHRoaW5rIHRoYXQg
aXQgd2FzIG9ubHkgdXNlZCBmb3IgY29va2llcy4KLSAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhLVVJMKEtVUkwoKSwgaG9zdE9ubHlVUkxTdHJpbmcpKTsKKyAgICAgICAg
cmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhVUkwoVVJMKCksIGhvc3RPbmx5VVJMU3Ry
aW5nKSk7CiAgICAgfQogfQogCkBAIC0yMzcyLDcgKzIzNzIsNyBAQCBpbnQgRnJhbWVMb2FkZXI6
Om51bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyhib29sIHJlY3Vyc2UpIGNvbnN0CiAgICAgcmV0
dXJuIGNvdW50OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBLVVJM
JiB1cmwpIGNvbnN0CitTdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBTdHJpbmcgdXNlckFnZW50ID0gbV9jbGllbnQudXNlckFnZW50KHVy
bCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVVzZXJBZ2VudE92ZXJyaWRl
KCZtX2ZyYW1lLCAmdXNlckFnZW50KTsKQEAgLTI1MzksNyArMjUzOSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwg
Y29uc3QgU3RyaW5nCiAgICAgLy8gYnVuY2ggb2YgcGFyYW1ldGVycyB0aGF0IHdvdWxkIGNvbWUg
aW4gaGVyZSBhbmQgdGhlbiBiZSBidWlsdCBiYWNrIHVwIHRvIGEgUmVzb3VyY2VSZXF1ZXN0LiAg
SW4gY2FzZQogICAgIC8vIGFueSBjYWxsZXIgZGVwZW5kcyBvbiB0aGUgaW1tdXRhYmlsaXR5IG9m
IHRoZSBvcmlnaW5hbCBSZXNvdXJjZVJlcXVlc3QsIEknbSByZWJ1aWxkaW5nIGEgUmVzb3VyY2VS
ZXF1ZXN0CiAgICAgLy8gZnJvbSBzY3JhdGNoIGFzIGl0IGRpZCBhbGwgYWxvbmcuCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gaW5SZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gaW5S
ZXF1ZXN0LnVybCgpOwogICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBpblJlcXVlc3Qu
aHR0cEJvZHkoKTsKICAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gaW5SZXF1ZXN0Lmh0
dHBDb250ZW50VHlwZSgpOwogICAgIFN0cmluZyBvcmlnaW4gPSBpblJlcXVlc3QuaHR0cE9yaWdp
bigpOwpAQCAtMjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2ZWRNYWlu
UmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIGlmIChtX3N0
YXRlID09IEZyYW1lU3RhdGVQcm92aXNpb25hbCAmJiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIpIHsKICAgICAgICAgaWYgKG1fc3VibWl0dGVkRm9ybVVSTCA9PSBtX3Byb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS51cmwoKSkKLSAgICAgICAgICAgIG1f
c3VibWl0dGVkRm9ybVVSTCA9IEtVUkwoKTsKKyAgICAgICAgICAgIG1fc3VibWl0dGVkRm9ybVVS
TCA9IFVSTCgpOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFdlIG1pZ2h0IGhhdmUgbWFkZSBh
IHBhZ2UgY2FjaGUgaXRlbSwgYnV0IG5vdyB3ZSdyZSBiYWlsaW5nIG91dCBkdWUgdG8gYW4gZXJy
b3IgYmVmb3JlIHdlIGV2ZXIKICAgICAgICAgLy8gdHJhbnNpdGlvbmVkIHRvIHRoZSBuZXcgcGFn
ZSAoYmVmb3JlIFdlYkZyYW1lU3RhdGUgPT0gY29tbWl0KS4gIFRoZSBnb2FsIGhlcmUgaXMgdG8g
cmVzdG9yZSBhbnkgc3RhdGUKQEAgLTI2NzEsNyArMjY3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1CiAgICAgbG9hZEluU2FtZURvY3VtZW50KHJlcXVlc3QudXJsKCksIDAsICFpc1JlZGly
ZWN0KTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdh
dGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6
c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Npb24sIGNv
bnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBpZiB3ZSBhcmUgc3VibWl0dGluZyBh
IGZvcm0gd2l0aCBtZXRob2Qgb3RoZXIgdGhhbiAiR0VUIiwgZXhwbGljaXRseSByZWxvYWRpbmcs
CiAgICAgLy8gY3VycmVudGx5IGRpc3BsYXlpbmcgYSBmcmFtZXNldCwgb3IgaWYgdGhlIFVSTCBk
b2VzIG5vdCBoYXZlIGEgZnJhZ21lbnQuCkBAIC0yNjg5LDcgKzI2ODksNyBAQCBib29sIEZyYW1l
TG9hZGVyOjpzaG91bGRQZXJmb3JtRnJhZ21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlz
c2lvbiwgY29uc3QgUwogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91
bmRhcnkoY29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9GcmFnbWVu
dFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBVUkwmIHVybCkKIHsKICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCkBAIC0yNzQ1LDcgKzI3NDUsNyBA
QCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAgICAgfQogCiAgICAgaWYgKCFzaG91
bGRDbG9zZSkKLSAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gS1VSTCgpOworICAgICAgICBt
X3N1Ym1pdHRlZEZvcm1VUkwgPSBVUkwoKTsKIAogICAgIG1fY3VycmVudE5hdmlnYXRpb25IYXNT
aG93bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IGZhbHNlOwogICAgIHJldHVybiBzaG91bGRD
bG9zZTsKQEAgLTI5NzcsNyArMjk3Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFn
ZW50KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdl
bnQodXNlckFnZW50KTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9h
ZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBLVVJMJiB1cmws
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCitib29sIEZyYW1lTG9hZGVyOjpzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNv
bnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIEZl
YXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShtX2ZyYW1lLmRvY3VtZW50KCksIEZlYXR1cmVPYnNlcnZl
cjo6WEZyYW1lT3B0aW9ucyk7CiAKQEAgLTMwMzUsMTQgKzMwMzUsMTQgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKICAgICBjb21taXRQcm92
aXNpb25hbExvYWQoKTsKIH0KIAotYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc1Nh
bWVBc0N1cnJlbnQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAg
aWYgKCFoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IHJldHVybiB1cmwgPT0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCktPnVybCgpIHx8IHVybCA9PSBo
aXN0b3J5KCkuY3VycmVudEl0ZW0oKS0+b3JpZ2luYWxVUkwoKTsKIH0KIAotYm9vbCBGcmFtZUxv
YWRlcjo6c2hvdWxkVHJlYXRVUkxBc1NyY2RvY0RvY3VtZW50KGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKK2Jvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHVybC5zdHJp
bmcoKSwgImFib3V0OnNyY2RvYyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTMxLDkg
KzMxMzEsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgS1VSTCBpdGVtVVJMID0gaXRlbS0+dXJsKCk7Ci0gICAgS1VSTCBpdGVtT3JpZ2lu
YWxVUkwgPSBpdGVtLT5vcmlnaW5hbFVSTCgpOwotICAgIEtVUkwgY3VycmVudFVSTDsKKyAgICBV
UkwgaXRlbVVSTCA9IGl0ZW0tPnVybCgpOworICAgIFVSTCBpdGVtT3JpZ2luYWxVUkwgPSBpdGVt
LT5vcmlnaW5hbFVSTCgpOworICAgIFVSTCBjdXJyZW50VVJMOwogICAgIGlmIChkb2N1bWVudExv
YWRlcigpKQogICAgICAgICBjdXJyZW50VVJMID0gZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCk7CiAg
ICAgUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGl0ZW0tPmZvcm1EYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGY1N2U1ZWY5MGUyNjMyMGRjYTMzMWYyMDVmYmU3
OGRiZTI3OTVjNjUuLjg2NGRiNjU5NTA2Y2ExZGNjOGZiOGE3Y2IxYTM4OTJhNTQ4N2I2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0dXBGb3JSZXBsYWNlKCk7CiAKICAgICAvLyBGSVhNRTogVGhlc2UgYXJl
IGFsbCBmdW5jdGlvbnMgd2hpY2ggc3RhcnQgbG9hZHMuIFdlIGhhdmUgdG9vIG1hbnkuCi0gICAg
dm9pZCBsb2FkVVJMSW50b0NoaWxkRnJhbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcmVm
ZXJlciwgRnJhbWUqKTsKKyAgICB2b2lkIGxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEZyYW1lKik7CiAgICAgdm9pZCBsb2FkRnJhbWVSZXF1
ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QsICAvLyBDYWxsZWQgYnkgc3VibWl0Rm9ybSwgY2FsbHMgbG9hZFBvc3RS
ZXF1ZXN0IGFuZCBsb2FkVVJMLgogICAgICAgICBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0
cjxGb3JtU3RhdGU+LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogCkBAIC0xMTQsMTMgKzExNCwxMyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3RvcmVkQ3JlZGVudGlhbHMsIENsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9y
PGNoYXI+JiBkYXRhKTsKIAotICAgIHZvaWQgY2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsb2NrSGlzdG9yeSA9
IHRydWUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJvb2wgcmVmcmVzaCA9IGZh
bHNlKTsKLSAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRh
cmdldCwgUGFzc1JlZlB0cjxFdmVudD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyKTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9u
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9v
bCBsb2NrSGlzdG9yeSA9IHRydWUsIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IHRydWUsIGJv
b2wgcmVmcmVzaCA9IGZhbHNlKTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiwgYm9vbCBsb2NrSGlzdG9yeSwg
Ym9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogICAgIHZvaWQg
c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHJlbG9h
ZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogICAgIHZvaWQgcmVsb2FkV2l0aE92ZXJy
aWRlRW5jb2RpbmcoY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29kaW5nKTsKLSAgICB2b2lkIHJl
bG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBLVVJMJiBvdmVycmlkZVVybCwgYm9vbCBlbmRUb0Vu
ZFJlbG9hZCA9IGZhbHNlKTsKKyAgICB2b2lkIHJlbG9hZFdpdGhPdmVycmlkZVVSTChjb25zdCBV
UkwmIG92ZXJyaWRlVXJsLCBib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwogCiAgICAgdm9p
ZCBvcGVuKENhY2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgbG9hZEl0ZW0oSGlzdG9yeUl0ZW0q
LCBGcmFtZUxvYWRUeXBlKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiBpbml0aWFsUmVxdWVzdCgpIGNvbnN0OwogICAgIHZvaWQgcmVjZWl2
ZWRNYWluUmVzb3VyY2VFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBib29sIHdp
bGxMb2FkTWVkaWFFbGVtZW50VVJMKEtVUkwmKTsKKyAgICBib29sIHdpbGxMb2FkTWVkaWFFbGVt
ZW50VVJMKFVSTCYpOwogCiAgICAgdm9pZCBoYW5kbGVGYWxsYmFja0NvbnRlbnQoKTsKIApAQCAt
MTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKik7CiAgICAgdm9pZCBkaWRDaGFuZ2VJY29ucyhJY29uVHlwZSk7CiAKLSAgICBib29s
IHNob3VsZFRyZWF0VVJMQXNTcmNkb2NEb2N1bWVudChjb25zdCBLVVJMJikgY29uc3Q7CisgICAg
Ym9vbCBzaG91bGRUcmVhdFVSTEFzU3JjZG9jRG9jdW1lbnQoY29uc3QgVVJMJikgY29uc3Q7CiAK
ICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKQEAgLTIwOCw3ICsyMDgsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWNlaXZlZEZpcnN0RGF0YSgpOwogCiAgICAgdm9pZCBoYW5k
bGVkT25sb2FkRXZlbnRzKCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgY29u
c3Q7CisgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKik7CiAg
ICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CkBAIC0y
MTksNyArMjE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJv
eEZsYWdzIGZsYWdzKSB7IG1fZm9yY2VkU2FuZGJveEZsYWdzIHw9IGZsYWdzOyB9CiAgICAgU2Fu
ZGJveEZsYWdzIGVmZmVjdGl2ZVNhbmRib3hGbGFncygpIGNvbnN0OwogCi0gICAgYm9vbCBjaGVj
a0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCBj
aGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmKSBjb25zdDsKIAogICAgIEZy
YW1lKiBvcGVuZXIoKTsKICAgICB2b2lkIHNldE9wZW5lcihGcmFtZSopOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJhbWVEZXRhY2hlZCgpOwogCi0gICAgdm9pZCBz
ZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNldE91dGdvaW5nUmVm
ZXJyZXIoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIGxvYWREb25lKCk7CiAgICAgdm9pZCBmaW5p
c2hlZFBhcnNpbmcoKTsKQEAgLTI0OCwxMSArMjQ4LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YXBwbHlVc2VyQWdlbnQoUmVzb3VyY2VSZXF1ZXN0Jik7CiAKLSAgICBib29sIHNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmLCB1bnNp
Z25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZEludGVycnVwdExv
YWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjb21wbGV0ZWQoKTsKICAgICBib29s
IGFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCkgY29uc3Q7IC8vIGluY2x1ZGluZyB0aGlzCi0gICAg
dm9pZCBjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBm
aXJlRGF0ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICB2b2lkIGNsaWVudFJlZGly
ZWN0ZWQoY29uc3QgVVJMJiwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUsIGJvb2wgbG9j
a0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgdm9pZCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmlu
aXNoZWQoYm9vbCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlc3MpOwogCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgcHVibGljIGJlY2F1c2UgdGhpcyBhc3luY2hyb25vdXMgY2FsbGJhY2sgZnJvbSB0aGUg
RnJhbWVMb2FkZXJDbGllbnQKQEAgLTI2NCw3ICsyNjQsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IHN1cHByZXNzT3BlbmVySW5OZXdGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NPcGVu
ZXJJbk5ld0ZyYW1lOyB9CiAKLSAgICBzdGF0aWMgT2JqZWN0Q29udGVudFR5cGUgZGVmYXVsdE9i
amVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHN0YXRpYyBPYmplY3RDb250ZW50
VHlwZSBkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIGJvb2wg
cXVpY2tSZWRpcmVjdENvbWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcXVpY2tSZWRpcmVjdENvbWlu
ZzsgfQogCkBAIC0yODQsNyArMjg0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUHJvZ3Jl
c3NpbmdTdGF0dXNDaGFuZ2VkKCk7CiAKLSAgICBjb25zdCBLVVJMJiBwcmV2aW91c1VSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJldmlvdXNVUkw7IH0KKyAgICBjb25zdCBVUkwmIHByZXZpb3VzVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1VSTDsgfQogCiAgICAgdm9pZCBmb3JjZVBhZ2VU
cmFuc2l0aW9uSWZOZWVkZWQoKTsKIApAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UoKTsKIAogICAgIHZvaWQgdXBk
YXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29r
aWVzKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIHNldEZpcnN0UGFydHlGb3JDb29raWVzKGNvbnN0
IFVSTCYpOwogICAgIAogICAgIHZvaWQgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiwgRnJhbWVMb2FkVHlwZSwgYm9vbCBpc01haW5SZXNvdXJjZSk7CiAKQEAgLTMxMiw3
ICszMTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkKENhY2hl
ZFBhZ2UqKTsKICAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpOwogCi0gICAgU3Vic3RpdHV0
ZURhdGEgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBTdWJz
dGl0dXRlRGF0YSBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JVUkwoY29uc3QgVVJMJik7CiAKICAg
ICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hv
dWxkQ29udGludWUpOwogICAgIHN0YXRpYyB2b2lkIGNhbGxDb250aW51ZUxvYWRBZnRlck5ld1dp
bmRvd1BvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3Jt
U3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYs
IGJvb2wgc2hvdWxkQ29udGludWUpOwpAQCAtMzI0LDggKzMyNCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgdm9pZCBjb250
aW51ZUZyYWdtZW50U2Nyb2xsQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGJvb2wgc2hvdWxkQ29udGludWUpOwogCi0gICAgYm9vbCBzaG91bGRQZXJmb3JtRnJh
Z21lbnROYXZpZ2F0aW9uKGJvb2wgaXNGb3JtU3VibWlzc2lvbiwgY29uc3QgU3RyaW5nJiBodHRw
TWV0aG9kLCBGcmFtZUxvYWRUeXBlLCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBzY3JvbGxUb0Zy
YWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0IEtVUkwmKTsKKyAgICBib29sIHNob3VsZFBl
cmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9vbCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTdHJp
bmcmIGh0dHBNZXRob2QsIEZyYW1lTG9hZFR5cGUsIGNvbnN0IFVSTCYpOworICAgIHZvaWQgc2Ny
b2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQg
Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKTsKIApAQCAtMzUyLDE5ICszNTIsMTkgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgbG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsICAgICAgICAgICAgICAgIC8vIENhbGxlZCBieSBs
b2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24KICAgICAgICAg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUs
IFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwotICAgIHZvaWQgbG9h
ZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBs
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWxlZ2F0ZQorICAgIHZvaWQgbG9hZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgICAgICAgICAgLy8gQ2FsbGVkIGJ5IGxv
YWRGcmFtZVJlcXVlc3QsIGNhbGxzIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbiBvciBkaXNwYXRj
aGVzIHRvIG5hdmlnYXRpb24gcG9saWN5IGRlbGVnYXRlCiAgICAgICAgIGJvb2wgbG9ja0hpc3Rv
cnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogCiAgICAgdm9pZCByZWxvYWRXaXRoUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGVuZFRvRW5kUmVsb2FkKTsKIAotICAgIGJvb2wgc2hvdWxkUmVsb2FkKGNvbnN0IEtV
UkwmIGN1cnJlbnRVUkwsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBib29sIHNo
b3VsZFJlbG9hZChjb25zdCBVUkwmIGN1cnJlbnRVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25V
UkwpOwogCiAgICAgdm9pZCByZXF1ZXN0RnJvbURlbGVnYXRlKFJlc291cmNlUmVxdWVzdCYsIHVu
c2lnbmVkIGxvbmcmIGlkZW50aWZpZXIsIFJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgZGV0
YWNoQ2hpbGRyZW4oKTsKICAgICB2b2lkIGNsb3NlQW5kUmVtb3ZlQ2hpbGQoRnJhbWUqKTsKIAot
ICAgIHZvaWQgbG9hZEluU2FtZURvY3VtZW50KGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKKyAg
ICB2b2lkIGxvYWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmLCBQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsIGJvb2wgaXNOZXdOYXZpZ2F0aW9uKTsKIAogICAg
IHZvaWQgcHJlcGFyZUZvckxvYWRTdGFydCgpOwogICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpOwpAQCAtMzc2LDcgKzM3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUNo
ZWNrTG9hZENvbXBsZXRlKCk7CiAgICAgdm9pZCBzdGFydENoZWNrQ29tcGxldGVUaW1lcigpOwog
Ci0gICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBLVVJMJikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVudChjb25zdCBVUkwmKSBj
b25zdDsKIAogICAgIHZvaWQgZGlzcGF0Y2hHbG9iYWxPYmplY3RBdmFpbGFibGVJbkFsbFdvcmxk
cygpOwogCkBAIC00MjcsNyArNDI3LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9uZWVkc0Ns
ZWFyOwogCi0gICAgS1VSTCBtX3N1Ym1pdHRlZEZvcm1VUkw7CisgICAgVVJMIG1fc3VibWl0dGVk
Rm9ybVVSTDsKIAogICAgIFRpbWVyPEZyYW1lTG9hZGVyPiBtX2NoZWNrVGltZXI7CiAgICAgYm9v
bCBtX3Nob3VsZENhbGxDaGVja0NvbXBsZXRlZDsKQEAgLTQ0Niw3ICs0NDYsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IG1fbmV0d29ya2luZ0NvbnRl
eHQ7CiAKLSAgICBLVVJMIG1fcHJldmlvdXNVUkw7CisgICAgVVJMIG1fcHJldmlvdXNVUkw7CiAg
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtOwogICAgIE93blB0
cjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbj4gbV9hY3Rpdml0eUFzc2VydGlvbjsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGFmNzZiYjQ2YTg4
MzA5OWIzMGQ3ZDc4NWNmYWQ5Y2ZlNWQ1ZGU3MTMuLmRjN2Q5ZTk5ODllOTMzZWIyNDZiOTI5ZTgy
ZjcyZmU3OTBhY2EzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgIGNs
YXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7Ci0gICAgY2xhc3MgS1VS
TDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTWVzc2FnZUV2ZW50OwogICAgIGNsYXNzIE5h
dmlnYXRpb25BY3Rpb247CiAgICAgY2xhc3MgUGFnZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9u
bG9hZEV2ZW50cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwg
ZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWROYXZpZ2F0ZVdpdGhpblBhZ2UoKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgPSAwOwpAQCAtMjE0LDggKzIx
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gVGhlIGluZGljYXRlZCBzZWN1
cml0eSBvcmlnaW4gaGFzIHJ1biBhY3RpdmUgY29udGVudCAoc3VjaCBhcyBhCiAgICAgICAgIC8v
IHNjcmlwdCkgZnJvbSBhbiBpbnNlY3VyZSBzb3VyY2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJl
IGNvbnRlbnQgY2FuCiAgICAgICAgIC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNh
bWUgb3JpZ2luLgotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25z
dCBVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgPSAwOwpAQCAtMjQyLDkgKzI0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKSA9
IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVhdGVE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mLCBjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFVSTCYpID0gMDsKIAotICAgICAg
ICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmly
dHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpID0gMDsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNo
ZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKQEAgLTI1OCwyMSArMjU4LDIxIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0ID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxs
b3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpID0gMDsKLSAg
ICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNp
emUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFs
bHkpID0gMDsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxp
bmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgPSAwOworICAgICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkg
PSAwOwogCi0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYg
YmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBwYXJhbVZhbHVlcykgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxl
bWVudCosIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykgPSAwOwogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcq
KSBjb25zdCB7IH0KICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihj
b25zdCBJbnRTaXplJiwgSFRNTE1lZGlhRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5
UGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MTWVkaWFFbGVtZW50KiwgY29uc3QgVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2luKFdp
ZGdldCopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1
Z2luKFdpZGdldCopID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgT2JqZWN0Q29udGVu
dFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAwOworICAgICAgICB2aXJ0
dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykgPSAw
OwogICAgICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0ID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29y
bGQoRE9NV3JhcHBlcldvcmxkKikgPSAwOwpAQCAtMjk0LDE2ICsyOTQsMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c1Vz
ZVBsdWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVS
TChjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpIHsg
fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0
aW5ncykgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9v
bCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MsIGNvbnN0IEtV
UkwmKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGFsbG93U2NyaXB0RnJvbVNvdXJjZShib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgY29uc3QgVVJM
JikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBh
bGxvd1BsdWdpbnMoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIHsgcmV0dXJuIGVuYWJsZWRQZXJT
ZXR0aW5nczsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbWFnZShib29sIGVuYWJsZWRQ
ZXJTZXR0aW5ncywgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGVuYWJsZWRQZXJTZXR0aW5nczsgfQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50KGJvb2wg
ZW5hYmxlZFBlclNldHRpbmdzLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IHJldHVy
biBlbmFibGVkUGVyU2V0dGluZ3M7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmlu
Z0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgeyByZXR1cm4gZW5hYmxlZFBlclNldHRpbmdzOyB9CisgICAgICAgIHZp
cnR1YWwgYm9vbCBhbGxvd0ltYWdlKGJvb2wgZW5hYmxlZFBlclNldHRpbmdzLCBjb25zdCBVUkwm
KSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFs
bG93RGlzcGxheWluZ0luc2VjdXJlQ29udGVudChib29sIGVuYWJsZWRQZXJTZXR0aW5ncywgU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBlbmFibGVkUGVyU2V0dGluZ3M7IH0K
KyAgICAgICAgdmlydHVhbCBib29sIGFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sIGVu
YWJsZWRQZXJTZXR0aW5ncywgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSB7IHJldHVybiBl
bmFibGVkUGVyU2V0dGluZ3M7IH0KIAogICAgICAgICAvLyBUaGlzIGNhbGxiYWNrIG5vdGlmaWVz
IHRoZSBjbGllbnQgdGhhdCB0aGUgZnJhbWUgd2FzIGFib3V0IHRvIHJ1bgogICAgICAgICAvLyBK
YXZhU2NyaXB0IGJ1dCBkaWQgbm90IGJlY2F1c2UgYWxsb3dTY3JpcHQgcmV0dXJuZWQgZmFsc2Uu
IFdlCkBAIC0zMTUsMTEgKzMxNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7IH0KIAogICAgICAgICAvLyBDbGllbnRz
IHRoYXQgZ2VuZXJhbGx5IGRpc2FsbG93IHVuaXZlcnNhbCBhY2Nlc3MgY2FuIG1ha2UgZXhjZXB0
aW9ucyBmb3IgcGFydGljdWxhciBVUkxzLgotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9y
Y2VVbml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21M
b2NhbFVSTChjb25zdCBVUkwmKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCgpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShj
b25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBlbWJlZGRlciBpbnRlcmNlcHRlZCB0
aGUgcG9zdE1lc3NhZ2UgY2FsbAogICAgICAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlz
cGF0Y2hNZXNzYWdlRXZlbnQoU2VjdXJpdHlPcmlnaW4qIC8qdGFyZ2V0Ki8sIE1lc3NhZ2VFdmVu
dCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAppbmRleCA5MjIyY2NlMWVjZGE1NjlkMTI0NDk0OTU0Y2JhYWNhMmU1
NTBjZDRmLi4yNDI4ODU1ZWNiYzFhNzRkYzRjNGY2MjYwYjVhNWQwNTM0MzVkZGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTU0LDcgKzU0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRkVmlzaXRl
ZExpbmsoUGFnZSogcGFnZSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIGlubGluZSB2b2lkIGFk
ZFZpc2l0ZWRMaW5rKFBhZ2UqIHBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT52aXNpdGVkTGlua1N0cmF0ZWd5KCktPmFkZFZpc2l0ZWRMaW5rKHBhZ2Us
IHZpc2l0ZWRMaW5rSGFzaCh1cmwuc3RyaW5nKCkpKTsKIH0KQEAgLTM0Nyw3ICszNDcsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9yeVVwZGF0
ZVR5cGUgdXBkYXRlVHlwZSkKICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1l
LmxvYWRlcigpOwogCiAgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgY29uc3QgS1VSTCYgaGlzdG9yeVVSTCA9IGZy
YW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBjb25zdCBV
UkwmIGhpc3RvcnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0
b3J5KCk7CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50
UmVkaXJlY3QoKSkgewogICAgICAgICBpZiAoIWhpc3RvcnlVUkwuaXNFbXB0eSgpKSB7CkBAIC0z
ODQsNyArMzg0LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RX
aXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICNlbmRpZgogICAgIAogICAgIGJvb2wgbmVlZFBy
aXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAg
IGNvbnN0IEtVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnVybEZvckhpc3RvcnkoKTsKKyAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICht
X2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewog
ICAgICAgICBpZiAoIW1fY3VycmVudEl0ZW0gJiYgIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpKSB7
CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xp
ZW50UmVkaXJlY3QoKQogICAgIH0KIAogICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGNvbnN0IEtVUkwmIGhpc3Rv
cnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3Rvcnko
KTsKKyAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghaGlzdG9yeVVSTC5pc0VtcHR5
KCkgJiYgIW5lZWRQcml2YWN5KSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCkpCkBAIC02MDMsMTAgKzYwMywxMCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0
aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgQVNTRVJU
KGRvY3VtZW50TG9hZGVyKTsKIAotICAgIEtVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVudExv
YWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVu
dExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKIAotICAgIEtVUkwgdXJsOwotICAgIEtVUkwgb3Jp
Z2luYWxVUkw7CisgICAgVVJMIHVybDsKKyAgICBVUkwgb3JpZ2luYWxVUkw7CiAKICAgICBpZiAo
IXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICB1cmwgPSB1bnJlYWNoYWJsZVVS
TDsKQEAgLTg1Miw3ICs4NTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogICAgIGlmICht
X2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhZGRWaXNpdGVkTGluayhwYWdlLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
U3RyaW5nKSk7CisgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsU3RyaW5nKSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxI
aXN0b3J5KCk7CiAKIH0KQEAgLTg3Myw3ICs4NzMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjpyZXBsYWNlU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2Jq
ZQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwotICAgIGFk
ZFZpc2l0ZWRMaW5rKG1fZnJhbWUucGFnZSgpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3Ry
aW5nKSk7CisgICAgYWRkVmlzaXRlZExpbmsobV9mcmFtZS5wYWdlKCksIFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybFN0cmluZykpOwogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRl
R2xvYmFsSGlzdG9yeSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5k
ZXggYjliY2NkOWIyYTA0NTMxNTI0ZmU4YjJjNGZmMzAyOTFhMTg2MzFmYS4uMTdjNzMzZDNlMzMz
Y2NkZDQ4YzlhZWZlMzJmNGI2NTI0ZDdmNjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIExpbmtMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIH0KIAogYm9vbCBMaW5rTG9hZGVyOjpsb2FkTGlu
ayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiByZWxBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYgdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBzaXplcywgY29uc3Qg
S1VSTCYgaHJlZiwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBVUkwmIGhyZWYsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKICAgICAvLyBXZSdsbCByZWNvcmQgdGhpcyBVUkwgcGVyIGRvY3VtZW50LCBldmVuIGlm
IHdlIGxhdGVyIG9ubHkgdXNlIGl0IGluIHRvcCBsZXZlbCBmcmFtZXMKICAgICBpZiAocmVsQXR0
cmlidXRlLm1faWNvblR5cGUgIT0gSW52YWxpZEljb24gJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhy
ZWYuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCBlMjUxMzU3
MjExOGZjOThhOGNmNzEwMmRlZjE0YjFiOGIyM2MzNjU5Li4yNzdlYzQzODI3NDg2NmEzNmFhYmI1
NGU3OTE5Y2NhMGUyMTY2YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTQy
LDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBLVVJMOworY2xhc3MgVVJMOwogc3RydWN0IExpbmtSZWxBdHRyaWJ1dGU7CiAKIC8vIFRoZSBM
aW5rTG9hZGVyIGNhbiBsb2FkIGxpbmsgcmVsIHR5cGVzIGljb24sIGRucy1wcmVmZXRjaCwgc3Vi
cmVzb3VyY2UgYW5kIHByZWZldGNoLgpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lkIHJl
bGVhc2VkKCk7Ci0gICAgYm9vbCBsb2FkTGluayhjb25zdCBMaW5rUmVsQXR0cmlidXRlJiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHNpemVzLCBjb25zdCBLVVJMJiwgRG9jdW1l
bnQqKTsKKyAgICBib29sIGxvYWRMaW5rKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgc2l6ZXMsIGNvbnN0IFVSTCYsIERvY3VtZW50Kik7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBsaW5rTG9hZFRpbWVyRmlyZWQoVGltZXI8TGlua0xvYWRl
cj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApp
bmRleCBjZTBhOGRjZTIzNzU2MDQ5OTI4YjRmZGJiNDgzZGU0M2E1YTM2N2UzLi41NmEyNDZmNDdl
N2MwMDc5ZWQ0YTZmZDYxZTRjMmE2ZDk3NGI1OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEZyYW1lTG9hZGVy
Q2xpZW50JiBNaXhlZENvbnRlbnRDaGVja2VyOjpjbGllbnQoKSBjb25zdAogfQogCiAvLyBzdGF0
aWMKLWJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCitib29sIE1peGVkQ29udGVudENo
ZWNrZXI6OmlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHNlY3VyaXR5T3JpZ2luLT5wcm90b2NvbCgpICE9ICJo
dHRwcyIpCiAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2Ugb25seSBjYXJlIGFib3V0IEhUVFBT
IHNlY3VyaXR5IG9yaWdpbnMuCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hl
Y2tlcjo6aXNNaXhlZENvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBLCiAgICAgcmV0dXJuICFTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmUodXJsKTsKIH0KIAotYm9v
bCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBNaXhl
ZENvbnRlbnRDaGVja2VyOjpjYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc01p
eGVkQ29udGVudChzZWN1cml0eU9yaWdpbiwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC03Nyw3ICs3Nyw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuRGlzcGxheUluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnCiAgICAgcmV0dXJuIGFsbG93
ZWQ7CiB9CiAKLWJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVuSW5zZWN1cmVDb250ZW50
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAor
Ym9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAo
IWlzTWl4ZWRDb250ZW50KHNlY3VyaXR5T3JpZ2luLCB1cmwpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2VyOjpjYW5SdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAgIHJldHVybiBh
bGxvd2VkOwogfQogCi12b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmxvZ1dhcm5pbmcoYm9vbCBh
bGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYgdGFyZ2V0KSBjb25zdAor
dm9pZCBNaXhlZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3Qg
U3RyaW5nJiBhY3Rpb24sIGNvbnN0IFVSTCYgdGFyZ2V0KSBjb25zdAogewogICAgIFN0cmluZyBt
ZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAiKSwgIlRoZSBw
YWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFy
Z2V0LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CiAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBX
YXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4
ZWRDb250ZW50Q2hlY2tlci5oCmluZGV4IGQwZDdiMWUxYzExNjY1ODc1ZGNmZTUwYjViY2NhMmVk
NmJmNDEwY2QuLjhlNGYzMDAxYTBlZTBmMWQwMDk0YTliMzAzMzIyZmUyMjIzNzgyODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuaApAQCAtMzgsNyArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVMb2Fk
ZXJDbGllbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47
CiAKIGNsYXNzIE1peGVkQ29udGVudENoZWNrZXIgewpAQCAtNDYsMTUgKzQ2LDE1IEBAIGNsYXNz
IE1peGVkQ29udGVudENoZWNrZXIgewogcHVibGljOgogICAgIE1peGVkQ29udGVudENoZWNrZXIo
RnJhbWUqKTsKIAotICAgIGJvb2wgY2FuRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9y
aWdpbiosIGNvbnN0IEtVUkwmKSBjb25zdDsKLSAgICBib29sIGNhblJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBp
c01peGVkQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKKyAgICBib29sIGNh
bkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKSBjb25z
dDsKKyAgICBib29sIGNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFVSTCYpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgVVJMJik7CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IGhhdmUgYSBzZXBhcmF0ZSBjbGllbnQgZnJvbSBGcmFtZUxvYWRlci4KICAgICBG
cmFtZUxvYWRlckNsaWVudCYgY2xpZW50KCkgY29uc3Q7CiAKLSAgICB2b2lkIGxvZ1dhcm5pbmco
Ym9vbCBhbGxvd2VkLCBjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgS1VSTCYpIGNvbnN0Owor
ICAgIHZvaWQgbG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9uLCBj
b25zdCBVUkwmKSBjb25zdDsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGMzNmIxNzBlZWJmYTZkZDQ2YmQ0M2Jh
N2QxMzIxM2M4YjhiM2MxYjIuLjVlMjFlMDE0MGYxMzQ5Y2E2NWI5YTFjM2E1OWRkMGM3ZTI4NmE4
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzEsNyAr
MzEsNyBAQAogCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVz
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKQEAgLTQ4LDcgKzQ4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmlzRW1wdHkoKTsgfQogCi0gICAgICAgIEtV
UkwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3QudXJsKCk7IH0KKyAgICAg
ICAgVVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpOyB9CiAg
ICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KIAogICAgICAgICBOYXZpZ2F0aW9uVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggMjJkMTNmYTk2ZWE0ZTU5YTY5Y2VkNTg3ZWM5NzJi
N2Q0ZjgxZDZhYS4uOWFiOTU5ZjcwMTBhNzkyYWE1NmYyOWRjODIwMzg2MzEwYTk1ZDQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJh
bWUpCiAgICAgewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9y
KHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVm
aW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIo
KS5jaGFuZ2VMb2NhdGlvbihtX3NlY3VyaXR5T3JpZ2luLmdldCgpLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgbV91cmwpLCBtX3JlZmVycmVyLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRM
aXN0KCksIGZhbHNlKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKG1f
c2VjdXJpdHlPcmlnaW4uZ2V0KCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSwgbV9yZWZl
cnJlciwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUqIGZyYW1lLCBUaW1lcjxO
YXZpZ2F0aW9uU2NoZWR1bGVyPiogdGltZXIpCkBAIC0xMTksNyArMTE5LDcgQEAgcHJvdGVjdGVk
OgogICAgICAgICBtX2hhdmVUb2xkQ2xpZW50ID0gdHJ1ZTsKIAogICAgICAgICBVc2VyR2VzdHVy
ZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSk7Ci0gICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnRSZWRpcmVjdGVkKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybCksIGRlbGF5KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci0+bmV4dEZp
cmVJbnRlcnZhbCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCkpOworICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50UmVkaXJlY3RlZChVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX3VybCksIGRlbGF5
KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJh
bWUqIGZyYW1lLCBib29sIG5ld0xvYWRJblByb2dyZXNzKQpAQCAtMTYwLDggKzE2MCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSogZnJhbWUpCiAgICAgewogICAgICAg
ICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkg
PyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKCkpKTsKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNl
Y3VyaXR5T3JpZ2luKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSksIHJlZmVycmVyKCks
IGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgcmVmcmVzaCk7CisgICAgICAg
IGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSkpOworICAgICAgICBm
cmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4oKSwgVVJMKFBhcnNl
ZFVSTFN0cmluZywgdXJsKCkpLCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zv
cndhcmRMaXN0KCksIHJlZnJlc2gpOwogICAgIH0KIH07CiAKQEAgLTE4MSw3ICsxODEsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUqIGZyYW1lKQogICAgIHsKICAgICAg
ICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgp
ID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNz
aW5nVXNlckdlc3R1cmUpOwotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24o
c2VjdXJpdHlPcmlnaW4oKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIo
KSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCB0cnVlKTsKKyAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luKCksIFVSTChQYXJz
ZWRVUkxTdHJpbmcsIHVybCgpKSwgcmVmZXJyZXIoKSwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tG
b3J3YXJkTGlzdCgpLCB0cnVlKTsKICAgICB9CiB9OwogCkBAIC0zNTAsNyArMzUwLDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwKIAogICAgIC8vIElmIHRoZSBVUkwgd2UncmUgZ29pbmcgdG8g
bmF2aWdhdGUgdG8gaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lLCBleGNlcHQgZm9yIHRo
ZQogICAgIC8vIGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUgdGhlIGxv
Y2F0aW9uIGNoYW5nZS4KLSAgICBLVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7
CisgICAgVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgaWYgKHBhcnNl
ZFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBwYXJzZWRVUkwpKSB7CiAgICAgICAg
IGxvYWRlci5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zvcndh
cmRMaXN0KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgTmF2aWdh
dGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKCkKIHsKICAgICBpZiAoIXNob3VsZFNjaGVk
dWxlTmF2aWdhdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgS1VSTCYgdXJsID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKaW5kZXggMzEwZWNhZmQwNTRh
NmRhNzVlNDdmN2RjMGI4NWI4ZTJhMDk1ZDlkNy4uNGIyNDNmNzM5NTc0ODYzNmU0ODFkZWRlMmJk
YzFkZDE0MzE4ZWZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApAQCAtNTAs
NyArNTAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgUGluZ0xvYWRlcjo6bG9h
ZEltYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQaW5nTG9hZGVyOjps
b2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSwgdXJsKTsKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLCBjb25z
dCBLVVJMJiB1cmwpCiB9CiAKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2xpbmtzLmh0bWwjaHlwZXJsaW5rLWF1ZGl0aW5nCi12
b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgcGluZ1VS
TCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25VUkwpCit2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5n
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9u
VVJMKQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHBpbmdVUkwpOwogI2lmIFBMQVRG
T1JNKEJMQUNLQkVSUlkpCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5k
UGluZyhGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBpbmdVUkwsIGNvbnN0IEtVUkwmIGRlc3Rp
bmEKICAgICBVTlVTRURfUEFSQU0obGVha2VkUGluZ0xvYWRlcik7CiB9CiAKLXZvaWQgUGluZ0xv
YWRlcjo6c2VuZFZpb2xhdGlvblJlcG9ydChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJlcG9y
dFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4gcmVwb3J0KQordm9pZCBQaW5nTG9hZGVyOjpzZW5k
VmlvbGF0aW9uUmVwb3J0KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IHJlcG9ydCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChy
ZXBvcnRVUkwpOwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuaAppbmRleCA0ZmUxN2FkZTAzYzdmMjlhZjYwZDIzODJiZDAyNTA2M2IxMWFhNzNhLi42
OTM5YTIzZjkxYjM1M2FkZjQ5NzVkYTM4YzhmZTM3NDUyZGQxNDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9QaW5nTG9hZGVyLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOwotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CkBAIC01NCw5ICs1NCw5IEBAIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFz
cyBQaW5nTG9hZGVyIDogcHJpdmF0ZSBSZXNvdXJjZUhhbmRsZUNsaWVudCB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUGluZ0xvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIGxvYWRJbWFnZShGcmFtZSosIGNvbnN0IEtVUkwmIHVybCk7
Ci0gICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBLVVJMJiBwaW5nVVJMLCBj
b25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7Ci0gICAgc3RhdGljIHZvaWQgc2VuZFZpb2xhdGlv
blJlcG9ydChGcmFtZSosIGNvbnN0IEtVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gcmVwb3J0KTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkSW1hZ2UoRnJhbWUqLCBjb25zdCBVUkwm
IHVybCk7CisgICAgc3RhdGljIHZvaWQgc2VuZFBpbmcoRnJhbWUqLCBjb25zdCBVUkwmIHBpbmdV
UkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOworICAgIHN0YXRpYyB2b2lkIHNlbmRWaW9s
YXRpb25SZXBvcnQoRnJhbWUqLCBjb25zdCBVUkwmIHJlcG9ydFVSTCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gcmVwb3J0KTsKIAogICAgIHZpcnR1YWwgflBpbmdMb2FkZXIoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVyRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9QbGFjZWhvbGRlckRvY3VtZW50LmgKaW5kZXggZDNhYjc0MTVmMWExOTUx
ZDZkMDgyMTA2NTcwYmY5ZmY5ZmFhNTQ3Yy4uY2UyMzI3ODI3YTZhODBiZDU0OWY2NWIwODllZWMz
ZjA2N2FkMDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BsYWNlaG9sZGVy
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGxhY2Vob2xkZXJEb2N1bWVu
dC5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhY2Vo
b2xkZXJEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhY2Vob2xkZXJEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYWNlaG9sZGVyRG9jdW1l
bnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbGFjZWhvbGRlckRvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAg
ICB9CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVJlbmRlclRyZWUoKSBPVkVSUklERTsKIAotICAgIFBsYWNlaG9sZGVyRG9jdW1lbnQo
RnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCisgICAgUGxhY2Vob2xkZXJEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IERvY3VtZW50KGZyYW1lLCB1
cmwpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAKaW5kZXggMWQyNDNiNTVkNWUyNGVkMTM4OWU0Mzk4NjM1MDVkZDNiZjQ4
NjA5NC4uYThkMjE4ZGNiYTk0Y2RkNmUyMTkxY2JmYTM2ZmJjMWQ4YWYxYzA0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTMwLDcg
KzMwLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvYWRlclN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmgiCkBAIC00
OCw3ICs0OCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZXF1ZXN0c0luRmxpZ2h0Rm9y
Tm9uSFRUUFByb3RvY29scyA9IDIwOwogLy8gTWF0Y2ggdGhlIHBhcmFsbGVsIGNvbm5lY3Rpb24g
Y291bnQgdXNlZCBieSB0aGUgbmV0d29ya2luZyBsYXllci4KIHN0YXRpYyB1bnNpZ25lZCBtYXhS
ZXF1ZXN0c0luRmxpZ2h0UGVySG9zdDsKIAotUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5m
b3JtYXRpb24qIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25zdCBLVVJMJiB1
cmwsIENyZWF0ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKK1Jlc291cmNlTG9hZFNjaGVk
dWxlcjo6SG9zdEluZm9ybWF0aW9uKiBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwo
Y29uc3QgVVJMJiB1cmwsIENyZWF0ZUhvc3RQb2xpY3kgY3JlYXRlSG9zdFBvbGljeSkKIHsKICAg
ICBpZiAoIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVybiBtX25v
bkhUVFBQcm90b2NvbEhvc3Q7CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAgICAgc2No
ZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFNjaGVk
dWxlcjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlciwgY29uc3QgS1VSTCYgcmVkaXJlY3RVUkwpCit2b2lkIFJlc291cmNlTG9hZFNjaGVk
dWxlcjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlciwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKIHsKICAgICBIb3N0SW5mb3JtYXRpb24q
IG9sZEhvc3QgPSBob3N0Rm9yVVJMKHJlc291cmNlTG9hZGVyLT51cmwoKSk7CiAgICAgQVNTRVJU
KG9sZEhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxl
ci5oCmluZGV4IDJhMWU0MTMzNTVhZTA3Y2RhZjc2YjZhZDBmY2FkZDNjM2FlNWI5Y2IuLjJkYmY2
NTA2YThkOGU0YjhiZGM1NmIzMDkyZDA2ZDAzNjY2NDVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEZyYW1lOwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOwog
Y2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZUxv
YWRlcjsKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gc2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoRnJhbWUqLCBDYWNoZWRS
ZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlTG9hZFByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChGcmFtZSos
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopOwotICAgIHZpcnR1
YWwgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBLVVJMJiByZWRpcmVjdFVSTCk7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlv
cml0eSBtaW5pbXVtUHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpOwogICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCk7CkBAIC0xMDQsNyArMTA0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhvc3RJbmZv
cm1hdGlvbiogaG9zdEZvclVSTChjb25zdCBLVVJMJiwgQ3JlYXRlSG9zdFBvbGljeSA9IEZpbmRP
bmx5KTsKKyAgICBIb3N0SW5mb3JtYXRpb24qIGhvc3RGb3JVUkwoY29uc3QgVVJMJiwgQ3JlYXRl
SG9zdFBvbGljeSA9IEZpbmRPbmx5KTsKICAgICB2b2lkIHNlcnZlUGVuZGluZ1JlcXVlc3RzKEhv
c3RJbmZvcm1hdGlvbiosIFJlc291cmNlTG9hZFByaW9yaXR5KTsKIAogICAgIHR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIEhvc3RJbmZvcm1hdGlvbiosIFN0cmluZ0hhc2g+IEhvc3RNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IGQ4MmFhODJjYTYyNGI3ODNiMmQ1
MmJhMTJjMjM5YmRkMzZmYjMxZTMuLmMzMWYyN2VkZjk3NDdlNGRmMTVhNWE5Yzg1MTc5NzY2ZjFk
MDBhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCkBAIC00NCw3ICs0
NCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lTG9hZGVyOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIFJlc291cmNlQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBPVkVSUklERTsK
ICNlbmRpZgogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
LnVybCgpOyB9IAorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
LnVybCgpOyB9IAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUoKSBjb25zdCB7IHJldHVybiBt
X2hhbmRsZS5nZXQoKTsgfQogICAgIGJvb2wgc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNr
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2Fs
bGJhY2tzOyB9CiAgICAgdm9pZCBzZXRTZW5kQ2FsbGJhY2tQb2xpY3koU2VuZENhbGxiYWNrUG9s
aWN5IHNlbmRMb2FkQ2FsbGJhY2tzKSB7IG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IHNl
bmRMb2FkQ2FsbGJhY2tzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU2lu
a0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCmlu
ZGV4IDQ4NGQyMzg5YTU3MGEzYzZmNDlhNjVjYWQ3MTYxNmY4MTkwMTY2NGQuLjYwNTFkN2RkZGJl
MDA5MTNkMTFkYWU1NjJkMzY1N2UzZjNkMGMyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TaW5rRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5r
RG9jdW1lbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVyKiwgY29uc3QgY2hhciosIHNpemVfdCkgeyB9CiB9
OwogCi1TaW5rRG9jdW1lbnQ6OlNpbmtEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwm
IHVybCkKK1NpbmtEb2N1bWVudDo6U2lua0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJM
JiB1cmwpCiAgICAgOiBIVE1MRG9jdW1lbnQoZnJhbWUsIHVybCkKIHsKICAgICBzZXRDb21wYXRp
YmlsaXR5TW9kZShRdWlya3NNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TaW5rRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TaW5rRG9jdW1lbnQuaApp
bmRleCA3NmQ5YTgzNDgzZjk0M2EzMzI5MGFmYzljMDU3NTg1YzJkODMwMmQ4Li4yNDY2ODg0MjFi
NDdiZDUyZTYxNGQyYmVlMjU5YWI1MDIyNmVmYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU2lua0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1NpbmtE
b2N1bWVudC5oCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTaW5rRG9jdW1lbnQgRklOQUwgOiBwdWJsaWMgSFRNTERvY3VtZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNv
bnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaW5rRG9jdW1lbnQ+IGNyZWF0
ZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaW5rRG9jdW1lbnQoZnJhbWUsIHVybCkpOwogICAgIH0KIAogcHJpdmF0ZToK
LSAgICBTaW5rRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CisgICAgU2lua0RvY3VtZW50
KEZyYW1lKiwgY29uc3QgVVJMJik7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcAppbmRleCA4ZjhiYzMzNmE0NDBmNDI3YWFkYzEyYjBkNzMzNmZmYmM1MTkx
NzAzLi44YzlmMTIyMmVmNDIyMGJmNjhhMzMwNTI4ZDEzNDk4YmI5YTYxYWM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTc4LDggKzc4LDggQEAgdm9pZCBT
dWJmcmFtZUxvYWRlcjo6Y2xlYXIoKQogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1l
KEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIGJv
b2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKICAgICAvLyBTdXBwb3J0IGZvciA8ZnJhbWUgc3Jj
PSJqYXZhc2NyaXB0OnN0cmluZyI+Ci0gICAgS1VSTCBzY3JpcHRVUkw7Ci0gICAgS1VSTCB1cmw7
CisgICAgVVJMIHNjcmlwdFVSTDsKKyAgICBVUkwgdXJsOwogICAgIGlmIChwcm90b2NvbElzSmF2
YVNjcmlwdCh1cmxTdHJpbmcpKSB7CiAgICAgICAgIHNjcmlwdFVSTCA9IGNvbXBsZXRlVVJMKHVy
bFN0cmluZyk7IC8vIGNvbXBsZXRlVVJMKCkgZW5jb2RlcyB0aGUgVVJMLgogICAgICAgICB1cmwg
PSBibGFua1VSTCgpOwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1
ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cgog
ICAgIAogYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVzb3VyY2VXaWxsVXNlUGx1Z2luKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMpCiB7Ci0gICAgS1VSTCBjb21wbGV0ZWRVUkw7CisgICAgVVJMIGNvbXBsZXRl
ZFVSTDsKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBsZXRlZFVSTCA9IGNv
bXBsZXRlVVJMKHVybCk7CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVy
OjpyZXNvdXJjZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZQogICAgIHJldHVybiBzaG91bGRVc2VQbHVnaW4oY29tcGxldGVkVVJMLCBtaW1lVHlwZSwg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgZmFsc2UsIHVzZUZhbGxiYWNrKTsKIH0KIAot
Ym9vbCBTdWJmcmFtZUxvYWRlcjo6cGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCitib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5Jc0xvYWRhYmxlKEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewogICAgIGlmIChNSU1FVHlwZVJlZ2lzdHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlw
ZShtaW1lVHlwZSkpIHsKICAgICAgICAgaWYgKCFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzSmF2YUVu
YWJsZWQoKSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpwbHVnaW5J
c0xvYWRhYmxlKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNvbgogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0UGx1Z2luKEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQorYm9vbCBT
dWJmcmFtZUxvYWRlcjo6cmVxdWVzdFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBvd25l
ckVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzLCBib29sIHVzZUZhbGxiYWNrKQogewogICAgIC8vIEFwcGxpY2F0aW9uIHBsdWctaW5zIGFy
ZSBwbHVnLWlucyBpbXBsZW1lbnRlZCBieSB0aGUgdXNlciBhZ2VudCwgZm9yIGV4YW1wbGUgUXQg
cGx1Zy1pbnMsCiAgICAgLy8gYXMgb3Bwb3NlZCB0byB0aGlyZC1wYXJ0eSBjb2RlIHN1Y2ggYXMg
Rmxhc2guIFRoZSB1c2VyIGFnZW50IGRlY2lkZXMgd2hldGhlciBvciBub3QgdGhleSBhcmUKQEAg
LTIxOSw3ICsyMTksNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgUwogICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgY29tcGxldGVkVVJMOworICAg
IFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAgICAgICBjb21w
bGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0yMzcsMTIgKzIzNywxMiBAQCBib29s
IFN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0T2JqZWN0KEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIG93
bmVyRWxlbWVudCwgY29uc3QgUwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCi1QYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclBy
b3h5UGx1Z2luKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lkZ2V0
PiBTdWJmcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSogbm9kZSwg
Y29uc3QgVVJMJiB1cmwsCiAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsKICAgICBBU1NFUlQobm9kZS0+aGFz
VGFnTmFtZSh2aWRlb1RhZykgfHwgaXNIVE1MQXVkaW9FbGVtZW50KG5vZGUpKTsKIAotICAgIEtV
UkwgY29tcGxldGVkVVJMOworICAgIFVSTCBjb21wbGV0ZWRVUkw7CiAgICAgaWYgKCF1cmwuaXNF
bXB0eSgpKQogICAgICAgICBjb21wbGV0ZWRVUkwgPSBjb21wbGV0ZVVSTCh1cmwpOwogCkBAIC0y
OTIsNyArMjkyLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVK
YXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICB9CiAKICAgICBpZiAo
IWNvZGVCYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGNvZGVCYXNlVVJM
ID0gY29tcGxldGVVUkwoY29kZUJhc2VVUkxTdHJpbmcpOworICAgICAgICBVUkwgY29kZUJhc2VV
UkwgPSBjb21wbGV0ZVVSTChjb2RlQmFzZVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghZWxlbWVu
dC0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNvZGVCYXNlVVJMKSkg
ewogICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2ZyYW1l
LCBjb2RlQmFzZVVSTC5zdHJpbmcoKSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMwNiw3
ICszMDYsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2FkZXI6OmNyZWF0ZUphdmFB
cHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSAogCiAgICAgaWYgKGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpKQogICAgICAgICBiYXNlVVJMU3RyaW5nID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLnN0cmluZygpOwotICAgIEtVUkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJh
c2VVUkxTdHJpbmcpOworICAgIFVSTCBiYXNlVVJMID0gY29tcGxldGVVUkwoYmFzZVVSTFN0cmlu
Zyk7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQ7CiAgICAgaWYgKGFsbG93UGx1Z2lucyhB
Ym91dFRvSW5zdGFudGlhdGVQbHVnaW4pKQpAQCAtMzI2LDcgKzMyNiw3IEBAIFBhc3NSZWZQdHI8
V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRT
aXplJiBzaXplLCBICiAgICAgcmV0dXJuIHdpZGdldDsKIH0KIAotRnJhbWUqIFN1YmZyYW1lTG9h
ZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBi
b29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCitGcmFtZSogU3ViZnJh
bWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFt
ZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQogewogICAgIEZy
YW1lKiBmcmFtZSA9IG93bmVyRWxlbWVudC0+Y29udGVudEZyYW1lKCk7CiAgICAgaWYgKGZyYW1l
KQpAQCAtMzM4LDcgKzMzOCw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZE9yUmVkaXJl
Y3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVuCiAgICAgcmV0dXJu
IG93bmVyRWxlbWVudC0+Y29udGVudEZyYW1lKCk7CiB9CiAKLUZyYW1lKiBTdWJmcmFtZUxvYWRl
cjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikK
K0ZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1l
KTsKIApAQCAtNDAzLDcgKzQwMyw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmFsbG93UGx1Z2lu
cyhSZWFzb25Gb3JDYWxsaW5nQWxsb3dQbHVnaW5zIHJlYXNvbikKICAgICByZXR1cm4gYWxsb3dl
ZDsKIH0KIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6c2hvdWxkVXNlUGx1Z2luKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9y
SW1hZ2VzLCBib29sIGhhc0ZhbGxiYWNrLCBib29sJiB1c2VGYWxsYmFjaykKK2Jvb2wgU3ViZnJh
bWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzLCBib29sIGhhc0ZhbGxi
YWNrLCBib29sJiB1c2VGYWxsYmFjaykKIHsKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuc2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQobWltZVR5cGUpKSB7CiAgICAgICAg
IHVzZUZhbGxiYWNrID0gZmFsc2U7CkBAIC00MzAsNyArNDMwLDcgQEAgRG9jdW1lbnQqIFN1YmZy
YW1lTG9hZGVyOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50
KCk7CiB9CiAKLWJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCogcGx1Z2luRWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLAorYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKQogewogICAgIFJlbmRlckVt
YmVkZGVkT2JqZWN0KiByZW5kZXJlciA9IHBsdWdpbkVsZW1lbnQtPnJlbmRlckVtYmVkZGVkT2Jq
ZWN0KCk7CkBAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdp
bihIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBwbHVnaW5FbGVtZW50LCBjb25zdCBLVVIKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotS1VSTCBTdWJmcmFtZUxvYWRlcjo6Y29tcGxldGVVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpIGNvbnN0CitVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsKSBjb25zdAogewogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsK
ICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggZDhlMDNjMTAyMzY2NWRlNGRlNmJh
ODQ2Y2VjMTg3MzIxYTBhZDQxYS4uMmU4NDBlOTJmZGI4NDE0YTFiZjBkODU3NzBkNjA0N2UyZDM3
OTBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgY2xhc3MgSFRNTEFwcGxldEVsZW1lbnQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1l
bnQ7CiBjbGFzcyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiBj
bGFzcyBOb2RlOwogI2VuZGlmCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
UExVR0lOX1BST1hZX0ZPUl9WSURFTykKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBF
bGVtZW50KiBpbnN0ZWFkIG9mIE5vZGUqLCBvciBiZXR0ZXIgeWV0IHRoZQogICAgIC8vIHNwZWNp
ZmljIHR5cGUgb2YgRWxlbWVudCB3aGljaCB0aGlzIGNvZGUgZGVwZW5kcyBvbi4KLSAgICBQYXNz
UmVmUHRyPFdpZGdldD4gbG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oTm9kZSosIGNvbnN0IEtV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKKyAgICBQYXNzUmVmUHRyPFdpZGdldD4gbG9hZE1lZGlhUGxheWVy
UHJveHlQbHVnaW4oTm9kZSosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogI2VuZGlmCiAKICAg
ICBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXpl
JiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKQEAgLTgwLDIxICs4MCwyMSBAQCBw
dWJsaWM6CiAgICAgYm9vbCByZXNvdXJjZVdpbGxVc2VQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdl
cyk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCByZXF1ZXN0UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBzZXJ2aWNlVHlwZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cywgYm9vbCB1c2VGYWxsYmFjayk7Ci0gICAgRnJhbWUqIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwot
ICAgIEZyYW1lKiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7Ci0gICAgYm9v
bCBsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwKKyAgICBib29sIHJlcXVlc3RQbHVnaW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMsIGJvb2wgdXNlRmFsbGJhY2spOworICAgIEZyYW1lKiBsb2FkT3JSZWRpcmVjdFN1YmZyYW1l
KEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpOwor
ICAgIEZyYW1lKiBsb2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBib29s
IGxvYWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwog
Ci0gICAgYm9vbCBzaG91bGRVc2VQbHVnaW4oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFj
aywgYm9vbCYgdXNlRmFsbGJhY2spOwotICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwor
ICAgIGJvb2wgc2hvdWxkVXNlUGx1Z2luKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcywgYm9vbCBoYXNGYWxsYmFjaywg
Ym9vbCYgdXNlRmFsbGJhY2spOworICAgIGJvb2wgcGx1Z2luSXNMb2FkYWJsZShIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgbV9jb250YWluc1BsdWdp
bnM7CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAKLSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGUwNzdiZmFhZGY1MTA4NGNlMmQ3ZTVmOGMzYmNhNmU5
MzZjMTMxMGMuLmZhNTllODdkZDU2NzJiYTE3OTYxYjY0Y2EyNWQ4NjI0MmNlZWE0MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIGJvb2wgU3VicmVzb3VyY2VMb2FkZXI6OmlzU3VicmVzb3VyY2VMb2FkZXIoKQogdm9p
ZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgbmV3
UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAg
ICAvLyBTdG9yZSB0aGUgcHJldmlvdXMgVVJMIGJlY2F1c2UgdGhlIGNhbGwgdG8gUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdCB3aWxsIG1vZGlmeSBpdC4KLSAgICBLVVJMIHByZXZpb3Vz
VVJMID0gcmVxdWVzdCgpLnVybCgpOworICAgIFVSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51
cmwoKTsKICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwogCiAgICAg
QVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1
dGVEYXRhLmgKaW5kZXggNTIwZWY1ODA1NDk5NmM5OTZiNzcxZjcwN2UxZDE3MWE1ZDMzNTMyYS4u
Mjk1OWRlN2E4ZmNhYTNmYzBlN2IzYTc5N2E0ODllMjJiNTY3YWNhMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU3Vic3Rp
dHV0ZURhdGFfaAogI2RlZmluZSBTdWJzdGl0dXRlRGF0YV9oCiAKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MSw4ICs0MSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFN1YnN0aXR1dGVE
YXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb250ZW50LCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgS1VSTCYgZmFpbGluZ1VSTCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VS
TCYgcmVzcG9uc2VVUkwgPSBLVVJMKCksIGJvb2wgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9y
eSA9IGZhbHNlKQorICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBj
b25zdCBVUkwmIGZhaWxpbmdVUkwsCisgICAgICAgICAgICAgICAgY29uc3QgVVJMJiByZXNwb25z
ZVVSTCA9IFVSTCgpLCBib29sIHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkgPSBmYWxzZSkK
ICAgICAgICAgICAgIDogbV9jb250ZW50KGNvbnRlbnQpCiAgICAgICAgICAgICAsIG1fbWltZVR5
cGUobWltZVR5cGUpCiAgICAgICAgICAgICAsIG1fdGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykK
QEAgLTYwLDE1ICs2MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFNo
YXJlZEJ1ZmZlciogY29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudC5nZXQoKTsgfQog
ICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taW1lVHlw
ZTsgfQogICAgICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dEVuY29kaW5nOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIGZhaWxpbmdVUkwoKSBjb25z
dCB7IHJldHVybiBtX2ZhaWxpbmdVUkw7IH0KLSAgICAgICAgY29uc3QgS1VSTCYgcmVzcG9uc2VV
UkwoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVVJMOyB9CisgICAgICAgIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGluZ1VSTDsgfQorICAgICAgICBjb25z
dCBVUkwmIHJlc3BvbnNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVVSTDsgfQogICAg
ICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2NvbnRl
bnQ7CiAgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBTdHJpbmcgbV90ZXh0RW5j
b2Rpbmc7Ci0gICAgICAgIEtVUkwgbV9mYWlsaW5nVVJMOwotICAgICAgICBLVVJMIG1fcmVzcG9u
c2VVUkw7CisgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CisgICAgICAgIFVSTCBtX3Jlc3BvbnNl
VVJMOwogICAgICAgICBib29sIG1fc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeTsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXggMTVj
YmM2ZjZlOGFmMjFlMTlmYzE1MmU0ZGUyYTA5YTZhMDg2YTBlMS4uOThjODdhMjM1NTcwZTk2OWY5
MmE4N2M1YTRiYTE5NjliNDkxMzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKQEAgLTQwLDEy
ICs0MCwxMiBAQCBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxT
dWJzdGl0dXRlUmVzb3VyY2U+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TdWJzdGl0dXRlUmVz
b3VyY2UoKSB7IH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJs
OyB9CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25z
ZTsgfQogICAgIFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQo
KTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhKQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
KQogICAgICAgICA6IG1fdXJsKHVybCkKICAgICAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQog
ICAgICAgICAsIG1fZGF0YShkYXRhKQpAQCAtNTQsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
fQogICAgIAogcHJpdmF0ZToKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXgg
ZjZlYzZlZDcyYzNhNTFhYmU0OWRkOWM3MGE5ZTFkMjhiZmZkNzJmMS4uNGZhMDc2OGUzYjgxNWM2
MTBjMmZkMjQxNTEzZWJkYzg5ZDBjYzk3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGNhbmNlbExvYWQo
KTsKIH0KIAotYm9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKK2Jvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSkKIHsKICAgICBjYW5j
ZWxMb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAppbmRleCAz
NmYzZWYwOWVjMmQxMThjZjMyNDkzZTJmMGE2Y2IyYzJmNjAyMmE0Li45MzU3ZTEwYzk2MGU1MjBh
Y2U1YmJlMjIyMDA1MjhlNjc3OGE4NDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGV4dFRyYWNrTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFj
a0xvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
VGV4dFRyYWNrTG9hZGVyKCk7CiAgICAgCi0gICAgYm9vbCBsb2FkKGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmIGNyb3NzT3JpZ2luTW9kZSk7CisgICAgYm9vbCBsb2FkKGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlKTsKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKICAg
ICB2b2lkIGdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1
ZXMpOwogI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA2MTgyOWIyNzYwNzhj
YzAwMGZmOTI3NTY0NWM4NmUxOWI2NDRlNDliLi44NTI4OWIzMzk4MjM4MjNkZGQyZDcwYWRlYzE0
YWYyOTZmNDlhZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAKLXN0YXRpYyBpbmxpbmUgYm9vbCBmYWxsYmFja1VSTExvbmdlclRoYW4oY29uc3Qg
c3RkOjpwYWlyPEtVUkwsIEtVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxLVVJMLCBLVVJMPiYg
cmhzKQorc3RhdGljIGlubGluZSBib29sIGZhbGxiYWNrVVJMTG9uZ2VyVGhhbihjb25zdCBzdGQ6
OnBhaXI8VVJMLCBVUkw+JiBsaHMsIGNvbnN0IHN0ZDo6cGFpcjxVUkwsIFVSTD4mIHJocykKIHsK
ICAgICByZXR1cm4gbGhzLmZpcnN0LnN0cmluZygpLmxlbmd0aCgpID4gcmhzLmZpcnN0LnN0cmlu
ZygpLmxlbmd0aCgpOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIHVuc2lnbmVkIEFwcGxpY2F0aW9u
Q2FjaGU6OnJlbW92ZVJlc291cmNlKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIAogQXBwbGljYXRp
b25DYWNoZVJlc291cmNlKiBBcHBsaWNhdGlvbkNhY2hlOjpyZXNvdXJjZUZvclVSTChjb25zdCBT
dHJpbmcmIHVybCkKIHsKLSAgICBBU1NFUlQoIUtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQoIVVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgIHJldHVybiBtX3Jlc291cmNlcy5n
ZXQodXJsKTsKIH0gICAgCiAKQEAgLTEzOCwyMCArMTM4LDIwIEBAIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZSogQXBwbGljYXRpb25DYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxCiAgICAgaWYgKCFyZXF1ZXN0SXNIVFRQT3JIVFRQU0dldChyZXF1ZXN0KSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBLVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJs
KHJlcXVlc3QudXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAg
ICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIHJldHVybiByZXNv
dXJjZUZvclVSTCh1cmwpOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubGluZVdo
aXRlbGlzdChjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlzdCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZTo6c2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVX
aGl0ZWxpc3QpCiB7CiAgICAgQVNTRVJUKG1fb25saW5lV2hpdGVsaXN0LmlzRW1wdHkoKSk7CiAg
ICAgbV9vbmxpbmVXaGl0ZWxpc3QgPSBvbmxpbmVXaGl0ZWxpc3Q7IAogfQogCi1ib29sIEFwcGxp
Y2F0aW9uQ2FjaGU6OmlzVVJMSW5PbmxpbmVXaGl0ZWxpc3QoY29uc3QgS1VSTCYgdXJsKQorYm9v
bCBBcHBsaWNhdGlvbkNhY2hlOjppc1VSTEluT25saW5lV2hpdGVsaXN0KGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHNpemVfdCB3aGl0ZWxpc3RTaXplID0gbV9vbmxpbmVXaGl0ZWxpc3Quc2l6ZSgp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2hpdGVsaXN0U2l6ZTsgKytpKSB7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpzZXRGYWxsYmFja1VSTHMoY29u
c3QgRmFsbGJhY2tVUkxWZWN0b3ImIGZhbGxiYWNrVVJMcykKICAgICBzdGQ6OnN0YWJsZV9zb3J0
KG1fZmFsbGJhY2tVUkxzLmJlZ2luKCksIG1fZmFsbGJhY2tVUkxzLmVuZCgpLCBmYWxsYmFja1VS
TExvbmdlclRoYW4pOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGU6OnVybE1hdGNoZXNGYWxs
YmFja05hbWVzcGFjZShjb25zdCBLVVJMJiB1cmwsIEtVUkwqIGZhbGxiYWNrVVJMKQorYm9vbCBB
cHBsaWNhdGlvbkNhY2hlOjp1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgVVJMJiB1
cmwsIFVSTCogZmFsbGJhY2tVUkwpCiB7CiAgICAgc2l6ZV90IGZhbGxiYWNrQ291bnQgPSBtX2Zh
bGxiYWNrVVJMcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmYWxsYmFja0Nv
dW50OyArK2kpIHsKQEAgLTE5MywxMyArMTkzLDEzIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6
Y2xlYXJTdG9yYWdlSUQoKQogICAgIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjpkZWxldGVDYWNo
ZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIFZlY3RvcjxLVVJMPiB1
cmxzOworICAgIFZlY3RvcjxVUkw+IHVybHM7CiAgICAgaWYgKCFjYWNoZVN0b3JhZ2UoKS5tYW5p
ZmVzdFVSTHMoJnVybHMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZl
IEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZlc3QgVVJMcyIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgS1VSTCBvcmlnaW5VUkwoS1VSTCgpLCBvcmlnaW4tPnRvU3RyaW5nKCkpOworICAg
IFVSTCBvcmlnaW5VUkwoVVJMKCksIG9yaWdpbi0+dG9TdHJpbmcoKSk7CiAKICAgICBzaXplX3Qg
Y291bnQgPSB1cmxzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZS5oCmluZGV4IDI1MWJlYTMyM2JhYzMwYWZlYTA3N2I1MzNlZGEyNWNiNzc0M2IyMmMuLmZm
ZTQ4MjE4NzBiNjk1YzIzODEzZGU3MzY3ZjkwM2ZmMDEyOGZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaApAQCAtMzgsMTEgKzM4
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDsK
IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogCi10eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8S1VSTCwgS1VSTD4gPiBG
YWxsYmFja1VSTFZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFVSTD4gPiBG
YWxsYmFja1VSTFZlY3RvcjsKIAogY2xhc3MgQXBwbGljYXRpb25DYWNoZSA6IHB1YmxpYyBSZWZD
b3VudGVkPEFwcGxpY2F0aW9uQ2FjaGU+IHsKIHB1YmxpYzoKQEAgLTY4LDEzICs2OCwxMyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhib29sIHZhbHVl
KSB7IG1fYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB2YWx1ZTsgfQogICAgIGJvb2wgYWxsb3dz
QWxsTmV0d29ya1JlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0FsbE5ldHdvcmtSZXF1
ZXN0czsgfQotICAgIHZvaWQgc2V0T25saW5lV2hpdGVsaXN0KGNvbnN0IFZlY3RvcjxLVVJMPiYg
b25saW5lV2hpdGVsaXN0KTsKLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIG9ubGluZVdoaXRlbGlz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9Ci0gICAgYm9vbCBpc1VSTElu
T25saW5lV2hpdGVsaXN0KGNvbnN0IEtVUkwmKTsgLy8gVGhlcmUgaXMgYW4gZW50cnkgaW4gb25s
aW5lIHdoaXRlbGlzdCB0aGF0IGhhcyB0aGUgc2FtZSBvcmlnaW4gYXMgdGhlIHJlc291cmNlJ3Mg
VVJMIGFuZCB0aGF0IGlzIGEgcHJlZml4IG1hdGNoIGZvciB0aGUgcmVzb3VyY2UncyBVUkwuCisg
ICAgdm9pZCBzZXRPbmxpbmVXaGl0ZWxpc3QoY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRl
bGlzdCk7CisgICAgY29uc3QgVmVjdG9yPFVSTD4mIG9ubGluZVdoaXRlbGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fb25saW5lV2hpdGVsaXN0OyB9CisgICAgYm9vbCBpc1VSTEluT25saW5lV2hpdGVs
aXN0KGNvbnN0IFVSTCYpOyAvLyBUaGVyZSBpcyBhbiBlbnRyeSBpbiBvbmxpbmUgd2hpdGVsaXN0
IHRoYXQgaGFzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgcmVzb3VyY2UncyBVUkwgYW5kIHRoYXQg
aXMgYSBwcmVmaXggbWF0Y2ggZm9yIHRoZSByZXNvdXJjZSdzIFVSTC4KIAogICAgIHZvaWQgc2V0
RmFsbGJhY2tVUkxzKGNvbnN0IEZhbGxiYWNrVVJMVmVjdG9yJik7CiAgICAgY29uc3QgRmFsbGJh
Y2tVUkxWZWN0b3ImIGZhbGxiYWNrVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fZmFsbGJhY2tVUkxz
OyB9Ci0gICAgYm9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UoY29uc3QgS1VSTCYsIEtV
UkwqIGZhbGxiYWNrVVJMID0gMCk7CisgICAgYm9vbCB1cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3Bh
Y2UoY29uc3QgVVJMJiwgVVJMKiBmYWxsYmFja1VSTCA9IDApOwogICAgIAogI2lmbmRlZiBOREVC
VUcKICAgICB2b2lkIGR1bXAoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbV9tYW5pZmVzdDsKIAogICAgIGJvb2wgbV9hbGxvd0Fs
bE5ldHdvcmtSZXF1ZXN0czsKLSAgICBWZWN0b3I8S1VSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7Cisg
ICAgVmVjdG9yPFVSTD4gbV9vbmxpbmVXaGl0ZWxpc3Q7CiAgICAgRmFsbGJhY2tVUkxWZWN0b3Ig
bV9mYWxsYmFja1VSTHM7CiAKICAgICAvLyBUaGUgdG90YWwgc2l6ZSBvZiB0aGUgcmVzb3VyY2Vz
IGJlbG9uZ2luZyB0byB0aGlzIEFwcGxpY2F0aW9uIENhY2hlIGluc3RhbmNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCBkNmJmOTg3MGM0YjNiNDI1OTBjOWRjOTY1MzM1MGIyZDQ4ZTMyZWI5Li41OWIz
YmRiYzdhNmE2NTllMWE1NGY5MTM0N2M3MjBjZmVhNmJkM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtNTYsNyArNTYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBi
b29sIGlzQ29weSkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
KGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5KQogICAgIDogbV9tYW5pZmVzdFVS
TChtYW5pZmVzdFVSTCkKICAgICAsIG1fb3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFu
aWZlc3RVUkwpKQogICAgICwgbV91cGRhdGVTdGF0dXMoSWRsZSkKQEAgLTEwMSw3ICsxMDEsNyBA
QCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZQogICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVx
dWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
S1VSTCB1cmwocmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAg
ICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBBcHBsaWNhdGlvbkNhY2hl
KiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25z
dCBSZXNvdQogICAgIGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNH
ZXQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgS1VSTCB1cmwocmVxdWVzdC51
cmwoKSk7CisgICAgVVJMIHVybChyZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRNYW5pZmVzdFVSTCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFu
aWZlc3RVUkwpCiB7CiAgICAgQVNTRVJUKGZyYW1lICYmIGZyYW1lLT5wYWdlKCkpOwogICAgIApA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNo
ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHBhc3NlZE1hbmlmZXN0CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBLVVJMIG1hbmlmZXN0VVJMKHBhc3NlZE1hbmlmZXN0VVJMKTsKKyAg
ICBVUkwgbWFuaWZlc3RVUkwocGFzc2VkTWFuaWZlc3RVUkwpOwogICAgIGlmIChtYW5pZmVzdFVS
TC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgbWFuaWZlc3RVUkwucmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiBwYXNzZWRN
YW5pZmVzdAogICAgICAgICAgICAgbWFpblJlc291cmNlQ2FjaGUtPmdyb3VwKCktPnVwZGF0ZShm
cmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZVdpdGhCcm93c2luZ0NvbnRleHQpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2Ugd2FzIGxvYWRlZCBm
cm9tIGNhY2hlLCBzbyB0aGUgY2FjaGUgbXVzdCBoYXZlIGFuIGVudHJ5IGZvciBpdC4gTWFyayBp
dCBhcyBmb3JlaWduLgotICAgICAgICAgICAgS1VSTCByZXNvdXJjZVVSTChkb2N1bWVudExvYWRl
ci0+cmVzcG9uc2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgcmVzb3VyY2VVUkwoZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlVVJMKCkpOwogICAgICAgICAgICAgaWYgKHJlc291cmNlVVJMLmhhc0Zy
YWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICAgICAgICAgIHJlc291cmNlVVJMLnJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwogICAgICAgICAgICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiByZXNvdXJjZSA9IG1haW5SZXNvdXJjZUNhY2hlLT5yZXNvdXJjZUZvclVSTChyZXNvdXJjZVVS
TCk7CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmZpbmlz
aGVkTG9hZGluZ01haW5SZXNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEFT
U0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMobG9hZGVyKSk7CiAg
ICAgQVNTRVJUKG1fY29tcGxldGlvblR5cGUgPT0gTm9uZSB8fCBtX3BlbmRpbmdFbnRyaWVzLmlz
RW1wdHkoKSk7Ci0gICAgS1VSTCB1cmwgPSBsb2FkZXItPnVybCgpOworICAgIFVSTCB1cmwgPSBs
b2FkZXItPnVybCgpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAg
ICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtNDc1LDcgKzQ3NSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphYm9ydChGcmFtZSogZnJhbWUpCiAgICAgY2Fj
aGVVcGRhdGVGYWlsZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpCitQYXNzUmVmUHRy
PFJlc291cmNlSGFuZGxlPiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNyZWF0ZVJlc291cmNlSGFu
ZGxlKGNvbnN0IFVSTCYgdXJsLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hl
ZFJlc291cmNlKQogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgbV9m
cmFtZS0+bG9hZGVyKCkuYXBwbHlVc2VyQWdlbnQocmVxdWVzdCk7CkBAIC01MzYsNyArNTM2LDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXMKICAgICAKICAgICBBU1NFUlQoaGFuZGxlID09IG1f
Y3VycmVudEhhbmRsZSk7CiAKLSAgICBLVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVy
bCgpKTsKKyAgICBVUkwgdXJsKGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlm
ICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKICAgICAKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJj
ZUVycm9yJgogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9jdXJyZW50SGFuZGxlKTsKIAogICAgIHVu
c2lnbmVkIHR5cGUgPSBtX2N1cnJlbnRSZXNvdXJjZSA/IG1fY3VycmVudFJlc291cmNlLT50eXBl
KCkgOiBtX3BlbmRpbmdFbnRyaWVzLmdldChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsK
LSAgICBLVVJMIHVybChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKTsKKyAgICBVUkwgdXJs
KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpOwogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApA
QCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9h
ZGluZ0VudHJ5KCkKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKLSAgICBt
X2N1cnJlbnRIYW5kbGUgPSBjcmVhdGVSZXNvdXJjZUhhbmRsZShLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgaXQtPmtleSksIG1fbmV3ZXN0Q2FjaGUgPyBtX25ld2VzdENhY2hlLT5yZXNvdXJjZUZvclVS
TChpdC0+a2V5KSA6IDApOworICAgIG1fY3VycmVudEhhbmRsZSA9IGNyZWF0ZVJlc291cmNlSGFu
ZGxlKFVSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5rZXkpLCBtX25ld2VzdENhY2hlID8gbV9uZXdl
c3RDYWNoZS0+cmVzb3VyY2VGb3JVUkwoaXQtPmtleSkgOiAwKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNlcygpCkBAIC0xMDUxLDcg
KzEwNTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGVsaXZlckRlbGF5ZWRNYWlu
UmVzb3VyY2VzKCkKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjphZGRFbnRyeShjb25zdCBT
dHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZUJlaW5nVXBk
YXRlZCk7Ci0gICAgQVNTRVJUKCFLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKS5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKCFVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICAKICAgICAvLyBEb24ndCBhZGQgdGhlIFVSTCBp
ZiB3ZSBhbHJlYWR5IGhhdmUgYW4gbWFzdGVyIHJlc291cmNlIGluIHRoZSBjYWNoZQogICAgIC8v
IChpLmUuLCB0aGUgbWFpbiByZXNvdXJjZSBmaW5pc2hlZCBsb2FkaW5nIGJlZm9yZSB0aGUgbWFu
aWZlc3QpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDFhNGFmODYwNTFjNjQ2ZDU4ZDJmOWEwZThhMTZjNjMw
ZTU4N2MxYWQuLjMyNzA4NDlkOGVlMDE5MTU0YTJkNWI5ZjBlZGNhZGE1N2UwYWQzZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgQXBwbGljYXRpb25DYWNoZUdyb3Vw
X2gKIAogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTUzLDcgKzUzLDcgQEAgZW51bSBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHsKIGNsYXNz
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCA6IFJlc291cmNlSGFuZGxlQ2xpZW50IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShBcHBsaWNhdGlvbkNhY2hlR3JvdXApOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgS1VSTCYg
bWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAgICAKKyAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkgPSBmYWxzZSk7ICAg
IAogICAgIH5BcHBsaWNhdGlvbkNhY2hlR3JvdXAoKTsKICAgICAKICAgICBlbnVtIFVwZGF0ZVN0
YXR1cyB7IElkbGUsIENoZWNraW5nLCBEb3dubG9hZGluZyB9OwpAQCAtNjEsMTAgKzYxLDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogY2FjaGVGb3JNYWluUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBEb2N1bWVudExvYWRlciopOwogICAgIHN0YXRpYyBB
cHBsaWNhdGlvbkNhY2hlKiBmYWxsYmFja0NhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqKTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBzZWxl
Y3RDYWNoZShGcmFtZSosIGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKKyAgICBzdGF0aWMgdm9p
ZCBzZWxlY3RDYWNoZShGcmFtZSosIGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpOwogICAgIHN0YXRp
YyB2b2lkIHNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKik7CiAgICAgCi0gICAg
Y29uc3QgS1VSTCYgbWFuaWZlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0VVJMOyB9
CisgICAgY29uc3QgVVJMJiBtYW5pZmVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFuaWZlc3RV
Ukw7IH0KICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW4uZ2V0KCk7IH0KICAgICBVcGRhdGVTdGF0dXMgdXBkYXRlU3RhdHVzKCkgY29uc3Qg
eyByZXR1cm4gbV91cGRhdGVTdGF0dXM7IH0KICAgICB2b2lkIHNldFVwZGF0ZVN0YXR1cyhVcGRh
dGVTdGF0dXMgc3RhdHVzKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogCi0gICAgUGFzc1Jl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYsIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOworICAgIFBhc3NS
ZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFVSTCYsIEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwogCiAgICAgLy8g
Rm9yIG5vcm1hbCByZXNvdXJjZSBsb2FkaW5nLCBXZWJLaXQgY2xpZW50IGlzIGFza2VkIGFib3V0
IGVhY2ggcmVzb3VyY2UgaW5kaXZpZHVhbGx5LiBTaW5jZSBhcHBsaWNhdGlvbiBjYWNoZSBkb2Vz
IG5vdCBiZWxvbmcgdG8gYW55IHBhcnRpY3VsYXIgZG9jdW1lbnQsCiAgICAgLy8gdGhlIGV4aXN0
aW5nIGNsaWVudCBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQgYW55IGNs
aWVudCB0aGF0IGVuYWJsZXMgYXBwbGljYXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0byB1c2Ug
Y3JlZGVudGlhbCBzdG9yYWdlLgpAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBzdG9wTG9hZGluZygpOwogICAgIAotICAgIEtVUkwgbV9tYW5pZmVzdFVSTDsKKyAg
ICBVUkwgbV9tYW5pZmVzdFVSTDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fb3JpZ2lu
OwogICAgIFVwZGF0ZVN0YXR1cyBtX3VwZGF0ZVN0YXR1czsKICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmlu
ZGV4IDRjNjk4MDk5MzY5NGJiYTA1YjJhMDVmNTY3OTQ1NTc4MmIzNWJhZTIuLjQzM2JmMjY5M2Vh
NjI2YjcwNDU3MWM3NDk0N2FjMDdmNTM1NjYxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5p
ZmVzdCgpCiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5p
ZmVzdFVSTChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6c2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChj
b25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2Vs
ZWN0Q2FjaGUobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgbWFuaWZlc3RVUkwpOwogfQpAQCAt
ODYsOCArODYsOCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRNYWluUmVz
b3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdWJzdAogICAgICAgICAgICAgc3Vic3Rp
dHV0ZURhdGEgPSBTdWJzdGl0dXRlRGF0YShyZXNvdXJjZS0+ZGF0YSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
dXJjZS0+cmVzcG9uc2UoKS50ZXh0RW5jb2RpbmdOYW1lKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgS1VSTCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVUkwoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVVJMKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN1YnN0aXR1dGVEYXRhOjpTaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgICAgICBncm91cC0+ZmluaXNo
ZWRMb2FkaW5nTWFpblJlc291cmNlKG1fZG9jdW1lbnRMb2FkZXIpOwogfQogCi1ib29sIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKQorYm9v
bCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkUmVzb3VyY2UoUmVzb3VyY2VMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIG9yaWdpbmFsVVJM
KQogewogICAgIGlmICghaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zMDMsNyArMzAzLDcgQEAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNhY2hl
SW5mbyBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YXBwbGljYXRpb25DYWNoZUluZm8oKQogewogICAg
IEFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gYXBwbGljYXRpb25DYWNoZSgpOwogICAgIGlmICgh
Y2FjaGUgfHwgIWNhY2hlLT5pc0NvbXBsZXRlKCkpCi0gICAgICAgIHJldHVybiBDYWNoZUluZm8o
S1VSTCgpLCAwLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuIENhY2hlSW5mbyhVUkwoKSwgMCwgMCwg
MCk7CiAgIAogICAgIC8vIEZJWE1FOiBBZGQgIkNyZWF0aW9uIFRpbWUiIGFuZCAiVXBkYXRlIFRp
bWUiIHRvIEFwcGxpY2F0aW9uIENhY2hlcy4KICAgICByZXR1cm4gQ2FjaGVJbmZvKGNhY2hlLT5t
YW5pZmVzdFJlc291cmNlKCktPnVybCgpLCAwLCAwLCBjYWNoZS0+ZXN0aW1hdGVkU2l6ZUluU3Rv
cmFnZSgpKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpn
ZXRBcHBsaWNhdGlvbkNhY2hlRmFsbGJhY2tSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcQogICAg
IGlmICghQXBwbGljYXRpb25DYWNoZTo6cmVxdWVzdElzSFRUUE9ySFRUUFNHZXQocmVxdWVzdCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgZmFsbGJhY2tVUkw7CisgICAgVVJM
IGZhbGxiYWNrVVJMOwogICAgIGlmIChjYWNoZS0+aXNVUkxJbk9ubGluZVdoaXRlbGlzdChyZXF1
ZXN0LnVybCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2FjaGUtPnVybE1h
dGNoZXNGYWxsYmFja05hbWVzcGFjZShyZXF1ZXN0LnVybCgpLCAmZmFsbGJhY2tVUkwpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAppbmRleCA2NTIwY2NjNDgwM2ZmOTA5NDVlZGUzZjQ2MGU3NDE2ZGY5ZDBhNDA3Li5mNmUw
ZDBiOTQxZTJmYTIzYTI1MjZmMmY3YzE2OWE0OWQ4NTVkZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaApAQCAtMzEs
NyArMzEsNyBAQAogI2lmbmRlZiBBcHBsaWNhdGlvbkNhY2hlSG9zdF9oCiAjZGVmaW5lIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0X2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTc4LDE5ICs3OCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBzdHJ1Y3QgQ2FjaGVJbmZvIHsK
LSAgICAgICAgICAgIENhY2hlSW5mbyhjb25zdCBLVVJMJiBtYW5pZmVzdCwgZG91YmxlIGNyZWF0
aW9uVGltZSwgZG91YmxlIHVwZGF0ZVRpbWUsIGxvbmcgbG9uZyBzaXplKQorICAgICAgICAgICAg
Q2FjaGVJbmZvKGNvbnN0IFVSTCYgbWFuaWZlc3QsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGRvdWJs
ZSB1cGRhdGVUaW1lLCBsb25nIGxvbmcgc2l6ZSkKICAgICAgICAgICAgICAgICA6IG1fbWFuaWZl
c3QobWFuaWZlc3QpCiAgICAgICAgICAgICAgICAgLCBtX2NyZWF0aW9uVGltZShjcmVhdGlvblRp
bWUpCiAgICAgICAgICAgICAgICAgLCBtX3VwZGF0ZVRpbWUodXBkYXRlVGltZSkKICAgICAgICAg
ICAgICAgICAsIG1fc2l6ZShzaXplKSB7IH0KLSAgICAgICAgICAgIEtVUkwgbV9tYW5pZmVzdDsK
KyAgICAgICAgICAgIFVSTCBtX21hbmlmZXN0OwogICAgICAgICAgICAgZG91YmxlIG1fY3JlYXRp
b25UaW1lOwogICAgICAgICAgICAgZG91YmxlIG1fdXBkYXRlVGltZTsKICAgICAgICAgICAgIGxv
bmcgbG9uZyBtX3NpemU7CiAgICAgICAgIH07CiAKICAgICAgICAgc3RydWN0IFJlc291cmNlSW5m
byB7Ci0gICAgICAgICAgICBSZXNvdXJjZUluZm8oY29uc3QgS1VSTCYgcmVzb3VyY2UsIGJvb2wg
aXNNYXN0ZXIsIGJvb2wgaXNNYW5pZmVzdCwgYm9vbCBpc0ZhbGxiYWNrLCBib29sIGlzRm9yZWln
biwgYm9vbCBpc0V4cGxpY2l0LCBsb25nIGxvbmcgc2l6ZSkKKyAgICAgICAgICAgIFJlc291cmNl
SW5mbyhjb25zdCBVUkwmIHJlc291cmNlLCBib29sIGlzTWFzdGVyLCBib29sIGlzTWFuaWZlc3Qs
IGJvb2wgaXNGYWxsYmFjaywgYm9vbCBpc0ZvcmVpZ24sIGJvb2wgaXNFeHBsaWNpdCwgbG9uZyBs
b25nIHNpemUpCiAgICAgICAgICAgICAgICAgOiBtX3Jlc291cmNlKHJlc291cmNlKQogICAgICAg
ICAgICAgICAgICwgbV9pc01hc3Rlcihpc01hc3RlcikKICAgICAgICAgICAgICAgICAsIG1faXNN
YW5pZmVzdChpc01hbmlmZXN0KQpAQCAtOTgsNyArOTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAgICAgLCBtX2lzRm9yZWlnbihpc0ZvcmVpZ24pCiAgICAgICAgICAgICAg
ICAgLCBtX2lzRXhwbGljaXQoaXNFeHBsaWNpdCkKICAgICAgICAgICAgICAgICAsIG1fc2l6ZShz
aXplKSB7IH0KLSAgICAgICAgICAgIEtVUkwgbV9yZXNvdXJjZTsKKyAgICAgICAgICAgIFVSTCBt
X3Jlc291cmNlOwogICAgICAgICAgICAgYm9vbCBtX2lzTWFzdGVyOwogICAgICAgICAgICAgYm9v
bCBtX2lzTWFuaWZlc3Q7CiAgICAgICAgICAgICBib29sIG1faXNGYWxsYmFjazsKQEAgLTExNCw3
ICsxMTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIH5BcHBsaWNhdGlvbkNhY2hl
SG9zdCgpOwogCiAgICAgICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3QoKTsKLSAg
ICAgICAgdm9pZCBzZWxlY3RDYWNoZVdpdGhNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVS
TCk7CisgICAgICAgIHZvaWQgc2VsZWN0Q2FjaGVXaXRoTWFuaWZlc3QoY29uc3QgVVJMJiBtYW5p
ZmVzdFVSTCk7CiAKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2UoUmVzb3VyY2VS
ZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICAgICAgdm9pZCBtYXliZUxvYWRNYWluUmVz
b3VyY2VGb3JSZWRpcmVjdChSZXNvdXJjZVJlcXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwpAQCAt
MTIzLDcgKzEyMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBmaW5pc2hl
ZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiAKLSAgICAgICAgYm9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRl
ciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKTsKKyAgICAgICAg
Ym9vbCBtYXliZUxvYWRSZXNvdXJjZShSZXNvdXJjZUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOwogICAgICAgICBib29sIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVkaXJlY3QoUmVzb3VyY2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJik7CiAgICAgICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25z
ZShSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgYm9v
bCBtYXliZUxvYWRGYWxsYmFja0ZvckVycm9yKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCA5OTc2NmUzYTY2YmQzNmViNDJm
ZWQyYTkyNjlkMzRiMDY2MTk0ZDdmLi40ZmNiOGYyZjEwZmE0NjA2NDI4ZjgwOWYxNDU1ZWEzYWUw
ZWU1ZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25D
YWNoZVJlc291cmNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIHVuc2lnbmVkIHR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0
YSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zdG9yYWdlSUQoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuaAppbmRleCBkMWRmZWE0OGNkZmE4ZTU3ZDdmMjAxNzY0ZTllZGNiMjYyZjkwNjZjLi5kOGQz
ZjFhYTA5NGFkMjBkZDkyYjhjZjAzZDEzMjI2NGEwMmY5ZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5o
CkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgRmFsbGJhY2sgPSAxIDw8IDQKICAg
ICB9OwogICAgICAgICAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0
eXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpCiAgICAgewogICAgICAgICBBU1NF
UlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKHVybCwgcmVzcG9uc2UsIHR5cGUsIGJ1ZmZl
ciwgcGF0aCkpOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAKIHByaXZh
dGU6Ci0gICAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IEtVUkwmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBj
b25zdCBTdHJpbmcmIHBhdGgpOworICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBV
UkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAgICAgdW5zaWduZWQgbV90eXBl
OwogICAgIHVuc2lnbmVkIG1fc3RvcmFnZUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNDNj
NzMxMjllYjk5YzJhZjViMTdjM2MzNjgxOTgwOTA4YWU4Yzk4YS4uM2M2MjRkZjQ0N2JmZTFhYTMy
NTk3MTFmZGJhMmNlYzkyNDIyZDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zMSw3ICsz
MSw3IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSAiU1FMaXRlVHJhbnNhY3Rp
b24uaCIKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVjb3JkPiBtX3Jl
Y29yZHM7CiB9OwogCi1zdGF0aWMgdW5zaWduZWQgdXJsSG9zdEhhc2goY29uc3QgS1VSTCYgdXJs
KQorc3RhdGljIHVuc2lnbmVkIHVybEhvc3RIYXNoKGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVu
c2lnbmVkIGhvc3RTdGFydCA9IHVybC5ob3N0U3RhcnQoKTsKICAgICB1bnNpZ25lZCBob3N0RW5k
ID0gdXJsLmhvc3RFbmQoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdW5zaWduZWQgdXJs
SG9zdEhhc2goY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVybiBBbHJlYWR5SGFzaGVkOjphdm9p
ZERlbGV0ZWRWYWx1ZShTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHVy
bFN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIGhvc3RTdGFydCwgaG9zdEVuZCAtIGhvc3RTdGFydCkp
OwogfQogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjps
b2FkQ2FjaGVHcm91cChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCkKK0FwcGxpY2F0aW9uQ2FjaGVH
cm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZUdyb3VwKGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwpCiB7CiAgICAgb3BlbkRhdGFiYXNlKGZhbHNlKTsKICAgICBpZiAoIW1fZGF0
YWJhc2UuaXNPcGVuKCkpCkBAIC0xMzUsNyArMTM1LDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3Vw
KiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFu
aWYKICAgICByZXR1cm4gZ3JvdXA7CiB9ICAgIAogCi1BcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kT3JDcmVhdGVDYWNoZUdyb3VwKGNvbnN0IEtVUkwm
IG1hbmlmZXN0VVJMKQorQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewog
ICAgIEFTU0VSVCghbWFuaWZlc3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpOwogCkBAIC0x
NjAsNyArMTYwLDcgQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBLVVIKICAgICByZXR1cm4gZ3JvdXA7
CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZp
bmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CitBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmaW5kSW5NZW1vcnlD
YWNoZUdyb3VwKGNvbnN0IFVSTCYgbWFuaWZlc3RVUkwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Y2FjaGVzSW5NZW1vcnkuZ2V0KG1hbmlmZXN0VVJMKTsKIH0KQEAgLTE4OSw3ICsxODksNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCkKICAg
ICAgICAgbV9jYWNoZUhvc3RTZXQuYWRkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGF0ZW1lbnQu
Z2V0Q29sdW1uSW50NjQoMCkpKTsKIH0gICAgCiAKLUFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQor
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91
cEZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSk7CiAgICAgCkBAIC0yMjksNyArMjI5LDcgQEAgQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91cEZvclVSTChjb25zdCBLVVJM
JiB1cmwKICAgICAKICAgICBpbnQgcmVzdWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gc3RhdGVt
ZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgbWFuaWZlc3RVUkwg
PSBLVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAg
ICAgICBVUkwgbWFuaWZlc3RVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBzdGF0ZW1lbnQuZ2V0
Q29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVzSW5NZW1vcnkuY29udGFpbnMo
bWFuaWZlc3RVUkwpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjYsNyArMjY2LDcgQEAg
QXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2FjaGVHcm91
cEZvclVSTChjb25zdCBLVVJMJiB1cmwKICAgICByZXR1cm4gMDsKIH0KIAotQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZmFsbGJhY2tDYWNoZUdyb3VwRm9y
VVJMKGNvbnN0IEtVUkwmIHVybCkKK0FwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAKQEAgLTI3OCw3ICsy
NzgsNyBAQCBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpm
YWxsYmFja0NhY2hlR3JvdXBGb3JVUkwoY29uc3QgSwogICAgICAgICBBU1NFUlQoIWdyb3VwLT5p
c09ic29sZXRlKCkpOwogCiAgICAgICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSA9IGdy
b3VwLT5uZXdlc3RDYWNoZSgpKSB7Ci0gICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMOworICAg
ICAgICAgICAgVVJMIGZhbGxiYWNrVVJMOwogICAgICAgICAgICAgaWYgKGNhY2hlLT5pc1VSTElu
T25saW5lV2hpdGVsaXN0KHVybCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAoIWNhY2hlLT51cmxNYXRjaGVzRmFsbGJhY2tOYW1lc3BhY2UodXJsLCAmZmFsbGJh
Y2tVUkwpKQpAQCAtMjk5LDcgKzI5OSw3IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTChjb25zdCBLCiAgICAg
CiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRlbWVudC5zdGVwKCkp
ID09IFNRTFJlc3VsdFJvdykgewotICAgICAgICBLVVJMIG1hbmlmZXN0VVJMID0gS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgVVJMIG1h
bmlmZXN0VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgc3RhdGVtZW50LmdldENvbHVtblRleHQo
MSkpOwogCiAgICAgICAgIGlmIChtX2NhY2hlc0luTWVtb3J5LmNvbnRhaW5zKG1hbmlmZXN0VVJM
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZhbGxiYWNrQ2FjaGVHcm91cEZv
clVSTChjb25zdCBLCiAgICAgICAgIHVuc2lnbmVkIG5ld2VzdENhY2hlSUQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3RhdGVtZW50LmdldENvbHVtbkludDY0KDIpKTsKICAgICAgICAgUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGU+IGNhY2hlID0gbG9hZENhY2hlKG5ld2VzdENhY2hlSUQpOwogCi0g
ICAgICAgIEtVUkwgZmFsbGJhY2tVUkw7CisgICAgICAgIFVSTCBmYWxsYmFja1VSTDsKICAgICAg
ICAgaWYgKGNhY2hlLT5pc1VSTEluT25saW5lV2hpdGVsaXN0KHVybCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNrTmFtZXNwYWNl
KHVybCwgJmZhbGxiYWNrVVJMKSkKQEAgLTcyOSw3ICs3MjksNyBAQCBib29sIEFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlKiBjYWNoZSwgUmVzb3VyY2VTdG9y
YWdlSURKbwogICAgIH0KICAgICAKICAgICAvLyBTdG9yZSB0aGUgb25saW5lIHdoaXRlbGlzdAot
ICAgIGNvbnN0IFZlY3RvcjxLVVJMPiYgb25saW5lV2hpdGVsaXN0ID0gY2FjaGUtPm9ubGluZVdo
aXRlbGlzdCgpOworICAgIGNvbnN0IFZlY3RvcjxVUkw+JiBvbmxpbmVXaGl0ZWxpc3QgPSBjYWNo
ZS0+b25saW5lV2hpdGVsaXN0KCk7CiAgICAgewogICAgICAgICBzaXplX3Qgd2hpdGVsaXN0U2l6
ZSA9IG9ubGluZVdoaXRlbGlzdC5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgd2hpdGVsaXN0U2l6ZTsgKytpKSB7CkBAIC0xMTEwLDcgKzExMTAsNyBAQCBQYXNzUmVmUHRy
PEFwcGxpY2F0aW9uQ2FjaGU+IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpsb2FkQ2FjaGUodW5z
aWduZWQgc3RvcmFnZQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IGNh
Y2hlU3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSB7Ci0gICAgICAgIEtVUkwgdXJs
KFBhcnNlZFVSTFN0cmluZywgY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSk7CisgICAg
ICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBjYWNoZVN0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDApKTsKICAgICAgICAgCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSA9IGNhY2hlU3RhdGVt
ZW50LmdldENvbHVtbkludCgxKTsKIApAQCAtMTE1Niw5ICsxMTU2LDkgQEAgUGFzc1JlZlB0cjxB
cHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2ln
bmVkIHN0b3JhZ2UKICAgICAgICAgcmV0dXJuIDA7CiAgICAgd2hpdGVsaXN0U3RhdGVtZW50LmJp
bmRJbnQ2NCgxLCBzdG9yYWdlSUQpOwogICAgIAotICAgIFZlY3RvcjxLVVJMPiB3aGl0ZWxpc3Q7
CisgICAgVmVjdG9yPFVSTD4gd2hpdGVsaXN0OwogICAgIHdoaWxlICgocmVzdWx0ID0gd2hpdGVs
aXN0U3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMUmVzdWx0Um93KSAKLSAgICAgICAgd2hpdGVsaXN0
LmFwcGVuZChLVVJMKFBhcnNlZFVSTFN0cmluZywgd2hpdGVsaXN0U3RhdGVtZW50LmdldENvbHVt
blRleHQoMCkpKTsKKyAgICAgICAgd2hpdGVsaXN0LmFwcGVuZChVUkwoUGFyc2VkVVJMU3RyaW5n
LCB3aGl0ZWxpc3RTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgwKSkpOwogCiAgICAgaWYgKHJlc3Vs
dCAhPSBTUUxSZXN1bHREb25lKQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGNh
Y2hlIG9ubGluZSB3aGl0ZWxpc3QsIGVycm9yIFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOwpAQCAtMTE4OCw3ICsxMTg4LDcgQEAgUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNhY2hl
PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2UKICAg
ICAKICAgICBGYWxsYmFja1VSTFZlY3RvciBmYWxsYmFja1VSTHM7CiAgICAgd2hpbGUgKChyZXN1
bHQgPSBmYWxsYmFja1N0YXRlbWVudC5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgCi0gICAgICAg
IGZhbGxiYWNrVVJMcy5hcHBlbmQobWFrZV9wYWlyKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxs
YmFja1N0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIGZh
bGxiYWNrU3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpKSk7CisgICAgICAgIGZhbGxiYWNrVVJM
cy5hcHBlbmQobWFrZV9wYWlyKFVSTChQYXJzZWRVUkxTdHJpbmcsIGZhbGxiYWNrU3RhdGVtZW50
LmdldENvbHVtblRleHQoMCkpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCBmYWxsYmFja1N0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKSkpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25l
KQogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBsb2FkIGZhbGxiYWNrIFVSTHMsIGVycm9y
IFwiJXNcIiIsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwpAQCAtMTMzNyw3ICsxMzM3LDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmVDb3B5T2ZDYWNoZShjb25zdCBT
dHJpbmcmIGNhY2hlRGlyZWN0b3J5LCBBcHAKICAgICByZXR1cm4gY29weVN0b3JhZ2Uuc3RvcmVO
ZXdlc3RDYWNoZShncm91cENvcHkuZ2V0KCkpOwogfQogCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjptYW5pZmVzdFVSTHMoVmVjdG9yPEtVUkw+KiB1cmxzKQorYm9vbCBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxVUkw+KiB1cmxzKQogewogICAgIEFT
U0VSVCh1cmxzKTsKICAgICBvcGVuRGF0YWJhc2UoZmFsc2UpOwpAQCAtMTM1MCw3ICsxMzUwLDcg
QEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bWFuaWZlc3RVUkxzKFZlY3RvcjxLVVJM
PiogdXJscykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgd2hpbGUgKHNlbGVjdFVSTHMu
c3RlcCgpID09IFNRTFJlc3VsdFJvdykKLSAgICAgICAgdXJscy0+YXBwZW5kKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBzZWxlY3RVUkxzLmdldENvbHVtblRleHQoMCkpKTsKKyAgICAgICAgdXJscy0+
YXBwZW5kKFVSTChQYXJzZWRVUkxTdHJpbmcsIHNlbGVjdFVSTHMuZ2V0Q29sdW1uVGV4dCgwKSkp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNTE0LDcgKzE1MTQsNyBAQCBsb25nIGxvbmcg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNpemUoKQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiA+JiBvcmlnaW5zKQogewotICAgIFZlY3RvcjxLVVJMPiB1cmxzOworICAg
IFZlY3RvcjxVUkw+IHVybHM7CiAgICAgaWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJldHJpZXZlIEFwcGxpY2F0aW9uQ2FjaGUgbWFuaWZl
c3QgVVJMcyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IGFmNjQzN2U4
NDNiODYyOGYwNDNmYWFmY2IzNzljYjNjMDM2ZTYwOWQuLmU0YjMxMDQ0ZWRiYzI5ZGI3ZTAyMDUy
MDhmZGZlZTBmNDY0MjE3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGU7CiBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlR3JvdXA7CiBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIHRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyBTdG9yYWdlSURKb3VybmFsOwpA
QCAtNjksMTEgKzY5LDExIEBAIHB1YmxpYzoKICAgICBib29sIHN0b3JlVXBkYXRlZFF1b3RhRm9y
T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBxdW90YSk7CiAgICAgYm9vbCBj
aGVja09yaWdpblF1b3RhKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCosIEFwcGxpY2F0aW9uQ2FjaGUq
IG9sZENhY2hlLCBBcHBsaWNhdGlvbkNhY2hlKiBuZXdDYWNoZSwgaW50NjRfdCYgdG90YWxTcGFj
ZU5lZWRlZCk7CiAKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGNhY2hlR3JvdXBGb3JVUkwo
Y29uc3QgS1VSTCYpOyAvLyBDYWNoZSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tLgotICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKGNvbnN0IEtV
UkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFjayBlbnRyeSB0byBsb2FkIGEgbWFpbiBy
ZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZhaWxzLgorICAgIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogY2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdG8gbG9hZCBh
IG1haW4gcmVzb3VyY2UgZnJvbS4KKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZhbGxiYWNr
Q2FjaGVHcm91cEZvclVSTChjb25zdCBVUkwmKTsgLy8gQ2FjaGUgdGhhdCBoYXMgYSBmYWxsYmFj
ayBlbnRyeSB0byBsb2FkIGEgbWFpbiByZXNvdXJjZSBmcm9tIGlmIG5vcm1hbCBsb2FkaW5nIGZh
aWxzLgogCi0gICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBmaW5kT3JDcmVhdGVDYWNoZUdyb3Vw
KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMKTsKLSAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZp
bmRJbk1lbW9yeUNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpIGNvbnN0OworICAg
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZmluZE9yQ3JlYXRlQ2FjaGVHcm91cChjb25zdCBVUkwm
IG1hbmlmZXN0VVJMKTsKKyAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRJbk1lbW9yeUNh
Y2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkgY29uc3Q7CiAgICAgdm9pZCBjYWNoZUdy
b3VwRGVzdHJveWVkKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCopOwogICAgIHZvaWQgY2FjaGVHcm91
cE1hZGVPYnNvbGV0ZShBcHBsaWNhdGlvbkNhY2hlR3JvdXAqKTsKICAgICAgICAgCkBAIC04OSw3
ICs4OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgYm9vbCBzdG9yZUNvcHlPZkNhY2hl
KGNvbnN0IFN0cmluZyYgY2FjaGVEaXJlY3RvcnksIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Kik7CiAK
LSAgICBib29sIG1hbmlmZXN0VVJMcyhWZWN0b3I8S1VSTD4qIHVybHMpOworICAgIGJvb2wgbWFu
aWZlc3RVUkxzKFZlY3RvcjxVUkw+KiB1cmxzKTsKICAgICBib29sIGNhY2hlR3JvdXBTaXplKGNv
bnN0IFN0cmluZyYgbWFuaWZlc3RVUkwsIGludDY0X3QqIHNpemUpOwogICAgIGJvb2wgZGVsZXRl
Q2FjaGVHcm91cChjb25zdCBTdHJpbmcmIG1hbmlmZXN0VVJMKTsKICAgICB2b2lkIHZhY3V1bURh
dGFiYXNlRmlsZSgpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UoKTsKICAgICBQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2Fj
aGU+IGxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpOwotICAgIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwpOworICAgIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogbG9hZENhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCk7
CiAgICAgCiAgICAgdHlwZWRlZiBTdG9yYWdlSURKb3VybmFsPEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZT4gUmVzb3VyY2VTdG9yYWdlSURKb3VybmFsOwogICAgIHR5cGVkZWYgU3RvcmFnZUlESm91
cm5hbDxBcHBsaWNhdGlvbkNhY2hlR3JvdXA+IEdyb3VwU3RvcmFnZUlESm91cm5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5o
CmluZGV4IDk1ODcxMGNkODRiNjdlMTIxMTRkZTBkNGE5ODFiZDNhODk1OGFmMjYuLmIwNTRjZDI1
NWE1M2IyMTU3YTMwZWI3YWJjNTkyMTk5MDdiMWEyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaApAQCAtNDEsNyArNDEs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSBtYXJrZWQgRklOQUwg
b25jZSA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMjE3NDc+IGlzIGZpeGVkLgogY2xhc3MgRE9NQXBw
bGljYXRpb25DYWNoZSA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PERPTUFwcGxpY2F0aW9uQ2FjaGU+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9NYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IGM5ODVhOWMyYWI0NzE0NmRlNDkxNTQz
MjkyYjMxMDdkOGYzODZiZmYuLmJiMWYwMzkxNmFlNDJjYjkxYzUwZjI2MzNhNWQ1MDE3ZGUxMDI5
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFy
c2VyLmNwcApAQCAtMjYsOCArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik1hbmlmZXN0UGFyc2VyLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVGV4dFJl
c291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0zNiw3ICszNiw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogZW51bSBNb2RlIHsgRXhwbGljaXQsIEZhbGxiYWNr
LCBPbmxpbmVXaGl0ZWxpc3QsIFVua25vd24gfTsKICAgICAKLWJvb2wgcGFyc2VNYW5pZmVzdChj
b25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFu
aWZlc3QmIG1hbmlmZXN0KQorYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFuaWZlc3RV
UkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXN0JiBtYW5pZmVzdCkKIHsK
ICAgICBBU1NFUlQobWFuaWZlc3QuZXhwbGljaXRVUkxzLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJU
KG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcy5pc0VtcHR5KCkpOwpAQCAtMTE0LDcgKzEx
NCw3IEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEtVUkwgdXJsKG1hbmlmZXN0VVJMLCBTdHJp
bmcobGluZS5jaGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOworICAgICAgICAg
ICAgVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygpLCBwIC0gbGlu
ZS5jaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJv
b2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCwgTWFuaWZlCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEtVUkwgbmFtZXNwYWNlVVJMKG1hbmlm
ZXN0VVJMLCBTdHJpbmcobGluZS5jaGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkp
OworICAgICAgICAgICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUu
Y2hhcmFjdGVycygpLCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgICAgIGlmICgh
bmFtZXNwYWNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIGlmIChuYW1lc3BhY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCkBAIC0xNjQs
NyArMTY0LDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IEtVUkwmIG1hbmlmZXN0VVJMLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmUKICAgICAgICAgICAgIHdoaWxlIChw
IDwgbGluZUVuZCAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcgJykgCiAgICAgICAgICAgICAgICAg
cCsrOwogCi0gICAgICAgICAgICBLVVJMIGZhbGxiYWNrVVJMKG1hbmlmZXN0VVJMLCBTdHJpbmco
ZmFsbGJhY2tTdGFydCwgcCAtIGZhbGxiYWNrU3RhcnQpKTsKKyAgICAgICAgICAgIFVSTCBmYWxs
YmFja1VSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGZhbGxiYWNrU3RhcnQsIHAgLSBmYWxsYmFja1N0
YXJ0KSk7CiAgICAgICAgICAgICBpZiAoIWZhbGxiYWNrVVJMLmlzVmFsaWQoKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChmYWxsYmFja1VSTC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9NYW5pZmVzdFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlm
ZXN0UGFyc2VyLmgKaW5kZXggMzliNzYwZDM2MjNhMjc0OTFjZGZkZTAzNmQyODcwZjA4MTk1ZTJl
Zi4uMjgzMTVkZGU2OGZlMWFlNzhjNjg2NzBmOTFhM2FjYzJhYmUyYzdiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmgKQEAgLTMwLDE2ICsz
MCwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKIAogICAgIHN0cnVjdCBNYW5pZmVzdCB7Ci0gICAgICAgIFZlY3RvcjxLVVJMPiBv
bmxpbmVXaGl0ZWxpc3RlZFVSTHM7CisgICAgICAgIFZlY3RvcjxVUkw+IG9ubGluZVdoaXRlbGlz
dGVkVVJMczsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+IGV4cGxpY2l0VVJMczsKICAgICAgICAg
RmFsbGJhY2tVUkxWZWN0b3IgZmFsbGJhY2tVUkxzOwogICAgICAgICBib29sIGFsbG93QWxsTmV0
d29ya1JlcXVlc3RzOyAvLyBXaWxkY2FyZCBmb3VuZCBpbiBORVRXT1JLIHNlY3Rpb24uCiAgICAg
fTsKIAotICAgIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBLVVJMJiBtYW5pZmVzdFVSTCwgY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgTWFuaWZlc3QmKTsKKyAgICBib29sIHBhcnNlTWFu
aWZlc3QoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCwgTWFuaWZlc3QmKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggMTRjODFmZGI3YTkzNTkwZTFkMTlmMWUyYzEwY2Vi
MGJmMTg0NDgzMC4uZDc3NWJjOTA3NjA5ZmFiYjgyYWM3NGM1MDYwYzJkNGFlMzk2ZTJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcApA
QCAtNDUsMTIgKzQ1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBQYXNz
UmVmUHRyPEFyY2hpdmU+IFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKGNvbnN0IEtVUkwmLCBTaGFy
ZWRCdWZmZXIqKTsKK3R5cGVkZWYgUGFzc1JlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbihjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqKTsKIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIFJhd0RhdGFDcmVhdGlvbkZ1bmN0aW9uKiwgQ2FzZUZvbGRpbmdIYXNoPiBBcmNoaXZlTUlN
RVR5cGVzTWFwOwogCiAvLyBUaGUgY3JlYXRlIGZ1bmN0aW9ucyBpbiB0aGUgYXJjaGl2ZSBjbGFz
c2VzIHJldHVybiBQYXNzUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hp
dmUuIFRoaXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVy
biB0eXBlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFBhc3NSZWZQ
dHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcikKK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBQ
YXNzUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNzOjpjcmVhdGUo
dXJsLCBidWZmZXIpOwogfQpAQCAtODIsNyArODIsNyBAQCBib29sIEFyY2hpdmVGYWN0b3J5Ojpp
c0FyY2hpdmVNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiAhbWlt
ZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyhtaW1lVHlwZSk7
CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBL
VVJMJiB1cmwsIFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK1Bh
c3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIFJhd0Rh
dGFDcmVhdGlvbkZ1bmN0aW9uKiBmdW5jdGlvbiA9IG1pbWVUeXBlLmlzRW1wdHkoKSA/IDAgOiBh
cmNoaXZlTUlNRVR5cGVzKCkuZ2V0KG1pbWVUeXBlKTsKICAgICByZXR1cm4gZnVuY3Rpb24gPyBm
dW5jdGlvbih1cmwsIGRhdGEpIDogUGFzc1JlZlB0cjxBcmNoaXZlPigwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4IGQwNDA1Y2E1MmM4
Y2FiYTFiNDNjZTAwOGZhZDVmOGIwYzY0OGZhYWYuLjU0YjY0ZGQ3NzdjZDU5MGU3YzFjMDVlZWI2
YmI0YzU0ZTlmZjY3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZUZhY3RvcnkuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFz
cyBBcmNoaXZlRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNBcmNoaXZlTWlt
ZVR5cGUoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBT
aGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2
b2lkIHJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVzKCk7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAppbmRleCA3ZGVkYzkz
NGFlNjZhOTkwNGVlY2FjMGE1M2Q1NmMyZDAwNGM0YzVmLi4yMTAwMGM4MjgzZjIyOWVlMjMyNDI5
MDU4NDUxOWNmMmE2YmQxMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK2lubGluZSBBcmNoaXZlUmVz
b3VyY2U6OkFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgOiBTdWJzdGl0dXRlUmVzb3VyY2UodXJsLCByZXNwb25zZSwgZGF0YSkK
ICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNvZGluZyh0ZXh0RW5j
b2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3VyY2U6OkFyY2hpdmVS
ZXNvdXJjZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSCiB7CiB9CiAK
LVBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtNTQsNyArNTQsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2
ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdAogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQXJjaGl2ZVJlc291cmNlKGRhdGEsIHVybCwgbWltZVR5cGUsIHRleHRF
bmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1QYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CitQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gY3JlYXRlKGRhdGEsIHVybCwgcmVz
cG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBTdHJpbmcoKSwg
cmVzcG9uc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZl
UmVzb3VyY2UuaAppbmRleCA5N2Q2ZTMyZjdkMjA1YzJjNjRlYzdhMzdkNWU5OWQ1YmE4MTBjMTZh
Li45YjRiMDFiOWM5ZjM3YmMwYjQ3ODYxOGVmZjdhYTlmOTE5MTAyZmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaApAQCAtMzUsOCArMzUs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFyY2hpdmVSZXNvdXJjZSA6IHB1Ymxp
YyBTdWJzdGl0dXRlUmVzb3VyY2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgS1VS
TCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IEtVUkwm
LAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgY29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLAog
ICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJlc291cmNlUmVzcG9uc2UoKSk7CiAK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkSWdub3JlV2hlblVuYXJj
aGl2aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25vcmVXaGVuVW5hcmNoaXZpbmc7IH0K
IAogcHJpdmF0ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisgICAgQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2Rpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAg
ICBTdHJpbmcgbV9taW1lVHlwZTsKICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24uY3BwCmluZGV4IGFhNGE4NzBmNTdhZDgyZjY0YWZhOTIyNWEyYWViYjY0Njk2Mjhi
ZWEuLjY0ZWMyOGRhNWNkZDg4Y2ZmNWYyN2JhNGQ5NzUyYzk0MGRmYWUzNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNv
bGxlY3Rpb24uY3BwCkBAIC02OCwxMSArNjgsMTEgQEAgdm9pZCBBcmNoaXZlUmVzb3VyY2VDb2xs
ZWN0aW9uOjphZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gcmVzb3VyY2UK
ICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBLVVJMJiB1
cmwgPSByZXNvdXJjZS0+dXJsKCk7IC8vIGdldCBiZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3
aGljaCBzZXRzIGl0IHRvIDApCisgICAgY29uc3QgVVJMJiB1cmwgPSByZXNvdXJjZS0+dXJsKCk7
IC8vIGdldCBiZWZvcmUgcGFzc2luZyBQYXNzUmVmUHRyICh3aGljaCBzZXRzIGl0IHRvIDApCiAg
ICAgbV9zdWJyZXNvdXJjZXMuc2V0KHVybCwgcmVzb3VyY2UpOwogfQogCi1BcmNoaXZlUmVzb3Vy
Y2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25z
dCBLVVJMJiB1cmwpCitBcmNoaXZlUmVzb3VyY2UqIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb246
OmFyY2hpdmVSZXNvdXJjZUZvclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBcmNoaXZlUmVz
b3VyY2UqIHJlc291cmNlID0gbV9zdWJyZXNvdXJjZXMuZ2V0KHVybCk7CiAgICAgaWYgKCFyZXNv
dXJjZSkKQEAgLTgxLDcgKzgxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBBcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYgdXIKICAgICByZXR1
cm4gcmVzb3VyY2U7CiB9CiAKLVBhc3NSZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZVJlc291cmNlQ29s
bGVjdGlvbjo6cG9wU3ViZnJhbWVBcmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25z
dCBLVVJMJiB1cmwpCitQYXNzUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rp
b246OnBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUgPSBtX3N1YmZyYW1lcy50YWtl
KGZyYW1lTmFtZSk7CiAgICAgaWYgKGFyY2hpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKaW5kZXggMTVl
ZjhiY2M5YWY0YWRjNGZmM2M1MWU0ZTlhMmIyNmJkMzA5MjVjNy4uNWFlNGIyZDQwNWY4N2JiOGEw
MGQwZTMwYzBlNWE5YTliN2NhNWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaApAQCAtMzEsNyArMzEs
NyBAQAogCiAjaW5jbHVkZSAiQXJjaGl2ZS5oIgogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00Nyw4ICs0Nyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291
cmNlPik7CiAgICAgdm9pZCBhZGRBbGxSZXNvdXJjZXMoQXJjaGl2ZSopOwogICAgIAotICAgIEFy
Y2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IEtVUkwmKTsKLSAgICBQ
YXNzUmVmUHRyPEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2ZShjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgY29uc3QgS1VSTCYpOworICAgIEFyY2hpdmVSZXNvdXJjZSogYXJjaGl2ZVJlc291cmNl
Rm9yVVJMKGNvbnN0IFVSTCYpOworICAgIFBhc3NSZWZQdHI8QXJjaGl2ZT4gcG9wU3ViZnJhbWVB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBVUkwmKTsKICAgICAKIHByaXZh
dGU6ICAgIAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IG1f
c3VicmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA0MTAxYWRjYjkyYzllYTVmYzA2ZTkwZGQ4YWY2
OTllOTBiNDkyNmE5Li5mYmU5ZTMwZTg1NDI1Zjc0YWM4NGY2YmM5ZjU2ZDE5YWEyMDA4Y2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVkZSAiS1VS
TEhhc2guaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjI3LDcgKzIyNyw3
IEBAIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVS
ZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRlUmVz
b3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRhLCBy
ZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogICAgIAotICAgIHJldHVybiBBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGEocmVzb3VyY2VEYXRhKSwg
S1VSTChLVVJMKCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwgcmVz
cG9uc2UpOworICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6
OndyYXBDRkRhdGEocmVzb3VyY2VEYXRhKSwgVVJMKFVSTCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4
dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUGFzc1JlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQpAQCAtMjU1LDEwICsyNTUsMTAg
QEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUo
UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2UKIAogUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZl
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoU2hhcmVkQnVmZmVyKiBkYXRhKQogewotICAgIHJl
dHVybiBjcmVhdGUoS1VSTCgpLCBkYXRhKTsKKyAgICByZXR1cm4gY3JlYXRlKFVSTCgpLCBkYXRh
KTsKIH0KIAotUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlciogZGF0YSkKK1Bhc3NSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIFNoYXJlZEJ1
ZmZlciogZGF0YSkKIHsKICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3Jl
YXRpbmcgZnJvbSByYXcgZGF0YSIpOwogICAgIApAQCAtNTAxLDE4ICs1MDEsMTggQEAgUGFzc1Jl
ZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiBtYXJrdXBTdHJpbmcKICAgICBBU1NFUlQoZnJhbWUpOwogICAgIAogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCk7Ci0gICAgS1VSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwor
ICAgIFVSTCByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOwogICAgIAogICAgIC8vIGl0J3Mg
cG9zc2libGUgdG8gaGF2ZSBhIHJlc3BvbnNlIHdpdGhvdXQgYSBVUkwgaGVyZQogICAgIC8vIDxy
ZGFyOi8vcHJvYmxlbS81NDU0OTM1PgogICAgIGlmIChyZXNwb25zZVVSTC5pc051bGwoKSkKLSAg
ICAgICAgcmVzcG9uc2VVUkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmcoKSk7
CisgICAgICAgIHJlc3BvbnNlVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgZW1wdHlTdHJpbmco
KSk7CiAgICAgICAgIAogICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKHV0ZjhCdWZmZXIobWFya3VwU3RyaW5nKSwgcmVzcG9u
c2VVUkwsIHJlc3BvbnNlLm1pbWVUeXBlKCksICJVVEYtOCIsIGZyYW1lLT50cmVlKCkudW5pcXVl
TmFtZSgpKTsKIAogICAgIFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4gc3Vi
ZnJhbWVBcmNoaXZlczsKICAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4g
c3VicmVzb3VyY2VzOwotICAgIEhhc2hTZXQ8S1VSTD4gdW5pcXVlU3VicmVzb3VyY2VzOworICAg
IEhhc2hTZXQ8VVJMPiB1bmlxdWVTdWJyZXNvdXJjZXM7CiAKICAgICBzaXplX3Qgbm9kZXNTaXpl
ID0gbm9kZXMuc2l6ZSgpOyAgICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGVzU2l6
ZTsgKytpKSB7CkBAIC01MzAsMTMgKzUzMCwxMyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlZCB0byBh
cmNoaXZlIHN1YmZyYW1lICVzIiwgY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIExpc3RI
YXNoU2V0PEtVUkw+IHN1YnJlc291cmNlVVJMczsKKyAgICAgICAgICAgIExpc3RIYXNoU2V0PFVS
TD4gc3VicmVzb3VyY2VVUkxzOwogICAgICAgICAgICAgbm9kZS0+Z2V0U3VicmVzb3VyY2VVUkxz
KHN1YnJlc291cmNlVVJMcyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwot
ICAgICAgICAgICAgTGlzdEhhc2hTZXQ8S1VSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJyZXNv
dXJjZVVSTHMuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PEtVUkw+OjppdGVy
YXRvciBpdGVyID0gc3VicmVzb3VyY2VVUkxzLmJlZ2luKCk7IGl0ZXIgIT0gaXRlckVuZDsgKytp
dGVyKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgc3VicmVzb3VyY2VVUkwgPSAqaXRl
cjsKKyAgICAgICAgICAgIExpc3RIYXNoU2V0PFVSTD46Oml0ZXJhdG9yIGl0ZXJFbmQgPSBzdWJy
ZXNvdXJjZVVSTHMuZW5kKCk7CisgICAgICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFVSTD46Oml0
ZXJhdG9yIGl0ZXIgPSBzdWJyZXNvdXJjZVVSTHMuYmVnaW4oKTsgaXRlciAhPSBpdGVyRW5kOyAr
K2l0ZXIpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVUkwmIHN1YnJlc291cmNlVVJMID0gKml0
ZXI7CiAgICAgICAgICAgICAgICAgaWYgKHVuaXF1ZVN1YnJlc291cmNlcy5jb250YWlucyhzdWJy
ZXNvdXJjZVVSTCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01NzMsNyAr
NTczLDcgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpj
cmVhdGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcKICAgICAgICAgY29uc3QgU3RyaW5nJiBp
Y29uVVJMID0gaWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChyZXNw
b25zZVVSTCk7CiAgICAgICAgIGlmICghaWNvblVSTC5pc0VtcHR5KCkgJiYgaWNvbkRhdGFiYXNl
KCkuc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChpY29uVVJMKSkgewogICAgICAg
ICAgICAgaWYgKEltYWdlKiBpY29uSW1hZ2UgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0lj
b25Gb3JQYWdlVVJMKHJlc3BvbnNlVVJMLCBJbnRTaXplKDE2LCAxNikpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoaWNvbkltYWdlLT5kYXRhKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpY29u
VVJMKSwgImltYWdlL3gtaWNvbiIsICIiLCAiIikpCisgICAgICAgICAgICAgICAgaWYgKFJlZlB0
cjxBcmNoaXZlUmVzb3VyY2U+IHJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoaWNv
bkltYWdlLT5kYXRhKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIGljb25VUkwpLCAiaW1hZ2UveC1p
Y29uIiwgIiIsICIiKSkKICAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChy
ZXNvdXJjZS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXgg
Y2UxYjcxMjU1OTBlODEyNjM1MjM4YjQ5YmZiZGVhMjVjZGY0YTk5YS4uZGJhZTlkYzFiYjk3MTU2
MDRiMTBlOTc4MGFjZGFhOGM0ZjcwNDQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFz
cyBMZWdhY3lXZWJBcmNoaXZlIDogcHVibGljIEFyY2hpdmUgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShTaGFyZWRCdWZmZXIqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJl
ZEJ1ZmZlciopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNv
dXJjZSwgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZXNvdXJjZXMs
IFZlY3RvcjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMp
OwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2RlKiwg
RnJhbWVGaWx0ZXIqID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4gY3JlYXRlKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcAppbmRleCBjMjUzZjE1OGNlZGE4YTYxYTY3OWY2ZDhl
Y2MyMTQzOWQ4OWU3ZTJkLi40NzA4YmYxMWUxNGRhZTA3MDk2NTc1NzY1MzJmOTZhNjg0MDBhNWZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
QXJjaGl2ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBQYXNzUmVmUHRyPE1IVE1MQXJjaGl2ZT4g
TUhUTUxBcmNoaXZlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTUhUTUxBcmNo
aXZlKTsKIH0KIAotUGFzc1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IEtVUkwmIHVybCwgU2hhcmVkQnVmZmVyKiBkYXRhKQorUGFzc1JlZlB0cjxNSFRNTEFy
Y2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTaGFyZWRCdWZmZXIq
IGRhdGEpCiB7CiAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMgd2Ugb25seSBsb2FkIE1IVE1M
IHBhZ2VzIGZyb20gbG9jYWwgVVJMcy4KICAgICBpZiAoIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRU
cmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCBkZDE0ZDk5YzRh
NWM5NjI2ZjI2MmIwOGQ0MGIyZmMwZGFjYjdkZTM0Li4xNGNkODc1NzIzNWIzNjViNTVjNDU4MDQz
NTZkYTk4YWRiNDExMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBNSFRNTDsgfQogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
SFRNTEFyY2hpdmU+IGNyZWF0ZShjb25zdCBLVVJMJiwgU2hhcmVkQnVmZmVyKik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TUhUTUxBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgU2hhcmVkQnVm
ZmVyKik7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGdlbmVyYXRlTUhU
TUxEYXRhKFBhZ2UqKTsKICAgICAvLyBCaW5hcnkgZW5jb2RpbmcgcmVzdWx0cyBpbiBzbWFsbGVy
IE1IVE1MIGZpbGVzIGJ1dCB0aGV5IG1pZ2h0IG5vdCB3b3JrIGluIG90aGVyIGJyb3dzZXJzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCmluZGV4IDJkNzJhMTJkOWNjMDNjMmY3YTIxYzI2MDVlZTliZTI0NjY4MWMyYjAuLmQ4NzYw
ZjllZDlkNjI2MzFmMTBhMDJmYjY2Nzc2NjI0YzkwNWU1YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJzZXI6OnBhcnNlTmV4
dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYQogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGlu
IHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxhdGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQg
aWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1lbnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEg
VVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8v
IElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVS
THMuCi0gICAgS1VSTCBsb2NhdGlvbiA9IEtVUkwoS1VSTCgpLCBtaW1lSGVhZGVyLmNvbnRlbnRM
b2NhdGlvbigpKTsKKyAgICBVUkwgbG9jYXRpb24gPSBVUkwoVVJMKCksIG1pbWVIZWFkZXIuY29u
dGVudExvY2F0aW9uKCkpOwogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShjb250
ZW50QnVmZmVyLCBsb2NhdGlvbiwgbWltZUhlYWRlci5jb250ZW50VHlwZSgpLCBtaW1lSGVhZGVy
LmNoYXJzZXQoKSwgU3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAKaW5kZXggNzI3M2IwNDhkM2Q4ZTI4YzJjNTIxOWFlZTJiZDI0OTk2N2Zm
ZDJiNi4uOGM1NWRkMTlhMjhlZDY1N2M4YzE2ZDhjYTc5ZGRiYmQxNDY0MDRkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IEZvbnRQbGF0Zm9ybURhdGEgQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEo
ZmxvYXQgc2l6ZSwgYm9vbCBib2xkLCBiCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnRE
YXRhKCkKIHsKICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJl
ZCgpICYmICFpc0xvYWRpbmcoKSAmJiBtX2RhdGEpIHsKLSAgICAgICAgbV9leHRlcm5hbFNWR0Rv
Y3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgwLCBLVVJMKCkpOworICAgICAgICBtX2V4dGVy
bmFsU1ZHRG9jdW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIFVSTCgpKTsKIAogICAgICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7CiAgICAgICAgIFN0cmluZyBzdmdTb3VyY2Ug
PSBkZWNvZGVyLT5kZWNvZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGYzNjFh
ZmYzNGUwOTg4YjMzYTlkMzRhMzRhMGQ4ZTAxNTAwMWQ0NTMuLjgzOWRkNTk5NjA2N2FkMGNjNWM4
M2EyNWEzMmM3Njc3NjdhNGFmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTG9hZGVyU3RyYXRlZ3kuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTWVtb3J5Q2FjaGUuaCIKQEAgLTIzMCw3ICsyMzAsNyBAQCBDYWNoZWRSZXNvdXJjZTo6
Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUeXBlIHR5cGUp
CiAKICAgICBpZiAoIW1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmxGb3JDYWNoZSA9IE1lbW9yeUNhY2hl
OjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChtX3Jlc291cmNlUmVxdWVzdC51cmwo
KSk7CisgICAgVVJMIHVybEZvckNhY2hlID0gTWVtb3J5Q2FjaGU6OnJlbW92ZUZyYWdtZW50SWRl
bnRpZmllcklmTmVlZGVkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAodXJsRm9y
Q2FjaGUuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Zy
YWdtZW50SWRlbnRpZmllckZvclJlcXVlc3QgPSBtX3Jlc291cmNlUmVxdWVzdC51cmwoKS5mcmFn
bWVudElkZW50aWZpZXIoKTsKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
Ojpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3Qg
UmVzbwogICAgIC8vIFdlIHNob3VsZCBsb29rIGludG8gcmVtb3ZpbmcgdGhlIGV4cGVjdGF0aW9u
IG9mIHRoYXQga25vd2xlZGdlIGZyb20gdGhlIHBsYXRmb3JtIG5ldHdvcmsgc3RhY2tzLgogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KG1fcmVzb3VyY2VSZXF1ZXN0KTsKICAgICBpZiAoIW1f
ZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVxdWVzdC5pc051bGwoKSkgewotICAgICAgICBLVVJMIHVy
bCA9IHJlcXVlc3QudXJsKCk7CisgICAgICAgIFVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOwogICAg
ICAgICB1cmwuc2V0RnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhZ21lbnRJZGVudGlmaWVyRm9yUmVx
dWVzdCk7CiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgICAgIG1fZnJhZ21lbnRJ
ZGVudGlmaWVyRm9yUmVxdWVzdCA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA4ZWZlOTQ5MjhmZGI3NThmNDVlMTQ5NmFjMTEz
YWFjNWVkZmY2ZmNhLi4wNjYzMjk2MTI4Y2YyYTI4MTEyYmJjMGM4MTgyNzcyZTRiNGQwYmQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTEy
LDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0
YXR1c0NvZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QoKSB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdDsgfQot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0LnVy
bCgpO30KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1
ZXN0LnVybCgpO30KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGNvbnN0IFN0
cmluZyYgY2FjaGVQYXJ0aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUmVxdWVzdC5j
YWNoZVBhcnRpdGlvbigpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM0NjM3ODYyY2E0YTVhNTEw
ZmI5NTFjMzU3ZjJlYTQzYjcyN2YyMTUuLmU0Y2IyNGEzNDdiOWJkOWM2NDBhODdmMzM3YjQ5ZjI4
YTY3MmFlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMTQyLDEzICsxNDIsMTMgQEAgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcigpCiAKIENhY2hlZFJlc291cmNlKiBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXNvdXJjZVVSTCkg
Y29uc3QgCiB7Ci0gICAgS1VSTCB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTChyZXNvdXJj
ZVVSTCk7CisgICAgVVJMIHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHJlc291cmNlVVJM
KTsKICAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UodXJsKTsgCiB9CiAKLUNhY2hlZFJlc291cmNl
KiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FjaGVkUmVzb3VyY2UoY29uc3QgS1VSTCYgcmVzb3Vy
Y2VVUkwpIGNvbnN0CitDYWNoZWRSZXNvdXJjZSogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhY2hl
ZFJlc291cmNlKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0CiB7Ci0gICAgS1VSTCB1cmwg
PSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVzb3VyY2VV
UkwpOworICAgIFVSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
SWZOZWVkZWQocmVzb3VyY2VVUkwpOwogICAgIHJldHVybiBtX2RvY3VtZW50UmVzb3VyY2VzLmdl
dCh1cmwpLmdldCgpOyAKIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hl
ZFJlc291CiB7CiAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICBpZiAoZi0+
bG9hZGVyKCkucGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkKCkgIT0gRnJhbWVMb2Fk
ZXI6Ok5vRGlzbWlzc2FsKSB7Ci0gICAgICAgICAgICBLVVJMIHJlcXVlc3RVUkwgPSByZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgICAgICAgICAgVVJMIHJlcXVlc3RVUkwgPSBy
ZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwogICAgICAgICAgICAgaWYgKHJlcXVlc3RV
UkwuaXNWYWxpZCgpICYmIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2Us
IHJlcXVlc3RVUkwsIHJlcXVlc3Qub3B0aW9ucygpLCByZXF1ZXN0LmZvclByZWxvYWQoKSkpCiAg
ICAgICAgICAgICAgICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKGYsIHJlcXVlc3RVUkwpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTcsNyArMTk3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RDU1NT
dHlsZVMKIAogQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldChDYWNoZWRSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgS1VSTCB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJh
Z21lbnRJZGVudGlmaWVySWZOZWVkZWQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7
CisgICAgVVJMIHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5l
ZWRlZChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKIAogI2lmIEVOQUJMRShDQUNI
RV9QQVJUSVRJT05JTkcpCiAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0
Q2FjaGVQYXJ0aXRpb24oZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkp
OwpAQCAtMjU5LDcgKzI1OSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdE1haW5SZXNvdXJjCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291cmNlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpNYWluUmVzb3VyY2UsIHJlcXVlc3QpLmdldCgpKTsKIH0KIAotYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgY29uc3QgS1VSTCYgdXJsKSBjb25zdAorYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBDYWNoZWRSZXNv
dXJjZTo6U2NyaXB0OgpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmNoZWNrSW5zZWN1cmVDb250ZW50KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJl
cXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGJvb2wgZm9yUHJlbG9hZCkKK2Jvb2wgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgYm9v
bCBmb3JQcmVsb2FkKQogewogICAgIGlmIChkb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKCFmb3JQcmVsb2Fk
KQpAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZENv
bnRpbnVlQWZ0ZXJOb3RpZnlpbmdMb2FkZWRGcm9tTWVtb3J5Q2FjaGUoQ2FjCiAKIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBLVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCk7CisgICAgVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAg
ICAgCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0l
dSIsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEoKS5kYXRhKCks
IHJlcXVlc3QuY2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpLCBy
ZXF1ZXN0LmZvclByZWxvYWQoKSk7CiAgICAgCkBAIC02NjAsNyArNjYwLDcgQEAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0
ZXJtaW5lUmV2YWxpZGEKICAgICByZXR1cm4gVXNlOwogfQogCi12b2lkIENhY2hlZFJlc291cmNl
TG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAor
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICh1cmwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTcwMywxMiArNzAzLDEyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldElt
YWdlc0VuYWJsZWQoYm9vbCBlbmFibGUpCiAgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgp
OwogfQogCi1ib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZlcnNJbWFnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjbGllbnREZWZl
cnNJbWFnZShjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gZnJhbWUoKSAmJiAh
ZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuYWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQsIHVy
bCk7CiB9CiAKLWJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2Fk
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZERlZmVySW1hZ2VMb2FkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBjbGll
bnREZWZlcnNJbWFnZSh1cmwpIHx8ICFtX2F1dG9Mb2FkSW1hZ2VzOwogfQpAQCAtODg3LDcgKzg4
Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RQcmVsb2FkKENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291CiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OmlzUHJlbG9hZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIGNv
bnN0IEtVUkwmIHVybCA9IG1fZG9jdW1lbnQtPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAg
Y29uc3QgVVJMJiB1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogCiAg
ICAgaWYgKG1fcHJlbG9hZHMpIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2Uq
Pjo6aXRlcmF0b3IgZW5kID0gbV9wcmVsb2Fkcy0+ZW5kKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ3NjA4MzI1MmI1
NjJiOWJhMWFlMTI4MmUzZTY3NzBkODZiMjMzMDEuLjljOTU5YzQ2YjY0ZWYwNmUwZGU5NmM2M2Vk
YWU1OTQwYWYxY2MyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwot
Y2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIHBy
b3ZpZGVzIGEgcGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQogLy8gYW5k
IGVuZm9yY2VzIGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3IgcmVzb3Vy
Y2UgcmV2YWxpZGF0aW9uLgpAQCAtOTcsMTAgKzk3LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgLy8gTG9ncyBhbiBhY2Nlc3MgZGVuaWVkIG1lc3NhZ2UgdG8gdGhlIGNvbnNvbGUgZm9yIHRo
ZSBzcGVjaWZpZWQgVVJMLgotICAgIHZvaWQgcHJpbnRBY2Nlc3NEZW5pZWRNZXNzYWdlKGNvbnN0
IEtVUkwmIHVybCkgY29uc3Q7CisgICAgdm9pZCBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29u
c3QgVVJMJiB1cmwpIGNvbnN0OwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdDsKLSAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdDsKKyAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0OwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiA+IERvY3VtZW50
UmVzb3VyY2VNYXA7CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2FjaGVkUmVz
b3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQpAQCAtMTEwLDcg
KzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKIAot
ICAgIGJvb2wgc2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJv
b2wgc2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2Fj
aGVQb2xpY3kgY2FjaGVQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUpIGNvbnN0OwogICAgIApA
QCAtMTMzLDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZWxvYWQoQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCk7
CiAgICAgdm9pZCBjaGVja0ZvclBlbmRpbmdQcmVsb2FkcygpOwogICAgIHZvaWQgcHJpbnRQcmVs
b2FkU3RhdHMoKTsKLSAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IEtVUkwmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQg
PSBmYWxzZSk7CisgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25z
dCBVUkwmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBib29sIGZvclByZWxvYWQgPSBm
YWxzZSk7CiAKICAgICBzdGF0aWMgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBkZWZhdWx0
Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCk7CiAKQEAgLTE1MiwxMiArMTUyLDEyIEBAIHByaXZhdGU6
CiAgICAgUmV2YWxpZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBmb3JQcmVsb2FkLCBDYWNo
ZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpEZWZl
ck9wdGlvbikgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5
aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlKik7Ci0gICAgYm9vbCBjaGVj
a0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgS1VSTCYpIGNvbnN0
OworICAgIGJvb2wgY2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNv
bnN0IFVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBl
cmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKIAotICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29u
c3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgY2xpZW50RGVmZXJzSW1hZ2UoY29uc3QgVVJMJikg
Y29uc3Q7CiAgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5oCmluZGV4IGE0ODhhZjBkMjE5
MWMxOTRkZGZjNzc2NTU2OGQzYzVkNmEwNTdhODMuLjAwY2M1NDY5NjA5ZTNiMTJmMmUwYjBhNTE5
YzZmOWJlZDljNzI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTdHlsZVNoZWV0Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFN0eWxlU2hlZXRDbGllbnQuaApAQCAtMzIsMTUgKzMyLDE1IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogCiBjbGFzcyBDYWNoZWRTdHlsZVNoZWV0Q2xpZW50IDogcHVibGljIENhY2hlZFJl
c291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRTdHlsZVNoZWV0Q2xp
ZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5
cGUoKSB7IHJldHVybiBTdHlsZVNoZWV0VHlwZTsgfQogICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3Vy
Y2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIGV4cGVjdGVk
VHlwZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5n
JiAvKiBocmVmICovLCBjb25zdCBLVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8q
IGNoYXJzZXQgKi8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IEtV
UkwmIC8qIGJhc2VVUkwgKi8sIGNvbnN0IFN0cmluZyYgLyogc2hlZXQgKi8pIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgLyogaHJlZiAqLywgY29u
c3QgVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNoYXJzZXQgKi8sIGNvbnN0
IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IFVSTCYgLyogYmFzZVVSTCAqLywg
Y29uc3QgU3RyaW5nJiAvKiBzaGVldCAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCBi
NjcyMzM4NmEyMThiMTkzOGM3OTY1MzcwYmZlZDQ1MTM4YTc3Mzg4Li4zN2M3MmM2NDAxZGY0NDli
ZjlmYzYwNWIwZTlmMGI2ZWRjOTgyYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgTWVtb3J5Q2FjaGU6Ok1lbW9yeUNh
Y2hlKCkKIHsKIH0KIAotS1VSTCBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVy
SWZOZWVkZWQoY29uc3QgS1VSTCYgb3JpZ2luYWxVUkwpCitVUkwgTWVtb3J5Q2FjaGU6OnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpCiB7CiAg
ICAgaWYgKCFvcmlnaW5hbFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgcmV0
dXJuIG9yaWdpbmFsVVJMOwpAQCAtODMsNyArODMsNyBAQCBLVVJMIE1lbW9yeUNhY2hlOjpyZW1v
dmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChjb25zdCBLVVJMJiBvcmlnaW5hbFVSTCkKICAg
ICAvLyB0byBiZSB1bmlxdWUgZXZlbiB3aGVuIHRoZXkgZGlmZmVyIGJ5IHRoZSBmcmFnbWVudCBp
ZGVudGlmaWVyIG9ubHkuCiAgICAgaWYgKCFvcmlnaW5hbFVSTC5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpCiAgICAgICAgIHJldHVybiBvcmlnaW5hbFVSTDsKLSAgICBLVVJMIHVybCA9IG9yaWdp
bmFsVVJMOworICAgIFVSTCB1cmwgPSBvcmlnaW5hbFVSTDsKICAgICB1cmwucmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CiAgICAgcmV0dXJuIHVybDsKIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2
b2lkIE1lbW9yeUNhY2hlOjpyZXZhbGlkYXRpb25GYWlsZWQoQ2FjaGVkUmVzb3VyY2UqIHJldmFs
aWRhdGluZ1Jlc291cmNlKQogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVhclJlc291cmNl
VG9SZXZhbGlkYXRlKCk7CiB9CiAKLUNhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3Vy
Y2VGb3JVUkwoY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCitDYWNoZWRSZXNvdXJjZSogTWVtb3J5
Q2FjaGU6OnJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgcmV0
dXJuIHJlc291cmNlRm9yUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VVUkwpKTsKIH0K
QEAgLTE3MSw3ICsxNzEsNyBAQCBDYWNoZWRSZXNvdXJjZSogTWVtb3J5Q2FjaGU6OnJlc291cmNl
Rm9yVVJMKGNvbnN0IEtVUkwmIHJlc291cmNlVVJMKQogQ2FjaGVkUmVzb3VyY2UqIE1lbW9yeUNh
Y2hlOjpyZXNvdXJjZUZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ewogICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKLSAgICBLVVJMIHVybCA9IHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOworICAgIFVSTCB1cmwg
PSByZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5lZWRlZChyZXF1ZXN0LnVybCgpKTsKICNpZiBF
TkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIENhY2hlZFJlc291cmNlSXRlbSogaXRlbSA9
IG1fcmVzb3VyY2VzLmdldCh1cmwpOwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDJiYTNhZGJh
NDYwZTM0ZTA4YzllMGU4ZjA4N2NjNjJkY2E5NTY4N2EuLjc4NWNkZTIzNWE2MjBlN2U5ZDQxYmQ0
Y2YwNzg3MGIxZTk0NGUwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlICB7CiBjbGFzcyBDYWNo
ZWRDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBDYWNoZWRSZXNv
dXJjZUxvYWRlcjsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKQEAgLTExMiwxMyArMTEyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVN0YXRpc3RpYyBm
b250czsKICAgICB9OwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yVVJMKGNvbnN0
IEtVUkwmKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJik7
CiAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICAKICAgICBib29sIGFkZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpOwog
ICAgIHZvaWQgcmVtb3ZlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkgeyBldmljdChyZXNvdXJj
ZSk7IH0KIAotICAgIHN0YXRpYyBLVVJMIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVk
KGNvbnN0IEtVUkwmIG9yaWdpbmFsVVJMKTsKKyAgICBzdGF0aWMgVVJMIHJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcklmTmVlZGVkKGNvbnN0IFVSTCYgb3JpZ2luYWxVUkwpOwogICAgIAogICAgIHZv
aWQgcmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNv
dXJjZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgcmV2YWxpZGF0aW9uRmFp
bGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggYmM3YjljNWIyYTcyMzVj
M2YwOGY5Nzc1YmZmZTJjZTg2NDBmMjFkYS4uYWZlNjdiNzllM2ExYzMxYWQ1NDQ2NzQyOGJmNzQ4
OGY2MTllNmNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9s
bGVyLmNwcApAQCAtNjAsMTAgKzYwLDEwIEBAIEljb25Db250cm9sbGVyOjp+SWNvbkNvbnRyb2xs
ZXIoKQogewogfQogCi1LVVJMIEljb25Db250cm9sbGVyOjp1cmwoKQorVVJMIEljb25Db250cm9s
bGVyOjp1cmwoKQogewogICAgIEljb25VUkxzIGljb25VUkxzID0gdXJsc0ZvclR5cGVzKEZhdmlj
b24pOwotICAgIHJldHVybiBpY29uVVJMcy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBpY29uVVJMc1sw
XS5tX2ljb25VUkw7CisgICAgcmV0dXJuIGljb25VUkxzLmlzRW1wdHkoKSA/IFVSTCgpIDogaWNv
blVSTHNbMF0ubV9pY29uVVJMOwogfQogCiBJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJM
KEljb25UeXBlIGljb25UeXBlKSBjb25zdApAQCAtMTE5LDcgKzExOSw3IEBAIEljb25VUkxzIElj
b25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiAgICAgcmV0dXJu
IGljb25VUkxzOwogfQogCi12b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNv
bnN0IEtVUkwmIGljb24pCit2b2lkIEljb25Db250cm9sbGVyOjpjb21taXRUb0RhdGFiYXNlKGNv
bnN0IFVSTCYgaWNvbikKIHsKICAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSwgbV9mcmFtZS0+bG9hZGVyKCkuaW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBh
Z2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkp
OwpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkK
ICAgICBpZiAoIWRvY3VtZW50Q2FuSGF2ZUljb24obV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGljb25VUkwodXJsKCkpOworICAgIFVSTCBp
Y29uVVJMKHVybCgpKTsKICAgICBTdHJpbmcgdXJsU3RyaW5nKGljb25VUkwuc3RyaW5nKCkpOwog
ICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMDYsNyAr
MjA2LDcgQEAgdm9pZCBJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKElj
b25Mb2FkRGVjaXNpb24gaWNvbkxvYWREZWNpc2lvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGljb25Mb2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewotICAgICAgICBLVVJMIGljb25V
UkwodXJsKCkpOworICAgICAgICBVUkwgaWNvblVSTCh1cmwoKSk7CiAgICAgICAgIFN0cmluZyB1
cmxTdHJpbmcoaWNvblVSTC5zdHJpbmcoKSk7CiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDExICsyNTMsMTEgQEAgYm9vbCBJY29u
Q29udHJvbGxlcjo6YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMq
IGljb25VUkxzKQogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBp
Y29uVHlwZSkKIHsKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNz
IHdlJ3JlIGh0dHAgb3IgaHR0cHMKLSAgICBLVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIGRvY3VtZW50VVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CiAgICAgaWYgKCFkb2N1bWVudFVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
CiAgICAgICAgIHJldHVybiBJY29uVVJMKCk7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJs
OwogICAgIGJvb2wgY291bGRTZXRQcm90b2NvbCA9IHVybC5zZXRQcm90b2NvbChkb2N1bWVudFVS
TC5wcm90b2NvbCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvdWxkU2V0UHJvdG9jb2wsIGNvdWxk
U2V0UHJvdG9jb2wpOwogICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuaAppbmRleCA2MWRmYTc2YjZj
NGZmY2JmZjc2ZDU2Yjk2NDNiNWM0ODc1NzA2NjU4Li5jYTljMTRjODUxZWRhMzk3MDY2ZTcxNjBh
OGYzZjE4ZmRkZGNkZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2Uu
aCIKICNpbmNsdWRlICJJY29uVVJMLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IEljb25Db250cm9sbGVyKEZyYW1lKik7CiAgICAgfkljb25Db250cm9sbGVy
KCk7CiAKLSAgICBLVVJMIHVybCgpOworICAgIFVSTCB1cmwoKTsKICAgICBJY29uVVJMcyB1cmxz
Rm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spOwogICAgIEljb25VUkwgaWNvblVSTChJY29uVHlw
ZSkgY29uc3Q7CiAKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERlY2lz
aW9uUmVjZWl2ZWQoSWNvbkxvYWREZWNpc2lvbik7CiAgICAgdm9pZCBjb250aW51ZUxvYWRXaXRo
RGVjaXNpb24oSWNvbkxvYWREZWNpc2lvbik7CiAKLSAgICB2b2lkIGNvbW1pdFRvRGF0YWJhc2Uo
Y29uc3QgS1VSTCYgaWNvbik7CisgICAgdm9pZCBjb21taXRUb0RhdGFiYXNlKGNvbnN0IFVSTCYg
aWNvbik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBhcHBlbmRUb0ljb25VUkxzKEljb25UeXBlLCBJ
Y29uVVJMcyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRl
eCBhNjIyNmRkZjJiZmUyOWI3NWFhNGViNzg5NmVjOGU5OGM3MzM0M2I1Li5jNzc3ZGQ0ZjI3ZjAy
NzBkNzhiYmI3NjNhYmNhNzExMjMwYmEyYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3Mg
SWNvbkRhdGFiYXNlQ2xpZW50OwogY2xhc3MgSWNvblJlY29yZDsKIGNsYXNzIEljb25TbmFwc2hv
dDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQYWdlVVJMUmVjb3JkOwogY2xhc3Mg
UGFnZVVSTFNuYXBzaG90OwogY2xhc3MgU2hhcmVkQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2VCYXNlLmNwcAppbmRleCA5ZjExNjBjYmNmMjI3NThi
MGNhODYyMzhmYzI2ODQ4MjYxZTEzYjQ0Li41MWNjYjNiMjdkOTRhZmJmZDlmNjVjNmYwY2RiMTUz
MTE3MDBiMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2VCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2VCYXNlLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkljb25EYXRhYmFzZUJhc2Uu
aCIKIAogI2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4
dHJhcy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0K
aW5kZXggMDgzYjFlNjAzMzY5YTk4M2JmYWQxODMwYmRlMjEwMWFmMDRiNDc0My4uZDVjYjkwODgz
NjRmY2M4ZDgwMWVhNTMyMTAxNTczNDkxN2JhZjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCkBAIC0zMiw3ICszMiw3IEBACiAKICNpbXBv
cnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+Ci0jaW1wb3J0ICJL
VVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNp
bXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIldlYkNvcmVOU1N0cmluZ0V4dHJh
cy5oIgpAQCAtNTgsNyArNTgsNyBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlN
RVR5cGUoTlNVUkwgKnVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIGlmIChbZmls
ZW5hbWUgbGVuZ3RoXSA9PSAwIHx8IFtsYXN0UGF0aENvbXBvbmVudCBpc0VxdWFsVG9TdHJpbmc6
QCIvIl0pIHsKICAgICAgICAgLy8gbGFzdFBhdGhDb21wb25lbnQgaXMgbm8gZ29vZCwgdHJ5IHRo
ZSBob3N0LgotICAgICAgICBOU1N0cmluZyAqaG9zdCA9IEtVUkwodXJsKS5ob3N0KCk7CisgICAg
ICAgIE5TU3RyaW5nICpob3N0ID0gVVJMKHVybCkuaG9zdCgpOwogICAgICAgICBmaWxlbmFtZSA9
IGZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhob3N0KTsKICAgICAgICAgaWYgKFtm
aWxlbmFtZSBsZW5ndGhdID09IDApIHsKICAgICAgICAgICAgIC8vIENhbid0IG1ha2UgYSBmaWxl
bmFtZSB1c2luZyB0aGlzIFVSTCwgdXNlICJ1bmtub3duIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDIzNzVlZDNiNmVkMDliYjA1ODE3
YWY1MGYwZDAwNTQ2NTAwMjc5NGYuLjUxYWEzOGVlNjcwYTdkY2I4ZGI5ZjkyNzU3NGI3M2Y5ZTJh
ODRlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c2V0
Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBvdmVycmlkCiB2b2lkIENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSgpCiB7
CiAgICAgLy8gSWRlbnRpZnkgb3VyIG92ZXJyaWRlIHN0eWxlIHNoZWV0IHdpdGggYSB1bmlxdWUg
VVJMIC0gYSBuZXcgc2NoZW1lIGFuZCBhIFVVSUQuCi0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChL
VVJMLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIChQYXJzZWRVUkxTdHJpbmcsICJ1c2VyLWNhcHRp
b25zLW92ZXJyaWRlOjAxRjZBRjEyLUMzQjAtNEY3MC1BRjVFLUEzRTAwMjM0REMyMyIpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2Vk
VVJMU3RyaW5nLCAidXNlci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1
RS1BM0UwMDIzNERDMjMiKSk7CiAKICAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hl
ZXRGcm9tV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVS
TCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAKaW5kZXggNTFiMzZjMmU2YTcxZTg1ODFiMzRlNzhiNGJiMzFiYWJjZmIw
NjcxMS4uNzM5NTU5YzkzYjFjMDlkNWU4NDhkOWE5ZTU2Y2E0ZGNiM2NjNGM3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5j
cHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNs
dWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgi
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAxNTFj
OTA0NWIxNzg3YjA3Y2E1YTQ1YTRjMmY0N2UzZmRiYjhkZjE5Li44YzU1NTMwMTg3ZTU4N2ZkYTVl
YTQ2ZTA4MDQwOTVhMGJjMDhkODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNp
bmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAg
ICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
IXNjaGVtZU1hdGNoZXModXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MCw3
ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIGJvb2wgc2NoZW1lTWF0
Y2hlcyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0CisgICAgYm9vbCBzY2hlbWVNYXRjaGVzKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG1fc2NoZW1lLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgU3RyaW5nIHByb3RlY3RlZFJlc291cmNlU2NoZW1lKG1fcG9saWN5LT5z
ZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UodXJsLnByb3RvY29sKCksIG1fc2No
ZW1lKTsKICAgICB9CiAKLSAgICBib29sIGhvc3RNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29u
c3QKKyAgICBib29sIGhvc3RNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBob3N0ID0gdXJsLmhvc3QoKTsKICAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGhvc3QsIG1faG9zdCkpCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0ZToK
IAogICAgIH0KIAotICAgIGJvb2wgcGF0aE1hdGNoZXMoY29uc3QgS1VSTCYgdXJsKSBjb25zdAor
ICAgIGJvb2wgcGF0aE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjg1
LDcgKzI4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBwYXRoID09IG1fcGF0aDsKICAg
ICB9CiAKLSAgICBib29sIHBvcnRNYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKKyAgICBi
b29sIHBvcnRNYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KG1fcG9ydEhhc1dpbGRjYXJkKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMjEsNyAr
MzIxLDcgQEAgcHVibGljOgogICAgIENTUFNvdXJjZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5
KiwgY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVOYW1lKTsKIAogICAgIHZvaWQgcGFyc2UoY29uc3Qg
U3RyaW5nJik7Ci0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKTsKKyAgICBib29sIG1hdGNo
ZXMoY29uc3QgVVJMJik7CiAgICAgYm9vbCBhbGxvd0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWxsb3dJbmxpbmU7IH0KICAgICBib29sIGFsbG93RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dFdmFsOyB9CiAKQEAgLTM2NCwxMiArMzY0LDEyIEBAIHZvaWQgQ1NQU291cmNlTGlzdDo6cGFy
c2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBwYXJzZSh2YWx1ZS5jaGFyYWN0ZXJzKCksIHZh
bHVlLmNoYXJhY3RlcnMoKSArIHZhbHVlLmxlbmd0aCgpKTsKIH0KIAotYm9vbCBDU1BTb3VyY2VM
aXN0OjptYXRjaGVzKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgQ1NQU291cmNlTGlzdDo6bWF0Y2hl
cyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAobV9hbGxvd1N0YXIpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgS1VSTCBlZmZlY3RpdmVVUkwgPSBTZWN1cml0eU9yaWdpbjo6c2hvdWxk
VXNlSW5uZXJVUkwodXJsKSA/IFNlY3VyaXR5T3JpZ2luOjpleHRyYWN0SW5uZXJVUkwodXJsKSA6
IHVybDsKKyAgICBVUkwgZWZmZWN0aXZlVVJMID0gU2VjdXJpdHlPcmlnaW46OnNob3VsZFVzZUlu
bmVyVVJMKHVybCkgPyBTZWN1cml0eU9yaWdpbjo6ZXh0cmFjdElubmVyVVJMKHVybCkgOiB1cmw7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGlzdC5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAobV9saXN0W2ldLm1hdGNoZXMoZWZmZWN0aXZlVVJMKSkKQEAgLTgxNCw3ICs4MTQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc291cmNlTGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYm9vbCBhbGxvd3MoY29uc3QgS1VSTCYgdXJsKQorICAgIGJvb2wgYWxsb3dzKGNvbnN0
IFVSTCYgdXJsKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc291cmNlTGlzdC5tYXRjaGVzKHVy
bC5pc0VtcHR5KCkgPyBwb2xpY3koKS0+dXJsKCkgOiB1cmwpOwogICAgIH0KQEAgLTgzOSwyNSAr
ODM5LDI1IEBAIHB1YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwogICAgIGJvb2wgYWxs
b3dJbmxpbmVTdHlsZShjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5h
bE51bWJlciYgY29udGV4dExpbmUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzKSBjb25zdDsKICAgICBib29sIGFsbG93RXZhbChKU0M6OkV4ZWNTdGF0ZSosIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93U2Ny
aXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBj
b25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJikgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93U2NyaXB0RnJvbVNvdXJjZShj
b25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0
OwotICAgIGJvb2wgYWxsb3dPYmplY3RGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0NoaWxk
RnJhbWVGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBL
VVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OwotICAg
IGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9udEZyb21Tb3Vy
Y2UoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBj
b25zdDsKLSAgICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Nv
bm5lY3RUb1NvdXJjZShjb25zdCBLVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRp
bmdTdGF0dXMpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dGb3JtQWN0aW9uKGNvbnN0IEtVUkwmLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7Ci0gICAgYm9vbCBh
bGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5n
U3RhdHVzKSBjb25zdDsKKyAgICBib29sIGFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBu
b25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXIm
IGNvbnRleHRMaW5lLCBjb25zdCBVUkwmKSBjb25zdDsKKyAgICBib29sIGFsbG93UGx1Z2luVHlw
ZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0ZSwgY29uc3Qg
VVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworCisg
ICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dPYmplY3RGcm9t
U291cmNlKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVz
KSBjb25zdDsKKyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dTdHlsZUZyb21Tb3VyY2UoY29u
c3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0Owor
ICAgIGJvb2wgYWxsb3dGb250RnJvbVNvdXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNv
dXJjZShjb25zdCBVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykg
Y29uc3Q7CisgICAgYm9vbCBhbGxvd0Nvbm5lY3RUb1NvdXJjZShjb25zdCBVUkwmLCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q7CisgICAgYm9vbCBhbGxvd0Zv
cm1BY3Rpb24oY29uc3QgVVJMJiwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMpIGNvbnN0OworICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdDsKIAogICAgIHZvaWQgZ2F0aGVyUmVw
b3J0VVJJcyhET01TdHJpbmdMaXN0JikgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nJiBldmFsRGlz
YWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX2V2YWxEaXNhYmxlZEVycm9yTWVz
c2FnZTsgfQogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVmbGVjdGVkWFNTRGlzcG9zaXRp
b24gcmVmbGVjdGVkWFNTRGlzcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZmxlY3RlZFhT
U0Rpc3Bvc2l0aW9uOyB9CiAgICAgYm9vbCBpc1JlcG9ydE9ubHkoKSBjb25zdCB7IHJldHVybiBt
X3JlcG9ydE9ubHk7IH0KLSAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHJlcG9ydFVSSXMoKSBjb25z
dCB7IHJldHVybiBtX3JlcG9ydFVSSXM7IH0KKyAgICBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0
VVJJcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwb3J0VVJJczsgfQogCiBwcml2YXRlOgogICAgIENT
UERpcmVjdGl2ZUxpc3QoQ29udGVudFNlY3VyaXR5UG9saWN5KiwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpIZWFkZXJUeXBlKTsKQEAgLTg3NiwxMiArODc2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRDU1BEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBPd25QdHI8Q1NQRGlyZWN0aXZlVHlwZT4mKTsKIAogICAgIFNvdXJjZUxpc3REaXJlY3RpdmUq
IG9wZXJhdGl2ZURpcmVjdGl2ZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7Ci0gICAgdm9p
ZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJp
bmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29u
c3QgS1VSTCYgYmxvY2tlZFVSTCA9IEtVUkwoKSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMID0g
U3RyaW5nKCksIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUgPSBXVEY6Ok9y
ZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIEpTQzo6RXhlY1N0YXRlKiA9IDApIGNvbnN0Owor
ICAgIHZvaWQgcmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29u
c3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3Nh
Z2UsIGNvbnN0IFVSTCYgYmxvY2tlZFVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNvbnRleHRV
UkwgPSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdU
Rjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29u
c3Q7CiAKICAgICBib29sIGNoZWNrRXZhbChTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAg
ICAgYm9vbCBjaGVja0lubGluZShTb3VyY2VMaXN0RGlyZWN0aXZlKikgY29uc3Q7CiAgICAgYm9v
bCBjaGVja05vbmNlKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAg
Ym9vbCBjaGVja1NvdXJjZShTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3QgS1VSTCYpIGNvbnN0
OworICAgIGJvb2wgY2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFVSTCYp
IGNvbnN0OwogICAgIGJvb2wgY2hlY2tNZWRpYVR5cGUoTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUpIGNvbnN0OwogCiAg
ICAgdm9pZCBzZXRFdmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIHsgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IH0KQEAg
LTg5MCw3ICs4OTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2hlY2tJbmxpbmVBbmRSZXBvcnRW
aW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBj
b250ZXh0TGluZSwgYm9vbCBpc1NjcmlwdCkgY29uc3Q7CiAgICAgYm9vbCBjaGVja05vbmNlQW5k
UmVwb3J0VmlvbGF0aW9uKE5vbmNlRGlyZWN0aXZlKiwgY29uc3QgU3RyaW5nJiBub25jZSwgY29u
c3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lKSBjb25zdDsKIAotICAgIGJvb2wgY2hl
Y2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSosIGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSkgY29uc3Q7CisgICAgYm9vbCBj
aGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0OwogICAgIGJvb2wg
Y2hlY2tNZWRpYVR5cGVBbmRSZXBvcnRWaW9sYXRpb24oTWVkaWFMaXN0RGlyZWN0aXZlKiwgY29u
c3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFN0cmlu
ZyYgY29uc29sZU1lc3NhZ2UpIGNvbnN0OwogCiAgICAgYm9vbCBkZW55SWZFbmZvcmNpbmdQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX3JlcG9ydE9ubHk7IH0KQEAgLTkxOCw3ICs5MTgsNyBAQCBw
cml2YXRlOgogICAgIE93blB0cjxTb3VyY2VMaXN0RGlyZWN0aXZlPiBtX3NjcmlwdFNyYzsKICAg
ICBPd25QdHI8U291cmNlTGlzdERpcmVjdGl2ZT4gbV9zdHlsZVNyYzsKIAotICAgIFZlY3RvcjxL
VVJMPiBtX3JlcG9ydFVSSXM7CisgICAgVmVjdG9yPFVSTD4gbV9yZXBvcnRVUklzOwogCiAgICAg
U3RyaW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogfTsKQEAgLTk0OSw3ICs5NDksNyBA
QCBQYXNzT3duUHRyPENTUERpcmVjdGl2ZUxpc3Q+IENTUERpcmVjdGl2ZUxpc3Q6OmNyZWF0ZShD
b250ZW50U2VjdXJpdHlQb2xpY3kqIHBvbAogICAgIHJldHVybiBkaXJlY3RpdmVzLnJlbGVhc2Uo
KTsKIH0KIAotdm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29u
c3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5l
LCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnJl
cG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQsIGNvbnN0IFN0cmluZyYg
ZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNvbGVNZXNzYWdlLCBjb25zdCBV
UkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRp
bmFsTnVtYmVyJiBjb250ZXh0TGluZSwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBjb25zdAogewog
ICAgIFN0cmluZyBtZXNzYWdlID0gbV9yZXBvcnRPbmx5ID8gIltSZXBvcnQgT25seV0gIiArIGNv
bnNvbGVNZXNzYWdlIDogY29uc29sZU1lc3NhZ2U7CiAgICAgbV9wb2xpY3ktPnJlcG9ydFZpb2xh
dGlvbihkaXJlY3RpdmVUZXh0LCBlZmZlY3RpdmVEaXJlY3RpdmUsIG1lc3NhZ2UsIGJsb2NrZWRV
UkwsIG1fcmVwb3J0VVJJcywgbV9oZWFkZXIsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0
ZSk7CkBAIC05NzAsNyArOTcwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja05vbmNl
KE5vbmNlRGlyZWN0aXZlKiBkaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgbm9uY2UKICAgICByZXR1
cm4gIWRpcmVjdGl2ZSB8fCBkaXJlY3RpdmUtPmFsbG93cyhub25jZSk7CiB9CiAKLWJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2UoU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZl
LCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291
cmNlKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICFkaXJlY3RpdmUgfHwgZGlyZWN0aXZlLT5hbGxvd3ModXJsKTsKIH0K
QEAgLTk5OCw3ICs5OTgsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrRXZhbEFuZFJl
cG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3RpdgogICAgIGlmIChkaXJl
Y3RpdmUgPT0gbV9kZWZhdWx0U3JjKQogICAgICAgICBzdWZmaXggPSAiIE5vdGUgdGhhdCAnc2Ny
aXB0LXNyYycgd2FzIG5vdCBleHBsaWNpdGx5IHNldCwgc28gJ2RlZmF1bHQtc3JjJyBpcyB1c2Vk
IGFzIGEgZmFsbGJhY2suIjsKIAotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQo
KSwgc2NyaXB0U3JjLCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSAr
ICJcIi4iICsgc3VmZml4ICsgIlxuIiwgS1VSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSwg
c3RhdGUpOworICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0U3Jj
LCBjb25zb2xlTWVzc2FnZSArICJcIiIgKyBkaXJlY3RpdmUtPnRleHQoKSArICJcIi4iICsgc3Vm
Zml4ICsgIlxuIiwgVVJMKCksIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCBzdGF0ZSk7CiAgICAg
aWYgKCFtX3JlcG9ydE9ubHkpIHsKICAgICAgICAgbV9wb2xpY3ktPnJlcG9ydEJsb2NrZWRTY3Jp
cHRFeGVjdXRpb25Ub0luc3BlY3RvcihkaXJlY3RpdmUtPnRleHQoKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwMTAsNyArMTAxMCw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hl
Y2tOb25jZUFuZFJlcG9ydFZpb2xhdGlvbihOb25jZURpcmVjdGl2ZSogZGlyZWN0aXZlLCBjCiB7
CiAgICAgaWYgKGNoZWNrTm9uY2UoZGlyZWN0aXZlLCBub25jZSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgc2NyaXB0Tm9uY2Us
IGNvbnNvbGVNZXNzYWdlICsgIlwiIiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLlxuIiwgS1VS
TCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVj
dGl2ZS0+dGV4dCgpLCBzY3JpcHROb25jZSwgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0
aXZlLT50ZXh0KCkgKyAiXCIuXG4iLCBVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwog
ICAgIHJldHVybiBkZW55SWZFbmZvcmNpbmdQb2xpY3koKTsKIH0KIApAQCAtMTAyMyw3ICsxMDIz
LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xh
dGlvbihNZWRpYUxpc3REaXJlY3RpdmUqIGRpcmUKICAgICBpZiAodHlwZUF0dHJpYnV0ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlICsgIiBXaGVuIGVuZm9yY2luZyB0aGUg
J3BsdWdpbi10eXBlcycgZGlyZWN0aXZlLCB0aGUgcGx1Z2luJ3MgbWVkaWEgdHlwZSBtdXN0IGJl
IGV4cGxpY2l0bHkgZGVjbGFyZWQgd2l0aCBhICd0eXBlJyBhdHRyaWJ1dGUgb24gdGhlIGNvbnRh
aW5pbmcgZWxlbWVudCAoZS5nLiAnPG9iamVjdCB0eXBlPVwiW1RZUEUgR09FUyBIRVJFXVwiIC4u
Lj4nKS4iOwogCi0gICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVjdGl2ZS0+dGV4dCgpLCBwbHVnaW5U
eXBlcywgbWVzc2FnZSArICJcbiIsIEtVUkwoKSk7CisgICAgcmVwb3J0VmlvbGF0aW9uKGRpcmVj
dGl2ZS0+dGV4dCgpLCBwbHVnaW5UeXBlcywgbWVzc2FnZSArICJcbiIsIFVSTCgpKTsKICAgICBy
ZXR1cm4gZGVueUlmRW5mb3JjaW5nUG9saWN5KCk7CiB9CiAKQEAgLTEwMzYsNyArMTAzNiw3IEBA
IGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tJbmxpbmVBbmRSZXBvcnRWaW9sYXRpb24oU291
cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRT
cmMpCiAgICAgICAgIHN1ZmZpeCA9IG1ha2VTdHJpbmcoIiBOb3RlIHRoYXQgJyIsIChpc1Njcmlw
dCA/ICJzY3JpcHQiIDogInN0eWxlIiksICItc3JjJyB3YXMgbm90IGV4cGxpY2l0bHkgc2V0LCBz
byAnZGVmYXVsdC1zcmMnIGlzIHVzZWQgYXMgYSBmYWxsYmFjay4iKTsKIAotICAgIHJlcG9ydFZp
b2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHlsZVNy
YywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1
ZmZpeCArICJcbiIsIEtVUkwoKSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJlcG9y
dFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgaXNTY3JpcHQgPyBzY3JpcHRTcmMgOiBzdHls
ZVNyYywgY29uc29sZU1lc3NhZ2UgKyAiXCIiICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiAr
IHN1ZmZpeCArICJcbiIsIFVSTCgpLCBjb250ZXh0VVJMLCBjb250ZXh0TGluZSk7CiAKICAgICBp
ZiAoIW1fcmVwb3J0T25seSkgewogICAgICAgICBpZiAoaXNTY3JpcHQpCkBAIC0xMDQ2LDcgKzEw
NDYsNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrSW5saW5lQW5kUmVwb3J0VmlvbGF0
aW9uKFNvdXJjZUxpc3REaXJlY3RpdmUqIGRpcmVjdAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENTUERpcmVjdGl2ZUxpc3Q6OmNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKFNvdXJj
ZUxpc3REaXJlY3RpdmUqIGRpcmVjdGl2ZSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGVmZmVjdGl2ZURpcmVjdGl2ZSkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6Y2hlY2tT
b3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSogZGlyZWN0aXZlLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUpIGNvbnN0CiB7
CiAgICAgaWYgKGNoZWNrU291cmNlKGRpcmVjdGl2ZSwgdXJsKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMTI5LDcgKzExMjksNyBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93RXZh
bChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UgogICAgICAg
ICBjaGVja0V2YWwob3BlcmF0aXZlRGlyZWN0aXZlKG1fc2NyaXB0U3JjLmdldCgpKSk7CiB9CiAK
LWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5v
bmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYg
Y29udGV4dExpbmUsIGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlz
dDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNv
bnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVS
TCYgdXJsKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xl
TWVzc2FnZSwgKEFTQ0lJTGl0ZXJhbCgiUmVmdXNlZCB0byBleGVjdXRlIHNjcmlwdCBiZWNhdXNl
IGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0
aXZlOiAiKSkpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQpAQCAtMTEzNywyMSArMTEzNywyMSBA
QCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U2NyaXB0Tm9uY2UoY29uc3QgU3RyaW5nJiBu
b25jZSwgY29uc3QgU3RyaW5nJiBjb250ZQogICAgIHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0
VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBsb2FkICci
ICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2
aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTog
IiwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6
OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0
dHJpYnV0ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFs
bG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJp
YnV0ZSwgY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3Rh
dHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVz
ID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrTWVk
aWFUeXBlQW5kUmVwb3J0VmlvbGF0aW9uKG1fcGx1Z2luVHlwZXMuZ2V0KCksIHR5cGUsIHR5cGVB
dHRyaWJ1dGUsICJSZWZ1c2VkIHRvIGxvYWQgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkgKyAiJyAoTUlNRSB0eXBlICciICsgdHlwZUF0dHJpYnV0ZSArICInKSBiZWNh
dXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgRGly
ZWN0aXZlOiAiKSA6CiAgICAgICAgIGNoZWNrTWVkaWFUeXBlKG1fcGx1Z2luVHlwZXMuZ2V0KCks
IHR5cGUsIHR5cGVBdHRyaWJ1dGUpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93
U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6YWxsb3dTY3JpcHRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBv
cnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVEaXJl
Y3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCB1cmwsIHNjcmlwdFNyYykgOgogICAgICAgICBjaGVj
a1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9zY3JpcHRTcmMuZ2V0KCkpLCB1cmwpOwogfQog
Ci1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93T2JqZWN0RnJvbVNvdXJjZShjb25zdCBLVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dPYmplY3RGcm9tU291cmNl
KGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyBy
ZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgaWYgKHVybC5pc0JsYW5rVVJMKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtMTE2MCw3ICsxMTYwLDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVM
aXN0OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2wKICAgICAgICAgY2hlY2tTb3VyY2Uob3BlcmF0aXZlRGlyZWN0aXZlKG1fb2JqZWN0U3Jj
LmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0NoaWxkRnJh
bWVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBv
cnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAg
aWYgKHVybC5pc0JsYW5rVVJMKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE2OSwzNSAr
MTE2OSwzNSBAQCBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3Vy
Y2UoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdAogICAgICAgICBjaGVja1NvdXJjZShv
cGVyYXRpdmVEaXJlY3RpdmUobV9mcmFtZVNyYy5nZXQoKSksIHVybCk7CiB9CiAKLWJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
Citib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IFVSTCYg
dXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0
dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlNlbmRSZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xh
dGlvbihvcGVyYXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1cmwsIGltZ1NyYykgOgog
ICAgICAgICBjaGVja1NvdXJjZShvcGVyYXRpdmVEaXJlY3RpdmUobV9pbWdTcmMuZ2V0KCkpLCB1
cmwpOwogfQogCi1ib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93U3R5bGVGcm9tU291cmNlKGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1N0eWxlRnJv
bVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdT
dGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0
dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tT
b3VyY2VBbmRSZXBvcnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fc3R5bGVTcmMuZ2V0
KCkpLCB1cmwsIHN0eWxlU3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVj
dGl2ZShtX3N0eWxlU3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0
OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJl
Y3RpdmVMaXN0OjphbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRS
ZXBvcnQgPwogICAgICAgICBjaGVja1NvdXJjZUFuZFJlcG9ydFZpb2xhdGlvbihvcGVyYXRpdmVE
aXJlY3RpdmUobV9mb250U3JjLmdldCgpKSwgdXJsLCBmb250U3JjKSA6CiAgICAgICAgIGNoZWNr
U291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX2ZvbnRTcmMuZ2V0KCkpLCB1cmwpOwogfQogCi1i
b29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVy
bCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVz
KSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd01lZGlhRnJvbVNvdXJjZShjb25z
dCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpTZW5kUmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBv
cnRWaW9sYXRpb24ob3BlcmF0aXZlRGlyZWN0aXZlKG1fbWVkaWFTcmMuZ2V0KCkpLCB1cmwsIG1l
ZGlhU3JjKSA6CiAgICAgICAgIGNoZWNrU291cmNlKG9wZXJhdGl2ZURpcmVjdGl2ZShtX21lZGlh
U3JjLmdldCgpKSwgdXJsKTsKIH0KIAotYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Nvbm5l
Y3RUb1NvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0
aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dDb25uZWN0VG9Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4g
cmVwb3J0aW5nU3RhdHVzID09IENvbnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAg
ICAgICAgIGNoZWNrU291cmNlQW5kUmVwb3J0VmlvbGF0aW9uKG9wZXJhdGl2ZURpcmVjdGl2ZSht
X2Nvbm5lY3RTcmMuZ2V0KCkpLCB1cmwsIGNvbm5lY3RTcmMpIDoKQEAgLTEyMTAsMTQgKzEyMTAs
MTQgQEAgdm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpnYXRoZXJSZXBvcnRVUklzKERPTVN0cmluZ0xp
c3QmIGxpc3QpIGNvbnN0CiAgICAgICAgIGxpc3QuYXBwZW5kKG1fcmVwb3J0VVJJc1tpXS5zdHJp
bmcoKSk7CiB9CiAKLWJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dGb3JtQWN0aW9uKGNvbnN0
IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0
aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjphbGxvd0Zvcm1BY3Rpb24o
Y29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gcmVwb3J0aW5nU3RhdHVzID09IENv
bnRlbnRTZWN1cml0eVBvbGljeTo6U2VuZFJlcG9ydCA/CiAgICAgICAgIGNoZWNrU291cmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsLCBmb3JtQWN0aW9uKSA6CiAg
ICAgICAgIGNoZWNrU291cmNlKG1fZm9ybUFjdGlvbi5nZXQoKSwgdXJsKTsKIH0KIAotYm9vbCBD
U1BEaXJlY3RpdmVMaXN0OjphbGxvd0Jhc2VVUkkoY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0Citib29s
IENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93QmFzZVVSSShjb25zdCBVUkwmIHVybCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewog
ICAgIHJldHVybiByZXBvcnRpbmdTdGF0dXMgPT0gQ29udGVudFNlY3VyaXR5UG9saWN5OjpTZW5k
UmVwb3J0ID8KICAgICAgICAgY2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24obV9iYXNlVVJJ
LmdldCgpLCB1cmwsIGJhc2VVUkkpIDoKQEAgLTE1MzcsOCArMTUzNyw4IEBAIGJvb2wgaXNBbGxv
d2VkQnlBbGxXaXRoQ29udGV4dChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2ll
cywgY29uc3QgU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERp
cmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBXVEY6Ok9yZGluYWxOdW1iZXImLCBjb25zdCBLVVJMJikgY29uc3Q+Ci1ib29sIGlzQWxsb3dl
ZEJ5QWxsV2l0aE5vbmNlKGNvbnN0IENTUERpcmVjdGl2ZUxpc3RWZWN0b3ImIHBvbGljaWVzLCBj
b25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IEtVUkwmIHVybCkKK3RlbXBsYXRlPGJv
b2wgKENTUERpcmVjdGl2ZUxpc3Q6OiphbGxvd2VkKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImLCBjb25zdCBVUkwmKSBjb25zdD4KK2Jvb2wg
aXNBbGxvd2VkQnlBbGxXaXRoTm9uY2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9s
aWNpZXMsIGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCwgY29u
c3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwb2xpY2llcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBpZiAoIShwb2xpY2llc1tpXS5nZXQoKS0+KmFsbG93ZWQpKG5vbmNlLCBjb250ZXh0VVJMLCBj
b250ZXh0TGluZSwgdXJsKSkKQEAgLTE1NDcsOCArMTU0Nyw4IEBAIGJvb2wgaXNBbGxvd2VkQnlB
bGxXaXRoTm9uY2UoY29uc3QgQ1NQRGlyZWN0aXZlTGlzdFZlY3RvciYgcG9saWNpZXMsIGNvbnN0
IFN0cmluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPGJvb2wgKENTUERpcmVjdGl2
ZUxpc3Q6OiphbGxvd0Zyb21VUkwpKGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Ci1ib29sIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTChjb25z
dCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywgY29uc3QgS1VSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpCit0ZW1w
bGF0ZTxib29sIChDU1BEaXJlY3RpdmVMaXN0OjoqYWxsb3dGcm9tVVJMKShjb25zdCBVUkwmLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+Citib29sIGlzQWxs
b3dlZEJ5QWxsV2l0aFVSTChjb25zdCBDU1BEaXJlY3RpdmVMaXN0VmVjdG9yJiBwb2xpY2llcywg
Y29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJl
cG9ydGluZ1N0YXR1cykKIHsKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5
cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeSh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTU5NiwxMiArMTU5NiwxMiBAQCBTdHJpbmcgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0Tm9uY2UoY29u
c3QgU3RyaW5nJiBub25jZSwgY29uc3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9y
ZGluYWxOdW1iZXImIGNvbnRleHRMaW5lLCBjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNl
LCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29u
dGV4dExpbmUsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRC
eUFsbFdpdGhOb25jZTwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZT4obV9wb2xp
Y2llcywgbm9uY2UsIGNvbnRleHRVUkwsIGNvbnRleHRMaW5lLCB1cmwpOwogfQogCi1ib29sIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dQbHVnaW5UeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wg
Q29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BvbGljaWVzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGlmICghbV9wb2xpY2llc1tpXS0+YWxsb3dQbHVnaW5UeXBlKHR5cGUsIHR5cGVBdHRyaWJ1
dGUsIHVybCwgcmVwb3J0aW5nU3RhdHVzKSkKQEAgLTE2MTAsNTIgKzE2MTAsNTIgQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUs
IGNvbnN0IFN0cmluZyYgdHkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmFsbG93U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
K2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd1NjcmlwdEZyb21Tb3VyY2UoY29uc3Qg
VVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGlu
Z1N0YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BE
aXJlY3RpdmVMaXN0OjphbGxvd1NjcmlwdEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVw
b3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93T2Jq
ZWN0RnJvbVNvdXJjZShjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVw
b3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiB1cmwsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0OjphbGxvd09i
amVjdEZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UoY29u
c3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dDaGls
ZEZyYW1lRnJvbVNvdXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0Fs
bG93ZWRCeUFsbFdpdGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Q2hpbGRGcmFtZUZyb21T
b3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBj
b25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93SW1hZ2VGcm9tU291cmNlKGNv
bnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBv
cnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwm
Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dJbWFnZUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwg
cmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93
U3R5bGVGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpS
ZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93U3R5bGVGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dT
dHlsZUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Rm9udEZyb21Tb3VyY2UoY29uc3QgS1VS
TCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdT
dGF0dXMpIGNvbnN0Citib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsb3dGb250RnJvbVNv
dXJjZShjb25zdCBVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0
dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAogewogICAgIHJldHVybiBpc0FsbG93ZWRCeUFsbFdp
dGhVUkw8JkNTUERpcmVjdGl2ZUxpc3Q6OmFsbG93Rm9udEZyb21Tb3VyY2U+KG1fcG9saWNpZXMs
IHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVwb3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OmFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dlZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6
YWxsb3dNZWRpYUZyb21Tb3VyY2U+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsK
IH0KIAotYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29ubmVjdFRvU291cmNlKGNv
bnN0IEtVUkwmIHVybCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMgcmVw
b3J0aW5nU3RhdHVzKSBjb25zdAorYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93Q29u
bmVjdFRvU291cmNlKGNvbnN0IFVSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9y
dGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzQWxsb3dl
ZEJ5QWxsV2l0aFVSTDwmQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dDb25uZWN0VG9Tb3VyY2U+KG1f
cG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAotYm9vbCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OmFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiB1cmwsIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QKK2Jvb2wgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Zvcm1BY3Rpb24oY29uc3QgVVJMJiB1cmwsIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykgY29uc3QK
IHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJlY3RpdmVMaXN0Ojph
bGxvd0Zvcm1BY3Rpb24+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVzKTsKIH0KIAot
Ym9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbG93QmFzZVVSSShjb25zdCBLVVJMJiB1cmws
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0YXR1cykg
Y29uc3QKK2Jvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxvd0Jhc2VVUkkoY29uc3QgVVJM
JiB1cmwsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzIHJlcG9ydGluZ1N0
YXR1cykgY29uc3QKIHsKICAgICByZXR1cm4gaXNBbGxvd2VkQnlBbGxXaXRoVVJMPCZDU1BEaXJl
Y3RpdmVMaXN0OjphbGxvd0Jhc2VVUkk+KG1fcG9saWNpZXMsIHVybCwgcmVwb3J0aW5nU3RhdHVz
KTsKIH0KQEAgLTE2ODYsMTIgKzE2ODYsMTIgQEAgU2VjdXJpdHlPcmlnaW4qIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CiB9CiAKLWNvbnN0IEtVUkwmIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6dXJsKCkgY29uc3QKK2NvbnN0IFVSTCYgQ29udGVudFNlY3VyaXR5
UG9saWN5Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPnVybCgpOwogfQogCi1LVVJMIENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CitVUkwgQ29udGVudFNlY3VyaXR5UG9saWN5Ojpjb21w
bGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpOwogfQpAQCAtMTcwMSw3ICsxNzAxLDcg
QEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJv
eEZsYWdzIG1hc2spIGNvbnN0CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5lbmZvcmNl
U2FuZGJveEZsYWdzKG1hc2spOwogfQogCi1zdGF0aWMgU3RyaW5nIHN0cmlwVVJMRm9yVXNlSW5S
ZXBvcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5n
IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
QEAgLTE3MTEsNyArMTcxMSw3IEBAIHN0YXRpYyBTdHJpbmcgc3RyaXBVUkxGb3JVc2VJblJlcG9y
dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIH0KIAogI2lmIEVOQUJMRShD
U1BfTkVYVCkKLXN0YXRpYyB2b2lkIGdhdGhlclNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRE
YXRhKFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnRJbml0JiBpbml0LCBEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3QgU3RyaW5nJiBlZmZlY3Rp
dmVEaXJlY3RpdmUsIGNvbnN0IEtVUkwmIGJsb2NrZWRVUkwsIGNvbnN0IFN0cmluZyYgaGVhZGVy
KQorc3RhdGljIHZvaWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2Vj
dXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudEluaXQmIGluaXQsIERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVj
dGl2ZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBTdHJpbmcmIGhlYWRlcikKIHsKICAg
ICBpbml0LmRvY3VtZW50VVJJID0gZG9jdW1lbnQtPnVybCgpLnN0cmluZygpOwogICAgIGluaXQu
cmVmZXJyZXIgPSBkb2N1bWVudC0+cmVmZXJyZXIoKTsKQEAgLTE3MjksMTQgKzE3MjksMTQgQEAg
c3RhdGljIHZvaWQgZ2F0aGVyU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudERhdGEoU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudEkKICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxG
cmFtZSA9IGdldEZpcnN0Tm9uTmF0aXZlRnJhbWUoc3RhY2spOwogCiAgICAgaWYgKGNhbGxGcmFt
ZS5saW5lTnVtYmVyKCkpIHsKLSAgICAgICAgS1VSTCBzb3VyY2UgPSBLVVJMKFBhcnNlZFVSTFN0
cmluZywgY2FsbEZyYW1lLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgVVJMIHNvdXJjZSA9IFVSTChQ
YXJzZWRVUkxTdHJpbmcsIGNhbGxGcmFtZS5zb3VyY2VVUkwoKSk7CiAgICAgICAgIGluaXQuc291
cmNlRmlsZSA9IHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1lbnQsIHNvdXJjZSk7CiAgICAg
ICAgIGluaXQubGluZU51bWJlciA9IGNhbGxGcmFtZS5saW5lTnVtYmVyKCk7CiAgICAgfQogfQog
I2VuZGlmCiAKLXZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29u
c3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2
ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVzc2FnZSwgY29uc3QgS1VSTCYgYmxvY2tlZFVSTCwg
Y29uc3QgVmVjdG9yPEtVUkw+JiByZXBvcnRVUklzLCBjb25zdCBTdHJpbmcmIGhlYWRlciwgY29u
c3QgU3RyaW5nJiBjb250ZXh0VVJMLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRM
aW5lLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIGNvbnN0Cit2b2lkIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCwgY29uc3Qg
U3RyaW5nJiBlZmZlY3RpdmVEaXJlY3RpdmUsIGNvbnN0IFN0cmluZyYgY29uc29sZU1lc3NhZ2Us
IGNvbnN0IFVSTCYgYmxvY2tlZFVSTCwgY29uc3QgVmVjdG9yPFVSTD4mIHJlcG9ydFVSSXMsIGNv
bnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwsIGNvbnN0IFdURjo6
T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkgY29uc3QK
IHsKICAgICBsb2dUb0NvbnNvbGUoY29uc29sZU1lc3NhZ2UsIGNvbnRleHRVUkwsIGNvbnRleHRM
aW5lLCBzdGF0ZSk7CiAKQEAgLTE3ODksNyArMTc4OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBjb25z
dCBTCiAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgY2FsbEZyYW1lID0gZ2V0Rmlyc3RO
b25OYXRpdmVGcmFtZShzdGFjayk7CiAKICAgICAgICAgaWYgKGNhbGxGcmFtZS5saW5lTnVtYmVy
KCkpIHsKLSAgICAgICAgICAgIEtVUkwgc291cmNlID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGNh
bGxGcmFtZS5zb3VyY2VVUkwoKSk7CisgICAgICAgICAgICBVUkwgc291cmNlID0gVVJMKFBhcnNl
ZFVSTFN0cmluZywgY2FsbEZyYW1lLnNvdXJjZVVSTCgpKTsKICAgICAgICAgICAgIGNzcFJlcG9y
dC0+c2V0U3RyaW5nKCJzb3VyY2UtZmlsZSIsIHN0cmlwVVJMRm9yVXNlSW5SZXBvcnQoZG9jdW1l
bnQsIHNvdXJjZSkpOwogICAgICAgICAgICAgY3NwUmVwb3J0LT5zZXROdW1iZXIoImxpbmUtbnVt
YmVyIiwgY2FsbEZyYW1lLmxpbmVOdW1iZXIoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDljZGFhNzhhOWE3YTVkZDkzZTZj
YjE3Yzk4YTc2NDYzZGZkNTM2YTUuLjJlYTg4ZjIzM2QzOTdmMTBmMGQzZTgzY2Q5NDA5MWM1NzYx
MWNmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaApA
QCAtMjYsNyArMjYsNyBAQAogI2lmbmRlZiBDb250ZW50U2VjdXJpdHlQb2xpY3lfaAogI2RlZmlu
ZSBDb250ZW50U2VjdXJpdHlQb2xpY3lfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtOTIsMTkgKzkyLDE5IEBAIHB1
YmxpYzoKICAgICBib29sIGFsbG93SW5saW5lU2NyaXB0KGNvbnN0IFN0cmluZyYgY29udGV4dFVS
TCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwgUmVwb3J0aW5nU3RhdHVz
ID0gU2VuZFJlcG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0lubGluZVN0eWxlKGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
UmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CiAgICAgYm9vbCBhbGxvd0V2YWwo
SlNDOjpFeGVjU3RhdGUqID0gMCwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7
Ci0gICAgYm9vbCBhbGxvd1NjcmlwdE5vbmNlKGNvbnN0IFN0cmluZyYgbm9uY2UsIGNvbnN0IFN0
cmluZyYgY29udGV4dFVSTCwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSwg
Y29uc3QgS1VSTCYgPSBLVVJMKCkpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dQbHVnaW5UeXBlKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiB0eXBlQXR0cmlidXRlLCBjb25zdCBLVVJM
JiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0KLSAgICBib29sIGFsbG93
U2NyaXB0RnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9y
dCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgS1VSTCYsIFJl
cG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dDaGlsZEZy
YW1lRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkg
Y29uc3Q7Ci0gICAgYm9vbCBhbGxvd0ltYWdlRnJvbVNvdXJjZShjb25zdCBLVVJMJiwgUmVwb3J0
aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNv
dXJjZShjb25zdCBLVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0g
ICAgYm9vbCBhbGxvd0ZvbnRGcm9tU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMg
PSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93TWVkaWFGcm9tU291cmNlKGNvbnN0
IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKLSAgICBib29sIGFs
bG93Q29ubmVjdFRvU291cmNlKGNvbnN0IEtVUkwmLCBSZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVw
b3J0KSBjb25zdDsKLSAgICBib29sIGFsbG93Rm9ybUFjdGlvbihjb25zdCBLVVJMJiwgUmVwb3J0
aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7Ci0gICAgYm9vbCBhbGxvd0Jhc2VVUkkoY29u
c3QgS1VSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRl
eHRVUkwsIGNvbnN0IFdURjo6T3JkaW5hbE51bWJlciYgY29udGV4dExpbmUsIGNvbnN0IFVSTCYg
PSBVUkwoKSkgY29uc3Q7CisgICAgYm9vbCBhbGxvd1BsdWdpblR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIHR5cGVBdHRyaWJ1dGUsIGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0
YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworCisgICAgYm9vbCBhbGxvd1NjcmlwdEZyb21Tb3Vy
Y2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7CisgICAg
Ym9vbCBhbGxvd09iamVjdEZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0g
U2VuZFJlcG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVGcm9tU291cmNlKGNv
bnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dJbWFnZUZyb21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJl
cG9ydCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd1N0eWxlRnJvbVNvdXJjZShjb25zdCBVUkwmLCBS
ZXBvcnRpbmdTdGF0dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Rm9udEZy
b21Tb3VyY2UoY29uc3QgVVJMJiwgUmVwb3J0aW5nU3RhdHVzID0gU2VuZFJlcG9ydCkgY29uc3Q7
CisgICAgYm9vbCBhbGxvd01lZGlhRnJvbVNvdXJjZShjb25zdCBVUkwmLCBSZXBvcnRpbmdTdGF0
dXMgPSBTZW5kUmVwb3J0KSBjb25zdDsKKyAgICBib29sIGFsbG93Q29ubmVjdFRvU291cmNlKGNv
bnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dGb3JtQWN0aW9uKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1cyA9IFNlbmRSZXBvcnQp
IGNvbnN0OworICAgIGJvb2wgYWxsb3dCYXNlVVJJKGNvbnN0IFVSTCYsIFJlcG9ydGluZ1N0YXR1
cyA9IFNlbmRSZXBvcnQpIGNvbnN0OwogCiAgICAgUmVmbGVjdGVkWFNTRGlzcG9zaXRpb24gcmVm
bGVjdGVkWFNTRGlzcG9zaXRpb24oKSBjb25zdDsKIApAQCAtMTI0LDEyICsxMjQsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVwb3J0SW52YWxpZFJlZmxlY3RlZFhTUyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICB2b2lkIHJlcG9ydE1pc3NpbmdSZXBvcnRVUkkoY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAgICAgdm9pZCByZXBvcnRVbnN1cHBvcnRlZERpcmVjdGl2ZShjb25zdCBTdHJpbmcmKSBj
b25zdDsKLSAgICB2b2lkIHJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRl
eHQsIGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlRGlyZWN0aXZlLCBjb25zdCBTdHJpbmcmIGNvbnNv
bGVNZXNzYWdlLCBjb25zdCBLVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8S1VSTD4mIHJl
cG9ydFVSSXMsIGNvbnN0IFN0cmluZyYgaGVhZGVyLCBjb25zdCBTdHJpbmcmIGNvbnRleHRVUkwg
PSBTdHJpbmcoKSwgY29uc3QgV1RGOjpPcmRpbmFsTnVtYmVyJiBjb250ZXh0TGluZSA9IFdURjo6
T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKSwgSlNDOjpFeGVjU3RhdGUqID0gMCkgY29uc3Q7
CisgICAgdm9pZCByZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0LCBj
b25zdCBTdHJpbmcmIGVmZmVjdGl2ZURpcmVjdGl2ZSwgY29uc3QgU3RyaW5nJiBjb25zb2xlTWVz
c2FnZSwgY29uc3QgVVJMJiBibG9ja2VkVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgcmVwb3J0VVJJ
cywgY29uc3QgU3RyaW5nJiBoZWFkZXIsIGNvbnN0IFN0cmluZyYgY29udGV4dFVSTCA9IFN0cmlu
ZygpLCBjb25zdCBXVEY6Ok9yZGluYWxOdW1iZXImIGNvbnRleHRMaW5lID0gV1RGOjpPcmRpbmFs
TnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBKU0M6OkV4ZWNTdGF0ZSogPSAwKSBjb25zdDsKIAogICAg
IHZvaWQgcmVwb3J0QmxvY2tlZFNjcmlwdEV4ZWN1dGlvblRvSW5zcGVjdG9yKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0aXZlVGV4dCkgY29uc3Q7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsK
LSAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIGNvbnN0IFVS
TCYgdXJsKCkgY29uc3Q7CisgICAgVVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogICAgIHZvaWQg
ZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MpIGNvbnN0OwogICAgIFN0cmluZyBldmFs
RGlzYWJsZWRFcnJvck1lc3NhZ2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDbGllbnQuaAppbmRleCAxMjg2ZWNmZTg0MDhlMmM4ZDc5MzdkMWJiZWE2OGI2NDgxMjMyMDVl
Li4yM2QzYTVhYTY5OWY0MzE5YmZjN2NiMTFkODNhY2NmMGUzN2M1MmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBDb250ZXh0TWVudUl0ZW07CiAgICAgY2xhc3MgRnJhbWU7CiAg
ICAgY2xhc3MgSGl0VGVzdFJlc3VsdDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsK
IAogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC01Miw3ICs1
Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKSA9
IDA7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkg
PSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDNhZDY3NzczOTU1Zjc0YmM5
MmIwM2JhNzVlYWUzYzE2YTJiZjExMWMuLmFhOTNmNzUyYmY2Mzc4ZGI2N2U1YzQyY2E0OTQzYTFm
YmJjMDk5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6c2hv
d0NvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKIH0KIAotc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQs
IEZyYW1lKiBmcmFtZSkKK3N0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJMJiB1cmxU
b0xvYWQsIEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoUGFnZSogb2xkUGFnZSA9IGZyYW1lLT5w
YWdlKCkpIHsKICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+
bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKIAogICAgIGlmICghbV9oaXRUZXN0UmVz
dWx0LmlzQ29udGVudEVkaXRhYmxlKCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXImIGxvYWRlciA9
IGZyYW1lLT5sb2FkZXIoKTsKLSAgICAgICAgS1VSTCBsaW5rVVJMID0gbV9oaXRUZXN0UmVzdWx0
LmFic29sdXRlTGlua1VSTCgpOworICAgICAgICBVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwoKTsKICAgICAgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgaWYgKGxvYWRlci5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdChsaW5rVVJMKSkpIHsKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKE9wZW5MaW5r
SXRlbSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC04MzQsNyArODM0LDcgQEAgdm9pZCBDb250
ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAgICAgIGFwcGVuZEl0ZW0oQ29w
eUxpbmtJdGVtLCBtX2NvbnRleHRNZW51LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIEtV
UkwgaW1hZ2VVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOworICAgICAg
ICBVUkwgaW1hZ2VVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVJbWFnZVVSTCgpOwogICAg
ICAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKCpzZXBhcmF0b3JJdGVtKCks
IG1fY29udGV4dE1lbnUuZ2V0KCkpOwpAQCAtODQ4LDcgKzg0OCw3IEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpwb3B1bGF0ZSgpCiAjZW5kaWYKICAgICAgICAgfQogCi0gICAgICAgIEtV
UkwgbWVkaWFVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOworICAgICAg
ICBVUkwgbWVkaWFVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVNZWRpYVVSTCgpOwogICAg
ICAgICBpZiAoIW1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFsaW5rVVJM
LmlzRW1wdHkoKSB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGFwcGVu
ZEl0ZW0oKnNlcGFyYXRvckl0ZW0oKSwgbV9jb250ZXh0TWVudS5nZXQoKSk7CkBAIC05OTEsNyAr
OTkxLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OnBvcHVsYXRlKCkKICAgICAgICAg
fQogCiAgICAgICAgIEZyYW1lTG9hZGVyJiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7Ci0gICAg
ICAgIEtVUkwgbGlua1VSTCA9IG1faGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKKyAg
ICAgICAgVVJMIGxpbmtVUkwgPSBtX2hpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CiAg
ICAgICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChsb2FkZXIu
Y2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobGlua1VSTCkpKSB7CiAg
ICAgICAgICAgICAgICAgYXBwZW5kSXRlbShPcGVuTGlua0l0ZW0sIG1fY29udGV4dE1lbnUuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5UG9saWN5LmNwcAppbmRleCAwMGM3
NmVlMDA3MjBlNGY2MDE1OGU2YmE2YWI0NGJiN2RmYzE5MzQyLi43YTI2NGVlNGEyN2Q3Mjg1ODkw
ZmEyNmZkZGE2YWJkYzhmYWVkMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlY3VyaXR5
UG9saWN5LmNwcApAQCAtNDgsMjIgKzQ4LDIyIEBAIGJvb2wgaXNQb2xpY3lBY3RpdmVJbkNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICByZXR1cm4gY29udGV4dC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmlzQWN0aXZlKCk7CiB9CiAKLXRlbXBsYXRlPGJvb2wg
KENvbnRlbnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFR5cGUpKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IEtVUkwmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGlu
Z1N0YXR1cykgY29uc3Q+Cit0ZW1wbGF0ZTxib29sIChDb250ZW50U2VjdXJpdHlQb2xpY3k6Oiph
bGxvd1dpdGhUeXBlKShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmLCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1cykgY29uc3Q+CiBib29sIGlzQWxs
b3dlZFdpdGhUeXBlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIWlzUG9saWN5QWN0aXZlSW5Db250ZXh0KGNvbnRleHQpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiAoY29udGV4dC0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBLVVJMKCksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6U3VwcHJlc3NSZXBvcnQpOworICAgIHJldHVybiAoY29udGV4dC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPiphbGxvd1dpdGhUeXBlKSh0eXBlLCB0eXBlLCBVUkwoKSwg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpTdXBwcmVzc1JlcG9ydCk7CiB9CiAKLXRlbXBsYXRlPGJv
b2wgKENvbnRlbnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgS1VSTCYsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0aW5nU3RhdHVzKSBjb25zdD4KK3RlbXBsYXRlPGJv
b2wgKENvbnRlbnRTZWN1cml0eVBvbGljeTo6KmFsbG93V2l0aFVSTCkoY29uc3QgVVJMJiwgQ29u
dGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnRpbmdTdGF0dXMpIGNvbnN0PgogYm9vbCBpc0FsbG93
ZWRXaXRoVVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dXJsKQogewogICAgIGlmICghaXNQb2xpY3lBY3RpdmVJbkNvbnRleHQoY29udGV4dCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgS1VSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0
ZVVSTCh1cmwpOworICAgIFVSTCBwYXJzZWRVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwp
OwogICAgIGlmICghcGFyc2VkVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBGSVhNRTogRmlndXJlIG91dCBob3cgdG8gdGhyb3cgYSBKYXZhU2NyaXB0IGVycm9yLgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMTQ5NjNlYmJmMWJiMWUzYTkxMzdiZjg4N2Zh
MTEzNjE1NmMxNDUzYy4uNTAzMzgwMTY2MjIxYjFjNmRmNWIzODgwMWI5YTBjZjAwODY3YTkzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUg
IkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnkuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIK
ICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgpAQCAtMTc2OSw3ICsxNzY5LDcgQEAgdm9pZCBE
T01XaW5kb3c6OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBET01XaW5kb3cq
IGFjdGl2ZVdpbmRvdywgRE8KICAgICBpZiAoIWZpcnN0RnJhbWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEtVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAoY29tcGxldGVkVVJMLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQgRE9N
V2luZG93OjpwcmludEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIFN0cmlu
ZyBET01XaW5kb3c6OmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKERPTVdpbmRvdyogYWN0
aXZlV2luZG93KQogewotICAgIGNvbnN0IEtVUkwmIGFjdGl2ZVdpbmRvd1VSTCA9IGFjdGl2ZVdp
bmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiBhY3RpdmVXaW5kb3dVUkwg
PSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmIChhY3RpdmVXaW5kb3dV
UkwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMTgwNiw4ICsxODA2
LDggQEAgU3RyaW5nIERPTVdpbmRvdzo6Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoRE9N
V2luZG93KiBhY3RpdmVXaW5kb3cpCiAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZy
YW1lIHdpdGggb3JpZ2luIFwiIiArIGFjdGl2ZU9yaWdpbi0+dG9TdHJpbmcoKSArICJcIiBmcm9t
IGFjY2Vzc2luZyBhIGZyYW1lIHdpdGggb3JpZ2luIFwiIiArIHRhcmdldE9yaWdpbi0+dG9TdHJp
bmcoKSArICJcIi4gIjsKIAogICAgIC8vIFNhbmRib3ggZXJyb3JzOiBVc2UgdGhlIG9yaWdpbiBv
ZiB0aGUgZnJhbWVzJyBsb2NhdGlvbiwgcmF0aGVyIHRoYW4gdGhlaXIgYWN0dWFsIG9yaWdpbiAo
c2luY2Ugd2Uga25vdyB0aGF0IGF0IGxlYXN0IG9uZSB3aWxsIGJlICJudWxsIikuCi0gICAgS1VS
TCBhY3RpdmVVUkwgPSBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPnVybCgpOwotICAgIEtVUkwg
dGFyZ2V0VVJMID0gZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIGFjdGl2ZVVSTCA9IGFjdGl2
ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHRhcmdldFVSTCA9IGRvY3VtZW50
KCktPnVybCgpOwogICAgIGlmIChkb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94T3JpZ2lu
KSB8fCBhY3RpdmVXaW5kb3ctPmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4p
KSB7CiAgICAgICAgIG1lc3NhZ2UgPSAiQmxvY2tlZCBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoYWN0aXZlVVJMKS0+dG9TdHJpbmcoKSArICJcIiBmcm9tIGFjY2Vzc2lu
ZyBhIGZyYW1lIGF0IFwiIiArIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGFyZ2V0VVJMKS0+dG9T
dHJpbmcoKSArICJcIi4gIjsKICAgICAgICAgaWYgKGRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNh
bmRib3hPcmlnaW4pICYmIGFjdGl2ZVdpbmRvdy0+ZG9jdW1lbnQoKS0+aXNTYW5kYm94ZWQoU2Fu
ZGJveE9yaWdpbikpCkBAIC0xODYyLDcgKzE4NjIsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBET01X
aW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWlj
UwogewogICAgIEZyYW1lKiBhY3RpdmVGcmFtZSA9IGFjdGl2ZVdpbmRvdy0+ZnJhbWUoKTsKIAot
ICAgIEtVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9IHVybFN0cmluZy5pc0Vt
cHR5KCkgPyBVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSA6IGZpcnN0RnJhbWUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCFjb21wbGV0ZWRV
UkwuaXNFbXB0eSgpICYmICFjb21wbGV0ZWRVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgIC8vIERv
bid0IGV4cG9zZSBjbGllbnQgY29kZSB0byBpbnZhbGlkIFVSTHMuCiAgICAgICAgIGFjdGl2ZVdp
bmRvdy0+cHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0byBvcGVuIGEgd2luZG93IHdpdGggaW52
YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5nKCkgKyAiJy5cbiIpOwpAQCAtMTk0MCw3
ICsxOTQwLDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IERPTVdpbmRvdzo6b3Blbihjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAgaWYgKCFhY3RpdmVE
b2N1bWVudC0+Y2FuTmF2aWdhdGUodGFyZ2V0RnJhbWUpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICAgICAgS1VSTCBjb21wbGV0ZWRVUkwgPSBmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmxTdHJpbmcpOworICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZmlyc3RG
cmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAogICAgICAgICBpZiAo
dGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNj
ZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKICAgICAgICAgICAgIHJldHVybiB0YXJn
ZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApp
bmRleCA0ZGVhMTk5M2I2ODM3YTQ5NGRjNjE4ZmJhYmFhZGRkYWQzYTJhY2RlLi44ODNlYmUyNzNi
YzRmZTg5MDk0MzI0NmI3ODI4MWQ0N2RlNjdkNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
QEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlci5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiRnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggZmJiNmExZTYwNGNhYzI0OGQ2MDlmZGJiNGNkNWNm
NWI0ZDgzNGQ3OC4uNzk0MjI3YTdiNjExZDMyZGZiY2JjZjBmYzFlZWRlNmExY2Y1YTA1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc0MiwxMiArNzQyLDEyIEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3Rh
dGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQg
ZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0
IGEgZHJhZyBvbgogICAgICAgICAvLyBzb21ldGhpbmcgdGhhdCdzIG5vdCBhY3R1YWxseSB1bmRl
ciB0aGUgZHJhZyBvcmlnaW4uCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBLVVJMIGxpbmtV
UkwgPSBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCgpOwotICAgIEtVUkwgaW1hZ2VVUkwg
PSBoaXRUZXN0UmVzdWx0LmFic29sdXRlSW1hZ2VVUkwoKTsKKyAgICBVUkwgbGlua1VSTCA9IGhp
dFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgVVJMIGltYWdlVVJMID0gaGl0VGVz
dFJlc3VsdC5hYnNvbHV0ZUltYWdlVVJMKCk7CiAKICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQ
b2ludCA9IHNyYy0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigp
KTsKIAotICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IEtVUkwoKTsKKyAgICBtX2RyYWdnaW5nSW1h
Z2VVUkwgPSBVUkwoKTsKICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKIAogICAg
IERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oCmluZGV4IDI4MDM4OWY1NDFiYjI0ZjAxOTBlZGY5ZTMxNjA3MWE0MTUxMDU2YmYuLjNjNjkx
MjhiNDU0MjM2NWYzNTM1NmI2Y2M0ODFmNDI1NDMxOGJlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJEcmFnQWN0aW9ucy5o
IgogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldERpZElu
aXRpYXRlRHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRl
ZDsgfSAKICAgICAgICAgYm9vbCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2Rp
ZEluaXRpYXRlRHJhZzsgfQogICAgICAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KLSAgICAgICAgY29u
c3QgS1VSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFn
ZVVSTDsgfQorICAgICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNv
bnN0IEludFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgICAg
IGNvbnN0IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0
OyB9CiAgICAgICAgIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQpAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkb0ltYWdlRHJhZyhFbGVtZW50KiwgY29uc3QgSW50
UG9pbnQmLCBjb25zdCBJbnRSZWN0JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBJbnRQb2ludCYpOwog
ICAgICAgICB2b2lkIGRvU3lzdGVtRHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50Jiwg
Y29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wgZm9yTGluayk7CiAgICAg
ICAgIHZvaWQgY2xlYW51cEFmdGVyU3lzdGVtRHJhZygpOwotICAgICAgICB2b2lkIGRlY2xhcmVB
bmRXcml0ZURyYWdJbWFnZShDbGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgbGFiZWwpOworICAgICAgICB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShD
bGlwYm9hcmQqLCBFbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCk7CiAK
ICAgICAgICAgUGFnZSYgbV9wYWdlOwogICAgICAgICBEcmFnQ2xpZW50JiBtX2NsaWVudDsKQEAg
LTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9kaWRJ
bml0aWF0ZURyYWc7CiAgICAgICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9u
OyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93
biB3aXRoaW4gV2ViS2l0CiAgICAgICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKLSAgICAgICAg
S1VSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CisgICAgICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7
CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBhZGU1ZmM2
ZDI3ZDRkOTgzZjA2M2IwMDA4Y2YyOGI0ZjVjMjljZjQ5Li41OTI4YzBlZGNiZWNiZjFhY2NlOTdl
MDc1NzE4ODA5YTkyNDY1ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAt
NTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcg
bG9uZyBFdmVudFNvdXJjZTo6ZGVmYXVsdFJlY29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5l
IEV2ZW50U291cmNlOjpFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkKK2lu
bGluZSBFdmVudFNvdXJjZTo6RXZlbnRTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IERpY3Rpb25hcnkmIGV2ZW50U291cmNlSW5pdCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV91cmwodXJsKQogICAgICwg
bV93aXRoQ3JlZGVudGlhbHMoZmFsc2UpCkBAIC04MCw3ICs4MCw3IEBAIFBhc3NSZWZQdHI8RXZl
bnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEtVUkwgZnVsbFVSTCA9
IGNvbnRleHQtPmNvbXBsZXRlVVJMKHVybCk7CisgICAgVVJMIGZ1bGxVUkwgPSBjb250ZXh0LT5j
b21wbGV0ZVVSTCh1cmwpOwogICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuaAppbmRleCA5N2U3YzEwMGYxYTcxOGM5M2YzZmI2Mjk5MWVlZTk4YWJjZGQ5M2UzLi43NDc3
ZTZmMjFkNGU3ZWU0MGFmZjM0ZjhlNGM3YjQ2YTA4M2ZlNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgotICAgIEV2ZW50U291cmNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgRGljdGlvbmFyeSYpOwor
ICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBjb25z
dCBEaWN0aW9uYXJ5Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVS
UklERSBGSU5BTCB7IHJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBPVkVSUklERSBGSU5BTCB7IGRlcmVmKCk7IH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcGFyc2VFdmVudFN0cmVhbUxpbmUodW5zaWduZWQgcG9zLCBpbnQgZmllbGRM
ZW5ndGgsIGludCBsaW5lTGVuZ3RoKTsKICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlTWVzc2FnZUV2ZW50KCk7CiAKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAg
ICBib29sIG1fd2l0aENyZWRlbnRpYWxzOwogICAgIFN0YXRlIG1fc3RhdGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggNGQ4OGY3ZDc3ZjliNTcxM2FmZDYzNDU4OWQzOTI1NzkyMjNhOWMxZi4u
MWRkYWI1M2UwOGUwZDU1NzlmNWZkN2U3NzY5ZjlkZTI2NDEwZGRlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTk0OCw3ICs5NDgsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQogfQogI2VuZGlmCiAKLWJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Citib29sIEZyYW1lOjppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgLy8gV2UgYWxsb3cgb25lIGxldmVsIG9mIHNlbGYtcmVmZXJlbmNl
IGJlY2F1c2Ugc29tZSBzaXRlcyBkZXBlbmQgb24gdGhhdCwKICAgICAvLyBidXQgd2UgZG9uJ3Qg
YWxsb3cgbW9yZSB0aGFuIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCA2MjRjYmE3MGQ4YWZmMDk5
M2I1MjZlMGI1NTc0NWQ4ZmZmMDEyMDlhLi4yYmExYTlhZmEyMTI4Njc4ZTZhNjA5MzY5ZTA0ZDMz
ZGMyYzUyOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCk7CiAgICAgICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5k
ZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVu
ZGVkQ291bnQgPiAwOyB9CiAKLSAgICAgICAgYm9vbCBpc1VSTEFsbG93ZWQoY29uc3QgS1VSTCYp
IGNvbnN0OworICAgICAgICBib29sIGlzVVJMQWxsb3dlZChjb25zdCBVUkwmKSBjb25zdDsKIAog
ICAgIC8vID09PT09PT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCAxYTJhMmNi
ZWYxNTJlOWNmZTNiNjExYTUzMDJjYjEyNGMxY2QxM2Q1Li40YzkxNDMyMDZjM2I5OWU0YzUzYTZh
YWJiMGU3YjM1Mzg2ZjYyMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xODI0
LDcgKzE4MjQsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVzdG9yZVNjcm9sbGJhcigpCiAgICAgc2V0
U2Nyb2xsYmFyc1N1cHByZXNzZWQoZmFsc2UpOwogfQogCi1ib29sIEZyYW1lVmlldzo6c2Nyb2xs
VG9GcmFnbWVudChjb25zdCBLVVJMJiB1cmwpCitib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9GcmFn
bWVudChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJZiBvdXIgVVJMIGhhcyBubyByZWYsIHRo
ZW4gd2UgaGF2ZSBubyBwbGFjZSB3ZSBuZWVkIHRvIGp1bXAgdG8uCiAgICAgLy8gT1RPSCBJZiBD
U1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlvdXNseSwgd2Ugd2FudCB0byBzZXQgaXQgdG8gMCwgcmVj
YWxjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCAwM2ZjMjIyNjFmNWM5MDc1YzhiYjlkYTI2
ODE3ZjZjNTc3NTQzMDYzLi40Y2M3ZjY3MWViYjc2NTZhZTgyOTY1ZmE1ZDY3NmRiZWM4YjhhODcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgRXZlbnQ7
CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFJlbmRlckJveDsKQEAgLTMyNSw3ICszMjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gTk8g
T1RIRVIgUExBVEZPUk0gQkVTSURFUyBNQUMgU0hPVUxEIFVTRSBUSElTIE1FVEhPRC4KICAgICB2
b2lkIGFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0KiBuZXdCb3R0b20sIGZsb2F0IG9s
ZFRvcCwgZmxvYXQgb2xkQm90dG9tLCBmbG9hdCBib3R0b21MaW1pdCk7CiAKLSAgICBib29sIHNj
cm9sbFRvRnJhZ21lbnQoY29uc3QgS1VSTCYpOworICAgIGJvb2wgc2Nyb2xsVG9GcmFnbWVudChj
b25zdCBVUkwmKTsKICAgICBib29sIHNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5jaG9yKE5vZGUqKTsKICAgICB2b2lkIHNj
cm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCosIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwCmluZGV4IDI1YzFmZTRiMDViNmRjMjhjMzAyYWJjY2VhYjc4MDc1NmU3MTY2MmMu
LmQzZTMxNjQxY2NiNjY1YjcwMWU5OThlY2FjZDRhMTkwMjUzY2FiMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9I
aXN0b3J5LmNwcApAQCAtMTI3LDEzICsxMjcsMTMgQEAgdm9pZCBIaXN0b3J5OjpnbyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFuY2UpCiAgICAgbV9mcmFtZS0+bmF2
aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oZGlzdGFuY2UpOwog
fQogCi1LVVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQor
VVJMIEhpc3Rvcnk6OnVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAg
IEtVUkwgYmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsKKyAgICBVUkwg
YmFzZVVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsKICAgICBpZiAodXJsU3Ry
aW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2VVUkw7CiAKLSAgICByZXR1cm4gS1VS
TChiYXNlVVJMLCB1cmxTdHJpbmcpOworICAgIHJldHVybiBVUkwoYmFzZVVSTCwgdXJsU3RyaW5n
KTsKIH0KIAogdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgU3RhdGVPYmplY3RUeXBlIHN0YXRlT2JqZWN0VHlwZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVk
KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHIKICAgICBp
ZiAoIW1fZnJhbWUgfHwgIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIEtVUkwgZnVsbFVSTCA9IHVybEZvclN0YXRlKHVybFN0cmluZyk7CisgICAgVVJMIGZ1bGxV
UkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwogICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkg
fHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoZnVs
bFVSTCkpIHsKICAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9IaXN0b3J5LmgKaW5kZXggY2E5NzZhOTZjNzE2MGY0MGZiMzEzMDg0NDQyMmQzYWIzYTY4
ZTNjYi4uODBiNjhkNmM1MmE3MDhkZDk2ODQ4NGY3NGVjNDBjOGE1ZTQyZjA0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9IaXN0b3J5LmgKQEAgLTI3LDkgKzI3LDkgQEAKICNkZWZpbmUgSGlzdG9yeV9oCiAKICNpbmNs
dWRlICJET01XaW5kb3dQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY2LDcgKzY2LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIaXN0b3J5KEZyYW1lKik7CiAKLSAg
ICBLVVJMIHVybEZvclN0YXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBVUkwgdXJsRm9yU3Rh
dGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHN0YXRlSW50ZXJuYWwoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Mb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcApp
bmRleCBkODQzNDc4YTZiMTg3OWFiZjc2ZjBhZDVkNWZlNGE0NmI4Y2JjZTQ3Li5iNzViMWY4NDlm
NTk3N2FiYjhmYmY1YWYzY2U4ZDYzMGE1YzU3Mjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNw
cApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ0LDExICs0NCwxMSBAQCBMb2NhdGlvbjo6TG9jYXRpb24oRnJhbWUq
IGZyYW1lKQogewogfQogCi1pbmxpbmUgY29uc3QgS1VSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0
CitpbmxpbmUgY29uc3QgVVJMJiBMb2NhdGlvbjo6dXJsKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
bV9mcmFtZSk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwog
ICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVz
ZSAiYWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3
ZSBoYXZlIGEgZnJhbWUpLgogCkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBMb2NhdGlvbjo6aG9z
dCgpIGNvbnN0CiAKICAgICAvLyBOb3RlOiB0aGlzIGlzIHRoZSBJRSBzcGVjLiBUaGUgTlMgc3Bl
YyBzd2FwcyB0aGUgdHdvLCBpdCBzYXlzCiAgICAgLy8gIlRoZSBob3N0bmFtZSBwcm9wZXJ0eSBp
cyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgaG9zdCBhbmQgcG9ydCBwcm9wZXJ0aWVzLCBzZXBh
cmF0ZWQgYnkgYSBjb2xvbi4iCi0gICAgY29uc3QgS1VSTCYgdXJsID0gdGhpcy0+dXJsKCk7Cisg
ICAgY29uc3QgVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKICAgICByZXR1cm4gdXJsLmhhc1BvcnQo
KSA/IHVybC5ob3N0KCkgKyAiOiIgKyBTdHJpbmc6Om51bWJlcih1cmwucG9ydCgpKSA6IHVybC5o
b3N0KCk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwb3J0KCkgY29u
c3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGNv
bnN0IEtVUkwmIHVybCA9IHRoaXMtPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gdGhpcy0+
dXJsKCk7CiAgICAgcmV0dXJuIHVybC5oYXNQb3J0KCkgPyBTdHJpbmc6Om51bWJlcih1cmwucG9y
dCgpKSA6ICIiOwogfQogCkBAIC0xMDQsNyArMTA0LDcgQEAgU3RyaW5nIExvY2F0aW9uOjpwYXRo
bmFtZSgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVy
bCA9IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucGF0aCgpLmlzRW1wdHkoKSA/ICIvIiA6
IHVybC5wYXRoKCk7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBTdHJpbmcgTG9jYXRpb246OnNl
YXJjaCgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKLSAgICBjb25zdCBLVVJMJiB1cmwgPSB0aGlzLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVy
bCA9IHRoaXMtPnVybCgpOwogICAgIHJldHVybiB1cmwucXVlcnkoKS5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogIj8iICsgdXJsLnF1ZXJ5KCk7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCB2
b2lkIExvY2F0aW9uOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sLCBET01XaW5k
b3cqIGFjdGl2ZVdpbmRvdywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJM
IHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3Rv
Y29sKHByb3RvY29sKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmlu
ZyYgaG9zdCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyogZgogewogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
OwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0KTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3Ry
aW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgTG9jYXRpb246OnNldEhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIERPTVdp
bmRvdyogYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBy
ZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9z
dG5hbWUpOwogICAgIHNldExvY2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJz
dFdpbmRvdyk7CiB9CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0UG9ydChj
b25zdCBTdHJpbmcmIHBvcnRTdHJpbmcsIERPTVdpbmRvdyogYWN0aXZlV2luZG93LCBET01XaW4K
IHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKTsKICAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAo
cG9ydCA8IDAgfHwgcG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAg
ICAgdXJsLnJlbW92ZVBvcnQoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIExvY2F0aW9uOjpz
ZXRQYXRobmFtZShjb25zdCBTdHJpbmcmIHBhdGhuYW1lLCBET01XaW5kb3cqIGFjdGl2ZVdpbmRv
dywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKICAgICBzZXRM
b2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAt
MjA2LDcgKzIwNiw3IEBAIHZvaWQgTG9jYXRpb246OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHNl
YXJjaCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdpbmRvCiB7CiAgICAgaWYgKCFtX2Zy
YW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAg
dXJsLnNldFF1ZXJ5KHNlYXJjaCk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3Rp
dmVXaW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIExvY2F0
aW9uOjpzZXRIYXNoKGNvbnN0IFN0cmluZyYgaGFzaCwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyogZgogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAg
IEtVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZp
ZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRl
bnRpZmllciA9IGhhc2g7CiAgICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5oCmluZGV4IGI0ZjlhNGMxNzkwY2QzZTNjZWIzN2JkMDU1NmRkM2E1ZTI1YjBiMzUuLjk1YjA3
Zjk1NzUwMDlkNWRhYzllNDkzOWQ4MGY0ODlhOWVhZTI3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9u
LmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBET01XaW5k
b3c7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7CiAKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiwgRE9NV2luZG93KiBhY3RpdmVXaW5kb3csIERPTVdp
bmRvdyogZmlyc3RXaW5kb3cpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CisgICAg
Y29uc3QgVVJMJiB1cmwoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IDgzNmMzNDcyODdiMDY3Y2MwZTdhNzk3NjU1ZDRiYWZhZDI5YzA3
YzMuLjg1ODVjYjIzYzg2NjZhZTM4MGVkZjUwMTBiNGIzMzJmYzk3MDA5NGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtOTY2LDcgKzk2Niw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBFdmVudHVhbGx5IHdlIHdpbGwgbW92ZSB0
byBhIG1vZGVsIG9mIGp1c3QgYmVpbmcgaGFuZGVkIHRoZSBzaGVldAogICAgIC8vIHRleHQgaW5z
dGVhZCBvZiBsb2FkaW5nIHRoZSBVUkwgb3Vyc2VsdmVzLgotICAgIEtVUkwgdXJsID0gbV9zZXR0
aW5ncy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOworICAgIFVSTCB1cmwgPSBtX3NldHRpbmdz
LT51c2VyU3R5bGVTaGVldExvY2F0aW9uKCk7CiAgICAgCiAgICAgLy8gQWxsb3cgYW55IGxvY2Fs
IGZpbGUgVVJMIHNjaGVtZSB0byBiZSBsb2FkZWQuCiAgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlR3JvdXAuY3BwCmluZGV4IDExMWRhMTgxMzZjOGM0MTQwNzMwNWI4ZjA0NWEzYTcwNDJkMTVm
NzUuLmUwYjczNDY3MTYzYjA2YzQxMjAwZmY2MTdiMDE5MmQ2OGQ3MWQwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBpbmxpbmUgdm9pZCBQYWdlR3Jv
dXA6OmFkZFZpc2l0ZWRMaW5rKExpbmtIYXNoIGhhc2gpCiAgICAgcGFnZUNhY2hlKCktPm1hcmtQ
YWdlc0ZvclZpc3RlZExpbmtTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6YWRk
VmlzaXRlZExpbmsoY29uc3QgS1VSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6OmFkZFZpc2l0ZWRM
aW5rKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghc2hvdWxkVHJhY2tWaXNpdGVkTGlua3Mp
CiAgICAgICAgIHJldHVybjsKQEAgLTI3Myw3ICsyNzMsNyBAQCBTdG9yYWdlTmFtZXNwYWNlKiBQ
YWdlR3JvdXA6OnRyYW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KQogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQogCi12b2lkIFBh
Z2VHcm91cDo6YWRkVXNlclNjcmlwdFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKK3ZvaWQgUGFnZUdyb3VwOjphZGRV
c2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgVVJMJiB1cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzKQogewpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgUGFnZUdyb3VwOjph
ZGRVc2VyU2NyaXB0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBTdHJpbmcm
IHNvdXJjCiAgICAgc2NyaXB0c0luV29ybGQtPmFwcGVuZCh1c2VyU2NyaXB0LnJlbGVhc2UoKSk7
CiB9CiAKLXZvaWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBl
cldvcmxkKiB3b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwKK3Zv
aWQgUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3
b3JsZCwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVs
aXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVk
RnJhbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyU3R5
bGVMZXZlbCBsZXZlbCwKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNl
clN0eWxlU2hlZXRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNvbnN0IFN0cmluZyYg
cwogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGVJbkFsbEZyYW1lcygp
OwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFw
cGVyV29ybGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhZ2VHcm91cDo6cmVtb3Zl
VXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBBU1NFUlRfQVJHKHdvcmxkLCB3b3JsZCk7CiAKQEAgLTMyOSw3ICszMjksNyBA
QCB2b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChET01XcmFwcGVyV29y
bGQqIHdvcmxkLCBjb25zdCBLVVJMJiB1cgogICAgICAgICBtX3VzZXJTY3JpcHRzLT5yZW1vdmUo
aXQpOwogfQogCi12b2lkIFBhZ2VHcm91cDo6cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQo
RE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBQYWdlR3JvdXA6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCogd29ybGQsIGNv
bnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUdyb3VwLmgKaW5kZXggMDM0MjE2MzkzNGFhMWU3ODcxNWQxOTg3NGM4Y2Y0YjZiYzA4
ZGNjMC4uOWExZGE4NWNhNzlkNWI0YzUyYzllZTgwZTFlOTE2MjU3ODcxZTQyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VHcm91cC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBDYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkTGlzdGVuZXI7CiAgICAgY2xhc3MgQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlczsKICNlbmRpZgotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3Mg
VVJMOwogICAgIGNsYXNzIEdyb3VwU2V0dGluZ3M7CiAgICAgY2xhc3MgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2U7CiAgICAgY2xhc3MgUGFnZTsKQEAgLTczLDcgKzczLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgaXNMaW5rVmlzaXRlZChMaW5rSGFzaCk7CiAKLSAg
ICAgICAgdm9pZCBhZGRWaXNpdGVkTGluayhjb25zdCBLVVJMJik7CisgICAgICAgIHZvaWQgYWRk
VmlzaXRlZExpbmsoY29uc3QgVVJMJik7CiAgICAgICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29u
c3QgVUNoYXIqLCBzaXplX3QpOwogICAgICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaChMaW5r
SGFzaCk7CiAgICAgICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtzKCk7CkBAIC04OSwxNiArODks
MTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0b3JhZ2VOYW1lc3BhY2UqIHRy
YW5zaWVudExvY2FsU3RvcmFnZShTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIAotICAgICAg
ICB2b2lkIGFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBLVVJMJiwKKyAgICAgICAgdm9pZCBhZGRVc2VyU2NyaXB0VG9Xb3Js
ZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hp
dGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lLCBVc2VyQ29udGVudElu
amVjdGVkRnJhbWVzKTsKLSAgICAgICAgdm9pZCBhZGRVc2VyU3R5bGVTaGVldFRvV29ybGQoRE9N
V3JhcHBlcldvcmxkKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmLAorICAgICAg
ICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0VG9Xb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBT
dHJpbmcmIHNvdXJjZSwgY29uc3QgVVJMJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsYWNrbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWwgPSBVc2VyU3R5bGVVc2VyTGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJTdHlsZUluamVjdGlvblRpbWUg
aW5qZWN0aW9uVGltZSA9IEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwotICAgICAgICB2b2lk
IHJlbW92ZVVzZXJTY3JpcHRGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgS1VSTCYp
OwotICAgICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAgdm9pZCByZW1vdmVVc2VyU2NyaXB0RnJvbVdv
cmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOworICAgICAgICB2b2lkIHJlbW92ZVVz
ZXJTdHlsZVNoZWV0RnJvbVdvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVSTCYpOwogCiAg
ICAgICAgIHZvaWQgcmVtb3ZlVXNlclNjcmlwdHNGcm9tV29ybGQoRE9NV3JhcHBlcldvcmxkKik7
CiAgICAgICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzRnJvbVdvcmxkKERPTVdyYXBwZXJX
b3JsZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCA3NWVkOWE0
YTRhYjQwM2ExMDhiMTk0NTJjNmQ0NWQ2Y2NiYjFhNDVhLi44ZDVkYWNhMDM3YWJjNjkxODY2OWQ0
ZTZiNWQ5ZGYwZmEwYmVlYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgU2VyaWFsaXplck1hcmt1cEFjY3VtdWxhdG9yOjph
cHBlbmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91dCwgRWxlCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CisgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBp
ZiAodXJsLmlzVmFsaWQoKSAmJiAhdXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNzUsNyArMTc1LDcgQEAgUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlOjpSZXNvdXJjZSgp
CiB7CiB9CiAKLVBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0
YSkKK1BhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZTo6UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhKQogICAg
IDogdXJsKHVybCkKICAgICAsIG1pbWVUeXBlKG1pbWVUeXBlKQogICAgICwgZGF0YShkYXRhKQpA
QCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShQYWdlKiBw
YWdlKQogdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQog
ewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwotICAgIEtVUkwg
dXJsID0gZG9jdW1lbnQtPnVybCgpOworICAgIFVSTCB1cmwgPSBkb2N1bWVudC0+dXJsKCk7CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpIHx8IHVybC5pc0JsYW5rVVJMKCkpIHsKICAgICAgICAgLy8g
Rm9yIGJsYW5rIGZyYW1lcyB3ZSBnZW5lcmF0ZSBhIGZha2UgVVJMIHNvIHRoZXkgY2FuIGJlIHJl
ZmVyZW5jZWQgYnkgdGhlaXIgY29udGFpbmluZyBmcmFtZS4KICAgICAgICAgdXJsID0gdXJsRm9y
QmxhbmtGcmFtZShmcmFtZSk7CkBAIC0yMzQsMTkgKzIzNCwxOSBAQCB2b2lkIFBhZ2VTZXJpYWxp
emVyOjpzZXJpYWxpemVGcmFtZShGcmFtZSogZnJhbWUpCiAKICAgICAgICAgaWYgKGlzSFRNTElt
YWdlRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1h
Z2VFbGVtZW50ID0gdG9IVE1MSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICAgICAgS1VS
TCB1cmwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1hZ2VFbGVtZW50LT5nZXRBdHRyaWJ1dGUo
SFRNTE5hbWVzOjpzcmNBdHRyKSk7CisgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGltYWdlRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3JjQXR0cikp
OwogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5j
YWNoZWRJbWFnZSgpOwogICAgICAgICAgICAgYWRkSW1hZ2VUb1Jlc291cmNlcyhjYWNoZWRJbWFn
ZSwgaW1hZ2VFbGVtZW50LT5yZW5kZXJlcigpLCB1cmwpOwogICAgICAgICB9IGVsc2UgaWYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpsaW5rVGFnKSkgewogICAgICAgICAgICAgSFRN
TExpbmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxMaW5rRWxlbWVudCo+
KGVsZW1lbnQpOwogICAgICAgICAgICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gbGlua0Vs
ZW1lbnQtPnNoZWV0KCkpIHsKLSAgICAgICAgICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5j
b21wbGV0ZVVSTChsaW5rRWxlbWVudC0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIp
KTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNvbXBsZXRlVVJMKGxpbmtF
bGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpOwogICAgICAgICAgICAg
ICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQsIHVybCk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fcmVzb3VyY2VVUkxzLmNvbnRhaW5zKHVybCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgaWYgKGlzSFRNTFN0eWxlRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAg
ICAgaWYgKENTU1N0eWxlU2hlZXQqIHNoZWV0ID0gdG9IVE1MU3R5bGVFbGVtZW50KGVsZW1lbnQp
LT5zaGVldCgpKQotICAgICAgICAgICAgICAgIHNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoc2hlZXQs
IEtVUkwoKSk7CisgICAgICAgICAgICAgICAgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChzaGVldCwg
VVJMKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBQYWdl
U2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICBzZXJpYWxp
emVGcmFtZShjaGlsZEZyYW1lKTsKIH0KIAotdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
Q1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVJMJiB1cmwp
Cit2b2lkIFBhZ2VTZXJpYWxpemVyOjpzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxlU2hl
ZXQqIHN0eWxlU2hlZXQsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZ0J1aWxkZXIgY3Nz
VGV4dDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGVTaGVldC0+bGVuZ3RoKCk7
ICsraSkgewpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgS1VSCiAgICAg
ICAgIC8vIFNvbWUgcnVsZXMgaGF2ZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW0gdGhh
dCB3ZSBuZWVkIHRvIHJldHJpZXZlLgogICAgICAgICBpZiAocnVsZS0+dHlwZSgpID09IENTU1J1
bGU6OklNUE9SVF9SVUxFKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBpbXBvcnRSdWxl
ID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KHJ1bGUpOwotICAgICAgICAgICAgS1VSTCBp
bXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVsZS0+aHJlZigpKTsKKyAg
ICAgICAgICAgIFVSTCBpbXBvcnRVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVVUkwoaW1wb3J0UnVs
ZS0+aHJlZigpKTsKICAgICAgICAgICAgIGlmIChtX3Jlc291cmNlVVJMcy5jb250YWlucyhpbXBv
cnRVUkwpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgc2VyaWFsaXpl
Q1NTU3R5bGVTaGVldChpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCksIGltcG9ydFVSTCk7CkBAIC0y
OTEsNyArMjkxLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVl
dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBLVVIKICAgICB9CiB9CiAKLXZvaWQg
UGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBS
ZW5kZXJPYmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgUGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJP
YmplY3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlz
VmFsaWQoKSB8fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm47
CkBAIC0zNDAsMTggKzM0MCwxOCBAQCB2b2lkIFBhZ2VTZXJpYWxpemVyOjpyZXRyaWV2ZVJlc291
cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogc3R5bAogCiAgICAgICAg
IENhY2hlZEltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihzdHls
ZUltYWdlKS0+Y2FjaGVkSW1hZ2UoKTsKIAotICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LT5j
b21wbGV0ZVVSTChpbWFnZS0+dXJsKCkpOworICAgICAgICBVUkwgdXJsID0gZG9jdW1lbnQtPmNv
bXBsZXRlVVJMKGltYWdlLT51cmwoKSk7CiAgICAgICAgIGFkZEltYWdlVG9SZXNvdXJjZXMoaW1h
Z2UsIDAsIHVybCk7CiAgICAgfQogfQogCi1LVVJMIFBhZ2VTZXJpYWxpemVyOjp1cmxGb3JCbGFu
a0ZyYW1lKEZyYW1lKiBmcmFtZSkKK1VSTCBQYWdlU2VyaWFsaXplcjo6dXJsRm9yQmxhbmtGcmFt
ZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgSGFzaE1hcDxGcmFtZSosIEtVUkw+OjppdGVyYXRvciBp
dGVyID0gbV9ibGFua0ZyYW1lVVJMcy5maW5kKGZyYW1lKTsKKyAgICBIYXNoTWFwPEZyYW1lKiwg
VVJMPjo6aXRlcmF0b3IgaXRlciA9IG1fYmxhbmtGcmFtZVVSTHMuZmluZChmcmFtZSk7CiAgICAg
aWYgKGl0ZXIgIT0gbV9ibGFua0ZyYW1lVVJMcy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlOwogICAgIFN0cmluZyB1cmwgPSAid3ljaXd5ZzovL2ZyYW1lLyIgKyBTdHJpbmc6Om51
bWJlcihtX2JsYW5rRnJhbWVDb3VudGVyKyspOwotICAgIEtVUkwgZmFrZVVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCk7CisgICAgVVJMIGZha2VVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogICAg
IG1fYmxhbmtGcmFtZVVSTHMuYWRkKGZyYW1lLCBmYWtlVVJMKTsKIAogICAgIHJldHVybiBmYWtl
VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCmluZGV4IDRlODE1NzllMmNmYjkw
ZjBlMzEzNmRmYWJiZTMyYmM1MDEwNzMyMTcuLjE3MzFkMzllMGIwMDczNWY4MGMyNGI2NDI5ZjE0
MWY0YWI5ZmY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTMxLDgg
KzMxLDggQEAKICNpZm5kZWYgUGFnZVNlcmlhbGl6ZXJfaAogI2RlZmluZSBQYWdlU2VyaWFsaXpl
cl9oCiAKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiS1VSTEhhc2guaCIKKyNpbmNsdWRl
ICJVUkwuaCIKKyNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4K
QEAgLTU0LDExICs1NCwxMSBAQCBjbGFzcyBTdHlsZVJ1bGU7CiBjbGFzcyBQYWdlU2VyaWFsaXpl
ciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFJlc291cmNlIHsKLSAgICAgICAgS1VSTCB1cmw7Cisg
ICAgICAgIFVSTCB1cmw7CiAgICAgICAgIFN0cmluZyBtaW1lVHlwZTsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICAgICAgUmVzb3VyY2UoKTsKLSAgICAgICAgUmVzb3Vy
Y2UoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhKTsKKyAgICAgICAgUmVzb3VyY2UoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEpOwogICAgIH07CiAKICAg
ICBleHBsaWNpdCBQYWdlU2VyaWFsaXplcihWZWN0b3I8UmVzb3VyY2U+Kik7CkBAIC02OCwyMiAr
NjgsMjIgQEAgcHVibGljOgogICAgIC8vIHZlY3RvciBpcyB0aGUgdG9wIGZyYW1lIHNlcmlhbGl6
ZWQgY29udGVudC4KICAgICB2b2lkIHNlcmlhbGl6ZShQYWdlKik7CiAKLSAgICBLVVJMIHVybEZv
ckJsYW5rRnJhbWUoRnJhbWUqKTsKKyAgICBVUkwgdXJsRm9yQmxhbmtGcmFtZShGcmFtZSopOwog
CiBwcml2YXRlOgogICAgIHZvaWQgc2VyaWFsaXplRnJhbWUoRnJhbWUqKTsKIAogICAgIC8vIFNl
cmlhbGl6ZXMgdGhlIHN0eWxlc2hlZXQgYmFjayB0byB0ZXh0IGFuZCBhZGRzIGl0IHRvIHRoZSBy
ZXNvdXJjZXMgaWYgVVJMIGlzIG5vdC1lbXB0eS4KICAgICAvLyBJdCBhbHNvIGFkZHMgYW55IHJl
c291cmNlcyBpbmNsdWRlZCBpbiB0aGF0IHN0eWxlc2hlZXQgKGluY2x1ZGluZyBhbnkgaW1wb3J0
ZWQgc3R5bGVzaGVldHMgYW5kIHRoZWlyIG93biByZXNvdXJjZXMpLgotICAgIHZvaWQgc2VyaWFs
aXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgS1VSTCYpOworICAgIHZvaWQg
c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29uc3QgVVJMJik7CiAKLSAg
ICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBSZW5kZXJPYmplY3QqLCBj
b25zdCBLVVJMJik7CisgICAgdm9pZCBhZGRJbWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiwg
UmVuZGVyT2JqZWN0KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0Zv
clByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIERvY3VtZW50Kik7CiAgICAgdm9p
ZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9jdW1lbnQqKTsKIAogICAg
IFZlY3RvcjxSZXNvdXJjZT4qIG1fcmVzb3VyY2VzOwotICAgIExpc3RIYXNoU2V0PEtVUkw+IG1f
cmVzb3VyY2VVUkxzOwotICAgIEhhc2hNYXA8RnJhbWUqLCBLVVJMPiBtX2JsYW5rRnJhbWVVUkxz
OworICAgIExpc3RIYXNoU2V0PFVSTD4gbV9yZXNvdXJjZVVSTHM7CisgICAgSGFzaE1hcDxGcmFt
ZSosIFVSTD4gbV9ibGFua0ZyYW1lVVJMczsKICAgICB1bnNpZ25lZCBtX2JsYW5rRnJhbWVDb3Vu
dGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJl
c291cmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJj
ZVRpbWluZy5jcHAKaW5kZXggNTM5ODc4ZjZmNDcwY2ZhODBiNmFiOWY4ZDAxYWNjOGE5NWRlZDc1
Mi4uZjhmZmMwY2M3OTE1YjJhYWU0ODJhZWUzNGRlOTJlZjVmNzk5MDQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRU
aW1pbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggZWQy
NDQ5MmMzNTUwMTBhOGJjZjA0YjdlYzMyN2I4ODJmOGMwYTJkOC4uNjI3Njk0NGNhMGZlNTJjYjVm
Mzc2MjE1Y2I3ZTMwZDAxNGM0OWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVJlc291cmNlVGltaW5nLmgKQEAgLTQyLDcgKzQyLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3Mg
UmVzb3VyY2VMb2FkVGltaW5nOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggY2Vi
Yzg5Njg0NzdkZThjM2M0ZjJiNWU4NTA0NTY1MTdkOGJhNGM4Yy4uY2MxY2FkYWYyYjVlMmM2YjFl
NmJhZWQ0ZTg4N2ZlZDIyMmFjNTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkJsb2JVUkwuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmgiCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBJbnZhbGlkUG9ydCA9IDA7CiBjb25zdCBpbnQgTWF4
QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNIb3N0KGNv
bnN0IEtVUkwmIHVybCkKK3N0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzSG9zdChjb25zdCBVUkwm
IHVybCkKIHsKICAgICAvLyBXZSBleHBlY3QgVVJMcyB3aXRoIHRoZXNlIHNjaGVtZXMgdG8gaGF2
ZSBhdXRob3JpdHkgY29tcG9uZW50cy4gSWYgdGhlCiAgICAgLy8gVVJMIGxhY2tzIGFuIGF1dGhv
cml0eSBjb21wb25lbnQsIHdlIGdldCBjb25jZXJuZWQgYW5kIG1hcmsgdGhlIG9yaWdpbgpAQCAt
NTIsNyArNTIsNyBAQCBzdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0hvc3QoY29uc3QgS1VSTCYg
dXJsKQogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHVybC5wcm90
b2NvbElzKCJmdHAiKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJV
UkwoY29uc3QgS1VSTCYgdXJsKQorYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkVXNlSW5uZXJV
UkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgLy8gRklYTUU6IEJs
b2IgVVJMcyBkb24ndCBoYXZlIGlubmVyIFVSTHMuIFRoZWlyIGZvcm0gaXMgImJsb2I6PGlubmVy
LW9yaWdpbj4vPFVVSUQ+Iiwgc28gdHJlYXRpbmcgdGhlIHBhcnQgYWZ0ZXIgImJsb2I6IiBhcyBh
IFVSTCBpcyBpbmNvcnJlY3QuCkBAIC03MCwxNiArNzAsMTYgQEAgYm9vbCBTZWN1cml0eU9yaWdp
bjo6c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQogLy8gSW4gZ2VuZXJhbCwgZXh0
cmFjdGluZyB0aGUgaW5uZXIgVVJMIHZhcmllcyBieSBzY2hlbWUuIEl0IGp1c3Qgc28gaGFwcGVu
cwogLy8gdGhhdCBhbGwgdGhlIFVSTCBzY2hlbWVzIHdlIGN1cnJlbnRseSBzdXBwb3J0IHRoYXQg
dXNlIGlubmVyIFVSTHMgZm9yIHRoZWlyCiAvLyBzZWN1cml0eSBvcmlnaW4gY2FuIGJlIHBhcnNl
ZCB1c2luZyB0aGlzIGFsZ29yaXRobS4KLUtVUkwgU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5l
clVSTChjb25zdCBLVVJMJiB1cmwpCitVUkwgU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVS
TChjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAodXJsLmlubmVyVVJMKCkpCiAgICAgICAgIHJl
dHVybiAqdXJsLmlubmVyVVJMKCk7CiAgICAgLy8gRklYTUU6IFVwZGF0ZSB0aGlzIGNhbGxzaXRl
IHRvIHVzZSB0aGUgaW5uZXJVUkwgbWVtYmVyIGZ1bmN0aW9uIHdoZW4KICAgICAvLyB3ZSBmaW5p
c2ggaW1wbGVtZW50aW5nIGl0LgotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKKyAgICByZXR1cm4gVVJMKFBhcnNl
ZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGdldENhY2hlZE9yaWdpbihjb25zdCBL
VVJMJiB1cmwpCitzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gZ2V0Q2FjaGVkT3Jp
Z2luKGNvbnN0IFVSTCYgdXJsKQogewogI2lmIEVOQUJMRShCTE9CKQogICAgIGlmICh1cmwucHJv
dG9jb2xJcygiYmxvYiIpKQpAQCAtOTAsMTggKzkwLDE4IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBnZXRDYWNoZWRPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIHJldHVy
biAwOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4oY29uc3QgVVJM
JiB1cmwpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVud3JhcCB0aGUgVVJMIGZ1cnRoZXI/Ci0g
ICAgS1VSTCBpbm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVSTCh1cmwp
ID8gU2VjdXJpdHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJsOworICAgIFVSTCBp
bm5lclVSTCA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRVc2VJbm5lclVSTCh1cmwpID8gU2VjdXJp
dHlPcmlnaW46OmV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJsOwogCiAgICAgLy8gRklYTUU6IENo
ZWNrIHdoZXRoZXIgaW5uZXJVUkwgaXMgdmFsaWQuCiAKICAgICAvLyBGb3IgZWRnZSBjYXNlIFVS
THMgdGhhdCB3ZXJlIHByb2JhYmx5IG1pc3BhcnNlZCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9yaWdp
biBpcyB1bmlxdWUuCi0gICAgLy8gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHNhZmV0eSBuZXQgYWdh
aW5zdCBidWdzIGluIEtVUkwgcGFyc2luZywgYW5kIGZvciBuZXR3b3JrIGJhY2stZW5kcyB0aGF0
IHBhcnNlIFVSTHMgZGlmZmVyZW50bHksCisgICAgLy8gVGhpcyBpcyBhbiBhZGRpdGlvbmFsIHNh
ZmV0eSBuZXQgYWdhaW5zdCBidWdzIGluIFVSTCBwYXJzaW5nLCBhbmQgZm9yIG5ldHdvcmsgYmFj
ay1lbmRzIHRoYXQgcGFyc2UgVVJMcyBkaWZmZXJlbnRseSwKICAgICAvLyBhbmQgY291bGQgbWlz
aW50ZXJwcmV0IGFub3RoZXIgY29tcG9uZW50IGZvciBob3N0bmFtZS4KICAgICBpZiAoc2NoZW1l
UmVxdWlyZXNIb3N0KGlubmVyVVJMKSAmJiBpbm5lclVSTC5ob3N0KCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRU
cmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCitTZWN1
cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgVVJMJiB1cmwpCiAgICAgOiBtX3Byb3Rv
Y29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigp
KQogICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93
ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQpAQCAtMTcyLDcgKzE3Miw3IEBAIFNlY3Vy
aXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
Y29uc3QgS1VSTCYgdXJsKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IGNhY2hlZE9yaWdpbiA9IGdldENhY2hlZE9yaWdpbih1cmwpOwogICAgIGlmIChjYWNoZWRPcmln
aW4uZ2V0KCkpCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6c2V0RG9t
YWluRnJvbURPTShjb25zdCBTdHJpbmcmIG5ld0RvbWFpbikKICAgICBtX2RvbWFpbiA9IG5ld0Rv
bWFpbi5sb3dlcigpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZShjb25zdCBL
VVJMJiB1cmwpCitib29sIFNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZShjb25zdCBVUkwmIHVybCkK
IHsKICAgICAvLyBJbnZhbGlkIFVSTHMgYXJlIHNlY3VyZSwgYXMgYXJlIFVSTHMgd2hpY2ggaGF2
ZSBhIHNlY3VyZSBwcm90b2NvbC4KICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgU2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNTZWN1cmUodXJsLnByb3RvY29sKCkpKQpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OnBhc3Nlc0ZpbGVDaGVjayhjb25z
dCBTZWN1cml0eU9yaWdpbiogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIChtX2ZpbGVQYXRoID09
IG90aGVyLT5tX2ZpbGVQYXRoKTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVz
dChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Citib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0
KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChtX3VuaXZlcnNhbEFjY2VzcykKICAg
ICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTQsNyArMzE0LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdp
bjo6Y2FuUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjp0YWludHNDYW52YXMoY29uc3QgS1VSTCYgdXJsKSBj
b25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6dGFpbnRzQ2FudmFzKGNvbnN0IFVSTCYgdXJsKSBj
b25zdAogewogICAgIGlmIChjYW5SZXF1ZXN0KHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM0Nyw3ICszNDcsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0Rh
dGEoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGRyYWdJbml0aWF0b3IpIGNvbgogLy8gaHR0cCBvciBo
dHRwcywgb3RoZXJ3aXNlIHdlIGlnbm9yZSB0aGUgbmVzdGluZyBmb3IgdGhlIHB1cnBvc2Ugb2Yg
YSBzZWN1cml0eSBjaGVjay4gV2UgbmVlZAogLy8gYSBmYWNpbGl0eSBmb3IgcmVnaXN0ZXJpbmcg
bmVzdGluZyBzY2hlbWVzLCBhbmQgc29tZSBnZW5lcmFsaXplZCBsb2dpYyBmb3IgdGhlbS4KIC8v
IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQgYXMgYW4gb3V0Y29tZSBvZiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxOTYKLXN0YXRpYyBib29sIGlzRmVl
ZFdpdGhOZXN0ZWRQcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMg
Ym9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAgICAgaWYg
KCF1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZCIsIGZhbHNlKSkKQEAgLTM1OSw3ICszNTksNyBA
QCBzdGF0aWMgYm9vbCBpc0ZlZWRXaXRoTmVzdGVkUHJvdG9jb2xJbkhUVFBGYW1pbHkoY29uc3Qg
S1VSTCYgdXJsKQogICAgICAgICB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpo
dHRwOiIsIGZhbHNlKSB8fCB1cmxTdHJpbmcuc3RhcnRzV2l0aCgiZmVlZHNlYXJjaDpodHRwczoi
LCBmYWxzZSk7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkoY29uc3QgS1VS
TCYgdXJsKSBjb25zdAorYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICBpZiAobV91bml2ZXJzYWxBY2Nlc3MpCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNDk2LDcgKzQ5Niw3IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9SYXdT
dHJpbmcoKSBjb25zdAogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZykKIHsKLSAgICBy
ZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKEtVUkwoKSwgb3JpZ2luU3RyaW5nKSk7
CisgICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBvcmlnaW5TdHJp
bmcpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgc2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwpA
QCAtNTA2LDM0ICs1MDYsMzQgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29uc3QgU3QKICAgICAvLyBNYWtl
IHN1cmUgdGhlcmUncyBhIGZpcnN0IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IxID0g
ZGF0YWJhc2VJZGVudGlmaWVyLmZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2Vw
YXJhdG9yMSA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRo
ZXJlJ3MgYSBzZWNvbmQgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFz
ZUlkZW50aWZpZXIucmV2ZXJzZUZpbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2Vw
YXJhdG9yMiA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShLVVJMKCkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKICAgICAgICAgCiAgICAgLy8gRW5zdXJlIHRoZXJl
IHdlcmUgYXQgbGVhc3QgMiBzZXBhcmF0b3IgY2hhcmFjdGVycy4gU29tZSBob3N0bmFtZXMgb24g
aW50cmFuZXRzIGhhdmUKICAgICAvLyB1bmRlcnNjb3JlcyBpbiB0aGVtLCBzbyB3ZSdsbCBhc3N1
bWUgdGhhdCBhbnkgYWRkaXRpb25hbCB1bmRlcnNjb3JlcyBhcmUgcGFydCBvZiB0aGUgaG9zdC4K
ICAgICBpZiAoc2VwYXJhdG9yMSA9PSBzZXBhcmF0b3IyKQotICAgICAgICByZXR1cm4gY3JlYXRl
KEtVUkwoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgICAgICAKICAgICAv
LyBNYWtlIHN1cmUgdGhlIHBvcnQgc2VjdGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRv
ZXNuJ3QgZXhpc3QKICAgICBib29sIHBvcnRPa2F5OwogICAgIGludCBwb3J0ID0gZGF0YWJhc2VJ
ZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIg
LSAxKS50b0ludCgmcG9ydE9rYXkpOwogICAgIGJvb2wgcG9ydEFic2VudCA9IChzZXBhcmF0b3Iy
ID09IGRhdGFiYXNlSWRlbnRpZmllci5sZW5ndGgoKSAtIDEpOwogICAgIGlmICghKHBvcnRPa2F5
IHx8IHBvcnRBYnNlbnQpKQotICAgICAgICByZXR1cm4gY3JlYXRlKEtVUkwoKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGUoVVJMKCkpOwogICAgIAogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4g
TWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJldHVybiBjcmVhdGUoS1VSTCgpKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZShVUkwoKSk7CiAgICAgICAgIAogICAgIC8vIFNwbGl0IG91dCB0aGUgMyBz
ZWN0aW9ucyBvZiBkYXRhCiAgICAgU3RyaW5nIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVy
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IxKTsKICAgICBTdHJpbmcgaG9zdCA9IGRhdGFiYXNlSWRl
bnRpZmllci5zdWJzdHJpbmcoc2VwYXJhdG9yMSArIDEsIHNlcGFyYXRvcjIgLSBzZXBhcmF0b3Ix
IC0gMSk7CiAgICAgCiAgICAgaG9zdCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsK
LSAgICByZXR1cm4gY3JlYXRlKEtVUkwoS1VSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCAr
ICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7CisgICAgcmV0dXJuIGNyZWF0ZShV
UkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIo
cG9ydCkgKyAiLyIpKTsKIH0KIAogUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IGludCBwb3J0KQpAQCAtNTQxLDcgKzU0MSw3IEBAIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QKICAg
ICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0KQogICAgICAgICByZXR1cm4g
Y3JlYXRlVW5pcXVlKCk7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0gZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKGhvc3QpOwotICAgIHJldHVybiBjcmVhdGUoS1VSTChLVVJMKCksIHByb3RvY29s
ICsgIjovLyIgKyBob3N0ICsgIjoiICsgU3RyaW5nOjpudW1iZXIocG9ydCkgKyAiLyIpKTsKKyAg
ICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiOiIg
KyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOwogfQogCiBTdHJpbmcgU2VjdXJpdHlPcmln
aW46OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCmluZGV4IDg1NzJmNGNlNGY4MzEwNTMzMGZlZTY1ZDQwNjEwZDVjY2JhMmNiODYuLmQx
MTg2NmRlMGJkYTUzZDkwODNmMDYzZGE4NDM2ODg5ODZkYmVkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFzcyBTZWN1cml0eU9yaWdpbiA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZWN1cml0eU9yaWdpbj4gewogcHVibGljOgpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEJsb2NrQWxsU3RvcmFnZQogICAgIH07CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwm
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFVS
TCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVVbmlxdWUo
KTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6
CiAgICAgLy8gR2VuZXJhbGx5LCB3ZSBhZGQgVVJMIHNjaGVtZXMgdG8gdGhpcyBsaXN0IHdoZW4g
V2ViS2l0IHN1cHBvcnQgdGhlbS4gRm9yCiAgICAgLy8gZXhhbXBsZSwgd2UgZG9uJ3QgaW5jbHVk
ZSB0aGUgImphciIgc2NoZW1lLCBldmVuIHRob3VnaCBGaXJlZm94CiAgICAgLy8gdW5kZXJzdGFu
ZHMgdGhhdCAiamFyIiB1c2VzIGFuIGlubmVyIFVSTCBmb3IgaXQncyBzZWN1cml0eSBvcmlnaW4u
Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYpOwotICAgIHN0
YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIGJvb2wg
c2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgVVJMJik7CisgICAgc3RhdGljIFVSTCBleHRyYWN0SW5u
ZXJVUkwoY29uc3QgVVJMJik7CiAKICAgICAvLyBDcmVhdGUgYSBkZWVwIGNvcHkgb2YgdGhpcyBT
ZWN1cml0eU9yaWdpbi4gVGhpcyBtZXRob2QgaXMgdXNlZnVsCiAgICAgLy8gd2hlbiBtYXJzaGFs
bGluZyBhIFNlY3VyaXR5T3JpZ2luIHRvIGFub3RoZXIgdGhyZWFkLgpAQCAtODgsNyArODgsNyBA
QCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gVVJMIGlzIHNlY3VyZSwg
YmFzZWQgZWl0aGVyIGRpcmVjdGx5IG9uIGl0cwogICAgIC8vIG93biBwcm90b2NvbCwgb3IsIHdo
ZW4gcmVsZXZhbnQsIG9uIHRoZSBwcm90b2NvbCBvZiBpdHMgImlubmVyIFVSTCIKICAgICAvLyBQ
cm90b2NvbHMgbGlrZSBibG9iOiBhbmQgZmlsZXN5c3RlbTogZmFsbCBpbnRvIHRoaXMgbGF0dGVy
IGNhdGVnb3J5LgotICAgIHN0YXRpYyBib29sIGlzU2VjdXJlKGNvbnN0IEtVUkwmKTsKKyAgICBz
dGF0aWMgYm9vbCBpc1NlY3VyZShjb25zdCBVUkwmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIFNlY3VyaXR5T3JpZ2luIGNhbiBzY3JpcHQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4KICAg
ICAvLyBTZWN1cml0eU9yaWdpbi4gRm9yIGV4YW1wbGUsIGNhbGwgdGhpcyBmdW5jdGlvbiBiZWZv
cmUgYWxsb3dpbmcKQEAgLTk5LDEyICs5OSwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoaXMgU2VjdXJpdHlPcmlnaW4gY2FuIHJlYWQgY29udGVudCByZXRyaWV2ZWQgZnJv
bQogICAgIC8vIHRoZSBnaXZlbiBVUkwuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24g
YmVmb3JlIGlzc3VpbmcKICAgICAvLyBYTUxIdHRwUmVxdWVzdHMuCi0gICAgYm9vbCBjYW5SZXF1
ZXN0KGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhblJlcXVlc3QoY29uc3QgVVJMJikg
Y29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgZHJhd2luZyBhbiBpbWFnZSBmcm9tIHRo
aXMgVVJMIHRhaW50cyBhIGNhbnZhcyBmcm9tCiAgICAgLy8gdGhpcyBzZWN1cml0eSBvcmlnaW4u
IEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlCiAgICAgLy8gZHJhd2luZyBh
biBpbWFnZSBvbnRvIGFuIEhUTUwgY2FudmFzIGVsZW1lbnQgd2l0aCB0aGUgZHJhd0ltYWdlIEFQ
SS4KLSAgICBib29sIHRhaW50c0NhbnZhcyhjb25zdCBLVVJMJikgY29uc3Q7CisgICAgYm9vbCB0
YWludHNDYW52YXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gcmVjZWl2ZSBkcmFnIGNvbnRlbnQgZnJvbSB0aGUKICAg
ICAvLyBpbml0aWF0b3IuIEZvciBleGFtcGxlLCBjYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIGFs
bG93aW5nIGNvbnRlbnQgdG8gYmUKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHxkb2N1bWVudHwgY2FuIGRpc3BsYXkgY29udGVudCBmcm9tIHRoZSBn
aXZlbiBVUkwgKGUuZy4sCiAgICAgLy8gaW4gYW4gaWZyYW1lIG9yIGFzIGFuIGltYWdlKS4gRm9y
IGV4YW1wbGUsIHdlYiBzaXRlcyBnZW5lcmFsbHkgY2Fubm90CiAgICAgLy8gZGlzcGxheSBjb250
ZW50IGZyb20gdGhlIHVzZXIncyBmaWxlcyBzeXN0ZW0uCi0gICAgYm9vbCBjYW5EaXNwbGF5KGNv
bnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29sIGNhbkRpc3BsYXkoY29uc3QgVVJMJikgY29uc3Q7
CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTZWN1cml0eU9yaWdpbiBjYW4gbG9hZCBs
b2NhbCByZXNvdXJjZXMsIHN1Y2gKICAgICAvLyBhcyBpbWFnZXMsIGlmcmFtZXMsIGFuZCBzdHls
ZSBzaGVldHMsIGFuZCBjYW4gbGluayB0byBsb2NhbCBVUkxzLgpAQCAtMjA5LDcgKzIwOSw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTZWN1cml0eU9yaWdpbigpOwotICAgIGV4cGxpY2l0
IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKKyAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdp
bihjb25zdCBVUkwmKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0
aGluZyBtb3JlIHNlbWFudGljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNo
LmgKaW5kZXggNDU0Y2Y4M2VkZWVmNjk4YTRlOTU3ZjQ0NjEzMjRjYTc4YzFkMWMwYi4uOTZiODc1
NDdlNGFkYmZkYjkyNDFhM2UxOTg5OWY5NWVkNDAxZmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luSGFzaC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWZuZGVmIFNlY3VyaXR5
T3JpZ2luSGFzaF9oCiAjZGVmaW5lIFNlY3VyaXR5T3JpZ2luSGFzaF9oCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5j
cHAKaW5kZXggNWIzNmY0ZjcxNmM0NGJmYjA5ZjIwZTYzMmNjMGQwMzg2ZjNjY2EzYy4uYjI0Y2E5
NDQ3NDUyYmEzMjRlMmU0M2Y1ZTZjOTRjM2FkZGMwMGU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSAiT3JpZ2lu
QWNjZXNzRW50cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTAsNyArNTAs
NyBAQCBzdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NNYXAoKQogICAgIHJldHVy
biBvcmlnaW5BY2Nlc3NNYXA7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitib29sIFNl
Y3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgYm9vbCByZWZlcnJlcklzU2VjdXJlVVJMID0gcHJvdG9j
b2xJcyhyZWZlcnJlciwgImh0dHBzIik7CiAgICAgYm9vbCByZWZlcnJlcklzV2ViVVJMID0gcmVm
ZXJyZXJJc1NlY3VyZVVSTCB8fCBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cCIpOwpAQCAtNjYs
NyArNjYsNyBAQCBib29sIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNTZWN1
cmVVUkw7CiB9CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRl
cihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVy
SGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAocmVmZXJyZXIuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTcsNyArMTE3LDcgQEAgYm9vbCBTZWN1cml0eVBv
bGljeTo6aXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3Jp
Z2luLCBjb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2VjdXJpdHlQb2xpY3k6Omlz
QWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2lu
LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hp
dGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0
aXZlT3JpZ2luLCB0YXJnZXRPcmlnaW4uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5oCmluZGV4IDMzN2VlYzJiM2FkZjVjZjEyMGM0Njg5ZjBmYTZkMzZlYTRlOWU2YjEuLmIy
NjljMWFmNTI1NDVmZjQ0ZjhhNDg1YWIxN2U2YTkzNjM0NWY5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKIGNs
YXNzIFNlY3VyaXR5UG9saWN5IHsKQEAgLTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgLy8g
VHJ1ZSBpZiB0aGUgcmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIHRoZQog
ICAgIC8vIFJlZmVycmVyUG9saWN5RGVmYXVsdC4gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVm
ZXJyZXIgaGVhZGVyLCB5b3UKICAgICAvLyBzaG91bGQgdXNlIGdlbmVyYXRlUmVmZXJyZXJIZWFk
ZXIgaW5zdGVhZC4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVS
ZWZlcnJlcihjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIHJlZmVycmVyIG1vZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcmVmZXJyZXIgcG9s
aWN5IGZvciBhCiAgICAgLy8gbmF2aWdhdGlvbiB0byBhIGdpdmVuIFVSTC4gSWYgdGhlIHJlZmVy
cmVyIHJldHVybmVkIGlzIGVtcHR5LCB0aGUKICAgICAvLyByZWZlcnJlciBoZWFkZXIgc2hvdWxk
IGJlIG9taXR0ZWQuCi0gICAgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJl
ZmVycmVyUG9saWN5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAg
c3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVudW0gTG9jYWxMb2FkUG9s
aWN5IHsKICAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlvbiBv
biBsb2NhbCBsb2Fkcy4KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogCiAgICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKTsKLSAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3Qg
S1VSTCYpOworICAgIHN0YXRpYyBib29sIGlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBT
ZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBVUkwmKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggYzhkMzRmNGQ4ZmNh
Y2Q3ZmY0OWZhMWNlMWY2ODAzMjg2YzRiMWRiNC4uM2NiNGQwOTU5NGNhNjZjMjVkZDU4NWY2NWRk
ZmUyYjMzMDEwYjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQxNCw3ICs0MTQs
NyBAQCB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKICAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZCgpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IEtVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCit2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKIHsKICAg
ICBpZiAobV91c2VyU3R5bGVTaGVldExvY2F0aW9uID09IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24p
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkOGI3Y2E2YzI4MjI1
ODBjZmRhN2U5ZTAzNDliZDIzYWYzMzkwOWNkLi5lZGY2OThjOGM3ZTE2NTdhMWQ1OWVmMWIxNTcy
Y2E3Y2I4MWZiOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0zMCw3ICszMCw3IEBACiAj
aW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCIKICNpbmNsdWRlICJGb250UmVuZGVyaW5n
TW9kZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5n
c01hY3Jvcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xNTAsOCArMTUwLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEROU1ByZWZldGNoaW5nRW5hYmxlZChib29s
KTsKICAgICAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBLVVJMJik7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0K
KyAgICAgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYpOworICAg
ICAgICBjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3VzZXJTdHlsZVNoZWV0TG9jYXRpb247IH0KIAogICAgICAgICB2b2lkIHNldE5lZWRzQWRvYmVG
cmFtZVJlbG9hZGluZ1F1aXJrKGJvb2wpOwogICAgICAgICBib29sIG5lZWRzQWNyb2JhdEZyYW1l
UmVsb2FkaW5nUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQWRvYmVGcmFtZVJlbG9hZGlu
Z1F1aXJrOyB9CkBAIC0yNzMsNyArMjczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBQYWdlKiBtX3BhZ2U7CiAKICAgICAgICAgU3RyaW5nIG1fbWVkaWFUeXBlT3ZlcnJpZGU7Ci0g
ICAgICAgIEtVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOworICAgICAgICBVUkwgbV91c2Vy
U3R5bGVTaGVldExvY2F0aW9uOwogICAgICAgICBSZWZQdHI8Rm9udEdlbmVyaWNGYW1pbGllcz4g
bV9mb250R2VuZXJpY0ZhbWlsaWVzOwogICAgICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJs
b2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5OwogI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJM
UGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKaW5kZXggYzdkODE5YjBiZDBiYzg3ZDk2MjA5YWM5MjUzMGM0NmNhMjAyZmUzMy4uZmRhZWQx
ZTUwOWI1MTAyZjkyZTJiZmU0YTYyMDAzNjQ3NzhlZDI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjptYXRjaGVzUGF0dGVybnMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgd2hpdGVsaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KQorYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXR0ZXJucyhjb25zdCBVUkwmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlz
dCkKIHsKICAgICAvLyBJbiBvcmRlciBmb3IgYSBVUkwgdG8gYmUgYSBtYXRjaCBpdCBoYXMgdG8g
YmUgcHJlc2VudCBpbiB0aGUgd2hpdGVsaXN0IGFuZCBub3QgcHJlc2VudCBpbiB0aGUgYmxhY2ts
aXN0LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHdoaXRlbGlzdCBhdCBhbGwsIHRoZW4gYWxsIFVS
THMgYXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIHdoaXRlbGlzdC4KQEAgLTExMCw3ICsxMTAsNyBA
QCBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6cGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJu
KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0
Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46
Om1hdGNoZXMoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewogICAgIGlmIChtX2ludmFsaWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29sIFVzZXJDb250ZW50
VVJMUGF0dGVybjo6bWF0Y2hlcyhjb25zdCBLVVJMJiB0ZXN0KSBjb25zdAogICAgIHJldHVybiBt
YXRjaGVzUGF0aCh0ZXN0KTsKIH0KIAotYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNo
ZXNIb3N0KGNvbnN0IEtVUkwmIHRlc3QpIGNvbnN0Citib29sIFVzZXJDb250ZW50VVJMUGF0dGVy
bjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewogICAgIGNvbnN0IFN0cmlu
ZyYgaG9zdCA9IHRlc3QuaG9zdCgpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShob3N0LCBt
X2hvc3QpKQpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0cnVjdCBNYXRjaFRlc3RlcgogICAgIH0KIH07
CiAKLWJvb2wgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjptYXRjaGVzUGF0aChjb25zdCBLVVJMJiB0
ZXN0KSBjb25zdAorYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1hdGNoZXNQYXRoKGNvbnN0
IFVSTCYgdGVzdCkgY29uc3QKIHsKICAgICBNYXRjaFRlc3RlciBtYXRjaChtX3BhdGgsIHRlc3Qu
cGF0aCgpKTsKICAgICByZXR1cm4gbWF0Y2gudGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgKaW5kZXggMGRlMDU1ZWY1MTZmZTM5OWEyYmExZGI3N2Q0
ZjMzMmRmZmUzNWYzMi4uYTg2ODkyYmNlOWE4ZWYxZGM1MThlY2QwMjhiOWZjYWM0NGRiODhjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIAogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuIHsKIHB1YmxpYzoKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gIW1faW52
YWxpZDsgfQogCi0gICAgYm9vbCBtYXRjaGVzKGNvbnN0IEtVUkwmKSBjb25zdDsKKyAgICBib29s
IG1hdGNoZXMoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIHNjaGVtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2NoZW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29u
c3QgeyByZXR1cm4gbV9ob3N0OyB9CkBAIC01MywxMyArNTMsMTMgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBtYXRjaFN1YmRvbWFpbnMoKSBjb25zdCB7IHJldHVybiBtX21hdGNoU3ViZG9tYWluczsg
fQogICAgIAotICAgIHN0YXRpYyBib29sIG1hdGNoZXNQYXR0ZXJucyhjb25zdCBLVVJMJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNr
bGlzdCk7CisgICAgc3RhdGljIGJvb2wgbWF0Y2hlc1BhdHRlcm5zKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiB3aGl0ZWxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibGFja2xp
c3QpOwogCiBwcml2YXRlOgogICAgIGJvb2wgcGFyc2UoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKTsK
IAotICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29uc3QgS1VSTCYpIGNvbnN0OwotICAgIGJvb2wgbWF0
Y2hlc1BhdGgoY29uc3QgS1VSTCYpIGNvbnN0OworICAgIGJvb2wgbWF0Y2hlc0hvc3QoY29uc3Qg
VVJMJikgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUGF0aChjb25zdCBVUkwmKSBjb25zdDsKIAog
ICAgIGJvb2wgbV9pbnZhbGlkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Vz
ZXJTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCmluZGV4IDhiYmZh
NDliYjU1MjQ5NGZlOGM1OGQyYTFkZjllYzMzNzc5MDJjZGYuLjhhMmI0MTE4NzRmOGQ5Mzk5MGQw
ZTc2OTMxMWI5ZjEwOGUzMzg2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNl
clNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclNjcmlwdC5oCkBAIC0yNiw3
ICsyNiw3IEBACiAjaWZuZGVmIFVzZXJTY3JpcHRfaAogI2RlZmluZSBVc2VyU2NyaXB0X2gKIAot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJVc2VyQ29udGVu
dFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIFVz
ZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwg
VXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3Rl
ZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKKyAgICBVc2VyU2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGJsYWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5q
ZWN0aW9uVGltZSwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKICAg
ICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAs
IG1fd2hpdGVsaXN0KHdoaXRlbGlzdCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0K
LSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgd2hpdGVsaXN0KCkgY29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAgICBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7
IH0KICAgICBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmplY3Rpb25UaW1lOyB9CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9zb3VyY2U7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91
cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gbV93aGl0ZWxpc3Q7CiAgICAgVmVjdG9yPFN0cmluZz4g
bV9ibGFja2xpc3Q7CiAgICAgVXNlclNjcmlwdEluamVjdGlvblRpbWUgbV9pbmplY3Rpb25UaW1l
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5bGVTaGVldC5oCmluZGV4IGZjNjdkN2FjYThmM2U5ODEz
NWRkNzI3ZDczMDVhMzRlNzIxYzhlZTkuLjcyMzQ0NjJjYjE5NTI5YmM5NmY1ZTY3MWUzOGFhZjBi
OWQ4Njg0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI2LDcgKzI2
LDcgQEAKICNpZm5kZWYgVXNlclN0eWxlU2hlZXRfaAogI2RlZmluZSBVc2VyU3R5bGVTaGVldF9o
CiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTdHlsZVNoZWV0VHlwZXMuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
Ci0gICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHdoaXRlbGlzdCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGJsYWNrbGlzdCwgVXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcywgVXNl
clN0eWxlTGV2ZWwgbGV2ZWwpCisgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxhY2tsaXN0LCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGlu
amVjdGVkRnJhbWVzLCBVc2VyU3R5bGVMZXZlbCBsZXZlbCkKICAgICAgICAgOiBtX3NvdXJjZShz
b3VyY2UpCiAgICAgICAgICwgbV91cmwodXJsKQogICAgICAgICAsIG1fd2hpdGVsaXN0KHdoaXRl
bGlzdCkKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IFN0cmlu
ZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICBjb25zdCBLVVJMJiB1
cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2hpdGVsaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV93aGl0ZWxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
YmxhY2tsaXN0KCkgY29uc3QgeyByZXR1cm4gbV9ibGFja2xpc3Q7IH0KICAgICBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3Rl
ZEZyYW1lczsgfQpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fc291cmNlOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fd2hpdGVsaXN0OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxhY2tsaXN0Owog
ICAgIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgbV9pbmplY3RlZEZyYW1lczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvZWZsL0RyYWdDb250cm9sbGVyRWZsLmNwcAppbmRleCAyNzUwZTJlMzlk
Njc1ZGIyMjg5NzhmZjE3ZDRmZTA0ZTg4ZmM1ZDhhLi5hN2EzNjAyMDVjNjMyZjJmMGU1NTFkOGFl
NTViOTUxMTg0NDQ2MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2VmbC9EcmFn
Q29udHJvbGxlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9lZmwvRHJhZ0NvbnRy
b2xsZXJFZmwuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNsZWFu
dXBBZnRlclN5c3RlbURyYWcoKQogewogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJl
QW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiwgRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQordm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KENsaXBib2FyZCosIEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXgg
ZDRkZTI3ZTI5YWZiZTEyZTlhNzI0MTEzMmI1ZThlY2JmYTVjNzM0ZC4uMTcwZTg0MWFkNTUzMjc5
N2EwMDMyNzM2ZTlmYWU1NDIwMWY1YWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3Rr
L0RyYWdDb250cm9sbGVyR3RrLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpjbGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERy
YWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9h
cmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVs
KQogewogICAgIGNsaXBib2FyZC0+cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJs
LCBsYWJlbCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29u
dHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFj
Lm1tCmluZGV4IGFiNjNjZGYzNzY2M2I0YzU4NDJlMDQxMjU5MjgxMGFlNjJjM2UwZTcuLjhlZDdl
MmRlYTllYjRlYmU2YTRmNzQwNDVlMGU4YjJmMTBhYTk5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmNsZWFudXBBZnRlclN5c3RlbURyYWcoKQogICAgICAgICBkcmFnRW5kZWQo
KTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENs
aXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIG1fY2xpZW50LmRlY2xhcmVBbmRX
cml0ZURyYWdJbWFnZShjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKS5uYW1lKCksIGtpdChlbGVtZW50
KSwgdXJsLCBsYWJlbCwgZWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCmluZGV4IGNkOTYzMTBjZjAzMTdk
MDFhMGFkMjliOWE0YWQyZjBhZGNiMTY1ZmIuLjUxMGQwNzg5ZTc3ZmJlNmQ5ODFiYWFmMTZiZjI0
YzhlN2VhNTI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRy
b2xsZXJRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0
LmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVwQWZ0ZXJT
eXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250cm9sbGVyOjpkZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIGNsaXBib2Fy
ZC0+cGFzdGVib2FyZCgpLndyaXRlSW1hZ2UoZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggYjdiZmVh
MTU4YjJkZWU2N2NiZTI2OWE1ZWFjZmM1MGQyYzY4N2YzMy4uZGYyZjMyMGUyNThhNzY0MTJhYTc2
NDg5YmJiYzRhY2RkZjNmMjgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdD
b250cm9sbGVyV2luLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpj
bGVhbnVwQWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6ZGVj
bGFyZUFuZFdyaXRlRHJhZ0ltYWdlKENsaXBib2FyZCogY2xpcGJvYXJkLCBFbGVtZW50KiBlbGVt
ZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwpCit2b2lkIERyYWdDb250
cm9sbGVyOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewog
ICAgIFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQgPSBjbGlwYm9hcmQtPnBhc3RlYm9hcmQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAppbmRleCBhZjVjNTEyMzJh
OTRkNWM5ZDNhODJkMDI0NTg5MmEyZmM1NjhmMTY5Li4zYjE2ODQ2ZTljZjM2ZDA1OGVmYTQwZmEy
YjEwZGNhYWUwOWQ5OTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3lu
Y0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0
ZW0uaApAQCAtMzQsNyArMzQsNyBAQAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAogI2luY2x1
ZGUgIkZpbGVTeXN0ZW1UeXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcyLDU4ICs3Miw1OCBAQCBwdWJsaWM6CiAg
ICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGgu
CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0g
ICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVz
dFBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBtb3ZlKGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBDb3Bp
ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHNyY1BhdGggdG8gZGVzdFBhdGguCiAgICAgLy8g
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhl
IG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHkoY29uc3QgS1VSTCYgc3JjUGF0aCwgY29uc3QgS1VSTCYgZGVzdFBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjb3B5KGNvbnN0IFVSTCYgc3JjUGF0aCwgY29uc3QgVVJMJiBkZXN0UGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBEZWxldGVzIGEgZmls
ZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRv
IHRyeSB0byByZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CiAKICAgICAvLyBSZWN1
cnNpdmVseSBkZWxldGVzIGEgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gcGF0aC4KICAgICAvLyBBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3Bl
cmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KSA9IDA7CiAKICAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGluZm9ybWF0aW9uIG9mIHRo
ZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHBhdGguCiAgICAgLy8gQXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBpcyBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0
aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQg
cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAg
IC8vIENyZWF0ZXMgYSBmaWxlIGF0IGEgZ2l2ZW4gcGF0aC4gIElmIGV4Y2x1c2l2ZSBmbGFnIGlz
IHRydWUsIGl0IGZhaWxzIGlmIHRoZSBwYXRoIGFscmVhZHkgZXhpc3RzLgogICAgIC8vIEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRl
RmlsZShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBkaXJlY3RvcnkgYXQg
YSBnaXZlbiBwYXRoLiAgSWYgZXhjbHVzaXZlIGZsYWcgaXMgdHJ1ZSwgaXQgZmFpbHMgaWYgdGhl
IHBhdGggYWxyZWFkeSBleGlzdHMuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRTdWNjZWVkKCkgaXMgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIGlz
IGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25z
dCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBV
UkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3RzIGF0IGEgZ2l2ZW4g
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBpcyBj
YWxsZWQgaWYgdGhlIGZpbGUgZXhpc3RzLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZpbGVF
eGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENoZWNr
cyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBnaXZlbiBwYXRoLgogICAgIC8vIEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIGlzIGNhbGxlZCBpZiB0aGUgZGlyZWN0b3J5
IGV4aXN0cy4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBj
YWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3Qg
S1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikgPSAwOwogCiAgICAgLy8gUmVhZHMgZGlyZWN0
b3J5IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgcGF0aC4KICAgICAvLyBBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnlFbnRyeSgpIGlzIGNhbGxlZCB3aGVu
IGVhY2ggZGlyZWN0b3J5IGVudHJ5IGlzIGNhbGxlZC4gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRSZWFkRGlyZWN0b3J5RW50cmllcygpIGlzIGNhbGxlZCBhZnRlciBhIGNodW5rIG9mIGRp
cmVjdG9yeSBlbnRyaWVzIGhhdmUgYmVlbiByZWFkLgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkRmFpbCgpIGlzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IuCi0gICAgdmlydHVh
bCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rvcnko
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0g
MDsKIAogICAgIC8vIENyZWF0ZXMgYW4gQXN5bmNGaWxlV3JpdGVyIGZvciBhIGdpdmVuIGZpbGUg
cGF0aC4KICAgICAvLyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZENyZWF0ZUZpbGVXcml0
ZXIoKSBpcyBjYWxsZWQgd2hlbiBhbiBBc3luY0ZpbGVXcml0ZXIgaXMgY3JlYXRlZCBzdWNjZXNz
ZnVsbHkuCiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2Fs
bGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdy
aXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pID0gMDsKIAogICAgIC8vIENyZWF0ZXMgYSBzbmFwc2hvdCBmaWxlIGFuZCBy
ZWFkIGl0cyBtZXRhZGF0YSBmb3IgYSBuZXcgRmlsZSBvYmplY3QuCiAgICAgLy8gSW4gbG9jYWwg
ZmlsZXN5c3RlbSBjYXNlcyB0aGUgYmFja2VuZCBtYXkgc2ltcGx5IHJldHVybiB0aGUgbWV0YWRh
dGEgb2YgdGhlIGZpbGUgaXRzZWxmIChhcyB3ZWxsIGFzIHJlYWRNZXRhZGF0YSBkb2VzKSwKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAgICAvLwogICAgIC8vIE5vdGU6IHRo
ZSByZXR1cm5lZCBtZXRhZGF0YSBpbmZvIGlzIGNhY2hlZCBpbiB0aGUgRmlsZSBvYmplY3QgZm9y
IG5vbi1yZWd1bGFyIGZpbGVzeXN0ZW0gdHlwZXMgKG5laXRoZXIgVGVtcG9yYXJ5IG5vciBQZXJz
aXN0ZW50KS4gVGhlIHBvcnQgY291bGQgcmV0dXJuIHZhbGlkIG1ldGFkYXRhIGlmIGl0IHdhbnRz
IEZpbGUgb2JqZWN0IHRvIGNhY2hlIG1ldGFkYXRhIChlLmcuIGlmIHRoZSBmaWxlIGJvZHkgaXMg
b24gYSByZW1vdGUgc2VydmVyKSwgYnV0IG90aGVyd2lzZSBzaG91bGQgTk9UIHJldHVybiB2YWxp
ZCBtZXRhZGF0YS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1l
dGFkYXRhKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0
YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4pID0gMDsKIAogcHJvdGVjdGVkOgogICAgIEFzeW5jRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRl
eCAwMWJlZTg5NzJjNGUxMTg4YzMwODRiOWUyMzZmMDU2Mzc3NmFiMWQ2Li41MTk0ODI0OTcxMTlh
NDA0YTRjYTZiNDIxMjllYzczMTNhNmE4NzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhIHJlcXVlc3RlZCBmaWxlIHN5c3RlbSBpcyBvcGVu
ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgLyog
bmFtZSAqLywgY29uc3QgS1VSTCYgLyogcm9vdFVSTCAqLywgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgLyogbmFtZSAqLywgY29uc3QgVVJMJiAvKiByb290
VVJMICovLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4pIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIC8vIENhbGxlZCB3aGVuIGEgZmlsZSBtZXRhZGF0YSBpcyByZWFkIHN1Y2Nl
c3NmdWxseS4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZpbGVNZXRh
ZGF0YSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29va2llc1N0cmF0ZWd5LmgKaW5kZXggYzBlNmVmMjFlYzBiNGZiOTE5ZjU0OGU5NGYyYzBjMzIy
MmQ0ZWU4ZS4uNjU0MDU3ZDNkN2E3YWFiYTRiMDYwMzRhN2JkYzliYzk1ZjYzOGRmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKQEAgLTMzLDE4ICszMywxOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFz
cyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBzdHJ1Y3QgQ29va2llOwogCiBjbGFzcyBDb29raWVz
U3RyYXRlZ3kgewogcHVibGljOgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IH5Db29raWVzU3RyYXRlZ3koKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcAppbmRleCBjMmRiNjNjOThhZTFiMjQyODk1ZWY2YTU0OGYwZDBhMGQ3
OWY2NjRjLi4yZTg2MTFiMGI0Y2U0NDE0ZjJhYzEzZTEyNWIxMGQyNzA5MWFiYTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpbmNsdWRlICJDcm9zc1RocmVhZENvcGllci5oIgogCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBA
IC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgS1VSTD46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZh
bHNlLCBmYWxzZSwgS1VSTD46OmNvcHkoY29uc3QgS1VSTCYgdXJsKQorQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgVVJMPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBVUkw+Ojpjb3B5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiB1cmwu
Y29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJl
YWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgK
aW5kZXggYjFjMTRlYjM2YWEyNDQ0MWJmYmIxNDUzMDA5YzE4MmE1YTgwYzk1ZS4uYWUyZWYyNGEx
MGJhN2Q4YjI1ZjIwMGZiNzRlMjY5OGIwZjIwN2VjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFz
cyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwpAQCAtMTIw
LDkgKzEyMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgIH07CiAKLSAg
ICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBL
VVJMPiB7Ci0gICAgICAgIHR5cGVkZWYgS1VSTCBUeXBlOwotICAgICAgICBzdGF0aWMgVHlwZSBj
b3B5KGNvbnN0IEtVUkwmKTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBVUkw+IHsKKyAgICAgICAgdHlwZWRlZiBVUkwgVHlwZTsKKyAg
ICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBVUkwmKTsKICAgICB9OwogCiAgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgU3RyaW5nPiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAyN2RkZDZlMjMzMmM0MDg4ODg2NGZi
YmY1NmQ2NjU5NGI3NzRmMmUzLi41ZTcxMDZjZjg2NjhiOThhNTAzOGNhOTU1NmJiMTliNjZiNGU1
NTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTY5LDcgKzY5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNzIERvY3VtZW50RnJhZ21lbnQ7
Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogY2xhc3MgUmFuZ2U7CiAKIGVudW0gRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5jcHAKaW5kZXggMWNh
NTEyZDVmMDExOTM4ODY1MzFiY2VjNzA2ZTgyZGY3MzBkM2QyZC4uYjgxYWZkNTc5ZTgyOTNlZWZh
MmJhOTNiOWJiNTVjMWY1MDc2Y2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIERyYWdJbWFnZVJlZiBmaXREcmFnSW1hZ2VUb01heFNpemUo
RHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjCiB9CiAKICNpZiAh
UExBVEZPUk0oTUFDKSAmJiAoIVBMQVRGT1JNKFdJTikgfHwgT1MoV0lOQ0UpKQotRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZvbnRSZW5k
ZXJpbmdNb2RlKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiwgY29u
c3QgU3RyaW5nJiwgRm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IDdjMjI4NWUxM2FmZjc2NDYwYzQ0ZjA1M2Ez
MDg5YzAzYjA2NGMwZjYuLmZhYjk3NTQ1Mjg1MmRiMDhkZDhmM2JjZTg5ZWIyYmQyNzgzZTdlZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC01MSw3ICs1MSw3IEBAIHR5cGVk
ZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNsYXNzIEltYWdlOwotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJM
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHR5cGVkZWYgUmV0YWluUHRyPE5TSW1hZ2U+IERy
YWdJbWFnZVJlZjsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAog
ICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJ
Y29uRm9yQ2FjaGVkSW1hZ2VGaWxlbmFtZShjb25zdCBTdHJpbmcmKTsKLSAgICBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRm9u
dFJlbmRlcmluZ01vZGUpOworICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5r
KFVSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlKTsKICAgICB2b2lk
IGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwCmluZGV4IDVjODE3ZWRlZmZlMTc0OTczNjFmZTU3NTMyZjA5NTJjNmZm
ZDgwYzcuLmFkMTY1N2IwM2IzNzkzODg4OWRjNDdhN2RiYjc1YTJmZmU2NDdkMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgaW50IEZp
bGVTdHJlYW06OnJlYWQoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKICAgICByZXR1cm4g
Ynl0ZXNSZWFkOwogfQogCi1pbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYsIGxvbmcg
bG9uZywgaW50KQoraW50IEZpbGVTdHJlYW06OndyaXRlKGNvbnN0IFVSTCYsIGxvbmcgbG9uZywg
aW50KQogewogICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KICAgICByZXR1cm4gLTE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXggYmFhMzk0OGRjMTliZjM1N2U1
MWZiZDBlNzRlYjVhNmI1Nzg0YTFjMi4uZWVlYWEwZWE3MWRmNWI2MGIwNzUwYjYzYzU0YzE3NzE0
ZDQzYWMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApAQCAtNDAsNyArNDAs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAK
IC8vIEFsbCBtZXRob2RzIGFyZSBzeW5jaHJvbm91cy4KIGNsYXNzIEZpbGVTdHJlYW0gOiBwdWJs
aWMgUmVmQ291bnRlZDxGaWxlU3RyZWFtPiB7CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFdyaXRlcyBhIGJsb2IgdG8gdGhlIGZpbGUuCiAgICAgLy8gUmV0dXJucyBudW1iZXIg
b2YgYnl0ZXMgYmVpbmcgd3JpdHRlbiBvbiBzdWNjZXNzLiAtMSBvdGhlcndpc2UuCi0gICAgaW50
IHdyaXRlKGNvbnN0IEtVUkwmIGJsb2JVUkwsIGxvbmcgbG9uZyBwb3NpdGlvbiwgaW50IGxlbmd0
aCk7CisgICAgaW50IHdyaXRlKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9u
LCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRydW5jYXRlcyB0aGUgZmlsZSB0byB0aGUgc3BlY2lm
aWVkIHBvc2l0aW9uLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhl
cndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyYTAwYWMzMjQ2YmJjODZkNzc2ZTBlZmE0ZDYxNWZjMDYyOGIwNmFiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0tVUkwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzNSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiS1VSTC5oIgotCi0jaW5jbHVkZSAiRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgiCi0j
aW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgot
I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvSGV4TnVtYmVyLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotCi0jaWYgVVNFKElDVV9VTklDT0RF
KQotI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KLSNlbmRpZgotCi0vLyBGSVhNRTogVGhpcyBm
aWxlIG1ha2VzIHRvbyBtdWNoIHVzZSBvZiB0aGUgKyBvcGVyYXRvciBvbiBTdHJpbmcuCi0vLyBX
ZSBlaXRoZXIgaGF2ZSB0byBvcHRpbWl6ZSB0aGF0IG9wZXJhdG9yIHNvIGl0IGRvZXNuJ3QgaW52
b2x2ZQotLy8gc28gbWFueSBhbGxvY2F0aW9ucywgb3IgY2hhbmdlIHRoaXMgdG8gdXNlIFN0cmlu
Z0J1ZmZlciBpbnN0ZWFkLgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotdXNpbmcgbmFtZXNwYWNl
IFdURjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi10eXBlZGVmIFZlY3RvcjxjaGFyLCA1MTI+
IENoYXJCdWZmZXI7Ci10eXBlZGVmIFZlY3RvcjxVQ2hhciwgNTEyPiBVQ2hhckJ1ZmZlcjsKLQot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1WYWxpZFBvcnROdW1iZXIgPSAweEZGRkU7Ci1z
dGF0aWMgY29uc3QgdW5zaWduZWQgaW52YWxpZFBvcnROdW1iZXIgPSAweEZGRkY7Ci0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKFVDaGFyIGNoYXJhY3Rlciwg
Y2hhciBsb3dlcmNhc2VMZXR0ZXIpCi17Ci0gICAgQVNTRVJUKGlzQVNDSUlMb3dlcihsb3dlcmNh
c2VMZXR0ZXIpKTsKLSAgICByZXR1cm4gKGNoYXJhY3RlciB8IDB4MjApID09IGxvd2VyY2FzZUxl
dHRlcjsKLX0KLQotc3RhdGljIGNvbnN0IGNoYXIgd3NTY2hlbWVbXSA9IHsndycsICdzJ307Ci1z
dGF0aWMgY29uc3QgY2hhciBmdHBTY2hlbWVbXSA9IHsnZicsICd0JywgJ3AnfTsKLXN0YXRpYyBj
b25zdCBjaGFyIGZ0cFBvcnRbXSA9IHsnMicsICcxJ307Ci1zdGF0aWMgY29uc3QgY2hhciB3c3NT
Y2hlbWVbXSA9IHsndycsICdzJywgJ3MnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGZpbGVTY2hlbWVb
XSA9IHsnZicsICdpJywgJ2wnLCAnZSd9Owotc3RhdGljIGNvbnN0IGNoYXIgaHR0cFNjaGVtZVtd
ID0geydoJywgJ3QnLCAndCcsICdwJ307Ci1zdGF0aWMgY29uc3QgY2hhciBodHRwUG9ydFtdID0g
eyc4JywgJzAnfTsKLXN0YXRpYyBjb25zdCBjaGFyIGh0dHBzU2NoZW1lW10gPSB7J2gnLCAndCcs
ICd0JywgJ3AnLCAncyd9Owotc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNQb3J0W10gPSB7JzQnLCAn
NCcsICczJ307Ci1zdGF0aWMgY29uc3QgY2hhciBnb3BoZXJTY2hlbWVbXSA9IHsnZycsICdvJywg
J3AnLCAnaCcsICdlJywgJ3InfTsKLXN0YXRpYyBjb25zdCBjaGFyIGdvcGhlclBvcnRbXSA9IHsn
NycsICcwJ307Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KGNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHRlcikKLXsKLSAgICBBU1NFUlQoaXNB
U0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOwotICAgIHJldHVybiAoY2hhcmFjdGVyIHwgMHgy
MCkgPT0gbG93ZXJjYXNlTGV0dGVyOwotfQotCi1lbnVtIFVSTENoYXJhY3RlckNsYXNzZXMgewot
ICAgIC8vIGFscGhhIAotICAgIFNjaGVtZUZpcnN0Q2hhciA9IDEgPDwgMCwKLQotICAgIC8vICgg
YWxwaGEgfCBkaWdpdCB8ICIrIiB8ICItIiB8ICIuIiApCi0gICAgU2NoZW1lQ2hhciA9IDEgPDwg
MSwKLQotICAgIC8vIG1hcmsgICAgICAgID0gIi0iIHwgIl8iIHwgIi4iIHwgIiEiIHwgIn4iIHwg
IioiIHwgIiciIHwgIigiIHwgIikiCi0gICAgLy8gdW5yZXNlcnZlZCAgPSBhbHBoYW51bSB8IG1h
cmsKLSAgICAvLyAoIHVucmVzZXJ2ZWQgfCBlc2NhcGVkIHwgIjsiIHwgIjoiIHwgIiYiIHwgIj0i
IHwgIisiIHwgIiQiIHwgIiwiICkKLSAgICBVc2VySW5mb0NoYXIgPSAxIDw8IDIsCi0KLSAgICAv
LyBhbG51bSB8ICIuIiB8ICItIiB8ICIlIgotICAgIC8vIFRoZSBhYm92ZSBpcyB3aGF0IHRoZSBz
cGVjaWZpY2F0aW9uIHNheXMsIGJ1dCB3ZSBhcmUgbGVuaWVudCB0bwotICAgIC8vIG1hdGNoIGV4
aXN0aW5nIHByYWN0aWNlIGFuZCBhbHNvIGFsbG93OgotICAgIC8vICJfIgotICAgIEhvc3RuYW1l
Q2hhciA9IDEgPDwgMywKLQotICAgIC8vIGhleGRpZ2l0IHwgIjoiIHwgIiUiCi0gICAgSVB2NkNo
YXIgPSAxIDw8IDQsCi0KLSAgICAvLyAiIyIgfCAiPyIgfCAiLyIgfCBudWwKLSAgICBQYXRoU2Vn
bWVudEVuZENoYXIgPSAxIDw8IDUsCi0KLSAgICAvLyBub3QgYWxsb3dlZCBpbiBwYXRoCi0gICAg
QmFkQ2hhciA9IDEgPDwgNgotfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhcmFj
dGVyQ2xhc3NUYWJsZVsyNTZdID0gewotICAgIC8qIDAgbnVsICovIFBhdGhTZWdtZW50RW5kQ2hh
ciwgICAgLyogMSBzb2ggKi8gQmFkQ2hhciwKLSAgICAvKiAyIHN0eCAqLyBCYWRDaGFyLCAgICAv
KiAzIGV0eCAqLyBCYWRDaGFyLAotICAgIC8qIDQgZW90ICovIEJhZENoYXIsICAgIC8qIDUgZW5x
ICovIEJhZENoYXIsICAgIC8qIDYgYWNrICovIEJhZENoYXIsICAgIC8qIDcgYmVsICovIEJhZENo
YXIsCi0gICAgLyogOCBicyAqLyBCYWRDaGFyLCAgICAgLyogOSBodCAqLyBCYWRDaGFyLCAgICAg
LyogMTAgbmwgKi8gQmFkQ2hhciwgICAgLyogMTEgdnQgKi8gQmFkQ2hhciwKLSAgICAvKiAxMiBu
cCAqLyBCYWRDaGFyLCAgICAvKiAxMyBjciAqLyBCYWRDaGFyLCAgICAvKiAxNCBzbyAqLyBCYWRD
aGFyLCAgICAvKiAxNSBzaSAqLyBCYWRDaGFyLAotICAgIC8qIDE2IGRsZSAqLyBCYWRDaGFyLCAg
IC8qIDE3IGRjMSAqLyBCYWRDaGFyLCAgIC8qIDE4IGRjMiAqLyBCYWRDaGFyLCAgIC8qIDE5IGRj
MyAqLyBCYWRDaGFyLAotICAgIC8qIDIwIGRjNCAqLyBCYWRDaGFyLCAgIC8qIDIxIG5hayAqLyBC
YWRDaGFyLCAgIC8qIDIyIHN5biAqLyBCYWRDaGFyLCAgIC8qIDIzIGV0YiAqLyBCYWRDaGFyLAot
ICAgIC8qIDI0IGNhbiAqLyBCYWRDaGFyLCAgIC8qIDI1IGVtICovIEJhZENoYXIsICAgIC8qIDI2
IHN1YiAqLyBCYWRDaGFyLCAgIC8qIDI3IGVzYyAqLyBCYWRDaGFyLAotICAgIC8qIDI4IGZzICov
IEJhZENoYXIsICAgIC8qIDI5IGdzICovIEJhZENoYXIsICAgIC8qIDMwIHJzICovIEJhZENoYXIs
ICAgIC8qIDMxIHVzICovIEJhZENoYXIsCi0gICAgLyogMzIgc3AgKi8gQmFkQ2hhciwgICAgLyog
MzMgICEgKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDM0ICAiICovIEJhZENoYXIsICAgIC8qIDM1
ICAjICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENoYXIsCi0gICAgLyogMzYgICQgKi8gVXNl
ckluZm9DaGFyLCAgICAvKiAzNyAgJSAqLyBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJ
UHY2Q2hhciB8IEJhZENoYXIsCi0gICAgLyogMzggICYgKi8gVXNlckluZm9DaGFyLCAgICAvKiAz
OSAgJyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDAgICggKi8gVXNlckluZm9DaGFyLCAgICAv
KiA0MSAgKSAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyogNDIgICogKi8gVXNlckluZm9DaGFyLCAg
ICAvKiA0MyAgKyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyLAotICAgIC8qIDQ0ICAsICov
IFVzZXJJbmZvQ2hhciwKLSAgICAvKiA0NSAgLSAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDQ2ICAuICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA0NyAgLyAqLyBQYXRoU2VnbWVu
dEVuZENoYXIsCi0gICAgLyogNDggIDAgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA0OSAgMSAqLyBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsICAgIAotICAgIC8qIDUwICAyICov
IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0g
ICAgLyogNTEgIDMgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8
IElQdjZDaGFyLAotICAgIC8qIDUyICA0ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBI
b3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTMgIDUgKi8gU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU0ICA2ICovIFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAg
LyogNTUgIDcgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQ
djZDaGFyLAotICAgIC8qIDU2ICA4ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogNTcgIDkgKi8gU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDU4ICA6ICovIFVzZXJJ
bmZvQ2hhciB8IElQdjZDaGFyLCAgICAvKiA1OSAgOyAqLyBVc2VySW5mb0NoYXIsCi0gICAgLyog
NjAgIDwgKi8gQmFkQ2hhciwgICAgLyogNjEgID0gKi8gVXNlckluZm9DaGFyLAotICAgIC8qIDYy
ICA+ICovIEJhZENoYXIsICAgIC8qIDYzICA/ICovIFBhdGhTZWdtZW50RW5kQ2hhciB8IEJhZENo
YXIsCi0gICAgLyogNjQgIEAgKi8gMCwKLSAgICAvKiA2NSAgQSAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsICAg
IAotICAgIC8qIDY2ICBCICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5m
b0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKLSAgICAvKiA2NyAgQyAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2
NkNoYXIsCi0gICAgLyogNjggIEQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAotICAgIC8qIDY5ICBFICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIg
fCBJUHY2Q2hhciwKLSAgICAvKiA3MCAgRiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyogNzEgIEcg
Ki8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciwKLSAgICAvKiA3MiAgSCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDczICBJICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogNzQg
IEogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwKLSAgICAvKiA3NSAgSyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc2ICBMICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyog
NzcgIE0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwKLSAgICAvKiA3OCAgTiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDc5ICBPICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAg
LyogODAgIFAgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4MSAgUSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDgyICBSICovIFNjaGVt
ZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0g
ICAgLyogODMgIFMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NCAgVCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg1ICBVICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
Ci0gICAgLyogODYgIFYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA4NyAgVyAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDg4ICBYICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsIAotICAgIC8qIDg5ICBZICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogOTAgIFogKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiA5MSAg
WyAqLyAwLAotICAgIC8qIDkyICBcICovIDAsICAgIC8qIDkzICBdICovIDAsCi0gICAgLyogOTQg
IF4gKi8gMCwKLSAgICAvKiA5NSAgXyAqLyBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0g
ICAgLyogOTYgIGAgKi8gMCwKLSAgICAvKiA5NyAgYSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0gICAgLyog
OTggIGIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiA5OSAgYyAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCi0g
ICAgLyogMTAwICBkICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwgCi0gICAgLyogMTAxICBlICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2
Q2hhciwKLSAgICAvKiAxMDIgIGYgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVz
ZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKLSAgICAvKiAxMDMgIGcgKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwKLSAgICAvKiAxMDQgIGggKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTA1ICBpICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTA2
ICBqICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsIAotICAgIC8qIDEwNyAgayAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEwOCAgbCAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAg
ICAvKiAxMDkgIG0gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTAgIG4gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0gICAgLyogMTExICBvICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCi0gICAgLyogMTEyICBwICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDExMyAgcSAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAotICAgIC8qIDEx
NCAgciAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLCAKLSAgICAvKiAxMTUgIHMgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAxMTYgIHQgKi8gU2NoZW1l
Rmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCi0g
ICAgLyogMTE3ICB1ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIgfCBIb3N0bmFtZUNoYXIsCi0gICAgLyogMTE4ICB2ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNj
aGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAotICAgIC8qIDExOSAgdyAq
LyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVD
aGFyLAotICAgIC8qIDEyMCAgeCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKLSAgICAvKiAxMjEgIHkgKi8gU2NoZW1lRmlyc3RD
aGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKLSAgICAvKiAx
MjIgIHogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwgCi0gICAgLyogMTIzICB7ICovIDAsCi0gICAgLyogMTI0ICB8ICovIDAsICAg
LyogMTI1ICB9ICovIDAsICAgLyogMTI2ICB+ICovIFVzZXJJbmZvQ2hhciwgICAvKiAxMjcgZGVs
ICovIEJhZENoYXIsCi0gICAgLyogMTI4ICovIEJhZENoYXIsIC8qIDEyOSAqLyBCYWRDaGFyLCAv
KiAxMzAgKi8gQmFkQ2hhciwgLyogMTMxICovIEJhZENoYXIsCi0gICAgLyogMTMyICovIEJhZENo
YXIsIC8qIDEzMyAqLyBCYWRDaGFyLCAvKiAxMzQgKi8gQmFkQ2hhciwgLyogMTM1ICovIEJhZENo
YXIsCi0gICAgLyogMTM2ICovIEJhZENoYXIsIC8qIDEzNyAqLyBCYWRDaGFyLCAvKiAxMzggKi8g
QmFkQ2hhciwgLyogMTM5ICovIEJhZENoYXIsCi0gICAgLyogMTQwICovIEJhZENoYXIsIC8qIDE0
MSAqLyBCYWRDaGFyLCAvKiAxNDIgKi8gQmFkQ2hhciwgLyogMTQzICovIEJhZENoYXIsCi0gICAg
LyogMTQ0ICovIEJhZENoYXIsIC8qIDE0NSAqLyBCYWRDaGFyLCAvKiAxNDYgKi8gQmFkQ2hhciwg
LyogMTQ3ICovIEJhZENoYXIsCi0gICAgLyogMTQ4ICovIEJhZENoYXIsIC8qIDE0OSAqLyBCYWRD
aGFyLCAvKiAxNTAgKi8gQmFkQ2hhciwgLyogMTUxICovIEJhZENoYXIsCi0gICAgLyogMTUyICov
IEJhZENoYXIsIC8qIDE1MyAqLyBCYWRDaGFyLCAvKiAxNTQgKi8gQmFkQ2hhciwgLyogMTU1ICov
IEJhZENoYXIsCi0gICAgLyogMTU2ICovIEJhZENoYXIsIC8qIDE1NyAqLyBCYWRDaGFyLCAvKiAx
NTggKi8gQmFkQ2hhciwgLyogMTU5ICovIEJhZENoYXIsCi0gICAgLyogMTYwICovIEJhZENoYXIs
IC8qIDE2MSAqLyBCYWRDaGFyLCAvKiAxNjIgKi8gQmFkQ2hhciwgLyogMTYzICovIEJhZENoYXIs
Ci0gICAgLyogMTY0ICovIEJhZENoYXIsIC8qIDE2NSAqLyBCYWRDaGFyLCAvKiAxNjYgKi8gQmFk
Q2hhciwgLyogMTY3ICovIEJhZENoYXIsCi0gICAgLyogMTY4ICovIEJhZENoYXIsIC8qIDE2OSAq
LyBCYWRDaGFyLCAvKiAxNzAgKi8gQmFkQ2hhciwgLyogMTcxICovIEJhZENoYXIsCi0gICAgLyog
MTcyICovIEJhZENoYXIsIC8qIDE3MyAqLyBCYWRDaGFyLCAvKiAxNzQgKi8gQmFkQ2hhciwgLyog
MTc1ICovIEJhZENoYXIsCi0gICAgLyogMTc2ICovIEJhZENoYXIsIC8qIDE3NyAqLyBCYWRDaGFy
LCAvKiAxNzggKi8gQmFkQ2hhciwgLyogMTc5ICovIEJhZENoYXIsCi0gICAgLyogMTgwICovIEJh
ZENoYXIsIC8qIDE4MSAqLyBCYWRDaGFyLCAvKiAxODIgKi8gQmFkQ2hhciwgLyogMTgzICovIEJh
ZENoYXIsCi0gICAgLyogMTg0ICovIEJhZENoYXIsIC8qIDE4NSAqLyBCYWRDaGFyLCAvKiAxODYg
Ki8gQmFkQ2hhciwgLyogMTg3ICovIEJhZENoYXIsCi0gICAgLyogMTg4ICovIEJhZENoYXIsIC8q
IDE4OSAqLyBCYWRDaGFyLCAvKiAxOTAgKi8gQmFkQ2hhciwgLyogMTkxICovIEJhZENoYXIsCi0g
ICAgLyogMTkyICovIEJhZENoYXIsIC8qIDE5MyAqLyBCYWRDaGFyLCAvKiAxOTQgKi8gQmFkQ2hh
ciwgLyogMTk1ICovIEJhZENoYXIsCi0gICAgLyogMTk2ICovIEJhZENoYXIsIC8qIDE5NyAqLyBC
YWRDaGFyLCAvKiAxOTggKi8gQmFkQ2hhciwgLyogMTk5ICovIEJhZENoYXIsCi0gICAgLyogMjAw
ICovIEJhZENoYXIsIC8qIDIwMSAqLyBCYWRDaGFyLCAvKiAyMDIgKi8gQmFkQ2hhciwgLyogMjAz
ICovIEJhZENoYXIsCi0gICAgLyogMjA0ICovIEJhZENoYXIsIC8qIDIwNSAqLyBCYWRDaGFyLCAv
KiAyMDYgKi8gQmFkQ2hhciwgLyogMjA3ICovIEJhZENoYXIsCi0gICAgLyogMjA4ICovIEJhZENo
YXIsIC8qIDIwOSAqLyBCYWRDaGFyLCAvKiAyMTAgKi8gQmFkQ2hhciwgLyogMjExICovIEJhZENo
YXIsCi0gICAgLyogMjEyICovIEJhZENoYXIsIC8qIDIxMyAqLyBCYWRDaGFyLCAvKiAyMTQgKi8g
QmFkQ2hhciwgLyogMjE1ICovIEJhZENoYXIsCi0gICAgLyogMjE2ICovIEJhZENoYXIsIC8qIDIx
NyAqLyBCYWRDaGFyLCAvKiAyMTggKi8gQmFkQ2hhciwgLyogMjE5ICovIEJhZENoYXIsCi0gICAg
LyogMjIwICovIEJhZENoYXIsIC8qIDIyMSAqLyBCYWRDaGFyLCAvKiAyMjIgKi8gQmFkQ2hhciwg
LyogMjIzICovIEJhZENoYXIsCi0gICAgLyogMjI0ICovIEJhZENoYXIsIC8qIDIyNSAqLyBCYWRD
aGFyLCAvKiAyMjYgKi8gQmFkQ2hhciwgLyogMjI3ICovIEJhZENoYXIsCi0gICAgLyogMjI4ICov
IEJhZENoYXIsIC8qIDIyOSAqLyBCYWRDaGFyLCAvKiAyMzAgKi8gQmFkQ2hhciwgLyogMjMxICov
IEJhZENoYXIsCi0gICAgLyogMjMyICovIEJhZENoYXIsIC8qIDIzMyAqLyBCYWRDaGFyLCAvKiAy
MzQgKi8gQmFkQ2hhciwgLyogMjM1ICovIEJhZENoYXIsCi0gICAgLyogMjM2ICovIEJhZENoYXIs
IC8qIDIzNyAqLyBCYWRDaGFyLCAvKiAyMzggKi8gQmFkQ2hhciwgLyogMjM5ICovIEJhZENoYXIs
Ci0gICAgLyogMjQwICovIEJhZENoYXIsIC8qIDI0MSAqLyBCYWRDaGFyLCAvKiAyNDIgKi8gQmFk
Q2hhciwgLyogMjQzICovIEJhZENoYXIsCi0gICAgLyogMjQ0ICovIEJhZENoYXIsIC8qIDI0NSAq
LyBCYWRDaGFyLCAvKiAyNDYgKi8gQmFkQ2hhciwgLyogMjQ3ICovIEJhZENoYXIsCi0gICAgLyog
MjQ4ICovIEJhZENoYXIsIC8qIDI0OSAqLyBCYWRDaGFyLCAvKiAyNTAgKi8gQmFkQ2hhciwgLyog
MjUxICovIEJhZENoYXIsCi0gICAgLyogMjUyICovIEJhZENoYXIsIC8qIDI1MyAqLyBCYWRDaGFy
LCAvKiAyNTQgKi8gQmFkQ2hhciwgLyogMjU1ICovIEJhZENoYXIKLX07Ci0KLXN0YXRpYyBpbnQg
Y29weVBhdGhSZW1vdmluZ0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBzcmNT
dGFydCwgaW50IHNyY0VuZCk7Ci1zdGF0aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0cmluZyhjb25z
dCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5nJiwgQ2hhckJ1ZmZlciYgb3VwdXQpOwot
c3RhdGljIFN0cmluZyBzdWJzdGl0dXRlQmFja3NsYXNoZXMoY29uc3QgU3RyaW5nJik7Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVtZUZpcnN0Q2hhcihjaGFyIGMpIHsgcmV0dXJuIGNoYXJh
Y3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYgU2NoZW1lRmly
c3RDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVGaXJzdENoYXIoVUNoYXIgYykg
eyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgU2NoZW1lRmly
c3RDaGFyKTsgfQotc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1lQ2hhcihjaGFyIGMpIHsgcmV0
dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldICYg
U2NoZW1lQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1lQ2hhcihVQ2hhciBjKSB7
IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBTY2hlbWVDaGFy
KTsgfQotc3RhdGljIGlubGluZSBib29sIGlzVXNlckluZm9DaGFyKHVuc2lnbmVkIGNoYXIgYykg
eyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIFVzZXJJbmZvQ2hhcjsgfQotc3RhdGlj
IGlubGluZSBib29sIGlzSG9zdG5hbWVDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyByZXR1cm4gY2hh
cmFjdGVyQ2xhc3NUYWJsZVtjXSAmIEhvc3RuYW1lQ2hhcjsgfQotc3RhdGljIGlubGluZSBib29s
IGlzSVB2NkNoYXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxl
W2NdICYgSVB2NkNoYXI7IH0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1BhdGhTZWdtZW50RW5kQ2hh
cihjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNzVGFibGVbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oYyldICYgUGF0aFNlZ21lbnRFbmRDaGFyOyB9Ci1zdGF0aWMgaW5saW5lIGJvb2wg
aXNQYXRoU2VnbWVudEVuZENoYXIoVUNoYXIgYykgeyByZXR1cm4gYyA8PSAweGZmICYmIChjaGFy
YWN0ZXJDbGFzc1RhYmxlW2NdICYgUGF0aFNlZ21lbnRFbmRDaGFyKTsgfQotc3RhdGljIGlubGlu
ZSBib29sIGlzQmFkQ2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJuIGNoYXJhY3RlckNsYXNz
VGFibGVbY10gJiBCYWRDaGFyOyB9Ci0gICAgCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hlbWVD
aGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2FzZShjaGFyIGNoYXJhY3RlciwgY2hhciBzY2hlbWVDaGFy
YWN0ZXIpCi17Ci0gICAgQVNTRVJUKGlzU2NoZW1lQ2hhcihjaGFyYWN0ZXIpKTsKLSAgICBBU1NF
UlQoc2NoZW1lQ2hhcmFjdGVyICYgMHgyMCk7Ci0gICAgQVNTRVJUKGlzQVNDSUlMb3dlcihzY2hl
bWVDaGFyYWN0ZXIpIHx8ICghaXNBU0NJSVVwcGVyKHNjaGVtZUNoYXJhY3RlcikgJiYgaXNTY2hl
bWVDaGFyKHNjaGVtZUNoYXJhY3RlcikpKTsKLSAgICByZXR1cm4gKGNoYXJhY3RlciB8IDB4MjAp
ID09IHNjaGVtZUNoYXJhY3RlcjsKLX0KLQotLy8gQ29waWVzIHRoZSBzb3VyY2UgdG8gdGhlIGRl
c3RpbmF0aW9uLCBhc3N1bWluZyBhbGwgdGhlIHNvdXJjZSBjaGFyYWN0ZXJzIGFyZQotLy8gQVND
SUkuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbXVzdCBiZSBsYXJnZSBlbm91Z2guIE51bGwgY2hh
cmFjdGVycyBhcmUgYWxsb3dlZAotLy8gaW4gdGhlIHNvdXJjZSBzdHJpbmcsIGFuZCBubyBhdHRl
bXB0IGlzIG1hZGUgdG8gbnVsbC10ZXJtaW5hdGUgdGhlIHJlc3VsdC4KLXN0YXRpYyB2b2lkIGNv
cHlBU0NJSShjb25zdCBTdHJpbmcmIHN0cmluZywgY2hhciogZGVzdCkKLXsKLSAgICBpZiAoc3Ry
aW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0cmluZy5pczhCaXQo
KSkKLSAgICAgICAgbWVtY3B5KGRlc3QsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVu
Z3RoKCkpOwotICAgIGVsc2UgewotICAgICAgICBjb25zdCBVQ2hhciogc3JjID0gc3RyaW5nLmNo
YXJhY3RlcnMxNigpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgICAg
ZGVzdFtpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHNyY1tpXSk7Ci0gICAgfQotfQotCi1zdGF0aWMg
dm9pZCBhcHBlbmRBU0NJSShjb25zdCBTdHJpbmcmIGJhc2UsIGNvbnN0IGNoYXIqIHJlbCwgc2l6
ZV90IGxlbiwgQ2hhckJ1ZmZlciYgYnVmZmVyKQotewotICAgIGJ1ZmZlci5yZXNpemUoYmFzZS5s
ZW5ndGgoKSArIGxlbiArIDEpOwotICAgIGNvcHlBU0NJSShiYXNlLCBidWZmZXIuZGF0YSgpKTsK
LSAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSArIGJhc2UubGVuZ3RoKCksIHJlbCwgbGVuKTsKLSAg
ICBidWZmZXJbYnVmZmVyLnNpemUoKSAtIDFdID0gJ1wwJzsKLX0KLQotLy8gRklYTUU6IE1vdmUg
dG8gV1RGU3RyaW5nLmggZXZlbnR1YWxseS4KLS8vIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBm
aXJzdCBpbmRleCBpbiBzdHJpbmcgfHN8IG9mIGFueSBvZiB0aGUgY2hhcmFjdGVycwotLy8gaW4g
fHRvRmluZHwuIHx0b0ZpbmR8IHNob3VsZCBiZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIGFs
bCBjaGFyYWN0ZXJzIHVwCi0vLyB0byB0aGUgbnVsbCB3aWxsIGJlIHNlYXJjaGVkLiBSZXR1cm5z
IGludCBpZiBub3QgZm91bmQuCi1zdGF0aWMgaW50IGZpbmRGaXJzdE9mKGNvbnN0IFVDaGFyKiBz
LCBpbnQgc0xlbiwgaW50IHN0YXJ0UG9zLCBjb25zdCBjaGFyKiB0b0ZpbmQpCi17Ci0gICAgZm9y
IChpbnQgaSA9IHN0YXJ0UG9zOyBpIDwgc0xlbjsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIq
IGN1ciA9IHRvRmluZDsKLSAgICAgICAgd2hpbGUgKCpjdXIpIHsKLSAgICAgICAgICAgIGlmIChz
W2ldID09ICooY3VyKyspKQotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGNoZWNrRW5jb2Rl
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHVybCwgdXJs
LmNvbnRhaW5zT25seUFTQ0lJKCkpOwotICAgIEFTU0VSVF9VTlVTRUQodXJsLCB1cmwuaXNFbXB0
eSgpIHx8IGlzU2NoZW1lRmlyc3RDaGFyKHVybFswXSkpOwotfQotCi1pbmxpbmUgYm9vbCBLVVJM
Ojpwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBwcm90b2NvbCkK
LXsKLSAgICByZXR1cm4gV2ViQ29yZTo6cHJvdG9jb2xJcyhzdHJpbmcsIHByb3RvY29sKTsKLX0K
LQotdm9pZCBLVVJMOjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX2lzVmFsaWQgPSBmYWxzZTsKLSAg
ICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKLSAgICBtX3NjaGVtZUVuZCA9IDA7
Ci0gICAgbV91c2VyU3RhcnQgPSAwOwotICAgIG1fdXNlckVuZCA9IDA7Ci0gICAgbV9wYXNzd29y
ZEVuZCA9IDA7Ci0gICAgbV9ob3N0RW5kID0gMDsKLSAgICBtX3BvcnRFbmQgPSAwOwotICAgIG1f
cGF0aEVuZCA9IDA7Ci0gICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSAwOwotICAgIG1fcXVlcnlF
bmQgPSAwOwotICAgIG1fZnJhZ21lbnRFbmQgPSAwOwotfQotCi1LVVJMOjpLVVJMKFBhcnNlZFVS
TFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgcGFyc2UodXJsKTsKLSAgICBB
U1NFUlQodXJsID09IG1fc3RyaW5nKTsKLX0KLQotS1VSTDo6S1VSTChjb25zdCBLVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlKQotewotICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVU
RjhFbmNvZGluZygpKTsKLX0KLQotS1VSTDo6S1VSTChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBT
dHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIC8v
IEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBh
cnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGgg
R0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMgY29udGVudHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVl
cnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5zZQotICAgIC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0g
ICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lv
bigpKTsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwodW5zaWduZWQgY2hhciBj
KQotewotICAgIC8vIEJyb3dzZXJzIGlnbm9yZSBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2Ug
YW5kIGNvbnRyb2wKLSAgICAvLyBjaGFyYWN0ZXJzIGZyb20gVVJMcy4gIE5vdGUgdGhhdCBjIGlz
IGFuICp1bnNpZ25lZCogY2hhciBoZXJlCi0gICAgLy8gc28gdGhpcyBjb21wYXJpc29uIHNob3Vs
ZCBvbmx5IGNhdGNoIGNvbnRyb2wgY2hhcmFjdGVycy4KLSAgICByZXR1cm4gYyA8PSAnICc7Ci19
Ci0KLXZvaWQgS1VSTDo6aW5pdChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0
aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIC8vIEFsbG93IHJlc29s
dXRpb25zIHdpdGggYSBudWxsIG9yIGVtcHR5IGJhc2UgVVJMLCBidXQgbm90IHdpdGggYW55IG90
aGVyIGludmFsaWQgb25lLgotICAgIC8vIEZJWE1FOiBJcyB0aGlzIGEgZ29vZCBydWxlPwotICAg
IGlmICghYmFzZS5tX2lzVmFsaWQgJiYgIWJhc2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fc3Ry
aW5nID0gcmVsYXRpdmU7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luIElFLCB0cmVhdCBiYWNr
c2xhc2hlcyBhcyBpZiB0aGV5IHdlcmUgc2xhc2hlcywKLSAgICAvLyBhcyBsb25nIGFzIHdlJ3Jl
IG5vdCBkZWFsaW5nIHdpdGggamF2YXNjcmlwdDogb3IgZGF0YTogVVJMcy4KLSAgICBTdHJpbmcg
cmVsID0gcmVsYXRpdmU7Ci0gICAgaWYgKHJlbC5jb250YWlucygnXFwnKSAmJiAhKHByb3RvY29s
SXNKYXZhU2NyaXB0KHJlbCkgfHwgcHJvdG9jb2xJcyhyZWwsICJkYXRhIikpKQotICAgICAgICBy
ZWwgPSBzdWJzdGl0dXRlQmFja3NsYXNoZXMocmVsKTsKLQotICAgIGJvb2wgYWxsQVNDSUkgPSBy
ZWwuY29udGFpbnNPbmx5QVNDSUkoKTsKLSAgICBDaGFyQnVmZmVyIHN0ckJ1ZmZlcjsKLSAgICBj
aGFyKiBzdHI7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBpZiAoYWxsQVNDSUkpIHsKLSAgICAgICAg
bGVuID0gcmVsLmxlbmd0aCgpOwotICAgICAgICBzdHJCdWZmZXIucmVzaXplKGxlbiArIDEpOwot
ICAgICAgICBjb3B5QVNDSUkocmVsLCBzdHJCdWZmZXIuZGF0YSgpKTsKLSAgICAgICAgc3RyQnVm
ZmVyW2xlbl0gPSAwOwotICAgICAgICBzdHIgPSBzdHJCdWZmZXIuZGF0YSgpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGVuY29kZVJlbGF0aXZlU3RyaW5nKHJlbCwgZW5jb2RpbmcsIHN0ckJ1ZmZl
cik7Ci0gICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRhKCk7Ci0gICAgICAgIGxlbiA9IHN0cmxl
bihzdHIpOwotICAgIH0KLQotICAgIC8vIEdldCByaWQgb2YgbGVhZGluZyB3aGl0ZXNwYWNlIGFu
ZCBjb250cm9sIGNoYXJhY3RlcnMuCi0gICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJvbVVS
TCgqc3RyKSkgewotICAgICAgICBzdHIrKzsKLSAgICAgICAgLS1sZW47Ci0gICAgfQotCi0gICAg
Ly8gR2V0IHJpZCBvZiB0cmFpbGluZyB3aGl0ZXNwYWNlIGFuZCBjb250cm9sIGNoYXJhY3RlcnMu
Ci0gICAgd2hpbGUgKGxlbiAmJiBzaG91bGRUcmltRnJvbVVSTChzdHJbbGVuIC0gMV0pKQotICAg
ICAgICBzdHJbLS1sZW5dID0gJ1wwJzsKLQotICAgIC8vIEFjY29yZGluZyB0byB0aGUgUkZDLCB0
aGUgcmVmZXJlbmNlIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhbgotICAgIC8vIGFic29sdXRl
IFVSSSBpZiBwb3NzaWJsZSwgdXNpbmcgdGhlICJsZWZ0bW9zdCwgbG9uZ2VzdCIKLSAgICAvLyBh
bGdvcml0aG0uIElmIHRoZSBVUkkgcmVmZXJlbmNlIGlzIGFic29sdXRlIGl0IHdpbGwgaGF2ZSBh
Ci0gICAgLy8gc2NoZW1lLCBtZWFuaW5nIHRoYXQgaXQgd2lsbCBoYXZlIGEgY29sb24gYmVmb3Jl
IHRoZSBmaXJzdAotICAgIC8vIG5vbi1zY2hlbWUgZWxlbWVudC4KLSAgICBib29sIGFic29sdXRl
ID0gZmFsc2U7Ci0gICAgY2hhciogcCA9IHN0cjsKLSAgICBpZiAoaXNTY2hlbWVGaXJzdENoYXIo
KnApKSB7Ci0gICAgICAgICsrcDsKLSAgICAgICAgd2hpbGUgKGlzU2NoZW1lQ2hhcigqcCkpIHsK
LSAgICAgICAgICAgICsrcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoKnAgPT0gJzonKSB7Ci0g
ICAgICAgICAgICBpZiAocFsxXSAhPSAnLycgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYmFzZS5wcm90
b2NvbCgpLCBTdHJpbmcoc3RyLCBwIC0gc3RyKSkgJiYgYmFzZS5pc0hpZXJhcmNoaWNhbCgpKQot
ICAgICAgICAgICAgICAgIHN0ciA9IHAgKyAxOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFic29sdXRlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIENoYXJCdWZm
ZXIgcGFyc2VCdWZmZXI7Ci0KLSAgICBpZiAoYWJzb2x1dGUpIHsKLSAgICAgICAgcGFyc2Uoc3Ry
LCAmcmVsYXRpdmUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIElmIHRoZSBiYXNlIGlzIGVt
cHR5IG9yIG9wYXF1ZSAoZS5nLiBkYXRhOiBvciBqYXZhc2NyaXB0OiksIHRoZW4gdGhlIFVSTCBp
cyBpbnZhbGlkCi0gICAgICAgIC8vIHVubGVzcyB0aGUgcmVsYXRpdmUgVVJMIGlzIGEgc2luZ2xl
IGZyYWdtZW50LgotICAgICAgICBpZiAoIWJhc2UuaXNIaWVyYXJjaGljYWwoKSkgewotICAgICAg
ICAgICAgaWYgKHN0clswXSA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRBU0NJSShi
YXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVy
KTsKLSAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gcmVsYXRp
dmU7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChzdHJbMF0pIHsKLSAg
ICAgICAgY2FzZSAnXDAnOgotICAgICAgICAgICAgLy8gVGhlIHJlZmVyZW5jZSBpcyBlbXB0eSwg
c28gdGhpcyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBkb2N1bWVudCB3aXRoIGFueSBmcmFn
bWVudCBpZGVudGlmaWVyIHJlbW92ZWQuCi0gICAgICAgICAgICAqdGhpcyA9IGJhc2U7Ci0gICAg
ICAgICAgICByZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlICcjJzogewotICAgICAgICAgICAgLy8gbXVzdCBiZSBmcmFnbWVudC1vbmx5
IHJlZmVyZW5jZQotICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJh
c2UubV9xdWVyeUVuZCksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICBwYXJz
ZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlICc/JzogewotICAgICAgICAgICAgLy8gcXVlcnktb25seSBy
ZWZlcmVuY2UsIHNwZWNpYWwgY2FzZSBuZWVkZWQgZm9yIG5vbi1VUkwgcmVzdWx0cwotICAgICAg
ICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9wYXRoRW5kKSwgc3Ry
LCBsZW4sIHBhcnNlQnVmZmVyKTsKLSAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEo
KSwgJnJlbGF0aXZlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgJy8nOgotICAgICAgICAgICAgLy8gbXVzdCBiZSBuZXQtcGF0aCBvciBhYnNvbHV0ZS1wYXRo
IHJlZmVyZW5jZQotICAgICAgICAgICAgaWYgKHN0clsxXSA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAvLyBuZXQtcGF0aAotICAgICAgICAgICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJp
bmcubGVmdChiYXNlLm1fc2NoZW1lRW5kICsgMSksIHN0ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0g
ICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRpdmUpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBhYnMtcGF0aAotICAgICAgICAg
ICAgICAgIGFwcGVuZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcG9ydEVuZCksIHN0
ciwgbGVuLCBwYXJzZUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIu
ZGF0YSgpLCAmcmVsYXRpdmUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gbXVzdCBi
ZSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZQotCi0gICAgICAgICAgICAgICAgLy8gQmFzZSBwYXJ0
IHBsdXMgcmVsYXRpdmUgcGFydCBwbHVzIG9uZSBwb3NzaWJsZSBzbGFzaCBhZGRlZCBpbiBiZXR3
ZWVuIHBsdXMgdGVybWluYXRpbmcgXDAgYnl0ZS4KLSAgICAgICAgICAgICAgICBjb25zdCBzaXpl
X3QgYnVmZmVyU2l6ZSA9IGJhc2UubV9wYXRoRW5kICsgMSArIGxlbiArIDE7Ci0gICAgICAgICAg
ICAgICAgcGFyc2VCdWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwotCi0gICAgICAgICAgICAgICAg
Y2hhciogYnVmZmVyUG9zID0gcGFyc2VCdWZmZXIuZGF0YSgpOwotICAgICAgICAgICAgICAgIGNo
YXIqIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyUG9zOwotCi0gICAgICAgICAgICAgICAgLy8gZmlyc3Qg
Y29weSBldmVyeXRoaW5nIGJlZm9yZSB0aGUgcGF0aCBmcm9tIHRoZSBiYXNlCi0gICAgICAgICAg
ICAgICAgQ2hhckJ1ZmZlciBiYXNlU3RyaW5nQnVmZmVyKGJhc2UubV9zdHJpbmcubGVuZ3RoKCkp
OwotICAgICAgICAgICAgICAgIGNvcHlBU0NJSShiYXNlLm1fc3RyaW5nLCBiYXNlU3RyaW5nQnVm
ZmVyLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogYmFzZVN0cmluZyA9IGJh
c2VTdHJpbmdCdWZmZXIuZGF0YSgpOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJhc2VT
dHJpbmdTdGFydCA9IGJhc2VTdHJpbmc7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcGF0
aFN0YXJ0ID0gYmFzZVN0cmluZ1N0YXJ0ICsgYmFzZS5tX3BvcnRFbmQ7Ci0gICAgICAgICAgICAg
ICAgd2hpbGUgKGJhc2VTdHJpbmdTdGFydCA8IHBhdGhTdGFydCkKLSAgICAgICAgICAgICAgICAg
ICAgKmJ1ZmZlclBvcysrID0gKmJhc2VTdHJpbmdTdGFydCsrOwotICAgICAgICAgICAgICAgIGNo
YXIqIGJ1ZmZlclBhdGhTdGFydCA9IGJ1ZmZlclBvczsKLQotICAgICAgICAgICAgICAgIC8vIG5v
dyBjb3B5IHRoZSBiYXNlIHBhdGgKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3Ry
aW5nRW5kID0gYmFzZVN0cmluZyArIGJhc2UubV9wYXRoRW5kOwotCi0gICAgICAgICAgICAgICAg
Ly8gZ28gYmFjayB0byB0aGUgbGFzdCBzbGFzaAotICAgICAgICAgICAgICAgIHdoaWxlIChiYXNl
U3RyaW5nRW5kID4gYmFzZVN0cmluZ1N0YXJ0ICYmIGJhc2VTdHJpbmdFbmRbLTFdICE9ICcvJykK
LSAgICAgICAgICAgICAgICAgICAgYmFzZVN0cmluZ0VuZC0tOwotCi0gICAgICAgICAgICAgICAg
aWYgKGJhc2VTdHJpbmdFbmQgPT0gYmFzZVN0cmluZ1N0YXJ0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIG5vIHBhdGggaW4gYmFzZSwgYWRkIGEgcGF0aCBzZXBhcmF0b3IgaWYgbmVjZXNzYXJ5
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiYXNlLm1fc2NoZW1lRW5kICsgMSAhPSBiYXNlLm1f
cGF0aEVuZCAmJiAqc3RyICYmICpzdHIgIT0gJz8nICYmICpzdHIgIT0gJyMnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgKmJ1ZmZlclBvcysrID0gJy8nOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBjb3B5UGF0aFJlbW92aW5nRG90
cyhidWZmZXJQb3MsIGJhc2VTdHJpbmdTdGFydCwgMCwgYmFzZVN0cmluZ0VuZCAtIGJhc2VTdHJp
bmdTdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogcmVsU3RyaW5nU3RhcnQgPSBzdHI7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVs
U3RyaW5nUG9zID0gcmVsU3RyaW5nU3RhcnQ7Ci0KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnJl
bFN0cmluZ1BvcyAmJiAqcmVsU3RyaW5nUG9zICE9ICc/JyAmJiAqcmVsU3RyaW5nUG9zICE9ICcj
JykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVsU3RyaW5nUG9zWzBdID09ICcuJyAmJiBi
dWZmZXJQb3NbLTFdID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGF0
aFNlZ21lbnRFbmRDaGFyKHJlbFN0cmluZ1Bvc1sxXSkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBza2lwIG92ZXIgIi4iIHNlZ21lbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWxTdHJpbmdQb3MgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
cmVsU3RyaW5nUG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbFN0cmluZ1Bvc1sxXSA9PSAnLicg
JiYgaXNQYXRoU2VnbWVudEVuZENoYXIocmVsU3RyaW5nUG9zWzJdKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLi4iIHNlZ21lbnQgYW5kIHJld2luZCB0aGUg
bGFzdCBzZWdtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFJGQyBsZWF2
ZXMgaXQgdXAgdG8gdGhlIGFwcCB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIGV4Y2VzcwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9vc2UgdG8g
ZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyByZWxpZXMgb24gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxT
dHJpbmdQb3MgKz0gMjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsU3RyaW5n
UG9zWzBdID09ICcvJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5n
UG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclBvcyA+IGJ1ZmZl
clBhdGhTdGFydCArIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlclBv
cy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChidWZmZXJQb3MgPiBidWZm
ZXJQYXRoU3RhcnQgKyAxICAmJiBidWZmZXJQb3NbLTFdICE9ICcvJykKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAqYnVmZmVyUG9zID0gKnJlbFN0cmluZ1BvczsK
LSAgICAgICAgICAgICAgICAgICAgcmVsU3RyaW5nUG9zKys7Ci0gICAgICAgICAgICAgICAgICAg
IGJ1ZmZlclBvcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIGFs
bCBkb25lIHdpdGggdGhlIHBhdGggd29yaywgbm93IGNvcHkgYW55IHJlbWFpbmRlcgotICAgICAg
ICAgICAgICAgIC8vIG9mIHRoZSByZWxhdGl2ZSByZWZlcmVuY2U7IHRoaXMgd2lsbCBhbHNvIGFk
ZCBhIG51bGwgdGVybWluYXRvcgotICAgICAgICAgICAgICAgIHN0cm5jcHkoYnVmZmVyUG9zLCBy
ZWxTdHJpbmdQb3MsIGJ1ZmZlclNpemUgLSAoYnVmZmVyUG9zIC0gYnVmZmVyU3RhcnQpKTsKLQot
ICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKLQot
ICAgICAgICAgICAgICAgIEFTU0VSVChzdHJsZW4ocGFyc2VCdWZmZXIuZGF0YSgpKSArIDEgPD0g
cGFyc2VCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotS1VSTCBLVVJMOjpjb3B5KCkgY29uc3QKLXsKLSAg
ICBLVVJMIHJlc3VsdCA9ICp0aGlzOwotICAgIHJlc3VsdC5tX3N0cmluZyA9IHJlc3VsdC5tX3N0
cmluZy5pc29sYXRlZENvcHkoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1TdHJpbmcgS1VS
TDo6bGFzdFBhdGhDb21wb25lbnQoKSBjb25zdAotewotICAgIGlmICghaGFzUGF0aCgpKQotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICB1bnNpZ25lZCBlbmQgPSBtX3BhdGhFbmQgLSAx
OwotICAgIGlmIChtX3N0cmluZ1tlbmRdID09ICcvJykKLSAgICAgICAgLS1lbmQ7Ci0KLSAgICBz
aXplX3Qgc3RhcnQgPSBtX3N0cmluZy5yZXZlcnNlRmluZCgnLycsIGVuZCk7Ci0gICAgaWYgKHN0
YXJ0IDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fcG9ydEVuZCkpCi0gICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICArK3N0YXJ0OwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhz
dGFydCwgZW5kIC0gc3RhcnQgKyAxKTsKLX0KLQotU3RyaW5nIEtVUkw6OnByb3RvY29sKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3NjaGVtZUVuZCk7Ci19Ci0KLVN0cmlu
ZyBLVVJMOjpob3N0KCkgY29uc3QKLXsKLSAgICBpbnQgc3RhcnQgPSBob3N0U3RhcnQoKTsKLSAg
ICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5nLnN1YnN0cmluZyhzdGFy
dCwgbV9ob3N0RW5kIC0gc3RhcnQpKTsKLX0KLQotdW5zaWduZWQgc2hvcnQgS1VSTDo6cG9ydCgp
IGNvbnN0Ci17Ci0gICAgLy8gV2UgcmV0dXJuIGEgcG9ydCBvZiAwIGlmIHRoZXJlIGlzIG5vIHBv
cnQgc3BlY2lmaWVkLiBUaGlzIGNhbiBoYXBwZW4gaW4gdHdvIHNpdHVhdGlvbnM6Ci0gICAgLy8g
MSkgVGhlIFVSTCBjb250YWlucyBubyBjb2xvbiBhZnRlciB0aGUgaG9zdCBuYW1lIGFuZCBiZWZv
cmUgdGhlIHBhdGggY29tcG9uZW50IG9mIHRoZSBVUkwuCi0gICAgLy8gMikgVGhlIFVSTCBjb250
YWlucyBhIGNvbG9uIGJ1dCB0aGVyZSdzIG5vIHBvcnQgbnVtYmVyIGJlZm9yZSB0aGUgcGF0aCBj
b21wb25lbnQgb2YgdGhlIFVSTCBiZWdpbnMuCi0gICAgaWYgKG1faG9zdEVuZCA9PSBtX3BvcnRF
bmQgfHwgbV9ob3N0RW5kID09IG1fcG9ydEVuZCAtIDEpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgY29uc3QgVUNoYXIqIHN0cmluZ0RhdGEgPSBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAg
Ym9vbCBvayA9IGZhbHNlOwotICAgIHVuc2lnbmVkIG51bWJlciA9IGNoYXJhY3RlcnNUb1VJbnRT
dHJpY3Qoc3RyaW5nRGF0YSArIG1faG9zdEVuZCArIDEsIG1fcG9ydEVuZCAtIG1faG9zdEVuZCAt
IDEsICZvayk7Ci0gICAgaWYgKCFvayB8fCBudW1iZXIgPiBtYXhpbXVtVmFsaWRQb3J0TnVtYmVy
KQotICAgICAgICByZXR1cm4gaW52YWxpZFBvcnROdW1iZXI7Ci0gICAgcmV0dXJuIG51bWJlcjsK
LX0KLQotU3RyaW5nIEtVUkw6OnBhc3MoKSBjb25zdAotewotICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwg
bV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsgCi19Ci0KLVN0cmluZyBLVVJMOjp1c2Vy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1fc3RyaW5n
LnN1YnN0cmluZyhtX3VzZXJTdGFydCwgbV91c2VyRW5kIC0gbV91c2VyU3RhcnQpKTsKLX0KLQot
U3RyaW5nIEtVUkw6OmZyYWdtZW50SWRlbnRpZmllcigpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZnJh
Z21lbnRFbmQgPT0gbV9xdWVyeUVuZCkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAg
cmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kICsgMSwgbV9mcmFnbWVudEVuZCAt
IChtX3F1ZXJ5RW5kICsgMSkpOwotfQotCi1ib29sIEtVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZnJhZ21lbnRFbmQgIT0gbV9xdWVyeUVuZDsKLX0K
LQotU3RyaW5nIEtVUkw6OmJhc2VBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3Ry
aW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xhc2gpOwotfQotCi0jaWYgIVBMQVRGT1JNKFFUKSAm
JiAhVVNFKENGKQotU3RyaW5nIEtVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKLXsKLSAgICBp
ZiAoIWlzVmFsaWQoKSB8fCAhaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotCi0gICAgcmV0dXJuIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKCkpOwotfQotI2Vu
ZGlmCi0KLSNpZmRlZiBOREVCVUcKLQotc3RhdGljIGlubGluZSB2b2lkIGFzc2VydFByb3RvY29s
SXNHb29kKGNvbnN0IGNoYXIqKQotewotfQotCi0jZWxzZQotCi1zdGF0aWMgdm9pZCBhc3NlcnRQ
cm90b2NvbElzR29vZChjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICBjb25zdCBjaGFyKiBw
ID0gcHJvdG9jb2w7Ci0gICAgd2hpbGUgKCpwKSB7Ci0gICAgICAgIEFTU0VSVCgqcCA+ICcgJyAm
JiAqcCA8IDB4N0YgJiYgISgqcCA+PSAnQScgJiYgKnAgPD0gJ1onKSk7Ci0gICAgICAgICsrcDsK
LSAgICB9Ci19Ci0KLSNlbmRpZgotCi1ib29sIEtVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciog
cHJvdG9jb2wpIGNvbnN0Ci17Ci0gICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOwot
Ci0gICAgLy8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0
ZWQgZXZlbiBpZiBLVVJMIGRlY2lkZXMgdGhleSBhcmUgaW52YWxpZC4KLSAgICAvLyBUaGUgZnJl
ZSBmdW5jdGlvbiBwcm90b2NvbElzSmF2YVNjcmlwdCgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQu
IAotICAgIEFTU0VSVCghZXF1YWxJZ25vcmluZ0Nhc2UocHJvdG9jb2wsIFN0cmluZygiamF2YXNj
cmlwdCIpKSk7Ci0KLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRG8gdGhlIGNvbXBhcmlzb24gd2l0aG91dCBtYWtpbmcgYSBuZXcgc3RyaW5nIG9i
amVjdC4KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fc2NoZW1lRW5kOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFwcm90b2NvbFtpXSB8fCAhaXNTY2hlbWVDaGFyYWN0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZShtX3N0cmluZ1tpXSwgcHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLSAgICByZXR1cm4gIXByb3RvY29sW21fc2NoZW1lRW5kXTsgLy8gV2Ugc2hvdWxkIGhh
dmUgY29uc3VtZWQgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIGFyZ3VtZW50LgotfQotCi1TdHJpbmcg
S1VSTDo6cXVlcnkoKSBjb25zdAotewotICAgIGlmIChtX3F1ZXJ5RW5kID09IG1fcGF0aEVuZCkK
LSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZyhtX3BhdGhFbmQgKyAxLCBtX3F1ZXJ5RW5kIC0gKG1fcGF0aEVuZCArIDEpKTsgCi19Ci0KLVN0
cmluZyBLVVJMOjpwYXRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcG9ydEVuZCwgbV9wYXRoRW5kIC0gbV9wb3J0RW5kKTsKLX0KLQotYm9vbCBLVVJMOjpzZXRQ
cm90b2NvbChjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgLy8gRmlyZWZveCBhbmQgSUUgcmVtb3Zl
IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4KLSAgICBzaXplX3Qgc2VwYXJhdG9yUG9z
aXRpb24gPSBzLmZpbmQoJzonKTsKLSAgICBTdHJpbmcgbmV3UHJvdG9jb2wgPSBzLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3JQb3NpdGlvbik7Ci0KLSAgICBpZiAoIWlzVmFsaWRQcm90b2NvbChuZXdQ
cm90b2NvbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghbV9pc1ZhbGlkKSB7
Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwYXJzZShuZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1
YnN0cmluZyhtX3NjaGVtZUVuZCkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEtVUkw6
OnNldEhvc3QoY29uc3QgU3RyaW5nJiBzKQotewotICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBl
bmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8v
IGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgaG9zdC4KLQotICAgIGJv
b2wgc2xhc2hTbGFzaE5lZWRlZCA9IG1fdXNlclN0YXJ0ID09IG1fc2NoZW1lRW5kICsgMTsKLQot
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQoaG9zdFN0YXJ0KCkpICsgKHNsYXNoU2xhc2hOZWVkZWQg
PyAiLy8iIDogIiIpICsgcyArIG1fc3RyaW5nLnN1YnN0cmluZyhtX2hvc3RFbmQpKTsKLX0KLQot
dm9pZCBLVVJMOjpyZW1vdmVQb3J0KCkKLXsKLSAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSAr
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKLX0KLQotdm9pZCBLVVJMOjpzZXRQb3J0
KHVuc2lnbmVkIHNob3J0IGkpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGJvb2wgY29sb25OZWVkZWQgPSBtX3BvcnRFbmQgPT0gbV9ob3N0RW5kOwotICAg
IGludCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAx
KTsKLQotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/
ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9y
dEVuZCkpOwotfQotCi12b2lkIEtVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaG9z
dEFuZFBvcnQpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2Fw
ZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMsCi0gICAgLy8gYW5kIHRvIGF2b2lkIGNo
YW5naW5nIG1vcmUgdGhhbiBqdXN0IGhvc3QgYW5kIHBvcnQuCi0KLSAgICBib29sIHNsYXNoU2xh
c2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7Ci0KLSAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIi
KSArIGhvc3RBbmRQb3J0ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwotfQotCi12
b2lkIEtVUkw6OnNldFVzZXIoY29uc3QgU3RyaW5nJiB1c2VyKQotewotICAgIGlmICghbV9pc1Zh
bGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3Rl
cnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRp
b25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNl
ciBsb2dpbi4KLQotICAgIGludCBlbmQgPSBtX3VzZXJFbmQ7Ci0gICAgaWYgKCF1c2VyLmlzRW1w
dHkoKSkgewotICAgICAgICBTdHJpbmcgdSA9IHVzZXI7Ci0gICAgICAgIGlmIChtX3VzZXJTdGFy
dCA9PSBtX3NjaGVtZUVuZCArIDEpCi0gICAgICAgICAgICB1ID0gIi8vIiArIHU7Ci0gICAgICAg
IC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KLSAgICAgICAgaWYgKGVu
ZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0g
IT0gJ0AnKSkKLSAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIHBhcnNlKG1fc3Ry
aW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIg
dXNlciBub3IgcGFzc3dvcmQuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVu
ZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAg
ICAgZW5kICs9IDE7Ci0gICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4
dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFu
Z2UuCi0gICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpCi0gICAgICAgICAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKLSAg
ICB9Ci19Ci0KLXZvaWQgS1VSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQotewot
ICAgIGlmICghbV9pc1ZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogTm9u
LUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBh
cnNlKCkgZXhwZWN0YXRpb25zLAotICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRo
YW4ganVzdCB0aGUgdXNlciBwYXNzd29yZC4KLQotICAgIGludCBlbmQgPSBtX3Bhc3N3b3JkRW5k
OwotICAgIGlmICghcGFzc3dvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFN0cmluZyBwID0gIjoi
ICsgcGFzc3dvcmQgKyAiQCI7Ci0gICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9zY2hlbWVFbmQg
KyAxKQotICAgICAgICAgICAgcCA9ICIvLyIgKyBwOwotICAgICAgICAvLyBFYXQgdGhlIGV4aXN0
aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCi0gICAgICAgIGlmIChl
bmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQotICAgICAgICAgICAgZW5k
ICs9IDE7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIHAgKyBtX3N0
cmluZy5zdWJzdHJpbmcoZW5kKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmVtb3ZlICdA
JyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgotICAgICAgICBpZiAo
bV91c2VyU3RhcnQgPT0gbV91c2VyRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdb
ZW5kXSA9PSAnQCcpCi0gICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBu
b3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
Ci0gICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBtX3N0cmluZy5z
dWJzdHJpbmcoZW5kKSk7Ci0gICAgfQotfQotCi12b2lkIEtVUkw6OnNldEZyYWdtZW50SWRlbnRp
Zmllcihjb25zdCBTdHJpbmcmIHMpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29k
ZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMuCi0gICAgcGFyc2Uo
bV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOwotfQotCi12b2lkIEtVUkw6OnJl
bW92ZUZyYWdtZW50SWRlbnRpZmllcigpCi17Ci0gICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAg
IHJldHVybjsKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpKTsKLX0KLSAgICAK
LXZvaWQgS1VSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVyeSkKLXsKLSAgICBpZiAoIW1f
aXNWYWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6ICcjJyBhbmQgbm9uLUFT
Q0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkLgotICAgIC8vIFVzdWFs
bHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBub3QgVVRG
LTgsIGJ1dCB3ZSBkb24ndCBoYXZlCi0gICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVudCBpbiB0
aGlzIGZ1bmN0aW9uLgotICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/
JykgJiYgIXF1ZXJ5LmlzTnVsbCgpKQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0
aEVuZCkgKyAiPyIgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0g
ICAgZWxzZQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyBxdWVyeSAr
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0KLX0KLQotdm9pZCBLVVJMOjpzZXRQ
YXRoKGNvbnN0IFN0cmluZyYgcykKLXsKLSAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gRklYTUU6IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMgZG9lcyBu
b3QgY29ycmVjdGx5IGVzY2FwZSAnIycgYW5kICc/Jywgc28gZnJhZ21lbnQgYW5kIHF1ZXJ5IHBh
cnRzCi0gICAgLy8gbWF5IGJlIGluYWR2ZXJ0ZW50bHkgYWZmZWN0ZWQuCi0gICAgU3RyaW5nIHBh
dGggPSBzOwotICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKLSAgICAg
ICAgcGF0aCA9ICIvIiArIHBhdGg7Ci0KLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVu
ZCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcGF0aEVuZCkpOwotfQotCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8
VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgVVRGOEVuY29kaW5nKCkpOwotfQotCi1TdHJpbmcg
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nKQotewotICAgIHJldHVybiBkZWNvZGVFc2NhcGVTZXF1ZW5jZXM8
VVJMRXNjYXBlU2VxdWVuY2U+KHN0cmluZywgZW5jb2RpbmcpOwotfQotCi0vLyBDYXV0aW9uOiBU
aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGJvdW5kcyBjaGVjay4KLXN0YXRpYyB2b2lkIGFwcGVuZEVz
Y2FwZWRDaGFyKGNoYXIqJiBidWZmZXIsIHVuc2lnbmVkIGNoYXIgYykKLXsKLSAgICAqYnVmZmVy
KysgPSAnJSc7Ci0gICAgcGxhY2VCeXRlQXNIZXgoYywgYnVmZmVyKTsKLX0KLQotc3RhdGljIHZv
aWQgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhjaGFyKiYgYnVmZmVyLCBjb25zdCBjaGFyKiBzdHJT
dGFydCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFyKiBwID0gYnVmZmVyOwotCi0gICAgY29u
c3QgY2hhciogc3RyID0gc3RyU3RhcnQ7Ci0gICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyU3Rh
cnQgKyBsZW5ndGg7Ci0gICAgd2hpbGUgKHN0ciA8IHN0ckVuZCkgewotICAgICAgICB1bnNpZ25l
ZCBjaGFyIGMgPSAqc3RyKys7Ci0gICAgICAgIGlmIChpc0JhZENoYXIoYykpIHsKLSAgICAgICAg
ICAgIGlmIChjID09ICclJyB8fCBjID09ICc/JykKLSAgICAgICAgICAgICAgICAqcCsrID0gYzsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGMgIT0gMHgwOSAmJiBjICE9IDB4MGEgJiYgYyAhPSAweDBk
KQotICAgICAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRDaGFyKHAsIGMpOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICpwKysgPSBjOwotICAgIH0KLQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0K
LXN0YXRpYyB2b2lkIGVzY2FwZUFuZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQoY2hhciomIGJ1
ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgY2hhciog
cCA9IGJ1ZmZlcjsKLQotICAgIGNvbnN0IGNoYXIqIHN0ciA9IHN0clN0YXJ0OwotICAgIGNvbnN0
IGNoYXIqIHN0ckVuZCA9IHN0clN0YXJ0ICsgbGVuZ3RoOwotICAgIHdoaWxlIChzdHIgPCBzdHJF
bmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwotICAgICAgICAvLyBTdHJp
cCBDUiwgTEYgYW5kIFRhYiBmcm9tIGZyYWdtZW50cywgcGVyOgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc3MAotICAgICAgICBpZiAoYyA9PSAw
eDA5IHx8IGMgPT0gMHgwYSB8fCBjID09IDB4MGQpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAvLyBDaHJvbWUgYW5kIElFIGFsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIGluIGZy
YWdtZW50cywgaG93ZXZlciBkb2luZwotICAgICAgICAvLyBzbyB3b3VsZCBoaXQgYW4gQVNTRVJU
IGluIGNoZWNrRW5jb2RlZFN0cmluZywgc28gZm9yIG5vdyB3ZSBkb24ndC4KLSAgICAgICAgaWYg
KGMgPCAweDIwIHx8IGMgPj0gMTI3KSB7Ci0gICAgICAgICAgICBhcHBlbmRFc2NhcGVkQ2hhcihw
LCBjKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgICpwKysgPSBj
OwotICAgIH0KLQotICAgIGJ1ZmZlciA9IHA7Ci19Ci0KLS8vIGNvcHkgYSBwYXRoLCBhY2NvdW50
aW5nIGZvciAiLiIgYW5kICIuLiIgc2VnbWVudHMKLXN0YXRpYyBpbnQgY29weVBhdGhSZW1vdmlu
Z0RvdHMoY2hhciogZHN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBzcmNTdGFydCwgaW50IHNyY0Vu
ZCkKLXsKLSAgICBjaGFyKiBidWZmZXJQYXRoU3RhcnQgPSBkc3Q7Ci0KLSAgICAvLyBlbXB0eSBw
YXRoIGlzIGEgc3BlY2lhbCBjYXNlLCBhbmQgbmVlZCBub3QgaGF2ZSBhIGxlYWRpbmcgc2xhc2gK
LSAgICBpZiAoc3JjU3RhcnQgIT0gc3JjRW5kKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGJhc2VT
dHJpbmdTdGFydCA9IHNyYyArIHNyY1N0YXJ0OwotICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3Ry
aW5nRW5kID0gc3JjICsgc3JjRW5kOwotICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nUG9z
ID0gYmFzZVN0cmluZ1N0YXJ0OwotCi0gICAgICAgIC8vIHRoaXMgY29kZSBpcyB1bnByZXBhcmVk
IGZvciBwYXRocyB0aGF0IGRvIG5vdCBiZWdpbiB3aXRoIGEKLSAgICAgICAgLy8gc2xhc2ggYW5k
IHdlIHNob3VsZCBhbHdheXMgaGF2ZSBvbmUgaW4gdGhlIHNvdXJjZSBzdHJpbmcKLSAgICAgICAg
QVNTRVJUKGJhc2VTdHJpbmdQb3NbMF0gPT0gJy8nKTsKLQotICAgICAgICAvLyBjb3B5IHRoZSBs
ZWFkaW5nIHNsYXNoIGludG8gdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgICpkc3QgPSAqYmFzZVN0
cmluZ1BvczsKLSAgICAgICAgYmFzZVN0cmluZ1BvcysrOwotICAgICAgICBkc3QrKzsKLQotICAg
ICAgICB3aGlsZSAoYmFzZVN0cmluZ1BvcyA8IGJhc2VTdHJpbmdFbmQpIHsKLSAgICAgICAgICAg
IGlmIChiYXNlU3RyaW5nUG9zWzBdID09ICcuJyAmJiBkc3RbLTFdID09ICcvJykgewotICAgICAg
ICAgICAgICAgIGlmIChiYXNlU3RyaW5nUG9zWzFdID09ICcvJyB8fCBiYXNlU3RyaW5nUG9zICsg
MSA9PSBiYXNlU3RyaW5nRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAi
LiIgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9zICs9IDI7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmFz
ZVN0cmluZ1Bvc1sxXSA9PSAnLicgJiYgKGJhc2VTdHJpbmdQb3NbMl0gPT0gJy8nIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9zICsgMiA9PSBi
YXNlU3RyaW5nRW5kKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4uIiBz
ZWdtZW50IGFuZCByZXdpbmQgdGhlIGxhc3Qgc2VnbWVudAotICAgICAgICAgICAgICAgICAgICAv
LyB0aGUgUkZDIGxlYXZlcyBpdCB1cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdp
dGggZXhjZXNzCi0gICAgICAgICAgICAgICAgICAgIC8vICIuLiIgc2VnbWVudHMgLSB3ZSBjaG9v
c2UgdG8gZHJvcCB0aGVtIHNpbmNlIHNvbWUgd2ViIGNvbnRlbnQKLSAgICAgICAgICAgICAgICAg
ICAgLy8gcmVsaWVzIG9uIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgIGJhc2VTdHJpbmdQb3Mg
Kz0gMzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCArIDEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkc3QtLTsKLSAgICAgICAgICAgICAgICAgICAgd2hp
bGUgKGRzdCA+IGJ1ZmZlclBhdGhTdGFydCAmJiBkc3RbLTFdICE9ICcvJykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRzdC0tOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICpkc3QgPSAqYmFzZVN0
cmluZ1BvczsKLSAgICAgICAgICAgIGJhc2VTdHJpbmdQb3MrKzsKLSAgICAgICAgICAgIGRzdCsr
OwotICAgICAgICB9Ci0gICAgfQotICAgICpkc3QgPSAnXDAnOwotICAgIHJldHVybiBkc3QgLSBi
dWZmZXJQYXRoU3RhcnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90
RG90KGNvbnN0IGNoYXIqIHN0cikKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3RyKTsKLSAgICBpZiAoISpwKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgY2hhciBwYyA9ICpwOwotICAgIHdo
aWxlICh1bnNpZ25lZCBjaGFyIGMgPSAqKytwKSB7Ci0gICAgICAgIGlmIChjID09ICcuJyAmJiAo
cGMgPT0gJy8nIHx8IHBjID09ICcuJykpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgcGMgPSBjOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgS1VSTDo6cGFy
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgY2hlY2tFbmNvZGVkU3RyaW5nKHN0cmlu
Zyk7Ci0KLSAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkgKyAxKTsKLSAgICBj
b3B5QVNDSUkoc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLSAgICBidWZmZXJbc3RyaW5nLmxlbmd0
aCgpXSA9ICdcMCc7Ci0gICAgcGFyc2UoYnVmZmVyLmRhdGEoKSwgJnN0cmluZyk7Ci19Ci0KLXRl
bXBsYXRlPHNpemVfdCBsZW5ndGg+Ci1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hh
ciogYSwgY29uc3QgY2hhciAoJmIpW2xlbmd0aF0pCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8
c2l6ZV90IGxlbmd0aEI+Ci1zdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogc3Ry
aW5nQSwgc2l6ZV90IGxlbmd0aEEsIGNvbnN0IGNoYXIgKCZzdHJpbmdCKVtsZW5ndGhCXSkKLXsK
LSAgICByZXR1cm4gbGVuZ3RoQSA9PSBsZW5ndGhCICYmIGVxdWFsKHN0cmluZ0EsIHN0cmluZ0Ip
OwotfQotCi0vLyBMaXN0IG9mIGRlZmF1bHQgc2NoZW1lcyBpcyB0YWtlbiBmcm9tIGdvb2dsZS11
cmw6Ci0vLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLXVybC9zb3VyY2UvYnJvd3Nl
L3RydW5rL3NyYy91cmxfY2Fub25fc3RkdXJsLmNjIzEyMAotc3RhdGljIGlubGluZSBib29sIGlz
RGVmYXVsdFBvcnRGb3JTY2hlbWUoY29uc3QgY2hhciogcG9ydCwgc2l6ZV90IHBvcnRMZW5ndGgs
IGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0aCkKLXsKLSAgICAvLyBUaGlz
IHN3aXRjaCBpcyB0aGVvcmV0aWNhbGx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiAgSXQg
Y2FtZSBvdmVyIHdoZW4KLSAgICAvLyB0aGUgY29kZSB3YXMgbW92ZWQgZnJvbSBnb29nbGUtdXJs
LCBidXQgbWF5IGJlIHJlbW92ZWQgbGF0ZXIuCi0gICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsK
LSAgICBjYXNlIDI6Ci0gICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKSAmJiBl
cXVhbChwb3J0LCBwb3J0TGVuZ3RoLCBodHRwUG9ydCk7Ci0gICAgY2FzZSAzOgotICAgICAgICBp
ZiAoZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHBv
cnQsIHBvcnRMZW5ndGgsIGZ0cFBvcnQpOwotICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCB3c3NT
Y2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBz
UG9ydCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDoKLSAgICAgICAgcmV0dXJuIGVxdWFs
KHNjaGVtZSwgaHR0cFNjaGVtZSkgJiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cFBvcnQp
OwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUp
ICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBzUG9ydCk7Ci0gICAgY2FzZSA2OgotICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBv
cnRMZW5ndGgsIGdvcGhlclBvcnQpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBob3N0UG9ydElzRW1wdHlCdXRDcmVkZW50aWFsc0FyZVByZXNlbnQo
aW50IGhvc3RTdGFydCwgaW50IHBvcnRFbmQsIGNoYXIgdXNlcmluZm9FbmRDaGFyKQotewotICAg
IHJldHVybiB1c2VyaW5mb0VuZENoYXIgPT0gJ0AnICYmIGhvc3RTdGFydCA9PSBwb3J0RW5kOwot
fQotCi1zdGF0aWMgYm9vbCBpc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUoY29uc3QgY2hhciog
c2NoZW1lLCBzaXplX3Qgc2NoZW1lTGVuZ3RoKQotewotICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3Ro
KSB7Ci0gICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7
Ci0gICAgY2FzZSAzOgotICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8
IGVxdWFsKHNjaGVtZSwgd3NzU2NoZW1lKTsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIHJldHVybiBl
cXVhbChzY2hlbWUsIGh0dHBTY2hlbWUpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOwotICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVx
dWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1zdGF0aWMgYm9vbCBpc0Nhbm9uaWNhbEhvc3RuYW1lTG93ZXJjYXNlRm9yU2NoZW1lKGNvbnN0
IGNoYXIqIHNjaGVtZSwgc2l6ZV90IHNjaGVtZUxlbmd0aCkKLXsKLSAgICBzd2l0Y2ggKHNjaGVt
ZUxlbmd0aCkgewotICAgIGNhc2UgMjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NT
Y2hlbWUpOwotICAgIGNhc2UgMzoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZnRwU2No
ZW1lKSB8fCBlcXVhbChzY2hlbWUsIHdzc1NjaGVtZSk7Ci0gICAgY2FzZSA0OgotICAgICAgICBy
ZXR1cm4gZXF1YWwoc2NoZW1lLCBodHRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIGZpbGVTY2hl
bWUpOwotICAgIGNhc2UgNToKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hl
bWUpOwotICAgIGNhc2UgNjoKLSAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2No
ZW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEtVUkw6OnBhcnNlKGNv
bnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZykKLXsKLSAgICBpZiAo
IXVybCB8fCB1cmxbMF0gPT0gJ1wwJykgewotICAgICAgICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBu
b24tZW1wdHkKLSAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0
cmluZyA6IHVybDsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCFpc1NjaGVtZUZpcnN0Q2hhcih1cmxbMF0pKSB7Ci0gICAgICAgIC8vIHNj
aGVtZSBtdXN0IHN0YXJ0IHdpdGggYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIKLSAgICAgICAgbV9z
dHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKLSAgICAgICAg
aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IHNjaGVtZUVu
ZCA9IDA7Ci0gICAgd2hpbGUgKGlzU2NoZW1lQ2hhcih1cmxbc2NoZW1lRW5kXSkpCi0gICAgICAg
IHNjaGVtZUVuZCsrOwotCi0gICAgaWYgKHVybFtzY2hlbWVFbmRdICE9ICc6JykgewotICAgICAg
ICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwotICAg
ICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgdXNl
clN0YXJ0ID0gc2NoZW1lRW5kICsgMTsKLSAgICBpbnQgdXNlckVuZDsKLSAgICBpbnQgcGFzc3dv
cmRTdGFydDsKLSAgICBpbnQgcGFzc3dvcmRFbmQ7Ci0gICAgaW50IGhvc3RTdGFydDsKLSAgICBp
bnQgaG9zdEVuZDsKLSAgICBpbnQgcG9ydFN0YXJ0OwotICAgIGludCBwb3J0RW5kOwotCi0gICAg
Ym9vbCBoaWVyYXJjaGljYWwgPSB1cmxbc2NoZW1lRW5kICsgMV0gPT0gJy8nOwotICAgIGJvb2wg
aGFzU2Vjb25kU2xhc2ggPSBoaWVyYXJjaGljYWwgJiYgdXJsW3NjaGVtZUVuZCArIDJdID09ICcv
JzsKLQotICAgIGJvb2wgaXNGaWxlID0gc2NoZW1lRW5kID09IDQKLSAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMF0sICdmJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRj
aElnbm9yaW5nQ2FzZSh1cmxbMV0sICdpJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9y
aW5nQ2FzZSh1cmxbMl0sICdsJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2Fz
ZSh1cmxbM10sICdlJyk7Ci0KLSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQotICAgIC8vIFBhcnNl
IGxvY2FsOiB1cmxzIHRoZSBzYW1lIGFzIGZpbGU6IHVybHMuCi0gICAgaWYgKCFpc0ZpbGUpCi0g
ICAgICAgIGlzRmlsZSA9IHNjaGVtZUVuZCA9PSA1Ci0gICAgICAgICAgICAmJiBpc0xldHRlck1h
dGNoSWdub3JpbmdDYXNlKHVybFswXSwgJ2wnKQotICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRj
aElnbm9yaW5nQ2FzZSh1cmxbMV0sICdvJykKLSAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJ
Z25vcmluZ0Nhc2UodXJsWzJdLCAnYycpCi0gICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdu
b3JpbmdDYXNlKHVybFszXSwgJ2EnKQotICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9y
aW5nQ2FzZSh1cmxbNF0sICdsJyk7Ci0jZW5kaWYKLQotICAgIG1fcHJvdG9jb2xJc0luSFRUUEZh
bWlseSA9IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzBdLCAnaCcpCi0gICAgICAgICYm
IGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzFdLCAndCcpCi0gICAgICAgICYmIGlzTGV0
dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzJdLCAndCcpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0
Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAncCcpCi0gICAgICAgICYmICh1cmxbNF0gPT0gJzonIHx8
IChpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFs0XSwgJ3MnKSAmJiB1cmxbNV0gPT0gJzon
KSk7Ci0KLSAgICBpZiAoKGhpZXJhcmNoaWNhbCAmJiBoYXNTZWNvbmRTbGFzaCkgfHwgaXNOb25G
aWxlSGllcmFyY2hpY2FsU2NoZW1lKHVybCwgc2NoZW1lRW5kKSkgewotICAgICAgICAvLyBUaGUg
cGFydCBhZnRlciB0aGUgc2NoZW1lIGlzIGVpdGhlciBhIG5ldF9wYXRoIG9yIGFuIGFic19wYXRo
IHdob3NlIGZpcnN0IHBhdGggc2VnbWVudCBpcyBlbXB0eS4KLSAgICAgICAgLy8gQXR0ZW1wdCB0
byBmaW5kIGFuIGF1dGhvcml0eS4KLSAgICAgICAgLy8gRklYTUU6IEF1dGhvcml0eSBjaGFyYWN0
ZXJzIG1heSBiZSBzY2FubmVkIHR3aWNlLCBhbmQgaXQgd291bGQgYmUgbmljZSB0byBiZSBmYXN0
ZXIuCi0KLSAgICAgICAgaWYgKGhpZXJhcmNoaWNhbCkKLSAgICAgICAgICAgIHVzZXJTdGFydCsr
OwotICAgICAgICBpZiAoaGFzU2Vjb25kU2xhc2gpCi0gICAgICAgICAgICB1c2VyU3RhcnQrKzsK
LSAgICAgICAgdXNlckVuZCA9IHVzZXJTdGFydDsKLQotICAgICAgICBpbnQgY29sb25Qb3MgPSAw
OwotICAgICAgICB3aGlsZSAoaXNVc2VySW5mb0NoYXIodXJsW3VzZXJFbmRdKSkgewotICAgICAg
ICAgICAgaWYgKHVybFt1c2VyRW5kXSA9PSAnOicgJiYgY29sb25Qb3MgPT0gMCkKLSAgICAgICAg
ICAgICAgICBjb2xvblBvcyA9IHVzZXJFbmQ7Ci0gICAgICAgICAgICB1c2VyRW5kKys7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAodXJsW3VzZXJFbmRdID09ICdAJykgewotICAgICAgICAgICAg
Ly8gYWN0dWFsIGVuZCBvZiB0aGUgdXNlcmluZm8sIHN0YXJ0IG9uIHRoZSBob3N0Ci0gICAgICAg
ICAgICBpZiAoY29sb25Qb3MgIT0gMCkgewotICAgICAgICAgICAgICAgIHBhc3N3b3JkRW5kID0g
dXNlckVuZDsKLSAgICAgICAgICAgICAgICB1c2VyRW5kID0gY29sb25Qb3M7Ci0gICAgICAgICAg
ICAgICAgcGFzc3dvcmRTdGFydCA9IGNvbG9uUG9zICsgMTsKLSAgICAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9IHVzZXJFbmQ7Ci0K
LSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3JkRW5kICsgMTsKLSAgICAgICAgfSBlbHNl
IGlmICh1cmxbdXNlckVuZF0gPT0gJ1snIHx8IGlzUGF0aFNlZ21lbnRFbmRDaGFyKHVybFt1c2Vy
RW5kXSkpIHsKLSAgICAgICAgICAgIC8vIGhpdCB0aGUgZW5kIG9mIHRoZSBhdXRob3JpdHksIG11
c3QgaGF2ZSBiZWVuIG5vIHVzZXIKLSAgICAgICAgICAgIC8vIG9yIGxvb2tzIGxpa2UgYW4gSVB2
NiBob3N0bmFtZQotICAgICAgICAgICAgLy8gZWl0aGVyIHdheSwgdHJ5IHRvIHBhcnNlIGl0IGFz
IGEgaG9zdG5hbWUKLSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgICAg
ICBwYXNzd29yZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwotICAgICAgICAgICAgaG9z
dFN0YXJ0ID0gdXNlclN0YXJ0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gaW52
YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAq
b3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBob3N0RW5kID0gaG9zdFN0YXJ0Owot
Ci0gICAgICAgIC8vIElQVjYgSVAgYWRkcmVzcwotICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09
ICdbJykgewotICAgICAgICAgICAgaG9zdEVuZCsrOwotICAgICAgICAgICAgd2hpbGUgKGlzSVB2
NkNoYXIodXJsW2hvc3RFbmRdKSkKLSAgICAgICAgICAgICAgICBob3N0RW5kKys7Ci0gICAgICAg
ICAgICBpZiAodXJsW2hvc3RFbmRdID09ICddJykKLSAgICAgICAgICAgICAgICBob3N0RW5kKys7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3Rl
cgotICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxT
dHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHdoaWxlIChpc0hvc3RuYW1lQ2hhcih1cmxbaG9zdEVuZF0pKQotICAgICAgICAgICAgICAgIGhv
c3RFbmQrKzsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKHVybFtob3N0RW5kXSA9
PSAnOicpIHsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBob3N0RW5kICsgMTsK
LSAKLSAgICAgICAgICAgIC8vIHBvc3NpYmxlIHN0YXJ0IG9mIHBvcnQKLSAgICAgICAgICAgIHBv
cnRFbmQgPSBwb3J0U3RhcnQ7Ci0gICAgICAgICAgICB3aGlsZSAoaXNBU0NJSURpZ2l0KHVybFtw
b3J0RW5kXSkpCi0gICAgICAgICAgICAgICAgcG9ydEVuZCsrOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBob3N0RW5kOwotCi0gICAgICAgIGlmICgh
aXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3BvcnRFbmRdKSkgewotICAgICAgICAgICAgLy8gaW52
YWxpZCBjaGFyYWN0ZXIKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAq
b3JpZ2luYWxTdHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaG9zdFBvcnRJc0VtcHR5QnV0
Q3JlZGVudGlhbHNBcmVQcmVzZW50KGhvc3RTdGFydCwgcG9ydEVuZCwgdXJsW3Bhc3N3b3JkRW5k
XSkpIHsKLSAgICAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcgPyAqb3JpZ2luYWxT
dHJpbmcgOiB1cmw7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNlclN0YXJ0ID09IHBvcnRFbmQgJiYgIW1f
cHJvdG9jb2xJc0luSFRUUEZhbWlseSAmJiAhaXNGaWxlKSB7Ci0gICAgICAgICAgICAvLyBObyBh
dXRob3JpdHkgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcyBpcyBub3QgYSBuZXRfcGF0aCwg
YnV0IHJhdGhlciBhbiBhYnNfcGF0aCB3aG9zZSBmaXJzdCB0d28KLSAgICAgICAgICAgIC8vIHBh
dGggc2VnbWVudHMgYXJlIGVtcHR5LiBGb3IgZmlsZSwgaHR0cCBhbmQgaHR0cHMgb25seSwgYW4g
ZW1wdHkgYXV0aG9yaXR5IGlzIGFsbG93ZWQuCi0gICAgICAgICAgICB1c2VyU3RhcnQgLT0gMjsK
LSAgICAgICAgICAgIHVzZXJFbmQgPSB1c2VyU3RhcnQ7Ci0gICAgICAgICAgICBwYXNzd29yZFN0
YXJ0ID0gdXNlckVuZDsKLSAgICAgICAgICAgIHBhc3N3b3JkRW5kID0gcGFzc3dvcmRTdGFydDsK
LSAgICAgICAgICAgIGhvc3RTdGFydCA9IHBhc3N3b3JkRW5kOwotICAgICAgICAgICAgaG9zdEVu
ZCA9IGhvc3RTdGFydDsKLSAgICAgICAgICAgIHBvcnRTdGFydCA9IGhvc3RFbmQ7Ci0gICAgICAg
ICAgICBwb3J0RW5kID0gaG9zdEVuZDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIHRoZSBwYXJ0IGFmdGVyIHRoZSBzY2hlbWUgbXVzdCBiZSBhbiBvcGFxdWVfcGFydCBvciBh
biBhYnNfcGF0aAotICAgICAgICB1c2VyRW5kID0gdXNlclN0YXJ0OwotICAgICAgICBwYXNzd29y
ZFN0YXJ0ID0gcGFzc3dvcmRFbmQgPSB1c2VyRW5kOwotICAgICAgICBob3N0U3RhcnQgPSBob3N0
RW5kID0gcGFzc3dvcmRFbmQ7Ci0gICAgICAgIHBvcnRTdGFydCA9IHBvcnRFbmQgPSBob3N0RW5k
OwotICAgIH0KLQotICAgIGludCBwYXRoU3RhcnQgPSBwb3J0RW5kOwotICAgIGludCBwYXRoRW5k
ID0gcGF0aFN0YXJ0OwotICAgIHdoaWxlICh1cmxbcGF0aEVuZF0gJiYgdXJsW3BhdGhFbmRdICE9
ICc/JyAmJiB1cmxbcGF0aEVuZF0gIT0gJyMnKQotICAgICAgICBwYXRoRW5kKys7Ci0KLSAgICBp
bnQgcXVlcnlTdGFydCA9IHBhdGhFbmQ7Ci0gICAgaW50IHF1ZXJ5RW5kID0gcXVlcnlTdGFydDsK
LSAgICBpZiAodXJsW3F1ZXJ5U3RhcnRdID09ICc/JykgewotICAgICAgICB3aGlsZSAodXJsW3F1
ZXJ5RW5kXSAmJiB1cmxbcXVlcnlFbmRdICE9ICcjJykKLSAgICAgICAgICAgIHF1ZXJ5RW5kKys7
Ci0gICAgfQotCi0gICAgaW50IGZyYWdtZW50U3RhcnQgPSBxdWVyeUVuZDsKLSAgICBpbnQgZnJh
Z21lbnRFbmQgPSBmcmFnbWVudFN0YXJ0OwotICAgIGlmICh1cmxbZnJhZ21lbnRTdGFydF0gPT0g
JyMnKSB7Ci0gICAgICAgIGZyYWdtZW50U3RhcnQrKzsKLSAgICAgICAgZnJhZ21lbnRFbmQgPSBm
cmFnbWVudFN0YXJ0OwotICAgICAgICB3aGlsZSAodXJsW2ZyYWdtZW50RW5kXSkKLSAgICAgICAg
ICAgIGZyYWdtZW50RW5kKys7Ci0gICAgfQotCi0gICAgLy8gYXNzZW1ibGUgaXQgYWxsLCByZW1l
bWJlcmluZyB0aGUgcmVhbCByYW5nZXMKLQotICAgIFZlY3RvcjxjaGFyLCA0MDk2PiBidWZmZXIo
ZnJhZ21lbnRFbmQgKiAzICsgMSk7Ci0KLSAgICBjaGFyICpwID0gYnVmZmVyLmRhdGEoKTsKLSAg
ICBjb25zdCBjaGFyICpzdHJQdHIgPSB1cmw7Ci0KLSAgICAvLyBjb3B5IGluIHRoZSBzY2hlbWUK
LSAgICBjb25zdCBjaGFyICpzY2hlbWVFbmRQdHIgPSB1cmwgKyBzY2hlbWVFbmQ7Ci0gICAgd2hp
bGUgKHN0clB0ciA8IHNjaGVtZUVuZFB0cikKLSAgICAgICAgKnArKyA9IHRvQVNDSUlMb3dlcigq
c3RyUHRyKyspOwotICAgIG1fc2NoZW1lRW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICBi
b29sIGhvc3RJc0xvY2FsSG9zdCA9IHBvcnRFbmQgLSB1c2VyU3RhcnQgPT0gOQotICAgICAgICAm
JiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnRdLCAnbCcpCi0gICAgICAg
ICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCsxXSwgJ28nKQotICAg
ICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrMl0sICdjJykK
LSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzNdLCAn
YScpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs0
XSwgJ2wnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3Rh
cnQrNV0sICdoJykKLSAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNl
clN0YXJ0KzZdLCAnbycpCi0gICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJs
W3VzZXJTdGFydCs3XSwgJ3MnKQotICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNl
KHVybFt1c2VyU3RhcnQrOF0sICd0Jyk7Ci0KLSAgICAvLyBGaWxlIFVSTHMgbmVlZCBhIGhvc3Qg
cGFydCB1bmxlc3MgaXQgaXMganVzdCBmaWxlOi8vIG9yIGZpbGU6Ly9sb2NhbGhvc3QKLSAgICBi
b29sIGRlZ2VuZXJhdGVGaWxlUGF0aCA9IHBhdGhTdGFydCA9PSBwYXRoRW5kICYmIChob3N0U3Rh
cnQgPT0gaG9zdEVuZCB8fCBob3N0SXNMb2NhbEhvc3QpOwotCi0gICAgLy8gV2UgZHJvcCBlbXB0
eSBjcmVkZW50aWFscywgYnV0IGtlZXAgYSBjb2xvbiBpbiBhbiBlbXB0eSBob3N0L3BvcnQgcGFp
ci4KLSAgICAvLyBSZW1vdmluZyBob3N0bmFtZSBjb21wbGV0ZWx5IHdvdWxkIGNoYW5nZSB0aGUg
c3RydWN0dXJlIG9mIHRoZSBVUkwgb24gcmUtcGFyc2luZy4KLSAgICBib29sIGhhdmVOb25Ib3N0
QXV0aG9yaXR5UGFydCA9IHVzZXJTdGFydCAhPSB1c2VyRW5kIHx8IHBhc3N3b3JkU3RhcnQgIT0g
cGFzc3dvcmRFbmQgfHwgaG9zdEVuZCAhPSBwb3J0RW5kOwotCi0gICAgLy8gYWRkICI6IiBhZnRl
ciBzY2hlbWUKLSAgICAqcCsrID0gJzonOwotCi0gICAgLy8gaWYgd2UgaGF2ZSBhdCBsZWFzdCBv
bmUgYXV0aG9yaXR5IHBhcnQgb3IgYSBmaWxlIFVSTCAtIGFkZCAiLy8iIGFuZCBhdXRob3JpdHkK
LSAgICBpZiAoaXNGaWxlID8gIWRlZ2VuZXJhdGVGaWxlUGF0aCA6IChoYXZlTm9uSG9zdEF1dGhv
cml0eVBhcnQgfHwgaG9zdFN0YXJ0ICE9IGhvc3RFbmQpKSB7Ci0gICAgICAgICpwKysgPSAnLyc7
Ci0gICAgICAgICpwKysgPSAnLyc7Ci0KLSAgICAgICAgbV91c2VyU3RhcnQgPSBwIC0gYnVmZmVy
LmRhdGEoKTsKLQotICAgICAgICAvLyBjb3B5IGluIHRoZSB1c2VyCi0gICAgICAgIHN0clB0ciA9
IHVybCArIHVzZXJTdGFydDsKLSAgICAgICAgY29uc3QgY2hhciogdXNlckVuZFB0ciA9IHVybCAr
IHVzZXJFbmQ7Ci0gICAgICAgIHdoaWxlIChzdHJQdHIgPCB1c2VyRW5kUHRyKSB7Ci0gICAgICAg
ICAgICBjaGFyIGMgPSAqc3RyUHRyKys7Ci0gICAgICAgICAgICBBU1NFUlQoaXNVc2VySW5mb0No
YXIoYykpOwotICAgICAgICAgICAgKnArKyA9IGM7Ci0gICAgICAgIH0KLSAgICAgICAgbV91c2Vy
RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAgICAgLy8gY29weSBpbiB0aGUgcGFzc3dv
cmQKLSAgICAgICAgaWYgKHBhc3N3b3JkRW5kICE9IHBhc3N3b3JkU3RhcnQpIHsKLSAgICAgICAg
ICAgICpwKysgPSAnOic7Ci0gICAgICAgICAgICBzdHJQdHIgPSB1cmwgKyBwYXNzd29yZFN0YXJ0
OwotICAgICAgICAgICAgY29uc3QgY2hhciogcGFzc3dvcmRFbmRQdHIgPSB1cmwgKyBwYXNzd29y
ZEVuZDsKLSAgICAgICAgICAgIHdoaWxlIChzdHJQdHIgPCBwYXNzd29yZEVuZFB0cikgewotICAg
ICAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIrKzsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
aXNVc2VySW5mb0NoYXIoYykpOwotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIG1fcGFzc3dvcmRFbmQgPSBwIC0gYnVmZmVyLmRhdGEo
KTsKLQotICAgICAgICAvLyBJZiB3ZSBoYWQgYW55IHVzZXIgaW5mbywgYWRkICJAIgotICAgICAg
ICBpZiAocCAtIGJ1ZmZlci5kYXRhKCkgIT0gbV91c2VyU3RhcnQpCi0gICAgICAgICAgICAqcCsr
ID0gJ0AnOwotCi0gICAgICAgIC8vIGNvcHkgaW4gdGhlIGhvc3QsIGV4Y2VwdCBpbiB0aGUgY2Fz
ZSBvZiBhIGZpbGUgVVJMIHdpdGggYXV0aG9yaXR5PSJsb2NhbGhvc3QiCi0gICAgICAgIGlmICgh
KGlzRmlsZSAmJiBob3N0SXNMb2NhbEhvc3QgJiYgIWhhdmVOb25Ib3N0QXV0aG9yaXR5UGFydCkp
IHsKLSAgICAgICAgICAgIHN0clB0ciA9IHVybCArIGhvc3RTdGFydDsKLSAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGhvc3RFbmRQdHIgPSB1cmwgKyBob3N0RW5kOwotICAgICAgICAgICAgaWYgKGlz
Q2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2VGb3JTY2hlbWUoYnVmZmVyLmRhdGEoKSwgbV9zY2hl
bWVFbmQpKSB7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0clB0ciA8IGhvc3RFbmRQdHIpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChpc0hvc3RuYW1lQ2hhcihjKSB8fCBjID09ICdbJyB8
fCBjID09ICddJyB8fCBjID09ICc6Jyk7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBjOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
d2hpbGUgKHN0clB0ciA8IGhvc3RFbmRQdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciBj
ID0gKnN0clB0cisrOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXNIb3N0bmFtZUNoYXIo
YykgfHwgYyA9PSAnWycgfHwgYyA9PSAnXScgfHwgYyA9PSAnOicpOwotICAgICAgICAgICAgICAg
ICAgICAqcCsrID0gYzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgbV9ob3N0RW5kID0gcCAtIGJ1ZmZlci5kYXRhKCk7Ci0KLSAgICAgICAgLy8g
Q29weSBpbiB0aGUgcG9ydCBpZiB0aGUgVVJMIGhhcyBvbmUgKGFuZCBpdCdzIG5vdCBkZWZhdWx0
KS4gQWxzbywgY29weSBpdCBpZiB0aGVyZSB3YXMgbm8gaG9zdG5hbWUsIHNvIHRoYXQgdGhlcmUg
aXMgc3RpbGwgc29tZXRoaW5nIGluIGF1dGhvcml0eSBjb21wb25lbnQuCi0gICAgICAgIGlmICho
b3N0RW5kICE9IHBvcnRTdGFydCkgewotICAgICAgICAgICAgY29uc3QgY2hhciogcG9ydFN0ciA9
IHVybCArIHBvcnRTdGFydDsKLSAgICAgICAgICAgIHNpemVfdCBwb3J0TGVuZ3RoID0gcG9ydEVu
ZCAtIHBvcnRTdGFydDsKLSAgICAgICAgICAgIGlmICgocG9ydExlbmd0aCAmJiAhaXNEZWZhdWx0
UG9ydEZvclNjaGVtZShwb3J0U3RyLCBwb3J0TGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBtX3NjaGVt
ZUVuZCkpCi0gICAgICAgICAgICAgICAgfHwgKGhvc3RTdGFydCA9PSBob3N0RW5kICYmIGhvc3RF
bmQgIT0gcG9ydFN0YXJ0KSkgewotICAgICAgICAgICAgICAgICpwKysgPSAnOic7Ci0gICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcG9ydEVuZFB0ciA9IHVybCArIHBvcnRFbmQ7Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKHBvcnRTdHIgPCBwb3J0RW5kUHRyKQotICAgICAgICAgICAgICAgICAg
ICAqcCsrID0gKnBvcnRTdHIrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBt
X3BvcnRFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAo
aXNGaWxlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVnZW5lcmF0ZUZpbGVQYXRoKTsKLSAgICAg
ICAgICAgICpwKysgPSAnLyc7Ci0gICAgICAgICAgICAqcCsrID0gJy8nOwotICAgICAgICB9Ci0g
ICAgICAgIG1fdXNlclN0YXJ0ID0gbV91c2VyRW5kID0gbV9wYXNzd29yZEVuZCA9IG1faG9zdEVu
ZCA9IG1fcG9ydEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwotICAgIH0KLQotICAgIC8vIEZvciBj
YW5vbmljYWxpemF0aW9uLCBlbnN1cmUgd2UgaGF2ZSBhICcvJyBmb3Igbm8gcGF0aC4KLSAgICAv
LyBEbyB0aGlzIG9ubHkgZm9yIFVSTCB3aXRoIHByb3RvY29sIGZpbGUsIGh0dHAgb3IgaHR0cHMu
Ci0gICAgaWYgKChtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgfHwgaXNGaWxlKSAmJiBwYXRoRW5k
ID09IHBhdGhTdGFydCkKLSAgICAgICAgKnArKyA9ICcvJzsKLQotICAgIC8vIGFkZCBwYXRoLCBl
c2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmICghaGllcmFyY2hpY2FsKQotICAgICAgICBl
c2NhcGVBbmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIHBhdGhTdGFydCwgcGF0
aEVuZCAtIHBhdGhTdGFydCk7Ci0gICAgZWxzZSBpZiAoIWhhc1NsYXNoRG90T3JEb3REb3QodXJs
KSkKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCB1cmwgKyBwYXRoU3RhcnQsIHBh
dGhFbmQgLSBwYXRoU3RhcnQpOwotICAgIGVsc2UgewotICAgICAgICBDaGFyQnVmZmVyIHBhdGhC
dWZmZXIocGF0aEVuZCAtIHBhdGhTdGFydCArIDEpOwotICAgICAgICBzaXplX3QgbGVuZ3RoID0g
Y29weVBhdGhSZW1vdmluZ0RvdHMocGF0aEJ1ZmZlci5kYXRhKCksIHVybCwgcGF0aFN0YXJ0LCBw
YXRoRW5kKTsKLSAgICAgICAgYXBwZW5kRXNjYXBpbmdCYWRDaGFycyhwLCBwYXRoQnVmZmVyLmRh
dGEoKSwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBtX3BhdGhFbmQgPSBwIC0gYnVmZmVyLmRhdGEo
KTsKLQotICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIGFmdGVyIHRoZSBsYXN0IHNsYXNoIGluIHRo
ZSBwYXRoLCBvcgotICAgIC8vIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIHBhdGggaWYgdGhlcmUg
YXJlIG5vIHNsYXNoZXMgaW4gaXQuCi0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gbV9wYXRoRW5k
OyBpID4gbV9wb3J0RW5kOyAtLWkpIHsKLSAgICAgICAgaWYgKGJ1ZmZlcltpIC0gMV0gPT0gJy8n
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIG1fcGF0aEFmdGVyTGFzdFNsYXNoID0g
aTsKLQotICAgIC8vIGFkZCBxdWVyeSwgZXNjYXBpbmcgYmFkIGNoYXJhY3RlcnMKLSAgICBhcHBl
bmRFc2NhcGluZ0JhZENoYXJzKHAsIHVybCArIHF1ZXJ5U3RhcnQsIHF1ZXJ5RW5kIC0gcXVlcnlT
dGFydCk7Ci0gICAgbV9xdWVyeUVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOwotCi0gICAgLy8gYWRk
IGZyYWdtZW50LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycwotICAgIGlmIChmcmFnbWVudEVuZCAh
PSBxdWVyeUVuZCkgewotICAgICAgICAqcCsrID0gJyMnOwotICAgICAgICBlc2NhcGVBbmRBcHBl
bmROb25IaWVyYXJjaGljYWxQYXJ0KHAsIHVybCArIGZyYWdtZW50U3RhcnQsIGZyYWdtZW50RW5k
IC0gZnJhZ21lbnRTdGFydCk7Ci0gICAgfQotICAgIG1fZnJhZ21lbnRFbmQgPSBwIC0gYnVmZmVy
LmRhdGEoKTsKLQotICAgIEFTU0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0aWNfY2FzdDxp
bnQ+KGJ1ZmZlci5zaXplKCkpKTsKLSAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSA+IDApOwotCi0g
ICAgLy8gSWYgd2UgZGlkbid0IGVuZCB1cCBhY3R1YWxseSBjaGFuZ2luZyB0aGUgb3JpZ2luYWwg
c3RyaW5nIGFuZAotICAgIC8vIGl0IHdhcyBhbHJlYWR5IGluIGEgU3RyaW5nLCByZXVzZSBpdCB0
byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLgotICAgIGlmIChvcmlnaW5hbFN0cmluZyAmJiBlcXVh
bChvcmlnaW5hbFN0cmluZy0+aW1wbCgpLCBidWZmZXIuZGF0YSgpLCBtX2ZyYWdtZW50RW5kKSkK
LSAgICAgICAgbV9zdHJpbmcgPSAqb3JpZ2luYWxTdHJpbmc7Ci0gICAgZWxzZQotICAgICAgICBt
X3N0cmluZyA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBtX2ZyYWdtZW50RW5kKTsKLQotICAgIG1f
aXNWYWxpZCA9IHRydWU7Ci19Ci0KLWJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihjb25zdCBLVVJMJiBhLCBjb25zdCBLVVJMJiBiKQotewotICAgIGlmIChhLm1fcXVlcnlFbmQg
IT0gYi5tX3F1ZXJ5RW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdW5zaWduZWQgcXVl
cnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1
ZXJ5TGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClb
aV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwm
IGIpCi17Ci0gICAgaWYgKGEubV9zY2hlbWVFbmQgIT0gYi5tX3NjaGVtZUVuZCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaW50IGhvc3RTdGFydEEgPSBhLmhvc3RTdGFydCgpOwotICAg
IGludCBob3N0TGVuZ3RoQSA9IGEuaG9zdEVuZCgpIC0gaG9zdFN0YXJ0QTsKLSAgICBpbnQgaG9z
dFN0YXJ0QiA9IGIuaG9zdFN0YXJ0KCk7Ci0gICAgaW50IGhvc3RMZW5ndGhCID0gYi5ob3N0RW5k
KCkgLSBiLmhvc3RTdGFydCgpOwotICAgIGlmIChob3N0TGVuZ3RoQSAhPSBob3N0TGVuZ3RoQikK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgdGhlIHNjaGVtZQotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgYS5tX3NjaGVtZUVuZDsgKytpKQotICAgICAgICBpZiAoYS5zdHJp
bmcoKVtpXSAhPSBiLnN0cmluZygpW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gQW5kIHRoZSBob3N0Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBob3N0TGVuZ3RoQTsg
KytpKQotICAgICAgICBpZiAoYS5zdHJpbmcoKVtob3N0U3RhcnRBICsgaV0gIT0gYi5zdHJpbmco
KVtob3N0U3RhcnRCICsgaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
YS5wb3J0KCkgIT0gYi5wb3J0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biB0cnVlOwotfQotCi1TdHJpbmcgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBT
dHJpbmcmIG5vdEVuY29kZWRTdHJpbmcpCi17Ci0gICAgQ1N0cmluZyBhc1VURjggPSBub3RFbmNv
ZGVkU3RyaW5nLnV0ZjgoKTsKLQotICAgIENoYXJCdWZmZXIgYnVmZmVyKGFzVVRGOC5sZW5ndGgo
KSAqIDMgKyAxKTsKLSAgICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKLQotICAgIGNvbnN0IGNo
YXIqIHN0ciA9IGFzVVRGOC5kYXRhKCk7Ci0gICAgY29uc3QgY2hhciogc3RyRW5kID0gc3RyICsg
YXNVVEY4Lmxlbmd0aCgpOwotICAgIHdoaWxlIChzdHIgPCBzdHJFbmQpIHsKLSAgICAgICAgdW5z
aWduZWQgY2hhciBjID0gKnN0cisrOwotICAgICAgICBpZiAoaXNCYWRDaGFyKGMpKQotICAgICAg
ICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICpwKysgPSBjOwotICAgIH0KLQotICAgIEFTU0VSVChwIC0gYnVmZmVyLmRhdGEoKSA8PSBzdGF0
aWNfY2FzdDxpbnQ+KGJ1ZmZlci5zaXplKCkpKTsKLQotICAgIHJldHVybiBTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgcCAtIGJ1ZmZlci5kYXRhKCkpOwotfQotCi0vLyBBcHBlbmRzIHRoZSBwdW55Y29k
ZWQgaG9zdG5hbWUgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gc3RyaW5nIGFuZCBsZW5ndGggdG8K
LS8vIHRoZSBvdXRwdXQgYnVmZmVyLiBUaGUgcmVzdWx0IHdpbGwgbm90IGJlIG51bGwgdGVybWlu
YXRlZC4KLXN0YXRpYyB2b2lkIGFwcGVuZEVuY29kZWRIb3N0bmFtZShVQ2hhckJ1ZmZlciYgYnVm
ZmVyLCBjb25zdCBVQ2hhciogc3RyLCB1bnNpZ25lZCBzdHJMZW4pCi17Ci0gICAgLy8gTmVlZHMg
dG8gYmUgYmlnIGVub3VnaCB0byBob2xkIGFuIElETi1lbmNvZGVkIG5hbWUuCi0gICAgLy8gRm9y
IGhvc3QgbmFtZXMgYmlnZ2VyIHRoYW4gdGhpcywgd2Ugd29uJ3QgZG8gSUROIGVuY29kaW5nLCB3
aGljaCBpcyBhbG1vc3QgY2VydGFpbmx5IE9LLgotICAgIGNvbnN0IHVuc2lnbmVkIGhvc3RuYW1l
QnVmZmVyTGVuZ3RoID0gMjA0ODsKLQotICAgIGlmIChzdHJMZW4gPiBob3N0bmFtZUJ1ZmZlckxl
bmd0aCB8fCBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoc3RyLCBzdHJMZW4pKSB7Ci0gICAgICAgIGJ1
ZmZlci5hcHBlbmQoc3RyLCBzdHJMZW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYg
VVNFKElDVV9VTklDT0RFKQotICAgIFVDaGFyIGhvc3RuYW1lQnVmZmVyW2hvc3RuYW1lQnVmZmVy
TGVuZ3RoXTsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIGludDMy
X3QgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCA9IHVpZG5hX0lETlRvQVNDSUkoc3RyLCBzdHJMZW4s
IGhvc3RuYW1lQnVmZmVyLAotICAgICAgICBob3N0bmFtZUJ1ZmZlckxlbmd0aCwgVUlETkFfQUxM
T1dfVU5BU1NJR05FRCwgMCwgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IgPT0gVV9aRVJPX0VSUk9S
KQotICAgICAgICBidWZmZXIuYXBwZW5kKGhvc3RuYW1lQnVmZmVyLCBudW1DaGFyYWN0ZXJzQ29u
dmVydGVkKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgdm9pZCBmaW5kSG9zdG5hbWVzSW5NYWlsVG9V
UkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxlbiwgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4m
IG5hbWVSYW5nZXMpCi17Ci0gICAgLy8gSW4gYSBtYWlsdG86IFVSTCwgaG9zdCBuYW1lcyBjb21l
IGFmdGVyIGEgJ0AnIGNoYXJhY3RlciBhbmQgZW5kIHdpdGggYSAnPicgb3IgJywnIG9yICc/JyBv
ciBlbmQgb2Ygc3RyaW5nIGNoYXJhY3Rlci4KLSAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmdzIHNv
IHRoYXQgY2hhcmFjdGVycyBpbiB0aGVtIGRvbid0IGNvbmZ1c2UgdXMuCi0gICAgLy8gV2hlbiB3
ZSBmaW5kIGEgJz8nIGNoYXJhY3Rlciwgd2UgYXJlIHBhc3QgdGhlIHBhcnQgb2YgdGhlIFVSTCB0
aGF0IGNvbnRhaW5zIGhvc3QgbmFtZXMuCi0KLSAgICBuYW1lUmFuZ2VzLmNsZWFyKCk7Ci0KLSAg
ICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKDEpIHsKLSAgICAgICAgLy8gRmluZCBzdGFydCBvZiBo
b3N0IG5hbWUgb3Igb2YgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgaW50IGhvc3RuYW1lT3JTdHJp
bmdTdGFydCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBwLCAiXCJAPyIpOwotICAgICAgICBp
ZiAoaG9zdG5hbWVPclN0cmluZ1N0YXJ0ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBVQ2hhciBjID0gc3RyW2hvc3RuYW1lT3JTdHJpbmdTdGFydF07Ci0gICAgICAgIHAgPSBo
b3N0bmFtZU9yU3RyaW5nU3RhcnQgKyAxOwotCi0gICAgICAgIGlmIChjID09ICc/JykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYyA9PSAnQCcpIHsKLSAgICAgICAgICAgIC8v
IEZpbmQgZW5kIG9mIGhvc3QgbmFtZS4KLSAgICAgICAgICAgIGludCBob3N0bmFtZVN0YXJ0ID0g
cDsKLSAgICAgICAgICAgIGludCBob3N0bmFtZUVuZCA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVu
LCBwLCAiPiw/Iik7Ci0gICAgICAgICAgICBib29sIGRvbmU7Ci0gICAgICAgICAgICBpZiAoaG9z
dG5hbWVFbmQgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBob3N0bmFtZUVuZCA9IHN0ckxlbjsK
LSAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgcCA9IGhvc3RuYW1lRW5kOwotICAgICAgICAgICAgICAgIGRvbmUgPSBmYWxz
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmFtZVJhbmdlcy5hcHBlbmQobWFrZV9w
YWlyKGhvc3RuYW1lU3RhcnQsIGhvc3RuYW1lRW5kKSk7Ci0KLSAgICAgICAgICAgIGlmIChkb25l
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIFNraXAgcXVvdGVkIHN0cmluZy4KLSAgICAgICAgICAgIEFTU0VSVChjID09ICciJyk7Ci0g
ICAgICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgICAgIGludCBlc2NhcGVkQ2hhcmFj
dGVyT3JTdHJpbmdFbmQgPSBmaW5kRmlyc3RPZihzdHIsIHN0ckxlbiwgcCwgIlwiXFwiKTsKLSAg
ICAgICAgICAgICAgICBpZiAoZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID09IC0xKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjID0gc3RyW2VzY2Fw
ZWRDaGFyYWN0ZXJPclN0cmluZ0VuZF07Ci0gICAgICAgICAgICAgICAgcCA9IGVzY2FwZWRDaGFy
YWN0ZXJPclN0cmluZ0VuZCArIDE7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgdGhl
IGVuZCBvZiB0aGUgc3RyaW5nLCB0aGVuIGJyZWFrIGZyb20gdGhlIHN0cmluZyBsb29wIGJhY2sg
dG8gdGhlIGhvc3QgbmFtZSBsb29wLgotICAgICAgICAgICAgICAgIGlmIChjID09ICciJykKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvLyBTa2lwIGVzY2Fw
ZWQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIEFTU0VSVChjID09ICdcXCcpOwotICAgICAg
ICAgICAgICAgIGlmIChwID09IHN0ckxlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
fQotCi1zdGF0aWMgYm9vbCBmaW5kSG9zdG5hbWVJbkhpZXJhcmNoaWNhbFVSTChjb25zdCBVQ2hh
ciogc3RyLCBpbnQgc3RyTGVuLCBpbnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCkKLXsK
LSAgICAvLyBGaW5kIHRoZSBob3N0IG5hbWUgaW4gYSBoaWVyYXJjaGljYWwgVVJMLgotICAgIC8v
IEl0IGNvbWVzIGFmdGVyIGEgIjovLyIgc2VxdWVuY2UsIHdpdGggc2NoZW1lIGNoYXJhY3RlcnMg
cHJlY2VkaW5nLCBhbmQKLSAgICAvLyB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3QgY29sb24gaW4g
dGhlIHN0cmluZy4KLSAgICAvLyBJdCBlbmRzIHdpdGggdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9y
IGEgIjoiIG9yIGEgcGF0aCBzZWdtZW50IGVuZGluZyBjaGFyYWN0ZXIuCi0gICAgLy8gSWYgdGhl
cmUgaXMgYSAiQCIgY2hhcmFjdGVyLCB0aGUgaG9zdCBwYXJ0IGlzIGp1c3QgdGhlIHBhcnQgYWZ0
ZXIgdGhlICJAIi4KLSAgICBpbnQgc2VwYXJhdG9yID0gZmluZEZpcnN0T2Yoc3RyLCBzdHJMZW4s
IDAsICI6Iik7Ci0gICAgaWYgKHNlcGFyYXRvciA9PSAtMSB8fCBzZXBhcmF0b3IgKyAyID49IHN0
ckxlbiB8fAotICAgICAgICBzdHJbc2VwYXJhdG9yICsgMV0gIT0gJy8nIHx8IHN0cltzZXBhcmF0
b3IgKyAyXSAhPSAnLycpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIHRo
YXQgYWxsIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSA6Ly8gYXJlIHZhbGlkIHNjaGVtZSBjaGFyYWN0
ZXJzLgotICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIoc3RyWzBdKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2VwYXJhdG9yOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFpc1NjaGVtZUNoYXIoc3RyW2ldKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICAvLyBTdGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLgotICAgIGludCBhdXRo
b3JpdHlTdGFydCA9IHNlcGFyYXRvciArIDM7Ci0KLSAgICAvLyBGaW5kIHRlcm1pbmF0aW5nIGNo
YXJhY3Rlci4KLSAgICBpbnQgaG9zdG5hbWVFbmQgPSBzdHJMZW47Ci0gICAgZm9yIChpbnQgaSA9
IGF1dGhvcml0eVN0YXJ0OyBpIDwgc3RyTGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYyA9IHN0
cltpXTsKLSAgICAgICAgaWYgKGMgPT0gJzonIHx8IChpc1BhdGhTZWdtZW50RW5kQ2hhcihjKSAm
JiBjICE9IDApKSB7Ci0gICAgICAgICAgICBob3N0bmFtZUVuZCA9IGk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEZpbmQgIkAiIGZvciB0aGUgc3RhcnQg
b2YgdGhlIGhvc3QgbmFtZS4KLSAgICBpbnQgdXNlckluZm9UZXJtaW5hdG9yID0gZmluZEZpcnN0
T2Yoc3RyLCBzdHJMZW4sIGF1dGhvcml0eVN0YXJ0LCAiQCIpOwotICAgIGludCBob3N0bmFtZVN0
YXJ0OwotICAgIGlmICh1c2VySW5mb1Rlcm1pbmF0b3IgPT0gLTEgfHwgdXNlckluZm9UZXJtaW5h
dG9yID4gaG9zdG5hbWVFbmQpCi0gICAgICAgIGhvc3RuYW1lU3RhcnQgPSBhdXRob3JpdHlTdGFy
dDsKLSAgICBlbHNlCi0gICAgICAgIGhvc3RuYW1lU3RhcnQgPSB1c2VySW5mb1Rlcm1pbmF0b3Ig
KyAxOwotCi0gICAgc3RhcnRPZmZzZXQgPSBob3N0bmFtZVN0YXJ0OwotICAgIGVuZE9mZnNldCA9
IGhvc3RuYW1lRW5kOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBDb252ZXJ0cyBhbGwgaG9z
dG5hbWVzIGZvdW5kIGluIHRoZSBnaXZlbiBpbnB1dCB0byBwdW55Y29kZSwgcHJlc2VydmluZyB0
aGUKLS8vIHJlc3Qgb2YgdGhlIFVSTCB1bmNoYW5nZWQuIFRoZSBvdXRwdXQgd2lsbCBOT1QgYmUg
bnVsbC10ZXJtaW5hdGVkLgotc3RhdGljIHZvaWQgZW5jb2RlSG9zdG5hbWVzKGNvbnN0IFN0cmlu
ZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0KQotewotICAgIG91dHB1dC5jbGVhcigpOwotCi0g
ICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFpbHRvIikpIHsKLSAgICAgICAgVmVjdG9yPHBhaXI8
aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7Ci0gICAgICAgIGZpbmRIb3N0bmFtZXNJbk1haWxU
b1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3RuYW1lUmFuZ2VzKTsKLSAg
ICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdlcy5zaXplKCk7Ci0gICAgICAgIGludCBwID0gMDsK
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0
IHBhaXI8aW50LCBpbnQ+JiByID0gaG9zdG5hbWVSYW5nZXNbaV07Ci0gICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygpW3BdLCByLmZpcnN0IC0gcCk7Ci0gICAgICAgICAg
ICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0cHV0LCAmc3RyLmNoYXJhY3RlcnMoKVtyLmZpcnN0
XSwgci5zZWNvbmQgLSByLmZpcnN0KTsKLSAgICAgICAgICAgIHAgPSByLnNlY29uZDsKLSAgICAg
ICAgfQotICAgICAgICAvLyBUaGlzIHdpbGwgY29weSBlaXRoZXIgZXZlcnl0aGluZyBhZnRlciB0
aGUgbGFzdCBob3N0bmFtZSwgb3IgdGhlCi0gICAgICAgIC8vIHdob2xlIHRoaW5nIGlmIHRoZXJl
IGlzIG5vIGhvc3RuYW1lLgotICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuY2hhcmFjdGVycygp
W3BdLCBzdHIubGVuZ3RoKCkgLSBwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpbnQgaG9zdFN0
YXJ0LCBob3N0RW5kOwotICAgICAgICBpZiAoZmluZEhvc3RuYW1lSW5IaWVyYXJjaGljYWxVUkwo
c3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBob3N0U3RhcnQsIGhvc3RFbmQpKSB7Ci0g
ICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0ci5jaGFyYWN0ZXJzKCksIGhvc3RTdGFydCk7IC8v
IEJlZm9yZSBob3N0bmFtZS4KLSAgICAgICAgICAgIGFwcGVuZEVuY29kZWRIb3N0bmFtZShvdXRw
dXQsICZzdHIuY2hhcmFjdGVycygpW2hvc3RTdGFydF0sIGhvc3RFbmQgLSBob3N0U3RhcnQpOwot
ICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgmc3RyLmNoYXJhY3RlcnMoKVtob3N0RW5kXSwgc3Ry
Lmxlbmd0aCgpIC0gaG9zdEVuZCk7IC8vIEFmdGVyIGhvc3RuYW1lLgotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gTm8gaG9zdG5hbWUgdG8gZW5jb2RlLCByZXR1cm4gdGhlIGlucHV0
LgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3Ro
KCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBlbmNvZGVSZWxhdGl2ZVN0
cmluZyhjb25zdCBTdHJpbmcmIHJlbCwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgQ2hh
ckJ1ZmZlciYgb3V0cHV0KQotewotICAgIFVDaGFyQnVmZmVyIHM7Ci0gICAgZW5jb2RlSG9zdG5h
bWVzKHJlbCwgcyk7Ci0KLSAgICBUZXh0RW5jb2RpbmcgcGF0aEVuY29kaW5nKFVURjhFbmNvZGlu
ZygpKTsgLy8gUGF0aCBpcyBhbHdheXMgZW5jb2RlZCBhcyBVVEYtODsgb3RoZXIgcGFydHMgbWF5
IGRlcGVuZCBvbiB0aGUgc2NoZW1lLgotCi0gICAgaW50IHBhdGhFbmQgPSAtMTsKLSAgICBpZiAo
ZW5jb2RpbmcgIT0gcGF0aEVuY29kaW5nICYmIGVuY29kaW5nLmlzVmFsaWQoKSAmJiAhcHJvdG9j
b2xJcyhyZWwsICJtYWlsdG8iKSAmJiAhcHJvdG9jb2xJcyhyZWwsICJkYXRhIikgJiYgIXByb3Rv
Y29sSXNKYXZhU2NyaXB0KHJlbCkpIHsKLSAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgaW5zdGFu
Y2Ugb2YgZWl0aGVyICMgb3IgPywga2VlcCBwYXRoRW5kIGF0IC0xIG90aGVyd2lzZS4KLSAgICAg
ICAgcGF0aEVuZCA9IGZpbmRGaXJzdE9mKHMuZGF0YSgpLCBzLnNpemUoKSwgMCwgIiM/Iik7Ci0g
ICAgfQotCi0gICAgaWYgKHBhdGhFbmQgPT0gLTEpIHsKLSAgICAgICAgQ1N0cmluZyBkZWNvZGVk
ID0gcGF0aEVuY29kaW5nLmVuY29kZShzLmRhdGEoKSwgcy5zaXplKCksIFVSTEVuY29kZWRFbnRp
dGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIG91dHB1dC5yZXNpemUoZGVjb2RlZC5sZW5n
dGgoKSk7Ci0gICAgICAgIG1lbWNweShvdXRwdXQuZGF0YSgpLCBkZWNvZGVkLmRhdGEoKSwgZGVj
b2RlZC5sZW5ndGgoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQ1N0cmluZyBwYXRoRGVjb2Rl
ZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5kYXRhKCksIHBhdGhFbmQsIFVSTEVuY29kZWRFbnRp
dGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgICAgIC8vIFVuZW5jb2RhYmxlIGNoYXJhY3RlcnMg
aW4gVVJMcyBhcmUgcmVwcmVzZW50ZWQgYnkgY29udmVydGluZwotICAgICAgICAvLyB0aGVtIHRv
IFhNTCBlbnRpdGllcyBhbmQgZXNjYXBpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgot
ICAgICAgICBDU3RyaW5nIG90aGVyRGVjb2RlZCA9IGVuY29kaW5nLmVuY29kZShzLmRhdGEoKSAr
IHBhdGhFbmQsIHMuc2l6ZSgpIC0gcGF0aEVuZCwgVVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNv
ZGFibGVzKTsKLQotICAgICAgICBvdXRwdXQucmVzaXplKHBhdGhEZWNvZGVkLmxlbmd0aCgpICsg
b3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsKLSAgICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCksIHBh
dGhEZWNvZGVkLmRhdGEoKSwgcGF0aERlY29kZWQubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHko
b3V0cHV0LmRhdGEoKSArIHBhdGhEZWNvZGVkLmxlbmd0aCgpLCBvdGhlckRlY29kZWQuZGF0YSgp
LCBvdGhlckRlY29kZWQubGVuZ3RoKCkpOwotICAgIH0KLSAgICBvdXRwdXQuYXBwZW5kKCdcMCcp
OyAvLyBudWxsLXRlcm1pbmF0ZSB0aGUgb3V0cHV0LgotfQotCi1zdGF0aWMgU3RyaW5nIHN1YnN0
aXR1dGVCYWNrc2xhc2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBzaXplX3QgcXVl
c3Rpb25Qb3MgPSBzdHJpbmcuZmluZCgnPycpOwotICAgIHNpemVfdCBoYXNoUG9zID0gc3RyaW5n
LmZpbmQoJyMnKTsKLSAgICB1bnNpZ25lZCBwYXRoRW5kOwotCi0gICAgaWYgKGhhc2hQb3MgIT0g
bm90Rm91bmQgJiYgKHF1ZXN0aW9uUG9zID09IG5vdEZvdW5kIHx8IHF1ZXN0aW9uUG9zID4gaGFz
aFBvcykpCi0gICAgICAgIHBhdGhFbmQgPSBoYXNoUG9zOwotICAgIGVsc2UgaWYgKHF1ZXN0aW9u
UG9zICE9IG5vdEZvdW5kKQotICAgICAgICBwYXRoRW5kID0gcXVlc3Rpb25Qb3M7Ci0gICAgZWxz
ZQotICAgICAgICBwYXRoRW5kID0gc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgcmV0dXJuIHN0cmlu
Zy5sZWZ0KHBhdGhFbmQpLnJlcGxhY2UoJ1xcJywnLycpICsgc3RyaW5nLnN1YnN0cmluZyhwYXRo
RW5kKTsKLX0KLQotYm9vbCBLVVJMOjppc0hpZXJhcmNoaWNhbCgpIGNvbnN0Ci17Ci0gICAgaWYg
KCFtX2lzVmFsaWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBBU1NFUlQobV9zdHJpbmdb
bV9zY2hlbWVFbmRdID09ICc6Jyk7Ci0gICAgcmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsg
MV0gPT0gJy8nOwotfQotCi12b2lkIEtVUkw6OmNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEy
PiYgYnVmZmVyKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHRocm93cyBhd2F5IHRoZSBo
aWdoIGJ5dGVzIG9mIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIQotICAgIC8vIFRo
YXQncyBmaW5lIGZvciBhIHZhbGlkIFVSTCwgd2hpY2ggaXMgYWxsIEFTQ0lJLCBidXQgbm90IGZv
ciBpbnZhbGlkIFVSTHMuCi0gICAgYnVmZmVyLnJlc2l6ZShtX3N0cmluZy5sZW5ndGgoKSk7Ci0g
ICAgY29weUFTQ0lJKG1fc3RyaW5nLCBidWZmZXIuZGF0YSgpKTsKLX0KLQotYm9vbCBwcm90b2Nv
bElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCkKLXsKLSAgICAvLyBE
byB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0LgotICAg
IGFzc2VydFByb3RvY29sSXNHb29kKHByb3RvY29sKTsKLSAgICBmb3IgKGludCBpID0gMDsgOyAr
K2kpIHsKLSAgICAgICAgaWYgKCFwcm90b2NvbFtpXSkKLSAgICAgICAgICAgIHJldHVybiB1cmxb
aV0gPT0gJzonOwotICAgICAgICBpZiAoIWlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW2ld
LCBwcm90b2NvbFtpXSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1i
b29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmIHByb3RvY29sKQotewotICAgIC8vIFJG
QzM5ODY6IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyAiKyIgLyAiLSIgLyAiLiIgKQotICAgIGlm
IChwcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWlz
U2NoZW1lRmlyc3RDaGFyKHByb3RvY29sWzBdKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHVuc2lnbmVkIHByb3RvY29sTGVuZ3RoID0gcHJvdG9jb2wubGVuZ3RoKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IHByb3RvY29sTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKCFp
c1NjaGVtZUNoYXIocHJvdG9jb2xbaV0pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmbmRlZiBOREVCVUcKLXZvaWQgS1VSTDo6cHJp
bnQoKSBjb25zdAotewotICAgIHByaW50ZigiJXNcbiIsIG1fc3RyaW5nLnV0ZjgoKS5kYXRhKCkp
OwotfQotI2VuZGlmCi0KLVN0cmluZyBLVVJMOjpzdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBj
b25zdAotewotICAgIEtVUkwgcmVmZXJyZXIoKnRoaXMpOwotICAgIHJlZmVycmVyLnNldFVzZXIo
U3RyaW5nKCkpOwotICAgIHJlZmVycmVyLnNldFBhc3MoU3RyaW5nKCkpOwotICAgIHJlZmVycmVy
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIHJldHVybiByZWZlcnJlci5zdHJpbmco
KTsKLX0KLQotYm9vbCBLVVJMOjppc0xvY2FsRmlsZSgpIGNvbnN0Ci17Ci0gICAgLy8gSW5jbHVk
aW5nIGZlZWQgaGVyZSBtaWdodCBiZSBhIGJhZCBpZGVhIHNpbmNlIGRyYWcgYW5kIGRyb3AgdXNl
cyB0aGlzIGNoZWNrCi0gICAgLy8gYW5kIGluY2x1ZGluZyBmZWVkIHdvdWxkIGFsbG93IGZlZWRz
IHRvIHBvdGVudGlhbGx5IGxldCBzb21lb25lJ3MgYmxvZwotICAgIC8vIHJlYWQgdGhlIGNvbnRl
bnRzIG9mIHRoZSBjbGlwYm9hcmQgb24gYSBkcmFnLCBldmVuIHdpdGhvdXQgYSBkcm9wLgotICAg
IC8vIExpa2V3aXNlIHdpdGggdXNpbmcgdGhlIEZyYW1lTG9hZGVyOjpzaG91bGRUcmVhdFVSTEFz
TG9jYWwoKSBmdW5jdGlvbi4KLSAgICByZXR1cm4gcHJvdG9jb2xJcygiZmlsZSIpOwotfQotCi1i
b29sIHByb3RvY29sSXNKYXZhU2NyaXB0KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIHJldHVy
biBwcm90b2NvbElzKHVybCwgImphdmFzY3JpcHQiKTsKLX0KLQotY29uc3QgS1VSTCYgYmxhbmtV
UkwoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoS1VSTCwgc3RhdGljQmxhbmtVUkwsIChQ
YXJzZWRVUkxTdHJpbmcsICJhYm91dDpibGFuayIpKTsKLSAgICByZXR1cm4gc3RhdGljQmxhbmtV
Ukw7Ci19Ci0KLWJvb2wgS1VSTDo6aXNCbGFua1VSTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHBy
b3RvY29sSXMoImFib3V0Iik7Ci19Ci0KLWJvb2wgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVu
c2lnbmVkIHNob3J0IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCi17Ci0gICAgaWYgKHBy
b3RvY29sLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQsIENhc2VGb2xkaW5nSGFzaD4gRGVmYXVsdFBvcnRzTWFw
OwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRGVmYXVsdFBvcnRzTWFwLCBkZWZhdWx0UG9ydHMs
ICgpKTsKLSAgICBpZiAoZGVmYXVsdFBvcnRzLmlzRW1wdHkoKSkgewotICAgICAgICBkZWZhdWx0
UG9ydHMuc2V0KCJodHRwIiwgODApOwotICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJodHRwcyIs
IDQ0Myk7Ci0gICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cCIsIDIxKTsKLSAgICAgICAgZGVm
YXVsdFBvcnRzLnNldCgiZnRwcyIsIDk5MCk7Ci0gICAgfQotICAgIHJldHVybiBkZWZhdWx0UG9y
dHMuZ2V0KHByb3RvY29sKSA9PSBwb3J0OwotfQotCi1ib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtV
UkwmIHVybCkKLXsKLSAgICB1bnNpZ25lZCBzaG9ydCBwb3J0ID0gdXJsLnBvcnQoKTsKLQotICAg
IC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9ydCwgcmV0dXJuIGVhcmx5IGZvciB0
aGUgIm5vIHBvcnQiIGNhc2UuCi0gICAgaWYgKCFwb3J0KQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0Y2hlcyB0aGUgcG9ydCBibG9ja2lu
ZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KLSAgICAvLyBTZWUgaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlv
bi4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgYmxvY2tlZFBvcnRMaXN0W10gPSB7
Ci0gICAgICAgIDEsICAgIC8vIHRjcG11eAotICAgICAgICA3LCAgICAvLyBlY2hvCi0gICAgICAg
IDksICAgIC8vIGRpc2NhcmQKLSAgICAgICAgMTEsICAgLy8gc3lzdGF0Ci0gICAgICAgIDEzLCAg
IC8vIGRheXRpbWUKLSAgICAgICAgMTUsICAgLy8gbmV0c3RhdAotICAgICAgICAxNywgICAvLyBx
b3RkCi0gICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KLSAgICAgICAgMjAsICAgLy8gRlRQLWRhdGEK
LSAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKLSAgICAgICAgMjIsICAgLy8gU1NICi0gICAg
ICAgIDIzLCAgIC8vIHRlbG5ldAotICAgICAgICAyNSwgICAvLyBTTVRQCi0gICAgICAgIDM3LCAg
IC8vIHRpbWUKLSAgICAgICAgNDIsICAgLy8gbmFtZQotICAgICAgICA0MywgICAvLyBuaWNuYW1l
Ci0gICAgICAgIDUzLCAgIC8vIGRvbWFpbgotICAgICAgICA3NywgICAvLyBwcml2LXJqcwotICAg
ICAgICA3OSwgICAvLyBmaW5nZXIKLSAgICAgICAgODcsICAgLy8gdHR5bGluawotICAgICAgICA5
NSwgICAvLyBzdXBkdXAKLSAgICAgICAgMTAxLCAgLy8gaG9zdHJpYW1lCi0gICAgICAgIDEwMiwg
IC8vIGlzby10c2FwCi0gICAgICAgIDEwMywgIC8vIGdwcGl0bnAKLSAgICAgICAgMTA0LCAgLy8g
YWNyLW5lbWEKLSAgICAgICAgMTA5LCAgLy8gUE9QMgotICAgICAgICAxMTAsICAvLyBQT1AzCi0g
ICAgICAgIDExMSwgIC8vIHN1bnJwYwotICAgICAgICAxMTMsICAvLyBhdXRoCi0gICAgICAgIDEx
NSwgIC8vIFNGVFAKLSAgICAgICAgMTE3LCAgLy8gdXVjcC1wYXRoCi0gICAgICAgIDExOSwgIC8v
IG5udHAKLSAgICAgICAgMTIzLCAgLy8gTlRQCi0gICAgICAgIDEzNSwgIC8vIGxvYy1zcnYgLyBl
cG1hcAotICAgICAgICAxMzksICAvLyBuZXRiaW9zCi0gICAgICAgIDE0MywgIC8vIElNQVAyCi0g
ICAgICAgIDE3OSwgIC8vIEJHUAotICAgICAgICAzODksICAvLyBMREFQCi0gICAgICAgIDQ2NSwg
IC8vIFNNVFArU1NMCi0gICAgICAgIDUxMiwgIC8vIHByaW50IC8gZXhlYwotICAgICAgICA1MTMs
ICAvLyBsb2dpbgotICAgICAgICA1MTQsICAvLyBzaGVsbAotICAgICAgICA1MTUsICAvLyBwcmlu
dGVyCi0gICAgICAgIDUyNiwgIC8vIHRlbXBvCi0gICAgICAgIDUzMCwgIC8vIGNvdXJpZXIKLSAg
ICAgICAgNTMxLCAgLy8gQ2hhdAotICAgICAgICA1MzIsICAvLyBuZXRuZXdzCi0gICAgICAgIDU0
MCwgIC8vIFVVQ1AKLSAgICAgICAgNTU2LCAgLy8gcmVtb3RlZnMKLSAgICAgICAgNTYzLCAgLy8g
Tk5UUCtTU0wKLSAgICAgICAgNTg3LCAgLy8gRVNNVFAKLSAgICAgICAgNjAxLCAgLy8gc3lzbG9n
LWNvbm4KLSAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKLSAgICAgICAgOTkzLCAgLy8gSU1BUCtT
U0wKLSAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKLSAgICAgICAgMjA0OSwgLy8gTkZTCi0gICAg
ICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNlcnZlciBbQXBwbGUgYWRkaXRpb25d
Ci0gICAgICAgIDQwNDUsIC8vIGxvY2tkCi0gICAgICAgIDYwMDAsIC8vIFgxMQotICAgICAgICA2
NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KLSAgICAgICAgNjY2NiwgLy8g
QWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjcsIC8vIFN0YW5kYXJk
IElSQyBbQXBwbGUgYWRkaXRpb25dCi0gICAgICAgIDY2NjgsIC8vIEFsdGVybmF0ZSBJUkMgW0Fw
cGxlIGFkZGl0aW9uXQotICAgICAgICA2NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRp
dGlvbl0KLSAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGlu
dmFsaWQgcG9ydCBudW1iZXJzCi0gICAgfTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogY29u
c3QgYmxvY2tlZFBvcnRMaXN0RW5kID0gYmxvY2tlZFBvcnRMaXN0ICsgV1RGX0FSUkFZX0xFTkdU
SChibG9ja2VkUG9ydExpc3QpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIC8vIFRoZSBwb3J0IGxp
c3QgbXVzdCBiZSBzb3J0ZWQgZm9yIGJpbmFyeV9zZWFyY2ggdG8gd29yay4KLSAgICBzdGF0aWMg
Ym9vbCBjaGVja2VkUG9ydExpc3QgPSBmYWxzZTsKLSAgICBpZiAoIWNoZWNrZWRQb3J0TGlzdCkg
ewotICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwID0gYmxvY2tlZFBvcnRMaXN0
OyBwICE9IGJsb2NrZWRQb3J0TGlzdEVuZCAtIDE7ICsrcCkKLSAgICAgICAgICAgIEFTU0VSVCgq
cCA8ICoocCArIDEpKTsKLSAgICAgICAgY2hlY2tlZFBvcnRMaXN0ID0gdHJ1ZTsKLSAgICB9Ci0j
ZW5kaWYKLQotICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBpbiB0aGUgYmxvY2tlZCBwb3J0IGxp
c3QsIGFsbG93IGl0LgotICAgIGlmICghYmluYXJ5X3NlYXJjaChibG9ja2VkUG9ydExpc3QsIGJs
b2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
QWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywgYXMgTW96aWxsYSBkb2VzLgotICAg
IGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAmJiB1cmwucHJvdG9jb2xJcygiZnRwIikp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gQWxsb3cgYW55IHBvcnQgbnVtYmVyIGlu
IGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBpcyBpZ25vcmVkLgotICAgIGlmICh1
cmwucHJvdG9jb2xJcygiZmlsZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotI2lmIFBMQVRG
T1JNKEJMQUNLQkVSUlkpCi0gICAgaWYgKHVybC5wcm90b2NvbElzKCJsb2NhbCIpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcg
bWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBBU1NFUlQocHJv
dG9jb2xJcyh1cmwsICJkYXRhIikpOwotICAgIHNpemVfdCBpbmRleCA9IHVybC5maW5kKCc7Jyk7
Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICBpbmRleCA9IHVybC5maW5kKCcs
Jyk7Ci0gICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgIGlmIChpbmRleCA+IDUp
Ci0gICAgICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1LCBpbmRleCAtIDUpLmxvd2VyKCk7
Ci0gICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7IC8vIERhdGEgVVJMcyB3aXRoIG5vIE1JTUUg
dHlwZSBhcmUgY29uc2lkZXJlZCB0ZXh0L3BsYWluLgotICAgIH0KLSAgICByZXR1cm4gIiI7Ci19
Ci0KLVN0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3QgS1VSTCYgdXJsKQotewotICAgIFN0cmlu
ZyBkZWNvZGVkUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0aCgpKTsKLSAg
ICBTdHJpbmcgZXh0ZW5zaW9uID0gZGVjb2RlZFBhdGguc3Vic3RyaW5nKGRlY29kZWRQYXRoLnJl
dmVyc2VGaW5kKCcuJykgKyAxKTsKLQotICAgIC8vIFdlIGRvbid0IHVzZSBNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgoKSBiZWNhdXNlIGl0IHJldHVybnMgImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIgdXBvbiBmYWlsdXJlCi0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7Ci19Ci0KLWJvb2wgS1VSTDo6aXNT
YWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcu
aXNTYWZlVG9TZW5kVG9Bbm90aGVyVGhyZWFkKCk7Ci19Ci0KLVN0cmluZyBLVVJMOjpzdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoKSBjb25zdAotewotICAgIGlm
IChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBzdHJpbmcoKTsK
LQotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIgLSAxKSArICIuLi4iICsgc3Ry
aW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYTllNjVjMDkyZGQxN2YzMDA3ZDJjYTZj
ZjJkZTViYTgzYTAyYzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyAvZGV2L251bGwKQEAgLTEs
MzU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIEtVUkxfaAotI2RlZmluZSBLVVJMX2gKLQotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpZiBVU0Uo
Q0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oTUFDKQotT0JKQ19DTEFTUyBOU1VSTDsKLSNlbmRpZgotCi0jaWYgUExBVEZP
Uk0oUVQpCi1RVF9CRUdJTl9OQU1FU1BBQ0UKLWNsYXNzIFFVcmw7Ci1RVF9FTkRfTkFNRVNQQUNF
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBUZXh0RW5jb2Rpbmc7Ci1z
dHJ1Y3QgS1VSTEhhc2g7Ci0KLWVudW0gUGFyc2VkVVJMU3RyaW5nVGFnIHsgUGFyc2VkVVJMU3Ry
aW5nIH07Ci0KLWNsYXNzIEtVUkwgewotcHVibGljOgotICAgIC8vIEdlbmVyYXRlcyBhIFVSTCB3
aGljaCBjb250YWlucyBhIG51bGwgc3RyaW5nLgotICAgIEtVUkwoKSB7IGludmFsaWRhdGUoKTsg
fQotCi0gICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRlIFVSTCBzdHJpbmcuIFRoZSBz
dHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgS1VSTDo6c3RyaW5nKCkgY2FsbGVkIG9u
IGEgdmFsaWQKLSAgICAvLyBLVVJMIG9iamVjdCwgb3IgaW5kaXNjZXJuaWJsZSBmcm9tIHN1Y2gu
Ci0gICAgLy8gSXQgaXMgdXN1YWxseSBiZXN0IHRvIGF2b2lkIHJlcGVhdGVkbHkgcGFyc2luZyBh
IHN0cmluZywgdW5sZXNzIG1lbW9yeSBzYXZpbmcgb3V0d2VpZ2ggdGhlIHBvc3NpYmxlIHNsb3ct
ZG93bnMuCi0gICAgS1VSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYpOwotICAg
IGV4cGxpY2l0IEtVUkwoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fc3RyaW5n
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RyaW5nKCkuaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKTsgfQotCi0gICAgLy8gUmVzb2x2ZXMgdGhlIHJlbGF0aXZlIFVSTCB3aXRoIHRoZSBnaXZl
biBiYXNlIFVSTC4gSWYgcHJvdmlkZWQsIHRoZQotICAgIC8vIFRleHRFbmNvZGluZyBpcyB1c2Vk
IHRvIGVuY29kZSBub24tQVNDSUkgY2hhcmFjZXJzLiBUaGUgYmFzZSBVUkwgY2FuIGJlCi0gICAg
Ly8gbnVsbCBvciBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgcmVsYXRpdmUgVVJMIHdpbGwgYmUg
aW50ZXJwcmV0ZWQgYXMKLSAgICAvLyBhYnNvbHV0ZS4KLSAgICAvLyBGSVhNRTogSWYgdGhlIGJh
c2UgVVJMIGlzIGludmFsaWQsIHRoaXMgYWx3YXlzIGNyZWF0ZXMgYW4gaW52YWxpZAotICAgIC8v
IFVSTC4gSW5zdGVhZCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byB0cmVhdCBhbGwgaW52
YWxpZCBiYXNlIFVSTHMKLSAgICAvLyB0aGUgc2FtZSB3YXkgd2UgdHJlYXRlIG51bGwgYW5kIGVt
cHR5IGJhc2UgVVJMcy4KLSAgICBLVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUpOwotICAgIEtVUkwoY29uc3QgS1VSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxh
dGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJik7Ci0KLSAgICBTdHJpbmcgc3RyaXBwZWRGb3JVc2VB
c1JlZmVycmVyKCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlIGFib3ZlIGZ1bmN0aW9ucyBz
aG91bGQgYmUgaGFybW9uaXplZCBzbyB0aGF0IHBhc3NpbmcgYQotICAgIC8vIGJhc2Ugb2YgbnVs
bCBvciB0aGUgZW1wdHkgc3RyaW5nIGdpdmVzIHRoZSBzYW1lIHJlc3VsdCBhcyB0aGUKLSAgICAv
LyBzdGFuZGFyZCBTdHJpbmcgY29uc3RydWN0b3IuCi0KLSAgICAvLyBNYWtlcyBhIGRlZXAgY29w
eS4gSGVscGZ1bCBvbmx5IGlmIHlvdSBuZWVkIHRvIHVzZSBhIEtVUkwgb24gYW5vdGhlcgotICAg
IC8vIHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUg
aW1tdXRhYmxlLCB0aGVyZSdzCi0gICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVy
IGNvcHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgotICAgIEtVUkwgY29weSgpIGNvbnN0
OwotCi0gICAgYm9vbCBpc051bGwoKSBjb25zdDsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsK
LSAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB5b3Ug
Y2FuIHNldCB0aGUgaG9zdCBhbmQgcG9ydCBmb3IgdGhlIFVSTC4KLSAgICAvLyBOb24taGllcmFy
Y2hpY2FsIFVSTHMgZG9uJ3QgaGF2ZSBhIGhvc3QgYW5kIHBvcnQuCi0gICAgYm9vbCBjYW5TZXRI
b3N0T3JQb3J0KCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQotCi0gICAgYm9v
bCBjYW5TZXRQYXRobmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzSGllcmFyY2hpY2FsKCk7IH0KLSAg
ICBib29sIGlzSGllcmFyY2hpY2FsKCkgY29uc3Q7Ci0KLSAgICBjb25zdCBTdHJpbmcmIHN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0KLSAgICBTdHJpbmcgc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwotCi0gICAg
U3RyaW5nIHByb3RvY29sKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGhvc3QoKSBjb25zdDsKLSAgICB1
bnNpZ25lZCBzaG9ydCBwb3J0KCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNQb3J0KCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIHVzZXIoKSBjb25zdDsKLSAgICBTdHJpbmcgcGFzcygpIGNvbnN0OwotICAgIFN0
cmluZyBwYXRoKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3Q7
Ci0gICAgU3RyaW5nIHF1ZXJ5KCkgY29uc3Q7Ci0gICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmll
cigpIGNvbnN0OwotICAgIGJvb2wgaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3Q7Ci0KLSAg
ICBTdHJpbmcgYmFzZUFzU3RyaW5nKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgZmlsZVN5c3RlbVBh
dGgoKSBjb25zdDsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBVUkwncyBw
cm90b2NvbCBpcyB0aGUgc2FtZSBhcyB0aGUgbnVsbC0KLSAgICAvLyB0ZXJtaW5hdGVkIEFTQ0lJ
IGFyZ3VtZW50LiBUaGUgYXJndW1lbnQgbXVzdCBiZSBsb3dlci1jYXNlLgotICAgIGJvb2wgcHJv
dG9jb2xJcyhjb25zdCBjaGFyKikgY29uc3Q7Ci0gICAgYm9vbCBwcm90b2NvbElzRGF0YSgpIGNv
bnN0IHsgcmV0dXJuIHByb3RvY29sSXMoImRhdGEiKTsgfQotICAgIGJvb2wgcHJvdG9jb2xJc0lu
SFRUUEZhbWlseSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb2NhbEZpbGUoKSBjb25zdDsKLSAgICBi
b29sIGlzQmxhbmtVUkwoKSBjb25zdDsKLQotICAgIGJvb2wgc2V0UHJvdG9jb2woY29uc3QgU3Ry
aW5nJik7Ci0gICAgdm9pZCBzZXRIb3N0KGNvbnN0IFN0cmluZyYpOwotCi0gICAgdm9pZCByZW1v
dmVQb3J0KCk7Ci0gICAgdm9pZCBzZXRQb3J0KHVuc2lnbmVkIHNob3J0KTsKLQotICAgIC8vIElu
cHV0IGlzIGxpa2UgImZvby5jb20iIG9yICJmb28uY29tOjgwMDAiLgotICAgIHZvaWQgc2V0SG9z
dEFuZFBvcnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lkIHNldFVzZXIoY29uc3QgU3RyaW5n
Jik7Ci0gICAgdm9pZCBzZXRQYXNzKGNvbnN0IFN0cmluZyYpOwotCi0gICAgLy8gSWYgeW91IHBh
c3MgYW4gZW1wdHkgcGF0aCBmb3IgSFRUUCBvciBIVFRQUyBVUkxzLCB0aGUgcmVzdWx0aW5nIHBh
dGgKLSAgICAvLyB3aWxsIGJlICIvIi4KLSAgICB2b2lkIHNldFBhdGgoY29uc3QgU3RyaW5nJik7
Ci0KLSAgICAvLyBUaGUgcXVlcnkgbWF5IGJlZ2luIHdpdGggYSBxdWVzdGlvbiBtYXJrLCBvciwg
aWYgbm90LCBvbmUgd2lsbCBiZSBhZGRlZAotICAgIC8vIGZvciB5b3UuIFNldHRpbmcgdGhlIHF1
ZXJ5IHRvIHRoZSBlbXB0eSBzdHJpbmcgd2lsbCBsZWF2ZSBhICI/IiBpbiB0aGUKLSAgICAvLyBV
UkwgKHdpdGggbm90aGluZyBhZnRlciBpdCkuIFRvIGNsZWFyIHRoZSBxdWVyeSwgcGFzcyBhIG51
bGwgc3RyaW5nLgotICAgIHZvaWQgc2V0UXVlcnkoY29uc3QgU3RyaW5nJik7Ci0KLSAgICB2b2lk
IHNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHJlbW92ZUZy
YWdtZW50SWRlbnRpZmllcigpOwotCi0gICAgZnJpZW5kIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwotCi0gICAgZnJpZW5kIGJv
b2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7
Ci0KLSAgICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBob3N0RW5k
KCkgY29uc3Q7Ci0KLSAgICB1bnNpZ25lZCBwYXRoU3RhcnQoKSBjb25zdDsKLSAgICB1bnNpZ25l
ZCBwYXRoRW5kKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29u
c3Q7Ci0KLSAgICBvcGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
KCk7IH0KLQotI2lmIFVTRShDRikKLSAgICBLVVJMKENGVVJMUmVmKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBLVVJMKE5TVVJMKik7Ci0gICAgb3BlcmF0b3IgTlNVUkwqKCkgY29uc3Q7Ci0jZW5k
aWYKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0
dXJuIHN0cmluZygpOyB9Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFFUKQotICAgIEtVUkwoY29u
c3QgUVVybCYpOwotICAgIG9wZXJhdG9yIFFVcmwoKSBjb25zdDsKLSNlbmRpZgotCi0gICAgY29u
c3QgS1VSTCogaW5uZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0KLSNpZm5kZWYgTkRFQlVH
Ci0gICAgdm9pZCBwcmludCgpIGNvbnN0OwotI2VuZGlmCi0KLSAgICBib29sIGlzU2FmZVRvU2Vu
ZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwotICAgIHN0YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hh
ciopOwotICAgIHZvaWQgaW5pdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4
dEVuY29kaW5nJik7Ci0gICAgdm9pZCBjb3B5VG9CdWZmZXIoVmVjdG9yPGNoYXIsIDUxMj4mIGJ1
ZmZlcikgY29uc3Q7Ci0KLSAgICAvLyBQYXJzZXMgdGhlIGdpdmVuIFVSTC4gVGhlIG9yaWdpbmFs
U3RyaW5nIHBhcmFtZXRlciBhbGxvd3MgZm9yIGFuCi0gICAgLy8gb3B0aW1pemF0aW9uOiBXaGVu
IHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGZpeGVkLXVwIHN0cmluZywKLSAgICAvLyBp
dCB3aWxsIHVzZSB0aGUgcGFzc2VkLWluIHN0cmluZyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBu
ZXcgb25lLgotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBwYXJzZShj
b25zdCBjaGFyKiB1cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcgPSAwKTsKLQotICAg
IGJvb2wgaGFzUGF0aCgpIGNvbnN0OwotCi0gICAgU3RyaW5nIG1fc3RyaW5nOwotICAgIGJvb2wg
bV9pc1ZhbGlkIDogMTsKLSAgICBib29sIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseSA6IDE7Ci0K
LSAgICBpbnQgbV9zY2hlbWVFbmQ7Ci0gICAgaW50IG1fdXNlclN0YXJ0OwotICAgIGludCBtX3Vz
ZXJFbmQ7Ci0gICAgaW50IG1fcGFzc3dvcmRFbmQ7Ci0gICAgaW50IG1faG9zdEVuZDsKLSAgICBp
bnQgbV9wb3J0RW5kOwotICAgIGludCBtX3BhdGhBZnRlckxhc3RTbGFzaDsKLSAgICBpbnQgbV9w
YXRoRW5kOwotICAgIGludCBtX3F1ZXJ5RW5kOwotICAgIGludCBtX2ZyYWdtZW50RW5kOwotfTsK
LQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJik7Ci1ib29sIG9wZXJh
dG9yPT0oY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0cmluZyYsIGNvbnN0IEtVUkwmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsK
LWJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJik7Ci0KLWJvb2wgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYpOwot
Ym9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
KTsKLQotY29uc3QgS1VSTCYgYmxhbmtVUkwoKTsKLQotLy8gRnVuY3Rpb25zIHRvIGRvIFVSTCBv
cGVyYXRpb25zIG9uIHN0cmluZ3MuCi0vLyBUaGVzZSBhcmUgb3BlcmF0aW9ucyB0aGF0IGFyZW4n
dCBmYXN0ZXIgb24gYSBwYXJzZWQgVVJMLgotLy8gVGhlc2UgYXJlIGFsc28gZGlmZmVyZW50IGZy
b20gdGhlIEtVUkwgZnVuY3Rpb25zIGluIHRoYXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJp
bmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2FibGUgVVJMLgotLy8gVGhpcyBpcyBlc3BlY2lhbGx5
IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2Fy
aWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KLQotYm9vbCBwcm90b2NvbElzKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Ci1ib29sIHByb3RvY29sSXNKYXZhU2Ny
aXB0KGNvbnN0IFN0cmluZyYgdXJsKTsKLQotYm9vbCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wo
dW5zaWduZWQgc2hvcnQgcG9ydCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7Ci1ib29sIHBvcnRB
bGxvd2VkKGNvbnN0IEtVUkwmKTsgLy8gQmxhY2tsaXN0IHBvcnRzIHRoYXQgc2hvdWxkIG5ldmVy
IGJlIHVzZWQgZm9yIFdlYiByZXNvdXJjZXMuCi0KLWJvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0
IFN0cmluZyYpOwotCi1TdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVy
bCk7Ci1TdHJpbmcgbWltZVR5cGVGcm9tVVJMKGNvbnN0IEtVUkwmKTsKLQotLy8gVW5lc2NhcGVz
IHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgVVJMIGVzY2FwaW5nIHJ1bGVzLCBnaXZlbiBhbiBvcHRp
b25hbAotLy8gZW5jb2RpbmcgKGRlZmF1bHRpbmcgdG8gVVRGLTggb3RoZXJ3aXNlKS4gREFOR0VS
OiBJZiB0aGUgVVJMIGhhcyAiJTAwIgotLy8gaW4gaXQsIHRoZSByZXN1bHRpbmcgc3RyaW5nIHdp
bGwgaGF2ZSBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMhCi1TdHJpbmcgZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwotU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsKLQotU3RyaW5nIGVuY29kZVdp
dGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJik7Ci0KLS8vIElubGluZXMuCi0KLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgS1VSTCYgYSwgY29uc3QgS1VSTCYgYikKLXsKLSAg
ICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEtVUkwmIGEsIGNvbnN0IFN0cmluZyYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcoKSA9PSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgS1VSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0g
ICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBLVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEu
c3RyaW5nKCkgIT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcm
IGEsIGNvbnN0IEtVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQot
Ly8gSW5saW5lIHZlcnNpb25zIG9mIHNvbWUgbm9uLUdvb2dsZVVSTCBmdW5jdGlvbnMgc28gd2Ug
Y2FuIGdldCBpbmxpbmluZwotLy8gd2l0aG91dCBoYXZpbmcgdG8gaGF2ZSBhIGxvdCBvZiB1Z2x5
IGlmZGVmcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KLQotaW5saW5lIGJvb2wgS1VSTDo6aXNO
dWxsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7Ci19Ci0KLWlubGlu
ZSBib29sIEtVUkw6OmlzRW1wdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0cmluZy5pc0Vt
cHR5KCk7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6OmlzVmFsaWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lzVmFsaWQ7Ci19Ci0KLWlubGluZSBib29sIEtVUkw6Omhhc1BhdGgoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOwotfQotCi1pbmxpbmUgYm9vbCBL
VVJMOjpoYXNQb3J0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9ob3N0RW5kIDwgbV9wb3J0RW5k
OwotfQotCi1pbmxpbmUgYm9vbCBLVVJMOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5OwotfQotCi1pbmxpbmUgdW5z
aWduZWQgS1VSTDo6aG9zdFN0YXJ0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gKG1fcGFzc3dvcmRF
bmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dvcmRFbmQgKyAxOwot
fQotCi1pbmxpbmUgdW5zaWduZWQgS1VSTDo6aG9zdEVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faG9zdEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6OnBhdGhTdGFydCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcG9ydEVuZDsKLX0KLQotaW5saW5lIHVuc2lnbmVkIEtVUkw6OnBh
dGhFbmQoKSBjb25zdAotewotICAgIHJldHVybiBtX3BhdGhFbmQ7Ci19Ci0KLWlubGluZSB1bnNp
Z25lZCBLVVJMOjpwYXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdAotewotICAgIHJldHVybiBtX3Bh
dGhBZnRlckxhc3RTbGFzaDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotICAgIC8vIEtVUkxIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIFN0cmlu
ZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDsKLSAgICB0ZW1w
bGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpLVVJMPiB7Ci0gICAgICAgIHR5cGVk
ZWYgV2ViQ29yZTo6S1VSTEhhc2ggSGFzaDsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotI2VuZGlmIC8vIEtVUkxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
S1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkxIYXNoLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxZGQxM2IyYWM5M2M4MzQxNjE4N2NhMjYzZGY4OTg0NjZh
ZDM5OWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEhhc2guaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lm
bmRlZiBLVVJMSGFzaF9oCi0jZGVmaW5lIEtVUkxIYXNoX2gKLQotI2luY2x1ZGUgIktVUkwuaCIK
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIHN0cnVjdCBLVVJMSGFzaCB7
Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEtVUkwmIGtleSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGtleS5zdHJpbmcoKS5pbXBsKCktPmhhc2goKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEtVUkwmIGEsIGNvbnN0IEtV
UkwmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoOjplcXVhbChh
LnN0cmluZygpLCBiLnN0cmluZygpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci0gICAgfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotICAgIHRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6S1VSTD4gOiBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8V2ViQ29yZTo6S1VSTD4geyB9OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8v
IEtVUkxIYXNoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNo
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcAppbmRleCAyNTczZjYz
NTNmYjBmYjYxYTBlYWFjZmEzNjlkMDViZWE2MGVjMmE5Li4yYjJlZTIwMDgwYzBlODI3N2EwOWNm
MjYzYzQ0OWMxZDYxMzcyZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
aW5rSGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBA
IC0yMiw3ICsyMiw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2gu
aD4KQEAgLTIyNiwxMyArMjI2LDEzIEBAIExpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBV
Q2hhciogdXJsLCB1bnNpZ25lZCBsZW5ndGgpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNv
bnN0IEtVUkwmIGJhc2UsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCwgVmVjdG9yPENoYXJhY3RlclR5cGUsIDUxMj4mIGJ1ZmZlcikKK3N0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQgdmlzaXRlZFVSTElubGluZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IENo
YXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPENoYXJhY3Rl
clR5cGUsIDUxMj4mIGJ1ZmZlcikKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVGhpcyBpcyBhIHBvb3IgbWFuJ3MgY29tcGxldGVVUkwuIEZhc3RlciB3aXRo
IGxlc3MgbWVtb3J5IGFsbG9jYXRpb24uCi0gICAgLy8gRklYTUU6IEl0J3MgbWlzc2luZyBhIGxv
dCBvZiB3aGF0IGNvbXBsZXRlVVJMIGRvZXMgYW5kIGEgbG90IG9mIHdoYXQgS1VSTCBkb2VzLgor
ICAgIC8vIEZJWE1FOiBJdCdzIG1pc3NpbmcgYSBsb3Qgb2Ygd2hhdCBjb21wbGV0ZVVSTCBkb2Vz
IGFuZCBhIGxvdCBvZiB3aGF0IFVSTCBkb2VzLgogICAgIC8vIEZvciBleGFtcGxlLCBpdCBkb2Vz
IG5vdCBoYW5kbGUgaW50ZXJuYXRpb25hbCBkb21haW4gbmFtZXMgcHJvcGVybHkuCiAKICAgICAv
LyBGSVhNRTogSXQgaXMgd3JvbmcgdGhhdCB3ZSBkbyBub3QgZG8gZnVydGhlciBwcm9jZXNzaW5n
IG9uIHN0cmluZ3MgdGhhdCBoYXZlICI6Ly8iIGluIHRoZW06CkBAIC0yODQsMTIgKzI4NCwxMiBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29uc3QgS1VSTCYg
YmFzZSwgY29uc3QgQ2hhcmFjdGVyVHlwZQogICAgIHJldHVybjsKIH0KIAotdm9pZCB2aXNpdGVk
VVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBW
ZWN0b3I8VUNoYXIsIDUxMj4mIGJ1ZmZlcikKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4m
IGJ1ZmZlcikKIHsKICAgICByZXR1cm4gdmlzaXRlZFVSTElubGluZShiYXNlLCBhdHRyaWJ1dGVV
UkwuY2hhcmFjdGVycygpLCBhdHRyaWJ1dGVVUkwubGVuZ3RoKCksIGJ1ZmZlcik7CiB9CiAKLUxp
bmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBLVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCkKK0xpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKQogewogICAgIGlmIChhdHRyaWJ1
dGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5r
SGFzaC5oCmluZGV4IDc4ZWFhM2E0M2M2YzJhYjllMDRiMDYyOGM5MDZiZGU5ZTA3ZWFmMjIuLjI5
YmNmZTBhZTAwMjQ2ZGFhOWEyOWFlMzM5NjIwYTZlMzVmOGM0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGlua0hhc2guaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiAK
QEAgLTYxLDEyICs2MSwxMiBAQCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3QgVUNoYXIq
IHVybCwgdW5zaWduZWQgbGVuZ3RoKTsKIC8vIGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFz
aCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB2aXNpdGVkCiAvLyBsaW5rIGNv
bG9yaW5nLiBJdCB3aWxsIHJldHVybiB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAwIGlmIGF0dHJpYnV0
ZVVSTCBkb2VzIG5vdAogLy8gbG9vayBsaWtlIGEgcmVsYXRpdmUgVVJMLgotTGlua0hhc2ggdmlz
aXRlZExpbmtIYXNoKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmli
dXRlVVJMKTsKK0xpbmtIYXNoIHZpc2l0ZWRMaW5rSGFzaChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKIAogLy8gUmVzb2x2ZXMgdGhlIHBvdGVudGlh
bGx5IHJlbGF0aXZlIFVSTCAiYXR0cmlidXRlVVJMIiByZWxhdGl2ZSB0byB0aGUgZ2l2ZW4KIC8v
IGJhc2UgVVJMLCBhbmQgcmV0dXJucyB0aGUgaGFzaCBvZiB0aGUgc3RyaW5nIHRoYXQgd2lsbCBi
ZSB1c2VkIGZvciB2aXNpdGVkLgogLy8gSXQgd2lsbCByZXR1cm4gYW4gZW1wdHkgVmVjdG9yIGlu
IGNhc2Ugb2YgZXJyb3JzLgotdm9pZCB2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIGJhc2UsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKK3ZvaWQg
dmlzaXRlZFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMLCBWZWN0b3I8VUNoYXIsIDUxMj4mKTsKIAogCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDdlMjc3Y2UxNTM1MDIzZGZmZTQw
N2JkYTY0MGQxM2E5ZTc0NmM0ZWEuLjg5MjExZjBjNjI1ZjM2M2QxMTcwMGQ3M2I0MmU3YTc2NGVi
ZGY3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTI4LDcgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkRyYWdJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTg2LDcgKzg2LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKIH07CiAKIHN0cnVj
dCBQYXN0ZWJvYXJkVVJMIHsKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFN0cmlu
ZyB0aXRsZTsKICNpZiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiAgICAgU3RyaW5n
IHVzZXJWaXNpYmxlRm9ybTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHJlYWRSVEZEKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcm
IHR5cGUpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZWFkVVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCByZWFk
UGxhaW5UZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKIH07CkBAIC0xNzAsNyArMTcwLDcgQEAgcHVi
bGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKSB8fCBQTEFU
Rk9STShXSU4pCi0gICAgdm9pZCB3cml0ZUltYWdlKE5vZGUqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSk7IC8vIEZJWE1FOiBMYXllcmluZyB2aW9sYXRpb24uCisgICAgdm9pZCB3
cml0ZUltYWdlKE5vZGUqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsgLy8gRklY
TUU6IExheWVyaW5nIHZpb2xhdGlvbi4KICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uKFJhbmdlKiwg
Ym9vbCBjYW5TbWFydENvcHlPckRlbGV0ZSwgRnJhbWUqLCBTaG91bGRTZXJpYWxpemVTZWxlY3Rl
ZFRleHRGb3JDbGlwYm9hcmQgPSBEZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSk7IC8vIEZJWE1FOiBM
YXllcmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIApAQCAtMjEwLDkgKzIxMCw5IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBkYXRhT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhT2JqZWN0OyB9CiAgICAgdm9pZCBzZXRFeHRlcm5hbERhdGFP
YmplY3QoSURhdGFPYmplY3QqKTsKLSAgICB2b2lkIHdyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmpl
Y3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgd3JpdGVVUkxUb1dyaXRh
YmxlRGF0YU9iamVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKTsKICAgICBDT01QdHI8V0NE
YXRhT2JqZWN0PiB3cml0YWJsZURhdGFPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX3dyaXRhYmxl
RGF0YU9iamVjdDsgfQotICAgIHZvaWQgd3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50Kiwg
Y29uc3QgS1VSTCYpOyAvLyBGSVhNRTogTGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIHZvaWQgd3Jp
dGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50KiwgY29uc3QgVVJMJik7IC8vIEZJWE1FOiBMYXll
cmluZyB2aW9sYXRpb24uCiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTI0MCw3ICsyNDAsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGluZ1Bhc3RlYm9hcmQoKTsKICAgICB2b2lk
IHdyaXRlUmFuZ2VUb0RhdGFPYmplY3QoUmFuZ2UqLCBGcmFtZSopOyAvLyBGSVhNRTogTGF5ZXJp
bmcgdmlvbGF0aW9uLgotICAgIHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgd3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB3cml0ZVBsYWluVGV4dFRvRGF0YU9iamVjdChj
b25zdCBTdHJpbmcmLCBTbWFydFJlcGxhY2VPcHRpb24pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0ZWd5LmgKaW5kZXggODE1YzNmOTgwNTI1ZjM4
NmVhOGY0MTFmMzJkNmI3ZjFjMzc4NTEwYS4uYmZmMTZjODUwZDViNDAwNThjZDk0ZjYxZDIyZDM4
ZWE1MTE3ZjYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZFN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFN0cmF0
ZWd5LmgKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29s
b3I7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogICAgIAogY2xhc3MgUGFzdGVib2FyZFN0cmF0
ZWd5IHsKIHB1YmxpYzoKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgbG9u
ZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmly
dHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIENvbG9yIGNvbG9yKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIEtVUkwgdXJsKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpID0gMDsKKyAgICB2aXJ0dWFsIFVSTCB1cmwoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgPSAwOwogICAgIAogICAgIHZpcnR1YWwgbG9uZyBh
ZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAgICAgdmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
UGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJk
LmgKaW5kZXggMjM2MjU1Mzc5N2RlZWEyZTRjNjFjZTk1NDI4OGQyOWI0ODQ4MTNiZC4uZGQ2ODY3
OTM2OTY0ZjUwOGJhMjgwODBhZmYzNDdjN2E5NjE4M2YxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTQzLDcgKzQzLDcgQEAgT0JKQ19DTEFT
UyBVSVBhc3RlYm9hcmQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgUGxhdGZvcm1QYXN0ZWJvYXJkIHsKIHB1Ymxp
YzoKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIGxvbmcgY2hhbmdlQ291bnQoKSBjb25z
dDsKICAgICBDb2xvciBjb2xvcigpOwotICAgIEtVUkwgdXJsKCk7CisgICAgVVJMIHVybCgpOwog
CiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQsIGFuZCByZXR1cm4gbmV3
IGNoYW5nZSBjb3VudC4KICAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU1NM
S2V5R2VuZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3Iu
aAppbmRleCAwNjUxNTI2MDU1ODg4YjE4OThiNDBjMDA1MTEwNzVmOTI1NTJmYjk4Li5kZjY4YmZl
N2VmNjQ4N2FmZDg0MWJhNGFjZWRlN2Y2ODkxMTkzNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TU0xLZXlHZW5lcmF0b3IuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKIAogICAgIC8vIFJldHVy
bnMgc3RyaW5ncyByZXByZXNlbnRpbmcga2V5IHNpemVzIHRoYXQgbWF5IGJlIHVzZWQKICAgICAv
LyBmb3IgdGhlIDxrZXlnZW4+IHRhZy4gVGhlIGZpcnN0IHN0cmluZyBpcyBkaXNwbGF5ZWQgYXMg
dGhlIGRlZmF1bHQKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8v
IFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgPGtleWdlbj4gdGFnIGluIGZvcm0gZWxlbWVudHMu
CiAgICAgLy8gUmV0dXJucyBhIHNpZ25lZCBjb3B5IG9mIHRoZSBjb21iaW5lZCBjaGFsbGVuZ2Ug
c3RyaW5nIGFuZCBwdWJsaWMKICAgICAvLyBrZXkgKGZyb20gYSBuZXdseSBnZW5lcmF0ZWQga2V5
IHBhaXIpLgotICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
S1VSTCYpOworICAgIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3Qg
VVJMJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDk2MTM3ZmMzYzdiNWJkZTczNTc2NWQ1M2ZhZmYxMTZlMDUyYmUwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKQEAgLTAsMCAr
MSwxOTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4LCAyMDExLCAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVJMLmgiCisKKyNpbmNsdWRlICJEZWNvZGVF
c2NhcGVTZXF1ZW5jZXMuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisK
KyNpZiBVU0UoSUNVX1VOSUNPREUpCisjaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgorI2VuZGlm
CisKKy8vIEZJWE1FOiBUaGlzIGZpbGUgbWFrZXMgdG9vIG11Y2ggdXNlIG9mIHRoZSArIG9wZXJh
dG9yIG9uIFN0cmluZy4KKy8vIFdlIGVpdGhlciBoYXZlIHRvIG9wdGltaXplIHRoYXQgb3BlcmF0
b3Igc28gaXQgZG9lc24ndCBpbnZvbHZlCisvLyBzbyBtYW55IGFsbG9jYXRpb25zLCBvciBjaGFu
Z2UgdGhpcyB0byB1c2UgU3RyaW5nQnVmZmVyIGluc3RlYWQuCisKK3VzaW5nIG5hbWVzcGFjZSBz
dGQ7Cit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVk
ZWYgVmVjdG9yPGNoYXIsIDUxMj4gQ2hhckJ1ZmZlcjsKK3R5cGVkZWYgVmVjdG9yPFVDaGFyLCA1
MTI+IFVDaGFyQnVmZmVyOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVZhbGlkUG9y
dE51bWJlciA9IDB4RkZGRTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnZhbGlkUG9ydE51bWJl
ciA9IDB4RkZGRjsKKworc3RhdGljIGlubGluZSBib29sIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nh
c2UoVUNoYXIgY2hhcmFjdGVyLCBjaGFyIGxvd2VyY2FzZUxldHRlcikKK3sKKyAgICBBU1NFUlQo
aXNBU0NJSUxvd2VyKGxvd2VyY2FzZUxldHRlcikpOworICAgIHJldHVybiAoY2hhcmFjdGVyIHwg
MHgyMCkgPT0gbG93ZXJjYXNlTGV0dGVyOworfQorCitzdGF0aWMgY29uc3QgY2hhciB3c1NjaGVt
ZVtdID0geyd3JywgJ3MnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGZ0cFNjaGVtZVtdID0geydmJywg
J3QnLCAncCd9Oworc3RhdGljIGNvbnN0IGNoYXIgZnRwUG9ydFtdID0geycyJywgJzEnfTsKK3N0
YXRpYyBjb25zdCBjaGFyIHdzc1NjaGVtZVtdID0geyd3JywgJ3MnLCAncyd9Oworc3RhdGljIGNv
bnN0IGNoYXIgZmlsZVNjaGVtZVtdID0geydmJywgJ2knLCAnbCcsICdlJ307CitzdGF0aWMgY29u
c3QgY2hhciBodHRwU2NoZW1lW10gPSB7J2gnLCAndCcsICd0JywgJ3AnfTsKK3N0YXRpYyBjb25z
dCBjaGFyIGh0dHBQb3J0W10gPSB7JzgnLCAnMCd9Oworc3RhdGljIGNvbnN0IGNoYXIgaHR0cHNT
Y2hlbWVbXSA9IHsnaCcsICd0JywgJ3QnLCAncCcsICdzJ307CitzdGF0aWMgY29uc3QgY2hhciBo
dHRwc1BvcnRbXSA9IHsnNCcsICc0JywgJzMnfTsKK3N0YXRpYyBjb25zdCBjaGFyIGdvcGhlclNj
aGVtZVtdID0geydnJywgJ28nLCAncCcsICdoJywgJ2UnLCAncid9Oworc3RhdGljIGNvbnN0IGNo
YXIgZ29waGVyUG9ydFtdID0geyc3JywgJzAnfTsKKworc3RhdGljIGlubGluZSBib29sIGlzTGV0
dGVyTWF0Y2hJZ25vcmluZ0Nhc2UoY2hhciBjaGFyYWN0ZXIsIGNoYXIgbG93ZXJjYXNlTGV0dGVy
KQoreworICAgIEFTU0VSVChpc0FTQ0lJTG93ZXIobG93ZXJjYXNlTGV0dGVyKSk7CisgICAgcmV0
dXJuIChjaGFyYWN0ZXIgfCAweDIwKSA9PSBsb3dlcmNhc2VMZXR0ZXI7Cit9CisKK2VudW0gVVJM
Q2hhcmFjdGVyQ2xhc3NlcyB7CisgICAgLy8gYWxwaGEgCisgICAgU2NoZW1lRmlyc3RDaGFyID0g
MSA8PCAwLAorCisgICAgLy8gKCBhbHBoYSB8IGRpZ2l0IHwgIisiIHwgIi0iIHwgIi4iICkKKyAg
ICBTY2hlbWVDaGFyID0gMSA8PCAxLAorCisgICAgLy8gbWFyayAgICAgICAgPSAiLSIgfCAiXyIg
fCAiLiIgfCAiISIgfCAifiIgfCAiKiIgfCAiJyIgfCAiKCIgfCAiKSIKKyAgICAvLyB1bnJlc2Vy
dmVkICA9IGFscGhhbnVtIHwgbWFyaworICAgIC8vICggdW5yZXNlcnZlZCB8IGVzY2FwZWQgfCAi
OyIgfCAiOiIgfCAiJiIgfCAiPSIgfCAiKyIgfCAiJCIgfCAiLCIgKQorICAgIFVzZXJJbmZvQ2hh
ciA9IDEgPDwgMiwKKworICAgIC8vIGFsbnVtIHwgIi4iIHwgIi0iIHwgIiUiCisgICAgLy8gVGhl
IGFib3ZlIGlzIHdoYXQgdGhlIHNwZWNpZmljYXRpb24gc2F5cywgYnV0IHdlIGFyZSBsZW5pZW50
IHRvCisgICAgLy8gbWF0Y2ggZXhpc3RpbmcgcHJhY3RpY2UgYW5kIGFsc28gYWxsb3c6CisgICAg
Ly8gIl8iCisgICAgSG9zdG5hbWVDaGFyID0gMSA8PCAzLAorCisgICAgLy8gaGV4ZGlnaXQgfCAi
OiIgfCAiJSIKKyAgICBJUHY2Q2hhciA9IDEgPDwgNCwKKworICAgIC8vICIjIiB8ICI/IiB8ICIv
IiB8IG51bAorICAgIFBhdGhTZWdtZW50RW5kQ2hhciA9IDEgPDwgNSwKKworICAgIC8vIG5vdCBh
bGxvd2VkIGluIHBhdGgKKyAgICBCYWRDaGFyID0gMSA8PCA2Cit9OworCitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciBjaGFyYWN0ZXJDbGFzc1RhYmxlWzI1Nl0gPSB7CisgICAgLyogMCBudWwg
Ki8gUGF0aFNlZ21lbnRFbmRDaGFyLCAgICAvKiAxIHNvaCAqLyBCYWRDaGFyLAorICAgIC8qIDIg
c3R4ICovIEJhZENoYXIsICAgIC8qIDMgZXR4ICovIEJhZENoYXIsCisgICAgLyogNCBlb3QgKi8g
QmFkQ2hhciwgICAgLyogNSBlbnEgKi8gQmFkQ2hhciwgICAgLyogNiBhY2sgKi8gQmFkQ2hhciwg
ICAgLyogNyBiZWwgKi8gQmFkQ2hhciwKKyAgICAvKiA4IGJzICovIEJhZENoYXIsICAgICAvKiA5
IGh0ICovIEJhZENoYXIsICAgICAvKiAxMCBubCAqLyBCYWRDaGFyLCAgICAvKiAxMSB2dCAqLyBC
YWRDaGFyLAorICAgIC8qIDEyIG5wICovIEJhZENoYXIsICAgIC8qIDEzIGNyICovIEJhZENoYXIs
ICAgIC8qIDE0IHNvICovIEJhZENoYXIsICAgIC8qIDE1IHNpICovIEJhZENoYXIsCisgICAgLyog
MTYgZGxlICovIEJhZENoYXIsICAgLyogMTcgZGMxICovIEJhZENoYXIsICAgLyogMTggZGMyICov
IEJhZENoYXIsICAgLyogMTkgZGMzICovIEJhZENoYXIsCisgICAgLyogMjAgZGM0ICovIEJhZENo
YXIsICAgLyogMjEgbmFrICovIEJhZENoYXIsICAgLyogMjIgc3luICovIEJhZENoYXIsICAgLyog
MjMgZXRiICovIEJhZENoYXIsCisgICAgLyogMjQgY2FuICovIEJhZENoYXIsICAgLyogMjUgZW0g
Ki8gQmFkQ2hhciwgICAgLyogMjYgc3ViICovIEJhZENoYXIsICAgLyogMjcgZXNjICovIEJhZENo
YXIsCisgICAgLyogMjggZnMgKi8gQmFkQ2hhciwgICAgLyogMjkgZ3MgKi8gQmFkQ2hhciwgICAg
LyogMzAgcnMgKi8gQmFkQ2hhciwgICAgLyogMzEgdXMgKi8gQmFkQ2hhciwKKyAgICAvKiAzMiBz
cCAqLyBCYWRDaGFyLCAgICAvKiAzMyAgISAqLyBVc2VySW5mb0NoYXIsCisgICAgLyogMzQgICIg
Ki8gQmFkQ2hhciwgICAgLyogMzUgICMgKi8gUGF0aFNlZ21lbnRFbmRDaGFyIHwgQmFkQ2hhciwK
KyAgICAvKiAzNiAgJCAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDM3ICAlICovIFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyIHwgQmFkQ2hhciwKKyAgICAvKiAzOCAgJiAqLyBV
c2VySW5mb0NoYXIsICAgIC8qIDM5ICAnICovIFVzZXJJbmZvQ2hhciwKKyAgICAvKiA0MCAgKCAq
LyBVc2VySW5mb0NoYXIsICAgIC8qIDQxICApICovIFVzZXJJbmZvQ2hhciwKKyAgICAvKiA0MiAg
KiAqLyBVc2VySW5mb0NoYXIsICAgIC8qIDQzICArICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0No
YXIsCisgICAgLyogNDQgICwgKi8gVXNlckluZm9DaGFyLAorICAgIC8qIDQ1ICAtICovIFNjaGVt
ZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNDYgIC4gKi8gU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAgIC8q
IDQ3ICAvICovIFBhdGhTZWdtZW50RW5kQ2hhciwKKyAgICAvKiA0OCAgMCAqLyBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDQ5ICAx
ICovIFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwg
ICAgCisgICAgLyogNTAgIDIgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1l
Q2hhciB8IElQdjZDaGFyLCAKKyAgICAvKiA1MSAgMyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9D
aGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogNTIgIDQgKi8gU2NoZW1lQ2hh
ciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKKyAgICAvKiA1MyAg
NSAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIs
CisgICAgLyogNTQgIDYgKi8gU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciB8IElQdjZDaGFyLCAKKyAgICAvKiA1NSAgNyAqLyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisgICAgLyogNTYgIDggKi8gU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKKyAgICAvKiA1NyAgOSAq
LyBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsCisg
ICAgLyogNTggIDogKi8gVXNlckluZm9DaGFyIHwgSVB2NkNoYXIsICAgIC8qIDU5ICA7ICovIFVz
ZXJJbmZvQ2hhciwKKyAgICAvKiA2MCAgPCAqLyBCYWRDaGFyLCAgICAvKiA2MSAgPSAqLyBVc2Vy
SW5mb0NoYXIsCisgICAgLyogNjIgID4gKi8gQmFkQ2hhciwgICAgLyogNjMgID8gKi8gUGF0aFNl
Z21lbnRFbmRDaGFyIHwgQmFkQ2hhciwKKyAgICAvKiA2NCAgQCAqLyAwLAorICAgIC8qIDY1ICBB
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIgfCBJUHY2Q2hhciwgICAgCisgICAgLyogNjYgIEIgKi8gU2NoZW1lRmlyc3RDaGFyIHwg
U2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAg
IC8qIDY3ICBDICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiA2OCAgRCAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIs
CisgICAgLyogNjkgIEUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAgIC8qIDcwICBGICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIgfCBJUHY2
Q2hhciwKKyAgICAvKiA3MSAgRyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNl
ckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDcyICBIICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogNzMg
IEkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwKKyAgICAvKiA3NCAgSiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwg
VXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDc1ICBLICovIFNjaGVtZUZpcnN0
Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyog
NzYgIEwgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhv
c3RuYW1lQ2hhciwKKyAgICAvKiA3NyAgTSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDc4ICBOICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAg
LyogNzkgIE8gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA4MCAgUCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVD
aGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDgxICBRICovIFNjaGVt
ZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisg
ICAgLyogODIgIFIgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA4MyAgUyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDg0ICBUICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIs
CisgICAgLyogODUgIFUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZv
Q2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA4NiAgViAqLyBTY2hlbWVGaXJzdENoYXIgfCBT
Y2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDg3ICBXICov
IFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNo
YXIsCisgICAgLyogODggIFggKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogODkgIFkgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA5MCAg
WiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5h
bWVDaGFyLAorICAgIC8qIDkxICBbICovIDAsCisgICAgLyogOTIgIFwgKi8gMCwgICAgLyogOTMg
IF0gKi8gMCwKKyAgICAvKiA5NCAgXiAqLyAwLAorICAgIC8qIDk1ICBfICovIFVzZXJJbmZvQ2hh
ciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiA5NiAgYCAqLyAwLAorICAgIC8qIDk3ICBhICovIFNj
aGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIg
fCBJUHY2Q2hhciwKKyAgICAvKiA5OCAgYiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIsIAorICAgIC8qIDk5ICBj
ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFt
ZUNoYXIgfCBJUHY2Q2hhciwKKyAgICAvKiAxMDAgIGQgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLCAKKyAgICAv
KiAxMDEgIGUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8
IEhvc3RuYW1lQ2hhciB8IElQdjZDaGFyLAorICAgIC8qIDEwMiAgZiAqLyBTY2hlbWVGaXJzdENo
YXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyIHwgSVB2NkNoYXIs
IAorICAgIC8qIDEwMyAgZyAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlcklu
Zm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDEwNCAgaCAqLyBTY2hlbWVGaXJzdENoYXIg
fCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMDUg
IGkgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3Ru
YW1lQ2hhciwKKyAgICAvKiAxMDYgIGogKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8
IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTA3ICBrICovIFNjaGVtZUZp
cnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAg
LyogMTA4ICBsICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIg
fCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEwOSAgbSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hl
bWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAgIC8qIDExMCAgbiAqLyBT
Y2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFy
LCAKKyAgICAvKiAxMTEgIG8gKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJ
bmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiAxMTIgIHAgKi8gU2NoZW1lRmlyc3RDaGFy
IHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwgCisgICAgLyogMTEz
ICBxICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0
bmFtZUNoYXIsCisgICAgLyogMTE0ICByICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIg
fCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDExNSAgcyAqLyBTY2hlbWVG
aXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLAorICAg
IC8qIDExNiAgdCAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFy
IHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMTcgIHUgKi8gU2NoZW1lRmlyc3RDaGFyIHwgU2No
ZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hhciwKKyAgICAvKiAxMTggIHYgKi8g
U2NoZW1lRmlyc3RDaGFyIHwgU2NoZW1lQ2hhciB8IFVzZXJJbmZvQ2hhciB8IEhvc3RuYW1lQ2hh
ciwgCisgICAgLyogMTE5ICB3ICovIFNjaGVtZUZpcnN0Q2hhciB8IFNjaGVtZUNoYXIgfCBVc2Vy
SW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsCisgICAgLyogMTIwICB4ICovIFNjaGVtZUZpcnN0Q2hh
ciB8IFNjaGVtZUNoYXIgfCBVc2VySW5mb0NoYXIgfCBIb3N0bmFtZUNoYXIsIAorICAgIC8qIDEy
MSAgeSAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFyIHwgVXNlckluZm9DaGFyIHwgSG9z
dG5hbWVDaGFyLAorICAgIC8qIDEyMiAgeiAqLyBTY2hlbWVGaXJzdENoYXIgfCBTY2hlbWVDaGFy
IHwgVXNlckluZm9DaGFyIHwgSG9zdG5hbWVDaGFyLCAKKyAgICAvKiAxMjMgIHsgKi8gMCwKKyAg
ICAvKiAxMjQgIHwgKi8gMCwgICAvKiAxMjUgIH0gKi8gMCwgICAvKiAxMjYgIH4gKi8gVXNlcklu
Zm9DaGFyLCAgIC8qIDEyNyBkZWwgKi8gQmFkQ2hhciwKKyAgICAvKiAxMjggKi8gQmFkQ2hhciwg
LyogMTI5ICovIEJhZENoYXIsIC8qIDEzMCAqLyBCYWRDaGFyLCAvKiAxMzEgKi8gQmFkQ2hhciwK
KyAgICAvKiAxMzIgKi8gQmFkQ2hhciwgLyogMTMzICovIEJhZENoYXIsIC8qIDEzNCAqLyBCYWRD
aGFyLCAvKiAxMzUgKi8gQmFkQ2hhciwKKyAgICAvKiAxMzYgKi8gQmFkQ2hhciwgLyogMTM3ICov
IEJhZENoYXIsIC8qIDEzOCAqLyBCYWRDaGFyLCAvKiAxMzkgKi8gQmFkQ2hhciwKKyAgICAvKiAx
NDAgKi8gQmFkQ2hhciwgLyogMTQxICovIEJhZENoYXIsIC8qIDE0MiAqLyBCYWRDaGFyLCAvKiAx
NDMgKi8gQmFkQ2hhciwKKyAgICAvKiAxNDQgKi8gQmFkQ2hhciwgLyogMTQ1ICovIEJhZENoYXIs
IC8qIDE0NiAqLyBCYWRDaGFyLCAvKiAxNDcgKi8gQmFkQ2hhciwKKyAgICAvKiAxNDggKi8gQmFk
Q2hhciwgLyogMTQ5ICovIEJhZENoYXIsIC8qIDE1MCAqLyBCYWRDaGFyLCAvKiAxNTEgKi8gQmFk
Q2hhciwKKyAgICAvKiAxNTIgKi8gQmFkQ2hhciwgLyogMTUzICovIEJhZENoYXIsIC8qIDE1NCAq
LyBCYWRDaGFyLCAvKiAxNTUgKi8gQmFkQ2hhciwKKyAgICAvKiAxNTYgKi8gQmFkQ2hhciwgLyog
MTU3ICovIEJhZENoYXIsIC8qIDE1OCAqLyBCYWRDaGFyLCAvKiAxNTkgKi8gQmFkQ2hhciwKKyAg
ICAvKiAxNjAgKi8gQmFkQ2hhciwgLyogMTYxICovIEJhZENoYXIsIC8qIDE2MiAqLyBCYWRDaGFy
LCAvKiAxNjMgKi8gQmFkQ2hhciwKKyAgICAvKiAxNjQgKi8gQmFkQ2hhciwgLyogMTY1ICovIEJh
ZENoYXIsIC8qIDE2NiAqLyBCYWRDaGFyLCAvKiAxNjcgKi8gQmFkQ2hhciwKKyAgICAvKiAxNjgg
Ki8gQmFkQ2hhciwgLyogMTY5ICovIEJhZENoYXIsIC8qIDE3MCAqLyBCYWRDaGFyLCAvKiAxNzEg
Ki8gQmFkQ2hhciwKKyAgICAvKiAxNzIgKi8gQmFkQ2hhciwgLyogMTczICovIEJhZENoYXIsIC8q
IDE3NCAqLyBCYWRDaGFyLCAvKiAxNzUgKi8gQmFkQ2hhciwKKyAgICAvKiAxNzYgKi8gQmFkQ2hh
ciwgLyogMTc3ICovIEJhZENoYXIsIC8qIDE3OCAqLyBCYWRDaGFyLCAvKiAxNzkgKi8gQmFkQ2hh
ciwKKyAgICAvKiAxODAgKi8gQmFkQ2hhciwgLyogMTgxICovIEJhZENoYXIsIC8qIDE4MiAqLyBC
YWRDaGFyLCAvKiAxODMgKi8gQmFkQ2hhciwKKyAgICAvKiAxODQgKi8gQmFkQ2hhciwgLyogMTg1
ICovIEJhZENoYXIsIC8qIDE4NiAqLyBCYWRDaGFyLCAvKiAxODcgKi8gQmFkQ2hhciwKKyAgICAv
KiAxODggKi8gQmFkQ2hhciwgLyogMTg5ICovIEJhZENoYXIsIC8qIDE5MCAqLyBCYWRDaGFyLCAv
KiAxOTEgKi8gQmFkQ2hhciwKKyAgICAvKiAxOTIgKi8gQmFkQ2hhciwgLyogMTkzICovIEJhZENo
YXIsIC8qIDE5NCAqLyBCYWRDaGFyLCAvKiAxOTUgKi8gQmFkQ2hhciwKKyAgICAvKiAxOTYgKi8g
QmFkQ2hhciwgLyogMTk3ICovIEJhZENoYXIsIC8qIDE5OCAqLyBCYWRDaGFyLCAvKiAxOTkgKi8g
QmFkQ2hhciwKKyAgICAvKiAyMDAgKi8gQmFkQ2hhciwgLyogMjAxICovIEJhZENoYXIsIC8qIDIw
MiAqLyBCYWRDaGFyLCAvKiAyMDMgKi8gQmFkQ2hhciwKKyAgICAvKiAyMDQgKi8gQmFkQ2hhciwg
LyogMjA1ICovIEJhZENoYXIsIC8qIDIwNiAqLyBCYWRDaGFyLCAvKiAyMDcgKi8gQmFkQ2hhciwK
KyAgICAvKiAyMDggKi8gQmFkQ2hhciwgLyogMjA5ICovIEJhZENoYXIsIC8qIDIxMCAqLyBCYWRD
aGFyLCAvKiAyMTEgKi8gQmFkQ2hhciwKKyAgICAvKiAyMTIgKi8gQmFkQ2hhciwgLyogMjEzICov
IEJhZENoYXIsIC8qIDIxNCAqLyBCYWRDaGFyLCAvKiAyMTUgKi8gQmFkQ2hhciwKKyAgICAvKiAy
MTYgKi8gQmFkQ2hhciwgLyogMjE3ICovIEJhZENoYXIsIC8qIDIxOCAqLyBCYWRDaGFyLCAvKiAy
MTkgKi8gQmFkQ2hhciwKKyAgICAvKiAyMjAgKi8gQmFkQ2hhciwgLyogMjIxICovIEJhZENoYXIs
IC8qIDIyMiAqLyBCYWRDaGFyLCAvKiAyMjMgKi8gQmFkQ2hhciwKKyAgICAvKiAyMjQgKi8gQmFk
Q2hhciwgLyogMjI1ICovIEJhZENoYXIsIC8qIDIyNiAqLyBCYWRDaGFyLCAvKiAyMjcgKi8gQmFk
Q2hhciwKKyAgICAvKiAyMjggKi8gQmFkQ2hhciwgLyogMjI5ICovIEJhZENoYXIsIC8qIDIzMCAq
LyBCYWRDaGFyLCAvKiAyMzEgKi8gQmFkQ2hhciwKKyAgICAvKiAyMzIgKi8gQmFkQ2hhciwgLyog
MjMzICovIEJhZENoYXIsIC8qIDIzNCAqLyBCYWRDaGFyLCAvKiAyMzUgKi8gQmFkQ2hhciwKKyAg
ICAvKiAyMzYgKi8gQmFkQ2hhciwgLyogMjM3ICovIEJhZENoYXIsIC8qIDIzOCAqLyBCYWRDaGFy
LCAvKiAyMzkgKi8gQmFkQ2hhciwKKyAgICAvKiAyNDAgKi8gQmFkQ2hhciwgLyogMjQxICovIEJh
ZENoYXIsIC8qIDI0MiAqLyBCYWRDaGFyLCAvKiAyNDMgKi8gQmFkQ2hhciwKKyAgICAvKiAyNDQg
Ki8gQmFkQ2hhciwgLyogMjQ1ICovIEJhZENoYXIsIC8qIDI0NiAqLyBCYWRDaGFyLCAvKiAyNDcg
Ki8gQmFkQ2hhciwKKyAgICAvKiAyNDggKi8gQmFkQ2hhciwgLyogMjQ5ICovIEJhZENoYXIsIC8q
IDI1MCAqLyBCYWRDaGFyLCAvKiAyNTEgKi8gQmFkQ2hhciwKKyAgICAvKiAyNTIgKi8gQmFkQ2hh
ciwgLyogMjUzICovIEJhZENoYXIsIC8qIDI1NCAqLyBCYWRDaGFyLCAvKiAyNTUgKi8gQmFkQ2hh
cgorfTsKKworc3RhdGljIGludCBjb3B5UGF0aFJlbW92aW5nRG90cyhjaGFyKiBkc3QsIGNvbnN0
IGNoYXIqIHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjRW5kKTsKK3N0YXRpYyB2b2lkIGVuY29k
ZVJlbGF0aXZlU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVsLCBjb25zdCBUZXh0RW5jb2RpbmcmLCBD
aGFyQnVmZmVyJiBvdXB1dCk7CitzdGF0aWMgU3RyaW5nIHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhj
b25zdCBTdHJpbmcmKTsKKworc3RhdGljIGlubGluZSBib29sIGlzU2NoZW1lRmlyc3RDaGFyKGNo
YXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjKV0gJiBTY2hlbWVGaXJzdENoYXI7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NjaGVt
ZUZpcnN0Q2hhcihVQ2hhciBjKSB7IHJldHVybiBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNz
VGFibGVbY10gJiBTY2hlbWVGaXJzdENoYXIpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgaXNTY2hl
bWVDaGFyKGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihjKV0gJiBTY2hlbWVDaGFyOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgaXNT
Y2hlbWVDaGFyKFVDaGFyIGMpIHsgcmV0dXJuIGMgPD0gMHhmZiAmJiAoY2hhcmFjdGVyQ2xhc3NU
YWJsZVtjXSAmIFNjaGVtZUNoYXIpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgaXNVc2VySW5mb0No
YXIodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgVXNl
ckluZm9DaGFyOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgaXNIb3N0bmFtZUNoYXIodW5zaWduZWQg
Y2hhciBjKSB7IHJldHVybiBjaGFyYWN0ZXJDbGFzc1RhYmxlW2NdICYgSG9zdG5hbWVDaGFyOyB9
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNJUHY2Q2hhcih1bnNpZ25lZCBjaGFyIGMpIHsgcmV0dXJu
IGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBJUHY2Q2hhcjsgfQorc3RhdGljIGlubGluZSBib29s
IGlzUGF0aFNlZ21lbnRFbmRDaGFyKGNoYXIgYykgeyByZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJs
ZVtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBQYXRoU2VnbWVudEVuZENoYXI7IH0K
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc1BhdGhTZWdtZW50RW5kQ2hhcihVQ2hhciBjKSB7IHJldHVy
biBjIDw9IDB4ZmYgJiYgKGNoYXJhY3RlckNsYXNzVGFibGVbY10gJiBQYXRoU2VnbWVudEVuZENo
YXIpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgaXNCYWRDaGFyKHVuc2lnbmVkIGNoYXIgYykgeyBy
ZXR1cm4gY2hhcmFjdGVyQ2xhc3NUYWJsZVtjXSAmIEJhZENoYXI7IH0KKyAgICAKK3N0YXRpYyBp
bmxpbmUgYm9vbCBpc1NjaGVtZUNoYXJhY3Rlck1hdGNoSWdub3JpbmdDYXNlKGNoYXIgY2hhcmFj
dGVyLCBjaGFyIHNjaGVtZUNoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoaXNTY2hlbWVDaGFyKGNo
YXJhY3RlcikpOworICAgIEFTU0VSVChzY2hlbWVDaGFyYWN0ZXIgJiAweDIwKTsKKyAgICBBU1NF
UlQoaXNBU0NJSUxvd2VyKHNjaGVtZUNoYXJhY3RlcikgfHwgKCFpc0FTQ0lJVXBwZXIoc2NoZW1l
Q2hhcmFjdGVyKSAmJiBpc1NjaGVtZUNoYXIoc2NoZW1lQ2hhcmFjdGVyKSkpOworICAgIHJldHVy
biAoY2hhcmFjdGVyIHwgMHgyMCkgPT0gc2NoZW1lQ2hhcmFjdGVyOworfQorCisvLyBDb3BpZXMg
dGhlIHNvdXJjZSB0byB0aGUgZGVzdGluYXRpb24sIGFzc3VtaW5nIGFsbCB0aGUgc291cmNlIGNo
YXJhY3RlcnMgYXJlCisvLyBBU0NJSS4gVGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBtdXN0IGJlIGxh
cmdlIGVub3VnaC4gTnVsbCBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkCisvLyBpbiB0aGUgc291cmNl
IHN0cmluZywgYW5kIG5vIGF0dGVtcHQgaXMgbWFkZSB0byBudWxsLXRlcm1pbmF0ZSB0aGUgcmVz
dWx0Lgorc3RhdGljIHZvaWQgY29weUFTQ0lJKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjaGFyKiBk
ZXN0KQoreworICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBtZW1jcHkoZGVzdCwgc3RyaW5nLmNoYXJh
Y3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgZWxzZSB7CisgICAgICAgIGNvbnN0IFVD
aGFyKiBzcmMgPSBzdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspCisgICAgICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4oc3JjW2ldKTsK
KyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEFTQ0lJKGNvbnN0IFN0cmluZyYgYmFzZSwg
Y29uc3QgY2hhciogcmVsLCBzaXplX3QgbGVuLCBDaGFyQnVmZmVyJiBidWZmZXIpCit7CisgICAg
YnVmZmVyLnJlc2l6ZShiYXNlLmxlbmd0aCgpICsgbGVuICsgMSk7CisgICAgY29weUFTQ0lJKGJh
c2UsIGJ1ZmZlci5kYXRhKCkpOworICAgIG1lbWNweShidWZmZXIuZGF0YSgpICsgYmFzZS5sZW5n
dGgoKSwgcmVsLCBsZW4pOworICAgIGJ1ZmZlcltidWZmZXIuc2l6ZSgpIC0gMV0gPSAnXDAnOwor
fQorCisvLyBGSVhNRTogTW92ZSB0byBXVEZTdHJpbmcuaCBldmVudHVhbGx5LgorLy8gUmV0dXJu
cyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGluZGV4IGluIHN0cmluZyB8c3wgb2YgYW55IG9mIHRo
ZSBjaGFyYWN0ZXJzCisvLyBpbiB8dG9GaW5kfC4gfHRvRmluZHwgc2hvdWxkIGJlIGEgbnVsbC10
ZXJtaW5hdGVkIHN0cmluZywgYWxsIGNoYXJhY3RlcnMgdXAKKy8vIHRvIHRoZSBudWxsIHdpbGwg
YmUgc2VhcmNoZWQuIFJldHVybnMgaW50IGlmIG5vdCBmb3VuZC4KK3N0YXRpYyBpbnQgZmluZEZp
cnN0T2YoY29uc3QgVUNoYXIqIHMsIGludCBzTGVuLCBpbnQgc3RhcnRQb3MsIGNvbnN0IGNoYXIq
IHRvRmluZCkKK3sKKyAgICBmb3IgKGludCBpID0gc3RhcnRQb3M7IGkgPCBzTGVuOyBpKyspIHsK
KyAgICAgICAgY29uc3QgY2hhciogY3VyID0gdG9GaW5kOworICAgICAgICB3aGlsZSAoKmN1cikg
eworICAgICAgICAgICAgaWYgKHNbaV0gPT0gKihjdXIrKykpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW5s
aW5lIHZvaWQgY2hlY2tFbmNvZGVkU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIEFT
U0VSVF9VTlVTRUQodXJsLCB1cmwuY29udGFpbnNPbmx5QVNDSUkoKSk7CisgICAgQVNTRVJUX1VO
VVNFRCh1cmwsIHVybC5pc0VtcHR5KCkgfHwgaXNTY2hlbWVGaXJzdENoYXIodXJsWzBdKSk7Cit9
CisKK2lubGluZSBib29sIFVSTDo6cHJvdG9jb2xJcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29u
c3QgY2hhciogcHJvdG9jb2wpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnByb3RvY29sSXMoc3Ry
aW5nLCBwcm90b2NvbCk7Cit9CisKK3ZvaWQgVVJMOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2lz
VmFsaWQgPSBmYWxzZTsKKyAgICBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHkgPSBmYWxzZTsKKyAg
ICBtX3NjaGVtZUVuZCA9IDA7CisgICAgbV91c2VyU3RhcnQgPSAwOworICAgIG1fdXNlckVuZCA9
IDA7CisgICAgbV9wYXNzd29yZEVuZCA9IDA7CisgICAgbV9ob3N0RW5kID0gMDsKKyAgICBtX3Bv
cnRFbmQgPSAwOworICAgIG1fcGF0aEVuZCA9IDA7CisgICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2gg
PSAwOworICAgIG1fcXVlcnlFbmQgPSAwOworICAgIG1fZnJhZ21lbnRFbmQgPSAwOworfQorCitV
Ukw6OlVSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIHBh
cnNlKHVybCk7CisgICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7Cit9CisKK1VSTDo6VVJMKGNv
bnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKK3sKKyAgICBpbml0KGJhc2Us
IHJlbGF0aXZlLCBVVEY4RW5jb2RpbmcoKSk7Cit9CisKK1VSTDo6VVJMKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykK
K3sKKyAgICAvLyBGb3IgVVRGLXs3LDE2LDMyfSwgd2Ugd2FudCB0byB1c2UgVVRGLTggZm9yIHRo
ZSBxdWVyeSBwYXJ0IGFzIAorICAgIC8vIHdlIGRvIHdoZW4gc3VibWl0dGluZyBhIGZvcm0uIEEg
Zm9ybSB3aXRoIEdFVCBtZXRob2QKKyAgICAvLyBoYXMgaXRzIGNvbnRlbnRzIGFkZGVkIHRvIGEg
VVJMIGFzIHF1ZXJ5IHBhcmFtcyBhbmQgaXQgbWFrZXMgc2Vuc2UKKyAgICAvLyB0byBiZSBjb25z
aXN0ZW50LgorICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIGVuY29kaW5nLmVuY29kaW5nRm9yRm9y
bVN1Ym1pc3Npb24oKSk7Cit9CisKK3N0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKHVuc2ln
bmVkIGNoYXIgYykKK3sKKyAgICAvLyBCcm93c2VycyBpZ25vcmUgbGVhZGluZy90cmFpbGluZyB3
aGl0ZXNwYWNlIGFuZCBjb250cm9sCisgICAgLy8gY2hhcmFjdGVycyBmcm9tIFVSTHMuICBOb3Rl
IHRoYXQgYyBpcyBhbiAqdW5zaWduZWQqIGNoYXIgaGVyZQorICAgIC8vIHNvIHRoaXMgY29tcGFy
aXNvbiBzaG91bGQgb25seSBjYXRjaCBjb250cm9sIGNoYXJhY3RlcnMuCisgICAgcmV0dXJuIGMg
PD0gJyAnOworfQorCit2b2lkIFVSTDo6aW5pdChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmlu
ZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCit7CisgICAgLy8gQWxs
b3cgcmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0
aCBhbnkgb3RoZXIgaW52YWxpZCBvbmUuCisgICAgLy8gRklYTUU6IElzIHRoaXMgYSBnb29kIHJ1
bGU/CisgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFzZS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgbV9zdHJpbmcgPSByZWxhdGl2ZTsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBXaW4gSUUsIHRy
ZWF0IGJhY2tzbGFzaGVzIGFzIGlmIHRoZXkgd2VyZSBzbGFzaGVzLAorICAgIC8vIGFzIGxvbmcg
YXMgd2UncmUgbm90IGRlYWxpbmcgd2l0aCBqYXZhc2NyaXB0OiBvciBkYXRhOiBVUkxzLgorICAg
IFN0cmluZyByZWwgPSByZWxhdGl2ZTsKKyAgICBpZiAocmVsLmNvbnRhaW5zKCdcXCcpICYmICEo
cHJvdG9jb2xJc0phdmFTY3JpcHQocmVsKSB8fCBwcm90b2NvbElzKHJlbCwgImRhdGEiKSkpCisg
ICAgICAgIHJlbCA9IHN1YnN0aXR1dGVCYWNrc2xhc2hlcyhyZWwpOworCisgICAgYm9vbCBhbGxB
U0NJSSA9IHJlbC5jb250YWluc09ubHlBU0NJSSgpOworICAgIENoYXJCdWZmZXIgc3RyQnVmZmVy
OworICAgIGNoYXIqIHN0cjsKKyAgICBzaXplX3QgbGVuOworICAgIGlmIChhbGxBU0NJSSkgewor
ICAgICAgICBsZW4gPSByZWwubGVuZ3RoKCk7CisgICAgICAgIHN0ckJ1ZmZlci5yZXNpemUobGVu
ICsgMSk7CisgICAgICAgIGNvcHlBU0NJSShyZWwsIHN0ckJ1ZmZlci5kYXRhKCkpOworICAgICAg
ICBzdHJCdWZmZXJbbGVuXSA9IDA7CisgICAgICAgIHN0ciA9IHN0ckJ1ZmZlci5kYXRhKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZW5jb2RlUmVsYXRpdmVTdHJpbmcocmVsLCBlbmNvZGluZywg
c3RyQnVmZmVyKTsKKyAgICAgICAgc3RyID0gc3RyQnVmZmVyLmRhdGEoKTsKKyAgICAgICAgbGVu
ID0gc3RybGVuKHN0cik7CisgICAgfQorCisgICAgLy8gR2V0IHJpZCBvZiBsZWFkaW5nIHdoaXRl
c3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycy4KKyAgICB3aGlsZSAobGVuICYmIHNob3VsZFRy
aW1Gcm9tVVJMKCpzdHIpKSB7CisgICAgICAgIHN0cisrOworICAgICAgICAtLWxlbjsKKyAgICB9
CisKKyAgICAvLyBHZXQgcmlkIG9mIHRyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hh
cmFjdGVycy4KKyAgICB3aGlsZSAobGVuICYmIHNob3VsZFRyaW1Gcm9tVVJMKHN0cltsZW4gLSAx
XSkpCisgICAgICAgIHN0clstLWxlbl0gPSAnXDAnOworCisgICAgLy8gQWNjb3JkaW5nIHRvIHRo
ZSBSRkMsIHRoZSByZWZlcmVuY2Ugc2hvdWxkIGJlIGludGVycHJldGVkIGFzIGFuCisgICAgLy8g
YWJzb2x1dGUgVVJJIGlmIHBvc3NpYmxlLCB1c2luZyB0aGUgImxlZnRtb3N0LCBsb25nZXN0Igor
ICAgIC8vIGFsZ29yaXRobS4gSWYgdGhlIFVSSSByZWZlcmVuY2UgaXMgYWJzb2x1dGUgaXQgd2ls
bCBoYXZlIGEKKyAgICAvLyBzY2hlbWUsIG1lYW5pbmcgdGhhdCBpdCB3aWxsIGhhdmUgYSBjb2xv
biBiZWZvcmUgdGhlIGZpcnN0CisgICAgLy8gbm9uLXNjaGVtZSBlbGVtZW50LgorICAgIGJvb2wg
YWJzb2x1dGUgPSBmYWxzZTsKKyAgICBjaGFyKiBwID0gc3RyOworICAgIGlmIChpc1NjaGVtZUZp
cnN0Q2hhcigqcCkpIHsKKyAgICAgICAgKytwOworICAgICAgICB3aGlsZSAoaXNTY2hlbWVDaGFy
KCpwKSkgeworICAgICAgICAgICAgKytwOworICAgICAgICB9CisgICAgICAgIGlmICgqcCA9PSAn
OicpIHsKKyAgICAgICAgICAgIGlmIChwWzFdICE9ICcvJyAmJiBlcXVhbElnbm9yaW5nQ2FzZShi
YXNlLnByb3RvY29sKCksIFN0cmluZyhzdHIsIHAgLSBzdHIpKSAmJiBiYXNlLmlzSGllcmFyY2hp
Y2FsKCkpCisgICAgICAgICAgICAgICAgc3RyID0gcCArIDE7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgYWJzb2x1dGUgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAg
Q2hhckJ1ZmZlciBwYXJzZUJ1ZmZlcjsKKworICAgIGlmIChhYnNvbHV0ZSkgeworICAgICAgICBw
YXJzZShzdHIsICZyZWxhdGl2ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhlIGJh
c2UgaXMgZW1wdHkgb3Igb3BhcXVlIChlLmcuIGRhdGE6IG9yIGphdmFzY3JpcHQ6KSwgdGhlbiB0
aGUgVVJMIGlzIGludmFsaWQKKyAgICAgICAgLy8gdW5sZXNzIHRoZSByZWxhdGl2ZSBVUkwgaXMg
YSBzaW5nbGUgZnJhZ21lbnQuCisgICAgICAgIGlmICghYmFzZS5pc0hpZXJhcmNoaWNhbCgpKSB7
CisgICAgICAgICAgICBpZiAoc3RyWzBdID09ICcjJykgeworICAgICAgICAgICAgICAgIGFwcGVu
ZEFTQ0lJKGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpLCBzdHIsIGxlbiwgcGFy
c2VCdWZmZXIpOworICAgICAgICAgICAgICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJl
bGF0aXZlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbV9zdHJpbmcg
PSByZWxhdGl2ZTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHN0clsw
XSkgeworICAgICAgICBjYXNlICdcMCc6CisgICAgICAgICAgICAvLyBUaGUgcmVmZXJlbmNlIGlz
IGVtcHR5LCBzbyB0aGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIGRvY3VtZW50IHdpdGgg
YW55IGZyYWdtZW50IGlkZW50aWZpZXIgcmVtb3ZlZC4KKyAgICAgICAgICAgICp0aGlzID0gYmFz
ZTsKKyAgICAgICAgICAgIHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgJyMnOiB7CisgICAgICAgICAgICAvLyBtdXN0IGJlIGZyYWdt
ZW50LW9ubHkgcmVmZXJlbmNlCisgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5n
LmxlZnQoYmFzZS5tX3F1ZXJ5RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKKyAgICAgICAg
ICAgIHBhcnNlKHBhcnNlQnVmZmVyLmRhdGEoKSwgJnJlbGF0aXZlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgJz8nOiB7CisgICAgICAgICAgICAvLyBxdWVy
eS1vbmx5IHJlZmVyZW5jZSwgc3BlY2lhbCBjYXNlIG5lZWRlZCBmb3Igbm9uLVVSTCByZXN1bHRz
CisgICAgICAgICAgICBhcHBlbmRBU0NJSShiYXNlLm1fc3RyaW5nLmxlZnQoYmFzZS5tX3BhdGhF
bmQpLCBzdHIsIGxlbiwgcGFyc2VCdWZmZXIpOworICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZm
ZXIuZGF0YSgpLCAmcmVsYXRpdmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSAnLyc6CisgICAgICAgICAgICAvLyBtdXN0IGJlIG5ldC1wYXRoIG9yIGFic29s
dXRlLXBhdGggcmVmZXJlbmNlCisgICAgICAgICAgICBpZiAoc3RyWzFdID09ICcvJykgeworICAg
ICAgICAgICAgICAgIC8vIG5ldC1wYXRoCisgICAgICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFz
ZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9zY2hlbWVFbmQgKyAxKSwgc3RyLCBsZW4sIHBhcnNlQnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJzZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIGFicy1wYXRoCisg
ICAgICAgICAgICAgICAgYXBwZW5kQVNDSUkoYmFzZS5tX3N0cmluZy5sZWZ0KGJhc2UubV9wb3J0
RW5kKSwgc3RyLCBsZW4sIHBhcnNlQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBwYXJzZShwYXJz
ZUJ1ZmZlci5kYXRhKCksICZyZWxhdGl2ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBtdXN0IGJlIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlCisKKyAgICAgICAgICAgICAgICAvLyBC
YXNlIHBhcnQgcGx1cyByZWxhdGl2ZSBwYXJ0IHBsdXMgb25lIHBvc3NpYmxlIHNsYXNoIGFkZGVk
IGluIGJldHdlZW4gcGx1cyB0ZXJtaW5hdGluZyBcMCBieXRlLgorICAgICAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBidWZmZXJTaXplID0gYmFzZS5tX3BhdGhFbmQgKyAxICsgbGVuICsgMTsKKyAg
ICAgICAgICAgICAgICBwYXJzZUJ1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CisKKyAgICAgICAg
ICAgICAgICBjaGFyKiBidWZmZXJQb3MgPSBwYXJzZUJ1ZmZlci5kYXRhKCk7CisgICAgICAgICAg
ICAgICAgY2hhciogYnVmZmVyU3RhcnQgPSBidWZmZXJQb3M7CisKKyAgICAgICAgICAgICAgICAv
LyBmaXJzdCBjb3B5IGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBwYXRoIGZyb20gdGhlIGJhc2UKKyAg
ICAgICAgICAgICAgICBDaGFyQnVmZmVyIGJhc2VTdHJpbmdCdWZmZXIoYmFzZS5tX3N0cmluZy5s
ZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgY29weUFTQ0lJKGJhc2UubV9zdHJpbmcsIGJhc2VT
dHJpbmdCdWZmZXIuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3Ry
aW5nID0gYmFzZVN0cmluZ0J1ZmZlci5kYXRhKCk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYmFzZVN0cmluZ1N0YXJ0ID0gYmFzZVN0cmluZzsKKyAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBwYXRoU3RhcnQgPSBiYXNlU3RyaW5nU3RhcnQgKyBiYXNlLm1fcG9ydEVuZDsKKyAgICAg
ICAgICAgICAgICB3aGlsZSAoYmFzZVN0cmluZ1N0YXJ0IDwgcGF0aFN0YXJ0KQorICAgICAgICAg
ICAgICAgICAgICAqYnVmZmVyUG9zKysgPSAqYmFzZVN0cmluZ1N0YXJ0Kys7CisgICAgICAgICAg
ICAgICAgY2hhciogYnVmZmVyUGF0aFN0YXJ0ID0gYnVmZmVyUG9zOworCisgICAgICAgICAgICAg
ICAgLy8gbm93IGNvcHkgdGhlIGJhc2UgcGF0aAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IGJhc2VTdHJpbmdFbmQgPSBiYXNlU3RyaW5nICsgYmFzZS5tX3BhdGhFbmQ7CisKKyAgICAgICAg
ICAgICAgICAvLyBnbyBiYWNrIHRvIHRoZSBsYXN0IHNsYXNoCisgICAgICAgICAgICAgICAgd2hp
bGUgKGJhc2VTdHJpbmdFbmQgPiBiYXNlU3RyaW5nU3RhcnQgJiYgYmFzZVN0cmluZ0VuZFstMV0g
IT0gJy8nKQorICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nRW5kLS07CisKKyAgICAgICAg
ICAgICAgICBpZiAoYmFzZVN0cmluZ0VuZCA9PSBiYXNlU3RyaW5nU3RhcnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gbm8gcGF0aCBpbiBiYXNlLCBhZGQgYSBwYXRoIHNlcGFyYXRvciBpZiBu
ZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UubV9zY2hlbWVFbmQgKyAxICE9
IGJhc2UubV9wYXRoRW5kICYmICpzdHIgJiYgKnN0ciAhPSAnPycgJiYgKnN0ciAhPSAnIycpCisg
ICAgICAgICAgICAgICAgICAgICAgICAqYnVmZmVyUG9zKysgPSAnLyc7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IGNvcHlQYXRoUmVt
b3ZpbmdEb3RzKGJ1ZmZlclBvcywgYmFzZVN0cmluZ1N0YXJ0LCAwLCBiYXNlU3RyaW5nRW5kIC0g
YmFzZVN0cmluZ1N0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiByZWxTdHJpbmdTdGFydCA9IHN0cjsKKyAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiByZWxTdHJpbmdQb3MgPSByZWxTdHJpbmdTdGFydDsKKworICAgICAgICAgICAgICAgIHdo
aWxlICgqcmVsU3RyaW5nUG9zICYmICpyZWxTdHJpbmdQb3MgIT0gJz8nICYmICpyZWxTdHJpbmdQ
b3MgIT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWxTdHJpbmdQb3NbMF0gPT0g
Jy4nICYmIGJ1ZmZlclBvc1stMV0gPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNQYXRoU2VnbWVudEVuZENoYXIocmVsU3RyaW5nUG9zWzFdKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHNraXAgb3ZlciAiLiIgc2VnbWVudAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbFN0cmluZ1BvcyArPSAxOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChyZWxTdHJpbmdQb3NbMF0gPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWxTdHJpbmdQb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVsU3RyaW5nUG9zWzFd
ID09ICcuJyAmJiBpc1BhdGhTZWdtZW50RW5kQ2hhcihyZWxTdHJpbmdQb3NbMl0pKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuLiIgc2VnbWVudCBhbmQgcmV3
aW5kIHRoZSBsYXN0IHNlZ21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUg
UkZDIGxlYXZlcyBpdCB1cCB0byB0aGUgYXBwIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggZXhj
ZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIi4uIiBzZWdtZW50cyAtIHdlIGNo
b29zZSB0byBkcm9wIHRoZW0gc2luY2Ugc29tZSB3ZWIgY29udGVudAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHJlbGllcyBvbiB0aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbFN0cmluZ1BvcyArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChy
ZWxTdHJpbmdQb3NbMF0gPT0gJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWxTdHJpbmdQb3MrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyUG9z
ID4gYnVmZmVyUGF0aFN0YXJ0ICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmZmVyUG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlclBv
cyA+IGJ1ZmZlclBhdGhTdGFydCArIDEgICYmIGJ1ZmZlclBvc1stMV0gIT0gJy8nKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJQb3MtLTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICpidWZmZXJQb3MgPSAqcmVsU3Ry
aW5nUG9zOworICAgICAgICAgICAgICAgICAgICByZWxTdHJpbmdQb3MrKzsKKyAgICAgICAgICAg
ICAgICAgICAgYnVmZmVyUG9zKys7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgLy8gYWxsIGRvbmUgd2l0aCB0aGUgcGF0aCB3b3JrLCBub3cgY29weSBhbnkgcmVtYWluZGVy
CisgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHJlbGF0aXZlIHJlZmVyZW5jZTsgdGhpcyB3aWxs
IGFsc28gYWRkIGEgbnVsbCB0ZXJtaW5hdG9yCisgICAgICAgICAgICAgICAgc3RybmNweShidWZm
ZXJQb3MsIHJlbFN0cmluZ1BvcywgYnVmZmVyU2l6ZSAtIChidWZmZXJQb3MgLSBidWZmZXJTdGFy
dCkpOworCisgICAgICAgICAgICAgICAgcGFyc2UocGFyc2VCdWZmZXIuZGF0YSgpLCAmcmVsYXRp
dmUpOworCisgICAgICAgICAgICAgICAgQVNTRVJUKHN0cmxlbihwYXJzZUJ1ZmZlci5kYXRhKCkp
ICsgMSA8PSBwYXJzZUJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitVUkwgVVJMOjpjb3B5KCkgY29uc3QK
K3sKKyAgICBVUkwgcmVzdWx0ID0gKnRoaXM7CisgICAgcmVzdWx0Lm1fc3RyaW5nID0gcmVzdWx0
Lm1fc3RyaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cmlu
ZyBVUkw6Omxhc3RQYXRoQ29tcG9uZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1BhdGgoKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgdW5zaWduZWQgZW5kID0gbV9wYXRoRW5k
IC0gMTsKKyAgICBpZiAobV9zdHJpbmdbZW5kXSA9PSAnLycpCisgICAgICAgIC0tZW5kOworCisg
ICAgc2l6ZV90IHN0YXJ0ID0gbV9zdHJpbmcucmV2ZXJzZUZpbmQoJy8nLCBlbmQpOworICAgIGlm
IChzdGFydCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3BvcnRFbmQpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgKytzdGFydDsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJp
bmcoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7Cit9CisKK1N0cmluZyBVUkw6OnByb3RvY29sKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcubGVmdChtX3NjaGVtZUVuZCk7Cit9CisKK1N0
cmluZyBVUkw6Omhvc3QoKSBjb25zdAoreworICAgIGludCBzdGFydCA9IGhvc3RTdGFydCgpOwor
ICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcuc3Vic3RyaW5nKHN0
YXJ0LCBtX2hvc3RFbmQgLSBzdGFydCkpOworfQorCit1bnNpZ25lZCBzaG9ydCBVUkw6OnBvcnQo
KSBjb25zdAoreworICAgIC8vIFdlIHJldHVybiBhIHBvcnQgb2YgMCBpZiB0aGVyZSBpcyBubyBw
b3J0IHNwZWNpZmllZC4gVGhpcyBjYW4gaGFwcGVuIGluIHR3byBzaXR1YXRpb25zOgorICAgIC8v
IDEpIFRoZSBVUkwgY29udGFpbnMgbm8gY29sb24gYWZ0ZXIgdGhlIGhvc3QgbmFtZSBhbmQgYmVm
b3JlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJMLgorICAgIC8vIDIpIFRoZSBVUkwgY29u
dGFpbnMgYSBjb2xvbiBidXQgdGhlcmUncyBubyBwb3J0IG51bWJlciBiZWZvcmUgdGhlIHBhdGgg
Y29tcG9uZW50IG9mIHRoZSBVUkwgYmVnaW5zLgorICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0
RW5kIHx8IG1faG9zdEVuZCA9PSBtX3BvcnRFbmQgLSAxKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIGNvbnN0IFVDaGFyKiBzdHJpbmdEYXRhID0gbV9zdHJpbmcuY2hhcmFjdGVycygpOworICAg
IGJvb2wgb2sgPSBmYWxzZTsKKyAgICB1bnNpZ25lZCBudW1iZXIgPSBjaGFyYWN0ZXJzVG9VSW50
U3RyaWN0KHN0cmluZ0RhdGEgKyBtX2hvc3RFbmQgKyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQg
LSAxLCAmb2spOworICAgIGlmICghb2sgfHwgbnVtYmVyID4gbWF4aW11bVZhbGlkUG9ydE51bWJl
cikKKyAgICAgICAgcmV0dXJuIGludmFsaWRQb3J0TnVtYmVyOworICAgIHJldHVybiBudW1iZXI7
Cit9CisKK1N0cmluZyBVUkw6OnBhc3MoKSBjb25zdAoreworICAgIGlmIChtX3Bhc3N3b3JkRW5k
ID09IG1fdXNlckVuZCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGRl
Y29kZVVSTEVzY2FwZVNlcXVlbmNlcyhtX3N0cmluZy5zdWJzdHJpbmcobV91c2VyRW5kICsgMSwg
bV9wYXNzd29yZEVuZCAtIG1fdXNlckVuZCAtIDEpKTsgCit9CisKK1N0cmluZyBVUkw6OnVzZXIo
KSBjb25zdAoreworICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobV9zdHJpbmcu
c3Vic3RyaW5nKG1fdXNlclN0YXJ0LCBtX3VzZXJFbmQgLSBtX3VzZXJTdGFydCkpOworfQorCitT
dHJpbmcgVVJMOjpmcmFnbWVudElkZW50aWZpZXIoKSBjb25zdAoreworICAgIGlmIChtX2ZyYWdt
ZW50RW5kID09IG1fcXVlcnlFbmQpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJl
dHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9xdWVyeUVuZCArIDEsIG1fZnJhZ21lbnRFbmQgLSAo
bV9xdWVyeUVuZCArIDEpKTsKK30KKworYm9vbCBVUkw6Omhhc0ZyYWdtZW50SWRlbnRpZmllcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhZ21lbnRFbmQgIT0gbV9xdWVyeUVuZDsKK30KKwor
U3RyaW5nIFVSTDo6YmFzZUFzU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcu
bGVmdChtX3BhdGhBZnRlckxhc3RTbGFzaCk7Cit9CisKKyNpZiAhUExBVEZPUk0oUVQpICYmICFV
U0UoQ0YpCitTdHJpbmcgVVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFp
c1ZhbGlkKCkgfHwgIWlzTG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKwor
ICAgIHJldHVybiBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCgpKTsKK30KKyNlbmRpZgor
CisjaWZkZWYgTkRFQlVHCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRQcm90b2NvbElzR29v
ZChjb25zdCBjaGFyKikKK3sKK30KKworI2Vsc2UKKworc3RhdGljIHZvaWQgYXNzZXJ0UHJvdG9j
b2xJc0dvb2QoY29uc3QgY2hhciogcHJvdG9jb2wpCit7CisgICAgY29uc3QgY2hhciogcCA9IHBy
b3RvY29sOworICAgIHdoaWxlICgqcCkgeworICAgICAgICBBU1NFUlQoKnAgPiAnICcgJiYgKnAg
PCAweDdGICYmICEoKnAgPj0gJ0EnICYmICpwIDw9ICdaJykpOworICAgICAgICArK3A7CisgICAg
fQorfQorCisjZW5kaWYKKworYm9vbCBVUkw6OnByb3RvY29sSXMoY29uc3QgY2hhciogcHJvdG9j
b2wpIGNvbnN0Cit7CisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9jb2wpOworCisgICAg
Ly8gSmF2YVNjcmlwdCBVUkxzIGFyZSAidmFsaWQiIGFuZCBzaG91bGQgYmUgZXhlY3V0ZWQgZXZl
biBpZiBVUkwgZGVjaWRlcyB0aGV5IGFyZSBpbnZhbGlkLgorICAgIC8vIFRoZSBmcmVlIGZ1bmN0
aW9uIHByb3RvY29sSXNKYXZhU2NyaXB0KCkgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gCisgICAg
QVNTRVJUKCFlcXVhbElnbm9yaW5nQ2FzZShwcm90b2NvbCwgU3RyaW5nKCJqYXZhc2NyaXB0Iikp
KTsKKworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBEbyB0aGUgY29tcGFyaXNvbiB3aXRob3V0IG1ha2luZyBhIG5ldyBzdHJpbmcgb2JqZWN0Lgor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9zY2hlbWVFbmQ7ICsraSkgeworICAgICAgICBpZiAo
IXByb3RvY29sW2ldIHx8ICFpc1NjaGVtZUNoYXJhY3Rlck1hdGNoSWdub3JpbmdDYXNlKG1fc3Ry
aW5nW2ldLCBwcm90b2NvbFtpXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiAhcHJvdG9jb2xbbV9zY2hlbWVFbmRdOyAvLyBXZSBzaG91bGQgaGF2ZSBjb25z
dW1lZCBhbGwgY2hhcmFjdGVycyBpbiB0aGUgYXJndW1lbnQuCit9CisKK1N0cmluZyBVUkw6OnF1
ZXJ5KCkgY29uc3QKK3sKKyAgICBpZiAobV9xdWVyeUVuZCA9PSBtX3BhdGhFbmQpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRo
RW5kICsgMSwgbV9xdWVyeUVuZCAtIChtX3BhdGhFbmQgKyAxKSk7IAorfQorCitTdHJpbmcgVVJM
OjpwYXRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVu
ZCwgbV9wYXRoRW5kIC0gbV9wb3J0RW5kKTsKK30KKworYm9vbCBVUkw6OnNldFByb3RvY29sKGNv
bnN0IFN0cmluZyYgcykKK3sKKyAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZlcnl0aGlu
ZyBhZnRlciB0aGUgZmlyc3QgJzonLgorICAgIHNpemVfdCBzZXBhcmF0b3JQb3NpdGlvbiA9IHMu
ZmluZCgnOicpOworICAgIFN0cmluZyBuZXdQcm90b2NvbCA9IHMuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvclBvc2l0aW9uKTsKKworICAgIGlmICghaXNWYWxpZFByb3RvY29sKG5ld1Byb3RvY29sKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2lzVmFsaWQpIHsKKyAgICAgICAg
cGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVVJMOjpzZXRIb3N0KGNv
bnN0IFN0cmluZyYgcykKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBjaGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQg
ZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4cGVjdGF0aW9ucywKKyAgICAvLyBhbmQgdG8gYXZv
aWQgY2hhbmdpbmcgbW9yZSB0aGFuIGp1c3QgdGhlIGhvc3QuCisKKyAgICBib29sIHNsYXNoU2xh
c2hOZWVkZWQgPSBtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVuZCArIDE7CisKKyAgICBwYXJzZSht
X3N0cmluZy5sZWZ0KGhvc3RTdGFydCgpKSArIChzbGFzaFNsYXNoTmVlZGVkID8gIi8vIiA6ICIi
KSArIHMgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7Cit9CisKK3ZvaWQgVVJMOjpy
ZW1vdmVQb3J0KCkKK3sKKyAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKKyAgICAgICAg
cmV0dXJuOworICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1
YnN0cmluZyhtX3BvcnRFbmQpKTsKK30KKwordm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hv
cnQgaSkKK3sKKyAgICBpZiAoIW1faXNWYWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7CisgICAgaW50IHBvcnRTdGFy
dCA9IChjb2xvbk5lZWRlZCA/IG1faG9zdEVuZCA6IG1faG9zdEVuZCArIDEpOworCisgICAgcGFy
c2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpICsg
U3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7Cit9CisK
K3ZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQorewor
ICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9u
LUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBh
cnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFuZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRo
YW4ganVzdCBob3N0IGFuZCBwb3J0LgorCisgICAgYm9vbCBzbGFzaFNsYXNoTmVlZGVkID0gbV91
c2VyU3RhcnQgPT0gbV9zY2hlbWVFbmQgKyAxOworCisgICAgcGFyc2UobV9zdHJpbmcubGVmdCho
b3N0U3RhcnQoKSkgKyAoc2xhc2hTbGFzaE5lZWRlZCA/ICIvLyIgOiAiIikgKyBob3N0QW5kUG9y
dCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKK30KKwordm9pZCBVUkw6OnNldFVz
ZXIoY29uc3QgU3RyaW5nJiB1c2VyKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNv
ZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLAorICAgIC8vIGFu
ZCB0byBhdm9pZCBjaGFuZ2luZyBtb3JlIHRoYW4ganVzdCB0aGUgdXNlciBsb2dpbi4KKworICAg
IGludCBlbmQgPSBtX3VzZXJFbmQ7CisgICAgaWYgKCF1c2VyLmlzRW1wdHkoKSkgeworICAgICAg
ICBTdHJpbmcgdSA9IHVzZXI7CisgICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3NjaGVtZUVu
ZCArIDEpCisgICAgICAgICAgICB1ID0gIi8vIiArIHU7CisgICAgICAgIC8vIEFkZCAnQCcgaWYg
d2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KKyAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RFbmQg
fHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKKyAgICAg
ICAgICAgIHUuYXBwZW5kKCdAJyk7CisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2Vy
U3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dv
cmQuCisgICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9o
b3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQorICAgICAgICAgICAgZW5kICs9IDE7Cisg
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24g
Y2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCisgICAgICAgIGlm
IChtX3VzZXJTdGFydCAhPSBlbmQpCisgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1f
dXNlclN0YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICB9Cit9CisKK3ZvaWQg
VVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgaWYgKCFtX2lzVmFs
aWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVy
cyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlv
bnMsCisgICAgLy8gYW5kIHRvIGF2b2lkIGNoYW5naW5nIG1vcmUgdGhhbiBqdXN0IHRoZSB1c2Vy
IHBhc3N3b3JkLgorCisgICAgaW50IGVuZCA9IG1fcGFzc3dvcmRFbmQ7CisgICAgaWYgKCFwYXNz
d29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIHAgPSAiOiIgKyBwYXNzd29yZCArICJA
IjsKKyAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3NjaGVtZUVuZCArIDEpCisgICAgICAgICAg
ICBwID0gIi8vIiArIHA7CisgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdl
IGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KKyAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQg
JiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCisgICAgICAgICAgICBlbmQgKz0gMTsKKyAgICAgICAg
cGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3RyaW5nLnN1YnN0cmluZyhl
bmQpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZl
IG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCisgICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBt
X3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKKyAg
ICAgICAgICAgIGVuZCArPSAxOworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGlu
IHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtl
IGEgY2hhbmdlLgorICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkKKyAgICAgICAgICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsK
KyAgICB9Cit9CisKK3ZvaWQgVVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIoY29uc3QgU3RyaW5n
JiBzKQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBG
SVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRv
IG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLgorICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9x
dWVyeUVuZCkgKyAiIyIgKyBzKTsKK30KKwordm9pZCBVUkw6OnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpCit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKyAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpKTsKK30KKyAgICAKK3ZvaWQgVVJMOjpzZXRRdWVy
eShjb25zdCBTdHJpbmcmIHF1ZXJ5KQoreworICAgIGlmICghbV9pc1ZhbGlkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogJyMnIGFuZCBub24tQVNDSUkgY2hhcmFjdGVycyBtdXN0
IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQuCisgICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVu
Y29kZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhh
dmUKKyAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCisgICAg
aWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxs
KCkpCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArICI/IiArIHF1ZXJ5
ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICBlbHNlCisgICAgICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcXVlcnlFbmQpKTsKKworfQorCit2b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcmIHMp
Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1F
OiBlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUg
JyMnIGFuZCAnPycsIHNvIGZyYWdtZW50IGFuZCBxdWVyeSBwYXJ0cworICAgIC8vIG1heSBiZSBp
bmFkdmVydGVudGx5IGFmZmVjdGVkLgorICAgIFN0cmluZyBwYXRoID0gczsKKyAgICBpZiAocGF0
aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCisgICAgICAgIHBhdGggPSAiLyIgKyBwYXRo
OworCisgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BvcnRFbmQpICsgZW5jb2RlV2l0aFVSTEVz
Y2FwZVNlcXVlbmNlcyhwYXRoKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQpKTsKK30K
KworU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykK
K3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzPFVSTEVzY2FwZVNlcXVlbmNlPihz
dHJpbmcsIFVURjhFbmNvZGluZygpKTsKK30KKworU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykK
K3sKKyAgICByZXR1cm4gZGVjb2RlRXNjYXBlU2VxdWVuY2VzPFVSTEVzY2FwZVNlcXVlbmNlPihz
dHJpbmcsIGVuY29kaW5nKTsKK30KKworLy8gQ2F1dGlvbjogVGhpcyBmdW5jdGlvbiBkb2VzIG5v
dCBib3VuZHMgY2hlY2suCitzdGF0aWMgdm9pZCBhcHBlbmRFc2NhcGVkQ2hhcihjaGFyKiYgYnVm
ZmVyLCB1bnNpZ25lZCBjaGFyIGMpCit7CisgICAgKmJ1ZmZlcisrID0gJyUnOworICAgIHBsYWNl
Qnl0ZUFzSGV4KGMsIGJ1ZmZlcik7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEVzY2FwaW5nQmFk
Q2hhcnMoY2hhciomIGJ1ZmZlciwgY29uc3QgY2hhciogc3RyU3RhcnQsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgY2hhciogcCA9IGJ1ZmZlcjsKKworICAgIGNvbnN0IGNoYXIqIHN0ciA9IHN0clN0
YXJ0OworICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0clN0YXJ0ICsgbGVuZ3RoOworICAgIHdo
aWxlIChzdHIgPCBzdHJFbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKnN0cisrOwor
ICAgICAgICBpZiAoaXNCYWRDaGFyKGMpKSB7CisgICAgICAgICAgICBpZiAoYyA9PSAnJScgfHwg
YyA9PSAnPycpCisgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBlbHNlIGlm
IChjICE9IDB4MDkgJiYgYyAhPSAweDBhICYmIGMgIT0gMHgwZCkKKyAgICAgICAgICAgICAgICBh
cHBlbmRFc2NhcGVkQ2hhcihwLCBjKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAqcCsr
ID0gYzsKKyAgICB9CisKKyAgICBidWZmZXIgPSBwOworfQorCitzdGF0aWMgdm9pZCBlc2NhcGVB
bmRBcHBlbmROb25IaWVyYXJjaGljYWxQYXJ0KGNoYXIqJiBidWZmZXIsIGNvbnN0IGNoYXIqIHN0
clN0YXJ0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGNoYXIqIHAgPSBidWZmZXI7CisKKyAgICBj
b25zdCBjaGFyKiBzdHIgPSBzdHJTdGFydDsKKyAgICBjb25zdCBjaGFyKiBzdHJFbmQgPSBzdHJT
dGFydCArIGxlbmd0aDsKKyAgICB3aGlsZSAoc3RyIDwgc3RyRW5kKSB7CisgICAgICAgIHVuc2ln
bmVkIGNoYXIgYyA9ICpzdHIrKzsKKyAgICAgICAgLy8gU3RyaXAgQ1IsIExGIGFuZCBUYWIgZnJv
bSBmcmFnbWVudHMsIHBlcjoKKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg3NzAKKyAgICAgICAgaWYgKGMgPT0gMHgwOSB8fCBjID09IDB4MGEgfHwg
YyA9PSAweDBkKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gQ2hyb21lIGFu
ZCBJRSBhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyBpbiBmcmFnbWVudHMsIGhvd2V2ZXIgZG9p
bmcKKyAgICAgICAgLy8gc28gd291bGQgaGl0IGFuIEFTU0VSVCBpbiBjaGVja0VuY29kZWRTdHJp
bmcsIHNvIGZvciBub3cgd2UgZG9uJ3QuCisgICAgICAgIGlmIChjIDwgMHgyMCB8fCBjID49IDEy
NykgeworICAgICAgICAgICAgYXBwZW5kRXNjYXBlZENoYXIocCwgYyk7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAqcCsrID0gYzsKKyAgICB9CisKKyAgICBidWZm
ZXIgPSBwOworfQorCisvLyBjb3B5IGEgcGF0aCwgYWNjb3VudGluZyBmb3IgIi4iIGFuZCAiLi4i
IHNlZ21lbnRzCitzdGF0aWMgaW50IGNvcHlQYXRoUmVtb3ZpbmdEb3RzKGNoYXIqIGRzdCwgY29u
c3QgY2hhciogc3JjLCBpbnQgc3JjU3RhcnQsIGludCBzcmNFbmQpCit7CisgICAgY2hhciogYnVm
ZmVyUGF0aFN0YXJ0ID0gZHN0OworCisgICAgLy8gZW1wdHkgcGF0aCBpcyBhIHNwZWNpYWwgY2Fz
ZSwgYW5kIG5lZWQgbm90IGhhdmUgYSBsZWFkaW5nIHNsYXNoCisgICAgaWYgKHNyY1N0YXJ0ICE9
IHNyY0VuZCkgeworICAgICAgICBjb25zdCBjaGFyKiBiYXNlU3RyaW5nU3RhcnQgPSBzcmMgKyBz
cmNTdGFydDsKKyAgICAgICAgY29uc3QgY2hhciogYmFzZVN0cmluZ0VuZCA9IHNyYyArIHNyY0Vu
ZDsKKyAgICAgICAgY29uc3QgY2hhciogYmFzZVN0cmluZ1BvcyA9IGJhc2VTdHJpbmdTdGFydDsK
KworICAgICAgICAvLyB0aGlzIGNvZGUgaXMgdW5wcmVwYXJlZCBmb3IgcGF0aHMgdGhhdCBkbyBu
b3QgYmVnaW4gd2l0aCBhCisgICAgICAgIC8vIHNsYXNoIGFuZCB3ZSBzaG91bGQgYWx3YXlzIGhh
dmUgb25lIGluIHRoZSBzb3VyY2Ugc3RyaW5nCisgICAgICAgIEFTU0VSVChiYXNlU3RyaW5nUG9z
WzBdID09ICcvJyk7CisKKyAgICAgICAgLy8gY29weSB0aGUgbGVhZGluZyBzbGFzaCBpbnRvIHRo
ZSBkZXN0aW5hdGlvbgorICAgICAgICAqZHN0ID0gKmJhc2VTdHJpbmdQb3M7CisgICAgICAgIGJh
c2VTdHJpbmdQb3MrKzsKKyAgICAgICAgZHN0Kys7CisKKyAgICAgICAgd2hpbGUgKGJhc2VTdHJp
bmdQb3MgPCBiYXNlU3RyaW5nRW5kKSB7CisgICAgICAgICAgICBpZiAoYmFzZVN0cmluZ1Bvc1sw
XSA9PSAnLicgJiYgZHN0Wy0xXSA9PSAnLycpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmFzZVN0
cmluZ1Bvc1sxXSA9PSAnLycgfHwgYmFzZVN0cmluZ1BvcyArIDEgPT0gYmFzZVN0cmluZ0VuZCkg
eworICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgIi4iIHNlZ21lbnQKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVN0cmluZ1BvcyArPSAyOworICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJhc2VTdHJpbmdQb3NbMV0gPT0gJy4n
ICYmIChiYXNlU3RyaW5nUG9zWzJdID09ICcvJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZVN0cmluZ1BvcyArIDIgPT0gYmFzZVN0cmluZ0VuZCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyICIuLiIgc2VnbWVudCBhbmQgcmV3aW5kIHRo
ZSBsYXN0IHNlZ21lbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIFJGQyBsZWF2ZXMgaXQg
dXAgdG8gdGhlIGFwcCB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIGV4Y2VzcworICAgICAgICAg
ICAgICAgICAgICAvLyAiLi4iIHNlZ21lbnRzIC0gd2UgY2hvb3NlIHRvIGRyb3AgdGhlbSBzaW5j
ZSBzb21lIHdlYiBjb250ZW50CisgICAgICAgICAgICAgICAgICAgIC8vIHJlbGllcyBvbiB0aGlz
LgorICAgICAgICAgICAgICAgICAgICBiYXNlU3RyaW5nUG9zICs9IDM7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChkc3QgPiBidWZmZXJQYXRoU3RhcnQgKyAxKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZHN0LS07CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChkc3QgPiBidWZmZXJQYXRo
U3RhcnQgJiYgZHN0Wy0xXSAhPSAnLycpCisgICAgICAgICAgICAgICAgICAgICAgICBkc3QtLTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAqZHN0ID0gKmJhc2VTdHJpbmdQb3M7CisgICAgICAgICAg
ICBiYXNlU3RyaW5nUG9zKys7CisgICAgICAgICAgICBkc3QrKzsKKyAgICAgICAgfQorICAgIH0K
KyAgICAqZHN0ID0gJ1wwJzsKKyAgICByZXR1cm4gZHN0IC0gYnVmZmVyUGF0aFN0YXJ0OworfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgaGFzU2xhc2hEb3RPckRvdERvdChjb25zdCBjaGFyKiBzdHIp
Cit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KHN0cik7CisgICAgaWYgKCEqcCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHVuc2lnbmVkIGNoYXIgcGMgPSAqcDsKKyAgICB3aGlsZSAodW5zaWduZWQgY2hhciBj
ID0gKisrcCkgeworICAgICAgICBpZiAoYyA9PSAnLicgJiYgKHBjID09ICcvJyB8fCBwYyA9PSAn
LicpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHBjID0gYzsKKyAgICB9Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFVSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCit7CisgICAgY2hlY2tFbmNvZGVkU3RyaW5nKHN0cmluZyk7CisKKyAgICBDaGFyQnVmZmVy
IGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkgKyAxKTsKKyAgICBjb3B5QVNDSUkoc3RyaW5nLCBidWZm
ZXIuZGF0YSgpKTsKKyAgICBidWZmZXJbc3RyaW5nLmxlbmd0aCgpXSA9ICdcMCc7CisgICAgcGFy
c2UoYnVmZmVyLmRhdGEoKSwgJnN0cmluZyk7Cit9CisKK3RlbXBsYXRlPHNpemVfdCBsZW5ndGg+
CitzdGF0aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciAoJmIp
W2xlbmd0aF0pCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8c2l6ZV90IGxlbmd0aEI+CitzdGF0
aWMgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgY2hhciogc3RyaW5nQSwgc2l6ZV90IGxlbmd0aEEs
IGNvbnN0IGNoYXIgKCZzdHJpbmdCKVtsZW5ndGhCXSkKK3sKKyAgICByZXR1cm4gbGVuZ3RoQSA9
PSBsZW5ndGhCICYmIGVxdWFsKHN0cmluZ0EsIHN0cmluZ0IpOworfQorCisvLyBMaXN0IG9mIGRl
ZmF1bHQgc2NoZW1lcyBpcyB0YWtlbiBmcm9tIGdvb2dsZS11cmw6CisvLyBodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvZ29vZ2xlLXVybC9zb3VyY2UvYnJvd3NlL3RydW5rL3NyYy91cmxfY2Fub25f
c3RkdXJsLmNjIzEyMAorc3RhdGljIGlubGluZSBib29sIGlzRGVmYXVsdFBvcnRGb3JTY2hlbWUo
Y29uc3QgY2hhciogcG9ydCwgc2l6ZV90IHBvcnRMZW5ndGgsIGNvbnN0IGNoYXIqIHNjaGVtZSwg
c2l6ZV90IHNjaGVtZUxlbmd0aCkKK3sKKyAgICAvLyBUaGlzIHN3aXRjaCBpcyB0aGVvcmV0aWNh
bGx5IGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLiAgSXQgY2FtZSBvdmVyIHdoZW4KKyAgICAv
LyB0aGUgY29kZSB3YXMgbW92ZWQgZnJvbSBnb29nbGUtdXJsLCBidXQgbWF5IGJlIHJlbW92ZWQg
bGF0ZXIuCisgICAgc3dpdGNoIChzY2hlbWVMZW5ndGgpIHsKKyAgICBjYXNlIDI6CisgICAgICAg
IHJldHVybiBlcXVhbChzY2hlbWUsIHdzU2NoZW1lKSAmJiBlcXVhbChwb3J0LCBwb3J0TGVuZ3Ro
LCBodHRwUG9ydCk7CisgICAgY2FzZSAzOgorICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCBmdHBT
Y2hlbWUpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGZ0cFBv
cnQpOworICAgICAgICBpZiAoZXF1YWwoc2NoZW1lLCB3c3NTY2hlbWUpKQorICAgICAgICAgICAg
cmV0dXJuIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGh0dHBzUG9ydCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgNDoKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cFNjaGVtZSkg
JiYgZXF1YWwocG9ydCwgcG9ydExlbmd0aCwgaHR0cFBvcnQpOworICAgIGNhc2UgNToKKyAgICAg
ICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRM
ZW5ndGgsIGh0dHBzUG9ydCk7CisgICAgY2FzZSA2OgorICAgICAgICByZXR1cm4gZXF1YWwoc2No
ZW1lLCBnb3BoZXJTY2hlbWUpICYmIGVxdWFsKHBvcnQsIHBvcnRMZW5ndGgsIGdvcGhlclBvcnQp
OworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBob3N0
UG9ydElzRW1wdHlCdXRDcmVkZW50aWFsc0FyZVByZXNlbnQoaW50IGhvc3RTdGFydCwgaW50IHBv
cnRFbmQsIGNoYXIgdXNlcmluZm9FbmRDaGFyKQoreworICAgIHJldHVybiB1c2VyaW5mb0VuZENo
YXIgPT0gJ0AnICYmIGhvc3RTdGFydCA9PSBwb3J0RW5kOworfQorCitzdGF0aWMgYm9vbCBpc05v
bkZpbGVIaWVyYXJjaGljYWxTY2hlbWUoY29uc3QgY2hhciogc2NoZW1lLCBzaXplX3Qgc2NoZW1l
TGVuZ3RoKQoreworICAgIHN3aXRjaCAoc2NoZW1lTGVuZ3RoKSB7CisgICAgY2FzZSAyOgorICAg
ICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCB3c1NjaGVtZSk7CisgICAgY2FzZSAzOgorICAgICAg
ICByZXR1cm4gZXF1YWwoc2NoZW1lLCBmdHBTY2hlbWUpIHx8IGVxdWFsKHNjaGVtZSwgd3NzU2No
ZW1lKTsKKyAgICBjYXNlIDQ6CisgICAgICAgIHJldHVybiBlcXVhbChzY2hlbWUsIGh0dHBTY2hl
bWUpOworICAgIGNhc2UgNToKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hl
bWUpOworICAgIGNhc2UgNjoKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2No
ZW1lKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBpc0Nhbm9u
aWNhbEhvc3RuYW1lTG93ZXJjYXNlRm9yU2NoZW1lKGNvbnN0IGNoYXIqIHNjaGVtZSwgc2l6ZV90
IHNjaGVtZUxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKHNjaGVtZUxlbmd0aCkgeworICAgIGNhc2Ug
MjoKKyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgd3NTY2hlbWUpOworICAgIGNhc2UgMzoK
KyAgICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZnRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUs
IHdzc1NjaGVtZSk7CisgICAgY2FzZSA0OgorICAgICAgICByZXR1cm4gZXF1YWwoc2NoZW1lLCBo
dHRwU2NoZW1lKSB8fCBlcXVhbChzY2hlbWUsIGZpbGVTY2hlbWUpOworICAgIGNhc2UgNToKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgaHR0cHNTY2hlbWUpOworICAgIGNhc2UgNjoKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHNjaGVtZSwgZ29waGVyU2NoZW1lKTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFVSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBT
dHJpbmcqIG9yaWdpbmFsU3RyaW5nKQoreworICAgIGlmICghdXJsIHx8IHVybFswXSA9PSAnXDAn
KSB7CisgICAgICAgIC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5vbi1lbXB0eQorICAgICAgICBtX3N0
cmluZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICBp
bnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWlzU2NoZW1l
Rmlyc3RDaGFyKHVybFswXSkpIHsKKyAgICAgICAgLy8gc2NoZW1lIG11c3Qgc3RhcnQgd2l0aCBh
biBhbHBoYWJldGljIGNoYXJhY3RlcgorICAgICAgICBtX3N0cmluZyA9IG9yaWdpbmFsU3RyaW5n
ID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgc2NoZW1lRW5kID0gMDsKKyAgICB3aGlsZSAoaXNT
Y2hlbWVDaGFyKHVybFtzY2hlbWVFbmRdKSkKKyAgICAgICAgc2NoZW1lRW5kKys7CisKKyAgICBp
ZiAodXJsW3NjaGVtZUVuZF0gIT0gJzonKSB7CisgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxT
dHJpbmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCB1c2VyU3RhcnQgPSBzY2hlbWVFbmQgKyAx
OworICAgIGludCB1c2VyRW5kOworICAgIGludCBwYXNzd29yZFN0YXJ0OworICAgIGludCBwYXNz
d29yZEVuZDsKKyAgICBpbnQgaG9zdFN0YXJ0OworICAgIGludCBob3N0RW5kOworICAgIGludCBw
b3J0U3RhcnQ7CisgICAgaW50IHBvcnRFbmQ7CisKKyAgICBib29sIGhpZXJhcmNoaWNhbCA9IHVy
bFtzY2hlbWVFbmQgKyAxXSA9PSAnLyc7CisgICAgYm9vbCBoYXNTZWNvbmRTbGFzaCA9IGhpZXJh
cmNoaWNhbCAmJiB1cmxbc2NoZW1lRW5kICsgMl0gPT0gJy8nOworCisgICAgYm9vbCBpc0ZpbGUg
PSBzY2hlbWVFbmQgPT0gNAorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVy
bFswXSwgJ2YnKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsxXSwg
J2knKQorICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsyXSwgJ2wnKQor
ICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFszXSwgJ2UnKTsKKworI2lm
IFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgLy8gUGFyc2UgbG9jYWw6IHVybHMgdGhlIHNhbWUg
YXMgZmlsZTogdXJscy4KKyAgICBpZiAoIWlzRmlsZSkKKyAgICAgICAgaXNGaWxlID0gc2NoZW1l
RW5kID09IDUKKyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzBd
LCAnbCcpCisgICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFsxXSwg
J28nKQorICAgICAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbMl0sICdj
JykKKyAgICAgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsWzNdLCAnYScp
CisgICAgICAgICAgICAmJiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFs0XSwgJ2wnKTsK
KyNlbmRpZgorCisgICAgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5ID0gaXNMZXR0ZXJNYXRjaEln
bm9yaW5nQ2FzZSh1cmxbMF0sICdoJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5n
Q2FzZSh1cmxbMV0sICd0JykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1
cmxbMl0sICd0JykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbM10s
ICdwJykKKyAgICAgICAgJiYgKHVybFs0XSA9PSAnOicgfHwgKGlzTGV0dGVyTWF0Y2hJZ25vcmlu
Z0Nhc2UodXJsWzRdLCAncycpICYmIHVybFs1XSA9PSAnOicpKTsKKworICAgIGlmICgoaGllcmFy
Y2hpY2FsICYmIGhhc1NlY29uZFNsYXNoKSB8fCBpc05vbkZpbGVIaWVyYXJjaGljYWxTY2hlbWUo
dXJsLCBzY2hlbWVFbmQpKSB7CisgICAgICAgIC8vIFRoZSBwYXJ0IGFmdGVyIHRoZSBzY2hlbWUg
aXMgZWl0aGVyIGEgbmV0X3BhdGggb3IgYW4gYWJzX3BhdGggd2hvc2UgZmlyc3QgcGF0aCBzZWdt
ZW50IGlzIGVtcHR5LgorICAgICAgICAvLyBBdHRlbXB0IHRvIGZpbmQgYW4gYXV0aG9yaXR5Lgor
ICAgICAgICAvLyBGSVhNRTogQXV0aG9yaXR5IGNoYXJhY3RlcnMgbWF5IGJlIHNjYW5uZWQgdHdp
Y2UsIGFuZCBpdCB3b3VsZCBiZSBuaWNlIHRvIGJlIGZhc3Rlci4KKworICAgICAgICBpZiAoaGll
cmFyY2hpY2FsKQorICAgICAgICAgICAgdXNlclN0YXJ0Kys7CisgICAgICAgIGlmIChoYXNTZWNv
bmRTbGFzaCkKKyAgICAgICAgICAgIHVzZXJTdGFydCsrOworICAgICAgICB1c2VyRW5kID0gdXNl
clN0YXJ0OworCisgICAgICAgIGludCBjb2xvblBvcyA9IDA7CisgICAgICAgIHdoaWxlIChpc1Vz
ZXJJbmZvQ2hhcih1cmxbdXNlckVuZF0pKSB7CisgICAgICAgICAgICBpZiAodXJsW3VzZXJFbmRd
ID09ICc6JyAmJiBjb2xvblBvcyA9PSAwKQorICAgICAgICAgICAgICAgIGNvbG9uUG9zID0gdXNl
ckVuZDsKKyAgICAgICAgICAgIHVzZXJFbmQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1
cmxbdXNlckVuZF0gPT0gJ0AnKSB7CisgICAgICAgICAgICAvLyBhY3R1YWwgZW5kIG9mIHRoZSB1
c2VyaW5mbywgc3RhcnQgb24gdGhlIGhvc3QKKyAgICAgICAgICAgIGlmIChjb2xvblBvcyAhPSAw
KSB7CisgICAgICAgICAgICAgICAgcGFzc3dvcmRFbmQgPSB1c2VyRW5kOworICAgICAgICAgICAg
ICAgIHVzZXJFbmQgPSBjb2xvblBvczsKKyAgICAgICAgICAgICAgICBwYXNzd29yZFN0YXJ0ID0g
Y29sb25Qb3MgKyAxOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcGFzc3dv
cmRTdGFydCA9IHBhc3N3b3JkRW5kID0gdXNlckVuZDsKKworICAgICAgICAgICAgaG9zdFN0YXJ0
ID0gcGFzc3dvcmRFbmQgKyAxOworICAgICAgICB9IGVsc2UgaWYgKHVybFt1c2VyRW5kXSA9PSAn
WycgfHwgaXNQYXRoU2VnbWVudEVuZENoYXIodXJsW3VzZXJFbmRdKSkgeworICAgICAgICAgICAg
Ly8gaGl0IHRoZSBlbmQgb2YgdGhlIGF1dGhvcml0eSwgbXVzdCBoYXZlIGJlZW4gbm8gdXNlcgor
ICAgICAgICAgICAgLy8gb3IgbG9va3MgbGlrZSBhbiBJUHY2IGhvc3RuYW1lCisgICAgICAgICAg
ICAvLyBlaXRoZXIgd2F5LCB0cnkgdG8gcGFyc2UgaXQgYXMgYSBob3N0bmFtZQorICAgICAgICAg
ICAgdXNlckVuZCA9IHVzZXJTdGFydDsKKyAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBwYXNz
d29yZEVuZCA9IHVzZXJFbmQ7CisgICAgICAgICAgICBob3N0U3RhcnQgPSB1c2VyU3RhcnQ7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgorICAgICAg
ICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsK
KyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGhvc3RFbmQgPSBob3N0U3RhcnQ7CisKKyAgICAgICAgLy8gSVBWNiBJUCBh
ZGRyZXNzCisgICAgICAgIGlmICh1cmxbaG9zdEVuZF0gPT0gJ1snKSB7CisgICAgICAgICAgICBo
b3N0RW5kKys7CisgICAgICAgICAgICB3aGlsZSAoaXNJUHY2Q2hhcih1cmxbaG9zdEVuZF0pKQor
ICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKKyAgICAgICAgICAgIGlmICh1cmxbaG9zdEVuZF0g
PT0gJ10nKQorICAgICAgICAgICAgICAgIGhvc3RFbmQrKzsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIGludmFsaWQgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgbV9z
dHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAg
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd2hpbGUgKGlzSG9zdG5hbWVDaGFy
KHVybFtob3N0RW5kXSkpCisgICAgICAgICAgICAgICAgaG9zdEVuZCsrOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAodXJsW2hvc3RFbmRdID09ICc6JykgeworICAgICAgICAgICAg
cG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQgKyAxOworIAorICAgICAgICAgICAgLy8gcG9z
c2libGUgc3RhcnQgb2YgcG9ydAorICAgICAgICAgICAgcG9ydEVuZCA9IHBvcnRTdGFydDsKKyAg
ICAgICAgICAgIHdoaWxlIChpc0FTQ0lJRGlnaXQodXJsW3BvcnRFbmRdKSkKKyAgICAgICAgICAg
ICAgICBwb3J0RW5kKys7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9ydFN0YXJ0ID0g
cG9ydEVuZCA9IGhvc3RFbmQ7CisKKyAgICAgICAgaWYgKCFpc1BhdGhTZWdtZW50RW5kQ2hhcih1
cmxbcG9ydEVuZF0pKSB7CisgICAgICAgICAgICAvLyBpbnZhbGlkIGNoYXJhY3RlcgorICAgICAg
ICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsK
KyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChob3N0UG9ydElzRW1wdHlCdXRDcmVkZW50aWFsc0FyZVByZXNlbnQo
aG9zdFN0YXJ0LCBwb3J0RW5kLCB1cmxbcGFzc3dvcmRFbmRdKSkgeworICAgICAgICAgICAgbV9z
dHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6IHVybDsKKyAgICAgICAg
ICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICh1c2VyU3RhcnQgPT0gcG9ydEVuZCAmJiAhbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5
ICYmICFpc0ZpbGUpIHsKKyAgICAgICAgICAgIC8vIE5vIGF1dGhvcml0eSBmb3VuZCwgd2hpY2gg
bWVhbnMgdGhhdCB0aGlzIGlzIG5vdCBhIG5ldF9wYXRoLCBidXQgcmF0aGVyIGFuIGFic19wYXRo
IHdob3NlIGZpcnN0IHR3bworICAgICAgICAgICAgLy8gcGF0aCBzZWdtZW50cyBhcmUgZW1wdHku
IEZvciBmaWxlLCBodHRwIGFuZCBodHRwcyBvbmx5LCBhbiBlbXB0eSBhdXRob3JpdHkgaXMgYWxs
b3dlZC4KKyAgICAgICAgICAgIHVzZXJTdGFydCAtPSAyOworICAgICAgICAgICAgdXNlckVuZCA9
IHVzZXJTdGFydDsKKyAgICAgICAgICAgIHBhc3N3b3JkU3RhcnQgPSB1c2VyRW5kOworICAgICAg
ICAgICAgcGFzc3dvcmRFbmQgPSBwYXNzd29yZFN0YXJ0OworICAgICAgICAgICAgaG9zdFN0YXJ0
ID0gcGFzc3dvcmRFbmQ7CisgICAgICAgICAgICBob3N0RW5kID0gaG9zdFN0YXJ0OworICAgICAg
ICAgICAgcG9ydFN0YXJ0ID0gaG9zdEVuZDsKKyAgICAgICAgICAgIHBvcnRFbmQgPSBob3N0RW5k
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gdGhlIHBhcnQgYWZ0ZXIgdGhl
IHNjaGVtZSBtdXN0IGJlIGFuIG9wYXF1ZV9wYXJ0IG9yIGFuIGFic19wYXRoCisgICAgICAgIHVz
ZXJFbmQgPSB1c2VyU3RhcnQ7CisgICAgICAgIHBhc3N3b3JkU3RhcnQgPSBwYXNzd29yZEVuZCA9
IHVzZXJFbmQ7CisgICAgICAgIGhvc3RTdGFydCA9IGhvc3RFbmQgPSBwYXNzd29yZEVuZDsKKyAg
ICAgICAgcG9ydFN0YXJ0ID0gcG9ydEVuZCA9IGhvc3RFbmQ7CisgICAgfQorCisgICAgaW50IHBh
dGhTdGFydCA9IHBvcnRFbmQ7CisgICAgaW50IHBhdGhFbmQgPSBwYXRoU3RhcnQ7CisgICAgd2hp
bGUgKHVybFtwYXRoRW5kXSAmJiB1cmxbcGF0aEVuZF0gIT0gJz8nICYmIHVybFtwYXRoRW5kXSAh
PSAnIycpCisgICAgICAgIHBhdGhFbmQrKzsKKworICAgIGludCBxdWVyeVN0YXJ0ID0gcGF0aEVu
ZDsKKyAgICBpbnQgcXVlcnlFbmQgPSBxdWVyeVN0YXJ0OworICAgIGlmICh1cmxbcXVlcnlTdGFy
dF0gPT0gJz8nKSB7CisgICAgICAgIHdoaWxlICh1cmxbcXVlcnlFbmRdICYmIHVybFtxdWVyeUVu
ZF0gIT0gJyMnKQorICAgICAgICAgICAgcXVlcnlFbmQrKzsKKyAgICB9CisKKyAgICBpbnQgZnJh
Z21lbnRTdGFydCA9IHF1ZXJ5RW5kOworICAgIGludCBmcmFnbWVudEVuZCA9IGZyYWdtZW50U3Rh
cnQ7CisgICAgaWYgKHVybFtmcmFnbWVudFN0YXJ0XSA9PSAnIycpIHsKKyAgICAgICAgZnJhZ21l
bnRTdGFydCsrOworICAgICAgICBmcmFnbWVudEVuZCA9IGZyYWdtZW50U3RhcnQ7CisgICAgICAg
IHdoaWxlICh1cmxbZnJhZ21lbnRFbmRdKQorICAgICAgICAgICAgZnJhZ21lbnRFbmQrKzsKKyAg
ICB9CisKKyAgICAvLyBhc3NlbWJsZSBpdCBhbGwsIHJlbWVtYmVyaW5nIHRoZSByZWFsIHJhbmdl
cworCisgICAgVmVjdG9yPGNoYXIsIDQwOTY+IGJ1ZmZlcihmcmFnbWVudEVuZCAqIDMgKyAxKTsK
KworICAgIGNoYXIgKnAgPSBidWZmZXIuZGF0YSgpOworICAgIGNvbnN0IGNoYXIgKnN0clB0ciA9
IHVybDsKKworICAgIC8vIGNvcHkgaW4gdGhlIHNjaGVtZQorICAgIGNvbnN0IGNoYXIgKnNjaGVt
ZUVuZFB0ciA9IHVybCArIHNjaGVtZUVuZDsKKyAgICB3aGlsZSAoc3RyUHRyIDwgc2NoZW1lRW5k
UHRyKQorICAgICAgICAqcCsrID0gdG9BU0NJSUxvd2VyKCpzdHJQdHIrKyk7CisgICAgbV9zY2hl
bWVFbmQgPSBwIC0gYnVmZmVyLmRhdGEoKTsKKworICAgIGJvb2wgaG9zdElzTG9jYWxIb3N0ID0g
cG9ydEVuZCAtIHVzZXJTdGFydCA9PSA5CisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmlu
Z0Nhc2UodXJsW3VzZXJTdGFydF0sICdsJykKKyAgICAgICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9y
aW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzFdLCAnbycpCisgICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJ
Z25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCsyXSwgJ2MnKQorICAgICAgICAmJiBpc0xldHRlck1h
dGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrM10sICdhJykKKyAgICAgICAgJiYgaXNMZXR0
ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzRdLCAnbCcpCisgICAgICAgICYmIGlz
TGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs1XSwgJ2gnKQorICAgICAgICAm
JiBpc0xldHRlck1hdGNoSWdub3JpbmdDYXNlKHVybFt1c2VyU3RhcnQrNl0sICdvJykKKyAgICAg
ICAgJiYgaXNMZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbdXNlclN0YXJ0KzddLCAncycpCisg
ICAgICAgICYmIGlzTGV0dGVyTWF0Y2hJZ25vcmluZ0Nhc2UodXJsW3VzZXJTdGFydCs4XSwgJ3Qn
KTsKKworICAgIC8vIEZpbGUgVVJMcyBuZWVkIGEgaG9zdCBwYXJ0IHVubGVzcyBpdCBpcyBqdXN0
IGZpbGU6Ly8gb3IgZmlsZTovL2xvY2FsaG9zdAorICAgIGJvb2wgZGVnZW5lcmF0ZUZpbGVQYXRo
ID0gcGF0aFN0YXJ0ID09IHBhdGhFbmQgJiYgKGhvc3RTdGFydCA9PSBob3N0RW5kIHx8IGhvc3RJ
c0xvY2FsSG9zdCk7CisKKyAgICAvLyBXZSBkcm9wIGVtcHR5IGNyZWRlbnRpYWxzLCBidXQga2Vl
cCBhIGNvbG9uIGluIGFuIGVtcHR5IGhvc3QvcG9ydCBwYWlyLgorICAgIC8vIFJlbW92aW5nIGhv
c3RuYW1lIGNvbXBsZXRlbHkgd291bGQgY2hhbmdlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIFVSTCBv
biByZS1wYXJzaW5nLgorICAgIGJvb2wgaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0ID0gdXNlclN0
YXJ0ICE9IHVzZXJFbmQgfHwgcGFzc3dvcmRTdGFydCAhPSBwYXNzd29yZEVuZCB8fCBob3N0RW5k
ICE9IHBvcnRFbmQ7CisKKyAgICAvLyBhZGQgIjoiIGFmdGVyIHNjaGVtZQorICAgICpwKysgPSAn
Oic7CisKKyAgICAvLyBpZiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBhdXRob3JpdHkgcGFydCBvciBh
IGZpbGUgVVJMIC0gYWRkICIvLyIgYW5kIGF1dGhvcml0eQorICAgIGlmIChpc0ZpbGUgPyAhZGVn
ZW5lcmF0ZUZpbGVQYXRoIDogKGhhdmVOb25Ib3N0QXV0aG9yaXR5UGFydCB8fCBob3N0U3RhcnQg
IT0gaG9zdEVuZCkpIHsKKyAgICAgICAgKnArKyA9ICcvJzsKKyAgICAgICAgKnArKyA9ICcvJzsK
KworICAgICAgICBtX3VzZXJTdGFydCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgICAgIC8v
IGNvcHkgaW4gdGhlIHVzZXIKKyAgICAgICAgc3RyUHRyID0gdXJsICsgdXNlclN0YXJ0OworICAg
ICAgICBjb25zdCBjaGFyKiB1c2VyRW5kUHRyID0gdXJsICsgdXNlckVuZDsKKyAgICAgICAgd2hp
bGUgKHN0clB0ciA8IHVzZXJFbmRQdHIpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9ICpzdHJQdHIr
KzsKKyAgICAgICAgICAgIEFTU0VSVChpc1VzZXJJbmZvQ2hhcihjKSk7CisgICAgICAgICAgICAq
cCsrID0gYzsKKyAgICAgICAgfQorICAgICAgICBtX3VzZXJFbmQgPSBwIC0gYnVmZmVyLmRhdGEo
KTsKKworICAgICAgICAvLyBjb3B5IGluIHRoZSBwYXNzd29yZAorICAgICAgICBpZiAocGFzc3dv
cmRFbmQgIT0gcGFzc3dvcmRTdGFydCkgeworICAgICAgICAgICAgKnArKyA9ICc6JzsKKyAgICAg
ICAgICAgIHN0clB0ciA9IHVybCArIHBhc3N3b3JkU3RhcnQ7CisgICAgICAgICAgICBjb25zdCBj
aGFyKiBwYXNzd29yZEVuZFB0ciA9IHVybCArIHBhc3N3b3JkRW5kOworICAgICAgICAgICAgd2hp
bGUgKHN0clB0ciA8IHBhc3N3b3JkRW5kUHRyKSB7CisgICAgICAgICAgICAgICAgY2hhciBjID0g
KnN0clB0cisrOworICAgICAgICAgICAgICAgIEFTU0VSVChpc1VzZXJJbmZvQ2hhcihjKSk7Cisg
ICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgbV9wYXNzd29yZEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgICAgIC8vIElmIHdl
IGhhZCBhbnkgdXNlciBpbmZvLCBhZGQgIkAiCisgICAgICAgIGlmIChwIC0gYnVmZmVyLmRhdGEo
KSAhPSBtX3VzZXJTdGFydCkKKyAgICAgICAgICAgICpwKysgPSAnQCc7CisKKyAgICAgICAgLy8g
Y29weSBpbiB0aGUgaG9zdCwgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgZmlsZSBVUkwgd2l0aCBh
dXRob3JpdHk9ImxvY2FsaG9zdCIKKyAgICAgICAgaWYgKCEoaXNGaWxlICYmIGhvc3RJc0xvY2Fs
SG9zdCAmJiAhaGF2ZU5vbkhvc3RBdXRob3JpdHlQYXJ0KSkgeworICAgICAgICAgICAgc3RyUHRy
ID0gdXJsICsgaG9zdFN0YXJ0OworICAgICAgICAgICAgY29uc3QgY2hhciogaG9zdEVuZFB0ciA9
IHVybCArIGhvc3RFbmQ7CisgICAgICAgICAgICBpZiAoaXNDYW5vbmljYWxIb3N0bmFtZUxvd2Vy
Y2FzZUZvclNjaGVtZShidWZmZXIuZGF0YSgpLCBtX3NjaGVtZUVuZCkpIHsKKyAgICAgICAgICAg
ICAgICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVuZFB0cikgeworICAgICAgICAgICAgICAgICAgICBj
aGFyIGMgPSB0b0FTQ0lJTG93ZXIoKnN0clB0cisrKTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKGlzSG9zdG5hbWVDaGFyKGMpIHx8IGMgPT0gJ1snIHx8IGMgPT0gJ10nIHx8IGMgPT0gJzon
KTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoc3RyUHRyIDwgaG9zdEVu
ZFB0cikgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSAqc3RyUHRyKys7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChpc0hvc3RuYW1lQ2hhcihjKSB8fCBjID09ICdbJyB8fCBjID09
ICddJyB8fCBjID09ICc6Jyk7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSBjOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2hvc3RFbmQg
PSBwIC0gYnVmZmVyLmRhdGEoKTsKKworICAgICAgICAvLyBDb3B5IGluIHRoZSBwb3J0IGlmIHRo
ZSBVUkwgaGFzIG9uZSAoYW5kIGl0J3Mgbm90IGRlZmF1bHQpLiBBbHNvLCBjb3B5IGl0IGlmIHRo
ZXJlIHdhcyBubyBob3N0bmFtZSwgc28gdGhhdCB0aGVyZSBpcyBzdGlsbCBzb21ldGhpbmcgaW4g
YXV0aG9yaXR5IGNvbXBvbmVudC4KKyAgICAgICAgaWYgKGhvc3RFbmQgIT0gcG9ydFN0YXJ0KSB7
CisgICAgICAgICAgICBjb25zdCBjaGFyKiBwb3J0U3RyID0gdXJsICsgcG9ydFN0YXJ0OworICAg
ICAgICAgICAgc2l6ZV90IHBvcnRMZW5ndGggPSBwb3J0RW5kIC0gcG9ydFN0YXJ0OworICAgICAg
ICAgICAgaWYgKChwb3J0TGVuZ3RoICYmICFpc0RlZmF1bHRQb3J0Rm9yU2NoZW1lKHBvcnRTdHIs
IHBvcnRMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIG1fc2NoZW1lRW5kKSkKKyAgICAgICAgICAgICAg
ICB8fCAoaG9zdFN0YXJ0ID09IGhvc3RFbmQgJiYgaG9zdEVuZCAhPSBwb3J0U3RhcnQpKSB7Cisg
ICAgICAgICAgICAgICAgKnArKyA9ICc6JzsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBw
b3J0RW5kUHRyID0gdXJsICsgcG9ydEVuZDsKKyAgICAgICAgICAgICAgICB3aGlsZSAocG9ydFN0
ciA8IHBvcnRFbmRQdHIpCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAqcG9ydFN0cisrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fcG9ydEVuZCA9IHAgLSBidWZmZXIu
ZGF0YSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpc0ZpbGUpIHsKKyAgICAgICAgICAg
IEFTU0VSVChkZWdlbmVyYXRlRmlsZVBhdGgpOworICAgICAgICAgICAgKnArKyA9ICcvJzsKKyAg
ICAgICAgICAgICpwKysgPSAnLyc7CisgICAgICAgIH0KKyAgICAgICAgbV91c2VyU3RhcnQgPSBt
X3VzZXJFbmQgPSBtX3Bhc3N3b3JkRW5kID0gbV9ob3N0RW5kID0gbV9wb3J0RW5kID0gcCAtIGJ1
ZmZlci5kYXRhKCk7CisgICAgfQorCisgICAgLy8gRm9yIGNhbm9uaWNhbGl6YXRpb24sIGVuc3Vy
ZSB3ZSBoYXZlIGEgJy8nIGZvciBubyBwYXRoLgorICAgIC8vIERvIHRoaXMgb25seSBmb3IgVVJM
IHdpdGggcHJvdG9jb2wgZmlsZSwgaHR0cCBvciBodHRwcy4KKyAgICBpZiAoKG1fcHJvdG9jb2xJ
c0luSFRUUEZhbWlseSB8fCBpc0ZpbGUpICYmIHBhdGhFbmQgPT0gcGF0aFN0YXJ0KQorICAgICAg
ICAqcCsrID0gJy8nOworCisgICAgLy8gYWRkIHBhdGgsIGVzY2FwaW5nIGJhZCBjaGFyYWN0ZXJz
CisgICAgaWYgKCFoaWVyYXJjaGljYWwpCisgICAgICAgIGVzY2FwZUFuZEFwcGVuZE5vbkhpZXJh
cmNoaWNhbFBhcnQocCwgdXJsICsgcGF0aFN0YXJ0LCBwYXRoRW5kIC0gcGF0aFN0YXJ0KTsKKyAg
ICBlbHNlIGlmICghaGFzU2xhc2hEb3RPckRvdERvdCh1cmwpKQorICAgICAgICBhcHBlbmRFc2Nh
cGluZ0JhZENoYXJzKHAsIHVybCArIHBhdGhTdGFydCwgcGF0aEVuZCAtIHBhdGhTdGFydCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIENoYXJCdWZmZXIgcGF0aEJ1ZmZlcihwYXRoRW5kIC0gcGF0aFN0
YXJ0ICsgMSk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBjb3B5UGF0aFJlbW92aW5nRG90cyhw
YXRoQnVmZmVyLmRhdGEoKSwgdXJsLCBwYXRoU3RhcnQsIHBhdGhFbmQpOworICAgICAgICBhcHBl
bmRFc2NhcGluZ0JhZENoYXJzKHAsIHBhdGhCdWZmZXIuZGF0YSgpLCBsZW5ndGgpOworICAgIH0K
KworICAgIG1fcGF0aEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgLy8gRmluZCB0aGUg
cG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3Qgc2xhc2ggaW4gdGhlIHBhdGgsIG9yCisgICAgLy8gdGhl
IHBvc2l0aW9uIGJlZm9yZSB0aGUgcGF0aCBpZiB0aGVyZSBhcmUgbm8gc2xhc2hlcyBpbiBpdC4K
KyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBtX3BhdGhFbmQ7IGkgPiBtX3BvcnRFbmQ7IC0taSkg
eworICAgICAgICBpZiAoYnVmZmVyW2kgLSAxXSA9PSAnLycpCisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisgICAgbV9wYXRoQWZ0ZXJMYXN0U2xhc2ggPSBpOworCisgICAgLy8gYWRkIHF1ZXJ5
LCBlc2NhcGluZyBiYWQgY2hhcmFjdGVycworICAgIGFwcGVuZEVzY2FwaW5nQmFkQ2hhcnMocCwg
dXJsICsgcXVlcnlTdGFydCwgcXVlcnlFbmQgLSBxdWVyeVN0YXJ0KTsKKyAgICBtX3F1ZXJ5RW5k
ID0gcCAtIGJ1ZmZlci5kYXRhKCk7CisKKyAgICAvLyBhZGQgZnJhZ21lbnQsIGVzY2FwaW5nIGJh
ZCBjaGFyYWN0ZXJzCisgICAgaWYgKGZyYWdtZW50RW5kICE9IHF1ZXJ5RW5kKSB7CisgICAgICAg
ICpwKysgPSAnIyc7CisgICAgICAgIGVzY2FwZUFuZEFwcGVuZE5vbkhpZXJhcmNoaWNhbFBhcnQo
cCwgdXJsICsgZnJhZ21lbnRTdGFydCwgZnJhZ21lbnRFbmQgLSBmcmFnbWVudFN0YXJ0KTsKKyAg
ICB9CisgICAgbV9mcmFnbWVudEVuZCA9IHAgLSBidWZmZXIuZGF0YSgpOworCisgICAgQVNTRVJU
KHAgLSBidWZmZXIuZGF0YSgpIDw9IHN0YXRpY19jYXN0PGludD4oYnVmZmVyLnNpemUoKSkpOwor
ICAgIEFTU0VSVChidWZmZXIuc2l6ZSgpID4gMCk7CisKKyAgICAvLyBJZiB3ZSBkaWRuJ3QgZW5k
IHVwIGFjdHVhbGx5IGNoYW5naW5nIHRoZSBvcmlnaW5hbCBzdHJpbmcgYW5kCisgICAgLy8gaXQg
d2FzIGFscmVhZHkgaW4gYSBTdHJpbmcsIHJldXNlIGl0IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRp
b24uCisgICAgaWYgKG9yaWdpbmFsU3RyaW5nICYmIGVxdWFsKG9yaWdpbmFsU3RyaW5nLT5pbXBs
KCksIGJ1ZmZlci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpKQorICAgICAgICBtX3N0cmluZyA9ICpv
cmlnaW5hbFN0cmluZzsKKyAgICBlbHNlCisgICAgICAgIG1fc3RyaW5nID0gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCksIG1fZnJhZ21lbnRFbmQpOworCisgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKK30KKwor
Ym9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3Qg
VVJMJiBiKQoreworICAgIGlmIChhLm1fcXVlcnlFbmQgIT0gYi5tX3F1ZXJ5RW5kKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcXVlcnlMZW5ndGggPSBhLm1fcXVlcnlFbmQ7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHF1ZXJ5TGVuZ3RoOyArK2kpCisgICAgICAg
IGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLm1fc2NoZW1l
RW5kICE9IGIubV9zY2hlbWVFbmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBo
b3N0U3RhcnRBID0gYS5ob3N0U3RhcnQoKTsKKyAgICBpbnQgaG9zdExlbmd0aEEgPSBhLmhvc3RF
bmQoKSAtIGhvc3RTdGFydEE7CisgICAgaW50IGhvc3RTdGFydEIgPSBiLmhvc3RTdGFydCgpOwor
ICAgIGludCBob3N0TGVuZ3RoQiA9IGIuaG9zdEVuZCgpIC0gYi5ob3N0U3RhcnQoKTsKKyAgICBp
ZiAoaG9zdExlbmd0aEEgIT0gaG9zdExlbmd0aEIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIC8vIENoZWNrIHRoZSBzY2hlbWUKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGEubV9zY2hl
bWVFbmQ7ICsraSkKKyAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEFuZCB0aGUgaG9zdAorICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgaG9zdExlbmd0aEE7ICsraSkKKyAgICAgICAgaWYgKGEuc3RyaW5n
KClbaG9zdFN0YXJ0QSArIGldICE9IGIuc3RyaW5nKClbaG9zdFN0YXJ0QiArIGldKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGEucG9ydCgpICE9IGIucG9ydCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworU3RyaW5nIGVuY29k
ZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBub3RFbmNvZGVkU3RyaW5nKQor
eworICAgIENTdHJpbmcgYXNVVEY4ID0gbm90RW5jb2RlZFN0cmluZy51dGY4KCk7CisKKyAgICBD
aGFyQnVmZmVyIGJ1ZmZlcihhc1VURjgubGVuZ3RoKCkgKiAzICsgMSk7CisgICAgY2hhciogcCA9
IGJ1ZmZlci5kYXRhKCk7CisKKyAgICBjb25zdCBjaGFyKiBzdHIgPSBhc1VURjguZGF0YSgpOwor
ICAgIGNvbnN0IGNoYXIqIHN0ckVuZCA9IHN0ciArIGFzVVRGOC5sZW5ndGgoKTsKKyAgICB3aGls
ZSAoc3RyIDwgc3RyRW5kKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpzdHIrKzsKKyAg
ICAgICAgaWYgKGlzQmFkQ2hhcihjKSkKKyAgICAgICAgICAgIGFwcGVuZEVzY2FwZWRDaGFyKHAs
IGMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICB9CisKKyAgICBB
U1NFUlQocCAtIGJ1ZmZlci5kYXRhKCkgPD0gc3RhdGljX2Nhc3Q8aW50PihidWZmZXIuc2l6ZSgp
KSk7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHAgLSBidWZmZXIuZGF0YSgp
KTsKK30KKworLy8gQXBwZW5kcyB0aGUgcHVueWNvZGVkIGhvc3RuYW1lIGlkZW50aWZpZWQgYnkg
dGhlIGdpdmVuIHN0cmluZyBhbmQgbGVuZ3RoIHRvCisvLyB0aGUgb3V0cHV0IGJ1ZmZlci4gVGhl
IHJlc3VsdCB3aWxsIG5vdCBiZSBudWxsIHRlcm1pbmF0ZWQuCitzdGF0aWMgdm9pZCBhcHBlbmRF
bmNvZGVkSG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgY29uc3QgVUNoYXIqIHN0ciwgdW5z
aWduZWQgc3RyTGVuKQoreworICAgIC8vIE5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gaG9sZCBh
biBJRE4tZW5jb2RlZCBuYW1lLgorICAgIC8vIEZvciBob3N0IG5hbWVzIGJpZ2dlciB0aGFuIHRo
aXMsIHdlIHdvbid0IGRvIElETiBlbmNvZGluZywgd2hpY2ggaXMgYWxtb3N0IGNlcnRhaW5seSBP
Sy4KKyAgICBjb25zdCB1bnNpZ25lZCBob3N0bmFtZUJ1ZmZlckxlbmd0aCA9IDIwNDg7CisKKyAg
ICBpZiAoc3RyTGVuID4gaG9zdG5hbWVCdWZmZXJMZW5ndGggfHwgY2hhcmFjdGVyc0FyZUFsbEFT
Q0lJKHN0ciwgc3RyTGVuKSkgeworICAgICAgICBidWZmZXIuYXBwZW5kKHN0ciwgc3RyTGVuKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICBVQ2hh
ciBob3N0bmFtZUJ1ZmZlcltob3N0bmFtZUJ1ZmZlckxlbmd0aF07CisgICAgVUVycm9yQ29kZSBl
cnJvciA9IFVfWkVST19FUlJPUjsKKyAgICBpbnQzMl90IG51bUNoYXJhY3RlcnNDb252ZXJ0ZWQg
PSB1aWRuYV9JRE5Ub0FTQ0lJKHN0ciwgc3RyTGVuLCBob3N0bmFtZUJ1ZmZlciwKKyAgICAgICAg
aG9zdG5hbWVCdWZmZXJMZW5ndGgsIFVJRE5BX0FMTE9XX1VOQVNTSUdORUQsIDAsICZlcnJvcik7
CisgICAgaWYgKGVycm9yID09IFVfWkVST19FUlJPUikKKyAgICAgICAgYnVmZmVyLmFwcGVuZCho
b3N0bmFtZUJ1ZmZlciwgbnVtQ2hhcmFjdGVyc0NvbnZlcnRlZCk7CisjZW5kaWYKK30KKworc3Rh
dGljIHZvaWQgZmluZEhvc3RuYW1lc0luTWFpbFRvVVJMKGNvbnN0IFVDaGFyKiBzdHIsIGludCBz
dHJMZW4sIFZlY3RvcjxwYWlyPGludCwgaW50PiA+JiBuYW1lUmFuZ2VzKQoreworICAgIC8vIElu
IGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0ZXIgYW5k
IGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgb3IgZW5kIG9mIHN0cmluZyBjaGFyYWN0ZXIu
CisgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4gdGhlbSBk
b24ndCBjb25mdXNlIHVzLgorICAgIC8vIFdoZW4gd2UgZmluZCBhICc/JyBjaGFyYWN0ZXIsIHdl
IGFyZSBwYXN0IHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBjb250YWlucyBob3N0IG5hbWVzLgor
CisgICAgbmFtZVJhbmdlcy5jbGVhcigpOworCisgICAgaW50IHAgPSAwOworICAgIHdoaWxlICgx
KSB7CisgICAgICAgIC8vIEZpbmQgc3RhcnQgb2YgaG9zdCBuYW1lIG9yIG9mIHF1b3RlZCBzdHJp
bmcuCisgICAgICAgIGludCBob3N0bmFtZU9yU3RyaW5nU3RhcnQgPSBmaW5kRmlyc3RPZihzdHIs
IHN0ckxlbiwgcCwgIlwiQD8iKTsKKyAgICAgICAgaWYgKGhvc3RuYW1lT3JTdHJpbmdTdGFydCA9
PSAtMSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgVUNoYXIgYyA9IHN0cltob3N0bmFt
ZU9yU3RyaW5nU3RhcnRdOworICAgICAgICBwID0gaG9zdG5hbWVPclN0cmluZ1N0YXJ0ICsgMTsK
KworICAgICAgICBpZiAoYyA9PSAnPycpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKGMgPT0gJ0AnKSB7CisgICAgICAgICAgICAvLyBGaW5kIGVuZCBvZiBob3N0IG5hbWUuCisg
ICAgICAgICAgICBpbnQgaG9zdG5hbWVTdGFydCA9IHA7CisgICAgICAgICAgICBpbnQgaG9zdG5h
bWVFbmQgPSBmaW5kRmlyc3RPZihzdHIsIHN0ckxlbiwgcCwgIj4sPyIpOworICAgICAgICAgICAg
Ym9vbCBkb25lOworICAgICAgICAgICAgaWYgKGhvc3RuYW1lRW5kID09IC0xKSB7CisgICAgICAg
ICAgICAgICAgaG9zdG5hbWVFbmQgPSBzdHJMZW47CisgICAgICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHAgPSBob3N0bmFtZUVu
ZDsKKyAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIG5hbWVSYW5nZXMuYXBwZW5kKG1ha2VfcGFpcihob3N0bmFtZVN0YXJ0LCBob3N0bmFt
ZUVuZCkpOworCisgICAgICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTa2lwIHF1b3RlZCBzdHJpbmcuCisg
ICAgICAgICAgICBBU1NFUlQoYyA9PSAnIicpOworICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAg
ICAgICAgICAgICAgICBpbnQgZXNjYXBlZENoYXJhY3Rlck9yU3RyaW5nRW5kID0gZmluZEZpcnN0
T2Yoc3RyLCBzdHJMZW4sIHAsICJcIlxcIik7CisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRD
aGFyYWN0ZXJPclN0cmluZ0VuZCA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICAgICAgYyA9IHN0cltlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmRdOwor
ICAgICAgICAgICAgICAgIHAgPSBlc2NhcGVkQ2hhcmFjdGVyT3JTdHJpbmdFbmQgKyAxOworCisg
ICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIHRoZSBlbmQgb2YgdGhlIHN0cmluZywgdGhlbiBi
cmVhayBmcm9tIHRoZSBzdHJpbmcgbG9vcCBiYWNrIHRvIHRoZSBob3N0IG5hbWUgbG9vcC4KKyAg
ICAgICAgICAgICAgICBpZiAoYyA9PSAnIicpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgLy8gU2tpcCBlc2NhcGVkIGNoYXJhY3Rlci4KKyAgICAgICAgICAg
ICAgICBBU1NFUlQoYyA9PSAnXFwnKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBzdHJMZW4p
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICsrcDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGJvb2wgZmluZEhvc3Ru
YW1lSW5IaWVyYXJjaGljYWxVUkwoY29uc3QgVUNoYXIqIHN0ciwgaW50IHN0ckxlbiwgaW50JiBz
dGFydE9mZnNldCwgaW50JiBlbmRPZmZzZXQpCit7CisgICAgLy8gRmluZCB0aGUgaG9zdCBuYW1l
IGluIGEgaGllcmFyY2hpY2FsIFVSTC4KKyAgICAvLyBJdCBjb21lcyBhZnRlciBhICI6Ly8iIHNl
cXVlbmNlLCB3aXRoIHNjaGVtZSBjaGFyYWN0ZXJzIHByZWNlZGluZywgYW5kCisgICAgLy8gdGhp
cyBzaG91bGQgYmUgdGhlIGZpcnN0IGNvbG9uIGluIHRoZSBzdHJpbmcuCisgICAgLy8gSXQgZW5k
cyB3aXRoIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciBhICI6IiBvciBhIHBhdGggc2VnbWVudCBl
bmRpbmcgY2hhcmFjdGVyLgorICAgIC8vIElmIHRoZXJlIGlzIGEgIkAiIGNoYXJhY3RlciwgdGhl
IGhvc3QgcGFydCBpcyBqdXN0IHRoZSBwYXJ0IGFmdGVyIHRoZSAiQCIuCisgICAgaW50IHNlcGFy
YXRvciA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCAwLCAiOiIpOworICAgIGlmIChzZXBhcmF0
b3IgPT0gLTEgfHwgc2VwYXJhdG9yICsgMiA+PSBzdHJMZW4gfHwKKyAgICAgICAgc3RyW3NlcGFy
YXRvciArIDFdICE9ICcvJyB8fCBzdHJbc2VwYXJhdG9yICsgMl0gIT0gJy8nKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayB0aGF0IGFsbCBjaGFyYWN0ZXJzIGJlZm9yZSB0
aGUgOi8vIGFyZSB2YWxpZCBzY2hlbWUgY2hhcmFjdGVycy4KKyAgICBpZiAoIWlzU2NoZW1lRmly
c3RDaGFyKHN0clswXSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGludCBpID0g
MTsgaSA8IHNlcGFyYXRvcjsgKytpKSB7CisgICAgICAgIGlmICghaXNTY2hlbWVDaGFyKHN0cltp
XSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gU3RhcnQgYWZ0
ZXIgdGhlIHNlcGFyYXRvci4KKyAgICBpbnQgYXV0aG9yaXR5U3RhcnQgPSBzZXBhcmF0b3IgKyAz
OworCisgICAgLy8gRmluZCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCisgICAgaW50IGhvc3RuYW1l
RW5kID0gc3RyTGVuOworICAgIGZvciAoaW50IGkgPSBhdXRob3JpdHlTdGFydDsgaSA8IHN0ckxl
bjsgKytpKSB7CisgICAgICAgIFVDaGFyIGMgPSBzdHJbaV07CisgICAgICAgIGlmIChjID09ICc6
JyB8fCAoaXNQYXRoU2VnbWVudEVuZENoYXIoYykgJiYgYyAhPSAwKSkgeworICAgICAgICAgICAg
aG9zdG5hbWVFbmQgPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGaW5kICJAIiBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBob3N0IG5hbWUuCisgICAgaW50
IHVzZXJJbmZvVGVybWluYXRvciA9IGZpbmRGaXJzdE9mKHN0ciwgc3RyTGVuLCBhdXRob3JpdHlT
dGFydCwgIkAiKTsKKyAgICBpbnQgaG9zdG5hbWVTdGFydDsKKyAgICBpZiAodXNlckluZm9UZXJt
aW5hdG9yID09IC0xIHx8IHVzZXJJbmZvVGVybWluYXRvciA+IGhvc3RuYW1lRW5kKQorICAgICAg
ICBob3N0bmFtZVN0YXJ0ID0gYXV0aG9yaXR5U3RhcnQ7CisgICAgZWxzZQorICAgICAgICBob3N0
bmFtZVN0YXJ0ID0gdXNlckluZm9UZXJtaW5hdG9yICsgMTsKKworICAgIHN0YXJ0T2Zmc2V0ID0g
aG9zdG5hbWVTdGFydDsKKyAgICBlbmRPZmZzZXQgPSBob3N0bmFtZUVuZDsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworLy8gQ29udmVydHMgYWxsIGhvc3RuYW1lcyBmb3VuZCBpbiB0aGUgZ2l2ZW4g
aW5wdXQgdG8gcHVueWNvZGUsIHByZXNlcnZpbmcgdGhlCisvLyByZXN0IG9mIHRoZSBVUkwgdW5j
aGFuZ2VkLiBUaGUgb3V0cHV0IHdpbGwgTk9UIGJlIG51bGwtdGVybWluYXRlZC4KK3N0YXRpYyB2
b2lkIGVuY29kZUhvc3RuYW1lcyhjb25zdCBTdHJpbmcmIHN0ciwgVUNoYXJCdWZmZXImIG91dHB1
dCkKK3sKKyAgICBvdXRwdXQuY2xlYXIoKTsKKworICAgIGlmIChwcm90b2NvbElzKHN0ciwgIm1h
aWx0byIpKSB7CisgICAgICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IGhvc3RuYW1lUmFuZ2Vz
OworICAgICAgICBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoc3RyLmNoYXJhY3RlcnMoKSwgc3Ry
Lmxlbmd0aCgpLCBob3N0bmFtZVJhbmdlcyk7CisgICAgICAgIGludCBuID0gaG9zdG5hbWVSYW5n
ZXMuc2l6ZSgpOworICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbjsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBwYWlyPGludCwgaW50PiYgciA9IGhvc3Ru
YW1lUmFuZ2VzW2ldOworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgmc3RyLmNoYXJhY3RlcnMo
KVtwXSwgci5maXJzdCAtIHApOworICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEhvc3RuYW1lKG91
dHB1dCwgJnN0ci5jaGFyYWN0ZXJzKClbci5maXJzdF0sIHIuc2Vjb25kIC0gci5maXJzdCk7Cisg
ICAgICAgICAgICBwID0gci5zZWNvbmQ7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyB3aWxs
IGNvcHkgZWl0aGVyIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGxhc3QgaG9zdG5hbWUsIG9yIHRoZQor
ICAgICAgICAvLyB3aG9sZSB0aGluZyBpZiB0aGVyZSBpcyBubyBob3N0bmFtZS4KKyAgICAgICAg
b3V0cHV0LmFwcGVuZCgmc3RyLmNoYXJhY3RlcnMoKVtwXSwgc3RyLmxlbmd0aCgpIC0gcCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaW50IGhvc3RTdGFydCwgaG9zdEVuZDsKKyAgICAgICAgaWYg
KGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5n
dGgoKSwgaG9zdFN0YXJ0LCBob3N0RW5kKSkgeworICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChz
dHIuY2hhcmFjdGVycygpLCBob3N0U3RhcnQpOyAvLyBCZWZvcmUgaG9zdG5hbWUuCisgICAgICAg
ICAgICBhcHBlbmRFbmNvZGVkSG9zdG5hbWUob3V0cHV0LCAmc3RyLmNoYXJhY3RlcnMoKVtob3N0
U3RhcnRdLCBob3N0RW5kIC0gaG9zdFN0YXJ0KTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQo
JnN0ci5jaGFyYWN0ZXJzKClbaG9zdEVuZF0sIHN0ci5sZW5ndGgoKSAtIGhvc3RFbmQpOyAvLyBB
ZnRlciBob3N0bmFtZS4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vIGhvc3Ru
YW1lIHRvIGVuY29kZSwgcmV0dXJuIHRoZSBpbnB1dC4KKyAgICAgICAgICAgIG91dHB1dC5hcHBl
bmQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgIH0KK30K
Kworc3RhdGljIHZvaWQgZW5jb2RlUmVsYXRpdmVTdHJpbmcoY29uc3QgU3RyaW5nJiByZWwsIGNv
bnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIENoYXJCdWZmZXImIG91dHB1dCkKK3sKKyAgICBV
Q2hhckJ1ZmZlciBzOworICAgIGVuY29kZUhvc3RuYW1lcyhyZWwsIHMpOworCisgICAgVGV4dEVu
Y29kaW5nIHBhdGhFbmNvZGluZyhVVEY4RW5jb2RpbmcoKSk7IC8vIFBhdGggaXMgYWx3YXlzIGVu
Y29kZWQgYXMgVVRGLTg7IG90aGVyIHBhcnRzIG1heSBkZXBlbmQgb24gdGhlIHNjaGVtZS4KKwor
ICAgIGludCBwYXRoRW5kID0gLTE7CisgICAgaWYgKGVuY29kaW5nICE9IHBhdGhFbmNvZGluZyAm
JiBlbmNvZGluZy5pc1ZhbGlkKCkgJiYgIXByb3RvY29sSXMocmVsLCAibWFpbHRvIikgJiYgIXBy
b3RvY29sSXMocmVsLCAiZGF0YSIpICYmICFwcm90b2NvbElzSmF2YVNjcmlwdChyZWwpKSB7Cisg
ICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGVpdGhlciAjIG9yID8sIGtlZXAg
cGF0aEVuZCBhdCAtMSBvdGhlcndpc2UuCisgICAgICAgIHBhdGhFbmQgPSBmaW5kRmlyc3RPZihz
LmRhdGEoKSwgcy5zaXplKCksIDAsICIjPyIpOworICAgIH0KKworICAgIGlmIChwYXRoRW5kID09
IC0xKSB7CisgICAgICAgIENTdHJpbmcgZGVjb2RlZCA9IHBhdGhFbmNvZGluZy5lbmNvZGUocy5k
YXRhKCksIHMuc2l6ZSgpLCBVUkxFbmNvZGVkRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpOworICAg
ICAgICBvdXRwdXQucmVzaXplKGRlY29kZWQubGVuZ3RoKCkpOworICAgICAgICBtZW1jcHkob3V0
cHV0LmRhdGEoKSwgZGVjb2RlZC5kYXRhKCksIGRlY29kZWQubGVuZ3RoKCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIENTdHJpbmcgcGF0aERlY29kZWQgPSBwYXRoRW5jb2RpbmcuZW5jb2RlKHMu
ZGF0YSgpLCBwYXRoRW5kLCBVUkxFbmNvZGVkRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpOworICAg
ICAgICAvLyBVbmVuY29kYWJsZSBjaGFyYWN0ZXJzIGluIFVSTHMgYXJlIHJlcHJlc2VudGVkIGJ5
IGNvbnZlcnRpbmcKKyAgICAgICAgLy8gdGhlbSB0byBYTUwgZW50aXRpZXMgYW5kIGVzY2FwaW5n
IG5vbi1hbHBoYW51bWVyaWMgY2hhcmFjdGVycy4KKyAgICAgICAgQ1N0cmluZyBvdGhlckRlY29k
ZWQgPSBlbmNvZGluZy5lbmNvZGUocy5kYXRhKCkgKyBwYXRoRW5kLCBzLnNpemUoKSAtIHBhdGhF
bmQsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisKKyAgICAgICAgb3V0cHV0
LnJlc2l6ZShwYXRoRGVjb2RlZC5sZW5ndGgoKSArIG90aGVyRGVjb2RlZC5sZW5ndGgoKSk7Cisg
ICAgICAgIG1lbWNweShvdXRwdXQuZGF0YSgpLCBwYXRoRGVjb2RlZC5kYXRhKCksIHBhdGhEZWNv
ZGVkLmxlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KG91dHB1dC5kYXRhKCkgKyBwYXRoRGVjb2Rl
ZC5sZW5ndGgoKSwgb3RoZXJEZWNvZGVkLmRhdGEoKSwgb3RoZXJEZWNvZGVkLmxlbmd0aCgpKTsK
KyAgICB9CisgICAgb3V0cHV0LmFwcGVuZCgnXDAnKTsgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIG91
dHB1dC4KK30KKworc3RhdGljIFN0cmluZyBzdWJzdGl0dXRlQmFja3NsYXNoZXMoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgc2l6ZV90IHF1ZXN0aW9uUG9zID0gc3RyaW5nLmZpbmQoJz8n
KTsKKyAgICBzaXplX3QgaGFzaFBvcyA9IHN0cmluZy5maW5kKCcjJyk7CisgICAgdW5zaWduZWQg
cGF0aEVuZDsKKworICAgIGlmIChoYXNoUG9zICE9IG5vdEZvdW5kICYmIChxdWVzdGlvblBvcyA9
PSBub3RGb3VuZCB8fCBxdWVzdGlvblBvcyA+IGhhc2hQb3MpKQorICAgICAgICBwYXRoRW5kID0g
aGFzaFBvczsKKyAgICBlbHNlIGlmIChxdWVzdGlvblBvcyAhPSBub3RGb3VuZCkKKyAgICAgICAg
cGF0aEVuZCA9IHF1ZXN0aW9uUG9zOworICAgIGVsc2UKKyAgICAgICAgcGF0aEVuZCA9IHN0cmlu
Zy5sZW5ndGgoKTsKKworICAgIHJldHVybiBzdHJpbmcubGVmdChwYXRoRW5kKS5yZXBsYWNlKCdc
XCcsJy8nKSArIHN0cmluZy5zdWJzdHJpbmcocGF0aEVuZCk7Cit9CisKK2Jvb2wgVVJMOjppc0hp
ZXJhcmNoaWNhbCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lzVmFsaWQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBBU1NFUlQobV9zdHJpbmdbbV9zY2hlbWVFbmRdID09ICc6Jyk7CisgICAg
cmV0dXJuIG1fc3RyaW5nW21fc2NoZW1lRW5kICsgMV0gPT0gJy8nOworfQorCit2b2lkIFVSTDo6
Y29weVRvQnVmZmVyKFZlY3RvcjxjaGFyLCA1MTI+JiBidWZmZXIpIGNvbnN0Cit7CisgICAgLy8g
RklYTUU6IFRoaXMgdGhyb3dzIGF3YXkgdGhlIGhpZ2ggYnl0ZXMgb2YgYWxsIHRoZSBjaGFyYWN0
ZXJzIGluIHRoZSBzdHJpbmchCisgICAgLy8gVGhhdCdzIGZpbmUgZm9yIGEgdmFsaWQgVVJMLCB3
aGljaCBpcyBhbGwgQVNDSUksIGJ1dCBub3QgZm9yIGludmFsaWQgVVJMcy4KKyAgICBidWZmZXIu
cmVzaXplKG1fc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBjb3B5QVNDSUkobV9zdHJpbmcsIGJ1ZmZl
ci5kYXRhKCkpOworfQorCitib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IGNoYXIqIHByb3RvY29sKQoreworICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdpdGhvdXQgbWFr
aW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCisgICAgYXNzZXJ0UHJvdG9jb2xJc0dvb2QocHJvdG9j
b2wpOworICAgIGZvciAoaW50IGkgPSAwOyA7ICsraSkgeworICAgICAgICBpZiAoIXByb3RvY29s
W2ldKQorICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7CisgICAgICAgIGlmICghaXNM
ZXR0ZXJNYXRjaElnbm9yaW5nQ2FzZSh1cmxbaV0sIHByb3RvY29sW2ldKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgaXNWYWxpZFByb3RvY29sKGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpCit7CisgICAgLy8gUkZDMzk4NjogQUxQSEEgKiggQUxQSEEgLyBESUdJ
VCAvICIrIiAvICItIiAvICIuIiApCisgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaXNTY2hlbWVGaXJzdENoYXIocHJvdG9jb2xbMF0p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcHJvdG9jb2xMZW5ndGggPSBw
cm90b2NvbC5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgcHJvdG9jb2xM
ZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIWlzU2NoZW1lQ2hhcihwcm90b2NvbFtpXSkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisj
aWZuZGVmIE5ERUJVRwordm9pZCBVUkw6OnByaW50KCkgY29uc3QKK3sKKyAgICBwcmludGYoIiVz
XG4iLCBtX3N0cmluZy51dGY4KCkuZGF0YSgpKTsKK30KKyNlbmRpZgorCitTdHJpbmcgVVJMOjpz
dHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSBjb25zdAoreworICAgIFVSTCByZWZlcnJlcigqdGhp
cyk7CisgICAgcmVmZXJyZXIuc2V0VXNlcihTdHJpbmcoKSk7CisgICAgcmVmZXJyZXIuc2V0UGFz
cyhTdHJpbmcoKSk7CisgICAgcmVmZXJyZXIucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Cisg
ICAgcmV0dXJuIHJlZmVycmVyLnN0cmluZygpOworfQorCitib29sIFVSTDo6aXNMb2NhbEZpbGUo
KSBjb25zdAoreworICAgIC8vIEluY2x1ZGluZyBmZWVkIGhlcmUgbWlnaHQgYmUgYSBiYWQgaWRl
YSBzaW5jZSBkcmFnIGFuZCBkcm9wIHVzZXMgdGhpcyBjaGVjaworICAgIC8vIGFuZCBpbmNsdWRp
bmcgZmVlZCB3b3VsZCBhbGxvdyBmZWVkcyB0byBwb3RlbnRpYWxseSBsZXQgc29tZW9uZSdzIGJs
b2cKKyAgICAvLyByZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgY2xpcGJvYXJkIG9uIGEgZHJhZywg
ZXZlbiB3aXRob3V0IGEgZHJvcC4KKyAgICAvLyBMaWtld2lzZSB3aXRoIHVzaW5nIHRoZSBGcmFt
ZUxvYWRlcjo6c2hvdWxkVHJlYXRVUkxBc0xvY2FsKCkgZnVuY3Rpb24uCisgICAgcmV0dXJuIHBy
b3RvY29sSXMoImZpbGUiKTsKK30KKworYm9vbCBwcm90b2NvbElzSmF2YVNjcmlwdChjb25zdCBT
dHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJcyh1cmwsICJqYXZhc2NyaXB0Iik7
Cit9CisKK2NvbnN0IFVSTCYgYmxhbmtVUkwoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VVJMLCBzdGF0aWNCbGFua1VSTCwgKFBhcnNlZFVSTFN0cmluZywgImFib3V0OmJsYW5rIikpOwor
ICAgIHJldHVybiBzdGF0aWNCbGFua1VSTDsKK30KKworYm9vbCBVUkw6OmlzQmxhbmtVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBwcm90b2NvbElzKCJhYm91dCIpOworfQorCitib29sIGlzRGVm
YXVsdFBvcnRGb3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQoreworICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkLCBDYXNlRm9sZGlu
Z0hhc2g+IERlZmF1bHRQb3J0c01hcDsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKERlZmF1bHRQ
b3J0c01hcCwgZGVmYXVsdFBvcnRzLCAoKSk7CisgICAgaWYgKGRlZmF1bHRQb3J0cy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgZGVmYXVsdFBvcnRzLnNldCgiaHR0cCIsIDgwKTsKKyAgICAgICAgZGVm
YXVsdFBvcnRzLnNldCgiaHR0cHMiLCA0NDMpOworICAgICAgICBkZWZhdWx0UG9ydHMuc2V0KCJm
dHAiLCAyMSk7CisgICAgICAgIGRlZmF1bHRQb3J0cy5zZXQoImZ0cHMiLCA5OTApOworICAgIH0K
KyAgICByZXR1cm4gZGVmYXVsdFBvcnRzLmdldChwcm90b2NvbCkgPT0gcG9ydDsKK30KKworYm9v
bCBwb3J0QWxsb3dlZChjb25zdCBVUkwmIHVybCkKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBwb3J0
ID0gdXJsLnBvcnQoKTsKKworICAgIC8vIFNpbmNlIG1vc3QgVVJMcyBkb24ndCBoYXZlIGEgcG9y
dCwgcmV0dXJuIGVhcmx5IGZvciB0aGUgIm5vIHBvcnQiIGNhc2UuCisgICAgaWYgKCFwb3J0KQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFRoaXMgYmxvY2tlZCBwb3J0IGxpc3QgbWF0
Y2hlcyB0aGUgcG9ydCBibG9ja2luZyB0aGF0IE1vemlsbGEgaW1wbGVtZW50cy4KKyAgICAvLyBT
ZWUgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uZXRsaWIvUG9ydEJhbm5pbmcuaHRt
bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQg
YmxvY2tlZFBvcnRMaXN0W10gPSB7CisgICAgICAgIDEsICAgIC8vIHRjcG11eAorICAgICAgICA3
LCAgICAvLyBlY2hvCisgICAgICAgIDksICAgIC8vIGRpc2NhcmQKKyAgICAgICAgMTEsICAgLy8g
c3lzdGF0CisgICAgICAgIDEzLCAgIC8vIGRheXRpbWUKKyAgICAgICAgMTUsICAgLy8gbmV0c3Rh
dAorICAgICAgICAxNywgICAvLyBxb3RkCisgICAgICAgIDE5LCAgIC8vIGNoYXJnZW4KKyAgICAg
ICAgMjAsICAgLy8gRlRQLWRhdGEKKyAgICAgICAgMjEsICAgLy8gRlRQLWNvbnRyb2wKKyAgICAg
ICAgMjIsICAgLy8gU1NICisgICAgICAgIDIzLCAgIC8vIHRlbG5ldAorICAgICAgICAyNSwgICAv
LyBTTVRQCisgICAgICAgIDM3LCAgIC8vIHRpbWUKKyAgICAgICAgNDIsICAgLy8gbmFtZQorICAg
ICAgICA0MywgICAvLyBuaWNuYW1lCisgICAgICAgIDUzLCAgIC8vIGRvbWFpbgorICAgICAgICA3
NywgICAvLyBwcml2LXJqcworICAgICAgICA3OSwgICAvLyBmaW5nZXIKKyAgICAgICAgODcsICAg
Ly8gdHR5bGluaworICAgICAgICA5NSwgICAvLyBzdXBkdXAKKyAgICAgICAgMTAxLCAgLy8gaG9z
dHJpYW1lCisgICAgICAgIDEwMiwgIC8vIGlzby10c2FwCisgICAgICAgIDEwMywgIC8vIGdwcGl0
bnAKKyAgICAgICAgMTA0LCAgLy8gYWNyLW5lbWEKKyAgICAgICAgMTA5LCAgLy8gUE9QMgorICAg
ICAgICAxMTAsICAvLyBQT1AzCisgICAgICAgIDExMSwgIC8vIHN1bnJwYworICAgICAgICAxMTMs
ICAvLyBhdXRoCisgICAgICAgIDExNSwgIC8vIFNGVFAKKyAgICAgICAgMTE3LCAgLy8gdXVjcC1w
YXRoCisgICAgICAgIDExOSwgIC8vIG5udHAKKyAgICAgICAgMTIzLCAgLy8gTlRQCisgICAgICAg
IDEzNSwgIC8vIGxvYy1zcnYgLyBlcG1hcAorICAgICAgICAxMzksICAvLyBuZXRiaW9zCisgICAg
ICAgIDE0MywgIC8vIElNQVAyCisgICAgICAgIDE3OSwgIC8vIEJHUAorICAgICAgICAzODksICAv
LyBMREFQCisgICAgICAgIDQ2NSwgIC8vIFNNVFArU1NMCisgICAgICAgIDUxMiwgIC8vIHByaW50
IC8gZXhlYworICAgICAgICA1MTMsICAvLyBsb2dpbgorICAgICAgICA1MTQsICAvLyBzaGVsbAor
ICAgICAgICA1MTUsICAvLyBwcmludGVyCisgICAgICAgIDUyNiwgIC8vIHRlbXBvCisgICAgICAg
IDUzMCwgIC8vIGNvdXJpZXIKKyAgICAgICAgNTMxLCAgLy8gQ2hhdAorICAgICAgICA1MzIsICAv
LyBuZXRuZXdzCisgICAgICAgIDU0MCwgIC8vIFVVQ1AKKyAgICAgICAgNTU2LCAgLy8gcmVtb3Rl
ZnMKKyAgICAgICAgNTYzLCAgLy8gTk5UUCtTU0wKKyAgICAgICAgNTg3LCAgLy8gRVNNVFAKKyAg
ICAgICAgNjAxLCAgLy8gc3lzbG9nLWNvbm4KKyAgICAgICAgNjM2LCAgLy8gTERBUCtTU0wKKyAg
ICAgICAgOTkzLCAgLy8gSU1BUCtTU0wKKyAgICAgICAgOTk1LCAgLy8gUE9QMytTU0wKKyAgICAg
ICAgMjA0OSwgLy8gTkZTCisgICAgICAgIDM2NTksIC8vIGFwcGxlLXNhc2wgLyBQYXNzd29yZFNl
cnZlciBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDQwNDUsIC8vIGxvY2tkCisgICAgICAgIDYw
MDAsIC8vIFgxMQorICAgICAgICA2NjY1LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlv
bl0KKyAgICAgICAgNjY2NiwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAg
ICAgIDY2NjcsIC8vIFN0YW5kYXJkIElSQyBbQXBwbGUgYWRkaXRpb25dCisgICAgICAgIDY2Njgs
IC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQorICAgICAgICA2NjY5LCAvLyBBbHRl
cm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KKyAgICAgICAgaW52YWxpZFBvcnROdW1iZXIsIC8v
IFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCisgICAgfTsKKyAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCogY29uc3QgYmxvY2tlZFBvcnRMaXN0RW5kID0gYmxvY2tlZFBvcnRM
aXN0ICsgV1RGX0FSUkFZX0xFTkdUSChibG9ja2VkUG9ydExpc3QpOworCisjaWZuZGVmIE5ERUJV
RworICAgIC8vIFRoZSBwb3J0IGxpc3QgbXVzdCBiZSBzb3J0ZWQgZm9yIGJpbmFyeV9zZWFyY2gg
dG8gd29yay4KKyAgICBzdGF0aWMgYm9vbCBjaGVja2VkUG9ydExpc3QgPSBmYWxzZTsKKyAgICBp
ZiAoIWNoZWNrZWRQb3J0TGlzdCkgeworICAgICAgICBmb3IgKGNvbnN0IHVuc2lnbmVkIHNob3J0
KiBwID0gYmxvY2tlZFBvcnRMaXN0OyBwICE9IGJsb2NrZWRQb3J0TGlzdEVuZCAtIDE7ICsrcCkK
KyAgICAgICAgICAgIEFTU0VSVCgqcCA8ICoocCArIDEpKTsKKyAgICAgICAgY2hlY2tlZFBvcnRM
aXN0ID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKworICAgIC8vIElmIHRoZSBwb3J0IGlzIG5vdCBp
biB0aGUgYmxvY2tlZCBwb3J0IGxpc3QsIGFsbG93IGl0LgorICAgIGlmICghYmluYXJ5X3NlYXJj
aChibG9ja2VkUG9ydExpc3QsIGJsb2NrZWRQb3J0TGlzdEVuZCwgcG9ydCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgLy8gQWxsb3cgcG9ydHMgMjEgYW5kIDIyIGZvciBGVFAgVVJMcywg
YXMgTW96aWxsYSBkb2VzLgorICAgIGlmICgocG9ydCA9PSAyMSB8fCBwb3J0ID09IDIyKSAmJiB1
cmwucHJvdG9jb2xJcygiZnRwIikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQWxs
b3cgYW55IHBvcnQgbnVtYmVyIGluIGEgZmlsZSBVUkwsIHNpbmNlIHRoZSBwb3J0IG51bWJlciBp
cyBpZ25vcmVkLgorICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgaWYgKHVybC5wcm90b2Nv
bElzKCJsb2NhbCIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBTdHJpbmcmIHVy
bCkKK3sKKyAgICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJkYXRhIikpOworICAgIHNpemVfdCBp
bmRleCA9IHVybC5maW5kKCc7Jyk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICBpbmRleCA9IHVybC5maW5kKCcsJyk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7Cisg
ICAgICAgIGlmIChpbmRleCA+IDUpCisgICAgICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZyg1
LCBpbmRleCAtIDUpLmxvd2VyKCk7CisgICAgICAgIHJldHVybiAidGV4dC9wbGFpbiI7IC8vIERh
dGEgVVJMcyB3aXRoIG5vIE1JTUUgdHlwZSBhcmUgY29uc2lkZXJlZCB0ZXh0L3BsYWluLgorICAg
IH0KKyAgICByZXR1cm4gIiI7Cit9CisKK1N0cmluZyBtaW1lVHlwZUZyb21VUkwoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgU3RyaW5nIGRlY29kZWRQYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKHVybC5wYXRoKCkpOworICAgIFN0cmluZyBleHRlbnNpb24gPSBkZWNvZGVkUGF0aC5zdWJz
dHJpbmcoZGVjb2RlZFBhdGgucmV2ZXJzZUZpbmQoJy4nKSArIDEpOworCisgICAgLy8gV2UgZG9u
J3QgdXNlIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yUGF0aCgpIGJlY2F1c2UgaXQg
cmV0dXJucyAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB1cG9uIGZhaWx1cmUKKyAgICByZXR1
cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsK
K30KKworYm9vbCBVUkw6OmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLmlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOworfQorCitT
dHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3Ro
KSBjb25zdAoreworICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCisgICAgICAg
IHJldHVybiBzdHJpbmcoKTsKKworICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIg
LSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzEzZTlmZWM4MTY2MzFiNGE4NzhkMDI2ZDVi
ZWY1OTU1MzJhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkwuaApAQCAtMCwwICsxLDM1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVVJMX2gKKyNkZWZpbmUgVVJMX2gKKwor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
KyNpZiBVU0UoQ0YpCit0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMKiBDRlVSTFJlZjsKKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorT0JKQ19DTEFTUyBOU1VSTDsKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oUVQpCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFVcmw7CitRVF9FTkRf
TkFNRVNQQUNFCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0RW5j
b2Rpbmc7CitzdHJ1Y3QgVVJMSGFzaDsKKworZW51bSBQYXJzZWRVUkxTdHJpbmdUYWcgeyBQYXJz
ZWRVUkxTdHJpbmcgfTsKKworY2xhc3MgVVJMIHsKK3B1YmxpYzoKKyAgICAvLyBHZW5lcmF0ZXMg
YSBVUkwgd2hpY2ggY29udGFpbnMgYSBudWxsIHN0cmluZy4KKyAgICBVUkwoKSB7IGludmFsaWRh
dGUoKTsgfQorCisgICAgLy8gVGhlIGFyZ3VtZW50IGlzIGFuIGFic29sdXRlIFVSTCBzdHJpbmcu
IFRoZSBzdHJpbmcgaXMgYXNzdW1lZCB0byBiZSBvdXRwdXQgb2YgVVJMOjpzdHJpbmcoKSBjYWxs
ZWQgb24gYSB2YWxpZAorICAgIC8vIFVSTCBvYmplY3QsIG9yIGluZGlzY2VybmlibGUgZnJvbSBz
dWNoLgorICAgIC8vIEl0IGlzIHVzdWFsbHkgYmVzdCB0byBhdm9pZCByZXBlYXRlZGx5IHBhcnNp
bmcgYSBzdHJpbmcsIHVubGVzcyBtZW1vcnkgc2F2aW5nIG91dHdlaWdoIHRoZSBwb3NzaWJsZSBz
bG93LWRvd25zLgorICAgIFVSTChQYXJzZWRVUkxTdHJpbmdUYWcsIGNvbnN0IFN0cmluZyYpOwor
ICAgIGV4cGxpY2l0IFVSTChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJp
bmcoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQorICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBzdHJpbmcoKS5pc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpOyB9CisKKyAgICAvLyBSZXNvbHZlcyB0aGUgcmVsYXRpdmUgVVJMIHdpdGggdGhlIGdp
dmVuIGJhc2UgVVJMLiBJZiBwcm92aWRlZCwgdGhlCisgICAgLy8gVGV4dEVuY29kaW5nIGlzIHVz
ZWQgdG8gZW5jb2RlIG5vbi1BU0NJSSBjaGFyYWNlcnMuIFRoZSBiYXNlIFVSTCBjYW4gYmUKKyAg
ICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2ZSBVUkwgd2lsbCBi
ZSBpbnRlcnByZXRlZCBhcworICAgIC8vIGFic29sdXRlLgorICAgIC8vIEZJWE1FOiBJZiB0aGUg
YmFzZSBVUkwgaXMgaW52YWxpZCwgdGhpcyBhbHdheXMgY3JlYXRlcyBhbiBpbnZhbGlkCisgICAg
Ly8gVVJMLiBJbnN0ZWFkIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVyIHRvIHRyZWF0IGFsbCBp
bnZhbGlkIGJhc2UgVVJMcworICAgIC8vIHRoZSBzYW1lIHdheSB3ZSB0cmVhdGUgbnVsbCBhbmQg
ZW1wdHkgYmFzZSBVUkxzLgorICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUpOworICAgIFVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRp
dmUsIGNvbnN0IFRleHRFbmNvZGluZyYpOworCisgICAgU3RyaW5nIHN0cmlwcGVkRm9yVXNlQXNS
ZWZlcnJlcigpIGNvbnN0OworCisgICAgLy8gRklYTUU6IFRoZSBhYm92ZSBmdW5jdGlvbnMgc2hv
dWxkIGJlIGhhcm1vbml6ZWQgc28gdGhhdCBwYXNzaW5nIGEKKyAgICAvLyBiYXNlIG9mIG51bGwg
b3IgdGhlIGVtcHR5IHN0cmluZyBnaXZlcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlCisgICAgLy8g
c3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgorCisgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHku
IEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhlcgorICAgIC8v
IHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0cyBhcmUgaW1t
dXRhYmxlLCB0aGVyZSdzCisgICAgLy8gbm8gb3RoZXIgcmVhc29uIHRvIGV2ZXIgcHJlZmVyIGNv
cHkoKSBvdmVyIHBsYWluIG9sZCBhc3NpZ25tZW50LgorICAgIFVSTCBjb3B5KCkgY29uc3Q7CisK
KyAgICBib29sIGlzTnVsbCgpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OworICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHlvdSBjYW4g
c2V0IHRoZSBob3N0IGFuZCBwb3J0IGZvciB0aGUgVVJMLgorICAgIC8vIE5vbi1oaWVyYXJjaGlj
YWwgVVJMcyBkb24ndCBoYXZlIGEgaG9zdCBhbmQgcG9ydC4KKyAgICBib29sIGNhblNldEhvc3RP
clBvcnQoKSBjb25zdCB7IHJldHVybiBpc0hpZXJhcmNoaWNhbCgpOyB9CisKKyAgICBib29sIGNh
blNldFBhdGhuYW1lKCkgY29uc3QgeyByZXR1cm4gaXNIaWVyYXJjaGljYWwoKTsgfQorICAgIGJv
b2wgaXNIaWVyYXJjaGljYWwoKSBjb25zdDsKKworICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKworICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CisKKyAgICBTdHJp
bmcgcHJvdG9jb2woKSBjb25zdDsKKyAgICBTdHJpbmcgaG9zdCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIHNob3J0IHBvcnQoKSBjb25zdDsKKyAgICBib29sIGhhc1BvcnQoKSBjb25zdDsKKyAgICBT
dHJpbmcgdXNlcigpIGNvbnN0OworICAgIFN0cmluZyBwYXNzKCkgY29uc3Q7CisgICAgU3RyaW5n
IHBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgbGFzdFBhdGhDb21wb25lbnQoKSBjb25zdDsKKyAg
ICBTdHJpbmcgcXVlcnkoKSBjb25zdDsKKyAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNGcmFnbWVudElkZW50aWZpZXIoKSBjb25zdDsKKworICAgIFN0
cmluZyBiYXNlQXNTdHJpbmcoKSBjb25zdDsKKworICAgIFN0cmluZyBmaWxlU3lzdGVtUGF0aCgp
IGNvbnN0OworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IFVSTCdzIHByb3Rv
Y29sIGlzIHRoZSBzYW1lIGFzIHRoZSBudWxsLQorICAgIC8vIHRlcm1pbmF0ZWQgQVNDSUkgYXJn
dW1lbnQuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGxvd2VyLWNhc2UuCisgICAgYm9vbCBwcm90b2Nv
bElzKGNvbnN0IGNoYXIqKSBjb25zdDsKKyAgICBib29sIHByb3RvY29sSXNEYXRhKCkgY29uc3Qg
eyByZXR1cm4gcHJvdG9jb2xJcygiZGF0YSIpOyB9CisgICAgYm9vbCBwcm90b2NvbElzSW5IVFRQ
RmFtaWx5KCkgY29uc3Q7CisgICAgYm9vbCBpc0xvY2FsRmlsZSgpIGNvbnN0OworICAgIGJvb2wg
aXNCbGFua1VSTCgpIGNvbnN0OworCisgICAgYm9vbCBzZXRQcm90b2NvbChjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldEhvc3QoY29uc3QgU3RyaW5nJik7CisKKyAgICB2b2lkIHJlbW92ZVBv
cnQoKTsKKyAgICB2b2lkIHNldFBvcnQodW5zaWduZWQgc2hvcnQpOworCisgICAgLy8gSW5wdXQg
aXMgbGlrZSAiZm9vLmNvbSIgb3IgImZvby5jb206ODAwMCIuCisgICAgdm9pZCBzZXRIb3N0QW5k
UG9ydChjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0VXNlcihjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldFBhc3MoY29uc3QgU3RyaW5nJik7CisKKyAgICAvLyBJZiB5b3UgcGFzcyBh
biBlbXB0eSBwYXRoIGZvciBIVFRQIG9yIEhUVFBTIFVSTHMsIHRoZSByZXN1bHRpbmcgcGF0aAor
ICAgIC8vIHdpbGwgYmUgIi8iLgorICAgIHZvaWQgc2V0UGF0aChjb25zdCBTdHJpbmcmKTsKKwor
ICAgIC8vIFRoZSBxdWVyeSBtYXkgYmVnaW4gd2l0aCBhIHF1ZXN0aW9uIG1hcmssIG9yLCBpZiBu
b3QsIG9uZSB3aWxsIGJlIGFkZGVkCisgICAgLy8gZm9yIHlvdS4gU2V0dGluZyB0aGUgcXVlcnkg
dG8gdGhlIGVtcHR5IHN0cmluZyB3aWxsIGxlYXZlIGEgIj8iIGluIHRoZQorICAgIC8vIFVSTCAo
d2l0aCBub3RoaW5nIGFmdGVyIGl0KS4gVG8gY2xlYXIgdGhlIHF1ZXJ5LCBwYXNzIGEgbnVsbCBz
dHJpbmcuCisgICAgdm9pZCBzZXRRdWVyeShjb25zdCBTdHJpbmcmKTsKKworICAgIHZvaWQgc2V0
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgcmVtb3ZlRnJhZ21l
bnRJZGVudGlmaWVyKCk7CisKKyAgICBmcmllbmQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworCisgICAgZnJpZW5kIGJvb2wgcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworCisgICAg
dW5zaWduZWQgaG9zdFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgaG9zdEVuZCgpIGNvbnN0
OworCisgICAgdW5zaWduZWQgcGF0aFN0YXJ0KCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGF0aEVu
ZCgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0OworCisg
ICAgb3BlcmF0b3IgY29uc3QgU3RyaW5nJigpIGNvbnN0IHsgcmV0dXJuIHN0cmluZygpOyB9CisK
KyNpZiBVU0UoQ0YpCisgICAgVVJMKENGVVJMUmVmKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBV
UkwoTlNVUkwqKTsKKyAgICBvcGVyYXRvciBOU1VSTCooKSBjb25zdDsKKyNlbmRpZgorI2lmZGVm
IF9fT0JKQ19fCisgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gc3RyaW5n
KCk7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oUVQpCisgICAgVVJMKGNvbnN0IFFVcmwmKTsK
KyAgICBvcGVyYXRvciBRVXJsKCkgY29uc3Q7CisjZW5kaWYKKworICAgIGNvbnN0IFVSTCogaW5u
ZXJVUkwoKSBjb25zdCB7IHJldHVybiAwOyB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgdm9pZCBw
cmludCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBib29sIGlzU2FmZVRvU2VuZFRvQW5vdGhlclRo
cmVhZCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHN0
YXRpYyBib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiwgY29uc3QgY2hhciopOworICAgIHZv
aWQgaW5pdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5jb2RpbmcmKTsK
KyAgICB2b2lkIGNvcHlUb0J1ZmZlcihWZWN0b3I8Y2hhciwgNTEyPiYgYnVmZmVyKSBjb25zdDsK
KworICAgIC8vIFBhcnNlcyB0aGUgZ2l2ZW4gVVJMLiBUaGUgb3JpZ2luYWxTdHJpbmcgcGFyYW1l
dGVyIGFsbG93cyBmb3IgYW4KKyAgICAvLyBvcHRpbWl6YXRpb246IFdoZW4gdGhlIHNvdXJjZSBp
cyB0aGUgc2FtZSBhcyB0aGUgZml4ZWQtdXAgc3RyaW5nLAorICAgIC8vIGl0IHdpbGwgdXNlIHRo
ZSBwYXNzZWQtaW4gc3RyaW5nIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBvbmUuCisgICAg
dm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHBhcnNlKGNvbnN0IGNoYXIqIHVy
bCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0cmluZyA9IDApOworCisgICAgYm9vbCBoYXNQYXRo
KCkgY29uc3Q7CisKKyAgICBTdHJpbmcgbV9zdHJpbmc7CisgICAgYm9vbCBtX2lzVmFsaWQgOiAx
OworICAgIGJvb2wgbV9wcm90b2NvbElzSW5IVFRQRmFtaWx5IDogMTsKKworICAgIGludCBtX3Nj
aGVtZUVuZDsKKyAgICBpbnQgbV91c2VyU3RhcnQ7CisgICAgaW50IG1fdXNlckVuZDsKKyAgICBp
bnQgbV9wYXNzd29yZEVuZDsKKyAgICBpbnQgbV9ob3N0RW5kOworICAgIGludCBtX3BvcnRFbmQ7
CisgICAgaW50IG1fcGF0aEFmdGVyTGFzdFNsYXNoOworICAgIGludCBtX3BhdGhFbmQ7CisgICAg
aW50IG1fcXVlcnlFbmQ7CisgICAgaW50IG1fZnJhZ21lbnRFbmQ7Cit9OworCitib29sIG9wZXJh
dG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiwgY29uc3Qg
VVJMJik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Citib29sIG9w
ZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CisKK2Jvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKK2Jvb2wgcHJvdG9jb2xIb3N0QW5kUG9y
dEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOworCitjb25zdCBVUkwmIGJsYW5rVVJM
KCk7CisKKy8vIEZ1bmN0aW9ucyB0byBkbyBVUkwgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLgorLy8g
VGhlc2UgYXJlIG9wZXJhdGlvbnMgdGhhdCBhcmVuJ3QgZmFzdGVyIG9uIGEgcGFyc2VkIFVSTC4K
Ky8vIFRoZXNlIGFyZSBhbHNvIGRpZmZlcmVudCBmcm9tIHRoZSBVUkwgZnVuY3Rpb25zIGluIHRo
YXQgdGhleSBkb24ndCByZXF1aXJlIHRoZSBzdHJpbmcgdG8gYmUgYSB2YWxpZCBhbmQgcGFyc2Fi
bGUgVVJMLgorLy8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGph
dmFzY3JpcHQgVVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgVVJM
LgorCitib29sIHByb3RvY29sSXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGNoYXIqIHByb3Rv
Y29sKTsKK2Jvb2wgcHJvdG9jb2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOworCiti
b29sIGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCh1bnNpZ25lZCBzaG9ydCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKK2Jvb2wgcG9ydEFsbG93ZWQoY29uc3QgVVJMJik7IC8vIEJsYWNr
bGlzdCBwb3J0cyB0aGF0IHNob3VsZCBuZXZlciBiZSB1c2VkIGZvciBXZWIgcmVzb3VyY2VzLgor
Citib29sIGlzVmFsaWRQcm90b2NvbChjb25zdCBTdHJpbmcmKTsKKworU3RyaW5nIG1pbWVUeXBl
RnJvbURhdGFVUkwoY29uc3QgU3RyaW5nJiB1cmwpOworU3RyaW5nIG1pbWVUeXBlRnJvbVVSTChj
b25zdCBVUkwmKTsKKworLy8gVW5lc2NhcGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgVVJMIGVz
Y2FwaW5nIHJ1bGVzLCBnaXZlbiBhbiBvcHRpb25hbAorLy8gZW5jb2RpbmcgKGRlZmF1bHRpbmcg
dG8gVVRGLTggb3RoZXJ3aXNlKS4gREFOR0VSOiBJZiB0aGUgVVJMIGhhcyAiJTAwIgorLy8gaW4g
aXQsIHRoZSByZXN1bHRpbmcgc3RyaW5nIHdpbGwgaGF2ZSBlbWJlZGRlZCBudWxsIGNoYXJhY3Rl
cnMhCitTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOworU3Ry
aW5nIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0RW5j
b2RpbmcmKTsKKworU3RyaW5nIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3Ry
aW5nJik7CisKKy8vIElubGluZXMuCisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYi5zdHJpbmco
KTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmlu
ZyYgYikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSA9PSBiOworfQorCitpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBh
ID09IGIuc3RyaW5nKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBh
LCBjb25zdCBVUkwmIGIpCit7CisgICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYi5zdHJpbmcoKTsK
K30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmIGEsIGNvbnN0IFN0cmluZyYg
YikKK3sKKyAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIHJldHVybiBhICE9
IGIuc3RyaW5nKCk7Cit9CisKKy8vIElubGluZSB2ZXJzaW9ucyBvZiBzb21lIG5vbi1Hb29nbGVV
UkwgZnVuY3Rpb25zIHNvIHdlIGNhbiBnZXQgaW5saW5pbmcKKy8vIHdpdGhvdXQgaGF2aW5nIHRv
IGhhdmUgYSBsb3Qgb2YgdWdseSBpZmRlZnMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uCisKK2lu
bGluZSBib29sIFVSTDo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdHJpbmcuaXNO
dWxsKCk7Cit9CisKK2lubGluZSBib29sIFVSTDo6aXNFbXB0eSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgVVJMOjppc1ZhbGlkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1ZhbGlkOworfQorCitpbmxpbmUgYm9vbCBVUkw6Omhh
c1BhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQgIT0gbV9wb3J0RW5kOworfQor
CitpbmxpbmUgYm9vbCBVUkw6Omhhc1BvcnQoKSBjb25zdAoreworICAgIHJldHVybiBtX2hvc3RF
bmQgPCBtX3BvcnRFbmQ7Cit9CisKK2lubGluZSBib29sIFVSTDo6cHJvdG9jb2xJc0luSFRUUEZh
bWlseSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvdG9jb2xJc0luSFRUUEZhbWlseTsKK30K
KworaW5saW5lIHVuc2lnbmVkIFVSTDo6aG9zdFN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
KG1fcGFzc3dvcmRFbmQgPT0gbV91c2VyU3RhcnQpID8gbV9wYXNzd29yZEVuZCA6IG1fcGFzc3dv
cmRFbmQgKyAxOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpob3N0RW5kKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9ob3N0RW5kOworfQorCitpbmxpbmUgdW5zaWduZWQgVVJMOjpwYXRoU3Rh
cnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BvcnRFbmQ7Cit9CisKK2lubGluZSB1bnNpZ25l
ZCBVUkw6OnBhdGhFbmQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhdGhFbmQ7Cit9CisKK2lu
bGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFzaCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K25hbWVzcGFjZSBXVEYgeworCisgICAgLy8gVVJMSGFzaCBpcyB0aGUgZGVmYXVsdCBoYXNoIGZv
ciBTdHJpbmcKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cisg
ICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6VVJMPiB7CisgICAgICAg
IHR5cGVkZWYgV2ViQ29yZTo6VVJMSGFzaCBIYXNoOworICAgIH07CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCisjZW5kaWYgLy8gVVJMX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTEhhc2guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTEhhc2guaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZWRjNGYzODUzMDVjM2IyYmVjZDI5NmY2OWVlNTJkMDhhODJmOTY2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMSGFzaC5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBVUkxIYXNoX2gKKyNkZWZpbmUgVVJMSGFzaF9oCisKKyNpbmNsdWRlICJVUkwuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIHN0cnVjdCBVUkxIYXNoIHsKKyAgICAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVVJMJiBrZXkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBrZXkuc3RyaW5nKCkuaW1wbCgpLT5oYXNoKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2g6OmVxdWFsKGEuc3RyaW5nKCks
IGIuc3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKKyAgICB9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCisgICAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
SGFzaFRyYWl0czxXZWJDb3JlOjpVUkw+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFdlYkNvcmU6
OlVSTD4geyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFVSTEhhc2hfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVmlzaXRlZExpbmtTdHJhdGVneS5oCmluZGV4IDQ2
OWY5ZGI1ODQ1NWI3OGNjZmJlZmFlMmVhMmI3MmJlYTFjZmEzMGMuLjkyZDRmN2M2M2IzZjEwZjM3
ZTUxNzMzN2RhYWUwY2U0YjMwYTY4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Zpc2l0ZWRMaW5rU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9W
aXNpdGVkTGlua1N0cmF0ZWd5LmgKQEAgLTMwLDExICszMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHR5cGVkZWYgdWludDY0X3QgTGlua0hhc2g7CiBjbGFzcyBQYWdlOwotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIAogY2xhc3MgVmlzaXRlZExpbmtTdHJhdGVneSB7CiBwdWJsaWM6Ci0g
ICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFBhZ2UqLCBMaW5rSGFzaCwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBhZGRWaXNpdGVkTGluayhQYWdlKiwgTGlua0hhc2gpID0gMDsKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggYzMwOTY0OWQ5YzgyMjkwNDQxNjE3
MTgyZTQzYmYxODRmYTVmZWU4OC4uMjM4MmRiODgzMDc1ZTkwYjE5NjU1ZjI4YmE1Nzc3ZTFmNjI2
ODU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Bc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0yNiwxMSArMjYsMTEg
QEAKICNpbmNsdWRlICJBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCIKICNpbmNsdWRlICJET01GaWxl
U3lzdGVtQmFzZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lz
dGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmEKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpv
cGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBs
b25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6b3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcm
IGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlw
ZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIGludCBwbGF5ZXJJZCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0oQmxhY2tCZXJyeTo6
UGxhdGZvcm06OndlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFzZVBhdGgsIHN0b3JhZ2VJ
ZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3Rl
bTo6VHlwZT4odHlwZSksIHNpemUsIGNyZWF0ZSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKGNhbGxiYWNrcywgcm9vdFVSTCksIHBsYXllcklkKTsKIH0KQEAgLTc4LDY3ICs3
OCw2NyBAQCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojp+QXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeSgpCiB7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6bW92ZShjb25z
dCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRl
c3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIG5l
dyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9p
ZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgs
IGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29w
eShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxh
dGZvcm1GaWxlU3lzdGVtLT5jb3B5KGZpbGVTeXN0ZW1VUkxUb1BhdGgoc291cmNlUGF0aCksIGZp
bGVTeXN0ZW1VUkxUb1BhdGgoZGVzdGluYXRpb25QYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpyZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5yZW1vdmUoZmls
ZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJl
bW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+
cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1G
aWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgbmV3IFBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcykpOwogfQogCi12b2lkIEFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgS1VSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGUoY29uc3QgVVJM
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShm
aWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MpKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogewogICAgIG1fcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3Rvcnko
ZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBuZXcgUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZmlsZUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3BsYXRmb3JtRmlsZVN5c3RlbS0+
ZmlsZUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcgUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbV9wbGF0Zm9ybUZp
bGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBuZXcg
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBB
c3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBt
X3BsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lzdGVtVVJMVG9QYXRoKHBh
dGgpLCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzKSk7CiB9
CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyKEFzeW5jRmls
ZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0
IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVdyaXRlcjo6Y3JlYXRlV3Jp
dGVyKG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgp
LCBuZXcgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQp
KTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZp
bGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBtX3Bs
YXRmb3JtRmlsZVN5c3RlbS0+Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGZpbGVT
eXN0ZW1VUkxUb1BhdGgocGF0aCksIG5ldyBQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyhjYWxsYmFja3MpKTsKIH0KIAotU3RyaW5nIEFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZp
bGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmZpbGVTeXN0ZW1VUkxUb1BhdGgoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAg
RmlsZVN5c3RlbVR5cGUgdHlwZTsKICAgICBTdHJpbmcgZnVsbFBhdGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0FzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeS5oCmluZGV4IDhmMzZlZDJlZWQ2OTdhZWRiZjY2ZDkxYTdmNzVmMTQ2OTAxNTIz
NGUuLmY0Y2ZjMzQ3MjQzMTBmNjkxMTI5N2RhYzI4NWYwNjM0N2I5MzhhY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeS5oCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW1U
eXBlLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtV2ViRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KQEAgLTQ4LDI0ICs0OCwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeShwbGF0Zm9ybUZpbGVTeXN0ZW0pKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbShjb25zdCBLVVJMJiByb290VVJMLCBj
b25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBG
aWxlU3lzdGVtVHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxheWVySWQs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oY29uc3QgVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRo
LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSwgbG9uZyBs
b25nIHNpemUsIGJvb2wgY3JlYXRlLCBpbnQgcGxheWVySWQsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7CiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eSgpOwotICAgIHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25z
dCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVS
ZWN1cnNpdmVseShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlRmlsZShjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGly
ZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0
IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0
b3J5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQq
LCBjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29u
c3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNv
bnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShj
b25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgVVJM
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGRpcmVj
dG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3QgVVJMJiBwYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwogCiBwcm90ZWN0ZWQ6CiAgICAgQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeShQYXNzT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtPiBwbGF0Zm9ybUZpbGVTeXN0ZW0pOwotICAgIHN0YXRpYyBTdHJpbmcgZmlsZVN5
c3RlbVVSTFRvUGF0aChjb25zdCBLVVJMJik7CisgICAgc3RhdGljIFN0cmluZyBmaWxlU3lzdGVt
VVJMVG9QYXRoKGNvbnN0IFVSTCYpOwogCiAgICAgT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtPiBtX3BsYXRmb3JtRmlsZVN5c3RlbTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5jcHAKaW5kZXggOTkxMGE2OGE3NmQzOTc0MGZjNWQ4NDAw
NmViNDFjMDgzOTg3YzI3MC4uZWJjNzQ5MmJmZTMwOWZlNTY1ZWMyYTEwODkzMGI0ZDEwMjVlZmZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmNwcApAQCAtMjAsNyAr
MjAsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oIgogCiAj
aW5jbHVkZSAiQ3JlZGVudGlhbC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1ZGUgIlByb3RlY3Rp
b25TcGFjZS5oIgogCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVk
ZWYgSGFzaE1hcDxQYWdlQ2xpZW50QmxhY2tCZXJyeSosIGJvb2w+IFBhZ2VWaXNpYmlsaXR5TWFw
OwogCiBzdHJ1Y3QgQ2hhbGxlbmdlSW5mbyB7Ci0gICAgQ2hhbGxlbmdlSW5mbyhjb25zdCBLVVJM
JiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKKyAgICBDaGFsbGVu
Z2VJbmZvKGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IENyZWRlbnRp
YWwmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudCosIFBhZ2VDbGllbnRCbGFja0JlcnJ5
Kik7CiAKLSAgICBLVVJMIHVybDsKKyAgICBVUkwgdXJsOwogICAgIFByb3RlY3Rpb25TcGFjZSBz
cGFjZTsKICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWw7CiAgICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDbGllbnQqIGF1dGhDbGllbnQ7CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBDaGFsbGVu
Z2VJbmZvIHsKICAgICBib29sIGJsb2NrZWQ7CiB9OwogCi1DaGFsbGVuZ2VJbmZvOjpDaGFsbGVu
Z2VJbmZvKGNvbnN0IEtVUkwmIGFVcmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYVNwYWNlLCBj
b25zdCBDcmVkZW50aWFsJiBhQ3JlZGVudGlhbCwKK0NoYWxsZW5nZUluZm86OkNoYWxsZW5nZUlu
Zm8oY29uc3QgVVJMJiBhVXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGFTcGFjZSwgY29uc3Qg
Q3JlZGVudGlhbCYgYUNyZWRlbnRpYWwsCiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGll
bnQqIGFuQXV0aENsaWVudCwgUGFnZUNsaWVudEJsYWNrQmVycnkqIGFQYWdlQ2xpZW50KQogICAg
IDogdXJsKGFVcmwpCiAgICAgLCBzcGFjZShhU3BhY2UpCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9p
ZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OnBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQ
YWdlQ2xpZW50QmxhY2tCZXJyeSoKICAgICBkLT5yZXN1bWVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjbGllbnQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6YXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6OmF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNw
YWNlLAogICAgIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2xpZW50KiBhdXRoQ2xpZW50LCBQYWdlQ2xpZW50QmxhY2tCZXJyeSogcGFnZUNsaWVu
dCkKIHsKICAgICBCTEFDS0JFUlJZX0FTU0VSVChhdXRoQ2xpZW50KTsKQEAgLTE5Niw3ICsxOTYs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlcjo6Y2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpbwogICAgICAgICBkLT5zdGFydEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKG5leHQpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFu
YWdlcjo6bm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIHNwYWNlLAordm9pZCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI6Om5vdGlm
eUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHNwYWNl
LAogICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBkLT5tX2FjdGl2ZUNoYWxsZW5nZSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9B
dXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIuaAppbmRleCAzYWZjOGU1MjUzYWE0NzBkYzc2
ZWZjMWE0OTg4M2VmNmFhN2M1NDA3Li44NGQ3OTQ0ZWNjZTNmMmFhOGFmOWViNjFmM2ZlOGFmMzA4
ZDE5MTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyLmgKQEAgLTI4LDcg
KzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZU1hbmFnZXJQcml2YXRlOwogY2xhc3MgQ3JlZGVudGlhbDsKLWNsYXNzIEtVUkw7CitjbGFz
cyBVUkw7CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAKIGVudW0gQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VSZXN1bHQgewpAQCAtMzgsNyArMzgsNyBAQCBlbnVtIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUmVzdWx0IHsKIAogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQgewogcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBj
b25zdCBDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VS
ZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKSA9IDA7CiB9OwogCiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIgOiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlRocmVhZFVuc2FmZVNpbmdsZXRvbjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXI+IHsK
QEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZURlbGV0ZWQoUGFnZUNsaWVu
dEJsYWNrQmVycnkqKTsKICAgICB2b2lkIHBhZ2VWaXNpYmlsaXR5Q2hhbmdlZChQYWdlQ2xpZW50
QmxhY2tCZXJyeSosIGJvb2wgdmlzaWJsZSk7CiAKLSAgICB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNvbnN0IEtVUkwmLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBDcmVkZW50
aWFsJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDbGllbnQqLCBQYWdlQ2xpZW50QmxhY2tCZXJy
eSopOworICAgIHZvaWQgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgVVJMJiwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiwgY29uc3QgQ3JlZGVudGlhbCYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ2xpZW50KiwgUGFnZUNsaWVudEJsYWNrQmVycnkqKTsKICAgICB2b2lkIGNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2xpZW50Kik7Ci0gICAg
dm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7
CisgICAgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRp
YWwmKTsKIAogcHJpdmF0ZToKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZU1hbmFnZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFn
ZXIuY3BwCmluZGV4IDE3MjI2NTU0M2QzMGUwMzUzYjFmNzMyMmI2ZWQ2ZTVlZmM3OTlkODUuLjll
YmY3NzQ2ODI0NGYxNDA3OWQ2ZDNjNDMzYWRlZDRmMmRjN2RjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTI0
LDcgKzEyNCw3IEBAIHN0YXRpYyBib29sIHNob3VsZElnbm9yZVNjaGVtZShjb25zdCBTdHJpbmcm
IHByb3RvY29sKQogICAgIHJldHVybiBwcm90b2NvbCA9PSAiZmlsZSIgfHwgcHJvdG9jb2wgPT0g
ImxvY2FsIjsKIH0KIAotdm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyIGZpbHRlcikKK3ZvaWQgQ29v
a2llTWFuYWdlcjo6c2V0Q29va2llcyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgQ29va2llRmlsdGVyIGZpbHRlcikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0
IGJlZW4gc3luYy1lZCBhdCB0aGlzIHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICgh
bV9zeW5jZWRXaXRoRGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNDAsNyArMTQwLDcg
QEAgdm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGUKICAgICB9CiB9CiAKLXZvaWQgQ29va2llTWFuYWdl
cjo6c2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29r
aWVzLCBDb29raWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpzZXRDb29raWVz
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29va2llRmls
dGVyIGZpbHRlcikKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1l
ZCBhdCB0aGlzIHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRo
RGF0YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBDb29r
aWVNYW5hZ2VyOjpzZXRDb29raWVzKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGNvb2tpZXMsIEMKICAgICB9CiB9CiAKLVN0cmluZyBDb29raWVNYW5hZ2VyOjpnZXRDb29r
aWUoY29uc3QgS1VSTCYgdXJsLCBDb29raWVGaWx0ZXIgZmlsdGVyKSBjb25zdAorU3RyaW5nIENv
b2tpZU1hbmFnZXI6OmdldENvb2tpZShjb25zdCBVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRl
cikgY29uc3QKIHsKICAgICAvLyBJZiB0aGUgZGF0YWJhc2UgaGFzbid0IGJlZW4gc3luYy1lZCBh
dCB0aGlzIHBvaW50LCBmb3JjZSBhIHN5bmMgbG9hZAogICAgIGlmICghbV9zeW5jZWRXaXRoRGF0
YWJhc2UgJiYgIW1fcHJpdmF0ZU1vZGUpCkBAIC0yMjMsNyArMjIzLDcgQEAgU3RyaW5nIENvb2tp
ZU1hbmFnZXI6OmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2llcygpCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQ
dHI8UGFyc2VkQ29va2llPiA+ICZzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVS
TCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3
Q29va2llcyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKIHsKICAgICAv
LyBGb3JjZSBhIHN5bmMgbG9hZCBvZiB0aGUgZGF0YWJhc2UKICAgICBpZiAoIW1fc3luY2VkV2l0
aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2RlKQpAQCAtNTg5LDEzICs1ODksMTMgQEAgQ29va2ll
TWFwKiBDb29raWVNYW5hZ2VyOjpmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90
b2NvbE1hcCwgY29uc3QgUGEKICAgICByZXR1cm4gY3VyTWFwOwogfQogCi12b2lkIENvb2tpZU1h
bmFnZXI6OnJlbW92ZUNvb2tpZVdpdGhOYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQordm9pZCBDb29raWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIC8vIERpc3Bh
dGNoIHRoZSBtZXNzYWdlIGJlY2F1c2UgdGhlIGRhdGFiYXNlIGNvb2tpZXMgYXJlIG5vdCBsb2Fk
ZWQgaW4gbWVtb3J5IHlldC4KICAgICBpZiAoIW1fc3luY2VkV2l0aERhdGFiYXNlICYmICFtX3By
aXZhdGVNb2RlKSB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZCAoV2ViQ29yZTo6Q29va2llTWFuYWdl
cjo6KkZ1bmN0aW9uVHlwZSkoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgICAgICB0
eXBlZGVmIHZvaWQgKFdlYkNvcmU6OkNvb2tpZU1hbmFnZXI6OipGdW5jdGlvblR5cGUpKGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6d2Vi
S2l0VGhyZWFkTWVzc2FnZUNsaWVudCgpLT5kaXNwYXRjaE1lc3NhZ2UoCi0gICAgICAgICAgICBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Y3JlYXRlTWV0aG9kQ2FsbE1lc3NhZ2U8RnVuY3Rpb25UeXBl
LCBDb29raWVNYW5hZ2VyLCBjb25zdCBLVVJMLCBjb25zdCBTdHJpbmc+KAorICAgICAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OmNyZWF0ZU1ldGhvZENhbGxNZXNzYWdlPEZ1bmN0aW9uVHlw
ZSwgQ29va2llTWFuYWdlciwgY29uc3QgVVJMLCBjb25zdCBTdHJpbmc+KAogICAgICAgICAgICAg
ICAgICZDb29raWVNYW5hZ2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZSwgdGhpcywgdXJsLCBjb29r
aWVOYW1lKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5oCmluZGV4IDBkNjkwZmM2OTFjMjc1
MjdhYzYyODUyMTAzMjU3ZDUxMzcwYWQ5NTEuLmRhZjAxYmIwMjU0NTNmZjQ2MjczZDgzMTMyZmJk
YjBjYWYwYjYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQ29va2llTWFuYWdlci5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIAogZW51bSBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHsKICAgICBSZW1vdmVGcm9t
QmFja2luZ1N0b3JlLApAQCAtNzAsMTEgKzcwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGNhbkxv
Y2FsQWNjZXNzQWxsQ29va2llcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkRHVtcEFsbENvb2tp
ZXM7IH0KICAgICB2b2lkIHNldENhbkxvY2FsQWNjZXNzQWxsQ29va2llcyhib29sIGVuYWJsZWQp
IHsgbV9zaG91bGREdW1wQWxsQ29va2llcyA9IGVuYWJsZWQ7IH0KIAotICAgIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0
aEh0dHBPbmx5Q29va2llcyk7Ci0gICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IEtVUkwmLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgY29va2llcywgQ29va2llRmlsdGVyKTsKKyAgICB2b2lkIHNldENv
b2tpZXMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgQ29va2llRmlsdGVyID0gV2l0
aEh0dHBPbmx5Q29va2llcyk7CisgICAgdm9pZCBzZXRDb29raWVzKGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBjb29raWVzLCBDb29raWVGaWx0ZXIpOwogCiAgICAgdm9pZCByZW1v
dmVBbGxDb29raWVzKEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kpOwotICAgIHZvaWQgcmVtb3Zl
Q29va2llV2l0aE5hbWUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7Cisg
ICAgdm9pZCByZW1vdmVDb29raWVXaXRoTmFtZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpOwogCiAgICAgdW5zaWduZWQgc2hvcnQgY29va2llc0NvdW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3VudDsgfQogCkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UHJpdmF0ZU1vZGUoYm9vbCk7CiAKICAgICBTdHJpbmcgZ2VuZXJhdGVIdG1sRnJhZ21lbnRG
b3JDb29raWVzKCk7Ci0gICAgU3RyaW5nIGdldENvb2tpZShjb25zdCBLVVJMJiByZXF1ZXN0VVJM
LCBDb29raWVGaWx0ZXIpIGNvbnN0OworICAgIFN0cmluZyBnZXRDb29raWUoY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyBhbGwgY29v
a2llcyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBVUkwgYXMgcmF3IGNv
b2tpZXMuCi0gICAgdm9pZCBnZXRSYXdDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2ll
PiA+JiBzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29va2llRmlsdGVy
ID0gV2l0aEh0dHBPbmx5Q29va2llcykgY29uc3Q7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFZl
Y3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2llcywgY29uc3QgVVJMJiBy
ZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAog
cHJpdmF0ZToKICAgICBmcmllbmQgQ29va2llTWFuYWdlciYgY29va2llTWFuYWdlcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuY3Bw
CmluZGV4IGVhOTBjYThlZjJiYWJiZmFhNGU0YjMxNzQ5YzMzZjJlY2E4MjI3Y2EuLjE3MDBmNDk5
YzlhYzhmMWJlMjVkZGU3Nzg2ZjhhNDI4ZmZjOThkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzTGlnaHR3ZWlnaHRTcGFjZShVQ2hhciBjKQogICAgIHJl
dHVybiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKTsKIH0KIAotQ29va2llUGFyc2VyOjpDb29raWVQ
YXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENvb2tpZVVSTCkKK0Nvb2tpZVBhcnNlcjo6Q29va2ll
UGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENvb2tpZVVSTCkKICAgICA6IG1fZGVmYXVsdENvb2tp
ZVVSTChkZWZhdWx0Q29va2llVVJMKQogewogICAgIG1fZGVmYXVsdENvb2tpZUhvc3QgPSBkZWZh
dWx0Q29va2llVVJMLmhvc3QoKTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPFBhcnNl
ZENvb2tpZT4gQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tp
ZSwgdW5zaQogICAgICAgICBjYXNlICdQJzoKICAgICAgICAgY2FzZSAncCcgOiB7CiAgICAgICAg
ICAgICBpZiAobGVuZ3RoID49IDQgJiYgKChjb29raWUuZmluZCgiYXRoIiwgdG9rZW5TdGFydFN2
ZyArIDEsIGZhbHNlKSAtIHRva2VuU3RhcnRTdmcpID09IDEpKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0aGUgcGF0aCB0byBiZSBkZWNvZGVkIHRvIG1hdGNoIHRob3NlIHJldHVybmVk
IGZyb20gS1VSTDo6cGF0aCgpLgorICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdGhlIHBhdGgg
dG8gYmUgZGVjb2RlZCB0byBtYXRjaCB0aG9zZSByZXR1cm5lZCBmcm9tIFVSTDo6cGF0aCgpLgog
ICAgICAgICAgICAgICAgIC8vIFRoZSBwYXRoIGF0dHJpYnV0ZSBtYXkgb3IgbWF5IG5vdCBpbmNs
dWRlIHBlcmNlbnQtZW5jb2RlZCBjaGFyYWN0ZXJzLiBGb3J0dW5hdGVseQogICAgICAgICAgICAg
ICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwZXJjZW50LWVuY29kZWQgY2hhcmFjdGVycywgZGVjb2Rp
bmcgdGhlIHVybCBpcyBhIG5vLW9wLgogICAgICAgICAgICAgICAgIHJlcy0+c2V0UGF0aChkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXMocGFyc2VkVmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5oCmluZGV4IGM5NDRmODYzMDE4NTAx
NDdmNGVlZDVmZjUyNGNiNmQyYmQ5ZDA2N2MuLjJiMGI1MmFlMDc4YTZmNGVkYmMxNTk4OGQzOGI2
ZjRhMjI2ODBlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvQ29va2llUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBDb29raWVQYXJzZXJf
aAogI2RlZmluZSBDb29raWVQYXJzZXJfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
IlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0z
OSw3ICszOSw3IEBAIGNsYXNzIFBhcnNlZENvb2tpZTsKIAogY2xhc3MgQ29va2llUGFyc2VyIHsK
IHB1YmxpYzoKLSAgICBDb29raWVQYXJzZXIoY29uc3QgS1VSTCYgZGVmYXVsdENvb2tpZVVSTCk7
CisgICAgQ29va2llUGFyc2VyKGNvbnN0IFVSTCYgZGVmYXVsdENvb2tpZVVSTCk7CiAgICAgfkNv
b2tpZVBhcnNlcigpOwogCiAgICAgLy8gUGFyc2VzIGEgc2VxdWVuY2Ugb2YgIkNvb2tpZToiIGhl
YWRlciBhbmQgcmV0dXJuIHRoZSBwYXJzZWQgY29va2llcy4KQEAgLTUxLDcgKzUxLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBGSVhNRTogY3VyVGltZSwgc3RhcnQsIGVuZCBwYXJhbWV0ZXJzIHNob3Vs
ZCBiZSByZW1vdmVkLiBBbmQgdGhpcyBtZXRob2QgY2FuIGJlIHB1YmxpYy4KICAgICBQYXNzUmVm
UHRyPFBhcnNlZENvb2tpZT4gcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBjdXJUaW1lKTsKIAotICAgIEtVUkwg
bV9kZWZhdWx0Q29va2llVVJMOworICAgIFVSTCBtX2RlZmF1bHRDb29raWVVUkw7CiAgICAgU3Ry
aW5nIG1fZGVmYXVsdENvb2tpZUhvc3Q7CiAgICAgYm9vbCBtX2RlZmF1bHREb21haW5Jc0lQQWRk
cmVzczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0RPTUZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCmluZGV4IGMyYTJiMjQwODA0YThh
MDIyZmI5MGQzYTM3NzI3MTI3NTQ1ZjRlMzcuLmNmZmI5ZmFkOTUzYTY4Mzk2YWNlYWM3ZWZjODIy
NGJmZjA3NzNiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvRE9NRmlsZVN5c3RlbUJsYWNrQmVycnkuY3BwCkBAIC0yOSw3ICsyOSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3Jl
YXRlRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAorVVJMIERPTUZp
bGVTeXN0ZW1CYXNlOjpjcmVhdGVGaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKGZ1bGxQYXRoKSk7
CiAKQEAgLTM4LDcgKzM4LDcgQEAgS1VSTCBET01GaWxlU3lzdGVtQmFzZTo6Y3JlYXRlRmlsZVN5
c3RlbVVSTChjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRl
eHQtPmNvbXBsZXRlVVJMKG1fZmlsZXN5c3RlbVJvb3RVUkwuc3RyaW5nKCkgKyBlbmNvZGVXaXRo
VVJMRXNjYXBlU2VxdWVuY2VzKGZ1bGxQYXRoKSk7CiB9CiAKLWJvb2wgRE9NRmlsZVN5c3RlbUJh
c2U6OmNyYWNrRmlsZVN5c3RlbVVSTChjb25zdCBLVVJMJiB1cmwsIEZpbGVTeXN0ZW1UeXBlJiB0
eXBlLCBTdHJpbmcmIGZpbGVQYXRoKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y3JhY2tGaWxl
U3lzdGVtVVJMKGNvbnN0IFVSTCYgdXJsLCBGaWxlU3lzdGVtVHlwZSYgdHlwZSwgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICBpZiAoIXVybC5wcm90b2NvbElzKCJmaWxlc3lzdGVtIikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTU0LDcgKzU0LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Y3JhY2tGaWxlU3lzdGVtVVJMKGNvbnN0IEtVUkwmIHVybCwgRmlsZVN5c3RlbVR5cGUmIHR5
cGUKIAogICAgICAgICBmaWxlUGF0aCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0
aCgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBLVVJMIG9yaWdpblVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybC5wYXRoKCkpOworICAgICAgICBVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsLnBhdGgoKSk7CiAgICAgICAgIFN0cmluZyBwYXRoID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVu
Y2VzKG9yaWdpblVSTC5wYXRoKCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0
aFswXSAhPSAnLycpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZpbGVTeXN0ZW1C
bGFja0JlcnJ5LmNwcAppbmRleCBiZThkMWM4ZDliN2MxM2M4N2JlNjBkNTc3ZmNmN2Q0Y2VhM2Fj
NTkyLi5kNGQxMmVhNTA4YjQwNDhkY2M2MWJiNDgyNDdkYmMzMTk2YzA5MjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmlsZVN5c3RlbUJsYWNr
QmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxG
aWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJGaWxl
U3lzdGVtQ2FsbGJhY2suaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbVR5cGUuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDbGllbnRCbGFja0JlcnJ5Lmgi
CiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIHZv
aWQgb3BlbkZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBiYXNlUGEKICAgICBpZiAodHlwZSA9PSBGaWxlU3lzdGVtVHlwZUlzb2xhdGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGNvbnRleHQtPnVybCgpOworICAgIFVS
TCB1cmwgPSBjb250ZXh0LT51cmwoKTsKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmll
cigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgdXJsLnNl
dFF1ZXJ5KFN0cmluZygpKTsKQEAgLTg1LDcgKzg1LDcgQEAgc3RhdGljIHZvaWQgb3BlbkZpbGVT
eXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBiYXNl
UGEKICAgICBidWlsZGVyLmFwcGVuZCgiZmlsZXN5c3RlbToiKTsKICAgICBidWlsZGVyLmFwcGVu
ZCh1cmwuc3RyaW5nKCkpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGZpbGVTeXN0ZW1UeXBlU3RyaW5n
KHR5cGUpKTsKLSAgICBLVVJMIHJvb3RVUkwgPSBjb250ZXh0LT5jb21wbGV0ZVVSTChidWlsZGVy
LnRvU3RyaW5nKCkpOworICAgIFVSTCByb290VVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwoYnVp
bGRlci50b1N0cmluZygpKTsKICAgICBBU1NFUlQocm9vdFVSTC5pc1ZhbGlkKCkpOwogCiAgICAg
Ly8gVE9ETzogQXNrIHVzZXIgZm9yIGZpbGUgc3lzdGVtIHBlcm1pc3Npb24uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0JlcnJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhZ2VDbGllbnRCbGFja0Jl
cnJ5LmgKaW5kZXggZDQwZWY4YmQ2NDFlOTNmYzc2NWMxNGNjNjg0OWZmYTcxM2YwNjJjNi4uNzM0
ZGQxNWQ3NWZiMTc2YjkxMDM3NjQ2YTE4MGJkYWFiOTg3YjY1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYWdlQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFnZUNsaWVudEJsYWNrQmVycnku
aApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNsaWVudDsK
IGNsYXNzIENyZWRlbnRpYWw7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2hvd0Fs
ZXJ0RGlhbG9nKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZUNsaWVudDo6QWxlcnRUeXBlKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1Zpc2libGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAw
OwogICAgIHZpcnR1YWwgU2F2ZUNyZWRlbnRpYWxUeXBlIG5vdGlmeVNob3VsZFNhdmVDcmVkZW50
aWFsKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Byb3h5Q3JlZGVudGlhbChjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJikgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcAppbmRleCBjZmE3NDM0Y2RhMzI2
YTQ5ODgzZTk2MTBmNmVkYTE1ZDU1YTY4YzJlLi44YzE4NjczNjkyMTEzNDVlY2Y0YjU0OGRhZTVi
OTVjNDY4MWVmMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BhcnNlZENvb2tpZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXJzZWRDb29raWUuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiUGFyc2Vk
Q29va2llLmgiCiAKICNpbmNsdWRlICJDb29raWVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlIDxjdXJs
L2N1cmwuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tpZS5oCmluZGV4IGJjYzc5MTY4YmRm
ZmJiMGNmNGM4ZmIyYTU0OTc5ZDBiYTk2MTgwY2YuLjU2YzUyOWFhMTk4NzlkNmNkM2UzOGFlNjdj
OGQ3ZTA3ZGViMTE0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUGFyc2VkQ29va2llLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QYXJzZWRDb29raWUuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBTdHJpbmc7CiB9CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIC8vIFRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIGNvb2tpZSBpbnRlcm5hbGx5CiAvLyBJdCBjYW4gZWl0aGVyIGJl
IGNyZWF0ZWQgYnkgdGhlIENvb2tpZVBhcnNlciB3aGljaCB3aWxsIHRoZW4gZmlsbCBpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9h
cmRCbGFja0JlcnJ5LmNwcAppbmRleCAwYjUzZTFlNWJlMWQzNzAzMDgxODg2MjcwMTAxOTBjNzhj
ZjQxZjY1Li5mMjVlZTRiMTQyNThjNzBkZDM4YTg3ZTY1OTAwMzZjMGQ2ZDU0NThiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9h
cmRCbGFja0JlcnJ5LmNwcApAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpjbGVhcigpCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaXBib2FyZDo6Y2xlYXJDbGlw
Ym9hcmQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqLCBLVVJMIGNv
bnN0JiwgU3RyaW5nIGNvbnN0JikKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiwg
VVJMIGNvbnN0JiwgU3RyaW5nIGNvbnN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IDFhZmI1ZjU5NTdh
Njc4NjQzOGEwYTZjOWQ1NDg4OTcyYjJmOTEzMzcuLjM0MDQ0OWYwZGM2NDQ4OTgyYjg2MTY5Yzk4
OWVlMGUxOWM5YjlhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
LmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNpbmNsdWRl
ICJBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1XZWJGaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBBc3luY0Zp
bGVXcml0ZXJDbGllbnQ7CiAKIGNsYXNzIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
OiBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW1DYWxsYmFja3Mgewog
cHVibGljOgotICAgIFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IEtVUkwmIHJvb3RVUkwg
PSBLVVJMKCkpCisgICAgUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgY29uc3QgVVJMJiByb290VVJM
ID0gVVJMKCkpCiAgICAgICAgIDogbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICAgICAsIG1f
d3JpdGVyQ2xpZW50KDApCiAgICAgICAgICwgbV9yb290VVJMKHJvb3RVUkwpCkBAIC03MCw3ICs3
MCw3IEBAIHByb3RlY3RlZDoKICAgICBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fd3JpdGVyQ2xp
ZW50OwogCiBwcml2YXRlOgotICAgIEtVUkwgbV9yb290VVJMOworICAgIFVSTCBtX3Jvb3RVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9TU0xLZXlHZW5lcmF0b3JCbGFja0JlcnJ5
LmNwcAppbmRleCAxYTMxOTg3MWI2ZTA2NmIwMDVlY2Q2Nzc5N2UzZGNhMmMzZTI1MGVkLi5lMWQz
Mzk5MTA4NzYzYjM1OTRkM2VhNWFmMzQ2YTlkZjI2NTBjYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1NTTEtleUdlbmVyYXRvckJsYWNrQmVycnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvU1NMS2V5R2VuZXJhdG9y
QmxhY2tCZXJyeS5jcHAKQEAgLTE5LDcgKzE5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTMxLDcgKzMxLDcgQEAg
dm9pZCBnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCwgU3RyaW5nIGNvbnN0JiwgS1VSTCBjb25zdCYpCitTdHJpbmcgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBTdHJpbmcgY29uc3QmLCBVUkwgY29uc3Qm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJBc3luY0ZpbGVT
eXN0ZW1CbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKaW5kZXggZGEzOTExNTcyMzFjMTZi
NWNjMGIwMDc5ZGQzMWQ1YTk3ODJlZGE4YS4uNTVmYTlmN2EzM2QzZjA4MGQzNDI2MjMwYzdkYmE4
OTM5NTQ3NzM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuY3Bw
CkBAIC02OSw2NyArNjksNjcgQEAgdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpkZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGkKICAgICBXZWJGaWxl
U3lzdGVtOjpkZWxldGVGaWxlU3lzdGVtKHdlYktpdFRocmVhZE1lc3NhZ2VDbGllbnQoKSwgYmFz
ZVBhdGgsIHN0b3JhZ2VJZGVudGlmaWVyLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBl
Pih0eXBlKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5Ojptb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0
IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
bW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
cGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVz
dGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+bW92ZShmaWxlU3lzdGVtVVJMVG9Q
YXRoKHNvdXJjZVBhdGgpLCBmaWxlU3lzdGVtVVJMVG9QYXRoKGRlc3RpbmF0aW9uUGF0aCksIGNh
bGxiYWNrcyk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y29w
eU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0
aW5hdGlvblBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxs
YmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNvcHlPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmls
ZVN5c3RlbSwgY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0
aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsK
ICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNvcHkoZmlsZVN5c3RlbVVSTFRvUGF0aChzb3VyY2VQ
YXRoKSwgZmlsZVN5c3RlbVVSTFRvUGF0aChkZXN0aW5hdGlvblBhdGgpLCBjYWxsYmFja3MpOwog
fQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZU9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxl
U3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpyZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5
c3RlbS0+cmVtb3ZlKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAK
LXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRm
b3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxh
Y2tCZXJyeTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRo
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewog
ICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkoZmlsZVN5c3RlbVVSTFRv
UGF0aChwYXRoKSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQg
V29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0
ZW0sIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MqIGNhbGxiYWNrcykKIHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShm
aWxlU3lzdGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3Qg
S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZp
bGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykK
IHsKICAgICBwbGF0Zm9ybUZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoZmlsZVN5c3RlbVVSTFRvUGF0
aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBL
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MqIGNhbGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFj
a3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoZmlsZVN5c3Rl
bVVSTFRvUGF0aChwYXRoKSwgZXhjbHVzaXZlLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtl
ckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29u
c3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqIGNh
bGxiYWNrcykKK3ZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZmlsZUV4aXN0
c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5m
aWxlRXhpc3RzKGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAKLXZv
aWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBwbGF0Zm9ybUZp
bGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVy
cnk6OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxh
dGZvcm1GaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgY29u
c3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyogY2Fs
bGJhY2tzKQogewogICAgIHBsYXRmb3JtRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShmaWxlU3lz
dGVtVVJMVG9QYXRoKHBhdGgpLCBjYWxsYmFja3MpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmls
ZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVdyaXRlck9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxhdGZvcm1GaWxlU3lzdGVtLCBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcyogY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFj
a0JlcnJ5OjpjcmVhdGVXcml0ZXJPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFdlYkZpbGVTeXN0ZW0qIHBsYXRmb3JtRmlsZVN5c3RlbSwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyogY2FsbGJhY2tzKQogewogICAgIFdlYkZpbGVXcml0ZXI6OmNyZWF0ZVdyaXRlcihwbGF0Zm9y
bUZpbGVTeXN0ZW0sIGZpbGVTeXN0ZW1VUkxUb1BhdGgocGF0aCksIGNhbGxiYWNrcyk7CiB9CiAK
LXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxl
QW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBwbGF0Zm9ybUZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBs
YXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFz
eW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0
YU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogcGxh
dGZvcm1GaWxlU3lzdGVtLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgcGxhdGZvcm1GaWxlU3lzdGVtLT5j
cmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoZmlsZVN5c3RlbVVSTFRvUGF0aChwYXRo
KSwgY2FsbGJhY2tzKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5
OjpvcGVuRmlsZVN5c3RlbShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgS1VSTCYg
cm9vdFVSTCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBGaWxlU3lzdGVtVHlwZSB0eXBlLCBsb25nIGxv
bmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5G
aWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBVUkwmIHJvb3RVUkws
IGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5n
JiBzdG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUs
IGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJh
Y2tzKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChj
cmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om9wZW5G
aWxlU3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUs
IHNpemUsIGNyZWF0ZSwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KGNhbGxiYWNrcywgY29udGV4dCwgbW9kZSwgcm9vdFVSTCkpKTsKQEAgLTE0MSw2MiArMTQxLDYy
IEBAIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6ZGVsZXRlRmlsZVN5c3Rl
bShXb3JrZXJHbG9iYWxTY29wZSogY29udGV4CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpkZWxldGVG
aWxlU3lzdGVtT25NYWluVGhyZWFkLCBiYXNlUGF0aCwgc3RvcmFnZUlkZW50aWZpZXIsIHR5cGUs
IG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIGNv
bnRleHQsIG1vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJy
eTo6bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmUoY29uc3QgVVJMJiBzb3VyY2VQ
YXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFza1RvTWFpblRocmVhZChjcmVh
dGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6Om1vdmVPbk1h
aW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lzdGVtLmdldCgpLCBzb3VyY2VQYXRoLCBkZXN0aW5h
dGlvblBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxs
YmFja3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OmNvcHkoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYg
ZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5Ojpjb3B5KGNvbnN0
IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0Jl
cnJ5Ojpjb3B5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgc291cmNl
UGF0aCwgZGVzdGluYXRpb25QYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZW1vdmUoY29uc3QgS1VSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgV29ya2Vy
QXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVtb3ZlKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0VGFz
a1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3RlbUJs
YWNrQmVycnk6OnJlbW92ZU9uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCks
IHBhdGgsIG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFj
a3MsIG1fY29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBw
b3N0VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5
c3RlbUJsYWNrQmVycnk6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkLCBtX3BsYXRmb3Jt
RmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29y
a2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6cmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lk
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OnJlYWRNZXRhZGF0YShjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQsIG1fcGxhdGZv
cm1GaWxlU3lzdGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBX
b3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVG
aWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgcG9zdFRhc2tUb01haW5UaHJlYWQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVh
dGVGaWxlT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhj
bHVzaXZlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJh
Y2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2
b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZURpcmVjdG9yeShjb25z
dCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlRGlyZWN0
b3J5T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgZXhjbHVz
aXZlLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tz
LCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1C
bGFja0JlcnJ5OjpmaWxlRXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OmZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6
ZmlsZUV4aXN0c09uTWFpblRocmVhZCwgbV9wbGF0Zm9ybUZpbGVTeXN0ZW0uZ2V0KCksIHBhdGgs
IG5ldyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyhjYWxsYmFja3MsIG1f
Y29udGV4dCwgbV9tb2RlKSkpOwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNr
QmVycnk6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIHBvc3RUYXNrVG9N
YWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5n
ZXQoKSwgcGF0aCwgbmV3IFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNh
bGxiYWNrcywgbV9jb250ZXh0LCBtX21vZGUpKSk7CiB9CiAKLXZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQmxhY2tCZXJyeTo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBwb3N0
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlckFzeW5jRmlsZVN5c3Rl
bUJsYWNrQmVycnk6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQsIG1fcGxhdGZvcm1GaWxlU3lz
dGVtLmdldCgpLCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3MoY2FsbGJhY2tzLCBtX2NvbnRleHQsIG1fbW9kZSkpKTsKIH0KIAotdm9pZCBXb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50
KiBjbGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6
OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5bmNG
aWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlV3JpdGVyT25NYWluVGhyZWFkLCBtX3BsYXRmb3Jt
RmlsZVN5c3RlbS5nZXQoKSwgY2xpZW50LCBwYXRoLCBuZXcgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MoY2FsbGJhY2tzLCBjbGllbnQsIG1fY29udGV4dCwgbV9tb2RlKSkp
OwogfQogCi12b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnk6OmNyZWF0ZVNuYXBz
aG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1CbGFja0JlcnJ5OjpjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJM
JiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ewogICAgIHBvc3RUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyQXN5
bmNGaWxlU3lzdGVtQmxhY2tCZXJyeTo6Y3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRh
T25NYWluVGhyZWFkLCBtX3BsYXRmb3JtRmlsZVN5c3RlbS5nZXQoKSwgcGF0aCwgbmV3IFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNhbGxiYWNrcywgbV9jb250ZXh0LCBt
X21vZGUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L1dvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCmluZGV4
IDE2NTFhNWNlOWEwNTY5YjM0ZmEyNWE2MDE0MjhlNzk5OTQxNTJkYWQuLjk0MWY3NTdkMDdkYjcx
MzUwYzFmYjBjYjk4N2U0ZGQxMGU2ZjA4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyQXN5bmNGaWxlU3lzdGVt
QmxhY2tCZXJyeS5oCkBAIC00MSwzOSArNDEsMzkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFdvcmtlckFzeW5jRmlsZVN5c3RlbUJsYWNrQmVycnkoY29udGV4dCwgbW9k
ZSwgcGxhdGZvcm1GaWxlU3lzdGVtKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgb3BlbkZp
bGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBLVVJMJiByb290VVJMLCBjb25zdCBT
dHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZUlkZW50aWZpZXIsIEZpbGVTeXN0ZW1UeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oV29ya2VyR2xvYmFsU2NvcGUqLCBjb25zdCBVUkwmIHJvb3RVUkwsIGNv
bnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBz
dG9yYWdlSWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNy
ZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKICAgICBzdGF0aWMg
dm9pZCBkZWxldGVGaWxlU3lzdGVtKFdvcmtlckdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBt
b2RlLCBjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBGaWxlU3lzdGVtVHlwZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKICAgICB2aXJ0dWFsIH5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5KCk7CiAgICAg
dmlydHVhbCBib29sIHdhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCk7Ci0gICAgdmlydHVhbCB2
b2lkIG1vdmUoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25Q
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9u
UGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtV
UkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmly
dHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0
IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgS1VSTCYg
cGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0
b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBtb3Zl
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNvcHko
Y29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFk
TWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAg
dmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwg
dm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNuYXBzaG90RmlsZUFu
ZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CiAKIHByaXZhdGU6CiAgICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQmxhY2tC
ZXJyeShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSwgUGFzc093blB0cjxC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbT4gcGxhdGZvcm1GaWxlU3lzdGVtKTsK
ICAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
SWRlbnRpZmllciwgRmlsZVN5c3RlbVR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKICAgICBzdGF0aWMgdm9p
ZCBkZWxldGVGaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBG
aWxlU3lzdGVtVHlwZSwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsK
LSAgICBzdGF0aWMgdm9pZCBtb3ZlT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHNvdXJj
ZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3Rl
bSosIGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1
cnNpdmVseU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0
YU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJG
aWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlclBsYXRm
b3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGly
ZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOwotICAgIHN0YXRpYyB2
b2lkIGZpbGVFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2Vy
UGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJl
Y3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyUGxh
dGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKLSAgICBzdGF0aWMgdm9pZCByZWFkRGly
ZWN0b3J5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlV3JpdGVy
T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6V2ViRmlsZVN5c3RlbSosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IEtVUkwmIHBh
dGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7Ci0gICAgc3RhdGlj
IHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSos
IGNvbnN0IEtVUkwmIHBhdGgsIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Kik7CisgICAgc3RhdGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBVUkwmIHNv
dXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxlU3lz
dGVtKiwgY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uUGF0aCwg
V29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9y
bUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vy
c2l2ZWx5T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJl
YWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXZWJGaWxl
U3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3Rv
cnlPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29y
a2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxlRXhpc3RzT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVSTCYgcGF0aCwgV29ya2VyUGxhdGZv
cm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlF
eGlzdHNPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlP
bk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgVVJMJiBwYXRoLCBXb3JrZXJQbGF0Zm9ybUFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZVdyaXRlck9uTWFpblRo
cmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OldlYkZp
bGVTeXN0ZW0qLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmIHBhdGgsIFdvcmtl
clBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgc3RhdGljIHZvaWQgY3Jl
YXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFVS
TCYgcGF0aCwgV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAg
IFdvcmtlckdsb2JhbFNjb3BlKiBtX2NvbnRleHQ7CiAgICAgU3RyaW5nIG1fbW9kZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvV29ya2VyUGxhdGZvcm1B
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvV29ya2VyUGxhdGZvcm1Bc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MuaAppbmRleCBiMzUw
ODJmNWFlNTk2YTEyOWE2NTE3ZTVkMWE3YjcyNTJmMTU0YzI4Li5kZjExZDdiOTVjOTZkOTRjOTFm
MzFjZDA3NmRjMTE3MGJhOWEzMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1dvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Xb3JrZXJQbGF0Zm9ybUFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcy5oCkBAIC01NCwxMSArNTQsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50Kj4gOgogCiB2b2lkIHBvc3RUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4pOwogCi1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogCiBjbGFz
cyBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrczogcHVibGljIFBsYXRmb3Jt
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzLCBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGU6Ok9ic2Vy
dmVyIHsKIHB1YmxpYzoKLSAgICBXb3JrZXJQbGF0Zm9ybUFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cyhQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJH
bG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBLVVJMJiByb290
VVJMID0gS1VSTCgpKQorICAgIFdvcmtlclBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
KFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckds
b2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFVSTCYgcm9vdFVS
TCA9IFVSTCgpKQogICAgICAgICA6IFBsYXRmb3JtQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzKGNh
bGxiYWNrcywgcm9vdFVSTCkKICAgICAgICAgLCBXb3JrZXJHbG9iYWxTY29wZTo6T2JzZXJ2ZXIo
Y29udGV4dCkKICAgICAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9LVVJMQ0ZOZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWI3
Y2ZlOWM4YWI5MTY3NmUxOGUyODAyMDQyZjEwYTU0NjU1ODdhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tV
UkxDRk5ldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIktVUkwuaCIKLQotI2luY2x1
ZGUgIkNGVVJMRXh0cmFzLmgiCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VSTChDRlVSTFJlZiB1cmwpCi17Ci0gICAgaWYg
KCF1cmwpIHsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KLSAg
ICBDU3RyaW5nIHVybEJ5dGVzOwotICAgIGdldFVSTEJ5dGVzKHVybCwgdXJsQnl0ZXMpOwotICAg
IHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7Ci19Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQotUmV0YWlu
UHRyPENGVVJMUmVmPiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6
IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBpbnZhbGlkIFVSTHM/Ci0gICAgLy8gQ3VycmVu
dGx5IGl0IHRocm93cyBhd2F5IHRoZSBoaWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRo
ZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAotICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCi0g
ICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7Ci0gICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7Ci0gICAg
cmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgS1VSTDo6ZmlsZVN5c3RlbVBhdGgoKSBjb25zdAotewot
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwgPSBjcmVhdGVDRlVSTCgpOwotICAgIGlmICgh
Y2ZVUkwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotI2lmIFBMQVRGT1JNKFdJTikKLSAg
ICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlOwotI2Vs
c2UKLSAgICBDRlVSTFBhdGhTdHlsZSBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsK
LSNlbmRpZgotICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKGNmVVJM
LmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
VVJMQ0YuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMmVmMjg5ZDIzYTdlN2Y3NTViYzg5MGE5M2VhOTY5ZDU5
MDk2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxD
Ri5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJVUkwuaCIKKworI2luY2x1ZGUgIkNGVVJMRXh0cmFzLmgiCisj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZVUkwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
VVJMOjpVUkwoQ0ZVUkxSZWYgdXJsKQoreworICAgIGlmICghdXJsKSB7CisgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXaHkgaXMg
aXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CisgICAgQ1N0cmluZyB1cmxCeXRlczsKKyAg
ICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsKKyAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkp
OworfQorCisjaWYgIVBMQVRGT1JNKE1BQykKK1JldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVh
dGVDRlVSTCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJu
IGZvciBpbnZhbGlkIFVSTHM/CisgICAgLy8gQ3VycmVudGx5IGl0IHRocm93cyBhd2F5IHRoZSBo
aWdoIGJ5dGVzIG9mIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgaW4gdGhhdCBjYXNlLAor
ICAgIC8vIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCisgICAgVVJMQ2hhckJ1ZmZlciBidWZmZXI7
CisgICAgY29weVRvQnVmZmVyKGJ1ZmZlcik7CisgICAgcmV0dXJuIGNyZWF0ZUNGVVJMRnJvbUJ1
ZmZlcihidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKK30KKyNlbmRpZgorCitTdHJpbmcg
VVJMOjpmaWxlU3lzdGVtUGF0aCgpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBj
ZlVSTCA9IGNyZWF0ZUNGVVJMKCk7CisgICAgaWYgKCFjZlVSTCkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisjaWYgUExBVEZPUk0oV0lOKQorICAgIENGVVJMUGF0aFN0eWxlIHBhdGhTdHls
ZSA9IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGU7CisjZWxzZQorICAgIENGVVJMUGF0aFN0eWxlIHBh
dGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgoY2ZVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNG
aWxlU3lzdGVtRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVT
eXN0ZW1FZmwuY3BwCmluZGV4IGE2NjA4YmJiNDAyNDA1Y2VmMzI0MWMwZjY4NWYyNjdlZGM2ZDA2
NWEuLjgwYTUzNjFlODQ4MTJhM2E5Yzk5YzUxYTUyZTBhZDMwYzczNDZkY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3luY0ZpbGVTeXN0ZW1FZmwuY3BwCkBAIC02
Myw2MiArNjMsNjIgQEAgQXN5bmNGaWxlU3lzdGVtRWZsOjp+QXN5bmNGaWxlU3lzdGVtRWZsKCkK
IHsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6Om1vdmUoY29uc3QgS1VSTCYsIGNvbnN0
IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5j
RmlsZVN5c3RlbUVmbDo6bW92ZShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNvcHkoY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3Rl
bUVmbDo6Y29weShjb25zdCBVUkwmLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1FZmw6OnJlbW92ZShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJlbW92ZShjb25zdCBV
UkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OnJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2
b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgVVJMJiwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpyZWFkTWV0YWRhdGEoY29uc3QgS1VS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxl
U3lzdGVtRWZsOjpyZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5
bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmLCBib29sLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6Y3Jl
YXRlRmlsZShjb25zdCBVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBLVVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1FZmw6OmNyZWF0ZURp
cmVjdG9yeShjb25zdCBVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OmZpbGVFeGlzdHMoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpmaWxlRXhpc3RzKGNvbnN0IFVS
TCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6ZGlyZWN0b3J5RXhpc3Rz
KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pCit2b2lk
IEFzeW5jRmlsZVN5c3RlbUVmbDo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFVSTCYsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUVmbDo6cmVhZERpcmVjdG9yeShjb25zdCBLVVJMJiwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0
ZW1FZmw6OnJlYWREaXJlY3RvcnkoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNG
aWxlU3lzdGVtRWZsOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3Qg
S1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNG
aWxlU3lzdGVtRWZsOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiwgY29uc3Qg
VVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVTbmFwc2hv
dEZpbGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPikKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtRWZsOjpjcmVhdGVTbmFwc2hvdEZp
bGVBbmRSZWFkTWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvQXN5bmNGaWxlU3lzdGVtRWZsLmgKaW5kZXggMTk5YjdjNGNhOTYy
MzQzY2Y2MGRiOWJhY2JiMTE2ZjMzOTM5MmI2NS4uOTNlNmIzYTc2ZDNiNzBjNDA1NmViMTVhOGU0
MDQ2Y2E3YWNiYWMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Fz
eW5jRmlsZVN5c3RlbUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9Bc3lu
Y0ZpbGVTeXN0ZW1FZmwuaApAQCAtNDAsMTggKzQwLDE4IEBAIHB1YmxpYzoKICAgICBBc3luY0Zp
bGVTeXN0ZW1FZmwoKTsKICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVTeXN0ZW1FZmwoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBtb3ZlKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBL
VVJMJiwgY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHko
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRmlsZShjb25zdCBL
VVJMJiwgYm9vbCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmLCBib29sLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3Rz
KGNvbnN0IEtVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3Rvcnko
Y29uc3QgS1VSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAg
dmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBL
VVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlU25hcHNob3RGaWxlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IEtVUkwmLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBtb3Zl
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0
YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFVSTCYsIGJvb2wsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9y
eShjb25zdCBVUkwmLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0
cyhjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAg
IHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqLCBjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVTbmFwc2hvdEZpbGVBbmRSZWFk
TWV0YWRhdGEoY29uc3QgVVJMJiwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9FcnJvcnNFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0Vycm9yc0VmbC5jcHAKaW5kZXggMjY0OGYxYzJmNmY1NmQ1NDYzOGNhNWQzMWQ1MjI2NDAy
MThhNjgzMS4uZGEyZTIzZDBhZWI3OThkMzY3MTY0ZTFlMDU5NDhiZTVjNDBlYTJlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0Vycm9yc0VmbC5jcHAKQEAgLTkwLDIxICs5MCwyMSBA
QCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRl
eHQsIGNvbnN0IFN0cmluZyYgZXJyb3JNZQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVu
dExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KTsKIAotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50RXJy
b3JHZW5lcmFsLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwo
KSwgZXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblBy
aW50LCBQcmludEVycm9yR2VuZXJhbCwgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+
dXJsKCkgOiBVUkwoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwcmludGVy
Tm90Rm91bmRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAgICBE
b2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpblByaW50LCBQcmludEVycm9yUHJpbnRlck5vdEZvdW5kLCBkb2N1bWVudExvYWRlciA/
IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwoKSwgQVNDSUlMaXRlcmFsKCJQcmludGVyIG5v
dCBmb3VuZCIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQ
cmludEVycm9yUHJpbnRlck5vdEZvdW5kLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVy
LT51cmwoKSA6IFVSTCgpLCBBU0NJSUxpdGVyYWwoIlByaW50ZXIgbm90IGZvdW5kIikpOwogfQog
CiBSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1ByaW50KGNvbnN0IFByaW50Q29udGV4
dCogcHJpbnRDb250ZXh0KQogewogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9
IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKIAotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFByaW50RXJyb3JJbnZhbGlk
UGFnZVJhbmdlLCBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwo
KSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHBhZ2UgcmFuZ2UiKSk7CisgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW5QcmludCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsIGRv
Y3VtZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogVVJMKCksIEFTQ0lJTGl0ZXJh
bCgiSW52YWxpZCBwYWdlIHJhbmdlIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3Bw
CmluZGV4IDFmOWQwZjU3OWYxMzZkMGE5YTJhZDFjM2YxZGJiNzEzYzg2OGI1YTguLjZjMmI3MmMz
MmZiZmZhN2FjODEwOWRhMjQ3NDM0MjZiYzZlMTk3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRlRQRGlyZWN0b3J5RG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3Lmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBnZXRT
dXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgS1VSTCYpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKQogewogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMGViNTEzNjNjZGViNjQ5MDBiYjc3YTMxN2U0
YmVkNGY3YjkzNWU5NS4uOTczZGJjMjA0NjBlOWE0NzFkNmU3NzI2YmRjYTA1YjAxMTBiZmQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKQEAgLTk2LDcgKzk2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElt
YWdlQnVmZmVyOwogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgUm91bmRlZFJlY3Q7Ci0g
ICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0
M0Q7CiAgICAgY2xhc3MgVGV4dFJ1bjsKICAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
QEAgLTQwMCw3ICs0MDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgdHJh
bnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyB0cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsgfQogICAgICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5
KTsKIAotICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0IEludFJl
Y3QmKTsKIAogICAgICAgICB2b2lkIGNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsK
ICAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggNGE1MTU1
NDIwMzk5NjA5ODFjMTg0OTkxMmE0OTFjZmFhM2I0MDc5MC4uM2JjOGIyOWZiZjE4NWJlMWM3OWM1
YjczZWE1OWU2NWVlNzg0OTVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoKIAogc3Rh
dGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5n
aW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdl
dFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTsKIAotc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSog
YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYsIE1l
ZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCA9IDApOworc3RhdGljIE1lZGlhUGxheWVyRmFjdG9y
eSogYmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGNv
bnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiwg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gMCk7CiBzdGF0aWMgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBuZXh0TWVkaWFFbmdpbmUoTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KTsKIAogZW51
bSBSZXF1ZXJ5RW5naW5lT3B0aW9ucyB7IERvTm90UmVzZXRFbmdpbmVzLCBSZXNldEVuZ2luZXMg
fTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb2RlY3Mo
KQogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKLXN0YXRpYyBNZWRpYVBsYXllckZhY3RvcnkqIGJl
c3RNZWRpYUVuZ2luZUZvclR5cGVBbmRDb2RlY3MoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCwg
TWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50KQorc3RhdGljIE1lZGlhUGxheWVyRmFjdG9yeSog
YmVzdE1lZGlhRW5naW5lRm9yVHlwZUFuZENvZGVjcyhjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgY29kZWNzLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgVVJMJiB1cmws
IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIHsKICAgICBpZiAodHlwZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMzU5LDcgKzM1OSw3IEBAIE1lZGlhUGxheWVyOjp+TWVk
aWFQbGF5ZXIoKQogICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQgPSAwOwogfQogCi1ib29sIE1lZGlh
UGxheWVyOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRU
eXBlLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKK2Jvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0pCiB7CiAgICAgbV9jb250ZW50TUlNRVR5cGUgPSBjb250ZW50VHlwZS50eXBl
KCkubG93ZXIoKTsKICAgICBtX2NvbnRlbnRUeXBlQ29kZWNzID0gY29udGVudFR5cGUucGFyYW1l
dGVyKGNvZGVjcygpKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2Fk
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25zdCBT
dAogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLWJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQo
Y29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2Up
Citib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPEhUTUxN
ZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UpCiB7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291
cmNlOwogICAgIG1fY29udGVudE1JTUVUeXBlID0gIiI7CkBAIC03NDAsNyArNzQwLDcgQEAgYm9v
bCBNZWRpYVBsYXllcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LAogICAgIHJldHVybiBtX3ByaXZhdGUtPmNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCBsZXZlbCwgdHlwZSwgaW50ZXJu
YWxGb3JtYXQsIHByZW11bHRpcGx5QWxwaGEsIGZsaXBZKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IENvbnRlbnRUeXBlJiBj
b250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqIGNsaWVudCkKK01lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShjb25zdCBDb250ZW50VHlwZSYg
Y29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCwgY29u
c3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqIGNsaWVudCkKIHsKICAgICBTdHJpbmcg
dHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5sb3dlcigpOwogICAgIC8vIFRoZSBjb2RlY3Mgc3Ry
aW5nIGlzIG5vdCBsb3dlci1jYXNlZCBiZWNhdXNlIE1QNCB2YWx1ZXMgYXJlIGNhc2Ugc2Vuc2l0
aXZlCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjprZXlFcnJvcihjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIE1lZAogICAgICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50LT5tZWRpYVBsYXllcktleUVycm9yKHRoaXMsIGtleVN5c3Rl
bSwgc2Vzc2lvbklkLCBlcnJvckNvZGUsIHN5c3RlbUNvZGUpOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyOjprZXlNZXNzYWdlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNl
c3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2FnZUxl
bmd0aCwgY29uc3QgS1VSTCYgZGVmYXVsdFVSTCkKK3ZvaWQgTWVkaWFQbGF5ZXI6OmtleU1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBjb25z
dCB1bnNpZ25lZCBjaGFyKiBtZXNzYWdlLCB1bnNpZ25lZCBtZXNzYWdlTGVuZ3RoLCBjb25zdCBV
UkwmIGRlZmF1bHRVUkwpCiB7CiAgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCiAgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPm1lZGlhUGxheWVyS2V5TWVzc2FnZSh0aGlzLCBrZXlTeXN0
ZW0sIHNlc3Npb25JZCwgbWVzc2FnZSwgbWVzc2FnZUxlbmd0aCwgZGVmYXVsdFVSTCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAwMmNj
YzUxOWJjYzM5MzBiZWZiNmU5OWRhZTJjYzk4YTdkZDg4NDAyLi5iM2Q4ODQ0Nzc4NTFlOGM4NDFj
YzliNGNkZGQ4Mzg0NWRhYmFhMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJBdWRpb1Ry
YWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlLmgiCkBAIC0xOTQsNyArMTk0LDcgQEAgcHVibGljOgogICAgIGVudW0gTWVk
aWFLZXlFcnJvckNvZGUgeyBVbmtub3duRXJyb3IgPSAxLCBDbGllbnRFcnJvciwgU2VydmljZUVy
cm9yLCBPdXRwdXRFcnJvciwgSGFyZHdhcmVDaGFuZ2VFcnJvciwgRG9tYWluRXJyb3IgfTsKICAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0
cmluZyYgLyoga2V5U3lzdGVtICovLCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLykgeyB9
CiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5RXJyb3IoTWVkaWFQbGF5ZXIqLCBjb25z
dCBTdHJpbmcmIC8qIGtleVN5c3RlbSAqLywgY29uc3QgU3RyaW5nJiAvKiBzZXNzaW9uSWQgKi8s
IE1lZGlhS2V5RXJyb3JDb2RlLCB1bnNpZ25lZCBzaG9ydCAvKiBzeXN0ZW1Db2RlICovKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29u
c3QgU3RyaW5nJiAvKiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICov
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiAvKiBtZXNzYWdlICovLCB1bnNpZ25lZCAvKiBtZXNzYWdl
TGVuZ3RoICovLCBjb25zdCBLVVJMJiAvKiBkZWZhdWx0VVJMICovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJLZXlNZXNzYWdlKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiAv
KiBrZXlTeXN0ZW0gKi8sIGNvbnN0IFN0cmluZyYgLyogc2Vzc2lvbklkICovLCBjb25zdCB1bnNp
Z25lZCBjaGFyKiAvKiBtZXNzYWdlICovLCB1bnNpZ25lZCAvKiBtZXNzYWdlTGVuZ3RoICovLCBj
b25zdCBVUkwmIC8qIGRlZmF1bHRVUkwgKi8pIHsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBs
YXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYgLyoga2V5U3lzdGVtICov
LCBjb25zdCBTdHJpbmcmIC8qIHNlc3Npb25JZCAqLywgY29uc3QgdW5zaWduZWQgY2hhciogLyog
aW5pdERhdGEgKi8sIHVuc2lnbmVkIC8qIGluaXREYXRhTGVuZ3RoICovKSB7IHJldHVybiBmYWxz
ZTsgfQogI2VuZGlmCiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRp
YSBlbmdpbmUgc3VwcG9ydC4KICAgICBlbnVtIFN1cHBvcnRzVHlwZSB7IElzTm90U3VwcG9ydGVk
LCBJc1N1cHBvcnRlZCwgTWF5QmVTdXBwb3J0ZWQgfTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgQ29udGVudFR5cGUmLCBjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYsIGNvbnN0IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBl
Q2xpZW50Kik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNU
eXBlKGNvbnN0IENvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVS
TCYsIGNvbnN0IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50Kik7CiAgICAgc3RhdGljIHZv
aWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+Jik7CiAgICAgc3RhdGljIGJvb2wg
aXNBdmFpbGFibGUoKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0
b3I8U3RyaW5nPiYpOwpAQCAtMjgwLDkgKzI4MCw5IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSk7CiAKLSAgICBib29sIGxvYWQoY29uc3QgS1VSTCYsIGNvbnN0IENvbnRlbnRU
eXBlJiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pOworICAgIGJvb2wgbG9hZChjb25zdCBVUkwm
LCBjb25zdCBDb250ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKTsKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJiwgUGFzc1JlZlB0cjxI
VE1MTWVkaWFTb3VyY2U+KTsKKyAgICBib29sIGxvYWQoY29uc3QgVVJMJiwgUGFzc1JlZlB0cjxI
VE1MTWVkaWFTb3VyY2U+KTsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogCkBAIC00
NDYsNyArNDQ2LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAg
dm9pZCBrZXlBZGRlZChjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNz
aW9uSWQpOwogICAgIHZvaWQga2V5RXJyb3IoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBNZWRpYVBsYXllckNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUs
IHVuc2lnbmVkIHNob3J0IHN5c3RlbUNvZGUpOwotICAgIHZvaWQga2V5TWVzc2FnZShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVk
IGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IEtVUkwmIGRlZmF1
bHRVUkwpOworICAgIHZvaWQga2V5TWVzc2FnZShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2ln
bmVkIG1lc3NhZ2VMZW5ndGgsIGNvbnN0IFVSTCYgZGVmYXVsdFVSTCk7CiAgICAgYm9vbCBrZXlO
ZWVkZWQoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBj
b25zdCB1bnNpZ25lZCBjaGFyKiBpbml0RGF0YSwgdW5zaWduZWQgaW5pdERhdGFMZW5ndGgpOwog
I2VuZGlmCiAKQEAgLTQ5OSw3ICs0OTksNyBAQCBwcml2YXRlOgogICAgIFRpbWVyPE1lZGlhUGxh
eWVyPiBtX3JlbG9hZFRpbWVyOwogICAgIE93blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U+IG1fcHJpdmF0ZTsKICAgICBNZWRpYVBsYXllckZhY3RvcnkqIG1fY3VycmVudE1lZGlhRW5n
aW5lOwotICAgIEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX2NvbnRl
bnRNSU1FVHlwZTsKICAgICBTdHJpbmcgbV9jb250ZW50VHlwZUNvZGVjczsKICAgICBTdHJpbmcg
bV9rZXlTeXN0ZW07CkBAIC01MjYsOSArNTI2LDkgQEAgcHJpdmF0ZToKIHR5cGVkZWYgUGFzc093
blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+ICgqQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIpKE1lZGlhUGxheWVyKik7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRlZFR5
cGVzKShIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotdHlwZWRlZiBNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJM
JiB1cmwpOwordHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmIHVybCk7CiAjZWxzZQotdHlwZWRlZiBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUpKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IEtVUkwmIHVybCk7Cit0
eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlw
ZSkoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJiB1
cmwpOwogI2VuZGlmCiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNh
Y2hlKShWZWN0b3I8U3RyaW5nPiYpOwogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGUpKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDgxZjViYTA3Zjg4YWRjZDk1YmQwYjg0OTY1ODZiMDg3
M2MxMmZjMTIuLjg3NDI0ODc4ODllMzAxMzMyNWY2NGIwNzExNTUzMzkwYzY3YjZkOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIgogI2luY2x1ZGUgIkluYmFuZFRleHRU
cmFja1ByaXZhdGVDbGllbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNs
dWRlICJTb2Z0TGlua2luZy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggY2FjZGRlM2JkMGQyZjMy
NDdkY2UyOThiNjI0ZjJiM2RjM2FhOGNlMy4uYjk1ZTkwNDlmN2RiYzBlN2EwYWI2NDczYWEyMTVi
ZTYxMjU4OTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAjZWxzZQog
I2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgiCiAjZW5kaWYKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ0FMYXllci5oIgogI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCkBA
IC04MjgsNyArODI4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiBzdXBwb3IKICAgICBzdXBwb3J0ZWRU
eXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0gCiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKK01lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRz
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBVUkwm
KQogewogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29k
ZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgaWYgaXQgc3Vw
cG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUgdW50aWwgcmRhcjovLzg3MjE3MTUg
aXMgZml4ZWQuCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmNyZWF0ZUFz
c2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVCghYXZBc3NldCgpKTsK
IAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsUmVmID0gS1VSTChQYXJzZWRVUkxTdHJpbmcs
IHVybCkuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybFJlZiA9IFVS
TChQYXJzZWRVUkxTdHJpbmcsIHVybCkuY3JlYXRlQ0ZVUkwoKTsKIAogICAgIEFWQ0ZVUkxBc3Nl
dFJlZiBhc3NldFJlZiA9IEFWQ0ZVUkxBc3NldENyZWF0ZVdpdGhVUkxBbmRPcHRpb25zKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHVybFJlZi5nZXQoKSwgMCwgbV9ub3RpZmljYXRpb25RdWV1ZSk7CiAg
ICAgbV9hdkFzc2V0ID0gYWRvcHRDRihhc3NldFJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0YuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCmluZGV4IGRjNjE4
ZDE0ZTZhZDY0NDhjNjI3OTQ1NzI1ODAyMzAyNWU1YmFiZjAuLjg1OGM1MjFhNGQyN2NmZjViYjdj
ZDlkZjNjMmIzMDJlNDgzNjIxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCkBAIC00OCw3ICs0OCw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gRW5naW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRp
YyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0
YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IGI1ZDM5NDllYzhhYTA4YTdkOTg2NTM4NGFhYjNlNDljM2JiMDViNTMuLmFi
NDhkM2Q4YzAzNTdjZjVkNDYwZDBiYjYwZTY5ZjllZjM1NjZhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTk1LDkgKzk1LDkgQEAgcHJpdmF0ZToKICAgICAvLyBlbmdpbmUgc3VwcG9ydAog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRl
KE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNl
dDxTdHJpbmc+JiB0eXBlcyk7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUg
c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNv
bnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJM
Jik7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QV9WMikKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBv
cnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29u
c3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwmKTsK
ICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCmluZGV4IGZiMGM3ODA3YzdhYTU5ODliNjUwOGVkZGQwNzgyZGQwYjBkNDdmNzIuLjRh
YjBkN2RlNDA4M2RlM2I5NjczMTNkZWE5ZDhjMzUzNzQ1ZTRjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQpAQCAtMzcsNyArMzcsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW1wb3J0ICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCAiSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBv
cnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4u
aCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCkBAIC00MjksNyArNDI5LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQogICAgICAgICBbb3B0aW9ucy5nZXQoKSBzZXRPYmplY3Q6aGVhZGVyRmll
bGRzLmdldCgpIGZvcktleTpAIkFWVVJMQXNzZXRIVFRQSGVhZGVyRmllbGRzS2V5Il07CiAjZW5k
aWYKIAotICAgIE5TVVJMICpjb2NvYVVSTCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwor
ICAgIE5TVVJMICpjb2NvYVVSTCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgbV9h
dkFzc2V0ID0gYWRvcHROUyhbW0FWVVJMQXNzZXQgYWxsb2NdIGluaXRXaXRoVVJMOmNvY29hVVJM
IG9wdGlvbnM6b3B0aW9ucy5nZXQoKV0pOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDkwCkBAIC04ODIsNyArODgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1
cHAKICAgICBzdXBwb3J0ZWRUeXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKIH0gCiAKLU1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJp
bmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICBpZiAoIW1pbWVUeXBlQ2FjaGUoKS5jb250
YWlucyh0eXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsK
QEAgLTkwNSw3ICs5MDUsNyBAQCBzdGF0aWMgYm9vbCBrZXlTeXN0ZW1Jc1N1cHBvcnRlZChjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU1lZGlhUGxheWVy
OjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5k
ZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywg
Y29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IEtVUkwmIHVybCkKK01lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZXh0ZW5kZWRT
dXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29u
c3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIEZyb206IDxo
dHRwOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9lbWUtdjAuMWIvZW5jcnlw
dGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5odG1sI2RvbS1jYW5wbGF5dHlwZT4KICAgICAvLyBJ
biBhZGRpdGlvbiB0byB0aGUgc3RlcHMgaW4gdGhlIGN1cnJlbnQgc3BlY2lmaWNhdGlvbiwgdGhp
cyBtZXRob2QgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKQEAgLTExMTcsNyArMTExNyw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzU2luZ2xlU2Vj
dXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9hdkFzc2V0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTCh3a0FWQXNzZXRSZXNvbHZlZFVSTChtX2F2QXNz
ZXQuZ2V0KCkpKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiByZXNvbHZlZE9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKHdrQVZBc3NldFJlc29sdmVkVVJMKG1fYXZBc3Nl
dC5nZXQoKSkpKTsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlcXVlc3RlZE9yaWdpbiA9
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGFzc2V0VVJMKCkpOwogICAgIHJldHVy
biByZXNvbHZlZE9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQocmVxdWVzdGVkT3JpZ2luLmdl
dCgpKTsKIH0KQEAgLTEzMDksNyArMTMwOSw3IEBAIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2Vw
dGlvbiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJlCiAK
ICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGtleVJlcXVlc3RCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKFtrZXlSZXF1ZXN0LmdldCgpIGJ5dGVzXSwgW2tleVJlcXVlc3QuZ2V0KCkgbGVuZ3Ro
XSk7CiAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleVJlcXVlc3RBcnJheSA9IFVpbnQ4QXJyYXk6
OmNyZWF0ZShrZXlSZXF1ZXN0QnVmZmVyLCAwLCBrZXlSZXF1ZXN0QnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOwotICAgIHBsYXllcigpLT5rZXlNZXNzYWdlKGtleVN5c3RlbSwgc2Vzc2lvbklELCBrZXlS
ZXF1ZXN0QXJyYXktPmRhdGEoKSwga2V5UmVxdWVzdEFycmF5LT5ieXRlTGVuZ3RoKCksIEtVUkwo
KSk7CisgICAgcGxheWVyKCktPmtleU1lc3NhZ2Uoa2V5U3lzdGVtLCBzZXNzaW9uSUQsIGtleVJl
cXVlc3RBcnJheS0+ZGF0YSgpLCBrZXlSZXF1ZXN0QXJyYXktPmJ5dGVMZW5ndGgoKSwgVVJMKCkp
OwogCiAgICAgLy8gTW92ZSBvd25lcnNoaXAgb2YgdGhlIEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdS
ZXF1ZXN0ZnJvbSB0aGUga2V5SURUb1JlcXVlc3RNYXAgdG8gdGhlIHNlc3Npb25JRFRvUmVxdWVz
dE1hcDoKICAgICBtX3Nlc3Npb25JRFRvUmVxdWVzdE1hcC5zZXQoc2Vzc2lvbklELCBhdlJlcXVl
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9h
ZGVyLm1tCmluZGV4IDI4N2VlODEyM2NkZTc4ZDViOGNhZmVjYjk1MDZiYzJkYWQ5YmU1MDUuLjc1
NjIxMGYwMTRlNzk1ZWRlZGE1ZDc3ZDM4YWI4ZWY1NTQyNjI5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZS
ZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAg
aWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgcmVxdWVzdFVSTCA9
IFtbbV9hdlJlcXVlc3QuZ2V0KCkgcmVxdWVzdF0gVVJMXTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9
IFtbbV9hdlJlcXVlc3QuZ2V0KCkgcmVxdWVzdF0gVVJMXTsKIAogICAgIENhY2hlZFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChyZXF1ZXN0VVJMKSwgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIERvTm90U25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBE
b05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5D
cmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25z
Rm9yVHlwZSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYWRpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggNmE0
Y2Q3MDBlZjQ4ZTM2YjU4OTcwMDdlNDk4ODg2ODMxYTMyMWE1NS4uMzkxZmZkNGZjOTJlYzkwZjBk
ZTEyODMxYjg1ODYzZWQ3ODgxYTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFkaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhZGllbnRCbGFja0JlcnJ5
LmNwcApAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0Nv
bnRleHRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvR3JhcGhpY3NDb250ZXh0QmxhY2tCZXJyeS5jcHAKaW5kZXggZTJmMWM0MzMzZTA4
ODhjMDA3NGVlZTJhZmE3NGZiYWVlMmM0ODVkMi4uODdlNjY2OWI5NTFkMWMxZjI5ZWIwMzdkOTA5
Mzg2YzY3YzUyMzNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dEJsYWNr
QmVycnkuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgi
CiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKQEAgLTM4Nyw3ICszODcsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6
Y2xpcEJvdW5kcygpIGNvbnN0CiAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoSU5UX01JTiAv
IDIsIElOVF9NSU4gLyAyKSwgSW50U2l6ZShJTlRfTUFYLCBJTlRfTUFYKSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0
JikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0
IEludFJlY3QmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZh
dGVCbGFja0JlcnJ5LmNwcAppbmRleCBlNDFiZTZmOTllNjQ2YTExMzlhOTM0MDVjZmQ4Y2YyYzc4
ODJmZTU4Li45NjA2MTBlOTU2ODIxYTJlODliYTFmMTE2ZDg4ZDcwNTdlMTc5ZWQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxh
eWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmdldFN1cHBvcnRlZFR5cGVzKEhh
c2hTZXQ8V1RGOjpTdHJpbmc+JiB0eXBlcykKICAgICAgICAgdHlwZXMuYWRkKCppKTsKIH0KIAot
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzVHlw
ZShjb25zdCBXVEY6OlN0cmluZyYgdHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvZGVjcywgY29u
c3QgS1VSTCYgdXJsKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZh
dGU6OnN1cHBvcnRzVHlwZShjb25zdCBXVEY6OlN0cmluZyYgdHlwZSwgY29uc3QgV1RGOjpTdHJp
bmcmIGNvZGVjcywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgYm9vbCBpc1JUU1AgPSB1cmwucHJv
dG9jb2xJcygicnRzcCIpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6OmxvYWQoY29uc3QgV1RGOjpTdHJpbmcmIHVybCkKICAgICBXVEY6OlN0cmluZyBtb2Rp
ZmllZFVybCh1cmwpOwogCiAgICAgaWYgKG1vZGlmaWVkVXJsLnN0YXJ0c1dpdGgoImxvY2FsOi8v
IikpIHsKLSAgICAgICAgS1VSTCBrdXJsID0gS1VSTChLVVJMKCksIG1vZGlmaWVkVXJsKTsKKyAg
ICAgICAgVVJMIGt1cmwgPSBVUkwoVVJMKCksIG1vZGlmaWVkVXJsKTsKICAgICAgICAga3VybC5z
ZXRQcm90b2NvbCgiZmlsZSIpOwogICAgICAgICBXVEY6OlN0cmluZyB0ZW1wUGF0aChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U2V0dGluZ3M6Omluc3RhbmNlKCktPmFwcGxpY2F0aW9uTG9jYWxEaXJl
Y3RvcnkoKS5jX3N0cigpKTsKICAgICAgICAgdGVtcFBhdGguYXBwZW5kKGt1cmwucGF0aCgpKTsK
QEAgLTE1Nyw4ICsxNTcsOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBX
VEY6OlN0cmluZyYgdXJsKQogICAgIC8vIGFscmVhZHkgZG9uZSBhIHNlY3VyaXR5IGNoZWNrIG9u
IHRoZSBmaWxlc3lzdGVtOiBVUkwgYXMgcGFydCBvZiB0aGUKICAgICAvLyBtZWRpYSByZXNvdXJj
ZSBzZWxlY3Rpb24gYWxnb3JpdGhtLCB3ZSBzaG91bGQgYmUgT0sgaGVyZS4KICAgICBpZiAobW9k
aWZpZWRVcmwuc3RhcnRzV2l0aCgiZmlsZXN5c3RlbToiKSkgewotICAgICAgICBLVVJMIGt1cmwg
PSBLVVJMKEtVUkwoKSwgbW9kaWZpZWRVcmwpOwotICAgICAgICBLVVJMIG1lZGlhVVJMOworICAg
ICAgICBVUkwga3VybCA9IFVSTChVUkwoKSwgbW9kaWZpZWRVcmwpOworICAgICAgICBVUkwgbWVk
aWFVUkw7CiAgICAgICAgIFdURjo6U3RyaW5nIGZzUGF0aDsKICAgICAgICAgRmlsZVN5c3RlbVR5
cGUgZnNUeXBlOwogICAgICAgICBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGU7CkBAIC0yMDEsNyAr
MjAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmxvYWQoY29uc3QgV1RGOjpTdHJpbmcm
IHVybCkKIAogICAgIFdURjo6U3RyaW5nIGNvb2tpZVBhaXJzOwogICAgIGlmICghdXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgY29va2llUGFpcnMgPSBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2llKEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKKyAgICAgICAg
Y29va2llUGFpcnMgPSBjb29raWVNYW5hZ2VyKCkuZ2V0Q29va2llKFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIFdpdGhIdHRwT25seUNvb2tpZXMpOwogICAgIG1fcGxhdGZvcm1QbGF5ZXItPmxv
YWQocGxheWVySUQsIG1vZGlmaWVkVXJsLCBtX3dlYkNvcmVQbGF5ZXItPnVzZXJBZ2VudCgpLCBj
b29raWVQYWlycyk7CiB9CiAKQEAgLTcyOCw3ICs3MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6b25CdWZmZXJpbmcoYm9vbCBmbGFnKQogCiBzdGF0aWMgUHJvdGVjdGlvblNwYWNlIGdl
bmVyYXRlUHJvdGVjdGlvblNwYWNlRnJvbU1NUkF1dGhDaGFsbGVuZ2UoY29uc3QgTU1SQXV0aENo
YWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKIHsKLSAgICBLVVJMIHVybChQYXJzZWRVUkxTdHJpbmcs
IFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIoKSkpOworICAgIFVSTCB1cmwo
UGFyc2VkVVJMU3RyaW5nLCBXVEY6OlN0cmluZyhhdXRoQ2hhbGxlbmdlLnVybCgpLmNfc3RyKCkp
KTsKICAgICBBU1NFUlQodXJsLmlzVmFsaWQoKSk7CiAKICAgICByZXR1cm4gUHJvdGVjdGlvblNw
YWNlKHVybC5ob3N0KCksIHVybC5wb3J0KCksCkBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIFBy
b3RlY3Rpb25TcGFjZSBnZW5lcmF0ZVByb3RlY3Rpb25TcGFjZUZyb21NTVJBdXRoQ2hhbGxlbmdl
KGNvbnN0IE1NUkF1dGgKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0aGVudGljYXRp
b25OZWVkZWQoTU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkKIHsKLSAgICBLVVJMIHVy
bChQYXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJsKCkuY19zdHIo
KSkpOworICAgIFVSTCB1cmwoUGFyc2VkVVJMU3RyaW5nLCBXVEY6OlN0cmluZyhhdXRoQ2hhbGxl
bmdlLnVybCgpLmNfc3RyKCkpKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNzU1LDcgKzc1NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvbkF1
dGhlbnRpY2F0aW9uTmVlZGVkKE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhDaGFsbGVuZ2UpCiAgICAg
ICAgIHRoaXMsIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5
ZXJIb3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwg
Y29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpu
b3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkKIHsKICAgICBtX2lzQXV0aGVudGljYXRpb25DaGFsbGVuZ2luZyA9IGZh
bHNlOwogCkBAIC03NjcsNyArNzY3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om5vdGlm
eUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb24KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6Om9uQXV0aGVudGljYXRpb25BY2NlcHRlZChjb25zdCBNTVJB
dXRoQ2hhbGxlbmdlJiBhdXRoQ2hhbGxlbmdlKSBjb25zdAogewotICAgIEtVUkwgdXJsKFBhcnNl
ZFVSTFN0cmluZywgV1RGOjpTdHJpbmcoYXV0aENoYWxsZW5nZS51cmwoKS5jX3N0cigpKSk7Cisg
ICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcsIFdURjo6U3RyaW5nKGF1dGhDaGFsbGVuZ2UudXJs
KCkuY19zdHIoKSkpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCmluZGV4
IGIzNDY1YmIxMTExOTM4ZDk5ODVjMzY3MDNhOTAyMTg5MjEyYWI0MzcuLjU0N2IxZDUyMDA0ZTM0
ZjVjZDgwMjg3ZDkxYjIwYjI0ZDdjNTljOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQ
bGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0ZShNZWRp
YVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
V1RGOjpTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBL
VVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBl
KGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmKTsKICAg
ICBzdGF0aWMgdm9pZCBub3RpZnlBcHBBY3RpdmF0ZWRFdmVudChib29sKTsKICAgICBzdGF0aWMg
dm9pZCBzZXRDZXJ0aWZpY2F0ZVBhdGgoY29uc3QgV1RGOjpTdHJpbmcmKTsKIApAQCAtMTU0LDcg
KzE1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25DcmVhdGVIb2xlUHVuY2hSZWN0
KCk7CiAgICAgdmlydHVhbCB2b2lkIG9uRGVzdHJveUhvbGVQdW5jaFJlY3QoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDaGFsbGVuZ2VSZXN1bHQoY29uc3QgS1VSTCYsIGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50
aWFsJik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwm
LCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlc3VsdCwg
Y29uc3QgQ3JlZGVudGlhbCYpOwogCiAgICAgdmlydHVhbCBib29sIGlzUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGM3ZWE3NmQ1ZDQ0NzYwYWM1MDNmMmQ5
MmZkYzVlZTRkY2I1MWY4ZjQuLjg0OTA3ODk3MTc4ZDgyMGEzMzkxN2VkN2Y2YTkyMDMzNDczNDZk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VTdHlsZShTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSkKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JS
ZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRVUkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0IEludFJlY3QmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggNDRiZjJkM2RhOWNiYWRkZDVjOTZi
ODk1MWUzZGJjM2Y5YjBmNWZkZS4uYjA4MTc1ZTBiOTA4NGFmMGIxOGUzNjAwMTkxMWNkMWQ2ODVi
NjI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCiAj
aW5jbHVkZSAiU2hhZG93Qmx1ci5oIgpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQg
d2lkdGgsIGJvb2wKICAgICAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBsYXRmb3Jt
Q29udGV4dCgpLCB0cnVlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJl
Y3QoY29uc3QgS1VSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBVUkwmIGxpbmssIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggMWI3YzU3OTI1ZDU5MGM1MDYxNmQ0ZjVkNWE3MGM2M2I1NmQ4ZDdiYS4uMDEwNzAyMTAyOWU0
NWEyYzFjNGJiZDA1OTA1ODNiOTc3NWRjYTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUg
IkdTdHJlYW1lclV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgpAQCAtMzM0LDcgKzMzNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjps
b2FkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGlmICghaW5pdGlhbGl6ZUdTdHJlYW1lckFuZFJl
Z2lzdGVyV2ViS2l0RWxlbWVudHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCBrdXJs
KEtVUkwoKSwgdXJsKTsKKyAgICBVUkwga3VybChVUkwoKSwgdXJsKTsKICAgICBTdHJpbmcgY2xl
YW5VcmwodXJsKTsKIAogICAgIC8vIENsZWFuIG91dCBldmVyeXRoaW5nIGFmdGVyIGZpbGU6Ly8g
dXJsIHBhdGguCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAKICAgICBBU1NFUlQobV9wbGF5QmluKTsK
IAotICAgIG1fdXJsID0gS1VSTChLVVJMKCksIGNsZWFuVXJsKTsKKyAgICBtX3VybCA9IFVSTChV
UkwoKSwgY2xlYW5VcmwpOwogICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4uZ2V0KCksICJ1cmki
LCBjbGVhblVybC51dGY4KCkuZGF0YSgpLCBOVUxMKTsKIAogICAgIElORk9fTUVESUFfTUVTU0FH
RSgiTG9hZCAlcyIsIGNsZWFuVXJsLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTQyOCw4ICsxNDI4LDgg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQog
ICAgICAgICAvLyBGb3VuZCBhIGNhbmRpZGF0ZS4gbmV3LWxvY2F0aW9uIGlzIG5vdCBhbHdheXMg
YW4gYWJzb2x1dGUgdXJsCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0byB0YWtlIHRoZSBi
YXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5kIHRoZSB2YWx1ZSBv
ZiBuZXctbG9jYXRpb24gdG8gaXQuCi0gICAgICAgIEtVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNf
dmFsaWQobmV3TG9jYXRpb24pID8gS1VSTCgpIDogbV91cmw7Ci0gICAgICAgIEtVUkwgbmV3VXJs
ID0gS1VSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBiYXNlVXJsID0gZ3N0
X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOworICAgICAgICBVUkwg
bmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKIAogICAgICAgICBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3Vy
bCk7CiAgICAgICAgIGlmIChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChuZXdVcmwpKSB7CkBA
IC0xNjUzLDcgKzE2NTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Z2V0
U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcykKICAgICB0eXBlcyA9IG1pbWVU
eXBlQ2FjaGUoKTsKIH0KIAotTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBl
LCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsKICAgICBpZiAodHlwZS5pc051
bGwoKSB8fCB0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05v
dFN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aAppbmRleCBkN2Y2ZWQ2OGQyZGQ5MTI1YjkzNjQ0YmNlMDFiYzk1YWNkYTE5M2Y3Li4yNWM5YzUw
NmFlMWMyZDM5N2U5MmYwNmI4NDQzZGMxYTBmNWM4N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IGNyZWF0
ZShNZWRpYVBsYXllciopOwogCiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmc+Jik7Ci0gICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0
IEtVUkwmKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7
CiAKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCkBAIC0xODAsNyArMTgwLDcgQEAg
cHJpdmF0ZToKICAgICBndWludCBtX3JlYWR5VGltZXJIYW5kbGVyOwogICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gbV93ZWJraXRBdWRpb1Npbms7CiAgICAgbXV0YWJsZSBsb25nIG1fdG90YWxCeXRl
czsKLSAgICBLVVJMIG1fdXJsOworICAgIFVSTCBtX3VybDsKICAgICBib29sIG1fcHJlc2VydmVz
UGl0Y2g7CiAgICAgR3N0U3RhdGUgbV9yZXF1ZXN0ZWRTdGF0ZTsKICAgICBHUmVmUHRyPEdzdEVs
ZW1lbnQ+IG1fYXV0b0F1ZGlvU2luazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggZjhjNzkwNDVmMzFlODUyYWMyZDg3ZTJhYjljMDgyM2YxYTY4ZmM4
Mi4uNzk2NDI5NTFkZmU2MDQ5OWFkYjFkZTI5YzBhMzMyNTU2OWFhNmY2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAKICAg
ICBBU1NFUlQoIXByaXYtPmNsaWVudCk7CiAKLSAgICBLVVJMIHVybCA9IEtVUkwoS1VSTCgpLCBw
cml2LT51cmkpOworICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIHByaXYtPnVyaSk7CiAKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVz
KHRydWUpOwpAQCAtNjg4LDcgKzY4OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNT
ZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSwgR0VyCiAgICAg
aWYgKCF1cmkpCiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgS1VSTCB1cmwoS1VSTCgpLCB1
cmkpOworICAgIFVSTCB1cmwoVVJMKCksIHVyaSk7CiAKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkg
fHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgZ19zZXRfZXJyb3Io
ZXJyb3IsIEdTVF9VUklfRVJST1IsIEdTVF9VUklfRVJST1JfQkFEX1VSSSwgIkludmFsaWQgVVJJ
ICclcyciLCB1cmkpOwpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNTZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlciwgY29uc3QgZ2NoYXIqIHVyaSkKICAg
ICBpZiAoIXVyaSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBLVVJMIHVybChLVVJMKCks
IHVyaSk7CisgICAgVVJMIHVybChVUkwoKSwgdXJpKTsKIAogICAgIGlmICghdXJsLmlzVmFsaWQo
KSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICBHU1RfRVJST1Jf
T0JKRUNUKHNyYywgIkludmFsaWQgVVJJICclcyciLCB1cmkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAppbmRleCA3MmIyMjU0MDFjMDhkNmM5YTgwZGM2ODVjNjZkNjQyYTEyNzkzYjQ3Li5m
MzBkMTE2ZDlhZjFkNzA0NGViMWZhNmRhNzcwNTcyNzk0ZmE5YWNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaApAQCAtNzUsOSArNzUsOSBAQCBwcml2YXRlOgogICAgIC8vIGVuZ2luZSBz
dXBwb3J0CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNl
PiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKLSAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNv
ZGVjcywgY29uc3QgS1VSTCYpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgY29kZWNzLCBj
b25zdCBVUkwmKTsKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIGV4dGVu
ZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3Ms
IGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJiB0
eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFVSTCYpOwogI2VuZGlmCiAKICAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShW
ZWN0b3I8U3RyaW5nPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGY3MjJi
ZDBjNmFiZmE4OGVhZGNkNWJmOTYwZGJlYTU5MTViNjExY2MuLjBjODRmOGE5ODI1OTFiNzM0OGU5
ZjIwYTQ2NjM1MjFkNTBkYjdiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAg
LTM1LDcgKzM1LDcgQEAKICNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAiSG9zdFdpbmRv
dy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1w
b3J0ICJVUkwuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0yNjUsNyArMjY1LDcgQEAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNvbW1vbk1vdmllQXR0
cmlidXRlcygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUo
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgS1VSTCBrVVJMKFBhcnNlZFVSTFN0cmluZywgdXJs
KTsKKyAgICBVUkwga1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CiAgICAgTlNVUkwgKmNvY29h
VVJMID0ga1VSTDsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICptb3ZpZUF0dHJpYnV0ZXMgPSBj
b21tb25Nb3ZpZUF0dHJpYnV0ZXMoKTsgICAgCiAgICAgW21vdmllQXR0cmlidXRlcyBzZXRWYWx1
ZTpjb2NvYVVSTCBmb3JLZXk6UVRNb3ZpZVVSTEF0dHJpYnV0ZV07CkBAIC0xNDYyLDcgKzE0NjIs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQogICAgIGNvbmNhdGVuYXRlSGFzaFNldHMoc3Vw
cG9ydGVkVHlwZXMsIG1pbWVDb21tb25UeXBlc0NhY2hlKCkpOwogfQogCi1NZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpCitNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJikKIHsK
ICAgICAvLyBPbmx5IHJldHVybiAiSXNTdXBwb3J0ZWQiIGlmIHRoZXJlIGlzIG5vIGNvZGVjcyBw
YXJhbWV0ZXIgZm9yIG5vdyBhcyB0aGVyZSBpcyBubyB3YXkgdG8gYXNrIFFUIGlmIGl0IHN1cHBv
cnRzIGFuCiAgICAgLy8gZXh0ZW5kZWQgTUlNRSB0eXBlIHlldC4KQEAgLTE0ODAsNyArMTQ4MCw3
IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1
cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5CiB9CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSB8fCBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQotTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgU3RyaW5nJiBrZXlTeXN0
ZW0sIGNvbnN0IEtVUkwmIHVybCkKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwg
Y29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICAvLyBRVEtpdCBkb2VzIG5vdCBzdXBwb3J0IGFueSBlbmNyeXRwZWQgbWVk
aWEsIHNvIHJldHVybiBJc05vdFN1cHBvcnRlZCBpZiB0aGUga2V5U3lzdGVtIGlzIG5vbi1OVUxM
OgogICAgIGlmICgha2V5U3lzdGVtLmlzTnVsbCgpIHx8ICFrZXlTeXN0ZW0uaXNFbXB0eSgpKQpA
QCAtMTYzMSw3ICsxNjMxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIGlmICghbV9xdE1vdmllKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKHdrUVRNb3ZpZVJlc29sdmVkVVJMKG1fcXRN
b3ZpZS5nZXQoKSkpKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHJlc29sdmVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwod2tRVE1vdmllUmVzb2x2ZWRVUkwobV9xdE1v
dmllLmdldCgpKSkpOwogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcmVxdWVzdGVkT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcobV9tb3ZpZVVSTCk7CiAgICAgcmV0
dXJuIHJlc29sdmVkT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChyZXF1ZXN0ZWRPcmlnaW4u
Z2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IDE3ZGM0MTQyYzNjNjI1MzllNzM3YTM1
N2Y5MzFhOTM2ZWU5N2IzMTguLjFlNmJlZGU2MTFhNDBkNzZjOWU0NDU1NGNlZTViNjYxYTM5NzY1
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTE1MjEsNyArMTUyMSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXQzRFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKQogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxGb3JSZWN0
KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRV
UkxGb3JSZWN0KGNvbnN0IFVSTCYsIGNvbnN0IEludFJlY3QmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5kZXggNzVhNmYzZWRmOTU3NzczODY1
MDY2ZThkNTQ2M2U2ZmZhMmZiNGRkMy4uMmM2ZWI1NDFlM2MzZDYxNDU4OTM4N2E2NGY4NDU5N2I4
NWIzN2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
TWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4g
JnN1cHBvcnRlZCkKICAgICB9CiB9CiAKLU1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQ
bGF5ZXJQcml2YXRlUXQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIG1pbWUsIGNvbnN0IFN0
cmluZyYgY29kZWMsIGNvbnN0IEtVUkwmKQorTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllclByaXZhdGVRdDo6c3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgbWltZSwgY29uc3Qg
U3RyaW5nJiBjb2RlYywgY29uc3QgVVJMJikKIHsKICAgICBpZiAoIW1pbWUuc3RhcnRzV2l0aCgi
YXVkaW8vIikgJiYgIW1pbWUuc3RhcnRzV2l0aCgidmlkZW8vIikpCiAgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRdDo6Y29tbWl0TG9hZChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAg
bV93ZWJDb3JlUGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIH0KIAotICAgIEtVUkwg
a1VybChQYXJzZWRVUkxTdHJpbmcsIHVybCk7CisgICAgVVJMIGtVcmwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpOwogICAgIGNvbnN0IFFVcmwgclVybCA9IGtVcmw7CiAgICAgY29uc3QgUVN0cmluZyBz
Y2hlbWUgPSByVXJsLnNjaGVtZSgpLnRvTG93ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmgKaW5k
ZXggN2UzODhjNDA4NjBhYWE4MzU1MTkyODEwNDU2Y2RjZmNkMDA5ZWM0Zi4uMTNlOTAwZTFmYzNl
YjM1YzMxMzYzOTBlMGU4YjI2MGViOWI4MjU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5oCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdp
bmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nPiYpOwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJM
Jik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBoYXNWaWRlbygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3Vh
bENvbnRleHQuY3BwCmluZGV4IDBiMzUxODRjOGFkMWI4NTI5MWFkOTAyYjBhNDc3NGViMDRiOTcx
NWYuLjlkZDI1ZjI0OTI2OWVhYWRkNzY0M2ZiMmQ1NmE1NGJkNGRmOTA3NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAK
QEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVUYXNrVGltZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUVRDRkRpY3Rpb25hcnkuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEFzc2VydE1hY3Jvcy5oPgogI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0FmZmluZVRyYW5zZm9ybS5oPgogI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0NvbnRleHQuaD4KQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OnNldFVwQ29va2llc0ZvclF1aWNrVGltZShjb25z
dCBTdAogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5wYWdlKCkgfHwgIWZyYW1lLT5wYWdlKCkt
PnNldHRpbmdzKCkuY29va2llRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJM
IG1vdmllVVJMID0gS1VSTChLVVJMKCksIHVybCk7CisgICAgVVJMIG1vdmllVVJMID0gVVJMKFVS
TCgpLCB1cmwpOwogICAgIFZlY3RvcjxDb29raWU+IGRvY3VtZW50Q29va2llczsKICAgICBpZiAo
IWdldFJhd0Nvb2tpZXMoZnJhbWUtPmRvY3VtZW50KCksIG1vdmllVVJMLCBkb2N1bWVudENvb2tp
ZXMpKQogICAgICAgICByZXR1cm47CkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQ6OmlzQXZhaWxhYmxlKCkKICNlbmRpZgog
fQogCi1NZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQ6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0
cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVk
aWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6c3VwcG9ydHNUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3MsIGNvbnN0IFVSTCYpCiB7CiAgICAg
Ly8gb25seSByZXR1cm4gIklzU3VwcG9ydGVkIiBpZiB0aGVyZSBpcyBubyBjb2RlY3MgcGFyYW1l
dGVyIGZvciBub3cgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIGFzayBRVCBpZiBpdCBzdXBwb3J0cyBh
bgogICAgIC8vICBleHRlbmRlZCBNSU1FIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oCmluZGV4IDY2MzM0ZjI0NGMxMzhkMmVl
MDc4ZjRiNTQxMTgyNWZiMjcyYjdmZTEuLjM5Y2NiYTBlZGM3MDJmM2MzMGE1ODQ3NWUyNjU2MmI5
NGU0YTFlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGlt
ZVZpc3VhbENvbnRleHQuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gZW5n
aW5lIHN1cHBvcnQKICAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgY29kZWNzLCBjb25zdCBLVVJMJik7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2Rl
Y3MsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAK
aW5kZXggOTExYzNhZDc0NGM5MjdlNmJlMDlkMGVhNjgwMWUyNzYxNzkzMjhhNC4uNmU1MTI5ZmJh
NGViN2RjNjQxMTcxZTkzYWM3YjE0MjdkNzgyMzZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luQ0UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bkNFLmNwcApAQCAtOTgxLDcgKzk4MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVN0cm9rZVRoaWNrbmVzcyhmbG9hdCBzdHJva2VUaGlja25lc3MpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFVSTEZvclJlY3QoY29uc3Qg
S1VSTCYgbGluaywgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0VVJMRm9yUmVjdChjb25zdCBVUkwmIGxpbmssIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2lu
Q0UuaAppbmRleCAwMDlmMGQ0MzEyNmM4Mjc3MzZlYmI5MWYyMjA0MGExMTc0OGI2YTU4Li40MmY2
NzNhYmZjYzY0MmE0YzNmZjFlOWI2NTk5YTNiZGFiNjUyNjE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVy
UHJpdmF0ZVdpbkNFLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGVuZ2luZSBzdXBwb3J0CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOwotICAg
ICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgS1VSTCYpOworICAgICAg
ICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGNvZGVjcywgY29uc3QgVVJMJik7CiAgICAgICAgIHN0
YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5naW5l
RGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAiV2luQ0UiOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCmluZGV4IDY2YWQ2NjI5
MWM2ZDIxMTI0NGY3OGE3MjJmYmUwOWNhZDM2ODRiMGIuLmZlYTdmM2ZiOTYwZTljYzE2YmFhMTll
YmU4ZGQ5ZmZkZThmOGFjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuY3BwCkBAIC02Miw2MyArNjIsNjMgQEAgQXN5bmNGaWxlU3lz
dGVtR3RrOjp+QXN5bmNGaWxlU3lzdGVtR3RrKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6bW92ZShjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBj
b25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6bW92ZShjb25zdCBV
UkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjb3B5KGNvbnN0IEtVUkwmIHNvdXJj
ZVBhdGgsIGNvbnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjb3B5
KGNvbnN0IFVSTCYgc291cmNlUGF0aCwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92ZShjb25zdCBL
VVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92ZShjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlbW92ZVJlY3Vyc2l2
ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6cmVtb3ZlUmVjdXJzaXZlbHko
Y29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lz
dGVtR3RrOjpyZWFkTWV0YWRhdGEoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpy
ZWFkTWV0YWRhdGEoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
QXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQor
dm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29s
IGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0Zp
bGVTeXN0ZW1HdGs6OmNyZWF0ZURpcmVjdG9yeShjb25zdCBVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpmaWxl
RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0azo6ZmlsZUV4aXN0cyhjb25z
dCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1H
dGs6OmRpcmVjdG9yeUV4aXN0cyhjb25zdCBLVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmRp
cmVjdG9yeUV4aXN0cyhjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9p
ZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OnJlYWREaXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKK3ZvaWQgQXN5bmNG
aWxlU3lzdGVtR3RrOjpyZWFkRGlyZWN0b3J5KGNvbnN0IFVSTCYgcGF0aCwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCiAKLXZvaWQgQXN5bmNGaWxlU3lzdGVtR3RrOjpjcmVhdGVXcml0ZXIoQXN5bmNG
aWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit2b2lkIEFzeW5jRmlsZVN5c3RlbUd0
azo6Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBVUkwm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNy
ZWF0ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiwgUGFzc093blB0cjxB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KQordm9pZCBBc3luY0ZpbGVTeXN0ZW1HdGs6OmNyZWF0
ZVNuYXBzaG90RmlsZUFuZFJlYWRNZXRhZGF0YShjb25zdCBVUkwmLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Bc3luY0ZpbGVTeXN0ZW1HdGsuaAppbmRleCAz
OWY1NzM3MDgxY2E2ODRmMDExMzIxYzc1YmE4ZGZlNWRhNjU1YzcxLi5kYWE2ZTFlODUyNWQ4NzY4
NzUxMjU0YzYxZTM5Njg5Zjg1ZWRlZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvQXN5bmNGaWxlU3lzdGVtR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0FzeW5jRmlsZVN5c3RlbUd0ay5oCkBAIC0zNCwxNyArMzQsMTcgQEAgcHVibGljOgog
ICAgIEFzeW5jRmlsZVN5c3RlbUd0aygpOwogICAgIHZpcnR1YWwgfkFzeW5jRmlsZVN5c3RlbUd0
aygpOwogCi0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29u
c3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0IEtVUkwmIHNvdXJjZVBhdGgsIGNv
bnN0IEtVUkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZVJlY3Vyc2l2ZWx5KGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBLVVJMJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVGaWxlKGNvbnN0IEtVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVE
aXJlY3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29u
c3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJl
Y3RvcnkoY29uc3QgS1VSTCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVu
dCosIGNvbnN0IEtVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7CisgICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBV
UkwmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFVS
TCYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4p
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNp
dmVseShjb25zdCBVUkwmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
Pik7CisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBVUkwmIHBhdGgsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0
ZUZpbGUoY29uc3QgVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNv
bnN0IFVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgVVJMJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9p
ZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgVVJMJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOworICAgIHZpcnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFVS
TCYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCosIGNvbnN0IFVSTCYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2Jq
ZWN0R3RrLmNwcAppbmRleCAwYmQzMDRiYTY3MzI0NGFmMDcxODI4Y2MzN2ZhZjM2NThjODU1Yjkw
Li4xNzkwMTBkZDQxZGQ5ZjBiOGY0MDMyNzJkNDY2OTZkNzNmNjBhZmJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJp
bmcpCiAgICAgICAgIGlmIChsaW5lWzBdID09ICcjJykKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEtVUkwgdXJsID0gS1VSTChLVVJMKCksIGxpbmUpOworICAgICAgICBVUkwgdXJs
ID0gVVJMKFVSTCgpLCBsaW5lKTsKICAgICAgICAgaWYgKHVybC5pc1ZhbGlkKCkpIHsKICAgICAg
ICAgICAgIGlmICghc2V0VVJMKSB7CiAgICAgICAgICAgICAgICAgbV91cmwgPSB1cmw7CkBAIC0x
MDQsNyArMTA0LDcgQEAgdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmlu
ZyYgdXJpTGlzdFN0cmluZykKICAgICB9CiB9CiAKLXZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJM
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKK3ZvaWQgRGF0YU9iamVjdEd0
azo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewogICAgIG1f
dXJsID0gdXJsOwogICAgIG1fdXJpTGlzdCA9IHVybDsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IERhdGFPYmplY3RHdGs6OmNsZWFyQWxsRXhjZXB0RmlsZW5hbWVzKCkKICAgICBtX3RleHQgPSAi
IjsKICAgICBtX21hcmt1cCA9ICIiOwogICAgIG1fdXJpTGlzdCA9ICIiOwotICAgIG1fdXJsID0g
S1VSTCgpOworICAgIG1fdXJsID0gVVJMKCk7CiAgICAgbV9pbWFnZSA9IDA7CiAgICAgbV9yYW5n
ZSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9i
amVjdEd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuaApp
bmRleCA1MjgxYjFlMTc4YmY5NDdkYTJjMDgwZDM4M2VhYTUwNmI2YTYzOTgwLi5iYzU1YzJkMzBh
YzFkMWYwZmQ2ZWM0MTcwOGQzYTAwZjE3ZGFhNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKQEAgLTIwLDcgKzIwLDcgQEAKICNkZWZpbmUgRGF0YU9i
amVjdEd0a19oCiAKICNpbmNsdWRlICJGaWxlTGlzdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgpAQCAtMzYsMTMgKzM2LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhT2JqZWN0R3RrKCkp
OwogICAgIH0KIAotICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9
CisgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0
IFN0cmluZyYgdXJpTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJpTGlzdDsgfQogICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVuYW1lczsg
fQogICAgIEdka1BpeGJ1ZiogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9
CiAgICAgdm9pZCBzZXRSYW5nZShQYXNzUmVmUHRyPFJhbmdlPiBuZXdSYW5nZSkgeyBtX3Jhbmdl
ID0gbmV3UmFuZ2U7IH0KICAgICB2b2lkIHNldEltYWdlKEdka1BpeGJ1ZiogbmV3SW1hZ2UpIHsg
bV9pbWFnZSA9IG5ld0ltYWdlOyB9Ci0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgaGFzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UgfHwgIW1fdGV4dC5pc0Vt
cHR5KCk7IH0KICAgICBib29sIGhhc01hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2UgfHwg
IW1fbWFya3VwLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgaGFzVVJJTGlzdCgpIGNvbnN0IHsgcmV0
dXJuICFtX3VyaUxpc3QuaXNFbXB0eSgpOyB9CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0ZpbGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZpbGVuYW1lcy5pc0VtcHR5
KCk7IH0KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAg
IHZvaWQgY2xlYXJVUklMaXN0KCkgeyBtX3VyaUxpc3QgPSAiIjsgfQotICAgIHZvaWQgY2xlYXJV
UkwoKSB7IG1fdXJsID0gS1VSTCgpOyB9CisgICAgdm9pZCBjbGVhclVSTCgpIHsgbV91cmwgPSBV
UkwoKTsgfQogICAgIHZvaWQgY2xlYXJJbWFnZSgpIHsgbV9pbWFnZSA9IDA7IH0KIAogICAgIFN0
cmluZyB0ZXh0KCkgY29uc3Q7CkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fdGV4dDsKICAgICBTdHJpbmcgbV9tYXJrdXA7Ci0gICAgS1VSTCBtX3VybDsK
KyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fdXJpTGlzdDsKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2ZpbGVuYW1lczsKICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gbV9pbWFnZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCmluZGV4IDc5N2M3OGJmMDVmZGNk
NjQ1ZGFkZWU5Y2RjZTI4NDA0Mjc2Y2RmZmIuLjNmOWRlYTNhMjcyMWUxM2RmYmFlMWFkNDUxNTIz
OTUxZTgyYzI4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3Rr
LmNwcApAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZyYW1lKiwgRmls
ZW5hbWVDb252ZXJzaW9uUG9saWN5IGZpbGVuYW1lUG9saWN5LCBTdHJpbmcqCiAgICAgaWYgKCFt
X3BsYXRmb3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgaWYgKGZpbGVuYW1lUG9saWN5ICE9IENvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAgS1VS
TCB1cmwoS1VSTCgpLCBtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsKKyAgICAgICAgVVJMIHVy
bChVUkwoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmwoKSk7CiAgICAgICAgIGlmICh1cmwuaXNM
b2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCmluZGV4IGJhNDdlMmFiYmZiYjIzZjI0
MTYzNTEwNzg2YWM2OGI3N2QwNzQ5Y2MuLjNjZjZiMDAxM2FiZmVlNTIwMDg1OWFmM2MyOTc2M2I0
OGY3MTFiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCkBA
IC05NSwyMSArOTUsMjEgQEAgUmVzb3VyY2VFcnJvciBwcmludEVycm9yKGNvbnN0IFByaW50Q29u
dGV4dCogcHJpbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIGVycm9yTWUKIHsKICAgICBEb2N1bWVu
dExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Q
cmludCwgUHJpbnRFcnJvckdlbmVyYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIGVycm9yTWVzc2FnZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRl
ci0+dXJsKCkgOiBVUkwoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBwcmlu
dGVyTm90Rm91bmRFcnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKIHsKICAg
ICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCkt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJy
b3JEb21haW5QcmludCwgUHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtVUkwo
KSwgXygiUHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgXygiUHJpbnRlciBu
b3QgZm91bmQiKSk7CiB9CiAKIFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQo
Y29uc3QgUHJpbnRDb250ZXh0KiBwcmludENvbnRleHQpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGRvY3VtZW50TG9hZGVyID0gcHJpbnRDb250ZXh0LT5mcmFtZSgpLT5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpOwogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJpbnQsIFBy
aW50RXJyb3JJbnZhbGlkUGFnZVJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3Vt
ZW50TG9hZGVyID8gZG9jdW1lbnRMb2FkZXItPnVybCgpIDogS1VSTCgpLCBfKCJJbnZhbGlkIHBh
Z2UgcmFuZ2UiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPyBk
b2N1bWVudExvYWRlci0+dXJsKCkgOiBVUkwoKSwgXygiSW52YWxpZCBwYWdlIHJhbmdlIikpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYWNhNTEzMjNlZGZmMTQ3ZmQ4YzNhN2ZiMWJmYTAy
N2I4N2M2NjIyNi4uYzM5MmUwNTdmOTcyYzBiZDkyOGViNjk1ODhhNzI0Y2YyODlhMjkwMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMzEs
NyArMzEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRl
ICJVUkwuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAg
ICAgIFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xp
cGJvYXJkQ29udGVudHMobV9ndGtDbGlwYm9hcmQpOwogfQogCi1zdGF0aWMgS1VSTCBnZXRVUkxG
b3JJbWFnZU5vZGUoTm9kZSogbm9kZSkKK3N0YXRpYyBVUkwgZ2V0VVJMRm9ySW1hZ2VOb2RlKE5v
ZGUqIG5vZGUpCiB7CiAgICAgLy8gRklYTUU6IExhdGVyIHRoaXMgY29kZSBzaG91bGQgYmUgc2hh
cmVkIHdpdGggQ2hyb21pdW0gc29tZWhvdy4gQ2hhbmNlcyBhcmUgYWxsIHBsYXRmb3JtcyB3YW50
IGl0LgogICAgIEF0b21pY1N0cmluZyB1cmxTdHJpbmc7CkBAIC0yMDEsMTAgKzIwMSwxMCBAQCBz
dGF0aWMgS1VSTCBnZXRVUkxGb3JJbWFnZU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgRWxlbWVu
dCogZWxlbWVudCA9IHRvRWxlbWVudChub2RlKTsKICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVu
dC0+aW1hZ2VTb3VyY2VVUkwoKTsKICAgICB9Ci0gICAgcmV0dXJuIHVybFN0cmluZy5pc0VtcHR5
KCkgPyBLVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKKyAgICByZXR1cm4gdXJsU3RyaW5nLmlz
RW1wdHkoKSA/IFVSTCgpIDogbm9kZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CiAKLXZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSkKK3ZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIEFTU0VSVChub2RlKTsKIApAQCAtMjIwLDcgKzIy
MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIAogICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsK
IAotICAgIEtVUkwgdXJsID0gZ2V0VVJMRm9ySW1hZ2VOb2RlKG5vZGUpOworICAgIFVSTCB1cmwg
PSBnZXRVUkxGb3JJbWFnZU5vZGUobm9kZSk7CiAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fZGF0YU9iamVjdC0+c2V0VVJMKHVybCwgdGl0bGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCmluZGV4IGUzNGMx
YmJlMWQ1YjZhNjc0NDczNWFjMTg4YjU5NTNlZTcyZTg4NDMuLmEwYmY4OGU0M2RhYmIwMjRhMjUw
NWE3ZWE2OGZjMmIzNWQ4ODM4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPGZsb2F0Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5
U2l6ZXMoVmVjdG9yPFN0cmluZz4mKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLVN0cmlu
ZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUkwmKQorU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CmluZGV4IGQxMTVkNjExYTZmODMyYmE5YjZmOWNmMDBjYWI3NGVmN2FlMzJiOWEuLjcwYWYxNzc2
YmY2ZjY0ZDY4N2Q2MmM1NDJhM2ViYzA3ZjhkZGEyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0ICJI
VE1MRWxlbWVudC5oIgogI2ltcG9ydCAiSFRNTE5hbWVzLmgiCiAjaW1wb3J0ICJIVE1MUGFyc2Vy
SWRpb21zLmgiCi0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIkxl
Z2FjeVdlYkFyY2hpdmUuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBhc3RlYm9hcmRT
dHJhdGVneS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOThjYmNjZDI4ZTg3NTU0NzU5OGUxMThlOTE1MjhkNWFj
NDdhYTJlMS4uODVlOTU5ZmJkNDMwMTYwNGJlZDBiNjI3NjdkYWMyMmU2YzZlZmI1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiQ29s
b3IuaCIKLSNpbXBvcnQgIktVUkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiSW1hZ2Uu
aCIKICNpbXBvcnQgIlBsYXRmb3JtUGFzdGVib2FyZC5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcu
aCIKQEAgLTk5LDkgKzk5LDkgQEAgQ29sb3IgUGxhdGZvcm1QYXN0ZWJvYXJkOjpjb2xvcigpCiAg
ICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLUtVUkwgUGxhdGZvcm1QYXN0ZWJvYXJkOjp1cmwoKQor
VVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6dXJsKCkKIHsKLSAgICByZXR1cm4gS1VSTCgpOworICAg
IHJldHVybiBVUkwoKTsKIH0KIAogbG9uZyBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvcHkoY29uc3Qg
U3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmlu
ZGV4IDE0OTNhZTYzODk2NDQwYzczNjYwNmUwNzdkYjZiMTcyNDZjZWQ3YjQuLjJlMDVjOWY1MWY1
NDk5NzJiY2E3YTE1MTM3NGMwZTFiYTViZWM2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQAogI2ltcG9ydCAiRm9udFNl
bGVjdG9yLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbXBvcnQgIkltYWdlLmgi
Ci0jaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJVUkwuaCIKICNpbXBvcnQgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbXBvcnQgIlN0cmluZ1RydW5jYXRvci5oIgogI2ltcG9ydCAiVGV4dFJ1bi5o
IgpAQCAtMjY3LDcgKzI2Nyw3IEBAIHN0YXRpYyB2b2lkIGRyYXdEb3VibGVkQXRQb2ludChOU1N0
cmluZyAqc3RyaW5nLCBOU1BvaW50IHRleHRQb2ludCwgTlNDb2xvciAqdG9wCiAgICAgICAgIGRy
YXdBdFBvaW50KHN0cmluZywgdGV4dFBvaW50LCBmb250LCB0b3BDb2xvcik7CiB9CiAKLURyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0
aXRsZSwgRm9udFJlbmRlcmluZ01vZGUpCitEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRm9udFJlbmRlcmluZ01vZGUpCiB7
CiAgICAgTlNTdHJpbmcgKmxhYmVsID0gbnNTdHJpbmdOaWxJZkVtcHR5KHRpdGxlKTsKICAgICBO
U1VSTCAqY29jb2FVUkwgPSB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvS1VSTE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjM3NWM3YTM0YTA5MzE4ZjE2ZWZkY2Fk
NjI3Mzc1ZWRhNTkwOGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFjLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiS1VSTC5oIgotCi0jaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgotI2ltcG9ydCA8d3Rm
L09iamNSdW50aW1lRXh0cmFzLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotS1VSTDo6S1VSTChOU1VSTCAqdXJsKQotewotICAgIGlmICgh
dXJsKSB7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/Ci0gICAg
Q1N0cmluZyB1cmxCeXRlczsKLSAgICBnZXRVUkxCeXRlcyhyZWludGVycHJldF9jYXN0PENGVVJM
UmVmPih1cmwpLCB1cmxCeXRlcyk7Ci0gICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKLX0KLQot
S1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Ci17Ci0gICAgLy8gQ3JlYXRpbmcgYSB0b2xs
LWZyZWUgYnJpZGdlZCBDRlVSTCwgYmVjYXVzZSBhIHJlYWwgTlNVUkwgd291bGQgbm90IHByZXNl
cnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCi0gICAgLy8gV2UnbGwgbmVlZCBmaWRlbGl0eSB3aGVu
IHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCi0gICAgcmV0dXJuIENGQnJpZGdp
bmdSZWxlYXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKLX0KLQotUmV0YWluUHRyPENGVVJM
UmVmPiBLVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGlmIChpc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgdXNl
IHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0ZSBh
IENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihhZG9wdE5TKFtbTlNVUkwgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpKTsKLSAgICB9Ci0KLSAgICBVUkxDaGFyQnVmZmVy
IGJ1ZmZlcjsKLSAgICBjb3B5VG9CdWZmZXIoYnVmZmVyKTsKLSAgICByZXR1cm4gY3JlYXRlQ0ZV
UkxGcm9tQnVmZmVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotfQotCi0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBlN2Fk
NmExYTg4OTU0MjAwNTYxMmQ2YmJkYzZjMjk2MGExMTE4NDlhLi5mMzFmNDI2MzczZDM0MWJiOGY0
YTBiNzBhZGNhM2FkYzdhOTdmMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtNDUsNyArNDUsNyBAQAogI2ltcG9ydCAiaHRtbGVkaXRpbmcu
aCIKICNpbXBvcnQgIkhUTUxOYW1lcy5oIgogI2ltcG9ydCAiSW1hZ2UuaCIKLSNpbXBvcnQgIktV
UkwuaCIKKyNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTGVnYWN5V2ViQXJjaGl2ZS5oIgogI2lt
cG9ydCAiTG9hZGVyTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
QEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImIHJlYWRlcikKICAgICB9CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3Ry
aW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gc3RyYXRlZ3kudXJs
KG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBVUkwgdXJsID0gc3RyYXRlZ3kudXJsKG1fcGFz
dGVib2FyZE5hbWUpOwogICAgICAgICBTdHJpbmcgdGl0bGUgPSBzdHJhdGVneS5zdHJpbmdGb3JU
eXBlKFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgaWYg
KCF1cmwuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRVUkwodXJsLCB0aXRsZSkpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
UGFzdGVib2FyZE1hYy5tbQppbmRleCA0MGI0MWU4ODBlZjRhNTQ5NTBlNTFmYTYzYzBjNzJhMmUx
ZGRlYWY5Li4wMzg3OTBiYTlhMTU3ZTFiNWM0ZjZjMWI2ZjFlMTUwZWNmOWZmMzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW0KQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJDb2xv
ci5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVBhc3RlYm9hcmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTQsNyArOTQsNyBAQCBD
b2xvciBQbGF0Zm9ybVBhc3RlYm9hcmQ6OmNvbG9yKCkKICAgICAgICAgICAgICAgICAgICAgKGlu
dCkoW2NvbG9yIGJsdWVDb21wb25lbnRdICogMjU1LjAgKyAwLjUpLCAoaW50KShbY29sb3IgYWxw
aGFDb21wb25lbnRdICogMjU1LjAgKyAwLjUpKTsgICAgCiB9CiAKLUtVUkwgUGxhdGZvcm1QYXN0
ZWJvYXJkOjp1cmwoKQorVVJMIFBsYXRmb3JtUGFzdGVib2FyZDo6dXJsKCkKIHsKICAgICByZXR1
cm4gW05TVVJMIFVSTEZyb21QYXN0ZWJvYXJkOm1fcGFzdGVib2FyZC5nZXQoKV07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCmlu
ZGV4IGU1OGQ5YTk0OTk2OTI3YjliYjViOWIzNDYxNDk3OGY1YWJmNGYzZGQuLmRlOGIxYjQ1ZGVk
ODJhOGFkYWM4MGQxNmJhNzQ3ZTIxYmZmOWZmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1NMS2V5R2VuZXJhdG9yLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMo
VmVjdG9yPFN0cmluZz4mIHN1cHBvcnRlZEtleVNpemVzKQogICAgIHN1cHBvcnRlZEtleVNpemVz
LmFwcGVuZChrZXlnZW5NZW51SXRlbTUxMigpKTsKIH0KIAotU3RyaW5nIHNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2hhbGxlbmdlU3RyaW5nLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgc2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3RyaW5nJiBj
aGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKQogeyAgIAogICAgIC8vIFRoaXMgc3dpdGNo
IHN0YXRlbWVudCBtdXN0IGFsd2F5cyBiZSBzeW5jZWQgd2l0aCB0aGUgVUkgc3RyaW5ncyByZXR1
cm5lZCBieSBnZXRTdXBwb3J0ZWRLZXlTaXplcy4KICAgICBVSW50MzIga2V5U2l6ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMmRmNWIyYjJkYTcwOGYw
NDczMTRjNmIxNzQ3MzM5MmJlNzMzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlVSTC5oIgorCisjaW1wb3J0ICJDRlVSTEV4
dHJhcy5oIgorI2ltcG9ydCA8d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYv
dGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVJMOjpVUkwoTlNVUkwg
KnVybCkKK3sKKyAgICBpZiAoIXVybCkgeworICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBi
YXNlIFVSTCBoZXJlPworICAgIENTdHJpbmcgdXJsQnl0ZXM7CisgICAgZ2V0VVJMQnl0ZXMocmVp
bnRlcnByZXRfY2FzdDxDRlVSTFJlZj4odXJsKSwgdXJsQnl0ZXMpOworICAgIHBhcnNlKHVybEJ5
dGVzLmRhdGEoKSk7Cit9CisKK1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0Cit7CisgICAg
Ly8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCwgYmVjYXVzZSBhIHJlYWwgTlNV
Ukwgd291bGQgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCisgICAgLy8gV2UnbGwg
bmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCkuCisg
ICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKK30K
KworUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKK3sKKyAgICBp
ZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGlzRW1wdHkoKSkgewor
ICAgICAgICAvLyBXZSB1c2UgdGhlIHRvbGwtZnJlZSBicmlkZ2UgYmV0d2VlbiBOU1VSTCBhbmQg
Q0ZVUkwgdG8gY3JlYXRlIGEgQ0ZVUkxSZWYgc3VwcG9ydGluZyBib3RoIGVtcHR5IGFuZCBudWxs
IHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KGFkb3B0
TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSkuZ2V0KCkpOworICAgIH0KKwor
ICAgIFVSTENoYXJCdWZmZXIgYnVmZmVyOworICAgIGNvcHlUb0J1ZmZlcihidWZmZXIpOworICAg
IHJldHVybiBjcmVhdGVDRlVSTEZyb21CdWZmZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7Cit9CisKKworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKaW5kZXggOWU4YWRiNDg0ZTNlMmI3MTFiNmNiZmQw
ZGMxOWE5YjQ3Y2ExOGQ5Yy4uMjNhZGIxZTQ2YjA5NDJkOTI0MzVjYmE5YmI1NmVhNmM3ZjE4ZmE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0NvbmZpZ3VyYXRpb24uaApAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDMsMjUgKzQzLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUlRDSWNlU2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDSWNlU2VydmVyPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBjcmVhdGUoY29uc3Qg
S1VSTCYgdXJpLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgdXNlcm5h
bWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDSWNlU2VydmVyPiBjcmVhdGUoY29uc3QgVVJM
JiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDSWNlU2VydmVyKHVyaSwgY3Jl
ZGVudGlhbCwgdXNlcm5hbWUpKTsKICAgICB9CiAgICAgdmlydHVhbCB+UlRDSWNlU2VydmVyKCkg
eyB9CiAKLSAgICBjb25zdCBLVVJMJiB1cmkoKSB7IHJldHVybiBtX3VyaTsgfQorICAgIGNvbnN0
IFVSTCYgdXJpKCkgeyByZXR1cm4gbV91cmk7IH0KICAgICBjb25zdCBTdHJpbmcmIGNyZWRlbnRp
YWwoKSB7IHJldHVybiBtX2NyZWRlbnRpYWw7IH0KICAgICBjb25zdCBTdHJpbmcmIHVzZXJuYW1l
KCkgeyByZXR1cm4gbV91c2VybmFtZTsgfQogCiBwcml2YXRlOgotICAgIFJUQ0ljZVNlcnZlcihj
b25zdCBLVVJMJiB1cmksIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiB1
c2VybmFtZSkKKyAgICBSVENJY2VTZXJ2ZXIoY29uc3QgVVJMJiB1cmksIGNvbnN0IFN0cmluZyYg
Y3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKICAgICAgICAgOiBtX3VyaSh1cmkp
CiAgICAgICAgICwgbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiAgICAgICAgICwgbV91c2VybmFt
ZSh1c2VybmFtZSkKICAgICB7CiAgICAgfQogCi0gICAgS1VSTCBtX3VyaTsKKyAgICBVUkwgbV91
cmk7CiAgICAgU3RyaW5nIG1fY3JlZGVudGlhbDsKICAgICBTdHJpbmcgbV91c2VybmFtZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCmluZGV4IGRk
NDk2Y2E4YmVmYTU1MzFkYTc2NmE0YTM2YTY3ZGFjMzhiNWRkZmQuLmJmMDE2NmZkYzYzYzdlYTM0
MWVkYmRkNDc3MTZkNzg5YzE2MTgyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYkRhdGEuY3BwCkBAIC05NCwxMyArOTQsMTMgQEAgdm9pZCBCbG9iRGF0YTo6YXBw
ZW5kRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBs
ZW5ndGgKICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iRGF0YUl0ZW0ocGF0aCwgb2Zmc2V0LCBsZW5n
dGgsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOwogfQogCi12b2lkIEJsb2JEYXRhOjphcHBl
bmRCbG9iKGNvbnN0IEtVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0
aCkKK3ZvaWQgQmxvYkRhdGE6OmFwcGVuZEJsb2IoY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCiB7CiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJ
dGVtKHVybCwgb2Zmc2V0LCBsZW5ndGgpKTsKIH0KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkK
LXZvaWQgQmxvYkRhdGE6OmFwcGVuZFVSTChjb25zdCBLVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZz
ZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2
b2lkIEJsb2JEYXRhOjphcHBlbmRVUkwoY29uc3QgVVJMJiB1cmwsIGxvbmcgbG9uZyBvZmZzZXQs
IGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAg
ICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHVybCwgb2Zmc2V0LCBsZW5ndGgsIGV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YS5oCmluZGV4IGZkOTRmNTk5MWUyNjhhZTdmMjMxOWQ4ZTNiMDQyM2MwYjllNjY3
NzQuLmY2MDU0ODFkYTFlZDE4NTNlMzEyMmRjNjliNGNkNzJlZmM3YmUyNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNk
ZWZpbmUgQmxvYkRhdGFfaAogCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CkBAIC0xMDIsNyArMTAyLDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgfQogCiAg
ICAgLy8gQ29uc3RydWN0b3IgZm9yIEJsb2IgdHlwZS4KLSAgICBCbG9iRGF0YUl0ZW0oY29uc3Qg
S1VSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQorICAgIEJsb2JE
YXRhSXRlbShjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0
aCkKICAgICAgICAgOiB0eXBlKEJsb2IpCiAgICAgICAgICwgdXJsKHVybCkKICAgICAgICAgLCBv
ZmZzZXQob2Zmc2V0KQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBCbG9iRGF0YUl0ZW0gewog
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogICAgIC8vIENvbnN0cnVjdG9yIGZvciBVUkwgdHlw
ZSAoZS5nLiBGaWxlU3lzdGVtIGZpbGVzKS4KLSAgICBCbG9iRGF0YUl0ZW0oY29uc3QgS1VSTCYg
dXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKQorICAgIEJsb2JEYXRhSXRlbShjb25zdCBVUkwmIHVybCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSkKICAgICAgICAgOiB0eXBlKFVSTCkKICAgICAgICAgLCB1cmwodXJsKQogICAgICAgICAs
IG9mZnNldChvZmZzZXQpCkBAIC0xNDIsNyArMTQyLDcgQEAgc3RydWN0IEJsb2JEYXRhSXRlbSB7
CiAgICAgU3RyaW5nIHBhdGg7CiAKICAgICAvLyBGb3IgQmxvYiBvciBVUkwgdHlwZS4KLSAgICBL
VVJMIHVybDsKKyAgICBVUkwgdXJsOwogCiAgICAgbG9uZyBsb25nIG9mZnNldDsKICAgICBsb25n
IGxvbmcgbGVuZ3RoOwpAQCAtMTg0LDkgKzE4NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVu
ZERhdGEoUGFzc1JlZlB0cjxSYXdEYXRhPiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxl
bmd0aCk7CiAgICAgdm9pZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgdm9p
ZCBhcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBs
b25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgdm9pZCBh
cHBlbmRCbG9iKGNvbnN0IEtVUkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3Ro
KTsKKyAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiwgbG9uZyBsb25nIG9mZnNldCwgbG9u
ZyBsb25nIGxlbmd0aCk7CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHZvaWQgYXBwZW5k
VVJMKGNvbnN0IEtVUkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3Vi
bGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBV
UkwmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMjE3LDcgKzIxNyw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBCbG9iRGF0YUhhbmRsZShQYXNzT3duUHRyPEJsb2JE
YXRhPiwgbG9uZyBsb25nIHNpemUpOwotICAgIEtVUkwgbV9pbnRlcm5hbFVSTDsKKyAgICBVUkwg
bV9pbnRlcm5hbFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5oCmluZGV4IGU3OGJlMjMyZDgy
YmEyNjlhZGI0YjE4NTI4MWQ3YmIxNWM4YzgxNWYuLmRiMWM1NDY2MTQwMGQwYTI5M2YyOTgwNmIz
ZDQ1YWJlMDUwMmU3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnkuaApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iRGF0YTsKIGNsYXNzIEJsb2JTdG9yYWdlRGF0YTsKIGNsYXNzIEJsb2JSZWdpc3RyeTsK
LWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiAKIEJsb2JSZWdpc3RyeSYgYmxvYlJlZ2lzdHJ5KCk7
CiAKQEAgLTQ2LDEyICs0NiwxMiBAQCBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpOwogY2xh
c3MgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAgICAvLyBSZWdpc3RlcnMgYSBibG9iIFVSTCBy
ZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBibG9iIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgUGFzc093blB0cjxCbG9iRGF0YT4pID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFBhc3NPd25QdHI8Qmxv
YkRhdGE+KSA9IDA7CiAgICAgCiAgICAgLy8gUmVnaXN0ZXJzIGEgbmV3IGJsb2IgVVJMIHJlZmVy
cmluZyB0byB0aGUgYmxvYiBkYXRhIGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwu
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgc3JjVVJMKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IEtVUkwmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJC
bG9iVVJMKGNvbnN0IFVSTCYpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Jsb2JSZWdpc3Ry
eUltcGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAwYmI2NWFiZjFi
NGFkYmEzNmM5NzM1MTBkZDIxOWE2OGFjODUzZTU4Li44M2MxOTEzZjU0MGMwYTIwYWYxMzUyYzJm
YTk4YTgwOGQ5YzY3ZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEJsb2JS
ZWdpc3RyeUltcGw6OmFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iU3RvcmFnZURhdGEqIGJsb2JTdG9y
YWdlRGF0YSwgY29ucwogICAgIH0KIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3Rl
ckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkK
K3ZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBQ
YXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIHJlZ2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKQEAgLTE2
NCw3ICsxNjQsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsbwogICAgIG1fYmxvYnMuc2V0KHVy
bC5zdHJpbmcoKSwgYmxvYlN0b3JhZ2VEYXRhKTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlJbXBs
OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCit2
b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICByZWdp
c3RlckJsb2JSZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yKCk7CkBAIC0xNzcsMTMgKzE3NywxMyBA
QCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IEtVUkwmIHNyY1VSTCkKICAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIHNyYyk7
CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgS1VS
TCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fYmxvYnMucmVt
b3ZlKHVybC5zdHJpbmcoKSk7CiB9CiAKLUJsb2JTdG9yYWdlRGF0YSogQmxvYlJlZ2lzdHJ5SW1w
bDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK0Jsb2JTdG9yYWdl
RGF0YSogQmxvYlJlZ2lzdHJ5SW1wbDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1fYmxv
YnMuZ2V0KHVybC5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCmluZGV4IGIzNGRjNzZmMGE1OGQ2NTgyYjA3MTIxOGRm
ODcwZTcyYWJmYWUzN2IuLmUwYzMyYmUzMzhhNzdkNzBkODEyYzkzMmM0NDYyNDlkNDBiMTEzODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5oCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VI
YW5kbGVDbGllbnQ7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIEJsb2JSZWdpc3RyeUltcGwgOiBwdWJsaWMgQmxvYlJlZ2lzdHJ5IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5CbG9iUmVnaXN0cnlJbXBsKCk7CiAKLSAgICBCbG9iU3RvcmFnZURhdGEqIGdl
dEJsb2JEYXRhRnJvbVVSTChjb25zdCBLVVJMJikgY29uc3Q7CisgICAgQmxvYlN0b3JhZ2VEYXRh
KiBnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRy
PFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBSZXNvdXJjZUhhbmRsZUNsaWVudCopOwogCkBAIC01OCw5ICs1OCw5IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiwgY29uc3QgQmxv
YkRhdGFJdGVtTGlzdCYpOwogICAgIHZvaWQgYXBwZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdl
RGF0YSosIGNvbnN0IEJsb2JEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxv
bmcgbGVuZ3RoKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgS1VS
TCYsIFBhc3NPd25QdHI8QmxvYkRhdGE+KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiBzcmNVUkwpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBQYXNzT3duUHRy
PEJsb2JEYXRhPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChj
b25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc0Jsb2JSZWdpc3RyeUltcGwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gPiBtX2Jsb2JzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IGRiNzVmYmQyMTVmNDA0N2FkNWRmNGU0YmUxMGU4YTk3YWNmNWM0NTQu
LjM3Njk2NDEyZDFhMjVmMGVlM2UyNzg5OWUwNGMzMTJmNjg3N2ZmM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAKICNpbmNsdWRlICJGaWxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgor
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdl
LmNwcAppbmRleCA1ODhmZjViMmVjMGYyOWQyM2U0NjcyNGM1OGM1NDU1YjkyNTBkM2E4Li45NTk1
NzI0ODdlOTk5MzkxZmU1YzBhM2E3M2Q3ZGY1NWYyNmM4OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmNwcApAQCAtMjcs
NyArMjcsNyBAQAogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAKICNpbmNsdWRlICJD
cmVkZW50aWFsLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlByb3RlY3Rpb25TcGFjZUhhc2guaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBAIC02MSw3ICs2MSw3IEBAIHN0
YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwJiBwYXRoVG9EZWZhdWx0UHJvdGVj
dGlvblNwYWNlTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi1zdGF0aWMgU3RyaW5nIG9yaWdp
blN0cmluZ0Zyb21VUkwoY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIFN0cmluZyBvcmlnaW5TdHJp
bmdGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwucG9ydCgpKQogICAgICAg
ICByZXR1cm4gdXJsLnByb3RvY29sKCkgKyAiOi8vIiArIHVybC5ob3N0KCkgKyAnOicgKyBTdHJp
bmc6Om51bWJlcih1cmwucG9ydCgpKSArICcvJzsKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFN0
cmluZyBvcmlnaW5TdHJpbmdGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICByZXR1cm4gdXJs
LnByb3RvY29sKCkgKyAiOi8vIiArIHVybC5ob3N0KCkgKyAnLyc7CiB9CiAKLXN0YXRpYyBTdHJp
bmcgcHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMg
U3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21VUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgQVNTRVJUKHVybC5pc1ZhbGlkKCkpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHN0YXRpYyBTdHJp
bmcgcHJvdGVjdGlvblNwYWNlTWFwS2V5RnJvbVVSTChjb25zdCBLVVJMJiB1cmwpCiAgICAgcmV0
dXJuIGRpcmVjdG9yeVVSTDsKIH0KIAotdm9pZCBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlLCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29u
c3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3BhY2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChwcm90ZWN0aW9uU3BhY2Uu
aXNQcm94eSgpIHx8IHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogICAgIEFTU0VSVChw
cm90ZWN0aW9uU3BhY2UuaXNQcm94eSgpIHx8IHVybC5pc1ZhbGlkKCkpOwpAQCAtMTE0LDcgKzEx
NCw3IEBAIHZvaWQgQ3JlZGVudGlhbFN0b3JhZ2U6OnJlbW92ZShjb25zdCBQcm90ZWN0aW9uU3Bh
Y2UmIHByb3RlY3Rpb25TcGFjZSkKICAgICBwcm90ZWN0aW9uU3BhY2VUb0NyZWRlbnRpYWxNYXAo
KS5yZW1vdmUocHJvdGVjdGlvblNwYWNlKTsKIH0KIAotc3RhdGljIFBhdGhUb0RlZmF1bHRQcm90
ZWN0aW9uU3BhY2VNYXA6Oml0ZXJhdG9yIGZpbmREZWZhdWx0UHJvdGVjdGlvblNwYWNlRm9yVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3N0YXRpYyBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFw
OjppdGVyYXRvciBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTChjb25zdCBVUkwmIHVy
bCkKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAgICAgQVNT
RVJUKHVybC5pc1ZhbGlkKCkpOwpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyBQYXRoVG9EZWZh
dWx0UHJvdGVjdGlvblNwYWNlTWFwOjppdGVyYXRvciBmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFj
ZUZvclVSCiAgICAgfQogfQogCi1ib29sIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBDcmVkZW50aWFsU3Rv
cmFnZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKICAgICBBU1NFUlQo
dXJsLmlzVmFsaWQoKSk7CkBAIC0xNTUsNyArMTU1LDcgQEAgYm9vbCBDcmVkZW50aWFsU3RvcmFn
ZTo6c2V0KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwsIGNvbnN0IEtVUkwmIHVybCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotQ3JlZGVudGlhbCBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KGNv
bnN0IEtVUkwmIHVybCkKK0NyZWRlbnRpYWwgQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBQYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwOjppdGVyYXRv
ciBpdGVyID0gZmluZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwodXJsKTsKICAgICBpZiAo
aXRlciA9PSBwYXRoVG9EZWZhdWx0UHJvdGVjdGlvblNwYWNlTWFwKCkuZW5kKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxTdG9yYWdlLmgKaW5k
ZXggNDlhZjQ1MjUxOTkwN2VlNmM4MWIxN2VhZmZhZmQ2YjdjNmIzOWNlZC4uYjNiZDFmZDc4Mzky
YTI2N2UzMDlmZmNjY2Y0N2EyMWFlMDZlODk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuaApAQCAtMjksMTMgKzI5LDEzIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWRlbnRpYWw7Ci1jbGFzcyBLVVJMOwor
Y2xhc3MgVVJMOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogCiBjbGFzcyBDcmVkZW50aWFsU3Rv
cmFnZSB7CiBwdWJsaWM6CiAgICAgLy8gV2ViQ29yZSBzZXNzaW9uIGNyZWRlbnRpYWwgc3RvcmFn
ZS4KLSAgICBzdGF0aWMgdm9pZCBzZXQoY29uc3QgQ3JlZGVudGlhbCYsIGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYsIGNvbnN0IEtVUkwmKTsKKyAgICBzdGF0aWMgdm9pZCBzZXQoY29uc3QgQ3JlZGVu
dGlhbCYsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYsIGNvbnN0IFVSTCYpOwogICAgIHN0YXRpYyBD
cmVkZW50aWFsIGdldChjb25zdCBQcm90ZWN0aW9uU3BhY2UmKTsKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmUoY29uc3QgUHJvdGVjdGlvblNwYWNlJik7CiAKQEAgLTQ0LDggKzQ0LDggQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB3b3JrIGZvciBhdXRoZW50aWNhdGlvbiBzY2hlbWVz
IHRoYXQgc3VwcG9ydCBzZW5kaW5nIGNyZWRlbnRpYWxzIHdpdGhvdXQgd2FpdGluZyBmb3IgYSBy
ZXF1ZXN0LiBFLmcuLCBmb3IgSFRUUCBCYXNpYyBhdXRoZW50aWNhdGlvbiBzY2hlbWUKICAgICAv
LyBhIGNsaWVudCBzaG91bGQgYXNzdW1lIHRoYXQgYWxsIHBhdGhzIGF0IG9yIGRlZXBlciB0aGFu
IHRoZSBkZXB0aCBvZiBhIGtub3duIHByb3RlY3RlZCByZXNvdXJjZSBzaGFyZSBhcmUgd2l0aGlu
IHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UuCi0gICAgc3RhdGljIGJvb2wgc2V0KGNvbnN0IENy
ZWRlbnRpYWwmLCBjb25zdCBLVVJMJik7IC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJl
c3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFjZSwgc28gY3JlZGVudGlhbHMgY291bGQg
YmUgdXBkYXRlZC4KLSAgICBzdGF0aWMgQ3JlZGVudGlhbCBnZXQoY29uc3QgS1VSTCYpOworICAg
IHN0YXRpYyBib29sIHNldChjb25zdCBDcmVkZW50aWFsJiwgY29uc3QgVVJMJik7IC8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgVVJMIGNvcnJlc3BvbmRzIHRvIGEga25vd24gcHJvdGVjdGlvbiBzcGFj
ZSwgc28gY3JlZGVudGlhbHMgY291bGQgYmUgdXBkYXRlZC4KKyAgICBzdGF0aWMgQ3JlZGVudGlh
bCBnZXQoY29uc3QgVVJMJik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlTW9kZShib29s
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmlu
ZGV4IDQ5YmRjYTEwZDE0MGM1YzIxZWQzODZjZTFkNDA3YzFlMWRiOWQ5NTIuLmE1MTMyMWUzM2I3
MjllY2QwZGNhNTdiZTI4ZDc3NWM5NmM2M2FlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xNzgsMTggKzE3OCwxOCBAQCB2b2lkIEZvcm1E
YXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9uZyBsb25nIHN0
YXJ0LCBsb25nIGxvbgogICAgIG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudChmaWxl
bmFtZSwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBzaG91bGRHZW5l
cmF0ZUZpbGUpKTsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBLVVJMJiBi
bG9iVVJMKQordm9pZCBGb3JtRGF0YTo6YXBwZW5kQmxvYihjb25zdCBVUkwmIGJsb2JVUkwpCiB7
CiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGJsb2JVUkwpKTsKIH0KICNl
bmRpZgogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLXZvaWQgRm9ybURhdGE6OmFwcGVuZFVSTChj
b25zdCBLVVJMJiB1cmwpCit2b2lkIEZvcm1EYXRhOjphcHBlbmRVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgbV9lbGVtZW50cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KHVybCwgMCwgQmxvYkRh
dGFJdGVtOjp0b0VuZE9mRmlsZSwgaW52YWxpZEZpbGVUaW1lKCkpKTsKIH0KIAotdm9pZCBGb3Jt
RGF0YTo6YXBwZW5kVVJMUmFuZ2UoY29uc3QgS1VSTCYgdXJsLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2b2lkIEZv
cm1EYXRhOjphcHBlbmRVUkxSYW5nZShjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIHN0YXJ0LCBs
b25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewogICAg
IG1fZWxlbWVudHMuYXBwZW5kKEZvcm1EYXRhRWxlbWVudCh1cmwsIHN0YXJ0LCBsZW5ndGgsIGV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkpOwogfQpAQCAtMzI2LDEzICszMjYsMTMgQEAgU3RyaW5n
IEZvcm1EYXRhOjpmbGF0dGVuVG9TdHJpbmcoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKEJMT0Ip
Ci1zdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZvcm1EYXRhLCBjb25z
dCBLVVJMJiB1cmwpCitzdGF0aWMgdm9pZCBhcHBlbmRCbG9iUmVzb2x2ZWQoRm9ybURhdGEqIGZv
cm1EYXRhLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWJsb2JSZWdpc3RyeSgpLmlzQmxv
YlJlZ2lzdHJ5SW1wbCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiVHJpZWQgdG8gcmVzb2x2ZSBh
IGJsb2Igd2l0aG91dCBhIHVzYWJsZSByZWdpc3RyeSIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIEJsb2JTdG9yYWdlRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0
cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChLVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSk7CisgICAgQmxvYlN0b3JhZ2VEYXRhKiBibG9iRGF0YSA9IHN0YXRpY19j
YXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJM
KFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCkpOwogICAgIGlmICghYmxvYkRhdGEpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IGJsb2IgZGF0YSBmcm9tIGEgcmVnaXN0cnkiKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTIxLDcgKzUyMSw3IEBAIHN0YXRpYyBib29sIGRlY29kZUVs
ZW1lbnQoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQogCiAjaWYg
RU5BQkxFKEZJTEVfU1lTVEVNKQogICAgICAgICBpZiAodHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6
OmVuY29kZWRVUkwpCi0gICAgICAgICAgICBlbGVtZW50Lm1fdXJsID0gS1VSTChLVVJMKCksIGZp
bGVuYW1lT3JVUkwpOworICAgICAgICAgICAgZWxlbWVudC5tX3VybCA9IFVSTChVUkwoKSwgZmls
ZW5hbWVPclVSTCk7CiAgICAgICAgIGVsc2UKICNlbmRpZgogICAgICAgICBlbGVtZW50Lm1fZmls
ZW5hbWUgPSBmaWxlbmFtZU9yVVJMOwpAQCAtNTQwLDcgKzU0MCw3IEBAIHN0YXRpYyBib29sIGRl
Y29kZUVsZW1lbnQoRGVjb2RlciYgZGVjb2RlciwgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZVN0cmluZyhibG9iVVJMU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgZWxlbWVudC5tX3VybCA9IEtVUkwoS1VSTCgpLCBibG9iVVJMU3RyaW5nKTsKKyAgICAgICAg
ZWxlbWVudC5tX3VybCA9IFVSTChVUkwoKSwgYmxvYlVSTFN0cmluZyk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuaAppbmRleCA3Y2U0NmZhNjliODczNTdhNmU4ZDczZDZiMGVkZTJmN2U2NTA1YjNiLi45N2Y0
NGMyZGQ1OWU3OTY2NTU2ZjIzMmYyZjk2NmU3OWQ1ODc3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIEZv
cm1EYXRhX2gKICNkZWZpbmUgRm9ybURhdGFfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zOSwxMiArMzksMTIgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBmaWxlU3RhcnQsIGxvbmcgbG9uZyBmaWxlTGVuZ3RoLCBk
b3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZp
bGUpIDogbV90eXBlKGVuY29kZWRGaWxlKSwgbV9maWxlbmFtZShmaWxlbmFtZSksIG1fZmlsZVN0
YXJ0KGZpbGVTdGFydCksIG1fZmlsZUxlbmd0aChmaWxlTGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdl
bmVyYXRlRmlsZShzaG91bGRHZW5lcmF0ZUZpbGUpIHsgfQotICAgIGV4cGxpY2l0IEZvcm1EYXRh
RWxlbWVudChjb25zdCBLVVJMJiBibG9iVVJMKSA6IG1fdHlwZShlbmNvZGVkQmxvYiksIG1fdXJs
KGJsb2JVUkwpIHsgfQorICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIGJs
b2JVUkwpIDogbV90eXBlKGVuY29kZWRCbG9iKSwgbV91cmwoYmxvYlVSTCkgeyB9CiAjZWxzZQog
ICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdl
bmVyYXRlRmlsZSkgOiBtX3R5cGUoZW5jb2RlZEZpbGUpLCBtX2ZpbGVuYW1lKGZpbGVuYW1lKSwg
bV9zaG91bGRHZW5lcmF0ZUZpbGUoc2hvdWxkR2VuZXJhdGVGaWxlKSB7IH0KICNlbmRpZgogI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgS1VSTCYgdXJs
LCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lKSA6IG1fdHlwZShlbmNvZGVkVVJMKSwgbV91cmwodXJsKSwgbV9maWxl
U3RhcnQoc3RhcnQpLCBtX2ZpbGVMZW5ndGgobGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRl
RmlsZShmYWxzZSkgeyB9CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFVSTCYgdXJsLCBsb25n
IGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lKSA6IG1fdHlwZShlbmNvZGVkVVJMKSwgbV91cmwodXJsKSwgbV9maWxlU3RhcnQo
c3RhcnQpLCBtX2ZpbGVMZW5ndGgobGVuZ3RoKSwgbV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpLCBtX3Nob3VsZEdlbmVyYXRlRmlsZShm
YWxzZSkgeyB9CiAjZW5kaWYKIAogICAgIGVudW0gVHlwZSB7CkBAIC02MCw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICBWZWN0b3I8Y2hhcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX2ZpbGVuYW1lOwog
I2lmIEVOQUJMRShCTE9CKQotICAgIEtVUkwgbV91cmw7IC8vIEZvciBCbG9iIG9yIFVSTC4KKyAg
ICBVUkwgbV91cmw7IC8vIEZvciBCbG9iIG9yIFVSTC4KICAgICBsb25nIGxvbmcgbV9maWxlU3Rh
cnQ7CiAgICAgbG9uZyBsb25nIG1fZmlsZUxlbmd0aDsKICAgICBkb3VibGUgbV9leHBlY3RlZEZp
bGVNb2RpZmljYXRpb25UaW1lOwpAQCAtMTI0LDExICsxMjQsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRl
RmlsZSA9IGZhbHNlKTsKICNpZiBFTkFCTEUoQkxPQikKICAgICB2b2lkIGFwcGVuZEZpbGVSYW5n
ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5n
dGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVG
aWxlID0gZmFsc2UpOwotICAgIHZvaWQgYXBwZW5kQmxvYihjb25zdCBLVVJMJiBibG9iVVJMKTsK
KyAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKICNlbmRpZgogI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICB2b2lkIGFwcGVuZFVSTChjb25zdCBLVVJMJik7Ci0gICAg
dm9pZCBhcHBlbmRVUkxSYW5nZShjb25zdCBLVVJMJiwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKKyAgICB2b2lkIGFw
cGVuZFVSTChjb25zdCBVUkwmKTsKKyAgICB2b2lkIGFwcGVuZFVSTFJhbmdlKGNvbnN0IFVSTCYs
IGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZSk7CiAjZW5kaWYKICAgICBjaGFyKiBleHBhbmREYXRhU3RvcmUoc2l6ZV90KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNv
b2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tp
ZUphci5oCmluZGV4IDkxZDUxZmM5YTA0MDk2N2VkNTBiMTlmMjcxNTRlMjIyNGVmYjVmYzMuLjVl
MTIyYzE5NGZjODY2YjIyY2JmMWQ3MDI5OWE5ZGUxNjQzMDY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgKQEAgLTMzLDE4
ICszMywxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247CiBzdHJ1Y3QgQ29va2llOwogCiAvLyBG
SVhNRTogVGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBtZW1i
ZXIgZnVuY3Rpb25zLgogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci12b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKLWJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKLWJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsK
LXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJik7Cit2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBV
UkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jik7Cit2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmKTsKIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwogdm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSk7CiB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Byb3h5U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3h5
U2VydmVyLmgKaW5kZXggOGY3NjEyZTRlOTFiYTZjZjFlYzFjMzY1NGEwMjdkZGNmY2NlNjYyNy4u
N2MxOTE0ZWJhODQ1NzMyZGNhMmI1YmExZDc1OTkzNjE3NTBlNmQ2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuaApAQCAtMzEsNyArMzEsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBO
ZXR3b3JraW5nQ29udGV4dDsKIAogLy8gUmVwcmVzZW50cyBhIHNpbmdsZSBwcm94eSBzZXJ2ZXIu
CkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiB9OwogCiAvLyBSZXR1cm4gYSB2ZWN0b3Igb2Yg
cHJveHkgc2VydmVycyBmb3IgdGhlIGdpdmVuIFVSTC4KLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJv
eHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopOwor
VmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgVVJMJiwgY29uc3Qg
TmV0d29ya2luZ0NvbnRleHQqKTsKIAogLy8gQ29udmVydHMgdGhlIGdpdmVuIHZlY3RvciBvZiBw
cm94eSBzZXJ2ZXJzIHRvIGEgUEFDIHN0cmluZywgYXMgZGVzY3JpYmVkIGluCiAvLyBodHRwOi8v
d2ViLmFyY2hpdmUub3JnL3dlYi8yMDA2MDQyNDAwNTAzNy93cC5uZXRzY2FwZS5jb20vZW5nL21v
emlsbGEvMi4wL3JlbG5vdGVzL2RlbW8vcHJveHktbGl2ZS5odG1sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCmluZGV4IGNkNzY4ZjI5
MGQxOGU5NmIwMzE0OWIwYzA0OTVmYTc4OTllODNjYTYuLjI4Y2YwOTczOTNlZGViYThkZDYyMTA4
YzRhY2U2OGYyNTBjOTc1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBSZXNvdXJj
ZUhhbmRsZTo6c2hvdWxkQ29udGVudFNuaWZmKCkgY29uc3QKICAgICByZXR1cm4gZC0+bV9zaG91
bGRDb250ZW50U25pZmY7CiB9CiAKLWJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3VsZENvbnRlbnRT
bmlmZlVSTChjb25zdCBLVVJMJiB1cmwpCitib29sIFJlc291cmNlSGFuZGxlOjpzaG91bGRDb250
ZW50U25pZmZVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlm
IChzaG91bGRGb3JjZUNvbnRlbnRTbmlmZmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAppbmRleCBlOTZhZTc5ZmE4MjIyMzMwYTA5YzM3
MTAyZjVmNDM2ODk4ODA4MTU4Li45MTY3ODRlNWVmMWVmMWQ3MzFmZDViZGJlZTJlZjk5MDE2MDlk
ODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5oCkBAIC04Miw3ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEZyYW1lOwotY2xh
c3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmKCkgY29uc3Q7Ci0g
ICAgc3RhdGljIGJvb2wgc2hvdWxkQ29udGVudFNuaWZmVVJMKGNvbnN0IEtVUkwmKTsKKyAgICBz
dGF0aWMgYm9vbCBzaG91bGRDb250ZW50U25pZmZVUkwoY29uc3QgVVJMJik7CiAKICAgICBzdGF0
aWMgdm9pZCBmb3JjZUNvbnRlbnRTbmlmZmluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKaW5kZXggY2UxMzQ4
NmJlZWJjYWMyM2I2NzE4NDQwMTgzYjM2MTFjNGRlZjhiMC4uYzBjYTg4YWMxYjQ0ZjNjMjJmZTcx
ZTA2ZjQzZjJkNTdkMDFlZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaApAQCAtNDEsNyArNDEsNyBAQCBPQkpD
X0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiAgICAgY2xhc3MgQ3JlZGVudGlhbDsKLSAgICBj
bGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAg
ICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmgKaW5kZXggZGU1MmQwM2U4ZDcwMzRmOTJjNjZkMDA5YzU2MWI5YjMzMTJjYjA3My4u
MTU0NjgxMDdlNDNiOWM3NzZhODYyNWY1MjY3N2M5NjVmY2UwNDVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAs
IG1fc2NoZWR1bGVkRmFpbHVyZVR5cGUoUmVzb3VyY2VIYW5kbGU6Ok5vRmFpbHVyZSkKICAgICAg
ICAgICAgICwgbV9mYWlsdXJlVGltZXIobG9hZGVyLCAmUmVzb3VyY2VIYW5kbGU6OmZpcmVGYWls
dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZpcnN0UmVx
dWVzdC51cmwoKTsKKyAgICAgICAgICAgIGNvbnN0IFVSTCYgdXJsID0gbV9maXJzdFJlcXVlc3Qu
dXJsKCk7CiAgICAgICAgICAgICBtX3VzZXIgPSB1cmwudXNlcigpOwogICAgICAgICAgICAgbV9w
YXNzID0gdXJsLnBhc3MoKTsKICAgICAgICAgICAgIG1fZmlyc3RSZXF1ZXN0LnJlbW92ZUNyZWRl
bnRpYWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCAxOTVmNGFlMWRkNDNjYjc0NzRjYzAyOGI4MThk
N2FiOWYzM2RiZmRmLi40ZWY5ZmE5ZDllZjMwNWEwMDQ2NWJmNGI2NTA2NDQyN2RjNmMxNGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAKQEAgLTExMywxNCArMTEzLDE0IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gbV91cmwuaXNOdWxsKCk7CiB9CiAKLWNv
bnN0IEtVUkwmIFJlc291cmNlUmVxdWVzdEJhc2U6OnVybCgpIGNvbnN0IAorY29uc3QgVVJMJiBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjp1cmwoKSBjb25zdCAKIHsKICAgICB1cGRhdGVSZXNvdXJjZVJl
cXVlc3QoKTsgCiAgICAgCiAgICAgcmV0dXJuIG1fdXJsOwogfQogCi12b2lkIFJlc291cmNlUmVx
dWVzdEJhc2U6OnNldFVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldFVSTChjb25zdCBVUkwmIHVybCkKIHsgCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCk7IAogCkBAIC0xODIsMTQgKzE4MiwxNCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNl
dFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKQogICAgICAgICBtX3BsYXRm
b3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIAotY29uc3QgS1VSTCYgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSBjb25zdAorY29uc3QgVVJMJiBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0CiB7CiAgICAgdXBkYXRl
UmVzb3VyY2VSZXF1ZXN0KCk7IAogICAgIAogICAgIHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29r
aWVzOwogfQogCi12b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEZpcnN0UGFydHlGb3JDb29r
aWVzKGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQordm9pZCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzKQogeyAKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5k
ZXggMDE4NDU3NDMzNjU1NTAzYWQ4OWQ1YTkyNTM1YzcxNjVhNDVjMmM1Ny4uMTQwNTdjYjI3ZjRm
ODIzZTU5YWJjNDJhODgwZjg0MDFjNWU1YTBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRQcmlvcml0eS5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtNjQsOCArNjQsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldFVSTChjb25zdCBLVVJMJiB1cmwpOworICAgICAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmIHVybCk7
CiAKICAgICAgICAgdm9pZCByZW1vdmVDcmVkZW50aWFscygpOwogCkBAIC03NSw4ICs3NSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZG91YmxlIHRpbWVvdXRJbnRlcnZhbCgpIGNv
bnN0OyAvLyBNYXkgcmV0dXJuIDAgd2hlbiB1c2luZyBwbGF0Zm9ybSBkZWZhdWx0LgogICAgICAg
ICB2b2lkIHNldFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKTsKICAgICAg
ICAgCi0gICAgICAgIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3Q7Ci0g
ICAgICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMpOworICAgICAgICBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBTdHJpbmcmIGh0
dHBNZXRob2QoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRIVFRQTWV0aG9kKGNvbnN0IFN0cmlu
ZyYgaHR0cE1ldGhvZCk7CkBAIC0xNTgsNyArMTU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3RCYXNlKGNvbnN0
IEtVUkwmIHVybCwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5KQorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3RCYXNlKGNvbnN0IFVSTCYgdXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kpCiAgICAgICAgICAgICA6IG1fdXJsKHVybCkKICAgICAgICAgICAgICwgbV9j
YWNoZVBvbGljeShwb2xpY3kpCiAgICAgICAgICAgICAsIG1fdGltZW91dEludGVydmFsKHNfZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbCkKQEAgLTE4MSwxMSArMTgxLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gVGhlIFJlc291cmNlUmVxdWVzdCBzdWJjbGFzcyBtYXkgInNoYWRv
dyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKICAgICAg
ICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICBLVVJMIG1f
dXJsOworICAgICAgICBVUkwgbV91cmw7CiAKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQ
b2xpY3kgbV9jYWNoZVBvbGljeTsKICAgICAgICAgZG91YmxlIG1fdGltZW91dEludGVydmFsOyAv
LyAwIGlzIGEgbWFnaWMgdmFsdWUgZm9yIHBsYXRmb3JtIGRlZmF1bHQgb24gcGxhdGZvcm1zIHRo
YXQgaGF2ZSBvbmUuCi0gICAgICAgIEtVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICAg
ICAgVVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgICAgIFN0cmluZyBtX2h0dHBNZXRo
b2Q7CiAgICAgICAgIEhUVFBIZWFkZXJNYXAgbV9odHRwSGVhZGVyRmllbGRzOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5OwpAQCAtMjE1LDExICsyMTUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNl
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgogICAgICAgICBDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlKCkgeyB9Ci0gICAgICAgIEtVUkwgbV91cmw7Cisg
ICAgICAgIFVSTCBtX3VybDsKIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBt
X2NhY2hlUG9saWN5OwogICAgICAgICBkb3VibGUgbV90aW1lb3V0SW50ZXJ2YWw7Ci0gICAgICAg
IEtVUkwgbV9maXJzdFBhcnR5Rm9yQ29va2llczsKKyAgICAgICAgVVJMIG1fZmlyc3RQYXJ0eUZv
ckNvb2tpZXM7CiAKICAgICAgICAgU3RyaW5nIG1faHR0cE1ldGhvZDsKICAgICAgICAgT3duUHRy
PENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCmluZGV4IGU0ZTYzYmNiNGMxOGFkYzc4YmY0ZWI4M2UwYTNhNzAzOGVlMjE3OGEuLjQwNTIy
YTEzZDYzN2FkZmFmZWNhZmM4OTZmZGY1YTcyMjU0YjA4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBA
IC02Nyw3ICs2Nyw3IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZSgpCiB7CiB9CiAKLVJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3Rl
ZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKQorUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKICAgICA6IG1fdXJsKHVybCkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBt
X2V4cGVjdGVkQ29udGVudExlbmd0aChleHBlY3RlZExlbmd0aCkKQEAgLTEzOCwxNCArMTM4LDE0
IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNvbnN0CiAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdDYXNlKHByb3RvY29sLCAiaHR0cCIpICB8fCBlcXVhbElnbm9yaW5nQ2Fz
ZShwcm90b2NvbCwgImh0dHBzIik7CiB9CiAKLWNvbnN0IEtVUkwmIFJlc291cmNlUmVzcG9uc2VC
YXNlOjp1cmwoKSBjb25zdAorY29uc3QgVVJMJiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6dXJsKCkg
Y29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIAogICAgIHJldHVybiBt
X3VybDsgCiB9CiAKLXZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNldFVSTChjb25zdCBLVVJM
JiB1cmwpCit2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgbGF6eUluaXQoQ29tbW9uRmllbGRzT25seSk7CiAgICAgbV9pc051bGwgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuaAppbmRleCA0OWJkYzcwMzg5NzhjNGNmY2VkOGFkNjBhMzM0YTZiNzQ2Yjhm
OWY4Li4yY2ZiNTNhOTM3ZmI0YWI3ZmE2Yjg2YjQ3OTZiYjg2ZTI0ZWI3ZWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjZGVmaW5lIFJlc291cmNlUmVzcG9uc2VCYXNlX2gKIAog
I2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkVGltaW5nLmgiCiAKICNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgpAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc051bGwo
KSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQogICAgIGJvb2wgaXNIVFRQKCkgY29uc3Q7CiAK
LSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKLSAgICB2b2lkIHNldFVSTChjb25zdCBLVVJM
JiB1cmwpOworICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVUkwoY29u
c3QgVVJMJiB1cmwpOwogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CkBAIC0xMzAsNyArMTMw
LDcgQEAgcHJvdGVjdGVkOgogICAgIH07CiAKICAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZSgpOwot
ICAgIFJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNv
ZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpOworICAgIFJlc291cmNlUmVzcG9uc2VC
YXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhw
ZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSk7CiAKICAgICB2b2lkIGxhenlJbml0KEluaXRMZXZlbCkgY29uc3Q7CiAKQEAg
LTE0MCw3ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhlIFJlc291cmNlUmVzcG9uc2Ug
c3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNvbXBhcmUgcGxhdGZvcm0gc3Bl
Y2lmaWMgZmllbGRzCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7
CiAgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIFN0cmluZyBtX3Rl
eHRFbmNvZGluZ05hbWU7CkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGFCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKCkgeyB9Ci0g
ICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAg
ICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogICAgIFN0cmluZyBtX3RleHRF
bmNvZGluZ05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcAppbmRleCAyYzAyNzRkYzU0Y2Y0MjJlMGJh
NjJjMDJjMjM4ODNmYTg2ODViNDhiLi5lN2MxMTM5ZGRmODI2ODY0N2M5M2VkYTExYTA3NTNhOTcz
MTk0N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tl
dFN0cmVhbUhhbmRsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjb25zdCB1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQg
KiAxMDI0OwogCi1Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlOjpTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IG1fdXJsKHVybCkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fc3RhdGUoQ29ubmVjdGluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVC
YXNlLmgKaW5kZXggN2RlZDRkY2IyMjY2ZGUzYWVjMGE1MDg2OWExOWQ4ZjQ1M2ZhM2YwNi4uZjc5
NDcyMDIxYmJlOTM1NDk1OWI0MDk2MWIzZjFmNTY4NDAwMzVmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmgK
QEAgLTMyLDcgKzMyLDcgQEAKICNpZm5kZWYgU29ja2V0U3RyZWFtSGFuZGxlQmFzZV9oCiAjZGVm
aW5lIFNvY2tldFN0cmVhbUhhbmRsZUJhc2VfaAogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogCkBAIC01NiwxMyAr
NTYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldENsaWVudChTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlQmFzZShjb25zdCBLVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7
CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50Kik7CiAKICAgICAgICAgYm9vbCBzZW5kUGVuZGluZ0RhdGEoKTsKICAgICAg
ICAgdmlydHVhbCBpbnQgcGxhdGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSA9IDA7CiAKLSAgICAg
ICAgS1VSTCBtX3VybDsKKyAgICAgICAgVVJMIG1fdXJsOwogICAgICAgICBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIG1fY2xpZW50OwogICAgICAgICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAq
IDEwMjQ+IG1fYnVmZmVyOwogICAgICAgICBTb2NrZXRTdHJlYW1TdGF0ZSBtX3N0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50LmgKaW5kZXggYmZmNjY3NmI5NmFiZGNhZDJkYTQ5YzRmZGI0Zjk2NGNkMWE1
ODEwMC4uNWE4YzRkNTBlZTJlYzJhNzkxOTA2NTZhYTRmYTExYTEyNjQzZjg4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNs
YXNzIFVSTDsKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKICAgICBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAppbmRleCA2
NjFjMGVmMThmY2U5NmNiMjgwYmRmNDY4NmVjMDJhMThmMzVhYmU0Li42MTU5MWZjM2EzMjQ3OGEy
OGIwY2Y4NmQ4ZmYwYTQ1MmE0ZmViZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L0Nvb2tpZUphckJsYWNrQmVy
cnkuY3BwCkBAIC0yNCwyOCArMjQsMjggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogewogICAgIGNvb2tpZU1hbmFnZXIoKS5zZXRDb29raWVzKHVybCwgdmFsdWUsIE5vSHR0
cE9ubHlDb29raWUpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gJ0h0dHBP
bmx5JyBjb29raWVzIHNob3VsZCBubyBiZSBhY2Nlc3NpYmxlIGZyb20gc2NyaXB0cywgc28gd2Ug
ZmlsdGVyIHRoZW0gb3V0IGhlcmUuCiAgICAgcmV0dXJuIGNvb2tpZU1hbmFnZXIoKS5nZXRDb29r
aWUodXJsLCBOb0h0dHBPbmx5Q29va2llKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZU1hbmFnZXIo
KS5nZXRDb29raWUodXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKIH0KIAotYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
VVJMJiAvKnVybCovKQogewogICAgIHJldHVybiAhY29va2llTWFuYWdlcigpLmNvb2tpZUphcigp
LmlzRW1wdHkoKTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYg
dXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICBWZWN0b3I8UmVmUHRyPFBh
cnNlZENvb2tpZT4gPiByZXN1bHQ7CiAgICAgY29va2llTWFuYWdlcigpLmdldFJhd0Nvb2tpZXMo
cmVzdWx0LCB1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOwpAQCAtNTQsNyArNTQsNyBAQCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgY29va2ll
TWFuYWdlcigpLnJlbW92ZUNvb2tpZVdpdGhOYW1lKHVybCwgbmFtZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvQ3JlZGVudGlhbEJh
Y2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5jcHAKaW5kZXggMTAzNTg5NmFiN2E1NzJkYmI5OWRh
M2I2OTlkZWQxOTZkNjNmZWNiMC4uMTY2MWI2NGYyOTFmNjMxODI3YTBjMDE1YjkzZjQyMDIwYzYx
NzhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2Jl
cnJ5L0NyZWRlbnRpYWxCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9DcmVkZW50aWFsQmFja2luZ1N0b3JlLmNwcApAQCAtMjIs
NyArMjIsNyBAQAogI2lmIEVOQUJMRShCTEFDS0JFUlJZX0NSRURFTlRJQUxfUEVSU0lTVCkKICNp
bmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiUHJvdGVjdGlvblNw
YWNlSGFzaC5oIgogI2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybUVuY3J5cHRvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwCmluZGV4IDE2YWUyNGFh
YzFmZGVkYzVlOTZiYmU4YWVlNGYzNWU5ZDRiNmIzNGEuLjcwZjNjMzZhZjFiOWIzZjE0YjAzYjdl
NzVlZDAxNjcxZjU4M2U2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKQEAgLTI4LDcgKzI4LDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk1JTUVTbmlmZmluZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBl
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrTWFuYWdlci5oIgpAQCAtMTE3LDcgKzExNyw3
IEBAIE5ldHdvcmtKb2I6On5OZXR3b3JrSm9iKCkKIAogdm9pZCBOZXR3b3JrSm9iOjppbml0aWFs
aXplKGludCBwbGF5ZXJJZCwKICAgICBjb25zdCBTdHJpbmcmIHBhZ2VHcm91cE5hbWUsCi0gICAg
Y29uc3QgS1VSTCYgdXJsLAorICAgIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpOZXR3b3JrUmVxdWVzdCYgcmVxdWVzdCwKICAgICBQYXNzUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBoYW5kbGUsCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtT
dHJlYW1GYWN0b3J5KiBzdHJlYW1GYWN0b3J5LApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgTmV0
d29ya0pvYjo6aGFuZGxlTm90aWZ5TXVsdGlwYXJ0SGVhZGVyUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0CiAKIHZvaWQgTmV0d29ya0pvYjo6aGFuZGxlU2V0Q29va2llSGVhZGVy
KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgS1VSTCB1cmwgPSBtX3Jlc3BvbnNlLnVybCgp
OworICAgIFVSTCB1cmwgPSBtX3Jlc3BvbnNlLnVybCgpOwogICAgIENvb2tpZU1hbmFnZXImIG1h
bmFnZXIgPSBjb29raWVNYW5hZ2VyKCk7CiAgICAgaWYgKChtYW5hZ2VyLmNvb2tpZVBvbGljeSgp
ID09IENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikK
ICAgICAgICAgJiYgKG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2ll
cygpICE9IHVybCkKQEAgLTYxOCw3ICs2MTgsNyBAQCBib29sIE5ldHdvcmtKb2I6OnJldHJ5QXNG
VFBEaXJlY3RvcnkoKQogCiAgICAgQVNTRVJUKG1faGFuZGxlKTsKICAgICBSZXNvdXJjZVJlcXVl
c3QgbmV3UmVxdWVzdCA9IG1faGFuZGxlLT5maXJzdFJlcXVlc3QoKTsKLSAgICBLVVJMIHVybCA9
IG5ld1JlcXVlc3QudXJsKCk7CisgICAgVVJMIHVybCA9IG5ld1JlcXVlc3QudXJsKCk7CiAgICAg
dXJsLnNldFBhdGgodXJsLnBhdGgoKSArICIvIik7CiAgICAgbmV3UmVxdWVzdC5zZXRVUkwodXJs
KTsKICAgICBuZXdSZXF1ZXN0LnNldE11c3RIYW5kbGVJbnRlcm5hbGx5KHRydWUpOwpAQCAtNjcy
LDcgKzY3Miw3IEBAIGJvb2wgTmV0d29ya0pvYjo6aGFuZGxlUmVkaXJlY3QoKQogICAgIGlmIChs
b2NhdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCBuZXdV
UkwobV9yZXNwb25zZS51cmwoKSwgbG9jYXRpb24pOworICAgIFVSTCBuZXdVUkwobV9yZXNwb25z
ZS51cmwoKSwgbG9jYXRpb24pOwogICAgIGlmICghbmV3VVJMLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC04MTMsNyArODEzLDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVl
c3RSZXN1bHQgTmV0d29ya0pvYjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlv
blMKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm4gU2VuZFJlcXVlc3RDYW5jZWxs
ZWQ7CiAKLSAgICBLVVJMIG5ld1VSTCA9IG1fcmVzcG9uc2UudXJsKCk7CisgICAgVVJMIG5ld1VS
TCA9IG1fcmVzcG9uc2UudXJsKCk7CiAgICAgaWYgKCFuZXdVUkwuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gU2VuZFJlcXVlc3RDYW5jZWxsZWQ7CiAKQEAgLTgzMiwxMCArODMyLDEwIEBAIE5l
dHdvcmtKb2I6OlNlbmRSZXF1ZXN0UmVzdWx0IE5ldHdvcmtKb2I6OnNlbmRSZXF1ZXN0V2l0aENy
ZWRlbnRpYWxzKFByb3RlY3Rpb25TCiAgICAgICAgICAgICBob3N0ID0gbV9yZXNwb25zZS51cmwo
KS5ob3N0KCk7CiAgICAgICAgICAgICBwb3J0ID0gbV9yZXNwb25zZS51cmwoKS5wb3J0KCk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBwcm94eUluZm8gcmV0dXJucyBob3N0OnBv
cnQsIHdpdGhvdXQgYSBwcm90b2NvbC4gS1VSTCBjYW4ndCBwYXJzZSB0aGlzLCBzbyBzdGljayBo
dHRwCisgICAgICAgICAgICAvLyBwcm94eUluZm8gcmV0dXJucyBob3N0OnBvcnQsIHdpdGhvdXQg
YSBwcm90b2NvbC4gVVJMIGNhbid0IHBhcnNlIHRoaXMsIHNvIHN0aWNrIGh0dHAKICAgICAgICAg
ICAgIC8vIG9uIHRoZSBmcm9udC4KICAgICAgICAgICAgIC8vIChXZSBjb3VsZCBzcGxpdCBpbnRv
IGhvc3QgYW5kIHBvcnQgYnkgaGFuZCwgYnV0IHRoYXQgZ2V0cyBoYXJkIHRvIHBhcnNlIHdpdGgg
SVB2NiB1cmxzLAotICAgICAgICAgICAgLy8gc28gYmV0dGVyIHRvIHJldXNlIEtVUkwncyBwYXJz
aW5nLikKKyAgICAgICAgICAgIC8vIHNvIGJldHRlciB0byByZXVzZSBVUkwncyBwYXJzaW5nLikK
ICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcHJveHlBZGRyZXNzOwogICAgICAgICAgICAgaWYg
KHR5cGUgPT0gUHJvdGVjdGlvblNwYWNlUHJveHlIVFRQKQogICAgICAgICAgICAgICAgIHByb3h5
QWRkcmVzcy5hcHBlbmQoImh0dHA6Ly8iKTsKQEAgLTg0Myw3ICs4NDMsNyBAQCBOZXR3b3JrSm9i
OjpTZW5kUmVxdWVzdFJlc3VsdCBOZXR3b3JrSm9iOjpzZW5kUmVxdWVzdFdpdGhDcmVkZW50aWFs
cyhQcm90ZWN0aW9uUwogICAgICAgICAgICAgICAgIHByb3h5QWRkcmVzcy5hcHBlbmQoImh0dHBz
Oi8vIik7CiAgICAgICAgICAgICBwcm94eUFkZHJlc3MuYXBwZW5kKHByb3h5SW5mby5hZGRyZXNz
KTsKIAotICAgICAgICAgICAgS1VSTCBwcm94eVVSTChLVVJMKCksIHByb3h5QWRkcmVzcy50b1N0
cmluZygpKTsKKyAgICAgICAgICAgIFVSTCBwcm94eVVSTChVUkwoKSwgcHJveHlBZGRyZXNzLnRv
U3RyaW5nKCkpOwogICAgICAgICAgICAgaG9zdCA9IHByb3h5VVJMLmhvc3QoKTsKICAgICAgICAg
ICAgIHBvcnQgPSBwcm94eVVSTC5wb3J0KCk7CiAgICAgICAgIH0KQEAgLTEwMjgsNyArMTAyOCw3
IEBAIHZvaWQgTmV0d29ya0pvYjo6ZmlyZURlbGV0ZUpvYlRpbWVyKFRpbWVyPE5ldHdvcmtKb2I+
KikKICAgICBOZXR3b3JrTWFuYWdlcjo6aW5zdGFuY2UoKS0+ZGVsZXRlSm9iKHRoaXMpOwogfQog
Ci12b2lkIE5ldHdvcmtKb2I6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlc3VsdCByZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCit2b2lk
IE5ldHdvcmtKb2I6Om5vdGlmeUNoYWxsZW5nZVJlc3VsdChjb25zdCBVUkwmIHVybCwgY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UmVzdWx0IHJlc3VsdCwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKIHsKICAgICBBU1NF
UlQodXJsLmlzVmFsaWQoKSk7CiAgICAgQVNTRVJUKHVybCA9PSBtX3Jlc3BvbnNlLnVybCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9O
ZXR3b3JrSm9iLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
TmV0d29ya0pvYi5oCmluZGV4IDNlY2NiMWE0MmI3NzlmMDgwNTgxNDAyNzIyNzUyZDFhYjU4NGY3
MjQuLmZhMzRmNDllNTM5MThkNjlkMTBjYjg3MzMzMTQyZTBlNDZjYjBhZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtK
b2IuaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWRl
bnRpYWw7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAKQEAgLTU0LDcgKzU0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBpbml0aWFsaXplKGludCBwbGF5ZXJJZCwKICAgICAgICAgY29u
c3QgU3RyaW5nJiBwYWdlR3JvdXBOYW1lLAotICAgICAgICBjb25zdCBLVVJMJiwKKyAgICAgICAg
Y29uc3QgVVJMJiwKICAgICAgICAgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtS
ZXF1ZXN0JiwKICAgICAgICAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4sCiAgICAgICAgIEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrU3RyZWFtRmFjdG9yeSosCkBAIC05Miw3ICs5Miw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2V4
dGVuZGVkU3RhdHVzQ29kZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlN0cmluZyBtaW1lVHlwZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNo
YWxsZW5nZVJlc3VsdChjb25zdCBLVVJMJiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VSZXN1bHQsIGNvbnN0IENyZWRlbnRpYWwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5Q2hhbGxlbmdlUmVzdWx0KGNvbnN0IFVSTCYsIGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVzdWx0LCBjb25zdCBDcmVkZW50aWFsJik7
CiAKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgcHVy
ZSB2aXJ0dWFscy4KICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0
d29ya01hbmFnZXIuY3BwCmluZGV4IDkyMzE0ZjA1YjNiMDdiNTcyYmU3ZDJjNTRmYTM4YzBiNWFk
OTllNjcuLmVhZmRjNTdhMjcyODM1NDgwMWIxMmFjMDZmOGUyMDFjMzA0Nzc0MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5
L05ldHdvcmtNYW5hZ2VyLmNwcApAQCAtMTQyLDEyICsxNDIsMTIgQEAgaW50IE5ldHdvcmtNYW5h
Z2VyOjpzdGFydEpvYihpbnQgcGxheWVySWQsIGNvbnN0IFN0cmluZyYgcGFnZUdyb3VwTmFtZSwg
UGFzc1JlZlAKICAgICAvLyBNYWtlIHN1cmUgdGhlIFJlc291cmNlSGFuZGxlIGRvZXNuJ3QgZ28g
b3V0IG9mIHNjb3BlIHdoaWxlIGNhbGxpbmcgY2FsbGJhY2tzLgogICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gZ3VhcmRKb2Ioam9iKTsKIAotICAgIEtVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsK
KyAgICBVUkwgdXJsID0gcmVxdWVzdC51cmwoKTsKIAogICAgIC8vIE9ubHkgbG9hZCB0aGUgaW5p
dGlhbCB1cmwgb25jZS4KICAgICBib29sIGlzSW5pdGlhbCA9ICh1cmwgPT0gbV9pbml0aWFsVVJM
KTsKICAgICBpZiAoaXNJbml0aWFsKQotICAgICAgICBtX2luaXRpYWxVUkwgPSBLVVJMKCk7Cisg
ICAgICAgIG1faW5pdGlhbFVSTCA9IFVSTCgpOwogCiAgICAgLy8gQWx3YXlzIHJlcmVhZCBjb29r
aWVzIG9uIGEgcmVkaXJlY3QKICAgICBpZiAocmVkaXJlY3RDb3VudCkKQEAgLTE1Niw4ICsxNTYs
OCBAQCBpbnQgTmV0d29ya01hbmFnZXI6OnN0YXJ0Sm9iKGludCBwbGF5ZXJJZCwgY29uc3QgU3Ry
aW5nJiBwYWdlR3JvdXBOYW1lLCBQYXNzUmVmUAogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpO
ZXR3b3JrUmVxdWVzdCBwbGF0Zm9ybVJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplUGxh
dGZvcm1SZXF1ZXN0KHBsYXRmb3JtUmVxdWVzdCwgZnJhbWUtPmxvYWRlcigpICYmIGZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCkgJiYgc3RhdGljX2Nhc3Q8RnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPmNvb2tpZXNFbmFibGVkKCksIGlzSW5p
dGlhbCwgcmVyZWFkQ29va2llcyk7CiAKLSAgICAvLyBHVVJMIGFuZCBLVVJMIGNvbnNpZGVyIHZh
bGlkIFVSTHMgZGlmZmVyZW50bHksIGZvciBleGFtcGxlIGh0dHA6Ly8gaXMgcGFyc2VkIGFzCi0g
ICAgLy8gaHR0cDovIGJ5IEtVUkwgYW5kIGNvbnNpZGVyZWQgdmFsaWQsIHdoaWxlIEdVUkwgY29u
c2lkZXJzIGl0IGludmFsaWQuCisgICAgLy8gR1VSTCBhbmQgVVJMIGNvbnNpZGVyIHZhbGlkIFVS
THMgZGlmZmVyZW50bHksIGZvciBleGFtcGxlIGh0dHA6Ly8gaXMgcGFyc2VkIGFzCisgICAgLy8g
aHR0cDovIGJ5IFVSTCBhbmQgY29uc2lkZXJlZCB2YWxpZCwgd2hpbGUgR1VSTCBjb25zaWRlcnMg
aXQgaW52YWxpZC4KICAgICBpZiAoIXBsYXRmb3JtUmVxdWVzdC51cmwoKS5pc192YWxpZCgpKQog
ICAgICAgICByZXR1cm4gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVz
RXJyb3JJbnZhbGlkVXJsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5oCmluZGV4IDFkODMzZGEyZWUz
N2FiODFkMGY1MDQxMTk2MGU5MmExMjk5YjM0OTkuLjI4NmNiOTBhOTAzOTUzY2MzMzFjYTRmODdl
ODcyODBkMDU2MzFkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5oCkBAIC0xOSw3ICsxOSw3IEBA
CiAjaWZuZGVmIE5ldHdvcmtNYW5hZ2VyX2gKICNkZWZpbmUgTmV0d29ya01hbmFnZXJfaAogCi0j
aW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAKICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TaW5nbGV0b24uaD4KQEAgLTQz
LDggKzQzLDggQEAgdm9pZCBwcm90ZWN0aW9uU3BhY2VUb1BsYXRmb3JtQXV0aChjb25zdCBQcm90
ZWN0aW9uU3BhY2UmLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybToKIGNsYXNzIE5ldHdvcmtNYW5hZ2Vy
IDogcHVibGljIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpUaHJlYWRVbnNhZmVTaW5nbGV0b248TmV0
d29ya01hbmFnZXI+IHsKICAgICBTSU5HTEVUT05fREVGSU5JVElPTl9USFJFQURVTlNBRkUoTmV0
d29ya01hbmFnZXIpCiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRJbml0aWFsVVJMKGNvbnN0IEtVUkwm
IHVybCkgeyBtX2luaXRpYWxVUkwgPSB1cmw7IH0KLSAgICBLVVJMIGluaXRpYWxVUkwoKSB7IHJl
dHVybiBtX2luaXRpYWxVUkw7IH0KKyAgICB2b2lkIHNldEluaXRpYWxVUkwoY29uc3QgVVJMJiB1
cmwpIHsgbV9pbml0aWFsVVJMID0gdXJsOyB9CisgICAgVVJMIGluaXRpYWxVUkwoKSB7IHJldHVy
biBtX2luaXRpYWxVUkw7IH0KICAgICBpbnQgc3RhcnRKb2IoaW50IHBsYXllcklkLCBQYXNzUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBqb2IsIEZyYW1lKiwgYm9vbCBkZWZlcnNMb2FkaW5nKTsKICAg
ICBpbnQgc3RhcnRKb2IoaW50IHBsYXllcklkLCBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBq
b2IsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lKiwgYm9vbCBkZWZlcnNMb2FkaW5nKTsK
ICAgICBib29sIHN0b3BKb2IoUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4pOwpAQCAtNjAsNyAr
NjAsNyBAQCBwcml2YXRlOgogICAgIGludCBzdGFydEpvYihpbnQgcGxheWVySWQsIGNvbnN0IFN0
cmluZyYgcGFnZUdyb3VwTmFtZSwgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4sIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpOZXR3b3JrU3RyZWFtRmFjdG9y
eSosIEZyYW1lKiwgaW50IGRlZmVyTG9hZGluZ0NvdW50ID0gMCwgaW50IHJlZGlyZWN0Q291bnQg
PSAwLCBib29sIHJlcmVhZENvb2tpZXMgPSBmYWxzZSk7CiAKICAgICBWZWN0b3I8TmV0d29ya0pv
Yio+IG1fam9iczsKLSAgICBLVVJMIG1faW5pdGlhbFVSTDsKKyAgICBVUkwgbV9pbml0aWFsVVJM
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Byb3h5U2VydmVyQmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUHJveHlTZXJ2ZXJC
bGFja0JlcnJ5LmNwcAppbmRleCAzM2IyMDYyYTZkYjQzMTA0NjNkNWVkZTU0M2Q5NTRmMWU0NDg3
NWQ3Li5hNzFiOTI5MWNjODExMThjOWU5YWExODk2ZjMyNTk3MjMxNWUwZjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUHJveHlTZXJ2ZXJC
bGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvUHJveHlTZXJ2ZXJCbGFja0JlcnJ5LmNwcApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9y
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8UHJveHlT
ZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29u
dGV4dCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gVmVjdG9yPFByb3h5
U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDkyYWExZDg2ZTBjN2JlM2Zm
OWU2MjM2ZmEyMGRkMDViN2E1ZmJkMjYuLmJkMTNiNmQwYTFkZGU5ZDBlYmM2NzMxNzkyZjI1NTA1
NmRjZmE4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgICAgICBUYXJnZXRJc1Vuc3BlY2lmaWVkLAogICAgIH07CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAg
ICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQ
cm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAsIG1faXNYTUxIVFRQUmVxdWVzdChmYWxzZSkK
ICAgICAgICAgLCBtX211c3RIYW5kbGVJbnRlcm5hbGx5KGZhbHNlKQogICAgICAgICAsIG1fZm9y
Y2VEb3dubG9hZChmYWxzZSkKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQorICAgIFJlc291cmNlUmVx
dWVzdChjb25zdCBVUkwmIHVybCkKICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwg
VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgLCBtX2lzWE1MSFRUUFJlcXVlc3QoZmFs
c2UpCiAgICAgICAgICwgbV9tdXN0SGFuZGxlSW50ZXJuYWxseShmYWxzZSkKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgIFJlc291cmNlUmVxdWVz
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0
Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgOiBS
ZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICAsIG1faXNYTUxIVFRQUmVx
dWVzdChmYWxzZSkKICAgICAgICAgLCBtX211c3RIYW5kbGVJbnRlcm5hbGx5KGZhbHNlKQpAQCAt
NzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKKyAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQogICAgICAgICAsIG1faXNYTUxIVFRQUmVxdWVzdChmYWxzZSkKICAgICAgICAgLCBt
X211c3RIYW5kbGVJbnRlcm5hbGx5KGZhbHNlKQogICAgICAgICAsIG1fZm9yY2VEb3dubG9hZChm
YWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDRjMWFkNjk2NWVjNGNhZjAwMGJi
M2U2Yzg1Y2I3ZjIwMTkzZjViNzkuLmNiZjE3ZTFmNzk1NTQyZGE3YjQ4ZjE2ZGVmMGY2MDA0MmIw
MzcxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVzcG9uc2UuaApAQCAtMzAsNyArMzAsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0
IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBS
ZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1
cmwsIG1pbWVUeXBlLCBleHBlY3RlZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUp
CiAgICAgICAgICwgbV9pc011bHRpcGFydFBheWxvYWQoZmFsc2UpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVh
bUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Nv
Y2tldFN0cmVhbUhhbmRsZS5oCmluZGV4IDgwZWM0MWJkNzk3YTNjMTU4ZTFkMmZiODZlMTJmZTQ0
M2RiM2JhODMuLmM4MjJlNDZiNzZlYWEzNmExNjg2MDQyODIxOGEwOTZhOTFiYWQ5ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRT
dHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvU29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50OwogCiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkZpbHRlclN0cmVhbSwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKGdy
b3VwTmFtZSwgdXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0
cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBVUkwmIHVy
bCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTb2NrZXRTdHJlYW1IYW5kbGUoZ3JvdXBOYW1lLCB1cmwsIGNsaWVudCkpOyB9CiAKICAgICB2
aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKIApAQCAtNjQsNyArNjQsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2xvc2UoKTsKIAogcHJpdmF0ZToKLSAgICBT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgU3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IEtVUkwmLCBT
b2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3Qg
U3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IFVSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCop
OwogCiAgICAgT3duUHRyPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGaWx0ZXJTdHJlYW0+IG1fc29j
a2V0U3RyZWFtOwogICAgIGludCBtX3N0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9Tb2NrZXRT
dHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcAppbmRleCBiMWE0ZGViMmRjNDBhNzk4YWVjNmQ5N2I4
ODAxMDY3YjU0Y2RlYTAxLi5jYzk1MTljYzhmMDVhMzY1ZmJlYjFhOTQ1NmU3ODhmMjI5MTI0NDlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
U29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhhbmRsZUJsYWNrQmVycnkuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgpAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0
IFN0cmluZyYgZ3JvdXBOYW1lLCBjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNs
aWVudCogY2xpZW50KQorU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgU3RyaW5nJiBncm91cE5hbWUsIGNvbnN0IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQp
CiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAl
cCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTU0F0b21QYXJzZXIuY3BwCmluZGV4
IDU1Y2UzYzM3NWIwNDg4NGFjYTZhMDBiMDMzN2ViM2FhN2E1NDE5MmUuLjI0MmM5MWE3ZmY0ZTYz
NTEyZDZkNzdmNTRhODQ2ZmNkOTNkNmE5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2Vy
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBSU1NBdG9tUGFyc2VyOjpSU1NBdG9tUGFyc2VyKCkKIAog
Ym9vbCBSU1NBdG9tUGFyc2VyOjpwYXJzZUJ1ZmZlcihjb25zdCBjaGFyKiBidWZmZXIsIGludCBs
ZW5ndGgsIGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogZW5jb2RpbmcpCiB7Ci0gICAgbV91
cmwgPSBLVVJMKGJsYW5rVVJMKCksIHVybCk7CisgICAgbV91cmwgPSBVUkwoYmxhbmtVUkwoKSwg
dXJsKTsKICAgICByZXR1cm4gcGFyc2VYbWxEb2MoeG1sUmVhZE1lbW9yeShidWZmZXIsIGxlbmd0
aCwgdXJsLCBlbmNvZGluZywgWE1MX1BBUlNFX05PQkxBTktTIHwgWE1MX1BBUlNFX05PTkVUKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2ti
ZXJyeS9yc3MvUlNTQXRvbVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmgKaW5kZXggODY1ZjUwZjI0MjE0NjU4Njdl
NmEzNzk1ZTVmZjI1YmQ2ZGZiMjY4OS4uYzRkNzljZTdiOTZhMGJjYTRiYmJmYzc2NTk3MWRkMDRh
MjUwZjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFj
a2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmgKQEAgLTE5LDcgKzE5LDcgQEAK
ICNpZm5kZWYgUlNTQXRvbVBhcnNlcl9oCiAjZGVmaW5lIFJTU0F0b21QYXJzZXJfaAogCi0jaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJTU1BhcnNlckJhc2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBwYXJzZUNvbnRlbnQoY29uc3QgU3RyaW5nJiBiYXNlLCB4bWxOb2RlKik7CiAgICAg
U3RyaW5nIHBhcnNlQXV0aG9yKHhtbE5vZGUqKTsKICAgICBTdHJpbmcgcGFyc2VDYXRlZ29yeSh4
bWxOb2RlKik7Ci0gICAgS1VSTCBtX3VybDsKKyAgICBVUkwgbV91cmw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDUwZjY5OGJiZDc0Njc3ZTU0MjY3OWFlODQ5
Yjg0NTAwNmU5YjI5MWYuLmYzNWMxODJkNDY4MTY0MmIzMjJmZDJkZWIxY2VlOTIyZjkzMmQ2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFy
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2ll
SmFyQ0ZOZXQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5o
IgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNvb2tpZXMoQ0ZBcnJheVJl
ZiB1bmZpbHRlcmVkQ29va2llcykKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi12
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzU2MzI4ODM+IENGSFRU
UENvb2tpZVN0b3JhZ2Ugc3RvcmVzIGFuIGVtcHR5IGNvb2tpZSwgd2hpY2ggd291bGQgYmUgc2Vu
dCBhcyAiQ29va2llOiA9Ii4KICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQpAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNl
dENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29v
a2llc0NGLmdldCgpKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0Yu
Z2V0KCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YgPSB1
cmwuY3JlYXRlQ0ZVUkwoKTsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNv
bnN0IEtVCiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFk
ZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHVybENGID0gdXJsLmNyZWF0ZUNGVVJMKCk7CiAKQEAgLTEzNywxMyArMTM3
LDEzIEBAIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0CiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKLWJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29v
a2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1
cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5E
b2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGlj
eUFsd2F5czsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3
Q29va2llcy5jbGVhcigpOwogCkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29v
a2llU3RvcmFnZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCmluZGV4IDFiYWY1ODExZTlkODNkNTllZDAzMTIyMjg5ZmM1MDE2ZmRjMWM2
ZGEuLjA3NWFhNmJjYTVlMjU2NDdhZWJlOWYxMmQ2OWQ2YWI2YzgzZTQ2YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC0yOSw3ICsy
OSw3IEBACiAjaW5jbHVkZSAiRE5TLmgiCiAjaW5jbHVkZSAiRE5TUmVzb2x2ZVF1ZXVlLmgiCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC01NSw4ICs1NSw4IEBAIGJvb2wgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVByb3h5SXNFbmFi
bGVkSW5TeXN0ZW1QcmVmZXJlbmNlcygpCiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGh0dHBDRlVSTCA9IEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NGVVJMID0gS1VSTChQYXJzZWRVUkxTdHJp
bmcsICJodHRwczovL2V4YW1wbGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBodHRwQ0ZVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCAiaHR0cDovL2V4YW1w
bGUuY29tLyIpLmNyZWF0ZUNGVVJMKCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodHRwc0NG
VVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHBzOi8vZXhhbXBsZS5jb20vIikuY3JlYXRl
Q0ZVUkwoKTsKIAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBodHRwUHJveHlBcnJheSA9IGFk
b3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cENGVVJMLmdldCgpLCBwcm94eVNl
dHRpbmdzLmdldCgpKSk7CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGh0dHBzUHJveHlBcnJh
eSA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29weVByb3hpZXNGb3JVUkwoaHR0cHNDRlVSTC5nZXQoKSwg
cHJveHlTZXR0aW5ncy5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKaW5kZXggMTJmM2IxMTZmMjY1YzE5
YzRjNTAzNGQ0MWRjMGE0Y2ZhNmI1YTQ1Ni4uNzExMThkMmVlYjFmZjk1MmExNTkyMzBjMGJjNDM4
NjJkOTQ0YTZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Qcm94eVNlcnZlckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHJveHlTZXJ2ZXIuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTExOSw3ICsxMTks
NyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzUHJveHlTZXJ2ZXJzKFZlY3RvcjxQcm94eVNlcnZlcj4m
IHByb3h5U2VydmVycywgQ0ZBcnJheVJlZiBwcgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgYWRk
UHJveHlTZXJ2ZXJzRm9yVVJMKFZlY3RvcjxQcm94eVNlcnZlcj4mIHByb3h5U2VydmVycywgY29u
c3QgS1VSTCYgdXJsKQorc3RhdGljIHZvaWQgYWRkUHJveHlTZXJ2ZXJzRm9yVVJMKFZlY3RvcjxQ
cm94eVNlcnZlcj4mIHByb3h5U2VydmVycywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gcHJveHlTZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZOZXR3b3JrQ29w
eVN5c3RlbVByb3h5U2V0dGluZ3MoKSk7CiAgICAgaWYgKCFwcm94eVNldHRpbmdzKQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHN0YXRpYyB2b2lkIGFkZFByb3h5U2VydmVyc0ZvclVSTChWZWN0b3I8UHJv
eHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIGNvbnN0IEtVUkwmCiAgICAgcHJvY2Vzc1Byb3h5U2Vy
dmVycyhwcm94eVNlcnZlcnMsIHByb3hpZXNGb3JVUkwuZ2V0KCksIGNmVVJMLmdldCgpKTsKIH0K
IAotVmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2Vy
dmVyc0ZvclVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqKQogewog
ICAgIFZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmlu
ZGV4IGEyYTZmZDdjNWRmM2FkMzA5YzY2ODI0NTQyYTM4M2I4NDllMjI3MjcuLmFlMWMxZWIzYjc1
ZmRiMDczYjRiOGUxNzYwZTQyZDFjMWVhMzUwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTI4LDcgKzI4
LDcgQEAKIAogI2lmIFVTRShDRk5FVFdPUkspCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZFcnJvci5oPgogI2luY2x1ZGUg
PENGTmV0d29yay9DRk5ldHdvcmtFcnJvcnMuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCA3MWFhZjFhODU3YmUwYTQ1ZjFjOGI5YzZmY2VjMmFk
Y2QxOGQzNjMwLi4yNmU3M2E1NmYzMjIyZTFhNGY0N2RkOWViMGVjNDVjODdiOThmYjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxl
OjpjcmVhdGVDRlVSTENvbm5lY3Rpb24oYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSwg
Ym9vbAogewogICAgIGlmICgoIWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0Vt
cHR5KCkpICYmICFmaXJzdFJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
IHsKICAgICAgICAgLy8gQ3JlZGVudGlhbHMgZm9yIGZ0cCBjYW4gb25seSBiZSBwYXNzZWQgaW4g
VVJMLCB0aGUgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGRlbGVnYXRlIGNhbGwg
d29uJ3QgYmUgbWFkZS4KLSAgICAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1
ZXN0KCkudXJsKCkpOworICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVxdWVz
dCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91c2Vy
KTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNzKTsKICAgICAg
ICAgZmlyc3RSZXF1ZXN0KCkuc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CkBAIC00NzksNyAr
NDc5LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKIAogdm9pZCBSZXNvdXJjZUhh
bmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKLSAgICBjb25zdCBLVVJMJiB1cmwg
PSByZXF1ZXN0LnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKICAg
ICBkLT5tX3VzZXIgPSB1cmwudXNlcigpOwogICAgIGQtPm1fcGFzcyA9IHVybC5wYXNzKCk7CiAg
ICAgZC0+bV9sYXN0SFRUUE1ldGhvZCA9IHJlcXVlc3QuaHR0cE1ldGhvZCgpOwpAQCAtNTQyLDcg
KzU0Miw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNO
dWxsKCkgJiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxD
cmVkZW50aWFsUmVmPiBjcmVkZW50aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQt
Pm1fcGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lKSk7CiAgICAgICAgIAotICAgICAgICBLVVJMIHVybFRvU3RvcmU7CisgICAgICAg
IFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9yZSA9IGNoYWxs
ZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKICAgICAgICAgQ3JlZGVudGlhbFN0b3JhZ2U6
OnNldChjb3JlKGNyZWRlbnRpYWwuZ2V0KCkpLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCks
IHVybFRvU3RvcmUpOwpAQCAtNjEzLDcgKzYxMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJl
Y2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
CiAgICAgICAgIENyZWRlbnRpYWwgd2ViQ3JlZGVudGlhbChjcmVkZW50aWFsLnVzZXIoKSwgY3Jl
ZGVudGlhbC5wYXNzd29yZCgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKTsKICAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY2ZDcmVkZW50aWFsID0gYWRvcHRDRihjcmVh
dGVDRih3ZWJDcmVkZW50aWFsKSk7CiAgICAgICAgIAotICAgICAgICBLVVJMIHVybFRvU3RvcmU7
CisgICAgICAgIFVSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVS
ZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQogICAgICAgICAgICAgdXJsVG9TdG9y
ZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsgICAgICAKICAgICAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2U6OnNldCh3ZWJDcmVkZW50aWFsLCBjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlKCksIHVybFRvU3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggNjM0OWNlODkxOGRkYjcwZTQ1Y2E4N2Ez
NzBkOTdjMTY3MDQwN2M1MS4uNmNmMjZhYjRjM2VmODRhMDRjZWNlOGZhZGU5OGQ3ZDhjYTIzNWQ3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdC5oCkBAIC00MiwyMyArNDIsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkgCi0g
ICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtV
UkwmIHVybCkgCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCkgCiAgICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hlUG9saWN5
KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKKyAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJl
cXVlc3RDYWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KSAKICAgICAg
ICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgewogICAg
ICAgICAgICAgc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShLVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJlc291
cmNlUmVxdWVzdEJhc2UoVVJMKCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIHsK
ICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggZTBhNWRkNDhhZGUxN2FiNDZhZDE0
NmU5NDQ5YzQzNGY0OTA1NDA3MC4uMTNhNTgxMTgwZWE2ODhkZGUzNzZlMzVmMDdlMmVlMzE2Mzhh
ZDM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVzcG9uc2Uo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3Rl
ZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5cGUsIGV4
cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICAgICAgLCBtX2lu
aXRMZXZlbChDb21tb25BbmRVbmNvbW1vbkZpZWxkcykKICAgICAgICAgLCBtX3BsYXRmb3JtUmVz
cG9uc2VJc1VwVG9EYXRlKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggMjU0YjAzNDViMGQ4MTc1
YjMzYzJmYmUxNDYwMzcxNGY2ZTRkODlkOC4uOTliYmU4OGJiMjFlNWFkY2JmNTRkNjIzMDY0Zjc2
OGM4NTlhYTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Tb2NrZXRTdHJlYW1IYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudDsKIAogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNvY2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLCBwdWJsaWMgQXV0aGVudGljYXRpb25DbGllbnQgewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IEtV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tl
dFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAKICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJl
YW1IYW5kbGUoKTsKIApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgaW50
IHBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGxhdGZvcm1DbG9zZSgpOwogCi0gICAgU29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtV
UkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICBTb2NrZXRTdHJlYW1IYW5kbGUo
Y29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAgICAgdm9pZCBjcmVhdGVT
dHJlYW1zKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0cmVhbXMoKTsKICAgICB2b2lkIGNob29zZVBy
b3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDkxNGE1NzU1ZjVjYWQ0ODFm
OGZlZjk3NDQyMmEwNzQ2MWFkMWQ1NGYuLmZjMmQyOGQ3MjQxODNmNTU0YWVjNzcyNzdlNDFhMzIw
NWE5MDI5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IGV4dGVybiAiQyIgY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlN0cmVhbVNvY2tldFNldE5vRGVsYXk7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVu
dCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UodXJsLCBjbGllbnQpCiAgICAgLCBtX2Nvbm5lY3RpbmdTdWJzdGF0ZShOZXcpCiAg
ICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25vd24pCkBAIC02NSw3ICs2NSw3IEBAIFNvY2tldFN0
cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3Ry
ZWFtSGFuZGxlQ2xpZW50CiAKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMoIndzIikgfHwgdXJs
LnByb3RvY29sSXMoIndzcyIpKTsKIAotICAgIEtVUkwgaHR0cHNVUkwoS1VSTCgpLCAiaHR0cHM6
Ly8iICsgbV91cmwuaG9zdCgpKTsKKyAgICBVUkwgaHR0cHNVUkwoVVJMKCksICJodHRwczovLyIg
KyBtX3VybC5ob3N0KCkpOwogICAgIG1faHR0cHNVUkwgPSBodHRwc1VSTC5jcmVhdGVDRlVSTCgp
OwogCiAgICAgY3JlYXRlU3RyZWFtcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDhkMTgxZjNiMmFkYmZi
ZWMzNjhiNjRhZDQyZDA5OWIzMDM5YjQ3NWMuLjljZDhhOWIyZDYxODFiZTcxNjMwMzk1MWU4ZjMy
ZDliZjJiZjg4OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKQEAgLTE4LDcgKzE4LDcgQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5o
IgogCiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGlj
IHZvaWQgYWRkTWF0Y2hpbmdDdXJsQ29va2llKGNvbnN0IGNoYXIqIGNvb2tpZSwgY29uc3QgU3Ry
aW5nJiBkb21haW4sIGNvbnMKIAogfQogCi1zdGF0aWMgU3RyaW5nIGdldE5ldHNjYXBlQ29va2ll
Rm9ybWF0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3N0YXRpYyBTdHJp
bmcgZ2V0TmV0c2NhcGVDb29raWVGb3JtYXQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CiAgICAgLy8gQ29uc3RydWN0cyBhIGNvb2tpZSBzdHJpbmcgaW4gTmV0c2NhcGUg
Q29va2llIGZpbGUgZm9ybWF0LgogCkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIFN0cmluZyBn
ZXROZXRzY2FwZUNvb2tpZUZvcm1hdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCiAgICAgcmV0dXJuIGNvb2tpZVN0ci50b1N0cmluZygpOwogfQogCi12b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIENVUkwqIGN1cmwgPSBjdXJsX2Vhc3lfaW5p
dCgpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXIKICAgICBj
dXJsX2Vhc3lfY2xlYW51cChjdXJsKTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGh0dHBvbmx5KQorc3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmLCBjb25zdCBVUkwmIHVybCwg
Ym9vbCBodHRwb25seSkKIHsKICAgICBTdHJpbmcgY29va2llczsKICAgICBDVVJMKiBjdXJsID0g
Y3VybF9lYXN5X2luaXQoKTsKQEAgLTI4NCwyOSArMjg0LDI5IEBAIHN0YXRpYyBTdHJpbmcgY29v
a2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYs
IGNvbnN0CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwsIGZhbHNlKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCB0cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkq
LywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAv
KnVybCovKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNv
bnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVk
CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBhZGMwM2ZkNDBmMGI5
ZmQ4ZDhjNDM0OWU3ZmRlZTQxNDI1NTQ2ZWYzLi5mYjIwOTIyY2Q0ZDEwNWNmOTdmYzBiNDlhOGE1
YmE2NGQ3ZDRlZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMjQ4LDcgKzI0OCw3IEBAIEN1cmxEb3dubG9h
ZDo6fkN1cmxEb3dubG9hZCgpCiAgICAgbW92ZUZpbGVUb0Rlc3RpbmF0aW9uKCk7CiB9CiAKLXZv
aWQgQ3VybERvd25sb2FkOjppbml0KEN1cmxEb3dubG9hZExpc3RlbmVyKiBsaXN0ZW5lciwgY29u
c3QgS1VSTCYgdXJsKQordm9pZCBDdXJsRG93bmxvYWQ6OmluaXQoQ3VybERvd25sb2FkTGlzdGVu
ZXIqIGxpc3RlbmVyLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIWxpc3RlbmVyKQogICAg
ICAgICByZXR1cm47CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmluaXQo
Q3VybERvd25sb2FkTGlzdGVuZXIqIGxpc3RlbmVyLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFIK
IAogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4KTsKIAotICAgIEtVUkwgdXJsKFBhcnNl
ZFVSTFN0cmluZywgcmVxdWVzdC51cmwoKSk7CisgICAgVVJMIHVybChQYXJzZWRVUkxTdHJpbmcs
IHJlcXVlc3QudXJsKCkpOwogCiAgICAgaW5pdChsaXN0ZW5lciwgdXJsKTsKIApAQCAtMzkwLDcg
KzM5MCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyKQogICAgICAgICBpZiAoaHR0cENvZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAw
KSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwgPSAwOwogICAgICAgICAgICAgZXJyID0g
Y3VybF9lYXN5X2dldGluZm8obV9jdXJsSGFuZGxlLCBDVVJMSU5GT19FRkZFQ1RJVkVfVVJMLCAm
dXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmwpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VVJMKFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCkpOwogCiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQt
VHlwZSIpKSk7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0
cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKCJDb250
ZW50LVR5cGUiKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxEb3dubG9hZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5oCmluZGV4IGY3NWFjOGYxNTNlOGI3YzVjY2M1MWFmMGIxZDc5OTUx
MmQ4OGIxYjUuLmQ5MmI0M2NhMmNmMmRjYzRiYTdhNDdiMmJjZTIwYWQ5ZDM2OWI5ZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIEN1cmxEb3dubG9hZCgpOwogICAgIH5D
dXJsRG93bmxvYWQoKTsKIAotICAgIHZvaWQgaW5pdChDdXJsRG93bmxvYWRMaXN0ZW5lciosIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIGluaXQoQ3VybERvd25sb2FkTGlzdGVuZXIq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIGluaXQoQ3VybERvd25sb2FkTGlzdGVu
ZXIqLCBSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKIAogICAgIGJvb2wgc3RhcnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Qcm94eVNlcnZlckN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKaW5kZXgg
MjEyNzY4YWRiMmRjNTUzMWYzMzVkNGUyYWM2ZWJlYWM3NzU3NzVkZS4uMTE3MzVhZTZkYzEwMTdh
OTJjMzk2ODc1MmEwZDkzN2Y1MmEwNWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Byb3h5U2VydmVyQ3VybC5jcHAKQEAgLTI2LDEyICsy
NiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAK
LSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJv
eHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCitW
ZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVyc0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBO
ZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KICAgICByZXR1
cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA3ZjM0
ZGIyNmRlZDEyMjNiNDdkOTljNDNjY2YwNTE5ZTU5YTZhOGU4Li5jOTE4ZjE1Yjg4N2NjMmU3MDk5
YjE3MTAwYTM1MzNiMTc5OTg1NDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcApAQCAtMjMxLDcg
KzIzMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAKICAgICBpZiAoc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoKSkgewogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25z
ZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKSB7Ci0gICAgICAgICAgICBLVVJMIHVybFRvU3Rv
cmUgPSBjaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkudXJsKCk7CisgICAgICAgICAgICBVUkwg
dXJsVG9TdG9yZSA9IGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS51cmwoKTsKICAgICAgICAg
ICAgIENyZWRlbnRpYWxTdG9yYWdlOjpzZXQoY3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZSgpLCB1cmxUb1N0b3JlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
TWFuYWdlci5jcHAKaW5kZXggYTBmMmEyNDhmOGM0MzU3MTExOTQxMGMxYTYzZjU0OWYxYTI0NmVm
OC4uN2RkNWI2YTAwODc4YjQ5NThkZmUyYjQ4NWNkMTY0OTM3OGM0MjFhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlTWFuYWdlci5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVM
b2NhbFJlY2VpdmVSZXNwb25zZSAoQ1VSTCogaGFuZGxlLCBSZXNvdXJjZUhhbmRsZSogam9iLCBS
ZXNvdQogICAgICBjb25zdCBjaGFyKiBoZHI7CiAgICAgIENVUkxjb2RlIGVyciA9IGN1cmxfZWFz
eV9nZXRpbmZvKGhhbmRsZSwgQ1VSTElORk9fRUZGRUNUSVZFX1VSTCwgJmhkcik7CiAgICAgIEFT
U0VSVF9VTlVTRUQoZXJyLCBDVVJMRV9PSyA9PSBlcnIpOwotICAgICBkLT5tX3Jlc3BvbnNlLnNl
dFVSTChLVVJMKFBhcnNlZFVSTFN0cmluZywgaGRyKSk7CisgICAgIGQtPm1fcmVzcG9uc2Uuc2V0
VVJMKFVSTChQYXJzZWRVUkxTdHJpbmcsIGhkcikpOwogICAgICBpZiAoZC0+Y2xpZW50KCkpCiAg
ICAgICAgICBkLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGpvYiwgZC0+bV9yZXNwb25z
ZSk7CiAgICAgIGQtPm1fcmVzcG9uc2Uuc2V0UmVzcG9uc2VGaXJlZCh0cnVlKTsKQEAgLTMxMSw3
ICszMTEsNyBAQCBzdGF0aWMgYm9vbCBnZXRQcm90ZWN0aW9uU3BhY2UoQ1VSTCogaCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByb3RlYwogICAgIGlmIChlcnIgIT0gQ1VSTEVf
T0spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwga3VybChQYXJzZWRVUkxTdHJp
bmcsIHVybCk7CisgICAgVVJMIGt1cmwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpOwogCiAgICAgU3Ry
aW5nIGhvc3QgPSBrdXJsLmhvc3QoKTsKICAgICBTdHJpbmcgcHJvdG9jb2wgPSBrdXJsLnByb3Rv
Y29sKCk7CkBAIC0zOTMsNyArMzkzLDcgQEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhj
aGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICAg
ICAgY29uc3QgY2hhciogaGRyOwogICAgICAgICBjdXJsX2Vhc3lfZ2V0aW5mbyhoLCBDVVJMSU5G
T19FRkZFQ1RJVkVfVVJMLCAmaGRyKTsKLSAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRVUkwoS1VS
TChQYXJzZWRVUkxTdHJpbmcsIGhkcikpOworICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldFVSTChV
UkwoUGFyc2VkVVJMU3RyaW5nLCBoZHIpKTsKIAogICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKGh0dHBDb2RlKTsKICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRNaW1lVHlw
ZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKCJDb250ZW50LVR5cGUiKSkubG93ZXIoKSk7CkBAIC00MTEsNyArNDExLDcgQEAgc3RhdGlj
IHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQqIGRhdGEpCiAgICAgICAgIGlmIChpc0h0dHBSZWRpcmVjdChodHRwQ29kZSkpIHsK
ICAgICAgICAgICAgIFN0cmluZyBsb2NhdGlvbiA9IGQtPm1fcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKCJsb2NhdGlvbiIpOwogICAgICAgICAgICAgaWYgKCFsb2NhdGlvbi5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBLVVJMIG5ld1VSTCA9IEtVUkwoam9iLT5maXJzdFJlcXVlc3QoKS51
cmwoKSwgbG9jYXRpb24pOworICAgICAgICAgICAgICAgIFVSTCBuZXdVUkwgPSBVUkwoam9iLT5m
aXJzdFJlcXVlc3QoKS51cmwoKSwgbG9jYXRpb24pOwogCiAgICAgICAgICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlZGlyZWN0ZWRSZXF1ZXN0ID0gam9iLT5maXJzdFJlcXVlc3QoKTsKICAgICAg
ICAgICAgICAgICByZWRpcmVjdGVkUmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKQEAgLTc4Niw3ICs3
ODYsNyBAQCBib29sIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c3RhcnRTY2hlZHVsZWRKb2JzKCkK
IAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OmRpc3BhdGNoU3luY2hyb25vdXNKb2IoUmVz
b3VyY2VIYW5kbGUqIGpvYikKIHsKLSAgICBLVVJMIGt1cmwgPSBqb2ItPmZpcnN0UmVxdWVzdCgp
LnVybCgpOworICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3QoKS51cmwoKTsKIAogICAg
IGlmIChrdXJsLnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgaGFuZGxlRGF0YVVSTChqb2Ip
OwpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjpkaXNwYXRj
aFN5bmNocm9ub3VzSm9iKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIHZvaWQgUmVzb3VyY2VIYW5k
bGVNYW5hZ2VyOjpzdGFydEpvYihSZXNvdXJjZUhhbmRsZSogam9iKQogewotICAgIEtVUkwga3Vy
bCA9IGpvYi0+Zmlyc3RSZXF1ZXN0KCkudXJsKCk7CisgICAgVVJMIGt1cmwgPSBqb2ItPmZpcnN0
UmVxdWVzdCgpLnVybCgpOwogCiAgICAgaWYgKGt1cmwucHJvdG9jb2xJc0RhdGEoKSkgewogICAg
ICAgICBoYW5kbGVEYXRhVVJMKGpvYik7CkBAIC04NzUsNyArODc1LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZU1hbmFnZXI6OmFwcGx5QXV0aGVudGljYXRpb25Ub1JlcXVlc3QoUmVzb3VyY2VIYW5k
bGUqIGhhbmRsZSwKIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxl
KFJlc291cmNlSGFuZGxlKiBqb2IpCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBhbGxvd2VkUHJv
dG9jb2xzID0gQ1VSTFBST1RPX0ZJTEUgfCBDVVJMUFJPVE9fRlRQIHwgQ1VSTFBST1RPX0ZUUFMg
fCBDVVJMUFJPVE9fSFRUUCB8IENVUkxQUk9UT19IVFRQUzsKLSAgICBLVVJMIGt1cmwgPSBqb2It
PmZpcnN0UmVxdWVzdCgpLnVybCgpOworICAgIFVSTCBrdXJsID0gam9iLT5maXJzdFJlcXVlc3Qo
KS51cmwoKTsKIAogICAgIC8vIFJlbW92ZSBhbnkgZnJhZ21lbnQgcGFydCwgb3RoZXJ3aXNlIGN1
cmwgd2lsbCBzZW5kIGl0IGFzIHBhcnQgb2YgdGhlIHJlcXVlc3QuCiAgICAga3VybC5yZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5MTQ3MmUwMDVlNWNiYTUxZTEx
Y2YwMmQzY2RhOTQ1MTJkMmU3NTg1Li5hNzVhNzFhZjgwODI5MjcyZDI2YjllOGU2OWQzM2NjYTFi
OTAxNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0zNiwyMyArMzYsMjMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdCA6IHB1YmxpYyBSZXNvdXJjZVJlcXVlc3RC
YXNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBTdHJpbmcm
IHVybCkKLSAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShLVVJMKFBhcnNlZFVSTFN0
cmluZywgdXJsKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3Vy
Y2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgS1VSTCYgdXJsKQorICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwp
CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeSBwb2xpY3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICBSZXNv
dXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAg
ICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDQ5ODVlYjMxYzViOWMxOTYyM2FiNTIwNTAzYmVl
NzIwYTQ3ZDcwMDkuLmFlMDliODE0ZmIwMTE1YTE2ODljZDI3ZWE5YzU4YWZmOGVlNzBmMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlUmVzcG9uc2UuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIFJlc291cmNlUmVzcG9uc2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5n
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKKyAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSkKICAgICAgICAgOiBSZXNvdXJjZVJlc3BvbnNlQmFzZSh1cmwsIG1pbWVUeXBlLCBleHBlY3Rl
ZExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZSwgZmlsZW5hbWUpLAogICAgICAgICAgIG1fcmVzcG9u
c2VGaXJlZChmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgKaW5kZXggNjQxMzllNWNkMzM5
ODlmYTllNDdiMDJlZmNkZGNjNmJjYzI2YWYzMy4uYTgyMzE5Zjk0NTJiZGUzOWI1NzgzOTA3YWU1
YjMxYzFiZWRmMWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGUuaApAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5kbGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxl
QmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJl
YW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwg
Y2xpZW50KSk7IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxl
PiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50
KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7
IH0KIAogICAgICAgICB2aXJ0dWFsIH5Tb2NrZXRTdHJlYW1IYW5kbGUoKTsKIApAQCAtNTQsNyAr
NTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bUNsb3NlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29u
c3QgS1VSTCYsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICAg
ICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5
IGFzayBmb3IgY3JlZGVudGlhbHMuCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxl
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3Ry
ZWFtSGFuZGxlQ3VybC5jcHAKaW5kZXggODkxZTk2ZTUwNmYxNTAyNDZhMmZiMjA4MGY5ZDE5OTUy
NDUwNzUyYS4uNzlhZGMzMDNkZmEwNjhlMGZiZTQ2MmQxYWQwYjE5MzFmZTE3YjI5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNpbmNsdWRlICJL
VVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJl
YW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVu
dCkKK1NvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJs
LCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhh
bmRsZUJhc2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQppbmRleCBiYzIy
Mzc1MmUxYzhiNmVjNzkwNGUyN2NjOWVmNmJjZDViZWZkYWQyLi42NTM3NDBlOWIyM2ZjZWI5NDlj
Mzk1MmQzYmMwMTVlN2Q1ZDNiNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0
ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29va2ll
U3RvcmFnZS5oIgotI2ltcG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0ICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKIApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNv
b2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29v
a2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
QEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1UKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydAogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggODMzMTViMDE3
YzAzNDhkMmQ5ZGVjYTg0YTdhZGIxNGIyNTEzNmQ1NS4uY2VmNmNkZjM0NmUwZDIzYzdkZjJiYzU3
MGQwYTJhYzY2ZjE0ZDQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0yNyw3ICsyNyw3IEBACiAjaW1w
b3J0ICJSZXNvdXJjZUVycm9yLmgiCiAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2lt
cG9ydCAiS1VSTC5oIgorI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0IDxDb3JlRm91bmRhdGlvbi9D
RkVycm9yLmg+CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQppbmRleCAwOTQwMGExZDEzZjZhNDI4MWU0OWUzMzdkMjlkYTE4Y2VhNDA1NzMwLi5lNzNj
NjVkMjI3N2Q5ODkyMmU2NzhlYzY1YmVmOGY4YzdhOTBlYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpA
QCAtOTgsNyArOTgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3Rp
b24oaWQgZGVsZWdhdGUsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbAogewogICAgIC8vIENyZWRl
bnRpYWxzIGZvciBmdHAgY2FuIG9ubHkgYmUgcGFzc2VkIGluIFVSTCwgdGhlIGNvbm5lY3Rpb246
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiBkZWxlZ2F0ZSBjYWxsIHdvbid0IGJl
IG1hZGUuCiAgICAgaWYgKCghZC0+bV91c2VyLmlzRW1wdHkoKSB8fCAhZC0+bV9wYXNzLmlzRW1w
dHkoKSkgJiYgIWZpcnN0UmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkg
ewotICAgICAgICBLVVJMIHVybFdpdGhDcmVkZW50aWFscyhmaXJzdFJlcXVlc3QoKS51cmwoKSk7
CisgICAgICAgIFVSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RSZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICB1cmxXaXRoQ3JlZGVudGlhbHMuc2V0VXNlcihkLT5tX3VzZXIpOwogICAgICAgICB1
cmxXaXRoQ3JlZGVudGlhbHMuc2V0UGFzcyhkLT5tX3Bhc3MpOwogICAgICAgICBmaXJzdFJlcXVl
c3QoKS5zZXRVUkwodXJsV2l0aENyZWRlbnRpYWxzKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICghcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpICYmIHByb3RvY29sSXMocmVxdWVzdC5odHRwUmVmZXJyZXIoKSwgImh0dHBzIikgJiYg
ZC0+bV9jb250ZXh0LT5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkp
CiAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQUmVmZXJyZXIoKTsKIAotICAgIGNvbnN0IEtVUkwm
IHVybCA9IHJlcXVlc3QudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnVybCgp
OwogICAgIGQtPm1fdXNlciA9IHVybC51c2VyKCk7CiAgICAgZC0+bV9wYXNzID0gdXJsLnBhc3Mo
KTsKICAgICBkLT5tX2xhc3RIVFRQTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7CkBAIC01
NTQsNyArNTU0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDcmVkZW50aWFsKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UKICAgICAgICAgLy8gdG8gaWdu
b3JlIGl0IGZvciBhIHBhcnRpY3VsYXIgcmVxdWVzdCAoc2hvcnQgb2YgcmVtb3ZpbmcgaXQgYWx0
b2dldGhlcikuCiAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS82ODY3NTk4PiBnYWxsZXJ5Lm1l
LmNvbSBpcyB0ZW1wb3JhcmlseSB3aGl0ZWxpc3RlZCwgc28gdGhhdCBRdWlja1RpbWUgcGx1Zy1p
biBjb3VsZCBzZWUgdGhlIGNyZWRlbnRpYWxzLgogICAgICAgICBDcmVkZW50aWFsIHdlYkNyZWRl
bnRpYWwoY3JlZGVudGlhbCwgQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSk7Ci0gICAgICAgIEtV
UkwgdXJsVG9TdG9yZTsKKyAgICAgICAgVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFs
bGVuZ2UuZmFpbHVyZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCiAgICAgICAg
ICAgICB1cmxUb1N0b3JlID0gY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLnVybCgpOwogICAg
ICAgICBDcmVkZW50aWFsU3RvcmFnZTo6c2V0KHdlYkNyZWRlbnRpYWwsIGNvcmUoW2QtPm1fY3Vy
cmVudE1hY0NoYWxsZW5nZSBwcm90ZWN0aW9uU3BhY2VdKSwgdXJsVG9TdG9yZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCmluZGV4
IDU1YWVhYzJlY2RiYTdiMjA4YjA2OGYyNTRlN2QwYjNhNjUzZWFjYTUuLjljMjQ2NWQ4ZjgyZDg1
YzZmODhmYTU3NzJkNjZlODg5OGI0YWM5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29va2llSmFyUXQuaCIKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiVGhpcmRQYXJ0eUNvb2tp
ZXNRdC5oIgpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBT
aGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CiAKLXZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkg
PyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkg
OiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhCiAgICAgamFyLT5zZXRDb29raWVzRnJvbVVy
bChjb29raWVzLCB1cmxGb3JDb29raWVzKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1
cmwpCiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8g
c2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDog
U2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFyKQpAQCAtOTQsNyArOTQs
NyBAQCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpv
aW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBRTmV0d29y
a0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+
bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6
c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCkBAIC0xMTEsMjAgKzExMSwyMCBAQCBTdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmlu
ZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYg
Lyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBVUkwmIC8qdXJsKi8p
CiB7CiAgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vz
c2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hh
cmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVy
bCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7
IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
Cit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVk
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5
U2VydmVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Qcm94eVNl
cnZlclF0LmNwcAppbmRleCAwYmYzNjg3MjcxMGYzYmY0NWY0ZjFkYTljZTNhMTMwYzNjZWJiZjcx
Li5hYWU2MTdhZjU5MzE1MmIyYTI4MDFmMDFlYWIxYWYzZThiZWU4YjdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Byb3h5U2VydmVyUXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUHJveHlTZXJ2ZXJRdC5jcHAKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm94eVNlcnZl
ci5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CkBA
IC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmVjdG9yPFByb3h5U2Vy
dmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCkKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJM
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHNlcnZlcnM7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
CmluZGV4IGE2ZTA4NDBiZjEzMTIwMTUyNzUyMTg2YTFjN2RmZjgzNTM0ZGU0MDkuLjhiNzkxZjQ4
MmQ3YjlkM2I1NWZmYzZhOTYxYjdkNGI3MDMyY2ZkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3Bw
CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3Bv
bnNlSWZOZWVkZWQoKQogICAgICAgICBtaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1J
TUVUeXBlRm9yUGF0aChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+dXJsKCkucGF0aCgpKTsKICAg
ICB9CiAKLSAgICBLVVJMIHVybChtX3JlcGx5V3JhcHBlci0+cmVwbHkoKS0+dXJsKCkpOworICAg
IFVSTCB1cmwobV9yZXBseVdyYXBwZXItPnJlcGx5KCktPnVybCgpKTsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKHVybCwgbWltZVR5cGUubG93ZXIoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fcmVwbHlXcmFwcGVyLT5yZXBseSgpLT5oZWFkZXIoUU5ldHdvcmtSZXF1
ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyKS50b0xvbmdMb25nKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX3JlcGx5V3JhcHBlci0+ZW5jb2RpbmcoKSwgU3RyaW5nKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRs
ZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5k
bGVRdC5jcHAKaW5kZXggODRhYmE0ZWUxODY1YjFjYTNmZDZhN2MyYzA2NDNhNWI2NmI5NDRmMi4u
OTU1Yjg0OWE2MGQzODJmZDAyZTQ2ZmEwZTY4YTg3MzZiZTJlODBlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZUhhbmRsZVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3Bw
CkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICBpZiAo
IWQtPm1fdXNlci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
Ly8gSWYgY3JlZGVudGlhbHMgd2VyZSBzcGVjaWZpZWQgZm9yIHRoaXMgcmVxdWVzdCwgYWRkIHRo
ZW0gdG8gdGhlIHVybCwKICAgICAgICAgLy8gc28gdGhhdCB0aGV5IHdpbGwgYmUgcGFzc2VkIHRv
IFFOZXR3b3JrUmVxdWVzdC4KLSAgICAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZmlyc3RS
ZXF1ZXN0KCkudXJsKCkpOworICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGZpcnN0UmVx
dWVzdCgpLnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91
c2VyKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNzKTsKICAg
ICAgICAgZC0+bV9maXJzdFJlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXgKICAgICBpZiAoIWQtPm1fdXNl
ci5pc0VtcHR5KCkgfHwgIWQtPm1fcGFzcy5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSWYgY3Jl
ZGVudGlhbHMgd2VyZSBzcGVjaWZpZWQgZm9yIHRoaXMgcmVxdWVzdCwgYWRkIHRoZW0gdG8gdGhl
IHVybCwKICAgICAgICAgLy8gc28gdGhhdCB0aGV5IHdpbGwgYmUgcGFzc2VkIHRvIFFOZXR3b3Jr
UmVxdWVzdC4KLSAgICAgICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHMoZC0+bV9maXJzdFJlcXVl
c3QudXJsKCkpOworICAgICAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKGQtPm1fZmlyc3RSZXF1
ZXN0LnVybCgpKTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVzZXIoZC0+bV91c2Vy
KTsKICAgICAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MoZC0+bV9wYXNzKTsKICAgICAg
ICAgZC0+bV9maXJzdFJlcXVlc3Quc2V0VVJMKHVybFdpdGhDcmVkZW50aWFscyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaApp
bmRleCBjOGE5OTA4YWI4YWJhMzM0Nzg0Njc5Zjc5Yzk5MjkyNmQ2Yjg5MDRhLi5lYjdiNzY3MDQ3
ZWM3ZGFiNzMwOTg3ZWI2OTE0YmFjMjEyOTgzOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTM5LDIzICszOSwy
MyBAQCBjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Qg
OiBwdWJsaWMgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBSZXNv
dXJjZVJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpIAotICAgICAgICAgICAgOiBSZXNvdXJjZVJl
cXVlc3RCYXNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9s
aWN5KQorICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTChQYXJzZWRVUkxTdHJp
bmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBLVVJMJiB1cmwpIAorICAgICAgICBSZXNv
dXJjZVJlcXVlc3QoY29uc3QgVVJMJiB1cmwpIAogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVl
c3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkgCisgICAgICAgIFJlc291cmNlUmVxdWVzdChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5
ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkgCiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UodXJsLCBwb2xpY3kpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhUVFBSZWZlcnJl
cihyZWZlcnJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoKQotICAg
ICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9j
b2xDYWNoZVBvbGljeSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggNDdl
NTY2YjkwM2E5ZWZjOTc2YjI0OGQzNjU5OTVmYjA5ZDhmMWNmOS4uN2RlZmYyYjcxZDVkMTQ1Nzc3
MjQyZTM2NDQ2ODM3MDlhNzA0NDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCisgICAg
UmVzb3VyY2VSZXNwb25zZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
bG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgICAgIDogUmVzb3VyY2VSZXNwb25zZUJhc2Uo
dXJsLCBtaW1lVHlwZSwgZXhwZWN0ZWRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUsIGZpbGVuYW1l
KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA5ZTZlYWMwZmMwNTA5ZWQwYzQ4MDI1
NmU1NTk3ZTg1NDRhMWU3NGYyLi44NzAwODkyNTA1MDQyNTY2MjA4ZGEyNmMzNmQ0YmNjMDU5NTJh
N2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tl
dFN0cmVhbUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
U29ja2V0U3RyZWFtSGFuZGxlLmgKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8U29j
a2V0U3RyZWFtSGFuZGxlPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUJhc2UgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVh
dGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKGNvbnN0
IFVSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFNvY2tldFN0cmVhbUhhbmRsZSh1cmwsIGNsaWVudCkpOyB9CiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZT4gY3JlYXRlKFFUY3BTb2NrZXQqIHNv
Y2tldCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTb2NrZXRTdHJlYW1IYW5kbGUoc29ja2V0LCBjbGllbnQpKTsgfQogCiAgICAgICAgIHZp
cnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZSgpOwpAQCAtNjUsNyArNjUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYsIFNvY2tldFN0
cmVhbUhhbmRsZUNsaWVudCopOworICAgICAgICBTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAgICAgICAgIFNvY2tldFN0cmVhbUhhbmRs
ZShRVGNwU29ja2V0KiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAgICAgICAgLy8g
Tm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBidXQgcHJveHkgbWF5IGFzayBm
b3IgY3JlZGVudGlhbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCmluZGV4IGY0NDdjYzIw
NjdlMDY5MjJhYWEwNzk2ZmExNzU4YWJkNzhkZTBiNWQuLmMxNTYwZTQ5MTU4M2UxOTM5OGYyYjdl
Yjk4M2MzMzBmYmYxMjc3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGU7CiBjbGFzcyBTb2NrZXRT
dHJlYW1IYW5kbGVQcml2YXRlIDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCiBwdWJs
aWM6Ci0gICAgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBj
b25zdCBLVVJMJik7CisgICAgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZShTb2NrZXRTdHJlYW1I
YW5kbGUqLCBjb25zdCBVUkwmKTsKICAgICBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tl
dFN0cmVhbUhhbmRsZSosIFFUY3BTb2NrZXQqKTsKICAgICB+U29ja2V0U3RyZWFtSGFuZGxlUHJp
dmF0ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1NvY2tldFN0cmVhbUhhbmRsZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwCmluZGV4IDEwM2RjMWZjYzFkMjZkNGE1ZDEw
ODM5N2JmNzViM2JjNjNiYzA3YTMuLjk2MThhZTViYWM4NjZmMTY2MzJiZTE3YTc1OGIyMjZmMWIy
YzcxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvU29j
a2V0U3RyZWFtSGFuZGxlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlLmgiCiAKLSNpbmNsdWRl
ICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKQEAg
LTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5k
bGVQcml2YXRlOjpTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSog
c3RyZWFtSGFuZGxlLCBjb25zdCBLVVJMJiB1cmwpCitTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRl
OjpTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKFNvY2tldFN0cmVhbUhhbmRsZSogc3RyZWFtSGFu
ZGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX3N0cmVhbUhhbmRsZSA9IHN0cmVhbUhhbmRs
ZTsKICAgICBtX3NvY2tldCA9IDA7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVQcml2YXRlOjpzb2NrZXRTc2xFcnJvcnMoY29uc3QgUUxpc3Q8UVNzbEVycm9yPiYg
ZXJyb3IpCiB9CiAjZW5kaWYKIAotU29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5k
bGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKK1Nv
Y2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IFVSTCYgdXJsLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJh
c2UodXJsLCBjbGllbnQpCiB7CiAgICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUg
JXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBT
b2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJMJiB1cmwsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudAogfQogCiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0
cmVhbUhhbmRsZShRVGNwU29ja2V0KiBzb2NrZXQsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCog
Y2xpZW50KQotICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZShLVVJMKCksIGNsaWVudCkKKyAg
ICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoVVJMKCksIGNsaWVudCkKIHsKICAgICBMT0coTmV0
d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGll
bnQpOwogICAgIG1fcCA9IG5ldyBTb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlKHRoaXMsIHNvY2tl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llSmFyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llSmFyU291cC5jcHAKaW5kZXggZWI2ZmNjODhhZWUxMDEyMGVmZTg2MjRmNzZkZTcxNDgyMWU0
NzgzNS4uZGQ1ZGJkNTY3ZDMzOTk5MWY4MDU4YWRkNjRiMWVhZTUyNDVlNmVhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3Vw
LmNwcApAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAi
R093blB0clNvdXAuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cyhjb25zdCBHU0xpc3QqIGNvb2tpZXMsIGNv
bnN0IGdjaGFyKiBuYW1lCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7CiAgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9u
KTsKICAgICBpZiAoIWphcikKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYQogICAgIHNvdXBfY29va2llc19mcmVlKGV4aXN0aW5nQ29va2llcyk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKK3N0YXRpYyBTdHJp
bmcgY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQogewogICAgIFNvdXBDb29raWVK
YXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCkBA
IC0xMjgsMjIgKzEyOCwyMiBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTAogICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0KCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIGZhbHNlKTsKIH0KIAotU3RyaW5nIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIHRydWUpOwog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiti
b29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiAvKnVybCovKQogewogICAgIHJl
dHVybiAhIWNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiB9CiAKLWJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBTb3VwQ29v
a2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwpAQCAtMTY2LDcgKzE2
Niw3IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpCiB7CiAgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vz
c2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Qcm94eVNlcnZlclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKaW5kZXggNTBiMzJk
ZTNmNjliMTk0ZGFmYWNhYmNjNGE3YTFjYzViMGNmMGUyNi4uYzg1ZmU2ODkxOTE1ZmMxOWFiOWMw
YWMxYWMwNDEzN2VkZTJjNzJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Byb3h5U2VydmVyU291cC5jcHAKQEAgLTI2LDExICsyNiwxMSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb3h5U2VydmVyLmgiCiAKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
VmVjdG9yPFByb3h5U2VydmVyPiBwcm94eVNlcnZlcnNGb3JVUkwoY29uc3QgS1VSTCYsIGNvbnN0
IE5ldHdvcmtpbmdDb250ZXh0KikKK1ZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9y
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IE5ldHdvcmtpbmdDb250ZXh0KikKIHsKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50LgogICAgIHJldHVybiBWZWN0b3I8UHJveHlTZXJ2ZXI+KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCmluZGV4IGY2NjBlOTA0ZTU1YmU0Mjc1MDg4MWVlM2Q0YmZjNmI0NGUyYjli
MzEuLjg0NmUyNWE4Y2Y1MzgxMGI0OTk0MjNjZDZhNTRhMGEyYjFlYTJlMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhh
bmRsZVNvdXAuY3BwCkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIHZvaWQgYXBwbHlBdXRoZW50
aWNhdGlvblRvUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBSZXNvdXJjZVJlcXVlc3QK
ICAgICAvLyBXZSBhbHdheXMgcHV0IHRoZSBjcmVkZW50aWFscyBpbnRvIHRoZSBVUkwuIEluIHRo
ZSBDRk5ldHdvcmstcG9ydCBIVFRQIGZhbWlseSBjcmVkZW50aWFscyBhcmUgYXBwbGllZCBpbgog
ICAgIC8vIHRoZSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2FsbGJhY2ssIGJ1
dCBsaWJzb3VwIHJlcXVpcmVzIHVzIHRvIHVzZSB0aGlzIG1ldGhvZCB0byBvdmVycmlkZQogICAg
IC8vIGFueSBwcmV2aW91c2x5IHJlbWVtYmVyZWQgY3JlZGVudGlhbHMuIEl0IGhhcyBpdHMgb3du
IHBlci1zZXNzaW9uIGNyZWRlbnRpYWwgc3RvcmFnZS4KLSAgICBLVVJMIHVybFdpdGhDcmVkZW50
aWFscyhyZXF1ZXN0LnVybCgpKTsKKyAgICBVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHJlcXVlc3Qu
dXJsKCkpOwogICAgIHVybFdpdGhDcmVkZW50aWFscy5zZXRVc2VyKHVzZXIpOwogICAgIHVybFdp
dGhDcmVkZW50aWFscy5zZXRQYXNzKHBhc3N3b3JkKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmxX
aXRoQ3JlZGVudGlhbHMpOwpAQCAtNDIyLDcgKzQyMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJl
ZGlyZWN0KFJlc291cmNlSGFuZGxlKiBoYW5kbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNHRVQoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIEtVUkwm
IG5ld1VSTCwgYm9vbCBjcm9zc09yaWdpbikKK3N0YXRpYyBib29sIHNob3VsZFJlZGlyZWN0QXNH
RVQoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIFVSTCYgbmV3VVJMLCBib29sIGNyb3NzT3JpZ2luKQog
ewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgPT0gU09VUF9NRVRIT0RfR0VUIHx8IG1lc3NhZ2Ut
Pm1ldGhvZCA9PSBTT1VQX01FVEhPRF9IRUFEKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00
NjAsNyArNDYwLDcgQEAgc3RhdGljIHZvaWQgZG9SZWRpcmVjdChSZXNvdXJjZUhhbmRsZSogaGFu
ZGxlKQogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0ID0gaGFuZGxlLT5maXJzdFJlcXVl
c3QoKTsKICAgICBTb3VwTWVzc2FnZSogbWVzc2FnZSA9IGQtPm1fc291cE1lc3NhZ2UuZ2V0KCk7
CiAgICAgY29uc3QgY2hhciogbG9jYXRpb24gPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25l
KG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJMb2NhdGlvbiIpOwotICAgIEtVUkwgbmV3VVJM
ID0gS1VSTChzb3VwVVJJVG9LVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgbG9j
YXRpb24pOworICAgIFVSTCBuZXdVUkwgPSBVUkwoc291cFVSSVRvS1VSTChzb3VwX21lc3NhZ2Vf
Z2V0X3VyaShtZXNzYWdlKSksIGxvY2F0aW9uKTsKICAgICBib29sIGNyb3NzT3JpZ2luID0gIXBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLCBu
ZXdVUkwpOwogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAgICAgbmV3UmVxdWVzdC5z
ZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhuZXdVUkwpOwpAQCAtNzc5LDcgKzc3OSw3IEBAIHN0YXRp
YyB2b2lkIGFkZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBjb25zdCBCbG9iCiAKIHN0YXRpYyB2b2lkIGFkZEVuY29kZWRCbG9iVG9Tb3VwTWVz
c2FnZUJvZHkoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgZWxl
bWVudCwgdW5zaWduZWQgbG9uZyYgdG90YWxCb2R5U2l6ZSkKIHsKLSAgICBSZWZQdHI8QmxvYlN0
b3JhZ2VEYXRhPiBibG9iRGF0YSA9IHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9i
UmVnaXN0cnkoKSkuZ2V0QmxvYkRhdGFGcm9tVVJMKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbGVt
ZW50Lm1fdXJsKSk7CisgICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYkRhdGEgPSBzdGF0
aWNfY2FzdDxCbG9iUmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJv
bVVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbGVtZW50Lm1fdXJsKSk7CiAgICAgaWYgKCFibG9i
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYTBkMGI0Yzc1MmE3NTQ4
MTYyNDUwNTA5YmQ5YWFhNGUyMTIyYzBkMi4uY2YyMjZjMTkwYzUzOTI4MWE3ZGRkYmJiYjMzYzNm
NmJlZDczYTA0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtMzUsMjAgKzM1LDIwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1
ZXN0QmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmwpCi0gICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoS1VSTChQYXJzZWRV
UkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCisgICAgICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAg
ICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKICAg
ICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwm
IHVybCkKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJsKQogICAgICAgICAg
ICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgcG9saWN5ID0gVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSkKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwb2xp
Y3kgPSBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVl
c3RCYXNlKHVybCwgcG9saWN5KQogICAgICAgICAgICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUp
CiAgICAgICAgICAgICAsIG1fc291cEZsYWdzKHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+
KDApKQpAQCAtNTcsMTQgKzU3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQog
CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCgpCi0gICAgICAgICAgICA6IFJlc291cmNlUmVxdWVz
dEJhc2UoS1VSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQorICAgICAgICAgICAgOiBSZXNv
dXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgICAgICAg
ICAgLCBtX2FjY2VwdEVuY29kaW5nKHRydWUpCiAgICAgICAgICAgICAsIG1fc291cEZsYWdzKHN0
YXRpY19jYXN0PFNvdXBNZXNzYWdlRmxhZ3M+KDApKQogICAgICAgICB7CiAgICAgICAgIH0KIAog
ICAgICAgICBSZXNvdXJjZVJlcXVlc3QoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlKQotICAgICAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKKyAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoKSwgVXNlUHJvdG9jb2xD
YWNoZVBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAg
ICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKICAg
ICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IGI1YTRhMGRkYTcwMjJiNjRiZGU4
MDk2ODdmZDY5Y2M3N2E2ZmI3NjMuLjQzMDcxNWM0NGQzYzg1ZTFjNjhiMjdlODEwZWYyOGQxN2I4
YWUzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBTb3Vw
VVJJKiBSZXNvdXJjZVJlcXVlc3Q6OnNvdXBVUkkoKSBjb25zdAogICAgICAgICByZXR1cm4gc291
cF91cmlfbmV3KHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKLSAgICBLVVJMIHVy
bCA9IG1fdXJsOworICAgIFVSTCB1cmwgPSBtX3VybDsKICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJ
ZGVudGlmaWVyKCk7CiAgICAgU291cFVSSSogdXJpID0gc291cF91cmlfbmV3KHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggMzcwZjQzMGI2OWY3NWJhNjI4
NzdlNjNlMGY0OTNjMDliZmQyMWEwYi4uNDg5MWY5MzVmY2JjN2Y3NzIzYTY2MTU3ZWUyZWQ5MzNj
ZjUzZTBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXNwb25zZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVz
cG9uc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5
cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKICAgICAgICAg
LCBtX3Rsc0Vycm9ycyhzdGF0aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFt
SGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlLmgKaW5kZXggYTZhNTE0NTI3Mjg1NGQ1MjBjYWM2ZDI0YzllNjJlNTY0MGUzZmNj
YS4uODQ4ZmZjZjBlOGU5ODU2NWI1ZTE3NmFhMDNiNGZhY2I5ZTIwNTg2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFz
cyBTb2NrZXRTdHJlYW1IYW5kbGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTb2NrZXRTdHJlYW1IYW5k
bGU+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQmFzZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBLVVJM
JiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoY29uc3QgVVJMJiB1cmwsIFNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9wdFJlZihuZXcgU29j
a2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U29ja2V0U3RyZWFtSGFuZGxlPiBjcmVhdGUoR1NvY2tldENvbm5lY3Rpb24qIHNvY2tldENv
bm5lY3Rpb24sIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHNvY2tldENvbm5lY3Rpb24sIGNsaWVudCkpOyB9
CiAKICAgICAgICAgdmlydHVhbCB+U29ja2V0U3RyZWFtSGFuZGxlKCk7CkBAIC02Nyw3ICs2Nyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2hhciogbV9yZWFkQnVmZmVyOwogICAg
ICAgICB2b2lkKiBtX2lkOwogCi0gICAgICAgIFNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBLVVJM
JiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CisgICAgICAgIFNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKICAgICAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKEdTb2NrZXRDb25uZWN0aW9uKiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
Kik7CiAKICAgICAgICAgLy8gTm8gYXV0aGVudGljYXRpb24gZm9yIHN0cmVhbXMgcGVyIHNlLCBi
dXQgcHJveHkgbWF5IGFzayBmb3IgY3JlZGVudGlhbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAKaW5kZXggYmNkZDk0YmNkMjdlYzc5NDE5ZjMyZTg4OGJmNjczY2ViMDg1OWFiOC4uNTUw
OGYzNjA5NTUzZGRhODJiMGE1ZTlkYzJhOTMzNzBhMWI2MDI3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1I
YW5kbGVTb3VwLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZS5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUVycm9yLmgiCkBAIC04MCw3ICs4MCw3IEBAIHN0
YXRpYyB2b2lkKiBhY3RpdmF0ZUhhbmRsZShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKICAg
ICByZXR1cm4gaWQ7CiB9CiAKLVNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxl
KGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCitTb2Nr
ZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KHVybCwgY2xpZW50KQogICAgICwgbV9yZWFkQnVmZmVyKDApCiB7CkBAIC05Niw3ICs5Niw3IEBA
IFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50CiB9CiAKIFNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0
U3RyZWFtSGFuZGxlKEdTb2NrZXRDb25uZWN0aW9uKiBzb2NrZXRDb25uZWN0aW9uLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKLSAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
S1VSTCgpLCBjbGllbnQpCisgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlKFVSTCgpLCBjbGll
bnQpCiAgICAgLCBtX3JlYWRCdWZmZXIoMCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0
cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBVUklVdGlscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcApp
bmRleCBmMDdhZDdmNmM0ZTI3MDEwMmUwZDE0ODZhZGI4NWZhYjQxZDJmOWU1Li41NTNiYWQ5Mzg1
MzlmMzA5NmZmMDVkYWI5MDI1MDE5ODEyNzg2NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmNwcApAQCAtMjksMTAgKzI5
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIHNvdXBfdXJpX3RvX3N0cmluZywgYW5kIHRo
dXMgdGhlIHJlcXVlc3RzIGFyZSBub3QgcHJvcGVybHkKIC8vIGJ1aWx0LiBGaXhpbmcgc291cF91
cmlfdG9fc3RyaW5nIGlzIGEgbm8tbm8gYXMgdGhlIG1haW50YWluZXIgZG9lcwogLy8gbm90IHdh
bnQgdG8gYnJlYWsgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9ucwot
S1VSTCBzb3VwVVJJVG9LVVJMKFNvdXBVUkkqIHNvdXBVUkkpCitVUkwgc291cFVSSVRvS1VSTChT
b3VwVVJJKiBzb3VwVVJJKQogewogICAgIEdPd25QdHI8Z2NoYXI+IHVybFN0cmluZyhzb3VwX3Vy
aV90b19zdHJpbmcoc291cFVSSSwgRkFMU0UpKTsKLSAgICBLVVJMIHVybChLVVJMKCksIFN0cmlu
Zzo6ZnJvbVVURjgodXJsU3RyaW5nLmdldCgpKSk7CisgICAgVVJMIHVybChVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOCh1cmxTdHJpbmcuZ2V0KCkpKTsKIAogICAgIGlmICghc291cFVSSS0+cGFzc3dv
cmQpCiAgICAgICAgIHJldHVybiB1cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cFVSSVV0aWxzLmgKaW5kZXggNjk3NzJlNzI2OTgyODJiMDYyOGFj
NDU3NGQ3OGRlMTRiM2Q0ZGM5Ny4uNWY2ZThkNTIyODVkNjAxNzgyZDA1ODNkYjAzMzQxNzZmZDY0
MWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBVUklVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwVVJJVXRpbHMuaApAQCAtMjYsMTIgKzI2LDEyIEBACiAjaWZuZGVmIFNvdXBVUklVdGlsc19o
CiAjZGVmaW5lIFNvdXBVUklVdGlsc19oCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAKIHR5cGVkZWYgc3RydWN0IF9Tb3VwVVJJIFNvdXBVUkk7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLUtVUkwgc291cFVSSVRvS1VSTChTb3VwVVJJKiBzb3VwVVJJKTsKK1VSTCBzb3Vw
VVJJVG9LVVJMKFNvdXBVUkkqIHNvdXBVUkkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCmluZGV4IDdi
MTI2ZTAzMTQzNTQwOTM3MGQ0YzI5ZDJkZjBkZmQyNzIxMDU1OWQuLjhjNzkwNTQyM2RkMTZhNGE4
OThmZGNiY2FjY2RhNzMwNmE1N2VkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWUuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4K
QEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmlyc3RQ
YXJ0eSBhcmd1bWVudC4KICAgICBTdHJpbmcgc3RyID0gdXJsLnN0cmluZygpOwpAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cgogICAgIEludGVybmV0U2V0Q29va2llKHN0
ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgMCwgdmFsLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGgg
Zmlyc3RQYXJ0eSBhcmd1bWVudC4KIApAQCAtNjUsMjUgKzY1LDI1IEBAIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotU3RyaW5n
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBGSVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUKICAgICByZXR1cm4gY29va2ll
c0ZvckRPTShzZXNzaW9uLmNvbnRleHQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYg
LypmaXJzdFBhcnR5Ki8sIGNvbnN0IFVSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBy
ZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Qcm94eVNlcnZlcldpbi5jcHAKaW5kZXggYzYxMGUyMGI4MTdkMTFlMjFmODQxMGE4
MTdjZjNmZGUxNGQxMzBjMy4uMTQ5NWI0NWI4MWQ0ZjZlYzZkNGIwZjUxYzJiY2EwZTJlZmJkMGNm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUHJveHlT
ZXJ2ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1By
b3h5U2VydmVyV2luLmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVZlY3RvcjxQcm94eVNlcnZlcj4gcHJveHlTZXJ2ZXJzRm9yVVJMKGNvbnN0IEtVUkwmLCBj
b25zdCBOZXR3b3JraW5nQ29udGV4dCopCitWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVy
c0ZvclVSTChjb25zdCBVUkwmLCBjb25zdCBOZXR3b3JraW5nQ29udGV4dCopCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudC4KICAgICByZXR1cm4gVmVjdG9yPFByb3h5U2VydmVyPigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5k
bGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VI
YW5kbGVXaW4uY3BwCmluZGV4IDMyMGM0NWQ2NTU3OTE5YmVlNzIyYzQxNTliOGZjZDI4ZmJhZGVi
NDguLjBmNjZiNzA3YTBkZjk0NzVjNzUzNDEyMzIyMTlmZWE0ZmFmMWZlMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjppbnRlcm5l
dFN0YXR1c0NhbGxiYWNrKEhJTlRFUk5FVCBpbnRlcm5ldEhhbmRsZSwgRFdPUkRfUFRSCiB2b2lk
IFJlc291cmNlSGFuZGxlOjpvblJlZGlyZWN0KCkKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3
UmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgpOwotICAgIG5ld1JlcXVlc3Quc2V0VVJMKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCBkLT5tX3JlZGlyZWN0VXJsKSk7CisgICAgbmV3UmVxdWVzdC5zZXRVUkwo
VVJMKFBhcnNlZFVSTFN0cmluZywgZC0+bV9yZWRpcmVjdFVybCkpOwogCiAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZShmaXJzdFJlcXVlc3QoKS51cmwoKSwgU3RyaW5nKCksIDAsIFN0cmlu
ZygpLCBTdHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggMTBiOTUyNDdjYWRjYzkyZGU5MTIzZjJk
ZTU1ZTc0YzhmYzA0Zjk0MS4uZDFlYjdkNTRjMDcyNjhiOTgyZDI5ZTExYjExZjY2ZTc4OTczMzg2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3Vy
Y2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVz
b3VyY2VSZXF1ZXN0LmgKQEAgLTMzLDIzICszMywyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3QgOiBwdWJsaWMgUmVzb3VyY2VSZXF1ZXN0QmFzZSB7CiBwdWJs
aWM6CiAgICAgUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCisgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShVUkwoUGFyc2VkVVJM
U3RyaW5nLCB1cmwpLCBVc2VQcm90b2NvbENhY2hlUG9saWN5KQogICAgIHsKICAgICB9CiAKLSAg
ICBSZXNvdXJjZVJlcXVlc3QoY29uc3QgS1VSTCYgdXJsKQorICAgIFJlc291cmNlUmVxdWVzdChj
b25zdCBVUkwmIHVybCkKICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKHVybCwgVXNlUHJv
dG9jb2xDYWNoZVBvbGljeSkKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXF1ZXN0KGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3kgcG9saWN5ID0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKKyAgICBSZXNvdXJjZVJl
cXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIFJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5IHBvbGljeSA9IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
IDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBvbGljeSkKICAgICB7CiAgICAgICAgIHNldEhU
VFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgfQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0KCkKLSAg
ICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKEtVUkwoKSwgVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKKyAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBVc2VQcm90b2NvbENhY2hl
UG9saWN5KQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCAzODI2NjgzMzBjYTUxYWU5
YTZjNWQ5MGVkNzkzYmZmNzYwZTc4ZGQzLi5iZWMwZTA0M2NhNjNjZDM3ZWRjYzUyYjY1YWM0MGE4
YWM2NjI4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dp
bi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay93aW4vUmVzb3VyY2VSZXNwb25zZS5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgUmVzb3VyY2VSZXNwb25zZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBleHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0
ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQorICAgIFJlc291cmNlUmVz
cG9uc2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGxvbmcgbG9uZyBl
eHBlY3RlZExlbmd0aCwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKQogICAgICAgICA6IFJlc291cmNlUmVzcG9uc2VCYXNlKHVybCwgbWltZVR5
cGUsIGV4cGVjdGVkTGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1lLCBmaWxlbmFtZSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29j
a2V0U3RyZWFtSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9T
b2NrZXRTdHJlYW1IYW5kbGUuaAppbmRleCA2MjgwOGVjNTUwZWQxZmJmMjMyYmUxYjQ2MDBmNmYw
MDhiMzI0NzEzLi4wMzM1MGE0NzU1Yjc2YTMyOGY2ZmRjMWIyYWQzNDgzNTI5MDM5ZmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1I
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRT
dHJlYW1IYW5kbGUuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQ7CiAKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNv
Y2tldFN0cmVhbUhhbmRsZT4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVCYXNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25z
dCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgU29ja2V0U3RyZWFtSGFuZGxlKHVybCwgY2xpZW50KSk7IH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IGNyZWF0ZShjb25zdCBVUkwmIHVybCwg
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
b2NrZXRTdHJlYW1IYW5kbGUodXJsLCBjbGllbnQpKTsgfQogCiAgICAgdmlydHVhbCB+U29ja2V0
U3RyZWFtSGFuZGxlKCk7CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBwbGF0Zm9ybUNsb3NlKCk7CiAKIHByaXZhdGU6Ci0gICAgU29ja2V0U3RyZWFtSGFu
ZGxlKGNvbnN0IEtVUkwmLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKTsKKyAgICBTb2NrZXRT
dHJlYW1IYW5kbGUoY29uc3QgVVJMJiwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Kik7CiAKICAg
ICAvLyBObyBhdXRoZW50aWNhdGlvbiBmb3Igc3RyZWFtcyBwZXIgc2UsIGJ1dCBwcm94eSBtYXkg
YXNrIGZvciBjcmVkZW50aWFscy4KICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRs
ZVdpbi5jcHAKaW5kZXggYjJiNTQwZmIyNGMyZmFkNzZhMjg1MDlkZWZiNmVjYWE2ZGM3MDhmYi4u
MTZhYzc4ODJjNWRlYmZlZjEwOWVhNmNiNjZlOGIyOWQ4OTZmYTg3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFuZGxlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1I
YW5kbGVXaW4uY3BwCkBAIC0zMiwxNCArMzIsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGUuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1Tb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25z
dCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQorU29ja2V0U3Ry
ZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgVVJMJiB1cmwsIFNvY2tldFN0cmVh
bUhhbmRsZUNsaWVudCogY2xpZW50KQogICAgIDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmws
IGNsaWVudCkKIHsKICAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcg
Y2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbml4L1Bhc3RlYm9hcmROaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L1Bhc3RlYm9hcmROaXguY3BwCmluZGV4IDM0ZWMxYzBlMDUyZjNkNzIzMjZlYjU3NzgzNTRk
YWRiZDE5ZTYwNzEuLjA3N2I0MDlmMDVlMDk5N2VhYzYzYzNhYjJiYTJjMmNjNDgxMzgwMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9QYXN0ZWJvYXJkTml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUGFzdGVib2FyZE5peC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2Uo
Tm9kZSosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZUltYWdlKE5vZGUqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LVVJM
UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvS1VSTFF0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2RjYTRlZWUwYmRkZWIyNGNmODkzMTExNmZmZjAwODI0NGE2
YTg2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9LVVJMUXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKLSNpbmNsdWRlICJxdXJsLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUtVUkw6OktVUkwoY29uc3QgUVVybCYgdXJsKQot
ewotICAgICp0aGlzID0gS1VSTChLVVJMKCksIHVybC50b0VuY29kZWQoKS5jb25zdERhdGEoKSwg
VVRGOEVuY29kaW5nKCkpOwotfQotCi1LVVJMOjpvcGVyYXRvciBRVXJsKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gUVVybChtX3N0cmluZyk7Ci19Ci0KLVN0cmluZyBLVVJMOjpmaWxlU3lzdGVtUGF0
aCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLQotICAgIGlmIChpc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UVVybD4oKnRoaXMpLnRvTG9jYWxGaWxlKCk7Ci0KLSAgICAvLyBBIHZhbGlkIHFyYyByZXNvdXJj
ZSBwYXRoIGJlZ2lucyB3aXRoIGEgY29sb24uCi0gICAgaWYgKHByb3RvY29sSXMoInFyYyIpKQot
ICAgICAgICByZXR1cm4gIjoiICsgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHBhdGgoKSk7Ci0K
LSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9QYXN0ZWJvYXJkUXQuY3BwCmluZGV4IGViOGVkZmRiMmE0YzE1ZGFjMzQ0MjA1NWYwZjYwNmI0
Yzg1MDA5MzYuLmM1NTM3NzYyY2JiNzhiYTRiZmExYmI0ODVlMGVkMmJlNjM5YWE5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGFzdGVib2FyZFF0LmNwcApAQCAtMjA1LDcgKzIw
NSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVi
b2FyZFVSTCkKICNlbmRpZgogfQogCi12b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2UoTm9kZSog
bm9kZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
SW1hZ2UoTm9kZSogbm9kZSwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NF
UlQobm9kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRm
b3JtU3VwcG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0
LmgKaW5kZXggNDI4MWNkNjc2YTJiMDZhNjE0MDcxMDRkMThkMWYzYjFiZjQ4NzA1Ny4uZTJkMDg4
Mjk0ODQxZmJmYWE2NjA4YTExZjZhODFkNmMyYjhmM2E3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0LmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYg
UGxhdGZvcm1TdXBwb3J0X2gKICNkZWZpbmUgUGxhdGZvcm1TdXBwb3J0X2gKIAotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVic1F0LmNwcAppbmRleCBlOTNhNzYzNmMzZWZhMGYx
YTczYjUzYWNmZjZjMzhiZjc1NWFkMTdiLi41OTk1ZGZlMmNmYjJkY2UwNzRiMWZmMjU4NjM5OTBi
ZGNjYWEyNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3Jh
cnlMaW5rU3R1YnNRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9y
YXJ5TGlua1N0dWJzUXQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgogI2luY2x1ZGUgIkludFBvaW50Lmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdl
LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAg
LTEwNCw3ICsxMDQsNyBAQCB2b2lkIGdldFN1cHBvcnRlZEtleVNpemVzKFZlY3RvcjxTdHJpbmc+
JikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1TdHJpbmcgc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJikKK1N0
cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVVJMUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVVJMUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3OGU2NWFjNzAxOTZjOGY4ZDc5ZDc3
ZDk4NGRjMTUzOTQwNWFlNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9VUkxRdC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVVJMLmgiCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2luY2x1ZGUgInF1cmwuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVVJM
OjpVUkwoY29uc3QgUVVybCYgdXJsKQoreworICAgICp0aGlzID0gVVJMKFVSTCgpLCB1cmwudG9F
bmNvZGVkKCkuY29uc3REYXRhKCksIFVURjhFbmNvZGluZygpKTsKK30KKworVVJMOjpvcGVyYXRv
ciBRVXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVVybChtX3N0cmluZyk7Cit9CisKK1N0cmlu
ZyBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgY29uc3QKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGlzTG9jYWxGaWxlKCkpCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxRVXJsPigqdGhpcykudG9Mb2NhbEZpbGUoKTsKKworICAgIC8v
IEEgdmFsaWQgcXJjIHJlc291cmNlIHBhdGggYmVnaW5zIHdpdGggYSBjb2xvbi4KKyAgICBpZiAo
cHJvdG9jb2xJcygicXJjIikpCisgICAgICAgIHJldHVybiAiOiIgKyBkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMocGF0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0JTdHJpbmcuY3BwCmluZGV4IGZlMGZlNDY5NTFmZGIyODYwODEw
Njc5ODI1M2IwZmMxNzEwM2I0YzcuLmEwMWNkMDQ0NGFhZWU5MjJlODQwMWQxZjA2NjMyNzNiN2Jj
OWY5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9CU3RyaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5jcHAKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCU3RyaW5nLmgiCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNjgsNyArNjgsNyBAQCBCU3RyaW5nOjpCU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcykKICAgICAgICAgbV9ic3RyID0gU3lzQWxsb2NTdHJpbmdMZW4ocy5jaGFyYWN0ZXJzKCks
IHMubGVuZ3RoKCkpOwogfQogCi1CU3RyaW5nOjpCU3RyaW5nKGNvbnN0IEtVUkwmIHVybCkKK0JT
dHJpbmc6OkJTdHJpbmcoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKHVybC5pc051bGwoKSkK
ICAgICAgICAgbV9ic3RyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9CU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQlN0cmluZy5oCmlu
ZGV4IGRjMWMyN2Q4YzhiN2NkZjEwNGY2MGMwMDdhYmFkYTE5Y2YwOTA4ZTYuLjQ1NzY3OGUzNzFh
Y2I2YWFjYTUyYWJiNGIwYzMxODFlYjg3Mzg1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0JTdHJpbmcuaApAQCAtMzYsNyArMzYsNyBAQCB0eXBlZGVmIHdjaGFyX3QqIEJTVFI7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogCiAg
ICAgY2xhc3MgQlN0cmluZyB7CiAgICAgcHVibGljOgpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEJTdHJpbmcoY29uc3Qgd2NoYXJfdCosIHNpemVfdCBsZW5n
dGgpOwogICAgICAgICBCU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBCU3RyaW5nKGNv
bnN0IEF0b21pY1N0cmluZyYpOwotICAgICAgICBCU3RyaW5nKGNvbnN0IEtVUkwmKTsKKyAgICAg
ICAgQlN0cmluZyhjb25zdCBVUkwmKTsKICNpZiBVU0UoQ0YpCiAgICAgICAgIEJTdHJpbmcoQ0ZT
dHJpbmdSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwCmluZGV4IGJmYTBiNjcxNDcxMTIyNTMwNjdhZTc3
NzVjZWU1MDJhZDdlZTIyYzcuLmY0NTgzNGE5Y2U2ZjczYzZkMjFhNzc3ZmRmZGJjMDU3NDc1Yjc2
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGls
aXRpZXNXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2lu
Y2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHNobG9iai5oPgpAQCAtMTczLDcgKzE3Myw3IEBA
IHN0YXRpYyBGT1JNQVRFVEMqIHRleHRodG1sRm9ybWF0KCkKICAgICByZXR1cm4gJnRleHRodG1s
Rm9ybWF0OwogfQogCi1IR0xPQkFMIGNyZWF0ZUdsb2JhbERhdGEoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQorSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogewogICAgIFN0cmluZyBtdXRhYmxlVVJMKHVybC5z
dHJpbmcoKSk7CiAgICAgU3RyaW5nIG11dGFibGVUaXRsZSh0aXRsZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmgKaW5kZXggZThk
NDc1NWUzNzk4MzY2ZDkyYzY3MTFiZTA3MjRhMzA2MzliYTQ3Ni4uMmE1ZWUwMWY3MzNhZDFhYjU0
M2E4N2MzYTA1NWUxOWEyNDJkYWVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaApAQCAtMzMsMTEgKzMzLDExIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNzIFVS
TDsKIAogSEdMT0JBTCBjcmVhdGVHbG9iYWxEYXRhKGNvbnN0IFN0cmluZyYpOwogSEdMT0JBTCBj
cmVhdGVHbG9iYWxEYXRhKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwotSEdMT0JBTCBjcmVhdGVHbG9i
YWxEYXRhKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CitIR0xPQkFMIGNy
ZWF0ZUdsb2JhbERhdGEoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCiBG
T1JNQVRFVEMqIHVybFdGb3JtYXQoKTsKIEZPUk1BVEVUQyogdXJsRm9ybWF0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VXaW4uY3BwCmluZGV4IGMwOGRhNzRmMzU1
ZmIwMDIzODZhYzM2MTVjZmI4ODg0NWJhMzk4YzYuLjMxYTMyZTRjM2MwMjUzZTgxNTdlODQ4NWJk
MTNiNWExMWNlZWE0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnSW1hZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VXaW4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiSFduZERDLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiU3RyaW5nVHJ1bmNhdG9yLmgiCiAjaW5j
bHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIldlYkNvcmVUZXh0UmVuZGVyZXIuaCIKQEAgLTEy
MSw3ICsxMjEsNyBAQCBzdGF0aWMgRm9udCBkcmFnTGFiZWxGb250KGludCBzaXplLCBib29sIGJv
bGQsIEZvbnRSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGluTGFiZWwsIEZvbnRSZW5kZXJpbmdNb2RlIGZvbnRSZW5kZXJpbmdNb2RlKQor
RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZvckxpbmsoVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgaW5MYWJlbCwgRm9udFJlbmRlcmluZ01vZGUgZm9udFJlbmRlcmluZ01vZGUpCiB7CiAgICAg
Ly8gVGhpcyBpcyBtb3JlIG9yIGxlc3MgYW4gZXhhY3QgbWF0Y2ggZm9yIHRoZSBNYWMgT1MgWCBj
b2RlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAK
aW5kZXggZWFhYzE1MDYwZmFjNWY1ODU2Nzg4OWFkMmI5ZWZlOWU2YjI2MmQ3NC4uODE2YTMxNTAw
ZDc5OWI5NmQzZWYzZTQ0YjJjMDVlNTE4ZGQ4NGJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUg
IkhXbmREQy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZS5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtMzQ0
LDcgKzM0NCw3IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnJlYWRGaWxlbmFtZXMoKQog
I2VuZGlmCiB9CiAKLXN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29u
c3QgS1VSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aFBsYWluVGV4dCwgYm9vbCB3aXRo
SFRNTCkKK3N0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJM
JiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoUGxhaW5UZXh0LCBib29sIHdpdGhIVE1MKQog
ewogICAgIEFTU0VSVChkYXRhKTsKIApAQCAtMzk2LDcgKzM5Niw3IEBAIGJvb2wgUGFzdGVib2Fy
ZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAg
ICAgQ2xpcGJvYXJkRGF0YVR5cGUgd2luVHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUo
dHlwZSk7CiAKICAgICBpZiAod2luVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVVSTCkKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBL
VVJMKEtVUkwoKSwgZGF0YSksIFN0cmluZygpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjp3cml0ZVVSTChtX3dyaXRhYmxlRGF0YU9iamVjdC5nZXQoKSwgVVJMKFVSTCgp
LCBkYXRhKSwgU3RyaW5nKCksIGZhbHNlLCB0cnVlKTsKIAogICAgIGlmICh3aW5UeXBlID09IENs
aXBib2FyZERhdGFUeXBlVGV4dCkgewogICAgICAgICBTVEdNRURJVU0gbWVkaXVtID0gezB9OwpA
QCAtNTY1LDcgKzU2NSw3IEBAIHN0YXRpYyBTdHJpbmcgZmlsZXN5c3RlbVBhdGhGcm9tVXJsT3JU
aXRsZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiAgICAgfQogCiAgICAg
aWYgKCFsc3RybGVuKGZzUGF0aEJ1ZmZlcikpIHsKLSAgICAgICAgS1VSTCBrdXJsKEtVUkwoKSwg
dXJsKTsKKyAgICAgICAgVVJMIGt1cmwoVVJMKCksIHVybCk7CiAgICAgICAgIHVzZWRVUkwgPSB0
cnVlOwogICAgICAgICAvLyBUaGUgZmlsZW5hbWUgZm9yIGFueSBjb250ZW50IGJhc2VkIGRyYWcg
b3IgZmlsZSB1cmwgc2hvdWxkIGJlIHRoZSBsYXN0IGVsZW1lbnQgb2YgCiAgICAgICAgIC8vIHRo
ZSBwYXRoLiBJZiB3ZSBjYW4ndCBmaW5kIGl0LCBvciB3ZSdyZSBjb21pbmcgdXAgd2l0aCB0aGUg
bmFtZSBmb3IgYSBsaW5rCkBAIC02NDAsMTQgKzY0MCwxNCBAQCBleGl0OgogICAgIHJldHVybiBo
cjsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBLVVJM
JiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQordm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVS
TFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiB7
CiAgICAgaWYgKCFtX3dyaXRhYmxlRGF0YU9iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIFdl
YkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBrdXJsLCB0aXRsZVN0
ciwgdHJ1ZSwgdHJ1ZSk7CiAKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKLSAgICBB
U1NFUlQodXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOyAvLyBLVVJMOjpzdHJpbmcoKSBpcyBVUkwg
ZW5jb2RlZC4KKyAgICBBU1NFUlQodXJsLmNvbnRhaW5zT25seUFTQ0lJKCkpOyAvLyBVUkw6OnN0
cmluZygpIGlzIFVSTCBlbmNvZGVkLgogCiAgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVzeXN0ZW1Q
YXRoRnJvbVVybE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgTCIuVVJMIiwgdHJ1ZSk7CiAgICAgU3Ry
aW5nIGNvbnRlbnRTdHJpbmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiArIHVybCArICJc
clxuIik7CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQ
YXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIHdyaXRlVVJMVG9EYXRhT2JqZWN0KHBh
c3RlYm9hcmRVUkwudXJsLCBwYXN0ZWJvYXJkVVJMLnRpdGxlKTsKIH0KIAotdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQor
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC05MzIsNyArOTMyLDcgQEAgc3Rh
dGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChTaGFyZWRCdWZmZXIqIGRh
dGEpCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFs
SERyb3BDb250ZW50KGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgU2hhcmVkQnVm
ZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7CiAgICAg
aWYgKGZpbGVOYW1lLmlzRW1wdHkoKSB8fCAhZGF0YSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
MDAxLDcgKzEwMDEsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQo
Y29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZQogICAgIHJldHVybiBtZW1P
Ymo7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1hZ2VU
b0RhdGFPYmplY3QoRWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8g
U2hvdmUgaW1hZ2UgZGF0YSBpbnRvIGEgRGF0YU9iamVjdCBmb3IgdXNlIGFzIGEgZmlsZQogICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOwpAQCAt
MTAzMiw3ICsxMDMyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlVG9EYXRhT2JqZWN0
KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKICAgICB3cml0ZUZpbGVUb0RhdGFP
YmplY3QobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIGltYWdlRmlsZURlc2NyaXB0b3IsIGlt
YWdlRmlsZUNvbnRlbnQsIGhEcm9wQ29udGVudCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCit2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgV2ViQ29yZTo6d3JpdGVV
UkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIHVybCwgdGl0bGUsIHRydWUsIGZhbHNlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TU0xLZXlHZW5lcmF0
b3JXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldp
bi5jcHAKaW5kZXggYmQ0MGYyMGEzNDJiMDc0ZTgwYzljOWZlNTIwZjE5ZTAyMWMzNDkyNS4uNDhk
ZTM4NzdiYWM3YjQ5ZDBjNDcwZDMyMWY0ZjExNDMwODhkMzM3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1NTTEtleUdlbmVyYXRvcldpbi5jcHAKQEAgLTM1LDcgKzM1
LDcgQEAgdm9pZCBXZWJDb3JlOjpnZXRTdXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYg
dikKICAgICB2LmFwcGVuZCgiTWVkaXVtIEdyYWRlIik7CiB9CiAKLVN0cmluZyBXZWJDb3JlOjpz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgY2hhbGxlbmdlLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViQ29yZTo6c2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcm
IGNoYWxsZW5nZSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nIGtleVN0cmluZzsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNw
cAppbmRleCA4NTZjZWE5NjVlZWEzM2VlODAwNWJlZTgwNDA1NjA3Y2FhNzY0MTVhLi40MDU2ZTMy
MDVjMDE0MzBmN2E1YWMwZDkxZWUzMjFjZTYxZDliMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vVGVtcG9yYXJ5TGlua1N0dWJzLmNwcApAQCAtMzQsNyArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyA8a2V5Z2VuPgotU3RyaW5nIHNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgS1VS
TCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFN0cmluZygpOyB9CitTdHJpbmcgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBTdHJpbmcoKTsgfQogdm9pZCBnZXRT
dXBwb3J0ZWRLZXlTaXplcyhWZWN0b3I8U3RyaW5nPiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQog
CiAjaWYgIVVTRShDRk5FVFdPUkspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCmluZGV4IGY4Y2MwMTM4OGE4M2ZjZjBmZmNlZjQwYjRkYjFlZjAzYzVmNDRiZmIuLmNj
NjJjOWVmMmVmNDUyOTViZTUxNjJlMzYxMmVhOWI5MzlhYjk2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAi
UGx1Z2luRGF0YWJhc2UuaCIKIAogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsdWdpblBhY2thZ2UuaCIKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogI2luY2x1ZGUgIkZpbGVTeXN0ZW0u
aCIKQEAgLTI4MSw3ICsyODEsNyBAQCBTdHJpbmcgUGx1Z2luRGF0YWJhc2U6Ok1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKSBjb25zdAogICAgIHJldHVybiBtaW1l
VHlwZUZvclBsdWdpbi5nZXQocGx1Z2luQ2hvaWNlc1swXSk7CiB9CiAKLVBsdWdpblBhY2thZ2Uq
IFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBtaW1l
VHlwZSkKK1BsdWdpblBhY2thZ2UqIFBsdWdpbkRhdGFiYXNlOjpmaW5kUGx1Z2luKGNvbnN0IFVS
TCYgdXJsLCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gcGx1Z2luRm9yTUlNRVR5cGUobWltZVR5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5oCmluZGV4IDZmYWU1ZjA4YTcwOGMwNDE2OWZmZjIy
Mjk0MzIwYjViZDU3MWU4ZjguLjhkN2VkMDg0MDlkNzI0MjAxOGEyYTEzYzM5ZmU1MmIwNzE4ZDZi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmgKQEAgLTM4LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEVsZW1lbnQ7CiAgICAgY2xhc3Mg
RnJhbWU7CiAgICAgY2xhc3MgSW50U2l6ZTsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVS
TDsKICAgICBjbGFzcyBQbHVnaW5EYXRhYmFzZUNsaWVudDsKICAgICBjbGFzcyBQbHVnaW5QYWNr
YWdlOwogCkBAIC02NSw3ICs2NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgaXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpOwogICAgICAgICBzdGF0aWMgaW50IHByZWZlcnJlZFBsdWdpbkNvbXBhcmUoY29uc3Qgdm9p
ZCosIGNvbnN0IHZvaWQqKTsKIAotICAgICAgICBQbHVnaW5QYWNrYWdlKiBmaW5kUGx1Z2luKGNv
bnN0IEtVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICAgICAgUGx1Z2luUGFja2FnZSogZmlu
ZFBsdWdpbihjb25zdCBVUkwmLCBTdHJpbmcmIG1pbWVUeXBlKTsKICAgICAgICAgUGx1Z2luUGFj
a2FnZSogcGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAgICAgICAg
IHZvaWQgc2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgUGx1Z2luUGFja2FnZSogcGx1Z2luKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5T
dHJlYW0uY3BwCmluZGV4IDUwNTlhZGJlMGI4YzQ0ZWU0OWMxYTIyMzU5Mjg5YTlhNWVjN2ZmYmQu
LjhiM2JkOTkyOTU0YTU5ZThiZDU5ZjEwZGE2M2IyZDAyOWUyMzc2MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFBsdWdp
blN0cmVhbTo6c3RhcnRTdHJlYW0oKQogewogICAgIEFTU0VSVChtX3N0cmVhbVN0YXRlID09IFN0
cmVhbUJlZm9yZVN0YXJ0ZWQpOwogCi0gICAgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSBtX3Jl
c291cmNlUmVzcG9uc2UudXJsKCk7CisgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCA9IG1fcmVz
b3VyY2VSZXNwb25zZS51cmwoKTsKIAogICAgIC8vIFNvbWUgcGx1Z2lucyAoRmxhc2gpIGV4cGVj
dCB0aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUgcGFzc2VkIGJhY2sgZGVjb2RlZCBhcyB0aGlzIGlz
IHRoZQogICAgIC8vIGZvcm1hdCB1c2VkIHdoZW4gcmVxdWVzdGluZyB0aGUgVVJMLgpAQCAtMzg2
LDcgKzM4Niw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAgfSAKIH0K
IAotdm9pZCBQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IEtVUkwmIHJl
cXVlc3RVUkwsIGNvbnN0IENTdHJpbmcmIHJlc3VsdFN0cmluZykKK3ZvaWQgUGx1Z2luU3RyZWFt
OjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IENTdHJp
bmcmIHJlc3VsdFN0cmluZykKIHsKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoMCwgUmVzb3VyY2VS
ZXNwb25zZShyZXF1ZXN0VVJMLCAidGV4dC9wbGFpbiIsIHJlc3VsdFN0cmluZy5sZW5ndGgoKSwg
IiIsICIiKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5oCmluZGV4IDU1ZDE3
MDJiZjliNTljY2FiNDc1ZWM1ZDNjMzJmZDlkNjhjZmVkN2QuLjdjMDQ4NjZhODk5Zjg4MjllZDVl
YWQ4NGZmYWU3Y2FhM2Q3Y2MyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5TdHJlYW0u
aApAQCAtMjgsNyArMjgsNyBAQAogI2RlZmluZSBQbHVnaW5TdHJlYW1faAogCiAjaW5jbHVkZSAi
RmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIgogI2luY2x1ZGUgIlBsdWdpblF1aXJr
U2V0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC03MCw3ICs3MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldExvYWRNYW51YWxseShib29sIGxv
YWRNYW51YWxseSkgeyBtX2xvYWRNYW51YWxseSA9IGxvYWRNYW51YWxseTsgfQogCi0gICAgICAg
IHZvaWQgc2VuZEphdmFTY3JpcHRTdHJlYW0oY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgY29uc3Qg
V1RGOjpDU3RyaW5nJiByZXN1bHRTdHJpbmcpOworICAgICAgICB2b2lkIHNlbmRKYXZhU2NyaXB0
U3RyZWFtKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV1RGOjpDU3RyaW5nJiByZXN1bHRT
dHJpbmcpOwogICAgICAgICB2b2lkIGNhbmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSZWFzb24pOwog
CiAgICAgICAgIHN0YXRpYyBOUFAgb3duZXJGb3JTdHJlYW0oTlBTdHJlYW0qKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGFmYzBhYWI1OTY2MzY3YzkzODBkNDA3MjI0
NzYyMmJlZjA0NTgwOTMuLjBiMmY4NmQwYTA5MjUzOTg4ZDY1ODJiMzFmOTM5MWJjMGFjMzBhZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBA
IHN0YXRpYyBJbnN0YW5jZU1hcCYgaW5zdGFuY2VNYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAK
LXN0YXRpYyBTdHJpbmcgc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVy
bCkKK3N0YXRpYyBTdHJpbmcgc2NyaXB0U3RyaW5nSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGVyZm9y
bVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICBpZiAobV9wYXJlbnRGcmFtZS0+
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSAhPSBtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS5hY3Rp
dmVEb2N1bWVudExvYWRlcigpICYmICh0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgfHwgbV9wYXJl
bnRGcmFtZS0+dHJlZSgpLmZpbmQodGFyZ2V0RnJhbWVOYW1lKSAhPSBtX3BhcmVudEZyYW1lKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgS1VSTCByZXF1ZXN0VVJMID0gcmVxdWVzdC0+ZnJhbWVM
b2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOworICAgIFVSTCByZXF1ZXN0VVJM
ID0gcmVxdWVzdC0+ZnJhbWVMb2FkUmVxdWVzdCgpLnJlc291cmNlUmVxdWVzdCgpLnVybCgpOwog
ICAgIFN0cmluZyBqc1N0cmluZyA9IHNjcmlwdFN0cmluZ0lmSmF2YVNjcmlwdFVSTChyZXF1ZXN0
VVJMKTsKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocmVxdWVz
dC0+c2hvdWxkQWxsb3dQb3B1cHMoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUg
OiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CkBAIC01MTIsNyArNTEyLDcgQEAgTlBF
cnJvciBQbHVnaW5WaWV3Ojpsb2FkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJl
cXVlc3QsIGJvb2wgc2VuZE5vdGkKIHsKICAgICBBU1NFUlQoZnJhbWVMb2FkUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdFVCIgfHwgZnJhbWVMb2FkUmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIlBPU1QiKTsKIAotICAgIEtVUkwgdXJs
ID0gZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKKyAgICBVUkwgdXJs
ID0gZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAKICAgICBp
ZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0lOVkFMSURfVVJMOwpAQCAt
NTQxLDcgKzU0MSw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6bG9hZChjb25zdCBGcmFtZUxvYWRS
ZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmROb3RpCiAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOwogfQogCi1zdGF0aWMgS1VSTCBtYWtlVVJMKGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IGNoYXIqIHJlbGF0aXZlVVJMU3RyaW5nKQorc3RhdGljIFVSTCBtYWtlVVJMKGNvbnN0
IFVSTCYgYmFzZVVSTCwgY29uc3QgY2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCiB7CiAgICAgU3Ry
aW5nIHVybFN0cmluZyA9IHJlbGF0aXZlVVJMU3RyaW5nOwogCkBAIC01NDksNyArNTQ5LDcgQEAg
c3RhdGljIEtVUkwgbWFrZVVSTChjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBjaGFyKiByZWxh
dGl2ZVVSTFN0cmluZykKICAgICB1cmxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCdcbicsICIi
KTsKICAgICB1cmxTdHJpbmcucmVwbGFjZVdpdGhMaXRlcmFsKCdccicsICIiKTsKIAotICAgIHJl
dHVybiBLVVJMKGJhc2VVUkwsIHVybFN0cmluZyk7CisgICAgcmV0dXJuIFVSTChiYXNlVVJMLCB1
cmxTdHJpbmcpOwogfQogCiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFVSTE5vdGlmeShjb25zdCBj
aGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdm9pZCogbm90aWZ5RGF0YSkKQEAgLTc5Niw3
ICs3OTYsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmFtZXRlcnMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdAogICAgIG1fcGFyYW1Db3VudCA9IHBh
cmFtQ291bnQ7CiB9CiAKLVBsdWdpblZpZXc6OlBsdWdpblZpZXcoRnJhbWUqIHBhcmVudEZyYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplLCBQbHVnaW5QYWNrYWdlKiBwbHVnaW4sIEhUTUxQbHVnSW5F
bGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQorUGx1Z2luVmlldzo6UGx1Z2luVmlldyhG
cmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUsIFBsdWdpblBhY2thZ2UqIHBs
dWdpbiwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFs
dWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKICAgICA6IG1f
cGFyZW50RnJhbWUocGFyZW50RnJhbWUpCiAgICAgLCBtX3BsdWdpbihwbHVnaW4pCiAgICAgLCBt
X2VsZW1lbnQoZWxlbWVudCkKQEAgLTk0OCw3ICs5NDgsNyBAQCBib29sIFBsdWdpblZpZXc6Omlz
Q2FsbGluZ1BsdWdpbigpCiAgICAgcmV0dXJuIHNfY2FsbGluZ1BsdWdpbiA+IDA7CiB9CiAKLVBh
c3NSZWZQdHI8UGx1Z2luVmlldz4gUGx1Z2luVmlldzo6Y3JlYXRlKEZyYW1lKiBwYXJlbnRGcmFt
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpCitQYXNzUmVmUHRyPFBsdWdpblZpZXc+IFBsdWdpblZpZXc6OmNyZWF0ZShGcmFt
ZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmIHNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgLy8gaWYgd2UgZmFpbCB0byBmaW5kIGEgcGx1
Z2luIGZvciB0aGlzIE1JTUUgdHlwZSwgZmluZFBsdWdpbiB3aWxsIHNlYXJjaCBmb3IKICAgICAv
LyBhIHBsdWdpbiBieSB0aGUgZmlsZSBleHRlbnNpb24gYW5kIHVwZGF0ZSB0aGUgTUlNRSB0eXBl
LCBzbyBwYXNzIGEgbXV0YWJsZSBTdHJpbmcKQEAgLTEzODIsNyArMTM4Miw3IEBAIE5QRXJyb3Ig
UGx1Z2luVmlldzo6Z2V0VmFsdWVGb3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0
IGNoYXIqIHVybCwgY2hhCiAKICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAgICAgY2FzZSBOUE5V
UkxWQ29va2llOiB7Ci0gICAgICAgIEtVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5i
YXNlVVJMKCksIHVybCk7CisgICAgICAgIFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkt
PmJhc2VVUkwoKSwgdXJsKTsKICAgICAgICAgaWYgKHUuaXNWYWxpZCgpKSB7CiAgICAgICAgICAg
ICBGcmFtZSogZnJhbWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwogICAg
ICAgICAgICAgaWYgKGZyYW1lKSB7CkBAIC0xNDA0LDcgKzE0MDQsNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFy
KiB1cmwsIGNoYQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOUE5VUkxWUHJveHk6
IHsKLSAgICAgICAgS1VSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwg
dXJsKTsKKyAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgp
LCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIEZyYW1lKiBm
cmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAgICAgICAgICBj
b25zdCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+bG9hZGVyKCkg
OiAwOwpAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZv
clVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29uc3QgY2hhciogdXJsLCBjb24KIAogICAg
IHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlVSTFZDb29raWU6IHsKLSAgICAgICAg
S1VSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAg
ICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOwogICAg
ICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyBjb29raWVT
dHIgPSBTdHJpbmc6OmZyb21VVEY4KHZhbHVlLCBsZW4pOwogICAgICAgICAgICAgRnJhbWUqIGZy
YW1lID0gZ2V0RnJhbWUocGFyZW50RnJhbWUoKSwgbV9lbGVtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmgKaW5kZXggYzI0NWQzMWYwYjE1NmIyYWFhMDg5MmQwZThjOGE0MDgxNjg5
MGYzYi4uMTY2YTYzN2M5MDBiMjNhZjI5ZDZjMzAwNjAxNjgyMzEyNWIwOTZiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTc5LDcgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEtleWJvYXJkRXZl
bnQ7CiAgICAgY2xhc3MgTW91c2VFdmVudDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVS
TDsKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBj
bGFzcyBQbHVnaW5NZXNzYWdlVGhyb3R0bGVyV2luOwogI2VuZGlmCkBAIC0xMzIsNyArMTMyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgUGx1
Z2luTWFudWFsTG9hZGVyCiAgICAgICAgICAgICAgICAgICAgICAsIHByaXZhdGUgTWVkaWFDYW5T
dGFydExpc3RlbmVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpblZpZXc+IGNyZWF0ZShGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5h
bWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICAgICAgdmlydHVhbCB+UGx1Z2luVmlldygp
OwogCiAgICAgICAgIFBsdWdpblBhY2thZ2UqIHBsdWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1
Z2luLmdldCgpOyB9CkBAIC0yMTcsNyArMjE3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgcGx1Z2luc1BhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BsdWdp
bnNQYWdlOyB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX21pbWVUeXBlOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CisgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KIAogI2lmIGRlZmluZWQoWFBfTUFDT1NYKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKICAgICAgICAgYm9vbCBwb3BVcENvbnRleHRNZW51KE5QTWVudSopOwpAQCAtMjUwLDcgKzI1
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUGx1Z2luVmlldyhGcmFtZSogcGFyZW50RnJhbWUsIGNvbnN0IEludFNpemUmLCBQbHVnaW5Q
YWNrYWdlKiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworICAgICAgICBQbHVnaW5W
aWV3KEZyYW1lKiBwYXJlbnRGcmFtZSwgY29uc3QgSW50U2l6ZSYsIFBsdWdpblBhY2thZ2UqLCBI
VE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KTsKIAogICAgICAgICB2b2lkIHNldFBhcmFtZXRl
cnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbVZhbHVlcyk7CiAgICAgICAgIGJvb2wgc3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCgp
OwpAQCAtMjg2LDcgKzI4Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRy
PFBsdWdpblBhY2thZ2U+IG1fcGx1Z2luOwogICAgICAgICBIVE1MUGx1Z0luRWxlbWVudCogbV9l
bGVtZW50OwogICAgICAgICBib29sIG1faXNTdGFydGVkOwotICAgICAgICBLVVJMIG1fdXJsOwor
ICAgICAgICBVUkwgbV91cmw7CiAgICAgICAgIFBsdWdpblN0YXR1cyBtX3N0YXR1czsKICAgICAg
ICAgVmVjdG9yPEludFJlY3Q+IG1faW52YWxpZFJlY3RzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggZmJmZjJlOTE1NWFhM2Ni
NDI0ZmUyNmY4Y2FhM2EyMzVmNmExYTBiNS4uMzY2MGU0YWJiYzUzNTYwZDAzYzExYzM4YzlkOTU1
MDE4ZmIyZGEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2lu
RGF0YWJhc2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRh
dGFiYXNlV2luLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIlBsdWdpbkRhdGFiYXNl
LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJV
UkwuaCIKICNpbmNsdWRlICJQbHVnaW5QYWNrYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1dpbmRvd3NF
eHRyYXMuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RM
b2NhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RMb2NhdGlvbi5oCmlu
ZGV4IDVlZmU1Zjc3ZGQxOTBjOTFjY2M0YTcyOWU0Nzc1ZjA0ZjdiOWE4NzEuLmUxMjE5MWZmNzZj
MDRmNDM5ZGRjMTYwYjJkMTliNjkxNmVlNmI5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0TG9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdExvY2F0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNzIEtVUkw7Citj
bGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xs
YmFyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGIz
OWEzODAzNjE5MzExNjI0NjNlZGUzMDljZTkxZWU2YjBhZWYzYWYuLjg2OTJjOGVjZjUyNzE2OWI3
YTE0ZjhlOWM5ZDJiODAzOTk5MDU4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTMxMCwxMyArMzEwLDEzIEBAIEludFJlY3QgSGl0VGVzdFJlc3Vs
dDo6aW1hZ2VSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJl
bmRlckJveCgpLT5hYnNvbHV0ZUNvbnRlbnRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
IH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKK1VSTCBI
aXRUZXN0UmVzdWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW5u
ZXJOb25TaGFyZWROb2RlKQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4g
VVJMKCk7CiAKICAgICBpZiAoIShtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSAmJiBt
X2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpKSkKLSAgICAgICAgcmV0
dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogCiAgICAgQXRvbWljU3RyaW5nIHVy
bFN0cmluZzsKICAgICBpZiAobV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUoZW1iZWRU
YWcpCkBAIC0zMzAsMzcgKzMzMCwzNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlSW1h
Z2VVUkwoKSBjb25zdAogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG1faW5u
ZXJOb25TaGFyZWROb2RlLmdldCgpKTsKICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+aW1h
Z2VTb3VyY2VVUkwoKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAg
ICAgcmV0dXJuIFVSTCgpOwogCiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxT
dHJpbmcpKTsKIH0KIAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZVBERlVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVQREZVUkwoKSBjb25zdAogewogICAgIGlmICgh
bV9pbm5lck5vblNoYXJlZE5vZGUpCi0gICAgICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJl
dHVybiBVUkwoKTsKIAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5vZGUtPmhhc1RhZ05hbWUo
ZW1iZWRUYWcpICYmICFtX2lubmVyTm9uU2hhcmVkTm9kZS0+aGFzVGFnTmFtZShvYmplY3RUYWcp
KQotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAKICAgICBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
KG1faW5uZXJOb25TaGFyZWROb2RlLmdldCgpKTsKLSAgICBLVVJMIHVybCA9IG1faW5uZXJOb25T
aGFyZWROb2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhlbGVtZW50LT51cmwoKSkpOworICAgIFVSTCB1cmwgPSBtX2lubmVyTm9uU2hh
cmVkTm9kZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoZWxlbWVudC0+dXJsKCkpKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAg
ICAgIHJldHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIGlmIChlbGVt
ZW50LT5zZXJ2aWNlVHlwZSgpID09ICJhcHBsaWNhdGlvbi9wZGYiIHx8IChlbGVtZW50LT5zZXJ2
aWNlVHlwZSgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmxvd2VyKCkuZW5kc1dpdGgoIi5wZGYi
KSkpCiAgICAgICAgIHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIEtVUkwoKTsKKyAgICByZXR1cm4g
VVJMKCk7CiB9CiAKLUtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0
CitVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVNZWRpYVVSTCgpIGNvbnN0CiB7CiAjaWYgRU5B
QkxFKFZJREVPKQogICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsdCA9IG1lZGlhRWxl
bWVudCgpKQogICAgICAgICByZXR1cm4gbWVkaWFFbHQtPmN1cnJlbnRTcmMoKTsKLSAgICByZXR1
cm4gS1VSTCgpOworICAgIHJldHVybiBVUkwoKTsKICNlbHNlCi0gICAgcmV0dXJuIEtVUkwoKTsK
KyAgICByZXR1cm4gVVJMKCk7CiAjZW5kaWYKIH0KIApAQCAtNTEwLDEwICs1MTAsMTAgQEAgdm9p
ZCBIaXRUZXN0UmVzdWx0Ojp0b2dnbGVNZWRpYU11dGVTdGF0ZSgpIGNvbnN0CiAjZW5kaWYKIH0K
IAotS1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjb25zdAorVVJMIEhpdFRl
c3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lubmVyVVJM
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgQXRvbWljU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoaXNIVE1MQW5jaG9yRWxlbWVu
dChtX2lubmVyVVJMRWxlbWVudC5nZXQoKSkgfHwgaXNIVE1MQXJlYUVsZW1lbnQobV9pbm5lclVS
TEVsZW1lbnQuZ2V0KCkpIHx8IG1faW5uZXJVUkxFbGVtZW50LT5oYXNUYWdOYW1lKGxpbmtUYWcp
KQpAQCAtNTIzLDcgKzUyMyw3IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVMaW5rVVJM
KCkgY29uc3QKICAgICAgICAgdXJsU3RyaW5nID0gbV9pbm5lclVSTEVsZW1lbnQtPmdldEF0dHJp
YnV0ZShYTGlua05hbWVzOjpocmVmQXR0cik7CiAjZW5kaWYKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiBLVVJMKCk7CisgICAgICAgIHJldHVybiBVUkwoKTsKIAogICAgIHJldHVybiBtX2lubmVy
VVJMRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaAppbmRleCBlYzUyMGY4MzAyYjk1NGI2YzFkODE2MDVjMjI5ZGIzOGJmMTQ2NGMz
Li5mNWQwOTU5NGY0OTkxOThkMzU2OGEzZTBlMjRmYmE4MjljNjljNjk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRnJh
bWU7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogI2VuZGlmCiBjbGFzcyBJbWFnZTsKLWNsYXNz
IEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xh
c3MgU2Nyb2xsYmFyOwpAQCAtMTAzLDEwICsxMDMsMTAgQEAgcHVibGljOgogICAgIFN0cmluZyB0
aXRsZURpc3BsYXlTdHJpbmcoKSBjb25zdDsKICAgICBJbWFnZSogaW1hZ2UoKSBjb25zdDsKICAg
ICBJbnRSZWN0IGltYWdlUmVjdCgpIGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVJbWFnZVVSTCgp
IGNvbnN0OwotICAgIEtVUkwgYWJzb2x1dGVQREZVUkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29s
dXRlTWVkaWFVUkwoKSBjb25zdDsKLSAgICBLVVJMIGFic29sdXRlTGlua1VSTCgpIGNvbnN0Owor
ICAgIFVSTCBhYnNvbHV0ZUltYWdlVVJMKCkgY29uc3Q7CisgICAgVVJMIGFic29sdXRlUERGVVJM
KCkgY29uc3Q7CisgICAgVVJMIGFic29sdXRlTWVkaWFVUkwoKSBjb25zdDsKKyAgICBVUkwgYWJz
b2x1dGVMaW5rVVJMKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRleHRDb250ZW50KCkgY29uc3Q7CiAg
ICAgYm9vbCBpc0xpdmVMaW5rKCkgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJMaW5rKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggZmM3MWEwOGMyMWI1NzE1MTRiYTNiODVmN2VmYTQwMGY4
YTY3MzRiYS4uZjhjYmVhODNiNDhiODRiMWM1NjQ2M2NhODA1YTNlYmZhODFiNjc3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZp
bHRlclByb2dyYW0uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJTdHlsZVNoYWRlci5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAKQEAgLTQ4
LDggKzQ4LDggQEAgY2xhc3MgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtQ2FjaGU7CiBjbGFzcyBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVi
bGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+
IGNyZWF0ZShLVVJMIHZlcnRleFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVy
dGV4U2hhZGVyLCAKLSAgICAgICAgS1VSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dy
YW1UeXBlLAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4g
Y3JlYXRlKFVSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRl
eFNoYWRlciwgCisgICAgICAgIFVSTCBmcmFnbWVudFNoYWRlclVSTCwgUGFzc1JlZlB0cjxTdHls
ZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1U
eXBlLAogICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNl
dHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlclVS
TCwgdmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlclVSTCwgZnJhZ21lbnRTaGFkZXIsIHByb2dy
YW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUpKTsKQEAgLTE0MywxMSArMTQzLDExIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENhY2hlKFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbUNhY2hlKiBj
YWNoZSkgeyBtX2NhY2hlID0gY2FjaGU7IH0KICAgICBib29sIGluQ2FjaGUoKSBjb25zdCB7IHJl
dHVybiBtX2NhY2hlOyB9CiAgICAgCi0gICAgS1VSTCB2ZXJ0ZXhTaGFkZXJVUkwoKSBjb25zdCB7
IHJldHVybiBtX3ZlcnRleFNoYWRlclVSTDsgfQotICAgIEtVUkwgZnJhZ21lbnRTaGFkZXJVUkwo
KSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyVVJMOyB9CisgICAgVVJMIHZlcnRleFNo
YWRlclVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyVVJMOyB9CisgICAgVVJMIGZy
YWdtZW50U2hhZGVyVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclVSTDsgfQog
CiBwcml2YXRlOgotICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShLVVJMIHZlcnRleFNoYWRl
clVSTCwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBLVVJMIGZyYWdtZW50
U2hhZGVyVVJMLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgCisgICAg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKFVSTCB2ZXJ0ZXhTaGFkZXJVUkwsIFBhc3NSZWZQdHI8
U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgVVJMIGZyYWdtZW50U2hhZGVyVVJMLCBQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgCiAgICAgICAgIEN1c3RvbUZpbHRlclBy
b2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGlu
Z3MmIG1peFNldHRpbmdzLCBDdXN0b21GaWx0ZXJNZXNoVHlwZSBtZXNoVHlwZSkKICAgICAgICAg
OiBDdXN0b21GaWx0ZXJQcm9ncmFtKHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncywgbWVzaFR5cGUp
CiAgICAgICAgICwgbV92ZXJ0ZXhTaGFkZXIodmVydGV4U2hhZGVyKQpAQCAtMTcwLDggKzE3MCw4
IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGUgVVJMcyBmb3JtIHRoZSBrZXkgb2YgdGhlIFN0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbSBpbiB0aGUgY2FjaGUgYW5kIGFyZSB1c2VkCiAgICAgLy8gdG8g
bG9va3VwIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gd2hlbiBpdCdzIHJlbW92ZWQgZnJv
bSB0aGUgY2FjaGUuCi0gICAgS1VSTCBtX3ZlcnRleFNoYWRlclVSTDsKLSAgICBLVVJMIG1fZnJh
Z21lbnRTaGFkZXJVUkw7CisgICAgVVJMIG1fdmVydGV4U2hhZGVyVVJMOworICAgIFVSTCBtX2Zy
YWdtZW50U2hhZGVyVVJMOwogCiAgICAgLy8gVGhlIENhY2hlIGlzIHJlc3BvbnNpYmxlIG9mIGlu
dmFsaWRhdGluZyB0aGlzIHJlZmVyZW5jZS4KICAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1D
YWNoZSogbV9jYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRl
eCA3MGY5OWFhZGU3Njg3ZmIwZjcxY2NkNGIyOTVmY2IwOWJmOGJkZDFjLi4xYzYyZWY0YzM2OWJm
Y2RmMjE1Zjk1NDgyMjI0Njg0YTg0MjViNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAg
ICAoKml0KS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi12b2lkIFNWR0N1cnNvckVsZW1l
bnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykg
Y29uc3QKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxz
KExpc3RIYXNoU2V0PFVSTD4mIHVybHMpIGNvbnN0CiB7CiAgICAgU1ZHRWxlbWVudDo6YWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaAppbmRleCAxMzI4MWQ0ZjJjMzFjMTBhNWQxNTdlZGRjNDIzOTU5NDBlMzUzODdlLi40
ZmM4MTJmODdkYjkyNGM3OGYzM2ZjMGI4NWQxNzMyM2VhYzhjZjJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgT1ZFUlJJREUg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJp
YnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdDsKIAogICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDdXJzb3JFbGVtZW50KQogICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dC5jcHAKaW5kZXggMDllZmM2NmMwZTkyYTI5NDAzNTBkYjU5Mjk3MzlmMjI3Zjg2NjNlNC4uNjJh
NTZkOWU2M2NhMWZjMzI1ZGJiYTA0ZDAyY2I4NmEwNTI5ZmZkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQor
U1ZHRG9jdW1lbnQ6OlNWR0RvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAg
ICAgOiBEb2N1bWVudChmcmFtZSwgdXJsLCBTVkdEb2N1bWVudENsYXNzKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnQuaAppbmRleCBkYzBkMzQyMmI0ZTY1ODNhZjI3YzRkY2QwMDc0N2EzMjI4
YzQ0MGNjLi42NTNmYTNiNjExYzU3MTRmMzA3MTM4MGM3MjNkZGIwYTFhNzE4ZDEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRG9jdW1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBTVkdTVkdFbGVtZW50
OwogCiBjbGFzcyBTVkdEb2N1bWVudCBGSU5BTCA6IHB1YmxpYyBEb2N1bWVudCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUs
IGNvbnN0IEtVUkwmIHVybCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdEb2N1bWVudD4gY3Jl
YXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNWR0RvY3VtZW50KGZyYW1lLCB1cmwpKTsKICAgICB9CkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBwb3Mp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgS1VSTCYp
OworICAgIFNWR0RvY3VtZW50KEZyYW1lKiwgY29uc3QgVVJMJik7CiAKICAgICB2aXJ0dWFsIGJv
b2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlKikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRiMTc1NTQ5YTI0ZDYzZDM1
YWM2MzI1NmNmOTliMDk3ZDk0MjkyMjQuLjFjMWI0YThlNjE1ZDczNjQ4Y2VkYWRkMmFkMDA2NmQx
Yjg1YWUzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAt
MjA5LDcgKzIwOSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVu
dDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciogZmlsCiAgICAgcmV0dXJuIEZFSW1h
Z2U6OmNyZWF0ZVdpdGhJUklSZWZlcmVuY2UoZmlsdGVyLCBkb2N1bWVudCgpLCBocmVmKCksIHBy
ZXNlcnZlQXNwZWN0UmF0aW8oKSk7CiB9CiAKLXZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscykgY29uc3QKK3Zv
aWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDFkZTZhODNjZGRmNmI2ZjE3NDlhOTY2
Yzk4MDQzZDJkYzkzZGYxMDkuLjY5NjZkMzBjZDBhNTc3NThmNjFlNTljNzU2NzljNjA0ODVmYWNm
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCkBAIC01MSw3ICs1MSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0OwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKIAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggOTg5NGVjNGU1YjgzZTIyZmRkM2ZkZmZmNTI1YmIz
OWJiZWVhNzcyNC4uOGJiYmYyNDZmNmM1ODMyYzAzNTcyYWQ3ZmQ1OGFlMGM1ZWUyNWY4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBj
b25zdCBBdG9taWNTdHJpbmcmIFNWR0ltYWdlRWxlbWVudDo6aW1hZ2VTb3VyY2VVUkwoKSBjb25z
dAogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6aHJlZkF0dHIpOwogfQogCi12
b2lkIFNWR0ltYWdlRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OmFkZFN1YnJlc291
cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjb25zdAogewogICAgIFNW
R0dyYXBoaWNzRWxlbWVudDo6YWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKHVybHMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggYmE1NGI5NzI4NTIxMGNmNTNjNDUy
YmUwYTA3YTkwYzEwY2ViZDliYi4uNDRkNjQyYzI0ZDUxMjc1NTNmMGZjZDZjMGUxYzY1ZDM4YTdk
ZjFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyRWxlbWVudCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEmLCBSZW5kZXJTdHlsZSYpOwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGltYWdlU291cmNlVVJMKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNl
cygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAppbmRleCA3NGZmNmUxM2Ez
NjgzZmNiOGJiZWIxZjdhMTViY2EwMjU2ZDY0YjQzLi5mNjVmNjcxZWZmNDk5ZjIzOGQxNGI4ODZk
YzRmYmE5MWZkYjMzYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAKQEAg
LTUwLDkgKzUwLDkgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQog
CiBTdHJpbmcgU1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBLVVJMIGJhc2UgPSBlbGVtZW50KCktPmJhc2VVUkkoKTsK
KyAgICBVUkwgYmFzZSA9IGVsZW1lbnQoKS0+YmFzZVVSSSgpOwogICAgIGlmIChiYXNlLmlzVmFs
aWQoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwoYmFzZSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGF0dHJpYnV0ZSkpLnN0cmluZygpOworICAgICAgICByZXR1cm4gVVJMKGJhc2Us
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKS5zdHJpbmcoKTsK
ICAgICByZXR1cm4gZWxlbWVudCgpLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyaWJ1dGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuY3BwCmluZGV4IDdkOTExZjBkYzY2MzJmOTQ1ZTY0ZjNlM2EzYzE0
YjdiOGM1OTBlYjYuLjA5NGEyYzgwNmJiZDkzYTQ1ZGI0MTYyYTQ0YTMyOTBhNTVmM2JiNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBA
QCB2b2lkIFNWR1NjcmlwdEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IG1fdHlwZSA9IHR5cGU7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVudDo6YWRkU3VicmVzb3Vy
Y2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzKSBjb25zdAordm9pZCBTVkdT
Y3JpcHRFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJM
PiYgdXJscykgY29uc3QKIHsKICAgICBTVkdFbGVtZW50OjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHModXJscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCmluZGV4IGQ1
Yzk0NmQ0OTZkNzQ3ODE0NWUzMTY2MmY4ZDg5ZTU3MzI3NTU0NWIuLjM3OTNiMGY1M2YwMjZmNTdh
YjE4ODllZDBmN2VmMmRlMzIwZWNiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTY3JpcHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1l
bnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVz
b3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgeyBy
ZXR1cm4gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aGF2ZUxvYWRlZFJlcXVpcmVkUmVz
b3VyY2VzKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVy
ZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAz
MGU4NDk5YmVhN2VjZTc4YzA3NTc2ZDk0NTZmMzBkMjI0MDM1MDVjLi5hNjY3ZTExZDI2OGM2MTRi
MDEzNWZjZWZhNDVhMDM5ZWQ0MTljOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJl
bmNlLmNwcApAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUyLDkgKzUyLDkgQEAgU3RyaW5nIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21l
bnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmIHVybCwgRG9jdW0KICAgICBp
ZiAoc3RhcnQgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0g
ICAgS1VSTCBiYXNlID0gc3RhcnQgPyBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0
cmluZygwLCBzdGFydCkpIDogZG9jdW1lbnQuYmFzZVVSSSgpOworICAgIFVSTCBiYXNlID0gc3Rh
cnQgPyBVUkwoZG9jdW1lbnQuYmFzZVVSSSgpLCB1cmwuc3Vic3RyaW5nKDAsIHN0YXJ0KSkgOiBk
b2N1bWVudC5iYXNlVVJJKCk7CiAgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5z
dWJzdHJpbmcoc3RhcnQpOwotICAgIEtVUkwga3VybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIp
OworICAgIFVSTCBrdXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoa3VybCwgZG9jdW1lbnQudXJsKCkpKQogICAgICAg
ICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLnN1YnN0cmluZygxKTsKIApAQCAtNjIsMjggKzYy
LDI4IEBAIFN0cmluZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklT
dHJpbmcoY29uc3QgU3RyaW5nJiB1cmwsIERvY3VtCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgS1VSTCB1cmxGcm9tSVJJU3RyaW5nV2l0aEZyYWdtZW50SWRl
bnRpZmllcihjb25zdCBTdHJpbmcmIHVybCwgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmcmIGZy
YWdtZW50SWRlbnRpZmllcikKK3N0YXRpYyBpbmxpbmUgVVJMIHVybEZyb21JUklTdHJpbmdXaXRo
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgdXJsLCBEb2N1bWVudCYgZG9jdW1lbnQs
IFN0cmluZyYgZnJhZ21lbnRJZGVudGlmaWVyKQogewogICAgIHNpemVfdCBzdGFydE9mRnJhZ21l
bnRJZGVudGlmaWVyID0gdXJsLmZpbmQoJyMnKTsKICAgICBpZiAoc3RhcnRPZkZyYWdtZW50SWRl
bnRpZmllciA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0
dXJuIFVSTCgpOwogCiAgICAgLy8gRXhjbHVkZSB0aGUgJyMnIGNoYXJhY3RlciB3aGVuIGRldGVy
bWluaW5nIHRoZSBmcmFnbWVudElkZW50aWZpZXIuCiAgICAgZnJhZ21lbnRJZGVudGlmaWVyID0g
dXJsLnN1YnN0cmluZyhzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyICsgMSk7CiAgICAgaWYgKHN0
YXJ0T2ZGcmFnbWVudElkZW50aWZpZXIpIHsKLSAgICAgICAgS1VSTCBiYXNlKGRvY3VtZW50LmJh
c2VVUkkoKSwgdXJsLnN1YnN0cmluZygwLCBzdGFydE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7Ci0g
ICAgICAgIHJldHVybiBLVVJMKGJhc2UsIHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRl
bnRpZmllcikpOworICAgICAgICBVUkwgYmFzZShkb2N1bWVudC5iYXNlVVJJKCksIHVybC5zdWJz
dHJpbmcoMCwgc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4gVVJM
KGJhc2UsIHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogICAgIH0K
IAotICAgIHJldHVybiBLVVJMKGRvY3VtZW50LmJhc2VVUkkoKSwgdXJsLnN1YnN0cmluZyhzdGFy
dE9mRnJhZ21lbnRJZGVudGlmaWVyKSk7CisgICAgcmV0dXJuIFVSTChkb2N1bWVudC5iYXNlVVJJ
KCksIHVybC5zdWJzdHJpbmcoc3RhcnRPZkZyYWdtZW50SWRlbnRpZmllcikpOwogfQogCiBFbGVt
ZW50KiBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGNvbnN0IFN0
cmluZyYgaXJpLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZyogZnJhZ21lbnRJZGVudGlmaWVy
LCBEb2N1bWVudCogZXh0ZXJuYWxEb2N1bWVudCkKIHsKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZy
YWdtZW50IGlkZW50aWZpZXIgY29udGFpbmVkIHdpdGhpbiB0aGUgSVJJIHN0cmluZywgd2UgY2Fu
J3QgbG9va3VwIGFuIGVsZW1lbnQuCiAgICAgU3RyaW5nIGlkOwotICAgIEtVUkwgdXJsID0gdXJs
RnJvbUlSSVN0cmluZ1dpdGhGcmFnbWVudElkZW50aWZpZXIoaXJpLCBkb2N1bWVudCwgaWQpOwot
ICAgIGlmICh1cmwgPT0gS1VSTCgpKQorICAgIFVSTCB1cmwgPSB1cmxGcm9tSVJJU3RyaW5nV2l0
aEZyYWdtZW50SWRlbnRpZmllcihpcmksIGRvY3VtZW50LCBpZCk7CisgICAgaWYgKHVybCA9PSBV
UkwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoZnJhZ21lbnRJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCmluZGV4IDM2ZTAxMTdkOTU2NDcwNGQ0MGM5
ODRhZmU2ZDZlYjkxYTQ4ZDZlZTEuLmRkOTU2YWY4N2Y0OTU4MjQ1YzU5MTJhZTIwM2RiMjZkZmI3
NDk2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIElmIHRo
ZSBVUkkgbWF0Y2hlcyBvdXIgZG9jdW1lbnRzIFVSTCwgd2UncmUgZGVhbGluZyB3aXRoIGEgbG9j
YWwgcmVmZXJlbmNlLgotICAgICAgICBLVVJMIHVybCA9IGRvY3VtZW50LmNvbXBsZXRlVVJMKHVy
aSk7CisgICAgICAgIFVSTCB1cmwgPSBkb2N1bWVudC5jb21wbGV0ZVVSTCh1cmkpOwogICAgICAg
ICByZXR1cm4gIWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsLCBkb2N1bWVudC51
cmwoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggNGIx
MTBiMDRjZDNjYjQxMjg0ZDg4MTJjZmMzMDQ0M2M1ODNlMjQzZi4uNGNlYTY4Y2RhZWNjNzlhZTNm
OGU4NjBlOGE1YWFkNjliODc3M2ZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cApAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBib29sIGlzRXh0ZXJu
YWxSZWZlcmVuY2UgPSBpc0V4dGVybmFsVVJJUmVmZXJlbmNlKGhyZWYoKSwgZG9jdW1lbnQoKSk7
CiAgICAgICAgIGlmIChpc0V4dGVybmFsUmVmZXJlbmNlKSB7Ci0gICAgICAgICAgICBLVVJMIHVy
bCA9IGRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZigpKTsKKyAgICAgICAgICAgIFVSTCB1cmwg
PSBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYoKSk7CiAgICAgICAgICAgICBpZiAodXJsLmhh
c0ZyYWdtZW50SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHVybC5zdHJpbmcoKSkpOwogICAgICAgICAg
ICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKaW5kZXggZTZjOGExNzQ1YmVkNTYwMGIwYTZjYTkwNjgzMmVjM2Iz
ODkyZGM1ZC4uZTQ4ZmIzZjAxODcwYmFkMjU5NTBhZWEzNWY3ZWYyYmJiZDdjNTVhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAg
Ym9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAKICAgICAg
ICAgQVNTRVJUKGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpKTsgLy8gRG9jdW1lbnRMb2Fk
ZXIgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGZyYW1lLT5pbml0KCkuCiAgICAgICAgIGxv
YWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+c2V0TUlNRVR5cGUoImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLT5iZWdpbihLVVJMKCkpOyAvLyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CisgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS0+YmVnaW4oVVJMKCkpOyAv
LyBjcmVhdGUgdGhlIGVtcHR5IGRvY3VtZW50CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT53cml0ZXIoKS0+YWRkRGF0YShkYXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXpl
KCkpOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCktPmVu
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCmluZGV4IDY0
NzJlZDkwOWY0MGI4OTU0ZDJkZmMzMjA1MmVmM2I0MTFiY2EyNWYuLjhhMWQ2ZmFjMzA5NjUwNzU0
M2E3MjNhYTVlYzA2NjU4MDJjNDVkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJh
Y3RXb3JrZXIuY3BwCkBAIC02MCwyOCArNjAsMjggQEAgdm9pZCBBYnN0cmFjdFdvcmtlcjo6Y29u
dGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7
IAogfQogCi1LVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJiBlYykKK1VSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVSTChjb25z
dCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5
KCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gS1VSTCgpOwor
ICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHVzZSB0aGUgZHluYW1pYyBnbG9iYWwgc2NvcGUgKGJ1ZyAjMjc4ODcpCi0gICAgS1VSTCBzY3Jp
cHRVUkwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKHVybCk7CisgICAg
VVJMIHNjcmlwdFVSTCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29tcGxldGVVUkwodXJs
KTsKICAgICBpZiAoIXNjcmlwdFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwotICAgICAgICByZXR1cm4gS1VSTCgpOworICAgICAgICByZXR1cm4gVVJMKCk7CiAgICAg
fQogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhblJlcXVlc3Qoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0KIAogICAg
IGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpICYm
ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxv
d1NjcmlwdEZyb21Tb3VyY2Uoc2NyaXB0VVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VSSVRZX0VS
UjsKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIH0K
IAogICAgIHJldHVybiBzY3JpcHRVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29y
a2VyLmgKaW5kZXggNGVhYzMyMjA1YWUxNTRiZjIyMTY4NzVhOTk0ZjRlMWY0MzIwZmIwYy4uNWRj
NjY0ZmRlOWZiYzc1OGQwNGRiMzUxMTc5NTI0YjNhNDRlYWRkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtNDQsNyArNDQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgY2xhc3MgQWJzdHJhY3RXb3JrZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxBYnN0cmFjdFdvcmtlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1Ymxp
YyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsKQEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBIZWxwZXIgZnVuY3Rpb24g
dGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0aGUgcmVz
dWx0IGZvciB2YWxpZGl0eS4KLSAgICAgICAgS1VSTCByZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFVSTCByZXNvbHZlVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIGludHB0cl90IGFzSUQoKSBj
b25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAg
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29y
a2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggM2VhZmQxMzU3YTI5ZmY0MTJmY2RmN2IwMGM5MTc2MjY2
OGI2OTgyNy4uOTI0MTkzMGY5NjM2N2RiZDQ1ZTA3YjVkNDJiNGFiZDA1NGU1M2U0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFz
c093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgRGVkaWNhdGVkV29ya2VyVGhyZWFkKiB0
aHJlYWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQorUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4g
c2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNv
bnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9y
aWdpbikKIHsKICAgICBSZWZQdHI8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQg
PSBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQs
IHNldHRpbmdzLCB0aHJlYWQsIHRvcE9yaWdpbikpOwogICAgIGNvbnRleHQtPmFwcGx5Q29udGVu
dFNlY3VyaXR5UG9saWN5RnJvbVN0cmluZyhjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUpOwogICAgIHJldHVybiBjb250ZXh0LnJlbGVhc2UoKTsKIH0KIAot
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OkRlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBT
ZXR0aW5ncz4gc2V0dGluZ3MsIERlZGljYXRlZFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZTo6RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKQogICAgIDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCB1c2VyQWdlbnQsIHNldHRpbmdzLCB0
aHJlYWQsIHRvcE9yaWdpbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCBmNDY5NDMyYjM5NDIzMTU5ZjQyNTli
YmFjZDZhYjAyM2ZkMWViMTQ5Li40M2E1YjU0YzU1YmMzNDViZmM0MTYyMjBhNGQyZmIxNjQ2ODRk
ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29w
ZSB7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFdvcmtlckdsb2JhbFNjb3BlIEJhc2U7
Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlPiBj
cmVhdGUoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+LCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRl
bnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdp
bik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3Bl
PiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8
R3JvdXBTZXR0aW5ncz4sIERlZGljYXRlZFdvcmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29u
dGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29u
dGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3Jp
Z2luKTsKICAgICAgICAgdmlydHVhbCB+RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKTsKIAog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQqIHRocmVhZCgpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBEZWRp
Y2F0ZWRXb3JrZXJUaHJlYWQqLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4p
OworICAgICAgICBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgRGVkaWNhdGVkV29y
a2VyVGhyZWFkKiwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKaW5kZXggZGMyMjAzOGVkMmU3YmIzMzdhZWUxMGQ2
YTM4YmQzNjAzNDIwNTUxNy4uOTI5ZmRlNzViNDhiMWQ0NTdlZWY3YWFjZGJmNTg4MzNjMDg1NDAw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFk
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1Jl
ZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IERlZGljYXRlZFdvcmtlclRocmVhZDo6Y3JlYXRl
KGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdy
b3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9i
amVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBl
IGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmln
aW4pCitQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtlclRocmVhZD4gRGVkaWNhdGVkV29ya2VyVGhy
ZWFkOjpjcmVhdGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlck9iamVjdFByb3h5
JiB3b3JrZXJPYmplY3RQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29u
c3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdp
biogdG9wT3JpZ2luKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVkaWNhdGVkV29ya2Vy
VGhyZWFkKHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2Vy
TG9hZGVyUHJveHksIHdvcmtlck9iamVjdFByb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgdG9wT3JpZ2luKSk7CiB9CiAKLURl
ZGljYXRlZFdvcmtlclRocmVhZDo6RGVkaWNhdGVkV29ya2VyVGhyZWFkKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdz
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2Fk
ZXJQcm94eSwgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJl
YWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGlj
eVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCitEZWRpY2F0ZWRXb3JrZXJU
aHJlYWQ6OkRlZGljYXRlZFdvcmtlclRocmVhZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2Vy
T2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAgICAgOiBXb3JrZXJUaHJlYWQodXJsLCB1c2VyQWdl
bnQsIHNldHRpbmdzLCBzb3VyY2VDb2RlLCB3b3JrZXJMb2FkZXJQcm94eSwgd29ya2VyT2JqZWN0
UHJveHksIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlLCB0b3BPcmlnaW4pCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KHdvcmtlck9i
amVjdFByb3h5KQogewpAQCAtNTUsNyArNTUsNyBAQCBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6On5E
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQoKQogewogfQogCi1QYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNj
b3BlPiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0
aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQorUGFzc1JlZlB0cjxXb3JrZXJH
bG9iYWxTY29wZT4gRGVkaWNhdGVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3Jv
dXBTZXR0aW5ncz4gc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5
VHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKQogewogICAgIHJldHVy
biBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKHVybCwgdXNlckFnZW50LCBzZXR0
aW5ncywgdGhpcywgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlLCB0b3BPcmlnaW4pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9E
ZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyVGhyZWFkLmgKaW5kZXggYTcwYmU2YzhkZjRkMWM5NDI0NWQyOTgyNjM4YjRiMDZiZDZh
ZTE3Zi4uMTk5OGZlOTJjNTdkZDEwNDA0YjBiNmNlMzM4MTBjNDA2YzgyYjdmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oCkBAIC00MSwxNiAr
NDEsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRGVkaWNhdGVkV29ya2Vy
VGhyZWFkIDogcHVibGljIFdvcmtlclRocmVhZCB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+IGNyZWF0ZShjb25zdCBLVVJMJiBz
Y3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVj
dFByb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1
cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVkaWNh
dGVkV29ya2VyVGhyZWFkPiBjcmVhdGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VD
b2RlLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlck9iamVjdFByb3h5JiwgV29ya2VyVGhyZWFk
U3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2lu
KTsKICAgICAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3Qg
eyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogICAgICAgICB2aXJ0dWFsIH5EZWRpY2F0
ZWRXb3JrZXJUaHJlYWQoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBL
VVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4s
IGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZF
UlJJREU7CisgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gY3Jl
YXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBy
dW5FdmVudExvb3AoKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIERlZGljYXRl
ZFdvcmtlclRocmVhZChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOworICAgICAgICBEZWRpY2F0
ZWRXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyT2JqZWN0UHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0IFN0
cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRl
clR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgICAgIFdvcmtl
ck9iamVjdFByb3h5JiBtX3dvcmtlck9iamVjdFByb3h5OwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
CmluZGV4IDk4NWFmMDA2YWVjNmE0ZDM2OTA2YmQwNDUzNDA4YWY5MzViMThjN2YuLjVjMjZjOGM2
MTAxNTI2YzI3MmY4ZDg2NDI5ZGZiYTNhZDYwZjEwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC02
NCwxOSArNjQsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTaGFyZWRXb3JrZXJQ
cm94eSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4sIHB1
YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlclJlcG9ydGluZ1Byb3h5IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3JrZXJQcm94eShuYW1l
LCB1cmwsIG9yaWdpbikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJv
eHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRXb3Jr
ZXJQcm94eShuYW1lLCB1cmwsIG9yaWdpbikpOyB9CiAKICAgICB2b2lkIHNldFRocmVhZChQYXNz
UmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fdGhyZWFkID0gdGhyZWFkOyB9
CiAgICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKSB7IHJldHVybiBtX3RocmVhZC5nZXQo
KTsgfQogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jbG9zaW5nOyB9Ci0g
ICAgS1VSTCB1cmwoKSBjb25zdAorICAgIFVSTCB1cmwoKSBjb25zdAogICAgIHsKICAgICAgICAg
Ly8gRG9uJ3QgdXNlIG1fdXJsLmNvcHkoKSBiZWNhdXNlIGl0IGlzbid0IGEgdGhyZWFkc2FmZSBt
ZXRob2QuCi0gICAgICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwuc3RyaW5n
KCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICByZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywg
bV91cmwuc3RyaW5nKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIH0KIAogICAgIFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzb2xhdGVkQ29weSgpOyB9Ci0gICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
LCBjb25zdCBLVVJMJiB1cmxUb01hdGNoKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3Qg
U3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IFVS
TCYgdXJsVG9NYXRjaCkgY29uc3Q7CiAKICAgICAvLyBXb3JrZXJMb2FkZXJQcm94eQogICAgIHZp
cnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOwpAQCAtMTAzLDEyICsxMDMsMTIgQEAgcHVibGljOgogICAgIEdyb3VwU2V0
dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSBjb25zdDsgLy8gUGFnZSBHcm91cFNldHRpbmdzIHVzZWQg
Ynkgd29ya2VyIHRocmVhZC4KIAogcHJpdmF0ZToKLSAgICBTaGFyZWRXb3JrZXJQcm94eShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7
CisgICAgU2hhcmVkV29ya2VyUHJveHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CiAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgYm9v
bCBtX2Nsb3Npbmc7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBLVVJMIG1fdXJsOworICAgIFVS
TCBtX3VybDsKICAgICAvLyBUaGUgdGhyZWFkIGlzIGZyZWVkIHdoZW4gdGhlIHByb3h5IGlzIGRl
c3Ryb3llZCwgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHJveHkgc3RheXMgYXJv
dW5kIHVudGlsIHRoZSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSBleGl0cy4KICAgICBSZWZQdHI8
U2hhcmVkV29ya2VyVGhyZWFkPiBtX3RocmVhZDsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG1fb3JpZ2luOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV93b3Jr
ZXJEb2N1bWVudHNMb2NrOwogfTsKIAotU2hhcmVkV29ya2VyUHJveHk6OlNoYXJlZFdvcmtlclBy
b3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBvcmlnaW4pCitTaGFyZWRXb3JrZXJQcm94eTo6U2hhcmVkV29ya2VyUHJveHko
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luKQogICAgIDogbV9jbG9zaW5nKGZhbHNlKQogICAgICwgbV9uYW1lKG5hbWUu
aXNvbGF0ZWRDb3B5KCkpCiAgICAgLCBtX3VybCh1cmwuY29weSgpKQpAQCAtMTI3LDcgKzEyNyw3
IEBAIFNoYXJlZFdvcmtlclByb3h5OjpTaGFyZWRXb3JrZXJQcm94eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IEtVUkwmIHVybCwgUGFzc1JlCiAgICAgQVNTRVJUKG1fb3JpZ2luLT5oYXNPbmVS
ZWYoKSk7CiB9CiAKLWJvb2wgU2hhcmVkV29ya2VyUHJveHk6Om1hdGNoZXMoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4sIGNvbnN0IEtVUkwmIHVy
bFRvTWF0Y2gpIGNvbnN0Citib29sIFNoYXJlZFdvcmtlclByb3h5OjptYXRjaGVzKGNvbnN0IFN0
cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luLCBjb25zdCBVUkwm
IHVybFRvTWF0Y2gpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIG9yaWdpbnMgZG9uJ3QgbWF0Y2gs
IG9yIHRoZSBuYW1lcyBkb24ndCBtYXRjaCwgdGhlbiB0aGlzIGlzIG5vdCB0aGUgcHJveHkgd2Ug
YXJlIGxvb2tpbmcgZm9yLgogICAgIGlmICghb3JpZ2luLT5lcXVhbChtX29yaWdpbi5nZXQoKSkp
CkBAIC0yODksNyArMjg5LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFNoYXJlZFdvcmtlclNjcmlwdExv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcj4sIHByaXZh
dGUgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4sIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+KTsKLSAgICB2b2lkIGxv
YWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgbG9hZChjb25zdCBVUkwmKTsKIAogcHJpdmF0ZToK
ICAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgY2FsbGJhY2tzCkBAIC0zMDksNyArMzA5
LDcgQEAgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpTaGFyZWRXb3JrZXJTY3JpcHRMb2FkZXIo
UGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmsKIHsKIH0KIAotdm9pZCBTaGFyZWRXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQordm9pZCBTaGFyZWRXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gU3RheSBhbGl2ZSAoYW5k
IGtlZXAgdGhlIFNoYXJlZFdvcmtlciBhbmQgSlMgd3JhcHBlciBhbGl2ZSkgdW50aWwgdGhlIGxv
YWQgZmluaXNoZXMuCiAgICAgdGhpcy0+cmVmKCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBE
ZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6ZG9jdW1lbnREZXRhY2hlZChEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgICAgIG1fcHJveGllc1tpXS0+ZG9jdW1lbnREZXRhY2hlZChkb2N1bWVu
dCk7CiB9CiAKLXZvaWQgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3RUb1dv
cmtlcihQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gcG9ydCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29u
bmVjdFRvV29ya2VyKFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiB3b3JrZXIsIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsPiBwb3J0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBNdXRleExvY2tlciBsb2NrKG1fbG9jayk7
CiAgICAgQVNTRVJUKHdvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5BY2Nlc3MoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpLmdldCgpKSk7CkBA
IC00MjYsMTIgKzQyNiwxMiBAQCB2b2lkIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpj
b25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcgogfQogCiAvLyBDcmVh
dGVzIGEgbmV3IFNoYXJlZFdvcmtlclByb3h5IG9yIHJldHVybnMgYW4gZXhpc3Rpbmcgb25lIGZy
b20gdGhlIHJlcG9zaXRvcnkuIE11c3Qgb25seSBiZSBjYWxsZWQgd2hpbGUgdGhlIHJlcG9zaXRv
cnkgbXV0ZXggaXMgaGVsZC4KLVBhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERlZmF1bHRT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2hhcmVkV29ya2VyUHJveHk+IERlZmF1bHRTaGFyZWRX
b3JrZXJSZXBvc2l0b3J5OjpnZXRQcm94eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIExvb2sgZm9yIGFuIGV4aXN0aW5nIHdvcmtlciwgYW5kIGNyZWF0ZSBv
bmUgaWYgaXQgZG9lc24ndCBleGlzdC4KICAgICAvLyBJdGVtcyBpbiB0aGUgY2FjaGUgYXJlIGZy
ZWVkIG9uIGFub3RoZXIgdGhyZWFkLCBzbyBkbyBhIHRocmVhZHNhZmUgY29weSBvZiB0aGUgVVJM
IGJlZm9yZSBjcmVhdGluZyB0aGUgb3JpZ2luLAogICAgIC8vIHRvIG1ha2Ugc3VyZSBubyByZWZl
cmVuY2VzIHRvIGV4dGVybmFsIHN0cmluZ3MgbGluZ2VyLgotICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgdXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3Byb3hpZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKCFtX3Byb3hpZXNbaV0t
PmlzQ2xvc2luZygpICYmIG1fcHJveGllc1tpXS0+bWF0Y2hlcyhuYW1lLCBvcmlnaW4sIHVybCkp
CiAgICAgICAgICAgICByZXR1cm4gbV9wcm94aWVzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCmluZGV4IDcwNWVm
NDcxNjc1NzZmNjcxNGMxN2JlMmE3NjgzZDg4NDYwZjU4NDYuLjgyNjdjODM2M2YxMGJlN2VhZWJl
NWU5NjE5YjJhNTEyYjkyODIxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
RGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIEtVUkw7
CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKICAgICBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKQEAgLTY1
LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHdvcmtlclNjcmlw
dExvYWRlZChTaGFyZWRXb3JrZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25z
dCBTdHJpbmcmIHdvcmtlclNjcmlwdCwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+LCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlKTsKIAogICAgICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KCkKLSAgICAgICAgdm9pZCBjb25uZWN0VG9X
b3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbD4sIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICAgICAgdm9pZCBjb25uZWN0VG9Xb3JrZXIoUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+LCBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIC8vIE5vdGlmaWNhdGlvbiB0aGF0IGEg
ZG9jdW1lbnQgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgICAgIHZvaWQgZG9jdW1lbnREZXRhY2hl
ZChEb2N1bWVudCopOwpAQCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIERlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCk7CiAgICAgICAgIH5EZWZhdWx0U2hh
cmVkV29ya2VyUmVwb3NpdG9yeSgpOwogCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkV29ya2Vy
UHJveHk+IGdldFByb3h5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYpOworICAgICAg
ICBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBnZXRQcm94eShjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFVSTCYpOwogICAgICAgICAvLyBNdXRleCB1c2VkIHRvIHByb3RlY3QgaW50ZXJu
YWwgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICBNdXRleCBtX2xvY2s7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCAyOGExZWVkMGEwNzgwYmIwYTZlYzY5MDFm
YTcwNjQ4NjgxZjRjZGNmLi5hYTUyNWY2OTI3ZGE0ZTNkYzBhNzE2ZjE3ODE5ZTIyYjM2OTlkNzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC0zOCw3ICszOCw3
IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZlYXR1cmVPYnNlcnZl
ci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotI2luY2x1ZGUgIktV
UkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJNZXNzYWdlQ2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgpAQCAtNjYsNyArNjYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2Vy
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgd29ya2Vy
LT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNv
bHZlVVJMKHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwo
dXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlckdsb2Jh
bFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IGQ3MTY4NzIzMDI3MTc0MDA4OTI4MTEwN2Q4YTg2Yzc4MzBkOTIzMDQuLjFj
ZjVmODE0M2JhMmYzYmNmMzZiNjcwMjZiZjM1YjZjMWE1YjdlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC01MywxNCAr
NTMsMTQgQEAgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUNvbm5lY3RFdmVudChQYXNz
UmVmUHRyPE1lc3NhZ2VQb3J0PiBwcnBQb3J0KQogfQogCiAvLyBzdGF0aWMKLVBhc3NSZWZQdHI8
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFn
ZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJl
YWQqIHRocmVhZCwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlKQorUGFz
c1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGU6
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiBzZXR0aW5ncywgU2hhcmVkV29y
a2VyVGhyZWFkKiB0aHJlYWQsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlw
ZSkKIHsKICAgICBSZWZQdHI8U2hhcmVkV29ya2VyR2xvYmFsU2NvcGU+IGNvbnRleHQgPSBhZG9w
dFJlZihuZXcgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUobmFtZSwgdXJsLCB1c2VyQWdlbnQsIHNl
dHRpbmdzLCB0aHJlYWQpKTsKICAgICBjb250ZXh0LT5hcHBseUNvbnRlbnRTZWN1cml0eVBvbGlj
eUZyb21TdHJpbmcoY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlKTsKICAgICByZXR1cm4gY29udGV4dC5yZWxlYXNlKCk7CiB9CiAKLVNoYXJlZFdvcmtlckds
b2JhbFNjb3BlOjpTaGFyZWRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBT
ZXR0aW5ncz4gc2V0dGluZ3MsIFNoYXJlZFdvcmtlclRocmVhZCogdGhyZWFkKQorU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGU6OlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+IHNldHRpbmdzLCBTaGFyZWRXb3JrZXJUaHJlYWQqIHRocmVhZCkKICAgICA6
IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgdXNlckFnZW50LCBzZXR0aW5ncywgdGhyZWFkLCAwKQog
ICAgICwgbV9uYW1lKG5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggN2NkOTliNzZlOTk3ZGMyZWU3NTcwYzlkNDk2ZmIy
OTJmNjU5YmE0MS4uZTAxMzZjYTQ4ZjUyOWIxYzQzNWNjZjAzODBmMWFjNmVjNDk2ZWNmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaApA
QCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2hhcmVkV29y
a2VyR2xvYmFsU2NvcGUgOiBwdWJsaWMgV29ya2VyR2xvYmFsU2NvcGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBXb3JrZXJHbG9iYWxTY29wZSBCYXNlOwotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdy
b3VwU2V0dGluZ3M+LCBTaGFyZWRXb3JrZXJUaHJlYWQqLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRT
ZWN1cml0eVBvbGljeVR5cGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIFNoYXJlZFdv
cmtlclRocmVhZCosIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiAg
ICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKCk7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU2hhcmVkV29ya2VyVGhyZWFkKiB0aHJlYWQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBTaGFy
ZWRXb3JrZXJUaHJlYWQqKTsKKyAgICAgICAgU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093
blB0cjxHcm91cFNldHRpbmdzPiwgU2hhcmVkV29ya2VyVGhyZWFkKik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxsU3RhY2s+KSBPVkVSUklERTsKIAogICAgICAgICBTdHJp
bmcgbV9uYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXJSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVw
b3NpdG9yeS5jcHAKaW5kZXggZGY0OTU5MjViZGM0MTBkNGUxMTQ2NjI4NmM3NDI1NDE4MjU4Yzkx
MS4uYTNjZGE1YjUwNWY4MTMwMjVlODdlM2U3YThjNmE1ZjYxYjU5MTFlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIGJvb2wgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aXNBdmFpbGFibGUoKQogICAg
IHJldHVybiBEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aW5zdGFuY2UoKS5pc0F2YWls
YWJsZSgpOwogfQogCi12b2lkIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3QoUGFzc1Jl
ZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
IHBvcnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdChQYXNzUmVmUHRyPFNo
YXJlZFdvcmtlcj4gd29ya2VyLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcG9ydCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6Omluc3RhbmNlKCkuY29ubmVjdFRv
V29ya2VyKHdvcmtlciwgcG9ydCwgdXJsLCBuYW1lLCBlYyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oCmluZGV4IGMzZDg3ZWM5MGVhYzdi
MGQ5MDA1ZWQxNTI5MDE4NGVhNzc1YjNlYWQuLjA0OWY4NmFjOWU2NTNiZjg2YzgxNjI5Njk4NGJm
MWEwMWUwY2UzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29y
a2VyUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5oCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBEb2N1bWVudDsKLSAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIFVSTDsKICAgICBj
bGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiAgICAgY2xhc3MgU2hhcmVkV29ya2VyOwogCkBAIC01
Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgaXNB
dmFpbGFibGUoKTsKIAogICAgICAgICAvLyBDb25uZWN0cyB0aGUgcGFzc2VkIFNoYXJlZFdvcmtl
ciBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIHdvcmtlciB0aHJlYWQsIGNyZWF0aW5nIGEgbmV3
IHRocmVhZCBpZiBuZWNlc3NhcnkuCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbm5lY3QoUGFzc1Jl
ZlB0cjxTaGFyZWRXb3JrZXI+LCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgc3Rh
dGljIHZvaWQgY29ubmVjdChQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4sIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsPiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAgICAgLy8gSW52b2tlZCB3aGVuIGEgZG9jdW1lbnQgaGFzIGJlZW4g
ZGV0YWNoZWQuCiAgICAgICAgIHN0YXRpYyB2b2lkIGRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmNwcAppbmRl
eCBiYWIzOTU4NGE1YTVjNzc3NjYyZjIwMWIwYzdmNGRkYjg5YTc3ODczLi4xYWMxNDhiMWY1ODVh
OGJkZjgwMzViODJiNjg3NjI5NTA3MzFkMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXJUaHJlYWQuY3BwCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gU2hhcmVkV29ya2Vy
VGhyZWFkOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLVVJMJiBzY3JpcHRVUkws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVy
UHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2Vy
VGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQ
b2xpY3lUeXBlKQorUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJUaHJlYWQ+IFNoYXJlZFdvcmtlclRo
cmVhZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJv
eHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xp
Y3lUeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyVGhyZWFkKG5h
bWUsIHNjcmlwdFVSTCwgdXNlckFnZW50LCBzZXR0aW5ncywgc291cmNlQ29kZSwgd29ya2VyTG9h
ZGVyUHJveHksIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBzdGFydE1vZGUsIGNvbnRlbnRTZWN1cml0
eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkpOwogfQogCi1TaGFyZWRXb3JrZXJU
aHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqIHNldHRp
bmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclByb3h5JiB3b3JrZXJM
b2FkZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUpCitTaGFyZWRXb3JrZXJUaHJlYWQ6OlNoYXJlZFdvcmtlclRocmVhZChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSwgV29ya2VyTG9hZGVyUHJveHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJSZXBvcnRpbmdQ
cm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdvcmtlclRocmVhZFN0YXJ0TW9kZSBzdGFydE1v
ZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSkKICAgICA6IFdvcmtl
clRocmVhZCh1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHNvdXJjZUNvZGUsIHdvcmtlckxvYWRl
clByb3h5LCB3b3JrZXJSZXBvcnRpbmdQcm94eSwgc3RhcnRNb2RlLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3ksIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIDApCiAgICAgLCBtX25hbWUobmFtZS5p
c29sYXRlZENvcHkoKSkKIHsKQEAgLTUzLDcgKzUzLDcgQEAgU2hhcmVkV29ya2VyVGhyZWFkOjp+
U2hhcmVkV29ya2VyVGhyZWFkKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29w
ZT4gU2hhcmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+
IHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+KQorUGFzc1JlZlB0cjxXb3JrZXJHbG9iYWxTY29wZT4gU2hh
cmVkV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4gc2V0dGlu
Z3MsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4pCiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlOjpj
cmVhdGUobV9uYW1lLCB1cmwsIHVzZXJBZ2VudCwgc2V0dGluZ3MsIHRoaXMsIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgY29udGVudFNlY3VyaXR5UG9saWN5VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXJUaHJlYWQuaAppbmRleCBlODcwZDFmY2ZlYTg3YzE3OGEy
YjgxNmI4NWE1NDYyNTQxOTlmYjYwLi5jYTA1YWE3M2VkZDI1NGVlNjI1ZTk3ZjFjZTdiYzNiMGVk
MTU2YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyVGhyZWFkLmgK
QEAgLTM5LDE0ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTaGFy
ZWRXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclRocmVhZD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBH
cm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94
eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFk
ZXJUeXBlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyVGhyZWFkPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0
TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGVhZGVyVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgflNoYXJlZFdvcmtlclRocmVh
ZCgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V29ya2Vy
R2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5n
JiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlw
ZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKSBPVkVSUklERTsKKyAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
dG9wT3JpZ2luKSBPVkVSUklERTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFdvcmtl
clRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyosIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwg
V29ya2VyTG9hZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0
YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SGVhZGVyVHlwZSk7CisgICAgICAgIFNoYXJlZFdvcmtlclRocmVhZChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25z
dCBHcm91cFNldHRpbmdzKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQ
cm94eSYsIFdvcmtlclJlcG9ydGluZ1Byb3h5JiwgV29ya2VyVGhyZWFkU3RhcnRNb2RlLCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlKTsKIAogICAgICAgICBTdHJpbmcgbV9uYW1lOwogICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggYzJmNjE5NjJkYzgzOWZjNWMwNzJmOGMyZmJhN2RkZmY4YzUx
MDFiYi4uYmE5MmYyOGU4ZTk5MmZjZjU3MjQyM2EzMzMwYTNlZTc0MGFhNWZjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcApAQCAtODQsNyArODQsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4g
V29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJgogCiAgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIEtVUkwgc2NyaXB0
VVJMID0gd29ya2VyLT5yZXNvbHZlVVJMKHVybCwgZWMpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3
b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuY3BwCmluZGV4IGE4MzQ2ZGQxM2YzNTJhM2Q2NGUzYzhkM2E2NzZmMDlmMzIxMDQx
ZjkuLmI3ZTZkYjkzMTQ1MTJiMjg2OTFmMThiODU0ZTlkZjgzMDY5MDJjMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00MCw3ICs0MCw3IEBA
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJMLmgi
CisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgpAQCAtODQsNyAr
ODQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQ2xlYW51cFRhc2soKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiB9OwogCi1Xb3JrZXJHbG9iYWxTY29wZTo6V29ya2VyR2xvYmFsU2Nv
cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgUGFzc093blB0cjxH
cm91cFNldHRpbmdzPiBzZXR0aW5ncywgV29ya2VyVGhyZWFkKiB0aHJlYWQsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikKK1dvcmtlckdsb2JhbFNjb3BlOjpXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25Q
dHI8R3JvdXBTZXR0aW5ncz4gc2V0dGluZ3MsIFdvcmtlclRocmVhZCogdGhyZWFkLCBQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pCiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBt
X3VzZXJBZ2VudCh1c2VyQWdlbnQpCiAgICAgLCBtX2dyb3VwU2V0dGluZ3Moc2V0dGluZ3MpCkBA
IC0xMTcsMTcgKzExNywxNyBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphcHBseUNvbnRlbnRT
ZWN1cml0eVBvbGljeUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBwb2xpYwogICAgIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGljeSwgY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSk7CiB9CiAKLUtVUkwgV29ya2VyR2xvYmFsU2NvcGU6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsKSBjb25zdAorVVJMIFdvcmtlckdsb2JhbFNjb3BlOjpjb21wbGV0ZVVS
TChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKIHsKICAgICAvLyBBbHdheXMgcmV0dXJuIGEgbnVs
bCBVUkwgd2hlbiBwYXNzZWQgYSBudWxsIHN0cmluZy4KLSAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IGNoYW5nZSB0aGUgS1VSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRoaXMgYmVoYXZpb3I/CisgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBjaGFuZ2UgdGhlIFVSTCBjb25zdHJ1Y3RvciB0byBoYXZlIHRo
aXMgYmVoYXZpb3I/CiAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEtVUkwo
KTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwogICAgIC8vIEFsd2F5cyB1c2UgVVRGLTggaW4gV29y
a2Vycy4KLSAgICByZXR1cm4gS1VSTChtX3VybCwgdXJsKTsKKyAgICByZXR1cm4gVVJMKG1fdXJs
LCB1cmwpOwogfQogCi1TdHJpbmcgV29ya2VyR2xvYmFsU2NvcGU6OnVzZXJBZ2VudChjb25zdCBL
VVJMJikgY29uc3QKK1N0cmluZyBXb3JrZXJHbG9iYWxTY29wZTo6dXNlckFnZW50KGNvbnN0IFVS
TCYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXNlckFnZW50OwogfQpAQCAtMjE3LDE4ICsyMTcs
MTggQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYKICAgICBBU1NFUlQoY29udGVudFNlY3VyaXR5
UG9saWN5KCkpOwogICAgIGVjID0gMDsKICAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgdXJsc0VuZCA9IHVybHMuZW5kKCk7Ci0gICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVSTHM7
CisgICAgVmVjdG9yPFVSTD4gY29tcGxldGVkVVJMczsKICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHVybHMuYmVnaW4oKTsgaXQgIT0gdXJsc0VuZDsgKytpdCkg
ewotICAgICAgICBjb25zdCBLVVJMJiB1cmwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bXBsZXRlVVJMKCppdCk7CisgICAgICAgIGNvbnN0IFVSTCYgdXJsID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5jb21wbGV0ZVVSTCgqaXQpOwogICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBjb21wbGV0ZWRVUkxzLmFwcGVuZCh1cmwpOwogICAgIH0KLSAgICBW
ZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7Cisg
ICAgVmVjdG9yPFVSTD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVSTHMuZW5kKCk7
CiAKLSAgICBmb3IgKFZlY3RvcjxLVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb21wbGV0ZWRV
UkxzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIGZvciAoVmVjdG9yPFVSTD46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gc2NyaXB0TG9hZGVyKFdvcmtl
clNjcmlwdExvYWRlcjo6Y3JlYXRlKCkpOwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCiAgICAg
ICAgIHNjcmlwdExvYWRlci0+c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElz
U2NyaXB0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRl
eCA3MjRiNDBlMTBlNTg5N2Q5N2M2MzZmZWM5MWYxNDUxOWVhZGYyNGNmLi43OGFmNzgyMmUyMmZj
YjVhNmFlYWZkY2Q2NjNiODM3MmY2YzFmNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5oCkBAIC02NSwxMSArNjUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgICAgICB2aXJ0dWFs
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9
Ci0gICAgICAgIHZpcnR1YWwgS1VSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBP
VkVSUklERSBGSU5BTDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBVUkwmIHVybCgpIGNvbnN0IE9W
RVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIHZpcnR1YWwgVVJMIGNvbXBs
ZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IE9WRVJSSURFIEZJTkFMOwogCiAgICAgICAgIGNv
bnN0IEdyb3VwU2V0dGluZ3MqIGdyb3VwU2V0dGluZ3MoKSB7IHJldHVybiBtX2dyb3VwU2V0dGlu
Z3MuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IEtVUkwm
KSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNv
bnN0OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgT1ZFUlJJREU7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fdG9wT3JpZ2luLmdldCgpOyB9CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIFdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgUGFzc093blB0cjxHcm91cFNldHRpbmdzPiwgV29ya2VyVGhyZWFkKiwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gdG9wT3JpZ2luKTsKKyAgICAgICAgV29ya2VyR2xvYmFsU2Nv
cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFBhc3NPd25QdHI8R3JvdXBT
ZXR0aW5ncz4sIFdvcmtlclRocmVhZCosIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9y
aWdpbik7CiAgICAgICAgIHZvaWQgYXBwbHlDb250ZW50U2VjdXJpdHlQb2xpY3lGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkhlYWRlclR5cGUpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0Nv
bnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+KSBPVkVSUklERTsKQEAgLTE1OSw3ICsxNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3Qg
T1ZFUlJJREUgRklOQUw7CiAKLSAgICAgICAgS1VSTCBtX3VybDsKKyAgICAgICAgVVJMIG1fdXJs
OwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiAgICAgICAgIE93blB0cjxHcm91cFNldHRp
bmdzPiBtX2dyb3VwU2V0dGluZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZVByb3h5LmgKaW5kZXggZDk3YTA3Y2JkOWUyN2IxOTc2MGI5ODE5OTEzNTZh
ZTEzMjNjZGFkMi4uYTk1ZGM3NTJhNDc4ODI1ZjE1N2IwMjA1YTA0NDdjMmRjOWVmODk3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZVByb3h5LmgKQEAg
LTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsK
KyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgV29ya2VyOwogCiAgICAgLy8gQSBwcm94eSB0byB0
YWxrIHRvIHRoZSB3b3JrZXIgY29udGV4dC4KQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgfldvcmtlckdsb2JhbFNjb3BlUHJveHkoKSB7IH0K
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJj
ZUNvZGUsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRN
b2RlKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckdsb2JhbFNj
b3BlKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmgKaW5kZXgg
NGJkMzU5MTg5MmY2MWM5MzNjNTRmMmRlY2ExZDkzOTQ2MTU5MGU4OS4uMTExMWI1ZDIwM2IxMmU1
NGU0MDFlNWVhODVlMzI4ZWJlMTc2ODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJMb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TG9jYXRpb24uaApAQCAtMjksNyArMjksNyBAQAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNp
bmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBX
b3JrZXJMb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlckxvY2F0aW9uPiB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJMb2NhdGlvbj4gY3JlYXRl
KGNvbnN0IEtVUkwmIHVybCkKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyTG9jYXRp
b24+IGNyZWF0ZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXb3JrZXJMb2NhdGlvbih1cmwpKTsKICAgICAgICAgfQogCi0gICAgICAg
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KIAogICAgICAgICBTdHJpbmcgaHJl
ZigpIGNvbnN0OwogCkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gaHJlZigpOyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICBleHBsaWNpdCBXb3JrZXJMb2NhdGlvbihjb25zdCBLVVJMJiB1cmwpIDog
bV91cmwodXJsKSB7IH0KKyAgICAgICAgZXhwbGljaXQgV29ya2VyTG9jYXRpb24oY29uc3QgVVJM
JiB1cmwpIDogbV91cmwodXJsKSB7IH0KIAotICAgICAgICBLVVJMIG1fdXJsOworICAgICAgICBV
UkwgbV91cmw7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAppbmRleCBiNzRjZTQxNGMz
YThhOWM2YTZhZmU2MmJjMDIzNDM3NTBmYTA2ZGU4Li4wMmViYzY1MWNkNmI4YTY4NmNkNTIwN2I3
ZDQ2ZjBmZGMzNjE5NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIFdvcmtlck1lc3NhZ2luZ1Byb3h5
Ojp+V29ya2VyTWVzc2FnaW5nUHJveHkoKQogICAgICAgICAgICB8fCAobV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkgJiYgY3VycmVudFRocmVhZCgpID09IHN0
YXRpY19jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdl
dCgpKS0+dGhyZWFkKCktPnRocmVhZElEKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6c3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSBzdGFydE1vZGUpCit2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzdGFydFdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3Rh
cnRNb2RlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWQgdG8gYmUgcmV2aXNpdGVkIHdoZW4g
d2Ugc3VwcG9ydCBuZXN0ZWQgd29ya2VyIG9uZSBkYXkKICAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJNZXNzYWdpbmdQcm94eS5oCmluZGV4IDhhN2VjOGRiMGZkMWJhYjc3ZmFhNzUxMmI0NGJi
ZjM2ZDU1MDFmOGIuLjE4OTZhODEzNTA0YWMxOGFiYWNkZDFmYWMwMzE5MDY5ZGZmNzVhNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKQEAgLTUz
LDcgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIC8vIEltcGxlbWVudGF0
aW9ucyBvZiBXb3JrZXJHbG9iYWxTY29wZVByb3h5LgogICAgICAgICAvLyAoT25seSB1c2UgdGhl
c2UgbWV0aG9kcyBpbiB0aGUgd29ya2VyIG9iamVjdCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRocmVh
ZFN0YXJ0TW9kZSkgT1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFdvcmtlckds
b2JhbFNjb3BlKGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUpIE9WRVJSSURF
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBPVkVS
UklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29w
ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NPd25QdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+KSBPVkVSUklERTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDkyMjcyMjYzZGYxYjUwMzQyYzQ4ODMyMDQ0ZmQ4
OTFkMTVhZWI3YmMuLjhkYTRlZWZlZDQyYzg2NTI0ZDZmNzM1ZGM5NDQyNmE4ZDk5YjE2M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgV29ya2VyU2NyaXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9hZGVyKCkKIHsK
IH0KIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwg
Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKK3ZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgQ3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSkKIHsKICAgICBtX3VybCA9IHVy
bDsKIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aQogICAgIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc3RhdGljX2Nhc3Q8
V29ya2VyR2xvYmFsU2NvcGUqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0
aGlzLCBvcHRpb25zKTsKIH0KICAgICAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgY29uc3QgS1VSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5S
ZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNs
aWVudCogY2xpZW50KQogewogICAgIEFTU0VSVChjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xp
ZW50OwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5j
aHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogICAgIG1fdGhy
ZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CiB9CiAKLWNvbnN0IEtVUkwmIFdvcmtl
clNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdAorY29uc3QgVVJMJiBXb3JrZXJTY3Jp
cHRMb2FkZXI6OnJlc3BvbnNlVVJMKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZhaWxlZCgpKTsK
ICAgICByZXR1cm4gbV9yZXNwb25zZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oCmluZGV4IGRjMWM1YmE2MjExOTMxYmEyY2M1YWE0OTczZTRmNWQ4OTQ3
ZDI4OTkuLjljYjRmYmRmNDgxMTk1MzdiMGYwNWVkODJlZDhmMTM4ZDc4Y2NmMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtMzAsNyArMzAsNyBA
QAogCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
VVJMLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJs
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKQEAgLTU2LDE0
ICs1NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdvcmtlclNjcmlwdExvYWRlcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IEtVUkwmLCBD
cm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOwotICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgS1VSTCYsIENyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSwgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50Kik7CisgICAgICAgIHZvaWQgbG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeSk7CisgICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ks
IFdvcmtlclNjcmlwdExvYWRlckNsaWVudCopOwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJyb3Io
KTsKIAogICAgICAgICBTdHJpbmcgc2NyaXB0KCk7Ci0gICAgICAgIGNvbnN0IEtVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJM
KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7
IH0KKyAgICAgICAgY29uc3QgVVJMJiByZXNwb25zZVVSTCgpIGNvbnN0OwogICAgICAgICBib29s
IGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCkBAIC05MSw4
ICs5MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VF
bmNvZGluZzsgICAgICAgIAogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwogICAgICAgICBTdHJpbmdCdWlsZGVyIG1fc2NyaXB0OwotICAgICAgICBLVVJMIG1f
dXJsOwotICAgICAgICBLVVJMIG1fcmVzcG9uc2VVUkw7CisgICAgICAgIFVSTCBtX3VybDsKKyAg
ICAgICAgVVJMIG1fcmVzcG9uc2VVUkw7CiAgICAgICAgIGJvb2wgbV9mYWlsZWQ7CiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyOwogICAgICAgICBib29sIG1fZmluaXNoaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDk4M2Y5OWQwM2QzOGI4
NWUxZTAxMTAwNmM3ZDI4M2M0YzA0ZGI3OWEuLjVlNDkyOWFiNTc4YmM4YTE3NGY3N2ZhYjRmMzg1
NWVhNGUzYTFkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAg
LTMyLDExICszMiwxMSBAQAogCiAjaW5jbHVkZSAiRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxE
YXRhLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTY5
LDEyICs2OSwxMiBAQCB1bnNpZ25lZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZENvdW50KCkK
IHN0cnVjdCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV29ya2VyVGhyZWFkU3RhcnR1cERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3Jl
YXRlKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0
IEdyb3VwU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtl
clRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3VyaXR5
UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUgY29udGVudFNlY3VyaXR5
UG9saWN5VHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbikKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJUaHJlYWRTdGFydHVwRGF0YT4gY3JlYXRlKGNvbnN0IFVSTCYgc2Ny
aXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgR3JvdXBTZXR0aW5ncyogc2V0
dGluZ3MsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0
YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc2V0dGlu
Z3MsIHNvdXJjZUNvZGUsIHN0YXJ0TW9kZSwgY29udGVudFNlY3VyaXR5UG9saWN5LCBjb250ZW50
U2VjdXJpdHlQb2xpY3lUeXBlLCB0b3BPcmlnaW4pKTsKICAgICB9CiAKLSAgICBLVVJMIG1fc2Ny
aXB0VVJMOworICAgIFVSTCBtX3NjcmlwdFVSTDsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiAg
ICAgT3duUHRyPEdyb3VwU2V0dGluZ3M+IG1fZ3JvdXBTZXR0aW5nczsKICAgICBTdHJpbmcgbV9z
b3VyY2VDb2RlOwpAQCAtODMsMTAgKzgzLDEwIEBAIHB1YmxpYzoKICAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkhlYWRlclR5cGUgbV9jb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlOwogICAgIFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gbV90b3BPcmlnaW47CiBwcml2YXRlOgotICAgIFdvcmtlclRo
cmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQsIGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdv
cmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ks
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lU
eXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKKyAgICBXb3JrZXJUaHJlYWRT
dGFydHVwRGF0YShjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IGNvbnN0IEdyb3VwU2V0dGluZ3MqLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlclRo
cmVhZFN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBj
b25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKTsKIH07CiAKLVdvcmtlclRocmVhZFN0YXJ0
dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29u
c3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiB0b3BPcmlnaW4pCitXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3Rh
cnR1cERhdGEoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIZWFkZXJUeXBlIGNvbnRlbnRTZWN1
cml0eVBvbGljeVR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pCiAgICAgOiBt
X3NjcmlwdFVSTChzY3JpcHRVUkwuY29weSgpKQogICAgICwgbV91c2VyQWdlbnQodXNlckFnZW50
Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9zb3VyY2VDb2RlKHNvdXJjZUNvZGUuaXNvbGF0ZWRD
b3B5KCkpCkBAIC0xMDQsNyArMTA0LDcgQEAgV29ya2VyVGhyZWFkU3RhcnR1cERhdGE6Oldvcmtl
clRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IEtVUkwmIHNjcmlwdFVSTCwgY29uc3QgU3QKICAgICBt
X2dyb3VwU2V0dGluZ3MtPnNldEluZGV4ZWREQkRhdGFiYXNlUGF0aChzZXR0aW5ncy0+aW5kZXhl
ZERCRGF0YWJhc2VQYXRoKCkuaXNvbGF0ZWRDb3B5KCkpOwogfQogCi1Xb3JrZXJUaHJlYWQ6Oldv
cmtlclRocmVhZChjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBHcm91cFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2Rl
LCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1By
b3h5JiB3b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9k
ZSwgY29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6SGVhZGVyVHlwZSBjb250ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0
eU9yaWdpbiogdG9wT3JpZ2luKQorV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgVVJM
JiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBHcm91cFNldHRpbmdz
KiBzZXR0aW5ncywgY29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYg
d29ya2VyTG9hZGVyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3b3JrZXJSZXBvcnRpbmdQ
cm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29uc3QgU3RyaW5nJiBjb250
ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGVhZGVyVHlwZSBjb250
ZW50U2VjdXJpdHlQb2xpY3lUeXBlLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKQog
ICAgIDogbV90aHJlYWRJRCgwKQogICAgICwgbV93b3JrZXJMb2FkZXJQcm94eSh3b3JrZXJMb2Fk
ZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2VyUmVwb3J0aW5nUHJv
eHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCBlYTM0OTQ4MDIzZTUz
Yjk1ZWE2MGNiZjI0Y2Q0NzA0MDBmMzA4MjBkLi5kNWRiMmFiY2VlYzc0MjAyODllNTFjOTE0NmY2
ZmE4YzZiODMwYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTM5
LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgS1VSTDsKKyAg
ICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uQ2xpZW50OwogICAgIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogICAgIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwpAQCAtNzEsMTAgKzcx
LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBXb3JrZXJUaHJlYWQoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBj
b25zdCBHcm91cFNldHRpbmdzKiwgIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9h
ZGVyUHJveHkmLCBXb3JrZXJSZXBvcnRpbmdQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6SGVhZGVyVHlwZSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbik7CisgICAgICAg
IFdvcmtlclRocmVhZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
R3JvdXBTZXR0aW5ncyosICBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUsIFdvcmtlckxvYWRlclBy
b3h5JiwgV29ya2VyUmVwb3J0aW5nUHJveHkmLCBXb3JrZXJUaHJlYWRTdGFydE1vZGUsIGNvbnN0
IFN0cmluZyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhl
YWRlclR5cGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwogCiAgICAgICAgIC8v
IEZhY3RvcnkgbWV0aG9kIGZvciBjcmVhdGluZyBhIG5ldyB3b3JrZXIgY29udGV4dCBmb3IgdGhl
IHRocmVhZC4KLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdvcmtlckdsb2JhbFNjb3BlPiBj
cmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFBhc3NPd25QdHI8R3JvdXBTZXR0aW5ncz4sIGNvbnN0IFN0cmluZyYgY29udGVudFNlY3Vy
aXR5UG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkhlYWRlclR5cGUsIFBhc3NSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgPSAwOworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBQYXNzT3duUHRyPEdyb3VwU2V0dGluZ3M+LCBjb25z
dCBTdHJpbmcmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpI
ZWFkZXJUeXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0b3BPcmlnaW4pID0gMDsKIAog
ICAgICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhlIHdvcmtlciB0aHJlYWQu
IERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBhY3Rpb25zIGJlZm9yZS9h
ZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KICAgICAgICAgdmlydHVhbCB2b2lkIHJ1bkV2
ZW50TG9vcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRleCAzODA2NDNhZDUzYjlkZmY3
OTNiNjEyZTEyMTdkNGNmYTg5ZjBiMjVjLi4zZTIwZDk3ZWI4OTI5OGNjOTZkZDdiNDgyZDViYThm
NDdhZDc1MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBQ
YXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmIHN0ciwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBS
ZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChj
b250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7CisgICAgUmVmUHRyPERvY3VtZW50PiBkb2Mg
PSBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIFVSTCgp
LCBmYWxzZSk7CiAgICAgZG9jLT5zZXRDb250ZW50KHN0cik7CiAgICAgcmV0dXJuIGRvYy5yZWxl
YXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxOWIxOTk0
OWQyYzU1M2M5MjA0MDEzMTVlYmNkNmJhNGI4ZTAzMzAzLi5jMjc1YjEwM2QyMjAwNGIwYjg2ZjNh
ZTI5OGUxZWZmYjJhN2UxY2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
QEAgLTQ2OSwxMiArNDY5LDEyIEBAIGJvb2wgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBI
ZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiAhbmFtZS5zdGFydHNXaXRoKHN0
YXRpY0RhdGEtPm1fc2VjSGVhZGVyUHJlZml4LCBmYWxzZSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJl
cXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgRXhjZXB0
aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBjb25zdCBVUkwmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgb3BlbihtZXRo
b2QsIHVybCwgdHJ1ZSwgZWMpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVuKGNvbnN0
IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlu
dGVybmFsQWJvcnQoKTsKICAgICBTdGF0ZSBwcmV2aW91c1N0YXRlID0gbV9zdGF0ZTsKQEAgLTU1
NCwxNyArNTU0LDE3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjCiAgICAgICAgIG1fc3RhdGUg
PSBPUEVORUQ7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBF
eGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEtVUkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7
CisgICAgVVJMIHVybFdpdGhDcmVkZW50aWFscyh1cmwpOwogICAgIHVybFdpdGhDcmVkZW50aWFs
cy5zZXRVc2VyKHVzZXIpOwogCiAgICAgb3BlbihtZXRob2QsIHVybFdpdGhDcmVkZW50aWFscywg
YXN5bmMsIGVjKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcm
IG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIs
IGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRw
UmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wg
YXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgS1VSTCB1cmxXaXRoQ3JlZGVudGlhbHModXJsKTsKKyAgICBV
UkwgdXJsV2l0aENyZWRlbnRpYWxzKHVybCk7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFVz
ZXIodXNlcik7CiAgICAgdXJsV2l0aENyZWRlbnRpYWxzLnNldFBhc3MocGFzc3dvcmQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDI0MWVhNDUwMmI1ZDBjYzFlMjNiMjhh
ODA2ZWU5YjMyMzJiOTk2MGQuLmY4MDY0ZjViM2UwZDQ0MzExZDgwMGU3NjM0ODBlNTQ5YTAwNzJk
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC04NiwxNiArODYsMTYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRl
cmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBYTUxIdHRwUmVxdWVzdEV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJu
IEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICBjb25z
dCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IFVSTCYgdXJs
KCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBTdHJpbmcgc3RhdHVzVGV4dChFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAgICAgaW50IHN0YXR1cyhFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAg
ICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgd2l0aENyZWRlbnRpYWxzKCkg
Y29uc3QgeyByZXR1cm4gbV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHNldFdpdGhD
cmVkZW50aWFscyhib29sLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBvcGVuKGNvbnN0IFN0
cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgb3Bl
bihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwm
LCBib29sIGFzeW5jLCBjb25zdCBTdHJpbmcmIHVzZXIsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2
b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBj
b25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVS
TCYsIGJvb2wgYXN5bmMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIG9wZW4oY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IFVSTCYsIGJvb2wgYXN5bmMsIGNvbnN0IFN0cmluZyYgdXNlciwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgb3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgVVJMJiwgYm9vbCBhc3luYywgY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5kKEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIHNlbmQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZW5k
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2
YXRlOgogCiAgICAgT3duUHRyPFhNTEh0dHBSZXF1ZXN0VXBsb2FkPiBtX3VwbG9hZDsKIAotICAg
IEtVUkwgbV91cmw7CisgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX21ldGhvZDsKICAgICBI
VFRQSGVhZGVyTWFwIG1fcmVxdWVzdEhlYWRlcnM7CiAgICAgUmVmUHRyPEZvcm1EYXRhPiBtX3Jl
cXVlc3RFbnRpdHlCb2R5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9y
dFJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuY3BwCmluZGV4IDc4
Nzg0NjJkYTUyODY4NGQ2MTZhMzc1MGMxMWJmMmE2NWRkNzQ4ZWYuLmRmODUzNGVlZmVhZmYxNmVl
YzVhY2ZlMzVmZDdjZTZhYjZkZDMzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xJbXBvcnRSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgWFNMSW1wb3J0UnVsZTo6flhTTEltcG9ydFJ1bGUoKQogICAg
ICAgICBtX2NhY2hlZFNoZWV0LT5yZW1vdmVDbGllbnQodGhpcyk7CiB9CiAKLXZvaWQgWFNMSW1w
b3J0UnVsZTo6c2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgc2hlZXQpCit2b2lkIFhTTEltcG9ydFJ1bGU6OnNldFhT
TFN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0
IFN0cmluZyYgc2hlZXQpCiB7CiAgICAgaWYgKG1fc3R5bGVTaGVldCkKICAgICAgICAgbV9zdHls
ZVNoZWV0LT5zZXRQYXJlbnRTdHlsZVNoZWV0KDApOwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFhT
TEltcG9ydFJ1bGU6OmxvYWRTaGVldCgpCiAgICAgWFNMU3R5bGVTaGVldCogcGFyZW50U2hlZXQg
PSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFwYXJlbnRTaGVldC0+YmFzZVVSTCgpLmlz
TnVsbCgpKQogICAgICAgICAvLyB1c2UgcGFyZW50IHN0eWxlaGVldCdzIFVSTCBhcyB0aGUgYmFz
ZSBVUkwKLSAgICAgICAgYWJzSHJlZiA9IEtVUkwocGFyZW50U2hlZXQtPmJhc2VVUkwoKSwgbV9z
dHJIcmVmKS5zdHJpbmcoKTsKKyAgICAgICAgYWJzSHJlZiA9IFVSTChwYXJlbnRTaGVldC0+YmFz
ZVVSTCgpLCBtX3N0ckhyZWYpLnN0cmluZygpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBhIGN5
Y2xlIGluIG91ciBpbXBvcnQgY2hhaW4uICBJZiB3ZSBlbmNvdW50ZXIgYSBzdHlsZXNoZWV0CiAg
ICAgLy8gaW4gb3VyIHBhcmVudCBjaGFpbiB3aXRoIHRoZSBzYW1lIFVSTCwgdGhlbiBqdXN0IGJh
aWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTEltcG9ydFJ1bGUuaAppbmRleCAzNTBjZGQ5YjE2NTM0YjYxN2Yw
NjI3NjI5M2M0NzQwZTJjZjZiMTllLi43MmUwNDAwOGFkOTY2NjdlZTg5MjJmZmVlMTY0NjhmNDJi
YzFmZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMSW1wb3J0UnVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xJbXBvcnRSdWxlLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBYU0xJbXBvcnRSdWxlKFhTTFN0eWxlU2hlZXQqIHBhcmVu
dFNoZWV0LCBjb25zdCBTdHJpbmcmIGhyZWYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFhTTFN0
eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBT
dHJpbmcmIHNoZWV0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCk7CiAg
ICAgCiAgICAgWFNMU3R5bGVTaGVldCogbV9wYXJlbnRTdHlsZVNoZWV0OwogICAgIFN0cmluZyBt
X3N0ckhyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5o
IGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaAppbmRleCBkMzQ2YWFmNmEzNTdk
ZDQ1MDRiZjA5MjY1MDljN2Q1ODYyZjE0NzU2Li5mZDFlMzkzMjEyZjI1ZDNjNmIyY2RjMjc2MTM4
ODE3ZmY2NDlmYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKQEAgLTQwLDIyICs0
MCwyMiBAQCBjbGFzcyBYU0xJbXBvcnRSdWxlOwogICAgIAogY2xhc3MgWFNMU3R5bGVTaGVldCBG
SU5BTCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0LCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGUoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1w
b3J0LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudEltcG9y
dCwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMKSk7CiAgICAgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZShQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24qIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmlu
YWxVUkwpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhTTFN0eWxlU2hlZXQo
cGFyZW50Tm9kZSwgb3JpZ2luYWxVUkwsIGZpbmFsVVJMLCBmYWxzZSkpOwogICAgIH0KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxYU0xTdHlsZVNoZWV0PiBjcmVhdGVFbWJlZGRlZChQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24qIHBhcmVudE5vZGUsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNyZWF0ZUVtYmVkZGVkKFByb2Nlc3NpbmdJbnN0
cnVjdGlvbiogcGFyZW50Tm9kZSwgY29uc3QgVVJMJiBmaW5hbFVSTCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgWFNMU3R5bGVTaGVldChwYXJlbnROb2RlLCBmaW5hbFVSTC5z
dHJpbmcoKSwgZmluYWxVUkwsIHRydWUpKTsKICAgICB9CiAKICAgICAvLyBUYWtpbmcgYW4gYXJi
aXRyYXJ5IG5vZGUgaXMgdW5zYWZlLCBiZWNhdXNlIG93bmVyIG5vZGUgcG9pbnRlciBjYW4gYmVj
b21lIHN0YWxlLgogICAgIC8vIFhTTFRQcm9jZXNzb3IgZW5zdXJlcyB0aGF0IHRoZSBzdHlsZXNo
ZWV0IGRvZXNuJ3Qgb3V0bGl2ZSBpdHMgcGFyZW50LCBpbiBwYXJ0IGJ5IG5vdCBleHBvc2luZyBp
dCB0byBKYXZhU2NyaXB0LgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhTTFN0eWxlU2hlZXQ+IGNy
ZWF0ZUZvclhTTFRQcm9jZXNzb3IoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmln
aW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8WFNM
U3R5bGVTaGVldD4gY3JlYXRlRm9yWFNMVFByb2Nlc3NvcihOb2RlKiBwYXJlbnROb2RlLCBjb25z
dCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYU0xTdHlsZVNoZWV0KHBhcmVudE5vZGUsIG9yaWdpbmFs
VVJMLCBmaW5hbFVSTCwgZmFsc2UpKTsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGNoZWNrTG9hZGVkKCk7CiAgICAgCi0gICAgY29uc3QgS1VSTCYgZmlu
YWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsVVJMOyB9CisgICAgY29uc3QgVVJMJiBmaW5h
bFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KIAogICAgIHZvaWQgbG9hZENoaWxk
U2hlZXRzKCk7CiAgICAgdm9pZCBsb2FkQ2hpbGRTaGVldChjb25zdCBTdHJpbmcmIGhyZWYpOwpA
QCAtOTQsMTggKzk0LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhck93bmVyTm9kZSgpIE9WRVJSSURFIHsgbV9vd25lck5vZGUgPSAwOyB9Ci0gICAgdmly
dHVhbCBLVVJMIGJhc2VVUkwoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZpbmFsVVJMOyB9
CisgICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZmlu
YWxVUkw7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNYU0xTdHlsZVNoZWV0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgotICAgIFhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9k
ZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgS1VSTCYgZmluYWxVUkwsIGJvb2wg
ZW1iZWRkZWQpOwotICAgIFhTTFN0eWxlU2hlZXQoWFNMSW1wb3J0UnVsZSogcGFyZW50SW1wb3J0
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMLCBjb25zdCBLVVJMJiBmaW5hbFVSTCk7CisgICAg
WFNMU3R5bGVTaGVldChOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJM
LCBjb25zdCBVUkwmIGZpbmFsVVJMLCBib29sIGVtYmVkZGVkKTsKKyAgICBYU0xTdHlsZVNoZWV0
KFhTTEltcG9ydFJ1bGUqIHBhcmVudEltcG9ydCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwg
Y29uc3QgVVJMJiBmaW5hbFVSTCk7CiAgICAgCiAgICAgTm9kZSogbV9vd25lck5vZGU7CiAgICAg
U3RyaW5nIG1fb3JpZ2luYWxVUkw7Ci0gICAgS1VSTCBtX2ZpbmFsVVJMOworICAgIFVSTCBtX2Zp
bmFsVVJMOwogICAgIGJvb2wgbV9pc0Rpc2FibGVkOwogCiAgICAgVmVjdG9yPE93blB0cjxYU0xJ
bXBvcnRSdWxlPiA+IG1fY2hpbGRyZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFNMU3R5bGVTaGVldExpYnhzbHQuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hl
ZXRMaWJ4c2x0LmNwcAppbmRleCA2N2ZmMWViODk2ZDE0YTNlZjUwODhmMGY3YThmYWUyYmE5NzZm
ZDkwLi5mZTc0ZTQ0ODg1NGM4YzdlOTRlYzYzYmM5NWZlMGE1MTIyYmJiNGMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldExpYnhzbHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
U09GVF9MSU5LKGxpYnhzbHQsIHhzbHRMb2FkU3R5bGVzaGVldFBJLCB4c2x0U3R5bGVzaGVldFB0
ciwgKHhtbERvY1B0ciBkb2MpLCAoZG8KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1YU0xTdHls
ZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9ydFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMKQorWFNMU3R5bGVTaGVldDo6
WFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVVJMLCBjb25zdCBVUkwmIGZpbmFsVVJMKQogICAgIDogbV9vd25lck5vZGUoMCkKICAg
ICAsIG1fb3JpZ2luYWxVUkwob3JpZ2luYWxVUkwpCiAgICAgLCBtX2ZpbmFsVVJMKGZpbmFsVVJM
KQpAQCAtNjcsNyArNjcsNyBAQCBYU0xTdHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KFhTTEltcG9y
dFJ1bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUgogewogfQogCi1YU0xT
dHlsZVNoZWV0OjpYU0xTdHlsZVNoZWV0KE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYWxVUkwsIGNvbnN0IEtVUkwmIGZpbmFsVVJMLCAgYm9vbCBlbWJlZGRlZCkKK1hTTFN0
eWxlU2hlZXQ6OlhTTFN0eWxlU2hlZXQoTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVSTCwgIGJvb2wgZW1iZWRkZWQpCiAgICAgOiBt
X293bmVyTm9kZShwYXJlbnROb2RlKQogICAgICwgbV9vcmlnaW5hbFVSTChvcmlnaW5hbFVSTCkK
ICAgICAsIG1fZmluYWxVUkwoZmluYWxVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAKaW5kZXggMGQwNzk1MjEwZjM5M2U1MTZiNzI5N2VlZjY0MGU0ZjkyOWRiZmMyMy4uYWViYTk0
NTU4NTIwNzU3Zjc0MjYyNGQ3ZmYzM2U4ZGI3MjIxZDFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yLmNwcApAQCAtNzYsMTAgKzc2LDEwIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhT
TFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJj
CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IHJlc3VsdDsKICAgICBpZiAoc291cmNlTUlNRVR5cGUg
PT0gInRleHQvcGxhaW4iKSB7Ci0gICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJh
bWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6IEtVUkwoKSk7Cisg
ICAgICAgIHJlc3VsdCA9IERvY3VtZW50OjpjcmVhdGUoZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQg
PyBvd25lckRvY3VtZW50LT51cmwoKSA6IFVSTCgpKTsKICAgICAgICAgdHJhbnNmb3JtVGV4dFN0
cmluZ1RvWEhUTUxEb2N1bWVudFN0cmluZyhkb2N1bWVudFNvdXJjZSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHJlc3VsdCA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChzb3VyY2VN
SU1FVHlwZSwgZnJhbWUsIHNvdXJjZUlzRG9jdW1lbnQgPyBvd25lckRvY3VtZW50LT51cmwoKSA6
IEtVUkwoKSwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBET01JbXBsZW1lbnRhdGlvbjo6Y3Jl
YXRlRG9jdW1lbnQoc291cmNlTUlNRVR5cGUsIGZyYW1lLCBzb3VyY2VJc0RvY3VtZW50ID8gb3du
ZXJEb2N1bWVudC0+dXJsKCkgOiBVUkwoKSwgZmFsc2UpOwogCiAgICAgLy8gQmVmb3JlIHBhcnNp
bmcsIHdlIG5lZWQgdG8gc2F2ZSAmIGRldGFjaCB0aGUgb2xkIGRvY3VtZW50IGFuZCBnZXQgdGhl
IG5ldyBkb2N1bWVudAogICAgIC8vIGluIHBsYWNlLiBXZSBoYXZlIHRvIGRvIHRoaXMgb25seSBp
ZiB3ZSdyZSByZW5kZXJpbmcgdGhlIHJlc3VsdCBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCmluZGV4IDZmMDg0OWQ3ZDM5Nzk5ZjkwZDc1ZjIy
YzQ1ZDA5MGNmODQxMzEyZjQuLmU5NTI0YmU1MzQ3M2VkNjliYTA3M2ZkOTFlMGY1ZTNmZTUxYjJh
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcApAQCAt
MTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB4bWxEb2NQdHIgZG9jTG9hZGVyRnVuYyhjb25zdCB4bWxD
aGFyKiB1cmksCiAgICAgY2FzZSBYU0xUX0xPQURfRE9DVU1FTlQ6IHsKICAgICAgICAgeHNsdFRy
YW5zZm9ybUNvbnRleHRQdHIgY29udGV4dCA9ICh4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciljdHh0
OwogICAgICAgICB4bWxDaGFyKiBiYXNlID0geG1sTm9kZUdldEJhc2UoY29udGV4dC0+ZG9jdW1l
bnQtPmRvYywgY29udGV4dC0+bm9kZSk7Ci0gICAgICAgIEtVUkwgdXJsKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihiYXNlKSksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KHVyaSkpOworICAgICAgICBVUkwgdXJsKFVSTChQYXJzZWRVUkxT
dHJpbmcsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odXJpKSk7CiAgICAgICAgIHhtbEZyZWUoYmFzZSk7CiAgICAgICAg
IFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKaW5kZXggMzM4NzA5MTQyZWRlOGNkY2U5NDg1ODEwY2E4NzYwOTRkMmRiNGU5
Yi4uYjE4NjE2NDE2YjVjZmNhMTM4ZGM4NjRmMTNkNmE4YmRiY2RmYjY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cApAQCAtNDEwLDcgKzQxMCw3IEBAIHN0YXRpYyB2b2lkIHN3aXRjaFRvVVRGMTYoeG1sUGFyc2Vy
Q3R4dFB0ciBjdHh0KQogICAgIHhtbFN3aXRjaEVuY29kaW5nKGN0eHQsIEJPTUhpZ2hCeXRlID09
IDB4RkYgPyBYTUxfQ0hBUl9FTkNPRElOR19VVEYxNkxFIDogWE1MX0NIQVJfRU5DT0RJTkdfVVRG
MTZCRSk7CiB9CiAKLXN0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IEtV
UkwmIHVybCkKK3N0YXRpYyBib29sIHNob3VsZEFsbG93RXh0ZXJuYWxMb2FkKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcgPSB1cmwuc3RyaW5nKCk7CiAKQEAgLTQ1MSw3
ICs0NTEsNyBAQCBzdGF0aWMgdm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIEFT
U0VSVChYTUxEb2N1bWVudFBhcnNlclNjb3BlOjpjdXJyZW50Q2FjaGVkUmVzb3VyY2VMb2FkZXIp
OwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbGlieG1sTG9hZGVyVGhyZWFkKTsKIAot
ICAgIEtVUkwgdXJsKEtVUkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogCiAg
ICAgaWYgKCFzaG91bGRBbGxvd0V4dGVybmFsTG9hZCh1cmwpKQogICAgICAgICByZXR1cm4gJmds
b2JhbERlc2NyaXB0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluCmluZGV4IDgzYjM4YzQxMTIxMTZjZmFmYzViZWYzZjIwODk1MzAyZWEzNDk5OWMuLmMxYzdm
ZjQ2ZjIwNTMwNjI2N2IxOTBmMjU1NjlmMmMzYzQxYTM4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMu
ZGVmLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2Vu
ZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0zOTMsNyArMzkzLDcgQEAgRVhQT1JUUwog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkQXV0aG9yU2hlZXRARG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbkBXZWJDb3JlQEBRQUVYVj8kUGFzc1JlZlB0ckBWU3R5bGVTaGVldENvbnRl
bnRzQFdlYkNvcmVAQEBXVEZAQEBaLCA/YWRkQXV0aG9yU2hlZXRARG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbkBXZWJDb3JlQEBRRUFBWFY/JFBhc3NSZWZQdHJAVlN0eWxlU2hlZXRDb250ZW50
c0BXZWJDb3JlQEBAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3BhcnNlU3Ry
aW5nQFN0eWxlU2hlZXRDb250ZW50c0BXZWJDb3JlQEBRQUVfTkFCVlN0cmluZ0BXVEZAQEBaLCA/
cGFyc2VTdHJpbmdAU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQFFFQUFfTkFFQlZTdHJpbmdA
V1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2VtcHR5U3RyaW5nQFdURkBAWUFB
QlZTdHJpbmdAMUBYWiwgP2VtcHR5U3RyaW5nQFdURkBAWUFBRUJWU3RyaW5nQDFAWFopCi0gICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnZhbGlkYXRlQEtVUkxAV2ViQ29yZUBAQUFFWFhaLCA/
aW52YWxpZGF0ZUBLVVJMQFdlYkNvcmVAQEFFQUFYWFopCisgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9pbnZhbGlkYXRlQFVSTEBXZWJDb3JlQEBBQUVYWFosID9pbnZhbGlkYXRlQFVSTEBXZWJD
b3JlQEBBRUFBWFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/PzBTdHlsZVNoZWV0Q29u
dGVudHNAV2ViQ29yZUBAQUFFQFBBVlN0eWxlUnVsZUltcG9ydEAxQEFCVlN0cmluZ0BXVEZAQEFC
VUNTU1BhcnNlckNvbnRleHRAMUBAWiwgPz8wU3R5bGVTaGVldENvbnRlbnRzQFdlYkNvcmVAQEFF
QUFAUEVBVlN0eWxlUnVsZUltcG9ydEAxQEFFQlZTdHJpbmdAV1RGQEBBRUJVQ1NTUGFyc2VyQ29u
dGV4dEAxQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/YWRkVXNlclNoZWV0QERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb25AV2ViQ29yZUBAUUFFWFY/JFBhc3NSZWZQdHJAVlN0eWxl
U2hlZXRDb250ZW50c0BXZWJDb3JlQEBAV1RGQEBAWiwgP2FkZFVzZXJTaGVldEBEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uQFdlYkNvcmVAQFFFQUFYVj8kUGFzc1JlZlB0ckBWU3R5bGVTaGVl
dENvbnRlbnRzQFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
PzFTdHlsZVNoZWV0Q29udGVudHNAV2ViQ29yZUBAUUFFQFhaLCA/PzFTdHlsZVNoZWV0Q29udGVu
dHNAV2ViQ29yZUBAUUVBQUBYWikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
Q29va2llSmFyLmNwcAppbmRleCBiM2JhOGYzNzJlYjNkYjAwMTA3ZWM2MzgwYjRjZGFjYmJjMGJj
ODE4Li4xOTQ2ODg0ODI5MDMzMjhlNTYyYTk5YmMzZjM0ZDM3ODRjZWFmYTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwCkBAIC0yMSw3ICsyMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAKICNpbmNsdWRlICJDb29raWVNYW5hZ2Vy
LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPEJsYWNr
QmVycnlQbGF0Zm9ybVN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM1
LDcgKzM1LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogCiBzdGQ6OnZlY3RvcjxC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiBXZWJDb29raWVKYXI6OmNvb2tpZXMoY29uc3Qg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgdXJsKQogewotICAgIEtVUkwga3VybCA9IEtV
UkwoS1VSTCgpLCB1cmwpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1cmwpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICBjb29raWVNYW5h
Z2VyKCkuZ2V0UmF3Q29va2llcyhyYXdDb29raWVzLCBrdXJsLCBXaXRoSHR0cE9ubHlDb29raWVz
KTsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZz4gV2ViQ29va2llSmFyOjpjb29raWVzKGNvbnN0IEJsYWNrQmVycnkKIAogdm9pZCBXZWJD
b29raWVKYXI6OnNldENvb2tpZXMoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYg
dXJsLCBjb25zdCBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nPiYgY29v
a2llcykKIHsKLSAgICBLVVJMIGt1cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBVUkwga3Vy
bCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JlQ29va2llczsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGNv
cmVDb29raWVzLmFwcGVuZChjb29raWVzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViS2l0VGV4dENvZGVjLmNwcAppbmRleCAyZTYzOGU2ZTEwZmRkMWVhMjA5NDU0
ZmNjMTlkZjMyNjVjNjVmNTA2Li44NzIyOGUxMTM4MTJiMGE4YjA2Y2IxNTlkZWNjZDFmYjI0Yzk0
NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYktpdFRleHRD
b2RlYy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJLaXRUZXh0Q29k
ZWMuY3BwCkBAIC0xOSw3ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGV4dENvZGVjLmgiCiAKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3Jt
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggMDBlNjg0MDQwODU2ODJiOWM2MTZmMGQwYTBmYmY4NjY2
YWJiMDRkYi4uNDk5ZWQwY2JhMjlmZTNiNmZmYTgyZTRiMWFiZGM3MzQ1YzRkMmE3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0yMjQsMTMgKzIyNCwxMyBA
QCBjb25zdCBkb3VibGUgbWF4aW11bUltYWdlRG9jdW1lbnRab29tVG9GaXRTY2FsZSA9IDI7CiBj
b25zdCBkb3VibGUgem9vbUZhY3RvckVwc2lsb24gPSAwLjAwMDE7CiAKIC8vIEhlbHBlciBmdW5j
dGlvbiB0byBwYXJzZSBhIFVSTCBhbmQgZmlsbCBpbiBtaXNzaW5nIHBhcnRzLgotc3RhdGljIEtV
UkwgcGFyc2VVcmwoY29uc3QgU3RyaW5nJiB1cmwpCitzdGF0aWMgVVJMIHBhcnNlVXJsKGNvbnN0
IFN0cmluZyYgdXJsKQogewogICAgIFN0cmluZyB1cmxTdHJpbmcodXJsKTsKLSAgICBLVVJMIGt1
cmwgPSBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9IFVSTChVUkwoKSwg
dXJsU3RyaW5nKTsKICAgICBpZiAoa3VybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICB1cmxTdHJpbmcuaW5zZXJ0KCJodHRwOi8vIiwgMCk7Ci0gICAgICAgIGt1cmwgPSBLVVJMKEtV
UkwoKSwgdXJsU3RyaW5nKTsKKyAgICAgICAga3VybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKTsK
ICAgICB9CiAKICAgICByZXR1cm4ga3VybDsKQEAgLTY1OSw3ICs2NTksNyBAQCB2b2lkIFdlYlBh
Z2VQcml2YXRlOjppbml0KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHBhZ2VH
cm91cE5hbWUpCiAKIGNsYXNzIERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQ6IHB1YmxpYyBE
ZWZlcnJlZFRhc2s8JldlYlBhZ2VQcml2YXRlOjptX3dvdWxkTG9hZE1hbnVhbFNjcmlwdD4gewog
cHVibGljOgotICAgIGV4cGxpY2l0IERlZmVycmVkVGFza0xvYWRNYW51YWxTY3JpcHQoV2ViUGFn
ZVByaXZhdGUqIHdlYlBhZ2VQcml2YXRlLCBjb25zdCBLVVJMJiB1cmwpCisgICAgZXhwbGljaXQg
RGVmZXJyZWRUYXNrTG9hZE1hbnVhbFNjcmlwdChXZWJQYWdlUHJpdmF0ZSogd2ViUGFnZVByaXZh
dGUsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICA6IERlZmVycmVkVGFza1R5cGUod2ViUGFnZVBy
aXZhdGUpCiAgICAgewogICAgICAgICB3ZWJQYWdlUHJpdmF0ZS0+bV9jYWNoZWRNYW51YWxTY3Jp
cHQgPSB1cmw7CkBAIC02ODMsNyArNjgzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChj
b25zdCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3QmIG5ldFJlcSwgYm9vbCBuZWVkUmVmZXIKICAg
ICB9IGVsc2UKICAgICAgICAgbV9tYWluRnJhbWUtPnNldEluVmlld1NvdXJjZU1vZGUoZmFsc2Up
OwogCi0gICAgS1VSTCBrdXJsID0gcGFyc2VVcmwodXJsU3RyaW5nKTsKKyAgICBVUkwga3VybCA9
IHBhcnNlVXJsKHVybFN0cmluZyk7CiAgICAgaWYgKHByb3RvY29sSXMoa3VybCwgImphdmFzY3Jp
cHQiKSkgewogICAgICAgICAvLyBOZXZlciBydW4gamF2YXNjcmlwdCB3aGlsZSBsb2FkaW5nIGlz
IGRlZmVycmVkLgogICAgICAgICBpZiAobV9wYWdlLT5kZWZlcnNMb2FkaW5nKCkpCkBAIC03Mzks
MTQgKzczOSwxNCBAQCB2b2lkIFdlYlBhZ2U6OmxvYWQoY29uc3QgUGxhdGZvcm06Ok5ldHdvcmtS
ZXF1ZXN0JiByZXF1ZXN0LCBib29sIG5lZWRSZWZlcmVyKQogCiB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojpsb2FkU3RyaW5nKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHN0cmluZywg
Y29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgYmFzZVVSTCwgY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpTdHJpbmcmIGZhaWxpbmdVUkwpCiB7Ci0gICAgS1VSTCBrdXJsID0gcGFyc2VVcmwo
YmFzZVVSTCk7CisgICAgVVJMIGt1cmwgPSBwYXJzZVVybChiYXNlVVJMKTsKICAgICBSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcgogICAgICAgICA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0cmluZy5jX3N0cigpLCBzdHJp
bmcubGVuZ3RoKCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwK
ICAgICAgICAgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCiAgICAg
ICAgIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksCi0gICAgICAgICFm
YWlsaW5nVVJMLmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IEtVUkwoKSk7CisgICAg
ICAgICFmYWlsaW5nVVJMLmVtcHR5KCkgPyBwYXJzZVVybChmYWlsaW5nVVJMKSA6IFVSTCgpKTsK
ICAgICBtX21haW5GcmFtZS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KG1fbWFpbkZy
YW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCkBAIC04NTgsMTQgKzg1OCwxNCBA
QCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IHN0
ZDo6d3N0cmluZyYgc2NyaXB0LCBKYXZhUwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIFN0cmluZyBzdHIgPSBTdHJpbmcoZGF0YSwgbGVuZ3RoQ29waWVkKTsKLSAgICBTY3JpcHRT
b3VyY2VDb2RlIHNvdXJjZUNvZGUoc3RyLCBLVVJMKCkpOworICAgIFNjcmlwdFNvdXJjZUNvZGUg
c291cmNlQ29kZShzdHIsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+ZXhlY3V0ZUphdmFTY3JpcHRJ
bklzb2xhdGVkV29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwgcmV0dXJuVmFsdWUpOwogfQog
CiBib29sIFdlYlBhZ2U6OmV4ZWN1dGVKYXZhU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcmIHNjcmlwdFVURjgsIEphdmFTY3JpcHREYXRhVHlw
ZSYgcmV0dXJuVHlwZSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZyYgcmV0dXJuVmFsdWUp
CiB7CiAgICAgQkxBQ0tCRVJSWV9BU1NFUlQoc2NyaXB0VVRGOC5pc1V0ZjgoKSk7Ci0gICAgU2Ny
aXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIEtVUkwoKSk7CisgICAgU2NyaXB0
U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdFVURjgsIFVSTCgpKTsKICAgICByZXR1cm4gZC0+
ZXhlY3V0ZUphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQoc291cmNlQ29kZSwgcmV0dXJuVHlwZSwg
cmV0dXJuVmFsdWUpOwogfQogCkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlMKICAgICBpZiAoc291cmNlLT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBLVVJMIGRlc3RpbmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBk
ZXN0aW5hdGlvbihVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90
b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
IH0KIApAQCAtMTAxMyw3ICsxMDEzLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6cmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm0KICAgICBp
ZiAoc291cmNlLT5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIGRlc3Rp
bmF0aW9uKEtVUkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOworICAgIFVSTCBkZXN0aW5hdGlvbihV
UkwoKSwgZGVzdGluYXRpb25PcmlnaW4pOwogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBk
ZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIApAQCAt
MjA2NCw3ICsyMDY0LDcgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6aXNBY3RpdmUoKSBjb25zdAog
ICAgIHJldHVybiBtX2NsaWVudC0+aXNBY3RpdmUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSwgY29uc3QgQ3JlZGVudGlhbCYgaW5wdXRDcmVkZW50
aWFsKQordm9pZCBXZWJQYWdlUHJpdmF0ZTo6YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCBD
cmVkZW50aWFsJiBpbnB1dENyZWRlbnRpYWwpCiB7CiAgICAgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VNYW5hZ2VyKiBhdXRobWdyID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VNYW5hZ2VyOjppbnN0
YW5jZSgpOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmcgdXNlcm5hbWU7CkBAIC0y
MTU2LDcgKzIxNTYsNyBAQCBQbGF0Zm9ybTo6V2ViQ29udGV4dCBXZWJQYWdlUHJpdmF0ZTo6d2Vi
Q29udGV4dChUYXJnZXREZXRlY3Rpb25TdHJhdGVneSBzdHJhdGVneQogICAgIE5vZGUqIGxpbmtO
b2RlID0gbm9kZS0+ZW5jbG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCk7CiAgICAgLy8gU2V0
IGxpbmsgdXJsIG9ubHkgd2hlbiB0aGUgbm9kZSBpcyBsaW5rZWQgaW1hZ2UsIG9yIHRleHQgaW5z
aWRlIGFuY2hvci4gUHJldmVudCBDQ00gcG9wdXAgd2hlbiBsb25nIHByZXNzIG5vbi1saW5rIGVs
ZW1lbnQoZWcuIGJ1dHRvbikgaW5zaWRlIGFuIGFuY2hvci4KICAgICBpZiAobGlua05vZGUgJiYg
KG5vZGUgPT0gbGlua05vZGUgfHwgbm9kZS0+aXNUZXh0Tm9kZSgpIHx8IG5vZGVJc0ltYWdlKSkg
ewotICAgICAgICBLVVJMIGhyZWY7CisgICAgICAgIFVSTCBocmVmOwogICAgICAgICBpZiAobGlu
a05vZGUtPmlzTGluaygpICYmIGxpbmtOb2RlLT5oYXNBdHRyaWJ1dGVzKCkpIHsKICAgICAgICAg
ICAgIGlmIChjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRvRWxlbWVudChsaW5rTm9kZSkt
PmZpbmRBdHRyaWJ1dGVCeU5hbWUoSFRNTE5hbWVzOjpocmVmQXR0cikpCiAgICAgICAgICAgICAg
ICAgaHJlZiA9IGxpbmtOb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlLT52YWx1ZSgpKSk7CkBAIC00ODk3LDcgKzQ4
OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OmluaXRQb3B1cFdlYlZpZXcoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlKiB3ZWJQYWdlKQogICAgIGQtPm1fcGFnZVBvcHVwLT5pbml0aWFsaXplKHdlYlBh
Z2UpOwogfQogCi1TdHJpbmcgV2ViUGFnZVByaXZhdGU6OmZpbmRQYXR0ZXJuU3RyaW5nRm9yVXJs
KGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK1N0cmluZyBXZWJQYWdlUHJpdmF0ZTo6ZmluZFBhdHRl
cm5TdHJpbmdGb3JVcmwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgaWYgKChtX3dlYlNl
dHRpbmdzLT5zaG91bGRIYW5kbGVQYXR0ZXJuVXJscygpICYmIHByb3RvY29sSXModXJsLCAicGF0
dGVybiIpKQogICAgICAgICB8fCBwcm90b2NvbElzKHVybCwgInRlbCIpCkBAIC01ODQxLDcgKzU4
NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjpkaWRDaGFuZ2VTZXR0aW5ncyhXZWJTZXR0aW5n
cyogd2ViU2V0dGluZ3MpCiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIHN0eWxl
c2hlZXRVUkwgPSB3ZWJTZXR0aW5ncy0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbigpOwogICAgIGlm
ICghc3R5bGVzaGVldFVSTC5lbXB0eSgpKQotICAgICAgICBjb3JlU2V0dGluZ3MtPnNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oS1VSTChLVVJMKCksIHN0eWxlc2hlZXRVUkwpKTsKKyAgICAgICAg
Y29yZVNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKFVSTChVUkwoKSwgc3R5bGVz
aGVldFVSTCkpOwogCiAgICAgY29yZVNldHRpbmdzLT5zZXRGaXJzdFNjaGVkdWxlZExheW91dERl
bGF5KHdlYlNldHRpbmdzLT5maXJzdFNjaGVkdWxlZExheW91dERlbGF5KCkpOwogICAgIGNvcmVT
ZXR0aW5ncy0+c2V0VXNlQ2FjaGUod2ViU2V0dGluZ3MtPnVzZVdlYktpdENhY2hlKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYTdlODNmMTIwYTFiNTE3
NGJmODFkMTJkODcxZjA2NGVkN2E4OGE1Yi4uNDdjZDhlYzQwYzcxN2NjMjkxNDliYjQ1OGI3Njhh
OTRjNDc2N2QwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBA
IC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlci5oIgogI2luY2x1ZGUgPEVH
TC9lZ2wuaD4KICNlbmRpZgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgpAQCAtMjE2LDcgKzIxNiw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzaG93QWxlcnREaWFsb2coV2ViUGFnZUNsaWVu
dDo6QWxlcnRUeXBlIGF0eXBlKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmLCBjb25zdCBXZWJDb3JlOjpD
cmVkZW50aWFsJik7CisgICAgdmlydHVhbCB2b2lkIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKICAgICB2aXJ0dWFsIFNhdmVDcmVkZW50aWFsVHlwZSBu
b3RpZnlTaG91bGRTYXZlQ3JlZGVudGlhbChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1By
b3h5Q3JlZGVudGlhbChjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik7CiAKQEAgLTM0OSw3ICsz
NDksNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0aGlzIHVybCBzaG91bGQgYmUgaGFuZGxlZCBh
cyBhIHBhdHRlcm4sIHJldHVybnMgdGhlIHBhdHRlcm4KICAgICAvLyBvdGhlcndpc2UsIHJldHVy
bnMgYW4gZW1wdHkgc3RyaW5nLgotICAgIFN0cmluZyBmaW5kUGF0dGVyblN0cmluZ0ZvclVybChj
b25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisgICAgU3RyaW5nIGZpbmRQYXR0ZXJuU3RyaW5n
Rm9yVXJsKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBzdXNwZW5kQmFj
a2luZ1N0b3JlKCk7CiAgICAgdm9pZCByZXN1bWVCYWNraW5nU3RvcmUoKTsKQEAgLTYyMSw3ICs2
MjEsNyBAQCBwdWJsaWM6CiAgICAgaW50IG1fY2FjaGVkUG9wdXBMaXN0U2VsZWN0ZWRJbmRleDsK
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkRGF0ZVRpbWVJbnB1dDsK
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5nIG1fY2FjaGVkQ29sb3JJbnB1dDsKLSAg
ICBXZWJDb3JlOjpLVVJMIG1fY2FjaGVkTWFudWFsU2NyaXB0OworICAgIFdlYkNvcmU6OlVSTCBt
X2NhY2hlZE1hbnVhbFNjcmlwdDsKIAogICAgIGNsYXNzIERlZmVycmVkVGFza0Jhc2UgewogICAg
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCAzMjM5M2E3
YzMzZDJkZmYwM2YwYzdiZjZiMmNlOThkNjgxNmEzOWFmLi43MWM3MmQ4NmViOWE5YjQzMTJhMWY0
YzZiNGQ0ZmRlMzFmMjgyNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEJsYWNrQmVycnkuY3Bw
CkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
Ikljb24uaCIKICNpbmNsdWRlICJJbnB1dEhhbmRsZXIuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisj
aW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjIyLDcgKzIyMiw3IEBAIFBhZ2UqIENocm9t
ZUNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmCiAgICAgLy8gQmFpbCBvdXQgZWFybHkgd2hlbiB3ZSBhcmVuJ3QgYWxsb3dl
ZCB0byBkaXNwbGF5IHRoZSB0YXJnZXQgb3JpZ2luLCBvdGhlcndpc2UsCiAgICAgLy8gaXQgd291
bGQgYmUgaGFybWZ1bCBhbmQgdGhlIHdpbmRvdyB3b3VsZCBiZSB1c2VsZXNzLiBUaGlzIGlzIHRo
ZSBzYW1lIGNoZWNrCiAgICAgLy8gYXMgdGhlIG9uZSBpbiBGcmFtZUxvYWRlcjo6bG9hZEZyYW1l
UmVxdWVzdCgpLgotICAgIGNvbnN0IEtVUkwmIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LnVybCgpOwogICAgIGlmICghcmVxdWVzdC5yZXF1ZXN0ZXIoKS0+Y2FuRGlzcGxheSh1cmwpKSB7
CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUsIHVy
bC5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFuYWdlci5jcHAK
aW5kZXggNDE2OTBiZGZlNzkzYTFhOWZlM2ZmY2I0OWQ3MWE5Y2E2MzNmNTMxNC4uN2EwMGRjNGQy
MTU3MzFhNjk4NTg5NWJhOTNiYzA1MmVmODJmMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbE1hbmFnZXIu
Y3BwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiQ3JlZGVudGlhbEJhY2tpbmdTdG9yZS5o
IgogI2luY2x1ZGUgIkNyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhLmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQYWdlQ2xpZW50QmxhY2tCZXJyeS5oIgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlh
bE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVk
ZW50aWFsTWFuYWdlci5oCmluZGV4IDUxZDE4MTdhMTc2Nzk1NGYxMjA3NzQ4YWFmOWUwYTgyZmJk
OTkyNGMuLmQ1MDc5ZGZjOGQ2NmE0OTMwOTRlZmMxMTVkNDhmNzk1MjhlNWI4YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVkZW50aWFsTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9DcmVk
ZW50aWFsTWFuYWdlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFN0cmluZzsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VSTDsKK2NsYXNzIFVSTDsKIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKIGNsYXNzIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRhOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9y
bURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRl
bnRpYWxUcmFuc2Zvcm1EYXRhLmNwcAppbmRleCA4ZTNkZjQwYmJjNWJhZTYwMzljOTZmY2Q4Y2Yw
MjQyNWYwNDc1OGFiLi42MGI3ZGNjMWRjOGE2MGZiYTQ0ZmNjYTdiMmJmM2VmY2VkMDA4Yjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9DcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAK
ICNpbmNsdWRlICJDcmVkZW50aWFsVHJhbnNmb3JtRGF0YS5oIgogCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDkgKzQ5LDkg
QEAgbmFtZXNwYWNlIHsKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4UGFzc3dvcmRzID0gMzsKIAog
Ly8gSGVscGVyIG1ldGhvZCB0byBjbGVhciB1cmwgb2YgdW5uZWVkZWQgcGFydHMuCi1LVVJMIHN0
cmlwVVJMKGNvbnN0IEtVUkwmIHVybCkKK1VSTCBzdHJpcFVSTChjb25zdCBVUkwmIHVybCkKIHsK
LSAgICBLVVJMIHN0cmlwcGVkVVJMID0gdXJsOworICAgIFVSTCBzdHJpcHBlZFVSTCA9IHVybDsK
ICAgICBzdHJpcHBlZFVSTC5zZXRVc2VyKFN0cmluZygpKTsKICAgICBzdHJpcHBlZFVSTC5zZXRQ
YXNzKFN0cmluZygpKTsKICAgICBzdHJpcHBlZFVSTC5zZXRRdWVyeShTdHJpbmcoKSk7CkBAIC03
OCwxMyArNzgsMTMgQEAgQ3JlZGVudGlhbFRyYW5zZm9ybURhdGE6OkNyZWRlbnRpYWxUcmFuc2Zv
cm1EYXRhKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgYm9vbCBpc0YKICAgICBBU1NFUlQoZm9ybSk7
CiAKICAgICAvLyBHZXQgdGhlIGRvY3VtZW50IFVSTAotICAgIEtVUkwgZnVsbE9yaWdpbihQYXJz
ZWRVUkxTdHJpbmcsIGZvcm0tPmRvY3VtZW50KCktPmRvY3VtZW50VVJJKCkpOworICAgIFVSTCBm
dWxsT3JpZ2luKFBhcnNlZFVSTFN0cmluZywgZm9ybS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkko
KSk7CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGNhbm9uaWNhbCBhY3Rpb24gVVJMCiAgICAgU3Ry
aW5nIGFjdGlvbiA9IGZvcm0tPmFjdGlvbigpOwogICAgIGlmIChhY3Rpb24uaXNOdWxsKCkpCiAg
ICAgICAgIGFjdGlvbiA9ICIiOyAvLyBtaXNzaW5nICdhY3Rpb24nIGF0dHJpYnV0ZSBpbXBsaWVz
IGN1cnJlbnQgVVJMCi0gICAgS1VSTCBmdWxsQWN0aW9uID0gZm9ybS0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoYWN0aW9uKTsKKyAgICBVUkwgZnVsbEFjdGlvbiA9IGZvcm0tPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKGFjdGlvbik7CiAgICAgaWYgKCFmdWxsQWN0aW9uLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC05NSw3ICs5NSw3IEBAIENyZWRlbnRpYWxUcmFuc2Zvcm1EYXRh
OjpDcmVkZW50aWFsVHJhbnNmb3JtRGF0YShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgaXNG
CiAgICAgaWYgKCFpc0ZvclNhdmluZyAmJiBtX29sZFBhc3N3b3JkRWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBzdHJpcFVSTChmdWxsT3JpZ2luKTsKKyAgICBVUkwg
dXJsID0gc3RyaXBVUkwoZnVsbE9yaWdpbik7CiAgICAgbV9hY3Rpb24gPSBzdHJpcFVSTChmdWxs
QWN0aW9uKTsKICAgICBtX3Byb3RlY3Rpb25TcGFjZSA9IFByb3RlY3Rpb25TcGFjZSh1cmwuaG9z
dCgpLCB1cmwucG9ydCgpLCBQcm90ZWN0aW9uU3BhY2VTZXJ2ZXJIVFRQLCAiRm9ybSIsIFByb3Rl
Y3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRNTEZvcm0pOwogICAgIG1fY3JlZGVudGlh
bCA9IENyZWRlbnRpYWwobV91c2VyTmFtZUVsZW1lbnQtPnZhbHVlKCksIG1fcGFzc3dvcmRFbGVt
ZW50LT52YWx1ZSgpLCBDcmVkZW50aWFsUGVyc2lzdGVuY2VQZXJtYW5lbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0NyZWRlbnRpYWxUcmFu
c2Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3Jl
ZGVudGlhbFRyYW5zZm9ybURhdGEuaAppbmRleCA2ZGVlN2VkYmYxZmM5YjdjNDM0NDdiM2NmNDk1
NmE1YWI1NzZhMGJiLi4yMGFmNTg3NWYxMjJmYTYxZTMxZDJkYzNhYmMwNGIxOGYyOGM1YTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ3JlZGVu
dGlhbFRyYW5zZm9ybURhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ3JlZGVudGlhbFRyYW5zZm9ybURhdGEuaApAQCAtMjIsNyArMjIsNyBAQAogI2lu
Y2x1ZGUgIkNyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVS
TC5oIgogI2luY2x1ZGUgIlByb3RlY3Rpb25TcGFjZS5oIgogCiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZmluZFBhc3N3b3JkRm9y
bUZpZWxkcyhjb25zdCBIVE1MRm9ybUVsZW1lbnQqKTsKICAgICBib29sIGxvY2F0ZVNwZWNpZmlj
UGFzc3dvcmRzKGNvbnN0IFZlY3RvcjxIVE1MSW5wdXRFbGVtZW50Kj4mIHBhc3N3b3Jkcyk7CiAK
LSAgICBLVVJMIG1fYWN0aW9uOworICAgIFVSTCBtX2FjdGlvbjsKICAgICBQcm90ZWN0aW9uU3Bh
Y2UgbV9wcm90ZWN0aW9uU3BhY2U7CiAgICAgbXV0YWJsZSBDcmVkZW50aWFsIG1fY3JlZGVudGlh
bDsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gbV91c2VyTmFtZUVsZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDgzODU4ODAwYjdj
MWFiY2RjMWZlODYyNjcwZjgyMmQ3NTA4ODRhZGYuLmRiY2JhNTczZjU0Y2I3MDJmOWMyMzA1YWM3
MzQ3ZjQ3YzU3NTQzZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnkuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgIG1fY2xpZW50UmVkaXJl
Y3RJc1BlbmRpbmcgPSBmYWxzZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBLVVJMJiwgZG91Ymxl
LCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6ZGlzcGF0Y2hXaWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYsIGRvdWJsZSwgZG91YmxlKQogewogICAg
IGlmIChtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlKQogICAgICAgICBtX3dlYlBh
Z2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlLT5kaWREaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoKTsKQEAgLTE4NiwxMiArMTg2LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQ
CiB7CiAgICAgUG9saWN5QWN0aW9uIGRlY2lzaW9uID0gUG9saWN5SWdub3JlOwogCi0gICAgY29u
c3QgS1VSTCYgdXJsID0gcmVxdWVzdC51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgaWYgKCF1cmwuaXNOdWxsKCkpIHsKICAgICAgICAgLy8gRnJhZ21lbnQg
c2Nyb2xscyBvbiB0aGUgc2FtZSBwYWdlIHNob3VsZCBhbHdheXMgYmUgaGFuZGxlZCBpbnRlcm5h
bGx5LgogICAgICAgICAvLyAoT25seSBjb3VudCBhcyBhIGZyYWdtZW50IHNjcm9sbCBpZiB3ZSBh
cmUgc2Nyb2xsaW5nIHRvIGEgI2ZyYWdtZW50IHVybCwgbm90IGJhY2sgdG8gdGhlIHRvcCwgYW5k
IHJlbG9hZGluZwogICAgICAgICAvLyB0aGUgc2FtZSB1cmwgaXMgbm90IGEgZnJhZ21lbnQgc2Ny
b2xsIGV2ZW4gaWYgaXQgaGFzIGEgI2ZyYWdtZW50LikKLSAgICAgICAgY29uc3QgS1VSTCYgY3Vy
cmVudFVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgICAgICBjb25zdCBVUkwm
IGN1cnJlbnRVcmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICAgICAgYm9vbCBp
c0ZyYWdtZW50U2Nyb2xsID0gdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIHVybCAhPSBj
dXJyZW50VXJsICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY3VycmVudFVybCwg
dXJsKTsKICAgICAgICAgZGVjaXNpb24gPSBkZWNpZGVQb2xpY3lGb3JFeHRlcm5hbExvYWQocmVx
dWVzdCwgaXNGcmFnbWVudFNjcm9sbCk7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBib29sIEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6c2hvdWxkQWx3YXlzVXNlUGx1Z2luRG9jdW1lbnQoY29u
c3QgU3RyaW5nJiBtaQogfQogCiBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwKLSAgICBI
VE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywKKyAgICBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLAogICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBi
b29sIGxvYWRNYW51YWxseSkKIHsKICAgICBTdHJpbmcgbWltZVR5cGUobWltZVR5cGVJbik7CkBA
IC0zOTUsNyArMzk1LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb24KICAgICAgICAgaWYgKCFz
b3VyY2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBBbHdheXMgaWdub3JlIGV4aXN0aW5n
IHN1YnN0aXR1dGUgZGF0YSBpZiBhbnkuCiAgICAgICAgICAgICBXVEY6OlJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZS5pczhCaXQoKSA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHNvdXJjZS5jaGFyYWN0ZXJzOCgpKSA6IHNvdXJj
ZS5sYXRpbjEoKS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBzdWJzdGl0
dXRlRGF0YUxvY2FsID0gU3Vic3RpdHV0ZURhdGEoYnVmZmVyLCAidGV4dC9odG1sIiwgImxhdGlu
MSIsIEtVUkwoKSk7CisgICAgICAgICAgICBzdWJzdGl0dXRlRGF0YUxvY2FsID0gU3Vic3RpdHV0
ZURhdGEoYnVmZmVyLCAidGV4dC9odG1sIiwgImxhdGluMSIsIFVSTCgpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKICAgICB9CiB9CiAKLVN0cmlu
ZyBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0
cmluZyBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OnVzZXJBZ2VudChjb25zdCBVUkwmKQog
ewogICAgIHJldHVybiBtX3dlYlBhZ2VQcml2YXRlLT5tX3dlYlNldHRpbmdzLT51c2VyQWdlbnRT
dHJpbmcoKTsKIH0KQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeTo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdAog
ICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2R1bXBSZW5kZXJUcmVlLT5kaWRSZWNlaXZlVGl0
bGVGb3JGcmFtZSh0aXRsZS5zdHJpbmcoKSwgbV9mcmFtZSk7CiB9CiAKLXZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiAv
KnRpdGxlKi8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeTo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgLyp0aXRsZSovLCBj
b25zdCBVUkwmIC8qdXJsKi8pCiB7CiAgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBk
YXRlIHRoZSB0aXRsZSBvZiBhbiBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJL
aXQgZG9lc24ndCBhY2NvbW9kYXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBk
b2VzLApAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBlcnJvclBhZ2UgPSBtX3dlYlBhZ2VQcml2YXRlLT5tX2Ns
aWVudC0+Z2V0RXJyb3JQYWdlKGVycm9yLmVycm9yQ29kZSgpLCBlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpLCBlcnJvci5mYWlsaW5nVVJMKCkpOwotICAgIFN1YnN0aXR1dGVEYXRhIGVycm9y
RGF0YSh1dGY4QnVmZmVyKGVycm9yUGFnZSksICJ0ZXh0L2h0bWwiLCAidXRmLTgiLCBLVVJMKEtV
UkwoKSwgZXJyb3IuZmFpbGluZ1VSTCgpKSk7CisgICAgU3Vic3RpdHV0ZURhdGEgZXJyb3JEYXRh
KHV0ZjhCdWZmZXIoZXJyb3JQYWdlKSwgInRleHQvaHRtbCIsICJ1dGYtOCIsIFVSTChVUkwoKSwg
ZXJyb3IuZmFpbGluZ1VSTCgpKSk7CiAKICAgICAvLyBMb2FkaW5nIHVzaW5nIFN1YnN0aXR1dGVE
YXRhIHdpbGwgcmVwbGFjZSB0aGUgb3JpZ2luYWwgcmVxdWVzdCB3aXRoIG91cgogICAgIC8vIGVy
cm9yIGRhdGEuIFRoaXMgbXVzdCBiZSBkb25lIHdpdGhpbiBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQsCkBAIC03NzcsNyArNzc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnk6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGEKICAg
ICB9CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUKK1Bhc3NSZWZQ
dHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlRnJhbWUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZQogICAgICwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xs
aW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgaWYgKCFtX3dl
YlBhZ2VQcml2YXRlKQpAQCAtODE1LDcgKzgxNSw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25z
CiAgICAgcmV0dXJuIGNoaWxkRnJhbWUucmVsZWFzZSgpOwogfQogCi1PYmplY3RDb250ZW50VHlw
ZSBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICBTdHJpbmcg
bWltZVR5cGUgPSBtaW1lVHlwZUluOwogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCkBAIC0x
MTM5LDcgKzExMzksNyBAQCBQb2xpY3lBY3Rpb24gRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpkZWNpZGVQb2xpY3lGb3JFeHRlcm5hbExvYWQoY29uc3QgUmVzbwogICAgIC8vIGFuZCBleHBv
c2VkIHRvIGNsaWVudC4gQmVmb3JlIHRoYXQsIGRvbid0IHJldHVybiBQb2xpY3lJZ25vcmUgc28g
d2UgY2FuIGNvbnRpbnVlIHRvCiAgICAgLy8gY3JlYXRlIG5ldyB3aW5kb3cgYW5kIGdldCB0byBk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKSB3aGVyZSB0aGUgY2xpZW50
CiAgICAgLy8gaXMgZ2l2ZW4gYSBjaGFuY2UgdG8gZGVjaWRlIGhvdyB0byBoYW5kbGUgcGF0dGVy
bnMgc3VjaCBhcyAnbWFpbHRvOicuCi0gICAgY29uc3QgS1VSTCYgdXJsID0gcmVxdWVzdC51cmwo
KTsKKyAgICBjb25zdCBVUkwmIHVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgU3RyaW5nIHBhdHRl
cm4gPSBtX3dlYlBhZ2VQcml2YXRlLT5maW5kUGF0dGVyblN0cmluZ0ZvclVybCh1cmwpOwogICAg
IGlmICghcGF0dGVybi5pc0VtcHR5KCkpIHsKICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9j
bGllbnQtPmhhbmRsZVN0cmluZ1BhdHRlcm4ocGF0dGVybi5jaGFyYWN0ZXJzKCksIHBhdHRlcm4u
bGVuZ3RoKCkpOwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnk6OmRpc3BhdGNoRGlkTG9hZEZyb21BcHBsaWNhdGlvbkNhY2hlKGNvbnN0IFJlc28K
ICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2NsaWVudC0+bm90aWZ5RGlkTG9hZEZyb21BcHBsaWNh
dGlvbkNhY2hlKCk7CiB9CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IEZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeTo6c2VjdXJpdHlPcmlnaW5Gb3JOZXdEb2N1bWVudChjb25zdCBLVVJM
JiB1cmwpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBGcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnk6OnNlY3VyaXR5T3JpZ2luRm9yTmV3RG9jdW1lbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAg
ICAgLy8gV2hhdCB3ZSBhcmUgdHJ5aW5nIHRvIGRvIGhlcmUgaXMgdG8ga2VlcCB1c2luZyB0aGUg
b2xkIHBhdGggYXMgb3JpZ2luIHdoZW4gYSBmaWxlLWJhc2VkIGh0bWwgcGFnZQogICAgIC8vIGNo
YW5nZXMgaXRzIGxvY2F0aW9uIHRvIHNvbWUgaHRtbCBpbiBhIHN1YmZvbGRlci4gVGhpcyB3aWxs
IGFsbG93IHNvbWUgZmlsZS1iYXNlZCBodG1sIHBhY2thZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmgKaW5kZXggM2VhYWFiMzU5ZWI3NDM2YTBjZTNkM2FmN2RjNWQ0
YzUxMzA4NzA1ZS4uYmZkYTZjOGJlZjMxYTEyMDRmN2MyMDNkODA4MDhkZGViODMyODc1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaApAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRz
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJs
ZSk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChj
b25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UHVzaFN0YXRlV2l0aGluUGFnZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxh
Y2VTdGF0ZVdpdGhpblBhZ2UoKTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
JiB0aXRsZSwgY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFVwZGF0ZUFwcGxpY2F0aW9uQ2FjaGUoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZEZyb21B
cHBsaWNhdGlvbkNhY2hlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hh
bmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1
cm4gUmVzb3VyY2VFcnJvcihlbXB0eVN0cmluZygpLCAwLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpKTsgfQogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBSZXNvdXJjZUVy
cm9yKGVtcHR5U3RyaW5nKCksIDAsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOyB9CiAg
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBSZXNvdXJjZUVycm9yKGVtcHR5U3RyaW5n
KCksIDAsIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCkpOyB9CkBAIC0xMzMsOCArMTMzLDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCkgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1l
bnQoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1l
bnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEtVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLSAgICB2aXJ0dWFsIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0
dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIHNhdmVQ
bGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgeyBub3RJbXBsZW1lbnRlZCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFt
ZShDYWNoZWRGcmFtZSopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCk7CkBAIC0xNDMsMTMgKzE0MywxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBp
bnQsIGludCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmLCBib29sLCBpbnQsIGludCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c1VzZVBs
dWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+
IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdp
ZGdldCopOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRX
aWRnZXQoY29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7IG5vdEltcGxlbWVu
dGVkKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRl
SmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25z
dCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyBu
b3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBPYmplY3RDb250ZW50
VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKKyAgICB2aXJ0dWFsIE9iamVj
dENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiAgICAgdmlydHVh
bCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1l
bnRFbGVtZW50QXZhaWxhYmxlKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CkBAIC0xNTksNyArMTU5
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRMb2FkSWNvbkV4dGVybmFsbHko
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBsb2FkSWNvbkV4dGVybmFsbHko
Y29uc3QgU3RyaW5nJiBvcmlnaW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgZmluYWxQYWdlVXJs
LCBjb25zdCBTdHJpbmcmIGljb25VcmwpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhj
b25zdCBVUkwmLCBib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucyhJY29uVHlwZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9OwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKIApAQCAt
MTY4LDcgKzE2OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5l
dHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkZvck5ld0RvY3VtZW50
KGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNl
Y3VyaXR5T3JpZ2luRm9yTmV3RG9jdW1lbnQoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIHJlYWR5
VG9SZW5kZXIoYm9vbCBwYWdlSXNWaXN1YWxseU5vbkVtcHR5KTsKIApAQCAtMjAzLDggKzIwMyw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NoaWxkRnJhbWVDcmVhdGlvblN1cHByZXNzZWQ7CiAK
ICAgICAvLyBUaGlzIHNldCBpbmNsdWRlcyB0aGUgb3JpZ2luYWwgYW5kIGZpbmFsIHVybHMgZm9y
IHNlcnZlciByZWRpcmVjdHMuCi0gICAgSGFzaFNldDxLVVJMPiBtX2hpc3RvcnlOYXZpZ2F0aW9u
U291cmNlVVJMczsKLSAgICBIYXNoU2V0PEtVUkw+IG1fcmVkaXJlY3RVUkxzVG9Ta2lwRHVlVG9I
aXN0b3J5TmF2aWdhdGlvbjsKKyAgICBIYXNoU2V0PFVSTD4gbV9oaXN0b3J5TmF2aWdhdGlvblNv
dXJjZVVSTHM7CisgICAgSGFzaFNldDxVUkw+IG1fcmVkaXJlY3RVUkxzVG9Ta2lwRHVlVG9IaXN0
b3J5TmF2aWdhdGlvbjsKIAogICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8u
CiAgICAgUGx1Z2luVmlldyogbV9wbHVnaW5WaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnku
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc0JsYWNrQmVycnkuY3BwCmluZGV4IGRjZmVmNjA1MzBiZjlmZDU0ZDk5NGFlZWVhOTVk
MTc0YWMxNDgyZjYuLjRhNjEyY2Q1NTE1ZTZjYTUwOWYxZWJmZTA4YmRiNDZkNjM3ZTQyMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5jcHAKQEAgLTgxLDMy
ICs4MSwzMiBAQCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0Jl
cnJ5OjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKIH0KIAogLy8gQ29va2llc1N0cmF0ZWd5
Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0ZvckRPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzQmxhY2tCZXJyeTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc0JsYWNrQmVycnk6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnk6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeTo6ZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVy
cnk6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CkBAIC0xNTEsNyArMTUx
LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5OjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFBhZ2UqLCBWZWN0b3I8UGx1Z2luSW5mbz4KIH0KIAogLy8gVmlzaXRlZExpbmtTdHJhdGVn
eQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojppc0xpbmtWaXNpdGVkKFBhZ2Uq
IHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQor
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5Ojppc0xpbmtWaXNpdGVkKFBhZ2UqIHBh
Z2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCiB7CiAg
ICAgcmV0dXJuIHBhZ2UtPmdyb3VwKCkuaXNMaW5rVmlzaXRlZChoYXNoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNCbGFja0JlcnJ5LmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzQmxhY2tCZXJyeS5oCmluZGV4IGM1MTU2NDVkMmNkNDljNGUx
NjdjMGMyZGRkM2RmNWQ0ZWEwN2UyYjguLmQyNDVmYTU1MGNkNjBiNjU3MzFmMDVjZTM5NDM3N2Vh
ZmQ1ZDlkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0JsYWNrQmVycnkuaApA
QCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJh
c2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTYy
LDcgKzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25z
dCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAv
LyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zp
c2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlu
a0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJp
bmcmIGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvUGFnZVBvcHVwLmNwcAppbmRleCA2YzhlZjhh
NGU2ZDlkYjY5YTljNmU1MmMzMzZjN2QzYzRkNDc5ZWRhLi40YmM1OTk1ZTIwMzRjNDg1OTM0MTQ1
MGNmYTFiMjJiOGQ3Yjc0NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9QYWdlUG9wdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L1BhZ2VQb3B1cC5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRl
ICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIkpT
UmV0YWluUHRyLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1
ZGUgIlBhZ2VQb3B1cENsaWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViUGFnZS5oIgpAQCAtNjksNyArNjksNyBAQCB2b2lkIFBhZ2VQb3B1cDo6d3JpdGVEb2N1bWVu
dChEb2N1bWVudFdyaXRlciogd3JpdGVyKQogewogICAgIEFTU0VSVCh3cml0ZXIpOwogICAgIHdy
aXRlci0+c2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAgIHdyaXRlci0+YmVnaW4oS1VSTCgp
KTsKKyAgICB3cml0ZXItPmJlZ2luKFVSTCgpKTsKIAogICAgIC8vIEFsbCB0aGUgcG9wdXBzIGhh
dmUgdGhlIHNhbWUgaHRtbCBoZWFkIGFuZCB0aGUgcGFnZSBjb250ZW50IHNob3VsZCBiZSBub24t
em9vbWFibGUuCiAgICAgU3RyaW5nQnVpbGRlciBzb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCAwODY3MzJh
MWQ4MzQ2Y2VlOGZmZjIwZDQzNTI5YTE0ZTVjNWVmOTFjLi4xNTY0ZjcxODNhNjcxYmM3NzIzNmMw
NTdlM2MyMzA3MzVmYmNjMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlBvcHVwTWVudUVmbC5oIgpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgQ2hy
b21lQ2xpZW50RWZsOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0
JiBoaXQsIHVuc2lnbmVkCiAgICAgLy8gRklYTUUsIGNvbXBhcmUgd2l0aCBvbGQgbGluaywgbG9v
ayBhdCBRdCBpbXBsLgogICAgIGJvb2wgaXNMaW5rID0gaGl0LmlzTGl2ZUxpbmsoKTsKICAgICBp
ZiAoaXNMaW5rKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwor
ICAgICAgICBVUkwgdXJsID0gaGl0LmFic29sdXRlTGlua1VSTCgpOwogICAgICAgICBpZiAoIXVy
bC5pc0VtcHR5KCkgJiYgdXJsICE9IG1faG92ZXJlZExpbmtVUkwpIHsKICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGxpbmtbMl07CiAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcjsKQEAgLTM3
Niw3ICszNzYsNyBAQCB2b2lkIENocm9tZUNsaWVudEVmbDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0LCB1bnNpZ25lZAogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmICghaXNMaW5rICYmICFtX2hvdmVyZWRMaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAg
ICBld2tfdmlld19tb3VzZV9saW5rX2hvdmVyX291dChtX3ZpZXcpOwotICAgICAgICBtX2hvdmVy
ZWRMaW5rVVJMID0gS1VSTCgpOworICAgICAgICBtX2hvdmVyZWRMaW5rVVJMID0gVVJMKCk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEVmbC5oCmluZGV4IDZlZGJlMzdiZGE2M2FmYWRmZGU0NGNjNmQxMWViZmY5Y2FlYWMw
Y2IuLjg0YTMxOWZkZTc3MTY2NjQwNmVkZjM1YzRiNWNkODBkM2QyNjY4MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5oCkBAIC0y
NSw3ICsyNSw3IEBACiAjZGVmaW5lIENocm9tZUNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVk
ZSAiUG9wdXBNZW51LmgiCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKQEAgLTE4OCw3
ICsxODgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Ci0g
ICAgS1VSTCBtX2hvdmVyZWRMaW5rVVJMOworICAgIFVSTCBtX2hvdmVyZWRMaW5rVVJMOwogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVu
RWxlbWVudDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRFZmwuY3BwCmluZGV4IGNkZWEzZTQ5MGMwZDIyODE4
MTRhYTkzODFhOGYwZmI2ZDJiYTIyYzYuLjk0YmU2Yzc1NGFlMzczZDFjNzExODUzYTdlZTUxMzkx
M2I3NDE5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nv
bnRleHRNZW51Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Db250ZXh0TWVudUNsaWVudEVmbC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkNvbnRleHRNZW51LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBDb250
ZXh0TWVudUNsaWVudEVmbDo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVt
KiwgY29uc3QgQ29udGUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIENvbnRleHRN
ZW51Q2xpZW50RWZsOjpkb3dubG9hZFVSTChjb25zdCBLVVJMJikKK3ZvaWQgQ29udGV4dE1lbnVD
bGllbnRFZmw6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRl
eHRNZW51Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEVmbC5oCmluZGV4IDcwODM3N2ZjMGJmODc4ZjE0YWExNWM0MGE1MDQ4NDdl
MzJhZjI0OTMuLjViZWYyOTYzZjlmMWFmNmE5ZjIwNmU4NDQ0MDI2ZGM2YmY1YTU4MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50
RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVD
bGllbnRFZmwuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPENvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8Q29udGV4dE1lbnU+KTsK
ICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVt
KiwgY29uc3QgQ29udGV4dE1lbnUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChj
b25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpOwog
ICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmco
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IGRjMGMyNDMzNTBlOTYyNjM5ODNlZGQz
NDZmMzBmYTA2ZmMxMmY3NDEuLjllYTUxZDJiZmZlZGM0ZTQxYWMzZGE2OWY0ZTU3ZTFiMGMyM2I3
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMjIxLDEzICsyMjEsMTMgQEAgU3Ry
aW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c3VpdGFibGVEUlRGcmFtZU5hbWUoY29uc3Qg
RXZhc19PYmplY3QqIGV3a0ZyYW0KICAgICByZXR1cm4gU3RyaW5nKCJmcmFtZSAoYW5vbnltb3Vz
KSIpOwogfQogCi1jb25zdCBXZWJDb3JlOjpLVVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQorY29uc3QgV2ViQ29y
ZTo6VVJMIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cHJvdmlzaW9uYWxVUkwoY29uc3QgRXZh
c19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIERSVF9TVVBQT1JUX0ZSQU1FX0dFVF9PUl9SRVRV
Uk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpLVVJMKCkpOworICAgIERSVF9TVVBQT1JUX0ZS
QU1FX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIGZyYW1lLCBXZWJDb3JlOjpVUkwoKSk7CiAKICAg
ICBXZWJDb3JlOjpEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciA9IGZy
YW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFwcm92
aXNpb25hbERvY3VtZW50TG9hZGVyKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6S1VSTCgpOwor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6VVJMKCk7CiAKICAgICByZXR1cm4gcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlci0+dXJsKCk7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTY3JpcHQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IFMKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclNjcmlwdFRvV29ybGQoV2ViQ29y
ZTo6bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNvdXJjZUNvZGUsIFdlYkNvcmU6OktVUkwoKSwK
KyAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKFdlYkNvcmU6Om1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJp
bmc+KCksIHJ1bkF0U3RhcnQgPyBXZWJDb3JlOjpJbmplY3RBdERvY3VtZW50U3RhcnQgOiBXZWJD
b3JlOjpJbmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0SW5BbGxGcmFtZXMgOiBXZWJDb3Jl
OjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OmFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb24KIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBwYWdlKTsKIAotICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
KFdlYkNvcmU6Om1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpL
VVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZlY3RvcjxTdHJpbmc+KCksIGFsbEZyYW1lcyA/IFdl
YkNvcmU6OkluamVjdEluQWxsRnJhbWVzIDogV2ViQ29yZTo6SW5qZWN0SW5Ub3BGcmFtZU9ubHkp
OworICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKFdlYkNvcmU6Om1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBXZWJDb3JlOjpVUkwoKSwgVmVjdG9y
PFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gV2ViQ29yZTo6SW5qZWN0
SW5BbGxGcmFtZXMgOiBXZWJDb3JlOjpJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKIHZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpjbGVhclVzZXJTdHlsZVNoZWV0cyhjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggY2VmNzZkY2RmZDhh
ODk5ZTZjYWU0ZjVjMGYyN2EwZWNiNDFiMjhjNi4uNThjZDQ4M2UxN2ZlYzc2NWFmYmFjZjA5YThh
OTYyZjFkMzA1OGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTIyLDcgKzIyLDcgQEAK
ICNpZm5kZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsX2gKICNkZWZpbmUgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNp
bmNsdWRlIDxFaW5hLmg+CiAjaW5jbHVkZSA8RmluZE9wdGlvbnMuaD4KICNpbmNsdWRlIDxJbnRS
ZWN0Lmg+CkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHJlc3Bv
bnNlTWltZVR5cGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKICAgICBzdGF0aWMgV2Vi
Q29yZTo6SW50UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUoY29uc3QgRXZhc19PYmplY3QqIGV3a0Zy
YW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIHN1aXRhYmxlRFJURnJhbWVOYW1lKGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSk7Ci0gICAgc3RhdGljIGNvbnN0IFdlYkNvcmU6OktVUkwgcHJvdmlz
aW9uYWxVUkwoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsKKyAgICBzdGF0aWMgY29uc3Qg
V2ViQ29yZTo6VVJMIHByb3Zpc2lvbmFsVVJMKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7
CiAgICAgc3RhdGljIFN0cmluZyBsYXllclRyZWVBc1RleHQoY29uc3QgRXZhc19PYmplY3QqIGV3
a0ZyYW1lKTsKICAgICBzdGF0aWMgdm9pZCBzZXRWYWx1ZUZvclVzZXIoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmIG5vZGVPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyB2
b2lkIHNldERlZmVyc0xvYWRpbmcoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZGVmZXJzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50RWZsLmNwcAppbmRleCA5MTEzMjIxMzM4YmU0MzY2NGI0YmZmMWM0MGRkODM0YjNk
NjBkMjk1Li43NzdiMjMwMTI0MzQxNDY2MWQ3Zjk4NGZiOTRiNzlmNTVlMmY2YTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIGNvbnN0IFN0cmluZyYgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OmN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY3VzdG9tVXNl
ckFnZW50OwogfQogCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnVzZXJBZ2VudChjb25z
dCBLVVJMJikKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudEVmbDo6dXNlckFnZW50KGNvbnN0IFVS
TCYpCiB7CiAgICAgaWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBtX2N1c3RvbVVzZXJBZ2VudDsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciogbG9h
ZGVyLCB1bnNpZwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
cmVzb3VyY2UscmVxdWVzdCx3aWxsc2VuZCIsICZtZXNzYWdlcyk7CiAKICAgICBpZiAocmVxdWVz
dC51cmwgIT0gb3JpZy51cmwpIHsKLSAgICAgICAgY29yZVJlcXVlc3Quc2V0VVJMKEtVUkwoS1VS
TCgpLCByZXF1ZXN0LnVybCkpOworICAgICAgICBjb3JlUmVxdWVzdC5zZXRVUkwoVVJMKFVSTCgp
LCByZXF1ZXN0LnVybCkpOwogCiAgICAgICAgIC8vIENhbGxpbmcgY2xpZW50IG1pZ2h0IGhhdmUg
Y2hhbmdlZCBvdXIgdXJsIHBvaW50ZXIuCiAgICAgICAgIC8vIEZyZWUgdGhlIG5ldyBhbGxvY2F0
ZWQgc3RyaW5nLgpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1CiAg
ICAgY2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBwb2xpY3kpOwogfQogCi1QYXNzUmVmUHRy
PFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRFZmw6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXpl
JiBwbHVnaW5TaXplLCBIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkK
K1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlUGx1Z2luKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2Fk
TWFudWFsbHkpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAgIEFTU0VSVChtX3ZpZXcpOwpA
QCAtMzY2LDcgKzM2Niw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudEVm
bDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiB9CiAKLVBhc3NS
ZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywg
aW50IC8qbWFyZ2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCitQYXNzUmVmUHRyPEZy
YW1lPiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgLyphbGxvd3NTY3JvbGxpbmcqLywgaW50IC8qbWFy
Z2luV2lkdGgqLywgaW50IC8qbWFyZ2luSGVpZ2h0Ki8pCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUp
OwogICAgIEFTU0VSVChtX3ZpZXcpOwpAQCAtNDA2LDE0ICs0MDYsMTQgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6cmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KiBwbHVnaW5XaWRnZXQp
CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSBmYWxzZTsKIH0KIAotUGFzc1Jl
ZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmLAorUGFzc1Jl
ZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFVSTCYsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qcGFyYW1OYW1lcyovLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgLypwYXJhbVZhbHVlcyovKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpvYmplY3RD
b250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
c2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9h
ZGVyQ2xpZW50RWZsOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAg
IC8vIEZJWE1FOiBvbmNlIHBsdWdpbiBzdXBwb3J0IGlzIGVuYWJsZWQsIHRoaXMgbWV0aG9kIG5l
ZWRzIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlICdzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2Vz
JyBmbGFnLiBTZWUKICAgICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVjdENv
bnRlbnRUeXBlKCkgZm9yIGFuIGV4YW1wbGUuCkBAIC01NzUsMTIgKzU3NSwxMiBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50RWZsOjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBld2tf
ZnJhbWVfbWl4ZWRfY29udGVudF9kaXNwbGF5ZWRfc2V0KG1fZnJhbWUsIHRydWUpOwogfQogCi12
b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bklu
c2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgZXdrX2Zy
YW1lX21peGVkX2NvbnRlbnRfcnVuX3NldChtX2ZyYW1lLCB0cnVlKTsKIH0KIAotdm9pZCBGcmFt
ZUxvYWRlckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmIGluc2VjdXJlVVJMLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERl
dGVjdFhTUyhjb25zdCBVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkK
IHsKICAgICBDU3RyaW5nIGNzID0gaW5zZWN1cmVVUkwuc3RyaW5nKCkudXRmOCgpOwogICAgIEV3
a19GcmFtZV9Yc3NfTm90aWZpY2F0aW9uIHhzc0luZm8gPSB7IGNzLmRhdGEoKSwgZGlkQmxvY2tF
bnRpcmVQYWdlIH07CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVm
bDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiAgICAgZXdrX2ZyYW1lX3JlZGly
ZWN0X2NhbmNlbGxlZChtX2ZyYW1lKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91Ymxl
LCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaXNwYXRjaFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSwgZG91YmxlKQogewogICAgIGV3
a19mcmFtZV9yZWRpcmVjdF9yZXF1ZXN0ZWQobV9mcmFtZSwgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogfQpAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OnByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKQogewogICAgIC8v
IG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJh
Y2sKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IDIyNzEyOTQ4NzhiOTcxNDdlNjVjOTFiNzNhM2ZjMTE2
OGZhZTY4NGMuLjg0NzA3YmUxMzY3M2Q3MjEyZTZjNjk5YTAyYTFlOTc5NzFmNzMxODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRFZmwuaApAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6
IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
SGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmLCBkb3VibGUsIGRvdWJsZSk7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBVUkwmLCBkb3VibGUsIGRvdWJsZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENs
b3NlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKQEAgLTEy
OCwxMyArMTI4LDEzIEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDogcHVibGljIEZyYW1l
TG9hZGVyQ2xpZW50IHsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzRXN0aW1hdGVDaGFu
Z2VkTm90aWZpY2F0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCosCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCk7CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBj
b25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1M
UGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mLCBj
b25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdpZGdldCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCk7Ci0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwg
SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OlZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcyk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFdURjo6VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1l
ZGlhVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFi
bGUoKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50RWZsIDog
cHVibGljIEZyYW1lTG9hZGVyQ2xpZW50IHsKIAogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZv
ckljb25Ob3RpZmljYXRpb24oYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBl
IG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogCkBAIC0xNTksOCArMTU5LDgg
QEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQg
ewogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBj
b25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSopIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpOworICAgIHZp
cnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBh
Z2UpOwogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xODcsOSArMTg3LDkgQEAgY2xhc3MgRnJhbWVM
b2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdU
Rjo6UGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
dGl0bGUsIGNvbnN0IFVSTCYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IEtVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1l
KENhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAppbmRleCA0OWFhMzU3MWJjZDA4NjNj
NDAzZDgxYWM5MTk2MGMxODU3MjQzNjM0Li42YmU0NDc4ZDA5M2IxNjk0ZjIwY2ZmYjMzZWYxYTE2
NWQ1MzIzZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKQEAgLTg3LDMyICs4NywzMiBAQCBTdG9y
YWdlU3RyYXRlZ3kqIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y3JlYXRlU3RvcmFnZVN0cmF0ZWd5
KCkKIH0KIAogLy8gQ29va2llc1N0cmF0ZWd5Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZs
Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFBsdWdpbkluZm8oY29uc3QgUGFn
ZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0UGwKIH0KIAogLy8gVmlzaXRlZExpbmtTdHJhdGVn
eQotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBo
YXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdl
LT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCmluZGV4IDc0
NzBjMmNhNmRiM2FjZDRmYmFjYmQ5NmMxYzllNjAxOGQwMmFhYzkuLjMxYmFlYzI2MzcyYjg1NGUz
MDg2OTIyNTAxZDk2ZTNiZDIwNzkwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCkBAIC00OCwxMiArNDgs
MTIgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kq
IGNyZWF0ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAg
ICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBh
Z2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNvcmU6OlZp
c2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3Jl
OjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkws
IGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgYm9v
bCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRl
VVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdl
YkNvcmU6OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5k
ZXggZmZhNzI4OWNlMTVkZGEyOTUxZjU3NDc0Y2UyMGIzODhiZDNhMWVhOC4uMjIzZTA2OGI1MWJh
YWY1N2Q4OTc4OGEzNzg5NWFmMTk5MGY1Njk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oIgpAQCAtMzM2LDcgKzMzNiw3IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJh
bWVfY2hpbGRfZmluZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IGNoYXIqIG5hbWUpCiBF
aW5hX0Jvb2wgZXdrX2ZyYW1lX3VyaV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBj
aGFyKiB1cmkpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNt
YXJ0RGF0YSwgZmFsc2UpOwotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJDb3JlOjpLVVJMKCks
IFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmkpKTsKKyAgICBXZWJDb3JlOjpVUkwga3VybChXZWJD
b3JlOjpVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXEoa3VybCk7CiAgICAgc21hcnREYXRhLT5mcmFtZS0+bG9hZGVyKCku
bG9hZChXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0KHNtYXJ0RGF0YS0+ZnJhbWUsIHJlcSkpOwog
CkBAIC00MDIsMTIgKzQwMiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfZnJhbWVfY29udGVu
dHNfc2V0X2ludGVybmFsKEV3a19GcmFtZV9TbWFydF9EYXRhKiBzbWFydERhdAogICAgIGlmICgh
YmFzZVVyaSkKICAgICAgICAgYmFzZVVyaSA9ICJhYm91dDpibGFuayI7CiAKLSAgICBXZWJDb3Jl
OjpLVVJMIGJhc2VLVVJMKFdlYkNvcmU6OktVUkwoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGJh
c2VVcmkpKTsKLSAgICBXZWJDb3JlOjpLVVJMIHVucmVhY2hhYmxlS1VSTDsKKyAgICBXZWJDb3Jl
OjpVUkwgYmFzZUtVUkwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOChiYXNl
VXJpKSk7CisgICAgV2ViQ29yZTo6VVJMIHVucmVhY2hhYmxlS1VSTDsKICAgICBpZiAodW5yZWFj
aGFibGVVcmkpCi0gICAgICAgIHVucmVhY2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoV2ViQ29y
ZTo6S1VSTCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKKyAgICAg
ICAgdW5yZWFjaGFibGVLVVJMID0gV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodW5yZWFjaGFibGVVcmkpKTsKICAgICBlbHNlCi0gICAgICAgIHVucmVh
Y2hhYmxlS1VSTCA9IFdlYkNvcmU6OktVUkwoKTsKKyAgICAgICAgdW5yZWFjaGFibGVLVVJMID0g
V2ViQ29yZTo6VVJMKCk7CiAKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRzLCBjb250ZW50
c1NpemUpOwogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhCkBAIC0x
NjkwLDcgKzE2OTAsNyBAQCBFd2tfQ2VydGlmaWNhdGVfU3RhdHVzIGV3a19mcmFtZV9jZXJ0aWZp
Y2F0ZV9zdGF0dXNfZ2V0KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogICAgIGNvbnN0IFdlYkNv
cmU6OkZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmxvYWRlcigp
OwogICAgIGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZy
YW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCk7Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCBkb2N1
bWVudFVSTCA9IGRvY3VtZW50TG9hZGVyLT5yZXF1ZXN0VVJMKCk7CisgICAgY29uc3QgV2ViQ29y
ZTo6VVJMIGRvY3VtZW50VVJMID0gZG9jdW1lbnRMb2FkZXItPnJlcXVlc3RVUkwoKTsKIAogICAg
IGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJcygiaHR0cHMiKSkKICAgICAgICAgcmV0dXJuIEVX
S19DRVJUSUZJQ0FURV9TVEFUVVNfTk9fQ0VSVElGSUNBVEU7CkBAIC0xNzYzLDcgKzE3NjMsNyBA
QCB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogICoK
ICAqIENyZWF0ZXMgcGx1Z2luLgogICovCi1XVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBl
bGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkK
K1dURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGV3a19mcmFtZV9wbHVnaW5fY3JlYXRl
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6
ZSwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCiAgICAgREJHKCJld2tGcmFtZT0lcCwgc2l6ZT0lZHglZCwgZWxlbWVudD0lcCwg
dXJsPSVzLCBtaW1lVHlwZT0lcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJp
dmF0ZS5oCmluZGV4IGExNDQ2ZGZlZTY0NmM1Y2MyZDFjZjUwMGZjN2ZjNDUwNDQ0NmI2ZjIuLjdk
NDE3NjZlOTlhMzgxZTNlMDMzYWQ5ZTdmM2EzMjBiMGU4ODIwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oCkBAIC0zMiw3ICszMiw3IEBAIGNsYXNzIEZyYW1l
TG9hZGVyQ2xpZW50RWZsOwogY2xhc3MgSGlzdG9yeUl0ZW07CiBjbGFzcyBIVE1MUGx1Z0luRWxl
bWVudDsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKLWNsYXNzIEtVUkw7CitjbGFzcyBV
Ukw7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBXaWRnZXQ7CkBAIC03Niw3
ICs3Niw3IEBAIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lKTsK
IHZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09iamVjdCogZXdrRnJhbWUpOwogCi1X
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShF
dmFzX09iamVjdCogZXdrRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUs
IFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBld2tfZnJhbWVfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrRnJhbWUsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4m
IHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVh
bGx5KTsKIAogdm9pZCBld2tfZnJhbWVfZWRpdG9yX2NsaWVudF9jb250ZW50c19jaGFuZ2VkKEV2
YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9lZGl0b3JfY2xpZW50X3NlbGVj
dGlvbl9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3NlY3VyaXR5X3BvbGljeS5jcHAKaW5kZXggZGQzYmE5ZmE5ZWM4MmJiYmY3MDNm
OTU1NTRmNGQ4NzhhYTNjOGYzZC4uOWU0ZDVhNTY3ZTRjMWU3ODlkYTg1ODZhMDg4ZmVkNjY2YTA5
NzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZWN1cml0eV9wb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2VjdXJpdHlfcG9saWN5LmNw
cApAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImV3a19z
ZWN1cml0eV9wb2xpY3kuaCIKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5Lmgi
CiAKQEAgLTI5LDcgKzI5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB2b2lkIGV3a19z
ZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0X29yaWdpbl9hZGQoY29uc3QgY2hhciogc291cmNlVXJs
LCBjb25zdCBjaGFyKiBkZXN0aW5hdGlvblVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykK
IHsKICAgICBjb25zdCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5h
dGlvbihLVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24o
VVJMKCksIGRlc3RpbmF0aW9uVXJsKTsKIAogICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSgqc291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0
aW5hdGlvbi5ob3N0KCksIGFsbG93U3ViZG9tYWlucyk7CiB9CkBAIC0zNyw3ICszNyw3IEBAIHZv
aWQgZXdrX3NlY3VyaXR5X3BvbGljeV93aGl0ZWxpc3Rfb3JpZ2luX2FkZChjb25zdCBjaGFyKiBz
b3VyY2VVcmwsIGNvbnN0IGNoYXIqCiB2b2lkIGV3a19zZWN1cml0eV9wb2xpY3lfd2hpdGVsaXN0
X29yaWdpbl9kZWwoY29uc3QgY2hhciogc291cmNlVXJsLCBjb25zdCBjaGFyKiBkZXN0aW5hdGlv
blVybCwgRWluYV9Cb29sIGFsbG93U3ViZG9tYWlucykKIHsKICAgICBjb25zdCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHNvdXJjZSA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNv
dXJjZVVybCk7Ci0gICAgY29uc3QgS1VSTCBkZXN0aW5hdGlvbihLVVJMKCksIGRlc3RpbmF0aW9u
VXJsKTsKKyAgICBjb25zdCBVUkwgZGVzdGluYXRpb24oVVJMKCksIGRlc3RpbmF0aW9uVXJsKTsK
IAogICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgq
c291cmNlLCBkZXN0aW5hdGlvbi5wcm90b2NvbCgpLCBkZXN0aW5hdGlvbi5ob3N0KCksIGFsbG93
U3ViZG9tYWlucyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Nl
dHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCmluZGV4
IDRhYjBhZTc3MDE3MTY0NDRkMjFiNWJmNjA3M2RlMTFiZGU3ZjEwZjkuLmQ1ZDMxNjUzZWMzNGE5
OGZiZmEyNjE5ZmI2NTA5NTg1MWUyZjgyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiS1VSTC5o
IgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvY2FsRmlsZVN5c3RlbS5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZUNhY2hlLmgiCkBAIC0xMzUsNyArMTM1
LDcgQEAgdm9pZCBld2tfc2V0dGluZ3NfbG9jYWxfc3RvcmFnZV9kYXRhYmFzZV9vcmlnaW5fY2xl
YXIoY29uc3QgY2hhciogdXJsKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHVy
bCk7CiAKLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6
OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgY29uc3QgV2ViQ29yZTo6VVJMIGt1cmwoV2Vi
Q29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBXZWJDb3JlOjpT
dG9yYWdlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGt1cmwpLmdldCgpKTsKIH0KIApAQCAtMjE0LDcgKzIxNCw3IEBAIGNhaXJv
X3N1cmZhY2VfdCogZXdrX3NldHRpbmdzX2ljb25fZGF0YWJhc2VfaWNvbl9zdXJmYWNlX2dldChj
b25zdCBjaGFyKiB1cmwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHVy
bCwgMCk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VSTCgpLCBXVEY6OlN0
cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJM
KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBpY29uID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hyb25vdXNOYXRpdmVJY29u
Rm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXplKDE2LCAxNikpOwogICAg
IGlmICghaWNvbikKICAgICAgICAgRVJSKCJubyBpY29uIGZvciB1cmwgJXMiLCB1cmwpOwpAQCAt
MjI3LDcgKzIyNyw3IEBAIEV2YXNfT2JqZWN0KiBld2tfc2V0dGluZ3NfaWNvbl9kYXRhYmFzZV9p
Y29uX29iamVjdF9nZXQoY29uc3QgY2hhciogdXJsLCBFdmFzKiBjCiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHVybCwgMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGNhbnZhcywgMCk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6S1VS
TCgpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgodXJsKSk7CisgICAgV2ViQ29yZTo6VVJMIGt1cmwo
V2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh1cmwpKTsKICAgICBSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PiBzdXJmYWNlID0gV2ViQ29yZTo6aWNvbkRhdGFiYXNlKCkuc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChrdXJsLnN0cmluZygpLCBXZWJDb3JlOjpJbnRTaXpl
KDE2LCAxNikpOwogCiAgICAgaWYgKCFzdXJmYWNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAppbmRleCBlMTBiNzliNTY5YzcwOTMyZTQ1ZDhjYzZmZjQ5ZGNkNTEzMjc4NDE1Li4xMDM4
NmRkOTNlNWVhMDI2MmUzYjQwYmJkZGFlYWJiYTQxYjBhZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKQEAgLTY3MCw3ICs2NzAsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQog
ICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IG5ldyBFd2tfVmlld19Qcml2YXRlX0Rh
dGE7CiAgICAgbWVtc2V0KHByaXYsIDAsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsK
ICAgICBBdG9taWNTdHJpbmcgc3RyaW5nOwotICAgIFdlYkNvcmU6OktVUkwgdXJsOworICAgIFdl
YkNvcmU6OlVSTCB1cmw7CiAKICAgICBXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xp
ZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CkBAIC0xNzI4LDcgKzE3MjgsNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfdmlzaXRlZF9saW5rX2FkZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogdmlzaXRlZFVybAogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2
LT5wYWdlLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHByaXYt
PnBhZ2UtPmdyb3VwUHRyKCksIGZhbHNlKTsKIAotICAgIFdlYkNvcmU6OktVUkwga3VybChXZWJD
b3JlOjpLVVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2aXNpdGVkVXJsKSk7CisgICAgV2Vi
Q29yZTo6VVJMIGt1cmwoV2ViQ29yZTo6VVJMKCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOCh2aXNp
dGVkVXJsKSk7CiAgICAgcHJpdi0+cGFnZS0+Z3JvdXBQdHIoKS0+YWRkVmlzaXRlZExpbmsoa3Vy
bCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfc2V0dGluZ191c2VyX3N0eWxlc2hlZXRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBjaGFyKgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgcHJpdiwgZmFsc2UpOwogICAgIGlmIChlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJnByaXYt
PnNldHRpbmdzLnVzZXJTdHlsZXNoZWV0LCB1cmkpKSB7Ci0gICAgICAgIFdlYkNvcmU6OktVUkwg
a3VybChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSk7CisgICAgICAgIFdl
YkNvcmU6OlVSTCBrdXJsKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpOwog
ICAgICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oa3Vy
bCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMzY2Miw3ICszNjYyLDcgQEAgdm9pZCBl
d2tfdmlld19mcmFtZV9yZWN0X2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgX2V3
a192aWV3X3NtYXJ0X2NoYW5nZWQoc21hcnREYXRhKTsKIH0KIAotV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBld2tfdmlld19wbHVnaW5fY3JlYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFdmFz
X09iamVjdCogZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIFdlYkNv
cmU6OkhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIERCRygiZXdrVmlldz0lcCwgZnJhbWU9JXAs
IHNpemU9JWR4JWQsIGVsZW1lbnQ9JXAsIHVybD0lcywgbWltZVR5cGU9JXMiLAogICAgICAgICBl
d2tWaWV3LCBmcmFtZSwgcGx1Z2luU2l6ZS53aWR0aCgpLCBwbHVnaW5TaXplLmhlaWdodCgpLCBl
bGVtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3ByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggMzEz
ZWY3YzkwMjAwZDllN2NhZjFkOTVkZWNhYWIzZmMwN2RkOGJlMS4uNDQ1YzFkZGFlMmM2MzNhMGYx
YzIyMTA2MzQwYTA4YmU0N2RhYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdf
cHJpdmF0ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgV2ViQ29yZTo6UGFnZSogZXdrX3ZpZXdfY29y
ZV9wYWdlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldyk7CiAKIHZvaWQgZXdrX3ZpZXdf
ZnJhbWVfcmVjdF9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIAotV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCog
ZXdrVmlldywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVn
aW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMs
IGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOworV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gZXdrX3ZpZXdfcGx1Z2luX2NyZWF0ZShFdmFzX09iamVjdCogZXdrVmll
dywgRXZhc19PYmplY3QqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBwbHVnaW5TaXpl
LCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxlbWVudCwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
V1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgV1RGOjpTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSk7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKIHZvaWQgZXdrX3ZpZXdfY29sb3JfY2hvb3Nlcl9uZXcoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIFdlYkNvcmU6OkNvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJDb3JlOjpD
b2xvciYgaW5pdGlhbENvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL05FV1Mg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9ORVdTCmluZGV4IGVmM2YzMTQxYjFkM2ZkZGNmY2FiODQ4MGJl
YTMyNDI5ZDRjM2NhNzQuLjJmY2NmODI3ZDVmNzc0ZmNhOTI5MGMyNjM2ZDMxODk1NTc2NGNmNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL05FV1MKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvTkVXUwpAQCAtMzQ0LDcgKzM0NCw3IEBAIFdoYXQncyBuZXcgaW4gV2ViS2l0R1RLKyAxLjku
Mz8KICAgLSBGaXggY3Vyc29yIHVzZWQgZm9yIG5lLXJlc2l6ZS4KICAgLSBGaXggY29udHJhY3Rp
b25zIHJlY29nbml0aW9uIGJ5IHRoZSBzcGVsbCBjaGVja2VyLgogICAtIEZpeCBhIGNyYXNoIHJl
bmRlcmluZyBzY3JvbGxiYXJzIG9uIEdUSyB3eFdlYmtpdC4KLSAgLSBGaXggS1VSTDo6ZmlsZVN5
c3RlbVBhdGgoKSBpbXBsZW1lbnRhdGlvbiB0byBzdHJpcCB0aGUgcXVlcnkgcGFydAorICAtIEZp
eCBVUkw6OmZpbGVTeXN0ZW1QYXRoKCkgaW1wbGVtZW50YXRpb24gdG8gc3RyaXAgdGhlIHF1ZXJ5
IHBhcnQKICAgICBvZiB0aGUgdXJpLgogICAtIENoZWNrIGZvciBHVEsyL0dUSzMgc3ltYm9sIG1p
c21hdGNoIGVhcmxpZXIgdG8gZml4IHBsdWdpbnMgcnVuCiAgICAgd2l0aCBuc3BsdWdpbndyYXBw
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVD
bGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAppbmRleCBkMzE1MTcwZWI5NTNkZjIwZDMxZGY1YWUzNmM0MTJkMGM2NzNiOWE1
Li5mNjliNDZiYjE4OGY2YzZhNjk2YjliYTRlZTYxYTIyODYxN2NkY2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKQEAg
LTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJJY29uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSAiUmVmUHRy
Q2Fpcm8uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1lbnVHdGsuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxF
bGVtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
d2Via2l0ZmlsZWNob29zZXJyZXF1ZXN0cHJpdmF0ZS5oIgpAQCAtNzk5LDcgKzc5OSw3IEBAIHZv
aWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVz
dWx0JiBoaXQsIHVuc2lnbmVkIG1vCiAgICAgLy8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgYSBs
aW5rLi4uCiAgICAgYm9vbCBpc0xpbmsgPSBoaXQuaXNMaXZlTGluaygpOwogICAgIGlmIChpc0xp
bmspIHsKLSAgICAgICAgS1VSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CisgICAgICAg
IFVSTCB1cmwgPSBoaXQuYWJzb2x1dGVMaW5rVVJMKCk7CiAgICAgICAgIGlmICghdXJsLmlzRW1w
dHkoKSAmJiB1cmwgIT0gbV9ob3ZlcmVkTGlua1VSTCkgewogICAgICAgICAgICAgVGV4dERpcmVj
dGlvbiBkaXI7CiAgICAgICAgICAgICBDU3RyaW5nIHRpdGxlU3RyaW5nID0gaGl0LnRpdGxlKGRp
cikudXRmOCgpOwpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXQsIHVuc2lnbmVkIG1vCiAg
ICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFpc0xpbmsgJiYgIW1faG92ZXJlZExpbmtVUkwuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJob3Zl
cmluZy1vdmVyLWxpbmsiLCAwLCAwKTsKLSAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IEtVUkwo
KTsKKyAgICAgICAgbV9ob3ZlcmVkTGlua1VSTCA9IFVSTCgpOwogICAgIH0KIAogICAgIGlmIChO
b2RlKiBub2RlID0gaGl0LmlubmVyTm9uU2hhcmVkTm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCmluZGV4IGQxYjBhNTll
ODI3NWJlYWZlN2FkNTE4MDM5NzFlZDhjYjM4OWQzZjQuLjJhNGE3ZWJlYjI4NWVjZTBiMWMzMjkw
NDNlYTRkNDg3ZDdjYjI0MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5oCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiR3Rr
QWRqdXN0bWVudFdhdGNoZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQ
b3B1cE1lbnUuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTZWFyY2hQb3B1cE1l
bnUuaCIKQEAgLTE2Nyw3ICsxNjcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7CiAgICAgICAgIEd0a0FkanVzdG1l
bnRXYXRjaGVyIG1fYWRqdXN0bWVudFdhdGNoZXI7Ci0gICAgICAgIEtVUkwgbV9ob3ZlcmVkTGlu
a1VSTDsKKyAgICAgICAgVVJMIG1faG92ZXJlZExpbmtVUkw7CiAgICAgICAgIHVuc2lnbmVkIGlu
dCBtX2Nsb3NlU29vblRpbWVyOwogCiAgICAgICAgIFRpbWVyIDxDaHJvbWVDbGllbnQ+IG1fZGlz
cGxheVRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q29udGV4dE1lbnVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ29udGV4dE1lbnVDbGllbnRHdGsuY3BwCmluZGV4IDQxNzBmNzdmZjUyYjE3MTk1MGE1MWNm
MTU1NmIxYzk5MjFiN2ZlMjkuLjllYjc1ZGUwMzFiOWI5NDhiZDBiMDk2MDhhZTZlOGY1NWNmZjY0
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
b250ZXh0TWVudUNsaWVudEd0ay5jcHAKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJDb250
ZXh0TWVudS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
bGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSosIGNvbnN0IENv
bnRleHRNCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUNsaWVu
dDo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBDb250ZXh0TWVudUNsaWVudDo6
ZG93bmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0TmV0d29ya1JlcXVlc3Qq
IG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXcodXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRHdGsuaAppbmRleCBkNjc3NGI1ODNjNmY4OTg5NWNk
NGY3ZWRmZGNhYTI5YWM2ZmJkNDYyLi40NTZiODE5MmExYmRkZDhiM2FhZTM2YjUzNWUwYjMwYmIw
NTc4OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0NvbnRleHRNZW51Q2xpZW50R3RrLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UGxhdGZvcm1NZW51RGVzY3JpcHRpb24gZ2V0
Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjb3B5SW1hZ2VUb0NsaXBib2FyZChjb25zdCBXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdl
YkNvcmU6OkZyYW1lKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnko
V2ViQ29yZTo6RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGRkZWQ4YzQ2
N2ZmZDllNjljMDhjMGU1MWE5OGRlMTE1Y2JhZDNlOTYuLjAzNmU2MTkyNGYwZjI1YjZiYWUwOTY3
Mzc1ZTJkOTFjNTgyZGFiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMTkyLDcg
KzE5Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjphZGRVc2VyU2NyaXB0KFdl
YktpdFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgY2hhcioKIAogICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKGZyYW1lKTsKICAgICBQYWdlKiBwYWdlID0gY29yZSh3
ZWJWaWV3KTsKLSAgICBwYWdlLT5ncm91cCgpLmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBLVVJMKCksIFZlY3RvcjxTdHJpbmc+KCksIFZl
Y3RvcjxTdHJpbmc+KCksCisgICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZCht
YWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc291cmNlQ29kZSwgVVJMKCksIFZlY3RvcjxTdHJpbmc+
KCksIFZlY3RvcjxTdHJpbmc+KCksCiAgICAgICAgIHJ1bkF0U3RhcnQgPyBJbmplY3RBdERvY3Vt
ZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBhbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZy
YW1lcyA6IEluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIApAQCAtMjEyLDcgKzIxMiw3IEBAIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjphZGRVc2VyU3R5bGVTaGVldChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIGNvbnN0IGNoCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gZ2V0
Vmlld0Zyb21GcmFtZShmcmFtZSk7CiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7Ci0g
ICAgcGFnZS0+Z3JvdXAoKS5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQobWFpblRocmVhZE5vcm1h
bFdvcmxkKCksIHNvdXJjZUNvZGUsIEtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgYWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJblRvcEZyYW1l
T25seSk7IAorICAgIHBhZ2UtPmdyb3VwKCkuYWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpLCBzb3VyY2VDb2RlLCBVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgYWxsRnJhbWVzID8gSW5qZWN0SW5BbGxGcmFtZXMgOiBJbmplY3RJ
blRvcEZyYW1lT25seSk7IAogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCAxZDg4M2Vi
MGE4Mzk3NDkzNmU1YzY5MDJiNzdjODVkZDBkNjljMGMyLi4xYjNhNTI0Mjk3NzE2NDljODFiNDI4
YzEzN2U1MjMzMDgyYjA2NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0xMjEsNyArMTIxLDcg
QEAgRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCiB9CiAKIAotU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIEZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRW
aWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsKICAgICBHT3duUHRyPGdjaGFyPiB1c2VyQWdlbnRTdHJp
bmcod2Via2l0V2ViU2V0dGluZ3NVc2VyQWdlbnRGb3JVUkkoc2V0dGluZ3MsIHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwKICAgICAvLyBGZWVkIGFueSBjaGFuZ2VzIGJhY2sgaW50byB0aGUgUmVzb3VyY2VSZXF1
ZXN0IG9iamVjdC4KICAgICBTb3VwTWVzc2FnZSogbWVzc2FnZSA9IHdlYmtpdF9uZXR3b3JrX3Jl
cXVlc3RfZ2V0X21lc3NhZ2UobmV0d29ya1JlcXVlc3QuZ2V0KCkpOwogICAgIGlmICghbWVzc2Fn
ZSkgewotICAgICAgICByZXF1ZXN0LnNldFVSTChLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRG
OCh3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkobmV0d29ya1JlcXVlc3QuZ2V0KCkpKSkp
OworICAgICAgICByZXF1ZXN0LnNldFVSTChVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgod2Vi
a2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKG5ldHdvcmtSZXF1ZXN0LmdldCgpKSkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBv
bGljeUZ1bmN0CiAgICAgICAgIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX3VzZShtX3BvbGlj
eURlY2lzaW9uKTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MUGx1Z0lu
RWxlbWVudCogZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIC8qIENoZWNrIGlmIHdlIHdh
bnQgdG8gZW1iZWQgYSBHdGtXaWRnZXQsIGZhbGxiYWNrIHRvIHBsdWdpbnMgbGF0ZXIgKi8KICAg
ICBDU3RyaW5nIHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS51dGY4KCk7CkBAIC01MTcsNyArNTE3
LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4o
Y29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFQKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCwKK1Bhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIEFTU0VSVChtX2ZyYW1lKTsKQEAg
LTU1OSwxMiArNTU5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRv
UGx1Z2luID0gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1M
QXBwbGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykK
K1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVu
dCwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQogewogICAgIHJldHVybiBGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKHBsdWdpblNpemUsIGVsZW1lbnQsIGJhc2VVUkwsIHBh
cmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNl
KTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91
bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJD
bGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgcmV0dXJu
IEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC02NzQsMTIgKzY3NCwxMiBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNfZnJhbWVMb2FkRXZlbnRDYWxsYmFjayhtX2ZyYW1lLCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OkRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQsIDApOwog
fQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qIGNvcmVPcmlnaW4sIGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29yZU9yaWdpbiwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fZnJhbWUsICJp
bnNlY3VyZS1jb250ZW50LXJ1biIsIGtpdChjb3JlT3JpZ2luKSwgdXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29u
c3QgVVJMJiwgYm9vbCkKIHsKICAgICBpZiAoIUR1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZHVt
cFJlbmRlclRyZWVNb2RlRW5hYmxlZCgpIHx8ICFEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNf
ZnJhbWVMb2FkRXZlbnRDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwpAQCAtNzMyLDcgKzczMiw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3QoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c19mcmFtZUxvYWRFdmVudENhbGxi
YWNrKG1fZnJhbWUsIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6RGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3QsIDApOwogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBVUkwmIHVybCwgZG91YmxlLCBkb3VibGUpCiB7CiAgICAgaWYgKCFEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmR1bXBSZW5kZXJUcmVlTW9kZUVuYWJsZWQoKSB8fCAhRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzX2ZyYW1lTG9hZEV2ZW50Q2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKQEAg
LTk3Myw3ICs5NzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpwcmVwYXJlRm9yRGF0YVNv
dXJjZVJlcGxhY2VtZW50KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwg
Y29uc3QgS1VSTCYgdXJsKQordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYktp
dFdlYkZyYW1lUHJpdmF0ZSogZnJhbWVEYXRhID0gbV9mcmFtZS0+cHJpdjsKICAgICBnX2ZyZWUo
ZnJhbWVEYXRhLT50aXRsZSk7CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
IGxvYWRlcgogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF91cmkod2ViUmVzb3VyY2UpOwotICAgIFJlZlB0cjxBcmNoaXZlUmVz
b3VyY2U+IGNvcmVSZXNvdXJjZShsb2FkZXItPnN1YnJlc291cmNlKEtVUkwoS1VSTCgpLCB1cmkp
KSk7CisgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZVJlc291cmNlKGxvYWRlci0+c3Vi
cmVzb3VyY2UoVVJMKFVSTCgpLCB1cmkpKSk7CiAKICAgICAvLyBJZiBjb3JlUmVzb3VyY2UgaXMg
TlVMTCBoZXJlLCB0aGUgcmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQsCiAgICAgLy8gdW5sZXNzIGl0
J3MgdGhlIG1haW4gcmVzb3VyY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBjNzgyOTJmYjVhNzVlZGI1
Zjg5NWI3MzBmYTZhNTYwNzlmYzYxZDc5Li43YjgyZTEyNWE4OGQzOTcxMTRjNTk3OTQ2Yjg0NTdj
YTE5Yzg4Njk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAgLTc3LDcgKzc3LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50
cygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlLCBkb3Vi
bGUpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSwgZG91YmxlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CkBAIC0xMTUsMTIgKzEx
NSwxMiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9n
cmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKTsKIAotICAgICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwm
IHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCogb3duZXJFbGVtZW50LAorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0
cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCk7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNy
ZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVs
ZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJp
bmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBib29sKTsKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Ym9vbCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRn
ZXQqKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNv
cmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBi
YXNlVVJMLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0
IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOworICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAg
ICAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2Vi
Q29yZTo6RE9NV3JhcHBlcldvcmxkKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVs
ZW1lbnRBdmFpbGFibGUoKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wp
OwogCi0gICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29u
dGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKKyAgICAgICAgdmlydHVhbCBX
ZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3Jl
OjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1
Z0luc0ZvckltYWdlcyk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3Vt
ZW50UmVhZHkoYm9vbCk7CiAKQEAgLTE0Niw4ICsxNDYsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
ICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpV
UkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpV
UkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTc0LDkgKzE3NCw5IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFT
b3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYgdGl0bGUsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAotICAgICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2Vu
dChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNl
ckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzYXZl
UGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNv
cmU6OkNhY2hlZEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAppbmRleCBmOWVkNWFkMGQ5OWNm
NzY5Y2JjMGI3YzRlMDU5MjkwZDAyZDQzMjY5Li5jNmQxYTBiYTA0NzA4M2U2Nzg1NmFlOWNhYjE1
YTMyZDhkYjMwYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKQEAgLTgxLDMyICs4MSwzMiBAQCBW
aXNpdGVkTGlua1N0cmF0ZWd5KiBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNyZWF0ZVZpc2l0ZWRM
aW5rU3RyYXRlZ3koKQogfQogCiAvLyBDb29raWVzU3RyYXRlZ3kKLVN0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29v
a2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVz
R3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9v
bCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNH
dGs6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UGx1Z2luSW5m
byhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mCiB9CiAKIC8vIFZpc2l0ZWRM
aW5rU3RyYXRlZ3kKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjppc0xpbmtWaXNpdGVkKFBh
Z2UqIHBhZ2UsIExpbmtIYXNoIGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcm
KQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwg
TGlua0hhc2ggaGFzaCwgY29uc3QgVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICBy
ZXR1cm4gcGFnZS0+Z3JvdXAoKS5pc0xpbmtWaXNpdGVkKGhhc2gpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsu
aAppbmRleCBiNWYwNzYyZTUyNDEzMzE3MjcxOWYxYWI4ZWVjZDQ4N2IwODFjMzQ2Li43Zjk4Mjg1
YTVkYWZhMmE4NjI1MDZmNDZjZDRkY2M2YTY5OTViZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaApAQCAt
NDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTYyLDcg
KzYyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBX
ZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBX
ZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hh
c2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsv
Z2RvbS9Db252ZXJ0VG9HQ2hhclByaXZhdGUuaAppbmRleCAyYzMyZjJjOWE0OWZjMTYwZDNmY2I2
NjllY2VlODEzYzk0MTdhMTI1Li4zN2I5NzZmNzU1YjNlNTY1MzdkMmViM2FiM2M3MzkzZDMyYjY3
MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9nZG9tL0NvbnZlcnRUb0dDaGFyUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL2dkb20vQ29udmVydFRvR0NoYXJQcml2YXRl
LmgKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgQ29udmVydFRvR0NoYXJQcml2YXRlX2gKICNk
ZWZpbmUgQ29udmVydFRvR0NoYXJQcml2YXRlX2gKIAotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC0zMCw3ICszMCw3IEBAIGlubGluZSBnY2hhciogY29weUFzR2NoYXIoV1RGOjpTdHJpbmcgY29u
c3QmIHMpCiAgICAgcmV0dXJuIGdfc3RyZHVwKHMudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWlubGlu
ZSBnY2hhciogY29weUFzR2NoYXIoV2ViQ29yZTo6S1VSTCBjb25zdCYgcykKK2lubGluZSBnY2hh
ciogY29weUFzR2NoYXIoV2ViQ29yZTo6VVJMIGNvbnN0JiBzKQogewogICAgIHJldHVybiBjb3B5
QXNHY2hhcihzLnN0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRkb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
ZG93bmxvYWQuY3BwCmluZGV4IGQyZDU1OTdhNWIyODkzNDAzYmM5MmM2MGZkZjYwMDM1MDMyMWM3
ZjUuLmM3NDhjNjU4MWNmMzdmMTI2ZDEwN2ViY2U2MjQ4ZTMxMDJhNmEzMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGRvd25sb2FkLmNwcApAQCAtNjM1LDcgKzYzNSw3IEBA
IGNvbnN0IGdjaGFyKiB3ZWJraXRfZG93bmxvYWRfZ2V0X3N1Z2dlc3RlZF9maWxlbmFtZShXZWJL
aXREb3dubG9hZCogZG93bmxvYWQpCiAgICAgaWYgKHByaXYtPnN1Z2dlc3RlZEZpbGVuYW1lKQog
ICAgICAgICByZXR1cm4gcHJpdi0+c3VnZ2VzdGVkRmlsZW5hbWU7CiAKLSAgICBLVVJMIHVybCA9
IEtVUkwoS1VSTCgpLCB3ZWJraXRfbmV0d29ya19yZXF1ZXN0X2dldF91cmkocHJpdi0+bmV0d29y
a1JlcXVlc3QpKTsKKyAgICBVUkwgdXJsID0gVVJMKFVSTCgpLCB3ZWJraXRfbmV0d29ya19yZXF1
ZXN0X2dldF91cmkocHJpdi0+bmV0d29ya1JlcXVlc3QpKTsKICAgICB1cmwuc2V0UXVlcnkoU3Ry
aW5nKCkpOwogICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKICAgICBwcml2LT5z
dWdnZXN0ZWRGaWxlbmFtZSA9IGdfc3RyZHVwKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwu
bGFzdFBhdGhDb21wb25lbnQoKSkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0aGl0dGVzdHJlc3VsdC5jcHAKaW5kZXggNzk0Mzc5ZTE2ZTllY2Jh
M2VkODAxNDA3NjgwMzRhMDZlMTM3OWRhMy4uY2I0MWVkZDdmN2IxZWE5MjZjNDUzYzhiOWZhYzhj
ZGM5OGEwY2Y2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGhp
dHRlc3RyZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRoaXR0
ZXN0cmVzdWx0LmNwcApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUg
IktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0
ZS5oIgogI2luY2x1ZGUgIndlYmtpdGVudW10eXBlcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2Jh
bHMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3Jr
cmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3JlcXVl
c3QuY3BwCmluZGV4IDQ5OTZkZDk4MTExNzYyZTljYzU0YTU0ZGIyYmQ5Y2VmNWIwYjE1ZmEuLjM2
ZTI4YTAwYTU4ZTYwZTdiZjE1YTU3ZmVjZjUxNjJmMWRiOTRmYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0LmNwcApAQCAtMjY2LDcgKzI2
Niw3IEBAIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBjb3JlKFdlYktpdE5ldHdvcmtSZXF1ZXN0
KiByZXF1ZXN0KQogICAgIGlmIChzb3VwTWVzc2FnZSkKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdChzb3VwTWVzc2FnZSk7CiAKLSAgICBXZWJDb3JlOjpLVVJMIHVybCA9
IFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF9u
ZXR3b3JrX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSkpOworICAgIFdlYkNvcmU6OlVSTCB1cmwg
PSBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgod2Via2l0X25l
dHdvcmtfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKSk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCh1cmwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViZGF0YXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2ViZGF0YXNvdXJjZS5jcHAKaW5kZXggMDc5MjJiMDlmMDc3NmU3MmQxOGQ1YjVkZDZh
MDVjZjcyMjI1MWE3Zi4uZDI3MjViZmNhNGE0NWFhMDM2M2E1MzRmN2Y0YTFlNmJmMzU1NGM4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJkYXRhc291cmNlLmNw
cApAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyR3RrLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEd0ay5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgpAQCAtMTc1LDcgKzE3NSw3IEBAIFdlYktpdFdlYkRhdGFTb3VyY2UqIHdlYmtpdF93
ZWJfZGF0YV9zb3VyY2VfbmV3X3dpdGhfcmVxdWVzdChXZWJLaXROZXR3b3JrUmVxdWVzCiAKICAg
ICBjb25zdCBnY2hhciogdXJpID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfdXJpKHJlcXVl
c3QpOwogCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QoS1VSTChLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpKTsKKyAgICBSZXNvdXJjZVJl
cXVlc3QgcmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCksIFN0cmluZzo6
ZnJvbVVURjgodXJpKSkpKTsKICAgICBXZWJLaXRXZWJEYXRhU291cmNlKiBkYXRhc291cmNlID0g
a2l0TmV3KFdlYktpdDo6RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3QsIFN1
YnN0aXR1dGVEYXRhKCkpKTsKIAogICAgIFdlYktpdFdlYkRhdGFTb3VyY2VQcml2YXRlKiBwcml2
ID0gZGF0YXNvdXJjZS0+cHJpdjsKQEAgLTM5Niw3ICszOTYsNyBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3dlYl9kYXRhX3NvdXJjZV9nZXRfdW5yZWFjaGFibGVfdXJpKFdlYktpdFdlYkRhdGFTb3Vy
Y2UqIHdlYgogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfREFUQV9TT1VS
Q0Uod2ViRGF0YVNvdXJjZSksIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViRGF0YVNvdXJjZVByaXZh
dGUqIHByaXYgPSB3ZWJEYXRhU291cmNlLT5wcml2OwotICAgIGNvbnN0IEtVUkwmIHVucmVhY2hh
YmxlVVJMID0gcHJpdi0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgpOworICAgIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwgPSBwcml2LT5sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICBp
ZiAodW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IGViYmM0ODM4NzY2
NzYzMjE0MjBlNjVlNTk2NGYwYzc4NDQwNmQ4NWUuLjY0ODRiYzlkZWY4NjZiNTQ3MjE3Nzc1N2E3
NTRhODg4MDViYjQzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZy
YW1lLmNwcApAQCAtNjc3LDcgKzY3Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sb2FkX3Vy
aShXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiB1cmkpCiAgICAgaWYgKCFjb3Jl
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KGNvcmVGcmFtZSwgUmVzb3VyY2VSZXF1ZXN0KEtVUkwoS1VSTCgpLCBT
dHJpbmc6OmZyb21VVEY4KHVyaSkpKSkpOworICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkubG9hZChG
cmFtZUxvYWRSZXF1ZXN0KGNvcmVGcmFtZSwgUmVzb3VyY2VSZXF1ZXN0KFVSTChVUkwoKSwgU3Ry
aW5nOjpmcm9tVVRGOCh1cmkpKSkpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFt
ZV9sb2FkX2RhdGEoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogY29udGVudCwg
Y29uc3QgZ2NoYXIqIG1pbWVUeXBlLCBjb25zdCBnY2hhciogZW5jb2RpbmcsIGNvbnN0IGdjaGFy
KiBiYXNlVVJMLCBjb25zdCBnY2hhciogdW5yZWFjaGFibGVVUkwpCkBAIC02ODUsNyArNjg1LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9sb2FkX2RhdGEoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBnY2hhciogY29udGUKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShm
cmFtZSk7CiAgICAgQVNTRVJUKGNvcmVGcmFtZSk7CiAKLSAgICBLVVJMIGJhc2VLVVJMID0gYmFz
ZVVSTCA/IEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkwpKSA6IGJsYW5rVVJM
KCk7CisgICAgVVJMIGJhc2VLVVJMID0gYmFzZVVSTCA/IFVSTChVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOChiYXNlVVJMKSkgOiBibGFua1VSTCgpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoYmFzZUtVUkwpOwogCkBAIC02OTMsOCArNjkzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl9mcmFtZV9sb2FkX2RhdGEoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBnY2hhciogY29u
dGUKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShzaGFyZWRCdWZmZXIucmVsZWFz
ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlID8gU3RyaW5n
Ojpmcm9tVVRGOChtaW1lVHlwZSkgOiBTdHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA/IFN0cmluZzo6ZnJvbVVU
RjgoZW5jb2RpbmcpIDogU3RyaW5nOjpmcm9tVVRGOCgiVVRGLTgiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBLVVJMKEtVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNo
YWJsZVVSTCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtVUkwoS1VSTCgp
LCBTdHJpbmc6OmZyb21VVEY4KHVucmVhY2hhYmxlVVJMKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOCh1bnJlYWNoYWJsZVVS
TCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVSTChVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOCh1bnJlYWNoYWJsZVVSTCkpKTsKIAogICAgIGNvcmVGcmFtZS0+bG9hZGVyKCku
bG9hZChGcmFtZUxvYWRSZXF1ZXN0KGNvcmVGcmFtZSwgcmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0
b3J5aXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0
ZW0uY3BwCmluZGV4IDViN2RiMjIyMzU0OWUzNmE4YjQwYmI1MTk5MDM4Yzg4YmE0ZGY3NTUuLjJm
MjUwOTIxNDIwMzM1ZGYyN2I1MTAxMWM4ZDg5MjJmOGM0ZGU1NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcApAQCAtMjIsNyArMjIs
NyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYmhpc3RvcnlpdGVtLmgiCiAKICNpbmNsdWRlICJIaXN0
b3J5SXRlbS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRl
ICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmhpc3RvcnlpdGVt
cHJpdmF0ZS5oIgogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTI5OCw3ICsyOTgsNyBAQCBXZWJLaXRX
ZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfZGF0YShjb25z
dCBnY2hhciogdXJpLCBjbwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRl
bSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
SElTVE9SWV9JVEVNLCBOVUxMKSk7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBw
cml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAKLSAgICBXZWJDb3JlOjpLVVJMIGhpc3RvcnlV
cmkoV2ViQ29yZTo6S1VSTCgpLCB1cmkpOworICAgIFdlYkNvcmU6OlVSTCBoaXN0b3J5VXJpKFdl
YkNvcmU6OlVSTCgpLCB1cmkpOwogICAgIFdURjo6U3RyaW5nIGhpc3RvcnlUaXRsZSA9IFdURjo6
U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSk7CiAgICAgUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVt
PiBpdGVtID0gV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNyZWF0ZShoaXN0b3J5VXJpLCBoaXN0b3J5
VGl0bGUsIDApOwogICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbS5yZWxlYXNlKCkubGVha1Jl
ZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAK
aW5kZXggNmZhYzM3YmY2Y2UzYzQ4MTY3YTdkY2ExNDhhYTNkODYwMzZjNjFmNS4uNDVmODc4MmFl
MTUyMzA5NzM1YzcxNzk0ODNmNWY1YjMwODFjMzc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2VicmVzb3VyY2UuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVk
ZSAid2Via2l0d2VicmVzb3VyY2UuaCIKIAogI2luY2x1ZGUgIkFyY2hpdmVSZXNvdXJjZS5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlICJ3ZWJraXRlbnVtdHlwZXMuaCIKICNpbmNsdWRlICJ3ZWJraXRnbG9i
YWxzcHJpdmF0ZS5oIgpAQCAtMzU3LDcgKzM1Nyw3IEBAIFdlYktpdFdlYlJlc291cmNlKiB3ZWJr
aXRfd2ViX3Jlc291cmNlX25ldyhjb25zdCBnY2hhciogZGF0YSwKICAgICAgICAgc2l6ZSA9IHN0
cmxlbihkYXRhKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwotICAgIFdlYktpdFdlYlJlc291cmNlKiB3ZWJSZXNv
dXJjZSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfbmV3X3dpdGhfY29yZV9yZXNvdXJjZShBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZShidWZmZXIsIEtVUkwoS1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVy
aSkpLCBTdHJpbmc6OmZyb21VVEY4KG1pbWVUeXBlKSwgU3RyaW5nOjpmcm9tVVRGOChlbmNvZGlu
ZyksIFN0cmluZzo6ZnJvbVVURjgoZnJhbWVOYW1lKSkpOworICAgIFdlYktpdFdlYlJlc291cmNl
KiB3ZWJSZXNvdXJjZSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfbmV3X3dpdGhfY29yZV9yZXNvdXJj
ZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShidWZmZXIsIFVSTChVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOCh1cmkpKSwgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIFN0cmluZzo6ZnJvbVVURjgo
ZW5jb2RpbmcpLCBTdHJpbmc6OmZyb21VVEY4KGZyYW1lTmFtZSkpKTsKIAogICAgIHJldHVybiB3
ZWJSZXNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwCmluZGV4IDIyY2U2YmIzNjM3Y2UwMGFmYmNkYmEwYmE0MjY1YTI0NzVjYTdlYWQu
LmFlZWEzZjM2YTAwYjQ2Zjc0YjA1MTYzZWQwNmYzZTc5ZjdhYTYxODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMjgsNyArMjgsNyBA
QAogCiAjaW5jbHVkZSAiRWRpdGluZ0JlaGF2aW9yLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQbHVnaW5E
YXRhYmFzZS5oIgogI2luY2x1ZGUgIlVzZXJBZ2VudEd0ay5oIgogI2luY2x1ZGUgIndlYmtpdGVu
dW10eXBlcy5oIgpAQCAtMTU5Nyw3ICsxNTk3LDcgQEAgc3RhdGljIGJvb2wgaXNHb29nbGVEb21h
aW4oU3RyaW5nIGhvc3QpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgU3RyaW5nIHVz
ZXJBZ2VudEZvclVSTChjb25zdCBLVVJMJiB1cmwpCitzdGF0aWMgU3RyaW5nIHVzZXJBZ2VudEZv
clVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBGb3IgR29vZ2xlIGRvbWFpbnMsIGRyb3Ag
dGhlIGJyb3dzZXIncyBjdXN0b20gVXNlciBBZ2VudCBzdHJpbmcsIGFuZCB1c2UgdGhlCiAgICAg
Ly8gc3RhbmRhcmQgQ2hyb21lIG9uZSwgc28gdGhleSBkb24ndCBnaXZlIHVzIGEgYnJva2VuIGV4
cGVyaWVuY2UuCkBAIC0xNjM1LDcgKzE2MzUsNyBAQCBzdGF0aWMgU3RyaW5nIHVzZXJBZ2VudEZv
clVSTChjb25zdCBLVVJMJiB1cmwpCiBjaGFyKiB3ZWJraXRXZWJTZXR0aW5nc1VzZXJBZ2VudEZv
clVSSShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIGNvbnN0IGNoYXIqIHVyaSkKIHsK
ICAgICBpZiAod2ViU2V0dGluZ3MtPnByaXYtPmVuYWJsZVNpdGVTcGVjaWZpY1F1aXJrcykgewot
ICAgICAgICBTdHJpbmcgdXNlckFnZW50U3RyaW5nID0gdXNlckFnZW50Rm9yVVJMKFdlYkNvcmU6
OktVUkwoV2ViQ29yZTo6S1VSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHVyaSkpKTsKKyAgICAgICAg
U3RyaW5nIHVzZXJBZ2VudFN0cmluZyA9IHVzZXJBZ2VudEZvclVSTChXZWJDb3JlOjpVUkwoV2Vi
Q29yZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgodXJpKSkpOwogICAgICAgICBpZiAoIXVzZXJB
Z2VudFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZ19zdHJkdXAodXNlckFn
ZW50U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlZWEzNDNkMzY3MTQxMzk5NzM4ZjVjNGM4OTFkMmYx
NjlhOWE0MWJmLi41ODBhOWYyYjMxZmE0MTY3MDlhYmY3ZGJlMjFjZWNhYTdkMjUzNDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNTM5LDcgKzM1
MzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgY29yZVNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoc2V0
dGluZ3NQcml2YXRlLT5lbmFibGVTY3JpcHRzKTsKICAgICBjb3JlU2V0dGluZ3Muc2V0UGx1Z2lu
c0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVQbHVnaW5zKTsKICAgICBjb3JlU2V0dGlu
Z3Muc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHNldHRpbmdzUHJpdmF0ZS0+cmVzaXphYmxlVGV4
dEFyZWFzKTsKLSAgICBjb3JlU2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihLVVJM
KEtVUkwoKSwgc2V0dGluZ3NQcml2YXRlLT51c2VyU3R5bGVzaGVldFVSSS5kYXRhKCkpKTsKKyAg
ICBjb3JlU2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihVUkwoVVJMKCksIHNldHRp
bmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRVUkkuZGF0YSgpKSk7CiAgICAgY29yZVNldHRpbmdz
LnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVEZXZlbG9w
ZXJFeHRyYXMpOwogICAgIGNvcmVTZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHNl
dHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nKTsKICAgICBjb3JlU2V0dGluZ3Mu
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVDYXJldEJyb3dz
aW5nKTsKQEAgLTM2NjcsNyArMzY2Nyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19z
ZXR0aW5nc19ub3RpZnkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzLCBHUGFyCiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoInJlc2l6YWJsZS10ZXh0LWFyZWFzIikp
CiAgICAgICAgIHNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShnX3ZhbHVlX2dldF9i
b29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJ1
c2VyLXN0eWxlc2hlZXQtdXJpIikpCi0gICAgICAgIHNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oS1VSTChLVVJMKCksIGdfdmFsdWVfZ2V0X3N0cmluZygmdmFsdWUpKSk7CisgICAg
ICAgIHNldHRpbmdzLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBnX3ZhbHVl
X2dldF9zdHJpbmcoJnZhbHVlKSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3Ry
aW5nKCJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIpKQogICAgICAgICBzZXR0aW5ncy5zZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1wcml2YXRlLWJyb3dzaW5nIikp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBjY2Vi
YTBiNmIyMGI2OGNjMTNhZTMzNWVkZmU3MmJkMWNiMmI4NTg2Li44MjJhZGFhMmM3NThjOGJmNzcx
MTRhOWYwNzU3NWVjOThjMGE2NDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2Vi
SGlzdG9yeUl0ZW0ubW0KQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
SW1hZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxv
b3AuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhyZWFkQ2hlY2suaD4KQEAgLTUzNSw3ICs1MzUsNyBA
QCAtICh2b2lkKXNldEFsd2F5c0F0dGVtcHRUb1VzZVBhZ2VDYWNoZTooQk9PTClmbGFnCiAtIChO
U1VSTCAqKVVSTAogewogICAgIEFTU0VSVF9NQUlOX1RIUkVBRCgpOwotICAgIGNvbnN0IEtVUkwm
IHVybCA9IGNvcmUoX3ByaXZhdGUpLT51cmwoKTsKKyAgICBjb25zdCBVUkwmIHVybCA9IGNvcmUo
X3ByaXZhdGUpLT51cmwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICByZXR1cm4gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRy
YXMubW0KaW5kZXggMGViM2VhMzBmZGE4YjQwYTM0MWNiMzhjN2M3MzNmZjFiNDdmNDdhMS4uMDc3
MTAxNTBmNDUzOWNiMDBlNmI5Y2E5ZWFhNzUxYTA1ZjA4ZjQwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJXZWJO
U0RhdGFFeHRyYXMuaCIKICNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9hZGVyTlNVUkxFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTEyNyw5ICsxMjcsOSBAQCAtIChOU1VSTCAqKV93ZWJr
aXRfY2Fub25pY2FsaXplCiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KICAgICAKLSAgICAv
LyBUaGlzIGFwcGxpZXMgTlNVUkwncyBjb25jZXB0IG9mIGNhbm9uaWNhbGl6YXRpb24sIGJ1dCBu
b3QgS1VSTCdzIGNvbmNlcHQuIEl0IHdvdWxkCisgICAgLy8gVGhpcyBhcHBsaWVzIE5TVVJMJ3Mg
Y29uY2VwdCBvZiBjYW5vbmljYWxpemF0aW9uLCBidXQgbm90IFVSTCdzIGNvbmNlcHQuIEl0IHdv
dWxkCiAgICAgLy8gbWFrZSBzZW5zZSB0byBhcHBseSBib3RoLCBidXQgd2hlbiB3ZSB0cmllZCB0
aGF0IGl0IGNhdXNlZCBhIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uCi0gICAgLy8gKHNlZSA1MzE1
OTI2KS4gSXQgbWlnaHQgbWFrZSBzZW5zZSB0byBhcHBseSBvbmx5IHRoZSBLVVJMIGNvbmNlcHQg
YW5kIG5vdCB0aGUgTlNVUkwKKyAgICAvLyAoc2VlIDUzMTU5MjYpLiBJdCBtaWdodCBtYWtlIHNl
bnNlIHRvIGFwcGx5IG9ubHkgdGhlIFVSTCBjb25jZXB0IGFuZCBub3QgdGhlIE5TVVJMCiAgICAg
Ly8gY29uY2VwdCwgYnV0IGl0J3MgdG9vIHJpc2t5IHRvIG1ha2UgdGhhdCBjaGFuZ2UgZm9yIFdl
YktpdCAzLjAuCiAgICAgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW2NvbmNyZXRlQ2xhc3Mg
Y2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6cmVxdWVzdF07CiAgICAgTlNVUkwgKm5ld1VSTCA9
IFtuZXdSZXF1ZXN0IFVSTF07IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5tbQppbmRleCA4ODNmMmU2YWVjZjE1ODYyMDQzOGQ5YTNmM2Zh
M2JkMWJhMjhhOGE4Li5lOWVkNWNiZWIyOTVkMDZkYWFkOTY5NTcyMmEzNGYzZWVlNTU2NjhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5tbQpAQCAtMjQsNyArMjQsNyBAQAogCiAjaW1wb3J0ICJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCIKIAotI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggY2Y5ZWM3
YmU5ZjNiNmVlMzEzNTk4NTI3ZTY4ZTJmNzk2NmNjYzcyOS4uYWI0NzI5OWMzNjkyNzA4Y2NkNzNl
MjQ1MWRlMGRkMzM4ZGIzYTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAt
NTMsNyArNTMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUHJveHlTZXJ2ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IDVkYjg0
NTc0MDc3YTkzM2MyZGYyZmQzYWJiNmJlY2NiYmYzYWJjYTAuLjc0MjQ4YTcwOThhOTg3ODg1YzU3
NjMwNWE1OWE3OWQwY2RhNzU1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTg0Nyw3ICs4NDcsNyBAQCAt
IChDU3RyaW5nKXJlc29sdmVkVVJMU3RyaW5nRm9yVVJMOihjb25zdCBjaGFyKil1cmwgdGFyZ2V0
Oihjb25zdCBjaGFyKil0YXJnZXQKICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3ModGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCkpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogICAKLSAgICBLVVJMIGFic29sdXRl
VVJMID0gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMU3Ry
aW5nKTsKKyAgICBVUkwgYWJzb2x1dGVVUkwgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwocmVsYXRpdmVVUkxTdHJpbmcpOwogICAgIHJldHVybiBhYnNvbHV0ZVVSTC5zdHJp
bmcoKS51dGY4KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2Vi
TmV0c2NhcGVQbHVnaW5TdHJlYW0uaAppbmRleCAyMGJlZWUyNDBlZThkZDExMjFlMTRiYWJjNmY2
MmQxNjMwZmQ5Mzc5Li42OGEyOTM2MDFmNGZkOGI2ODJlNWUxNWE3ZDFkYWVkNGU2MmM2Y2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0
cmVhbS5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsTG9hZEFu
ZERlc3Ryb3lTdHJlYW1XaXRoRXJyb3IoTlNFcnJvciAqKTsKIAotICAgIHZvaWQgc2V0UmVxdWVz
dFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiByZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJl
cXVlc3RVUkw7IH0KKyAgICB2b2lkIHNldFJlcXVlc3RVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXF1ZXN0VVJMKSB7IG1fcmVxdWVzdFVSTCA9IHJlcXVlc3RVUkw7IH0KIAogICAgIHZvaWQgc3Rh
cnQoKTsKICAgICB2b2lkIHN0b3AoKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgd2FudHNBbGxTdHJlYW1zKCkgY29uc3Q7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGF0YT4gbV9kZWxpdmVyeURhdGE7Ci0gICAgV2ViQ29yZTo6S1VSTCBtX3JlcXVlc3RVUkw7Cisg
ICAgV2ViQ29yZTo6VVJMIG1fcmVxdWVzdFVSTDsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fcmVz
cG9uc2VVUkw7CiAgICAgQ1N0cmluZyBtX21pbWVUeXBlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAppbmRleCBl
NTM2ZjNjMjRiZTg3Zjc2YzJiYTkzOGNjNzkwNjk0OGJkODFmMmRmLi4wMTUzYTIzOWJiY2I4YTA2
MmM4YjUyMmRjNzFhMGE2YTlmNTcwMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgTlNNdXRhYmxlQXJyYXkqIGdldEN1c3RvbU1lbnVGcm9t
RGVmYXVsdEl0ZW1zKFdlYkNvcmU6OkNvbnRleHRNZW51KikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbSos
IGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51KikgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZy
YW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0KaW5kZXggYzRjYzZjNjAyYjQxOGJlMWNjNzMxNmJmNGJjMTVhZGVmOTQy
ZDkzOS4uYjgzMmU4ODIzNjY5ZWI5ODRjMjQ0Yzk1Y2QzMmMxOWFiOWRjODJhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW0KQEAgLTQzLDcgKzQzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgpAQCAtMzEyLDcg
KzMxMiw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmNvbnRleHRNZW51SXRlbVNlbGVj
dGVkKENvbnRleHRNZW51SXRlbSogaXRlbSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFttX3dl
YlZpZXcgX2Rvd25sb2FkVVJMOnVybF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBhZmZmMzA2M2Ji
ZjViOGYxZTMwZGQyOWMyYTM2NDBkOTAxYzdhZWEyLi40MjlmMjVkZTIyMDNiZjIzNWI0MWI0NjBj
NjVmNTg4YjdkYzgxZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRvdWJs
ZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRv
dWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpIE9WRVJS
SURFOwpAQCAtMTUyLDggKzE1Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkg
T1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7CkBAIC0xOTEsMjYgKzE5
MSwyNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJl
cGxhY2VtZW50KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXVEY6
OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgs
IGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
Y3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBs
dWdpbldpZGdldCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNl
VVJMLAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFB
cHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRF
bGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBP
VkVSUklERTsKICAgICAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVNZWRpYVBsYXllclByb3h5
UGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFdURjo6U3RyaW5n
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVNZWRpYVBsYXllclByb3h5UGx1Z2lu
KFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzaG93TWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSBPVkVSUklERTsKICNlbmRpZgogICAg
IAotICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5
cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9v
bCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6
OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRl
TWVkaWFUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCop
IE9WRVJSSURFOwpAQCAtMjMxLDcgKzIzMSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2lu
Z0NvbnRleHQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKIAogICAgIFJldGFpblB0cjxX
ZWJGcmFtZT4gbV93ZWJGcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCAyMjBiNGQ4ODRlNzA0
NmZjYWE1YjBiOTRiYmU5YTBkYWUwYjhmZTJkLi5hZmFiZjIwNGI0MGEwYWZmZTFjYTlhZTZkYzJh
MTc3NjNhNjhkMzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtNDEzLDcgKzQxMyw3IEBAIGJvb2wg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoRG9jdW1lbnRMb2FkZXIqCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJMJiBpbWFnZVVSTCkgY29uc3QKK2Jv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgVVJM
JiBpbWFnZVVSTCkgY29uc3QKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyht
X3dlYkZyYW1lLmdldCgpKTsKICAgICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpb25zKHdlYlZpZXcpOwpAQCAtNTMwLDcgKzUzMCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkQ2FuY2VsQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZTopLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAotdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IEtVUkwmIHVybCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUpCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJM
JiB1cmwsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYkZyYW1lTG9hZERl
bGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwpAQCAtOTkyLDcgKzk5Miw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KQogICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50OikpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYg
aW5zZWN1cmVVUkwpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgVVJMJiBpbnNlY3VyZVVSTCkKIHsK
ICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAK
ICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0
aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3
KTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1
bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLCiAgICAgfQog
fQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYg
aW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYgaW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxv
Y2tFbnRpcmVQYWdlKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2Vi
RnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25zKHdlYlZpZXcpOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgUGFzc1JlZlB0cjxEb2N1
bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc28KICAgICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUs
IGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBX
ZWJWaWV3KiB2aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICAKQEAgLTEz
MjAsNyArMTMyMCw3IEBAIFJldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2V0VXBQb2xpY3lMaXN0ZW5lcihGcmFtCiAgICAgcmV0dXJuIG1fcG9s
aWN5TGlzdGVuZXI7CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50
KGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1f
d2ViRnJhbWUuZ2V0KCkpOwogICAgIEFTU0VSVCh3ZWJWaWV3KTsKQEAgLTEzMjgsNyArMTMyOCw3
IEBAIFN0cmluZyBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVy
bCkKICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgd2l0aCBuaWwgZm9yIHRoZSBXZWJW
aWV3IHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBzb21ld2hlcmUgZWxzZS4KICAgICAvLyBCdXQgaWYg
d2UgZG8sIGl0J3MgYmV0dGVyIHRvIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIHRoYW4ganVzdCBj
cmFzaGluZyBvbiB0aGUgc3BvdC4KICAgICAvLyBNb3N0IG90aGVyIGNhbGwgc2l0ZXMgYXJlIHRv
bGVyYW50IG9mIG5pbCBiZWNhdXNlIG9mIE9iamVjdGl2ZS1DIGJlaGF2aW9yLCBidXQgdGhpcyBv
bmUKLSAgICAvLyBpcyBub3QgYmVjYXVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIF91c2VyQWdlbnRG
b3JVUkwgaXMgYSBjb25zdCBLVVJMJi4KKyAgICAvLyBpcyBub3QgYmVjYXVzZSB0aGUgcmV0dXJu
IHZhbHVlIG9mIF91c2VyQWdlbnRGb3JVUkwgaXMgYSBjb25zdCBVUkwmLgogICAgIGlmICghd2Vi
VmlldykKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTEzODksNyArMTM4OSw3
IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0CiAgICAg
cmV0dXJuIFtbW21fd2ViRnJhbWUuZ2V0KCkgX2RhdGFTb3VyY2VdIHJlcHJlc2VudGF0aW9uXSBp
c0tpbmRPZkNsYXNzOltXZWJIVE1MUmVwcmVzZW50YXRpb24gY2xhc3NdXTsKIH0KIAotUGFzc1Jl
ZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxl
bWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFt
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIFBhc3NSZWZQ
dHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIDA7CiB9CiAKLU9iamVjdENvbnRlbnRUeXBlIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykK
K09iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpvYmplY3RDb250ZW50VHlw
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IApAQCAtMTY0MSw3ICsxNjQxLDcgQEAgcHJpdmF0ZToKIAogI2VuZGlmIC8vIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBzaXplLCBIVE1MUGx1Z0luRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgS1VSTCYgdXJsLAorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTFBsdWdJbkVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLAogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKQEAgLTE3NDYsOSArMTc0Niw5IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhU
TUxQCiAgICAgaWYgKGVycm9yQ29kZSAmJiBtX3dlYkZyYW1lKSB7CiAgICAgICAgIFdlYlJlc291
cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAgICAg
IGlmIChpbXBsZW1lbnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMpIHsKLSAgICAg
ICAgICAgIEtVUkwgcGx1Z2luUGFnZVVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGFyYW1ldGVyVmFsdWUocGFyYW1OYW1lcywgcGFy
YW1WYWx1ZXMsICJwbHVnaW5zcGFnZSIpKSk7CisgICAgICAgICAgICBVUkwgcGx1Z2luUGFnZVVS
TCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMocGFyYW1ldGVyVmFsdWUocGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJwbHVnaW5zcGFnZSIp
KSk7CiAgICAgICAgICAgICBpZiAoIXBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKQotICAgICAgICAgICAgICAgIHBsdWdpblBhZ2VVUkwgPSBLVVJMKCk7CisgICAgICAgICAg
ICAgICAgcGx1Z2luUGFnZVVSTCA9IFVSTCgpOwogICAgICAgICAgICAgTlNTdHJpbmcgKnBsdWdp
bk5hbWUgPSBwbHVnaW5QYWNrYWdlID8gKE5TU3RyaW5nICopW3BsdWdpblBhY2thZ2UgcGx1Z2lu
SW5mb10ubmFtZSA6IG5pbDsKIAogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBbW05TRXJy
b3IgYWxsb2NdIF9pbml0V2l0aFBsdWdpbkVycm9yQ29kZTplcnJvckNvZGUKQEAgLTE3OTksNyAr
MTc5OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1Z2lu
KFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9
CiAgICAgCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUph
dmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIAorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUs
IEhUTUxBcHBsZXRFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIGJhc2VVUkwsIAogICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHMKIH0KIAogI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQotUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpjcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKGNvbnN0IEludFNpemUmIHNpemUsIEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwKK1Bhc3NSZWZQdHI8V2lk
Z2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihj
b25zdCBJbnRTaXplJiBzaXplLCBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMmE2NmMyOTk0
NWExYjgzMWExOWJmYzIxMTJkOGM0ZDdjNGFjMDY3NC4uMjJmMjBmZWM2NWE0ZGZiYjk3Nzg4OGFj
ZWZlN2Q4Yjg4M2Y2ZWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTU3LDEyICs1NywxMiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRl
VmlzaXRlZExpbmtTdHJhdGVneSgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJp
bmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAv
LyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkBAIC03OCw3ICs3OCw3IEBAIHByaXZh
dGU6CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgogCiAgICAgLy8gV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVk
KFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
YmFzZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWlj
U3RyaW5nJiBhdHRyaWJ1dGVVUkwpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNp
dGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpIE9WRVJSSURFOwogICAg
IAogICAgIC8vIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneQpAQCAtOTQsNyArOTQsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OktVUkwgdXJsKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5
cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0KaW5k
ZXggMDVkNmNiODlhMGU3ZDQ4ZDE0MGQ3MzE3ZGFkZTEzZjIwMTM2OTY1Yi4uNjJjNjQ5NTI3OWJi
YzNiYjM5ZWE5ZTJkN2E3YjgyODkzYzZlODVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQpAQCAtOTMs
MzIgKzkzLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKIHsKICAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBQYWdlKiBwYWdlLCBWZWN0b3I8UGx1Z2luSW5mbz4mCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwgY29uc3QgS1VSTCYs
IGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6aXNMaW5r
VmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmlzTGlua1Zpc2l0ZWQoaGFz
aCk7CiB9CkBAIC0xOTYsNyArMTk2LDcgQEAgQ29sb3IgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogICAgIHJldHVybiBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCk7ICAgIAogfQogCi1LVVJMIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitVUkwgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsK
ICAgICByZXR1cm4gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cmwoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW4ubW0KaW5kZXggYjgzYmUxNmU0N2ZlODFhMWMzMTgxNjFkOTE4MjJmOTlkNTJmZDY2Ny4u
YTE4MDA0NTk3OWZjYjAxY2JjZmI1NjVjOWQ0MmRiNzEzNjI2NjgwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4ubW0KQEAg
LTMxLDcgKzMxLDcgQEAKICNpbXBvcnQgIldlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIu
aCIKICNpbXBvcnQgIldlYkRhdGFiYXNlUXVvdGFNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJRdW90
YU1hbmFnZXIuaCIKLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKQEAgLTQ0LDcgKzQ0LDcgQEAgLSAoaWQpaW5pdFdpdGhV
Ukw6KE5TVVJMICopdXJsCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KEtVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKKyAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9y
aWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7CiAg
ICAgb3JpZ2luLT5yZWYoKTsKICAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViU2Vj
dXJpdHlPcmlnaW5Qcml2YXRlICo+KG9yaWdpbi5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCBjNWYyYzI3NDcwZDdkMTA5MDIzNDQwYjE5
MzQ2NmNiMmFkNTQzMjdmLi44NGZhYTI0MWM5NjQxOGU0OWFkZGQ2ZjNlYzY1Nzc1MTEzYzkyZTAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC00OSw3
ICs0OSw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXIu
aD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlQnVmZmVyLmg+CkBAIC0z
MTIsNyArMzEyLDcgQEAgLSAoRE9NRWxlbWVudCAqKV9pbWFnZUVsZW1lbnRXaXRoSW1hZ2VSZXNv
dXJjZTooV2ViUmVzb3VyY2UgKilyZXNvdXJjZQogLy8gTWF5IHJldHVybiBuaWwgaWYgbm90IGlu
aXRpYWxpemVkIHdpdGggYSBVUkwuCiAtIChOU1VSTCAqKV9VUkwKIHsKLSAgICBjb25zdCBLVVJM
JiB1cmwgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnVybCgpOworICAgIGNvbnN0IFVS
TCYgdXJsID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51cmwoKTsKICAgICBpZiAodXJs
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gdXJsOwpAQCAtNDYy
LDcgKzQ2Miw3IEBAIC0gKE5TU3RyaW5nICopcGFnZVRpdGxlCiAKIC0gKE5TVVJMICopdW5yZWFj
aGFibGVVUkwKIHsKLSAgICBjb25zdCBLVVJMJiB1bnJlYWNoYWJsZVVSTCA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKKyAgICBjb25zdCBVUkwmIHVucmVh
Y2hhYmxlVVJMID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT51bnJlYWNoYWJsZVVSTCgp
OwogICAgIGlmICh1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgcmV0dXJuIHVucmVhY2hhYmxlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggYTVhMTExNTU4ZTFhZmJlMWM1NWUxNjQyMmY2ZTI5Mzk3NmIwMjAzNC4uNmEz
ZmUwOTZlNmRiMDg0MGRlMzVkZDE3YTMyZDk3OWQ1OThkOWNhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC0xNDE3LDcgKzE0MTcsNyBAQCAtICh2b2lkKV9sb2FkRGF0
YTooTlNEYXRhICopZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2Rp
bmdOYW1lOgogICAgIGlmICghcHRocmVhZF9tYWluX25wKCkpCiAgICAgICAgIHJldHVybiBbW3Nl
bGYgX3dlYmtpdF9pbnZva2VPbk1haW5UaHJlYWRdIF9sb2FkRGF0YTpkYXRhIE1JTUVUeXBlOk1J
TUVUeXBlIHRleHRFbmNvZGluZ05hbWU6ZW5jb2RpbmdOYW1lIGJhc2VVUkw6YmFzZVVSTCB1bnJl
YWNoYWJsZVVSTDp1bnJlYWNoYWJsZVVSTF07CiAgICAgCi0gICAgS1VSTCByZXNwb25zZVVSTDsK
KyAgICBVUkwgcmVzcG9uc2VVUkw7CiAgICAgaWYgKCFiYXNlVVJMKSB7CiAgICAgICAgIGJhc2VV
UkwgPSBibGFua1VSTCgpOwogICAgICAgICByZXNwb25zZVVSTCA9IGNyZWF0ZVVuaXF1ZVdlYkRh
dGFVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGVl
MGFmZmFjMGVhNWQzZDEwNzNjMTBmNWQ3MTJlZGJkODg0ZjVkMjYuLmQ0OTU4N2EyYzEyODc4ZDJm
MTBhZjhiOWY2OGY4NjQ1OGVkODlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMzY3NCw3ICszNjc0LDcgQEAgLSAoTlNBcnJheSAqKW5hbWVzT2ZQcm9t
aXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJMICopZHJvcERlc3RpbmF0aW9uCiAg
ICAgICAgIGlmICghcGFnZSkgCiAgICAgICAgICAgICByZXR1cm4gbmlsOyAKICAgICAgICAgCi0g
ICAgICAgIGNvbnN0IEtVUkwmIGltYWdlVVJMID0gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
Z2luZ0ltYWdlVVJMKCk7CisgICAgICAgIGNvbnN0IFVSTCYgaW1hZ2VVUkwgPSBwYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdnaW5nSW1hZ2VVUkwoKTsKICAgICAgICAgQVNTRVJUKCFpbWFnZVVS
TC5pc0VtcHR5KCkpOwogICAgICAgICBkcmFnZ2luZ0ltYWdlVVJMID0gaW1hZ2VVUkw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCBhMGNhODVmOTM4OTY5ZGJm
YThlYjE0ZDkyMDQ4MTZmY2Q3YmRiZjdmLi4xYzk1NzY2YWQxNGExNDJkODIyZTQ0OTcxMjdkZGE4
N2U4NjY1NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC01
Niw3ICs1Niw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxGb3JtRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2ViQ29yZS9V
UkwuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFj
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5tbQpp
bmRleCBiYjExY2ZjYjc3NjE5YjUyYzYwNWRlYjUyNmM4MzQ2ZmY1Mjk4YmJjLi4xOTYwNDJjODlm
NGZjZDk0ZTcwYWQ2MjFjNTdlNWE3ODQ4OGM2Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0KQEAgLTM5LDcgKzM5LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvRE9NV2luZG93Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIE5TVVJMICp0
b05TVVJMKGNvbnN0IFN0cmluZyYgcykKIHsKICAgICBpZiAocy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBzKTsKKyAgICBy
ZXR1cm4gVVJMKFBhcnNlZFVSTFN0cmluZywgcyk7CiB9CiAKIHN0YXRpYyBXZWJGcmFtZSAqdG9X
ZWJGcmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IDQzMmUwMjUzY2M3NThiYTU0ZTYyYWQ1ZDc1NDliYWZiZGQyMzM2
ZGMuLjBlMDYzZjcwYTQzYzMzNGQxNzBkNmM1MGUyMzIyNzkzOGJkNmNkOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY4Miw3ICs2ODIsNyBAQCAtKHZvaWQpX2luamVj
dE91dGxvb2tRdWlya3NTY3JpcHQKIHsKICAgICBzdGF0aWMgTlNTdHJpbmcgKm91dGxvb2tRdWly
a3NTY3JpcHRDb250ZW50cyA9IGxlYWtPdXRsb29rUXVpcmtzVXNlclNjcmlwdENvbnRlbnRzKCk7
CiAgICAgY29yZShzZWxmKS0+Z3JvdXAoKS5hZGRVc2VyU2NyaXB0VG9Xb3JsZChjb3JlKFtXZWJT
Y3JpcHRXb3JsZCB3b3JsZF0pLAotICAgICAgICBvdXRsb29rUXVpcmtzU2NyaXB0Q29udGVudHMs
IEtVUkwoKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0QXREb2N1
bWVudEVuZCwgSW5qZWN0SW5BbGxGcmFtZXMpOworICAgICAgICBvdXRsb29rUXVpcmtzU2NyaXB0
Q29udGVudHMsIFVSTCgpLCBWZWN0b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBJbmpl
Y3RBdERvY3VtZW50RW5kLCBJbmplY3RJbkFsbEZyYW1lcyk7CiB9CiAKIHN0YXRpYyBib29sIHNo
b3VsZFJlc3BlY3RQcmlvcml0eUluQ1NTQXR0cmlidXRlU2V0dGVycygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCBjMjcwODI5NDA3OTRhOGM0YmEw
MWZiYmZiZjVlZmI1MzFhNzljYWVkLi5jZDU0ZjA3MjY5ZDUxZGVhMzIzOGJjYjU4ZTRjOThhYjc2
OGI4OWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBIaXN0b3J5SXRlbTsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJoaXN0b3J5LmNwcAppbmRleCA5ZDNmM2FjNGQ4NzA0NmI5ZWIzNzU5MjU1YWRlY2Jh
NTgzNzZhMjY4Li5hN2JjODNlNTRiNWJhODRiZjJhOTI3NjI0MzEzZWI2ZjVlYmIwMmY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViaGlzdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVk
ZSAiSWNvbkRhdGFiYXNlQmFzZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSA8UVdlYlBhZ2VBZGFwdGVy
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2NyaXB0d29ybGQuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNjcmlwdHdvcmxkLmNwcAppbmRleCBhZmViNWJi
MmExOGVhOWEzMjg4YzBiMTkxOWFkYTNlNGIzODA1MmFjLi5jNWE1ZmI0ODcyNWZkOGM5ZDhmMDcx
YjYwZjViYzY5YTE3YTM5NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
c2NyaXB0d29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzY3JpcHR3b3Js
ZC5jcHAKQEAgLTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJxd2Vic2NyaXB0d29ybGQuaCIKICNp
bmNsdWRlICJxd2Vic2NyaXB0d29ybGRfcC5oIgogCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1
ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxRU3Ry
aW5nTGlzdD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5
b3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAK
aW5kZXggNThmZTc5NTE5YjBlYjI5N2ZkZGNkOWQyYmM5Y2UxYTljNTRjNDUxZC4uNmU5MzUwZmJm
NTI2ZDdkMzgxNWNhZTI3MDI4ZjNmZGVlYTcyYTI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgot
I2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQ
b2xpY3kuaCIKQEAgLTI3Myw3ICsyNzMsNyBAQCBRU3RyaW5nTGlzdCBRV2ViU2VjdXJpdHlPcmln
aW46OmxvY2FsU2NoZW1lcygpCiAqLwogUVdlYlNlY3VyaXR5T3JpZ2luOjpRV2ViU2VjdXJpdHlP
cmlnaW4oY29uc3QgUVVybCYgdXJsKQogewotICAgIGQgPSBuZXcgUVdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwodXJsKSkpOworICAgIGQgPSBuZXcg
UVdlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZShTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCh1cmwp
KSk7CiB9CiAKIC8qIQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggZTc5
NjMzYjEyMDQwMTE2NDJlOGEwMmIzMWQ0YmUyMGY3MTNhYTlmMS4uNzA3YjA2NTlhZjMzZTBhZTdm
NmFjYzY4MGZhNzU2NzlmNGFlY2RkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3Mu
Y3BwCkBAIC0zNiw3ICszNiw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJJbml0V2ViQ29yZVF0Lmgi
CiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwu
aCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlm
aWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgUVdlYlNl
dHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogICAgICAgICBzZXR0aW5ncy0+c2V0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCh2YWx1ZSk7CiAKICAgICAgICAgUVVybCBsb2NhdGlvbiA9ICF1c2VyU3R5bGVT
aGVldExvY2F0aW9uLmlzRW1wdHkoKSA/IHVzZXJTdHlsZVNoZWV0TG9jYXRpb24gOiBnbG9iYWwt
PnVzZXJTdHlsZVNoZWV0TG9jYXRpb247Ci0gICAgICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uKFdlYkNvcmU6OktVUkwobG9jYXRpb24pKTsKKyAgICAgICAgc2V0dGluZ3Mt
PnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oV2ViQ29yZTo6VVJMKGxvY2F0aW9uKSk7CiAKICAg
ICAgICAgUVN0cmluZyBlbmNvZGluZyA9ICFkZWZhdWx0VGV4dEVuY29kaW5nLmlzRW1wdHkoKSA/
IGRlZmF1bHRUZXh0RW5jb2Rpbmc6IGdsb2JhbC0+ZGVmYXVsdFRleHRFbmNvZGluZzsKICAgICAg
ICAgc2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nKTsKQEAgLTc0
OSw3ICs3NDksNyBAQCB2b2lkIFFXZWJTZXR0aW5nczo6Y2xlYXJJY29uRGF0YWJhc2UoKQogUUlj
b24gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGNvbnN0IFFVcmwmIHVybCkKIHsKICAgICBXZWJD
b3JlOjppbml0aWFsaXplV2ViQ29yZVF0KCk7Ci0gICAgUVBpeG1hcCogaWNvbiA9IFdlYkNvcmU6
Omljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzTmF0aXZlSWNvbkZvclBhZ2VVUkwoV2ViQ29yZTo6
S1VSTCh1cmwpLnN0cmluZygpLAorICAgIFFQaXhtYXAqIGljb24gPSBXZWJDb3JlOjppY29uRGF0
YWJhc2UoKS5zeW5jaHJvbm91c05hdGl2ZUljb25Gb3JQYWdlVVJMKFdlYkNvcmU6OlVSTCh1cmwp
LnN0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpJbnRT
aXplKDE2LCAxNikpOwogICAgIGlmICghaWNvbikKICAgICAgICAgcmV0dXJuIFFJY29uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0
LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudFF0LmgKaW5k
ZXggOWQ1YmFhY2FlM2VhNzU4NjE0ZDk2YjFjODNiYTVhMjg1MjgyZTA4Yi4uMjU0OWYyZmZiZjI2
OTFmYzgyZDIwMjljYzFkMWI1ODdmNGJjNzMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50UXQuaApAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAi
S1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlF0UGxhdGZvcm1QbHVnaW4uaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgIFFXZWJGdWxsU2NyZWVuVmlkZW9IYW5k
bGVyKiBjcmVhdGVGdWxsU2NyZWVuVmlkZW9IYW5kbGVyKCk7CiAKICAgICBRV2ViUGFnZUFkYXB0
ZXIqIG1fd2ViUGFnZTsKLSAgICBLVVJMIGxhc3RIb3ZlclVSTDsKKyAgICBVUkwgbGFzdEhvdmVy
VVJMOwogICAgIFN0cmluZyBsYXN0SG92ZXJUaXRsZTsKICAgICBTdHJpbmcgbGFzdEhvdmVyQ29u
dGVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250
ZXh0TWVudUNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvQ29u
dGV4dE1lbnVDbGllbnRRdC5jcHAKaW5kZXggNzJhM2RiYmQ3ZjdlM2NhNDM0YWJjOTllNTY5MTNk
Y2JkZTU1NzdjMS4uMDg5NzVjMWQ3YTMwNjgzNWE2MzAxZGNkMWU1M2MzYTkwZmVmMzE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVu
dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51
Q2xpZW50UXQuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb250ZXh0TWVudS5o
IgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKLSNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVVJMLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBDb250ZXh0TWVudUNsaWVudFF0Ojpkb3du
bG9hZFVSTChjb25zdCBLVVJMJikKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6ZG93bmxvYWRV
UkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFF0LmggYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaAppbmRl
eCBlOGVmZDI4MmZhMjJjYjZjYWRmOGM1OWU5YmZhNTEzOGE0Njk3ZDg1Li4yMTkyMWM0MTM4MTkz
MGJmY2RmZTFmMDI5YWUzM2I1ODllZDg0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50UXQuaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBjdXN0b21pemVN
ZW51KFBhc3NPd25QdHI8Q29udGV4dE1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1l
bnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVJdGVtKiwgY29uc3QgQ29udGV4dE1lbnUqKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRp
Y3Rpb25hcnkoRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJik7
CiAgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5k
ZXggZjQ1YTdiOGQwZWMyMTkwNjNiNzUwMjFhOTQ4YTY4YzI3OGRlZTU0My4uN2E0Yzc4MGYwZmFk
MzdjOTBkNzE0NDVlMGNjNjczZDljNTc4MWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAg
LTczMyw3ICs3MzMsNyBAQCBRVXJsIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjptZWRpYUNvbnRl
bnRVcmxCeUVsZW1lbnRJZChRV2ViRnJhbWVBZGFwdGVyKiBhZGFwdAogLy8gQVBJIENhbmRpZGF0
ZT8KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEFsdGVybmF0ZUh0bWwoUVdlYkZy
YW1lQWRhcHRlciogYWRhcHRlciwgY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFz
ZVVybCwgY29uc3QgUVVybCYgZmFpbGluZ1VybCkKIHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7
CisgICAgVVJMIGt1cmwoYmFzZVVybCk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9
IGFkYXB0ZXItPmZyYW1lOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KGt1
cmwpOwogICAgIGNvbnN0IFFCeXRlQXJyYXkgdXRmOCA9IGh0bWwudG9VdGY4KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAppbmRleCBhZmUxM2MxYTVlMjM2ODdjM2Q0MmY5MTA0MzZkNzE5ZTY0ZDAwYjZlLi5mZjMy
YWNlOTQzMzAwZDA3YjQ1OTdhOGRkYzAyYjc0YWEwMzUzMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgUVN0cmluZyBkcnRQcmludEZyYW1lVXNlckdlc3R1cmVT
dGF0dXMoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVyZSBcIiUxXCIiKS5hcmcoUUxhdGluMVN0cmluZygi
ZmFsc2UiKSk7CiB9CiAKLXN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OktVUkwmIGt1cmwpCitzdGF0aWMgUVN0cmluZyBkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpVUkwmIGt1cmwp
CiB7CiAgICAgaWYgKGt1cmwuaXNFbXB0eSgpIHx8ICFrdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAg
ICAgIHJldHVybiBrdXJsLnN0cmluZygpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCiB9CiAKIAot
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QoY29uc3QgS1VSTCYgdXJsLCBkb3VibGUsIGRvdWJsZSkKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFVSTCYgdXJsLCBk
b3VibGUsIGRvdWJsZSkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAg
ICAgICBwcmludGYoIiVzIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlcyBcbiIs
IHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkp
LCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCkpKTsK
QEAgLTY4Niw3ICs2ODYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKQogewogfQogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJiB1
cmwpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhE
aXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxl
IFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9mIGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4K
ICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29tb2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1z
LiBJZiBpdCBldmVyIGRvZXMsCkBAIC03MDEsNyArNzAxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3Qg
S1VSTCYKIH0KIAogCi1TdHJpbmcgRnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFnZW50KGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQoY29uc3Qg
VVJMJiB1cmwpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUpCiAgICAgICAgIHJldHVybiBtX3dlYkZy
YW1lLT5wYWdlQWRhcHRlci0+dXNlckFnZW50Rm9yVXJsKHVybCkucmVtb3ZlKFFMYXRpbjFDaGFy
KCdcbicpKS5yZW1vdmUoUUxhdGluMUNoYXIoJ1xyJykpOwpAQCAtODM2LDcgKzgzNiw3IEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJikKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQogICAgICAgICBwcmludGYoImRpZFJ1bkluc2VjdXJlQ29udGVudFxuIik7CkBAIC04
NDQsNyArODQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdAogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtV
UkwmLCBib29sKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREZXRlY3RYU1MoY29uc3Qg
VVJMJiwgYm9vbCkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAgICAg
ICBwcmludGYoImRpZERldGVjdFhTU1xuIik7CkBAIC0xMTU0LDggKzExNTQsOCBAQCBib29sIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxFcnJvclBhZ2VFeHRlbnNpb24oY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghcGFnZS0+ZXJyb3JQYWdlRXh0ZW5zaW9uKCZvcHRp
b24sICZvdXRwdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBLVVJMIGJhc2VVcmwo
b3V0cHV0LmJhc2VVcmwpOwotICAgIEtVUkwgZmFpbGluZ1VybChvcHRpb24udXJsKTsKKyAgICBV
UkwgYmFzZVVybChvdXRwdXQuYmFzZVVybCk7CisgICAgVVJMIGZhaWxpbmdVcmwob3B0aW9uLnVy
bCk7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChiYXNlVXJsKTsKICAg
ICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG91dHB1dC5jb250ZW50LmNvbnN0RGF0YSgpLCBvdXRwdXQuY29u
dGVudC5sZW5ndGgoKSk7CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LAogICAgIG1fd2ViRnJhbWUtPnBhZ2VBZGFwdGVyLT5lbWl0RG93bmxvYWRSZXF1ZXN0ZWQo
cmVxdWVzdC50b05ldHdvcmtSZXF1ZXN0KG1fZnJhbWUtPmxvYWRlcigpLm5ldHdvcmtpbmdDb250
ZXh0KCkpKTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3Jl
YXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFs
bG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KQorUGFzc1Jl
ZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFy
Z2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTEzMjYsNyArMTMyNiw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nCiAKICAgICAvLyBGSVhNRTogU2V0IG92ZXJyaWRlIGVuY29kaW5nIGlmIHdlIGhhdmUgb25l
LgogCi0gICAgS1VSTCB1cmxUb0xvYWQgPSB1cmw7CisgICAgVVJMIHVybFRvTG9hZCA9IHVybDsK
ICAgICBpZiAodXJsVG9Mb2FkLmlzRW1wdHkoKSkKICAgICAgICAgdXJsVG9Mb2FkID0gYmxhbmtV
UkwoKTsKIApAQCAtMTMzOSw3ICsxMzM5LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcKICAg
ICByZXR1cm4gZnJhbWVEYXRhLmZyYW1lLnJlbGVhc2UoKTsKIH0KIAotT2JqZWN0Q29udGVudFR5
cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0Zvcklt
YWdlcykKK09iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRl
bnRUeXBlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlSW4sIGJvb2wgc2hv
dWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKICAgICAvLyBxRGVidWcoKTw8IiArKysrKysr
KysrKysrKysrIHVybCBpcyAiPDx1cmwuc3RyaW5nKCk8PCIsIG1pbWUgPSAiPDxtaW1lVHlwZUlu
OwogICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIHBy
aXZhdGU6CiB9OwogCiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFt
ZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCitQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJD
bGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVn
SW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpCiB7CiAgICAgLy8gcURlYnVnKCk8PCIt
LS0tLS0gQ3JlYXRpbmcgcGx1Z2luIGluIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdp
biBmb3IgIjw8dXJsLnN0cmluZygpIDw8IG1pbWVUeXBlOwogICAgIC8vIHFEZWJ1ZygpPDwiLS0t
LS0tXHQgdXJsID0gIjw8dXJsLnN0cmluZygpOwpAQCAtMTU2NCw3ICsxNTY0LDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldp
ZGdldCkKICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1Q
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlSmF2YUFwcGxldFdp
ZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBwbGV0RWxlbWVudCogZWxlbWVu
dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKQorUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1
Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzKQogewogICAgIHJldHVybiBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgZWxlbWVudCwg
dXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQi
LCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgKaW5kZXggM2VkYjM2NTYyYmRlOTE4MWZjOGE1ZDI3ZjJhZjcw
ZTVjYjFkNTc5OS4uNGU1NmM4OGIzODQ0ZmJiOWNjYWQyMzE4NWY1MWM5ZDAyOTkzZWI3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIlJlc291cmNl
RXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpblZpZXcuaCIKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IEtVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUg
aW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
TmF2aWdhdGVXaXRoaW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpOwpAQCAtMTYyLDggKzE2Miw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9y
eUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBL
VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsK
IAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTkwLDkgKzE5MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpOwogCiAgICAgdmlydHVh
bCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgU3Ry
aW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQ
bGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7CiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpD
YWNoZWRGcmFtZSopOwpAQCAtMjA2LDE0ICsyMDYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQg
bWFyZ2luSGVpZ2h0KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50
IG1hcmdpbkhlaWdodCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFVSTCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2lkZ2V0KikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KTsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQo
Y29uc3QgSW50U2l6ZSYsIEhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXJhbVZhbHVlcyk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2YUFw
cGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwogCi0gICAgdmlydHVhbCBPYmplY3RDb250ZW50VHlwZSBv
YmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBi
b29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwgT2JqZWN0Q29u
dGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOwogICAgIHZpcnR1YWwg
U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKik7CkBAIC0y
MjYsNyArMjI2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0
d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICBjb25zdCBL
VVJMJiBsYXN0UmVxdWVzdGVkVXJsKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UmVxdWVzdGVkVXJs
OyB9CisgICAgY29uc3QgVVJMJiBsYXN0UmVxdWVzdGVkVXJsKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0UmVxdWVzdGVkVXJsOyB9CiAKICAgICBRV2ViRnJhbWVBZGFwdGVyKiB3ZWJGcmFtZSgpIGNv
bnN0OwogCkBAIC0yNjEsNyArMjYxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpQbHVnaW5W
aWV3KiBtX3BsdWdpblZpZXc7CiAgICAgYm9vbCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luOwog
Ci0gICAgS1VSTCBtX2xhc3RSZXF1ZXN0ZWRVcmw7CisgICAgVVJMIG1fbGFzdFJlcXVlc3RlZFVy
bDsKICAgICBib29sIG1faXNPcmlnaW5hdGluZ0xvYWQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQuY3BwCmluZGV4IGZlNjJkNWVjNWE1NjU1Y2VhM2E0ZmZlYTAxZjdiOGRjNDI2
NWNlZWEuLmEwMWIwNjU4ZmVjNjA5Mjk2NmMxZmM0OTAyNTAwZmMzZWNjZDc5NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIK
LSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlFXZWJGcmFtZUFkYXB0ZXIuaCIKQEAgLTQzLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJRdFBsYXRmb3JtUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVVJMLmgiCiAj
aW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFs
LmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKaW5kZXggYWZiMWFkYjI4N2M0ZTc5OTIwN2FjYTA4NjMzMDRm
OTIwNjViN2NlMS4uYjQxZDI2ZmI2ZTc0MzI3ZmM3Y2U0MTQyYzVlNTI3MzQxZGQ1ODlkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNRdC5jcHAKQEAgLTEwMCwzMiArMTAwLDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kq
IFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICBy
ZXR1cm4gdGhpczsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpz
ZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9
CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQogewogICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1
cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6UGFnZSogcGFnZSwgVmVjdG9y
PFdlYkNvCiAKIC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBjb25zdCBLVVJM
JiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkKK2Jvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hhc2ggaGFzaCwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkKIHsK
ICAgICBBU1NFUlQoaGFzaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAppbmRleCBkYWFiMjU5MmUyYTBkMWIyNWJl
ZTQzYjRmOWFlYjhiMTI3OGIyMjc0Li45NzkxZTY0ZjQxOGIwNzJjMDliZDcxZmZiZjJiN2RiODQ3
MWEwNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc1F0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCkBAIC01OSwxMiArNTksMTIgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5rU3Ry
YXRlZ3koKTsKICAgICAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
OwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5
Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21p
Y1N0cmluZyYgYXR0cmlidXRlVVJMKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChX
ZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFz
ZVVSTCwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCk7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJG
cmFtZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJh
bWVBZGFwdGVyLmNwcAppbmRleCA3ZjlkZjNmNzEyYTRiYWMzMTJkYzAwNzNhODkyYjQxMmVlNTA1
OTI1Li5mYTA3ZTcwZWJlZDNiNmNhZjU4MGVkMTE1YTRlNzFiMGZiYTk1MDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAK
QEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJOYXZpZ2F0
aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTQ5LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgogI2luY2x1ZGUgIlRleHR1cmVN
YXBwZXJMYXllckNsaWVudFF0LmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKKyNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1
cC5oIgogI2luY2x1ZGUgInF0X3J1bnRpbWUuaCIKQEAgLTI2Niw3ICsyNjYsNyBAQCBRU3RyaW5n
IFFXZWJGcmFtZUFkYXB0ZXI6OnRvUGxhaW5UZXh0KCkgY29uc3QKIAogdm9pZCBRV2ViRnJhbWVB
ZGFwdGVyOjpzZXRDb250ZW50KGNvbnN0IFFCeXRlQXJyYXkgJmRhdGEsIGNvbnN0IFFTdHJpbmcg
Jm1pbWVUeXBlLCBjb25zdCBRVXJsICZiYXNlVXJsKQogewotICAgIEtVUkwga3VybChiYXNlVXJs
KTsKKyAgICBVUkwga3VybChiYXNlVXJsKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChrdXJsKTsKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEuY29uc3REYXRhKCksIGRh
dGEubGVuZ3RoKCkpOwogICAgIFFTdHJpbmcgYWN0dWFsTWltZVR5cGU7CkBAIC0yNzcsMTcgKzI3
NywxNyBAQCB2b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldENvbnRlbnQoY29uc3QgUUJ5dGVBcnJh
eSAmZGF0YSwgY29uc3QgUVN0cmluZyAmbWltZVR5cAogICAgICAgICBhY3R1YWxNaW1lVHlwZSA9
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobWltZVR5cGUpOwogICAgICAgICBlbmNvZGlu
ZyA9IGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShtaW1lVHlwZSk7CiAgICAgfQotICAgIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKGJ1ZmZlciwgV1RGOjpTdHJpbmco
YWN0dWFsTWltZVR5cGUpLCBlbmNvZGluZywgS1VSTCgpKTsKKyAgICBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShidWZmZXIsIFdURjo6U3RyaW5nKGFjdHVhbE1pbWVUeXBl
KSwgZW5jb2RpbmcsIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3JlOjpG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQogCiB2
b2lkIFFXZWJGcmFtZUFkYXB0ZXI6OnNldEh0bWwoY29uc3QgUVN0cmluZyAmaHRtbCwgY29uc3Qg
UVVybCAmYmFzZVVybCkKIHsKLSAgICBLVVJMIGt1cmwoYmFzZVVybCk7CisgICAgVVJMIGt1cmwo
YmFzZVVybCk7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qoa3VybCk7CiAg
ICAgY29uc3QgUUJ5dGVBcnJheSB1dGY4ID0gaHRtbC50b1V0ZjgoKTsKICAgICBXVEY6OlJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGEgPSBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh1dGY4LmNvbnN0RGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLSAgICBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YShkYXRhLCBXVEY6OlN0cmluZygidGV4dC9odG1sIiks
IFdURjo6U3RyaW5nKCJ1dGYtOCIpLCBLVVJMKCkpOworICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhIHN1YnN0aXR1dGVEYXRhKGRhdGEsIFdURjo6U3RyaW5nKCJ0ZXh0L2h0bWwiKSwgV1RGOjpT
dHJpbmcoInV0Zi04IiksIFVSTCgpKTsKICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZChXZWJDb3Jl
OjpGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCByZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSkpOwogfQog
CkBAIC0zNzYsOCArMzc2LDggQEAgUVdlYkZyYW1lQWRhcHRlciogUVdlYkZyYW1lQWRhcHRlcjo6
a2l0KGNvbnN0IEZyYW1lKiBmcmFtZSkKIFFVcmwgUVdlYkZyYW1lQWRhcHRlcjo6ZW5zdXJlQWJz
b2x1dGVVcmwoY29uc3QgUVVybCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBu
aWNlIGlmIHdlIGNvdWxkIGF2b2lkIGRvaW5nIHRoaXMuCi0gICAgLy8gQ29udmVydCB0byBLVVJM
IGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IgKGUuZy4gZml4dXAgb2Ygc2lu
Z2xlIHNsYXNoIGluICdodHRwOi8nKQotICAgIFFVcmwgdmFsaWRhdGVkVXJsID0gS1VSTCh1cmwp
OworICAgIC8vIENvbnZlcnQgdG8gVVJMIGFuZCBiYWNrIHRvIHByZXNlcnZlIHRoZSBvbGQgYmVo
YXZpb3IgKGUuZy4gZml4dXAgb2Ygc2luZ2xlIHNsYXNoIGluICdodHRwOi8nKQorICAgIFFVcmwg
dmFsaWRhdGVkVXJsID0gVVJMKHVybCk7CiAKICAgICBpZiAoIXZhbGlkYXRlZFVybC5pc1ZhbGlk
KCkgfHwgIXZhbGlkYXRlZFVybC5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiB2YWxpZGF0
ZWRVcmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQ
YWdlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdl
QWRhcHRlci5jcHAKaW5kZXggOWY3YjFkMzZhMmFlM2NmMjBkMTlkZDUyMTIzN2NhYTNhMzBhYzYx
OC4uNDg0MTRjZjgzZjZhZmFkZTU3ODUzNWQ5NmU4MmUyYTkzNjFlYTIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAt
MTA3MSw3ICsxMDcxLDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OnRyaWdnZXJBY3Rpb24oUVdl
YlBhZ2VBZGFwdGVyOjpNZW51QWN0aW9uIGFjdGlvbiwgUVdlYkhpdFQKICAgICAgICAgZnJhbWUu
bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0KGhpdFRlc3RSZXN1bHQt
PmxpbmtVcmwsICZmcmFtZSksIC8qbG9ja0hpc3RvcnkqLyBmYWxzZSwgLypsb2NrQmFja0Zvcndh
cmRMaXN0Ki8gZmFsc2UsIC8qZXZlbnQqLyAwLCAvKkZvcm1TdGF0ZSovIDAsIE1heWJlU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVuRnJhbWVJbk5ld1dpbmRvdzog
ewotICAgICAgICBLVVJMIHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVu
cmVhY2hhYmxlVVJMKCk7CisgICAgICAgIFVSTCB1cmwgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpOwogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIHVybCA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgp
OwogICAgICAgICBvcGVuTmV3V2luZG93KHVybCwgJmZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IDM2MGY3YzI1NjkyZmNiODk5NWQzNWU1NWZhY2Qy
NTE2ZDgyOGMzZTIuLjQyZjZkMTliNDE3ZGMxNzBlODQ4ZGNiZWU1NWRmYzFiMmE1MzMyNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjksNyArMjksNyBA
QAogCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzksMTIgKzM5LDEyIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogQ0ZBcnJheUNhbGxCYWNrcyBNYXJzaGFsbGluZ0hlbHBl
cnM6OmtJVW5rbm93bkFycmF5Q2FsbEJhY2tzID0gezAsIElVbmtub3duUmV0YWluQ2FsbGJhY2ss
IElVbmtub3duUmVsZWFzZUNhbGxiYWNrLCAwLCAwfTsKIENGRGljdGlvbmFyeVZhbHVlQ2FsbEJh
Y2tzIE1hcnNoYWxsaW5nSGVscGVyczo6a0lVbmtub3duRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
ID0gezAsIElVbmtub3duUmV0YWluQ2FsbGJhY2ssIElVbmtub3duUmVsZWFzZUNhbGxiYWNrLCAw
LCAwfTsKIAotS1VSTCBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwoQlNUUiB1cmxTdHIp
CitVUkwgTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKEJTVFIgdXJsU3RyKQogewotICAg
IHJldHVybiBLVVJMKEtVUkwoKSwgU3RyaW5nKHVybFN0ciwgU3lzU3RyaW5nTGVuKHVybFN0cikp
KTsKKyAgICByZXR1cm4gVVJMKFVSTCgpLCBTdHJpbmcodXJsU3RyLCBTeXNTdHJpbmdMZW4odXJs
U3RyKSkpOwogfQogCi1CU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihjb25zdCBL
VVJMJiB1cmwpCitCU1RSIE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBCU3RyaW5nKHVybC5zdHJpbmcoKSkucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaAppbmRleCBiMjEzZmI5MGZhZDExZGEw
NmI0M2IzMmVjMGY1YTU5MTg4YmQwODA4Li41MGUyYzY3NzBiNjJmNDczYmY3MGRkNTI1NmUyNzgx
NWUyYmUzYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuaApAQCAtMzEs
MTQgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0Owot
ICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogfQogCiBjbGFzcyBNYXJzaGFsbGluZ0hl
bHBlcnMKIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgV2ViQ29yZTo6S1VSTCBCU1RSVG9LVVJMKEJT
VFIpOwotICAgIHN0YXRpYyBCU1RSIEtVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHN0YXRpYyBXZWJDb3JlOjpVUkwgQlNUUlRvS1VSTChCU1RSKTsKKyAgICBzdGF0aWMgQlNU
UiBVUkxUb0JTVFIoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgc3RhdGljIENGVVJMUmVmIFBh
dGhTdHJpbmdUb0ZpbGVDRlVSTFJlZihjb25zdCBXVEY6OlN0cmluZyYpOwogICAgIHN0YXRpYyBX
VEY6OlN0cmluZyBGaWxlQ0ZVUkxSZWZUb1BhdGhTdHJpbmcoQ0ZVUkxSZWYgZmlsZVVSTCk7CiAg
ICAgc3RhdGljIENGVVJMUmVmIEJTVFJUb0NGVVJMUmVmKEJTVFIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3Bw
CmluZGV4IGVjMjgwMDgyNWFkZGVjYjQwYThmM2YxNDU5ZjQyNjAyZGRkYjljOTcuLjI3MTc0MmU4
MGZjOGJlMGEwNDAxNTJiZDFmODY2NmY1MDBkZTFhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0sIGNvbnN0CiAgICAgdWlEZWxlZ2F0ZS0+
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQobV93ZWJWaWV3LCAmc2VsZWN0ZWRJdGVtLCBwcm9wZXJ0
eUJhZy5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJM
KGNvbnN0IEtVUkwmIHVybCkKK3ZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJM
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIG1fd2ViVmlldy0+ZG93bmxvYWRVUkwodXJsKTsKIH0K
QEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50OjpzZWFyY2hXaXRo
R29vZ2xlKGNvbnN0IEZyYW1lKiBmcmFtZSkKIAogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkgewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoRGVmaW5p
dGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxv
YWRlcigpLnVybFNlbGVjdGVkKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSwg
MCwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgICAgIHBhZ2UtPm1haW5G
cmFtZSgpLmxvYWRlcigpLnVybFNlbGVjdGVkKFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0
cmluZygpLCAwLCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRN
ZW51Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5oCmluZGV4IGVkNDFjNTlkMjRlZjc0NWY3MmFmMmFhMjNhMzRlMDczYWQyODRh
NjQuLjIxZTI2N2RhMzIwYjRkYmQwMmQ0MmQ2YTkwYmIzODg1OTYzMzlmZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdl
YkNvcmU6OkNvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8V2ViQ29yZTo6Q29u
dGV4dE1lbnU+KTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtKiwgY29uc3QgV2ViQ29yZTo6Q29udGV4dE1lbnUqKTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBXZWJDb3JlOjpGcmFtZSopOwogICAg
IHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoV2ViQ29yZTo6RnJhbWUqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5jcHAKaW5kZXggYTU2NDZmMjU1NzdlNzMwMmQ0NTdmOTg5NDc4MGZh
NTdhZGFhODQ4ZS4uOGRkZmRmZGY1MTFkYmU0OTJmZDYxYWVhMzRlN2E1ZTYxMTIyMTliZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlm
aWNhdGlvbnNEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwgRU5B
QkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQogCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJE
ZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlOjpjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24o
U2NyaXB0RXhlY3V0aW8KIHsKIH0KIAotTm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIFdl
YkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdhdGU6OmNoZWNrUGVybWlzc2lvbihjb25zdCBLVVJM
JiB1cmwpCitOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Npb24gV2ViRGVza3RvcE5vdGlmaWNh
dGlvbnNEZWxlZ2F0ZTo6Y2hlY2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlu
dCBvdXQgPSAwOwogICAgIEJTdHJpbmcgb3JnKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKS0+
dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXggYjZm
OWMyMThmNDMwNDkwN2Y2NGI1Yzk2MjRkZmI5YmNjMzA5Mzk4MC4uZDcwZmI4ZDkzZGIxZGQzZWM0
NWRmYmM0M2I2MWFjYjEyYjIyMDQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVsZWdh
dGUuaApAQCAtMzgsNyArMzgsNyBAQCBpbnRlcmZhY2UgSVdlYkRlc2t0b3BOb3RpZmljYXRpb25Q
cmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
S1VSTDsKK2NsYXNzIFVSTDsKIH0KIAogY2xhc3MgV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxl
Z2F0ZSA6IHB1YmxpYyBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQgewpAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s+KTsKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0Zv
clBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIHZpcnR1
YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lv
bihjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25DbGllbnQ6
OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKGNvbnN0IFVSTCYpOwogCiBwcml2YXRlOgogICAg
IGJvb2wgaGFzTm90aWZpY2F0aW9uRGVsZWdhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBh
YmE3NGVjMGRjOGQwMzQ0MmZkNjhiMTUxNjE4YmEyM2FhZjdmYjQ1Li4wY2RmZDg0NjUxZDIzN2E1
ZjY4NzM3YWExNmUzOTY1ODJjNjY4YTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zNjIsNyAr
MzYyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGll
bnRSZWRpcmVjdCgpCiAgICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgS1VS
TCYgdXJsLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSkKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmIHVy
bCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUpCiB7CiAgICAgV2ViVmlldyogd2ViVmll
dyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKICAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVn
YXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKQEAgLTg0NSw3ICs4NDUsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkKICAgICBmcmFtZUxvYWRE
ZWxlZ2F0ZVByaXYyLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KHdlYlZpZXcpOwogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgaW5zZWN1cmVVUkwpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwg
Y29uc3QgVVJMJiBpbnNlY3VyZVVSTCkKIHsKICAgICBDT01QdHI8SVdlYlNlY3VyaXR5T3JpZ2lu
PiB3ZWJTZWN1cml0eU9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShv
cmlnaW4pOwogCkBAIC04NjEsNyArODYxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IEsKICAg
ICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmlldywg
d2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWREZXRlY3RYU1MoY29uc3QgVVJMJiwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogcHJv
cG9nYXRlIGNhbGwgaW50byB0aGUgcHJpdmF0ZSBkZWxlZ2F0ZS4KIH0KQEAgLTk3OSw3ICs5Nzks
NyBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzbwogICAgIHJldHVybiBsb2FkZXIucmVsZWFzZSgp
OwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmdX
aXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0
IFVSTCYgdXJsKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3
KCk7CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKQEAg
LTEwNTYsNyArMTA1Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
QmVjb21lRnJhbWVzZXQoYm9vbCkKIHsKIH0KIAotU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1c2VyQWdlbnQoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIG1fd2ViRnJhbWUtPndl
YlZpZXcoKS0+dXNlckFnZW50Rm9yS1VSTCh1cmwpOwogfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAg
Ym9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQ2FjaGVQYWdlKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIC8qYWxsb3dzU2Nyb2xsaW5n
Ki8sIGludCAvKm1hcmdpbldpZHRoKi8sIGludCAvKm1hcmdpbkhlaWdodCovKQogewogICAgIFJl
ZlB0cjxGcmFtZT4gcmVzdWx0ID0gY3JlYXRlRnJhbWUodXJsLCBuYW1lLCBvd25lckVsZW1lbnQs
IHJlZmVycmVyKTsKQEAgLTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiBVUkwsIGNvbnN0IFN0
cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlRnJhbWUoY29uc3QgVVJMJiBVUkwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUobV93ZWJGcmFtZSk7CiAgICAgQVNTRVJUKGNvcmVG
cmFtZSk7CkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgVVJMLCBjb25zdCBTdHJpbgogICAg
IHJldHVybiBjaGlsZEZyYW1lLnJlbGVhc2UoKTsKIH0KIAotT2JqZWN0Q29udGVudFR5cGUgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQor
T2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBl
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZl
clBsdWdJbnNGb3JJbWFnZXMpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
ZWZhdWx0T2JqZWN0Q29udGVudFR5cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0lu
c0ZvckltYWdlcyk7CiB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBs
dWdpbgogICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5WaWV3LT5wYXJlbnRGcmFtZSgpKTsKIAog
ICAgIGlmICghcGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKS5pc051bGwoKSkgewotICAgICAgICBL
VVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsK
KyAgICAgICAgVVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQ
YWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0
cmluZ0tleSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpA
QCAtMTE2MCw3ICsxMTYwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICByZXNvdXJj
ZUxvYWREZWxlZ2F0ZS0+cGx1Z0luRmFpbGVkV2l0aEVycm9yKHdlYlZpZXcsIGVycm9yLmdldCgp
LCBnZXRXZWJEYXRhU291cmNlKGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSk7CiB9
CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
bG9hZE1hbnVhbGx5KQorUGFzc1JlZlB0cjxXaWRnZXQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTFBsdWdJbkVsZW1lbnQq
IGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJG
cmFtZS0+d2ViVmlldygpOwogCkBAIC0xMjE3LDkgKzEyMTcsOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkKICAg
ICAgICAgbV9tYW51YWxMb2FkZXIgPSBzdGF0aWNfY2FzdDxFbWJlZGRlZFdpZGdldCo+KHBsdWdp
bldpZGdldCk7CiB9CiAKLVBhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1MQXBw
bGV0RWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMp
CitQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBs
ZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRNTEFwcGxldEVsZW1lbnQqIGVs
ZW1lbnQsIGNvbnN0IFVSTCYgLypiYXNlVVJMKi8sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCiB7Ci0gICAgUmVmUHRy
PFBsdWdpblZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZy
YW1lKSwgcGx1Z2luU2l6ZSwgZWxlbWVudCwgS1VSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVl
cywgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxzZSk7CisgICAgUmVmUHRyPFBsdWdp
blZpZXc+IHBsdWdpblZpZXcgPSBQbHVnaW5WaWV3OjpjcmVhdGUoY29yZShtX3dlYkZyYW1lKSwg
cGx1Z2luU2l6ZSwgZWxlbWVudCwgVVJMKCksIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBw
bGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNlKTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBw
bHVnaW4gY2FuIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkKICAgICBpZiAocGx1Z2luVmlldy0+cGx1
Z2luKCkgJiYgcGx1Z2luVmlldy0+cGx1Z2luKCktPmxvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDQ5OTE4ZGM3OTg5OTY1M2U0MWFhMDhhOTNlNTMwNTg4ZWE3NGExODMuLmFlNDI4ZjUzMWViMmQ2
MDBlYjEyNTllNzg1ZTNkNmRhYmIzNWU4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtODAsNyArODAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZl
bnRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3Jl
OjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBh
Z2UoKSBPVkVSUklERTsKQEAgLTEzNSw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2NrRW50
aXJlUGFnZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKQEAgLTE0OCwxMCArMTQ4LDEwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVz
ZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXVEY6
OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50
TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6
OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCB2b2lkIHNldFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25z
dCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9D
YWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVk
RnJhbWUqKSBPVkVSUklERTsKQEAgLTE3NywxNSArMTc3LDE1IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBj
b25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVh
dGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUs
IFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAogICAgICAgICBj
b25zdCBXVEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFy
Z2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25z
dCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4m
LCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREUgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCog
cGx1Z2luV2lkZ2V0KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYs
IFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVS
TCwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgcGFyYW1WYWx1ZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbVZhbHVlcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVy
UGx1Z0luc0ZvckltYWdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RD
b250ZW50VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopIE9WRVJSSURFOwpAQCAtMjA2
LDcgKzIwNiw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByaXZhdGU+IG1fcG9saWN5TGlzdGVuZXJQcml2YXRlOwogCiBwcml2YXRlOgotICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kiwg
Y29uc3QgV1RGOjpTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkZy
YW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYg
bmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcm
IHJlZmVycmVyKTsKICAgICBXZWJIaXN0b3J5KiB3ZWJIaXN0b3J5KCkgY29uc3Q7CiAKICAgICBX
ZWJGcmFtZSogbV93ZWJGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDAxYmI4YjA3NjE4
MzlkYTlmMzlhNDM1NDAxM2FmZTMwNTU4MWE5NjguLmFkYzM3ZjI2M2QxNDM1ZmY4MDI4NzZhOTI3
MjQ0NmRhYzM2Yjk5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtODgsMzIgKzg4LDMyIEBA
IFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y3JlYXRlVmlzaXRl
ZExpbmtTdHJhdGVneSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkK
IHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgV2ViQ29yZTo6c2V0Q29v
a2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQog
Ci1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KQEAg
LTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UGx1Z2luSW5m
byhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OgogICAgIH0KIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSogcGFnZSwgTGlua0hh
c2ggaGFzaCwgY29uc3QgS1VSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpCitib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBj
b25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91
cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCmluZGV4IGFiMTRhZmI5
YTg3ZWEzNWI5Zjc3YWM2NDM0OTljNTAwM2VhODBkZTMuLjA5YTgxZDExM2NiYzY5YTY1YjY4NmIz
MGViNDcxZmMwOWY0NmFhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01MywxMiArNTMsMTIgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0
ZVZpc2l0ZWRMaW5rU3RyYXRlZ3koKTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlVSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8g
LSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBW
ZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKIAogICAgIC8vIFdlYkNvcmU6OlZpc2l0ZWRM
aW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdl
KiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0
IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOworICAgIHZpcnR1YWwgYm9vbCBpc0xp
bmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggZmZj
YWE4NTYwZmU1YjVjMDQwYTA4Mjk5ZjUzNDdjYmY1MTA2ODIwYS4uM2FhZTg1MmVlZDNhNjc2NDBl
YTMxNzY1ZmVjMmNmMzI5NzcyN2FmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VCdWZmZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkBAIC0yNTQsNyArMjU0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEYXRhU291
cmNlOjpwYWdlVGl0bGUoCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRhdGFTb3VyY2U6
OnVucmVhY2hhYmxlVVJMKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIHVybCkKIHsK
LSAgICBLVVJMIHVucmVhY2hhYmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7Cisg
ICAgVVJMIHVucmVhY2hhYmxlVVJMID0gbV9sb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAgICAg
QlN0cmluZyB1cmxTdHJpbmcoKExQT0xFU1RSKXVucmVhY2hhYmxlVVJMLnN0cmluZygpLmNoYXJh
Y3RlcnMoKSwgdW5yZWFjaGFibGVVUkwuc3RyaW5nKCkubGVuZ3RoKCkpOwogCiAgICAgKnVybCA9
IHVybFN0cmluZy5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJE
b3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYjhm
YWJlMjhiYTY4YWU4MzU1MzQwOGMwNzJiMDFmNDkzZTdmOTVkNC4uM2QxYjJkNmI4YjRhMDVhZWU5
OTRkOTkxZjk1MDE4MTJhMTE0MmNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcApAQCAt
ODIsNyArODIsNyBAQCBXZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUgogICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KIAotV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZShjb25zdCBL
VVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKK1dlYkRvd25sb2FkKiBX
ZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgVVJMJiB1cmwsIElXZWJEb3dubG9hZERl
bGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICBXZWJEb3dubG9hZCogaW5zdGFuY2UgPSBuZXcgV2Vi
RG93bmxvYWQoKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWQu
aAppbmRleCA3YTY2ZGYxNjQ0YTIyMDYyODczZDBhOGVlMTIxZGU5ZDYwNjAwY2MxLi4yMjU0ZGI5
NjIzOWI3OTcyMTU2MzJmOTRlYjllM2YzOGE1ODliYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Y2xhc3MgS1VSTDsKKyAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAg
ICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBA
IC01MiwxMyArNTIsMTMgQEAgY2xhc3MgV2ViRG93bmxvYWQKICNlbmRpZgogewogcHVibGljOgot
ICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIElXZWJEb3dubG9hZERlbGVnYXRlKik7CisgICAgc3RhdGljIFdlYkRvd25sb2FkKiBjcmVh
dGVJbnN0YW5jZShjb25zdCBXZWJDb3JlOjpVUkwmLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwog
ICAgIHN0YXRpYyBXZWJEb3dubG9hZCogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgSVdlYkRvd25sb2FkRGVsZWdhdGUqKTsKICAgICBzdGF0aWMgV2Vi
RG93bmxvYWQqIGNyZWF0ZUluc3RhbmNlKCk7CiBwcml2YXRlOgogICAgIFdlYkRvd25sb2FkKCk7
CiAgICAgdm9pZCBpbml0KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIElXZWJE
b3dubG9hZERlbGVnYXRlKik7Ci0gICAgdm9pZCBpbml0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBJ
V2ViRG93bmxvYWREZWxlZ2F0ZSopOworICAgIHZvaWQgaW5pdChjb25zdCBXZWJDb3JlOjpVUkwm
LCBJV2ViRG93bmxvYWREZWxlZ2F0ZSopOwogICAgIH5XZWJEb3dubG9hZCgpOwogcHVibGljOgog
ICAgIC8vIElVbmtub3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9h
ZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4
IDRkNTlmODg5OTUxMGM1Yzg4ODk4MzY3YTAwODZjODAwMTA5MzRkNzkuLjAwODI2YWE1MjUyMWRm
NGJjMGI5NDU1NzEzMWIwMzZlYzBiZjRmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2Fk
Q0ZOZXQuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNv
dXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGMKICAg
ICBDRlJlbGVhc2UoY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29u
c3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCit2b2lkIFdlYkRv
d25sb2FkOjppbml0KGNvbnN0IFVSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdh
dGUpCiB7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRl
IGlzICVwIiwgbV9kZWxlZ2F0ZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDdXJs
LmNwcAppbmRleCBkMTlmNDIwNGM1MjhiNDBjOTZmZjZiNjY2MTg1MTBlYjRmZDUzMjY2Li45OGU4
NWIxNDdmNWYwYjUyYjNkNTFiNDdkOWYwMjEzYzcyNTUzMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkRvd25sb2FkQ3VybC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5p
dChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGMKICAgICBzdGFydCgpOwogfQogCi12b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwm
IHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQordm9pZCBXZWJEb3dubG9hZDo6
aW5pdChjb25zdCBVUkwmIHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogewog
ICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggNWMwZGZhMWRjMTJhYTY4N2M3MjY2NWUwN2U3MTIyYjU3
NzI4OGIyOC4uNjE5NWZiZmQzOTQ0M2Q4NTZiNTkyZTdlN2I2MWI0NjY2Y2UzYWFmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC0zNiw3ICszNiw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyT2JqZWN0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCmluZGV4IDdhOWYyZDQ0M2EzM2M1YWNlNjViZDU0MzEwMWRhZjlmZTQ1OTIzYjYu
LjQ1NWQ3ZmFmZjMxNWExNDA5MmQzNTdkYjE0ZmM0YzE3NTJhYjY0ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJG
cmFtZS5jcHAKQEAgLTU2NywxMSArNTY3LDExIEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhLCBCU1RSIG1pbWVUeXBlLCBCCiAg
ICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0
ZXh0RW5jb2RpbmdOYW1lKSk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlYWxseSBiZSB1
c2luZyBNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwgaGVyZSwKLSAgICAvLyBidXQgdGhh
dCB3b3VsZCB0dXJuIGEgbnVsbCBCU1RSIGludG8gYSBudWxsIEtVUkwsIGFuZCB3ZSBjcmFzaCBp
bnNpZGUgb2YKLSAgICAvLyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51bGwgS1VSTCBpbiBjb25zdHJ1
Y3RpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4KLSAgICBLVVJMIGJhc2VLVVJMID0gS1VSTChLVVJM
KCksIFN0cmluZyhiYXNlVVJMID8gYmFzZVVSTCA6IEwiIiwgU3lzU3RyaW5nTGVuKGJhc2VVUkwp
KSk7CisgICAgLy8gYnV0IHRoYXQgd291bGQgdHVybiBhIG51bGwgQlNUUiBpbnRvIGEgbnVsbCBV
UkwsIGFuZCB3ZSBjcmFzaCBpbnNpZGUgb2YKKyAgICAvLyBXZWJDb3JlIGlmIHdlIHVzZSBhIG51
bGwgVVJMIGluIGNvbnN0cnVjdGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgorICAgIFVSTCBiYXNl
S1VSTCA9IFVSTChVUkwoKSwgU3RyaW5nKGJhc2VVUkwgPyBiYXNlVVJMIDogTCIiLCBTeXNTdHJp
bmdMZW4oYmFzZVVSTCkpKTsKIAotICAgIEtVUkwgZmFpbGluZ0tVUkwgPSBNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0tVUkwoZmFpbGluZ1VSTCk7CisgICAgVVJMIGZhaWxpbmdLVVJMID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKGZhaWxpbmdVUkwpOwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoYmFzZUtVUkwpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVE
YXRhKGRhdGEsIG1pbWVUeXBlU3RyaW5nLCBlbmNvZGluZ1N0cmluZywgZmFpbGluZ0tVUkwpOwpA
QCAtNzAxLDExICs3MDEsMTEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6
cHJvdmlzaW9uYWxEYXRhU291cmNlKAogICAgIHJldHVybiAqc291cmNlID8gU19PSyA6IEVfRkFJ
TDsKIH0KIAotS1VSTCBXZWJGcmFtZTo6dXJsKCkgY29uc3QKK1VSTCBXZWJGcmFtZTo6dXJsKCkg
Y29uc3QKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKTsKICAgICBpZiAoIWNv
cmVGcmFtZSkKLSAgICAgICAgcmV0dXJuIEtVUkwoKTsKKyAgICAgICAgcmV0dXJuIFVSTCgpOwog
CiAgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViRnJh
bWUuaAppbmRleCA2MjcwZDc4MThlMmZmYTNhMTdjOGUxMDA2OTM3NDU0Y2E1MDg0NjdjLi4zMzY0
Y2Q2ZTE1YzUzMTkwM2MzM2E3MDFjMDAzN2I4ODRlOGZlMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmgK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FkanVzdFZpZXdTaXplT3JOb3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lV2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGVDbGllbnQuaD4KIAog
I2luY2x1ZGUgPFdURi9SZWZQdHIuaD4KQEAgLTMxOCw3ICszMTgsNyBAQCBwdWJsaWM6CiAgICAg
SFJFU1VMVCBtYXRjaExhYmVsc0FnYWluc3RFbGVtZW50KGNvbnN0IEJTVFIqIGxhYmVscywgaW50
IGNMYWJlbHMsIElET01FbGVtZW50KiBhZ2FpbnN0RWxlbWVudCwgQlNUUiogcmVzdWx0KTsKICAg
ICBIUkVTVUxUIGNhblByb3ZpZGVEb2N1bWVudFNvdXJjZShib29sKiByZXN1bHQpOwogCi0gICAg
V2ViQ29yZTo6S1VSTCB1cmwoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpVUkwgdXJsKCkgY29uc3Q7
CiAKICAgICBXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXZWJWaWV3KFdl
YlZpZXcqKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgV2ViRnJh
bWVQcml2YXRlOwogICAgIFdlYkZyYW1lUHJpdmF0ZSogICAgZDsKICAgICBib29sICAgICAgICAg
ICAgICAgIG1fcXVpY2tSZWRpcmVjdENvbWluZzsKLSAgICBXZWJDb3JlOjpLVVJMICAgICAgIG1f
b3JpZ2luYWxSZXF1ZXN0VVJMOworICAgIFdlYkNvcmU6OlVSTCAgICAgICBtX29yaWdpbmFsUmVx
dWVzdFVSTDsKICAgICBib29sICAgICAgICAgICAgICAgIG1faW5QcmludGluZ01vZGU7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IG1fcGFnZVJlY3RzOwogICAgIGludCBtX3BhZ2VIZWln
aHQ7ICAgLy8gaGVpZ2h0IG9mIHRoZSBwYWdlIGFkanVzdGVkIGJ5IG1hcmdpbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViSGlzdG9yeS5jcHAKaW5kZXggNTNlMWQ1NDhhYzM4YzkyZjE4ZmE2YmRhZWY4MGUyN2EwMjAy
NTRlOC4uN2U2MzcwN2M0ZDI5YmRmNmQ4YmFiNTFjODBmMzM2ODNmMDYzOTkxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFs
PgpAQCAtNTMwLDcgKzUzMCw3IEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6YWRkSXRlbShJV2ViSGlz
dG9yeUl0ZW0qIGVudHJ5LCBib29sIGRpc2NhcmREdXBsaWNhdGUsIGJvb2wqCiAgICAgcmV0dXJu
IGhyOwogfQogCi12b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2FzRmFp
bHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpCit2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRV
UkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgaHR0
cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCkKIHsKICAg
ICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gbV9lbnRyaWVzQnlVUkwuZ2V0KHVybC5zdHJpbmco
KSkuZ2V0KCk7CiAgICAgaWYgKGVudHJ5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJIaXN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKaW5kZXggM2M3
NWExODBkYzQxNGQ0ZTk1YWZjNTZiYjk5MGRjYWE1ZDI0OWNjYy4uZmY3NzdjZjNlNjE2MzU4NGZk
MzczMmYzYjM5OTVlOGFkMjFlYjdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaApAQCAtMzQsNyAr
MzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewotICAgIGNsYXNzIEtVUkw7CisgICAgY2xhc3MgVVJMOwogICAgIGNsYXNzIFBhZ2VHcm91cDsK
IH0KIApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFdlYkhpc3RvcnkKICAg
ICBzdGF0aWMgV2ViSGlzdG9yeSogc2hhcmVkSGlzdG9yeSgpOwotICAgIHZvaWQgdmlzaXRlZFVS
TChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBX
VEY6OlN0cmluZyYgaHR0cE1ldGhvZCwgYm9vbCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlz
aXRDb3VudCk7CisgICAgdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0
IFdURjo6U3RyaW5nJiB0aXRsZSwgY29uc3QgV1RGOjpTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wg
d2FzRmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpOwogICAgIHZvaWQgYWRkVmlzaXRl
ZExpbmtzVG9QYWdlR3JvdXAoV2ViQ29yZTo6UGFnZUdyb3VwJik7CiAKICAgICBDT01QdHI8SVdl
Ykhpc3RvcnlJdGVtPiBpdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggOGJmZTliZDdjMDc3Y2NmYmU4
YjA3YWI1OTFhYzM5NzA2NTI0MzIxYi4uNDUwOGNlNDI2NGVlMmUzYTIxZDEyYmJiZWNiMWRkMjU3
NzE3YzcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ09N
UHRyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmlu
ZGV4IDk2NDJlNjg4OWIwNjBmMzgyMTZkMGI4NzRmYzM4YTZhYWY2YzFmYTcuLjdkY2FiYzQyNDBm
NmZiMzhlY2FmNzFhM2Q1NGM3NGZlYTEyM2M0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojppbml0V2l0aFVSTCgKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om1haW5Eb2N1bWVudFVSTCggCiAg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1bHQpCiB7Ci0gICAgKnJlc3VsdCA9IE1h
cnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihtX3JlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSk7CisgICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6VVJMVG9CU1RSKG1fcmVx
dWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
MjIyLDcgKzIyMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6OnRpbWVvdXRJbnRlcnZhbCgKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6OlVSTCggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCU1RSKiByZXN1
bHQpCiB7Ci0gICAgKnJlc3VsdCA9IE1hcnNoYWxsaW5nSGVscGVyczo6S1VSTFRvQlNUUihtX3Jl
cXVlc3QudXJsKCkpOworICAgICpyZXN1bHQgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OlVSTFRvQlNU
UihtX3JlcXVlc3QudXJsKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKaW5kZXggY2NmZDk1ZDRiYzJlNDVhMWQ3OWZiM2RiODI4MzFlYjZlYTZjM2Vl
Mi4uZTQ2OTkxN2QzZTIyZWQzZDYwMTQ3MTQ1MGY2NTUxNGYyYjEyMGYyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlJlc291cmNlLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogLy8gV2ViUmVzb3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdlYlJlc291cmNlOjpXZWJSZXNv
dXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNv
bnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUpCitXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0
cmVhbSogZGF0YSwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBmcmFtZU5hbWUpCiAgICAgOiBtX3JlZkNvdW50KDApCiAgICAgLCBtX2RhdGEoZGF0
YSkKICAgICAsIG1fdXJsKHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJl
c291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJSZXNvdXJjZS5oCmluZGV4IGQ4ZmI0MzNl
MTg1YjBmMTY1YzFkYTY2YmZjNmFkNmU2MTVkZjE2YTkuLjc5MGJhNDc0MmEzOTNiZDE1MDVhNWVl
NGIxODg2YjkzMmNjYTZjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUmVzb3VyY2UuaApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9DT01QdHIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgV2ViUmVzb3VyY2UgOiBwdWJsaWMgSVdlYlJlc291cmNlIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgV2ViUmVzb3VyY2UqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSk7CiBwcm90ZWN0ZWQ6Ci0gICAgV2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZnJhbWVOYW1l
KTsKKyAgICBXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSk7CiAgICAgfldlYlJlc291
cmNlKCk7CiAKIHB1YmxpYzoKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBVTE9ORyBtX3JlZkNvdW50OwogICAgIENPTVB0cjxJU3RyZWFtPiBtX2RhdGE7Ci0gICAgV2Vi
Q29yZTo6S1VSTCBtX3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV1RGOjpTdHJp
bmcgbV9taW1lVHlwZTsKICAgICBXVEY6OlN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CiAgICAg
V1RGOjpTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAK
aW5kZXggZjBjNDMwMjIwMGU5NWFiMWY1MTc2YzNiNzQwNmMxZDE5Y2Y3YWQ5ZC4uZmUzMzJhYmVl
ODA5YzUyMmM2MDE3MDcwZWM4YjRiMjg1YTk0MzI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvY2FsaXplZFN0
cmluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8
c2hsb2JqLmg+CkBAIC0yMjYsNyArMjI2LDcgQEAgV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3Bv
bnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0g
bmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28g
aXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5t
X3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6
Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlVSTChQYXJzZWRVUkxTdHJpbmcs
ICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSwgU3RyaW5nKCkpOwogICAgIGluc3Rh
bmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCAxYzhjNTY5NDljMzljZDQ0
MGVmNTVkYjhkNGMyODZiMWUzNTdmNGI2Li4wNzljNDAyNjA4Y2VlMTgwYTQ1NjhiNTE5N2NmZmNj
MGRmYjUzNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGYzZjgxNTMxNzA4MjY2NzhjNjc3MjU3MmRjMWE3YjNkODZiNDlh
ODAuLjIzNDRkOTI3OGVhNjhkOTAxOWM3NTBhMDc5ZTI5NmQyYmYyN2VmM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCkBAIC0yMjQsOSArMjI0LDkgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdG9TdHJp
bmcoQlNUUiBic3RyKQogICAgIHJldHVybiBTdHJpbmcoYnN0ciwgU3lzU3RyaW5nTGVuKGJzdHIp
KTsKIH0KIAotc3RhdGljIGlubGluZSBLVVJMIHRvS1VSTChCU1RSIGJzdHIpCitzdGF0aWMgaW5s
aW5lIFVSTCB0b1VSTChCU1RSIGJzdHIpCiB7Ci0gICAgcmV0dXJuIEtVUkwoS1VSTCgpLCB0b1N0
cmluZyhic3RyKSk7CisgICAgcmV0dXJuIFVSTChVUkwoKSwgdG9TdHJpbmcoYnN0cikpOwogfQog
CiBjbGFzcyBQcmVmZXJlbmNlc0NoYW5nZWRPclJlbW92ZWRPYnNlcnZlciA6IHB1YmxpYyBJV2Vi
Tm90aWZpY2F0aW9uT2JzZXJ2ZXIgewpAQCAtMjQ5OCw3ICsyNDk4LDcgQEAgc3RhdGljIFN0cmlu
ZyB3ZWJLaXRWZXJzaW9uU3RyaW5nKCkKICAgICByZXR1cm4gYnVpbGROdW1iZXJTdHJpbmdQdHI7
CiB9CiAKLWNvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBLVVJM
JikKK2NvbnN0IFN0cmluZyYgV2ViVmlldzo6dXNlckFnZW50Rm9yS1VSTChjb25zdCBVUkwmKQog
ewogICAgIGlmIChtX3VzZXJBZ2VudE92ZXJyaWRkZW4pCiAgICAgICAgIHJldHVybiBtX3VzZXJB
Z2VudEN1c3RvbTsKQEAgLTQ4NTUsNyArNDg1NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5
UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKICAgICAg
ICAgc2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1cmwuZ2V0KCkpOwogICAgICAg
ICBzdHIuY2xlYXIoKTsKICAgICB9IGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0VXNlclN0eWxl
U2hlZXRMb2NhdGlvbihLVVJMKCkpOworICAgICAgICBzZXR0aW5ncy5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKFVSTCgpKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnNob3VsZFByaW50QmFj
a2dyb3VuZHMoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQpAQCAtNjM2MCw3ICs2MzYw
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjphZGRVc2VyU2NyaXB0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybGQsIEIKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIHBhZ2VHcm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclNjcmlwdFRvV29ybGQod29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJj
ZSksIHRvVVJMKHVybCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0
cmluZ1ZlY3Rvcih3aGl0ZWxpc3RDb3VudCwgd2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0Q291bnQsIGJsYWNrbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmplY3Rpb25UaW1lID09IFdlYkluamVjdEF0RG9jdW1lbnRTdGFydCA/IEluamVjdEF0
RG9jdW1lbnRTdGFydCA6IEluamVjdEF0RG9jdW1lbnRFbmQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CkBAIC02Mzg1LDcgKzYzODUsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChCU1RSIGdyb3VwTmFt
ZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29ybAogICAgIGlmICghcGFnZUdyb3VwKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgcGFnZUdyb3VwLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
d29ybGQtPndvcmxkKCksIHRvU3RyaW5nKHNvdXJjZSksIHRvS1VSTCh1cmwpLAorICAgIHBhZ2VH
cm91cC0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHdvcmxkLT53b3JsZCgpLCB0b1N0cmluZyhz
b3VyY2UpLCB0b1VSTCh1cmwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdENvdW50LCB3aGl0ZWxpc3QpLCB0b1N0cmluZ1Zl
Y3RvcihibGFja2xpc3RDb3VudCwgYmxhY2tsaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmplY3RJbkFsbEZyYW1lcyk7CiAKQEAgLTY0MDcsNyArNjQwNyw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cChCU1RSIGdyb3Vw
TmFtZSwgSVdlYlNjcmlwdFdvcmxkKiBpV29yCiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdlR3JvdXAtPnJlbW92ZVVzZXJTY3JpcHRGcm9tV29y
bGQod29ybGQtPndvcmxkKCksIHRvS1VSTCh1cmwpKTsKKyAgICBwYWdlR3JvdXAtPnJlbW92ZVVz
ZXJTY3JpcHRGcm9tV29ybGQod29ybGQtPndvcmxkKCksIHRvVVJMKHVybCkpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC02NDI3LDcgKzY0MjcsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnJlbW92
ZVVzZXJTdHlsZVNoZWV0RnJvbUdyb3VwKEJTVFIgZ3JvdXBOYW1lLCBJV2ViU2NyaXB0V29ybGQq
CiAgICAgaWYgKCFwYWdlR3JvdXApCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBwYWdl
R3JvdXAtPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHdvcmxkLT53b3JsZCgpLCB0b0tV
UkwodXJsKSk7CisgICAgcGFnZUdyb3VwLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZCh3
b3JsZC0+d29ybGQoKSwgdG9VUkwodXJsKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTY1
NDksNyArNjU0OSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVmlzaXRlZExpbmtzKEJTVFIqIHZp
c2l0ZWRVUkxzLCB1bnNpZ25lZCB2aXNpdGVkVVJMQ291bnQpCiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKLXZvaWQgV2ViVmlldzo6ZG93bmxvYWRVUkwoY29uc3QgS1VSTCYgdXJsKQordm9pZCBXZWJW
aWV3Ojpkb3dubG9hZFVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBJdCdzIHRoZSBkZWxl
Z2F0ZSdzIGpvYiB0byByZWYgdGhlIFdlYkRvd25sb2FkIHRvIGtlZXAgaXQgYWxpdmUgLSBvdGhl
cndpc2UgaXQgd2lsbCBiZQogICAgIC8vIGRlc3Ryb3llZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0
dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuaAppbmRleCBhYjI3MTg3MmQwMDMwNGFkZjM2NzYwMmJmNTNlNDc2
NTkzN2QxM2QxLi5jYWQ4NWIxMjJlZmZmODIwZDNlNzdhOWIwMDE5NTViMjg0NjdjZTJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5oCkBAIC05MDgsNyArOTA4LDcgQEAgcHVibGljOgogCiAgICAgLy8gQ29udmVu
aWVudCB0byBiZSBhYmxlIHRvIHZpb2xhdGUgdGhlIHJ1bGVzIG9mIENPTSBoZXJlIGZvciBlYXN5
IG1vdmVtZW50IHRvIHRoZSBmcmFtZS4KICAgICBXZWJGcmFtZSogdG9wTGV2ZWxGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9Ci0gICAgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJB
Z2VudEZvcktVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKTsKKyAgICBjb25zdCBXVEY6OlN0
cmluZyYgdXNlckFnZW50Rm9yS1VSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCk7CiAKICAgICBz
dGF0aWMgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwogCkBAIC05NDcsNyArOTQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wgb25HZXRPYmplY3Qo
V1BBUkFNLCBMUEFSQU0sIExSRVNVTFQmKSBjb25zdDsKICAgICBzdGF0aWMgU1RETUVUSE9ESU1Q
IEFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KEhXTkQsIERXT1JEIG9iamVjdElELCBSRUZJSUQs
IHZvaWQqKiBwcE9iamVjdCk7CiAKLSAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgZmx1c2hQZW5kaW5nR3Jh
cGhpY3NMYXllckNoYW5nZXNTb29uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwIGIvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmNwcAppbmRleCBk
ZGE0ZDI3YTk5OWM5ODBkZTk4YTc1YTZlZTc3ODVjZTY3ZDlhYmZiLi43YjVkNjFmMGNkNGY0MmE1
YmU3N2Y3MTM1MTg2YTJkNTA2NGI5OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V2luQ0UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNsaWVudFdpbkNFOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBDb24KICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIENvbnRleHRNZW51Q2xpZW50V2luQ0U6OmRvd25sb2FkVVJMKGNvbnN0
IEtVUkwmIHVybCkKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRXaW5DRTo6ZG93bmxvYWRVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvQ29udGV4dE1lbnVDbGllbnRXaW5DRS5o
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdp
bkNFLmgKaW5kZXggOGNkMTk1MTM5NGQ2MWViMGUxNGYzYWQxNmY2ZDE4NDhjYmQxNDg2Ny4uZGI3
NTZmM2QyZTVhZTUzOGYyMTZiYzYxODQxMzU5NzkyOWIyOWQzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdpbkNFLmgKKysr
IGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFdp
bkNFLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxX
ZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3duUHRyPFdlYkNvcmU6OkNv
bnRleHRNZW51Pik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2aXJ0
dWFsIHZvaWQgY29weUltYWdlVG9DbGlwYm9hcmQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dCYpOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZy
YW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFt
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKaW5kZXggODUzYjFiYjVmMDYzNjExMzk3YTk3
NDkxNmEzZjJiMTNiYjczZmFmZS4uNmQwMGIwYmM0N2Q4N2Q1ODQxMzJiZDM4MWNhZTQzZmZjYWFk
ZTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6On5GcmFtZUxvYWRlckNsaWVudFdpbkNFKCkKIHsKIH0KIAotU3Ry
aW5nIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnVzZXJBZ2VudChjb25zdCBLVVJMJikKK1N0cmlu
ZyBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgdXNlckFnZW50U3RyaW5nLCAoKSk7CiAKQEAgLTE2
MiwxMiArMTYyLDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1CiAgICAgKG1fZnJhbWUtPmxv
YWRlcigpLnBvbGljeUNoZWNrZXIoKS0+KnBvbGljeUZ1bmN0aW9uKShQb2xpY3lVc2UpOwogfQog
Ci1QYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9v
bCkKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpjcmVhdGVQbHVn
aW4oY29uc3QgSW50U2l6ZSYsIEhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJv
b2wpCiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwKK1Bhc3NSZWZQdHI8RnJh
bWU+IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGlu
dCBtYXJnaW5IZWlnaHQpCiB7CiAgICAgcmV0dXJuIG1fd2ViVmlldy0+Y3JlYXRlRnJhbWUodXJs
LCBuYW1lLCBvd25lckVsZW1lbnQsIHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldp
ZHRoLCBtYXJnaW5IZWlnaHQpOwpAQCAtMTgwLDEzICsxODAsMTMgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFdpbkNFOjpyZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdpbldpZGdldCkK
ICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IGZhbHNlOwogfQogCi1QYXNzUmVm
UHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdl
dChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitQYXNzUmVmUHRyPFdpZGdl
dD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJ
bnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
ICAgIHJldHVybiAwOwogfQogCi1PYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFdp
bkNFOjpvYmplY3RDb250ZW50VHlwZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKK09iamVjdENvbnRlbnRU
eXBlIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJ
bWFnZXMpCiB7CiAgICAgcmV0dXJuIEZyYW1lTG9hZGVyOjpkZWZhdWx0T2JqZWN0Q29udGVudFR5
cGUodXJsLCBtaW1lVHlwZSwgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7CiB9CkBAIC0y
NjIsMTIgKzI2MiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgS1VSTCYpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhT
Uyhjb25zdCBVUkwmLCBib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0zMTcs
NyArMzE3LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZENhbmNl
bENsaWVudFJlZGlyZWN0KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBLVVJMJiwgZG91YmxlLCBkb3VibGUpCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRp
c3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJs
ZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNF
OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mLCBjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC02MzEsNyAr
NjMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaXNwYXRjaERpZEJlY29tZUZy
YW1lc2V0KGJvb2wpCiAKIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQogewot
ICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0V2luQ0U6OmNyZWF0ZShtX2ZyYW1lLCB1
c2VyQWdlbnQoS1VSTCgpKSk7CisgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXaW5D
RTo6Y3JlYXRlKG1fZnJhbWUsIHVzZXJBZ2VudChVUkwoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKaW5kZXggOTdkYzk1MDQwZWNiOGEwZjM1MDNm
MTA5NTFhMDQzYzQyMzQ4N2I0NS4uYjEwZjAyYjg4ZTA4OWQ3ZWVjYTE5YzlkZTIxOTg3NzM5YzIw
YWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChj
b25zdCBXZWJDb3JlOjpLVVJMJiwgZG91YmxlLCBkb3VibGUpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlLCBkb3VibGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9u
V2l0aGluUGFnZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhp
blBhZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5Q
YWdlKCk7CkBAIC0xMDUsMTIgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBv
c3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpLVVJMJiB1
cmwsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
VEY6OlN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lk
dGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpX
aWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpWZWN0b3I8
V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3QgV1RG
OjpTdHJpbmcmLCBib29sKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+
IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1l
LCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBXVEY6OlN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQq
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBj
b25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXZWJDb3JlOjpXaWRnZXQqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBw
bHVnaW5XaWRnZXQpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNy
ZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhU
TUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RG
OjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwg
Y29uc3QgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBXVEY6OlZl
Y3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
Q2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCopOwogICAg
IHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKTsKQEAgLTExOCw3ICsxMTcs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0
aW9uKGJvb2wpOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSBvYmpl
Y3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1p
bWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpOworICAgIHZpcnR1YWwg
V2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50
UmVhZHkoYm9vbCk7CiAKQEAgLTEzNiw4ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0q
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xNjQs
OSArMTYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCk7CiAKICAgICB2aXJ0dWFsIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpE
b2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmly
dHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hl
ZEZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNo
ZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNw
cAppbmRleCA3MzNhNGVlMTNkYWVjMDI2ZGFjM2M0YzFmYWVmOWUxMzdmY2RkZTdmLi4yZGM5OWNk
ZjY2MjdiNzFhNTVmYjg1ZjVlMDViNjBiNGRhYmE1YTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFLmNwcApAQCAtODQsMzIgKzg0LDMyIEBAIFZpc2l0ZWRMaW5rU3RyYXRlZ3kqIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFOjpjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkKICAgICByZXR1cm4g
dGhpczsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZv
cm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIFdl
YkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFBsdWdpbkluZm8o
Y29uc3QgUGFnZSosIFZlY3RvcjxQbHVnaW5JbmZvPiYgb3V0CiAgICAgfQogfQogCi1ib29sIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjppc0xpbmtWaXNpdGVkKFBhZ2UqIHBhZ2UsIExpbmtIYXNo
IGhhc2gsIGNvbnN0IEtVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQorYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRTo6aXNMaW5rVmlzaXRlZChQYWdlKiBwYWdlLCBMaW5rSGFzaCBoYXNoLCBj
b25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKQogewogICAgIHJldHVybiBwYWdlLT5ncm91
cCgpLmlzTGlua1Zpc2l0ZWQoaGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmggYi9Tb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKaW5kZXgg
MTIwODgxMWM0MjBjOWM2OGY2NzlkOGJkODE1MWY2MDBjY2MwMjhlMS4uOTI1ZjBlODExZTIyZjA1
MzEyZjJkNjI0MmFjODgxMGNiMzliZTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaApAQCAt
NTIsMTIgKzUyLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVkTGlu
a1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7CiAKICAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBj
b25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KQEAgLTY3LDcg
KzY3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBX
ZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jik7CiAKICAgICAvLyBX
ZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0
ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlz
aXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGFkZFZpc2l0
ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJWaWV3LmNwcAppbmRleCAzNjUwZDgzZjAxZTAyMDk0M2U3MGExZDYzODNmN2ViYjllMTFk
MDc5Li5mNTUzMTVkNWFiMGEzZmUxYmIyNGJjYzFhZTM0MTg2OTUzOGQ3M2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViVmlldy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlZpZXc6OmNsZWFudXAo
KQogICAgIFVucmVnaXN0ZXJDbGFzcyhrV2ViVmlld1dpbmRvd0NsYXNzTmFtZSwgV2ViQ29yZTo6
aW5zdGFuY2VIYW5kbGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0
ZUZyYW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwKK1Bhc3NSZWZQ
dHI8RnJhbWU+IFdlYlZpZXc6OmNyZWF0ZUZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCAvKmFsbG93c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5I
ZWlnaHQqLykKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJW
aWV3LmgKaW5kZXggYjQ0MDI1MTUyNTI5MTExZmNhZjIxNTIyZjE0ZTVkYzE5MTZhNDNkMy4uOGI2
MDY1MWVkMTE3NjliODQ2ZGU4MTg4YjY4NzAzODIzYTcwYTU4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW5jZS9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC93aW5jZS9XZWJWaWV3
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogY2xhc3MgRnJh
bWVWaWV3OwogY2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OwotY2xhc3MgS1VSTDsKK2NsYXNz
IFVSTDsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIH0KIApAQCAtNjksNyArNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGZyYW1lUmVjdChSRUNUKiByZWN0KSBjb25zdDsKIAotICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0
IFdURjo6U3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBi
b29sLCBpbnQsIGludCk7CiAKICAgICAvLyBKYXZhU2NyaXB0IERpYWxvZwogICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEFsZXJ0KGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwCmluZGV4IDFlNjBkNDAxYmVkN2RlNTM3MzA3NjMwYWEzMDUyYzEyZDk2ZDI5
OGYuLjg1MDc2OGNlZmE3NTlmODY0YWU2NWRjNjlmOWYwMTA4NjJiOGMwYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3Ry
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcApAQCAtNDcsNyArNDcsNyBAQCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpO
ZXR3b3JrQmxvYlJlZ2lzdHJ5KCkKIHsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24s
IGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gZGF0YSwgY29uc3QgVmVjdG9y
PFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mIG5ld1NhbmRib3hFeHRlbnNpb25zKQordm9pZCBO
ZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRh
PiBkYXRhLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiYgbmV3U2FuZGJv
eEV4dGVuc2lvbnMpCiB7CiAgICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb25zLmNvbnRhaW5z
KHVybC5zdHJpbmcoKSkpOwogCkBAIC02NywxMSArNjcsMTEgQEAgdm9pZCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3QKICAgICBBU1NFUlQoIW1fYmxvYnNGb3JDb25uZWN0aW9uLmdldChjb25uZWN0aW9uKS5j
b250YWlucyh1cmwpKTsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcDo6aXRlcmF0b3IgbWFwSXRl
cmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pOwogICAgIGlmICht
YXBJdGVyYXRvciA9PSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5lbmQoKSkKLSAgICAgICAgbWFwSXRl
cmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxLVVJM
PigpKS5pdGVyYXRvcjsKKyAgICAgICAgbWFwSXRlcmF0b3IgPSBtX2Jsb2JzRm9yQ29ubmVjdGlv
bi5hZGQoY29ubmVjdGlvbiwgSGFzaFNldDxVUkw+KCkpLml0ZXJhdG9yOwogICAgIG1hcEl0ZXJh
dG9yLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKQordm9p
ZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCkKIHsKICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JV
UkwodXJsLCBzcmNVUkwpOwogICAgIFNhbmRib3hFeHRlbnNpb25NYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3NhbmRib3hFeHRlbnNpb25zLmZpbmQoc3JjVVJMLnN0cmluZygpKTsKQEAgLTgzLDcgKzgz
LDcgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3QKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5m
aW5kKGNvbm5lY3Rpb24pLT52YWx1ZS5hZGQodXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKQordm9pZCBOZXR3b3JrQmxvYlJl
Z2lzdHJ5Ojp1bnJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyog
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgYmxvYlJlZ2lzdHJ5
KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsKICAgICBtX3NhbmRib3hFeHRlbnNpb25zLnJlbW92
ZSh1cmwuc3RyaW5nKCkpOwpAQCAtOTgsOCArOTgsOCBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UAogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEhhc2hTZXQ8S1VSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9
IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlOwotICAgIGZvciAo
SGFzaFNldDxLVVJMPjo6aXRlcmF0b3IgaXRlciA9IGJsb2JzRm9yQ29ubmVjdGlvbi5iZWdpbigp
LCBlbmQgPSBibG9ic0ZvckNvbm5lY3Rpb24uZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsK
KyAgICBIYXNoU2V0PFVSTD4mIGJsb2JzRm9yQ29ubmVjdGlvbiA9IG1fYmxvYnNGb3JDb25uZWN0
aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlOworICAgIGZvciAoSGFzaFNldDxVUkw+OjppdGVy
YXRvciBpdGVyID0gYmxvYnNGb3JDb25uZWN0aW9uLmJlZ2luKCksIGVuZCA9IGJsb2JzRm9yQ29u
bmVjdGlvbi5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBibG9iUmVnaXN0
cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCgqaXRlcik7CiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lv
bnMucmVtb3ZlKCppdGVyKTsKICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5Ojpjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlAKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5yZW1vdmUoY29ubmVjdGlvbik7
CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9i
UmVnaXN0cnk6OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2Nv
bnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IE5ldHdvcmtCbG9iUmVnaXN0cnk6
OnNhbmRib3hFeHRlbnNpb25zKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVy
biBtX3NhbmRib3hFeHRlbnNpb25zLmdldCh1cmwuc3RyaW5nKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaAppbmRleCA2ZDcxYmJmYzk2MzEyZmE1ZWRlNmE2NTcyODA1MTE3N2VhOGUwMDkzLi43
MzMwNmYyN2RjZTlhMmJmMzM2ZTY0OTAxNzM1NWY1NmJiOGQ3MjQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVn
aXN0cnkuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEJMT0IpICYmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkxIYXNoLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkxIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogCkBAIC00NywxMyArNDcsMTMgQEAgcHVibGljOgogICAgIE5ldHdv
cmtCbG9iUmVnaXN0cnkoKTsKICAgICBzdGF0aWMgTmV0d29ya0Jsb2JSZWdpc3RyeSYgc2hhcmVk
KCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRh
PiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKLSAgICB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBzcmNVUkwpOwotICAgIHZvaWQgdW5yZWdp
c3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JE
YXRhPiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4mKTsKKyAgICB2b2lk
IHJlZ2lzdGVyQmxvYlVSTChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2ViQ29y
ZTo6VVJMJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyopOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxT
YW5kYm94RXh0ZW5zaW9uPj4gc2FuZGJveEV4dGVuc2lvbnMoY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4+IHNhbmRib3hFeHRl
bnNpb25zKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiBwcml2YXRlOgogICAgIH5OZXR3b3JrQmxv
YlJlZ2lzdHJ5KCk7CkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4+IFNhbmRib3hFeHRl
bnNpb25NYXA7CiAgICAgU2FuZGJveEV4dGVuc2lvbk1hcCBtX3NhbmRib3hFeHRlbnNpb25zOwog
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFz
aFNldDxXZWJDb3JlOjpLVVJMPj4gQmxvYkZvckNvbm5lY3Rpb25NYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgSGFzaFNldDxXZWJDb3JlOjpV
Ukw+PiBCbG9iRm9yQ29ubmVjdGlvbk1hcDsKICAgICBCbG9iRm9yQ29ubmVjdGlvbk1hcCBtX2Js
b2JzRm9yQ29ubmVjdGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCA4OWQ0ZWFmYjM3NGI0OTRlNGRiM2VkYTUyZTM2MWNhZDFkNGZhYmVmLi4wM2FmMWM0ZmYyMThm
OWRhZmZlNmIyZTI1ZmY1OWIxNDNhYjBkMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC0xODIsMzcgKzE4MiwzNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbQogICAgIGxv
YWRlci0+ZGlkQ29udmVydEhhbmRsZVRvRG93bmxvYWQoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBy
ZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9N
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBXZWJDb3JlOjpzZXRD
b29raWVzRnJvbURPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmly
c3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYg
dXJsLCBib29sJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBy
ZXN1bHQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVz
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKICAgICBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBh
cnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwg
Y29va2llTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEJsb2JSZWdpc3RyYXRpb25EYXRh
JiBkYXRhKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKIHsK
ICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiBleHRlbnNpb25zOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGRhdGEuc2FuZGJveEV4dGVuc2lvbnMoKS5zaXplKCk7
IGkgPCBjb3VudDsgKytpKSB7CkBAIC0yMjMsMTIgKzIyMywxMiBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBCbG9iUgogICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyQmxvYlVS
TCh0aGlzLCB1cmwsIGRhdGEucmVsZWFzZURhdGEoKSwgZXh0ZW5zaW9ucyk7CiB9CiAKLXZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkxGcm9tVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIHNyY1VSTCkKIHsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5yZWdp
c3RlckJsb2JVUkwodGhpcywgdXJsLCBzcmNVUkwpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBV
UkwmIHVybCkKIHsKICAgICBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS51bnJlZ2lzdGVy
QmxvYlVSTCh0aGlzLCB1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZmJm
ZDgyMzE1MTZlMmJlYjY4NDU0ZjVhN2M4Mzg4YjYyNmM2NGEwMy4uZDIyZGQ1MzAwNjhhM2U2Zjc2
NTEwZWE5MWI5ODRiNWNjOWE5OTY0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC03
MywyMiArNzMsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQo
Y29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6
RGVsYXllZFJlcGx5Pik7CiAKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNl
TG9hZElkZW50aWZpZXIpOwotICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKTsK
KyAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNlcnZlUGVu
ZGluZ1JlcXVlc3RzKHVpbnQzMl90IHJlc291cmNlTG9hZFByaW9yaXR5KTsKICAgICB2b2lkIHNl
dFNlcmlhbExvYWRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBk
b3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sJiByZXN1bHQp
OwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgU3RyaW5nJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZv
aWQgZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CisgICAgdm9pZCBjb29raWVzRm9y
RE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCYg
cmVzdWx0KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmLCBTdHJpbmcmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRSYXdDb29raWVz
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAg
IHZvaWQgZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAotICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0
YSYpOwotICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjVVJMKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJCbG9i
VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBCbG9iUmVnaXN0cmF0aW9uRGF0YSYpOworICAgIHZvaWQg
cmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHNyY1VSTCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKIAogICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWZh
ZTFhMjMwZmFmMzRkN2FjOGI4MjM0NmNjNjU0ZjQ0M2U0ZDk0NS4uYTVmN2NjNTJjMGYyNzExM2Jm
NGU3ZGRmZjg0ZjkzMGIxZGViNWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTM1LDE2ICszNSwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKLSAgICBDb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgV2ViQ29yZTo6S1VSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpLVVJMIHVy
bCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKLSAgICBTZXRDb29raWVzRnJvbURPTShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6
S1VSTCB1cmwsIFdURjo6U3RyaW5nIGNvb2tpZVN0cmluZykKLSAgICBDb29raWVzRW5hYmxlZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OktVUkwgZmlyc3RQYXJ0eSwgV2Vi
Q29yZTo6S1VSTCB1cmwpIC0+IChib29sIGVuYWJsZWQpCi0gICAgQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJMIGZp
cnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpTdHJpbmcgcmVzdWx0KQotICAg
IEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpLVVJM
IGZpcnN0UGFydHksIFdlYkNvcmU6OktVUkwgdXJsKSAtPiAoV1RGOjpWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzKQotICAgIERlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIFdlYkNvcmU6OktVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVOYW1lKQorICAgIENv
b2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgZmly
c3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFdURjo6U3RyaW5nIHJlc3VsdCkKKyAgICBT
ZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIFdlYkNvcmU6OlVS
TCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29raWVTdHJpbmcp
CisgICAgQ29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3Jl
OjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKGJvb2wgZW5hYmxlZCkKKyAg
ICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQsIFdlYkNvcmU6OlVSTCBmaXJzdFBhcnR5LCBXZWJDb3JlOjpVUkwgdXJsKSAtPiAoV1RGOjpT
dHJpbmcgcmVzdWx0KQorICAgIEdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBXZWJDb3JlOjpVUkwgZmlyc3RQYXJ0eSwgV2ViQ29yZTo6VVJMIHVybCkgLT4gKFdURjo6
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykKKyAgICBEZWxldGVDb29raWUoYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBXZWJDb3JlOjpVUkwgdXJsLCBXVEY6OlN0cmluZyBjb29r
aWVOYW1lKQogCi0gICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OktVUkwgdXJsLCBXZWJLaXQ6
OkJsb2JSZWdpc3RyYXRpb25EYXRhIGRhdGEpCi0gICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChX
ZWJDb3JlOjpLVVJMIHVybCwgV2ViQ29yZTo6S1VSTCBzcmNVUkwpCi0gICAgVW5yZWdpc3RlckJs
b2JVUkwoV2ViQ29yZTo6S1VSTCB1cmwpCisgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVS
TCB1cmwsIFdlYktpdDo6QmxvYlJlZ2lzdHJhdGlvbkRhdGEgZGF0YSkKKyAgICBSZWdpc3RlckJs
b2JVUkxGcm9tVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwpCisgICAg
VW5yZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCkKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDkxODY5
N2ExMzFjNmNhYjc5MDFhMmU5ZmZjM2UzNTkzZDE5YjZmZTIuLmZmNDI3NDNlZGU3MjBiN2E4MzFj
NzU2MTdhZWU1ZWE0ZmFjMDAzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVM
b2FkZXIoUGFzc1JlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkCiAgICAgc2NoZWR1bGVTZXJ2ZVBl
bmRpbmdSZXF1ZXN0cygpOwogfQogCi1Ib3N0UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCwgQ3JlYXRlSG9zdFBv
bGljeSBjcmVhdGVIb3N0UG9saWN5KQorSG9zdFJlY29yZCogTmV0d29ya1Jlc291cmNlTG9hZFNj
aGVkdWxlcjo6aG9zdEZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgQ3JlYXRlSG9zdFBv
bGljeSBjcmVhdGVIb3N0UG9saWN5KQogewogICAgIGlmICghdXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSkKICAgICAgICAgcmV0dXJuIG1fbm9uSFRUUFByb3RvY29sSG9zdC5nZXQoKTsKQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVM
b2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAgICAgc2NoZWR1bGVTZXJ2ZVBl
bmRpbmdSZXF1ZXN0cygpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnJlY2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpyZWNlaXZlZFJlZGlyZWN0KE5ldHdvcmtSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJlZGlyZWN0IGxvYWRlciBvcmlnaW5hbGx5
IGZvciAnJXMnIHJlZGlyZWN0ZWQgdG8gJyVzJyIsIGxvYWRlci0+cmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IGZiNDEwMjc5N2VjNGIwNTdlMzk3MzRjODlh
ZmE5MjBiMTU1ODQ3MDIuLjg0MGEyNzgyOWI1MDU4NzgzYmQwNGI4NjMyMzBjMWNhNWZiMTA0YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGlj
OgogICAgIC8vIENhbGxlZCB3aXRoaW4gdGhlIE5ldHdvcmtQcm9jZXNzIG9uIGEgYmFja2dyb3Vu
ZCB0aHJlYWQgd2hlbiBhIHJlc291cmNlIGxvYWQgaGFzIGZpbmlzaGVkLgogICAgIHZvaWQgc2No
ZWR1bGVSZW1vdmVMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyKik7CiAKLSAgICB2b2lkIHJl
Y2VpdmVkUmVkaXJlY3QoTmV0d29ya1Jlc291cmNlTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgcmVkaXJlY3RVUkwpOworICAgIHZvaWQgcmVjZWl2ZWRSZWRpcmVjdChOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHNl
cnZlUGVuZGluZ1JlcXVlc3RzKFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5ID0gV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93KTsKIAogICAgIC8vIEZvciBOZXR3b3JrUHJv
Y2VzcyBzdGF0aXN0aWNzIHJlcG9ydGluZy4KQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgRmluZE9ubHkKICAgICB9OwogICAgIAotICAgIEhvc3RSZWNvcmQqIGhvc3RGb3JVUkwo
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIENyZWF0ZUhvc3RQb2xpY3kgPSBGaW5kT25seSk7CisgICAg
SG9zdFJlY29yZCogaG9zdEZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBDcmVhdGVIb3N0UG9s
aWN5ID0gRmluZE9ubHkpOwogICAgIAogICAgIHZvaWQgc2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1
ZXN0cygpOwogICAgIHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQppbmRleCAwODg0NTJlMDM2NTli
ODliMzMxNDQzMGIyOGZlNTdhZjk4MDVkYzQzLi5lMTk3ZmYzOTZmNzBhNzdhOTU2MmQzNWFiNTNk
MmM0NDUzNWNjMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9t
YWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lk
IG92ZXJyaWRlU3lzdGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3QgU3Ry
aW5nJiBodHRwc1ByCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqcHJveHlTZXR0aW5ncyA9IFtO
U011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnldOwogCiAgICAgaWYgKCFodHRwUHJveHkuaXNO
dWxsKCkpIHsKLSAgICAgICAgS1VSTCBodHRwUHJveHlVUkwoS1VSTCgpLCBodHRwUHJveHkpOwor
ICAgICAgICBVUkwgaHR0cFByb3h5VVJMKFVSTCgpLCBodHRwUHJveHkpOwogICAgICAgICBpZiAo
aHR0cFByb3h5VVJMLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0
T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaHR0cFByb3h5VVJMLmhvc3QoKSkgZm9y
S2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFByb3h5XTsKICAgICAgICAgICAg
IGlmIChodHRwUHJveHlVUkwuaGFzUG9ydCgpKSB7CkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2
b2lkIG92ZXJyaWRlU3lzdGVtUHJveGllcyhjb25zdCBTdHJpbmcmIGh0dHBQcm94eSwgY29uc3Qg
U3RyaW5nJiBodHRwc1ByCiAgICAgfQogCiAgICAgaWYgKCFodHRwc1Byb3h5LmlzTnVsbCgpKSB7
Ci0gICAgICAgIEtVUkwgaHR0cHNQcm94eVVSTChLVVJMKCksIGh0dHBzUHJveHkpOworICAgICAg
ICBVUkwgaHR0cHNQcm94eVVSTChVUkwoKSwgaHR0cHNQcm94eSk7CiAgICAgICAgIGlmIChodHRw
c1Byb3h5VVJMLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2Jq
ZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaHR0cHNQcm94eVVSTC5ob3N0KCkpIGZvcktl
eTooTlNTdHJpbmcgKilrQ0ZOZXR3b3JrUHJveGllc0hUVFBTUHJveHldOwogICAgICAgICAgICAg
aWYgKGh0dHBzUHJveHlVUkwuaGFzUG9ydCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWQzOGY2ZWJm
MmI0MjNhNjY1NGVjZTczMTZlZTJlYzMwMjJkMDQwNC4uNmMwNTNjMTFhOTgzNzM0OTBkMzQ5Njc2
NTgwMzFiZjVlMWZhNGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQg
UGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBTdHJpCiAKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFN0cmluZyYgcmVzcG9u
c2VVUkxTdHJpbmcsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVk
VGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzKQogewot
ICAgIG1fcGx1Z2luLT5zdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uoc3RyZWFtSUQsIEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlm
aWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdpbi0+c3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCBVUkwoUGFyc2VkVVJMU3RyaW5nLCByZXNw
b25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkVGltZSwgbWltZVR5cGUs
IGhlYWRlcnMsIFN0cmluZygpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxl
clByb3h5OjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByZXNw
b25zCiAgICAgaWYgKG1fcGx1Z2luQ2FuY2VsZWRNYW51YWxTdHJlYW1Mb2FkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCByZXNwb25zZVVSTFN0cmluZyksIHN0cmVhbUxlbmd0aCwgbGFz
dE1vZGlmaWVkVGltZSwgbWltZVR5cGUsIGhlYWRlcnMsIFN0cmluZygpKTsKKyAgICBtX3BsdWdp
bi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKFVSTChQYXJzZWRVUkxTdHJpbmcsIHJl
c3BvbnNlVVJMU3RyaW5nKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlw
ZSwgaGVhZGVycywgU3RyaW5nKCkpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdp
blByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Q
cm9jZXNzTWFjLm1tCmluZGV4IGQ1YTg5ODVjMDI1OTllM2U0YjBjMWJmNTYxYjc1MzE1OTFhOWYx
ZmQuLjVkMTFkOTg2MzJmNjNjMTlmY2ZkY2YzZmQ3YWVmMmM3NDA3MDBkMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpA
QCAtMTg5LDExICsxODksMTEgQEAgc3RhdGljIHZvaWQgY2FyYm9uV2luZG93SGlkZGVuKFdpbmRv
d1JlZiB3aW5kb3cpCiBzdGF0aWMgYm9vbCBvcGVuQ0ZVUkxSZWYoQ0ZVUkxSZWYgdXJsLCBpbnQz
Ml90JiBzdGF0dXMsIENGVVJMUmVmKiBsYXVuY2hlZFVSTCkKIHsKICAgICBTdHJpbmcgbGF1bmNo
ZWRVUkxTdHJpbmc7Ci0gICAgaWYgKCFQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5vcGVuVVJMKEtV
UkwodXJsKS5zdHJpbmcoKSwgc3RhdHVzLCBsYXVuY2hlZFVSTFN0cmluZykpCisgICAgaWYgKCFQ
bHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5vcGVuVVJMKFVSTCh1cmwpLnN0cmluZygpLCBzdGF0dXMs
IGxhdW5jaGVkVVJMU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFs
YXVuY2hlZFVSTFN0cmluZy5pc051bGwoKSAmJiBsYXVuY2hlZFVSTCkKLSAgICAgICAgKmxhdW5j
aGVkVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGxhdW5jaGVkVVJMU3RyaW5nKS5jcmVhdGVD
RlVSTCgpLmxlYWtSZWYoKTsKKyAgICAgICAgKmxhdW5jaGVkVVJMID0gVVJMKFBhcnNlZFVSTFN0
cmluZywgbGF1bmNoZWRVUkxTdHJpbmcpLmNyZWF0ZUNGVVJMKCkubGVha1JlZigpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCkBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIE5TUnVubmluZ0FwcGxp
Y2F0aW9uICpyZXBsYWNlZE5TV29ya3NwYWNlX2xhdW5jaEFwcGxpY2F0aW9uQXRVUkxfb3B0aW9u
c18KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5s
YXVuY2hBcHBsaWNhdGlvbkF0VVJMKEtVUkwodXJsKS5zdHJpbmcoKSwgYXJndW1lbnRzKSkgewor
ICAgIGlmIChQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5sYXVuY2hBcHBsaWNhdGlvbkF0VVJMKFVS
TCh1cmwpLnN0cmluZygpLCBhcmd1bWVudHMpKSB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAg
ICAgICAgICplcnJvciA9IG5pbDsKICAgICAgICAgcmV0dXJuIG5pbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggMTE0Yzc0MTkwNTBmOGUzZWZh
YmJhMjBhMWVlYjMzOTU2NjU3MWNjYi4uZjY2MTA4MDQ4NGE4NWNlNjQ3NDQwMDdkZGM3YjlhOTdh
NDdkZmY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5j
cHAKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CkBAIC00MCw3ICs0MCw3IEBAIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJ
RCgpCiAKIFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDcmVhdGVXaXRoV0tVUkwoV0tVUkxS
ZWYgdXJsKQogewotICAgIHJldHVybiB0b0FQSShXZWJVUkxSZXF1ZXN0OjpjcmVhdGUoS1VSTChL
VVJMKCksIHRvSW1wbCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRv
QVBJKFdlYlVSTFJlcXVlc3Q6OmNyZWF0ZShVUkwoVVJMKCksIHRvSW1wbCh1cmwpLT5zdHJpbmco
KSkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tV
UkxSZXNwb25zZS5jcHAKaW5kZXggYzU0OTE4NDBiZGEwNzE5OWEwZjZkN2NkYjk3NDY3MmE3YzM3
ZWFmMy4uNDdhZmNhNDBhZDQ5ZWM0NTczNTA3ZmIwNDI5ZDRmNTg2YjUwMWMzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMjgsNyArMjgs
NyBAQAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2Uu
aCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
Y2YvV0tVUkxDRi5jcHAKaW5kZXggZjA0ZWNmZDI2YzQ3NmYxYTJkMjM5YjllOWY3M2VkMDEyOWYw
ZWQ5MC4uNDc1NjRlYmJiYTc1NThhNWMxYTEyYWQ5MGM2ODAzNzhkZThlOTQwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLmNwcApAQCAtNTQsOCArNTQsOCBAQCBD
RlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJM
UmVmIFVSTFJlZikKICAgICAvLyBXZSBmaXJzdCBjcmVhdGUgYSBDU3RyaW5nIGFuZCB0aGVuIGNy
ZWF0ZSB0aGUgQ0ZVUkwgZnJvbSBpdC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSBDRlVSTCBp
cyBzdG9yZWQgaW4gCiAgICAgLy8gVVRGLTggd2hpY2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMg
d2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3QuCiAKLSAgICAvLyBUaGlzIHBhdHRlcm4g
b2YgdXNpbmcgVVRGLTggYW5kIHRoZW4gZmFsbGluZyBiYWNrIHRvIExhdGluMSBvbiBmYWlsdXJl
IG1hdGNoZXMgS1VSTDo6Y3JlYXRlQ0ZTdHJpbmcgd2l0aCB0aGUKLSAgICAvLyBtYWpvciBkaWZm
ZXJuY2UgYmVpbmcgdGhhdCBLVVJMIGRvZXMgbm90IGRvIGEgVVRGLTggY29udmVyc2lvbiBhbmQg
aW5zdGVhZCBjaG9wcyBvZmYgdGhlIGhpZ2ggYml0cyBvZiB0aGUgVVRGLTE2CisgICAgLy8gVGhp
cyBwYXR0ZXJuIG9mIHVzaW5nIFVURi04IGFuZCB0aGVuIGZhbGxpbmcgYmFjayB0byBMYXRpbjEg
b24gZmFpbHVyZSBtYXRjaGVzIFVSTDo6Y3JlYXRlQ0ZTdHJpbmcgd2l0aCB0aGUKKyAgICAvLyBt
YWpvciBkaWZmZXJuY2UgYmVpbmcgdGhhdCBVUkwgZG9lcyBub3QgZG8gYSBVVEYtOCBjb252ZXJz
aW9uIGFuZCBpbnN0ZWFkIGNob3BzIG9mZiB0aGUgaGlnaCBiaXRzIG9mIHRoZSBVVEYtMTYKICAg
ICAvLyBjaGFyYWN0ZXIgc2VxdWVuY2UuCiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHRvSW1wbChV
UkxSZWYpLT5zdHJpbmcoKS51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL3F0L1F0RmlsZURvd25sb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Rvd25sb2Fkcy9xdC9RdEZpbGVEb3dubG9hZGVyLmNwcAppbmRleCBjM2IyZThkMGVlMjJh
NDc3NTdkM2MwM2RhOGNhZGQzMGVkZGYyZWU3Li5mMTZiMGMyZTVkMDljODA3YmNlZmJjZTM1MjU2
YzFhMTIzOTMzMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRz
L3F0L1F0RmlsZURvd25sb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3du
bG9hZHMvcXQvUXRGaWxlRG93bmxvYWRlci5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgUVN0cmluZyBR
dEZpbGVEb3dubG9hZGVyOjpkZXRlcm1pbmVGaWxlbmFtZSgpCiAKICAgICBRU3RyaW5nIGZpbGVu
YW1lQ2FuZGlkYXRlID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihRU3RyaW5n
Ojpmcm9tTGF0aW4xKG1fcmVwbHktPnJhd0hlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIpKSk7
CiAgICAgaWYgKGZpbGVuYW1lQ2FuZGlkYXRlLmlzRW1wdHkoKSkgewotICAgICAgICBLVVJMIGt1
cmwgPSBtX3JlcGx5LT51cmwoKTsKKyAgICAgICAgVVJMIGt1cmwgPSBtX3JlcGx5LT51cmwoKTsK
ICAgICAgICAgZmlsZW5hbWVDYW5kaWRhdGUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoa3Vy
bC5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggMTFlMGE0MWQ3
NDVhODJlZWRmMzVmNjUyYzQyYjI1MDdmMGE3ZjdlMS4uZDBlZWJiNWRlNTJiMzI5MDM4ZTAxZjVm
N2U4NjhiNmU1ODRmZTE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25s
b2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgog
CiAgICAgICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZp
bGVuYW1lKCk7CiAgICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgICAgIEtVUkwgdXJsID0gcmVzcG9uc2UudXJsKCk7CisgICAgICAgICAgICBVUkwgdXJs
ID0gcmVzcG9uc2UudXJsKCk7CiAgICAgICAgICAgICB1cmwuc2V0UXVlcnkoU3RyaW5nKCkpOwog
ICAgICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogICAgICAgICAgICAg
c3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLmxhc3RQYXRo
Q29tcG9uZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ZpbGVBUEkv
QmxvYlJlZ2lzdHJhdGlvbkRhdGEuY3BwCmluZGV4IGEwZGQ0ZGM5YWM5NjZjOWM4YzA4MGZhYTcx
N2M5ODZkMmUxYjlmY2YuLjQxMzBiMTUyZDM0NjRhNjI5MGE1ODFlMjEwZTA2MGRiYzc3NGUzOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9GaWxlQVBJL0Jsb2JSZWdpc3RyYXRp
b25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRmlsZUFQSS9CbG9iUmVnaXN0
cmF0aW9uRGF0YS5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBib29sIEJsb2JSZWdpc3RyYXRpb25E
YXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBCbG9iUmVnaXN0
cgogICAgICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodXJsKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICByZXN1
bHQubV9kYXRhLT5hcHBlbmRCbG9iKEtVUkwoS1VSTCgpLCB1cmwpLCBvZmZzZXQsIGxlbmd0aCk7
CisgICAgICAgICAgICByZXN1bHQubV9kYXRhLT5hcHBlbmRCbG9iKFVSTChVUkwoKSwgdXJsKSwg
b2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJNYWMubW0KaW5kZXggMjcyNmYxY2NjNTQ4ZDZjYzRlNjFhMzQ1MjU0MDkwYzNlYTQzYjQ1My4u
Nzk4M2E3N2ZkMzFiN2UyNjNiOWU0ZGU5ZTJjN2NmYWI2NDA4MGU1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgotI2lt
cG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQXJjaGl2ZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2UuY3BwCmluZGV4IGQ4NTVlM2Q5Y2NjNjFiYzdk
NjQ0ODg3NTUzNmFjNWJjM2U2MWNkODkuLjA4M2IyMTA4MzI4YmNjYWJhZjU5ZDU2M2E1ZWI0NzI5
NjcyYzI3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJBcmNoaXZlUmVzb3VyY2Uu
Y3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00OCw3ICs0OCw3IEBAIFBhc3NSZWZQdHI8V2ViQXJj
aGl2ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hp
dmVSZXNvCiB9CiAKIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFdlYkRh
dGEqIGRhdGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZykKLSAgICA6IG1fYXJjaGl2ZVJlc291cmNlKEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEtPmJ5dGVzKCksIGRhdGEt
PnNpemUoKSksIEtVUkwoS1VSTCgpLCBVUkwpLCBNSU1FVHlwZSwgdGV4dEVuY29kaW5nLCBTdHJp
bmcoKSkpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShT
aGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLT5ieXRlcygpLCBkYXRhLT5zaXplKCkpLCBXZWJDb3Jl
OjpVUkwoV2ViQ29yZTo6VVJMKCksIFVSTCksIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcsIFN0cmlu
ZygpKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBhYjY5ZmY2MDA1NzE4YjIxNjkyNDBmYjIzNWEwY2Q5YjQwN2FlZmY5
Li43NWQyYjU3NzkzZmE0MmQ1NTM0ZTYzMGE5NTIwMDA3YmM2Y2Q0MWQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzksNyArMzks
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZS5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTQwNyw3ICs0MDcsNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZQogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0VVJMKEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAgICAgICAgcmVxdWVzdC5z
ZXRVUkwoVVJMKFVSTCgpLCB1cmwpKTsKIAogICAgICAgICBTdHJpbmcgaHR0cE1ldGhvZDsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShodHRwTWV0aG9kKSkKQEAgLTQzMiw3ICs0MzIsNyBA
QCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVzb3VyY2VSZQogICAgICAgICBTdHJpbmcgZmlyc3RQYXJ0eUZvckNv
b2tpZXM7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZmlyc3RQYXJ0eUZvckNvb2tpZXMp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFy
dHlGb3JDb29raWVzKEtVUkwoS1VSTCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcykpOworICAgICAg
ICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKFVSTChVUkwoKSwgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMpKTsKIAogICAgICAgICByZXNvdXJjZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgIH0K
QEAgLTUwMyw3ICs1MDMsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXNwb25zZT46
OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUgogICAgICAgICBTdHJp
bmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlc3BvbnNlLnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSk7
CisgICAgICAgIHJlc3BvbnNlLnNldFVSTChVUkwoVVJMKCksIHVybCkpOwogCiAgICAgICAgIGlu
dDMyX3QgaHR0cFN0YXR1c0NvZGU7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaHR0cFN0
YXR1c0NvZGUpKQpAQCAtMTAzMywxNyArMTAzMywxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJh
Z1Nlc3Npb24+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBEcmFnU2Vzc2lvbiYg
cgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8S1VSTD46OmVuY29k
ZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEtVUkwmIHJlc3VsdCkKK3ZvaWQgQXJn
dW1lbnRDb2RlcjxVUkw+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBV
UkwmIHJlc3VsdCkKIHsKICAgICBlbmNvZGVyIDw8IHJlc3VsdC5zdHJpbmcoKTsKIH0KICAgICAK
LWJvb2wgQXJndW1lbnRDb2RlcjxLVVJMPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgS1VSTCYgcmVzdWx0KQorYm9vbCBBcmd1bWVudENvZGVyPFVSTD46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFVSTCYgcmVzdWx0KQogewogICAgIFN0cmluZyB1cmxBc1N0cmlu
ZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybEFzU3RyaW5nKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIHJlc3VsdCA9IEtVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmxB
c1N0cmluZyk7CisgICAgcmVzdWx0ID0gVVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJs
QXNTdHJpbmcpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgS1VSTCB1cmw7CisgICAgVVJMIHVybDsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlVzZXJTY3JpcHQ+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3IKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwgdXJs
OworICAgIFVSTCB1cmw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAppbmRleCA2MzBiNmI2Y2M2NGE2MDg5ODQ3Y2NkMDU0OGJiMjI3NmUwNDlhNDNlLi4z
YjBiYTlkZjNkY2U2MjQ2Y2E1ZTg3MWFlMGM0ZjlkMDcyNWMwODE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRSZWN0OwogICAgIGNsYXNzIEludFNpemU7
CiAgICAgY2xhc3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7Ci0gICAgY2xhc3MgS1VSTDsKKyAgICBjbGFz
cyBVUkw7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKICAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMjU1LDkgKzI1NSw5IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RHJhZ1Nlc3Npb24+IHsKICAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RHJhZ1Nlc3Npb24mKTsK
IH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewot
ICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OktVUkwmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VVJMPiB7
CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3Jl
OjpVUkwmKTsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
VXNlclN0eWxlU2hlZXQ+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJI
aXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0
LmNwcAppbmRleCA5YzM1MTUwNzE3ZmE1OGU1ZDc0NTRmMzQwNTc3MWFhNzg4YTZmNTA1Li5jOWQ4
NGMwNDJlZGViYjBiNmY1ZjgxNzFhM2ZiODIwNzQ2ODU3NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlVSTC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTC5oCmluZGV4IDI3
YTc0NGUyMTVmYjM2ZmQ2Njc2OTQ4M2UyZWQ3ODU0MWQ2ZDIxYzAuLmQ3NjE2ZDJlZDMxMWRhOTJh
MzM4ZjZhMTkxMWY2NGVlOGVkNTg2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJVUkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMLmgKQEAgLTI3LDcg
KzI3LDcgQEAKICNkZWZpbmUgV2ViVVJMX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQ2LDExICs0NiwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJVUkw+IGNyZWF0ZShjb25zdCBXZWJVUkwqIGJhc2VVUkwsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmVVUkwpCiAgICAgewotICAgICAgICB1c2luZyBXZWJDb3JlOjpLVVJM
OworICAgICAgICB1c2luZyBXZWJDb3JlOjpVUkw7CiAKICAgICAgICAgQVNTRVJUKGJhc2VVUkwp
OwogICAgICAgICBiYXNlVVJMLT5wYXJzZVVSTElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIEtVUkwq
IGFic29sdXRlVVJMID0gbmV3IEtVUkwoKmJhc2VVUkwtPm1fcGFyc2VkVVJMLmdldCgpLCByZWxh
dGl2ZVVSTCk7CisgICAgICAgIFVSTCogYWJzb2x1dGVVUkwgPSBuZXcgVVJMKCpiYXNlVVJMLT5t
X3BhcnNlZFVSTC5nZXQoKSwgcmVsYXRpdmVVUkwpOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViVVJMKGFkb3B0UHRyKGFic29sdXRlVVJMKSwgYWJzb2x1dGVVUkwtPnN0cmluZygp
KSk7CiAgICAgfQpAQCAtOTAsNyArOTAsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICBXZWJVUkwoUGFzc093blB0cjxXZWJDb3JlOjpLVVJMPiBwYXJzZWRVUkwsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQorICAgIFdlYlVSTChQYXNzT3duUHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJM
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgOiBtX3N0cmluZyhzdHJpbmcpCiAgICAg
ICAgICwgbV9wYXJzZWRVUkwocGFyc2VkVVJMKQogICAgIHsKQEAgLTEwMCwxMSArMTAwLDExIEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAobV9wYXJzZWRVUkwpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIG1fcGFyc2VkVVJMID0gV1RGOjphZG9wdFB0cihuZXcgV2ViQ29yZTo6
S1VSTChXZWJDb3JlOjpLVVJMKCksIG1fc3RyaW5nKSk7CisgICAgICAgIG1fcGFyc2VkVVJMID0g
V1RGOjphZG9wdFB0cihuZXcgV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBtX3N0cmluZykp
OwogICAgIH0KIAogICAgIFN0cmluZyBtX3N0cmluZzsKLSAgICBtdXRhYmxlIE93blB0cjxXZWJD
b3JlOjpLVVJMPiBtX3BhcnNlZFVSTDsKKyAgICBtdXRhYmxlIE93blB0cjxXZWJDb3JlOjpVUkw+
IG1fcGFyc2VkVVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAKaW5kZXggNDhhY2YzNzliZWMyY2U2MjU2MzliYWZiNmNm
MThjNWIyYWNlMjEwZC4uMzA3MmY5NWU5ZjhlZmY1MzFiMzQ0NmZlYjViMzlmMDQzMjc2YmM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmNwcApAQCAtMTYsNyArMTYsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NS
ZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVy
bCkKK1Bhc3NSZWZQdHI8V2ViVVJMUmVxdWVzdD4gV2ViVVJMUmVxdWVzdDo6Y3JlYXRlKGNvbnN0
IFVSTCYgdXJsKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVVJMUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QodXJsKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlVSTFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVUkxSZXF1ZXN0LmgK
aW5kZXggNGY4YWVmZmZjMzVlN2RkYWVjYTJjYWE2MWY0MTdjZjk3NWJiZjYzNi4uOWYyZjRmNzA1
YzliNzVhOTYzY2MxMjgxOWE5YmVlOTczMjhiNmUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlVSTFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
VVJMUmVxdWVzdC5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJVUkxSZXF1ZXN0IDogcHVibGljIFR5cGVkQVBJT2JqZWN0PEFQSU9iamVjdDo6VHlwZVVS
TFJlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJVUkxSZXF1ZXN0
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlVz
ZXJDb250ZW50VVJMUGF0dGVybi5oCmluZGV4IDVjMDhiODBmOWE1OGY3MWIzNjdhNmRhNGY4YTlk
NTg3ZDMyOWE4YTUuLmIzM2Y0OTc3MTZkZGYxOTdmYTUyMGNhNjFkMTBiNzhjMGMwODQ4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogCi0jaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1VzZXJDb250ZW50VVJMUGF0dGVybi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBob3N0KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXR0ZXJuLmhvc3QoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgc2NoZW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLnNjaGVtZSgpOyB9CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmlzVmFsaWQoKTsgfTsKLSAgICBib29sIG1hdGNoZXNV
UkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5tYXRjaGVzKFdl
YkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB1cmwpKTsgfQorICAgIGJvb2wg
bWF0Y2hlc1VSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1h
dGNoZXMoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsKSk7IH0KICAg
ICBib29sIG1hdGNoZXNTdWJkb21haW5zKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLm1hdGNo
U3ViZG9tYWlucygpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5TdHJpbmc7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9ndGsvQXJndW1lbnRDb2RlcnNHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9Bcmd1bWVudENvZGVyc0d0ay5jcHAKaW5kZXggZjdlNzZlNzY0OGFiZmYwNDk1MzQwZTEx
ZjJkMDUwMmYxNjY2NjI5Ni4uNmUwMWY0OGU5ZWRlOGVlMzA2ZTY2OWQwNzc4NGEwYWZiZGU2MDNj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5j
cHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVEYXRhT2JqZWN0KEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPERhdGFPYmplY3RHdGs+JiBkYQogICAgICAgICBT
dHJpbmcgdXJsOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGEtPnNldFVSTChLVVJMKEtVUkwoKSwgdXJsKSwg
U3RyaW5nKCkpOworICAgICAgICBkYXRhLT5zZXRVUkwoVVJMKFVSTCgpLCB1cmwpLCBTdHJpbmco
KSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVUklMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLmNwcAppbmRleCA3ZTZhOGMxMzM3OGQ5YWM4NTBi
YjBlOTY4NzBhM2M1NWFiMWVkMGJjLi4wMGJiMTRiZWEwMjc4ZDE1YzQzZGRlMWVjOWVkNWVmNjg5
NWJjZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3Jh
Z2VTaGltLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VT
aGltLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1VSTC5oPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogc3RhdGljIENGRGljdGlvbmFyeVJlZiB3ZWJLaXRDb29raWVTdG9yYWdlQ29weVJl
cXVlc3RIZWFkZXJGaWVsZHNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBpbkNvb2tpZVN0
b3JhZ2UsIENGVVJMUmVmIGluUmVxdWVzdFVSTCkKIHsKICAgICBTdHJpbmcgY29va2llczsKLSAg
ICBLVVJMIGZpcnN0UGFydHlGb3JDb29raWVzVVJMOworICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29v
a2llc1VSTDsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmYWxzZSwgZmlyc3RQYXJ0
eUZvckNvb2tpZXNVUkwsIGluUmVxdWVzdFVSTCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llcyksIDApKQogICAgICAg
ICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1F0TmV0
d29ya1JlcGx5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVw
bHlEYXRhLmNwcAppbmRleCA1MTY0MWVkYjRlYmE1MGEyNGJlN2UzNDY1YTcyMjkwMjUzMWM1Mjk1
Li5iODM1YWYyYjJiZThlNTFlZjczMjFkZjgyNTBlZjcyNGI5MWE0ZTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvcXQvUXROZXR3b3JrUmVwbHlEYXRhLmNwcApAQCAtMjcsNyArMjcs
NyBAQAogI2luY2x1ZGUgIlF0TmV0d29ya1JlcGx5RGF0YS5oIgogCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnNRdC5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNs
dWRlICJTaGFyZWRNZW1vcnkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlIDxRTmV0d29ya0FjY2Vzc01hbmFnZXI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDUwYzZlZWE1
ZDRmNWEyMzdkOTk5NGViMmRlZjBkOTYyNjdiYjM3MDkuLjM4NGJkMzc0MmQ5OTQ5YTkwYjNmNGQ1
ZWY0NmY4MDA3YjQ5ZThlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCB3
ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaShXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBjb25z
dCBjaGFyKiB1cmkpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfVVJJX1JFUVVFU1Qo
cmVxdWVzdCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwodXJpKTsKIAotICAgIEtVUkwgdXJsKEtV
UkwoKSwgdXJpKTsKKyAgICBVUkwgdXJsKFVSTCgpLCB1cmkpOwogICAgIGlmICh1cmwgPT0gcmVx
dWVzdC0+cHJpdi0+cmVzb3VyY2VSZXF1ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmlu
ZGV4IGI4Y2EwMDJmMTQ3ZjMxMGJmMTlhOGJhMTBmODJmNzIzZDI3NmU4ZTYuLmFhMjU0ZDgxM2U0
OTY3NTlkNTNlNWYzYzdlOTcyMTQ1NzRlMzg4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNTg4LDcgKzU4OCw3IEBAIHZv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgUV9RKFFR
dWlja1dlYlZpZXcpOwogCi0gICAgUVVybCB1cmwoS1VSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJp
bmcsIHdlYlBhZ2VQcm94eS0+dXJsQXRQcm9jZXNzRXhpdCgpKSk7CisgICAgUVVybCB1cmwoVVJM
KFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgd2ViUGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0
KCkpKTsKICAgICBxV2FybmluZygiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2Vk
IGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJpbnRhYmxlKHVybC50b1N0cmluZyhRVXJsOjpSZW1vdmVV
c2VySW5mbykpKTsKIAogICAgIHBhZ2VFdmVudEhhbmRsZXItPnJlc2V0R2VzdHVyZVJlY29nbml6
ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IDVkOWM0YjJlYTNjYzRkMzg4YzM0YjdjOTU4NWM3
NjdjOTJjOGRlNjguLmMwMjZkNzc0NDY0YWM5Zjc0Y2EwOWFkNjRjMTRlMGI1NGFlMDYzOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
SFRUUFJlcXVlc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHNpemVfdCBIVFRQUmVxdWVzdDo6cGFy
c2VSZXF1ZXN0TGluZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZh
CiB7CiAgICAgU3RyaW5nIHVybDsKICAgICBzaXplX3QgcmVzdWx0ID0gcGFyc2VIVFRQUmVxdWVz
dExpbmUoZGF0YSwgbGVuZ3RoLCBmYWlsdXJlUmVhc29uLCBtX3JlcXVlc3RNZXRob2QsIHVybCwg
bV9odHRwVmVyc2lvbik7Ci0gICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKKyAgICBtX3Vy
bCA9IFVSTChVUkwoKSwgdXJsKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTMsNyAr
MTEzLDcgQEAgSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KCkKIHsKIH0KIAotSFRUUFJlcXVlc3Q6
OkhUVFBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgS1VSTCYgdXJs
LCBIVFRQVmVyc2lvbiB2ZXJzaW9uKQorSFRUUFJlcXVlc3Q6OkhUVFBSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIEhUVFBWZXJzaW9uIHZlcnNpb24p
CiAgICAgOiBtX3VybCh1cmwpCiAgICAgLCBtX2h0dHBWZXJzaW9uKHZlcnNpb24pCiAgICAgLCBt
X3JlcXVlc3RNZXRob2QocmVxdWVzdE1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuaAppbmRleCA3MTllMjQxMTRk
YTA2MDk3MmNiZWRjZDM1NjFmNDVhZGI1ZmJmMGY0Li5lY2RhMTRlOTliYzA1MTM5Zjg0NTM5ODYz
MGM2NmMzNzU5NDI5MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNs
dWRlIDxXZWJDb3JlL0hUVFBIZWFkZXJNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUVFBQYXJz
ZXJzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCwxNSArNDQsMTUgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVk
PEhUVFBSZXF1ZXN0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRUUFJlcXVl
c3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdCgpKTsgfQotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXF1
ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBWZXJzaW9u
IHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVFRQUmVxdWVzdChyZXF1ZXN0TWV0aG9k
LCB1cmwsIHZlcnNpb24pKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVy
bCwgV2ViQ29yZTo6SFRUUFZlcnNpb24gdmVyc2lvbikgeyByZXR1cm4gYWRvcHRSZWYobmV3IEhU
VFBSZXF1ZXN0KHJlcXVlc3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CiAgICAgdmly
dHVhbCB+SFRUUFJlcXVlc3QoKTsKIAogICAgIFN0cmluZyByZXF1ZXN0TWV0aG9kKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0TWV0aG9kOyB9CiAgICAgdm9pZCBzZXRSZXF1ZXN0TWV0aG9kKGNv
bnN0IFN0cmluZyYgbWV0aG9kKSB7IG1fcmVxdWVzdE1ldGhvZCA9IG1ldGhvZDsgfQogCi0gICAg
V2ViQ29yZTo6S1VSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgIHZvaWQgc2V0
VVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQorICAgIFdlYkNv
cmU6OlVSTCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIHZvaWQgc2V0VVJMKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CiAKICAgICBjb25zdCBWZWN0
b3I8dW5zaWduZWQgY2hhcj4mIGJvZHkoKSBjb25zdCB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAt
NjIsMTQgKzYyLDE0IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEhUVFBSZXF1ZXN0KCk7
Ci0gICAgSFRUUFJlcXVlc3QoY29uc3QgU3RyaW5nJiByZXF1ZXN0TWV0aG9kLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgV2ViQ29yZTo6SFRUUFZlcnNpb24pOworICAgIEhUVFBSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6SFRU
UFZlcnNpb24pOwogCiAgICAgLy8gUGFyc2luZyBoZWxwZXJzLgogICAgIHNpemVfdCBwYXJzZVJl
cXVlc3RMaW5lKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVy
ZVJlYXNvbik7CiAgICAgc2l6ZV90IHBhcnNlSGVhZGVycyhjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHNpemVfdCBwYXJzZVJlcXVl
c3RCb2R5KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogCi0gICAgV2ViQ29yZTo6
S1VSTCBtX3VybDsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CiAgICAgV2ViQ29yZTo6SFRUUFZl
cnNpb24gbV9odHRwVmVyc2lvbjsKICAgICBTdHJpbmcgbV9yZXF1ZXN0TWV0aG9kOwogICAgIFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNl
cnZlci5jcHAKaW5kZXggY2JiZDczZjY2NjBjYmE3MzUyODg1NDMyMTUyY2JhZmI1MGMwYWQ2ZC4u
Y2U1MzY4NGFiMzQ4NDA4ZmI5ZjBjZTY0NDI4NDVlODFkMDQwZjBjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5z
cGVjdG9yU2VydmVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2Vy
dmVyOjpzZW5kTWVzc2FnZU92ZXJDb25uZWN0aW9uKHVuc2lnbmVkIHBhZ2VJZEZvckNvbm5lY3Rp
b24sCiB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBS
ZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFBhc3NSZWZQdHI8
SFRUUFJlcXVlc3Q+IHJlcXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkgY29udGFpbnMg
b25seSB0aGUgcGF0aCBleHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxpbmUKLSAgICAv
LyBhbmQgS1VSTCBpcyBwb29yIGF0IHBhcnNpbmcgaW5jb21wbGV0ZSBVUkxzLCBzbyBleHRyYWN0
IHRoZSBpbnRlcmVzdGluZyBwYXJ0cyBtYW51YWxseS4KKyAgICAvLyBhbmQgVVJMIGlzIHBvb3Ig
YXQgcGFyc2luZyBpbmNvbXBsZXRlIFVSTHMsIHNvIGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBh
cnRzIG1hbnVhbGx5LgogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgc2l6
ZV90IHBhdGhFbmQgPSBwYXRoLmZpbmQoJz8nKTsKICAgICBpZiAocGF0aEVuZCA9PSBub3RGb3Vu
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbklu
Zm9TdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZv
U3RvcmUuY3BwCmluZGV4IDg2Y2JiYWRiZGVjNzQzODk1ZjkzODZiMjQwMjIzOWM2MzJkMTE4YjAu
LjUxY2ZlZTlkNmY4YWJkZmI0M2YyOWExZTIzNmQxZDFlMmFmMDJlYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcApAQCAt
MjksNyArMjksNyBAQAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaW5jbHVk
ZSAiUGx1Z2luTW9kdWxlSW5mby5oIgotI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpAQCAt
MTU4LDcgKzE1OCw3IEBAIFBsdWdpbk1vZHVsZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGx1
Z2luRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uCiAgICAgcmV0dXJuIFBsdWdp
bk1vZHVsZUluZm8oKTsKIH0KIAotc3RhdGljIGlubGluZSBTdHJpbmcgcGF0aEV4dGVuc2lvbihj
b25zdCBLVVJMJiB1cmwpCitzdGF0aWMgaW5saW5lIFN0cmluZyBwYXRoRXh0ZW5zaW9uKGNvbnN0
IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBleHRlbnNpb247CiAgICAgU3RyaW5nIGZpbGVuYW1l
ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgUGx1Z2luTW9k
dWxlSW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW5XaXRoQnVuZGxlSWRlbnRpZmllcihj
b25zdCBTdHJpbmcmKQogCiAjZW5kaWYKIAotUGx1Z2luTW9kdWxlSW5mbyBQbHVnaW5JbmZvU3Rv
cmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgS1VSTCYgdXJsLCBQbHVnaW5E
YXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzKQorUGx1Z2luTW9kdWxl
SW5mbyBQbHVnaW5JbmZvU3RvcmU6OmZpbmRQbHVnaW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
VVJMJiB1cmwsIFBsdWdpbkRhdGE6OkFsbG93ZWRQbHVnaW5UeXBlcyBhbGxvd2VkUGx1Z2luVHlw
ZXMpCiB7CiAgICAgbG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSgpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAppbmRleCBjNDlj
ZWE3YjlhYjFkODdiYWI3MWU2MzNhNTk4ZmFiMWRlMTA0NmFlLi5jZWU3MTg0ZGQ2MDVlNGUxMzQ4
YTM3MzA5MjE5NmM5NWQzOTg2NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5JbmZvU3RvcmUuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3Mg
S1VSTDsKKyAgICBjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjMsNyAr
NjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgaW5mbyBmb3IgYSBwbHVnLWluIHRo
YXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gTUlNRSB0eXBlLgogICAgIC8vIElmIHRoZSBNSU1FIHR5
cGUgaXMgbnVsbCwgdGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBnaXZlbiB1cmwgd2lsbCBiZSB1
c2VkIHRvIGluZmVyIHRoZQogICAgIC8vIHBsdWctaW4gdHlwZS4gSW4gdGhhdCBjYXNlLCBtaW1l
VHlwZSB3aWxsIGJlIGZpbGxlZCBpbiB3aXRoIHRoZSByaWdodCBNSU1FIHR5cGUuCi0gICAgUGx1
Z2luTW9kdWxlSW5mbyBmaW5kUGx1Z2luKFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBXZWJDb3JlOjpQbHVnaW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgPSBXZWJDb3Jl
OjpQbHVnaW5EYXRhOjpBbGxQbHVnaW5zKTsKKyAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVn
aW4oU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV2ViQ29yZTo6UGx1Z2lu
RGF0YTo6QWxsb3dlZFBsdWdpblR5cGVzID0gV2ViQ29yZTo6UGx1Z2luRGF0YTo6QWxsUGx1Z2lu
cyk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBpbmZvIGZvciB0aGUgcGx1Zy1pbiB3aXRoIHRoZSBn
aXZlbiBidW5kbGUgaWRlbnRpZmllci4KICAgICBQbHVnaW5Nb2R1bGVJbmZvIGZpbmRQbHVnaW5X
aXRoQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nl
c3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggYWMzZGRhOGUyN2YxZWViNzI4Y2Y4MjMwNzAzOWRk
ZTM1MzdkNDQ4OC4uN2IwYzE0YjMwYTJkM2Y1NzY1YWQzMTA4ZWM0NWNkZGE3YTg5OWNkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nl
c3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMv
UGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAjaW1wb3J0ICJQbHVn
aW5Qcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oPgogI2ltcG9ydCA8Y3J0X2V4dGVybnMuaD4KICNpbXBvcnQgPG1hY2gtby9k
eWxkLmg+CkBAIC00NjIsMTAgKzQ2MiwxMCBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6b3Bl
blVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgYm9vbCYgcmVzdWx0LCBpbnQzMl90JgogCiAg
ICAgcmVzdWx0ID0gdHJ1ZTsKICAgICBDRlVSTFJlZiBsYXVuY2hlZFVSTDsKLSAgICBzdGF0dXMg
PSBMU09wZW5DRlVSTFJlZihLVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKS5jcmVhdGVD
RlVSTCgpLmdldCgpLCAmbGF1bmNoZWRVUkwpOworICAgIHN0YXR1cyA9IExTT3BlbkNGVVJMUmVm
KFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKS5nZXQoKSwgJmxh
dW5jaGVkVVJMKTsKIAogICAgIGlmIChsYXVuY2hlZFVSTCkgewotICAgICAgICBsYXVuY2hlZFVS
TFN0cmluZyA9IEtVUkwobGF1bmNoZWRVUkwpLnN0cmluZygpOworICAgICAgICBsYXVuY2hlZFVS
TFN0cmluZyA9IFVSTChsYXVuY2hlZFVSTCkuc3RyaW5nKCk7CiAgICAgICAgIENGUmVsZWFzZShs
YXVuY2hlZFVSTCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjJiODEzNTc2MjY1Mzg1M2FlMzkxZDMwMjEwN2JjY2Qw
YWU1MWMyYS4uMmQyZjNiMzRmMmUxOTE2M2JmMDRhNWI0MTQ0M2E0MjY2MjFlMTMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0zMTYs
OSArMzE2LDkgQEAgYm9vbCBXZWJJbnNwZWN0b3JQcm94eTo6aXNJbnNwZWN0b3JQYWdlKFdlYlBh
Z2VQcm94eSogcGFnZSkKIAogc3RhdGljIGJvb2wgaXNNYWluSW5zcGVjdG9yUGFnZShjb25zdCBX
ZWJJbnNwZWN0b3JQcm94eSogd2ViSW5zcGVjdG9yUHJveHksIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0UmVmKQogewotICAgIC8vIFVzZSBLVVJMIHNvIHdlIGNhbiBjb21wYXJlIGp1c3QgdGhlIHBh
dGhzLgotICAgIEtVUkwgaW5zcGVjdG9yVVJMKEtVUkwoKSwgd2ViSW5zcGVjdG9yUHJveHktPmlu
c3BlY3RvclBhZ2VVUkwoKSk7Ci0gICAgS1VSTCByZXF1ZXN0VVJMKEtVUkwoKSwgdG9JbXBsKHJl
cXVlc3RSZWYpLT51cmwoKSk7CisgICAgLy8gVXNlIFVSTCBzbyB3ZSBjYW4gY29tcGFyZSBqdXN0
IHRoZSBwYXRocy4KKyAgICBVUkwgaW5zcGVjdG9yVVJMKFVSTCgpLCB3ZWJJbnNwZWN0b3JQcm94
eS0+aW5zcGVjdG9yUGFnZVVSTCgpKTsKKyAgICBVUkwgcmVxdWVzdFVSTChVUkwoKSwgdG9JbXBs
KHJlcXVlc3RSZWYpLT51cmwoKSk7CiAKICAgICBBU1NFUlQoV2ViQ29yZTo6U2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChpbnNwZWN0b3JVUkwucHJvdG9jb2woKSkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBhbmVsUmVz
dWx0TGlzdGVuZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJQcm94eS5jcHAKaW5kZXggMjg4YTczNmZiMDMyNzQzMDI4MThmNzZj
MzFhMmJjNzI5NDA3MjVhNC4uNTZkMjAxYWYwM2VmZjc0OWFhMDFmYzE4Y2VlZTEyOGM5YWY1NTBk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVk
ZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC01Nyw3ICs1Nyw3IEBA
IHZvaWQgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTo6Y2hvb3NlRmlsZXMoSW1tdXRh
YmxlQXJyYXkqIGZpbGVVUkxzQXJyYXkpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKICAgICAgICAgV2ViVVJMKiB3ZWJVUkwgPSBmaWxlVVJMc0FycmF5LT5hdDxXZWJV
Ukw+KGkpOwogICAgICAgICBpZiAod2ViVVJMKSB7Ci0gICAgICAgICAgICBLVVJMIHVybChLVVJM
KCksIHdlYlVSTC0+c3RyaW5nKCkpOyAKKyAgICAgICAgICAgIFVSTCB1cmwoVVJMKCksIHdlYlVS
TC0+c3RyaW5nKCkpOyAKICAgICAgICAgICAgIGZpbGVQYXRocy51bmNoZWNrZWRBcHBlbmQodXJs
LmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAppbmRleCAwY2RiZjgxN2RkZWMwOTU4YjYwM2FiZDdkY2I2
NzA0MTA3ZTc4NDU5Li43NTUzZWVlMDNmNzFiODQyZGQ1NjY4NTAwYmMzZTMwZmVlZTcxM2E4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZUdyb3VwLmNwcApAQCAtMTU0LDcgKzE1
NCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwOjphZGRVc2VyU3R5bGVTaGVldChjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMCiAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0IHVzZXJTdHls
ZVNoZWV0ID0gV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQoc291cmNlLCAoYmFzZVVSTC5pc0VtcHR5
KCkgPyBXZWJDb3JlOjpibGFua1VSTCgpIDogV2ViQ29yZTo6S1VSTChXZWJDb3JlOjpLVVJMKCks
IGJhc2VVUkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxh
Y2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICBXZWJDb3JlOjpVc2VyU3R5bGVT
aGVldCB1c2VyU3R5bGVTaGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgKGJh
c2VVUkwuaXNFbXB0eSgpID8gV2ViQ29yZTo6YmxhbmtVUkwoKSA6IFdlYkNvcmU6OlVSTChXZWJD
b3JlOjpVUkwoKSwgYmFzZVVSTCkpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmlu
Z1ZlY3RvcihibGFja2xpc3QpLCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpOwogCiAgICAgbV9kYXRh
LnVzZXJTdHlsZVNoZWV0cy5hcHBlbmQodXNlclN0eWxlU2hlZXQpOwogICAgIHNlbmRUb0FsbFBy
b2Nlc3Nlc0luR3JvdXAoTWVzc2FnZXM6OldlYlBhZ2VHcm91cFByb3h5OjpBZGRVc2VyU3R5bGVT
aGVldCh1c2VyU3R5bGVTaGVldCksIG1fZGF0YS5wYWdlR3JvdXBJRCk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgdm9pZCBXZWJQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgSW0KICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2NyaXB0ID0g
V2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/IFdlYkNvcmU6
OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgYmFzZVVSTCkpLCB0
b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QpLCBpbmpl
Y3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7CisgICAgV2ViQ29yZTo6VXNlclNjcmlwdCB1c2Vy
U2NyaXB0ID0gV2ViQ29yZTo6VXNlclNjcmlwdChzb3VyY2UsIChiYXNlVVJMLmlzRW1wdHkoKSA/
IFdlYkNvcmU6OmJsYW5rVVJMKCkgOiBXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIGJhc2VV
UkwpKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0
KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpOwogCiAgICAgbV9kYXRhLnVzZXJTY3Jp
cHRzLmFwcGVuZCh1c2VyU2NyaXB0KTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXNJbkdyb3VwKE1l
c3NhZ2VzOjpXZWJQYWdlR3JvdXBQcm94eTo6QWRkVXNlclNjcmlwdCh1c2VyU2NyaXB0KSwgbV9k
YXRhLnBhZ2VHcm91cElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggYjA5MmYyOTNkMjk5ODAxZTU2NWNkODgxMjRlOTE2M2ZkZGE1ZGIwMC4uYjA2NjJl
ZGQyNGI0NDAyZTdiMTExZGMxMmM1MzA0ZmI4ZjZkNGU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6dHJ5Q2xvc2UoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlUHJv
eHk6Om1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgS1VSTCYgdXJs
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCitib29s
IFdlYlBhZ2VQcm94eTo6bWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShjb25z
dCBVUkwmIHVybCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQogewogICAgIGlmICghdXJsLmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFVSTChjb25zdCBT
dHJpbmcmIHVybCwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlBy
b2Nlc3MoKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlOwotICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUoS1VSTChLVVJMKCksIHVybCksIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1heWJlSW5pdGlhbGl6ZVNhbmRib3hF
eHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCB1cmwpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
ICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAgICAgbV9wcm9jZXNzLT53aWxsQWNxdWly
ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbigpOwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTCh1cmwsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEpKSwgbV9wYWdlSUQpOwpAQCAt
NzA2LDE1ICs3MDYsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZUQKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmVhdHRhY2hUb1dlYlByb2Nlc3MoKTsKIAotICAgIEtVUkwgZmlsZVVS
TCA9IEtVUkwoS1VSTCgpLCBmaWxlVVJMU3RyaW5nKTsKKyAgICBVUkwgZmlsZVVSTCA9IFVSTChV
UkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgcmVzb3VyY2VEaXJlY3RvcnlVUkw7CisgICAgVVJM
IHJlc291cmNlRGlyZWN0b3J5VVJMOwogICAgIGlmIChyZXNvdXJjZURpcmVjdG9yeVVSTFN0cmlu
Zy5pc051bGwoKSkKLSAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBLVVJMKFBhcnNlZFVS
TFN0cmluZywgQVNDSUlMaXRlcmFsKCJmaWxlOi8vLyIpKTsKKyAgICAgICAgcmVzb3VyY2VEaXJl
Y3RvcnlVUkwgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCBBU0NJSUxpdGVyYWwoImZpbGU6Ly8vIikp
OwogICAgIGVsc2UgewotICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IEtVUkwoS1VSTCgp
LCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CisgICAgICAgIHJlc291cmNlRGlyZWN0b3J5
VVJMID0gVVJMKFVSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlm
ICghcmVzb3VyY2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03OTcsNyArNzk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbG9hZChi
b29sIHJlbG9hZEZyb21PcmlnaW4pCiAgICAgICAgIHNldFBlbmRpbmdBUElSZXF1ZXN0VVJMKHVy
bCk7CiAKICAgICAgICAgLy8gV2UgbWF5IG5vdCBoYXZlIGFuIGV4dGVuc2lvbiB5ZXQgaWYgYmFj
ay9mb3J3YXJkIGxpc3Qgd2FzIHJlaW5zdGF0ZWQgYWZ0ZXIgYSBXZWJQcm9jZXNzIGNyYXNoIG9y
IGEgYnJvd3NlciByZWxhdW5jaAotICAgICAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXli
ZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCB1cmwpLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5
YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShVUkwoVVJMKCksIHVybCksIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpOwogICAgICAgICBpZiAoY3JlYXRlZEV4dGVuc2lvbikKICAgICAg
ICAgICAgIG1fcHJvY2Vzcy0+d2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24oKTsKICAgICB9CkBAIC05NTIsNyArOTUyLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmNh
blNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7
Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1
Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgS1VSTCgpKTsKKyAgICBQbHVn
aW5Nb2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3Rv
cmUoKS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBVUkwoKSk7CiAgICAgaWYgKCFwbHVnaW4ucGF0
aC5pc051bGwoKSAmJiBtX3BhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCkBAIC0xNDI5LDcgKzE0MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdp
bihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAg
IHBsdWdpbkxvYWRQb2xpY3kgPSBQbHVnaW5Nb2R1bGVMb2FkTm9ybWFsbHk7CiAKICAgICBQbHVn
aW5EYXRhOjpBbGxvd2VkUGx1Z2luVHlwZXMgYWxsb3dlZFBsdWdpblR5cGVzID0gYWxsb3dPbmx5
QXBwbGljYXRpb25QbHVnaW5zID8gUGx1Z2luRGF0YTo6T25seUFwcGxpY2F0aW9uUGx1Z2lucyA6
IFBsdWdpbkRhdGE6OkFsbFBsdWdpbnM7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1l
VHlwZSwgS1VSTChLVVJMKCksIHVybFN0cmluZyksIGFsbG93ZWRQbHVnaW5UeXBlcyk7CisgICAg
UGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5m
b1N0b3JlKCkuZmluZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCB1cmxTdHJpbmcpLCBh
bGxvd2VkUGx1Z2luVHlwZXMpOwogICAgIGlmICghcGx1Z2luLnBhdGgpIHsKICAgICAgICAgcGx1
Z2luUHJvY2Vzc1Rva2VuID0gMDsKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxMCw3ICsyNzEwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50
MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWIKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFy
eT4gcGx1Z2luSW5mb3JtYXRpb247CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAg
ICAgU3RyaW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgUGx1Z2luTW9kdWxlSW5mbyBw
bHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdp
bihuZXdNaW1lVHlwZSwgS1VSTChLVVJMKCksIHBsdWdpblVSTFN0cmluZykpOworICAgIFBsdWdp
bk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9y
ZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIFVSTChVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7
CiAgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25h
cnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIHBsdWdp
bnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCiAKQEAg
LTMwMDcsNyArMzAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVt
KHVpbnQ2NF90IGl0ZW1JRCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKCFpdGVt
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIGNyZWF0ZWRFeHRlbnNpb24gPSBtYXliZUlu
aXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKEtVUkwoS1VSTCgpLCBpdGVtLT51cmwoKSks
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGJvb2wgY3JlYXRlZEV4dGVuc2lvbiA9IG1h
eWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoVVJMKFVSTCgpLCBpdGVtLT51cmwo
KSksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQog
ICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0
ZW5zaW9uKCk7CiAgICAgbV9iYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGl0ZW0pOwpAQCAtMzI4
OSwxNSArMzI4OSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICB9CiAjZW5kaWYKICAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9E
aXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJM
KEtVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1h
Z2VVUkwpKTsKKyAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCktPmRvd25sb2FkKHRoaXMsIFVS
TChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlSW1h
Z2VVUkwpKTsKICAgICAgICAgcmV0dXJuOyAgICAKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9u
KCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7Ci0gICAgICAgIG1f
cHJvY2Vzcy0+Y29udGV4dCgpLT5kb3dubG9hZCh0aGlzLCBLVVJMKEtVUkwoKSwgbV9hY3RpdmVD
b250ZXh0TWVudUhpdFRlc3RSZXN1bHREYXRhLmFic29sdXRlTGlua1VSTCkpOworICAgICAgICBt
X3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93bmxvYWQodGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNv
bnRleHRNZW51SGl0VGVzdFJlc3VsdERhdGEuYWJzb2x1dGVMaW5rVVJMKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+ZG93
bmxvYWQodGhpcywgS1VSTChLVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0
RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5k
b3dubG9hZCh0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVIaXRUZXN0UmVzdWx0
RGF0YS5hYnNvbHV0ZU1lZGlhVVJMKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlw
aW5nKSB7CkBAIC00MTU3LDcgKzQxNTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgUwogCiAj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBTdHJp
bmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKLSAgICBQbHVnaW5Nb2R1bGVJbmZvIHBsdWdpbiA9
IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1Z2luKG5ld01p
bWVUeXBlLCBLVVJMKEtVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7CisgICAgUGx1Z2luTW9kdWxl
SW5mbyBwbHVnaW4gPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmlu
ZFBsdWdpbihuZXdNaW1lVHlwZSwgVVJMKFVSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsKICAgICBw
bHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVn
aW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0
cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1p
bWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA1OWNm
Y2RmMWU3MmVhMmM2ZTNiOTRkNmQ2YWNiMzZkZjBkNTQ5Y2RmLi4zNzllYWRjOWE0OWM3MzVkMzg4
NDljMzJmMTIzZDQ0YTY5NGUzNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQZW5k
aW5nQVBJUmVxdWVzdFVSTCgpIHsgbV9wZW5kaW5nQVBJUmVxdWVzdFVSTCA9IFN0cmluZygpOyB9
CiAgICAgdm9pZCBzZXRQZW5kaW5nQVBJUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIHBlbmRpbmdB
UElSZXF1ZXN0VVJMKSB7IG1fcGVuZGluZ0FQSVJlcXVlc3RVUkwgPSBwZW5kaW5nQVBJUmVxdWVz
dFVSTDsgfQogCi0gICAgYm9vbCBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKKyAgICBi
b29sIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdm9pZCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoYm9vbCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDNhZjNjNzQ0M2Q0Y2E0
ZTVjNmUyNzE3Njk2NmUzMWExYzIyMTlkLi5kNmI2NmE3ZTM1OWI0M2EyODEwYjk5ZTUwZjBlYmJj
Nzg5ZTQ2Y2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgIldlYlBsdWdpblNpdGVEYXRhTWFuYWdl
ci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIyNSwx
MyArMjI1LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3Rlck5ld1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSoKIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7
Ci0gICAgS1VSTCB1cmwoS1VSTCgpLCB1cmxTdHJpbmcpOworICAgIFVSTCB1cmwoVVJMKCksIHVy
bFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHVybFN0cmluZyBkb2VzIG5vdCBwb2ludCB0
byBhIGRpcmVjdG9yeS4KICAgICAvLyBHZXQgdXJsJ3MgYmFzZSBVUkwgdG8gYWRkIHRvIG1fbG9j
YWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy4KLSAgICBLVVJMIGJhc2VVUkwoS1VSTCgpLCB1
cmwuYmFzZUFzU3RyaW5nKCkpOworICAgIFVSTCBiYXNlVVJMKFVSTCgpLCB1cmwuYmFzZUFzU3Ry
aW5nKCkpOwogICAgIAogICAgIC8vIENsaWVudCBsb2FkcyBhbiBhbHRlcm5hdGUgc3RyaW5nLiBU
aGlzIGRvZXNuJ3QgZ3JhbnQgdW5pdmVyc2FsIGZpbGUgcmVhZCwgYnV0IHRoZSB3ZWIgcHJvY2Vz
cyBpcyBhc3N1bWVkCiAgICAgLy8gdG8gaGF2ZSByZWFkIGFjY2VzcyB0byB0aGlzIGRpcmVjdG9y
eSBhbHJlYWR5LgpAQCAtMjQwLDEwICsyNDAsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFz
c3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIGJvb2wg
V2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJv
Y2VzcyhLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSk7CisgICAgcmV0dXJuIGNoZWNrVVJMUmVjZWl2
ZWRGcm9tV2ViUHJvY2VzcyhVUkwoVVJMKCksIHVybFN0cmluZykpOwogfQogCi1ib29sIFdlYlBy
b2Nlc3NQcm94eTo6Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKGNvbnN0IEtVUkwmIHVy
bCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3Mo
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGNoZWNraW5nIHRoYXQg
dGhlIFVSTCBpcyB2YWxpZC4gQ3VycmVudGx5LCBXZWJQcm9jZXNzIHNlbmRzIGludmFsaWQgVVJM
cyBpbiBtYW55IGNhc2VzLCBidXQgaXQgcHJvYmFibHkgZG9lc24ndCBoYXZlIGdvb2QgcmVhc29u
cyB0byBkbyB0aGF0LgogCkBAIC0yNTYsNyArMjU2LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6
OmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBLVVJMJiB1cmwpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gSWYgd2UgbG9hZGVkIGEgc3RyaW5nIHdpdGggYSBmaWxl
IGJhc2UgVVJMIGJlZm9yZSwgbG9hZGluZyByZXNvdXJjZXMgZnJvbSB0aGF0IHN1YmRpcmVjdG9y
eSBpcyBmaW5lLgotICAgIC8vIFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMsIGJlY2F1c2Ug
YWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0aCBLVVJMLCB3
aGljaCByZW1vdmVzIHRob3NlLgorICAgIC8vIFRoZXJlIGFyZSBubyAiLi4iIGNvbXBvbmVudHMs
IGJlY2F1c2UgYWxsIFVSTHMgcmVjZWl2ZWQgZnJvbSBXZWJQcm9jZXNzIGFyZSBwYXJzZWQgd2l0
aCBVUkwsIHdoaWNoIHJlbW92ZXMgdGhvc2UuCiAgICAgU3RyaW5nIHBhdGggPSB1cmwuZmlsZVN5
c3RlbVBhdGgoKTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRl
ciA9IG1fbG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5iZWdpbigpOyBpdGVyICE9IG1f
bG9jYWxQYXRoc1dpdGhBc3N1bWVkUmVhZEFjY2Vzcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAg
IGlmIChwYXRoLnN0YXJ0c1dpdGgoKml0ZXIpKQpAQCAtMjY2LDkgKzI2Niw5IEBAIGJvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MoY29uc3QgS1VSTCYg
dXJsKQogICAgIC8vIEl0ZW1zIGluIGJhY2svZm9yd2FyZCBsaXN0IGhhdmUgYmVlbiBhbHJlYWR5
IGNoZWNrZWQuCiAgICAgLy8gT25lIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIGZpbGUgVVJMcyBpbiBiL2YgbGlzdCBpcyBpZiB0aGUgbGlzdCBoYXMgYmVl
biByZWluc3RhdGVkIGFmdGVyIGEgY3Jhc2ggb3IgYSBicm93c2VyIHJlc3RhcnQuCiAgICAgZm9y
IChXZWJCYWNrRm9yd2FyZExpc3RJdGVtTWFwOjppdGVyYXRvciBpdGVyID0gbV9iYWNrRm9yd2Fy
ZExpc3RJdGVtTWFwLmJlZ2luKCksIGVuZCA9IG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5lbmQo
KTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXIt
PnZhbHVlLT51cmwoKSkuZmlsZVN5c3RlbVBhdGgoKSA9PSBwYXRoKQorICAgICAgICBpZiAoVVJM
KFVSTCgpLCBpdGVyLT52YWx1ZS0+dXJsKCkpLmZpbGVTeXN0ZW1QYXRoKCkgPT0gcGF0aCkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoS1VSTChLVVJMKCksIGl0ZXItPnZh
bHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgpID09IHBhdGgpCisgICAgICAgIGlm
IChVUkwoVVJMKCksIGl0ZXItPnZhbHVlLT5vcmlnaW5hbFVSTCgpKS5maWxlU3lzdGVtUGF0aCgp
ID09IHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAwNWQ4ODM5YWE1ZTBmYWU4ZDFh
YjY5ODdhMGNkYmNiNzEyYzkzNjFhLi4xZjg0OTczOWVjZDk3MTBhYTE3NGI5MmY4ZmUwMGNhYzYz
NDU4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBA
IC00Niw3ICs0Niw3IEBACiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgS1VS
TDsKK2NsYXNzIFVSTDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogfTsKIApAQCAtMTAwLDcgKzEwMCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoY29uc3QgU3Ry
aW5nJik7CiAKICAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBT
dHJpbmcmKTsKLSAgICBib29sIGNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2Vzcyhjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CisgICAgYm9vbCBjaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBzdGF0aWMgYm9vbCBmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViQ29udGV4dE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4
dE1hYy5tbQppbmRleCAwZWI1Yjc3NDdiMjcwMjhmM2U5YzA0OTJiYjdiODAyNGI2YWE2Y2FlLi43
MzUwNzk2NDA4ZWNjZTZjYjJhYWJlYjYxOTMwOGQxNTlmYWYxNDkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWFjLm1tCkBAIC02MDAsNyArNjAwLDcgQEAg
c3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiBi
b29sIFdlYkNvbnRleHQ6OmlzVVJMS25vd25IU1RTSG9zdChjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSBjb25zdAogewogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA5MAotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJs
ID0gS1VSTChLVVJMKCksIHVybFN0cmluZykuY3JlYXRlQ0ZVUkwoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybCA9IFVSTChVUkwoKSwgdXJsU3RyaW5nKS5jcmVhdGVDRlVSTCgpOwogCiAg
ICAgcmV0dXJuIF9DRk5ldHdvcmtJc0tub3duSFNUU0hvc3RXaXRoU2Vzc2lvbih1cmwuZ2V0KCks
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkgOiBudWxs
cHRyKTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxl
QVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBkNWY4Y2Y1YmJkOTkwOWQ4ODRlZDYzMTE5
ZWE0YzlkMjZjODE3MTI4Li45M2ZjMDEwMGQzZjYyMmRlZjJlYzBjNzZmYThiOTEyN2RlYzQ0NTgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmlsZUFQSS9CbG9i
UmVnaXN0cnlQcm94eS5jcHAKQEAgLTM5LDIxICszOSwyMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NPd25QdHI8QmxvYkRhdGE+IGJsb2JE
YXRhKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYg
dXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsKICAgICBBU1NFUlQoV2ViUHJv
Y2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgQmxv
YlJlZ2lzdHJhdGlvbkRhdGEoYmxvYkRhdGEpKSwgMCk7CiB9CiAKLXZvaWQgQmxvYlJlZ2lzdHJ5
UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VS
TCkKK3ZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAw
KTsKIH0KIAotdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsKQordm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCA2M2QwZGE0MDA4NTJkZTQwZDcyNzVlNzJm
MDc0MzViOTMyZWJmNDI2Li5jMTUxYzExODUzNTUzNDViZTVkMzBiZDA3MWQ4ZWQ5NzUzYmM2ZTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lz
dHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJl
Z2lzdHJ5UHJveHkuaApAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgQmxvYlJlZ2lzdHJ5UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5IHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBQYXNzT3duUHRyPFdlYkNvcmU6OkJsb2JEYXRhPik7Ci0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
c3JjVVJMKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgUGFzc093blB0cjxXZWJDb3JlOjpCbG9iRGF0YT4pOworICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJM
JiBzcmNVUkwpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCmluZGV4
IDAyNDk2NGE2YzU2NzE3NGNiNzJjZTE1MTViODg0OTE1N2JkNGUzNWIuLjBlMDQwMmI1MTViMWM2
MzllZDI4ZDJlYTNkY2FkMDc5MDZkNmNiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5
ZXJUcmVlQXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAKIGJvb2wgV0tCdW5kbGVG
cmFtZUFsbG93c0ZvbGxvd2luZ0xpbmsoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxS
ZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZnJhbWVSZWYpLT5hbGxvd3NGb2xsb3dp
bmdMaW5rKFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6S1VSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYp
KSk7CisgICAgcmV0dXJuIHRvSW1wbChmcmFtZVJlZiktPmFsbG93c0ZvbGxvd2luZ0xpbmsoV2Vi
Q29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSk7CiB9CiAKIGJv
b2wgV0tCdW5kbGVGcmFtZUhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWVSZWYpCkBAIC0yMDQsMTIgKzIwNCwxMiBAQCBib29sIFdLQnVuZGxlRnJhbWVHZXREb2N1
bWVudEJhY2tncm91bmRDb2xvcihXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBkb3VibGUqCiAK
IFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5U3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJj
ZVdpdGhVUkwoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5zdWdnZXN0ZWRGaWxlbmFt
ZUZvclJlc291cmNlV2l0aFVSTChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZT
dHJpbmcodXJsUmVmKSkpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGZyYW1lUmVm
KS0+c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6VVJMKFdlYkNv
cmU6OlVSTCgpLCB0b1dURlN0cmluZyh1cmxSZWYpKSkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0J1
bmRsZUZyYW1lQ29weU1JTUVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWVSZWYsIFdLVVJMUmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKGZyYW1lUmVmKS0+bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoV2ViQ29yZTo6S1VSTChX
ZWJDb3JlOjpLVVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKSk7CisgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKFdlYkNv
cmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpKTsKIH0KIAogYm9v
bCBXS0J1bmRsZUZyYW1lQ29udGFpbnNBbnlGb3JtRWxlbWVudHMoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAyNmRkYjgxZTQxOGU0
MmZmY2VmNTUzNTJhYjQ1M2Q5MTA4YmQ3YWE0Li5iMjI5YzVlZGJhNjcwY2IwZTU0MzQ5MTlhNTcy
M2ViZWIwNTQzZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00OCw5ICs0
OCw5IEBACiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVhP
YmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQWNjZXNzaWJpbGl0eU9iamVjdC5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBA
IC0zNjQsNyArMzY0LDcgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTZXRGb290ZXJCYW5uZXIoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlUGFnZUJhbm5lclJlZgogCiBib29sIFdLQnVuZGxl
UGFnZUhhc0xvY2FsRGF0YUZvclVSTChXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tVUkxSZWYg
dXJsUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVS
TChXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OktVUkwoKSwgdG9XVEZTdHJpbmcodXJsUmVmKSkpOwor
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmhhc0xvY2FsRGF0YUZvclVSTChXZWJDb3JlOjpV
UkwoV2ViQ29yZTo6VVJMKCksIHRvV1RGU3RyaW5nKHVybFJlZikpKTsKIH0KIAogYm9vbCBXS0J1
bmRsZVBhZ2VDYW5IYW5kbGVSZXF1ZXN0KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAppbmRleCA1ZWUxMWQxYWUwMGZiYTNhNTAxMmIzOTk0ZDA0ZDM4ZmZm
MDAxNDMyLi5kMDhhZmE3ZGMyYmFkNzZkODk3YWU1M2E5OTQ3YjBkNzA2YzAyNTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtNDkyLDI2ICs0OTIsMjYgQEAgc3RhdGljIFZlY3RvcjxTdHJp
bmc+IHRvU3RyaW5nVmVjdG9yKEltbXV0YWJsZUFycmF5KiBwYXR0ZXJucykKIAogdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2UsIGNvbnN0IFN0cmluZyYgdXJsLCBJbW11dGFibGVBcnJheSogd2hpdGVsaXN0LCBJbW11dGFi
bGVBcnJheSogYmxhY2tsaXN0LCBXZWJDb3JlOjpVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmpl
Y3Rpb25UaW1lLCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJh
bWVzKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBLVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBo
YXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VSTCwgc28gd2UgaGF2ZSB0byB1c2UgdGhl
IHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRV
UkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAt
PmlkZW50aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29y
bGQoKSwgc291cmNlLCBLVVJMKEtVUkwoKSwgdXJsKSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0
KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFt
ZXMpOworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBu
b3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxh
dGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJp
bmdUYWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50
aWZpZXIoKSktPmFkZFVzZXJTY3JpcHRUb1dvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwg
c291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCksIHRvU3Ry
aW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGlvblRpbWUsIGluamVjdGVkRnJhbWVzKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJv
eHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNv
bnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgSW1tdXRhYmxlQXJyYXkqIHdo
aXRlbGlzdCwgSW1tdXRhYmxlQXJyYXkqIGJsYWNrbGlzdCwgV2ViQ29yZTo6VXNlckNvbnRlbnRJ
bmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKIHsKLSAgICAvLyB1cmwgaXMgbm90IGZyb20g
S1VSTDo6c3RyaW5nKCksIGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IEtV
UkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2ZSBVUkwgY29uc3RydWN0b3IgZm9yIEtV
UkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCi0gICAgUGFnZUdy
b3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5hZGRVc2VyU3R5bGVTaGVl
dFRvV29ybGQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBzb3VyY2UsIEtVUkwoS1VSTCgpLCB1
cmwpLCB0b1N0cmluZ1ZlY3Rvcih3aGl0ZWxpc3QpLCB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3Qp
LCBpbmplY3RlZEZyYW1lcyk7CisgICAgLy8gdXJsIGlzIG5vdCBmcm9tIFVSTDo6c3RyaW5nKCks
IGkuZS4gaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gcGFyc2VkIGJ5IFVSTCwgc28gd2UgaGF2ZSB0
byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgVVJMIGluc3RlYWQgb2YgdGhl
IFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgorICAgIFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBh
Z2VHcm91cC0+aWRlbnRpZmllcigpKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKHNjcmlwdFdv
cmxkLT5jb3JlV29ybGQoKSwgc291cmNlLCBVUkwoVVJMKCksIHVybCksIHRvU3RyaW5nVmVjdG9y
KHdoaXRlbGlzdCksIHRvU3RyaW5nVmVjdG9yKGJsYWNrbGlzdCksIGluamVjdGVkRnJhbWVzKTsK
IH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQ
cm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBzY3JpcHRXb3JsZCwg
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgLy8gdXJsIGlzIG5vdCBmcm9tIEtVUkw6OnN0cmlu
ZygpLCBpLmUuIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHBhcnNlZCBieSBLVVJMLCBzbyB3ZSBo
YXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBLVVJMIGluc3RlYWQg
b2YgdGhlIFBhcnNlZFVSTFN0cmluZ1RhZyB2ZXJzaW9uLgotICAgIFBhZ2VHcm91cDo6cGFnZUdy
b3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cmVtb3ZlVXNlclNjcmlwdEZyb21Xb3JsZChz
Y3JpcHRXb3JsZC0+Y29yZVdvcmxkKCksIEtVUkwoS1VSTCgpLCB1cmwpKTsKKyAgICAvLyB1cmwg
aXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBw
YXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRpdmUgVVJMIGNvbnN0cnVj
dG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5nVGFnIHZlcnNpb24uCisg
ICAgUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5yZW1vdmVV
c2VyU2NyaXB0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgVVJMKFVSTCgpLCB1
cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoV2Vi
UGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2Ny
aXB0V29ybGQsIGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIC8vIHVybCBpcyBub3QgZnJvbSBL
VVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgS1VS
TCwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIHJlbGF0aXZlIFVSTCBjb25zdHJ1Y3RvciBmb3IgS1VS
TCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdUYWcgdmVyc2lvbi4KLSAgICBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNo
ZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgS1VSTChLVVJMKCksIHVybCkp
OworICAgIC8vIHVybCBpcyBub3QgZnJvbSBVUkw6OnN0cmluZygpLCBpLmUuIGl0IGhhcyBub3Qg
YWxyZWFkeSBiZWVuIHBhcnNlZCBieSBVUkwsIHNvIHdlIGhhdmUgdG8gdXNlIHRoZSByZWxhdGl2
ZSBVUkwgY29uc3RydWN0b3IgZm9yIFVSTCBpbnN0ZWFkIG9mIHRoZSBQYXJzZWRVUkxTdHJpbmdU
YWcgdmVyc2lvbi4KKyAgICBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZp
ZXIoKSktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKHNjcmlwdFdvcmxkLT5jb3JlV29y
bGQoKSwgVVJMKFVSTCgpLCB1cmwpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVtb3Zl
VXNlclNjcmlwdHMoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZCogc2NyaXB0V29ybGQpCkBAIC01ODksNyArNTg5LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihXZWJQYWdlR3JvdXBQcm94eSogcGFn
ZUdyb3VwLCBjb24KIHsKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdlR3Jv
dXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAgZm9y
IChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0g
cGFnZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEtVUkwoS1VSTCgpLCBsb2NhdGlvbikpOworICAgICAgICAoKml0
ZXIpLT5zZXR0aW5ncygpLnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oVVJMKFVSTCgpLCBsb2Nh
dGlvbikpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRXZWJOb3RpZmljYXRpb25QZXJt
aXNzaW9uKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBib29sIGFs
bG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKaW5k
ZXggMTdlMmU5NjRmZmExMjYzODhkMGNhMzVlYzMxOWY0ZDY4YzgyZjFkNS4uZWY5MmQ5YjY4ZDc3
ZmUzZTkyNTgxOGM3NGQyYmZlN2RhZTU5YzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAxZjgwYjIwZmNlNDgzYjZlMmIyYzczMmE0M2I4YmJlMzJj
NWUxZDcxLi4zYzk3MDBkYTQ2MTQ5N2QyMzM0YzU2MTIxNzVhYWQ5MjE1Njk5YmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCkBAIC01NSw3
ICs1NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VTaGFyZWRCdWZmZXIodW5zaWduZWQgY2hhcios
IGNvbnN0IHZvaWQqIGRhdGEpCiAgICAgc3RhdGljX2Nhc3Q8U2hhcmVkQnVmZmVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDo6d2lsbExvYWREYXRhUmVxdWVzdChXZWJQYWdlKiBwYWdlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQordm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2VMb2FkZXJDbGllbnQ6OndpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSogcGFnZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWRCdWZmZXIqIGRhdGEsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUElPYmplY3QqIHVzZXJEYXRhKQogewogICAgIGlmICghbV9j
bGllbnQud2lsbExvYWREYXRhUmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKaW5kZXggNjgyYWFlZTM3ZTFjMmY4
NjVhMmZlZmNmYzYxMGU5NTQwMTZhMzczMC4uYzUzODY4MjNlMWQ3MjI2NTMwZjY1Nzc0ZmI2Zjhl
ZWEzMTBiMzg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5oCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBET01X
aW5kb3dFeHRlbnNpb247CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7Ci1jbGFzcyBLVVJMOworY2xh
c3MgVVJMOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFdlYkZyYW1lOwog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IDogcHVibGljIEFQSUNsaWVudDxX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQsIGtXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnRDdXJyZW50
VmVyc2lvbj4gewogcHVibGljOgogICAgIHZvaWQgd2lsbExvYWRVUkxSZXF1ZXN0KFdlYlBhZ2Uq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBBUElPYmplY3QqKTsKLSAgICB2b2lk
IHdpbGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBBUElPYmplY3QqKTsKKyAgICB2b2lkIHdp
bGxMb2FkRGF0YVJlcXVlc3QoV2ViUGFnZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIEFQSU9iamVjdCopOwogCiAgICAgYm9vbCBzaG91
bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlKiwgSW5qZWN0ZWRCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXgg
MTJhZTIzYmVlMGY3MGU4NGQzYTA0ZTNiYmI3NGZhZjg0ZmU5YzJiYi4uNDUxNjNlMGNjYmE3Y2Yy
ODg3ZTZiZDdkMzQ2NjM5ZDYxODAzYzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3Zl
KFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICBsb2FkZXItPmRldGFjaEZyb21D
b3JlTG9hZGVyKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09y
aWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBLVVJMJikKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VMb2FkZXIqLCBjb25zdCBVUkwmKQogewogICAgIC8vIFdlIGhhbmRsZSBjcm9zcyBvcmln
aW4gcmVkaXJlY3RzIGVudGlyZWx5IHdpdGhpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgLy8g
V2Ugb3ZlcnJpZGUgdGhpcyBjYWxsIGluIHRoZSBXZWJQcm9jZXNzIHRvIG1ha2UgaXQgYSBuby1v
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1NWY2ZTMxN2QzYWQ0OTIxNjBmYjMwOGFl
MWE5MzhlNDkzZWJjMThkLi43ZWUyYTdlZDEzYjEyMzJkZTAwZGY5MjdmYjZiZjZjODQ5ODEyZWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHNjaGVkdWxlUGx1Z2luU3RyZWFtTG9hZChXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Ok5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjcm9zc09yaWdpblJl
ZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiByZWRpcmVjdFVSTCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNyb3NzT3JpZ2lu
UmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVkaXJlY3RVUkwpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXJ2
ZVBlbmRpbmdSZXF1ZXN0cyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJp
b3JpdHkgPSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3cpIE9WRVJSSURFOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAyMDU0ZGY5MjJlZmQxNTYxMWIzNzYyN2Vm
MjYzYmIxNzA3ZmEyNjgxLi5jNGJhODM1NGEyMTg2MDFhZmU5NmE5OWY0YjI1ZWU4ODE3N2MxYjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUEhlYWRl
ck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUv
S1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8dXRp
bGl0eT4KQEAgLTc5MCw3ICs3OTAsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpkaWRFdmFsdWF0
ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlcwogICAgICAg
ICBwbHVnaW5TdHJlYW0tPnNlbmRKYXZhU2NyaXB0U3RyZWFtKHJlc3VsdCk7CiB9CiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1J
RCwgY29uc3QgS1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCit2b2lk
IE5ldHNjYXBlUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQogewogICAgIEFTU0VSVCht
X2lzU3RhcnRlZCk7CkBAIC04MjMsNyArODIzLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6c3Ry
ZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgICAg
IHBsdWdpblN0cmVhbS0+ZGlkRmFpbCh3YXNDYW5jZWxsZWQpOwogfQogCi12b2lkIE5ldHNjYXBl
UGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVzcG9u
c2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwg
Cit2b2lkIE5ldHNjYXBlUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMs
IGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgQVNTRVJUKG1f
aXNTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNjUxZGM0ZDBlMjFkYWExYTFl
MGMwMWFkOTYwMDFhM2MyMzQ1YzFiMS4uNGMxMzdhYTU3MTAzMjE2NzJlYjJhZDhlYWNiODhlZGQ1
MzEwNGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE5MCwxMiArMTkwLDEyIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBy
ZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVz
dElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2
YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAK
KyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
bGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBo
ZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBzdHJlYW1JRCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWlu
dDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNl
VVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAorICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0
IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmluaXNoTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAK
aW5kZXggMGFlNDRjM2NiNDc4OGNmMTY0OTEyY2I2YmZiODc3NWU0ZjZiNjMwYS4uYjE5YzEyYjZh
ZjgyM2Y1ZmRlYzg0MzNiNmE1MmJhYTM5NTdlM2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp+
TmV0c2NhcGVQbHVnaW5TdHJlYW0oKQogICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKLXZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBLVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIGhlYWRlcnMpCit2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVu
Z3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGhlYWRlcnMpCiB7CiAgICAgLy8gU3RhcnRpbmcgdGhlIHN0cmVhbSBjb3Vs
ZCBjYXVzZSB0aGUgcGx1Zy1pbiBzdHJlYW0gdG8gZ28gYXdheSBzbyB3ZSBrZWVwIGEgcmVmZXJl
bmNlIHRvIGl0IGhlcmUuCiAgICAgUmVmPE5ldHNjYXBlUGx1Z2luU3RyZWFtPiBwcm90ZWN0KCp0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggZmZhNTVjYjI1ZDhj
ZDg3NDQ2YmE4MzdmZDM5MGU4M2I4YzRhN2I3Mi4uYjM1MDE4NjM1NmU0OTU2MDNmNGNlMDJmMTk5
NGU4Yjk5MzkxYzE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTM4
LDcgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKLWNsYXNzIEtVUkw7CitjbGFzcyBVUkw7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdWludDY0X3Qgc3RyZWFtSUQoKSBjb25z
dCB7IHJldHVybiBtX3N0cmVhbUlEOyB9CiAgICAgY29uc3QgTlBTdHJlYW0qIG5wU3RyZWFtKCkg
Y29uc3QgeyByZXR1cm4gJm1fbnBTdHJlYW07IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNw
b25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRl
eCBiMjliZWM2MjYyODAwODYwZWYyNjNkZDI2ZjY1NDBlMTRmNTUwZGU4Li41NDExOTc0NzY5ZTdj
MGE3ZjMzMzViZTAzZjFiOGU0OTNlNTcxYjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEyMiwxMSArMTIyLDExIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBy
ZXF1ZXN0SUQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0
X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9h
ZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50
MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0
IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBt
YW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIE9WRVJSSURFOwpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fc2l6ZTsKIAot
ICAgIFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fc291cmNl
VVJMOwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggN2MzNDU0YmQ0ZGVjNDAwODEyOWIwNjg5
ZDIyYzA2NGUwYzE0YTBiYS4uZmEzNjE3Mzg1ODc3NjFhMzRjMzFiNGQ5NmM5YWY4NTE3OTQ5N2Ni
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KQEAgLTkxNyw3ICs5MTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGRmRG9jdW1lbnRE
aWRMb2FkKCkKICAgICAgICAgY3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIAotdm9pZCBQ
REZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgS1VSTCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1
Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVS
TCYsIHVpbnQzMl90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHN0cmVhbUlELCBzdHJlYW1JRCA9PSBwZGZEb2N1bWVudFJlcXVlc3RJRCk7CiAKQEAgLTk1
Miw3ICs5NTIsNyBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJl
YW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpCiAgICAgbV9kYXRhLmNsZWFyKCk7CiB9CiAKLXZvaWQg
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgS1VSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgVVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFt
TGVuZ3RoLCAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KQogewogICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERG
UGx1Z2luLmgKaW5kZXggMWQ5ZTk3YzBhZGZmNjg1Yzk1NTNiZDg0MThkNjI2OTEyMzgyMTBiZS4u
ZjdmMGQzYzliOWM2MDYxNDI5OTJjMjk2YTI4ODI0ZDU0ZDM2MTdmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5o
CkBAIC0xMTMsMTEgKzExMywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGZyYW1l
RGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZpcnR1YWwgdm9pZCBm
cmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFN0cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVS
TCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEo
dWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2Fz
Q2FuY2VsbGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5n
dGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1
aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1l
KTsKICAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKCk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9v
bCB3YXNDYW5jZWxsZWQpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIG1fc2l6ZTsKIAotICAgIFdlYkNvcmU6OktVUkwgbV9zb3VyY2VVUkw7Cisg
ICAgV2ViQ29yZTo6VVJMIG1fc291cmNlVVJMOwogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmls
ZW5hbWU7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVn
aW4ubW0KaW5kZXggZDc5NGYwMjlhN2IyNDg2MDk3NDJlNDZmMjNmMmEzYzA3NmZjOTNjMS4uZDkz
MGZiODU4MTk5OWY2ZDllMzExZDZiY2U4OTVjODhmMWU2OTMzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0K
QEAgLTYxNSw3ICs2MTUsNyBAQCB2b2lkIFNpbXBsZVBERlBsdWdpbjo6Y29udmVydFBvc3RTY3Jp
cHREYXRhSWZOZWVkZWQoKQogICAgIG1fZGF0YSA9IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KG1fZGF0YSk7CiB9CiAKLXZvaWQgU2ltcGxlUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IEtVUkwmLCB1aW50MzJfdCwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdCwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzdHJlYW1JRCwgc3RyZWFtSUQg
PT0gcGRmRG9jdW1lbnRSZXF1ZXN0SUQpOwogCkBAIC02NTAsNyArNjUwLDcgQEAgdm9pZCBTaW1w
bGVQREZQbHVnaW46OnN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2Fu
Y2VsbGVkKQogICAgIG1fZGF0YS5jbGVhcigpOwogfQogCi12b2lkIFNpbXBsZVBERlBsdWdpbjo6
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCit2b2lkIFNpbXBsZVBERlBsdWdpbjo6bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsK
ICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5kZXggOTBlNWU3NmNkMTNl
Y2VhNTljZjNiOGUzNzc5NTEzNWQ5YmE3ZTQ0MC4uZTg5ZjkxMTk4MjI3NjJjNzM4YTFhYzM2Nzc1
MTQwZjkyODk3YjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBQbHVnaW46OlBhcmFtZXRlcnM6OmRlY29k
ZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhcmFtZXRlcnMmIHAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHVybFN0cmluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAvLyBGSVhNRTogV2UgY2FuJ3QgYXNzdW1lIHRoYXQgdGhlIHVybCBwYXNzZWQgaW4gaGVyZSBp
cyB2YWxpZC4KLSAgICBwYXJhbWV0ZXJzLnVybCA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxT
dHJpbmcpOworICAgIHBhcmFtZXRlcnMudXJsID0gVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3Ry
aW5nKTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5uYW1lcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCBmOGRlNWE3OTA3MjI3YTI5YzM5ZDBjMmNhNjJlYWVhM2EwYzIxOWU4Li5kOThk
YTZjOTIxNzk2YjZjYzM0ODdiMmQ3OWJhZWIxOTk1YTFmNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVy
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC03Myw3ICs3Myw3
IEBAIGNsYXNzIFBsdWdpbkNvbnRyb2xsZXI7CiBjbGFzcyBQbHVnaW4gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8UGx1Z2luPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFBhcmFtZXRlcnMg
ewotICAgICAgICBXZWJDb3JlOjpLVVJMIHVybDsKKyAgICAgICAgV2ViQ29yZTo6VVJMIHVybDsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gbmFtZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZh
bHVlczsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpID0gMDsKIAogICAgIC8vIFRlbGxzIHRoZSBwbHVn
LWluIHRoYXQgYSBzdHJlYW0gaGFzIHJlY2VpdmVkIGl0cyBIVFRQIHJlc3BvbnNlLgotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAor
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFt
SUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs
YXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpID0gMDsKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRoYXQgYSBzdHJlYW0gZGlkIHJlY2VpdmUgZGF0YS4KQEAgLTE2Nyw3
ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0aGF0IHRoZSBtYW51YWwgc3RyZWFtIGhhcyByZWNlaXZlZCBpdHMgSFRUUCByZXNw
b25zZS4KLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OktVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAor
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
aW5kZXggMjlkYWNiMzNkYzFiNzU4NzQyNGUwMzc4YzIxYWU0NGJiNDdlNDk2ZS4uMTUxZDNmYzRl
NjUyYWNmOTU3N2IyNTc3MTAyNTVhNzUwZTMxZWI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0zOSw3ICszOSw3
IEBAIHR5cGVkZWYgdm9pZCogTlBJZGVudGlmaWVyOwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBLVVJM
OworICAgIGNsYXNzIFVSTDsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4
IGE4ZGU4YjI5NTBlMGU4MzJhNmU0ZjRmNTlkYzJhNjc2YjVlNWRmZjYuLjhhOGYyNzIzNDVmYjQ5
OGFiMDFmNjcxZWIxOTMzOTg5YThmNmU1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQg
UGx1Z2luUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNv
bnN0IFdURjo6U3RyaW5nJiByCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0KHJl
cXVlc3RJRCwgcmVzdWx0KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Q
cm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBL
VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9k
aWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5n
JiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQ
bHVnaW5Qcm94eTo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxh
c3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpT
dHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3VnZ2VzdGVkRmlsZU5hbWUgKi8pCiB7
CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHN0cmVhbUlELCByZXNwb25z
ZVVSTC5zdHJpbmcoKSwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWRUaW1lLCBtaW1lVHlwZSwg
aGVhZGVycyksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9p
ZCBQbHVnaW5Qcm94eTo6c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RyZWFtRGlkRmFpbChzdHJlYW1JRCwgd2FzQ2FuY2Vs
bGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6bWFudWFs
U3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IEtVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJf
dCBzdHJlYW1MZW5ndGgsICB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IC8qIHN1Z2dlc3RlZEZpbGVOYW1lICovKQordm9pZCBQbHVnaW5Qcm94eTo6bWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVh
bUxlbmd0aCwgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgLyogc3Vn
Z2VzdGVkRmlsZU5hbWUgKi8pCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6TWFudWFsU3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLnN0cmluZygpLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmll
ZFRpbWUsIG1pbWVUeXBlLCBoZWFkZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggNDIz
OTUyMzE1OGFjMzVkZGU0NDhiY2NmOWJkNzQ2MTY1ZTMzZGU0Zi4uMDY2N2Q0OWQ0MzllNzM5OWE4
ZmJkYTU2Y2QyM2FlMGRmNGI3NmU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTg4LDExICs4OCwxMSBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEaWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3
YXNDYW5jZWxsZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFz
dE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFk
ZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3Jl
OjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RN
b2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCk7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWlu
dDY0X3Qgc3RyZWFtSUQpOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90
IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpLVVJMJiByZXNwb25zZVVSTCwg
dWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBX
VEY6OlN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFt
RGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJl
Y2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9hZGluZygpOwogICAgIHZpcnR1YWwgdm9pZCBtYW51
YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBhMGU3YTk2NjQ1N2UxZGRh
M2Q5NjNjMjg4ODc0ZjBkZWExMTk2MjdhLi41MDYxNDMwNDJmN2Q1NGNiMzgwNjIzODhlOTRlOWUz
Mzk3MTVkNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB2b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgLy8gQ29tcHV0ZSB0
aGUgc3RyZWFtIHJlbGF0ZWQgZGF0YSBmcm9tIHRoZSByZXNvdXJjZSByZXNwb25zZS4KLSAgICBj
b25zdCBLVVJMJiByZXNwb25zZVVSTCA9IHJlc3BvbnNlLnVybCgpOworICAgIGNvbnN0IFVSTCYg
cmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
ID0gcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoID0gcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiAgICAgCkBAIC0zODMsNyAr
MzgzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIH0KIAogICAgIC8vIENvbXB1dGUg
dGhlIHN0cmVhbSByZWxhdGVkIGRhdGEgZnJvbSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UuCi0gICAg
Y29uc3QgS1VSTCYgcmVzcG9uc2VVUkwgPSByZXNwb25zZS51cmwoKTsKKyAgICBjb25zdCBVUkwm
IHJlc3BvbnNlVVJMID0gcmVzcG9uc2UudXJsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSA9IHJlc3BvbnNlLm1pbWVUeXBlKCk7CiAgICAgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudExl
bmd0aCA9IHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOwogICAgIApAQCAtMTMwOCw3
ICsxMzA4LDcgQEAgU3RyaW5nIFBsdWdpblZpZXc6OnVzZXJBZ2VudCgpCiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIAotICAgIHJldHVybiBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkudXNlckFnZW50KEtVUkwoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS51c2VyQWdlbnQoVVJMKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Omxv
YWRVUkwodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCAKQEAgLTE0ODksMTggKzE0ODks
MTggQEAgU3RyaW5nIFBsdWdpblZpZXc6OnByb3hpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpCiB7CiAgICAgY29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUoKSA/
ICZmcmFtZSgpLT5sb2FkZXIoKSA6IDA7CiAgICAgY29uc3QgTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQgPSBmcmFtZUxvYWRlciA/IGZyYW1lTG9hZGVyLT5uZXR3b3JraW5nQ29udGV4dCgpIDog
MDsKLSAgICBWZWN0b3I8UHJveHlTZXJ2ZXI+IHByb3h5U2VydmVycyA9IHByb3h5U2VydmVyc0Zv
clVSTChLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29udGV4dCk7CisgICAgVmVjdG9yPFByb3h5
U2VydmVyPiBwcm94eVNlcnZlcnMgPSBwcm94eVNlcnZlcnNGb3JVUkwoVVJMKFVSTCgpLCB1cmxT
dHJpbmcpLCBjb250ZXh0KTsKICAgICByZXR1cm4gdG9TdHJpbmcocHJveHlTZXJ2ZXJzKTsKIH0K
IAogU3RyaW5nIFBsdWdpblZpZXc6OmNvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIGNvb2tpZXMoJm1fcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKSwg
S1VSTChLVVJMKCksIHVybFN0cmluZykpOworICAgIHJldHVybiBjb29raWVzKCZtX3BsdWdpbkVs
ZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJsU3RyaW5nKSk7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6c2V0Q29va2llc0ZvclVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgc2V0Q29va2llcygmbV9wbHVnaW5FbGVtZW50
LT5kb2N1bWVudCgpLCBLVVJMKEtVUkwoKSwgdXJsU3RyaW5nKSwgY29va2llU3RyaW5nKTsKKyAg
ICBzZXRDb29raWVzKCZtX3BsdWdpbkVsZW1lbnQtPmRvY3VtZW50KCksIFVSTChVUkwoKSwgdXJs
U3RyaW5nKSwgY29va2llU3RyaW5nKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3OjpnZXRBdXRoZW50
aWNhdGlvbkluZm8oY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UsIFN0cmlu
ZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5k
ZXggMWIzNjE4ZjMxNWE4MDU1ODIzZTdkYjI2NWEwZTBiODk3OTJjYjhlMC4uMTVkYWRmMDY5NTU2
NDI2ZTRhODQ5YjBlYjkzZGNlMzFmZjE3YzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtNTM0LDkgKzUzNCw5IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQoRWxlbWVudCogZWxlbWVudCwgUmVuZGVyRW1iCiAgICAgU3RyaW5nIGZy
YW1lVVJMU3RyaW5nID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25zZVVSTCgpLnN0cmluZygpOwogICAgIFN0cmluZyBw
YWdlVVJMU3RyaW5nID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKS0+cmVzcG9uc2VVUkwoKS5zdHJpbmcoKTsKICAgICBTdHJpbmcgcGx1Z2luVVJMU3RyaW5n
ID0gcGx1Z2luRWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChwbHVnaW5FbGVtZW50LT51
cmwoKSkuc3RyaW5nKCk7Ci0gICAgS1VSTCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTCA9IGVsZW1l
bnQtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKHBsdWdpbkVsZW1lbnQtPmdldEF0dHJpYnV0ZShwbHVnaW5zcGFnZUF0dHIpKSk7CisgICAg
VVJMIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5jb21wbGV0
ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luRWxlbWVudC0+Z2V0
QXR0cmlidXRlKHBsdWdpbnNwYWdlQXR0cikpKTsKICAgICBpZiAoIXBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKLSAgICAgICAgcGx1Z2luc3BhZ2VBdHRy
aWJ1dGVVUkwgPSBLVVJMKCk7CisgICAgICAgIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMID0gVVJM
KCk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZChwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgcGx1Z2luRWxl
bWVudC0+c2VydmljZVR5cGUoKSwgcGx1Z2luVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0
ZVVSTC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBlZmY1YWQyYjRmZmUwOTkyYWYyYjRh
NDIxZTgzODhlMTM2N2VjZTFiLi42OGMyY2FkODRlZmNjNjUwOGZmNzIxNGYxODFhZTRiNmYwYWQ4
ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNjgsNyArNjgsNyBA
QCB2b2lkIFdlYkNvbnRleHRNZW51Q2xpZW50Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUl0ZW0qLCBjb25zdCBDb250ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZv
aWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OmRvd25sb2FkVVJMKGNvbnN0IEtVUkwmKQordm9pZCBX
ZWJDb250ZXh0TWVudUNsaWVudDo6ZG93bmxvYWRVUkwoY29uc3QgVVJMJikKIHsKICAgICAvLyBU
aGlzIGlzIGhhbmRsZWQgaW4gdGhlIFVJIHByb2Nlc3MuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdp
dGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCku
bG9hZGVyKCkudXJsU2VsZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIFN0cmluZygp
LCAwLCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgcGFnZS0+bWFp
bkZyYW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwg
U3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgIH0KIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCmluZGV4IDk2ZTJlZTYwMTJkYTFj
YjI2YWRhN2Q0MjM4ZGQzZmY5ZjljN2Q4YTQuLmJkNDNlY2IwM2M5ZjdiNzBjZDk4MGQ0YzlkZmRk
MGRiZGQ1YTdmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0
TWVudSopIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25z
dCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJM
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hX
aXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFcnJvcnMuaAppbmRleCA2ZmI3MmM1YzZk
MDlmMGFlY2YxYzE5ZWQ3MWNlMDgzM2U4YjAzZGNkLi5kMjdhMGY5NjNlYmY1NjBkNTA4MGExMGMw
NjBjM2RiYzBmMTI4ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRXJyb3JzLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgV2Vi
RXJyb3JzX2gKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEtVUkw7CisgICAgY2xh
c3MgVVJMOwogICAgIGNsYXNzIFJlc291cmNlRXJyb3I7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC00Miw3ICs0Miw3IEBAIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1F
VHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYpOworV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAy
NWE4YTJhNWQwYzdhNGYxZjlmNmI4ZWEzZWJmY2ViODFiMGZiYjliLi45YjY4NDYyMDMzZDRmMWM0
NTAwYWQ5NmY5NWUzNGRiYjdkZDUyMTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxl
TG9hZGVyQ2xpZW50KCkuZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh3ZWJQYWdlLCBt
X2ZyYW1lKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IEtVUkwmIHVybCwgZG91YmxlIGludGVydmFsLCBkb3Vi
bGUgZmlyZURhdGUpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiB1cmwsIGRvdWJsZSBpbnRlcnZhbCwgZG91Ymxl
IGZpcmVEYXRlKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQpAQCAtOTg1LDcgKzk4NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKQogICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRh
dGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKQordm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
VVJMJikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlm
ICghd2ViUGFnZSkKQEAgLTk5OCw3ICs5OTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikKICAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2Fn
ZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBVUkwmLCBib29sKQogewogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpAQCAtMTE1OCw3ICsx
MTU4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc28KICAgICByZXR1cm4gRG9jdW1lbnRMb2Fk
ZXI6OmNyZWF0ZShyZXF1ZXN0LCBkYXRhKTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
IHVybCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSB8fCAhd2ViUGFnZS0+cGFn
ZUdyb3VwKCktPmlzVmlzaWJsZVRvSGlzdG9yeUNsaWVudCgpKQpAQCAtMTE2OSw3ICsxMTY5LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERp
cmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwKICAgICAgICAgdGl0bGUuc3RyaW5nKCksIHVybC5z
dHJpbmcoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKSwgMCk7CiB9CiAKLVN0cmluZyBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgVVJMJikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKQEAgLTEyNTYsNyArMTI1Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZChEb2N1bWVudExvYWRlciAqZG9jCiAgICAgbV9mcmFtZS0+Y29udmVydE1haW5SZXNvdXJj
ZUxvYWRUb0Rvd25sb2FkKGRvY3VtZW50TG9hZGVyLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAK
LVBhc3NSZWZQdHI8RnJhbWU+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVGcmFtZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lckVsZW1lbnQsCitQYXNzUmVmUHRyPEZyYW1lPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3Jl
YXRlRnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCAvKmFsbG93
c1Njcm9sbGluZyovLCBpbnQgLyptYXJnaW5XaWR0aCovLCBpbnQgLyptYXJnaW5IZWlnaHQqLykK
IHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtMTI4Myw3ICsx
MjgzLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZUZy
YW1lKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW4KICAgICByZXR1cm4gY29yZVN1YmZyYW1l
OwogfQogCi1QYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBs
dWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1lbnQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBs
b2FkTWFudWFsbHkpCitQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNy
ZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdWdpbkVsZW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBi
b29sIGxvYWRNYW51YWxseSkKIHsKICAgICBBU1NFUlQocGFyYW1OYW1lcy5zaXplKCkgPT0gcGFy
YW1WYWx1ZXMuc2l6ZSgpKTsKICAgICBBU1NFUlQobV9mcmFtZS0+cGFnZSgpKTsKQEAgLTEzNDYs
OSArMTM0Niw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVRvUGx1
Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KQogICAgICAgICBtX3BsdWdpblZpZXcgPSBzdGF0aWNf
Y2FzdDxQbHVnaW5WaWV3Kj4ocGx1Z2luV2lkZ2V0KTsKIH0KIAotUGFzc1JlZlB0cjxXaWRnZXQ+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIEhUTUxBcHBsZXRFbGVtZW50KiBhcHBsZXRFbGVtZW50LCBjb25zdCBL
VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXJhbVZhbHVlcykKK1Bhc3NSZWZQdHI8V2lkZ2V0PiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBIVE1M
QXBwbGV0RWxlbWVudCogYXBwbGV0RWxlbWVudCwgY29uc3QgVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykKIHsK
LSAgICBSZWZQdHI8V2lkZ2V0PiBwbHVnaW4gPSBjcmVhdGVQbHVnaW4ocGx1Z2luU2l6ZSwgYXBw
bGV0RWxlbWVudCwgS1VSTCgpLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywgYXBwbGV0RWxlbWVu
dC0+c2VydmljZVR5cGUoKSwgZmFsc2UpOworICAgIFJlZlB0cjxXaWRnZXQ+IHBsdWdpbiA9IGNy
ZWF0ZVBsdWdpbihwbHVnaW5TaXplLCBhcHBsZXRFbGVtZW50LCBVUkwoKSwgcGFyYW1OYW1lcywg
cGFyYW1WYWx1ZXMsIGFwcGxldEVsZW1lbnQtPnNlcnZpY2VUeXBlKCksIGZhbHNlKTsKICAgICBp
ZiAoIXBsdWdpbikgewogICAgICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBh
Z2UoKSkgewogICAgICAgICAgICAgU3RyaW5nIGZyYW1lVVJMU3RyaW5nID0gbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuc3RyaW5n
KCk7CkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgcAogfQogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi1QYXNzUmVmUHRyPFdpZGdldD4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oY29uc3QgSW50
U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYpCitQYXNzUmVmUHRyPFdp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4o
Y29uc3QgSW50U2l6ZSYsIEhUTUxNZWRpYUVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpAQCAtMTM5MCw3ICsxMzkwLDcgQEAg
c3RhdGljIGJvb2wgcGx1Z2luU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgUGx1Z2luRGF0YSYgcGx1
Z2luRGF0YSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotT2JqZWN0Q29u
dGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZUluLCBib29sIHNob3VsZFByZWZlclBsdWdJ
bnNGb3JJbWFnZXMpCitPYmplY3RDb250ZW50VHlwZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6b2Jq
ZWN0Q29udGVudFR5cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwg
Ym9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQogewogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBtZXJnZWQgd2l0aCBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGVmYXVsdE9iamVj
dENvbnRlbnRUeXBlIHdoZW4gdGhlIHBsdWdpbiBjb2RlCiAgICAgLy8gaXMgY29uc29saWRhdGVk
LgpAQCAtMTU3NSw3ICsxNTc1LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dT
Y3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxv
Y2FsVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDQxY2E1
OGI1ZTZmMjY2ZjZhMGQzNmIwMzUzODY1OGQwYTJiY2Y2NTYuLjcwMjI2ODFjOWIwOGMzY2NlMDU5
MjhlOGJjMTRkNTM0Y2U5MzEzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRIYW5k
bGVPbmxvYWRFdmVudHMoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRo
aW5QYWdlKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0
YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOwpAQCAtMTMzLDggKzEzMyw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktV
UkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgV2ViQ29yZTo6VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURF
OwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgT1ZFUlJJREU7CkBAIC0xNjEsOSArMTYxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAg
IAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRl
RG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0
aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOwogICAgIAotICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURF
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShX
ZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVS
UklERTsKQEAgLTE3NywyMiArMTc3LDIyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGNh
bkNhY2hlUGFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJF
bGVtZW50LAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJh
bWUoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93
c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSBPVkVSUklERTsK
ICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdl
YkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldp
ZGdldCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2Vi
Q29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
cmFtVmFsdWVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJD
b3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJh
bVZhbHVlcykgT1ZFUlJJREU7CiAgICAgCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklE
RU8pCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eVBsdWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlTWVkaWFQbGF5ZXJQcm94eVBs
dWdpbihjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGlk
ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dNZWRpYVBsYXllclByb3h5UGx1Z2luKFdlYkNvcmU6OldpZGdldCop
IE9WRVJSSURFOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRU
eXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQ
cmVmZXJQbHVnSW5zRm9ySW1hZ2VzKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0cmluZyBvdmVy
cmlkZU1lZGlhVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCop
IE9WRVJSSURFOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJv
b2wgYWxsb3dTY3JpcHQoYm9vbCBlbmFibGVkUGVyU2V0dGluZ3MpIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCBib29sIHNob3VsZEZvcmNlVW5pdmVyc2FsQWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRm9yY2VV
bml2ZXJzYWxBY2Nlc3NGcm9tTG9jYWxVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IDZmMmQyZGNlYzYwMDBlMjUyNWI5Y2ZiMjllODEyZDE2
ZDE5NDFiNDkuLmZkOTMzYjQ3ZmU5YTVhN2Q1MGJlNTAxM2Q4M2M4ODk1ZjVjNjA2NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFp
bkZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KQEAg
LTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1N0b3JhZ2VOYW1lc3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1YmZy
YW1lTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkwuaD4KICNpbmNsdWRlIDx3dGYvQXRv
bWljcy5oPgogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTEyNiw3ICsxMjYsNyBA
QCBWaXNpdGVkTGlua1N0cmF0ZWd5KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNyZWF0ZVZpc2l0
ZWRMaW5rU3RyYXRlZ3koKQogCiAvLyBDb29raWVzU3RyYXRlZ3kKIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmlu
ZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJs
KQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNo
YXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0xNDAsNyArMTQwLDcgQEAgU3RyaW5n
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24KICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaQogICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBVUkwmIHVybCkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewpAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sCiAgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVS
TCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CkBAIC0xODAsNyArMTgwLDcgQEAg
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgTmV0d29ya1N0b3JhZ2UKICAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNz
OjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewpAQCAtMTkzLDcgKzE5Myw3IEBAIGJv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwKICAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpz
aGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBAIFBhc3NS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShQYWdlCiAKIC8vIFZpc2l0ZWRMaW5rU3RyYXRlZ3kKIAotYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmlzTGlua1Zpc2l0ZWQoUGFnZSosIExpbmtIYXNoIGxpbmtIYXNo
LCBjb25zdCBLVVJMJiwgY29uc3QgQXRvbWljU3RyaW5nJikKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjppc0xpbmtWaXNpdGVkKFBhZ2UqLCBMaW5rSGFzaCBsaW5rSGFzaCwgY29uc3QgVVJM
JiwgY29uc3QgQXRvbWljU3RyaW5nJikKIHsKICAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2hhcmVk
KCkuaXNMaW5rVmlzaXRlZChsaW5rSGFzaCk7CiB9CkBAIC00NDgsMTIgKzQ0OCwxMiBAQCBDb2xv
ciBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpCiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1LVVJMIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
dXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitVUkwgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjp1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIHsKICAgICBTdHJpbmcgdXJs
U3RyaW5nOwogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkVVJMKHBhc3Rl
Ym9hcmROYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1lc3NhZ2VzOjpXZWJDb250ZXh0OjpHZXRQYXN0ZWJvYXJkVVJMOjpSZXBseSh1cmxTdHJp
bmcpLCAwKTsKLSAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7Cisg
ICAgcmV0dXJuIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZyk7CiB9CiAKIGxvbmcgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjphZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKaW5kZXggMzkzNDYwNjAxMzZhNDVjZTYyOGIzNmYwNmY4ZDEyMzE4NmE1
ZGRhMi4uY2IyZjE4NTU1OWRiZGUzNTg4NzVjMGQ5ZTg2NDUxNTM4YmI2ZDE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC01NiwxMiArNTYsMTIgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kqIGNyZWF0ZVZpc2l0ZWRMaW5r
U3RyYXRlZ3koKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQot
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6UGFnZSopIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6VmlzaXRlZExpbmtTdHJh
dGVneQotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3QgV1RGOjpB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlz
TGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdl
KiwgV2ViQ29yZTo6TGlua0hhc2gpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
MTA3LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBsb25nIGNoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5n
IHVuaXF1ZU5hbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGNvbG9y
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6S1VSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwYXN0ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgbG9uZyBzZXRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFz
dGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dl
YkVycm9yc0VmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2VmbC9XZWJFcnJvcnNFZmwuY3BwCmluZGV4IDM0NWQ5YzA1ZGUzZmNkM2M3ZTdiMDFhOTA1Mjg0
OTk3NGFhYmRhNTYuLjgyNjA0N2MyNzg3YjFlZmRiNmE2NjBiMWM4NzNhNzY2MGQ0NDg5ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZWZsL1dl
YkVycm9yc0VmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9lZmwvV2ViRXJyb3JzRWZsLmNwcApAQCAtNzIsNyArNzIsNyBAQCBSZXNvdXJjZUVycm9y
IHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IocmVzcG9u
c2UpOwogfQogCi1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgdXJsKQorV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVy
cm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwuc3RyaW5nKCks
IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcAppbmRleCBhODJlN2RlZTBlOTU4NmQ5MTg2ZjBlZTgzNjZhNjU0NTg5YWRmYzNlLi4xYjUy
NWMwNTQyYjRiMWNkZTgzNDQzZGRjYWFhNmVlMjk5MWQ2NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFcnJvcnNHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVycm9y
c0d0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiBX
ZWJDb3JlOjpwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKHJlc3BvbnNlKTsKIH0KIAotV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCkK
K1dlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBXZWJDb3JlOjpVUkwm
IHVybCkKIHsKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJyb3JE
b21haW4oKSwga1dLRXJyb3JJbnRlcm5hbCwgdXJsLnN0cmluZygpLCBfKCJJbnRlcm5hbCBlcnJv
ciIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVycm9yc01hYy5tbQppbmRleCA3MWZhNWUzZmRjZDI5MWFkZWM2
ZTAzM2Y3YjY3NjAxODUwMjIxN2M4Li43MTM3YWNjNzJhYTk3MGM0YzVmMzU5YTViZDJjYjhkMzVl
NTIzYzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJFcnJvcnNNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRXJyb3JzTWFjLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIFJlc291
cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihXZWJFcnJvcjo6d2ViS2l0RXJy
b3JEb21haW4oKSwga1dLRXJyb3JDb2RlUGx1Z0luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVy
bCgpLCBXRUJfVUlfU1RSSU5HKCJQbHVnLWluIGhhbmRsZWQgbG9hZCIsICJXZWJLaXRFcnJvclBs
dWdJbldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikpOwogfQogCi1SZXNvdXJjZUVycm9yIGlu
dGVybmFsRXJyb3IoY29uc3QgS1VSTCYgdXJsKQorUmVzb3VyY2VFcnJvciBpbnRlcm5hbEVycm9y
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFdlYkVycm9yOjp3
ZWJLaXRFcnJvckRvbWFpbigpLCBrV0tFcnJvckludGVybmFsLCB1cmwsIFdFQl9VSV9TVFJJTkco
IldlYktpdCBlbmNvdW50ZXJlZCBhbiBpbnRlcm5hbCBlcnJvciIsICJXZWJLaXRFcnJvckludGVy
bmFsIGRlc2NyaXB0aW9uIikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNzg1N2Y4YWI1N2NmYWQwMzFjOTZjNDVjM2MxMjYzZTYy
YjYyZmYxZi4uODAxZWRlN2Q0ZjVhODdiODBlOTQ2NjkwNTg0Mzk1ZDU4NGQ5ODk4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC00NTEs
NyArNDUxLDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGlu
Z1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKLWJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxv
d2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsKSBjb25zdAorYm9vbCBXZWJGcmFtZTo6
YWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY3OSw3ICs2Nzks
NyBAQCBTdHJpbmcgV2ViRnJhbWU6OnByb3Zpc2lvbmFsVVJMKCkgY29uc3QKICAgICByZXR1cm4g
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkuc3RyaW5nKCk7CiB9CiAKLVN0cmluZyBX
ZWJGcmFtZTo6c3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgS1VSTCYg
dXJsKSBjb25zdAorU3RyaW5nIFdlYkZyYW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNl
V2l0aFVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBpZiAoIW1fY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC03MDAsNyArNzAwLDcgQEAgU3RyaW5nIFdlYkZy
YW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBLVVJMJiB1cmwp
IGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UoKS0+Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwo
dXJsKTsKIH0KIAotU3RyaW5nIFdlYkZyYW1lOjptaW1lVHlwZUZvclJlc291cmNlV2l0aFVSTChj
b25zdCBLVVJMJiB1cmwpIGNvbnN0CitTdHJpbmcgV2ViRnJhbWU6Om1pbWVUeXBlRm9yUmVzb3Vy
Y2VXaXRoVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmICghbV9jb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggNzlmYTVjYmE5ZWM5MDY4Y2MwZDMxOTkyYTA3NDgzMDdi
OWI4YTVkMS4uNjg3NjJmZjJiYjM3NDlhNTVkM2M3MjBjOWViODk1MTkzMTZjNTdjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CiBjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7Ci1jbGFzcyBLVVJMOworY2xhc3MgVVJMOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExNiwxMSArMTE2LDExIEBAIHB1YmxpYzoKICAgICAKICAg
ICB1bnNpZ25lZCBwZW5kaW5nVW5sb2FkQ291bnQoKSBjb25zdDsKICAgICAKLSAgICBib29sIGFs
bG93c0ZvbGxvd2luZ0xpbmsoY29uc3QgV2ViQ29yZTo6S1VSTCYpIGNvbnN0OworICAgIGJvb2wg
YWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdDsKIAogICAgIFN0
cmluZyBwcm92aXNpb25hbFVSTCgpIGNvbnN0OwotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRoVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25z
dDsKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJikgY29uc3Q7CisgICAgU3RyaW5nIG1pbWVUeXBlRm9yUmVzb3VyY2VXaXRo
VVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRUZXh0RGlyZWN0
aW9uKGNvbnN0IFN0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNzcwZmI2YmE5YzRlNzRmODIxZGY5YmY0MmI1ZWUwYzhiMzE0
OTlhNC4uYzc0NjZjNjUyZmY2NGQ3ZTcyZjAwODIwYWRjODg5ZDk1NzIzZDBmMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtOTA4LDcgKzkw
OCw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZENsb3NlKCkKIAogdm9pZCBXZWJQYWdlOjpsb2FkVVJM
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewot
ICAgIGxvYWRVUkxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdChLVVJMKEtVUkwoKSwgdXJsKSksIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIGRlY29kZXIpOworICAgIGxvYWRVUkxSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdChVUkwoVVJMKCksIHVybCkpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBkZWNv
ZGVyKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCkBAIC05MzAs
NyArOTMwLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkVVJMUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNhbmRib3hFeHRlbnMKICAgICBtX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCktPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdChtX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCksIHJlcXVlc3QpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0
IEtVUkwmIHVucmVhY2hhYmxlVVJMLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikK
K3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFy
ZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5l
c3NUaW1lciBzdG9wcGVyKHRoaXMpOwogCkBAIC05NTMsMzUgKzk1MywzNSBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWREYXRhSW1wbChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyLCBj
b25zdCBTdHJpbmcmCiB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmdOYW1lLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIENvcmVJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNoYXJlZEJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwotICAgIEtVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJp
bmcuaXNFbXB0eSgpID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgpLCBiYXNlVVJMU3RyaW5nKTsK
LSAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBi
YXNlVVJMLCBLVVJMKCksIGRlY29kZXIpOworICAgIFVSTCBiYXNlVVJMID0gYmFzZVVSTFN0cmlu
Zy5pc0VtcHR5KCkgPyBibGFua1VSTCgpIDogVVJMKFVSTCgpLCBiYXNlVVJMU3RyaW5nKTsKKyAg
ICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNl
VVJMLCBVUkwoKSwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZEhUTUxTdHJpbmco
Y29uc3QgU3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkxTdHJpbmcsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGh0bWxTdHJpbmcuY2hhcmFjdGVycygpKSwgaHRtbFN0cmluZy5sZW5ndGgo
KSAqIHNpemVvZihVQ2hhcikpOwotICAgIEtVUkwgYmFzZVVSTCA9IGJhc2VVUkxTdHJpbmcuaXNF
bXB0eSgpID8gYmxhbmtVUkwoKSA6IEtVUkwoS1VSTCgpLCBiYXNlVVJMU3RyaW5nKTsKLSAgICBs
b2FkRGF0YUltcGwoc2hhcmVkQnVmZmVyLCAidGV4dC9odG1sIiwgInV0Zi0xNiIsIGJhc2VVUkws
IEtVUkwoKSwgZGVjb2Rlcik7CisgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1w
dHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIGxvYWRE
YXRhSW1wbChzaGFyZWRCdWZmZXIsICJ0ZXh0L2h0bWwiLCAidXRmLTE2IiwgYmFzZVVSTCwgVVJM
KCksIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMU3RyaW5nLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2Rl
ciYgZGVjb2RlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzaGFyZWRCdWZmZXIgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihodG1sU3Ry
aW5nLmNoYXJhY3RlcnMoKSksIGh0bWxTdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsK
LSAgICBLVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGJsYW5rVVJMKCkg
OiBLVVJMKEtVUkwoKSwgYmFzZVVSTFN0cmluZyk7Ci0gICAgS1VSTCB1bnJlYWNoYWJsZVVSTCA9
IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IEtVUkwoS1VSTCgpLCB1
bnJlYWNoYWJsZVVSTFN0cmluZyk7CisgICAgVVJMIGJhc2VVUkwgPSBiYXNlVVJMU3RyaW5nLmlz
RW1wdHkoKSA/IGJsYW5rVVJMKCkgOiBVUkwoVVJMKCksIGJhc2VVUkxTdHJpbmcpOworICAgIFVS
TCB1bnJlYWNoYWJsZVVSTCA9IHVucmVhY2hhYmxlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgp
IDogVVJMKFVSTCgpLCB1bnJlYWNoYWJsZVVSTFN0cmluZyk7CiAgICAgbG9hZERhdGFJbXBsKHNo
YXJlZEJ1ZmZlciwgInRleHQvaHRtbCIsICJ1dGYtMTYiLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVS
TCwgZGVjb2Rlcik7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZFBsYWluVGV4dFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZywgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmNoYXJhY3RlcnMoKSksIHN0
cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwotICAgIGxvYWREYXRhSW1wbChzaGFyZWRC
dWZmZXIsICJ0ZXh0L3BsYWluIiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIEtVUkwoKSwgZGVjb2Rl
cik7CisgICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgInRleHQvcGxhaW4iLCAidXRmLTE2
IiwgYmxhbmtVUkwoKSwgVVJMKCksIGRlY29kZXIpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRX
ZWJBcmNoaXZlRGF0YShjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiB3ZWJBcmNoaXZlRGF0
YSwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4od2ViQXJjaGl2ZURhdGEuZGF0YSgpKSwgd2ViQXJjaGl2ZURhdGEu
c2l6ZSgpICogc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICBsb2FkRGF0YUltcGwoc2hhcmVkQnVmZmVy
LCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiwgInV0Zi0xNiIsIGJsYW5rVVJMKCksIEtVUkwo
KSwgZGVjb2Rlcik7CisgICAgbG9hZERhdGFJbXBsKHNoYXJlZEJ1ZmZlciwgImFwcGxpY2F0aW9u
L3gtd2ViYXJjaGl2ZSIsICJ1dGYtMTYiLCBibGFua1VSTCgpLCBVUkwoKSwgZGVjb2Rlcik7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6bGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFdl
Yk1vdXNlRXZlbnQmIGV2ZW50KQpAQCAtMjM1Myw3ICsyMzUzLDcgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxs
YmFja0lEKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKGRh
dGFSZWZlcmVuY2UsIGNhbGxiYWNrSUQpKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHJl
c291cmNlVVJMKQorc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFG
b3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwog
ICAgIGlmICghbG9hZGVyKQpAQCAtMjM2OSw3ICsyMzY5LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHIKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwotICAgIEtV
UkwgcmVzb3VyY2VVUkwoS1VSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CisgICAgVVJMIHJlc291
cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLndlYkZyYW1lKGZyYW1lSUQpKSB7CkBAIC0zMzA5LDcgKzMzMDksNyBAQCB2b2lkIFdlYlBh
Z2U6OlNhbmRib3hFeHRlbnNpb25UcmFja2VyOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKFdlYkZy
YW1lKiBmcmFtZSkKICAgICAvLyBiZWNhdXNlIGl0IGRvZXMgbm90IHBlcnRhaW4gdG8gdGhlIGZh
aWxlZCBsb2FkLCBhbmQgd2lsbCBiZSBuZWVkZWQuCiB9CiAKLWJvb2wgV2ViUGFnZTo6aGFzTG9j
YWxEYXRhRm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGFnZTo6aGFzTG9jYWxEYXRh
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCAyM2FiY2E1YmY4MmUzOTE1OGYyMjdkYjQzZTQ5YWQ3ZjU4NzQ0MDNlLi5i
MGI2NzNmMzIwZGE1YWYxZjI4ZWY1YzQ0ZmMwMzI4MDk4MGQwYmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQxMywxMCArNDEzLDEwIEBAIHB1
YmxpYzoKICAgICBXZWJDb250ZXh0TWVudSogY29udGV4dE1lbnVBdFBvaW50SW5XaW5kb3coY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogICAgIAotICAgIGJvb2wgaGFzTG9jYWxE
YXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkUmVzcG9u
c2VNSU1FVHlwZUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgU3RyaW5nIGNhY2hl
ZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKTsKKyAgICBTdHJpbmcgY2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChj
b25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBTdHJpbmcgY2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVG
b3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsK
IAogICAgIHN0YXRpYyBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKQEAgLTY4Niw5ICs2ODYsOSBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5n
IHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNlVVJMLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmYWlsaW5nVVJMLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYp
OworICAgIHZvaWQgbG9hZERhdGFJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiBmYWlsaW5nVVJM
LCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogCi0gICAgYm9vbCBwbGF0Zm9ybUhhc0xvY2Fs
RGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgYm9vbCBwbGF0Zm9ybUhhc0xv
Y2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIC8vIEFjdGlvbnMKICAg
ICB2b2lkIHRyeUNsb3NlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZWZsL1dlYlBhZ2VFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2VmbC9XZWJQYWdlRWZsLmNwcAppbmRleCA4NDI0YzZiNGIyYWViYzBkOGEyMmFjYzU1
NzIyNjllOGU4ZDMzNTc0Li5jOWU0ZGM1OGJjNmMyMGY5OWU4MmMyOWUzYTM5Y2FlNDdhMWE4NDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZWZsL1dlYlBh
Z2VFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9lZmwvV2Vi
UGFnZUVmbC5jcHAKQEAgLTEyNiwxMyArMTI2LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURl
ZmF1bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJk
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERh
dGFGb3JVUkwoY29uc3QgS1VSTCYpCitib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRh
Rm9yVVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJM
KGNvbnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JV
UkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJp
bmcoKTsKQEAgLTE0NCwxMyArMTQ0LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5k
bGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVN0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJM
JikKK1N0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBV
UkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9y
VVJMKGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hl
ZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9XZWJQYWdlR3RrLmNwcAppbmRleCA2NmZkMzJmMWI3ZDMxMjY3Mzc3YzRiMjgxYmFm
NzNiMTZlMjdmYTc3Li4yNzg1YTI2M2JmYzkzYWRmOTUzNjBkZDZmODU1MWMyYzk2NmZiMjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHAKQEAgLTEyNiwxMyArMTI2LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1
bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFG
b3JVUkwoY29uc3QgS1VSTCYpCitib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9y
VVJMKGNvbnN0IFVSTCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNv
bnN0IEtVUkwmKQorU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwo
Y29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmco
KTsKQEAgLTE0NCwxMyArMTQ0LDEzIEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0
cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBLVVJMJikK
K1N0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBVUkwm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1Q
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJM
KGNvbnN0IEtVUkwmKQorUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJl
c3BvbnNlRGF0YUZvclVSTChjb25zdCBVUkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggY2E0NTUwZjcxOWEzNWZiZDQyNDU0NTQ4ZWU1ODJiYjM0
ODllYzhlZi4uMjkyM2QzYTVlZmE1Y2Y1OThkZDg0N2IyYjkwMTNiYzA2NjBjMTQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQpAQCAtNzE3LDcgKzcxNyw3IEBAIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIFdlYlBh
Z2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogICAgIHJldHVybiBtX21vY2tBY2Nlc3Np
YmlsaXR5RWxlbWVudC5nZXQoKTsKIH0KICAgICAgICAgIAotYm9vbCBXZWJQYWdlOjpwbGF0Zm9y
bUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCitib29sIFdlYlBh
Z2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQog
ewogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVl
c3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3Ry
aW5nKil1c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CkBAIC03
MzEsNyArNzMxLDcgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChj
b25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpCiAgICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwogfQog
Ci1zdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFn
ZSogd2ViUGFnZSwgY29uc3QgS1VSTCYgdXJsKQorc3RhdGljIE5TQ2FjaGVkVVJMUmVzcG9uc2Ug
KmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHROUyhb
W05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF0pOwogICAgIFtyZXF1
ZXN0LmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAqKXdlYlBhZ2UtPnVzZXJBZ2VudCgpIGZvckhU
VFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKQEAgLTc0MiwxNyArNzQyLDE3IEBAIHN0YXRp
YyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZUZvclVSTChXZWJQYWdlKiB3ZWJQ
YWdlLCBjb25zdCBLVVJMJiB1CiAgICAgcmV0dXJuIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNo
ZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwogfQogCi1TdHJpbmcg
V2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIHJldHVybiBbW2NhY2hlZFJlc3BvbnNlRm9yVVJMKHRoaXMsIHVybCkgcmVz
cG9uc2VdIHN1Z2dlc3RlZEZpbGVuYW1lXTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJl
c3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBhZ2U6OmNh
Y2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IFtbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywgdXJsKSByZXNwb25zZV0gTUlNRVR5cGVdOwog
fQogCi1QYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRh
Rm9yVVJMKGNvbnN0IEtVUkwmIHVybCkKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdl
OjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywgdXJs
KSBkYXRhXSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvV2ViUGFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9x
dC9XZWJQYWdlUXQuY3BwCmluZGV4IDhmZWIxMzYwZDk1NDhkZTg4MzU1MmFlOGM5OWMwN2RjNjA2
YzI5MzQuLjZlZThhMWQxMjRjOTQ3ZjA0NmViMmRjMjI3MWU0MmJlMjMxNjMxNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCkBA
IC0yNjgsMTMgKzI2OCwxMyBAQCBib29sIFdlYlBhZ2U6OnBlcmZvcm1EZWZhdWx0QmVoYXZpb3JG
b3JLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0
IEtVUkwmKQorYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBV
UkwmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1T
dHJpbmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBLVVJMJikK
K1N0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0IFVSTCYp
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yODYs
MTMgKzI4NiwxMyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKQogICAgIHJldHVybiB0cnVlOwogfQogCi1TdHJpbmcgV2ViUGFn
ZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgS1VSTCYpCitTdHJpbmcgV2Vi
UGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChjb25zdCBLVVJM
JikKK1Bhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFG
b3JVUkwoY29uc3QgVVJMJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0KaW5k
ZXggODBkYjQzMTA3YjMwMDUxNzEwYTk0YTIxNGI5MTliOWM5MTRkY2I3ZC4uYjg3MDZlZTNiYjY1
NDNjYmE4ODkxYWU0ZmUyYzAzOTk0MWZhOWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzTWFjLm1tCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjp1cGRhdGVBY3RpdmVQYWdlcygpCiAgICAgICAgIGlmICghbWFpbkZyYW1lT3JpZ2lu
LT5pc1VuaXF1ZSgpKQogICAgICAgICAgICAgbWFpbkZyYW1lT3JpZ2luU3RyaW5nID0gbWFpbkZy
YW1lT3JpZ2luLT50b1Jhd1N0cmluZygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtYWlu
RnJhbWVPcmlnaW5TdHJpbmcgPSBLVVJMKEtVUkwoKSwgbWFpbkZyYW1lLT51cmwoKSkucHJvdG9j
b2woKSArICc6JzsgLy8gdG9SYXdTdHJpbmcoKSBpcyBub3Qgc3VwcG9zZWQgdG8gd29yayB3aXRo
IHVuaXF1ZSBvcmlnaW5zLCBhbmQgd291bGQganVzdCByZXR1cm4gIjovLyIuCisgICAgICAgICAg
ICBtYWluRnJhbWVPcmlnaW5TdHJpbmcgPSBVUkwoVVJMKCksIG1haW5GcmFtZS0+dXJsKCkpLnBy
b3RvY29sKCkgKyAnOic7IC8vIHRvUmF3U3RyaW5nKCkgaXMgbm90IHN1cHBvc2VkIHRvIHdvcmsg
d2l0aCB1bmlxdWUgb3JpZ2lucywgYW5kIHdvdWxkIGp1c3QgcmV0dXJuICI6Ly8iLgogCiAgICAg
ICAgIE5TVVJMICpvcmlnaW5Bc05TVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6bWFpbkZyYW1l
T3JpZ2luU3RyaW5nXTsKICAgICAgICAgLy8gK1tOU1VSTCBVUkxXaXRoU3RyaW5nOl0gcmV0dXJu
cyBuaWwgd2hlbiBpdHMgYXJndW1lbnQgaXMgbWFsZm9ybWVkLiBJdCdzIHVuY2xlYXIgaG93IHdl
IGNhbiBwb3NzaWJseSBoYXZlIGEgbWFsZm9ybWVkIFVSTCBoZXJlLApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiOTcwNWIzNTZiMGUyODU5MmYx
NDljMTAwYjZjYmI1MzJiY2YzNTUuLjBjNmMzNzVjZTUyYzI5MjlkZDQxMDI5ZmM5Y2ZjNGYzZWMw
MTFjYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxMy0wOS0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgcmVuYW1lIEtVUkwgdG8gVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWFueSBmaWxlczogUmVuYW1lZCwgdXNpbmcgc2Ny
aXB0LgorCiAyMDEzLTA5LTI3ICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0dUS11bV0syXSBMb2dnaW5nIG9mIGFjY2Vzc2liaWxpdHkgZXZlbnRz
IGlzIG5vdCBkaXNhYmxlZCBiZXR3ZWVuIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDA0YTIx
NWU3NWZkYWM4NjNjMTA2NTljNmZiNDdhNTg2Y2VmNjk1ODkuLjYwODQ5ZDQ5ZGY1MzNlOTI0YjI4
NjE0ZDA5YzY0ZWI0ODM3ODAxN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Js
YWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC0zMiw3ICszMiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSlNFbGVtZW50LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIFRlc3RSdW5uZXI6
OnF1ZXVlTG9hZChKU1N0cmluZ1JlZiB1cmwsIEpTU3RyaW5nUmVmIHRhcmdldCkKICAgICBPd25B
cnJheVB0cjxjaGFyPiB1cmxBcnIgPSBhZG9wdEFycmF5UHRyKG5ldyBjaGFyW3VybEFyclNpemVd
KTsKICAgICBKU1N0cmluZ0dldFVURjhDU3RyaW5nKHVybCwgdXJsQXJyLmdldCgpLCB1cmxBcnJT
aXplKTsKIAotICAgIFdlYkNvcmU6OktVUkwgYmFzZSA9IG1haW5GcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkudXJsKCk7Ci0gICAgV2ViQ29yZTo6S1VSTCBhYnNv
bHV0ZShiYXNlLCB1cmxBcnIuZ2V0KCkpOworICAgIFdlYkNvcmU6OlVSTCBiYXNlID0gbWFpbkZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2UoKS51cmwoKTsKKyAgICBX
ZWJDb3JlOjpVUkwgYWJzb2x1dGUoYmFzZSwgdXJsQXJyLmdldCgpKTsKIAogICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBhYnNvbHV0ZVVSTChBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYWJzb2x1dGUuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIFdvcmtRdWV1
ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSXRlbShhYnNvbHV0ZVVSTC5nZXQoKSwgdGFyZ2V0
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1dvcmtRdWV1
ZUl0ZW1CbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29y
a1F1ZXVlSXRlbUJsYWNrQmVycnkuY3BwCmluZGV4IDgyN2I1ZWJjZTk1Mzc3ZDEzMzJlMWI5N2Fh
YmNmYzBmNTIyMzExZDcuLjViNDFkN2U5NDEyZTFlMTdjNzJjNzI1ZDdiNTcyNzBmN2Y2MmM0OGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29ya1F1ZXVlSXRl
bUJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvV29y
a1F1ZXVlSXRlbUJsYWNrQmVycnkuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSAiRHVt
cFJlbmRlclRyZWVCbGFja0JlcnJ5LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIApAQCAt
NDYsNyArNDYsNyBAQCBib29sIExvYWRJdGVtOjppbnZva2UoKSBjb25zdAogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtVUkwga3VybCA9IEtVUkwoS1VSTCgp
LCB1cmwuZ2V0KCkpOworICAgIFVSTCBrdXJsID0gVVJMKFVSTCgpLCB1cmwuZ2V0KCkpOwogICAg
IGZyYW1lLT5sb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLCBSZXNvdXJjZVJl
cXVlc3Qoa3VybCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IGQyMjU1OTQ1MmEzYjMz
ZTEwOWQyMGU3NDBiOTFhMTI5NjViMGUwZGYuLjVmOGI0ZGM5ZWUxZjBiOTFmOWMxMzQ3ZDA1ZTA5
ZGRhNmQwYzk5NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVu
ZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkVkaXRpbmdDYWxs
YmFja3MuaCIKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxl
ci5oIgotI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJUZXh0SW5w
dXRDb250cm9sbGVyLmgiCkBAIC0zMzcsMTQgKzMzNywxNCBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
Q2hyb21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIAogc3RhdGljIFN0cmlu
ZyBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAg
ICBLVVJMIHVyaSA9IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOworICAgIFVSTCB1
cmkgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmlTdHJpbmcpOwogICAgIGlmICh1cmkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gIihudWxsKSI7CiAKICAgICBpZiAoIXVyaS5pc0xvY2FsRmls
ZSgpKQogICAgICAgICByZXR1cm4gdXJpLnN0cmluZygpOwogCi0gICAgS1VSTCBtYWluRnJhbWVV
UkwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFp
bkZyYW1lKCkpKTsKKyAgICBVUkwgbWFpbkZyYW1lVVJMID0gVVJMKFBhcnNlZFVSTFN0cmluZywg
ZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpKTsKICAgICBpZiAobWFpbkZy
YW1lVVJMLmlzRW1wdHkoKSkKICAgICAgICAgbWFpbkZyYW1lVVJMID0gRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpwcm92aXNpb25hbFVSTChicm93c2VyLT5tYWluRnJhbWUoKSk7CiAKQEAgLTU1
NSw3ICs1NTUsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbldpbGxTZW5kUmVxdWVz
dCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgS1VSTCB1cmwgPSBLVVJMKFBhcnNlZFVSTFN0cmluZywgbWVzc2FnZXMtPnJl
cXVlc3QtPnVybCk7CisgICAgVVJMIHVybCA9IFVSTChQYXJzZWRVUkxTdHJpbmcsIG1lc3NhZ2Vz
LT5yZXF1ZXN0LT51cmwpOwogCiAgICAgaWYgKHVybC5pc1ZhbGlkKCkKICAgICAgICAgJiYgdXJs
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKQpAQCAtODAwLDcgKzgwMCw3IEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVDaHJvbWU6Om9uUmVzcG9uc2VSZWNlaXZlZCh2b2lkKiwgRXZhc19PYmplY3QqLCB2
b2lkKiBldmVudEluCiAKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBSZXNvdXJj
ZVJlc3BvbnNlTUlNRVR5cGVzKCkpIHsKICAgICAgICAgcHJpbnRmKCIlcyBoYXMgTUlNRSB0eXBl
ICVzXG4iLAotICAgICAgICAgICAgICAgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlLT51
cmwpLmxhc3RQYXRoQ29tcG9uZW50KCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgIFVS
TChQYXJzZWRVUkxTdHJpbmcsIHJlc3BvbnNlLT51cmwpLmxhc3RQYXRoQ29tcG9uZW50KCkudXRm
OCgpLmRhdGEoKSwKICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5taW1lX3R5cGUpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCA5ZjY2
ZTk1ZTljMzM4NDJmY2RiMGZhNTk4YjkxNTcyYmJjOGU0NTdlLi4wNzQ2ZTUyMGYwMjlhMTVjMjNj
MzVjYTEyNzlmMmVmMDhmYTY3NTllIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RS
dW5uZXJFZmwuY3BwCkBAIC01MCw3ICs1MCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZ1JlZi5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+Ci0jaW5jbHVkZSA8S1VS
TC5oPgorI2luY2x1ZGUgPFVSTC5oPgogI2luY2x1ZGUgPGVkaXRpbmcvRmluZE9wdGlvbnMuaD4K
ICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
MTU3LDggKzE1Nyw4IEBAIEpTU3RyaW5nUmVmIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3Vy
Y2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHVyCiAKIHZvaWQgVGVzdFJ1bm5l
cjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdSZWYgdGFyZ2V0KQogewotICAg
IFdlYkNvcmU6OktVUkwgYmFzZVVSTChXZWJDb3JlOjpLVVJMKCksIFN0cmluZzo6ZnJvbVVURjgo
ZXdrX2ZyYW1lX3VyaV9nZXQoYnJvd3Nlci0+bWFpbkZyYW1lKCkpKSk7Ci0gICAgV2ViQ29yZTo6
S1VSTCBhYnNvbHV0ZVVSTChiYXNlVVJMLCB1cmwtPnN0cmluZygpKTsKKyAgICBXZWJDb3JlOjpV
UkwgYmFzZVVSTChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChld2tfZnJhbWVfdXJp
X2dldChicm93c2VyLT5tYWluRnJhbWUoKSkpKTsKKyAgICBXZWJDb3JlOjpVUkwgYWJzb2x1dGVV
UkwoYmFzZVVSTCwgdXJsLT5zdHJpbmcoKSk7CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4ganNBYnNvbHV0ZVVSTCgKICAgICAgICAgQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGFic29sdXRlVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1JlZiwg
SlNTdHJpbmdSZWYpCiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmluZ1JlZiBwcm90b2NvbCwgSlNT
dHJpbmdSZWYgaG9zdCwgYm9vbCBpbmNsdWRlU3ViZG9tYWlucykKIHsKLSAgICBXZWJDb3JlOjpL
VVJMIGt1cmw7CisgICAgV2ViQ29yZTo6VVJMIGt1cmw7CiAgICAga3VybC5zZXRQcm90b2NvbChT
dHJpbmcocHJvdG9jb2wtPmNoYXJhY3RlcnMoKSwgcHJvdG9jb2wtPmxlbmd0aCgpKSk7CiAgICAg
a3VybC5zZXRIb3N0KFN0cmluZyhob3N0LT5jaGFyYWN0ZXJzKCksIGhvc3QtPmxlbmd0aCgpKSk7
CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbgogCiB2b2lkIFRl
c3RSdW5uZXI6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNv
dXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgcHJvdG9jb2wsIEpTU3RyaW5nUmVmIGhvc3QsIGJvb2wg
aW5jbHVkZVN1YmRvbWFpbnMpCiB7Ci0gICAgV2ViQ29yZTo6S1VSTCBrdXJsOworICAgIFdlYkNv
cmU6OlVSTCBrdXJsOwogICAgIGt1cmwuc2V0UHJvdG9jb2woU3RyaW5nKHByb3RvY29sLT5jaGFy
YWN0ZXJzKCksIHByb3RvY29sLT5sZW5ndGgoKSkpOwogICAgIGt1cmwuc2V0SG9zdChTdHJpbmco
aG9zdC0+Y2hhcmFjdGVycygpLCBob3N0LT5sZW5ndGgoKSkpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJl
bmFtZQppbmRleCA2YmRmZGRlYWY0NzhlNjc0ZTE3OTkzNDJlMDg4OTkxZmVhYTRiNzk2Li5hYjU1
MjJmMDYzN2YwMTA1OTQ3ZjQxN2RiN2Y1NjY1MzA5MGI3MWFiIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1y
ZW5hbWUKQEAgLTc0LDYgKzc0LDcgQEAgZmluZChcJndhbnRlZCwgIlNvdXJjZS9XZWJDb3JlIik7
CiBmaW5kKFwmd2FudGVkLCAiU291cmNlL1dlYktpdCIpOwogZmluZChcJndhbnRlZCwgIlNvdXJj
ZS9XZWJLaXQyIik7CiBmaW5kKFwmd2FudGVkLCAiVG9vbHMvRHVtcFJlbmRlclRyZWUiKTsKK2Zp
bmQoXCZ3YW50ZWQsICJUb29scy9UZXN0V2ViS2l0QVBJIik7CiAKIHN1YiB3YW50ZWQKIHsKQEAg
LTkzLDExICs5NCwxNSBAQCBzdWIgd2FudGVkCiAKICMgU2V0dGluZyBpc0RPTVR5cGVSZW5hbWUg
dG8gMSByYXRoZXIgdGhhbiAwIGV4cGFuZHMgdGhlIHJlZ2V4cHMgdXNlZAogIyBiZWxvdyB0byBo
YW5kbGUgY3VzdG9tIEphdmFTY3JpcHQgYmluZGluZ3MuCi1teSAkaXNET01UeXBlUmVuYW1lID0g
MTsKK215ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBSZW5h
bWVzIGdvIGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0gICAgImlzVHJhbnNmb3JtSW52ZXJ0aWJsZSIg
PT4gImhhc0ludmVydGlibGVUcmFuc2Zvcm0iLAotICAgICJtX2ludmVydGlibGVDVE0iID0+ICJt
X2hhc0ludmVydGlibGVUcmFuc2Zvcm0iLAorICAgICJXS1VSTCIgPT4gIldLVVJMIiwKKyAgICAi
S1VSTCIgPT4gIlVSTCIsCisgICAgIktVUkxDRk5ldCIgPT4gIlVSTENGIiwKKyAgICAiS1VSTEhh
c2giID0+ICJVUkxIYXNoIiwKKyAgICAiS1VSTE1hYyIgPT4gIlVSTE1hYyIsCisgICAgIktVUkxf
aCIgPT4gIlVSTF9oIiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJl
ID0gKApAQCAtMTA4LDEyICsxMTMsNiBAQCBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1
dHVyZSA9ICgKICAgICAiRGF0ZUluc3RhbmNlIiA9PiAiSlNEYXRlIiwKICAgICAiRXJyb3JJbnN0
YW5jZSIgPT4gIkpTRXJyb3IiLAogCi0gICAgIktVUkwiID0+ICJVUkwiLAotICAgICJLVVJMQ0ZO
ZXQiID0+ICJVUkxDRiIsCi0gICAgIktVUkxIYXNoIiA9PiAiVVJMSGFzaCIsCi0gICAgIktVUkxN
YWMiID0+ICJVUkxNYWMiLAotICAgICJLVVJMX2giID0+ICJVUkxfaCIsCi0KICAgICAiVHJlZVNo
YXJlZCIgPT4gIlRyZWVSZWZDb3VudGVkIiwKIAogICAgICJTdHJpbmdJbXBsIiA9PiAiU2hhcmVk
U3RyaW5nIiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNmYjJkNmVhNGZjYzZl
NjI3MTk0OGEyYmY4MDU0NTFlN2JlODA1ODEuLmYwMzNhNzRmNTBiNTQxOTZlZDJlZDc0M2VlZDg3
ZjE3YTVlZDk3Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUu
YW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQpAQCAtMTY2LDcgKzE2
Niw3IEBAIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdlYkNvcmVfTERGTEFHUyA9IFwKIAkt
bm8tZmFzdC1pbnN0YWxsCiAKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdlYkNvcmVfU09V
UkNFUyA9IFwKLQlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAgXAor
CVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKIAogUHJvZ3JhbXNfVGVzdFdl
YktpdEFQSV9UZXN0R3RrX0NQUEZMQUdTID0gXApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggZTJlNTZmYTQwMDVjYTU3Yjc2Zjc5MzA0ODk1NmVmZDkyZDQ4ZTM3My4uNjVh
Mzc3YTcwZjJiNTQyNWNmZjJlMmU4MDVjMGU5Yjg4NzYzYjc3MCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00OSw3ICs0OSw3IEBAIHNldCh3ZWJraXQyX2FwaV9oYXJu
ZXNzX1NPVVJDRVMKIAogc2V0KHRlc3Rfd2ViY29yZV9CSU5BUklFUwogICAgIExheW91dFVuaXQK
LSAgICBLVVJMCisgICAgVVJMCiApCiAKICMgSW4gaGVyZSB3ZSBsaXN0IHRoZSBidW5kbGVzIHRo
YXQgYXJlIHVzZWQgYnkgb3VyIHNwZWNpZmljIFdLMiBBUEkgVGVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDBhMGIyNmM1NjNkODYyNTBjYmM1MDE0YjNjOWIyNzQ4
ZTI5M2VhZDQuLmIzZDgxYzU0YmI2MjJmOTc0NDUzYjMwNzBhMGZiYWQ4OTNiMmFkYzAgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNjQsNyArNjQsNyBAQCBsaXN0KEFQ
UEVORCB0ZXN0X3dlYmNvcmVfTElCUkFSSUVTCiAKIHNldCh0ZXN0X3dlYmNvcmVfQklOQVJJRVMK
ICAgICBMYXlvdXRVbml0Ci0gICAgS1VSTAorICAgIFVSTAogKQogCiBzZXQodGVzdF93ZWJraXQy
X2FwaV9CSU5BUklFUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxODQwY2JlNjFhZTc3MDQz
NTBlNGQwZGYzMDkzYzljMDFkYTUwYmUwLi42ZDc5YzkxOWE5ZTY3N2EzZmY2NmM4ZjhiMWE0MGEw
NWZmMDZiZDZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzUsNyArNzUsNyBAQAogCQkz
N0UxMDY0QzE2OTc2ODE4MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJv
dmUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0UxMDY0QjE2OTc2N0Y3MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUuaHRtbCAqLzsgfTsKIAkJMzdFMTA2NEQxNjk3NkM4NTAwQjc4QkQwIC8qIERPTUhU
TUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzN0UxMDY0QTE2OTc2NzY0MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2Vs
bENlbGxBYm92ZS5tbSAqLzsgfTsKIAkJMzdFMzhDMzQxNjlCN0QwMTAwODRDMjhDIC8qIFdlYlZp
ZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0UzOEMzMzE2OUI3RDAxMDA4NEMyOEMgLyogV2ViVmll
d0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSAqLzsgfTsKLQkJNDQwQTFEMzkxNEEwMTAz
QTAwOEE2NkYyIC8qIEtVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIEtVUkwuY3BwICovOyB9Owor
CQk0NDBBMUQzOTE0QTAxMDNBMDA4QTY2RjIgLyogVVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MEExRDM4MTRBMDEwM0EwMDhBNjZGMiAvKiBV
UkwuY3BwICovOyB9OwogCQk0QkI0MTYwMjE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9y
Tm9kZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkI0MTYwMTE2ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2Vi
RnJhbWUubW0gKi87IH07CiAJCTRCQjQxNjA0MTY4MTVGOTEwMDgyNDIzOCAvKiBFbGVtZW50QXRQ
b2ludEluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0QkI0MTYwMzE2ODE1RjkxMDA4MjQyMzggLyogRWxlbWVudEF0UG9pbnRJbldlYkZy
YW1lLm1tICovOyB9OwogCQk0QkZERkZBNzEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9k
ZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9OwpAQCAtMzgwLDcgKzM4MCw3IEBACiAJCTM3RTEwNjRB
MTY5NzY3NjQwMEI3OEJEMCAvKiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4
QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50Q2VsbEFib3ZlLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSBET01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0UzOEMzMzE2OUI3RDAxMDA4NEMyOEMgLyog
V2ViVmlld0RpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHku
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZG
MiAvKiBLVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtVUkwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2
RjIgLyogVVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0QTYyMkMxMTRBMEUyQjYwMDQ4NTE1
QiAvKiBXVEZTdHJpbmdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV1RGU3RyaW5nVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRC
QjQxNjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTV3JhcHBlckZvck5vZGVJ
bldlYkZyYW1lLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QkI0MTYwMzE2ODE1
RjkxMDA4MjQyMzggLyogRWxlbWVudEF0UG9pbnRJbldlYkZyYW1lLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWxlbWVudEF0UG9pbnRJbldlYkZyYW1lLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ2LDcgKzY0Niw3IEBACiAJCTQ0MEExRDM2
MTRBMDEwMDAwMDhBNjZGMiAvKiBXZWJDb3JlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk0NDBBMUQzODE0QTAxMDNBMDA4QTY2RjIgLyogS1VSTC5jcHAg
Ki8sCisJCQkJNDQwQTFEMzgxNEEwMTAzQTAwOEE2NkYyIC8qIFVSTC5jcHAgKi8sCiAJCQkJMTQ0
NjQwMTIxNjdBODMwNTAwMEJEMjE4IC8qIExheW91dFVuaXQuY3BwICovLAogCQkJKTsKIAkJCXBh
dGggPSBXZWJDb3JlOwpAQCAtMTE0Miw3ICsxMTQyLDcgQEAKIAkJCQlDMEFEQkU3QzEyRkNBNEQw
MDBEMkMxMjkgLyogSmF2YVNjcmlwdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA4MTIy
NDIxM0ZDMTcyNDAwREMzOUFFIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEJCNDE2MDIxNjgxNUIyNjAwODI0MjM4IC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZy
YW1lLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDQwQTFEMzkxNEEwMTAzQTAwOEE2NkYyIC8qIEtV
UkwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDQwQTFEMzkxNEEwMTAzQTAwOEE2NkYyIC8qIFVS
TC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDQ2NDAxMzE2N0E4MzA1MDAwQkQyMTggLyogTGF5
b3V0VW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDY0MEI1NTE3ODc1REZGMDBCRkFGOTkg
LyogU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjMwMEIx
ODE2NzU1Q0Q5MDA2Njg4NkQgLyogTGlzdEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvS1VSTC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZlYWRlNTU4NjFlNzU5MThiODY2MWQ2ZmQ0Nzc1NjQxMjI3OGYzOTIuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0tVUkwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
VEZTdHJpbmdVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KLSNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewotCi1jbGFzcyBLVVJMVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgIH0KLX07Ci0KLVRFU1RfRihLVVJMVGVz
dCwgS1VSTENvbnN0cnVjdG9yRGVmYXVsdCkKLXsKLSAgICBLVVJMIGt1cmw7Ci0KLSAgICBFWFBF
Q1RfVFJVRShrdXJsLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5pc051bGwoKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNWYWxpZCgpKTsKLX0KLQotVEVTVF9GKEtVUkxUZXN0
LCBLVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCi17Ci0gICAgS1VSTCBrdXJsKFBhcnNlZFVSTFN0
cmluZywgImh0dHA6Ly91c2VybmFtZTpwYXNzd29yZEB3d3cuZXhhbXBsZS5jb206ODA4MC9pbmRl
eC5odG1sP3Zhcj12YWwjZnJhZ21lbnQiKTsKLQotICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9UUlVF
KGt1cmwuaXNWYWxpZCgpKTsKLQotICAgIEVYUEVDVF9FUShTdHJpbmcoImh0dHAiKSwga3VybC5w
cm90b2NvbCgpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJ3d3cuZXhhbXBsZS5jb20iKSwga3Vy
bC5ob3N0KCkpOwotICAgIEVYUEVDVF9UUlVFKGt1cmwuaGFzUG9ydCgpKTsKLSAgICBFWFBFQ1Rf
RVEoODA4MCwga3VybC5wb3J0KCkpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiks
IGt1cmwudXNlcigpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBh
c3MoKSk7Ci0gICAgRVhQRUNUX0VRKFN0cmluZygiL2luZGV4Lmh0bWwiKSwga3VybC5wYXRoKCkp
OwotICAgIEVYUEVDVF9FUShTdHJpbmcoImluZGV4Lmh0bWwiKSwga3VybC5sYXN0UGF0aENvbXBv
bmVudCgpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJ2YXI9dmFsIiksIGt1cmwucXVlcnkoKSk7
Ci0gICAgRVhQRUNUX1RSVUUoa3VybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7Ci0gICAgRVhQ
RUNUX0VRKFN0cmluZygiZnJhZ21lbnQiKSwga3VybC5mcmFnbWVudElkZW50aWZpZXIoKSk7Ci19
Ci0KLVRFU1RfRihLVVJMVGVzdCwgS1VSTERhdGFVUklTdHJpbmdTaGFyaW5nKQotewotICAgIEtV
UkwgYmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIik7Ci0g
ICAgU3RyaW5nIHRocmVlQXBwbGVzID0gImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jh
c2U2NCw3Nk8vNzZPLzc2Ty8iOwotCi0gICAgS1VSTCB1cmwoYmFzZVVSTCwgdGhyZWVBcHBsZXMp
OwotICAgIEVYUEVDVF9FUSh0aHJlZUFwcGxlcy5pbXBsKCksIHVybC5zdHJpbmcoKS5pbXBsKCkp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhN2Y1Mzk3NzY3M2M2ZDA2MDk4Yjg2
ZjA3MmU3MWY1MjA3YWY4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGllcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
Y2xhc3MgVVJMVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVh
ZCgpOworICAgIH0KK307CisKK1RFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3RvckRlZmF1bHQp
Cit7CisgICAgVVJMIGt1cmw7CisKKyAgICBFWFBFQ1RfVFJVRShrdXJsLmlzRW1wdHkoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoa3VybC5pc051bGwoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwuaXNW
YWxpZCgpKTsKK30KKworVEVTVF9GKFVSTFRlc3QsIFVSTENvbnN0cnVjdG9yQ29uc3RDaGFyKQor
eworICAgIFVSTCBrdXJsKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly91c2VybmFtZTpwYXNzd29y
ZEB3d3cuZXhhbXBsZS5jb206ODA4MC9pbmRleC5odG1sP3Zhcj12YWwjZnJhZ21lbnQiKTsKKwor
ICAgIEVYUEVDVF9GQUxTRShrdXJsLmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGt1cmwu
aXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKGt1cmwuaXNWYWxpZCgpKTsKKworICAgIEVYUEVD
VF9FUShTdHJpbmcoImh0dHAiKSwga3VybC5wcm90b2NvbCgpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJ3d3cuZXhhbXBsZS5jb20iKSwga3VybC5ob3N0KCkpOworICAgIEVYUEVDVF9UUlVFKGt1
cmwuaGFzUG9ydCgpKTsKKyAgICBFWFBFQ1RfRVEoODA4MCwga3VybC5wb3J0KCkpOworICAgIEVY
UEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigpKTsKKyAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJwYXNzd29yZCIpLCBrdXJsLnBhc3MoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygi
L2luZGV4Lmh0bWwiKSwga3VybC5wYXRoKCkpOworICAgIEVYUEVDVF9FUShTdHJpbmcoImluZGV4
Lmh0bWwiKSwga3VybC5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5n
KCJ2YXI9dmFsIiksIGt1cmwucXVlcnkoKSk7CisgICAgRVhQRUNUX1RSVUUoa3VybC5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygiZnJhZ21lbnQiKSwga3Vy
bC5mcmFnbWVudElkZW50aWZpZXIoKSk7Cit9CisKK1RFU1RfRihVUkxUZXN0LCBVUkxEYXRhVVJJ
U3RyaW5nU2hhcmluZykKK3sKKyAgICBVUkwgYmFzZVVSTChQYXJzZWRVUkxTdHJpbmcsICJodHRw
Oi8vd3d3LndlYmtpdC5vcmcvIik7CisgICAgU3RyaW5nIHRocmVlQXBwbGVzID0gImRhdGE6dGV4
dC9wbGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iOworCisgICAgVVJMIHVy
bChiYXNlVVJMLCB0aHJlZUFwcGxlcyk7CisgICAgRVhQRUNUX0VRKHRocmVlQXBwbGVzLmltcGwo
KSwgdXJsLnN0cmluZygpLmltcGwoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkK
</data>
<flag name="review"
          id="235067"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>